cdk-local 0.167.0 → 0.167.1

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.
@@ -2457,9 +2457,26 @@ async function resolveDynamicReferencesInEnv(env, options) {
2457
2457
  }
2458
2458
  }
2459
2459
 
2460
+ // src/utils/ambient-default-region.ts
2461
+ let recorded;
2462
+ function setAmbientDefaultRegion(region) {
2463
+ recorded = region === "" ? void 0 : region;
2464
+ }
2465
+ function ambientDefaultRegion() {
2466
+ return recorded !== void 0 && process.env["AWS_REGION"] === recorded ? recorded : void 0;
2467
+ }
2468
+ function namedEnvAwsRegion() {
2469
+ return ambientDefaultRegion() === void 0 ? process.env["AWS_REGION"] : void 0;
2470
+ }
2471
+ function regionOrAmbientDefault(stackRegion) {
2472
+ const ambient = ambientDefaultRegion();
2473
+ if (ambient === void 0) return stackRegion;
2474
+ return stackRegion === void 0 || stackRegion === "" || stackRegion === "unknown-region" ? ambient : stackRegion;
2475
+ }
2476
+
2460
2477
  // src/utils/profile-region.ts
2461
2478
  async function resolveContainerRegion(sources) {
2462
- const named = firstUsableRegion(sources.region, process.env["AWS_REGION"], process.env["AWS_DEFAULT_REGION"], sources.stackRegion, sources.stateRegion);
2479
+ const named = firstUsableRegion(sources.region, namedEnvAwsRegion(), process.env["AWS_DEFAULT_REGION"], sources.stackRegion, sources.stateRegion, ambientDefaultRegion());
2463
2480
  if (named) return named.toLowerCase();
2464
2481
  return firstUsableRegion(await resolveSdkDefaultRegion(sources.profile))?.toLowerCase();
2465
2482
  }
@@ -5678,7 +5695,7 @@ function hostStateSourceFields(options, extraStateProviders) {
5678
5695
  return { ...options };
5679
5696
  }
5680
5697
  function resolveCfnRegion(options, synthRegion) {
5681
- const region = options.stackRegion ?? options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? synthRegion;
5698
+ const region = options.stackRegion ?? options.region ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(synthRegion);
5682
5699
  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.");
5683
5700
  return region;
5684
5701
  }
@@ -6297,7 +6314,15 @@ async function substituteAgainstStateAsync(value, contextOrResources) {
6297
6314
  };
6298
6315
  const intrinsic = keys[0];
6299
6316
  const arg = obj[intrinsic];
6300
- if (intrinsic === "Ref" || intrinsic === "Fn::GetAtt" || intrinsic === "Fn::Sub" || intrinsic === "Fn::Join" || intrinsic === "Fn::Select" || intrinsic === "Fn::Split") return substituteAgainstState(value, context);
6317
+ if (intrinsic === "Ref" || intrinsic === "Fn::GetAtt" || intrinsic === "Fn::Sub" || intrinsic === "Fn::Join" || intrinsic === "Fn::Select" || intrinsic === "Fn::Split") {
6318
+ if (!containsCrossStackIntrinsic(value)) return substituteAgainstState(value, context);
6319
+ const rewritten = await resolveNestedCrossStack(value, context);
6320
+ if ("reason" in rewritten) return {
6321
+ kind: "unresolved",
6322
+ reason: rewritten.reason
6323
+ };
6324
+ return substituteAgainstState(rewritten.value, context);
6325
+ }
6301
6326
  if (intrinsic === "Fn::ImportValue") return resolveImportValueAsync(arg, context);
6302
6327
  if (intrinsic === "Fn::GetStackOutput") return resolveGetStackOutputAsync(arg, context);
6303
6328
  return {
@@ -6305,6 +6330,39 @@ async function substituteAgainstStateAsync(value, contextOrResources) {
6305
6330
  reason: `unsupported intrinsic ${displayIdent(intrinsic)} (supported: Ref, Fn::GetAtt, Fn::Sub, Fn::Join, Fn::Select, Fn::Split, Fn::ImportValue, Fn::GetStackOutput)`
6306
6331
  };
6307
6332
  }
