@go-to-k/cdkd 0.290.29 → 0.290.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
- import { $ as secretBearing, $n as recordMaskOnlyValue, $r as AssetManifestLoader, $t as s3BucketArn, A as extractDeploymentEventError, Ai as getAwsClients, An as refuseMalformedState, Ar as BOOTSTRAP_MARKER_PREFIX, At as isImpossibleEmptyStoredAttribute, B as toCfnInteger, Bi as IntrinsicResolutionRefusalError, Bn as STATE_SOURCED_BASELINE_RULES, Br as buildDockerImage, Bt as coerceCfnBoolean, C as buildFinalSnapshotIdentifier, Ci as canonicalizeRegion, Cn as producerRecordKey, Cr as stringifyValue, Ct as isTerminationProtectionPropagationError, D as refusesFinalSnapshot, Dn as refuseMalformedOutputsForDestroy, Dr as loadPublishableAssetManifest, Dt as cfnRefValueFromPhysicalId, E as isFinalSnapshotError, Ei as processStackMessages, En as refuseMalformedOutputs, Er as createAssetRedirectResolver, Et as carriesFetchableDynamicReference, F as isStatefulRecreateTargetSync, Fn as findSilentDropProperties, Fr as parseBootstrapMarker, Ft as isSettledInstanceState, G as gray, Gi as NestedStackChildDirectDestroyError, Gn as createSecretMasker, Gr as formatDockerLoginError, Gt as readConfigString, H as formatResourceLine, Hi as LocalStartServiceError, Hn as STATE_SOURCED_READBACK_RULES, Hr as describeDockerExecFailure, Ht as configBooleanRefusal, I as renderStatefulReason, Ii as CrossAccountSecretRefusalError, In as describeTypeWithThrottleRetry, Ir as readBootstrapMarkerBody, It as WAFv2WebACLProvider, J as yellow, Ji as ResourceTimeoutError, Jn as identityKeyFor, Jr as redactDockerArgvValues, Jt as requireConfigObject, K as green, Ki as PartialFailureError, Kn as dynamicReferenceTokens, Kr as getDockerCmd, Kt as replayWarn, L as WARM_THROUGHPUT_MEMBERS, Ln as withRetry, Lr as validateAssetBucketName, Lt as normalizeAwsTagsToCfn, M as planOrphanAdoption, Mi as setAwsClients, Mn as repairMalformedResourcePropertiesForReadOnly, Mr as ensureAssetStorage, Mt as isUnboundTemplateParameter, N as MULTI_REGION_RECREATE_BLOCKED_TYPES, Nn as repairMalformedResourcesForReadOnly, Nr as getBootstrapMarkerKey, Nt as parameterTypeMayLoseSecretIdentity, O as unsupportedFinalSnapshotError, Oi as resolveBucketRegion, On as refuseMalformedResourcePropertiesForOrphan, Or as rewriteTemplateAssetReferences, Ot as coerceParameterTypedValue, P as isStatefulRecreateTargetForReplace, Pi as CdkdError, Pn as findActionableSilentDrops, Pr as isCrossRegionRedirect, Pt as refStateLookupFromResource, Q as isExportAliasCollision, Qn as maskSecretsInText, Qr as stripControlChars, Qt as withSharedDrainBudget, R as coerceWarmThroughput$1, Ri as DeployCancelledError, Rn as DagBuilder, Rr as validateContainerRepoName, Rt as resolveExplicitPhysicalId, S as PRE_DELETE_SNAPSHOT_TYPES, Si as PARTITION_TABLE, Sn as malformedStateRefusalMessage, Sr as AssetPublisher, St as disableInstanceApiTermination, T as createPreDeleteFinalSnapshot, Ti as AssemblyReader, Tn as refuseMalformedNestedChildOutputs, Tr as buildAssetRedirectMap, Tt as carriesDynamicReference, U as bold, Un as TEMPLATE_SOURCED_RULES, Ur as describeDockerFailure, Ut as configIntegerRefusal, V as toFiniteNumber, Vi as LocalInvokeBuildError$1, Vn as STATE_SOURCED_CROSS_GENERATION_RULES, Vr as describeDockerCapturedOutput, Vt as coerceCfnInteger, W as cyan, Wi as MalformedProducerRecordRefusalError, Wn as carriesSecretMask, Wr as dockerSpawnEnvWithSensitive, Wt as configStringRefusal, X as collectPublishedOutputNames, Xi as StackHasActiveImportsError, Xn as markSameGenerationBag, Xr as runDockerStreaming, Xt as classifyReplaySecretRegion, Y as collectDeclaredOutputNames, Yi as ResourceUpdateNotSupportedError, Yn as isSingleDynamicReferenceToken, Yr as runDockerForeground, Yt as requireConfigString, Z as exportAliasCollisionScrubWarning, Zi as StackTerminationProtectionError, Zn as maskSecretsInError, Zr as escapeRegExp, Zt as producerRegionsFromState, _ as isSecretBearingReferenceString, _i as findLargeInlineResources, _n as malformedOutputsRefusalMessage, _r as importableOutputs, _t as isWaitAbandonedError, a as DeploymentEventsStore, aa as isRetryableTransientError, ai as resolveApp, an as AWS_CREDENTIAL_ENV_KEYS, ar as rebuildClientForBucketRegion, at as clearOnUpdateRemoval, b as bindingSkippedOutputs, bi as decodeListingKey, bn as malformedResourcePropertiesWarning, br as orphansCarriedFrom, bt as deleteIndeterminateGuards, c as replayFailedOperations, ca as markNonRetryable, ci as resolveSkipPrefix, cn as envCredentialsAreAssumedRole, cr as buildLockContentionMessage, ct as createMaskedRetryLogger, d as updatePartialReason, da as describeAwsFailure, di as resolveUseCdkBootstrapAssets, dn as STATE_RESOURCES_MALFORMED, dr as shellQuote, dt as beginCommandInterruptScope, ei as getDockerImageBySourceHash, en as s3BucketDomainName, er as recoverMaskedOutput, et as secretBearingStateKeyWarning, f as withResourceDeadline, fa as safeStringify, fi as stateBucketExistenceConfirmed, fn as hasReadableOutputs, fr as CUSTOM_RESOURCE_RESPONSE_PREFIX, ft as endCommandInterruptScope, g as bagHoldsSecretExpression, gi as MIGRATE_TMP_PREFIX, gn as malformedLocalOutputsWarning, gr as importableOutputKeys, gt as CloudControlProvider, h as computeImplicitDeleteEdges, hi as CFN_TEMPLATE_URL_LIMIT, hn as malformedExportSourceWarning, hr as hasReadableExportSet, ht as startInterruptWatch, i as DeploymentEventsReader, ia as isMarkedNonRetryable, ii as getLegacyStateBucketName, in as applyRoleArnIfSet, ir as S3StateBackend, it as collectInlinePolicyNamesManagedBySiblings, j as makeSiblingClaimReader, ji as resetAwsClients, jn as repairMalformedOutputsForReadOnly, jr as assertAssetBucketRegion, jt as isNamelessDynamicReferenceError, k as makeCanonicalizePropertiesFn, ki as AwsClients, kn as refuseMalformedResourcesForDestroy, kr as AssetModeResolver, kt as getAccountInfo, l as replayRollback, la as markRedactedCause, li as resolveStateBucketWithDefault, ln as DiffCalculator, lr as forceQuitRecoveryClause, lt as maskDeep, m as IMPLICIT_DELETE_DEPENDENCIES, mi as CFN_TEMPLATE_BODY_LIMIT, mn as malformedExportNamesWarning, mr as exportNamesCarriedFrom, mt as isInterruptedWaitError, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as normalizeAwsError, ni as synthesisStatusMessage, nn as s3BucketRegionalDomainName, nr as scrubResourceRecord, nt as getCurrentResourceSecrets, o as planFailedOps, oa as isThrottlingError, oi as resolveAutoAssetStorage, on as applyCallerIdentityCredentials, or as UNREPRODUCIBLE_LOCK_CLAUSE, ot as ProviderRegistry, p as maskingRetryLogger, pi as warnDeprecatedNoPrefixCliFlag, pn as hasReadableResources, pr as DEFAULT_STATE_PREFIX, pt as interruptWatchListenerCount, q as red, qi as ProvisioningError, qn as errorCauseChain, qr as partitionSensitiveEnv, qt as requireConfigArray, r as DeployEngine, ra as withErrorHandling, ri as getDefaultStateBucketName, rn as s3BucketWebsiteUrl, rr as LockManager, rt as IAMRoleProvider, s as planRollback, sa as isTransientServerError, si as resolveCaptureObservedState, sn as callerEnvCredentials, sr as buildForceUnlockCommand, st as wouldReturnToSdkProvider, t as DEFAULT_RESOURCE_TIMEOUT_MS, ti as Synthesizer, tn as s3BucketDualStackDomainName, tr as redactSecretsForState, tt as secretSafeKeyDisplay, u as updatePartialMessage, ua as retryClassificationText, ui as resolveStateBucketWithDefaultAndSource, un as INTRINSIC_KEYS, ur as formatLockExpiry, ut as maskerOrIdentity, v as keptWholeReasonText, vi as uploadCfnTemplate, vn as malformedOutputsWarning, vr as isReadableBag, vt as slowCcOperationTimeoutMs, w as ccRoutedFinalSnapshotError, wi as derivePartitionAndUrlSuffix, wn as refuseDivergentRecordRegionForDestroy, wr as WorkGraph, wt as IntrinsicFunctionResolver, x as ATOMIC_FINAL_SNAPSHOT_TYPES, xi as expectedOwnerParam, xn as malformedResourcesWarning, xr as shouldRetainResource, xt as deleteSkipReason, y as mergeNoChangeOutputs, yi as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, yn as malformedRenderedContainersWarning, yr as orphansAfterRollback, yt as UNSPECIFIED_SKIP_REASON, z as isWarmThroughputDecrease, zi as DynamicReferenceRegionAmbiguousError, zn as TemplateParser, zr as buildDenyExternalAccessPolicy, zt as assertRegionMatch } from "./deploy-engine-Bcwb9_mO.js";
2
- import { C as displayIdent, S as UNRENDERABLE, T as truncateCodePoints, _ as withSkipPrefix, b as SECRET_REF_MAX_CODE_POINTS, c as PATTERN_B_NAME_OPTIONS, f as explicitNamePropertyFor, h as getCurrentStackName, i as reserveStdoutForPayload, l as PATTERN_B_NAME_PROPERTIES, m as generateResourceNameWithFallback, n as getLogger, o as runStackBuffered, p as generateResourceName, s as getLiveRenderer, u as PATTERN_B_RESOURCE_TYPES, v as withStackName, w as displaySafe, x as STACK_REF_MAX_CODE_POINTS } from "./logger-6LP1UiFA.js";
1
+ import { $ as secretBearing, $n as recordMaskOnlyValue, $r as AssetManifestLoader, $t as s3BucketArn, A as extractDeploymentEventError, Ai as getAwsClients, An as refuseMalformedState, Ar as BOOTSTRAP_MARKER_PREFIX, At as isImpossibleEmptyStoredAttribute, B as toCfnInteger, Bi as IntrinsicResolutionRefusalError, Bn as STATE_SOURCED_BASELINE_RULES, Br as buildDockerImage, Bt as coerceCfnBoolean, C as buildFinalSnapshotIdentifier, Ci as canonicalizeRegion, Cn as producerRecordKey, Cr as stringifyValue, Ct as isTerminationProtectionPropagationError, D as refusesFinalSnapshot, Dn as refuseMalformedOutputsForDestroy, Dr as loadPublishableAssetManifest, Dt as cfnRefValueFromPhysicalId, E as isFinalSnapshotError, Ei as processStackMessages, En as refuseMalformedOutputs, Er as createAssetRedirectResolver, Et as carriesFetchableDynamicReference, F as isStatefulRecreateTargetSync, Fn as findSilentDropProperties, Fr as parseBootstrapMarker, Ft as isSettledInstanceState, G as gray, Gi as NestedStackChildDirectDestroyError, Gn as createSecretMasker, Gr as formatDockerLoginError, Gt as readConfigString, H as formatResourceLine, Hi as LocalStartServiceError, Hn as STATE_SOURCED_READBACK_RULES, Hr as describeDockerExecFailure, Ht as configBooleanRefusal, I as renderStatefulReason, Ii as CrossAccountSecretRefusalError, In as describeTypeWithThrottleRetry, Ir as readBootstrapMarkerBody, It as WAFv2WebACLProvider, J as yellow, Ji as ResourceTimeoutError, Jn as identityKeyFor, Jr as redactDockerArgvValues, Jt as requireConfigObject, K as green, Ki as PartialFailureError, Kn as dynamicReferenceTokens, Kr as getDockerCmd, Kt as replayWarn, L as WARM_THROUGHPUT_MEMBERS, Ln as withRetry, Lr as validateAssetBucketName, Lt as normalizeAwsTagsToCfn, M as planOrphanAdoption, Mi as setAwsClients, Mn as repairMalformedResourcePropertiesForReadOnly, Mr as ensureAssetStorage, Mt as isUnboundTemplateParameter, N as MULTI_REGION_RECREATE_BLOCKED_TYPES, Nn as repairMalformedResourcesForReadOnly, Nr as getBootstrapMarkerKey, Nt as parameterTypeMayLoseSecretIdentity, O as unsupportedFinalSnapshotError, Oi as resolveBucketRegion, On as refuseMalformedResourcePropertiesForOrphan, Or as rewriteTemplateAssetReferences, Ot as coerceParameterTypedValue, P as isStatefulRecreateTargetForReplace, Pi as CdkdError, Pn as findActionableSilentDrops, Pr as isCrossRegionRedirect, Pt as refStateLookupFromResource, Q as isExportAliasCollision, Qn as maskSecretsInText, Qr as stripControlChars, Qt as withSharedDrainBudget, R as coerceWarmThroughput$1, Ri as DeployCancelledError, Rn as DagBuilder, Rr as validateContainerRepoName, Rt as resolveExplicitPhysicalId, S as PRE_DELETE_SNAPSHOT_TYPES, Si as PARTITION_TABLE, Sn as malformedStateRefusalMessage, Sr as AssetPublisher, St as disableInstanceApiTermination, T as createPreDeleteFinalSnapshot, Ti as AssemblyReader, Tn as refuseMalformedNestedChildOutputs, Tr as buildAssetRedirectMap, Tt as carriesDynamicReference, U as bold, Un as TEMPLATE_SOURCED_RULES, Ur as describeDockerFailure, Ut as configIntegerRefusal, V as toFiniteNumber, Vi as LocalInvokeBuildError$1, Vn as STATE_SOURCED_CROSS_GENERATION_RULES, Vr as describeDockerCapturedOutput, Vt as coerceCfnInteger, W as cyan, Wi as MalformedProducerRecordRefusalError, Wn as carriesSecretMask, Wr as dockerSpawnEnvWithSensitive, Wt as configStringRefusal, X as collectPublishedOutputNames, Xi as StackHasActiveImportsError, Xn as markSameGenerationBag, Xr as runDockerStreaming, Xt as classifyReplaySecretRegion, Y as collectDeclaredOutputNames, Yi as ResourceUpdateNotSupportedError, Yn as isSingleDynamicReferenceToken, Yr as runDockerForeground, Yt as requireConfigString, Z as exportAliasCollisionScrubWarning, Zi as StackTerminationProtectionError, Zn as maskSecretsInError, Zr as escapeRegExp, Zt as producerRegionsFromState, _ as isSecretBearingReferenceString, _i as findLargeInlineResources, _n as malformedOutputsRefusalMessage, _r as importableOutputs, _t as isWaitAbandonedError, a as DeploymentEventsStore, aa as isRetryableTransientError, ai as resolveApp, an as AWS_CREDENTIAL_ENV_KEYS, ar as rebuildClientForBucketRegion, at as clearOnUpdateRemoval, b as bindingSkippedOutputs, bi as decodeListingKey, bn as malformedResourcePropertiesWarning, br as orphansCarriedFrom, bt as deleteIndeterminateGuards, c as replayFailedOperations, ca as markNonRetryable, ci as resolveSkipPrefix, cn as envCredentialsAreAssumedRole, cr as buildLockContentionMessage, ct as createMaskedRetryLogger, d as updatePartialReason, da as describeAwsFailure, di as resolveUseCdkBootstrapAssets, dn as STATE_RESOURCES_MALFORMED, dr as shellQuote, dt as beginCommandInterruptScope, ei as getDockerImageBySourceHash, en as s3BucketDomainName, er as recoverMaskedOutput, et as secretBearingStateKeyWarning, f as withResourceDeadline, fa as safeStringify, fi as stateBucketExistenceConfirmed, fn as hasReadableOutputs, fr as CUSTOM_RESOURCE_RESPONSE_PREFIX, ft as endCommandInterruptScope, g as bagHoldsSecretExpression, gi as MIGRATE_TMP_PREFIX, gn as malformedLocalOutputsWarning, gr as importableOutputKeys, gt as CloudControlProvider, h as computeImplicitDeleteEdges, hi as CFN_TEMPLATE_URL_LIMIT, hn as malformedExportSourceWarning, hr as hasReadableExportSet, ht as startInterruptWatch, i as DeploymentEventsReader, ia as isMarkedNonRetryable, ii as getLegacyStateBucketName, in as applyRoleArnIfSet, ir as S3StateBackend, it as collectInlinePolicyNamesManagedBySiblings, j as makeSiblingClaimReader, ji as resetAwsClients, jn as repairMalformedOutputsForReadOnly, jr as assertAssetBucketRegion, jt as isNamelessDynamicReferenceError, k as makeCanonicalizePropertiesFn, ki as AwsClients, kn as refuseMalformedResourcesForDestroy, kr as AssetModeResolver, kt as getAccountInfo, l as replayRollback, la as markRedactedCause, li as resolveStateBucketWithDefault, ln as DiffCalculator, lr as forceQuitRecoveryClause, lt as maskDeep, m as IMPLICIT_DELETE_DEPENDENCIES, mi as CFN_TEMPLATE_BODY_LIMIT, mn as malformedExportNamesWarning, mr as exportNamesCarriedFrom, mt as isInterruptedWaitError, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as normalizeAwsError, ni as synthesisStatusMessage, nn as s3BucketRegionalDomainName, nr as scrubResourceRecord, nt as getCurrentResourceSecrets, o as planFailedOps, oa as isThrottlingError, oi as resolveAutoAssetStorage, on as applyCallerIdentityCredentials, or as UNREPRODUCIBLE_LOCK_CLAUSE, ot as ProviderRegistry, p as maskingRetryLogger, pi as warnDeprecatedNoPrefixCliFlag, pn as hasReadableResources, pr as DEFAULT_STATE_PREFIX, pt as interruptWatchListenerCount, q as red, qi as ProvisioningError, qn as errorCauseChain, qr as partitionSensitiveEnv, qt as requireConfigArray, r as DeployEngine, ra as withErrorHandling, ri as getDefaultStateBucketName, rn as s3BucketWebsiteUrl, rr as LockManager, rt as IAMRoleProvider, s as planRollback, sa as isTransientServerError, si as resolveCaptureObservedState, sn as callerEnvCredentials, sr as buildForceUnlockCommand, st as wouldReturnToSdkProvider, t as DEFAULT_RESOURCE_TIMEOUT_MS, ti as Synthesizer, tn as s3BucketDualStackDomainName, tr as redactSecretsForState, tt as secretSafeKeyDisplay, u as updatePartialMessage, ua as retryClassificationText, ui as resolveStateBucketWithDefaultAndSource, un as INTRINSIC_KEYS, ur as formatLockExpiry, ut as maskerOrIdentity, v as keptWholeReasonText, vi as uploadCfnTemplate, vn as malformedOutputsWarning, vr as isReadableBag, vt as slowCcOperationTimeoutMs, w as ccRoutedFinalSnapshotError, wi as derivePartitionAndUrlSuffix, wn as refuseDivergentRecordRegionForDestroy, wr as WorkGraph, wt as IntrinsicFunctionResolver, x as ATOMIC_FINAL_SNAPSHOT_TYPES, xi as expectedOwnerParam, xn as malformedResourcesWarning, xr as shouldRetainResource, xt as deleteSkipReason, y as mergeNoChangeOutputs, yi as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, yn as malformedRenderedContainersWarning, yr as orphansAfterRollback, yt as UNSPECIFIED_SKIP_REASON, z as isWarmThroughputDecrease, zi as DynamicReferenceRegionAmbiguousError, zn as TemplateParser, zr as buildDenyExternalAccessPolicy, zt as assertRegionMatch } from "./deploy-engine-21iNqwR3.js";
2
+ import { C as displayAwsMessage, E as truncateCodePoints, S as UNRENDERABLE, T as displaySafe, _ as withSkipPrefix, b as SECRET_REF_MAX_CODE_POINTS, c as PATTERN_B_NAME_OPTIONS, f as explicitNamePropertyFor, h as getCurrentStackName, i as reserveStdoutForPayload, l as PATTERN_B_NAME_PROPERTIES, m as generateResourceNameWithFallback, n as getLogger, o as runStackBuffered, p as generateResourceName, s as getLiveRenderer, u as PATTERN_B_RESOURCE_TYPES, v as withStackName, w as displayIdent, x as STACK_REF_MAX_CODE_POINTS } from "./logger-BjWM-UVj.js";
3
3
  import { n as awsClientDefaults } from "./aws-client-defaults-BoIxyCir.js";
