cdk-local 0.163.5 → 0.164.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { a as displayIdent, c as getEmbedConfig, i as STACK_REF_MAX_CODE_POINTS, o as displayStackName, s as displayToolOutput, t as getLogger, u as setEmbedConfig } from "./logger-Co5XVwco.js";
2
- import { C as effectiveLoopbackPorts, F as resolveHostDefaultCredentials, G as awsEndpointOverrideClientConfig, K as buildProxyClientConfig, Q as proxyAwareFetch, W as awsEmulatorRoutedServices, Y as isAwsServiceRoutedToEmulator, _t as isLoopbackHostname, b as awsEmulatorEnvName, bt as formatHostForAuthority, d as workloadStsClientConfig, gt as defineOwnKey, ht as resolveEnvVars$1, l as warnWorkloadCredentialsStripped, mt as readEnvVarsFileText, n as accountLookupStsClientConfig, pt as applyEnvOverrideMap, r as applyWorkloadEnvCredentials, rt as createMixedModeStateProvider, u as workloadClientConfig, v as activateWorkloadAwsWiring, vt as isWildcardHostname, w as getActiveWorkloadAwsWiring, xt as hostFromAuthority, y as applyWorkloadAwsWiringToEnv, yt as formatAuthority } from "./workload-identity-BOEZuEDO.js";
2
+ import { $ as isAwsServiceRoutedToEmulator, C as effectiveLoopbackPorts, Ct as resolveEnvVars$1, Dt as formatAuthority, Et as isWildcardHostname, F as resolveHostDefaultCredentials, K as awsEmulatorRealServices, Ot as formatHostForAuthority, R as takeAwsEmulatorStateSourceHint, St as readEnvVarsFileText, Tt as isLoopbackHostname, X as deployArtifactsReadEmulator, Y as deployArtifactClientConfig, b as awsEmulatorEnvName, ct as createMixedModeStateProvider, d as workloadStsClientConfig, kt as hostFromAuthority, l as warnWorkloadCredentialsStripped, n as accountLookupStsClientConfig, nt as proxyAwareFetch, q as awsEndpointOverrideClientConfig, r as applyWorkloadEnvCredentials, u as workloadClientConfig, v as activateWorkloadAwsWiring, w as getActiveWorkloadAwsWiring, wt as defineOwnKey, xt as applyEnvOverrideMap, y as applyWorkloadAwsWiringToEnv, z as workloadGetsEmulatorKeysOnly } from "./workload-identity-CCXbr0KK.js";
3
3
  import { c as clampErrorName, d as flattenToOneLine, f as isAwsServiceException, l as describeAwsFailureForWarn, m as stringifyThrown, o as renderAssemblyPathEscape, p as sanitizeServiceExceptionMessage, r as displayUntrustedValue, s as resolveAssemblyPath, t as absoluteAssemblyPathEscape, u as describeCredentialLoadFailure } from "./assembly-path-R96uhMm1.js";
4
- import { $ as refusedRoleArnMessage, A as buildDockerImage, B as tryResolveImageFnJoin, D as isImageInLocalCache, E as warnIfEmulatedPlatform, F as parseEcrRegistryHost, G as RouteDiscoveryError, H as InteractiveTtyRequiredError, I as derivePartitionAndUrlSuffix, J as AssumeRoleFailure, K as TargetSelectionCancelledError, L as derivePseudoParametersFromRegion, M as createShutdownSignalHandler, N as signalExitCode, O as parseEcrUri, P as describeExitWithoutArgv, Q as isIamRoleArn, R as formatStateRemedy, T as buildContainerImage, U as LocalInvokeBuildError, V as CdkLocalError, W as LocalStartServiceError, X as assumeRoleCredentials, Y as applyRoleArnIfSet, Z as describeRejectedRoleArn, a as describeRefusedSensitiveEnvKeys, c as execEnvForSecrets, d as rememberForwardedPorts, et as buildStsClientConfig, f as removeContainer, h as streamLogs, i as attachLoopbackForwarder, j as resolveAssetSourcePath, k as pullEcrImage, l as pickFreePort, m as startNamespaceOwnerForwarder, n as SENSITIVE_ENV_KEYS, p as runDetached, q as withErrorHandling, r as appendEnvFlags, s as ensureDockerAvailable, t as DockerRunnerError, tt as resolveProfileCredentials, u as pullImage, w as architectureToPlatform, z as substituteImagePlaceholders } from "./docker-runner-6cuoe4H9.js";
4
+ import { $ as isIamRoleArn, A as buildDockerImage, B as substituteImagePlaceholders, D as isImageInLocalCache, E as warnIfEmulatedPlatform, F as parseEcrRegistryHost, G as LocalStartServiceError, H as CdkLocalError, I as contextForContainer, J as withErrorHandling, K as RouteDiscoveryError, L as derivePartitionAndUrlSuffix, M as createShutdownSignalHandler, N as signalExitCode, O as parseEcrUri, P as describeExitWithoutArgv, Q as describeRejectedRoleArn, R as derivePseudoParametersFromRegion, T as buildContainerImage, U as InteractiveTtyRequiredError, V as tryResolveImageFnJoin, W as LocalInvokeBuildError, X as applyRoleArnIfSet, Y as AssumeRoleFailure, Z as assumeRoleCredentials, a as describeRefusedSensitiveEnvKeys, c as execEnvForSecrets, d as rememberForwardedPorts, et as refusedRoleArnMessage, f as removeContainer, h as streamLogs, i as attachLoopbackForwarder, j as resolveAssetSourcePath, k as pullEcrImage, l as pickFreePort, m as startNamespaceOwnerForwarder, n as SENSITIVE_ENV_KEYS, nt as resolveProfileCredentials, p as runDetached, q as TargetSelectionCancelledError, r as appendEnvFlags, s as ensureDockerAvailable, t as DockerRunnerError, tt as buildStsClientConfig, u as pullImage, w as architectureToPlatform, z as formatStateRemedy } from "./docker-runner-D6K15jJP.js";
5
5
  import { a as isDockerClientEnvKey, c as runDockerStreaming, i as getDockerCmd, n as finchSecretArgvRefusal, o as isMalformedEnvKey, u as warnFinchArgvExposure } from "./docker-cmd-Cjg3jGYF.js";
6
6
  import { chmodSync, cpSync, createWriteStream, existsSync, lstatSync, mkdirSync, mkdtempSync, promises, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
7
7
  import { Command, InvalidArgumentError, Option } from "commander";
@@ -3377,19 +3377,23 @@ function createLocalStateProvider(options, stackName, synthRegion, extraStatePro
3377
3377
  ...options.profile !== void 0 && { profile: options.profile },
3378
3378
  ...behavior.workload !== void 0 && { workload: behavior.workload }
3379
3379
  });
3380
- const mixed = behavior.realAwsOnly ? void 0 : getActiveWorkloadAwsWiring()?.mixed;
3380
+ const mixed = getActiveWorkloadAwsWiring()?.mixed;
3381
3381
  if (!mixed) return real;
3382
- const emulatedServices = awsEmulatorRoutedServices(behavior.workload) ?? mixed.services;
3383
- if (emulatedServices.length === 0) return real;
3382
+ const emulator = new CfnLocalStateProvider({
3383
+ cfnStackName,
3384
+ region,
3385
+ endpointOverride: mixed.emulatorClientOverride,
3386
+ label: "--from-cfn-stack (AWS Emulator)"
3387
+ });
3388
+ const realServices = awsEmulatorRealServices(behavior.workload) ?? [];
3389
+ if (realServices.length === 0) {
3390
+ real.dispose();
3391
+ return emulator;
3392
+ }
3384
3393
  return createMixedModeStateProvider({
3394
+ emulator,
3385
3395
  real,
3386
- emulator: new CfnLocalStateProvider({
3387
- cfnStackName,
3388
- region,
3389
- endpointOverride: mixed.emulatorClientOverride,
3390
- label: "--from-cfn-stack (AWS Emulator)"
3391
- }),
3392
- emulatedServices
3396
+ realServices
3393
3397
  });
3394
3398
  }
3395
3399
  if (activeExtras.length === 1) {
@@ -3397,6 +3401,27 @@ function createLocalStateProvider(options, stackName, synthRegion, extraStatePro
3397
3401
  return factory(options, behavior);
3398
3402
  }
3399
3403
  }
3404
+ const UNNAMED_WORKLOAD = Object.freeze({});
3405
+ function groupWorkloadsRoutedApart(items, workloadOf) {
3406
+ const base = awsEmulatorRealServices(UNNAMED_WORKLOAD);
3407
+ if (base === void 0) return [];
3408
+ const baseKey = base.join(",");
3409
+ const groups = /* @__PURE__ */ new Map();
3410
+ for (const item of items) {
3411
+ const workload = workloadOf(item);
3412
+ const realServices = awsEmulatorRealServices(workload) ?? base;
3413
+ const key = realServices.join(",");
3414
+ if (key === baseKey) continue;
3415
+ const group = groups.get(key);
3416
+ if (group) group.items.push(item);
3417
+ else groups.set(key, {
3418
+ realServices,
3419
+ workload,
3420
+ items: [item]
3421
+ });
3422
+ }
3423
+ return [...groups.values()];
3424
+ }
3400
3425
  function toFlagName(field) {
3401
3426
  return "--" + field.replace(/([A-Z])/g, "-$1").toLowerCase();
3402
3427
  }
