@go-to-k/cdkd 0.296.1 → 0.296.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/dist/{asg-provider-BwWy0pBH.js → asg-provider-CksS_6jO.js} +3 -3
  2. package/dist/{asg-provider-BwWy0pBH.js.map → asg-provider-CksS_6jO.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-xlct0Hcm.js → deploy-engine-Dre6eDNJ.js} +164 -28
  5. package/dist/deploy-engine-Dre6eDNJ.js.map +1 -0
  6. package/dist/{iam-role-provider-BRVCTUZu.js → iam-role-provider-D9wk9Bnh.js} +2 -2
  7. package/dist/{iam-role-provider-BRVCTUZu.js.map → iam-role-provider-D9wk9Bnh.js.map} +1 -1
  8. package/dist/index.d.ts +5 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/{neptune-provider-Cdp4jX8S.js → neptune-provider-B1GRQ6UO.js} +2 -2
  12. package/dist/{neptune-provider-Cdp4jX8S.js.map → neptune-provider-B1GRQ6UO.js.map} +1 -1
  13. package/dist/{program-DXRavuSm.js → program-DFehMfoh.js} +286 -85
  14. package/dist/program-DFehMfoh.js.map +1 -0
  15. package/dist/{provider-classes-DNkoEEo4.js → provider-classes-Ca6o5by0.js} +269 -50
  16. package/dist/provider-classes-Ca6o5by0.js.map +1 -0
  17. package/dist/{rds-provider-McCDKyXN.js → rds-provider-Dl--9uQU.js} +3 -3
  18. package/dist/{rds-provider-McCDKyXN.js.map → rds-provider-Dl--9uQU.js.map} +1 -1
  19. package/dist/{version-Dpc_HYX0.js → version-B5LYpWJH.js} +2 -2
  20. package/dist/{version-Dpc_HYX0.js.map → version-B5LYpWJH.js.map} +1 -1
  21. package/package.json +2 -2
  22. package/dist/deploy-engine-xlct0Hcm.js.map +0 -1
  23. package/dist/program-DXRavuSm.js.map +0 -1
  24. package/dist/provider-classes-DNkoEEo4.js.map +0 -1
