@go-to-k/cdkd 0.296.2 → 0.296.4

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.
@@ -2,8 +2,8 @@ import { a as runWithStackAwsClients, i as resetAwsClients, o as setAwsClients,
2
2
  import { A as displaySafe, C as SAFE_MSG_ALTERED_CHAR, D as cutMarker, E as UNRENDERABLE, F as safeMsg, I as stringifyJsonPayload, L as truncateCodePoints, M as isPasteableIdent, O as displayAwsMessage, P as plainIdentOr, T as STACK_REF_MAX_CODE_POINTS, b as withSkipPrefix, c as getLiveRenderer, d as PATTERN_B_RESOURCE_TYPES, h as generateResourceName, i as reserveStdoutForPayload, j as displayStackName, k as displayIdent, l as PATTERN_B_NAME_OPTIONS, m as explicitNamePropertyFor, n as getLogger, o as runStackBuffered, p as derivesPatternBName, r as isStdoutReservedForPayload, u as PATTERN_B_NAME_PROPERTIES, w as SECRET_REF_MAX_CODE_POINTS, x as withStackName } from "./logger-Dvc7ddKe.js";
3
3
  import { An as setPasteableVerbFlags, At as CUSTOM_RESOURCE_RESPONSE_PREFIX, Bt as clientDefaultsFor, Ct as buildForceUnlockCommand, Dn as shellQuote, Dt as formatLockOperation, En as shellBoundedDisplay, Et as formatLockExpiry, F as runDeleteAttempt, Ft as producerRecordKey, G as beginCommandInterruptScope, Gn as retryClassificationText, Ht as AccountIdUnavailableError, It as setPasteableAwsProfile, J as isInterruptedWaitError, Jn as safeStringify, Jt as DeployCancelledError, K as endCommandInterruptScope, Kn as describeAwsFailure, Kt as CrossAccountSecretRefusalError, Lt as withPasteableAwsProfile, Mt as injectiveKey, On as withheldTargetClause, Ot as formatLockOwner, Pt as producerCoordinateKey, Qn as markNonRetryable, Qt as LocalStartServiceError, Rt as ambientClientDefaults, Sn as pasteableCommand, St as UNREPRODUCIBLE_LOCK_CLAUSE, Tn as quotedOrDescribed, Tt as forceQuitRecoveryClause, Un as isRetryableTransientError, V as isAwsCliLiteral, Vn as isAmbiguousOutcomeError, Vt as credentialFingerprint, Wn as isTransientServerError, Wt as CdkdError, Xn as isMarkedNonRetryable, Xt as IntrinsicResolutionRefusalError, Yt as DynamicReferenceRegionAmbiguousError, Zn as isThrottlingError, Zt as LocalInvokeBuildError$1, _ as VALUE_NOT_SHOWN, _n as SHELL_ACTIVE_WHY, an as ResourceTimeoutError, cn as StackTerminationProtectionError, g as assertRegionMatch, h as RESOURCE_NOT_FOUND, hn as TIMEOUT_FLAG_RESOURCE_TYPE, in as ProvisioningError, it as resourceTypeShown, jt as DEFAULT_STATE_PREFIX, kn as setPasteableRunFlags, mn as withErrorHandling, n as RESOLVED_PREVIOUS_PRINCIPAL_KEYS, nn as NestedStackChildDirectDestroyError, nt as logicalIdShown, on as ResourceUpdateNotSupportedError, pn as normalizeAwsError, q as interruptWatchListenerCount, rn as PartialFailureError, s as readRecordedPrincipals, sn as StackHasActiveImportsError, t as IAM_PRINCIPAL_NAME, tn as MalformedProducerRecordRefusalError, un as SynthesisError, w as remedyLogicalId, wn as plainOrDescribed, wt as buildLockContentionMessage, xn as isInertUnquoted, yn as commandHole, zt as ambientCredentialConfig } from "./iam-policy-targets-DSDSdxXz.js";
4
4
  import { n as awsClientDefaults, r as getAssumedRoleCredentials, u as formatAuthority } from "./aws-client-defaults-D0q0z4dG.js";
5
- import { $ as resourcesNamingDeclaredParameter, $o as buildDenyExternalAccessPolicy, $r as malformedDriftResourcePropertiesWarning, $s as nullPrototypeRecord, $t as extractDeploymentEventError, Ai as refuseMalformedResourceEntriesForDeploy, Ao as importableOutputs, Ar as carriesFetchableDynamicReference, As as resolveStateBucketWithDefault, At as planRollback, Ba as literalSplitDelimitersOf, Bi as refuseMalformedResourcesForDestroy, Bn as CloudControlProvider, Bo as createAssetRedirectResolver, Bs as uploadCfnTemplate, Bt as createPreDeleteFinalSnapshot, C as perType, Ci as refuseMalformedOrphans, Cn as withCreateTokenLedger, Co as acceptedCreateOnlyDropsOf, Cs as getDefaultStateBucketName, Da as describeTypeWithThrottleRetry, Di as refuseMalformedOutputsForDestroy, Do as hasReasonlessBaselineRefusal, Dr as getAccountInfo, Ds as resolveAutoAssetStorage, Dt as isJournaledOrphan, Ea as templateResourceTypes, Ei as refuseMalformedOutputs, Eo as hasReadableExportSet, Er as parameterTypeMayLoseSecretIdentity, Es as resolveApp, Et as demoteSupersededOrphans, Fa as inheritNestedStackParameterAssociations, Fi as refuseMalformedResourcePropertiesForDestroy, Fn as ProviderRegistry, Fo as AssetPublisher, Fr as isStalePlaceholderArnAttribute, Fs as ssmResolvedValueType, Ft as inheritProducerRegions, G as cyan, Ga as shareLogOnlyValues, Gi as repairMalformedOutputsForReadOnly, Gn as deleteIndeterminateGuards, Go as assertAssetBucketRegion, Gr as UNREADABLE_RESOURCES_MAP_ROW, Gs as canonicalizeRegion, H as formatResourceLine, Ha as printingCorpusOf, Hi as refuseMalformedState, Hn as ccProtectionRegistryTypes, Ho as rewriteTemplateAssetReferences, Hr as STATE_REGION_DIVERGED, Hs as decodeListingKey, Ht as isFinalSnapshotError, Ia as recordNestedStackParameterExpressions, Ii as refuseMalformedResourcePropertiesForDrift, In as ccBrokenReason, Io as isSensitiveAttributeName, Ir as refStateLookupFromResource, Is as CFN_TEMPLATE_BODY_LIMIT, It as ATOMIC_FINAL_SNAPSHOT_TYPES, J as red, Ja as maskSecretsInError, Ji as repairMalformedResourcesForReadOnly, Jn as isWaitAbandonedError, Jo as isCrossRegionRedirect, Jr as hasReadableOrphans, Js as StageLoadError, K as gray, Ka as createSecretMasker, Ki as repairMalformedResourceEntriesForReadOnly, Kn as deleteSkipReason, Ko as ensureAssetStorage, Kr as deployRefusesOrphanRowsReason, Ks as derivePartitionAndUrlSuffix, La as carryLogOnlyValues, Li as refuseMalformedResourcePropertiesForExport, Ln as wouldReturnToSdkProvider, Lo as stringifyValue, Ls as CFN_TEMPLATE_URL_LIMIT, Lt as PRE_DELETE_SNAPSHOT_TYPES, Ma as DagBuilder, Mi as refuseMalformedResourceEntriesForImport, Mo as orphansAfterRollback, Mr as keepsSecretReferenceToken, Ms as resolveUseCdkBootstrapAssets, Mt as resolveReplacementOldType, Na as TemplateParser, Ni as refuseMalformedResourceEntriesForImportSave, No as orphansCarriedFrom, Nr as AWS_NO_VALUE, Ns as stateBucketExistenceConfirmed, Nt as findNestedStackTypeChanges, Oa as withRetry, Oi as refuseMalformedResourceAttributesForOrphan, Oo as hasUnverifiableParameterRefusal, Or as isImpossibleEmptyStoredAttribute, Os as resolveCaptureObservedState, Ot as isReplacementOrphan, Pa as liveMatchesUnresolvedTokenFrame, Pi as refuseMalformedResourceEntriesForOrphan, Pn as CC_BROKEN_REASON, Po as shouldRetainResource, Pr as cfnRefValueFromPhysicalId, Ps as warnDeprecatedNoPrefixCliFlag, Q as reachableDivergentParameters, Qa as scrubResourceRecord, Qi as findActionableSilentDrops, Qo as validateContainerRepoName, Qr as isReadableResourceEntry, Qs as hasPlainPrototype, Qt as DeploymentEventsStore, Ra as createUnionSecretMasker, Ri as refuseMalformedResourcePropertiesForOrphan, Rn as isCustomResourceType$1, Ro as WorkGraph, Rr as withSharedDrainBudget, Rs as MIGRATE_TMP_PREFIX, Rt as buildFinalSnapshotIdentifier, S as isProtectionValueActive, Si as refuseMalformedOrphanRecordsForDestroy, So as splitImportedOps, Ss as synthesisStatusMessage, St as destroyStackRecordsView, Ta as prefetchCreateOnlyPropertyPaths, Ti as refuseMalformedOrphansForOrphan, To as exportNamesCarriedFrom, Tr as isUnboundTemplateParameter, Ts as loadCdkJson, Tt as recordAfterRollbackUpdate, U as createReadOnlyAttributeHealerFactory, Ua as recordLogOnlyParameterValue, Ui as repairMalformedOrphanRecordsForReadOnly, Uo as AssetModeResolver, Ur as STATE_RESOURCES_MALFORMED, Us as expectedOwnerParam, Ut as refusesFinalSnapshot, Va as logOnlyValueCount, Vi as refuseMalformedResourcesForExport, Vn as slowCcOperationTimeoutMs, Vo as loadPublishableAssetManifest, Vr as JSON_LISTING_HOLE_VALUE, Vs as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, Vt as effectiveDeletionPolicy, W as bold, Wa as recordLogOnlyValue, Wi as repairMalformedOrphansForReadOnly, Wn as UNSPECIFIED_SKIP_REASON, Wo as BOOTSTRAP_MARKER_PREFIX, Wr as UNREADABLE_ORPHANS_CONTAINER_ROW, Ws as PARTITION_TABLE, Wt as unsupportedFinalSnapshotError, X as computeParameterTaint, Xa as markSameGenerationBag, Xi as unreadableOrphanRecords, Xo as readBootstrapMarkerBody, Xr as hasReadableResources, Xs as defineOwnKey, Xt as updatePartialReason, Y as yellow, Ya as maskSecretsInText, Yi as unpreviewableOrphanRecords, Yo as parseBootstrapMarker, Yr as hasReadableOutputs, Ys as processStackMessages, Yt as updatePartialMessage, Z as namesAnyDeclaredParameter, Za as redactSecretsForState, Zi as unreadableResourceEntries, Zo as validateAssetBucketName, Zr as isReadableOrphanRecord, Zs as hasOwnKey, Zt as DeploymentEventsReader, _ as makeCanonicalizePropertiesFn, _i as malformedStateRefusalMessage, _n as findDestructiveChanges, _o as isSingleDynamicReferenceToken, _r as envCredentialsAreAssumedRole, _s as escapeRegExp, a as findNestedTemplateTreeDefect, aa as shownType, ac as resolveAssemblyPath, ai as malformedOrphanRecordsRefusalMessage, an as secretSafeKeyDisplay, ao as carriesSecretMask, ar as classifyReplaySecretRegion, as as dockerSpawnEnvWithSensitive, at as makeSiblingClaimReader, b as recordedProtectionNote, bo as S3StateBackend, bs as getDockerImageBySourceHash, bt as replayRollback, c as renderNestedTemplateTreeDefect, ca as isStatefulRecreateTargetSync, ci as malformedOrphansRefusalMessage, cn as noEchoParameterValueSeed, co as recordMaskOnlyValuesIn, cr as applyRoleArnIfSet, cs as getDockerCmd, ct as displacedOpClause, d as conditionInputsFrom, di as malformedOutputsWarning, dn as isExportAliasCollision, do as wholeStringLeavesOf, dr as explicitRoleArnOrThrow, ds as partitionSensitiveEnv, ea as unwrittenCreateOnlyReplacement, ec as ownValue, ei as malformedExportNamesWarning, en as WITHHELD_NAME_DISPLAY, eo as DYNAMIC_REFERENCE_TOKEN_SCAN, es as buildDockerImage, et as deleteJournaledOrphans, f as parentSuppliedValues, fi as malformedRenderedContainersWarning, fn as bindingSkippedOutputs, fo as STATE_SOURCED_BASELINE_RULES, fr as isIamRoleArn, fs as redactDockerArgvValues, ft as nestedChildStackName$1, g as mergeNoChangeOutputs, gi as malformedScrubResourceEntriesRefusalMessage, gn as constructPathOf, go as WHOLE_DYNAMIC_REFERENCE_PATTERN, gr as callerEnvCredentials, gs as warnFinchArgvExposure, gt as withNestedRevertRun, h as keptWholeReasonText, hi as malformedResourcesWarning, hn as maskingRetryLogger, ho as TEMPLATE_SOURCED_RULES, hr as applyCallerIdentityCredentials, hs as runDockerStreaming, ht as revertedNestedRowIds, i as childTemplateLoader, ia as findReplacedReadersOfRecreateTargets, ic as renderAssemblyPathEscape, ii as malformedLocalResourcesWarning, in as secretBearingStateKeyWarning, io as identityKeyFor, ir as IntrinsicFunctionResolver, is as describeDockerFailure, it as sameJournaledOrphans, ji as refuseMalformedResourceEntriesForDestroy, jo as isReadableBag, jr as isNamelessDynamicReferenceError, js as resolveStateBucketWithDefaultAndSource, jt as replacementNeverSwapped, ki as refuseMalformedResourceEntries, ko as importableOutputKeys, kr as carriesDynamicReference, ks as resolveSkipPrefix, kt as planFailedOps, l as templateIdentity, la as renderStatefulReason, li as malformedOrphansWarning, ln as collectDeclaredOutputNames, lo as recordNoEchoAttributeValues, lr as assertFlagRoleArn, ls as isDockerClientEnvKey, lt as displacedPhysicalIdShown, m as isSecretBearingReferenceString, mi as malformedResourcePropertiesWarning, mn as DEFAULT_RESOURCE_WARN_AFTER_MS, mo as STATE_SOURCED_READBACK_RULES, mr as AWS_CREDENTIAL_ENV_KEYS, ms as runDockerForeground, n as IMPLICIT_DELETE_DEPENDENCIES, na as NO_CC_HANDLERS_REASON, nc as describeFileReadFailure, ni as malformedLocalOutputsWarning, nn as exportAliasCollisionScrubWarning, no as isUncertifiedBaselineMaskPosition, nr as DiffCalculator, ns as describeDockerCapturedOutput, nt as journaledOrphanLines, o as isAbsoluteAssetPath, oa as MULTI_REGION_RECREATE_BLOCKED_TYPES, oi as malformedOrphanRecordsWarning, on as exportNameSecretExposure, oo as provenPublicValue, or as producerRegionsFromState, os as finchSecretArgvRefusal, ot as planOrphanAdoption, p as readRecordedConditionVerdicts, pi as malformedResourceEntriesWarning, pn as DEFAULT_RESOURCE_TIMEOUT_MS, po as STATE_SOURCED_CROSS_GENERATION_RULES, pr as sendableAssumeRoleCommand, ps as redactedDockerCause, pt as recordDisplacedSkips, q as green, qa as errorCauseChain, qi as repairMalformedResourcePropertiesForReadOnly, qo as getBootstrapMarkerKey, qr as displayLogicalId, qs as AssemblyReader, r as computeImplicitDeleteEdges, ra as hasNoCloudControlHandlers, rc as displayAssemblyPath, ri as malformedLocalResourceEntriesWarning, rn as secretBearing, ro as pathCrossesDottedKey, rr as INTRINSIC_KEYS, rs as describeDockerExecFailure, rt as loadJournaledOrphans, s as listNestedTemplateRows, sa as isStatefulRecreateTargetForReplace, sc as resolveBucketRegion, si as malformedOrphanRowsKeptWarning, sn as isWholeDynamicReferenceValue, so as recordMaskOnlyValue, sr as regionLessSecretName, ss as formatDockerLoginError, st as NESTED_PENDING_PARENT_REASON, t as DeployEngine, tc as absoluteAssemblyPathEscape, ti as malformedExportSourceWarning, tn as displayTextOrWithheld, to as dynamicReferenceTokens, ts as resolveDockerContextDirectory, tt as isHandledOrphan, u as conditionFingerprint, ui as malformedOutputsRefusalMessage, un as collectPublishedOutputNames, uo as recordProvenPublicExpression, ur as assertSendableRoleArn, us as isMalformedEnvKey, ut as dropSettledNestedJournals, v as withResourceDeadline, vi as previewableOrphanRecords, vn as formatDestructiveChange, vo as LockManager, vs as stripControlChars, vt as withNestedStackContext, w as readProtection, wi as refuseMalformedOrphansForDestroy, wo as describeRegionValueKind, wr as coerceParameterTypedValue, ws as getLegacyStateBucketName, wt as withStackRecords, x as PROTECTION_PROPERTY_BY_TYPE, xi as refuseMalformedOrphanRecords, xn as ledgerForStack, xo as rebuildClientForBucketRegion, xs as Synthesizer, y as recordedProtectionEvidence, yi as refuseDivergentRecordRegionForDestroy, yn as RollbackInlinePolicyWriters, yo as isLockInfoExpired, ys as AssetManifestLoader, yt as replayFailedOperations, za as hasMaskableValues, zi as refuseMalformedResourcesForDeploy, zo as buildAssetRedirectMap, zr as parameterInputsFor, zs as findLargeInlineResources, zt as ccRoutedFinalSnapshotError } from "./deploy-engine-C_Eg-RHm.js";
6
- import { t as getCdkdVersion } from "./version-WJhcQQ3m.js";
5
+ import { $ as namesAnyDeclaredParameter, $a as markSameGenerationBag, $i as unreadableOrphanRecords, $o as readBootstrapMarkerBody, $r as hasReadableResources, $s as defineOwnKey, $t as DeploymentEventsReader, Aa as describeTypeWithThrottleRetry, Ai as refuseMalformedOutputsForDestroy, Ao as hasReasonlessBaselineRefusal, Ar as getAccountInfo, As as resolveAutoAssetStorage, At as isReplacementOrphan, Ba as carryLogOnlyValues, Bi as refuseMalformedResourcePropertiesForExport, Bn as isCustomResourceType$1, Bo as stringifyValue, Bs as CFN_TEMPLATE_URL_LIMIT, Bt as buildFinalSnapshotIdentifier, C as perType, Cn as ledgerForStack, Co as S3StateBackend, Cs as getDockerImageBySourceHash, Di as refuseMalformedOrphansForDestroy, Do as describeRegionValueKind, Dr as coerceParameterTypedValue, Ds as getLegacyStateBucketName, Dt as recordAfterRollbackUpdate, Ei as refuseMalformedOrphans, Eo as acceptedCreateOnlyDropsOf, Es as getDefaultStateBucketName, Et as withStackRecords, Fa as DagBuilder, Fi as refuseMalformedResourceEntriesForImport, Fo as orphansAfterRollback, Fr as keepsSecretReferenceToken, Fs as resolveUseCdkBootstrapAssets, Ft as findNestedStackTypeChanges, G as cyan, Ga as printingCorpusOf, Gi as refuseMalformedState, Gn as ccProtectionRegistryTypes, Go as rewriteTemplateAssetReferences, Gr as STATE_REGION_DIVERGED, Gs as decodeListingKey, Gt as refusesFinalSnapshot, H as formatResourceLine, Ha as hasMaskableValues, Hi as refuseMalformedResourcesForDeploy, Hn as withPrintingSecrets, Ho as buildAssetRedirectMap, Hr as parameterInputsFor, Hs as findLargeInlineResources, Ht as createPreDeleteFinalSnapshot, Ia as TemplateParser, Ii as refuseMalformedResourceEntriesForImportSave, In as CC_BROKEN_REASON, Io as orphansCarriedFrom, Ir as AWS_NO_VALUE, Is as stateBucketExistenceConfirmed, J as red, Ja as shareLogOnlyValues, Ji as repairMalformedOutputsForReadOnly, Jn as deleteIndeterminateGuards, Jo as assertAssetBucketRegion, Jr as UNREADABLE_RESOURCES_MAP_ROW, Js as canonicalizeRegion, K as gray, Ka as recordLogOnlyParameterValue, Ki as repairMalformedOrphanRecordsForReadOnly, Ko as AssetModeResolver, Kr as STATE_RESOURCES_MALFORMED, Ks as expectedOwnerParam, Kt as unsupportedFinalSnapshotError, La as liveMatchesUnresolvedTokenFrame, Li as refuseMalformedResourceEntriesForOrphan, Ln as ProviderRegistry, Lo as shouldRetainResource, Lr as cfnRefValueFromPhysicalId, Ls as warnDeprecatedNoPrefixCliFlag, Lt as inheritProducerRegions, Mi as refuseMalformedResourceEntries, Mo as importableOutputKeys, Mr as carriesDynamicReference, Ms as resolveSkipPrefix, Mt as planRollback, Ni as refuseMalformedResourceEntriesForDeploy, No as importableOutputs, Nr as carriesFetchableDynamicReference, Ns as resolveStateBucketWithDefault, Nt as replacementNeverSwapped, Oa as prefetchCreateOnlyPropertyPaths, Oi as refuseMalformedOrphansForOrphan, Oo as exportNamesCarriedFrom, Or as isUnboundTemplateParameter, Os as loadCdkJson, Ot as demoteSupersededOrphans, Pi as refuseMalformedResourceEntriesForDestroy, Po as isReadableBag, Pr as isNamelessDynamicReferenceError, Ps as resolveStateBucketWithDefaultAndSource, Pt as resolveReplacementOldType, Q as computeParameterTaint, Qa as maskSecretsInText, Qi as unpreviewableOrphanRecords, Qo as parseBootstrapMarker, Qr as hasReadableOutputs, Qs as processStackMessages, Qt as updatePartialReason, Ra as inheritNestedStackParameterAssociations, Ri as refuseMalformedResourcePropertiesForDestroy, Rn as ccBrokenReason, Ro as AssetPublisher, Rr as isStalePlaceholderArnAttribute, Rs as ssmResolvedValueType, Rt as ATOMIC_FINAL_SNAPSHOT_TYPES, S as isProtectionValueActive, Si as refuseDivergentRecordRegionForDestroy, So as isLockInfoExpired, Ss as AssetManifestLoader, St as replayRollback, Ti as refuseMalformedOrphanRecordsForDestroy, Tn as withCreateTokenLedger, To as splitImportedOps, Ts as synthesisStatusMessage, U as createReadOnlyAttributeHealerFactory, Ua as literalSplitDelimitersOf, Ui as refuseMalformedResourcesForDestroy, Un as CloudControlProvider, Uo as createAssetRedirectResolver, Us as uploadCfnTemplate, Ut as effectiveDeletionPolicy, Va as createUnionSecretMasker, Vi as refuseMalformedResourcePropertiesForOrphan, Vo as WorkGraph, Vr as withSharedDrainBudget, Vs as MIGRATE_TMP_PREFIX, Vt as ccRoutedFinalSnapshotError, W as bold, Wa as logOnlyValueCount, Wi as refuseMalformedResourcesForExport, Wn as slowCcOperationTimeoutMs, Wo as loadPublishableAssetManifest, Wr as JSON_LISTING_HOLE_VALUE, Ws as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, Wt as isFinalSnapshotError, X as secretNamePrintingBag, Xa as errorCauseChain, Xi as repairMalformedResourcePropertiesForReadOnly, Xo as getBootstrapMarkerKey, Xr as displayLogicalId, Xs as AssemblyReader, Y as yellow, Ya as createSecretMasker, Yi as repairMalformedResourceEntriesForReadOnly, Yn as deleteSkipReason, Yo as ensureAssetStorage, Yr as deployRefusesOrphanRowsReason, Ys as derivePartitionAndUrlSuffix, Z as stateSecretNameNeedles, Za as maskSecretsInError, Zi as repairMalformedResourcesForReadOnly, Zn as isWaitAbandonedError, Zo as isCrossRegionRedirect, Zr as hasReadableOrphans, Zs as StageLoadError, Zt as updatePartialMessage, _ as makeCanonicalizePropertiesFn, _i as malformedResourcePropertiesWarning, _n as maskingRetryLogger, _o as STATE_SOURCED_READBACK_RULES, _r as AWS_CREDENTIAL_ENV_KEYS, _s as runDockerForeground, _t as revertedNestedRowIds, a as findNestedTemplateTreeDefect, aa as NO_CC_HANDLERS_REASON, ac as describeFileReadFailure, ai as malformedLocalOutputsWarning, an as secretBearing, ao as isUncertifiedBaselineMaskPosition, ar as DiffCalculator, as as describeDockerCapturedOutput, at as loadJournaledOrphans, b as recordedProtectionNote, bi as malformedStateRefusalMessage, bn as formatDestructiveChange, bo as isSingleDynamicReferenceToken, br as envCredentialsAreAssumedRole, bs as escapeRegExp, bt as withNestedStackContext, c as renderNestedTemplateTreeDefect, ca as shownType, cc as resolveAssemblyPath, ci as malformedOrphanRecordsRefusalMessage, cn as exportNameSecretExposure, co as carriesSecretMask, cr as classifyReplaySecretRegion, cs as dockerSpawnEnvWithSensitive, ct as planOrphanAdoption, d as conditionInputsFrom, da as isStatefulRecreateTargetSync, di as malformedOrphansRefusalMessage, dn as collectDeclaredOutputNames, do as recordMaskOnlyValuesIn, dr as applyRoleArnIfSet, ds as getDockerCmd, dt as displacedPhysicalIdShown, ea as unreadableResourceEntries, ec as hasOwnKey, ei as isReadableOrphanRecord, en as DeploymentEventsStore, eo as redactSecretsForState, es as validateAssetBucketName, et as reachableDivergentParameters, f as parentSuppliedValues, fa as renderStatefulReason, fi as malformedOrphansWarning, fn as collectPublishedOutputNames, fo as recordNoEchoAttributeValues, fr as assertFlagRoleArn, fs as isDockerClientEnvKey, ft as dropSettledNestedJournals, g as mergeNoChangeOutputs, gi as malformedResourceEntriesWarning, gn as DEFAULT_RESOURCE_WARN_AFTER_MS, go as STATE_SOURCED_CROSS_GENERATION_RULES, gr as sendableAssumeRoleCommand, gs as redactedDockerCause, h as keptWholeReasonText, hi as malformedRenderedContainersWarning, hn as DEFAULT_RESOURCE_TIMEOUT_MS, ho as STATE_SOURCED_BASELINE_RULES, hr as isIamRoleArn, hs as redactDockerArgvValues, ht as recordDisplacedSkips, i as childTemplateLoader, ic as absoluteAssemblyPathEscape, ii as malformedExportSourceWarning, in as exportAliasCollisionScrubWarning, io as dynamicReferenceTokens, is as resolveDockerContextDirectory, it as journaledOrphanLines, ja as withRetry, ji as refuseMalformedResourceAttributesForOrphan, jo as hasUnverifiableParameterRefusal, jr as isImpossibleEmptyStoredAttribute, js as resolveCaptureObservedState, jt as planFailedOps, ka as templateResourceTypes, ki as refuseMalformedOutputs, ko as hasReadableExportSet, kr as parameterTypeMayLoseSecretIdentity, ks as resolveApp, kt as isJournaledOrphan, l as templateIdentity, la as MULTI_REGION_RECREATE_BLOCKED_TYPES, li as malformedOrphanRecordsWarning, ln as isWholeDynamicReferenceValue, lo as provenPublicValue, lr as producerRegionsFromState, ls as finchSecretArgvRefusal, lt as NESTED_PENDING_PARENT_REASON, m as isSecretBearingReferenceString, mi as malformedOutputsWarning, mn as bindingSkippedOutputs, mo as wholeStringLeavesOf, mr as explicitRoleArnOrThrow, ms as partitionSensitiveEnv, mt as nestedChildStackName$1, n as IMPLICIT_DELETE_DEPENDENCIES, nc as nullPrototypeRecord, ni as malformedDriftResourcePropertiesWarning, nn as WITHHELD_NAME_DISPLAY, ns as buildDenyExternalAccessPolicy, nt as deleteJournaledOrphans, o as isAbsoluteAssetPath, oa as hasNoCloudControlHandlers, oc as displayAssemblyPath, oi as malformedLocalResourceEntriesWarning, on as secretBearingStateKeyWarning, oo as pathCrossesDottedKey, or as INTRINSIC_KEYS, os as describeDockerExecFailure, ot as sameJournaledOrphans, p as readRecordedConditionVerdicts, pi as malformedOutputsRefusalMessage, pn as isExportAliasCollision, po as recordProvenPublicExpression, pr as assertSendableRoleArn, ps as isMalformedEnvKey, q as green, qa as recordLogOnlyValue, qi as repairMalformedOrphansForReadOnly, qn as UNSPECIFIED_SKIP_REASON, qo as BOOTSTRAP_MARKER_PREFIX, qr as UNREADABLE_ORPHANS_CONTAINER_ROW, qs as PARTITION_TABLE, r as computeImplicitDeleteEdges, ra as unwrittenCreateOnlyReplacement, rc as ownValue, ri as malformedExportNamesWarning, rn as displayTextOrWithheld, ro as DYNAMIC_REFERENCE_TOKEN_SCAN, rs as buildDockerImage, rt as isHandledOrphan, s as listNestedTemplateRows, sa as findReplacedReadersOfRecreateTargets, sc as renderAssemblyPathEscape, si as malformedLocalResourcesWarning, sn as secretSafeKeyDisplay, so as identityKeyFor, sr as IntrinsicFunctionResolver, ss as describeDockerFailure, st as makeSiblingClaimReader, t as DeployEngine, ta as findActionableSilentDrops, tc as hasPlainPrototype, ti as isReadableResourceEntry, tn as extractDeploymentEventError, to as scrubResourceRecord, ts as validateContainerRepoName, tt as resourcesNamingDeclaredParameter, u as conditionFingerprint, ua as isStatefulRecreateTargetForReplace, uc as resolveBucketRegion, ui as malformedOrphanRowsKeptWarning, un as noEchoParameterValueSeed, uo as recordMaskOnlyValue, ur as regionLessSecretName, us as formatDockerLoginError, ut as displacedOpClause, v as withResourceDeadline, vi as malformedResourcesWarning, vn as constructPathOf, vo as TEMPLATE_SOURCED_RULES, vr as applyCallerIdentityCredentials, vs as runDockerStreaming, vt as withNestedRevertRun, w as readProtection, wi as refuseMalformedOrphanRecords, wo as rebuildClientForBucketRegion, ws as Synthesizer, wt as destroyStackRecordsView, x as PROTECTION_PROPERTY_BY_TYPE, xi as previewableOrphanRecords, xn as RollbackInlinePolicyWriters, xo as LockManager, xs as stripControlChars, xt as replayFailedOperations, y as recordedProtectionEvidence, yi as malformedScrubResourceEntriesRefusalMessage, yn as findDestructiveChanges, yo as WHOLE_DYNAMIC_REFERENCE_PATTERN, yr as callerEnvCredentials, ys as warnFinchArgvExposure, za as recordNestedStackParameterExpressions, zi as refuseMalformedResourcePropertiesForDrift, zn as wouldReturnToSdkProvider, zo as isSensitiveAttributeName, zr as refStateLookupFromResource, zs as CFN_TEMPLATE_BODY_LIMIT, zt as PRE_DELETE_SNAPSHOT_TYPES } from "./deploy-engine-HCnNEpdp.js";
6
+ import { t as getCdkdVersion } from "./version-D557_3cB.js";
7
7
  import { randomBytes, randomUUID } from "node:crypto";
8
8
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetObjectCommand, HeadBucketCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, NotFound, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutBucketVersioningCommand, PutObjectCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
9
9
  import { GetRoleCommand, GetUserCommand } from "@aws-sdk/client-iam";
@@ -29,7 +29,7 @@ import * as readline$1 from "node:readline/promises";
29
29
  import readline from "node:readline/promises";
30
30
  import { Document, Pair, Scalar, YAMLMap, YAMLSeq, isScalar, parse, stringify, visit } from "yaml";
31
31
  import { CfnLocalStateProvider, createLocalStartAgentCoreCommand, createLocalStartCloudFrontCommand, createLocalStateProvider, getEmbedConfig, isCfnFlagPresent, isCfnFlagPresent as isCfnFlagPresent$1, listTargets, rejectExplicitCfnStackWithMultipleStacks, resolveCfnFallbackRegion, setEmbedConfig, substituteAgainstState, substituteAgainstStateAsync, substituteEnvVarsFromState, substituteEnvVarsFromStateAsync } from "cdk-local";
32
- import { A2A_CONTAINER_PORT, A2A_PATH, AGENTCORE_A2A_PROTOCOL, AGENTCORE_AGUI_PROTOCOL, AGENTCORE_MCP_PROTOCOL, ConnectionRegistry, EcsTaskResolutionError, HOST_GATEWAY_MIN_VERSION, LocalInvokeBuildError, MCP_CONTAINER_PORT, MCP_PATH, a2aInvokeOnce, addAlbSpecificOptions, addCommonEcsServiceOptions, addStartServiceSpecificOptions, albStrategy, architectureToPlatform, attachAuthorizers, attachStageContext, availableApiIdentifiers, bufferToBody, buildAgentCoreCodeImage, buildCognitoJwksUrl, buildConnectEvent, buildContainerImage, buildCorsConfigByApiId, buildCorsConfigFromCloudFrontChain, buildDisconnectEvent, buildJwksUrlFromIssuer, buildMessageEvent, buildMgmtEndpointEnvUrl, buildStageMap, classifySourceChange, createAuthorizerCache, createFileWatcher, createFileWatcher as createFileWatcher$1, createJwksCache, createWatchPredicates, defaultCredentialsLoader, derivePseudoParametersFromRegion, discoverRoutes, discoverWebSocketApis, downloadAndExtractS3Bundle, filterRoutesByApiIdentifier, groupRoutesByServer, handleConnectionsRequest, invokeAgentCore, invokeAgentCoreWs, materializeLayerFromArn, mcpInvokeOnce, parseConnectionsPath, parseSelectionExpressionPath, pickAgentCoreCandidateStack, pickAgentCoreCandidateStack as pickAgentCoreCandidateStack$1, probeHostGatewaySupport, readMtlsMaterialsFromDisk, resolveAgentCoreTarget, resolveEnvVars, resolveHostGatewayExtraHosts, resolveRuntimeCodeMountPath, resolveRuntimeFileExtension, resolveRuntimeImage, resolveSingleTarget, resolveWatchConfig, runEcsServiceEmulator, signAgentCoreInvocation, startApiServer, substituteImagePlaceholders, tryResolveImageFnJoin, verifyJwtViaDiscovery, waitForAgentCorePing } from "cdk-local/internal";
32
+ import { A2A_CONTAINER_PORT, A2A_PATH, AGENTCORE_A2A_PROTOCOL, AGENTCORE_AGUI_PROTOCOL, AGENTCORE_MCP_PROTOCOL, ConnectionRegistry, DynamicReferenceResolver, EcsTaskResolutionError, HOST_GATEWAY_MIN_VERSION, LocalInvokeBuildError, MCP_CONTAINER_PORT, MCP_PATH, a2aInvokeOnce, addAlbSpecificOptions, addCommonEcsServiceOptions, addStartServiceSpecificOptions, albStrategy, architectureToPlatform, attachAuthorizers, attachStageContext, availableApiIdentifiers, bufferToBody, buildAgentCoreCodeImage, buildCognitoJwksUrl, buildConnectEvent, buildContainerImage, buildCorsConfigByApiId, buildCorsConfigFromCloudFrontChain, buildDisconnectEvent, buildJwksUrlFromIssuer, buildMessageEvent, buildMgmtEndpointEnvUrl, buildStageMap, classifySourceChange, containsDynamicReference, createAuthorizerCache, createFileWatcher, createFileWatcher as createFileWatcher$1, createJwksCache, createWatchPredicates, defaultCredentialsLoader, derivePseudoParametersFromRegion, discoverRoutes, discoverWebSocketApis, downloadAndExtractS3Bundle, filterRoutesByApiIdentifier, firstUsableRegion, groupRoutesByServer, handleConnectionsRequest, invokeAgentCore, invokeAgentCoreWs, keysNotFromTemplate, keysOverriddenBy, materializeLayerFromArn, mcpInvokeOnce, parseConnectionsPath, parseSelectionExpressionPath, pickAgentCoreCandidateStack, pickAgentCoreCandidateStack as pickAgentCoreCandidateStack$1, probeHostGatewaySupport, readMtlsMaterialsFromDisk, resolveAgentCoreTarget, resolveDynamicReferencesInEnv, resolveEnvVars, resolveHostGatewayExtraHosts, resolveRuntimeCodeMountPath, resolveRuntimeFileExtension, resolveRuntimeImage, resolveSingleTarget, resolveWatchConfig, runEcsServiceEmulator, signAgentCoreInvocation, startApiServer, substituteImagePlaceholders, tryResolveImageFnJoin, verifyJwtViaDiscovery, waitForAgentCorePing, withoutKeys } from "cdk-local/internal";
33
33
  import { createServer } from "node:net";
34
34
  import { setTimeout as setTimeout$1 } from "node:timers/promises";
35
35
  import { mkdtemp, rm, writeFile } from "node:fs/promises";
@@ -2414,7 +2414,7 @@ function collectCrossStackRefs(node, onRef) {
2414
2414
  //#region src/provisioning/register-providers.ts
2415
2415
  let providerClasses;
2416
2416
  function loadProviderClasses() {
2417
- providerClasses ??= import("./provider-classes-CtsCylnp.js");
2417
+ providerClasses ??= import("./provider-classes-DXBYMcmp.js");
2418
2418
  return providerClasses;
2419
2419
  }
2420
2420
  function registerAllProviders(registry, classes) {
@@ -4482,6 +4482,7 @@ async function computeStackDiff(currentState, template, region, stackName, state
4482
4482
  }
4483
4483
  const diffSecrets = /* @__PURE__ */ new Map();
4484
4484
  const splitPieces = /* @__PURE__ */ new Map();
4485
+ const derivedNames = /* @__PURE__ */ new Map();
4485
4486
  const splitDelimiters = literalSplitDelimitersOf(template, new Set(Object.entries(template.Parameters ?? {}).filter(([, definition]) => definition?.NoEcho === true).map(([name]) => name)));
4486
4487
  for (const [name, definition] of Object.entries(template.Parameters ?? {})) if (definition?.NoEcho === true && mergedParameters !== void 0 && Object.prototype.hasOwnProperty.call(mergedParameters, name) && !isWholeDynamicReferenceValue(mergedParameters[name])) {
4487
4488
  recordLogOnlyParameterValue(diffSecrets, mergedParameters[name]);
@@ -4492,11 +4493,13 @@ async function computeStackDiff(currentState, template, region, stackName, state
4492
4493
  diffSecrets,
4493
4494
  inheritedForResolver,
4494
4495
  outputsPassSecrets
4495
- ], [splitPieces]);
4496
+ ], [splitPieces, derivedNames]);
4496
4497
  const maskForLog = printing.mask;
4497
4498
  const resolveRecordingInto = (bag, printingSecrets) => (value) => intrinsicResolver.resolve(value, {
4498
4499
  recordedSecretValues: bag,
4499
4500
  ...printingSecrets && { printingSecrets },
4501
+ secretNameNeedles: stateSecretNameNeedles(currentState.resources, diffSecrets),
4502
+ secretNameSink: derivedNames,
4500
4503
  ...inheritedForResolver && { inheritedSecrets: inheritedForResolver },
4501
4504
  template: effectiveTemplate,
4502
4505
  resources: currentState.resources,
@@ -4570,6 +4573,8 @@ async function computeStackDiff(currentState, template, region, stackName, state
4570
4573
  return {
4571
4574
  value: await intrinsicResolver.resolve(structuredClone(node), {
4572
4575
  recordedSecretValues: secrets,
4576
+ secretNameNeedles: stateSecretNameNeedles(resourcesForInputs, diffSecrets),
4577
+ secretNameSink: derivedNames,
4573
4578
  template: effectiveTemplate,
4574
4579
  resources: resourcesForInputs,
4575
4580
  stateBackend,
@@ -4636,7 +4641,7 @@ async function computeStackDiff(currentState, template, region, stackName, state
4636
4641
  let shownOutputChanges = outputChanges;
4637
4642
  let shownBlocking = blocking;
4638
4643
  let shownDeployRefusals = deployRefusals;
4639
- if (hasMaskableValues(printingSecrets)) {
4644
+ if (hasMaskableValues(printing.maskCorpus())) {
4640
4645
  const mask = printing.mask;
4641
4646
  const maskReason = (reason) => mask(stripControlChars(mask(reason)));
4642
4647
  shownBlocking = blocking.map(maskReason);
@@ -4824,6 +4829,8 @@ async function resolveChildStackParameters(parentStackRow, parentTemplate, paren
4824
4829
  const resolvedValue = await resolver.resolve(value, {
4825
4830
  template: parentTemplate,
4826
4831
  resources: parentState.resources,
4832
+ secretNameNeedles: stateSecretNameNeedles(parentState.resources),
4833
+ secretNameSink: /* @__PURE__ */ new Map(),
4827
4834
  stateBackend,
4828
4835
  stackName: parentStackName,
4829
4836
  bestEffort: true,
@@ -7193,9 +7200,13 @@ async function scrubStack(stack, region, stateBackend, lockManager, opts) {
7193
7200
  parameters = await bindDefaultedParametersOneByOne(resolver, stack.template, shownStack, logger);
7194
7201
  }
7195
7202
  const resolverStateBackend = memoizeCrossStackStateReads(stateBackend);
7203
+ const secretNameSink = /* @__PURE__ */ new Map();
7204
+ const secretNameNeedles = stateSecretNameNeedles(state.resources);
7196
7205
  const resolverContext = (recordedSecretValues) => ({
7197
7206
  template: stack.template,
7198
7207
  resources: state.resources,
7208
+ secretNameNeedles,
7209
+ secretNameSink,
7199
7210
  ...Object.keys(parameters).length > 0 && { parameters },
7200
7211
  ...Object.keys(conditions).length > 0 && { conditions },
7201
7212
  stackName: stack.stackName,
@@ -8534,10 +8545,10 @@ function createIamPrincipalUniqueIdResolver(awsClients) {
8534
8545
  return uniqueId;
8535
8546
  };
8536
8547
  }
8537
- function containsDynamicReference(value) {
8548
+ function containsDynamicReference$1(value) {
8538
8549
  if (typeof value === "string") return value.includes("{{resolve:");
8539
- if (Array.isArray(value)) return value.some(containsDynamicReference);
8540
- if (value !== null && typeof value === "object") return Object.values(value).some(containsDynamicReference);
8550
+ if (Array.isArray(value)) return value.some(containsDynamicReference$1);
8551
+ if (value !== null && typeof value === "object") return Object.values(value).some(containsDynamicReference$1);
8541
8552
  return false;
8542
8553
  }
8543
8554
  const MIN_SECRET_NEEDLE_LENGTH = 4;
@@ -8712,7 +8723,7 @@ async function resolveDriftLeafByRegion(leaf, propertyPath, logicalId, consumerR
8712
8723
  return out + leaf.slice(cursor);
8713
8724
  }
8714
8725
  async function resolveStateSecretExpressions(props, resolvers, secrets, options) {
8715
- if (!containsDynamicReference(props)) return props;
8726
+ if (!containsDynamicReference$1(props)) return props;
8716
8727
  const { secretPaths, onUnresolved, producerRegions, logicalId, consumerRegion } = options;
8717
8728
  const ctx = {
8718
8729
  template: { Resources: {} },
@@ -9711,7 +9722,7 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
9711
9722
  try {
9712
9723
  const revertSecretResolvers = new DriftSecretResolvers(report.region);
9713
9724
  const revertProducerRegions = report.producerRegions;
9714
- await runWithConcurrency(driftedOutcomes.map((outcome) => async () => {
9725
+ await runWithConcurrency(driftedOutcomes.map((outcome) => () => withPrintingSecrets(secretNamePrintingBag(outcome.logicalId, report.state.resources), async () => {
9715
9726
  const stateResource = report.state.resources[outcome.logicalId];
9716
9727
  if (!stateResource) {
9717
9728
  totalFailed++;
@@ -9827,7 +9838,7 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
9827
9838
  const msg = maskSecretsInText(err instanceof Error ? err.message : String(err), secrets);
9828
9839
  logger.error(` ✗ ${report.stackName}/${outcome.logicalId} (${outcome.resourceType}): AWS update failed — ${msg}`);
9829
9840
  }
9830
- }), concurrency);
9841
+ })), concurrency);
9831
9842
  if (narrowedByLogicalId.size > 0 || reRecordedByLogicalId.size > 0) {
9832
9843
  const resources = { ...report.state.resources };
9833
9844
  let recordedCount = 0;
@@ -10683,7 +10694,7 @@ async function runDestroyForStack(stackName, state, ctx) {
10683
10694
  if (!level) continue;
10684
10695
  logger.debug(`Deletion level ${executionLevels.length - levelIndex}/${executionLevels.length} (${level.length} resources)`);
10685
10696
  const stackRegion = state.region ?? ctx.baseRegion;
10686
- const deletePromises = level.map(async (logicalId) => {
10697
+ const deletePromises = level.map((logicalId) => withPrintingSecrets(secretNamePrintingBag(logicalId, state.resources), async () => {
10687
10698
  if (lock.interrupted) return;
10688
10699
  const resource = state.resources[logicalId];
10689
10700
  if (!resource) {
@@ -10890,7 +10901,7 @@ async function runDestroyForStack(stackName, state, ctx) {
10890
10901
  } finally {
10891
10902
  renderer.removeTask(logicalId);
10892
10903
  }
10893
- });
10904
+ }));
10894
10905
  await Promise.all(deletePromises);
10895
10906
  }
10896
10907
  result.interrupted = lock.interrupted;
@@ -14895,6 +14906,8 @@ async function buildResolvedParametersPerStack(args) {
14895
14906
  const parentResolverContext = {
14896
14907
  template: parentNode.template,
14897
14908
  resources: parentNode.state.resources,
14909
+ secretNameNeedles: stateSecretNameNeedles(parentNode.state.resources),
14910
+ secretNameSink: /* @__PURE__ */ new Map(),
14898
14911
  parameters: parentParamValues,
14899
14912
  stackName: parentNode.cdkdName,
14900
14913
  ...args.stateBackend && { stateBackend: args.stateBackend }
@@ -19073,6 +19086,8 @@ async function resolveImportedProperties(stackState, template, region, stateBack
19073
19086
  const baseContext = {
19074
19087
  template,
19075
19088
  resources: stackState.resources,
19089
+ secretNameNeedles: stateSecretNameNeedles(stackState.resources),
19090
+ secretNameSink: /* @__PURE__ */ new Map(),
19076
19091
  ...Object.keys(parameters).length > 0 && { parameters },
19077
19092
  ...Object.keys(conditions).length > 0 && { conditions },
19078
19093
  stateBackend,
@@ -19840,6 +19855,10 @@ const ENGINE_ECS_SECRETS_CHANNEL = {
19840
19855
  what: "ECS task secrets are fetched with the role and injected as plaintext into the container's environment",
19841
19856
  flagOnly: false
19842
19857
  };
19858
+ const ENGINE_DYNAMIC_REFERENCE_CHANNEL = {
19859
+ what: "CloudFormation dynamic references ({{resolve:...}}) are fetched with the role and injected as plaintext into the container's environment",
19860
+ flagOnly: false
19861
+ };
19843
19862
  const ENGINE_ASSUME_ROLE_CHANNEL = {
19844
19863
  what: "the role --assume-role / --assume-task-role assumes for the container is assumed BY the --role-arn role, so the container can receive a role you could not assume yourself",
19845
19864
  flagOnly: false
@@ -20946,6 +20965,7 @@ function checkVolumeHostPath(hostPath) {
20946
20965
  }
20947
20966
  async function applyCrossStackResolverToTask(task, context) {
20948
20967
  if (!context.crossStackResolver) return;
20968
+ const { resolveDynamicReferences: _envOnly, ...secretContext } = context;
20949
20969
  const rawContainers = (task.resource.Properties ?? {})["ContainerDefinitions"];
20950
20970
  if (!Array.isArray(rawContainers)) return;
20951
20971
  for (let idx = 0; idx < task.containers.length; idx += 1) {
@@ -20965,10 +20985,21 @@ async function applyCrossStackResolverToTask(task, context) {
20965
20985
  if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") continue;
20966
20986
  if (Object.hasOwn(container.environment, key)) continue;
20967
20987
  if (!isCrossStackIntrinsic(value)) continue;
20968
- const sub = await substituteAgainstStateAsync(value, context);
20988
+ let resolvedToken = false;
20989
+ const hook = context.resolveDynamicReferences;
20990
+ const keyContext = hook ? {
20991
+ ...context,
20992
+ resolveDynamicReferences: async (v, producerRegion) => {
20993
+ const plain = await hook(v, producerRegion);
20994
+ resolvedToken = true;
20995
+ return plain;
20996
+ }
20997
+ } : context;
20998
+ const sub = await substituteAgainstStateAsync(value, keyContext);
20969
20999
  if (sub.kind === "literal") {
20970
21000
  defineOwnKey(container.environment, key, String(sub.value));
20971
21001
  resolvedEnvKeys.add(key);
21002
+ if (resolvedToken) container.resolvedDynamicReferenceKeys = [...container.resolvedDynamicReferenceKeys ?? [], key];
20972
21003
  }
20973
21004
  }
20974
21005
  if (Array.isArray(c["Secrets"])) for (const entry of c["Secrets"]) {
@@ -20980,7 +21011,7 @@ async function applyCrossStackResolverToTask(task, context) {
20980
21011
  if (typeof valueFromRaw === "string" && valueFromRaw.length > 0) continue;
20981
21012
  if (container.secrets.some((s) => s.name === sName)) continue;
20982
21013
  if (!isCrossStackIntrinsic(valueFromRaw)) continue;
20983
- const sub = await substituteAgainstStateAsync(valueFromRaw, context);
21014
+ const sub = await substituteAgainstStateAsync(valueFromRaw, secretContext);
20984
21015
  if (sub.kind === "literal" && typeof sub.value === "string" && sub.value.length > 0) {
20985
21016
  container.secrets.push({
20986
21017
  name: sName,
@@ -21560,6 +21591,29 @@ function strandedProfileCredentialsNotice(hostPath) {
21560
21591
  return `The AWS credentials file mounted into the containers is NOT removed: delete ${displayIdent(hostPath)} once you tear them down.`;
21561
21592
  }
21562
21593
 
21594
+ //#endregion
21595
+ //#region src/local/dynamic-reference.ts
21596
+ function createCallerDynamicReferenceResolver(profile) {
21597
+ return new DynamicReferenceResolver({
21598
+ secretsManagerClientFactory: (region) => new SecretsManagerClient({
21599
+ ...awsClientDefaults({
21600
+ profile,
21601
+ ignoreAssumedRole: true
21602
+ }),
21603
+ ...region && { region: canonicalizeRegion(region) },
21604
+ ...profile && { profile }
21605
+ }),
21606
+ ssmClientFactory: (region) => new SSMClient({
21607
+ ...awsClientDefaults({
21608
+ profile,
21609
+ ignoreAssumedRole: true
21610
+ }),
21611
+ ...region && { region: canonicalizeRegion(region) },
21612
+ ...profile && { profile }
21613
+ })
21614
+ });
21615
+ }
21616
+
21563
21617
  //#endregion
21564
21618
  //#region src/local/websocket-body.ts
21565
21619
  function bufferToBody$1(raw, isBinary) {
@@ -21966,6 +22020,7 @@ function createContainerPool(specs, options) {
21966
22020
  }],
21967
22021
  extraMounts,
21968
22022
  env: spec.env,
22023
+ ...spec.sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys: spec.sensitiveEnvKeys },
21969
22024
  cmd: [spec.lambda.handler],
21970
22025
  hostPort,
21971
22026
  host: spec.containerHost,
@@ -21984,6 +22039,7 @@ function createContainerPool(specs, options) {
21984
22039
  readOnly: true
21985
22040
  }] },
21986
22041
  env: spec.env,
22042
+ ...spec.sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys: spec.sensitiveEnvKeys },
21987
22043
  cmd: spec.command,
21988
22044
  hostPort,
21989
22045
  host: spec.containerHost,
@@ -22376,7 +22432,8 @@ async function localStartApiCommand(target, options) {
22376
22432
  skipPull: options.pull === false,
22377
22433
  ...options.layerRoleArn !== void 0 && { layerRoleArn: options.layerRoleArn },
22378
22434
  ...profileCredentials && { profileCredentials },
22379
- ...profileCredsFile && { profileCredsFile }
22435
+ ...profileCredsFile && { profileCredsFile },
22436
+ ...dynamicReferenceSpecOptions(options)
22380
22437
  });
22381
22438
  specs.set(logicalId, spec);
22382
22439
  }
@@ -22800,8 +22857,14 @@ function assumeRolePin(logicalId) {
22800
22857
  function malformedAutoRoleError(logicalId, detail) {
22801
22858
  return /* @__PURE__ */ new Error(`--assume-role-auto: ${detail}. Refusing to start rather than fall back to your shell credentials for this Lambda. Fix the deployed role ARN, or pin one explicitly with ${assumeRolePin(logicalId)}.`);
22802
22859
  }
22860
+ function dynamicReferenceSpecOptions(options) {
22861
+ return {
22862
+ ...options.profile !== void 0 && { profile: options.profile },
22863
+ ...options.stackRegion !== void 0 && { stackRegionOverride: options.stackRegion }
22864
+ };
22865
+ }
22803
22866
  async function buildContainerSpec(args) {
22804
- const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile } = args;
22867
+ const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile, profile, stackRegionOverride } = args;
22805
22868
  const lambda = resolveLambdaByLogicalId(logicalId, stacks);
22806
22869
  let codeDir;
22807
22870
  let optDir;
@@ -22834,6 +22897,22 @@ async function buildContainerSpec(args) {
22834
22897
  const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? logicalId;
22835
22898
  getLogger().warn(`Lambda ${logicalId}: env var ${key} contains a CloudFormation intrinsic and was dropped. Override it with --env-vars (e.g. {"${overrideKeyExample}":{"${key}":"<literal>"}}) or pass --from-state to recover deployed values.`);
22836
22899
  }
22900
+ const plaintextKeys = new Set(stateAudit?.sensitiveKeys ?? []);
22901
+ for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
22902
+ const dynamicRefs = createCallerDynamicReferenceResolver(profile);
22903
+ let dynamic;
22904
+ try {
22905
+ dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
22906
+ region: firstUsableRegion(stateBundle?.region, stackRegionOverride, lambda.stack.region, stsRegion),
22907
+ label: `Lambda ${logicalId}`,
22908
+ skipKeys: plaintextKeys,
22909
+ resolver: dynamicRefs
22910
+ });
22911
+ } finally {
22912
+ dynamicRefs.dispose();
22913
+ }
22914
+ const sensitiveKeyList = [...stateAudit?.sensitiveKeys ?? [], ...dynamic.resolvedKeys];
22915
+ const sensitiveEnvKeys = sensitiveKeyList.length > 0 ? new Set(sensitiveKeyList) : void 0;
22837
22916
  const dockerEnv = {
22838
22917
  AWS_LAMBDA_FUNCTION_NAME: logicalId,
22839
22918
  AWS_LAMBDA_FUNCTION_MEMORY_SIZE: String(lambda.memoryMb),
@@ -22841,7 +22920,7 @@ async function buildContainerSpec(args) {
22841
22920
  AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
22842
22921
  AWS_LAMBDA_LOG_GROUP_NAME: `/aws/lambda/${logicalId}`,
22843
22922
  AWS_LAMBDA_LOG_STREAM_NAME: "local",
22844
- ...envResult.resolved
22923
+ ...dynamic.env
22845
22924
  };
22846
22925
  const roleArn = resolveStartApiAssumeRoleArn({
22847
22926
  logicalId,
@@ -22879,6 +22958,7 @@ async function buildContainerSpec(args) {
22879
22958
  codeDir,
22880
22959
  platform,
22881
22960
  env: dockerEnv,
22961
+ ...sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys },
22882
22962
  containerHost,
22883
22963
  ...optDir !== void 0 && { optDir },
22884
22964
  ...debugPort !== void 0 && { debugPort },
@@ -22897,6 +22977,7 @@ async function buildContainerSpec(args) {
22897
22977
  ...lambda.imageConfig.entryPoint !== void 0 && lambda.imageConfig.entryPoint.length > 0 && { entryPoint: lambda.imageConfig.entryPoint },
22898
22978
  ...lambda.imageConfig.workingDirectory !== void 0 && { workingDir: lambda.imageConfig.workingDirectory },
22899
22979
  env: dockerEnv,
22980
+ ...sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys },
22900
22981
  containerHost,
22901
22982
  ...debugPort !== void 0 && { debugPort },
22902
22983
  ...tmpfs !== void 0 && { tmpfs },
@@ -23328,13 +23409,16 @@ async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options)
23328
23409
  try {
23329
23410
  const loaded = await provider.load(stack.stackName, stack.region);
23330
23411
  if (!loaded) continue;
23331
- const bundle = { state: {
23332
- version: 1,
23333
- stackName: stack.stackName,
23334
- resources: loaded.resources,
23335
- outputs: loaded.outputs,
23336
- lastModified: 0
23337
- } };
23412
+ const bundle = {
23413
+ state: {
23414
+ version: 1,
23415
+ stackName: stack.stackName,
23416
+ resources: loaded.resources,
23417
+ outputs: loaded.outputs,
23418
+ lastModified: 0
23419
+ },
23420
+ region: loaded.region
23421
+ };
23338
23422
  if (stackHasIntrinsicEnv(stackName)) {
23339
23423
  const pseudo = await resolvePseudoParametersForStartApi(loaded.region, options);
23340
23424
  if (pseudo) bundle.pseudoParameters = pseudo;
@@ -23797,10 +23881,24 @@ async function runEcsTask(task, options, state) {
23797
23881
  const startOrder = topoSort(buildDependencyGraph(task.containers), task.containers);
23798
23882
  const finchRefusals = [];
23799
23883
  for (const c of task.containers) {
23800
- const refusal = finchSecretArgvRefusal(c.secrets.map((s) => s.name).filter((n) => !isMalformedEnvKey(n) && !isDockerClientEnvKey(n)), `Container ${displayIdent(c.name)}`);
23884
+ const refusal = finchSecretArgvRefusal([
23885
+ ...c.secrets.map((s) => s.name),
23886
+ ...c.resolvedDynamicReferenceKeys ?? [],
23887
+ ...dynamicReferenceEnvKeys(c, options.envOverrides)
23888
+ ].filter((n) => !isMalformedEnvKey(n) && !isDockerClientEnvKey(n)), `Container ${displayIdent(c.name)}`);
23801
23889
  if (refusal !== void 0) finchRefusals.push(refusal);
23802
23890
  }
23803
23891
  if (finchRefusals.length > 0) throw new EcsTaskRunnerError(finchRefusals.join("\n"));
23892
+ const argvRefusals = [];
23893
+ for (const c of task.containers) {
23894
+ const fields = [
23895
+ ["Command", c.command],
23896
+ ["EntryPoint", c.entryPoint],
23897
+ ["HealthCheck.Command", c.healthCheck?.command]
23898
+ ];
23899
+ for (const [field, argv] of fields) if (argv?.some((a) => containsDynamicReference(a))) argvRefusals.push(`Container ${displayIdent(c.name)}: ${field} carries a CloudFormation dynamic reference ({{resolve:...}}). cdkd resolves dynamic references only in Environment, because resolving one here would put the secret on the docker run argv. Move the value into an Environment variable or a Secrets entry.`);
23900
+ }
23901
+ if (argvRefusals.length > 0) throw new EcsTaskRunnerError(argvRefusals.join("\n"));
23804
23902
  const imagePlan = options.imagePlanByContainer ?? /* @__PURE__ */ new Map();
23805
23903
  if (!options.imagePlanByContainer) await prepareImages(task, imagePlan, options);
23806
23904
  const allSecrets = [];
@@ -23810,6 +23908,22 @@ async function runEcsTask(task, options, state) {
23810
23908
  valueFrom: s.valueFrom
23811
23909
  });
23812
23910
  const secretsByContainer = groupSecretsByContainer(await resolveEcsSecrets(allSecrets, { ...options.region !== void 0 && { region: options.region } }));
23911
+ const dynamicEnvByContainer = /* @__PURE__ */ new Map();
23912
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
23913
+ try {
23914
+ for (const c of task.containers) {
23915
+ const tokenKeys = new Set(dynamicReferenceEnvKeys(c, options.envOverrides));
23916
+ if (tokenKeys.size === 0) continue;
23917
+ dynamicEnvByContainer.set(c.name, await resolveDynamicReferencesInEnv(c.environment, {
23918
+ region: firstUsableRegion(options.stateRecordRegion, options.stackRegion, task.stack.region, options.region),
23919
+ label: `Container ${c.name}`,
23920
+ skipKeys: new Set(Object.keys(c.environment).filter((k) => !tokenKeys.has(k))),
23921
+ resolver: dynamicRefs
23922
+ }));
23923
+ }
23924
+ } finally {
23925
+ dynamicRefs.dispose();
23926
+ }
23813
23927
  if (options.existingNetwork) state.network = {
23814
23928
  ...options.existingNetwork,
23815
23929
  ownedByCaller: true
@@ -23853,9 +23967,14 @@ async function runEcsTask(task, options, state) {
23853
23967
  for (const container of task.containers) {
23854
23968
  const image = imagePlan.get(container.name);
23855
23969
  if (!image) throw new EcsTaskRunnerError(`Internal: no resolved image for container '${container.name}'.`);
23970
+ const dynamic = dynamicEnvByContainer.get(container.name);
23856
23971
  const built = buildDockerRunArgs({
23857
23972
  task,
23858
- container,
23973
+ container: dynamic ? {
23974
+ ...container,
23975
+ environment: dynamic.env
23976
+ } : container,
23977
+ plaintextEnvKeys: [...container.resolvedDynamicReferenceKeys ?? [], ...dynamic?.resolvedKeys ?? []],
23859
23978
  image,
23860
23979
  network: state.network.networkName,
23861
23980
  volumeByName,
@@ -24175,6 +24294,19 @@ async function realizeDockerVolumes(volumes, state) {
24175
24294
  function randHex(bytes) {
24176
24295
  return randomBytes(bytes).toString("hex");
24177
24296
  }
24297
+ function overriddenEnvKeys(overrides, containerName) {
24298
+ if (!overrides) return [];
24299
+ const applied = (map) => Object.entries(map ?? {}).filter(([, v]) => v === null || typeof v === "string" || typeof v === "number" || typeof v === "boolean").map(([k]) => k);
24300
+ return [...applied(overrides["Parameters"]), ...applied(overrides[containerName])];
24301
+ }
24302
+ function dynamicReferenceEnvKeys(container, overrides) {
24303
+ const skip = /* @__PURE__ */ new Set([
24304
+ ...container.resolvedDynamicReferenceKeys ?? [],
24305
+ ...container.secrets.map((s) => s.name),
24306
+ ...overriddenEnvKeys(overrides, container.name)
24307
+ ]);
24308
+ return Object.keys(container.environment).filter((k) => !skip.has(k) && containsDynamicReference(container.environment[k]));
24309
+ }
24178
24310
  function groupSecretsByContainer(resolved) {
24179
24311
  const out = /* @__PURE__ */ new Map();
24180
24312
  for (const r of resolved) {
@@ -24242,7 +24374,11 @@ function buildDockerRunArgs(opts) {
24242
24374
  applyOverrideMap(finalEnv, overrides["Parameters"]);
24243
24375
  applyOverrideMap(finalEnv, overrides[container.name]);
24244
24376
  }
24245
- const sensitiveKeys = /* @__PURE__ */ new Set([...SENSITIVE_ENV_KEYS, ...secrets.map((s) => s.name)]);
24377
+ const sensitiveKeys = /* @__PURE__ */ new Set([
24378
+ ...SENSITIVE_ENV_KEYS,
24379
+ ...secrets.map((s) => s.name),
24380
+ ...opts.plaintextEnvKeys ?? []
24381
+ ]);
24246
24382
  const { flags, sensitiveEnv, collisions } = partitionSensitiveEnv(finalEnv, sensitiveKeys);
24247
24383
  args.push(...flags);
24248
24384
  if (container.user) args.push("--user", container.user);
@@ -24362,13 +24498,23 @@ async function localRunTaskCommand(target, options) {
24362
24498
  const consumerRegion = resolveEcsConsumerRegion(stateRecordRegion, options, task.stack.region);
24363
24499
  const resolver = await stateProvider.buildCrossStackResolver(consumerRegion);
24364
24500
  if (resolver) {
24501
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
24365
24502
  const subContext = {
24366
24503
  resources: imageContext?.stateResources ?? {},
24367
24504
  ...imageContext?.pseudoParameters && { pseudoParameters: imageContext.pseudoParameters },
24368
24505
  consumerRegion,
24369
- crossStackResolver: resolver
24506
+ crossStackResolver: resolver,
24507
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
24508
+ region: producerRegion,
24509
+ consumer: `Task ${task.taskDefinitionLogicalId} cross-stack env value`,
24510
+ overridable: false
24511
+ })
24370
24512
  };
24371
- await applyCrossStackResolverToTask(task, subContext);
24513
+ try {
24514
+ await applyCrossStackResolverToTask(task, subContext);
24515
+ } finally {
24516
+ dynamicRefs.dispose();
24517
+ }
24372
24518
  }
24373
24519
  } else if (!stateProvider && taskNeeds.needsCrossStackResolver) logger.warn("Container Environment / Secrets entries contain Fn::ImportValue / Fn::GetStackOutput intrinsics. Pass --from-state (cdkd-deployed) or --from-cfn-stack (cdk-deployed) to substitute them against deployed state.");
24374
24520
  sigintHandler = () => {
@@ -24403,7 +24549,8 @@ async function localRunTaskCommand(target, options) {
24403
24549
  const envOverrides = readEnvOverridesFile$2(options.envVars);
24404
24550
  const runOpts = buildRunEcsTaskOptions(options, channels, {
24405
24551
  ...envOverrides !== void 0 && { envOverrides },
24406
- ...resolvedRoleArn !== void 0 && { resolvedRoleArn }
24552
+ ...resolvedRoleArn !== void 0 && { resolvedRoleArn },
24553
+ ...stateRecordRegion !== void 0 && { stateRecordRegion }
24407
24554
  });
24408
24555
  const hostGatewayExtraHosts = await resolveHostGatewayExtraHosts();
24409
24556
  if (hostGatewayExtraHosts.length > 0) runOpts.hostGatewayExtraHosts = hostGatewayExtraHosts;
@@ -24621,6 +24768,9 @@ function buildRunEcsTaskOptions(options, channels, extra = {}) {
24621
24768
  if (extra.resolvedRoleArn) runOpts.taskRoleArn = extra.resolvedRoleArn;
24622
24769
  if (options.platform) runOpts.platformOverride = options.platform;
24623
24770
  if (options.region) runOpts.region = options.region;
24771
+ if (options.stackRegion) runOpts.stackRegion = options.stackRegion;
24772
+ if (options.profile) runOpts.profile = options.profile;
24773
+ if (extra.stateRecordRegion) runOpts.stateRecordRegion = extra.stateRecordRegion;
24624
24774
  if (options.ecrRoleArn !== void 0) runOpts.ecrRoleArn = options.ecrRoleArn;
24625
24775
  if (channels.profileCredsFile) runOpts.profileCredentialsFile = {
24626
24776
  hostPath: channels.profileCredsFile.hostPath,
@@ -24662,7 +24812,11 @@ function createLocalStartServiceCommand() {
24662
24812
  await runEcsServiceEmulator(targets, options, serviceStrategy(), cdkdExtraStateProviders);
24663
24813
  }));
24664
24814
  addStartServiceSpecificOptions(cmd);
24665
- warnEngineRoleExposure(cmd, "start-service", [ENGINE_ECS_SECRETS_CHANNEL, ENGINE_ACCOUNT_ID_CHANNEL]);
24815
+ warnEngineRoleExposure(cmd, "start-service", [
24816
+ ENGINE_ECS_SECRETS_CHANNEL,
24817
+ ENGINE_ACCOUNT_ID_CHANNEL,
24818
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
24819
+ ]);
24666
24820
  return adoptDeprecatedRegionFlag(addCommonEcsServiceOptions(cmd));
24667
24821
  }
24668
24822
 
@@ -25475,13 +25629,28 @@ function findFileAssetByObjectKey(fileAssets, hash) {
25475
25629
  for (const asset of fileAssets.values()) if (Object.values(asset.destinations).some((d) => d.objectKey === zip || d.objectKey.endsWith(`/${zip}`))) return asset;
25476
25630
  }
25477
25631
  async function buildContainerEnv(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext) {
25632
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
25633
+ try {
25634
+ return await buildContainerEnvWith(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext, dynamicRefs);
25635
+ } finally {
25636
+ dynamicRefs.dispose();
25637
+ }
25638
+ }
25639
+ async function buildContainerEnvWith(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext, dynamicRefs) {
25478
25640
  const logger = getLogger();
25479
- let templateEnv = resolved.environmentVariables;
25641
+ const overrides = readEnvOverridesFile$1(options.envVars);
25642
+ const cdkPath = readCdkPathOrUndefined(resolved.resource);
25643
+ const overriddenKeys = keysOverriddenBy(resolved.environmentVariables, (env) => resolveEnvVars(resolved.logicalId, cdkPath, env, overrides).resolved);
25644
+ let templateEnv = withoutKeys(resolved.environmentVariables, overriddenKeys);
25480
25645
  const sensitiveEnvKeys = /* @__PURE__ */ new Set();
25481
25646
  if (stateProvider && loaded) {
25482
25647
  const subContext = {
25483
25648
  resources: imageContext?.stateResources ?? loaded.resources,
25484
- consumerRegion: loaded.region
25649
+ consumerRegion: loaded.region,
25650
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
25651
+ region: producerRegion,
25652
+ consumer: `AgentCore Runtime ${resolved.logicalId} cross-stack env value`
25653
+ })
25485
25654
  };
25486
25655
  const pseudo = imageContext?.pseudoParameters ?? derivePseudoParametersFromRegion$1(loaded.region);
25487
25656
  if (pseudo) subContext.pseudoParameters = pseudo;
@@ -25495,14 +25664,21 @@ async function buildContainerEnv(resolved, options, profileCredentials, profileC
25495
25664
  for (const key of audit.sensitiveKeys) sensitiveEnvKeys.add(key);
25496
25665
  for (const { key, reason } of audit.unresolved) logger.warn(`${stateProvider.label}: could not substitute env var ${key} (${reason}). Override it via --env-vars or it will be dropped.`);
25497
25666
  }
25498
- const overrides = readEnvOverridesFile$1(options.envVars);
25499
- const cdkPath = readCdkPathOrUndefined(resolved.resource);
25500
25667
  const envResult = resolveEnvVars(resolved.logicalId, cdkPath, templateEnv, overrides);
25501
25668
  for (const key of envResult.unresolved) {
25502
25669
  const overrideKeyExample = cdkPath?.replace(/\/Resource$/, "") ?? resolved.logicalId;
25503
25670
  logger.warn(`Environment variable ${key} contains a CloudFormation intrinsic and was dropped. Override it with --env-vars (e.g. {"${overrideKeyExample}":{"${key}":"<literal>"}}), or pass a state-source flag (e.g. --from-cfn-stack) to recover deployed values.`);
25504
25671
  }
25505
- const dockerEnv = { ...envResult.resolved };
25672
+ const skipKeys = keysNotFromTemplate(templateEnv, envResult.resolved);
25673
+ for (const key of sensitiveEnvKeys) skipKeys.add(key);
25674
+ const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
25675
+ region: firstUsableRegion(loaded?.region, options.stackRegion, resolved.stack.region, options.region),
25676
+ label: `AgentCore Runtime ${resolved.logicalId}`,
25677
+ skipKeys,
25678
+ resolver: dynamicRefs
25679
+ });
25680
+ for (const key of dynamic.resolvedKeys) sensitiveEnvKeys.add(key);
25681
+ const dockerEnv = { ...dynamic.env };
25506
25682
  const assumeRoleArn = resolveAssumeRoleArn(options, resolved, loaded);
25507
25683
  await applyAgentCoreCredentialEnv(dockerEnv, {
25508
25684
  ...assumeRoleArn !== void 0 && { assumeRoleArn },
@@ -25844,7 +26020,11 @@ function createLocalStartAgentCoreCommand$1() {
25844
26020
  cmd.addOption(new Option("--state-bucket <bucket>", "S3 bucket for --from-state. Falls back to CDKD_STATE_BUCKET env or cdk.json context.cdkd.stateBucket."));
25845
26021
  cmd.addOption(new Option("--state-prefix <prefix>", "S3 key prefix for --from-state state files.").default("cdkd"));
25846
26022
  cmd.addOption(new Option("--no-assume-role", "Explicitly opt out of assuming the deployed execution role: forward your ambient AWS credentials (or the --profile overlay) unchanged, and suppress the \"re-run with --assume-role\" hint that omitting the flag prints when deployed state is loaded."));
25847
- warnEngineRoleExposure(cmd, "start-agentcore", [engineCredentialTripleChannel("the agent container"), ENGINE_ACCOUNT_ID_CHANNEL]);
26023
+ warnEngineRoleExposure(cmd, "start-agentcore", [
26024
+ engineCredentialTripleChannel("the agent container"),
26025
+ ENGINE_ACCOUNT_ID_CHANNEL,
26026
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
26027
+ ]);
25848
26028
  return adoptDeprecatedRegionFlag(cmd);
25849
26029
  }
25850
26030
 
@@ -25890,7 +26070,8 @@ function createLocalStartAlbCommand() {
25890
26070
  warnEngineRoleExposure(cmd, "start-alb", [
25891
26071
  engineCredentialTripleChannel("the ALB's Lambda target-group containers"),
25892
26072
  ENGINE_ECS_SECRETS_CHANNEL,
25893
- ENGINE_ACCOUNT_ID_CHANNEL
26073
+ ENGINE_ACCOUNT_ID_CHANNEL,
26074
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
25894
26075
  ]);
25895
26076
  return adoptDeprecatedRegionFlag(addCommonEcsServiceOptions(cmd));
25896
26077
  }
@@ -25907,7 +26088,7 @@ function createLocalStartCloudFrontCommand$1() {
25907
26088
  cmd.addOption(new Option("--state-prefix <prefix>", "[not supported on start-cloudfront] S3 key prefix for --from-state state files. Refused at startup with --from-state.").default("cdkd"));
25908
26089
  cmd.addOption(new Option("--no-assume-role", "Explicitly opt out of assuming the deployed execution role: forward your ambient AWS credentials (or the --profile overlay) unchanged, and suppress the \"re-run with --assume-role\" hint that omitting the flag prints when deployed state is loaded."));
25909
26090
  refuseUnwiredCdkdStateFlags(cmd);
25910
- warnEngineRoleExposure(cmd, "start-cloudfront", [engineCredentialTripleChannel("the Function URL and Lambda@Edge containers")], engineFromCfnStackChannel("a deployed S3 origin's objects and KeyValueStore entries"));
26091
+ warnEngineRoleExposure(cmd, "start-cloudfront", [engineCredentialTripleChannel("the Function URL and Lambda@Edge containers"), ENGINE_DYNAMIC_REFERENCE_CHANNEL], engineFromCfnStackChannel("a deployed S3 origin's objects and KeyValueStore entries"));
25911
26092
  return adoptDeprecatedRegionFlag(cmd);
25912
26093
  }
25913
26094
  function refuseUnwiredCdkdStateFlags(cmd) {
@@ -26024,50 +26205,7 @@ async function localInvokeCommand(target, options) {
26024
26205
  const targetLabel = lambda.kind === "zip" ? lambda.runtime : "container image";
26025
26206
  logger.info(`Target: ${lambda.stack.stackName}/${lambda.logicalId} (${targetLabel})`);
26026
26207
  imagePlan = await resolveImagePlan(lambda, options);
26027
- let stateAudit;
26028
- let templateEnv = getTemplateEnv(lambda.resource);
26029
- let stateForRoleHint;
26030
- const stateProvider = createLocalStateProvider$1(options, lambda.stack.stackName, lambda.stack.region);
26031
- if (stateProvider) try {
26032
- const loaded = await stateProvider.load(lambda.stack.stackName, lambda.stack.region);
26033
- if (loaded) {
26034
- stateForRoleHint = {
26035
- version: 1,
26036
- stackName: lambda.stack.stackName,
26037
- resources: loaded.resources,
26038
- outputs: loaded.outputs,
26039
- lastModified: 0
26040
- };
26041
- const subContext = {
26042
- resources: loaded.resources,
26043
- consumerRegion: loaded.region
26044
- };
26045
- if (envHasIntrinsicValue(templateEnv)) {
26046
- const pseudo = await resolvePseudoParametersForInvoke(lambda.stack.region, options);
26047
- if (pseudo) subContext.pseudoParameters = pseudo;
26048
- }
26049
- if (envHasCrossStackIntrinsic(templateEnv)) {
26050
- const resolver = await stateProvider.buildCrossStackResolver(loaded.region);
26051
- if (resolver) subContext.crossStackResolver = resolver;
26052
- }
26053
- const { env, audit } = await substituteEnvVarsFromStateAsync(templateEnv, subContext);
26054
- templateEnv = env;
26055
- stateAudit = audit;
26056
- const label = stateProvider.label;
26057
- for (const key of audit.resolvedKeys) logger.debug(`${label}: substituted env var ${key}`);
26058
- for (const { key, reason } of audit.unresolved) logger.warn(`${label}: could not substitute env var ${key} (${reason}). Override it via --env-vars or it will be dropped.`);
26059
- }
26060
- } finally {
26061
- stateProvider.dispose();
26062
- }
26063
- const overrides = readEnvOverridesFile(options.envVars);
26064
- const lambdaCdkPath = readCdkPathOrUndefined(lambda.resource);
26065
- const envResult = resolveEnvVars(lambda.logicalId, lambdaCdkPath, templateEnv, overrides);
26066
- for (const key of envResult.unresolved) {
26067
- if (stateAudit && stateAudit.unresolved.some((u) => u.key === key)) continue;
26068
- const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
26069
- logger.warn(`Environment variable ${key} contains a CloudFormation intrinsic and was dropped. Override it with --env-vars (e.g. {"${overrideKeyExample}":{"${key}":"<literal>"}}), or pass --from-state (cdkd-deployed) / --from-cfn-stack (cdk-deployed) to recover deployed values.`);
26070
- }
26208
+ const { env: templateEnvResolved, sensitiveEnvKeys, stateForRoleHint } = await resolveInvokeTemplateEnv(lambda, options);
26071
26209
  let resolvedAssumeRoleArn;
26072
26210
  if (typeof options.assumeRole === "string") resolvedAssumeRoleArn = explicitRoleArnOrThrow("--assume-role", options.assumeRole);
26073
26211
  else if (options.assumeRole === true) {
@@ -26082,7 +26220,7 @@ async function localInvokeCommand(target, options) {
26082
26220
  AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
26083
26221
  AWS_LAMBDA_LOG_GROUP_NAME: `/aws/lambda/${lambda.logicalId}`,
26084
26222
  AWS_LAMBDA_LOG_STREAM_NAME: "local",
26085
- ...envResult.resolved
26223
+ ...templateEnvResolved
26086
26224
  };
26087
26225
  await applyLambdaCredentialEnv(dockerEnv, {
26088
26226
  ...resolvedAssumeRoleArn && { assumeRoleArn: resolvedAssumeRoleArn },
@@ -26112,6 +26250,7 @@ async function localInvokeCommand(target, options) {
26112
26250
  mounts: imagePlan.mounts,
26113
26251
  extraMounts: extraMountsWithProfile,
26114
26252
  env: dockerEnv,
26253
+ ...sensitiveEnvKeys.size > 0 && { sensitiveEnvKeys },
26115
26254
  ...hostGatewayExtraHosts.length > 0 && { extraHosts: hostGatewayExtraHosts },
26116
26255
  cmd: imagePlan.cmd,
26117
26256
  hostPort,
@@ -26139,6 +26278,82 @@ async function localInvokeCommand(target, options) {
26139
26278
  if (sigintHandler) process.off("SIGINT", sigintHandler);
26140
26279
  }
26141
26280
  }
26281
+ async function resolveInvokeTemplateEnv(lambda, options) {
26282
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
26283
+ try {
26284
+ return await resolveInvokeTemplateEnvWith(lambda, options, dynamicRefs);
26285
+ } finally {
26286
+ dynamicRefs.dispose();
26287
+ }
26288
+ }
26289
+ async function resolveInvokeTemplateEnvWith(lambda, options, dynamicRefs) {
26290
+ const logger = getLogger();
26291
+ let stateAudit;
26292
+ let stateForRoleHint;
26293
+ let ownerRegion;
26294
+ const declaredEnv = getTemplateEnv(lambda.resource);
26295
+ const overrides = readEnvOverridesFile(options.envVars);
26296
+ const lambdaCdkPath = readCdkPathOrUndefined(lambda.resource);
26297
+ const overriddenKeys = keysOverriddenBy(declaredEnv, (env) => resolveEnvVars(lambda.logicalId, lambdaCdkPath, env, overrides).resolved);
26298
+ let templateEnv = declaredEnv && withoutKeys(declaredEnv, overriddenKeys);
26299
+ const stateProvider = createLocalStateProvider$1(options, lambda.stack.stackName, lambda.stack.region);
26300
+ if (stateProvider) try {
26301
+ const loaded = await stateProvider.load(lambda.stack.stackName, lambda.stack.region);
26302
+ if (loaded) {
26303
+ ownerRegion = loaded.region;
26304
+ stateForRoleHint = {
26305
+ version: 1,
26306
+ stackName: lambda.stack.stackName,
26307
+ resources: loaded.resources,
26308
+ outputs: loaded.outputs,
26309
+ lastModified: 0
26310
+ };
26311
+ const subContext = {
26312
+ resources: loaded.resources,
26313
+ consumerRegion: loaded.region,
26314
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
26315
+ region: producerRegion,
26316
+ consumer: `Lambda ${lambda.logicalId} cross-stack env value`
26317
+ })
26318
+ };
26319
+ if (envHasIntrinsicValue(templateEnv)) {
26320
+ const pseudo = await resolvePseudoParametersForInvoke(lambda.stack.region, options);
26321
+ if (pseudo) subContext.pseudoParameters = pseudo;
26322
+ }
26323
+ if (envHasCrossStackIntrinsic(templateEnv)) {
26324
+ const resolver = await stateProvider.buildCrossStackResolver(loaded.region);
26325
+ if (resolver) subContext.crossStackResolver = resolver;
26326
+ }
26327
+ const { env, audit } = await substituteEnvVarsFromStateAsync(templateEnv, subContext);
26328
+ templateEnv = env;
26329
+ stateAudit = audit;
26330
+ const label = stateProvider.label;
26331
+ for (const key of audit.resolvedKeys) logger.debug(`${label}: substituted env var ${key}`);
26332
+ for (const { key, reason } of audit.unresolved) logger.warn(`${label}: could not substitute env var ${key} (${reason}). Override it via --env-vars or it will be dropped.`);
26333
+ }
26334
+ } finally {
26335
+ stateProvider.dispose();
26336
+ }
26337
+ const envResult = resolveEnvVars(lambda.logicalId, lambdaCdkPath, templateEnv, overrides);
26338
+ for (const key of envResult.unresolved) {
26339
+ if (stateAudit && stateAudit.unresolved.some((u) => u.key === key)) continue;
26340
+ const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
26341
+ logger.warn(`Environment variable ${key} contains a CloudFormation intrinsic and was dropped. Override it with --env-vars (e.g. {"${overrideKeyExample}":{"${key}":"<literal>"}}), or pass --from-state (cdkd-deployed) / --from-cfn-stack (cdk-deployed) to recover deployed values.`);
26342
+ }
26343
+ const plaintextKeys = new Set(stateAudit?.sensitiveKeys ?? []);
26344
+ for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
26345
+ const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
26346
+ region: firstUsableRegion(ownerRegion, options.stackRegion, lambda.stack.region, options.region),
26347
+ label: `Lambda ${lambda.logicalId}`,
26348
+ skipKeys: plaintextKeys,
26349
+ resolver: dynamicRefs
26350
+ });
26351
+ return {
26352
+ env: dynamic.env,
26353
+ sensitiveEnvKeys: /* @__PURE__ */ new Set([...stateAudit?.sensitiveKeys ?? [], ...dynamic.resolvedKeys]),
26354
+ ...stateForRoleHint !== void 0 && { stateForRoleHint }
26355
+ };
26356
+ }
26142
26357
  async function resolveImagePlan(lambda, options) {
26143
26358
  if (lambda.kind === "zip") return resolveZipImagePlan(lambda, options);
26144
26359
  return resolveContainerImagePlan(lambda, options);
@@ -26612,4 +26827,4 @@ function collectVerbFlags(program) {
26612
26827
 
26613
26828
  //#endregion
26614
26829
  export { canonicalizeIpProtocolValue as a, buildProgram, resolveSecretDerivedPrincipals as i, runDestroyForStack as n, resolvedResourceTimeoutMs as o, isResolvableSecretPrincipalList as r, canonicalizeIpv4Cidr as t };
26615
- //# sourceMappingURL=program-CiMVZi4n.js.map
26830
+ //# sourceMappingURL=program-CwSdIG3b.js.map