cdk-local 0.147.0 → 0.147.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-studio-BBA_8Xvk.d.ts","names":[],"sources":["../src/types/resource.ts","../src/types/state.ts","../src/local/state-resolver.ts","../src/local/ssm-parameter-resolver.ts","../src/local/local-state-provider.ts","../src/cli/commands/local-state-source.ts","../src/local/embed-config.ts","../src/synthesis/assembly-reader.ts","../src/local/lambda-resolver.ts","../src/cli/commands/local-invoke.ts","../src/local/intrinsic-image.ts","../src/local/agentcore-ws-client.ts","../src/cli/commands/local-invoke-agentcore.ts","../src/cli/config-loader.ts","../src/local/httpv2-service-integration.ts","../src/local/integration-response-selector.ts","../src/local/rest-v1-integrations.ts","../src/local/route-discovery.ts","../src/local/websocket-route-discovery.ts","../src/local/authorizer-resolver.ts","../src/cli/commands/local-start-api.ts","../src/local/ecs-task-resolver.ts","../src/cli/commands/local-run-task.ts","../src/utils/error-handler.ts","../src/local/target-lister.ts","../src/local/ecs-service-runner.ts","../src/local/alb-path-matcher.ts","../src/local/elb-front-door-resolver.ts","../src/cli/commands/ecs-service-emulator.ts","../src/cli/commands/local-start-service.ts","../src/cli/commands/local-start-alb.ts","../src/cli/commands/local-start-cloudfront.ts","../src/cli/commands/local-start-agentcore.ts","../src/cli/commands/local-list.ts","../src/local/studio-events.ts","../src/local/studio-child-args.ts","../src/local/studio-option-specs.ts","../src/local/studio-option-catalog.ts","../src/local/studio-dispatch.ts","../src/local/studio-proxy.ts","../src/local/studio-serve-manager.ts","../src/cli/commands/local-studio.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { a as runDockerStreaming, c as resolveConfiguredLogLevel, d as setEmbedConfig, i as runDockerForeground, l as getEmbedConfig, n as formatDockerLoginError, o as spawnStreaming, r as getDockerCmd, s as getLogger } from "./docker-cmd-C6h4cSxa.js";
1
+ import { a as runDockerStreaming, c as resolveConfiguredLogLevel, d as setEmbedConfig, i as runDockerForeground, l as getEmbedConfig, n as formatDockerLoginError, o as spawnStreaming, r as getDockerCmd, s as getLogger } from "./docker-cmd-DLX1TqVw.js";
2
2
  import { chmodSync, cpSync, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
3
3
  import { homedir, tmpdir } from "node:os";
4
4
  import * as path$1 from "node:path";
@@ -231,6 +231,48 @@ function buildStsClientConfig(args) {
231
231
  //#endregion
232
232
  //#region src/utils/role-arn.ts
233
233
  /**
234
+ * Issue an STS AssumeRole for `roleArn` and return the temporary
235
+ * credentials (issue #509).
236
+ *
237
+ * This is the single shared implementation behind every command's
238
+ * `--assume-role` / `--assume-task-role` path (`cdkl invoke`,
239
+ * `start-api`, `run-task`, and the `start-service` / `start-alb`
240
+ * emulator) — each previously carried its own near-identical copy,
241
+ * which kept credential-minting logic OFF this module (the one
242
+ * `/review-pr`'s up-bias security surface lists) and duplicated the
243
+ * issue #245 `--profile` threading fix four times.
244
+ *
245
+ * `sessionNameSuffix` distinguishes the callers in CloudTrail
246
+ * (`<resourceNamePrefix>-<suffix>-<epochMs>`). `makeError` lets a
247
+ * caller surface the no-usable-credentials failure as its own error
248
+ * class (the ECS emulator throws `LocalStartServiceError`); STS
249
+ * transport errors always propagate unwrapped.
250
+ */
251
+ async function assumeRoleCredentials(opts) {
252
+ const sts = new STSClient(buildStsClientConfig({
253
+ region: opts.region,
254
+ profile: opts.profile
255
+ }));
256
+ try {
257
+ const creds = (await sts.send(new AssumeRoleCommand({
258
+ RoleArn: opts.roleArn,
259
+ RoleSessionName: `${getEmbedConfig().resourceNamePrefix}-${opts.sessionNameSuffix}-${Date.now()}`,
260
+ DurationSeconds: 3600
261
+ }))).Credentials;
262
+ if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) {
263
+ const message = `AssumeRole(${opts.roleArn}) returned no usable credentials.`;
264
+ throw opts.makeError ? opts.makeError(message) : new Error(message);
265
+ }
266
+ return {
267
+ accessKeyId: creds.AccessKeyId,
268
+ secretAccessKey: creds.SecretAccessKey,
269
+ sessionToken: creds.SessionToken
270
+ };
271
+ } finally {
272
+ sts.destroy();
273
+ }
274
+ }
275
+ /**
234
276
  * Resolve the role-arn argument (CLI flag or `CDKL_ROLE_ARN` env var) and,
235
277
  * when set, assume the role and write the resulting temporary credentials
236
278
  * into `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` / `AWS_SESSION_TOKEN`
@@ -1546,7 +1588,8 @@ function matchRuntime(parsed, target, stack, resources) {
1546
1588
  }
1547
1589
  function notFoundError$2(target, stack, resources) {
1548
1590
  const available = Object.entries(resources).filter(([, r]) => r.Type === AGENTCORE_RUNTIME_TYPE).map(([id]) => id);
1549
- return new AgentCoreResolutionError(`Target '${target}' not found. ${available.length > 0 ? `Available AgentCore Runtimes in ${stack.stackName}: ${available.join(", ")}.` : `No ${AGENTCORE_RUNTIME_TYPE} resources found in ${stack.stackName}.`}`);
1591
+ const hint = available.length > 0 ? `Available AgentCore Runtimes in ${stack.stackName}: ${available.join(", ")}.` : `No ${AGENTCORE_RUNTIME_TYPE} resources found in ${stack.stackName}.`;
1592
+ return new AgentCoreResolutionError(`Target '${target}' not found. ${hint}`);
1550
1593
  }
1551
1594
  /** Pull the runtime properties `cdkl invoke-agentcore` cares about. */
1552
1595
  function extractRuntimeProperties(stack, logicalId, resource, resources, imageContext) {
@@ -7284,7 +7327,7 @@ async function runDetached(opts) {
7284
7327
  const ro = mount.readOnly ? ":ro" : "";
7285
7328
  args.push("-v", `${mount.hostPath}:${mount.containerPath}${ro}`);
7286
7329
  }
7287
- const sensitiveKeys = opts.sensitiveEnvKeys && opts.sensitiveEnvKeys.size > 0 ? new Set([...SENSITIVE_ENV_KEYS, ...opts.sensitiveEnvKeys]) : SENSITIVE_ENV_KEYS;
7330
+ const sensitiveKeys = opts.sensitiveEnvKeys && opts.sensitiveEnvKeys.size > 0 ? /* @__PURE__ */ new Set([...SENSITIVE_ENV_KEYS, ...opts.sensitiveEnvKeys]) : SENSITIVE_ENV_KEYS;
7288
7331
  const passthroughEnv = appendEnvFlags(args, opts.env, sensitiveKeys);
7289
7332
  if (opts.tmpfs) args.push("--tmpfs", `${opts.tmpfs.target}:rw,size=${opts.tmpfs.sizeMb}m`);
7290
7333
  if (opts.workingDir) args.push("--workdir", opts.workingDir);
@@ -7401,7 +7444,7 @@ function pickFreePort() {
7401
7444
  * {@link redactAwsCredentialsInArgs} as a defense for any path that
7402
7445
  * still emits the inline `-e <KEY>=<value>` form into the debug log.
7403
7446
  */
7404
- const SENSITIVE_ENV_KEYS = new Set([
7447
+ const SENSITIVE_ENV_KEYS = /* @__PURE__ */ new Set([
7405
7448
  "AWS_ACCESS_KEY_ID",
7406
7449
  "AWS_SECRET_ACCESS_KEY",
7407
7450
  "AWS_SESSION_TOKEN"
@@ -9290,7 +9333,7 @@ var VtlEvaluator = class {
9290
9333
  const endIdx = this.skipDirectiveTrailingNewline(block, cursor + 1 + tag.length);
9291
9334
  const items = this.coerceToIterable(listValue);
9292
9335
  for (const item of items) {
9293
- this.scopes.push(new Map([[varName, item]]));
9336
+ this.scopes.push(/* @__PURE__ */ new Map([[varName, item]]));
9294
9337
  try {
9295
9338
  this.renderBlock(block.slice(bodyStart, bodyEnd));
9296
9339
  } finally {
@@ -16594,7 +16637,7 @@ async function buildContainerSpec(args) {
16594
16637
  stateBundle
16595
16638
  });
16596
16639
  if (roleArn) {
16597
- const creds = await assumeLambdaExecutionRole$1(roleArn, stsRegion, profile);
16640
+ const creds = await assumeLambdaExecutionRole(roleArn, stsRegion, profile);
16598
16641
  dockerEnv["AWS_ACCESS_KEY_ID"] = creds.accessKeyId;
16599
16642
  dockerEnv["AWS_SECRET_ACCESS_KEY"] = creds.secretAccessKey;
16600
16643
  dockerEnv["AWS_SESSION_TOKEN"] = creds.sessionToken;
@@ -17033,31 +17076,18 @@ function resolveContainerFallbackRegion(args) {
17033
17076
  return args.stackRegionOverride ?? args.synthRegion ?? args.profileRegion;
17034
17077
  }
17035
17078
  /**
17036
- * Issue an STS AssumeRole and return temporary credentials. Mirrors
17037
- * `cdkl invoke`'s helper byte-for-byte; lifted here so the
17038
- * start-api command stays self-contained.
17079
+ * Issue an STS AssumeRole and return temporary credentials, via the
17080
+ * shared `assumeRoleCredentials` helper in `utils/role-arn.ts`
17081
+ * (issue #509 — previously a byte-for-byte copy of `cdkl invoke`'s
17082
+ * inline helper).
17039
17083
  */
17040
- async function assumeLambdaExecutionRole$1(roleArn, region, profile) {
17041
- const { STSClient, AssumeRoleCommand } = await import("@aws-sdk/client-sts");
17042
- const sts = new STSClient(buildStsClientConfig({
17084
+ async function assumeLambdaExecutionRole(roleArn, region, profile) {
17085
+ return assumeRoleCredentials({
17086
+ roleArn,
17043
17087
  region,
17044
- profile
17045
- }));
17046
- try {
17047
- const creds = (await sts.send(new AssumeRoleCommand({
17048
- RoleArn: roleArn,
17049
- RoleSessionName: `${getEmbedConfig().resourceNamePrefix}-start-api-${Date.now()}`,
17050
- DurationSeconds: 3600
17051
- }))).Credentials;
17052
- if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${roleArn}) returned no usable credentials.`);
17053
- return {
17054
- accessKeyId: creds.AccessKeyId,
17055
- secretAccessKey: creds.SecretAccessKey,
17056
- sessionToken: creds.SessionToken
17057
- };
17058
- } finally {
17059
- sts.destroy();
17060
- }
17088
+ profile,
17089
+ sessionNameSuffix: "start-api"
17090
+ });
17061
17091
  }
17062
17092
  /**
17063
17093
  * Parse / clamp the `--per-lambda-concurrency` flag. Above-cap values
@@ -17817,28 +17847,6 @@ async function readStdin$1() {
17817
17847
  for await (const chunk of process.stdin) chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
17818
17848
  return Buffer.concat(chunks).toString("utf-8");
17819
17849
  }
17820
- async function assumeLambdaExecutionRole(roleArn, region, profile) {
17821
- const { STSClient, AssumeRoleCommand } = await import("@aws-sdk/client-sts");
17822
- const sts = new STSClient(buildStsClientConfig({
17823
- region,
17824
- profile
17825
- }));
17826
- try {
17827
- const creds = (await sts.send(new AssumeRoleCommand({
17828
- RoleArn: roleArn,
17829
- RoleSessionName: `${getEmbedConfig().resourceNamePrefix}-invoke-${Date.now()}`,
17830
- DurationSeconds: 3600
17831
- }))).Credentials;
17832
- if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${roleArn}) returned no usable credentials.`);
17833
- return {
17834
- accessKeyId: creds.AccessKeyId,
17835
- secretAccessKey: creds.SecretAccessKey,
17836
- sessionToken: creds.SessionToken
17837
- };
17838
- } finally {
17839
- sts.destroy();
17840
- }
17841
- }
17842
17850
  function forwardAwsEnv$2(env) {
17843
17851
  for (const key of [
17844
17852
  "AWS_ACCESS_KEY_ID",
@@ -17964,7 +17972,12 @@ async function resolveLambdaContainerEnv(lambda, options, profileCredentials, ex
17964
17972
  if (resolvedAssumeRoleArn) {
17965
17973
  const stsRegion = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"];
17966
17974
  try {
17967
- const creds = await assumeLambdaExecutionRole(resolvedAssumeRoleArn, stsRegion, options.profile);
17975
+ const creds = await assumeRoleCredentials({
17976
+ roleArn: resolvedAssumeRoleArn,
17977
+ region: stsRegion,
17978
+ profile: options.profile,
17979
+ sessionNameSuffix: "invoke"
17980
+ });
17968
17981
  dockerEnv["AWS_ACCESS_KEY_ID"] = creds.accessKeyId;
17969
17982
  dockerEnv["AWS_SECRET_ACCESS_KEY"] = creds.secretAccessKey;
17970
17983
  dockerEnv["AWS_SESSION_TOKEN"] = creds.sessionToken;
@@ -18117,7 +18130,7 @@ function addInvokeSpecificOptions(cmd) {
18117
18130
  * (Maven, Gradle). Adding a new ecosystem? Append its lockfile +
18118
18131
  * manifest here and add a classifier test row.
18119
18132
  */
18120
- const REBUILD_TRIGGER_BASENAMES = new Set([
18133
+ const REBUILD_TRIGGER_BASENAMES = /* @__PURE__ */ new Set([
18121
18134
  "package.json",
18122
18135
  "package-lock.json",
18123
18136
  "pnpm-lock.yaml",
@@ -18167,7 +18180,7 @@ const REBUILD_TRIGGER_BASENAMES = new Set([
18167
18180
  * start, so a `docker cp` + `docker restart` cycle picks them up.
18168
18181
  * Those extensions are NOT in this set.
18169
18182
  */
18170
- const COMPILED_LANGUAGE_EXTENSIONS = new Set([
18183
+ const COMPILED_LANGUAGE_EXTENSIONS = /* @__PURE__ */ new Set([
18171
18184
  ".go",
18172
18185
  ".rs",
18173
18186
  ".java",
@@ -21647,7 +21660,7 @@ function buildDockerRunArgs(opts) {
21647
21660
  args.push("--network", network);
21648
21661
  args.push("--network-alias", container.name);
21649
21662
  if (opts.networkAliases && opts.networkAliases.length > 0) {
21650
- const seen = new Set([container.name]);
21663
+ const seen = /* @__PURE__ */ new Set([container.name]);
21651
21664
  for (const a of opts.networkAliases) if (!seen.has(a)) {
21652
21665
  args.push("--network-alias", a);
21653
21666
  seen.add(a);
@@ -22919,7 +22932,7 @@ async function softReloadReplica(args) {
22919
22932
  const defaultDockerInspectWorkdirImpl = async (containerId) => {
22920
22933
  const { execFile } = await import("node:child_process");
22921
22934
  const { promisify } = await import("node:util");
22922
- const { getDockerCmd } = await import("./docker-cmd-C6h4cSxa.js").then((n) => n.t);
22935
+ const { getDockerCmd } = await import("./docker-cmd-DLX1TqVw.js").then((n) => n.t);
22923
22936
  const { stdout } = await promisify(execFile)(getDockerCmd(), [
22924
22937
  "inspect",
22925
22938
  "--format",
@@ -22938,7 +22951,7 @@ let dockerInspectWorkdirImpl = defaultDockerInspectWorkdirImpl;
22938
22951
  const defaultDockerCpImpl = async (src, dst) => {
22939
22952
  const { execFile } = await import("node:child_process");
22940
22953
  const { promisify } = await import("node:util");
22941
- const { getDockerCmd } = await import("./docker-cmd-C6h4cSxa.js").then((n) => n.t);
22954
+ const { getDockerCmd } = await import("./docker-cmd-DLX1TqVw.js").then((n) => n.t);
22942
22955
  await promisify(execFile)(getDockerCmd(), [
22943
22956
  "cp",
22944
22957
  src,
@@ -22953,7 +22966,7 @@ let dockerCpImpl = defaultDockerCpImpl;
22953
22966
  const defaultDockerRestartImpl = async (containerId) => {
22954
22967
  const { execFile } = await import("node:child_process");
22955
22968
  const { promisify } = await import("node:util");
22956
- const { getDockerCmd } = await import("./docker-cmd-C6h4cSxa.js").then((n) => n.t);
22969
+ const { getDockerCmd } = await import("./docker-cmd-DLX1TqVw.js").then((n) => n.t);
22957
22970
  await promisify(execFile)(getDockerCmd(), ["restart", containerId]);
22958
22971
  };
22959
22972
  let dockerRestartImpl = defaultDockerRestartImpl;
@@ -22993,7 +23006,7 @@ async function disconnectOldFromSharedNetwork(oldInstance) {
22993
23006
  const defaultDockerNetworkDisconnectImpl = async (networkName, containerId) => {
22994
23007
  const { execFile } = await import("node:child_process");
22995
23008
  const { promisify } = await import("node:util");
22996
- const { getDockerCmd } = await import("./docker-cmd-C6h4cSxa.js").then((n) => n.t);
23009
+ const { getDockerCmd } = await import("./docker-cmd-DLX1TqVw.js").then((n) => n.t);
22997
23010
  await promisify(execFile)(getDockerCmd(), [
22998
23011
  "network",
22999
23012
  "disconnect",
@@ -23170,7 +23183,7 @@ function pickEssentialContainerId(instance, service) {
23170
23183
  const defaultWaitForExitImpl = async (containerId) => {
23171
23184
  const { execFile } = await import("node:child_process");
23172
23185
  const { promisify } = await import("node:util");
23173
- const { getDockerCmd } = await import("./docker-cmd-C6h4cSxa.js").then((n) => n.t);
23186
+ const { getDockerCmd } = await import("./docker-cmd-DLX1TqVw.js").then((n) => n.t);
23174
23187
  const { stdout } = await promisify(execFile)(getDockerCmd(), ["wait", containerId], { maxBuffer: 1024 * 1024 });
23175
23188
  const code = parseInt(stdout.trim(), 10);
23176
23189
  return Number.isFinite(code) ? code : -1;
@@ -23190,7 +23203,7 @@ const EXIT_LOG_TAIL_LINES = 50;
23190
23203
  const defaultReadContainerLogsImpl = async (containerId) => {
23191
23204
  const { execFile } = await import("node:child_process");
23192
23205
  const { promisify } = await import("node:util");
23193
- const { getDockerCmd } = await import("./docker-cmd-C6h4cSxa.js").then((n) => n.t);
23206
+ const { getDockerCmd } = await import("./docker-cmd-DLX1TqVw.js").then((n) => n.t);
23194
23207
  const { stdout, stderr } = await promisify(execFile)(getDockerCmd(), [
23195
23208
  "logs",
23196
23209
  "--tail",
@@ -24683,7 +24696,7 @@ function parseIpAddress(ip) {
24683
24696
  function parseIpv4(ip) {
24684
24697
  const parts = ip.split(".");
24685
24698
  if (parts.length !== 4) return void 0;
24686
- const bytes = new Uint8Array(4);
24699
+ const bytes = /* @__PURE__ */ new Uint8Array(4);
24687
24700
  for (let i = 0; i < 4; i++) {
24688
24701
  const part = parts[i];
24689
24702
  if (!/^\d+$/.test(part)) return void 0;
@@ -24734,7 +24747,7 @@ function parseIpv6(ip) {
24734
24747
  if (g === void 0) return void 0;
24735
24748
  groups[7 - i] = g;
24736
24749
  }
24737
- const bytes = new Uint8Array(16);
24750
+ const bytes = /* @__PURE__ */ new Uint8Array(16);
24738
24751
  for (let i = 0; i < 8; i++) {
24739
24752
  bytes[i * 2] = groups[i] >> 8 & 255;
24740
24753
  bytes[i * 2 + 1] = groups[i] & 255;
@@ -25666,7 +25679,7 @@ async function promptForOverridePath(args) {
25666
25679
  * a `dist/` somewhere in a sub-tree (e.g. `packages/foo/dist/`) is also
25667
25680
  * skipped by name match.
25668
25681
  */
25669
- const DOCKERFILE_SCAN_IGNORED_DIRS = new Set([
25682
+ const DOCKERFILE_SCAN_IGNORED_DIRS = /* @__PURE__ */ new Set([
25670
25683
  "node_modules",
25671
25684
  ".git",
25672
25685
  "cdk.out",
@@ -26240,7 +26253,7 @@ async function reloadAllServices(args) {
26240
26253
  }
26241
26254
  const imageOverrideTags = new Map(boottimeImageOverrideTags);
26242
26255
  for (const [target, entry] of imageOverrideMap.entries()) try {
26243
- const newTag = (await runImageOverrideBuilds(new Map([[target, entry]]))).get(target);
26256
+ const newTag = (await runImageOverrideBuilds(/* @__PURE__ */ new Map([[target, entry]]))).get(target);
26244
26257
  if (newTag !== void 0) imageOverrideTags.set(target, newTag);
26245
26258
  } catch (err) {
26246
26259
  logger.warn(`Reload of '${target}': --image-override rebuild failed; keeping the previous local image. (${err instanceof Error ? err.message : String(err)})`);
@@ -26552,7 +26565,7 @@ async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, ski
26552
26565
  if (hostGatewayExtraHosts.length > 0) taskOpts.hostGatewayExtraHosts = hostGatewayExtraHosts;
26553
26566
  if (opts.imageOverrideTag !== void 0) {
26554
26567
  const essential = service.task.containers.find((c) => c.essential) ?? service.task.containers[0];
26555
- if (essential) taskOpts.imageOverrideByContainer = new Map([[essential.name, opts.imageOverrideTag]]);
26568
+ if (essential) taskOpts.imageOverrideByContainer = /* @__PURE__ */ new Map([[essential.name, opts.imageOverrideTag]]);
26556
26569
  }
26557
26570
  return {
26558
26571
  service,
@@ -26903,26 +26916,13 @@ async function resolvePlaceholderAccount$1(arn, region, profile) {
26903
26916
  }
26904
26917
  }
26905
26918
  async function assumeTaskRole$1(roleArn, region, profile) {
26906
- const { STSClient, AssumeRoleCommand } = await import("@aws-sdk/client-sts");
26907
- const sts = new STSClient(buildStsClientConfig({
26919
+ return assumeRoleCredentials({
26920
+ roleArn,
26908
26921
  region,
26909
- profile
26910
- }));
26911
- try {
26912
- const creds = (await sts.send(new AssumeRoleCommand({
26913
- RoleArn: roleArn,
26914
- RoleSessionName: `${getEmbedConfig().resourceNamePrefix}-start-service-${Date.now()}`,
26915
- DurationSeconds: 3600
26916
- }))).Credentials;
26917
- if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new LocalStartServiceError(`AssumeRole(${roleArn}) returned no usable credentials.`);
26918
- return {
26919
- accessKeyId: creds.AccessKeyId,
26920
- secretAccessKey: creds.SecretAccessKey,
26921
- sessionToken: creds.SessionToken
26922
- };
26923
- } finally {
26924
- sts.destroy();
26925
- }
26922
+ profile,
26923
+ sessionNameSuffix: "start-service",
26924
+ makeError: (message) => new LocalStartServiceError(message)
26925
+ });
26926
26926
  }
26927
26927
  /**
26928
26928
  * Build the substitution context the ECS resolver consumes. Exported for the
@@ -27481,26 +27481,12 @@ async function resolvePlaceholderAccount(arn, region, profile) {
27481
27481
  * Assume `roleArn` and return temp credentials.
27482
27482
  */
27483
27483
  async function assumeTaskRole(roleArn, region, profile) {
27484
- const { STSClient, AssumeRoleCommand } = await import("@aws-sdk/client-sts");
27485
- const sts = new STSClient(buildStsClientConfig({
27484
+ return assumeRoleCredentials({
27485
+ roleArn,
27486
27486
  region,
27487
- profile
27488
- }));
27489
- try {
27490
- const creds = (await sts.send(new AssumeRoleCommand({
27491
- RoleArn: roleArn,
27492
- RoleSessionName: `${getEmbedConfig().resourceNamePrefix}-run-task-${Date.now()}`,
27493
- DurationSeconds: 3600
27494
- }))).Credentials;
27495
- if (!creds?.AccessKeyId || !creds.SecretAccessKey || !creds.SessionToken) throw new Error(`AssumeRole(${roleArn}) returned no usable credentials.`);
27496
- return {
27497
- accessKeyId: creds.AccessKeyId,
27498
- secretAccessKey: creds.SecretAccessKey,
27499
- sessionToken: creds.SessionToken
27500
- };
27501
- } finally {
27502
- sts.destroy();
27503
- }
27487
+ profile,
27488
+ sessionNameSuffix: "run-task"
27489
+ });
27504
27490
  }
27505
27491
  /**
27506
27492
  * Build the substitution context the ECS task resolver consumes.
@@ -27677,7 +27663,7 @@ async function resolveRunTaskImageOverride(args) {
27677
27663
  if (options.strictOverrides === true && uncovered.length > 0) throw new Error("--strict-overrides set, but the task definition image is pinned to a deployed registry and no --image-override covered it. Pass --image-override <dockerfile> to rebuild it from local source, or drop --strict-overrides / --from-cfn-stack to run the pinned image as-is.");
27678
27664
  if (overrides.size === 0) return { pinnedUncovered: pinned };
27679
27665
  const tag = (await runImageOverrideBuilds(overrides)).get(target);
27680
- if (tag !== void 0 && essential !== void 0) return { imageOverrideByContainer: new Map([[essential.name, tag]]) };
27666
+ if (tag !== void 0 && essential !== void 0) return { imageOverrideByContainer: /* @__PURE__ */ new Map([[essential.name, tag]]) };
27681
27667
  return { pinnedUncovered: pinned && uncovered.length > 0 };
27682
27668
  }
27683
27669
  function addRunTaskSpecificOptions(cmd) {
@@ -29504,7 +29490,7 @@ function edgeHeadersToHttp(headers) {
29504
29490
  * Headers a Lambda@Edge function is not allowed to add/modify on a response (a
29505
29491
  * subset CloudFront blackholes). We drop them rather than fail the response.
29506
29492
  */
29507
- const READ_ONLY_RESPONSE_HEADERS = new Set([
29493
+ const READ_ONLY_RESPONSE_HEADERS = /* @__PURE__ */ new Set([
29508
29494
  "connection",
29509
29495
  "content-length",
29510
29496
  "keep-alive",
@@ -29908,7 +29894,8 @@ const MIME_BY_EXT = {
29908
29894
  function contentTypeForKey(key) {
29909
29895
  const dot = key.lastIndexOf(".");
29910
29896
  if (dot === -1 || dot === key.length - 1) return "application/octet-stream";
29911
- return MIME_BY_EXT[key.slice(dot + 1).toLowerCase()] ?? "application/octet-stream";
29897
+ const ext = key.slice(dot + 1).toLowerCase();
29898
+ return MIME_BY_EXT[ext] ?? "application/octet-stream";
29912
29899
  }
29913
29900
 
29914
29901
  //#endregion
@@ -32402,7 +32389,7 @@ function resolveEnvVars(kind, values) {
32402
32389
  * catalog so a user does not re-specify them per-run and collide with the
32403
32390
  * session-wide value. Plus the Commander-managed `--help` / `--version`.
32404
32391
  */
32405
- const CATALOG_EXCLUDED_FLAGS = new Set([
32392
+ const CATALOG_EXCLUDED_FLAGS = /* @__PURE__ */ new Set([
32406
32393
  "--app",
32407
32394
  "--profile",
32408
32395
  "--region",
@@ -32441,7 +32428,7 @@ const CATALOG_EXCLUDED_FLAGS = new Set([
32441
32428
  * secrets / a target stage, so they get a control (variadic → one value per
32442
32429
  * control; the raw-args box remains for multiple).
32443
32430
  */
32444
- const CATALOG_MANAGED_FLAGS = new Set([
32431
+ const CATALOG_MANAGED_FLAGS = /* @__PURE__ */ new Set([
32445
32432
  "--event",
32446
32433
  "--response-file",
32447
32434
  "--host",
@@ -35343,6 +35330,8 @@ function renderStudioHtml(appLabel, cliName) {
35343
35330
  const safeApp = escapeHtml(appLabel);
35344
35331
  const safeCli = escapeHtml(cliName);
35345
35332
  const brand = cliName === "cdkl" ? "CDK Local Studio" : `${safeCli} studio`;
35333
+ const optionSpecsJson = JSON.stringify(OPTION_SPECS).replace(/</g, "\\u003c");
35334
+ const flagCatalogJson = JSON.stringify(buildFlagCatalog()).replace(/</g, "\\u003c");
35346
35335
  return `<!doctype html>
35347
35336
  <html lang="en">
35348
35337
  <head>
@@ -35383,8 +35372,8 @@ function renderStudioHtml(appLabel, cliName) {
35383
35372
  <div id="log-results"></div>
35384
35373
  </section>
35385
35374
  </main>
35386
- <script>window.__OPTION_SPECS__ = ${JSON.stringify(OPTION_SPECS).replace(/</g, "\\u003c")};<\/script>
35387
- <script>window.__FLAG_CATALOG__ = ${JSON.stringify(buildFlagCatalog()).replace(/</g, "\\u003c")};<\/script>
35375
+ <script>window.__OPTION_SPECS__ = ${optionSpecsJson};<\/script>
35376
+ <script>window.__FLAG_CATALOG__ = ${flagCatalogJson};<\/script>
35388
35377
  <script>${STUDIO_SCRIPT}<\/script>
35389
35378
  </body>
35390
35379
  </html>`;
@@ -36238,7 +36227,7 @@ function tryParseJson(raw) {
36238
36227
  * re-sent client-side through the request composer + the live front door
36239
36228
  * (issue #322), not re-dispatched here, so the proxy still captures it.
36240
36229
  */
36241
- const REINVOKABLE_KINDS = new Set(["lambda", "agentcore"]);
36230
+ const REINVOKABLE_KINDS = /* @__PURE__ */ new Set(["lambda", "agentcore"]);
36242
36231
  /**
36243
36232
  * Re-invoke a past timeline row with an edited payload (issue #284, studio
36244
36233
  * Phase 3). Resolves the original target from the recorded invocation and
@@ -36273,7 +36262,7 @@ async function reinvoke(input, deps) {
36273
36262
  //#region src/local/studio-request-relay.ts
36274
36263
  const DEFAULT_TIMEOUT_MS = 3e4;
36275
36264
  const DEFAULT_MAX_BODY = 512 * 1024;
36276
- const BODY_METHODS = new Set([
36265
+ const BODY_METHODS = /* @__PURE__ */ new Set([
36277
36266
  "POST",
36278
36267
  "PUT",
36279
36268
  "PATCH",
@@ -36456,7 +36445,7 @@ function startStudioProxy(config) {
36456
36445
  });
36457
36446
  }
36458
36447
  /** RFC 7230 hop-by-hop headers — never forwarded across a proxy. */
36459
- const HOP_BY_HOP = new Set([
36448
+ const HOP_BY_HOP = /* @__PURE__ */ new Set([
36460
36449
  "connection",
36461
36450
  "keep-alive",
36462
36451
  "proxy-authenticate",
@@ -37026,7 +37015,7 @@ function routeStudioRun(req, deps) {
37026
37015
  if (req.kind === "ecs" && !deps.servableEcs.has(req.targetId)) return Promise.reject(/* @__PURE__ */ new Error(`'${req.targetId}' is not a servable ECS service (an ECS task definition runs via run-task, not start-service).`));
37027
37016
  return deps.serveManager.start(req);
37028
37017
  }
37029
- const SERVE_REQUEST_METHODS = new Set([
37018
+ const SERVE_REQUEST_METHODS = /* @__PURE__ */ new Set([
37030
37019
  "GET",
37031
37020
  "POST",
37032
37021
  "PUT",
@@ -37386,7 +37375,8 @@ function makePinClassifier(args) {
37386
37375
  return (id) => {
37387
37376
  try {
37388
37377
  const stack = resolveEcsServiceStack(id, stacks);
37389
- return !isLocalCdkAssetImage(resolveEcsServiceTarget(id, stacks, stack ? contextByStack.get(stack.stackName) : void 0));
37378
+ const context = stack ? contextByStack.get(stack.stackName) : void 0;
37379
+ return !isLocalCdkAssetImage(resolveEcsServiceTarget(id, stacks, context));
37390
37380
  } catch (err) {
37391
37381
  logger.warn(`studio: could not classify image-pin status for ECS service '${id}'; leaving it unmarked (the image-override picker will not be offered).${pinClassifyStateHint(stateBound)} ${err instanceof Error ? err.message : String(err)}`);
37392
37382
  if (stateBound === false) onUnresolved?.(id);
@@ -37424,7 +37414,8 @@ function makeTaskPinClassifier(args) {
37424
37414
  return (id) => {
37425
37415
  try {
37426
37416
  const stack = resolveEcsServiceStack(id, stacks);
37427
- const task = resolveEcsTaskTarget(id, stacks, stack ? contextByStack.get(stack.stackName) : void 0);
37417
+ const context = stack ? contextByStack.get(stack.stackName) : void 0;
37418
+ const task = resolveEcsTaskTarget(id, stacks, context);
37428
37419
  const representative = task.containers.find((c) => c.essential) ?? task.containers[0];
37429
37420
  return representative !== void 0 && representative.image.kind !== "cdk-asset";
37430
37421
  } catch (err) {
@@ -37828,4 +37819,4 @@ function addStudioSpecificOptions(cmd) {
37828
37819
 
37829
37820
  //#endregion
37830
37821
  export { applyEdgeResponseResult as $, buildJwksUrlFromIssuer as $n, resolveCfnStackName as $r, buildCloudMapIndex as $t, startAgentCoreHttpServer as A, resolveProfileCredentials as Ai, classifySourceChange as An, ConnectionRegistry as Ar, addRunTaskSpecificOptions as At, idFromArn as B, 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, createWatchPredicates as Fn, buildDisconnectEvent as Fr, addImageOverrideOptions as Ft, classifyS3Error as G, filterRoutesByApiIdentifiers as Gn, substituteEnvVarsFromState as Gr, enforceImageOverrideOrphans as Gt, createDeployedKvsDataSource as H, resolveEnvVars$1 as Hn, EcsTaskResolutionError as Hr, runEcsServiceEmulator as Ht, normalizeKvsFileKeys as I, 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, createAuthorizerCache as Ln, architectureToPlatform as Lr, ecsClusterOption as Lt, startAgentCoreWsBridge as M, createLocalInvokeCommand as Mn, handleConnectionsRequest as Mr, MAX_TASKS_SUBNET_RANGE_CAP as Mt, LocalStartCloudFrontError as N, 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, createLocalStartApiCommand as Pn, buildConnectEvent as Pr, addEcsAssumeRoleOptions as Pt, applyEdgeRequestResult as Q, buildCognitoJwksUrl as Qn, resolveCfnRegion as Qr, listPinnedTargets as Qt, parseOriginOverrides as R, 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, 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, addInvokeSpecificOptions as jn, buildMgmtEndpointEnvUrl as jr, createLocalRunTaskCommand as jt, selectServeInboundAuth as k, buildStsClientConfig 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, attachStageContext as zn, resolveRuntimeCodeMountPath as zr, parseRestartPolicy as zt };
37831
- //# sourceMappingURL=local-studio-BlxJWcDQ.js.map
37822
+ //# sourceMappingURL=local-studio-BjknISUv.js.map