@@ -4231,6 +4256,10 @@ function extractTaskDefinitionProperties(stack, logicalId, resource, context) {
4231
4256
  if (!Array.isArray(rawContainers) || rawContainers.length === 0) throw new EcsTaskResolutionError(`Task definition ${displayIdent(logicalId)} has no ContainerDefinitions.`);
4232
4257
  const containers = rawContainers.map((c, idx) => parseContainerDefinition(c, idx, logicalId, resources, stack, context));
4233
4258
  for (const ctr of containers) for (const w of ctr.warnings) warnings.push(`Container ${displayIdent(ctr.name)}: ${w}`);
4259
+ if (containers.some((c) => c.droppedEnvWithoutState)) {
4260
+ const hint = takeAwsEmulatorStateSourceHint();
4261
+ if (hint) warnings.push(hint);
4262
+ }
4234
4263
  const rawVolumes = props["Volumes"];
4235
4264
  const volumes = Array.isArray(rawVolumes) ? rawVolumes.map((v, idx) => parseVolume(v, idx, logicalId, subContext)) : [];
4236
4265
  const containerNames = new Set(containers.map((c) => c.name));
@@ -4272,10 +4301,11 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
4272
4301
  const command = pickStringArray$1(c["Command"]);
4273
4302
  const entryPoint = pickStringArray$1(c["EntryPoint"]);
4274
4303
  const workingDirectory = pickString(c["WorkingDirectory"]);
4275
- const subContext = buildSubstitutionContextFromImageContext(context);
4304
+ const subContext = buildSubstitutionContextFromImageContext(contextForContainer(context, name));
4276
4305
  const environment = {};
4277
4306
  const sensitiveEnvKeys = [];
4278
4307
  const droppedEnvKeys = [];
4308
+ let droppedEnvWithoutState = false;
4279
4309
  if (Array.isArray(c["Environment"])) for (const entry of c["Environment"]) {
4280
4310
  if (!entry || typeof entry !== "object") continue;
4281
4311
  const e = entry;
@@ -4297,10 +4327,13 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
4297
4327
  key,
4298
4328
  reason: sub.reason
4299
4329
  });
4300
- } else droppedEnvKeys.push({
4301
- key,
4302
- reason: "intrinsic-valued; pass --from-state to substitute against deployed state"
4303
- });
4330
+ } else {
4331
+ droppedEnvWithoutState = true;
4332
+ droppedEnvKeys.push({
4333
+ key,
4334
+ reason: "intrinsic-valued; pass --from-state to substitute against deployed state"
4335
+ });
4336
+ }
4304
4337
  }
4305
4338
  const secrets = [];
4306
4339
  const droppedSecretKeys = [];
@@ -4425,6 +4458,7 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
4425
4458
  ulimits,
4426
4459
  warnings
4427
4460
  };
4461
+ if (droppedEnvWithoutState) out.droppedEnvWithoutState = true;
4428
4462
  if (droppedSecretKeys.length > 0) out.droppedSecretNames = droppedSecretKeys.map((d) => d.key);
4429
4463
  if (command !== void 0) out.command = command;
4430
4464
  if (entryPoint !== void 0) out.entryPoint = entryPoint;
@@ -4687,13 +4721,34 @@ async function applyCrossStackValuesToTask(task, crossStackResolver, opts) {
4687
4721
  crossStackResolver,
4688
4722
  resolveDynamicReferences: crossStackDynamicReferenceHook(dynamicRefs, `Task ${task.taskDefinitionLogicalId} cross-stack env value`)
4689
4723
  };
4724
+ const containerState = (name) => {
4725
+ const own = imageContext?.containerStates;
4726
+ if (!own || !Object.hasOwn(own, name)) return void 0;
4727
+ const state = own[name];
4728
+ return {
4729
+ resources: state.stateResources ?? {},
4730
+ parameters: state.stateParameters,
4731
+ sensitiveParameters: state.stateSensitiveParameters?.length ? new Set(state.stateSensitiveParameters) : void 0
4732
+ };
4733
+ };
4690
4734
  try {
4691
- await applyCrossStackResolverToTask(task, subContext);
4735
+ await applyCrossStackResolverToTask(task, subContext, containerState);
4692
4736
  } finally {
4693
4737
  dynamicRefs.dispose();
4694
4738
  }
4695
4739
  }
