@go-to-k/cdkd 0.283.14 → 0.283.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { $ as coerceCfnBoolean, $t as resolveStateBucketWithDefault, A as cyan, An as MissingCdkCliError, At as AssetModeResolver, B as findSilentDropProperties, Bt as getDockerCmd, C as makeCanonicalizePropertiesFn, Ct as stringifyValue, D as renderStatefulReason, Dn as LocalMigrateError, Dt as loadPublishableAssetManifest, E as isStatefulRecreateTargetSync, En as LocalInvokeBuildError$1, Et as createAssetRedirectResolver, F as IAMRoleProvider, Fn as ResourceUpdateNotSupportedError, Ft as validateAssetBucketName, G as IntrinsicFunctionResolver, Gn as isRetryableTransientError, Gt as Synthesizer, H as slowCcOperationTimeoutMs, Hn as normalizeAwsError, Ht as runDockerStreaming, I as collectInlinePolicyNamesManagedBySiblings, In as StackHasActiveImportsError, It as validateContainerRepoName, J as refStateLookupFromResource, Jt as getLegacyStateBucketName, K as cfnRefValueFromPhysicalId, Kn as isThrottlingError, Kt as synthesisStatusMessage, L as clearOnUpdateRemoval, Ln as StackTerminationProtectionError, Lt as buildDenyExternalAccessPolicy, M as green, Mn as PartialFailureError, Mt as ensureAssetStorage, N as red, Nn as ProvisioningError, Nt as getBootstrapMarkerKey, O as formatResourceLine, On as LocalStartServiceError, Ot as rewriteTemplateAssetReferences, P as yellow, Pn as ResourceTimeoutError, Pt as parseBootstrapMarker, Q as assertRegionMatch, Qt as resolveSkipPrefix, R as ProviderRegistry, Rt as buildDockerImage, S as unsupportedFinalSnapshotError, Sn as CdkdError, St as AssetPublisher, T as MULTI_REGION_RECREATE_BLOCKED_TYPES, Tn as DeployCancelledError, Tt as buildAssetRedirectMap, U as disableInstanceApiTermination, Un as withErrorHandling, Ut as AssetManifestLoader, V as CloudControlProvider, Vt as runDockerForeground, W as isTerminationProtectionPropagationError, Wn as isMarkedNonRetryable, Wt as getDockerImageBySourceHash, X as normalizeAwsTagsToCfn, Xt as resolveAutoAssetStorage, Y as WAFv2WebACLProvider, Yt as resolveApp, Z as resolveExplicitPhysicalId, Zt as resolveCaptureObservedState, _ as buildFinalSnapshotIdentifier, _n as AwsClients, _t as TemplateParser, a as DeploymentEventsStore, an as CFN_TEMPLATE_URL_LIMIT, at as requireConfigObject, b as isFinalSnapshotError, bn as setAwsClients, bt as rebuildClientForBucketRegion, c as replayFailedOperations, cn as uploadCfnTemplate, ct as s3BucketDomainName, d as deleteSkipReason, dn as canonicalizeRegion, dt as s3BucketWebsiteUrl, en as resolveStateBucketWithDefaultAndSource, et as configBooleanRefusal, f as withResourceDeadline, fn as derivePartitionAndUrlSuffix, ft as applyRoleArnIfSet, g as PRE_DELETE_SNAPSHOT_TYPES, gn as resolveBucketRegion, gt as DagBuilder, h as ATOMIC_FINAL_SNAPSHOT_TYPES, ht as withRetry, i as DeploymentEventsReader, in as CFN_TEMPLATE_BODY_LIMIT, it as requireConfigArray, j as gray, jn as NestedStackChildDirectDestroyError, jt as BOOTSTRAP_MARKER_PREFIX, k as bold, kt as escapeRegExp, l as replayRollback, ln as expectedOwnerParam, lt as s3BucketDualStackDomainName, m as computeImplicitDeleteEdges, mn as processStackMessages, mt as describeTypeWithThrottleRetry, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as stateBucketExistenceConfirmed, nt as readConfigString, o as planFailedOps, on as MIGRATE_TMP_PREFIX, ot as requireConfigString, p as IMPLICIT_DELETE_DEPENDENCIES, pn as AssemblyReader, pt as DiffCalculator, q as getAccountInfo, qn as markNonRetryable, qt as getDefaultStateBucketName, r as DeployEngine, rn as warnDeprecatedNoPrefixCliFlag, rt as replayWarn, s as planRollback, sn as findLargeInlineResources, st as s3BucketArn, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as resolveUseCdkBootstrapAssets, tt as configStringRefusal, u as UNSPECIFIED_SKIP_REASON, un as PARTITION_TABLE, ut as s3BucketRegionalDomainName, v as ccRoutedFinalSnapshotError, vn as getAwsClients, vt as LockManager, w as extractDeploymentEventError, wt as WorkGraph, x as refusesFinalSnapshot, xt as shouldRetainResource, y as createPreDeleteFinalSnapshot, yn as resetAwsClients, yt as S3StateBackend, z as findActionableSilentDrops, zt as formatDockerLoginError } from "./deploy-engine-B8gQpv93.js";
2
+ import { $ as coerceCfnBoolean, $t as resolveStateBucketWithDefault, A as cyan, An as MissingCdkCliError, At as AssetModeResolver, B as findSilentDropProperties, Bt as getDockerCmd, C as makeCanonicalizePropertiesFn, Ct as stringifyValue, D as renderStatefulReason, Dn as LocalMigrateError, Dt as loadPublishableAssetManifest, E as isStatefulRecreateTargetSync, En as LocalInvokeBuildError$1, Et as createAssetRedirectResolver, F as IAMRoleProvider, Fn as ResourceUpdateNotSupportedError, Ft as validateAssetBucketName, G as IntrinsicFunctionResolver, Gn as isRetryableTransientError, Gt as Synthesizer, H as slowCcOperationTimeoutMs, Hn as normalizeAwsError, Ht as runDockerStreaming, I as collectInlinePolicyNamesManagedBySiblings, In as StackHasActiveImportsError, It as validateContainerRepoName, J as refStateLookupFromResource, Jt as getLegacyStateBucketName, K as cfnRefValueFromPhysicalId, Kn as isThrottlingError, Kt as synthesisStatusMessage, L as clearOnUpdateRemoval, Ln as StackTerminationProtectionError, Lt as buildDenyExternalAccessPolicy, M as green, Mn as PartialFailureError, Mt as ensureAssetStorage, N as red, Nn as ProvisioningError, Nt as getBootstrapMarkerKey, O as formatResourceLine, On as LocalStartServiceError, Ot as rewriteTemplateAssetReferences, P as yellow, Pn as ResourceTimeoutError, Pt as parseBootstrapMarker, Q as assertRegionMatch, Qt as resolveSkipPrefix, R as ProviderRegistry, Rt as buildDockerImage, S as unsupportedFinalSnapshotError, Sn as CdkdError, St as AssetPublisher, T as MULTI_REGION_RECREATE_BLOCKED_TYPES, Tn as DeployCancelledError, Tt as buildAssetRedirectMap, U as disableInstanceApiTermination, Un as withErrorHandling, Ut as AssetManifestLoader, V as CloudControlProvider, Vt as runDockerForeground, W as isTerminationProtectionPropagationError, Wn as isMarkedNonRetryable, Wt as getDockerImageBySourceHash, X as normalizeAwsTagsToCfn, Xt as resolveAutoAssetStorage, Y as WAFv2WebACLProvider, Yt as resolveApp, Z as resolveExplicitPhysicalId, Zt as resolveCaptureObservedState, _ as buildFinalSnapshotIdentifier, _n as AwsClients, _t as TemplateParser, a as DeploymentEventsStore, an as CFN_TEMPLATE_URL_LIMIT, at as requireConfigObject, b as isFinalSnapshotError, bn as setAwsClients, bt as rebuildClientForBucketRegion, c as replayFailedOperations, cn as uploadCfnTemplate, ct as s3BucketDomainName, d as deleteSkipReason, dn as canonicalizeRegion, dt as s3BucketWebsiteUrl, en as resolveStateBucketWithDefaultAndSource, et as configBooleanRefusal, f as withResourceDeadline, fn as derivePartitionAndUrlSuffix, ft as applyRoleArnIfSet, g as PRE_DELETE_SNAPSHOT_TYPES, gn as resolveBucketRegion, gt as DagBuilder, h as ATOMIC_FINAL_SNAPSHOT_TYPES, ht as withRetry, i as DeploymentEventsReader, in as CFN_TEMPLATE_BODY_LIMIT, it as requireConfigArray, j as gray, jn as NestedStackChildDirectDestroyError, jt as BOOTSTRAP_MARKER_PREFIX, k as bold, kt as escapeRegExp, l as replayRollback, ln as expectedOwnerParam, lt as s3BucketDualStackDomainName, m as computeImplicitDeleteEdges, mn as processStackMessages, mt as describeTypeWithThrottleRetry, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as stateBucketExistenceConfirmed, nt as readConfigString, o as planFailedOps, on as MIGRATE_TMP_PREFIX, ot as requireConfigString, p as IMPLICIT_DELETE_DEPENDENCIES, pn as AssemblyReader, pt as DiffCalculator, q as getAccountInfo, qn as markNonRetryable, qt as getDefaultStateBucketName, r as DeployEngine, rn as warnDeprecatedNoPrefixCliFlag, rt as replayWarn, s as planRollback, sn as findLargeInlineResources, st as s3BucketArn, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as resolveUseCdkBootstrapAssets, tt as configStringRefusal, u as UNSPECIFIED_SKIP_REASON, un as PARTITION_TABLE, ut as s3BucketRegionalDomainName, v as ccRoutedFinalSnapshotError, vn as getAwsClients, vt as LockManager, w as extractDeploymentEventError, wt as WorkGraph, x as refusesFinalSnapshot, xt as shouldRetainResource, y as createPreDeleteFinalSnapshot, yn as resetAwsClients, yt as S3StateBackend, z as findActionableSilentDrops, zt as formatDockerLoginError } from "./deploy-engine-C1wXn1V7.js";
3
3
  import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, h as withStackName, i as runStackBuffered, m as withSkipPrefix, n as getLogger, o as PATTERN_B_NAME_OPTIONS, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-zRrlbaQt.js";