4
- import { t as getCdkdVersion } from "./version-snXN__f1.js";
5
- import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-Dwnb3CES.js";
4
+ import { t as getCdkdVersion } from "./version-IwTfNQ-K.js";
5
+ import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-DNzgk-BS.js";
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
7
7
  import { createHash, randomBytes, randomUUID } from "node:crypto";
8
8
  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, NotFound, 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";
@@ -1089,6 +1089,21 @@ const deployOptions = [
1089
1089
  * -c / --context can be specified multiple times to pass context key=value pairs
1090
1090
  */
1091
1091
  const contextOptions = [new Option("-c, --context <key=value...>", "Set context values (can be specified multiple times)")];
1092
+ /**
1093
+ * ANCHORED AT THE START ONLY, and that is what makes the renders below a
1094
+ * display boundary rather than a formality (issue
1095
+ * [#3397](https://github.com/go-to-k/cdkd/issues/3397)).
1096
+ *
1097
+ * A value CLEARING this test is constrained in its first ~30 characters and in
1098
+ * nothing after `role/` — `arn:aws:iam::1:role/` followed by an ESC, a
1099
+ * newline, or 10 MB of anything is a PASS. So `normalizeStartApiAssumeRole`'s
1100
+ * mutual-exclusion error, which renders an ARN this regex already accepted,
1101
+ * needs sanitizing exactly as much as the three REFUSALS that render one it
1102
+ * rejected. Tightening the regex instead was considered and is the wrong tool:
1103
+ * `src/utils/role-arn.ts`'s `IAM_ROLE_ARN_RE` is the strict parse, it runs
1104
+ * later and on a different path, and a stricter argparse here would start
1105
+ * refusing role-name shapes the deploy path accepts.
1106
+ */
1092
1107
  const IAM_ROLE_ARN_REGEX = /^arn:[^:]+:iam::\d+:role\//;
1093
1108
  /**
1094
1109
  * Argparse for the repeatable `--assume-role` flag.
@@ -1102,16 +1117,17 @@ const IAM_ROLE_ARN_REGEX = /^arn:[^:]+:iam::\d+:role\//;
1102
1117
  function parseAssumeRoleToken(raw, previous) {
1103
1118
  const acc = previous ?? { perLambda: {} };
1104
1119
  if (!acc.perLambda) acc.perLambda = {};
1120
+ const shownRaw = displayIdent(raw, { maxCodePoints: 613 });
1105
1121
  const eqIndex = raw.indexOf("=");
1106
1122
  if (eqIndex === -1) {
1107
- if (!IAM_ROLE_ARN_REGEX.test(raw)) throw new Error(`Invalid --assume-role value "${raw}": expected an IAM role ARN like arn:aws:iam::123456789012:role/MyRole, or LogicalId=<arn>.`);
1123
+ if (!IAM_ROLE_ARN_REGEX.test(raw)) throw new Error(`Invalid --assume-role value "${shownRaw}": expected an IAM role ARN like arn:aws:iam::123456789012:role/MyRole, or LogicalId=<arn>.`);
1108
1124
  acc.globalArn = raw;
1109
1125
  return acc;
1110
1126
  }
1111
1127
  const logicalId = raw.substring(0, eqIndex).trim();
1112
1128
  const arn = raw.substring(eqIndex + 1).trim();
1113
- if (!/^[A-Za-z][A-Za-z0-9]*$/.test(logicalId)) throw new Error(`Invalid --assume-role value "${raw}": left-hand side "${logicalId}" must be a CloudFormation logical ID (alphanumeric, leading letter).`);
1114
- if (!IAM_ROLE_ARN_REGEX.test(arn)) throw new Error(`Invalid --assume-role value "${raw}": right-hand side "${arn}" must be an IAM role ARN like arn:aws:iam::123456789012:role/MyRole.`);
1129
+ if (!/^[A-Za-z][A-Za-z0-9]*$/.test(logicalId)) throw new Error(`Invalid --assume-role value "${shownRaw}": left-hand side "${displayIdent(logicalId)}" must be a CloudFormation logical ID (alphanumeric, leading letter).`);
1130
+ if (!IAM_ROLE_ARN_REGEX.test(arn)) throw new Error(`Invalid --assume-role value "${shownRaw}": right-hand side "${displayIdent(arn, { maxCodePoints: 613 })}" must be an IAM role ARN like arn:aws:iam::123456789012:role/MyRole.`);
1115
1131
  acc.perLambda[logicalId] = arn;
1116
1132
  return acc;
1117
1133
  }
@@ -1140,7 +1156,7 @@ function normalizeStartApiAssumeRole(raw, autoResolve) {
1140
1156
  perLambda: {},
1141
1157
  bareAutoResolve: true
1142
1158
  } : void 0;
1143
- if (autoResolve && raw.globalArn) throw new Error(`--assume-role-auto auto-resolves EACH routed Lambda's own execution role, but --assume-role ${raw.globalArn} also names a single global default. These are mutually exclusive on the global slot. Either drop the global ARN to keep --assume-role-auto for every Lambda, or drop --assume-role-auto to keep the global default. Per-Lambda overrides (--assume-role <LogicalId>=<arn>) are compatible with either side.`);
1159
+ if (autoResolve && raw.globalArn) throw new Error(`--assume-role-auto auto-resolves EACH routed Lambda's own execution role, but --assume-role ${displayIdent(raw.globalArn, { maxCodePoints: 613 })} also names a single global default. These are mutually exclusive on the global slot. Either drop the global ARN to keep --assume-role-auto for every Lambda, or drop --assume-role-auto to keep the global default. Per-Lambda overrides (--assume-role <LogicalId>=<arn>) are compatible with either side.`);
1144
1160
  if (autoResolve) raw.bareAutoResolve = true;
1145
1161
  return raw;
1146
1162
  }
@@ -12149,6 +12165,16 @@ function isSqsQueueUrl(value) {
12149
12165
  //#endregion
12150
12166
  //#region src/provisioning/providers/sns-topic-provider.ts
12151
12167
  /**
12168
+ * The value SNS enforces for a topic that never set `MaximumMessageSize`
12169
+ * (256 KiB, the standard maximum), and therefore what a template REMOVAL of
12170
+ * the member resets the attribute to — SNS refuses the `''` the other
12171
+ * `SetTopicAttributes` removals send (`MaximumMessageSize: is not an integer
12172
+ * between 1024 and 1048576 bytes`, measured us-east-1 2026-09-18). A fresh
12173
+ * topic REPORTS no value at all, which `readCurrentState` folds to this value;
12174
+ * see there. Exported for the unit tests that pin both halves (issue #3413).
12175
+ */
12176
+ const SNS_MAXIMUM_MESSAGE_SIZE_DEFAULT = "262144";
12177
+ /**
12152
12178
  * AWS SNS Topic Provider
12153
12179
  *
12154
12180
  * Implements resource provisioning for AWS::SNS::Topic using the SNS SDK.
@@ -12172,7 +12198,8 @@ var SNSTopicProvider = class {
12172
12198
  "DataProtectionPolicy",
12173
12199
  "DeliveryStatusLogging",
12174
12200
  "Subscription",
12175
- "FifoThroughputScope"
12201
+ "FifoThroughputScope",
12202
+ "MaximumMessageSize"
12176
12203
  ])]]);
12177
12204
  constructor() {
12178
12205
  const awsClients = getAwsClients();
@@ -12207,6 +12234,7 @@ var SNSTopicProvider = class {
12207
12234
  if (properties["TracingConfig"]) topicAttributes["TracingConfig"] = properties["TracingConfig"];
12208
12235
  if (properties["SignatureVersion"]) topicAttributes["SignatureVersion"] = stringifyValue(properties["SignatureVersion"]);
12209
12236
  if (properties["FifoThroughputScope"]) topicAttributes["FifoThroughputScope"] = properties["FifoThroughputScope"];
12237
+ if (properties["MaximumMessageSize"] != null) topicAttributes["MaximumMessageSize"] = stringifyValue(properties["MaximumMessageSize"]);
12210
12238
  let tags;
12211
12239
  if (properties["Tags"]) tags = properties["Tags"];
12212
12240
  const createParams = {
@@ -12293,7 +12321,7 @@ var SNSTopicProvider = class {
12293
12321
  }
12294
12322
  async applyUpdate(logicalId, physicalId, properties, previousProperties, maskSecrets) {
12295
12323
  this.logger.debug(`Updating SNS topic ${logicalId}: ${physicalId}`);
12296
- for (const attr of [
12324
+ const mutableAttributes = [
12297
12325
  {
12298
12326
  name: "DisplayName",
12299
12327
  prop: "DisplayName"
@@ -12327,13 +12355,19 @@ var SNSTopicProvider = class {
12327
12355
  name: "DataProtectionPolicy",
12328
12356
  prop: "DataProtectionPolicy",
12329
12357
  serialize: true
12358
+ },
12359
+ {
12360
+ name: "MaximumMessageSize",
12361
+ prop: "MaximumMessageSize",
12362
+ resetValue: SNS_MAXIMUM_MESSAGE_SIZE_DEFAULT
12330
12363
  }
12331
- ]) {
12364
+ ];
12365
+ for (const attr of mutableAttributes) {
12332
12366
  const newVal = properties[attr.prop];
12333
12367
  const oldVal = previousProperties[attr.prop];
12334
12368
  if (JSON.stringify(newVal) !== JSON.stringify(oldVal)) {
12335
12369
  let value;
12336
- if (newVal === void 0 || newVal === null) value = "";
12370
+ if (newVal === void 0 || newVal === null) value = attr.resetValue ?? "";
12337
12371
  else if (attr.serialize && typeof newVal !== "string") value = JSON.stringify(newVal);
12338
12372
  else value = stringifyValue(newVal);
12339
12373
  await this.snsClient.send(new SetTopicAttributesCommand({
@@ -12568,6 +12602,9 @@ var SNSTopicProvider = class {
12568
12602
  "SignatureVersion"
12569
12603
  ]) result[key] = attrs[key] ?? "";
12570
12604
  if (attrs["FifoTopic"] === "true") result["FifoThroughputScope"] = attrs["FifoThroughputScope"] ?? "";
12605
+ const liveMaxSize = attrs["MaximumMessageSize"] || "262144";
12606
+ const maxSizeNumber = Number(liveMaxSize);
12607
+ result["MaximumMessageSize"] = Number.isFinite(maxSizeNumber) ? maxSizeNumber : liveMaxSize;
12571
12608
  for (const key of ["ArchivePolicy", "DataProtectionPolicy"]) {
12572
12609
  const v = attrs[key];
12573
12610
  if (v) try {
@@ -69713,6 +69750,19 @@ function isTemplateShapeResolutionFailure(err) {
69713
69750
  *
69714
69751
  * Per-pattern throw sites, and the fence that keeps them true, are in
69715
69752
  * `tests/unit/cli/scrub-abandoned-scan-origin.test.ts`.
69753
+ *
69754
+ * ONE CLASSIFICATION CHANGE, recorded because it is a GATE and this file does
69755
+ * not otherwise mention it. go-to-k/cdkd#3426 routed the `Ref <id> not found`
69756
+ * throw through the resolver's display builder, which strips control
69757
+ * characters and trims — so an id carrying a CR or padding, which `\S+` could
69758
+ * not match before, matches now, and such a unit moves from `count` (gateable
69759
+ * by `cdkd scrub --dry-run --fail`) to `warn` (not). The SAFE direction would
69760
+ * have been the other one, and it is accepted for a reason: a plain dangling
69761
+ * `Ref` already warned, so this adds no NEW bypass — it extends an existing
69762
+ * classification to ids that differ from an ordinary one only by characters
69763
+ * nobody can see. The alternative is a gate whose verdict depends on invisible
69764
+ * bytes in a logical id, which is worse to reason about. Pinned by
69765
+ * `tests/unit/cli/scrub-abandoned-scan-origin.test.ts`.
69716
69766
  */
69717
69767
  const TEMPLATE_SHAPE_FAILURE_PATTERNS = [
69718
69768
  /^Ref \S+ not found$/,
@@ -72197,7 +72247,7 @@ function createIamPrincipalUniqueIdResolver(awsClients) {
72197
72247
  entityId = user?.UserId;
72198
72248
  }
72199
72249
  if (entityArn !== void 0 && entityArn.toLowerCase() === arn.toLowerCase()) uniqueId = entityId;
72200
- else getLogger().debug(`Principal ${arn} resolved to ${entityArn ?? "no entity"} — same name in this account or under another IAM path; leaving the policy principal comparison untouched.`);
72250
+ else getLogger().debug(`Principal ${displayIdent(arn, { maxCodePoints: 613 })} resolved to ${entityArn === void 0 ? "no entity" : displayIdent(entityArn, { maxCodePoints: 613 })} — same name in this account or under another IAM path; leaving the policy principal comparison untouched.`);
72201
72251
  } catch (error) {
72202
72252
  const message = error instanceof Error ? error.message : String(error);
72203
72253
  const name = error instanceof Error ? error.name : "";
@@ -72207,7 +72257,7 @@ function createIamPrincipalUniqueIdResolver(awsClients) {
72207
72257
  warnedOnDenied = true;
72208
72258
  getLogger().warn(`Cannot read IAM principals (${name || "access denied"}). A resource policy whose principal AWS rendered as a unique id (AROA…/AIDA…) may therefore report drift that is only a spelling difference; grant iam:GetRole / iam:GetUser to resolve it, or re-run with --verbose for the full error.`);
72209
72259
  }
72210
- getLogger().debug(`Could not resolve the unique id of principal ${arn} (${message}); leaving the policy principal comparison untouched.`);
72260
+ getLogger().debug(`Could not resolve the unique id of principal ${displayIdent(arn, { maxCodePoints: 613 })} (${displayAwsMessage(message)}); leaving the policy principal comparison untouched.`);
72211
72261
  if (isThrottlingError(error)) return void 0;
72212
72262
  }
72213
72263
  cache.set(arn, uniqueId);
@@ -81455,6 +81505,30 @@ function safeStack(value) {
81455
81505
  return displayIdent(value, { maxCodePoints: STACK_REF_MAX_CODE_POINTS });
81456
81506
  }
81457
81507
  /**
81508
+ * `safe()` for an IAM ROLE ARN, the SECOND value class in this file whose
81509
+ * legitimate grammar runs past `displayIdent`'s 255-code-point default (issue
81510
+ * go-to-k/cdkd#3397 review).
81511
+ *
81512
+ * An AWS-legal role ARN reaches 613 code points — a 512-character path plus a
81513
+ * 64-character name — so `safe()` cut the one ARN this file renders at 255 and
81514
+ * appended `[cut: N more characters withheld]` INSIDE
81515
+ * `pass --role-arn to match`, the sentence whose only job is to say which role
81516
+ * to pass back. That is verbatim the failure `ROLE_ARN_MAX_CODE_POINTS`'s own
81517
+ * doc exists to prevent, and the display fence could not see it: it checks that
81518
+ * a sanitizer was CALLED, never which cap the call passed.
81519
+ *
81520
+ * A NAMED helper rather than a `maxCodePoints` argument at the site, for the
81521
+ * reason {@link safeStack} records about itself — a per-site spelling of
81522
+ * exactly this rule is what issue #3164 exists to stop, and a first cut of this
81523
+ * fix wrote one before the reference-count fence in
81524
+ * `tests/unit/cli/commands/rollback.test.ts` refused it. That refusal is the
81525
+ * fence working: it forces the question "which helper does this value belong
81526
+ * in" to be answered in code rather than in a diff.
81527
+ */
81528
+ function safeRoleArn(value) {
81529
+ return displayIdent(value, { maxCodePoints: 613 });
81530
+ }
81531
+ /**
81458
81532
  * Human label for a planned rollback action (plan preview). `skipFinalSnapshot`
81459
81533
  * is threaded in because the classifier is pure (it cannot see CLI flags) and
81460
81534
  * the Snapshot label would otherwise promise a final snapshot the run is about
@@ -81574,7 +81648,7 @@ async function rollbackCommand(stackArg, options) {
81574
81648
  const mintedOrphans = [];
81575
81649
  const orphanLogicalIds = new Set(options.orphan ?? []);
81576
81650
  const newestSegment = journal.segments[journal.segments.length - 1];
81577
- if (newestSegment.roleArn && !options.roleArn) logger.info(`Note: the failed deploy ran with --role-arn ${safe(newestSegment.roleArn)}; this rollback is running with ambient credentials (pass --role-arn to match).`);
81651
+ if (newestSegment.roleArn && !options.roleArn) logger.info(`Note: the failed deploy ran with --role-arn ${safeRoleArn(newestSegment.roleArn)}; this rollback is running with ambient credentials (pass --role-arn to match).`);
81578
81652
  logger.info(`\nRollback plan for '${safeStack(stackName)}' (${safe(region)}):`);
81579
81653
  const planStateView = { ...stateResources };
81580
81654
  for (let s = journal.segments.length - 1; s >= 0; s--) {
@@ -88552,11 +88626,11 @@ async function pullEcrImage(imageUri, options) {
88552
88626
  const cached = ASSUMED_ROLE_CACHE.get(cacheKey);
88553
88627
  if (cached && isCredentialFresh(cached)) {
88554
88628
  assumed = cached;
88555
- logger.debug(`Reusing cached AssumeRole credentials for ${displayIdent(options.ecrRoleArn, { maxCodePoints: 612 })}`);
88629
+ logger.debug(`Reusing cached AssumeRole credentials for ${displayIdent(options.ecrRoleArn, { maxCodePoints: 613 })}`);
88556
88630
  } else {
88557
88631
  assumed = await assumeRoleForEcr(options.ecrRoleArn, callerRegion, logger);
88558
88632
  ASSUMED_ROLE_CACHE.set(cacheKey, assumed);
88559
- logger.info(`Assumed role ${displayIdent(options.ecrRoleArn, { maxCodePoints: 612 })} for ECR pull (account=${parsed.accountId}, region=${parsed.region})`);
88633
+ logger.info(`Assumed role ${displayIdent(options.ecrRoleArn, { maxCodePoints: 613 })} for ECR pull (account=${parsed.accountId}, region=${parsed.region})`);
88560
88634
  }
88561
88635
  } else if (crossAccount) logger.info(`Cross-account ECR pull: image account ${parsed.accountId} != caller ${callerAccount}. Using the caller's credentials; pass --ecr-role-arn <arn> if AWS rejects with AccessDenied.`);
88562
88636
  if (crossRegion) logger.info(`Cross-region ECR pull: image region ${parsed.region} != caller ${callerRegion ?? "(unset)"}. Authenticating against the image region directly.`);
@@ -88587,7 +88661,7 @@ async function pullEcrImage(imageUri, options) {
88587
88661
  * mirrors the convention used by `src/utils/role-arn.ts`.
88588
88662
  */
88589
88663
  async function assumeRoleForEcr(roleArn, callerRegion, logger) {
88590
- logger.debug(`Assuming role ${displayIdent(roleArn, { maxCodePoints: 612 })} for ECR pull...`);
88664
+ logger.debug(`Assuming role ${displayIdent(roleArn, { maxCodePoints: 613 })} for ECR pull...`);
88591
88665
  const sts = new STSClient({
88592
88666
  ...awsClientDefaults(),
88593
88667
  ...callerRegion && { region: callerRegion }
@@ -88598,7 +88672,7 @@ async function assumeRoleForEcr(roleArn, callerRegion, logger) {
88598
88672
  RoleSessionName: `cdkd-local-ecr-${Date.now()}`,
88599
88673
  DurationSeconds: 3600
88600
88674
  }))).Credentials;
88601
- if (!creds || !creds.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new LocalInvokeBuildError$1(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 612 })}) returned no usable credentials. Verify the role's trust policy allows your identity to assume it.`);
88675
+ if (!creds || !creds.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new LocalInvokeBuildError$1(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 613 })}) returned no usable credentials. Verify the role's trust policy allows your identity to assume it.`);
88602
88676
  return {
88603
88677
  accessKeyId: creds.AccessKeyId,
88604
88678
  secretAccessKey: creds.SecretAccessKey,
@@ -88608,7 +88682,7 @@ async function assumeRoleForEcr(roleArn, callerRegion, logger) {
88608
88682
  } catch (err) {
88609
88683
  if (err instanceof LocalInvokeBuildError$1) throw err;
88610
88684
  const reason = err instanceof Error ? err.message : String(err);
88611
- throw new LocalInvokeBuildError$1(`Failed to assume role ${displayIdent(roleArn, { maxCodePoints: 612 })} for ECR pull: ${displaySafe(reason)}. Verify the role exists and its trust policy permits the caller's identity to assume it.`);
88685
+ throw new LocalInvokeBuildError$1(`Failed to assume role ${displayIdent(roleArn, { maxCodePoints: 613 })} for ECR pull: ${displaySafe(reason)}. Verify the role exists and its trust policy permits the caller's identity to assume it.`);
88612
88686
  } finally {
88613
88687
  sts.destroy();
88614
88688
  }
@@ -90987,7 +91061,7 @@ async function assumeLambdaExecutionRole$1(roleArn, region) {
90987
91061
  RoleSessionName: `cdkd-local-start-api-${Date.now()}`,
90988
91062
  DurationSeconds: 3600
90989
91063
  }))).Credentials;