@@ -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, $a as dynamicReferenceTokens, $o as resolveDockerContextDirectory, $r as malformedExportSourceWarning, $s as absoluteAssemblyPathEscape, $t as displayTextOrWithheld, Aa as DagBuilder, Ai as refuseMalformedResourceEntriesForImport, Ao as orphansAfterRollback, Ar as keepsSecretReferenceToken, As as resolveUseCdkBootstrapAssets, At as resolveReplacementOldType, Ba as printingCorpusOf, Bi as refuseMalformedState, Bn as ccProtectionRegistryTypes, Bo as rewriteTemplateAssetReferences, Br as STATE_REGION_DIVERGED, Bs as decodeListingKey, Bt as isFinalSnapshotError, C as perType, Ca as prefetchCreateOnlyPropertyPaths, Ci as refuseMalformedOrphansForOrphan, Co as exportNamesCarriedFrom, Cr as isUnboundTemplateParameter, Cs as loadCdkJson, Di as refuseMalformedResourceEntries, Do as importableOutputKeys, Dr as carriesDynamicReference, Ds as resolveSkipPrefix, Dt as isJournaledOrphan, Ea as withRetry, Ei as refuseMalformedResourceAttributesForOrphan, Eo as hasUnverifiableParameterRefusal, Er as isImpossibleEmptyStoredAttribute, Es as resolveCaptureObservedState, Et as demoteSupersededOrphans, Fa as carryLogOnlyValues, Fi as refuseMalformedResourcePropertiesForExport, Fn as wouldReturnToSdkProvider, Fo as stringifyValue, Fs as CFN_TEMPLATE_URL_LIMIT, Ft as PRE_DELETE_SNAPSHOT_TYPES, G as cyan, Ga as errorCauseChain, Gi as repairMalformedResourcePropertiesForReadOnly, Go as getBootstrapMarkerKey, Gr as displayLogicalId, Gs as AssemblyReader, H as formatResourceLine, Ha as recordLogOnlyValue, Hi as repairMalformedOrphansForReadOnly, Hn as UNSPECIFIED_SKIP_REASON, Ho as BOOTSTRAP_MARKER_PREFIX, Hr as UNREADABLE_ORPHANS_CONTAINER_ROW, Hs as PARTITION_TABLE, Ht as unsupportedFinalSnapshotError, Ia as createUnionSecretMasker, Ii as refuseMalformedResourcePropertiesForOrphan, In as isCustomResourceType$1, Io as WorkGraph, Ir as withSharedDrainBudget, Is as MIGRATE_TMP_PREFIX, It as buildFinalSnapshotIdentifier, J as red, Ja as markSameGenerationBag, Ji as unreadableOrphanRecords, Jo as readBootstrapMarkerBody, Jr as hasReadableResources, Js as defineOwnKey, Jt as updatePartialReason, K as gray, Ka as maskSecretsInError, Ki as repairMalformedResourcesForReadOnly, Kn as isWaitAbandonedError, Ko as isCrossRegionRedirect, Kr as hasReadableOrphans, Ks as StageLoadError, La as hasMaskableValues, Li as refuseMalformedResourcesForDeploy, Lo as buildAssetRedirectMap, Lr as parameterInputsFor, Ls as findLargeInlineResources, Lt as ccRoutedFinalSnapshotError, Ma as liveMatchesUnresolvedTokenFrame, Mi as refuseMalformedResourceEntriesForOrphan, Mn as CC_BROKEN_REASON, Mo as shouldRetainResource, Mr as cfnRefValueFromPhysicalId, Ms as warnDeprecatedNoPrefixCliFlag, Na as inheritNestedStackParameterAssociations, Ni as refuseMalformedResourcePropertiesForDestroy, Nn as ProviderRegistry, No as AssetPublisher, Nr as isStalePlaceholderArnAttribute, Ns as ssmResolvedValueType, Nt as inheritProducerRegions, Oi as refuseMalformedResourceEntriesForDeploy, Oo as importableOutputs, Or as carriesFetchableDynamicReference, Os as resolveStateBucketWithDefault, Ot as planFailedOps, Pa as recordNestedStackParameterExpressions, Pi as refuseMalformedResourcePropertiesForDrift, Pn as ccBrokenReason, Po as isSensitiveAttributeName, Pr as refStateLookupFromResource, Ps as CFN_TEMPLATE_BODY_LIMIT, Pt as ATOMIC_FINAL_SNAPSHOT_TYPES, Q as reachableDivergentParameters, Qa as DYNAMIC_REFERENCE_TOKEN_SCAN, Qi as unwrittenCreateOnlyReplacement, Qo as buildDockerImage, Qr as malformedExportNamesWarning, Qs as ownValue, Qt as WITHHELD_NAME_DISPLAY, Ra as literalSplitDelimitersOf, Ri as refuseMalformedResourcesForDestroy, Rn as CloudControlProvider, Ro as createAssetRedirectResolver, Rs as uploadCfnTemplate, Rt as createPreDeleteFinalSnapshot, S as isProtectionValueActive, Si as refuseMalformedOrphansForDestroy, So as describeRegionValueKind, Sr as coerceParameterTypedValue, Ss as getLegacyStateBucketName, St as destroyStackRecordsView, Ta as describeTypeWithThrottleRetry, Ti as refuseMalformedOutputsForDestroy, To as hasReasonlessBaselineRefusal, Tr as getAccountInfo, Ts as resolveAutoAssetStorage, Tt as recordAfterRollbackUpdate, U as createReadOnlyAttributeHealerFactory, Ua as shareLogOnlyValues, Ui as repairMalformedOutputsForReadOnly, Un as deleteIndeterminateGuards, Uo as assertAssetBucketRegion, Ur as UNREADABLE_RESOURCES_MAP_ROW, Us as canonicalizeRegion, Va as recordLogOnlyParameterValue, Vi as repairMalformedOrphanRecordsForReadOnly, Vo as AssetModeResolver, Vr as STATE_RESOURCES_MALFORMED, Vs as expectedOwnerParam, Vt as refusesFinalSnapshot, W as bold, Wa as createSecretMasker, Wi as repairMalformedResourceEntriesForReadOnly, Wn as deleteSkipReason, Wo as ensureAssetStorage, Wr as deployRefusesOrphanRowsReason, Ws as derivePartitionAndUrlSuffix, X as computeParameterTaint, Xa as scrubResourceRecord, Xi as findActionableSilentDrops, Xo as validateContainerRepoName, Xr as isReadableResourceEntry, Xs as hasPlainPrototype, Xt as DeploymentEventsStore, Y as yellow, Ya as redactSecretsForState, Yi as unreadableResourceEntries, Yo as validateAssetBucketName, Yr as isReadableOrphanRecord, Ys as hasOwnKey, Yt as DeploymentEventsReader, Z as namesAnyDeclaredParameter, Zo as buildDenyExternalAccessPolicy, Zr as malformedDriftResourcePropertiesWarning, Zs as nullPrototypeRecord, Zt as extractDeploymentEventError, _ as makeCanonicalizePropertiesFn, _i as refuseDivergentRecordRegionForDestroy, _n as RollbackInlinePolicyWriters, _o as isLockInfoExpired, _s as AssetManifestLoader, a as findNestedTemplateTreeDefect, aa as isStatefulRecreateTargetForReplace, ac as resolveBucketRegion, ai as malformedOrphanRowsKeptWarning, an as isWholeDynamicReferenceValue, ao as recordMaskOnlyValue, ar as regionLessSecretName, as as formatDockerLoginError, at as makeSiblingClaimReader, b as recordedProtectionNote, bi as refuseMalformedOrphanRecordsForDestroy, bo as splitImportedOps, bs as synthesisStatusMessage, bt as replayRollback, c as renderNestedTemplateTreeDefect, ci as malformedOutputsRefusalMessage, cn as collectPublishedOutputNames, co as recordProvenPublicExpression, cr as assertSendableRoleArn, cs as isMalformedEnvKey, ct as displacedOpClause, d as conditionInputsFrom, di as malformedResourceEntriesWarning, dn as DEFAULT_RESOURCE_TIMEOUT_MS, do as STATE_SOURCED_CROSS_GENERATION_RULES, dr as sendableAssumeRoleCommand, ds as redactedDockerCause, ea as NO_CC_HANDLERS_REASON, ec as describeFileReadFailure, ei as malformedLocalOutputsWarning, en as exportAliasCollisionScrubWarning, eo as isUncertifiedBaselineMaskPosition, er as DiffCalculator, es as describeDockerCapturedOutput, et as deleteJournaledOrphans, f as parentSuppliedValues, fi as malformedResourcePropertiesWarning, fn as DEFAULT_RESOURCE_WARN_AFTER_MS, fo as STATE_SOURCED_READBACK_RULES, fr as AWS_CREDENTIAL_ENV_KEYS, fs as runDockerForeground, ft as nestedChildStackName$1, g as mergeNoChangeOutputs, gi as previewableOrphanRecords, gn as formatDestructiveChange, go as LockManager, gs as stripControlChars, gt as withNestedRevertRun, h as keptWholeReasonText, hi as malformedStateRefusalMessage, hn as findDestructiveChanges, ho as isSingleDynamicReferenceToken, hr as envCredentialsAreAssumedRole, hs as escapeRegExp, ht as revertedNestedRowIds, i as childTemplateLoader, ia as MULTI_REGION_RECREATE_BLOCKED_TYPES, ii as malformedOrphanRecordsWarning, in as exportNameSecretExposure, io as provenPublicValue, ir as producerRegionsFromState, is as finchSecretArgvRefusal, it as sameJournaledOrphans, ja as TemplateParser, ji as refuseMalformedResourceEntriesForImportSave, jo as orphansCarriedFrom, jr as AWS_NO_VALUE, js as stateBucketExistenceConfirmed, jt as findNestedStackTypeChanges, ki as refuseMalformedResourceEntriesForDestroy, ko as isReadableBag, kr as isNamelessDynamicReferenceError, ks as resolveStateBucketWithDefaultAndSource, kt as planRollback, l as templateIdentity, li as malformedOutputsWarning, ln as isExportAliasCollision, lo as wholeStringLeavesOf, lr as explicitRoleArnOrThrow, ls as partitionSensitiveEnv, lt as displacedPhysicalIdShown, m as isSecretBearingReferenceString, mi as malformedScrubResourceEntriesRefusalMessage, mn as constructPathOf, mo as WHOLE_DYNAMIC_REFERENCE_PATTERN, mr as callerEnvCredentials, ms as warnFinchArgvExposure, n as IMPLICIT_DELETE_DEPENDENCIES, na as findReplacedReadersOfRecreateTargets, nc as renderAssemblyPathEscape, ni as malformedLocalResourcesWarning, nn as secretBearingStateKeyWarning, no as identityKeyFor, nr as IntrinsicFunctionResolver, ns as describeDockerFailure, nt as journaledOrphanLines, o as isAbsoluteAssetPath, oa as isStatefulRecreateTargetSync, oi as malformedOrphansRefusalMessage, on as noEchoParameterValueSeed, oo as recordMaskOnlyValuesIn, or as applyRoleArnIfSet, os as getDockerCmd, ot as planOrphanAdoption, p as readRecordedConditionVerdicts, pi as malformedResourcesWarning, pn as maskingRetryLogger, po as TEMPLATE_SOURCED_RULES, pr as applyCallerIdentityCredentials, ps as runDockerStreaming, pt as recordDisplacedSkips, q as green, qa as maskSecretsInText, qi as unpreviewableOrphanRecords, qo as parseBootstrapMarker, qr as hasReadableOutputs, qs as processStackMessages, qt as updatePartialMessage, r as computeImplicitDeleteEdges, ra as shownType, rc as resolveAssemblyPath, ri as malformedOrphanRecordsRefusalMessage, rn as secretSafeKeyDisplay, ro as carriesSecretMask, rr as classifyReplaySecretRegion, rs as dockerSpawnEnvWithSensitive, rt as loadJournaledOrphans, s as listNestedTemplateRows, sa as renderStatefulReason, si as malformedOrphansWarning, sn as collectDeclaredOutputNames, so as recordNoEchoAttributeValues, sr as assertFlagRoleArn, ss as isDockerClientEnvKey, st as NESTED_PENDING_PARENT_REASON, t as DeployEngine, ta as hasNoCloudControlHandlers, tc as displayAssemblyPath, ti as malformedLocalResourceEntriesWarning, tn as secretBearing, to as pathCrossesDottedKey, tr as INTRINSIC_KEYS, ts as describeDockerExecFailure, tt as isHandledOrphan, u as conditionFingerprint, ui as malformedRenderedContainersWarning, un as bindingSkippedOutputs, uo as STATE_SOURCED_BASELINE_RULES, ur as isIamRoleArn, us as redactDockerArgvValues, ut as dropSettledNestedJournals, v as withResourceDeadline, vo as S3StateBackend, vs as getDockerImageBySourceHash, vt as withNestedStackContext, w as readProtection, wa as templateResourceTypes, wi as refuseMalformedOutputs, wo as hasReadableExportSet, wr as parameterTypeMayLoseSecretIdentity, ws as resolveApp, wt as withStackRecords, x as PROTECTION_PROPERTY_BY_TYPE, xi as refuseMalformedOrphans, xn as withCreateTokenLedger, xo as acceptedCreateOnlyDropsOf, xs as getDefaultStateBucketName, y as recordedProtectionEvidence, yi as refuseMalformedOrphanRecords, yn as ledgerForStack, yo as rebuildClientForBucketRegion, ys as Synthesizer, yt as replayFailedOperations, za as logOnlyValueCount, zi as refuseMalformedResourcesForExport, zn as slowCcOperationTimeoutMs, zo as loadPublishableAssetManifest, zr as JSON_LISTING_HOLE_VALUE, zs as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, zt as effectiveDeletionPolicy } from "./deploy-engine-xlct0Hcm.js";
6
- import { t as getCdkdVersion } from "./version-Dpc_HYX0.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-Dre6eDNJ.js";
6
+ import { t as getCdkdVersion } from "./version-B5LYpWJH.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-DNkoEEo4.js");
2417
+ providerClasses ??= import("./provider-classes-Ca6o5by0.js");
2418
2418
  return providerClasses;