6333
+ function isCrossStackNode(value) {
6334
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
6335
+ return Object.hasOwn(value, "Fn::ImportValue") || Object.hasOwn(value, "Fn::GetStackOutput");
6336
+ }
6337
+ function containsCrossStackIntrinsic(value) {
6338
+ if (value === null || typeof value !== "object") return false;
6339
+ if (Array.isArray(value)) return value.some(containsCrossStackIntrinsic);
6340
+ if (isCrossStackNode(value)) return true;
6341
+ return Object.values(value).some(containsCrossStackIntrinsic);
6342
+ }
6343
+ async function resolveNestedCrossStack(value, context) {
6344
+ if (!containsCrossStackIntrinsic(value)) return { value };
6345
+ if (isCrossStackNode(value)) {
6346
+ const sub = await substituteAgainstStateAsync(value, context);
6347
+ return sub.kind === "literal" ? { value: sub.value } : { reason: sub.reason };
6348
+ }
6349
+ if (Array.isArray(value)) {
6350
+ const out = [];
6351
+ for (const item of value) {
6352
+ const r = await resolveNestedCrossStack(item, context);
6353
+ if ("reason" in r) return r;
6354
+ out.push(r.value);
6355
+ }
6356
+ return { value: out };
6357
+ }
6358
+ const out = {};
6359
+ for (const [key, item] of Object.entries(value)) {
6360
+ const r = await resolveNestedCrossStack(item, context);
6361
+ if ("reason" in r) return r;
6362
+ defineOwnKey(out, key, r.value);
6363
+ }
6364
+ return { value: out };
6365
+ }
6308
6366
  async function resolveImportValueAsync(arg, context) {
6309
6367
  const inner = substituteAgainstState(arg, context);
6310
6368
  if (inner.kind !== "literal") return {
@@ -6637,6 +6695,12 @@ function detectEcsImageResolutionNeeds(stack) {
6637
6695
  if (need.pseudo) needsPseudoParameters = true;
6638
6696
  if (need.state) needsStateResources = true;
6639
6697
  if (containerHasIntrinsicEnvOrSecret(co)) needsEnvOrSecretSubstitution = true;
6698
+ const argv = containerArgvElements(co);
6699
+ if (argv.some((v) => v !== null && typeof v === "object")) needsEnvOrSecretSubstitution = true;
6700
+ if (argv.some(isCrossStackIntrinsic)) {
6701
+ needsEnvOrSecretSubstitution = true;
6702
+ needsCrossStackResolver = true;
6703
+ }
6640
6704
  if (containerHasCrossStackEnvOrSecret(co)) {
6641
6705
  needsEnvOrSecretSubstitution = true;
6642
6706
  needsCrossStackResolver = true;
@@ -6675,10 +6739,16 @@ function containerHasCrossStackEnvOrSecret(c) {
6675
6739
  }
6676
6740
  return false;
6677
6741
  }
6742
+ function containerArgvElements(c) {
6743
+ const health = c["HealthCheck"];
6744
+ return [
6745
+ c["Command"],
6746
+ c["EntryPoint"],
6747
+ health && typeof health === "object" ? health["Command"] : void 0
6748
+ ].flatMap((l) => Array.isArray(l) ? l : []);
6749
+ }
6678
6750
  function isCrossStackIntrinsic(value) {
6679
- if (!value || typeof value !== "object") return false;
6680
- const obj = value;
6681
- return "Fn::ImportValue" in obj || "Fn::GetStackOutput" in obj;
6751
+ return containsCrossStackIntrinsic(value);
6682
6752
  }
6683
6753
  function volumeHasIntrinsicSourcePath(v) {
6684
6754
  if (!v || typeof v !== "object") return false;
@@ -6910,10 +6980,13 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
6910
6980
  const name = pickString(c["Name"]);
6911
6981
  if (!name) throw new EcsTaskResolutionError(`Task ${displayIdent(taskLogicalId)} ContainerDefinitions[${idx}] has no Name.`);
6912
6982
  const image = parseContainerImage(c["Image"], name, taskLogicalId, resources, stack, context);
6913
- const command = pickStringArray$1(c["Command"]);
6914
- const entryPoint = pickStringArray$1(c["EntryPoint"]);
6983
+ const containerContext = contextForContainer(context, name);
6984
+ const subContext = buildSubstitutionContextFromImageContext(containerContext);
6985
+ const unresolvedCommandElements = [];
6986
+ const argv = (raw, field) => resolveArgvArray(raw, field, subContext, containerContext, unresolvedCommandElements);
6987
+ const command = argv(c["Command"], "Command");
6988
+ const entryPoint = argv(c["EntryPoint"], "EntryPoint");
6915
6989
  const workingDirectory = pickString(c["WorkingDirectory"]);
6916
- const subContext = buildSubstitutionContextFromImageContext(contextForContainer(context, name));
6917
6990
  const environment = {};
6918
6991
  const sensitiveEnvKeys = [];
6919
6992
  const droppedEnvKeys = [];
@@ -7027,7 +7100,7 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
7027
7100
  let healthCheck;
7028
7101
  if (c["HealthCheck"] && typeof c["HealthCheck"] === "object") {
7029
7102
  const h = c["HealthCheck"];
7030
- const command2 = pickStringArray$1(h["Command"]);
7103
+ const command2 = argv(h["Command"], "HealthCheck.Command");
7031
7104
  if (command2 && command2.length > 0) {
7032
7105
  healthCheck = { command: command2 };
7033
7106
  if (typeof h["Interval"] === "number") healthCheck.interval = h["Interval"];
@@ -7079,8 +7152,117 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
7079
7152
  if (user !== void 0) out.user = user;
7080
7153
  if (privileged !== void 0) out.privileged = privileged;
7081
7154
  if (readonlyRootFilesystem !== void 0) out.readonlyRootFilesystem = readonlyRootFilesystem;
7155
+ if (unresolvedCommandElements.length > 0) out.unresolvedCommandElements = unresolvedCommandElements;
7156
+ return out;
7157
+ }
7158
+ function resolveArgvArray(raw, field, subContext, context, unresolved) {
7159
+ if (!Array.isArray(raw)) return void 0;
7160
+ return raw.map((element, index) => {
7161
+ if (typeof element === "string") return element;
7162
+ if (typeof element === "number" || typeof element === "boolean") return String(element);
7163
+ if (!element || typeof element !== "object" || Array.isArray(element)) {
7164
+ unresolved.push({
7165
+ field,
7166
+ index,
7167
+ reason: "not a string or an intrinsic"
7168
+ });
7169
+ return "";
7170
+ }
7171
+ if (isCrossStackIntrinsic(element)) {
7172
+ unresolved.push({
7173
+ field,
7174
+ index,
7175
+ reason: CROSS_STACK_ARGV_REASON
7176
+ });
7177
+ return "";
7178
+ }
7179
+ if (!subContext) {
7180
+ unresolved.push({
7181
+ field,
7182
+ index,
7183
+ reason: `intrinsic-valued and no deployed state was loaded: ${formatStateRemedy(context)}`
7184
+ });
7185
+ return "";
7186
+ }
7187
+ const secret = secretAttributeRead(element, subContext.resources);
7188
+ if (secret !== void 0) {
7189
+ unresolved.push({
7190
+ field,
7191
+ index,
7192
+ reason: secret
7193
+ });
7194
+ return "";
7195
+ }
7196
+ const { result: sub, consumedSensitive } = resolveWithSensitivity(element, subContext);
7197
+ const arg = argvValue(sub, consumedSensitive);
7198
+ if ("value" in arg) return arg.value;
7199
+ unresolved.push({
7200
+ field,
7201
+ index,
7202
+ reason: arg.reason
7203
+ });
7204
+ return "";
7205
+ });
7206
+ }
7207
+ const STATE_SECRET_MASK = "***";
7208
+ const SECRET_ATTRIBUTE_NAME = /secret|password|credential/i;
7209
+ const NON_SECRET_ATTRIBUTE_SUFFIX = /(arn|id|name|url|alias|status)$/i;
7210
+ const SECRET_VALUED_ATTRIBUTES = /* @__PURE__ */ new Map([
7211
+ ["AWS::AppSync::ApiKey", ["ApiKey"]],
7212
+ ["AWS::EC2::IpamExternalResourceVerificationToken", ["TokenValue"]],
7213
+ ["AWS::IVS::StreamKey", ["Value"]]
7214
+ ]);
7215
+ function secretAttributeRead(element, stateResources) {
7216
+ for (const [logicalId, attribute] of getAttReads(element)) {
7217
+ const record = Object.hasOwn(stateResources, logicalId) ? stateResources[logicalId] : void 0;
7218
+ const recorded = record?.attributes;
7219
+ const stored = recorded && Object.hasOwn(recorded, attribute) ? recorded[attribute] : void 0;
7220
+ const type = typeof record?.resourceType === "string" ? record.resourceType : "";
7221
+ const typed = SECRET_VALUED_ATTRIBUTES.get(type);
7222
+ if (SECRET_ATTRIBUTE_NAME.test(attribute) && !NON_SECRET_ATTRIBUTE_SUFFIX.test(attribute) || typed?.includes(attribute) === true || type.startsWith("Custom::") || type === "AWS::CloudFormation::CustomResource" || type === "AWS::CloudFormation::Stack" && attribute.startsWith("Outputs.") || stored === STATE_SECRET_MASK) return `reads ${displayIdent(logicalId)}.${displayIdent(attribute)}, an attribute that is or may be a secret, which ${getEmbedConfig().binaryName} will not put on the docker run command line; pass the value through Environment or Secrets instead`;
7223
+ }
7224
+ }
7225
+ function getAttReads(node, out = []) {
7226
+ if (node === null || typeof node !== "object") return out;
7227
+ if (Array.isArray(node)) {
7228
+ for (const item of node) getAttReads(item, out);
7229
+ return out;
7230
+ }
7231
+ for (const [key, value] of Object.entries(node)) {
7232
+ if (key === "Fn::GetAtt") {
7233
+ if (Array.isArray(value) && typeof value[0] === "string" && typeof value[1] === "string") out.push([value[0], value[1]]);
7234
+ else if (typeof value === "string" && value.includes(".")) {
7235
+ const dot = value.indexOf(".");
7236
+ out.push([value.slice(0, dot), value.slice(dot + 1)]);
7237
+ }
7238
+ } else if (key === "Fn::Sub") {
7239
+ const template = Array.isArray(value) ? value[0] : value;
7240
+ if (typeof template === "string") for (const m of template.matchAll(/\$\{([^}!][^}]*)\}/g)) {
7241
+ const ref = m[1].trim();
7242
+ const dot = ref.indexOf(".");
7243
+ if (dot > 0 && !ref.startsWith("AWS::")) out.push([ref.slice(0, dot), ref.slice(dot + 1)]);
7244
+ }
7245
+ }
7246
+ getAttReads(value, out);
7247
+ }
7082
7248
  return out;
7083
7249
  }
7250
+ const CROSS_STACK_ARGV_REASON = "a cross-stack reference (Fn::ImportValue / Fn::GetStackOutput): it resolves only from a state source with the producer stack deployed";
7251
+ function argvValue(sub, consumedSensitive) {
7252
+ if (sub.kind !== "literal") return { reason: sub.reason };
7253
+ if (consumedSensitive) return { reason: "resolved from a SecureString parameter, which would put the secret on the docker run argv; move the value into an Environment variable or a Secrets entry" };
7254
+ const value = sub.value;
7255
+ if (typeof value === "number" || typeof value === "boolean") return { value: String(value) };
7256
+ if (value === STATE_SECRET_MASK) return { reason: "resolved to the secret mask (***), not the deployed value" };
7257
+ if (containsDynamicReference(value)) return { reason: "resolved to a CloudFormation dynamic reference ({{resolve:...}}), which is resolved only in Environment, because resolving one here would put the secret on the docker run argv; move the value into an Environment variable or a Secrets entry" };
7258
+ return { value };
7259
+ }
7260
+ function assertEcsTaskCommandsResolved(task) {
7261
+ const lines = [];
7262
+ for (const container of task.containers) for (const u of container.unresolvedCommandElements ?? []) lines.push(` - Container ${displayIdent(container.name)} ${u.field}[${u.index}]: ${u.reason}`);
7263
+ if (lines.length === 0) return;
7264
+ throw new EcsTaskResolutionError(`Task ${displayIdent(task.taskDefinitionLogicalId)} has container command elements ${getEmbedConfig().binaryName} could not resolve:\n${lines.join("\n")}\nRefusing to run the task with these arguments missing, since that runs a different command than the deployed task.`);
7265
+ }
7084
7266
  function buildSubstitutionContextFromImageContext(context) {
7085
7267
  if (!context?.stateResources) return void 0;
7086
7268
  const subContext = { resources: context.stateResources };
@@ -7391,6 +7573,21 @@ async function applyCrossStackValuesToTask(task, crossStackResolver, opts) {
7391
7573
  dynamicRefs.dispose();
7392
7574
  }
7393
7575
  }
7576
+ function argvTarget(container, field) {
7577
+ if (field === "Command") return container.command;
7578
+ if (field === "EntryPoint") return container.entryPoint;
7579
+ return container.healthCheck?.command;
7580
+ }
7581
+ function rawArgv(c, field) {
7582
+ let raw;
7583
+ if (field === "Command") raw = c["Command"];
7584
+ else if (field === "EntryPoint") raw = c["EntryPoint"];
7585
+ else {
7586
+ const h = c["HealthCheck"];
7587
+ raw = h && typeof h === "object" ? h["Command"] : void 0;
7588
+ }
7589
+ return Array.isArray(raw) ? raw : void 0;
7590
+ }
7394
7591
  function withContainerState(context, state) {
7395
7592
  const out = {
7396
7593
  ...context,
@@ -7456,6 +7653,38 @@ async function applyCrossStackResolverToTask(task, context, containerState) {
7456
7653
  resolvedSecretNames.add(sName);
7457
7654
  }
7458
7655
  }
7656
+ if (container.unresolvedCommandElements?.length) {
7657
+ const argvContext = ownState ? withContainerState(secretContext, ownState) : secretContext;
7658
+ const remaining = [];
7659
+ for (const u of container.unresolvedCommandElements) {
7660
+ const target = argvTarget(container, u.field);
7661
+ const rawElement = rawArgv(c, u.field)?.[u.index];
7662
+ if (!target || !isCrossStackIntrinsic(rawElement)) {
7663
+ remaining.push(u);
7664
+ continue;
7665
+ }
7666
+ const secret = secretAttributeRead(rawElement, argvContext.resources);
7667
+ if (secret !== void 0) {
7668
+ remaining.push({
7669
+ ...u,
7670
+ reason: secret
7671
+ });
7672
+ continue;
7673
+ }
7674
+ const { result: sub, consumedSensitive } = await resolveWithSensitivityAsync(rawElement, argvContext);
7675
+ const arg = argvValue(sub, consumedSensitive);
7676
+ if ("value" in arg) {
7677
+ target[u.index] = arg.value;
7678
+ continue;
7679
+ }
7680
+ remaining.push({
7681
+ ...u,
7682
+ reason: arg.reason
7683
+ });
7684
+ }
7685
+ if (remaining.length > 0) container.unresolvedCommandElements = remaining;
7686
+ else delete container.unresolvedCommandElements;
7687
+ }
7459
7688
  if (resolvedEnvKeys.size > 0 || resolvedSecretNames.size > 0) {
7460
7689
  container.warnings = container.warnings.filter((w) => {
7461
7690
  for (const k of resolvedEnvKeys) if (w.startsWith(`Environment ${displayIdent(k)} dropped:`)) return false;
@@ -10499,16 +10728,11 @@ function envHasIntrinsicValue$1(templateEnv) {
10499
10728
  }
10500
10729
  function envHasCrossStackIntrinsic(templateEnv) {
10501
10730
  if (!templateEnv) return false;
10502
- for (const v of Object.values(templateEnv)) {
10503
- if (!v || typeof v !== "object") continue;
10504
- const obj = v;
10505
- if ("Fn::ImportValue" in obj || "Fn::GetStackOutput" in obj) return true;
10506
- }
10507
- return false;
10731
+ return Object.values(templateEnv).some(containsCrossStackIntrinsic);
10508
10732
  }
10509
10733
  async function resolvePseudoParametersForInvoke(stackRegion, options) {
10510
10734
  const logger = getLogger();
10511
- const region = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? stackRegion;
10735
+ const region = options.region ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(stackRegion);
10512
10736
  if (!region) logger.warn(`Resolver references \${AWS::Region} but ${getEmbedConfig().binaryName} could not determine the target region. Pass --region, set AWS_REGION, or declare env.region on the CDK stack.`);
10513
10737
  let accountId;
10514
10738
  try {
@@ -17345,7 +17569,7 @@ async function loadStackStateBundle(stack, provider, args) {
17345
17569
  }
17346
17570
  async function resolvePseudoParametersForStartApi(stateRegion, options) {
17347
17571
  const logger = getLogger();
17348
- const region = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? stateRegion;
17572
+ const region = options.region ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(stateRegion);
17349
17573
  let accountId;
17350
17574
  try {
17351
17575
  const { STSClient, GetCallerIdentityCommand } = await import("@aws-sdk/client-sts");
@@ -18424,7 +18648,7 @@ async function resolveAgentCoreSigV4Context(options, resolved, loaded, stateProv
18424
18648
  getLogger().warn(`Runtime ${displayIdent(resolved.logicalId)} declares a customJwtAuthorizer; --sigv4 ignored (JWT path takes precedence).`);
18425
18649
  return;
18426
18650
  }
18427
- const region = options.region ?? options.stackRegion ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? resolved.stack.region;
18651
+ const region = options.region ?? options.stackRegion ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(resolved.stack.region);
18428
18652
  if (!region) throw new CdkLocalError("--sigv4: no region resolved for the AgentCore signing scope. Pass --region <region>, set AWS_REGION, or use --from-cfn-stack with a region-bound stack.", "LOCAL_INVOKE_AGENTCORE_SIGV4_NO_REGION");
18429
18653
  return {
18430
18654
  credentials: await resolveHostCredentialsForSigV4(options, resolved, loaded, region, stateProvider),
@@ -18558,7 +18782,7 @@ async function resolveAgentCoreCodeImageFromS3(resolved, code, s3Source, options
18558
18782
  key: s3Source.key,
18559
18783
  ...s3Source.versionId !== void 0 && { versionId: s3Source.versionId }
18560
18784
  };
18561
- const region = options.region ?? options.stackRegion ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? resolved.stack.region;
18785
+ const region = options.region ?? options.stackRegion ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(resolved.stack.region);
18562
18786
  const assumeRoleArn = await resolveAssumeRoleArn(options, resolved, loaded, stateProvider);
18563
18787
  let credentials;
18564
18788
  if (assumeRoleArn) try {
@@ -18702,7 +18926,7 @@ function describeIntrinsic(value) {
18702
18926
  }
18703
18927
  async function buildAgentCoreImageContext(candidate, stateProvider, options) {
18704
18928
  const logger = getLogger();
18705
- const region = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? candidate.region;
18929
+ const region = options.region ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(candidate.region);
18706
18930
  let accountId;
18707
18931
  try {
18708
18932
  accountId = await resolveCallerAccountId$2(region, options.profile, isCfnFlagPresent(options));
@@ -19854,6 +20078,7 @@ function mergeHostGatewayAddHostFlags(addHostFlags, hostGatewayExtraHosts) {
19854
20078
  async function runEcsTask(task, options, state) {
19855
20079
  const logger = getLogger();
19856
20080
  if (task.containers.length === 0) throw new EcsTaskRunnerError(`Task ${displayIdent(task.taskDefinitionLogicalId)} has no containers — nothing to run.`);
20081
+ assertEcsTaskCommandsResolved(task);
19857
20082
  for (const w of task.warnings) logger.warn(w);
19858
20083
  const startOrder = topoSort(buildDependencyGraph(task.containers), task.containers);
19859
20084
  const finchRefusals = [];
@@ -24357,14 +24582,15 @@ async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, ski
24357
24582
  const taskStack = stacks.find((s) => s.stackName === service.stack.stackName) ?? service.stack;
24358
24583
  const taskNeeds = detectEcsImageResolutionNeeds(taskStack);
24359
24584
  if (stateProvider && taskNeeds.needsCrossStackResolver) {
24360
- const consumerRegion = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? service.stack.region ?? "us-east-1";
24585
+ const consumerRegion = options.region ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(service.stack.region) ?? "us-east-1";
24361
24586
  const resolver = await stateProvider.buildCrossStackResolver(consumerRegion);
24362
24587
  if (resolver) await applyCrossStackValuesToTask(service.task, resolver, {
24363
24588
  imageContext,
24364
24589
  consumerRegion,
24365
24590
  profile: options.profile
24366
24591
  });
24367
- } else if (!stateProvider && taskNeeds.needsCrossStackResolver) logger.warn("Container Environment / Secrets entries contain Fn::ImportValue / Fn::GetStackOutput intrinsics. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against deployed state.");
24592
+ } else if (!stateProvider && taskNeeds.needsCrossStackResolver) logger.warn("Container Environment / Secrets / Command entries contain Fn::ImportValue / Fn::GetStackOutput intrinsics. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against deployed state.");
24593
+ assertEcsTaskCommandsResolved(service.task);
24368
24594
  const effectiveAssumeRole = resolveEcsAssumeRoleOption(options);
24369
24595
  let assumedCredentials;
24370
24596
  let resolvedRoleArn;
@@ -24816,7 +25042,7 @@ async function buildEcsImageResolutionContext$1(target, stacks, options, statePr
24816
25042
  if (!roleRecordUsable) ctx.ignoreStateForRoles = true;
24817
25043
  const wantsPseudoForEnvOrSecret = !!stateProvider && needs.needsEnvOrSecretSubstitution;
24818
25044
  if (needs.needsPseudoParameters || wantsPseudoForEnvOrSecret) {
24819
- const region = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? candidate.region;
25045
+ const region = options.region ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(candidate.region);
24820
25046
  if (!region) logger.warn(`Resolver references \${AWS::Region} but ${getEmbedConfig().binaryName} could not determine the target region. Pass --region, set AWS_REGION, or declare env.region on the CDK stack.`);
24821
25047
  let accountId;
24822
25048
  try {
@@ -24857,7 +25083,7 @@ async function buildEcsImageResolutionContext$1(target, stacks, options, statePr
24857
25083
  } else if (!stateProvider && needs.needsStateResources) {
24858
25084
  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.");
24859
25085
  } else if (!stateProvider && needs.needsEnvOrSecretSubstitution) {
24860
- if (!opts.suppressStateWarning) logger.warn("Container Environment / Secrets entries contain CloudFormation intrinsics. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against the deployed state.");
25086
+ if (!opts.suppressStateWarning) logger.warn("Container Environment / Secrets / Command entries contain CloudFormation intrinsics. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against the deployed state; without one an intrinsic Command / EntryPoint / HealthCheck.Command element refuses the run.");
24861
25087
  }
24862
25088
  return ctx;
24863
25089
  }
@@ -25155,14 +25381,15 @@ async function localRunTaskCommand(target, options, extraStateProviders) {
25155
25381
  const taskStack = stacks.find((s) => s.stackName === task.stack.stackName) ?? task.stack;
25156
25382
  const taskNeeds = detectEcsImageResolutionNeeds(taskStack);
25157
25383
  if (stateProvider && taskNeeds.needsCrossStackResolver) {
25158
- const consumerRegion = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? task.stack.region ?? "us-east-1";
25384
+ const consumerRegion = options.region ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(task.stack.region) ?? "us-east-1";
25159
25385
  const resolver = await stateProvider.buildCrossStackResolver(consumerRegion);
25160
25386
  if (resolver) await applyCrossStackValuesToTask(task, resolver, {
25161
25387
  imageContext,
25162
25388
  consumerRegion,
25163
25389
  profile: options.profile
25164
25390
  });
25165
- } else if (!stateProvider && taskNeeds.needsCrossStackResolver) logger.warn("Container Environment / Secrets entries contain Fn::ImportValue / Fn::GetStackOutput intrinsics. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against deployed state.");
25391
+ } else if (!stateProvider && taskNeeds.needsCrossStackResolver) logger.warn("Container Environment / Secrets / Command entries contain Fn::ImportValue / Fn::GetStackOutput intrinsics. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against deployed state.");
25392
+ assertEcsTaskCommandsResolved(task);
25166
25393
  const onSignal = createShutdownSignalHandler({
25167
25394
  cleanup,
25168
25395
  stoppingMessage: () => "Stopping task...",
@@ -25312,7 +25539,7 @@ async function buildEcsImageResolutionContext(candidate, stateProvider, options,
25312
25539
  if (!roleRecordUsable) ctx.ignoreStateForRoles = true;
25313
25540
  const wantsPseudoForEnvOrSecret = !!stateProvider && needs.needsEnvOrSecretSubstitution;
25314
25541
  if (needs.needsPseudoParameters || wantsPseudoForEnvOrSecret) {
25315
- const region = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? candidate.region;
25542
+ const region = options.region ?? namedEnvAwsRegion() ?? process.env["AWS_DEFAULT_REGION"] ?? regionOrAmbientDefault(candidate.region);
25316
25543
  if (!region) logger.warn(`Resolver references \${AWS::Region} but ${getEmbedConfig().binaryName} could not determine the target region. Pass --region, set AWS_REGION, or declare env.region on the CDK stack.`);
25317
25544
  let accountId;
25318
25545
  try {
@@ -25352,7 +25579,7 @@ async function buildEcsImageResolutionContext(candidate, stateProvider, options,
25352
25579
  if (needs.needsEnvOrSecretSubstitution && stateProviderFor) await loadMixedModeContainerStates(ctx, candidate, stateProviderFor);
25353
25580
  } else if (!stateProvider && needs.needsStateResources) {
25354
25581
  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.");
25355
- } 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).");
25582
+ } else if (!stateProvider && needs.needsEnvOrSecretSubstitution) logger.warn("Container Environment / Secrets / Command 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 the Environment / Secrets entries are dropped (per-key warnings will follow), and an intrinsic Command / EntryPoint / HealthCheck.Command element refuses the run.");
25356
25583
  return ctx;
25357
25584
  }
25358
25585
  function pickCandidateStack(target, stacks) {
@@ -36794,5 +37021,5 @@ function addStudioSpecificOptions(cmd) {
36794
37021
  return cmd;
36795
37022
  }
36796
37023
 
36797
- export { postHook as $, AGENTCORE_HTTP_PROTOCOL as $a, probeHostGatewaySupport as $i, addImageOverrideOptions as $n, readProfileEndpointSettings as $o, resolveApiTargetSubset as $r, classifyS3Error as $t, microvmFidelityWarnings as A, isCfnFlagPresent as Aa, translateLambdaResponse as Ai, stripCloudFrontImport as An, AUTH_OFF_PLACEHOLDER_CREDENTIALS as Ao, A2A_CONTAINER_PORT as Ar, readContainerLogTail as At, MICROVM_WS_BASE_PROTOCOL as B, countTargets as Ba, ConnectionRegistry as Bi, createLocalStartAlbCommand as Bn, collectHostEndpointOverrides as Bo, AGENTCORE_SESSION_ID_HEADER as Br, parseWebFunctionBuildConfig as Bt, addListSpecificOptions as C, substituteEnvVarsFromState as Ca, attachAuthorizers as Ci, WEB_FUNCTION_REVISION_TYPE as Cn, assumedRoleRecorded as Co, setShadowReadyTimeoutMs as Cr, parseKvsFileOverrides as Ct, buildMicrovmLambdaView as D, UNNAMED_WORKLOAD as Da, isFunctionUrlOacFronted as Di, compileCloudFrontFunction as Dn, resetWorkloadIdentity as Do, createLocalInvokeAgentCoreCommand as Dr, WEB_FUNCTION_CONTAINER_PORT as Dt, addStartMicrovmSpecificOptions as E, LocalStateSourceError as Ea, buildCorsConfigFromCloudFrontChain as Ei, resolveWebFunctionTarget as En, recordAssumedRole as Eo, addInvokeAgentCoreSpecificOptions as Er, RecentOutput as Et, microvmImageTag as F, CfnLocalStateProvider as Fa, pickResponseTemplate as Fi, findFileAssetForObjectKey as Fn, HOST_DEFAULT_CREDENTIALS_MISS_TTL_MS as Fo, MCP_PROTOCOL_VERSION as Fr, buildNodeEntryFileStart as Ft, startMicrovmFrontDoor as G, filterWebSocketApisByIdentifiers as Ga, buildDisconnectEvent as Gi, addStartServiceSpecificOptions as Gn, getContainerJavaTruststorePath as Go, SUPPORTED_CODE_RUNTIMES as Gr, readWebFunctionServiceConfig as Gt, PROXY_PORT_HEADER as H, availableWebSocketApiIdentifiers as Ha, handleConnectionsRequest as Hi, resolveAlbTarget as Hn, effectiveLoopbackPorts as Ho, waitForAgentCoreHttpReady as Hr, WEB_FUNCTION_HTTP_ENDPOINT_ENV as Ht, planMicrovmPorts as I, collectSsmParameterRefs as Ia, selectIntegrationResponse as Ii, isBucketDeploymentResource as In, activateWorkloadAwsWiring as Io, mcpInvokeOnce as Ir, defaultWebFunctionPlatform as It, MICROVM_HOOK_PATH_PREFIX as J, discoverRoutes as Ja, createFileWatcher as Ji, addRunTaskSpecificOptions as Jn, loopbackForwarderPlan as Jo, renderCodeDockerfile as Jr, idFromArn as Jt, stripMicrovmProxyHeaders as K, parseSelectionExpressionPath as Ka, buildMessageEvent as Ki, createLocalStartServiceCommand as Kn, javaTruststoreToolOptions as Ko, buildAgentCoreCodeImage as Kr, webFunctionAssumeRole as Kt, readExposedPorts as L, resolveSsmParameters as La, tryParseStatus as Li, resolveBucketDeploymentObjectKey as Ln, applyWorkloadAwsWiringToEnv as Lo, parseSseForJsonRpc as Lr, resolveWebFunctionRuntime as Lt, DEFAULT_TERMINATE_HOOK_TIMEOUT_MS as M, resolveCfnFallbackRegion as Ma, buildHttpApiV2Event as Mi, createLocalFileKvsDataSource as Mn, DEFAULT_AWS_EMULATOR_URL as Mo, a2aInvokeOnce as Mr, waitForWebFunctionReady as Mt, LocalMicrovm as N, resolveCfnRegion as Na, buildRestV1Event as Ni, createUnboundCloudFrontModule as Nn, EMULATOR_SCRUBBED_ENV_KEYS as No, MCP_CONTAINER_PORT as Nr, watchContainerExit as Nt, createLocalStartMicrovmCommand as O, createLocalStateProvider as Oa, matchPreflight as Oi, runViewerRequest as On, workloadClientConfig as Oo, bridgeAgentCoreWs as Or, containerFailure as Ot, buildMicrovmImage as P, resolveCfnStackName as Pa, evaluateResponseParameters as Pi, bucketDeploymentSourceObjectKeys as Pn, HOST_CA_TRUST_ENV_KEYS as Po, MCP_PATH as Pr, WEB_FUNCTION_RUNTIMES as Pt, pollBuildHook as Q, AGENTCORE_AGUI_PROTOCOL as Qa, HOST_GATEWAY_MIN_VERSION as Qi, addEcsAssumeRoleOptions as Qn, readEmulatorRunFiles as Qo, createWatchPredicates as Qr, resolveDeployedOriginBucket as Qt, setContainerPaused as R, resolveWatchConfig as Ra, VtlEvaluationError as Ri, addAlbSpecificOptions as Rn, awsEmulatorEnvName as Ro, AGENTCORE_SIGV4_SERVICE as Rr, supportedWebFunctionRuntimes as Rt, StudioEventBus as S, substituteAgainstStateAsync as Sa, invokeTokenAuthorizer as Si, WEB_FUNCTION_ENDPOINT_TYPE as Sn, SECOND_ASSUME_MESSAGE as So, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as Sr, normalizeKvsFileKeys as St, formatTargetListing as T, materializeLayerFromArn as Ta, buildCorsConfigByApiId as Ti, WebFunctionResolutionError as Tn, readEnvCallerCredentials as To, attachContainerLogStreamer as Tr, resolveCloudFrontTarget as Tt, rewriteUpgradeResponseHead as U, discoverWebSocketApis as Ua, parseConnectionsPath as Ui, isApplicationLoadBalancer as Un, getActiveWorkloadAwsWiring as Uo, waitForAgentCorePing as Ur, buildWebFunctionLambdaView as Ut, MicrovmStateError as V, listTargets as Va, buildMgmtEndpointEnvUrl as Vi, parseLbPortOverrides as Vn, displayEndpointValue as Vo, invokeAgentCore as Vr, resolveWebFunctionArtifact as Vt, selectTargetPort as W, discoverWebSocketApisOrThrow as Wa, buildConnectEvent as Wi, resolveAlbFrontDoor as Wn, getContainerCaBundlePath as Wo, downloadAndExtractS3Bundle as Wr, finalizeWebFunctionEnv as Wt, callRuntimeHook as X, resolveLambdaArnIntrinsic as Xa, createLocalInvokeCommand as Xi, MAX_TASKS_SUBNET_RANGE_CAP as Xn, parseAwsEndpoint as Xo, addStartApiSpecificOptions as Xr, createDeployedKvsDataSource as Xt, MicrovmHookError as Y, pickRefLogicalId as Ya, addInvokeSpecificOptions as Yi, createLocalRunTaskCommand as Yn, mergeJavaToolOptions as Yo, toCmdArgv as Yr, resolveKvsModulesForDistribution as Yt, generateMicrovmId as Z, AGENTCORE_A2A_PROTOCOL as Za, HOST_DOCKER_INTERNAL_GATEWAY as Zi, addCommonEcsServiceOptions as Zn, probeAwsEmulatorHealth as Zo, createLocalStartApiCommand as Zr, resolveDeployedKvsArnByName as Zt, filterStudioTargetGroups as _, resolveRuntimeFileExtension as _a, verifyJwtViaDiscovery as _i, pickKvsLogicalIdFromArn as _n, parseDynamicReference as _o, isLocalCdkAssetImage as _r, attachAgentCoreWsBridge as _t, createLocalStudioCommand as a, buildLoopbackForwarderDockerArgs as aa, filterRoutesByApiIdentifiers as ai, serveLambdaUrlOrigin as an, derivePseudoParametersFromRegion as ao, resolveSharedSidecarCredentials as ar, writeCaBundleFile as as, disposeMicrovmCodeArtifact as at, renderStudioHtml as b, assertEcsTaskImagesResolvable as ba, evaluateCachedLambdaPolicy as bi, pickWebFunctionEndpointLogicalIdFromOrigin as bn, addAwsEndpointOptions as bo, CloudMapRegistry as br, addStartCloudFrontSpecificOptions as bt, startStudioProxy as c, ensureForwarderImage as ca, startApiServer as ci, buildEdgeRequestEvent as cn, tryResolveImageFnJoin as co, buildImageOverrideTag as cr, isRealAwsHost as cs, resolveMicrovmImageTarget as ct, createStudioDispatcher as d, buildContainerImage as da, defaultCredentialsLoader as di, httpHeadersToEdge as dn, DynamicReferenceResolver as do, mergeForService as dr, rewriteSqsQueueUrlsInEnv as ds, createLocalStartWebFunctionCommand as dt, resolveHostGatewayExtraHosts as ea, createAuthorizerCache as ei, createS3OriginReader as en, AGENTCORE_MCP_PROTOCOL as eo, buildEcsImageResolutionContext$1 as er, resolveAwsEmulatorOption as es, runHookBody as et, filterStudioCustomResources as f, dockerRegistryEnv as fa, buildCognitoJwksUrl as fi, CLOUDFRONT_DISTRIBUTION_TYPE as fn, containsDynamicReference as fo, parseImageOverrideFlags as fr, sqsEmulatorOriginOf as fs, addStartAgentCoreSpecificOptions as ft, annotatePinnedEcsTargets as g, resolveRuntimeCodeMountPath as ga, verifyJwtAuthorizer as gi, pickFunctionUrlLogicalIdFromOrigin as gn, keysOverriddenBy as go, imageOverrideKeyAliases as gr, resolveProfileCredentials as gs, startAgentCoreHttpServer as gt, annotateEcsTaskPinnedTargets as h, stripEcrCredentials as ha, verifyCognitoJwt as hi, isCloudFrontDistribution as hn, keysNotFromTemplate as ho, describePinnedImageUri as hr, buildStsClientConfig as hs, selectServeInboundAuth as ht, coerceStopRequest as i, awaitLoopbackForwarderStatus as ia, filterRoutesByApiIdentifier as ii, serveFromStaticOrigin as in, resolveAgentCoreTarget as io, resolveEcsAssumeRoleOption as ir, takeAwsEmulatorStateSourceHint as is, MicrovmResolutionError as it, readRunHookPayload as j, rejectExplicitCfnStackWithMultipleStacks as ja, applyAuthorizerOverlay as ji, createCloudFrontModule as jn, CA_TRUST_ENV_KEYS as jo, A2A_PATH as jr, startWebFunctionContainer as jt, finalizeMicrovmEnv as k, groupWorkloadsRoutedApart as ka, matchRoute as ki, runViewerResponse as kn, workloadStsClientConfig as ko, invokeAgentCoreWs as kr, planWebFunctionContainer as kt, relayServeRequest as l, startLoopbackForwarder as la, resolveSelectionExpression as li, buildEdgeResponseEvent as ln, LocalInvokeBuildError as lo, canonicalizeImageOverrideKeys as lr, realSqsHostnames as ls, s3KeyOfUri as lt, annotateAlbPinnedBackingServices as m, noImplicitEcrPullArgs as ma, createJwksCache as mi, extractKvsAssociations as mn, firstUsableRegion as mo, runImageOverrideBuilds as mr, createMixedModeTlsMaterials as ms, buildAgentCoreServeAuthCheck as mt, coerceRunRequest as n, withWorkloadAwsWiring as na, buildStageMap as ni, startCloudFrontServer as nn, AgentCoreResolutionError as no, parseMaxTasks as nr, resolveWorkloadAwsWiring as ns, MICROVM_DEFAULT_INGRESS_PORT as nt, resolveServeBaseUrl as o, buildNamespaceOwnerForwarderDockerArgs as oa, groupRoutesByServer as oi, applyEdgeRequestResult as on, formatStateRemedy as oo, runEcsServiceEmulator as or, MIXED_MODE_RESIGN_BODY_CAP_BYTES as os, readMicrovmImageConfig as ot, isCustomResourceLambdaTarget as p, isEcrRegistryConfigKey as pa, buildJwksUrlFromIssuer as pi, describeS3OriginDomain as pn, deployedFillMayBeSecret as po, resolveImageOverrides as pr, buildJavaTrustStore as ps, createLocalStartAgentCoreCommand as pt, MAX_RUN_HOOK_PAYLOAD_BYTES as q, webSocketApiMatchesIdentifier as qa, classifySourceChange as qi, serviceStrategy as qn, logMixedModeForWorkload as qo, computeCodeImageTag as qr, webFunctionFidelityWarnings as qt, coerceServeRequest as r, LOOPBACK_FORWARDER_IMAGE as ra, availableApiIdentifiers as ri, resolveErrorResponseCandidates as rn, pickAgentCoreCandidateStack as ro, parseRestartPolicy as rr, setActiveWorkloadAwsWiring as rs, MICROVM_IMAGE_TYPE as rt, createStudioServeManager as s, describeForwarderFailure as sa, readMtlsMaterialsFromDisk as si, applyEdgeResponseResult as sn, substituteImagePlaceholders as so, ImageOverrideError as sr, REAL_SQS_QUEUE_URL as ss, resolveMicrovmCodeArtifact as st, addStudioSpecificOptions as t, attachLoopbackForwarder as ta, attachStageContext as ti, matchBehavior as tn, AGENTCORE_RUNTIME_TYPE as to, ecsClusterOption as tr, resolveHostDefaultCredentials as ts, waitForAppAnswer as tt, reinvoke as u, architectureToPlatform as ua, resolveServiceIntegrationParameters as ui, edgeHeadersToHttp as un, DynamicReferenceResolutionError as uo, enforceImageOverrideOrphans as ur, repointLocalSqsQueueUrlsInEnv as us, addStartWebFunctionSpecificOptions as ut, startStudioServer as v, resolveRuntimeImage as va, buildMethodArn as vi, pickLambdaEdgeFunctionLogicalId as vn, resolveDynamicReferencesInEnv as vo, listPinnedTargets as vr, startAgentCoreWsBridge as vt, createLocalListCommand as w, substituteEnvVarsFromStateAsync as wa, applyCorsResponseHeaders as wi, WEB_FUNCTION_TYPE as wn, deployAccountStsClientConfig as wo, getContainerNetworkIp as wr, parseOriginOverrides as wt, createStudioStore as x, substituteAgainstState as xa, invokeRequestAuthorizer as xi, resolveCloudFrontDistribution as xn, awsEndpointOptions as xo, DEFAULT_SHADOW_READY_TIMEOUT_MS as xr, createLocalStartCloudFrontCommand as xt, toStudioTargetGroups as y, EcsTaskResolutionError as ya, computeRequestIdentityHash as yi, pickTargetFunctionLogicalId as yn, withoutKeys as yo, buildCloudMapIndex as yr, LocalStartCloudFrontError as yt, MICROVM_CONTROL_PATH as z, resolveSingleTarget as za, bufferToBody as zi, albStrategy as zn, awsEmulatorSqsHostBlocks as zo, signAgentCoreInvocation as zr, disposeWebFunctionArtifact as zt };
36798
- //# sourceMappingURL=local-studio-DRE1RQLn.js.map
37024
+ export { postHook as $, AGENTCORE_A2A_PROTOCOL as $a, probeHostGatewaySupport as $i, addImageOverrideOptions as $n, loopbackForwarderPlan as $o, resolveApiTargetSubset as $r, classifyS3Error as $t, microvmFidelityWarnings as A, createLocalStateProvider as Aa, translateLambdaResponse as Ai, stripCloudFrontImport as An, readEnvCallerCredentials as Ao, A2A_CONTAINER_PORT as Ar, readContainerLogTail as At, MICROVM_WS_BASE_PROTOCOL as B, resolveWatchConfig as Ba, ConnectionRegistry as Bi, createLocalStartAlbCommand as Bn, HOST_DEFAULT_CREDENTIALS_MISS_TTL_MS as Bo, AGENTCORE_SESSION_ID_HEADER as Br, parseWebFunctionBuildConfig as Bt, addListSpecificOptions as C, substituteAgainstState as Ca, attachAuthorizers as Ci, WEB_FUNCTION_REVISION_TYPE as Cn, resolveDynamicReferencesInEnv as Co, setShadowReadyTimeoutMs as Cr, parseKvsFileOverrides as Ct, buildMicrovmLambdaView as D, materializeLayerFromArn as Da, isFunctionUrlOacFronted as Di, compileCloudFrontFunction as Dn, SECOND_ASSUME_MESSAGE as Do, createLocalInvokeAgentCoreCommand as Dr, WEB_FUNCTION_CONTAINER_PORT as Dt, addStartMicrovmSpecificOptions as E, substituteEnvVarsFromStateAsync as Ea, buildCorsConfigFromCloudFrontChain as Ei, resolveWebFunctionTarget as En, awsEndpointOptions as Eo, addInvokeAgentCoreSpecificOptions as Er, RecentOutput as Et, microvmImageTag as F, resolveCfnRegion as Fa, pickResponseTemplate as Fi, findFileAssetForObjectKey as Fn, AUTH_OFF_PLACEHOLDER_CREDENTIALS as Fo, MCP_PROTOCOL_VERSION as Fr, buildNodeEntryFileStart as Ft, startMicrovmFrontDoor as G, discoverWebSocketApis as Ga, buildDisconnectEvent as Gi, addStartServiceSpecificOptions as Gn, collectHostEndpointOverrides as Go, SUPPORTED_CODE_RUNTIMES as Gr, readWebFunctionServiceConfig as Gt, PROXY_PORT_HEADER as H, countTargets as Ha, handleConnectionsRequest as Hi, resolveAlbTarget as Hn, applyWorkloadAwsWiringToEnv as Ho, waitForAgentCoreHttpReady as Hr, WEB_FUNCTION_HTTP_ENDPOINT_ENV as Ht, planMicrovmPorts as I, resolveCfnStackName as Ia, selectIntegrationResponse as Ii, isBucketDeploymentResource as In, CA_TRUST_ENV_KEYS as Io, mcpInvokeOnce as Ir, defaultWebFunctionPlatform as It, MICROVM_HOOK_PATH_PREFIX as J, parseSelectionExpressionPath as Ja, createFileWatcher as Ji, addRunTaskSpecificOptions as Jn, getActiveWorkloadAwsWiring as Jo, renderCodeDockerfile as Jr, idFromArn as Jt, stripMicrovmProxyHeaders as K, discoverWebSocketApisOrThrow as Ka, buildMessageEvent as Ki, createLocalStartServiceCommand as Kn, displayEndpointValue as Ko, buildAgentCoreCodeImage as Kr, webFunctionAssumeRole as Kt, readExposedPorts as L, CfnLocalStateProvider as La, tryParseStatus as Li, resolveBucketDeploymentObjectKey as Ln, DEFAULT_AWS_EMULATOR_URL as Lo, parseSseForJsonRpc as Lr, resolveWebFunctionRuntime as Lt, DEFAULT_TERMINATE_HOOK_TIMEOUT_MS as M, isCfnFlagPresent as Ma, buildHttpApiV2Event as Mi, createLocalFileKvsDataSource as Mn, resetWorkloadIdentity as Mo, a2aInvokeOnce as Mr, waitForWebFunctionReady as Mt, LocalMicrovm as N, rejectExplicitCfnStackWithMultipleStacks as Na, buildRestV1Event as Ni, createUnboundCloudFrontModule as Nn, workloadClientConfig as No, MCP_CONTAINER_PORT as Nr, watchContainerExit as Nt, createLocalStartMicrovmCommand as O, LocalStateSourceError as Oa, matchPreflight as Oi, runViewerRequest as On, assumedRoleRecorded as Oo, bridgeAgentCoreWs as Or, containerFailure as Ot, buildMicrovmImage as P, resolveCfnFallbackRegion as Pa, evaluateResponseParameters as Pi, bucketDeploymentSourceObjectKeys as Pn, workloadStsClientConfig as Po, MCP_PATH as Pr, WEB_FUNCTION_RUNTIMES as Pt, pollBuildHook as Q, resolveLambdaArnIntrinsic as Qa, HOST_GATEWAY_MIN_VERSION as Qi, addEcsAssumeRoleOptions as Qn, logMixedModeForWorkload as Qo, createWatchPredicates as Qr, resolveDeployedOriginBucket as Qt, setContainerPaused as R, collectSsmParameterRefs as Ra, VtlEvaluationError as Ri, addAlbSpecificOptions as Rn, EMULATOR_SCRUBBED_ENV_KEYS as Ro, AGENTCORE_SIGV4_SERVICE as Rr, supportedWebFunctionRuntimes as Rt, StudioEventBus as S, containsCrossStackIntrinsic as Sa, invokeTokenAuthorizer as Si, WEB_FUNCTION_ENDPOINT_TYPE as Sn, parseDynamicReference as So, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as Sr, normalizeKvsFileKeys as St, formatTargetListing as T, substituteEnvVarsFromState as Ta, buildCorsConfigByApiId as Ti, WebFunctionResolutionError as Tn, addAwsEndpointOptions as To, attachContainerLogStreamer as Tr, resolveCloudFrontTarget as Tt, rewriteUpgradeResponseHead as U, listTargets as Ua, parseConnectionsPath as Ui, isApplicationLoadBalancer as Un, awsEmulatorEnvName as Uo, waitForAgentCorePing as Ur, buildWebFunctionLambdaView as Ut, MicrovmStateError as V, resolveSingleTarget as Va, buildMgmtEndpointEnvUrl as Vi, parseLbPortOverrides as Vn, activateWorkloadAwsWiring as Vo, invokeAgentCore as Vr, resolveWebFunctionArtifact as Vt, selectTargetPort as W, availableWebSocketApiIdentifiers as Wa, buildConnectEvent as Wi, resolveAlbFrontDoor as Wn, awsEmulatorSqsHostBlocks as Wo, downloadAndExtractS3Bundle as Wr, finalizeWebFunctionEnv as Wt, callRuntimeHook as X, discoverRoutes as Xa, createLocalInvokeCommand as Xi, MAX_TASKS_SUBNET_RANGE_CAP as Xn, getContainerJavaTruststorePath as Xo, addStartApiSpecificOptions as Xr, createDeployedKvsDataSource as Xt, MicrovmHookError as Y, webSocketApiMatchesIdentifier as Ya, addInvokeSpecificOptions as Yi, createLocalRunTaskCommand as Yn, getContainerCaBundlePath as Yo, toCmdArgv as Yr, resolveKvsModulesForDistribution as Yt, generateMicrovmId as Z, pickRefLogicalId as Za, HOST_DOCKER_INTERNAL_GATEWAY as Zi, addCommonEcsServiceOptions as Zn, javaTruststoreToolOptions as Zo, createLocalStartApiCommand as Zr, resolveDeployedKvsArnByName as Zt, filterStudioTargetGroups as _, resolveRuntimeFileExtension as _a, verifyJwtViaDiscovery as _i, pickKvsLogicalIdFromArn as _n, containsDynamicReference as _o, isLocalCdkAssetImage as _r, sqsEmulatorOriginOf as _s, attachAgentCoreWsBridge as _t, createLocalStudioCommand as a, buildLoopbackForwarderDockerArgs as aa, filterRoutesByApiIdentifiers as ai, serveLambdaUrlOrigin as an, pickAgentCoreCandidateStack as ao, resolveSharedSidecarCredentials as ar, resolveAwsEmulatorOption as as, disposeMicrovmCodeArtifact as at, renderStudioHtml as b, assertEcsTaskCommandsResolved as ba, evaluateCachedLambdaPolicy as bi, pickWebFunctionEndpointLogicalIdFromOrigin as bn, keysNotFromTemplate as bo, CloudMapRegistry as br, buildStsClientConfig as bs, addStartCloudFrontSpecificOptions as bt, startStudioProxy as c, ensureForwarderImage as ca, startApiServer as ci, buildEdgeRequestEvent as cn, formatStateRemedy as co, buildImageOverrideTag as cr, setActiveWorkloadAwsWiring as cs, resolveMicrovmImageTarget as ct, createStudioDispatcher as d, buildContainerImage as da, defaultCredentialsLoader as di, httpHeadersToEdge as dn, LocalInvokeBuildError as do, mergeForService as dr, MIXED_MODE_RESIGN_BODY_CAP_BYTES as ds, createLocalStartWebFunctionCommand as dt, resolveHostGatewayExtraHosts as ea, createAuthorizerCache as ei, createS3OriginReader as en, AGENTCORE_AGUI_PROTOCOL as eo, buildEcsImageResolutionContext$1 as er, mergeJavaToolOptions as es, runHookBody as et, filterStudioCustomResources as f, dockerRegistryEnv as fa, buildCognitoJwksUrl as fi, CLOUDFRONT_DISTRIBUTION_TYPE as fn, ambientDefaultRegion as fo, parseImageOverrideFlags as fr, REAL_SQS_QUEUE_URL as fs, addStartAgentCoreSpecificOptions as ft, annotatePinnedEcsTargets as g, resolveRuntimeCodeMountPath as ga, verifyJwtAuthorizer as gi, pickFunctionUrlLogicalIdFromOrigin as gn, DynamicReferenceResolver as go, imageOverrideKeyAliases as gr, rewriteSqsQueueUrlsInEnv as gs, startAgentCoreHttpServer as gt, annotateEcsTaskPinnedTargets as h, stripEcrCredentials as ha, verifyCognitoJwt as hi, isCloudFrontDistribution as hn, DynamicReferenceResolutionError as ho, describePinnedImageUri as hr, repointLocalSqsQueueUrlsInEnv as hs, selectServeInboundAuth as ht, coerceStopRequest as i, awaitLoopbackForwarderStatus as ia, filterRoutesByApiIdentifier as ii, serveFromStaticOrigin as in, AgentCoreResolutionError as io, resolveEcsAssumeRoleOption as ir, readProfileEndpointSettings as is, MicrovmResolutionError as it, readRunHookPayload as j, groupWorkloadsRoutedApart as ja, applyAuthorizerOverlay as ji, createCloudFrontModule as jn, recordAssumedRole as jo, A2A_PATH as jr, startWebFunctionContainer as jt, finalizeMicrovmEnv as k, UNNAMED_WORKLOAD as ka, matchRoute as ki, runViewerResponse as kn, deployAccountStsClientConfig as ko, invokeAgentCoreWs as kr, planWebFunctionContainer as kt, relayServeRequest as l, startLoopbackForwarder as la, resolveSelectionExpression as li, buildEdgeResponseEvent as ln, substituteImagePlaceholders as lo, canonicalizeImageOverrideKeys as lr, takeAwsEmulatorStateSourceHint as ls, s3KeyOfUri as lt, annotateAlbPinnedBackingServices as m, noImplicitEcrPullArgs as ma, createJwksCache as mi, extractKvsAssociations as mn, setAmbientDefaultRegion as mo, runImageOverrideBuilds as mr, realSqsHostnames as ms, buildAgentCoreServeAuthCheck as mt, coerceRunRequest as n, withWorkloadAwsWiring as na, buildStageMap as ni, startCloudFrontServer as nn, AGENTCORE_MCP_PROTOCOL as no, parseMaxTasks as nr, probeAwsEmulatorHealth as ns, MICROVM_DEFAULT_INGRESS_PORT as nt, resolveServeBaseUrl as o, buildNamespaceOwnerForwarderDockerArgs as oa, groupRoutesByServer as oi, applyEdgeRequestResult as on, resolveAgentCoreTarget as oo, runEcsServiceEmulator as or, resolveHostDefaultCredentials as os, readMicrovmImageConfig as ot, isCustomResourceLambdaTarget as p, isEcrRegistryConfigKey as pa, buildJwksUrlFromIssuer as pi, describeS3OriginDomain as pn, namedEnvAwsRegion as po, resolveImageOverrides as pr, isRealAwsHost as ps, createLocalStartAgentCoreCommand as pt, MAX_RUN_HOOK_PAYLOAD_BYTES as q, filterWebSocketApisByIdentifiers as qa, classifySourceChange as qi, serviceStrategy as qn, effectiveLoopbackPorts as qo, computeCodeImageTag as qr, webFunctionFidelityWarnings as qt, coerceServeRequest as r, LOOPBACK_FORWARDER_IMAGE as ra, availableApiIdentifiers as ri, resolveErrorResponseCandidates as rn, AGENTCORE_RUNTIME_TYPE as ro, parseRestartPolicy as rr, readEmulatorRunFiles as rs, MICROVM_IMAGE_TYPE as rt, createStudioServeManager as s, describeForwarderFailure as sa, readMtlsMaterialsFromDisk as si, applyEdgeResponseResult as sn, derivePseudoParametersFromRegion as so, ImageOverrideError as sr, resolveWorkloadAwsWiring as ss, resolveMicrovmCodeArtifact as st, addStudioSpecificOptions as t, attachLoopbackForwarder as ta, attachStageContext as ti, matchBehavior as tn, AGENTCORE_HTTP_PROTOCOL as to, ecsClusterOption as tr, parseAwsEndpoint as ts, waitForAppAnswer as tt, reinvoke as u, architectureToPlatform as ua, resolveServiceIntegrationParameters as ui, edgeHeadersToHttp as un, tryResolveImageFnJoin as uo, enforceImageOverrideOrphans as ur, writeCaBundleFile as us, addStartWebFunctionSpecificOptions as ut, startStudioServer as v, resolveRuntimeImage as va, buildMethodArn as vi, pickLambdaEdgeFunctionLogicalId as vn, deployedFillMayBeSecret as vo, listPinnedTargets as vr, buildJavaTrustStore as vs, startAgentCoreWsBridge as vt, createLocalListCommand as w, substituteAgainstStateAsync as wa, applyCorsResponseHeaders as wi, WEB_FUNCTION_TYPE as wn, withoutKeys as wo, getContainerNetworkIp as wr, parseOriginOverrides as wt, createStudioStore as x, assertEcsTaskImagesResolvable as xa, invokeRequestAuthorizer as xi, resolveCloudFrontDistribution as xn, keysOverriddenBy as xo, DEFAULT_SHADOW_READY_TIMEOUT_MS as xr, resolveProfileCredentials as xs, createLocalStartCloudFrontCommand as xt, toStudioTargetGroups as y, EcsTaskResolutionError as ya, computeRequestIdentityHash as yi, pickTargetFunctionLogicalId as yn, firstUsableRegion as yo, buildCloudMapIndex as yr, createMixedModeTlsMaterials as ys, LocalStartCloudFrontError as yt, MICROVM_CONTROL_PATH as z, resolveSsmParameters as za, bufferToBody as zi, albStrategy as zn, HOST_CA_TRUST_ENV_KEYS as zo, signAgentCoreInvocation as zr, disposeWebFunctionArtifact as zt };
37025
+ //# sourceMappingURL=local-studio-CrP4kia1.js.map