cdk-local 0.150.0 → 0.151.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,5 +1,5 @@
1
- import { C as stringifyThrown, E as setEmbedConfig, S as sanitizeServiceExceptionMessage, _ as clampErrorName, a as isDockerClientEnvKey, b as flattenToOneLine, c as runDockerStreaming, d as absoluteAssemblyPathEscape, f as assemblyPathEscape, g as resolveAssemblyPath, h as renderAssemblyPathEscape, i as getDockerCmd, l as spawnStreaming, m as namesTheSameDirectory, n as finchSecretArgvRefusal, o as isMalformedEnvKey, p as displayUntrustedValue, r as formatDockerLoginError, s as runDockerForeground, u as warnFinchArgvExposure, v as describeAwsFailureForWarn, w as getEmbedConfig, x as isAwsServiceException, y as describeCredentialLoadFailure } from "./docker-cmd-C2kvSLVs.js";
2
- import { t as getLogger } from "./logger-CuUAMAnt.js";
1
+ import { C as sanitizeServiceExceptionMessage, S as isAwsServiceException, _ as resolveAssemblyPath, a as isDockerClientEnvKey, b as describeCredentialLoadFailure, c as runDockerStreaming, d as absoluteAssemblyPathEscape, f as assemblyPathEscape, g as renderAssemblyPathEscape, h as namesTheSameDirectory, i as getDockerCmd, l as spawnStreaming, m as isPasteableCommandArg, n as finchSecretArgvRefusal, o as isMalformedEnvKey, p as displayUntrustedValue, r as formatDockerLoginError, s as runDockerForeground, u as warnFinchArgvExposure, v as clampErrorName, w as stringifyThrown, x as flattenToOneLine, y as describeAwsFailureForWarn } from "./docker-cmd-GME6jkl9.js";
2
+ import { a as setEmbedConfig, r as getEmbedConfig, t as getLogger } from "./logger-CGhtqHg0.js";
3
3
  import { chmodSync, cpSync, createWriteStream, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
4
4
  import { homedir, tmpdir } from "node:os";
5
5
  import * as path$1 from "node:path";
@@ -326,7 +326,10 @@ async function resolveProfileCredentials(profile) {
326
326
  try {
327
327
  const credsProvider = sts.config.credentials;
328
328
  const creds = typeof credsProvider === "function" ? await credsProvider() : credsProvider;
329
- if (!creds || !creds.accessKeyId || !creds.secretAccessKey) throw new Error(`--profile '${profile}': credential provider chain resolved without usable credentials. Check \`aws sso login --profile ` + profile + "` for SSO profiles, or `~/.aws/credentials` / `~/.aws/config` for regular profiles.");
329
+ if (!creds || !creds.accessKeyId || !creds.secretAccessKey) {
330
+ const ssoHint = isPasteableCommandArg(profile) ? "Check `aws sso login --profile " + profile + "` for SSO profiles" : "For an SSO profile, run `aws sso login` for that profile (the command is not written out because the name as rendered may not be the one your shell would act on)";
331
+ throw new Error(`--profile ${displayUntrustedValue(profile)}: credential provider chain resolved without usable credentials. ${ssoHint}, or check \`~/.aws/credentials\` / \`~/.aws/config\` for regular profiles.`);
332
+ }
330
333
  let region;
331
334
  try {
332
335
  const regionProvider = sts.config.region;
@@ -3389,7 +3392,7 @@ async function resolveMultiTarget(provided, params) {
3389
3392
  async function loadSynthDeps() {
3390
3393
  const [toolkitLib, { CdklIoHost }, { AssetManifestArtifact }] = await Promise.all([
3391
3394
  import("@aws-cdk/toolkit-lib"),
3392
- import("./cdkl-io-host-DYuHWzAS.js"),
3395
+ import("./cdkl-io-host-9lPKscRA.js"),
3393
3396
  import("@aws-cdk/cloud-assembly-api")
3394
3397
  ]);
3395
3398
  return {
@@ -3916,6 +3919,28 @@ function isCfnFlagPresent(opts) {
3916
3919
  const v = opts.fromCfnStack;
3917
3920
  return v !== void 0 && v !== false;
3918
3921
  }
3922
+ function hasExtraStateProviderActive(options, extraStateProviders) {
3923
+ if (!extraStateProviders) return false;
3924
+ const bag = options;
3925
+ return Object.keys(extraStateProviders).some((key) => Boolean(bag[key]));
3926
+ }
3927
+ function isStateSourceActive(options, extraStateProviders) {
3928
+ return isCfnFlagPresent(options) || hasExtraStateProviderActive(options, extraStateProviders);
3929
+ }
3930
+ function activeStateSourceFlag(options, extraStateProviders) {
3931
+ if (isCfnFlagPresent(options)) return "--from-cfn-stack";
3932
+ if (!extraStateProviders) return void 0;
3933
+ const bag = options;
3934
+ const key = Object.keys(extraStateProviders).find((k) => Boolean(bag[k]));
3935
+ return key === void 0 ? void 0 : toFlagName(key);
3936
+ }
3937
+ function stateSourceFlagNames(extraStateProviders) {
3938
+ return ["--from-cfn-stack", ...Object.keys(extraStateProviders ?? {}).map(toFlagName)];
3939
+ }
3940
+ function hostStateSourceFields(options, extraStateProviders) {
3941
+ if (!extraStateProviders || Object.keys(extraStateProviders).length === 0) return {};
3942
+ return { ...options };
3943
+ }
3919
3944
  function resolveCfnRegion(options, synthRegion) {
3920
3945
  const region = options.stackRegion ?? options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? synthRegion;
3921
3946
  if (region === void 0) throw new LocalStateSourceError("--from-cfn-stack requires a region to query CloudFormation. Set one of: --stack-region <region>, --region <region>, AWS_REGION env var, AWS_DEFAULT_REGION env var, or an env.region on the target CDK stack.");
@@ -11811,7 +11836,7 @@ function getContainerAwsCredentialsPath() {
11811
11836
  }
11812
11837
  async function writeProfileCredentialsFile(profileName, creds) {
11813
11838
  if (profileName === "") throw new Error("writeProfileCredentialsFile: profile name must not be empty.");
11814
- if (/[\r\n[\]]/.test(profileName)) throw new Error(`writeProfileCredentialsFile: profile name '${profileName}' contains a forbidden character (any of CR, LF, '[', ']' would corrupt the INI file or the docker -e env var).`);
11839
+ if (/[\r\n[\]]/.test(profileName)) throw new Error(`writeProfileCredentialsFile: profile name ${displayUntrustedValue(profileName)} contains a forbidden character (any of CR, LF, '[', ']' would corrupt the INI file or the docker -e env var).`);
11815
11840
  const dir = await mkdtemp(path$1.join(tmpdir(), `${getEmbedConfig().productName}-profile-creds-`));
11816
11841
  const hostPath = path$1.join(dir, "credentials");
11817
11842
  const lines = [
@@ -12959,11 +12984,6 @@ function envHasIntrinsicValue$1(templateEnv) {
12959
12984
  }
12960
12985
  return false;
12961
12986
  }
12962
- function hasExtraStateProviderActive(options, extraStateProviders) {
12963
- if (!extraStateProviders) return false;
12964
- for (const key of Object.keys(extraStateProviders)) if (options[key]) return true;
12965
- return false;
12966
- }
12967
12987
  async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options, extraStateProviders) {
12968
12988
  const logger = getLogger();
12969
12989
  const out = /* @__PURE__ */ new Map();
@@ -14861,7 +14881,7 @@ async function resolveHostCredentialsForSigV4(options, resolved, loaded, region,
14861
14881
  return await assumeAgentCoreExecutionRole(assumeRoleArn, region, options.profile);
14862
14882
  } catch (err) {
14863
14883
  const sigv4Detail = assumeRoleDetail(err, "STS AssumeRole (--sigv4 signing)");
14864
- logger.warn(`--assume-role: STS AssumeRole(${flattenToOneLine(assumeRoleArn)}) failed for --sigv4 signing: ${sigv4Detail}. Falling back to ${options.profile ? `--profile ${options.profile}` : "shell credentials"}.`);
14884
+ logger.warn(`--assume-role: STS AssumeRole(${flattenToOneLine(assumeRoleArn)}) failed for --sigv4 signing: ${sigv4Detail}. Falling back to ${options.profile ? `--profile ${displayUntrustedValue(options.profile)}` : "shell credentials"}.`);
14865
14885
  }
14866
14886
  if (options.profile) {
14867
14887
  const creds = await resolveProfileCredentials(options.profile);
@@ -14953,7 +14973,7 @@ async function resolveAgentCoreCodeImageFromS3(resolved, code, s3Source, options
14953
14973
  credentials = await assumeAgentCoreExecutionRole(assumeRoleArn, region, options.profile);
14954
14974
  } catch (err) {
14955
14975
  const bundleDetail = assumeRoleDetail(err, "STS AssumeRole (fromS3 bundle download)");
14956
- logger.warn(`--assume-role: STS AssumeRole(${flattenToOneLine(assumeRoleArn)}) failed for the fromS3 bundle download: ${bundleDetail}. Falling back to ${options.profile ? `--profile ${options.profile}` : "the default credentials"}.`);
14976
+ logger.warn(`--assume-role: STS AssumeRole(${flattenToOneLine(assumeRoleArn)}) failed for the fromS3 bundle download: ${bundleDetail}. Falling back to ${options.profile ? `--profile ${displayUntrustedValue(options.profile)}` : "the default credentials"}.`);
14957
14977
  }
14958
14978
  const bundle = await downloadAndExtractS3Bundle(location, {
14959
14979
  ...region !== void 0 && { region },
@@ -17223,7 +17243,7 @@ async function softReloadReplica(args) {
17223
17243
  const defaultDockerInspectWorkdirImpl = async (containerId) => {
17224
17244
  const { execFile } = await import("node:child_process");
17225
17245
  const { promisify } = await import("node:util");
17226
- const { getDockerCmd } = await import("./docker-cmd-C2kvSLVs.js").then((n) => n.t);
17246
+ const { getDockerCmd } = await import("./docker-cmd-GME6jkl9.js").then((n) => n.t);
17227
17247
  const { stdout } = await promisify(execFile)(getDockerCmd(), [
17228
17248
  "inspect",
17229
17249
  "--format",
@@ -17236,7 +17256,7 @@ let dockerInspectWorkdirImpl = defaultDockerInspectWorkdirImpl;
17236
17256
  const defaultDockerCpImpl = async (src, dst) => {
17237
17257
  const { execFile } = await import("node:child_process");
17238
17258
  const { promisify } = await import("node:util");
17239
- const { getDockerCmd } = await import("./docker-cmd-C2kvSLVs.js").then((n) => n.t);
17259
+ const { getDockerCmd } = await import("./docker-cmd-GME6jkl9.js").then((n) => n.t);
17240
17260
  await promisify(execFile)(getDockerCmd(), [
17241
17261
  "cp",
17242
17262
  src,
@@ -17247,7 +17267,7 @@ let dockerCpImpl = defaultDockerCpImpl;
17247
17267
  const defaultDockerRestartImpl = async (containerId) => {
17248
17268
  const { execFile } = await import("node:child_process");
17249
17269
  const { promisify } = await import("node:util");
17250
- const { getDockerCmd } = await import("./docker-cmd-C2kvSLVs.js").then((n) => n.t);
17270
+ const { getDockerCmd } = await import("./docker-cmd-GME6jkl9.js").then((n) => n.t);
17251
17271
  await promisify(execFile)(getDockerCmd(), ["restart", containerId]);
17252
17272
  };
17253
17273
  let dockerRestartImpl = defaultDockerRestartImpl;
@@ -17265,7 +17285,7 @@ async function disconnectOldFromSharedNetwork(oldInstance) {
17265
17285
  const defaultDockerNetworkDisconnectImpl = async (networkName, containerId) => {
17266
17286
  const { execFile } = await import("node:child_process");
17267
17287
  const { promisify } = await import("node:util");
17268
- const { getDockerCmd } = await import("./docker-cmd-C2kvSLVs.js").then((n) => n.t);
17288
+ const { getDockerCmd } = await import("./docker-cmd-GME6jkl9.js").then((n) => n.t);
17269
17289
  await promisify(execFile)(getDockerCmd(), [
17270
17290
  "network",
17271
17291
  "disconnect",
@@ -17405,7 +17425,7 @@ function pickEssentialContainerId(instance, service) {
17405
17425
  const defaultWaitForExitImpl = async (containerId) => {
17406
17426
  const { execFile } = await import("node:child_process");
17407
17427
  const { promisify } = await import("node:util");
17408
- const { getDockerCmd } = await import("./docker-cmd-C2kvSLVs.js").then((n) => n.t);
17428
+ const { getDockerCmd } = await import("./docker-cmd-GME6jkl9.js").then((n) => n.t);
17409
17429
  const { stdout } = await promisify(execFile)(getDockerCmd(), ["wait", containerId], { maxBuffer: 1024 * 1024 });
17410
17430
  const code = parseInt(stdout.trim(), 10);
17411
17431
  return Number.isFinite(code) ? code : -1;
@@ -17415,7 +17435,7 @@ const EXIT_LOG_TAIL_LINES = 50;
17415
17435
  const defaultReadContainerLogsImpl = async (containerId) => {
17416
17436
  const { execFile } = await import("node:child_process");
17417
17437
  const { promisify } = await import("node:util");
17418
- const { getDockerCmd } = await import("./docker-cmd-C2kvSLVs.js").then((n) => n.t);
17438
+ const { getDockerCmd } = await import("./docker-cmd-GME6jkl9.js").then((n) => n.t);
17419
17439
  const { stdout, stderr } = await promisify(execFile)(getDockerCmd(), [
17420
17440
  "logs",
17421
17441
  "--tail",
@@ -19950,6 +19970,7 @@ async function resolveAlbLambdaTargetEnv(plan, options, extraStateProviders) {
19950
19970
  if (lambdas.size === 0) return out;
19951
19971
  const effectiveAssumeRole = resolveEcsAssumeRoleOption(options);
19952
19972
  const envOptions = {
19973
+ ...hostStateSourceFields(options, extraStateProviders),
19953
19974
  ...options.fromCfnStack !== void 0 && { fromCfnStack: options.fromCfnStack },
19954
19975
  ...effectiveAssumeRole !== void 0 && { assumeRole: effectiveAssumeRole },
19955
19976
  ...options.region !== void 0 && { region: options.region },
@@ -22642,7 +22663,7 @@ async function handleRequest$1(req, res, state, lambdaInvokers, edgeInvokers, s3
22642
22663
  if (!assoc) continue;
22643
22664
  const invoke = edgeInvokers.get(assoc.functionLogicalId);
22644
22665
  if (!invoke) {
22645
- logger.warn(`Lambda@Edge ${eventType} function '${assoc.functionLogicalId}' was not booted (added after start-up); skipping. Restart start-cloudfront.`);
22666
+ logger.warn(`Lambda@Edge ${eventType} function '${assoc.functionLogicalId}' was not booted (it failed to boot at start-up, see the boot warning, or was added after start-up); skipping. Restart start-cloudfront.`);
22646
22667
  continue;
22647
22668
  }
22648
22669
  if (assoc.includeBody && edgeInput.body === void 0) edgeInput = {
@@ -22738,7 +22759,7 @@ async function handleRequest$1(req, res, state, lambdaInvokers, edgeInvokers, s3
22738
22759
  async function runEdgeResponseStage(assoc, eventType, ctx, edgeInvokers, logger) {
22739
22760
  const invoke = edgeInvokers.get(assoc.functionLogicalId);
22740
22761
  if (!invoke) {
22741
- logger.warn(`Lambda@Edge ${eventType} function '${assoc.functionLogicalId}' was not booted (added after start-up); skipping. Restart start-cloudfront.`);
22762
+ logger.warn(`Lambda@Edge ${eventType} function '${assoc.functionLogicalId}' was not booted (it failed to boot at start-up, see the boot warning, or was added after start-up); skipping. Restart start-cloudfront.`);
22742
22763
  return;
22743
22764
  }
22744
22765
  return applyEdgeResponseResult(await invoke(buildEdgeResponseEvent({
@@ -23214,10 +23235,16 @@ async function attachKvsModules(distribution, stacks, options, profileCredential
23214
23235
  const stack = stacks.find((s) => s.stackName === distribution.stackName);
23215
23236
  const synthRegion = stack?.region;
23216
23237
  const kvsFiles = stack ? normalizeKvsFileKeys(parseKvsFileOverrides(options.kvsFile), stack.template) : parseKvsFileOverrides(options.kvsFile);
23217
- const resolveDeployedKvs = isCfnFlagPresent(options) ? async (kvsLogicalId) => {
23238
+ const resolveDeployedKvs = isStateSourceActive(options, extraStateProviders) ? async (kvsLogicalId) => {
23218
23239
  const provider = createLocalStateProvider(options, distribution.stackName, synthRegion, extraStateProviders);
23219
23240
  if (!provider) return void 0;
23220
- const physicalId = (await provider.load(distribution.stackName, synthRegion))?.resources[kvsLogicalId]?.physicalId;
23241
+ let record;
23242
+ try {
23243
+ record = await provider.load(distribution.stackName, synthRegion);
23244
+ } finally {
23245
+ provider.dispose();
23246
+ }
23247
+ const physicalId = record?.resources[kvsLogicalId]?.physicalId;
23221
23248
  if (!physicalId) return void 0;
23222
23249
  if (physicalId.startsWith("arn:")) {
23223
23250
  const id = idFromArn(physicalId);
@@ -23285,7 +23312,7 @@ async function bootLambdaUrlOrigins(distribution, stacks, opts) {
23285
23312
  let runner;
23286
23313
  try {
23287
23314
  const lambda = resolveLambdaTarget(functionLogicalId, stacks);
23288
- const containerEnv = await resolveLambdaContainerEnv(lambda, opts.envOptions, opts.profileCredentials);
23315
+ const containerEnv = await resolveLambdaContainerEnv(lambda, opts.envOptions, opts.profileCredentials, opts.extraStateProviders);
23289
23316
  runner = createFrontDoorLambdaRunner(lambda, {
23290
23317
  containerHost: opts.containerHost,
23291
23318
  skipPull: opts.skipPull,
@@ -23324,7 +23351,7 @@ async function bootLambdaEdgeFunctions(distribution, stacks, opts) {
23324
23351
  }
23325
23352
  for (const functionLogicalId of functionLogicalIds) try {
23326
23353
  const lambda = resolveLambdaTarget(functionLogicalId, stacks);
23327
- const containerEnv = await resolveLambdaContainerEnv(lambda, opts.envOptions, opts.profileCredentials);
23354
+ const containerEnv = await resolveLambdaContainerEnv(lambda, opts.envOptions, opts.profileCredentials, opts.extraStateProviders);
23328
23355
  const runner = createFrontDoorLambdaRunner(lambda, {
23329
23356
  containerHost: opts.containerHost,
23330
23357
  skipPull: opts.skipPull,
@@ -23344,25 +23371,53 @@ async function bootLambdaEdgeFunctions(distribution, stacks, opts) {
23344
23371
  runners
23345
23372
  };
23346
23373
  }
23374
+ function buildLambdaEnvOptions(options, extraStateProviders) {
23375
+ return {
23376
+ ...hostStateSourceFields(options, extraStateProviders),
23377
+ ...options.fromCfnStack !== void 0 && { fromCfnStack: options.fromCfnStack },
23378
+ ...options.assumeRole !== void 0 && { assumeRole: options.assumeRole },
23379
+ ...options.region !== void 0 && { region: options.region },
23380
+ ...options.profile !== void 0 && { profile: options.profile },
23381
+ ...options.stackRegion !== void 0 && { stackRegion: options.stackRegion }
23382
+ };
23383
+ }
23384
+ function buildLambdaBootOptions(options, profileCredentials, extraStateProviders) {
23385
+ return {
23386
+ containerHost: options.host,
23387
+ skipPull: options.pull === false,
23388
+ envOptions: buildLambdaEnvOptions(options, extraStateProviders),
23389
+ ...profileCredentials !== void 0 && { profileCredentials },
23390
+ ...extraStateProviders !== void 0 && { extraStateProviders }
23391
+ };
23392
+ }
23347
23393
  function warnUnsupported(distribution) {
23348
23394
  const logger = getLogger();
23349
23395
  for (const origin of distribution.origins.values()) if (origin.kind === "custom") logger.warn(`Origin '${origin.originId}' is a custom (non-S3, non-Lambda-Function-URL) origin (${origin.domainName}); ${getEmbedConfig().cliName} start-cloudfront serves S3 origins and Lambda Function URL origins only. Requests routed to it return 502.`);
23350
23396
  else if (origin.kind === "s3-unresolved") logger.warn(`Origin '${origin.originId}' is an S3 origin with no resolvable local source (no BucketDeployment found, or its source could not be located in the cloud assembly). Pass --from-cfn-stack to serve the deployed bucket from real S3 on demand, or point it at a local directory with --origin ${origin.originId}=<dir>. Requests routed to it return 502.`);
23351
23397
  }
23352
- function warnUnusedCacheOrigin(options) {
23353
- if (options.cacheOrigin === true && !isCfnFlagPresent(options)) getLogger().warn("--cache-origin has no effect without --from-cfn-stack: it caches a deployed-S3 read-through origin, which is only built under --from-cfn-stack. A local BucketDeployment / --origin <id>=<dir> origin serves from disk and is not cached. Pass --from-cfn-stack to enable the deployed-S3 origin (then --cache-origin applies), or drop --cache-origin.");
23398
+ function warnUnusedCacheOrigin(options, extraStateProviders) {
23399
+ if (options.cacheOrigin === true && !isStateSourceActive(options, extraStateProviders)) {
23400
+ const flags = stateSourceFlagNames(extraStateProviders).join(" or ");
23401
+ getLogger().warn(`--cache-origin has no effect without ${flags}: it caches a deployed-S3 read-through origin, which is only built under a state source. A local BucketDeployment / --origin <id>=<dir> origin serves from disk and is not cached. Pass ${flags} to enable the deployed-S3 origin (then --cache-origin applies), or drop --cache-origin.`);
23402
+ }
23354
23403
  }
23355
23404
  async function resolveDeployedS3Origins(distribution, stacks, options, profileCredentials, logger, extraStateProviders) {
23356
23405
  const readers = /* @__PURE__ */ new Map();
23357
23406
  const buckets = /* @__PURE__ */ new Map();
23358
- if (!isCfnFlagPresent(options)) return {
23407
+ const stateFlag = activeStateSourceFlag(options, extraStateProviders);
23408
+ if (stateFlag === void 0) return {
23359
23409
  readers,
23360
23410
  buckets
23361
23411
  };
23362
23412
  const synthRegion = stacks.find((s) => s.stackName === distribution.stackName)?.region;
23363
- const region = options.stackRegion ?? options.region ?? synthRegion;
23364
23413
  const provider = createLocalStateProvider(options, distribution.stackName, synthRegion, extraStateProviders);
23365
- const record = provider ? await provider.load(distribution.stackName, synthRegion) : void 0;
23414
+ let record;
23415
+ try {
23416
+ record = provider ? await provider.load(distribution.stackName, synthRegion) : void 0;
23417
+ } finally {
23418
+ provider?.dispose();
23419
+ }
23420
+ const region = options.stackRegion ?? options.region ?? synthRegion ?? record?.region;
23366
23421
  const distributionId = record?.resources[distribution.logicalId]?.physicalId;
23367
23422
  for (const origin of [...distribution.origins.values()]) {
23368
23423
  if (origin.kind !== "s3-unresolved") continue;
@@ -23394,7 +23449,7 @@ async function resolveDeployedS3Origins(distribution, stacks, options, profileCr
23394
23449
  originId: origin.originId,
23395
23450
  bucketName
23396
23451
  });
23397
- logger.info(`Origin '${origin.originId}': no local BucketDeployment source; serving from deployed S3 (bucket=${bucketName}, resolved via ${via}) on demand under --from-cfn-stack.`);
23452
+ logger.info(`Origin '${origin.originId}': no local BucketDeployment source; serving from deployed S3 (bucket=${bucketName}, resolved via ${via}) on demand under ${stateFlag}.`);
23398
23453
  }
23399
23454
  return {
23400
23455
  readers,
@@ -23458,21 +23513,9 @@ async function localStartCloudFrontCommand(target, options, extraStateProviders,
23458
23513
  const profileCredentials = options.profile ? await resolveProfileCredentials(options.profile) : void 0;
23459
23514
  const deployedS3 = await resolveDeployedS3Origins(initial.distribution, initial.stacks, options, profileCredentials, logger, extraStateProviders);
23460
23515
  warnUnsupported(initial.distribution);
23461
- warnUnusedCacheOrigin(options);
23462
- const envOptions = {
23463
- ...options.fromCfnStack !== void 0 && { fromCfnStack: options.fromCfnStack },
23464
- ...options.assumeRole !== void 0 && { assumeRole: options.assumeRole },
23465
- ...options.region !== void 0 && { region: options.region },
23466
- ...options.profile !== void 0 && { profile: options.profile },
23467
- ...options.stackRegion !== void 0 && { stackRegion: options.stackRegion }
23468
- };
23516
+ warnUnusedCacheOrigin(options, extraStateProviders);
23469
23517
  await attachKvsModules(initial.distribution, initial.stacks, options, profileCredentials, logger, extraStateProviders);
23470
- const bootOpts = {
23471
- containerHost: options.host,
23472
- skipPull: options.pull === false,
23473
- envOptions,
23474
- ...profileCredentials !== void 0 && { profileCredentials }
23475
- };
23518
+ const bootOpts = buildLambdaBootOptions(options, profileCredentials, extraStateProviders);
23476
23519
  const { invokers: lambdaInvokers, runners: lambdaRunners } = await bootLambdaUrlOrigins(initial.distribution, initial.stacks, bootOpts);
23477
23520
  const { invokers: edgeInvokers, runners: edgeRunners } = await bootLambdaEdgeFunctions(initial.distribution, initial.stacks, bootOpts);
23478
23521
  let server;
@@ -23552,7 +23595,7 @@ async function localStartCloudFrontCommand(target, options, extraStateProviders,
23552
23595
  }
23553
23596
  function createLocalStartCloudFrontCommand(opts = {}) {
23554
23597
  setEmbedConfig(opts.embedConfig);
23555
- const cmd = new Command("start-cloudfront").description("Run a long-running local server that serves a CloudFront distribution: its S3 origin content (resolved from the BucketDeployment source in the cloud assembly) and its Lambda Function URL origins (the backing Lambda is run locally via RIE), plus its viewer-request / viewer-response CloudFront Functions, reproducing the distribution routing locally so a rewrite / routing change is verifiable in seconds. Serves S3 and Lambda Function URL origins; other custom origins and Lambda@Edge are not run (warn-and-skip). Tip: omit the target in a terminal to pick interactively.").argument("[target]", "CloudFront distribution to serve. Accepts the CDK Construct path ('MyStack/MyDist'), an ancestor prefix, or the stack-qualified logical id ('MyStack:MyDist'). When omitted in a TTY, an interactive picker opens.").action(withErrorHandling(async (target, options) => {
23598
+ const cmd = new Command("start-cloudfront").description("Run a long-running local server that serves a CloudFront distribution: its S3 origin content (resolved from the BucketDeployment source in the cloud assembly) and its Lambda Function URL origins (the backing Lambda is run locally via RIE), plus its viewer-request / viewer-response CloudFront Functions, reproducing the distribution routing locally so a rewrite / routing change is verifiable in seconds. Serves S3 and Lambda Function URL origins, and runs Lambda@Edge functions in local RIE containers. Both Lambda kinds need Docker: a Function URL origin that fails to boot stops start-up, while a Lambda@Edge function that fails to boot is warn-and-skipped (its stage does not run). Other custom origins are not run (warn-and-skip; requests routed to one return 502). Tip: omit the target in a terminal to pick interactively.").argument("[target]", "CloudFront distribution to serve. Accepts the CDK Construct path ('MyStack/MyDist'), an ancestor prefix, or the stack-qualified logical id ('MyStack:MyDist'). When omitted in a TTY, an interactive picker opens.").action(withErrorHandling(async (target, options) => {
23556
23599
  await localStartCloudFrontCommand(target, options, opts.extraStateProviders, opts.synthesizer);
23557
23600
  }));
23558
23601
  addStartCloudFrontSpecificOptions(cmd);
@@ -29527,4 +29570,4 @@ function addStudioSpecificOptions(cmd) {
29527
29570
 
29528
29571
  //#endregion
29529
29572
  export { applyEdgeResponseResult as $, buildJwksUrlFromIssuer as $n, resolveCfnStackName as $r, buildCloudMapIndex as $t, startAgentCoreHttpServer as A, DynamicReferenceResolver as Ai, classifySourceChange as An, ConnectionRegistry as Ar, addRunTaskSpecificOptions as At, idFromArn as B, resolveProfileCredentials as Bi, buildStageMap as Bn, resolveRuntimeFileExtension as Br, resolveEcsAssumeRoleOption as Bt, addListSpecificOptions as C, resolveAgentCoreTarget as Ci, waitForAgentCorePing as Cn, tryParseStatus as Cr, parseLbPortOverrides as Ct, createLocalStartAgentCoreCommand as D, tryResolveImageFnJoin as Di, computeCodeImageTag as Dn, probeHostGatewaySupport as Dr, addStartServiceSpecificOptions as Dt, addStartAgentCoreSpecificOptions as E, substituteImagePlaceholders as Ei, buildAgentCoreCodeImage as En, HOST_GATEWAY_MIN_VERSION as Er, resolveAlbFrontDoor as Et, createLocalStartCloudFrontCommand as F, keysOverriddenBy as Fi, createWatchPredicates as Fn, buildDisconnectEvent as Fr, addImageOverrideOptions as Ft, classifyS3Error as G, filterRoutesByApiIdentifiers as Gn, substituteEnvVarsFromState as Gr, enforceImageOverrideOrphans as Gt, createDeployedKvsDataSource as H, isProxyEnvConfigured as Hi, resolveEnvVars$1 as Hn, EcsTaskResolutionError as Hr, runEcsServiceEmulator as Ht, normalizeKvsFileKeys as I, parseDynamicReference as Ii, resolveApiTargetSubset as In, buildMessageEvent as Ir, buildEcsImageResolutionContext$1 as It, startCloudFrontServer as J, startApiServer as Jn, createLocalStateProvider as Jr, resolveImageOverrides as Jt, createS3OriginReader as K, groupRoutesByServer as Kn, substituteEnvVarsFromStateAsync as Kr, mergeForService as Kt, parseKvsFileOverrides as L, resolveDynamicReferencesInEnv as Li, createAuthorizerCache as Ln, architectureToPlatform as Lr, ecsClusterOption as Lt, startAgentCoreWsBridge as M, deployedFillMayBeSecret as Mi, createLocalInvokeCommand as Mn, handleConnectionsRequest as Mr, MAX_TASKS_SUBNET_RANGE_CAP as Mt, LocalStartCloudFrontError as N, firstUsableRegion as Ni, addStartApiSpecificOptions as Nn, parseConnectionsPath as Nr, addCommonEcsServiceOptions as Nt, buildAgentCoreServeAuthCheck as O, LocalInvokeBuildError as Oi, renderCodeDockerfile as On, resolveHostGatewayExtraHosts as Or, createLocalStartServiceCommand as Ot, addStartCloudFrontSpecificOptions as P, keysNotFromTemplate as Pi, createLocalStartApiCommand as Pn, buildConnectEvent as Pr, addEcsAssumeRoleOptions as Pt, applyEdgeRequestResult as Q, buildCognitoJwksUrl as Qn, resolveCfnRegion as Qr, listPinnedTargets as Qt, parseOriginOverrides as R, withoutKeys as Ri, createFileWatcher as Rn, buildContainerImage as Rr, parseMaxTasks as Rt, StudioEventBus as S, pickAgentCoreCandidateStack as Si, waitForAgentCoreHttpReady as Sn, selectIntegrationResponse as Sr, createLocalStartAlbCommand as St, formatTargetListing as T, formatStateRemedy as Ti, SUPPORTED_CODE_RUNTIMES as Tn, HOST_DOCKER_INTERNAL_GATEWAY as Tr, isApplicationLoadBalancer as Tt, resolveDeployedKvsArnByName as U, availableApiIdentifiers as Un, substituteAgainstState as Ur, ImageOverrideError as Ut, resolveKvsModulesForDistribution as V, buildProxyClientConfig as Vi, materializeLayerFromArn as Vn, resolveRuntimeImage as Vr, resolveSharedSidecarCredentials as Vt, resolveDeployedOriginBucket as W, filterRoutesByApiIdentifier as Wn, substituteAgainstStateAsync as Wr, buildImageOverrideTag as Wt, serveFromStaticOrigin as X, resolveServiceIntegrationParameters as Xn, rejectExplicitCfnStackWithMultipleStacks as Xr, describePinnedImageUri as Xt, resolveErrorResponseCandidates as Y, resolveSelectionExpression as Yn, isCfnFlagPresent as Yr, runImageOverrideBuilds as Yt, serveLambdaUrlOrigin as Z, defaultCredentialsLoader as Zn, resolveCfnFallbackRegion as Zr, isLocalCdkAssetImage as Zt, filterStudioTargetGroups as _, AGENTCORE_AGUI_PROTOCOL as _i, parseSseForJsonRpc as _n, applyAuthorizerOverlay as _r, createCloudFrontModule as _t, createLocalStudioCommand as a, countTargets as ai, attachContainerLogStreamer as an, computeRequestIdentityHash as ar, describeS3OriginDomain as at, renderStudioHtml as b, AGENTCORE_RUNTIME_TYPE as bi, AGENTCORE_SESSION_ID_HEADER as bn, evaluateResponseParameters as br, addAlbSpecificOptions as bt, startStudioProxy as c, discoverWebSocketApis as ci, bridgeAgentCoreWs as cn, invokeTokenAuthorizer as cr, pickFunctionUrlLogicalIdFromOrigin as ct, createStudioDispatcher as d, parseSelectionExpressionPath as di, A2A_PATH as dn, buildCorsConfigByApiId as dr, pickTargetFunctionLogicalId as dt, CfnLocalStateProvider as ei, CloudMapRegistry as en, createJwksCache as er, buildEdgeRequestEvent as et, filterStudioCustomResources as f, webSocketApiMatchesIdentifier as fi, a2aInvokeOnce as fn, buildCorsConfigFromCloudFrontChain as fr, resolveCloudFrontDistribution as ft, annotatePinnedEcsTargets as g, AGENTCORE_A2A_PROTOCOL as gi, mcpInvokeOnce as gn, translateLambdaResponse as gr, stripCloudFrontImport as gt, annotateEcsTaskPinnedTargets as h, resolveLambdaArnIntrinsic as hi, MCP_PROTOCOL_VERSION as hn, matchRoute as hr, runViewerResponse as ht, coerceStopRequest as i, resolveSingleTarget as ii, getContainerNetworkIp as in, buildMethodArn as ir, CLOUDFRONT_DISTRIBUTION_TYPE as it, attachAgentCoreWsBridge as j, containsDynamicReference as ji, addInvokeSpecificOptions as jn, buildMgmtEndpointEnvUrl as jr, createLocalRunTaskCommand as jt, selectServeInboundAuth as k, DynamicReferenceResolutionError as ki, toCmdArgv as kn, bufferToBody as kr, serviceStrategy as kt, relayServeRequest as l, discoverWebSocketApisOrThrow as li, invokeAgentCoreWs as ln, attachAuthorizers as lr, pickKvsLogicalIdFromArn as lt, annotateAlbPinnedBackingServices as m, pickRefLogicalId as mi, MCP_PATH as mn, matchPreflight as mr, runViewerRequest as mt, coerceRunRequest as n, resolveSsmParameters as ni, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as nn, verifyJwtAuthorizer as nr, edgeHeadersToHttp as nt, resolveServeBaseUrl as o, listTargets as oi, addInvokeAgentCoreSpecificOptions as on, evaluateCachedLambdaPolicy as or, extractKvsAssociations as ot, isCustomResourceLambdaTarget as p, discoverRoutes as pi, MCP_CONTAINER_PORT as pn, isFunctionUrlOacFronted as pr, compileCloudFrontFunction as pt, matchBehavior as q, readMtlsMaterialsFromDisk as qn, LocalStateSourceError as qr, parseImageOverrideFlags as qt, coerceServeRequest as r, resolveWatchConfig as ri, setShadowReadyTimeoutMs as rn, verifyJwtViaDiscovery as rr, httpHeadersToEdge as rt, createStudioServeManager as s, availableWebSocketApiIdentifiers as si, createLocalInvokeAgentCoreCommand as sn, invokeRequestAuthorizer as sr, isCloudFrontDistribution as st, addStudioSpecificOptions as t, collectSsmParameterRefs as ti, DEFAULT_SHADOW_READY_TIMEOUT_MS as tn, verifyCognitoJwt as tr, buildEdgeResponseEvent as tt, reinvoke as u, filterWebSocketApisByIdentifiers as ui, A2A_CONTAINER_PORT as un, applyCorsResponseHeaders as ur, pickLambdaEdgeFunctionLogicalId as ut, startStudioServer as v, AGENTCORE_HTTP_PROTOCOL as vi, AGENTCORE_SIGV4_SERVICE as vn, buildHttpApiV2Event as vr, createLocalFileKvsDataSource as vt, createLocalListCommand as w, derivePseudoParametersFromRegion as wi, downloadAndExtractS3Bundle as wn, VtlEvaluationError as wr, resolveAlbTarget as wt, createStudioStore as x, AgentCoreResolutionError as xi, invokeAgentCore as xn, pickResponseTemplate as xr, albStrategy as xt, toStudioTargetGroups as y, AGENTCORE_MCP_PROTOCOL as yi, signAgentCoreInvocation as yn, buildRestV1Event as yr, createUnboundCloudFrontModule as yt, resolveCloudFrontTarget as z, buildStsClientConfig as zi, attachStageContext as zn, resolveRuntimeCodeMountPath as zr, parseRestartPolicy as zt };
29530
- //# sourceMappingURL=local-studio-BhqhdhZ5.js.map
29573
+ //# sourceMappingURL=local-studio-Mta0QWLf.js.map