4
- import { t as ASGProvider } from "./asg-provider-CgnPBnOS.js";
4
+ import { t as ASGProvider } from "./asg-provider-C3dMUcV4.js";
5
5
  import { AsyncLocalStorage } from "node:async_hooks";
6
6
  import { createHash, randomBytes, randomUUID } from "node:crypto";
7
7
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -2991,6 +2991,28 @@ var IAMPolicyProvider = class {
2991
2991
  //#endregion
2992
2992
  //#region src/provisioning/providers/iam-managed-policy-provider.ts
2993
2993
  /**
2994
+ * Matches an AWS-managed IAM policy ARN in ANY AWS partition (issue #1815).
2995
+ *
2996
+ * AWS-managed policies are the ones whose ACCOUNT segment is the literal
2997
+ * `aws` — `arn:<partition>:iam::aws:policy/<path><name>` — as opposed to a
2998
+ * customer-managed policy, which carries a 12-digit account id. They exist
2999
+ * under every partition (`arn:aws-us-gov:iam::aws:policy/AdministratorAccess`
3000
+ * is a real, attachable ARN in GovCloud), so pinning the PARTITION segment to
3001
+ * the commercial `aws` recognised only a third of them.
3002
+ *
3003
+ * The partition is read OFF THE ARN rather than derived from a region through
3004
+ * `derivePartitionAndUrlSuffix` (`src/utils/aws-partition.ts`): that helper
3005
+ * answers "given a region, which partition am I in", which is the right
3006
+ * question when BUILDING an ARN (the seven sites PR #1834 fixed) and the wrong
3007
+ * one when CLASSIFYING an ARN the caller already holds. The loose
3008
+ * `aws[a-z0-9-]*` partition segment matches `IAM_ROLE_ARN_RE` in
3009
+ * `src/utils/role-arn.ts`; a closed partition list is precisely what goes
3010
+ * stale when AWS adds a partition, and here staleness fails DANGEROUS (see the
3011
+ * refusal's own comment — an unrecognised AWS-managed policy gets adopted, and
3012
+ * destroy then detaches it from every principal in the account).
3013
+ */
3014
+ const AWS_MANAGED_POLICY_ARN_RE = /^arn:aws[a-z0-9-]*:iam::aws:/;
3015
+ /**
2994
3016
  * AWS IAM Managed Policy Provider
2995
3017
  *
2996
3018
  * Implements resource provisioning for AWS::IAM::ManagedPolicy using the IAM SDK.
@@ -3002,7 +3024,7 @@ var IAMPolicyProvider = class {
3002
3024
  * - Detach-before-delete cleanup (a ManagedPolicy with attached principals
3003
3025
  * or with non-default versions cannot be deleted directly)
3004
3026
  *
3005
- * Physical id is the policy ARN (`arn:aws:iam::<account>:policy/<path><name>`)
3027
+ * Physical id is the policy ARN (`arn:<partition>:iam::<account>:policy/<path><name>`)
3006
3028
  * since path is part of the identity — two policies with the same name in
3007
3029
  * different paths are distinct.
3008
3030
  */
@@ -3239,7 +3261,7 @@ var IAMManagedPolicyProvider = class {
3239
3261
  const explicit = resolveExplicitPhysicalId(input, "ManagedPolicyName");
3240
3262
  if (explicit) {
3241
3263
  if (explicit.startsWith("arn:")) {
3242
- if (explicit.startsWith("arn:aws:iam::aws:")) throw new Error(`Refusing to import AWS-managed policy ${explicit}: cdkd only adopts customer-managed policies. If you need to attach an AWS-managed policy to a role / user / group, reference it via ManagedPolicyArns on the principal instead.`);
3264
+ if (AWS_MANAGED_POLICY_ARN_RE.test(explicit)) throw new Error(`Refusing to import AWS-managed policy ${explicit}: cdkd only adopts customer-managed policies. If you need to attach an AWS-managed policy to a role / user / group, reference it via ManagedPolicyArns on the principal instead.`);
3243
3265
  try {
3244
3266
  await this.iamClient.send(new GetPolicyCommand({ PolicyArn: explicit }));
3245
3267
  return {
@@ -3468,7 +3490,7 @@ var IAMManagedPolicyProvider = class {
3468
3490
  }
3469
3491
  };
3470
3492
  /**
3471
- * Recover the policy name from `arn:aws:iam::<account>:policy/<path><name>`.
3493
+ * Recover the policy name from `arn:<partition>:iam::<account>:policy/<path><name>`.
3472
3494
  * Used to decide whether `ManagedPolicyName` was mutated relative to the
3473
3495
  * physical id we recorded — name + path are immutable on AWS, so any
3474
3496
  * difference is a replacement signal.
@@ -12354,6 +12376,47 @@ var LambdaUrlProvider = class {
12354
12376
 
12355
12377
  //#endregion
12356
12378
  //#region src/provisioning/providers/lambda-eventsource-provider.ts
12379
+ /**
12380
+ * Captures the SERVICE segment of an ARN in ANY AWS partition (issue #1815).
12381
+ *
12382
+ * `arn:<partition>:<service>:<region>:<account>:<rest>` — group 1 is the
12383
+ * service. The partition segment is matched loosely as `aws[a-z0-9-]*`, the
12384
+ * same shape `IAM_ROLE_ARN_RE` (`src/utils/role-arn.ts`) uses, rather than
12385
+ * enumerated: this classifier previously hand-listed `aws` and `aws-cn` per
12386
+ * service and so returned `'unknown'` for every OTHER partition — GovCloud,
12387
+ * all four iso partitions and `aws-eusc` — which silently disabled the
12388
+ * type-discriminator gating below (see the `KINDS_WITH_*` sets) and let
12389
+ * `cdkd drift --revert` push `FunctionResponseTypes` / `SourceAccessConfigurations`
12390
+ * placeholders AWS rejects. A closed partition list is exactly what goes stale
12391
+ * when AWS adds a partition; reading the partition off the ARN cannot.
12392
+ *
12393
+ * Note the partition is not derived from a region via
12394
+ * `derivePartitionAndUrlSuffix` (`src/utils/aws-partition.ts`) because this
12395
+ * CLASSIFIES an ARN already in hand — the partition is in the input, and no
12396
+ * region reaches this function.
12397
+ */
12398
+ const ARN_SERVICE_RE = /^arn:aws[a-z0-9-]*:([^:]+):/;
12399
+ /**
12400
+ * ARN service segment -> {@link EventSourceKind}. Replaces the per-partition
12401
+ * `startsWith` chain; every entry is partition-independent by construction.
12402
+ */
12403
+ const ARN_SERVICE_TO_EVENT_SOURCE_KIND = {
12404
+ sqs: "sqs",
12405
+ kinesis: "kinesis",
12406
+ dynamodb: "dynamodb",
12407
+ kafka: "kafka",
12408
+ mq: "mq",
12409
+ rds: "documentdb"
12410
+ };
12411
+ /**
12412
+ * @internal EXPORTED for tests only (issue #1815). Every production consumer is a
12413
+ * `Set.has(kind)`, so the `Object.hasOwn` guard below is UNOBSERVABLE through
12414
+ * behavior — a prototype member and `'unknown'` both miss every set. That was
12415
+ * measured, not assumed: a behavior-level test for it passed with the guard
12416
+ * reverted. Rather than ship an unverifiable guard or a test that only looks
12417
+ * like one, the classifier's RETURN VALUE is asserted directly. Do not read the
12418
+ * export as an invitation to call this from outside the provider.
12419
+ */
12357
12420
  function classifyEventSource(resp) {
12358
12421
  if (resp.SelfManagedEventSource !== void 0) return "kafka";
12359
12422
  if (resp.SelfManagedKafkaEventSourceConfig !== void 0) return "kafka";
@@ -12361,13 +12424,9 @@ function classifyEventSource(resp) {
12361
12424
  if (resp.DocumentDBEventSourceConfig !== void 0) return "documentdb";
12362
12425
  const arn = resp.EventSourceArn;
12363
12426
  if (!arn) return "unknown";
12364
- if (arn.startsWith("arn:aws:sqs:") || arn.startsWith("arn:aws-cn:sqs:")) return "sqs";
12365
- if (arn.startsWith("arn:aws:kinesis:") || arn.startsWith("arn:aws-cn:kinesis:")) return "kinesis";
12366
- if (arn.startsWith("arn:aws:dynamodb:") || arn.startsWith("arn:aws-cn:dynamodb:")) return "dynamodb";
12367
- if (arn.startsWith("arn:aws:kafka:") || arn.startsWith("arn:aws-cn:kafka:")) return "kafka";
12368
- if (arn.startsWith("arn:aws:mq:") || arn.startsWith("arn:aws-cn:mq:")) return "mq";
12369
- if (arn.startsWith("arn:aws:rds:") || arn.startsWith("arn:aws-cn:rds:")) return "documentdb";
12370
- return "unknown";
12427
+ const service = ARN_SERVICE_RE.exec(arn)?.[1];
12428
+ if (!service) return "unknown";
12429
+ return Object.hasOwn(ARN_SERVICE_TO_EVENT_SOURCE_KIND, service) ? ARN_SERVICE_TO_EVENT_SOURCE_KIND[service] : "unknown";
12371
12430
  }
12372
12431
  /**
12373
12432
  * Classify an event source mapping from its CFn property bag (as opposed to
@@ -40209,7 +40268,7 @@ var AppSyncProvider = class {
40209
40268
  const accountInfo = await getAccountInfo(regionOverride ?? this.providerRegion ?? await this.getClient().config.region());
40210
40269
  if (accountInfo.fabricated) throw new Error(`cannot determine the AWS account (STS is unreachable, and the resolved account id is a placeholder), so an ARN for ${suffix} would be fabricated`);
40211
40270
  const { partition } = derivePartitionAndUrlSuffix(accountInfo.region);
40212
- return `arn:${partition}:appsync:${accountInfo.region}:${accountInfo.accountId}:${suffix}`;
40271
+ return `arn:${partition}:appsync:${canonicalizeRegion(accountInfo.region)}:${accountInfo.accountId}:${suffix}`;
40213
40272
  }
40214
40273
  /**
40215
40274
  * {@link buildAppSyncArn} for the POST-CREATE sites, where throwing is not an
@@ -55372,7 +55431,10 @@ var NestedStackProvider = class {
55372
55431
  ...ctx.destroyOptions?.resourceWarnAfterByType && { resourceWarnAfterByType: ctx.destroyOptions.resourceWarnAfterByType },
55373
55432
  ...ctx.destroyOptions?.resourceTimeoutByType && { resourceTimeoutByType: ctx.destroyOptions.resourceTimeoutByType }
55374
55433
  }));
55375
- if (childResult.errorCount > 0) throw new Error(nestedStackChildFailureMessage(childStackName, childResult.errorCount, childResult.skippedCount, childResult.interrupted));
55434
+ if (childResult.errorCount > 0) {
55435
+ const failure = new Error(nestedStackChildFailureMessage(childStackName, childResult.errorCount, childResult.skippedCount, childResult.interrupted));
55436
+ throw childResult.interrupted ? markNonRetryable(failure) : failure;
55437
+ }
55376
55438
  if (childResult.skippedCount > 0 || childResult.interrupted) {
55377
55439
  const causes = [];
55378
55440
  if (childResult.skippedCount > 0) causes.push(`skipped ${childResult.skippedCount} resource(s)`);
@@ -55410,7 +55472,7 @@ var NestedStackProvider = class {
55410
55472
  }
55411
55473
  requireContext() {
55412
55474
  const ctx = getCurrentNestedStackContext();
55413
- if (!ctx) throw new Error("NestedStackProvider invoked outside withNestedStackContext() scope. The deploy / destroy CLI entry point must wrap its DeployEngine.deploy / runDestroyForStack call in withNestedStackContext(ctx, () => ...).");
55475
+ if (!ctx) throw markNonRetryable(/* @__PURE__ */ new Error("NestedStackProvider invoked outside withNestedStackContext() scope. The deploy / destroy CLI entry point must wrap its DeployEngine.deploy / runDestroyForStack call in withNestedStackContext(ctx, () => ...)."));
55414
55476
  return ctx;
55415
55477
  }
55416
55478
  requireDeployContext(ctx, op) {
@@ -78664,7 +78726,7 @@ function createMigrateCommand() {
78664
78726
  */
78665
78727
  function buildProgram() {
78666
78728
  const program = new Command();
78667
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.283.14");
78729
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.283.16");
78668
78730
  program.hook("preAction", (_thisCommand, actionCommand) => {
78669
78731
  const { profile } = actionCommand.optsWithGlobals();
78670
78732
  if (profile !== void 0) process.env["AWS_PROFILE"] = profile;