90990
- if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 612 })}) returned no usable credentials.`);
91064
+ if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 613 })}) returned no usable credentials.`);
90991
91065
  return {
90992
91066
  accessKeyId: creds.AccessKeyId,
90993
91067
  secretAccessKey: creds.SecretAccessKey,
@@ -92350,7 +92424,7 @@ async function resolvePlaceholderAccount(arn, region) {
92350
92424
  });
92351
92425
  try {
92352
92426
  const account = (await sts.send(new GetCallerIdentityCommand({}))).Account;
92353
- if (!account) throw new Error(`--assume-task-role: GetCallerIdentity returned no Account; cannot resolve placeholder ARN ${displayIdent(arn, { maxCodePoints: 612 })}. Pass the ARN explicitly: --assume-task-role <arn>`);
92427
+ if (!account) throw new Error(`--assume-task-role: GetCallerIdentity returned no Account; cannot resolve placeholder ARN ${displayIdent(arn, { maxCodePoints: 613 })}. Pass the ARN explicitly: --assume-task-role <arn>`);
92354
92428
  return arn.split(TASK_ROLE_ACCOUNT_PLACEHOLDER).join(account);
92355
92429
  } finally {
92356
92430
  sts.destroy();
@@ -92372,7 +92446,7 @@ async function assumeTaskRole(roleArn, region) {
92372
92446
  RoleSessionName: `cdkd-local-run-task-${Date.now()}`,
92373
92447
  DurationSeconds: 3600
92374
92448
  }))).Credentials;