2419
2419
  }
2420
2420
  function registerAllProviders(registry, classes) {
@@ -8534,10 +8534,10 @@ function createIamPrincipalUniqueIdResolver(awsClients) {
8534
8534
  return uniqueId;
8535
8535
  };
8536
8536
  }
8537
- function containsDynamicReference(value) {
8537
+ function containsDynamicReference$1(value) {
8538
8538
  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);
8539
+ if (Array.isArray(value)) return value.some(containsDynamicReference$1);
8540
+ if (value !== null && typeof value === "object") return Object.values(value).some(containsDynamicReference$1);
8541
8541
  return false;
8542
8542
  }
8543
8543
  const MIN_SECRET_NEEDLE_LENGTH = 4;
@@ -8712,7 +8712,7 @@ async function resolveDriftLeafByRegion(leaf, propertyPath, logicalId, consumerR
8712
8712
  return out + leaf.slice(cursor);
8713
8713
  }
8714
8714
  async function resolveStateSecretExpressions(props, resolvers, secrets, options) {
8715
- if (!containsDynamicReference(props)) return props;
8715
+ if (!containsDynamicReference$1(props)) return props;
8716
8716
  const { secretPaths, onUnresolved, producerRegions, logicalId, consumerRegion } = options;
8717
8717
  const ctx = {
8718
8718
  template: { Resources: {} },
@@ -16833,17 +16833,18 @@ function displacedOpLabel(op, segment) {
16833
16833
  return ` - skip ${logicalIdShown(op.logicalId)} (${resourceTypeShown(op.resourceType)}) — ${displacedOpClause(op, segment.importedResources ?? [], getLogger())}; not reverted, check that resource by hand`;
16834
16834
  }
16835
16835
  function failedOpsToReplay(ops, revertFailed) {
16836
- return revertFailed ? ops : ops.filter(isJournaledOrphan);
16836
+ return revertFailed ? ops : ops.filter((op) => isJournaledOrphan(op) || op.changeType === "UPDATE" && replacementNeverSwapped(op, ops));
16837
16837
  }
16838
16838
  function failedActionLabel(item, skipFinalSnapshot) {
16839
16839
  const { op, action } = item;
16840
16840
  switch (action) {
16841
16841
  case "revert-failed-update": return ` - revert ${safe(op.logicalId)} (${safe(op.resourceType)}) [FAILED update — remote state unknown, force-applying previous properties]`;
16842
- case "delete-failed-create": return op.physicalIdRecoveredFromError === true ? ` - delete ${logicalIdShown(op.logicalId)} (${resourceTypeShown(op.resourceType)}) [FAILED create, never recorded in state: ${displacedPhysicalIdShown(op, getLogger()) ?? "a physical id"}]` : ` - delete ${safe(op.logicalId)} (${safe(op.resourceType)}) [FAILED create]`;
16842
+ case "delete-failed-create": return op.physicalIdRecoveredFromError === true ? ` - delete ${logicalIdShown(op.logicalId)} (${resourceTypeShown(op.resourceType)}) [FAILED ` + (isReplacementOrphan(op) ? "replacement's new resource" : "create") + `, never recorded in state: ${displacedPhysicalIdShown(op, getLogger()) ?? "a physical id"}]` : ` - delete ${safe(op.logicalId)} (${safe(op.resourceType)}) [FAILED create]`;
16843
16843
  case "delete-failed-create-with-final-snapshot": return ` - delete ${logicalIdShown(op.logicalId)} (${resourceTypeShown(op.resourceType)}) [FAILED create, ${snapshotNote(op.resourceType, item.effectiveProvisionedBy, skipFinalSnapshot)}]`;
16844
16844
  case "orphan-failed-create-retain": return ` - orphan ${safe(op.logicalId)} (${safe(op.resourceType)}) [FAILED create, DeletionPolicy Retain — left in AWS]`;
16845
16845
  case "skip-failed-unknown": return ` - skip ${safe(op.logicalId)} (${safe(op.resourceType)}) — failed CREATE recorded no physical id`;
16846
16846
  case "skip-failed-noop": return ` - skip ${safe(op.logicalId)} (${safe(op.resourceType)}) — failed ${safe(op.changeType)} left nothing to revert`;
16847
+ case "skip-failed-replaced-deleted": return ` - skip ${logicalIdShown(op.logicalId)} (${resourceTypeShown(op.resourceType)}) — failed replacement deleted the old resource ${displacedPhysicalIdShown(op, getLogger()) ?? "a physical id"} before its create failed; nothing to revert, state still records it`;
16847
16848
  case "skip-failed-superseded": return ` - skip ${logicalIdShown(op.logicalId)} (${resourceTypeShown(op.resourceType)}) — failed CREATE created ${displacedPhysicalIdShown(op, getLogger()) ?? "a physical id"} before failing; a later deploy or rollback may own it now; not deleted, needs manual attention`;
16848
16849
  case "skip-failed-mismatch": return ` - skip ${logicalIdShown(op.logicalId)} (${resourceTypeShown(op.resourceType)}) — failed CREATE recorded ${displacedPhysicalIdShown(op, getLogger()) ?? "a physical id"}, which is not the resource state tracks under this id; not reverted, needs manual attention`;
16849
16850
  case "skip-failed-absent": return ` - skip ${safe(op.logicalId)} (${safe(op.resourceType)}) — no previous state available`;
@@ -17261,11 +17262,11 @@ function applyFailedPlanToPreview(plan, previewState, skipFinalSnapshot) {
17261
17262
  switch (action) {
17262
17263
  case "delete-failed-create-with-final-snapshot":
17263
17264
  if (planItemWillBeRefused(op.resourceType, item.effectiveProvisionedBy, skipFinalSnapshot)) break;
17264
- delete previewState[op.logicalId];
17265
+ if (!isReplacementOrphan(op)) delete previewState[op.logicalId];
17265
17266
  break;
17266
17267
  case "delete-failed-create":
17267
17268
  case "orphan-failed-create-retain":
17268
- delete previewState[op.logicalId];
17269
+ if (!isReplacementOrphan(op)) delete previewState[op.logicalId];
17269
17270
  break;
17270
17271
  case "revert-failed-update": if (op.previousState) previewState[op.logicalId] = op.previousState;
17271
17272
  }
@@ -19839,6 +19840,10 @@ const ENGINE_ECS_SECRETS_CHANNEL = {
19839
19840
  what: "ECS task secrets are fetched with the role and injected as plaintext into the container's environment",
19840
19841
  flagOnly: false
19841
19842
  };
19843
+ const ENGINE_DYNAMIC_REFERENCE_CHANNEL = {
19844
+ what: "CloudFormation dynamic references ({{resolve:...}}) are fetched with the role and injected as plaintext into the container's environment",
19845
+ flagOnly: false
19846
+ };
19842
19847
  const ENGINE_ASSUME_ROLE_CHANNEL = {
19843
19848
  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",
19844
19849
  flagOnly: false
@@ -20945,6 +20950,7 @@ function checkVolumeHostPath(hostPath) {
20945
20950
  }
20946
20951
  async function applyCrossStackResolverToTask(task, context) {
20947
20952
  if (!context.crossStackResolver) return;
20953
+ const { resolveDynamicReferences: _envOnly, ...secretContext } = context;
20948
20954
  const rawContainers = (task.resource.Properties ?? {})["ContainerDefinitions"];
20949
20955
  if (!Array.isArray(rawContainers)) return;
20950
20956
  for (let idx = 0; idx < task.containers.length; idx += 1) {
@@ -20964,10 +20970,21 @@ async function applyCrossStackResolverToTask(task, context) {
20964
20970
  if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") continue;
20965
20971
  if (Object.hasOwn(container.environment, key)) continue;
20966
20972
  if (!isCrossStackIntrinsic(value)) continue;
20967
- const sub = await substituteAgainstStateAsync(value, context);
20973
+ let resolvedToken = false;
20974
+ const hook = context.resolveDynamicReferences;
20975
+ const keyContext = hook ? {
20976
+ ...context,
20977
+ resolveDynamicReferences: async (v, producerRegion) => {
20978
+ const plain = await hook(v, producerRegion);
20979
+ resolvedToken = true;
20980
+ return plain;
20981
+ }
20982
+ } : context;
20983
+ const sub = await substituteAgainstStateAsync(value, keyContext);
20968
20984
  if (sub.kind === "literal") {
20969
20985
  defineOwnKey(container.environment, key, String(sub.value));
20970
20986
  resolvedEnvKeys.add(key);
20987
+ if (resolvedToken) container.resolvedDynamicReferenceKeys = [...container.resolvedDynamicReferenceKeys ?? [], key];
20971
20988
  }
20972
20989
  }
20973
20990
  if (Array.isArray(c["Secrets"])) for (const entry of c["Secrets"]) {
@@ -20979,7 +20996,7 @@ async function applyCrossStackResolverToTask(task, context) {
20979
20996
  if (typeof valueFromRaw === "string" && valueFromRaw.length > 0) continue;
20980
20997
  if (container.secrets.some((s) => s.name === sName)) continue;
20981
20998
  if (!isCrossStackIntrinsic(valueFromRaw)) continue;
20982
- const sub = await substituteAgainstStateAsync(valueFromRaw, context);
20999
+ const sub = await substituteAgainstStateAsync(valueFromRaw, secretContext);
20983
21000
  if (sub.kind === "literal" && typeof sub.value === "string" && sub.value.length > 0) {
20984
21001
  container.secrets.push({
20985
21002
  name: sName,
@@ -21559,6 +21576,29 @@ function strandedProfileCredentialsNotice(hostPath) {
21559
21576
  return `The AWS credentials file mounted into the containers is NOT removed: delete ${displayIdent(hostPath)} once you tear them down.`;
21560
21577
  }
21561
21578
 
21579
+ //#endregion
21580
+ //#region src/local/dynamic-reference.ts
21581
+ function createCallerDynamicReferenceResolver(profile) {
21582
+ return new DynamicReferenceResolver({
21583
+ secretsManagerClientFactory: (region) => new SecretsManagerClient({
21584
+ ...awsClientDefaults({
21585
+ profile,
21586
+ ignoreAssumedRole: true
21587
+ }),
21588
+ ...region && { region: canonicalizeRegion(region) },
21589
+ ...profile && { profile }
21590
+ }),
21591
+ ssmClientFactory: (region) => new SSMClient({
21592
+ ...awsClientDefaults({
21593
+ profile,
21594
+ ignoreAssumedRole: true
21595
+ }),
21596
+ ...region && { region: canonicalizeRegion(region) },
21597
+ ...profile && { profile }
21598
+ })
21599
+ });
21600
+ }
21601
+
21562
21602
  //#endregion
21563
21603
  //#region src/local/websocket-body.ts
21564
21604
  function bufferToBody$1(raw, isBinary) {
@@ -21965,6 +22005,7 @@ function createContainerPool(specs, options) {
21965
22005
  }],
21966
22006
  extraMounts,
21967
22007
  env: spec.env,
22008
+ ...spec.sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys: spec.sensitiveEnvKeys },
21968
22009
  cmd: [spec.lambda.handler],
21969
22010
  hostPort,
21970
22011
  host: spec.containerHost,
@@ -21983,6 +22024,7 @@ function createContainerPool(specs, options) {
21983
22024
  readOnly: true
21984
22025
  }] },
21985
22026
  env: spec.env,
22027
+ ...spec.sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys: spec.sensitiveEnvKeys },
21986
22028
  cmd: spec.command,
21987
22029
  hostPort,
21988
22030
  host: spec.containerHost,
@@ -22375,7 +22417,8 @@ async function localStartApiCommand(target, options) {
22375
22417
  skipPull: options.pull === false,
22376
22418
  ...options.layerRoleArn !== void 0 && { layerRoleArn: options.layerRoleArn },
22377
22419
  ...profileCredentials && { profileCredentials },
22378
- ...profileCredsFile && { profileCredsFile }
22420
+ ...profileCredsFile && { profileCredsFile },
22421
+ ...dynamicReferenceSpecOptions(options)
22379
22422
  });
22380
22423
  specs.set(logicalId, spec);
22381
22424
  }
@@ -22799,8 +22842,14 @@ function assumeRolePin(logicalId) {
22799
22842
  function malformedAutoRoleError(logicalId, detail) {
22800
22843
  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)}.`);
22801
22844
  }
22845
+ function dynamicReferenceSpecOptions(options) {
22846
+ return {
22847
+ ...options.profile !== void 0 && { profile: options.profile },
22848
+ ...options.stackRegion !== void 0 && { stackRegionOverride: options.stackRegion }
22849
+ };
22850
+ }
22802
22851
  async function buildContainerSpec(args) {
22803
- const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile } = args;
22852
+ const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile, profile, stackRegionOverride } = args;
22804
22853
  const lambda = resolveLambdaByLogicalId(logicalId, stacks);
22805
22854
  let codeDir;
22806
22855
  let optDir;
@@ -22833,6 +22882,22 @@ async function buildContainerSpec(args) {
22833
22882
  const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? logicalId;
22834
22883
  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.`);
22835
22884
  }
22885
+ const plaintextKeys = new Set(stateAudit?.sensitiveKeys ?? []);
22886
+ for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
22887
+ const dynamicRefs = createCallerDynamicReferenceResolver(profile);
22888
+ let dynamic;
22889
+ try {
22890
+ dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
22891
+ region: firstUsableRegion(stateBundle?.region, stackRegionOverride, lambda.stack.region, stsRegion),
22892
+ label: `Lambda ${logicalId}`,
22893
+ skipKeys: plaintextKeys,
22894
+ resolver: dynamicRefs
22895
+ });
22896
+ } finally {
22897
+ dynamicRefs.dispose();
22898
+ }
22899
+ const sensitiveKeyList = [...stateAudit?.sensitiveKeys ?? [], ...dynamic.resolvedKeys];
22900
+ const sensitiveEnvKeys = sensitiveKeyList.length > 0 ? new Set(sensitiveKeyList) : void 0;
22836
22901
  const dockerEnv = {
22837
22902
  AWS_LAMBDA_FUNCTION_NAME: logicalId,
22838
22903
  AWS_LAMBDA_FUNCTION_MEMORY_SIZE: String(lambda.memoryMb),
@@ -22840,7 +22905,7 @@ async function buildContainerSpec(args) {
22840
22905
  AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
22841
22906
  AWS_LAMBDA_LOG_GROUP_NAME: `/aws/lambda/${logicalId}`,
22842
22907
  AWS_LAMBDA_LOG_STREAM_NAME: "local",
22843
- ...envResult.resolved
22908
+ ...dynamic.env
22844
22909
  };
22845
22910
  const roleArn = resolveStartApiAssumeRoleArn({
22846
22911
  logicalId,
@@ -22878,6 +22943,7 @@ async function buildContainerSpec(args) {
22878
22943
  codeDir,
22879
22944
  platform,
22880
22945
  env: dockerEnv,
22946
+ ...sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys },
22881
22947
  containerHost,
22882
22948
  ...optDir !== void 0 && { optDir },
22883
22949
  ...debugPort !== void 0 && { debugPort },
@@ -22896,6 +22962,7 @@ async function buildContainerSpec(args) {
22896
22962
  ...lambda.imageConfig.entryPoint !== void 0 && lambda.imageConfig.entryPoint.length > 0 && { entryPoint: lambda.imageConfig.entryPoint },
22897
22963
  ...lambda.imageConfig.workingDirectory !== void 0 && { workingDir: lambda.imageConfig.workingDirectory },
22898
22964
  env: dockerEnv,
22965
+ ...sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys },
22899
22966
  containerHost,
22900
22967
  ...debugPort !== void 0 && { debugPort },
22901
22968
  ...tmpfs !== void 0 && { tmpfs },
@@ -23327,13 +23394,16 @@ async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options)
23327
23394
  try {
23328
23395
  const loaded = await provider.load(stack.stackName, stack.region);
23329
23396
  if (!loaded) continue;
23330
- const bundle = { state: {
23331
- version: 1,
23332
- stackName: stack.stackName,
23333
- resources: loaded.resources,
23334
- outputs: loaded.outputs,
23335
- lastModified: 0
23336
- } };
23397
+ const bundle = {
23398
+ state: {
23399
+ version: 1,
23400
+ stackName: stack.stackName,
23401
+ resources: loaded.resources,
23402
+ outputs: loaded.outputs,
23403
+ lastModified: 0
23404
+ },
23405
+ region: loaded.region
23406
+ };
23337
23407
  if (stackHasIntrinsicEnv(stackName)) {
23338
23408
  const pseudo = await resolvePseudoParametersForStartApi(loaded.region, options);
23339
23409
  if (pseudo) bundle.pseudoParameters = pseudo;
@@ -23796,10 +23866,24 @@ async function runEcsTask(task, options, state) {
23796
23866
  const startOrder = topoSort(buildDependencyGraph(task.containers), task.containers);
23797
23867
  const finchRefusals = [];
23798
23868
  for (const c of task.containers) {
23799
- const refusal = finchSecretArgvRefusal(c.secrets.map((s) => s.name).filter((n) => !isMalformedEnvKey(n) && !isDockerClientEnvKey(n)), `Container ${displayIdent(c.name)}`);
23869
+ const refusal = finchSecretArgvRefusal([
23870
+ ...c.secrets.map((s) => s.name),
23871
+ ...c.resolvedDynamicReferenceKeys ?? [],
23872
+ ...dynamicReferenceEnvKeys(c, options.envOverrides)
23873
+ ].filter((n) => !isMalformedEnvKey(n) && !isDockerClientEnvKey(n)), `Container ${displayIdent(c.name)}`);
23800
23874
  if (refusal !== void 0) finchRefusals.push(refusal);
23801
23875
  }
23802
23876
  if (finchRefusals.length > 0) throw new EcsTaskRunnerError(finchRefusals.join("\n"));
23877
+ const argvRefusals = [];
23878
+ for (const c of task.containers) {
23879
+ const fields = [
23880
+ ["Command", c.command],
23881
+ ["EntryPoint", c.entryPoint],
23882
+ ["HealthCheck.Command", c.healthCheck?.command]
23883
+ ];
23884
+ 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.`);
23885
+ }
23886
+ if (argvRefusals.length > 0) throw new EcsTaskRunnerError(argvRefusals.join("\n"));
23803
23887
  const imagePlan = options.imagePlanByContainer ?? /* @__PURE__ */ new Map();
23804
23888
  if (!options.imagePlanByContainer) await prepareImages(task, imagePlan, options);
23805
23889
  const allSecrets = [];
@@ -23809,6 +23893,22 @@ async function runEcsTask(task, options, state) {
23809
23893
  valueFrom: s.valueFrom
23810
23894
  });
23811
23895
  const secretsByContainer = groupSecretsByContainer(await resolveEcsSecrets(allSecrets, { ...options.region !== void 0 && { region: options.region } }));
23896
+ const dynamicEnvByContainer = /* @__PURE__ */ new Map();
23897
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
23898
+ try {
23899
+ for (const c of task.containers) {
23900
+ const tokenKeys = new Set(dynamicReferenceEnvKeys(c, options.envOverrides));
23901
+ if (tokenKeys.size === 0) continue;
23902
+ dynamicEnvByContainer.set(c.name, await resolveDynamicReferencesInEnv(c.environment, {
23903
+ region: firstUsableRegion(options.stateRecordRegion, options.stackRegion, task.stack.region, options.region),
23904
+ label: `Container ${c.name}`,
23905
+ skipKeys: new Set(Object.keys(c.environment).filter((k) => !tokenKeys.has(k))),
23906
+ resolver: dynamicRefs
23907
+ }));
23908
+ }
23909
+ } finally {
23910
+ dynamicRefs.dispose();
23911
+ }
23812
23912
  if (options.existingNetwork) state.network = {
23813
23913
  ...options.existingNetwork,
23814
23914
  ownedByCaller: true
@@ -23852,9 +23952,14 @@ async function runEcsTask(task, options, state) {
23852
23952
  for (const container of task.containers) {
23853
23953
  const image = imagePlan.get(container.name);
23854
23954
  if (!image) throw new EcsTaskRunnerError(`Internal: no resolved image for container '${container.name}'.`);
23955
+ const dynamic = dynamicEnvByContainer.get(container.name);
23855
23956
  const built = buildDockerRunArgs({
23856
23957
  task,
23857
- container,
23958
+ container: dynamic ? {
23959
+ ...container,
23960
+ environment: dynamic.env
23961
+ } : container,
23962
+ plaintextEnvKeys: [...container.resolvedDynamicReferenceKeys ?? [], ...dynamic?.resolvedKeys ?? []],
23858
23963
  image,
23859
23964
  network: state.network.networkName,
23860
23965
  volumeByName,
@@ -24174,6 +24279,19 @@ async function realizeDockerVolumes(volumes, state) {
24174
24279
  function randHex(bytes) {
24175
24280
  return randomBytes(bytes).toString("hex");
24176
24281
  }
24282
+ function overriddenEnvKeys(overrides, containerName) {
24283
+ if (!overrides) return [];
24284
+ const applied = (map) => Object.entries(map ?? {}).filter(([, v]) => v === null || typeof v === "string" || typeof v === "number" || typeof v === "boolean").map(([k]) => k);
24285
+ return [...applied(overrides["Parameters"]), ...applied(overrides[containerName])];
24286
+ }
24287
+ function dynamicReferenceEnvKeys(container, overrides) {
24288
+ const skip = /* @__PURE__ */ new Set([
24289
+ ...container.resolvedDynamicReferenceKeys ?? [],
24290
+ ...container.secrets.map((s) => s.name),
24291
+ ...overriddenEnvKeys(overrides, container.name)
24292
+ ]);
24293
+ return Object.keys(container.environment).filter((k) => !skip.has(k) && containsDynamicReference(container.environment[k]));
24294
+ }
24177
24295
  function groupSecretsByContainer(resolved) {
24178
24296
  const out = /* @__PURE__ */ new Map();
24179
24297
  for (const r of resolved) {
@@ -24241,7 +24359,11 @@ function buildDockerRunArgs(opts) {
24241
24359
  applyOverrideMap(finalEnv, overrides["Parameters"]);
24242
24360
  applyOverrideMap(finalEnv, overrides[container.name]);
24243
24361
  }
24244
- const sensitiveKeys = /* @__PURE__ */ new Set([...SENSITIVE_ENV_KEYS, ...secrets.map((s) => s.name)]);
24362
+ const sensitiveKeys = /* @__PURE__ */ new Set([
24363
+ ...SENSITIVE_ENV_KEYS,
24364
+ ...secrets.map((s) => s.name),
24365
+ ...opts.plaintextEnvKeys ?? []
24366
+ ]);
24245
24367
  const { flags, sensitiveEnv, collisions } = partitionSensitiveEnv(finalEnv, sensitiveKeys);
24246
24368
  args.push(...flags);
24247
24369
  if (container.user) args.push("--user", container.user);
@@ -24361,13 +24483,23 @@ async function localRunTaskCommand(target, options) {
24361
24483
  const consumerRegion = resolveEcsConsumerRegion(stateRecordRegion, options, task.stack.region);
24362
24484
  const resolver = await stateProvider.buildCrossStackResolver(consumerRegion);
24363
24485
  if (resolver) {
24486
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
24364
24487
  const subContext = {
24365
24488
  resources: imageContext?.stateResources ?? {},
24366
24489
  ...imageContext?.pseudoParameters && { pseudoParameters: imageContext.pseudoParameters },
24367
24490
  consumerRegion,
24368
- crossStackResolver: resolver
24491
+ crossStackResolver: resolver,
24492
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
24493
+ region: producerRegion,
24494
+ consumer: `Task ${task.taskDefinitionLogicalId} cross-stack env value`,
24495
+ overridable: false
24496
+ })
24369
24497
  };
24370
- await applyCrossStackResolverToTask(task, subContext);
24498
+ try {
24499
+ await applyCrossStackResolverToTask(task, subContext);
24500
+ } finally {
24501
+ dynamicRefs.dispose();
24502
+ }
24371
24503
  }
24372
24504
  } 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.");
24373
24505
  sigintHandler = () => {
@@ -24402,7 +24534,8 @@ async function localRunTaskCommand(target, options) {
24402
24534
  const envOverrides = readEnvOverridesFile$2(options.envVars);
24403
24535
  const runOpts = buildRunEcsTaskOptions(options, channels, {
24404
24536
  ...envOverrides !== void 0 && { envOverrides },
24405
- ...resolvedRoleArn !== void 0 && { resolvedRoleArn }
24537
+ ...resolvedRoleArn !== void 0 && { resolvedRoleArn },
24538
+ ...stateRecordRegion !== void 0 && { stateRecordRegion }
24406
24539
  });
24407
24540
  const hostGatewayExtraHosts = await resolveHostGatewayExtraHosts();
24408
24541
  if (hostGatewayExtraHosts.length > 0) runOpts.hostGatewayExtraHosts = hostGatewayExtraHosts;
@@ -24620,6 +24753,9 @@ function buildRunEcsTaskOptions(options, channels, extra = {}) {
24620
24753
  if (extra.resolvedRoleArn) runOpts.taskRoleArn = extra.resolvedRoleArn;
24621
24754
  if (options.platform) runOpts.platformOverride = options.platform;
24622
24755
  if (options.region) runOpts.region = options.region;
24756
+ if (options.stackRegion) runOpts.stackRegion = options.stackRegion;
24757
+ if (options.profile) runOpts.profile = options.profile;
24758
+ if (extra.stateRecordRegion) runOpts.stateRecordRegion = extra.stateRecordRegion;
24623
24759
  if (options.ecrRoleArn !== void 0) runOpts.ecrRoleArn = options.ecrRoleArn;
24624
24760
  if (channels.profileCredsFile) runOpts.profileCredentialsFile = {
24625
24761
  hostPath: channels.profileCredsFile.hostPath,
@@ -24661,7 +24797,11 @@ function createLocalStartServiceCommand() {
24661
24797
  await runEcsServiceEmulator(targets, options, serviceStrategy(), cdkdExtraStateProviders);
24662
24798
  }));
24663
24799
  addStartServiceSpecificOptions(cmd);
24664
- warnEngineRoleExposure(cmd, "start-service", [ENGINE_ECS_SECRETS_CHANNEL, ENGINE_ACCOUNT_ID_CHANNEL]);
24800
+ warnEngineRoleExposure(cmd, "start-service", [
24801
+ ENGINE_ECS_SECRETS_CHANNEL,
24802
+ ENGINE_ACCOUNT_ID_CHANNEL,
24803
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
24804
+ ]);
24665
24805
  return adoptDeprecatedRegionFlag(addCommonEcsServiceOptions(cmd));
24666
24806
  }
24667
24807
 
@@ -25474,13 +25614,28 @@ function findFileAssetByObjectKey(fileAssets, hash) {
25474
25614
  for (const asset of fileAssets.values()) if (Object.values(asset.destinations).some((d) => d.objectKey === zip || d.objectKey.endsWith(`/${zip}`))) return asset;
25475
25615
  }
25476
25616
  async function buildContainerEnv(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext) {
25617
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
25618
+ try {
25619
+ return await buildContainerEnvWith(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext, dynamicRefs);
25620
+ } finally {
25621
+ dynamicRefs.dispose();
25622
+ }
25623
+ }
25624
+ async function buildContainerEnvWith(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext, dynamicRefs) {
25477
25625
  const logger = getLogger();
25478
- let templateEnv = resolved.environmentVariables;
25626
+ const overrides = readEnvOverridesFile$1(options.envVars);
25627
+ const cdkPath = readCdkPathOrUndefined(resolved.resource);
25628
+ const overriddenKeys = keysOverriddenBy(resolved.environmentVariables, (env) => resolveEnvVars(resolved.logicalId, cdkPath, env, overrides).resolved);
25629
+ let templateEnv = withoutKeys(resolved.environmentVariables, overriddenKeys);
25479
25630
  const sensitiveEnvKeys = /* @__PURE__ */ new Set();
25480
25631
  if (stateProvider && loaded) {
25481
25632
  const subContext = {
25482
25633
  resources: imageContext?.stateResources ?? loaded.resources,
25483
- consumerRegion: loaded.region
25634
+ consumerRegion: loaded.region,
25635
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
25636
+ region: producerRegion,
25637
+ consumer: `AgentCore Runtime ${resolved.logicalId} cross-stack env value`
25638
+ })
25484
25639
  };
25485
25640
  const pseudo = imageContext?.pseudoParameters ?? derivePseudoParametersFromRegion$1(loaded.region);
25486
25641
  if (pseudo) subContext.pseudoParameters = pseudo;
@@ -25494,14 +25649,21 @@ async function buildContainerEnv(resolved, options, profileCredentials, profileC
25494
25649
  for (const key of audit.sensitiveKeys) sensitiveEnvKeys.add(key);
25495
25650
  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.`);
25496
25651
  }
25497
- const overrides = readEnvOverridesFile$1(options.envVars);
25498
- const cdkPath = readCdkPathOrUndefined(resolved.resource);
25499
25652
  const envResult = resolveEnvVars(resolved.logicalId, cdkPath, templateEnv, overrides);
25500
25653
  for (const key of envResult.unresolved) {
25501
25654
  const overrideKeyExample = cdkPath?.replace(/\/Resource$/, "") ?? resolved.logicalId;
25502
25655
  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.`);
25503
25656
  }
25504
- const dockerEnv = { ...envResult.resolved };
25657
+ const skipKeys = keysNotFromTemplate(templateEnv, envResult.resolved);
25658
+ for (const key of sensitiveEnvKeys) skipKeys.add(key);
25659
+ const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
25660
+ region: firstUsableRegion(loaded?.region, options.stackRegion, resolved.stack.region, options.region),
25661
+ label: `AgentCore Runtime ${resolved.logicalId}`,
25662
+ skipKeys,
25663
+ resolver: dynamicRefs
25664
+ });
25665
+ for (const key of dynamic.resolvedKeys) sensitiveEnvKeys.add(key);
25666
+ const dockerEnv = { ...dynamic.env };
25505
25667
  const assumeRoleArn = resolveAssumeRoleArn(options, resolved, loaded);
25506
25668
  await applyAgentCoreCredentialEnv(dockerEnv, {
25507
25669
  ...assumeRoleArn !== void 0 && { assumeRoleArn },
@@ -25843,7 +26005,11 @@ function createLocalStartAgentCoreCommand$1() {
25843
26005
  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."));
25844
26006
  cmd.addOption(new Option("--state-prefix <prefix>", "S3 key prefix for --from-state state files.").default("cdkd"));
25845
26007
  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."));
25846
- warnEngineRoleExposure(cmd, "start-agentcore", [engineCredentialTripleChannel("the agent container"), ENGINE_ACCOUNT_ID_CHANNEL]);
26008
+ warnEngineRoleExposure(cmd, "start-agentcore", [
26009
+ engineCredentialTripleChannel("the agent container"),
26010
+ ENGINE_ACCOUNT_ID_CHANNEL,
26011
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
26012
+ ]);
25847
26013
  return adoptDeprecatedRegionFlag(cmd);
25848
26014
  }
25849
26015
 
@@ -25889,7 +26055,8 @@ function createLocalStartAlbCommand() {
25889
26055
  warnEngineRoleExposure(cmd, "start-alb", [
25890
26056
  engineCredentialTripleChannel("the ALB's Lambda target-group containers"),
25891
26057
  ENGINE_ECS_SECRETS_CHANNEL,
25892
- ENGINE_ACCOUNT_ID_CHANNEL
26058
+ ENGINE_ACCOUNT_ID_CHANNEL,
26059
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
25893
26060
  ]);
25894
26061
  return adoptDeprecatedRegionFlag(addCommonEcsServiceOptions(cmd));
25895
26062
  }
@@ -25906,7 +26073,7 @@ function createLocalStartCloudFrontCommand$1() {
25906
26073
  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"));
25907
26074
  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."));
25908
26075
  refuseUnwiredCdkdStateFlags(cmd);
25909
- warnEngineRoleExposure(cmd, "start-cloudfront", [engineCredentialTripleChannel("the Function URL and Lambda@Edge containers")], engineFromCfnStackChannel("a deployed S3 origin's objects and KeyValueStore entries"));
26076
+ 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"));
25910
26077
  return adoptDeprecatedRegionFlag(cmd);
25911
26078
  }
25912
26079
  function refuseUnwiredCdkdStateFlags(cmd) {
@@ -26023,50 +26190,7 @@ async function localInvokeCommand(target, options) {
26023
26190
  const targetLabel = lambda.kind === "zip" ? lambda.runtime : "container image";
26024
26191
  logger.info(`Target: ${lambda.stack.stackName}/${lambda.logicalId} (${targetLabel})`);
26025
26192
  imagePlan = await resolveImagePlan(lambda, options);
26026
- let stateAudit;
26027
- let templateEnv = getTemplateEnv(lambda.resource);
26028
- let stateForRoleHint;
26029
- const stateProvider = createLocalStateProvider$1(options, lambda.stack.stackName, lambda.stack.region);
26030
- if (stateProvider) try {
26031
- const loaded = await stateProvider.load(lambda.stack.stackName, lambda.stack.region);
26032
- if (loaded) {
26033
- stateForRoleHint = {
26034
- version: 1,
26035
- stackName: lambda.stack.stackName,
26036
- resources: loaded.resources,
26037
- outputs: loaded.outputs,
26038
- lastModified: 0
26039
- };
26040
- const subContext = {
26041
- resources: loaded.resources,
26042
- consumerRegion: loaded.region
26043
- };
26044
- if (envHasIntrinsicValue(templateEnv)) {
26045
- const pseudo = await resolvePseudoParametersForInvoke(lambda.stack.region, options);
26046
- if (pseudo) subContext.pseudoParameters = pseudo;
26047
- }
26048
- if (envHasCrossStackIntrinsic(templateEnv)) {
26049
- const resolver = await stateProvider.buildCrossStackResolver(loaded.region);
26050
- if (resolver) subContext.crossStackResolver = resolver;
26051
- }
26052
- const { env, audit } = await substituteEnvVarsFromStateAsync(templateEnv, subContext);
26053
- templateEnv = env;
26054
- stateAudit = audit;
26055
- const label = stateProvider.label;
26056
- for (const key of audit.resolvedKeys) logger.debug(`${label}: substituted env var ${key}`);
26057
- 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.`);
26058
- }
26059
- } finally {
26060
- stateProvider.dispose();
26061
- }
26062
- const overrides = readEnvOverridesFile(options.envVars);
26063
- const lambdaCdkPath = readCdkPathOrUndefined(lambda.resource);
26064
- const envResult = resolveEnvVars(lambda.logicalId, lambdaCdkPath, templateEnv, overrides);
26065
- for (const key of envResult.unresolved) {
26066
- if (stateAudit && stateAudit.unresolved.some((u) => u.key === key)) continue;
26067
- const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
26068
- 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.`);
26069
- }
26193
+ const { env: templateEnvResolved, sensitiveEnvKeys, stateForRoleHint } = await resolveInvokeTemplateEnv(lambda, options);
26070
26194
  let resolvedAssumeRoleArn;
26071
26195
  if (typeof options.assumeRole === "string") resolvedAssumeRoleArn = explicitRoleArnOrThrow("--assume-role", options.assumeRole);
26072
26196
  else if (options.assumeRole === true) {
@@ -26081,7 +26205,7 @@ async function localInvokeCommand(target, options) {
26081
26205
  AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
26082
26206
  AWS_LAMBDA_LOG_GROUP_NAME: `/aws/lambda/${lambda.logicalId}`,
26083
26207
  AWS_LAMBDA_LOG_STREAM_NAME: "local",
26084
- ...envResult.resolved
26208
+ ...templateEnvResolved
26085
26209
  };
26086
26210
  await applyLambdaCredentialEnv(dockerEnv, {
26087
26211
  ...resolvedAssumeRoleArn && { assumeRoleArn: resolvedAssumeRoleArn },
@@ -26111,6 +26235,7 @@ async function localInvokeCommand(target, options) {
26111
26235
  mounts: imagePlan.mounts,
26112
26236
  extraMounts: extraMountsWithProfile,
26113
26237
  env: dockerEnv,
26238
+ ...sensitiveEnvKeys.size > 0 && { sensitiveEnvKeys },
26114
26239
  ...hostGatewayExtraHosts.length > 0 && { extraHosts: hostGatewayExtraHosts },
26115
26240
  cmd: imagePlan.cmd,
26116
26241
  hostPort,
@@ -26138,6 +26263,82 @@ async function localInvokeCommand(target, options) {
26138
26263
  if (sigintHandler) process.off("SIGINT", sigintHandler);
26139
26264
  }
26140
26265
  }
26266
+ async function resolveInvokeTemplateEnv(lambda, options) {
26267
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
26268
+ try {
26269
+ return await resolveInvokeTemplateEnvWith(lambda, options, dynamicRefs);
26270
+ } finally {
26271
+ dynamicRefs.dispose();
26272
+ }
26273
+ }
26274
+ async function resolveInvokeTemplateEnvWith(lambda, options, dynamicRefs) {
26275
+ const logger = getLogger();
26276
+ let stateAudit;
26277
+ let stateForRoleHint;
26278
+ let ownerRegion;
26279
+ const declaredEnv = getTemplateEnv(lambda.resource);
26280
+ const overrides = readEnvOverridesFile(options.envVars);
26281
+ const lambdaCdkPath = readCdkPathOrUndefined(lambda.resource);
26282
+ const overriddenKeys = keysOverriddenBy(declaredEnv, (env) => resolveEnvVars(lambda.logicalId, lambdaCdkPath, env, overrides).resolved);
26283
+ let templateEnv = declaredEnv && withoutKeys(declaredEnv, overriddenKeys);
26284
+ const stateProvider = createLocalStateProvider$1(options, lambda.stack.stackName, lambda.stack.region);
26285
+ if (stateProvider) try {
26286
+ const loaded = await stateProvider.load(lambda.stack.stackName, lambda.stack.region);
26287
+ if (loaded) {
26288
+ ownerRegion = loaded.region;
26289
+ stateForRoleHint = {
26290
+ version: 1,
26291
+ stackName: lambda.stack.stackName,
26292
+ resources: loaded.resources,
26293
+ outputs: loaded.outputs,
26294
+ lastModified: 0
26295
+ };
26296
+ const subContext = {
26297
+ resources: loaded.resources,
26298
+ consumerRegion: loaded.region,
26299
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
26300
+ region: producerRegion,
26301
+ consumer: `Lambda ${lambda.logicalId} cross-stack env value`
26302
+ })
26303
+ };
26304
+ if (envHasIntrinsicValue(templateEnv)) {
26305
+ const pseudo = await resolvePseudoParametersForInvoke(lambda.stack.region, options);
26306
+ if (pseudo) subContext.pseudoParameters = pseudo;
26307
+ }
26308
+ if (envHasCrossStackIntrinsic(templateEnv)) {
26309
+ const resolver = await stateProvider.buildCrossStackResolver(loaded.region);
26310
+ if (resolver) subContext.crossStackResolver = resolver;
26311
+ }
26312
+ const { env, audit } = await substituteEnvVarsFromStateAsync(templateEnv, subContext);
26313
+ templateEnv = env;
26314
+ stateAudit = audit;
26315
+ const label = stateProvider.label;
26316
+ for (const key of audit.resolvedKeys) logger.debug(`${label}: substituted env var ${key}`);
26317
+ 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.`);
26318
+ }
26319
+ } finally {
26320
+ stateProvider.dispose();
26321
+ }
26322
+ const envResult = resolveEnvVars(lambda.logicalId, lambdaCdkPath, templateEnv, overrides);
26323
+ for (const key of envResult.unresolved) {
26324
+ if (stateAudit && stateAudit.unresolved.some((u) => u.key === key)) continue;
26325
+ const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
26326
+ 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.`);
26327
+ }
26328
+ const plaintextKeys = new Set(stateAudit?.sensitiveKeys ?? []);
26329
+ for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
26330
+ const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
26331
+ region: firstUsableRegion(ownerRegion, options.stackRegion, lambda.stack.region, options.region),
26332
+ label: `Lambda ${lambda.logicalId}`,
26333
+ skipKeys: plaintextKeys,
26334
+ resolver: dynamicRefs
26335
+ });
26336
+ return {
26337
+ env: dynamic.env,
26338
+ sensitiveEnvKeys: /* @__PURE__ */ new Set([...stateAudit?.sensitiveKeys ?? [], ...dynamic.resolvedKeys]),
26339
+ ...stateForRoleHint !== void 0 && { stateForRoleHint }
26340
+ };
26341
+ }
26141
26342
  async function resolveImagePlan(lambda, options) {
26142
26343
  if (lambda.kind === "zip") return resolveZipImagePlan(lambda, options);
26143
26344
  return resolveContainerImagePlan(lambda, options);
@@ -26611,4 +26812,4 @@ function collectVerbFlags(program) {
26611
26812
 
26612
26813
  //#endregion
26613
26814
  export { canonicalizeIpProtocolValue as a, buildProgram, resolveSecretDerivedPrincipals as i, runDestroyForStack as n, resolvedResourceTimeoutMs as o, isResolvableSecretPrincipalList as r, canonicalizeIpv4Cidr as t };
26614
- //# sourceMappingURL=program-DXRavuSm.js.map
26815
+ //# sourceMappingURL=program-DFehMfoh.js.map