4696
- async function applyCrossStackResolverToTask(task, context) {
4740
+ function withContainerState(context, state) {
4741
+ const out = {
4742
+ ...context,
4743
+ resources: state.resources
4744
+ };
4745
+ if (state.parameters) out.parameters = state.parameters;
4746
+ else delete out.parameters;
4747
+ if (state.sensitiveParameters) out.sensitiveParameters = state.sensitiveParameters;
4748
+ else delete out.sensitiveParameters;
4749
+ return out;
4750
+ }
4751
+ async function applyCrossStackResolverToTask(task, context, containerState) {
4697
4752
  if (!context.crossStackResolver) return;
4698
4753
  const { resolveDynamicReferences: _envOnly, ...secretContext } = context;
4699
4754
  const rawContainers = (task.resource.Properties ?? {})["ContainerDefinitions"];
@@ -4705,10 +4760,12 @@ async function applyCrossStackResolverToTask(task, context) {
4705
4760
  const c = raw;
4706
4761
  const containerName = pickString(c["Name"]) ?? container.name;
4707
4762
  const resolveRefs = context.resolveDynamicReferences;
4763
+ const ownState = containerState?.(container.name);
4764
+ const baseContext = ownState ? withContainerState(context, ownState) : context;
4708
4765
  const containerContext = resolveRefs ? {
4709
- ...context,
4766
+ ...baseContext,
4710
4767
  resolveDynamicReferences: (v, region) => resolveRefs(v, region, { containerName: container.name })
4711
- } : context;
4768
+ } : baseContext;
4712
4769
  const resolvedEnvKeys = /* @__PURE__ */ new Set();
4713
4770
  const resolvedSecretNames = /* @__PURE__ */ new Set();
4714
4771
  if (Array.isArray(c["Environment"])) for (const entry of c["Environment"]) {
@@ -4736,7 +4793,7 @@ async function applyCrossStackResolverToTask(task, context) {
4736
4793
  if (typeof valueFromRaw === "string" && valueFromRaw.length > 0) continue;
4737
4794
  if (container.secrets.some((s) => s.name === sName)) continue;
4738
4795
  if (!isCrossStackIntrinsic(valueFromRaw)) continue;
4739
- const sub = await substituteAgainstStateAsync(valueFromRaw, secretContext);
4796
+ const sub = await substituteAgainstStateAsync(valueFromRaw, ownState ? withContainerState(secretContext, ownState) : secretContext);
4740
4797
  if (sub.kind === "literal" && typeof sub.value === "string" && sub.value.length > 0) {
4741
4798
  container.secrets.push({
4742
4799
  name: sName,
@@ -10280,9 +10337,9 @@ async function assumeRoleForLayer(roleArn, region, options) {
10280
10337
  async function defaultLambdaClientFactory() {
10281
10338
  const { LambdaClient } = await import("@aws-sdk/client-lambda");
10282
10339
  return (region, credentials) => new LambdaClient({
10283
- ...workloadClientConfig(),
10340
+ ...deployArtifactsReadEmulator() ? deployArtifactClientConfig() : workloadClientConfig(),
10284
10341
  region,
10285
- ...credentials && { credentials: {
10342
+ ...credentials && !deployArtifactsReadEmulator() && { credentials: {
10286
10343
  accessKeyId: credentials.accessKeyId,
10287
10344
  secretAccessKey: credentials.secretAccessKey,
10288
10345
  ...credentials.sessionToken !== void 0 && { sessionToken: credentials.sessionToken }
@@ -10823,7 +10880,7 @@ async function localStartApiCommand(targets, options, extraStateProviders) {
10823
10880
  for (const [k, v] of direct) corsConfigByApiId.set(k, v);
10824
10881
  }
10825
10882
  assertServedLogicalIdsUnambiguous(servedStacks, servedRoutes, routesWithAuth, webSocketApis);
10826
- const stateByStack = isCfnFlagPresent(options) || hasExtraStateProviderActive(options, extraStateProviders) ? await loadStateForRoutedStacks(servedStacks, servedRoutes, routesWithAuth, options, extraStateProviders) : /* @__PURE__ */ new Map();
10883
+ const stateByStack = isCfnFlagPresent(options) || hasExtraStateProviderActive(options, extraStateProviders) ? await loadStateForRoutedStacks(servedStacks, servedRoutes, routesWithAuth, options, extraStateProviders, webSocketApis) : /* @__PURE__ */ new Map();
10827
10884
  const profileCredentials = options.profile ? await resolveProfileCredentials(options.profile) : void 0;
10828
10885
  if (options.profile && profileCredentials && !profileCredsFile) profileCredsFile = await writeProfileCredentialsFile(options.profile, profileCredentials);
10829
10886
  const lambdaIds = uniqueLambdaIds(servedRoutes, routesWithAuth, webSocketApis);
@@ -11396,7 +11453,8 @@ async function buildContainerSpec(args) {
11396
11453
  platform = architectureToPlatform(lambda.architecture);
11397
11454
  }
11398
11455
  let templateEnv = getTemplateEnv$1(lambda.resource);
11399
- const stateBundle = stateByStack.get(lambda.stack.stackName);
11456
+ const stackBundle = stateByStack.get(lambda.stack.stackName);
11457
+ const stateBundle = stackBundle?.byLambda?.get(logicalId) ?? (stackBundle?.withoutSharedState ? void 0 : stackBundle);
11400
11458
  let stateAudit;
11401
11459
  const plaintextKeys = /* @__PURE__ */ new Set();
11402
11460
  const deployedSecretKeys = [];
@@ -11436,6 +11494,10 @@ async function buildContainerSpec(args) {
11436
11494
  const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? logicalId;
11437
11495
  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 a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to recover deployed values.`);
11438
11496
  }
11497
+ if (envResult.unresolved.length > 0 && !stateBundle) {
11498
+ const hint = takeAwsEmulatorStateSourceHint();
11499
+ if (hint) getLogger().warn(hint);
11500
+ }
11439
11501
  for (const key of stateAudit?.sensitiveKeys ?? []) plaintextKeys.add(key);
11440
11502
  for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
11441
11503
  const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
@@ -11461,7 +11523,7 @@ async function buildContainerSpec(args) {
11461
11523
  logicalId,
11462
11524
  assumeRole,
11463
11525
  lambdaResource: lambda.resource,
11464
- stateBundle
11526
+ stateBundle: stackBundle?.withoutSharedState ? void 0 : stackBundle
11465
11527
  });
11466
11528
  if (roleArn) {
11467
11529
  const creds = await assumeLambdaExecutionRole(roleArn, stsRegion, profile);
@@ -11893,10 +11955,9 @@ function envHasIntrinsicValue$1(templateEnv) {
11893
11955
  }
11894
11956
  return false;
11895
11957
  }
11896
- async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options, extraStateProviders) {
11897
- const logger = getLogger();
11958
+ async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options, extraStateProviders, webSocketApis = []) {
11898
11959
  const out = /* @__PURE__ */ new Map();
11899
- const lambdaIds = uniqueLambdaIds(routes, routesWithAuth);
11960
+ const lambdaIds = uniqueLambdaIds(routes, routesWithAuth, webSocketApis);
11900
11961
  const reachableStackNames = /* @__PURE__ */ new Set();
11901
11962
  for (const logicalId of lambdaIds) for (const stack of stacks) {
11902
11963
  const resource = stack.template.Resources?.[logicalId];
@@ -11918,51 +11979,88 @@ async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options,
11918
11979
  for (const stackName of reachableStackNames) {
11919
11980
  const stack = stacks.find((s) => s.stackName === stackName);
11920
11981
  if (!stack) continue;
11921
- const provider = createLocalStateProvider(options, stack.stackName, await resolveCfnFallbackRegion(options, stack.region), extraStateProviders);
11922
- if (!provider) continue;
11923
- try {
11924
- const loaded = await provider.load(stack.stackName, stack.region);
11925
- if (!loaded) continue;
11926
- const bundle = {
11927
- state: {
11928
- version: 1,
11929
- stackName: stack.stackName,
11930
- resources: loaded.resources,
11931
- outputs: loaded.outputs,
11932
- lastModified: 0
11933
- },
11934
- region: loaded.region
11935
- };
11936
- if (stackHasIntrinsicEnv(stackName)) {
11937
- const pseudo = await resolvePseudoParametersForStartApi(loaded.region, options);
11938
- if (pseudo) bundle.pseudoParameters = pseudo;
11939
- }
11940
- if (provider.resolveDeployedFunctionEnv) {
11941
- const deployedEnvByLambda = /* @__PURE__ */ new Map();
11942
- for (const logicalId of lambdaIds) {
11943
- const resource = stack.template.Resources?.[logicalId];
11944
- if (!resource || resource.Type !== "AWS::Lambda::Function") continue;
11945
- if (!envHasIntrinsicValue$1(getTemplateEnv$1(resource))) continue;
11946
- const physicalId = loaded.resources[logicalId]?.physicalId;
11947
- if (!physicalId) continue;
11948
- const deployedEnv = await provider.resolveDeployedFunctionEnv(physicalId);
11949
- if (deployedEnv) deployedEnvByLambda.set(logicalId, deployedEnv);
11950
- }
11951
- if (deployedEnvByLambda.size > 0) bundle.deployedEnvByLambda = deployedEnvByLambda;
11952
- }
11953
- if (stackHasIntrinsicEnv(stackName) && provider.resolveTemplateSsmParameters) {
11954
- const ssmParameters = await provider.resolveTemplateSsmParameters(stack.template);
11955
- if (Object.keys(ssmParameters.values).length > 0) bundle.ssmParameters = ssmParameters.values;
11956
- if (ssmParameters.secureStringLogicalIds.length > 0) bundle.ssmSecureStringLogicalIds = ssmParameters.secureStringLogicalIds;
11957
- }
11958
- out.set(stackName, bundle);
11959
- logger.debug(`${provider.label}: loaded state for ${displayStackName(stackName)} (${loaded.region})`);
11960
- } finally {
11961
- provider.dispose();
11982
+ const region = await resolveCfnFallbackRegion(options, stack.region);
11983
+ const providerFor = (workload) => createLocalStateProvider(options, stack.stackName, region, extraStateProviders, { workload });
11984
+ const stackLambdaIds = lambdaIds.filter((id) => stack.template.Resources?.[id]?.Type === "AWS::Lambda::Function");
11985
+ const groups = groupWorkloadsRoutedApart(stackLambdaIds, (logicalId) => ({
11986
+ logicalId,
11987
+ cdkPath: readCdkPathOrUndefined(stack.template.Resources[logicalId])
11988
+ }));
11989
+ const grouped = new Set(groups.flatMap((g) => g.items));
11990
+ const shared = await loadStackStateBundle(stack, providerFor(UNNAMED_WORKLOAD), {
11991
+ lambdaIds: stackLambdaIds.filter((id) => !grouped.has(id)),
11992
+ intrinsicEnv: stackHasIntrinsicEnv(stackName),
11993
+ options
11994
+ });
11995
+ const byLambda = /* @__PURE__ */ new Map();
11996
+ for (const group of groups) {
11997
+ const own = await loadStackStateBundle(stack, providerFor(group.workload), {
11998
+ lambdaIds: group.items,
11999
+ intrinsicEnv: stackHasIntrinsicEnv(stackName),
12000
+ options,
12001
+ ...shared?.pseudoParameters && { pseudoParameters: shared.pseudoParameters }
12002
+ });
12003
+ if (own) for (const logicalId of group.items) byLambda.set(logicalId, own);
11962
12004
  }
12005
+ const bundle = shared ?? (byLambda.size > 0 ? {
12006
+ state: {
12007
+ version: 1,
12008
+ stackName: stack.stackName,
12009
+ resources: {},
12010
+ outputs: {},
12011
+ lastModified: 0
12012
+ },
12013
+ withoutSharedState: true
12014
+ } : void 0);
12015
+ if (!bundle) continue;
12016
+ if (byLambda.size > 0) bundle.byLambda = byLambda;
12017
+ out.set(stackName, bundle);
11963
12018
  }
11964
12019
  return out;
11965
12020
  }
12021
+ async function loadStackStateBundle(stack, provider, args) {
12022
+ if (!provider) return void 0;
12023
+ try {
12024
+ const loaded = await provider.load(stack.stackName, stack.region);
12025
+ if (!loaded) return void 0;
12026
+ const bundle = {
12027
+ state: {
12028
+ version: 1,
12029
+ stackName: stack.stackName,
12030
+ resources: loaded.resources,
12031
+ outputs: loaded.outputs,
12032
+ lastModified: 0
12033
+ },
12034
+ region: loaded.region
12035
+ };
12036
+ if (args.intrinsicEnv) {
12037
+ const pseudo = args.pseudoParameters ?? await resolvePseudoParametersForStartApi(loaded.region, args.options);
12038
+ if (pseudo) bundle.pseudoParameters = pseudo;
12039
+ }
12040
+ if (provider.resolveDeployedFunctionEnv) {
12041
+ const deployedEnvByLambda = /* @__PURE__ */ new Map();
12042
+ for (const logicalId of args.lambdaIds) {
12043
+ const resource = stack.template.Resources?.[logicalId];
12044
+ if (!resource || resource.Type !== "AWS::Lambda::Function") continue;
12045
+ if (!envHasIntrinsicValue$1(getTemplateEnv$1(resource))) continue;
12046
+ const physicalId = loaded.resources[logicalId]?.physicalId;
12047
+ if (!physicalId) continue;
12048
+ const deployedEnv = await provider.resolveDeployedFunctionEnv(physicalId);
12049
+ if (deployedEnv) deployedEnvByLambda.set(logicalId, deployedEnv);
12050
+ }
12051
+ if (deployedEnvByLambda.size > 0) bundle.deployedEnvByLambda = deployedEnvByLambda;
12052
+ }
12053
+ if (args.intrinsicEnv && provider.resolveTemplateSsmParameters) {
12054
+ const ssmParameters = await provider.resolveTemplateSsmParameters(stack.template);
12055
+ if (Object.keys(ssmParameters.values).length > 0) bundle.ssmParameters = ssmParameters.values;
12056
+ if (ssmParameters.secureStringLogicalIds.length > 0) bundle.ssmSecureStringLogicalIds = ssmParameters.secureStringLogicalIds;
12057
+ }
12058
+ getLogger().debug(`${provider.label}: loaded state for ${displayStackName(stack.stackName)} (${loaded.region})`);
12059
+ return bundle;
12060
+ } finally {
12061
+ provider.dispose();
12062
+ }
12063
+ }
11966
12064
  async function resolvePseudoParametersForStartApi(stateRegion, options) {
11967
12065
  const logger = getLogger();
11968
12066
  const region = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? stateRegion;
@@ -12552,6 +12650,10 @@ async function resolveLambdaContainerEnvWith(lambda, options, profileCredentials
12552
12650
  const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
12553
12651
  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 or a host-provided extension) to recover deployed values.`);
12554
12652
  }
12653
+ if (envResult.unresolved.length > 0 && !stateProvider) {
12654
+ const hint = takeAwsEmulatorStateSourceHint();
12655
+ if (hint) logger.warn(hint);
12656
+ }
12555
12657
  for (const key of stateAudit?.sensitiveKeys ?? []) plaintextKeys.add(key);
12556
12658
  for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
12557
12659
  const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
@@ -12981,10 +13083,10 @@ function defaultFetchObject$1(options) {
12981
13083
  return async (location) => {
12982
13084
  const { S3Client, GetObjectCommand } = await import("@aws-sdk/client-s3");
12983
13085
  const client = new S3Client({
12984
- ...buildProxyClientConfig({ profile: options.profile }),
13086
+ ...deployArtifactClientConfig({ profile: options.profile }),
12985
13087
  ...options.region && { region: options.region },
12986
- ...options.profile && !options.credentials && { profile: options.profile },
12987
- ...options.credentials && { credentials: {
13088
+ ...options.profile && !options.credentials && !deployArtifactsReadEmulator() && { profile: options.profile },
13089
+ ...options.credentials && !deployArtifactsReadEmulator() && { credentials: {
12988
13090
  accessKeyId: options.credentials.accessKeyId,
12989
13091
  secretAccessKey: options.credentials.secretAccessKey,
12990
13092
  ...options.credentials.sessionToken && { sessionToken: options.credentials.sessionToken }
@@ -14022,6 +14124,10 @@ async function buildContainerEnvWith(resolved, options, profileCredentials, prof
14022
14124
  const overrideKeyExample = cdkPath?.replace(/\/Resource$/, "") ?? resolved.logicalId;
14023
14125
  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.`);
14024
14126
  }
14127
+ if (envResult.unresolved.length > 0 && !stateProvider) {
14128
+ const hint = takeAwsEmulatorStateSourceHint();
14129
+ if (hint) logger.warn(hint);
14130
+ }
14025
14131
  const skipKeys = keysNotFromTemplate(templateEnv, envResult.resolved);
14026
14132
  for (const key of sensitiveEnvKeys) skipKeys.add(key);
14027
14133
  const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
@@ -15327,6 +15433,7 @@ async function runEcsTask(task, options, state) {
15327
15433
  platformOverride: options.platformOverride,
15328
15434
  region: options.region,
15329
15435
  sidecarIp: state.network.sidecarIp,
15436
+ ...options.mixedModeRoleCredentials && { mixedModeRoleCredentials: options.mixedModeRoleCredentials },
15330
15437
  ...options.skipHostPortPublish ? { skipHostPortPublish: true } : {},
15331
15438
  ...effectiveHostPortOverrides ? { hostPortOverrides: effectiveHostPortOverrides } : {},
15332
15439
  ...autoRemappedContainerPorts ? { autoRemappedContainerPorts } : {},
@@ -15755,7 +15862,13 @@ function buildDockerRunArgs(opts) {
15755
15862
  }
15756
15863
  }
15757
15864
  const wiring = getActiveWorkloadAwsWiring();
15758
- const profileCredentialsFile = wiring?.mode === "emulator" ? void 0 : opts.profileCredentialsFile;
15865
+ const previewEnv = {};
15866
+ for (const [k, v] of Object.entries(container.environment)) defineOwnKey(previewEnv, k, v);
15867
+ if (opts.envOverrides) {
15868
+ applyEnvOverrideMap(previewEnv, opts.envOverrides["Parameters"]);
15869
+ applyEnvOverrideMap(previewEnv, opts.envOverrides[container.name]);
15870
+ }
15871
+ const profileCredentialsFile = workloadGetsEmulatorKeysOnly(previewEnv, wiring) ? void 0 : opts.profileCredentialsFile;
15759
15872
  if (profileCredentialsFile) both("-v", `${profileCredentialsFile.hostPath}:${profileCredentialsFile.containerPath}:ro`);
15760
15873
  for (const m of wiring?.mounts ?? []) if (!container.mountPoints.some((mp) => mp.containerPath === m.containerPath)) both("-v", `${m.hostPath}:${m.containerPath}:ro`);
15761
15874
  for (const mp of container.mountPoints) {
@@ -15779,6 +15892,12 @@ function buildDockerRunArgs(opts) {
15779
15892
  ...opts.sidecarIp !== void 0 && { sidecarIp: opts.sidecarIp }
15780
15893
  });
15781
15894
  Object.assign(finalEnv, metaEnv);
15895
+ if (opts.mixedModeRoleCredentials && wiring?.mixed && !workloadGetsEmulatorKeysOnly(previewEnv, wiring)) {
15896
+ delete finalEnv["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"];
15897
+ finalEnv["AWS_ACCESS_KEY_ID"] = opts.mixedModeRoleCredentials.accessKeyId;
15898
+ finalEnv["AWS_SECRET_ACCESS_KEY"] = opts.mixedModeRoleCredentials.secretAccessKey;
15899
+ if (opts.mixedModeRoleCredentials.sessionToken) finalEnv["AWS_SESSION_TOKEN"] = opts.mixedModeRoleCredentials.sessionToken;
15900
+ }
15782
15901
  if (profileCredentialsFile) {
15783
15902
  finalEnv["AWS_SHARED_CREDENTIALS_FILE"] = profileCredentialsFile.containerPath;
15784
15903
  finalEnv["AWS_PROFILE"] = profileCredentialsFile.profileName;
@@ -16704,10 +16823,10 @@ const defaultDockerStartImpl = async (containerId, opts = {}) => {
16704
16823
  const { getDockerCmd } = await import("./docker-cmd-Cjg3jGYF.js").then((n) => n.t);
16705
16824
  await promisify(execFile)(getDockerCmd(), ["start", containerId]);
16706
16825
  if (opts.joinedForwarder) return;
16707
- const { getActiveWorkloadAwsWiring } = await import("./workload-identity-BOEZuEDO.js").then((n) => n.R);
16826
+ const { getActiveWorkloadAwsWiring } = await import("./workload-identity-CCXbr0KK.js").then((n) => n.B);
16708
16827
  const wiring = getActiveWorkloadAwsWiring();
16709
16828
  if (wiring) {
16710
- const { attachLoopbackForwarder } = await import("./docker-runner-6cuoe4H9.js").then((n) => n.o);
16829
+ const { attachLoopbackForwarder } = await import("./docker-runner-D6K15jJP.js").then((n) => n.o);
16711
16830
  await attachLoopbackForwarder(containerId, wiring);
16712
16831
  }
16713
16832
  };
@@ -19588,13 +19707,13 @@ async function loadAssetContextForTarget(args) {
19588
19707
  }
19589
19708
  async function rollOneTarget(args) {
19590
19709
  const { signal, controller, newBoot, stacks, options, discovery, skipPull, extraStateProviders, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, verdict, imageOverrideTag, logger } = args;
19591
- const candidate = pickCandidateStack$1(newBoot.target, stacks);
19592
- const stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders);
19710
+ const { stateProvider, stateProviderFor } = await createTargetStateProviders(newBoot.target, stacks, options, extraStateProviders);
19593
19711
  try {
19594
19712
  let resolved;
19595
19713
  try {
19596
19714
  resolved = await resolveServiceAndRunnerOpts(newBoot, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, {
19597
19715
  quiet: true,
19716
+ stateProviderFor,
19598
19717
  ...imageOverrideTag !== void 0 && { imageOverrideTag }
19599
19718
  });
19600
19719
  } catch (err) {
@@ -19641,23 +19760,28 @@ async function rollOneTarget(args) {
19641
19760
  }
19642
19761
  }
19643
19762
  async function bootOneTarget(boot, runState, stacks, options, discovery, skipPull, extraStateProviders, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag) {
19644
- const candidate = pickCandidateStack$1(boot.target, stacks);
19645
- const stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders);
19763
+ const { stateProvider, stateProviderFor } = await createTargetStateProviders(boot.target, stacks, options, extraStateProviders);
19646
19764
  try {
19647
- return await runOneTarget(boot, runState, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag);
19765
+ return await runOneTarget(boot, runState, stacks, options, discovery, skipPull, stateProvider, stateProviderFor, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag);
19648
19766
  } finally {
19649
19767
  if (stateProvider) stateProvider.dispose();
19650
19768
  }
19651
19769
  }
19652
- async function runOneTarget(boot, runState, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag) {
19653
- const { service, runnerOpts } = await resolveServiceAndRunnerOpts(boot, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag !== void 0 ? { imageOverrideTag } : {});
19770
+ async function runOneTarget(boot, runState, stacks, options, discovery, skipPull, stateProvider, stateProviderFor, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag) {
19771
+ const { service, runnerOpts } = await resolveServiceAndRunnerOpts(boot, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, {
19772
+ stateProviderFor,
19773
+ ...imageOverrideTag !== void 0 && { imageOverrideTag }
19774
+ });
19654
19775
  return startEcsService(service, runnerOpts, runState);
19655
19776
  }
19656
19777
  async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, opts = {}) {
19657
19778
  const logger = getLogger();
19658
19779
  const target = boot.target;
19659
19780
  const quiet = opts.quiet === true;
19660
- const imageContext = await buildEcsImageResolutionContext$1(target, stacks, options, stateProvider, opts.imageOverrideTag !== void 0 ? { imageOverridden: true } : {});
19781
+ const imageContext = await buildEcsImageResolutionContext$1(target, stacks, options, stateProvider, {
19782
+ ...opts.imageOverrideTag !== void 0 && { imageOverridden: true },
19783
+ ...opts.stateProviderFor && { stateProviderFor: opts.stateProviderFor }
19784
+ });
19661
19785
  const service = resolveEcsServiceTarget(target, stacks, imageContext, { suppressLoadBalancerWarning });
19662
19786
  const representative = service.task.containers.find((c) => c.essential) ?? service.task.containers[0];
19663
19787
  assertEcsTaskImagesResolvable(service.task, new Set(opts.imageOverrideTag !== void 0 && representative ? [representative.name] : []));
@@ -19685,7 +19809,8 @@ async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, ski
19685
19809
  resolvedRoleArn = effectiveAssumeRole;
19686
19810
  assumedCredentials = await assumeTaskRole$1(resolvedRoleArn, options.region, options.profile);
19687
19811
  }
19688
- if (discovery.sharedNetwork && resolvedRoleArn !== void 0 && assumedCredentials) try {
19812
+ const mixedWiring = getActiveWorkloadAwsWiring()?.mixed;
19813
+ if (!mixedWiring && discovery.sharedNetwork && resolvedRoleArn !== void 0 && assumedCredentials) try {
19689
19814
  await serveTaskRoleFromSharedSidecar(discovery.sharedNetwork, {
19690
19815
  roleArn: resolvedRoleArn,
19691
19816
  credentials: assumedCredentials,
@@ -19705,7 +19830,10 @@ async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, ski
19705
19830
  };
19706
19831
  if (envOverrides) taskOpts.envOverrides = envOverrides;
19707
19832
  if (options.stackRegion) taskOpts.stackRegion = options.stackRegion;
19708
- if (assumedCredentials) taskOpts.taskCredentials = assumedCredentials;
19833
+ if (assumedCredentials && mixedWiring) {
19834
+ taskOpts.taskCredentials = mixedWiring.emulatorCredentials;
19835
+ taskOpts.mixedModeRoleCredentials = assumedCredentials;
19836
+ } else if (assumedCredentials) taskOpts.taskCredentials = assumedCredentials;
19709
19837
  if (resolvedRoleArn) taskOpts.taskRoleArn = resolvedRoleArn;
19710
19838
  if (options.platform) taskOpts.platformOverride = options.platform;
19711
19839
  if (options.region) taskOpts.region = options.region;
@@ -20044,6 +20172,63 @@ async function assumeTaskRole$1(roleArn, region, profile) {
20044
20172
  makeError: (message) => new LocalStartServiceError(message)
20045
20173
  });
20046
20174
  }
20175
+ async function createTargetStateProviders(target, stacks, options, extraStateProviders) {
20176
+ const candidate = pickCandidateStack$1(target, stacks);
20177
+ const region = await resolveCfnFallbackRegion(options, candidate?.region);
20178
+ const stateProviderFor = (workload) => createLocalStateProvider(options, candidate?.stackName ?? "", region, extraStateProviders, { workload });
20179
+ return {
20180
+ stateProvider: stateProviderFor(UNNAMED_WORKLOAD),
20181
+ stateProviderFor
20182
+ };
20183
+ }
20184
+ function ecsContainerNamesOf(stack) {
20185
+ const names = /* @__PURE__ */ new Set();
20186
+ for (const resource of Object.values(stack.template.Resources ?? {})) {
20187
+ if (resource?.Type !== "AWS::ECS::TaskDefinition") continue;
20188
+ const defs = resource.Properties?.["ContainerDefinitions"];
20189
+ if (!Array.isArray(defs)) continue;
20190
+ for (const def of defs) {
20191
+ const name = def?.["Name"];
20192
+ if (typeof name === "string" && name !== "") names.add(name);
20193
+ }
20194
+ }
20195
+ return [...names];
20196
+ }
20197
+ async function loadMixedModeContainerStates(ctx, stack, stateProviderFor) {
20198
+ const groups = groupWorkloadsRoutedApart(ecsContainerNamesOf(stack), (containerName) => ({ containerName }));
20199
+ if (groups.length === 0) return;
20200
+ const containerStates = {};
20201
+ for (const group of groups) {
20202
+ const provider = stateProviderFor(group.workload);
20203
+ if (!provider) continue;
20204
+ try {
20205
+ const state = {};
20206
+ const loaded = await provider.load(stack.stackName, stack.region);
20207
+ if (loaded) state.stateResources = loaded.resources;
20208
+ else {
20209
+ const loadError = provider.getLastLoadError?.();
20210
+ if (loadError) state.stateLoadFailureMessage = loadError;
20211
+ }
20212
+ if (provider.resolveTemplateSsmParameters) {
20213
+ const ssm = await provider.resolveTemplateSsmParameters(stack.template);
20214
+ if (Object.keys(ssm.values).length > 0) state.stateParameters = ssm.values;
20215
+ if (ssm.secureStringLogicalIds.length > 0) state.stateSensitiveParameters = ssm.secureStringLogicalIds;
20216
+ }
20217
+ for (const name of group.items) defineOwnState(containerStates, name, state);
20218
+ } finally {
20219
+ provider.dispose();
20220
+ }
20221
+ }
20222
+ ctx.containerStates = containerStates;
20223
+ }
20224
+ function defineOwnState(map, key, value) {
20225
+ Object.defineProperty(map, key, {
20226
+ value,
20227
+ enumerable: true,
20228
+ writable: true,
20229
+ configurable: true
20230
+ });
20231
+ }
20047
20232
  async function buildEcsImageResolutionContext$1(target, stacks, options, stateProvider, opts = {}) {
20048
20233
  const logger = getLogger();
20049
20234
  const candidate = pickCandidateStack$1(target, stacks);
@@ -20084,6 +20269,7 @@ async function buildEcsImageResolutionContext$1(target, stacks, options, statePr
20084
20269
  if (Object.keys(ssmParameters.values).length > 0) ctx.stateParameters = ssmParameters.values;
20085
20270
  if (ssmParameters.secureStringLogicalIds.length > 0) ctx.stateSensitiveParameters = ssmParameters.secureStringLogicalIds;
20086
20271
  }
20272
+ if (needs.needsEnvOrSecretSubstitution && opts.stateProviderFor) await loadMixedModeContainerStates(ctx, candidate, opts.stateProviderFor);
20087
20273
  } else if (!stateProvider && needs.needsStateResources) {
20088
20274
  if (!opts.suppressStateWarning && !opts.imageOverridden) logger.warn("Container Image references a same-stack AWS::ECR::Repository. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute the deployed repository URI, or --image-override to build it from a local Dockerfile.");
20089
20275
  } else if (!stateProvider && needs.needsEnvOrSecretSubstitution) {
@@ -20191,6 +20377,7 @@ async function resolveServiceDefaultCredentials(options, assumedCredentials) {
20191
20377
  async function resolveSharedSidecarCredentials(options) {
20192
20378
  const wiring = getActiveWorkloadAwsWiring();
20193
20379
  if (wiring?.mode === "emulator") return wiring.emulatorCredentials;
20380
+ if (wiring?.mixed) return wiring.mixed.emulatorCredentials;
20194
20381
  if (options.profile) return resolveProfileCredentials(options.profile);
20195
20382
  return resolveHostDefaultCredentials();
20196
20383
  }
@@ -20199,7 +20386,7 @@ async function resolveAndBuildImageOverrides(args) {
20199
20386
  const resolvedForPeek = [];
20200
20387
  for (const target of perTarget) {
20201
20388
  const candidate = pickCandidateStack$1(target, stacks);
20202
- const stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders);
20389
+ const stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders, { workload: UNNAMED_WORKLOAD });
20203
20390
  let imageContext;
20204
20391
  let service;
20205
20392
  try {
@@ -20352,8 +20539,10 @@ async function localRunTaskCommand(target, options, extraStateProviders) {
20352
20539
  onMissing: () => new CdkLocalError(`${getEmbedConfig().cliName} run-task requires a <target> (an ECS task definition display path or logical ID). Run \`${getEmbedConfig().cliName} list\` to see them, or run it in a TTY to pick interactively.`, "LOCAL_RUN_TASK_TARGET_REQUIRED")
20353
20540
  });
20354
20541
  const candidate = pickCandidateStack(resolvedTarget, stacks);
20355
- stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders);
20356
- const imageContext = await buildEcsImageResolutionContext(candidate, stateProvider, options);
20542
+ const stateRegion = await resolveCfnFallbackRegion(options, candidate?.region);
20543
+ const stateProviderFor = (workload) => createLocalStateProvider(options, candidate?.stackName ?? "", stateRegion, extraStateProviders, { workload });
20544
+ stateProvider = stateProviderFor(UNNAMED_WORKLOAD);
20545
+ const imageContext = await buildEcsImageResolutionContext(candidate, stateProvider, options, stateProviderFor);
20357
20546
  const task = resolveEcsTaskTarget(resolvedTarget, stacks, imageContext);
20358
20547
  logger.info(`Target: ${displayStackName(`${task.stack.stackName}/${task.taskDefinitionLogicalId}`)} (family=${displayIdent(task.family)}, containers=${task.containers.length})`);
20359
20548
  const taskNeeds = detectEcsImageResolutionNeeds(stacks.find((s) => s.stackName === task.stack.stackName) ?? task.stack);
@@ -20400,7 +20589,11 @@ async function localRunTaskCommand(target, options, extraStateProviders) {
20400
20589
  detach: options.detach
20401
20590
  };
20402
20591
  if (envOverrides) runOpts.envOverrides = envOverrides;
20403
- if (sidecarCredentials) runOpts.taskCredentials = sidecarCredentials;
20592
+ const mixed = getActiveWorkloadAwsWiring()?.mixed;
20593
+ if (mixed) {
20594
+ runOpts.taskCredentials = mixed.emulatorCredentials;
20595
+ if (assumedCredentials) runOpts.mixedModeRoleCredentials = assumedCredentials;
20596
+ } else if (sidecarCredentials) runOpts.taskCredentials = sidecarCredentials;
20404
20597
  if (resolvedRoleArn) runOpts.taskRoleArn = resolvedRoleArn;
20405
20598
  if (options.platform) runOpts.platformOverride = options.platform;
20406
20599
  if (options.region) runOpts.region = options.region;
@@ -20495,7 +20688,7 @@ async function assumeTaskRole(roleArn, region, profile) {
20495
20688
  sessionNameSuffix: "run-task"
20496
20689
  });
20497
20690
  }
20498
- async function buildEcsImageResolutionContext(candidate, stateProvider, options) {
20691
+ async function buildEcsImageResolutionContext(candidate, stateProvider, options, stateProviderFor) {
20499
20692
  const logger = getLogger();
20500
20693
  if (!candidate) return void 0;
20501
20694
  const needs = detectEcsImageResolutionNeeds(candidate);
@@ -20534,6 +20727,7 @@ async function buildEcsImageResolutionContext(candidate, stateProvider, options)
20534
20727
  if (Object.keys(ssmParameters.values).length > 0) ctx.stateParameters = ssmParameters.values;
20535
20728
  if (ssmParameters.secureStringLogicalIds.length > 0) ctx.stateSensitiveParameters = ssmParameters.secureStringLogicalIds;
20536
20729
  }
20730
+ if (needs.needsEnvOrSecretSubstitution && stateProviderFor) await loadMixedModeContainerStates(ctx, candidate, stateProviderFor);
20537
20731
  } else if (!stateProvider && needs.needsStateResources) {
20538
20732
  if (!options.imageOverride?.length) logger.warn("Container Image references a same-stack AWS::ECR::Repository. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute the deployed repository URI, or --image-override to build it from a local Dockerfile. Otherwise the resolver will surface its existing error.");
20539
20733
  } else if (!stateProvider && needs.needsEnvOrSecretSubstitution) logger.warn("Container Environment / Secrets entries contain CloudFormation intrinsics (Ref / Fn::GetAtt / Fn::Sub / Fn::Join). Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against deployed state. Without a state source these entries are dropped (per-key warnings will follow).");
@@ -23436,9 +23630,9 @@ function defaultFetchObject(bucketName, options) {
23436
23630
  const { S3Client, GetObjectCommand } = await import("@aws-sdk/client-s3");
23437
23631
  return {
23438
23632
  client: new S3Client({
23439
- ...workloadClientConfig(),
23633
+ ...workloadClientConfig({ service: "S3" }),
23440
23634
  ...options.region && { region: options.region },
23441
- ...options.credentials && { credentials: {
23635
+ ...options.credentials && !isAwsServiceRoutedToEmulator("S3") && { credentials: {
23442
23636
  accessKeyId: options.credentials.accessKeyId,
23443
23637
  secretAccessKey: options.credentials.secretAccessKey,
23444
23638
  ...options.credentials.sessionToken && { sessionToken: options.credentials.sessionToken }
@@ -23503,9 +23697,9 @@ async function resolveDeployedOriginBucket(options) {
23503
23697
  async function defaultGetOrigins(options) {
23504
23698
  const { CloudFrontClient, GetDistributionConfigCommand } = await import("@aws-sdk/client-cloudfront");
23505
23699
  const client = new CloudFrontClient({
23506
- ...workloadClientConfig(),
23700
+ ...workloadClientConfig({ service: "CLOUDFRONT" }),
23507
23701
  region: "us-east-1",
23508
- ...options.credentials && { credentials: {
23702
+ ...options.credentials && !isAwsServiceRoutedToEmulator("CLOUDFRONT") && { credentials: {
23509
23703
  accessKeyId: options.credentials.accessKeyId,
23510
23704
  secretAccessKey: options.credentials.secretAccessKey,
23511
23705
  ...options.credentials.sessionToken && { sessionToken: options.credentials.sessionToken }
@@ -23522,9 +23716,9 @@ async function defaultGetOrigins(options) {
23522
23716
  //#region src/local/cloudfront-kvs-client.ts
23523
23717
  function createDeployedKvsDataSource(options) {
23524
23718
  const client = new CloudFrontKeyValueStoreClient({
23525
- ...workloadClientConfig(),
23719
+ ...workloadClientConfig({ service: "CLOUDFRONT_KEYVALUESTORE" }),
23526
23720
  region: options.region ?? "us-east-1",
23527
- ...options.credentials !== void 0 && { credentials: options.credentials }
23721
+ ...options.credentials !== void 0 && !isAwsServiceRoutedToEmulator("CLOUDFRONT_KEYVALUESTORE") && { credentials: options.credentials }
23528
23722
  });
23529
23723
  return {
23530
23724
  label: `deployed:${options.kvsArn}`,
@@ -23544,9 +23738,9 @@ function createDeployedKvsDataSource(options) {
23544
23738
  }
23545
23739
  async function resolveDeployedKvsArnByName(name, options = {}) {
23546
23740
  const client = new CloudFrontClient({
23547
- ...workloadClientConfig(),
23741
+ ...workloadClientConfig({ service: "CLOUDFRONT" }),
23548
23742
  region: options.region ?? "us-east-1",
23549
- ...options.credentials !== void 0 && { credentials: options.credentials }
23743
+ ...options.credentials !== void 0 && !isAwsServiceRoutedToEmulator("CLOUDFRONT") && { credentials: options.credentials }
23550
23744
  });
23551
23745
  try {
23552
23746
  for await (const page of paginateListKeyValueStores({ client }, {})) for (const item of page.KeyValueStoreList?.Items ?? []) if (item.Name === name && item.ARN) return {
@@ -24468,7 +24662,7 @@ async function resolveDeployedS3Origins(distribution, stacks, options, profileCr
24468
24662
  buckets
24469
24663
  };
24470
24664
  const synthRegion = stacks.find((s) => s.stackName === distribution.stackName)?.region;
24471
- const provider = createLocalStateProvider(options, distribution.stackName, synthRegion, extraStateProviders, { realAwsOnly: true });
24665
+ const provider = createLocalStateProvider(options, distribution.stackName, synthRegion, extraStateProviders);
24472
24666
  let record;
24473
24667
  try {
24474
24668
  record = provider ? await provider.load(distribution.stackName, synthRegion) : void 0;
@@ -31621,7 +31815,7 @@ async function prepareEcsImageContexts(args) {
31621
31815
  }
31622
31816
  rejectExplicitCfnStackWithMultipleStacks(options, owningStacks.length);
31623
31817
  for (const stack of owningStacks) {
31624
- const stateProvider = createLocalStateProvider(options, stack.stackName, await resolveCfnFallbackRegion(options, stack.region));
31818
+ const stateProvider = createLocalStateProvider(options, stack.stackName, await resolveCfnFallbackRegion(options, stack.region), void 0, { workload: UNNAMED_WORKLOAD });
31625
31819
  try {
31626
31820
  const ctx = await buildEcsImageResolutionContext(stack, stateProvider, options);
31627
31821
  contextByStack.set(stack.stackName, ctx);
@@ -31998,5 +32192,5 @@ function addStudioSpecificOptions(cmd) {
31998
32192
  }
31999
32193
 
32000
32194
  //#endregion
32001
- export { postHook as $, awsEndpointOptions as $a, buildConnectEvent as $i, addImageOverrideOptions as $n, addStartApiSpecificOptions as $r, classifyS3Error as $t, microvmFidelityWarnings as A, webSocketApiMatchesIdentifier as Aa, buildCorsConfigByApiId as Ai, stripCloudFrontImport as An, A2A_CONTAINER_PORT as Ar, readContainerLogTail as At, MICROVM_WS_BASE_PROTOCOL as B, pickAgentCoreCandidateStack as Ba, pickResponseTemplate as Bi, createLocalStartAlbCommand as Bn, AGENTCORE_SESSION_ID_HEADER as Br, parseWebFunctionBuildConfig as Bt, addListSpecificOptions as C, countTargets as Ca, buildMethodArn as Ci, WEB_FUNCTION_REVISION_TYPE as Cn, setShadowReadyTimeoutMs as Cr, parseKvsFileOverrides as Ct, buildMicrovmLambdaView as D, discoverWebSocketApisOrThrow as Da, invokeTokenAuthorizer as Di, compileCloudFrontFunction as Dn, createLocalInvokeAgentCoreCommand as Dr, WEB_FUNCTION_CONTAINER_PORT as Dt, addStartMicrovmSpecificOptions as E, discoverWebSocketApis as Ea, invokeRequestAuthorizer as Ei, resolveWebFunctionTarget as En, addInvokeAgentCoreSpecificOptions as Er, RecentOutput as Et, microvmImageTag as F, AGENTCORE_AGUI_PROTOCOL as Fa, translateLambdaResponse as Fi, findFileAssetForObjectKey as Fn, MCP_PROTOCOL_VERSION as Fr, buildNodeEntryFileStart as Ft, startMicrovmFrontDoor as G, deployedFillMayBeSecret as Ga, HOST_GATEWAY_MIN_VERSION as Gi, addStartServiceSpecificOptions as Gn, SUPPORTED_CODE_RUNTIMES as Gr, readWebFunctionServiceConfig as Gt, PROXY_PORT_HEADER as H, DynamicReferenceResolutionError as Ha, tryParseStatus as Hi, resolveAlbTarget as Hn, waitForAgentCoreHttpReady as Hr, WEB_FUNCTION_HTTP_ENDPOINT_ENV as Ht, planMicrovmPorts as I, AGENTCORE_HTTP_PROTOCOL as Ia, applyAuthorizerOverlay as Ii, isBucketDeploymentResource as In, mcpInvokeOnce as Ir, defaultWebFunctionPlatform as It, MICROVM_HOOK_PATH_PREFIX as J, keysOverriddenBy as Ja, bufferToBody as Ji, addRunTaskSpecificOptions as Jn, renderCodeDockerfile as Jr, idFromArn as Jt, stripMicrovmProxyHeaders as K, firstUsableRegion as Ka, probeHostGatewaySupport as Ki, createLocalStartServiceCommand as Kn, buildAgentCoreCodeImage as Kr, webFunctionAssumeRole as Kt, readExposedPorts as L, AGENTCORE_MCP_PROTOCOL as La, buildHttpApiV2Event as Li, resolveBucketDeploymentObjectKey as Ln, parseSseForJsonRpc as Lr, resolveWebFunctionRuntime as Lt, DEFAULT_TERMINATE_HOOK_TIMEOUT_MS as M, pickRefLogicalId as Ma, isFunctionUrlOacFronted as Mi, createLocalFileKvsDataSource as Mn, a2aInvokeOnce as Mr, waitForWebFunctionReady as Mt, LocalMicrovm as N, resolveLambdaArnIntrinsic as Na, matchPreflight as Ni, createUnboundCloudFrontModule as Nn, MCP_CONTAINER_PORT as Nr, watchContainerExit as Nt, createLocalStartMicrovmCommand as O, filterWebSocketApisByIdentifiers as Oa, attachAuthorizers as Oi, runViewerRequest as On, bridgeAgentCoreWs as Or, containerFailure as Ot, buildMicrovmImage as P, AGENTCORE_A2A_PROTOCOL as Pa, matchRoute as Pi, bucketDeploymentSourceObjectKeys as Pn, MCP_PATH as Pr, WEB_FUNCTION_RUNTIMES as Pt, pollBuildHook as Q, addAwsEndpointOptions as Qa, parseConnectionsPath as Qi, addEcsAssumeRoleOptions as Qn, createLocalInvokeCommand as Qr, resolveDeployedOriginBucket as Qt, setContainerPaused as R, AGENTCORE_RUNTIME_TYPE as Ra, buildRestV1Event as Ri, addAlbSpecificOptions as Rn, AGENTCORE_SIGV4_SERVICE as Rr, supportedWebFunctionRuntimes as Rt, StudioEventBus as S, resolveSingleTarget as Sa, verifyJwtViaDiscovery as Si, WEB_FUNCTION_ENDPOINT_TYPE as Sn, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as Sr, normalizeKvsFileKeys as St, formatTargetListing as T, availableWebSocketApiIdentifiers as Ta, evaluateCachedLambdaPolicy as Ti, WebFunctionResolutionError as Tn, attachContainerLogStreamer as Tr, resolveCloudFrontTarget as Tt, rewriteUpgradeResponseHead as U, DynamicReferenceResolver as Ua, VtlEvaluationError as Ui, isApplicationLoadBalancer as Un, waitForAgentCorePing as Ur, buildWebFunctionLambdaView as Ut, MicrovmStateError as V, resolveAgentCoreTarget as Va, selectIntegrationResponse as Vi, parseLbPortOverrides as Vn, invokeAgentCore as Vr, resolveWebFunctionArtifact as Vt, selectTargetPort as W, containsDynamicReference as Wa, HOST_DOCKER_INTERNAL_GATEWAY as Wi, resolveAlbFrontDoor as Wn, downloadAndExtractS3Bundle as Wr, finalizeWebFunctionEnv as Wt, callRuntimeHook as X, resolveDynamicReferencesInEnv as Xa, buildMgmtEndpointEnvUrl as Xi, MAX_TASKS_SUBNET_RANGE_CAP as Xn, classifySourceChange as Xr, createDeployedKvsDataSource as Xt, MicrovmHookError as Y, parseDynamicReference as Ya, ConnectionRegistry as Yi, createLocalRunTaskCommand as Yn, toCmdArgv as Yr, resolveKvsModulesForDistribution as Yt, generateMicrovmId as Z, withoutKeys as Za, handleConnectionsRequest as Zi, addCommonEcsServiceOptions as Zn, addInvokeSpecificOptions as Zr, resolveDeployedKvsArnByName as Zt, filterStudioTargetGroups as _, resolveCfnStackName as _a, buildCognitoJwksUrl as _i, pickKvsLogicalIdFromArn as _n, isLocalCdkAssetImage as _r, attachAgentCoreWsBridge as _t, createLocalStudioCommand as a, EcsTaskResolutionError as aa, attachStageContext as ai, serveLambdaUrlOrigin as an, resolveSharedSidecarCredentials as ar, disposeMicrovmCodeArtifact as at, renderStudioHtml as b, resolveSsmParameters as ba, verifyCognitoJwt as bi, pickWebFunctionEndpointLogicalIdFromOrigin as bn, CloudMapRegistry as br, addStartCloudFrontSpecificOptions as bt, startStudioProxy as c, substituteAgainstStateAsync as ca, availableApiIdentifiers as ci, buildEdgeRequestEvent as cn, buildImageOverrideTag as cr, resolveMicrovmImageTarget as ct, createStudioDispatcher as d, LocalStateSourceError as da, groupRoutesByServer as di, httpHeadersToEdge as dn, mergeForService as dr, createLocalStartWebFunctionCommand as dt, buildDisconnectEvent as ea, createLocalStartApiCommand as ei, createS3OriginReader as en, buildEcsImageResolutionContext$1 as er, runHookBody as et, filterStudioCustomResources as f, createLocalStateProvider as fa, readMtlsMaterialsFromDisk as fi, CLOUDFRONT_DISTRIBUTION_TYPE as fn, parseImageOverrideFlags as fr, addStartAgentCoreSpecificOptions as ft, annotatePinnedEcsTargets as g, resolveCfnRegion as ga, defaultCredentialsLoader as gi, pickFunctionUrlLogicalIdFromOrigin as gn, imageOverrideKeyAliases as gr, startAgentCoreHttpServer as gt, annotateEcsTaskPinnedTargets as h, resolveCfnFallbackRegion as ha, resolveServiceIntegrationParameters as hi, isCloudFrontDistribution as hn, describePinnedImageUri as hr, selectServeInboundAuth as ht, coerceStopRequest as i, resolveRuntimeImage as ia, createFileWatcher as ii, serveFromStaticOrigin as in, resolveEcsAssumeRoleOption as ir, MicrovmResolutionError as it, readRunHookPayload as j, discoverRoutes as ja, buildCorsConfigFromCloudFrontChain as ji, createCloudFrontModule as jn, A2A_PATH as jr, startWebFunctionContainer as jt, finalizeMicrovmEnv as k, parseSelectionExpressionPath as ka, applyCorsResponseHeaders as ki, runViewerResponse as kn, invokeAgentCoreWs as kr, planWebFunctionContainer as kt, relayServeRequest as l, substituteEnvVarsFromState as la, filterRoutesByApiIdentifier as li, buildEdgeResponseEvent as ln, canonicalizeImageOverrideKeys as lr, s3KeyOfUri as lt, annotateAlbPinnedBackingServices as m, rejectExplicitCfnStackWithMultipleStacks as ma, resolveSelectionExpression as mi, extractKvsAssociations as mn, runImageOverrideBuilds as mr, buildAgentCoreServeAuthCheck as mt, coerceRunRequest as n, resolveRuntimeCodeMountPath as na, resolveApiTargetSubset as ni, startCloudFrontServer as nn, parseMaxTasks as nr, MICROVM_DEFAULT_INGRESS_PORT as nt, resolveServeBaseUrl as o, assertEcsTaskImagesResolvable as oa, buildStageMap as oi, applyEdgeRequestResult as on, runEcsServiceEmulator as or, readMicrovmImageConfig as ot, isCustomResourceLambdaTarget as p, isCfnFlagPresent as pa, startApiServer as pi, describeS3OriginDomain as pn, resolveImageOverrides as pr, createLocalStartAgentCoreCommand as pt, MAX_RUN_HOOK_PAYLOAD_BYTES as q, keysNotFromTemplate as qa, resolveHostGatewayExtraHosts as qi, serviceStrategy as qn, computeCodeImageTag as qr, webFunctionFidelityWarnings as qt, coerceServeRequest as r, resolveRuntimeFileExtension as ra, createAuthorizerCache as ri, resolveErrorResponseCandidates as rn, parseRestartPolicy as rr, MICROVM_IMAGE_TYPE as rt, createStudioServeManager as s, substituteAgainstState as sa, materializeLayerFromArn as si, applyEdgeResponseResult as sn, ImageOverrideError as sr, resolveMicrovmCodeArtifact as st, addStudioSpecificOptions as t, buildMessageEvent as ta, createWatchPredicates as ti, matchBehavior as tn, ecsClusterOption as tr, waitForAppAnswer as tt, reinvoke as u, substituteEnvVarsFromStateAsync as ua, filterRoutesByApiIdentifiers as ui, edgeHeadersToHttp as un, enforceImageOverrideOrphans as ur, addStartWebFunctionSpecificOptions as ut, startStudioServer as v, CfnLocalStateProvider as va, buildJwksUrlFromIssuer as vi, pickLambdaEdgeFunctionLogicalId as vn, listPinnedTargets as vr, startAgentCoreWsBridge as vt, createLocalListCommand as w, listTargets as wa, computeRequestIdentityHash as wi, WEB_FUNCTION_TYPE as wn, getContainerNetworkIp as wr, parseOriginOverrides as wt, createStudioStore as x, resolveWatchConfig as xa, verifyJwtAuthorizer as xi, resolveCloudFrontDistribution as xn, DEFAULT_SHADOW_READY_TIMEOUT_MS as xr, createLocalStartCloudFrontCommand as xt, toStudioTargetGroups as y, collectSsmParameterRefs as ya, createJwksCache as yi, pickTargetFunctionLogicalId as yn, buildCloudMapIndex as yr, LocalStartCloudFrontError as yt, MICROVM_CONTROL_PATH as z, AgentCoreResolutionError as za, evaluateResponseParameters as zi, albStrategy as zn, signAgentCoreInvocation as zr, disposeWebFunctionArtifact as zt };
32002
- //# sourceMappingURL=local-studio-DIxEENzj.js.map
32195
+ export { postHook as $, withoutKeys as $a, buildConnectEvent as $i, addImageOverrideOptions as $n, addStartApiSpecificOptions as $r, classifyS3Error as $t, microvmFidelityWarnings as A, filterWebSocketApisByIdentifiers as Aa, buildCorsConfigByApiId as Ai, stripCloudFrontImport as An, A2A_CONTAINER_PORT as Ar, readContainerLogTail as At, MICROVM_WS_BASE_PROTOCOL as B, AGENTCORE_RUNTIME_TYPE as Ba, pickResponseTemplate as Bi, createLocalStartAlbCommand as Bn, AGENTCORE_SESSION_ID_HEADER as Br, parseWebFunctionBuildConfig as Bt, addListSpecificOptions as C, resolveWatchConfig as Ca, buildMethodArn as Ci, WEB_FUNCTION_REVISION_TYPE as Cn, setShadowReadyTimeoutMs as Cr, parseKvsFileOverrides as Ct, buildMicrovmLambdaView as D, availableWebSocketApiIdentifiers as Da, invokeTokenAuthorizer as Di, compileCloudFrontFunction as Dn, createLocalInvokeAgentCoreCommand as Dr, WEB_FUNCTION_CONTAINER_PORT as Dt, addStartMicrovmSpecificOptions as E, listTargets as Ea, invokeRequestAuthorizer as Ei, resolveWebFunctionTarget as En, addInvokeAgentCoreSpecificOptions as Er, RecentOutput as Et, microvmImageTag as F, resolveLambdaArnIntrinsic as Fa, translateLambdaResponse as Fi, findFileAssetForObjectKey as Fn, MCP_PROTOCOL_VERSION as Fr, buildNodeEntryFileStart as Ft, startMicrovmFrontDoor as G, DynamicReferenceResolver as Ga, HOST_GATEWAY_MIN_VERSION as Gi, addStartServiceSpecificOptions as Gn, SUPPORTED_CODE_RUNTIMES as Gr, readWebFunctionServiceConfig as Gt, PROXY_PORT_HEADER as H, pickAgentCoreCandidateStack as Ha, tryParseStatus as Hi, resolveAlbTarget as Hn, waitForAgentCoreHttpReady as Hr, WEB_FUNCTION_HTTP_ENDPOINT_ENV as Ht, planMicrovmPorts as I, AGENTCORE_A2A_PROTOCOL as Ia, applyAuthorizerOverlay as Ii, isBucketDeploymentResource as In, mcpInvokeOnce as Ir, defaultWebFunctionPlatform as It, MICROVM_HOOK_PATH_PREFIX as J, firstUsableRegion as Ja, bufferToBody as Ji, addRunTaskSpecificOptions as Jn, renderCodeDockerfile as Jr, idFromArn as Jt, stripMicrovmProxyHeaders as K, containsDynamicReference as Ka, probeHostGatewaySupport as Ki, createLocalStartServiceCommand as Kn, buildAgentCoreCodeImage as Kr, webFunctionAssumeRole as Kt, readExposedPorts as L, AGENTCORE_AGUI_PROTOCOL as La, buildHttpApiV2Event as Li, resolveBucketDeploymentObjectKey as Ln, parseSseForJsonRpc as Lr, resolveWebFunctionRuntime as Lt, DEFAULT_TERMINATE_HOOK_TIMEOUT_MS as M, webSocketApiMatchesIdentifier as Ma, isFunctionUrlOacFronted as Mi, createLocalFileKvsDataSource as Mn, a2aInvokeOnce as Mr, waitForWebFunctionReady as Mt, LocalMicrovm as N, discoverRoutes as Na, matchPreflight as Ni, createUnboundCloudFrontModule as Nn, MCP_CONTAINER_PORT as Nr, watchContainerExit as Nt, createLocalStartMicrovmCommand as O, discoverWebSocketApis as Oa, attachAuthorizers as Oi, runViewerRequest as On, bridgeAgentCoreWs as Or, containerFailure as Ot, buildMicrovmImage as P, pickRefLogicalId as Pa, matchRoute as Pi, bucketDeploymentSourceObjectKeys as Pn, MCP_PATH as Pr, WEB_FUNCTION_RUNTIMES as Pt, pollBuildHook as Q, resolveDynamicReferencesInEnv as Qa, parseConnectionsPath as Qi, addEcsAssumeRoleOptions as Qn, createLocalInvokeCommand as Qr, resolveDeployedOriginBucket as Qt, setContainerPaused as R, AGENTCORE_HTTP_PROTOCOL as Ra, buildRestV1Event as Ri, addAlbSpecificOptions as Rn, AGENTCORE_SIGV4_SERVICE as Rr, supportedWebFunctionRuntimes as Rt, StudioEventBus as S, resolveSsmParameters as Sa, verifyJwtViaDiscovery as Si, WEB_FUNCTION_ENDPOINT_TYPE as Sn, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as Sr, normalizeKvsFileKeys as St, formatTargetListing as T, countTargets as Ta, evaluateCachedLambdaPolicy as Ti, WebFunctionResolutionError as Tn, attachContainerLogStreamer as Tr, resolveCloudFrontTarget as Tt, rewriteUpgradeResponseHead as U, resolveAgentCoreTarget as Ua, VtlEvaluationError as Ui, isApplicationLoadBalancer as Un, waitForAgentCorePing as Ur, buildWebFunctionLambdaView as Ut, MicrovmStateError as V, AgentCoreResolutionError as Va, selectIntegrationResponse as Vi, parseLbPortOverrides as Vn, invokeAgentCore as Vr, resolveWebFunctionArtifact as Vt, selectTargetPort as W, DynamicReferenceResolutionError as Wa, HOST_DOCKER_INTERNAL_GATEWAY as Wi, resolveAlbFrontDoor as Wn, downloadAndExtractS3Bundle as Wr, finalizeWebFunctionEnv as Wt, callRuntimeHook as X, keysOverriddenBy as Xa, buildMgmtEndpointEnvUrl as Xi, MAX_TASKS_SUBNET_RANGE_CAP as Xn, classifySourceChange as Xr, createDeployedKvsDataSource as Xt, MicrovmHookError as Y, keysNotFromTemplate as Ya, ConnectionRegistry as Yi, createLocalRunTaskCommand as Yn, toCmdArgv as Yr, resolveKvsModulesForDistribution as Yt, generateMicrovmId as Z, parseDynamicReference as Za, handleConnectionsRequest as Zi, addCommonEcsServiceOptions as Zn, addInvokeSpecificOptions as Zr, resolveDeployedKvsArnByName as Zt, filterStudioTargetGroups as _, resolveCfnFallbackRegion as _a, buildCognitoJwksUrl as _i, pickKvsLogicalIdFromArn as _n, isLocalCdkAssetImage as _r, attachAgentCoreWsBridge as _t, createLocalStudioCommand as a, EcsTaskResolutionError as aa, attachStageContext as ai, serveLambdaUrlOrigin as an, resolveSharedSidecarCredentials as ar, disposeMicrovmCodeArtifact as at, renderStudioHtml as b, CfnLocalStateProvider as ba, verifyCognitoJwt as bi, pickWebFunctionEndpointLogicalIdFromOrigin as bn, CloudMapRegistry as br, addStartCloudFrontSpecificOptions as bt, startStudioProxy as c, substituteAgainstStateAsync as ca, availableApiIdentifiers as ci, buildEdgeRequestEvent as cn, buildImageOverrideTag as cr, resolveMicrovmImageTarget as ct, createStudioDispatcher as d, LocalStateSourceError as da, groupRoutesByServer as di, httpHeadersToEdge as dn, mergeForService as dr, createLocalStartWebFunctionCommand as dt, buildDisconnectEvent as ea, createLocalStartApiCommand as ei, createS3OriginReader as en, addAwsEndpointOptions as eo, buildEcsImageResolutionContext$1 as er, runHookBody as et, filterStudioCustomResources as f, UNNAMED_WORKLOAD as fa, readMtlsMaterialsFromDisk as fi, CLOUDFRONT_DISTRIBUTION_TYPE as fn, parseImageOverrideFlags as fr, addStartAgentCoreSpecificOptions as ft, annotatePinnedEcsTargets as g, rejectExplicitCfnStackWithMultipleStacks as ga, defaultCredentialsLoader as gi, pickFunctionUrlLogicalIdFromOrigin as gn, imageOverrideKeyAliases as gr, startAgentCoreHttpServer as gt, annotateEcsTaskPinnedTargets as h, isCfnFlagPresent as ha, resolveServiceIntegrationParameters as hi, isCloudFrontDistribution as hn, describePinnedImageUri as hr, selectServeInboundAuth as ht, coerceStopRequest as i, resolveRuntimeImage as ia, createFileWatcher as ii, serveFromStaticOrigin as in, resolveEcsAssumeRoleOption as ir, MicrovmResolutionError as it, readRunHookPayload as j, parseSelectionExpressionPath as ja, buildCorsConfigFromCloudFrontChain as ji, createCloudFrontModule as jn, A2A_PATH as jr, startWebFunctionContainer as jt, finalizeMicrovmEnv as k, discoverWebSocketApisOrThrow as ka, applyCorsResponseHeaders as ki, runViewerResponse as kn, invokeAgentCoreWs as kr, planWebFunctionContainer as kt, relayServeRequest as l, substituteEnvVarsFromState as la, filterRoutesByApiIdentifier as li, buildEdgeResponseEvent as ln, canonicalizeImageOverrideKeys as lr, s3KeyOfUri as lt, annotateAlbPinnedBackingServices as m, groupWorkloadsRoutedApart as ma, resolveSelectionExpression as mi, extractKvsAssociations as mn, runImageOverrideBuilds as mr, buildAgentCoreServeAuthCheck as mt, coerceRunRequest as n, resolveRuntimeCodeMountPath as na, resolveApiTargetSubset as ni, startCloudFrontServer as nn, parseMaxTasks as nr, MICROVM_DEFAULT_INGRESS_PORT as nt, resolveServeBaseUrl as o, assertEcsTaskImagesResolvable as oa, buildStageMap as oi, applyEdgeRequestResult as on, runEcsServiceEmulator as or, readMicrovmImageConfig as ot, isCustomResourceLambdaTarget as p, createLocalStateProvider as pa, startApiServer as pi, describeS3OriginDomain as pn, resolveImageOverrides as pr, createLocalStartAgentCoreCommand as pt, MAX_RUN_HOOK_PAYLOAD_BYTES as q, deployedFillMayBeSecret as qa, resolveHostGatewayExtraHosts as qi, serviceStrategy as qn, computeCodeImageTag as qr, webFunctionFidelityWarnings as qt, coerceServeRequest as r, resolveRuntimeFileExtension as ra, createAuthorizerCache as ri, resolveErrorResponseCandidates as rn, parseRestartPolicy as rr, MICROVM_IMAGE_TYPE as rt, createStudioServeManager as s, substituteAgainstState as sa, materializeLayerFromArn as si, applyEdgeResponseResult as sn, ImageOverrideError as sr, resolveMicrovmCodeArtifact as st, addStudioSpecificOptions as t, buildMessageEvent as ta, createWatchPredicates as ti, matchBehavior as tn, awsEndpointOptions as to, ecsClusterOption as tr, waitForAppAnswer as tt, reinvoke as u, substituteEnvVarsFromStateAsync as ua, filterRoutesByApiIdentifiers as ui, edgeHeadersToHttp as un, enforceImageOverrideOrphans as ur, addStartWebFunctionSpecificOptions as ut, startStudioServer as v, resolveCfnRegion as va, buildJwksUrlFromIssuer as vi, pickLambdaEdgeFunctionLogicalId as vn, listPinnedTargets as vr, startAgentCoreWsBridge as vt, createLocalListCommand as w, resolveSingleTarget as wa, computeRequestIdentityHash as wi, WEB_FUNCTION_TYPE as wn, getContainerNetworkIp as wr, parseOriginOverrides as wt, createStudioStore as x, collectSsmParameterRefs as xa, verifyJwtAuthorizer as xi, resolveCloudFrontDistribution as xn, DEFAULT_SHADOW_READY_TIMEOUT_MS as xr, createLocalStartCloudFrontCommand as xt, toStudioTargetGroups as y, resolveCfnStackName as ya, createJwksCache as yi, pickTargetFunctionLogicalId as yn, buildCloudMapIndex as yr, LocalStartCloudFrontError as yt, MICROVM_CONTROL_PATH as z, AGENTCORE_MCP_PROTOCOL as za, evaluateResponseParameters as zi, albStrategy as zn, signAgentCoreInvocation as zr, disposeWebFunctionArtifact as zt };
32196
+ //# sourceMappingURL=local-studio-C78UofCN.js.map