92375
- if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 612 })}) returned no usable credentials.`);
92449
+ if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 613 })}) returned no usable credentials.`);
92376
92450
  return {
92377
92451
  accessKeyId: creds.AccessKeyId,
92378
92452
  secretAccessKey: creds.SecretAccessKey,
@@ -93854,7 +93928,7 @@ async function applyAgentCoreCredentialEnv(dockerEnv, args) {
93854
93928
  if (stsRegion) dockerEnv["AWS_REGION"] = stsRegion;
93855
93929
  assumeSucceeded = true;
93856
93930
  } catch (err) {
93857
- logger.warn(`--assume-role: STS AssumeRole(${displayIdent(args.assumeRoleArn, { maxCodePoints: 612 })}) failed: ${displaySafe(err instanceof Error ? err.message : String(err))}. Falling back to the developer's shell credentials.`);
93931
+ logger.warn(`--assume-role: STS AssumeRole(${displayIdent(args.assumeRoleArn, { maxCodePoints: 613 })}) failed: ${displaySafe(err instanceof Error ? err.message : String(err))}. Falling back to the developer's shell credentials.`);
93858
93932
  }
93859
93933
  }
93860
93934
  if (!assumeSucceeded) {
@@ -93911,7 +93985,7 @@ async function applyAgentCoreCredentialEnv(dockerEnv, args) {
93911
93985
  */
93912
93986
  function assumeRoleFallbackWarning(args) {
93913
93987
  const fallback = args.profile ? `--profile ${displayIdent(args.profile)}` : args.fallbackWithoutProfile;
93914
- return `--assume-role: STS AssumeRole(${displayIdent(args.assumeRoleArn, { maxCodePoints: 612 })}) failed for ${args.purpose}: ${displaySafe(args.error instanceof Error ? args.error.message : String(args.error))}. Falling back to ${fallback}.`;
93988
+ return `--assume-role: STS AssumeRole(${displayIdent(args.assumeRoleArn, { maxCodePoints: 613 })}) failed for ${args.purpose}: ${displaySafe(args.error instanceof Error ? args.error.message : String(args.error))}. Falling back to ${fallback}.`;
93915
93989
  }
93916
93990
  /**
93917
93991
  * Resolve the role ARN to assume, honoring the three `--assume-role` forms.
@@ -94072,7 +94146,7 @@ async function assumeAgentCoreExecutionRole(roleArn, region) {
94072
94146
  RoleSessionName: `${getEmbedConfig().resourceNamePrefix}-invoke-agentcore-${Date.now()}`,
94073
94147
  DurationSeconds: 3600
94074
94148
  }))).Credentials;
94075
- if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new CdkdError(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 612 })}) returned no usable credentials.`, "LOCAL_INVOKE_AGENTCORE_ASSUMEROLE_NO_CREDS");
94149
+ if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new CdkdError(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 613 })}) returned no usable credentials.`, "LOCAL_INVOKE_AGENTCORE_ASSUMEROLE_NO_CREDS");
94076
94150
  return {
94077
94151
  accessKeyId: creds.AccessKeyId,
94078
94152
  secretAccessKey: creds.SecretAccessKey,
@@ -94685,7 +94759,7 @@ async function localInvokeCommand(target, options) {
94685
94759
  const arn = resolveExecutionRoleArnFromState(stateForRoleHint, lambda.logicalId);
94686
94760
  if (arn) {
94687
94761
  resolvedAssumeRoleArn = arn;
94688
- logger.info(`--assume-role: auto-resolved execution role from cdkd state: ${displayIdent(arn, { maxCodePoints: 612 })}`);
94762
+ logger.info(`--assume-role: auto-resolved execution role from cdkd state: ${displayIdent(arn, { maxCodePoints: 613 })}`);
94689
94763
  } else logger.warn(`--assume-role: could not resolve the execution role ARN from cdkd state for '${lambda.logicalId}'. Pass the ARN explicitly: --assume-role <arn>. Falling back to the developer's shell credentials.`);
94690
94764
  }
94691
94765
  } else maybeSuggestAssumeRole(options, stateForRoleHint, lambda.logicalId);
@@ -95153,7 +95227,7 @@ async function applyLambdaCredentialEnv(dockerEnv, args) {
95153
95227
  assumeSucceeded = true;
95154
95228
  } catch (err) {
95155
95229
  const reason = err instanceof Error ? err.message : String(err);
95156
- logger.warn(`--assume-role: STS AssumeRole(${displayIdent(args.assumeRoleArn, { maxCodePoints: 612 })}) failed: ${displaySafe(reason)}. Falling back to the developer's shell credentials.`);
95230
+ logger.warn(`--assume-role: STS AssumeRole(${displayIdent(args.assumeRoleArn, { maxCodePoints: 613 })}) failed: ${displaySafe(reason)}. Falling back to the developer's shell credentials.`);
95157
95231
  }
95158
95232
  }
95159
95233
  if (!assumeSucceeded) {
@@ -95191,7 +95265,7 @@ async function assumeLambdaExecutionRole(roleArn, region) {
95191
95265
  RoleSessionName: `cdkd-local-invoke-${Date.now()}`,
95192
95266
  DurationSeconds: 3600
95193
95267
  }))).Credentials;
95194
- if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 612 })}) returned no usable credentials.`);
95268
+ if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${displayIdent(roleArn, { maxCodePoints: 613 })}) returned no usable credentials.`);
95195
95269
  return {
95196
95270
  accessKeyId: creds.AccessKeyId,
95197
95271
  secretAccessKey: creds.SecretAccessKey,
@@ -95312,7 +95386,7 @@ function materializeInlineCode(handler, source, fileExtension) {
95312
95386
  function suggestAssumeRoleFromState(state, logicalId) {
95313
95387
  const logger = getLogger();
95314
95388
  const roleArn = resolveExecutionRoleArnFromState(state, logicalId);
95315
- if (roleArn) logger.info(`Hint: the deployed function uses execution role ${displayIdent(roleArn, { maxCodePoints: 612 })}. Re-run with --assume-role to invoke under the deployed function's narrow permissions.`);
95389
+ if (roleArn) logger.info(`Hint: the deployed function uses execution role ${displayIdent(roleArn, { maxCodePoints: 613 })}. Re-run with --assume-role to invoke under the deployed function's narrow permissions.`);
95316
95390
  }
95317
95391
  /**
95318
95392
  * Emit the "re-run with `--assume-role`" hint, if it applies.
@@ -95472,4 +95546,4 @@ function buildProgram() {
95472
95546
 
95473
95547
  //#endregion
95474
95548
  export { buildProgram };
95475
- //# sourceMappingURL=program-PCCyP9-O.js.map
95549
+ //# sourceMappingURL=program-CnSaRdY9.js.map