cdk-local 0.126.6 → 0.127.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.
@@ -31868,16 +31868,19 @@ const STUDIO_CSS = `
31868
31868
  .req-composer .req-send button { margin-top: 0; padding: 4px 16px; background: #2a7d46; color: #fff; }
31869
31869
  .req-composer .req-send button:hover { background: #339152; }
31870
31870
  .req-composer .req-send button:disabled { background: #333; color: #888; }
31871
- .req-composer .req-status { margin-top: 8px; font: 12px ui-monospace, Menlo, monospace; }
31871
+ .req-composer .req-result .req-resp { margin-top: 8px; padding: 0; border-bottom: none; }
31872
31872
  .req-composer .req-result pre { background: #0e0e0e; }
31873
31873
  .composer button:disabled { background: #333; color: #888; cursor: default; }
31874
31874
  .composer .reinvoke-btn { margin-top: 6px; padding: 4px 14px; }
31875
- .log-head { display: flex; align-items: center; justify-content: space-between; }
31876
31875
  .log-clear {
31877
- background: #1d1d1d; color: #bbb; border: 1px solid #333; border-radius: 3px;
31878
- padding: 2px 10px; font-size: 11px; cursor: pointer; margin: 0;
31876
+ background: #1d1d1d; color: #ccc; border: 1px solid #3a3a3a; border-radius: 4px;
31877
+ padding: 5px 16px; font-size: 12px; cursor: pointer; margin: 0;
31879
31878
  }
31880
- .log-clear:hover { background: #262626; color: #ddd; }
31879
+ .log-clear:hover { background: #2a2a2a; color: #fff; border-color: #4a4a4a; }
31880
+ /* A Clear action sits BELOW the log it clears, right-aligned within the
31881
+ same capped content column so it lands near the log, not at the far
31882
+ right edge of a wide pane. */
31883
+ .clear-row { display: flex; justify-content: flex-end; max-width: 760px; margin-top: 6px; }
31881
31884
  .composer .err { color: #e0707a; margin-top: 6px; min-height: 18px; }
31882
31885
  .section { padding: 8px 12px; border-bottom: 1px solid #222; }
31883
31886
  .section h3 { margin: 0 0 6px; font-size: 11px; color: #888; text-transform: uppercase; }
@@ -31888,8 +31891,12 @@ const STUDIO_CSS = `
31888
31891
  .endpoint:hover { text-decoration: underline; }
31889
31892
  .ws-console .ws-status { font-size: 12px; color: #888; margin-left: 8px; font-weight: 400; }
31890
31893
  .ws-console .ws-status.on { color: #4ec97a; }
31891
- .ws-console h3 .ws-clear { float: right; font-weight: 400; }
31892
- .ws-row { display: flex; gap: 6px; align-items: center; margin: 6px 0; }
31894
+ /* Cap the interactive content to a readable column so on a wide center
31895
+ pane the input does not stretch edge-to-edge and fling Send far to the
31896
+ right. Send then sits right after the input; the log + Clear share the
31897
+ same column. The cap is a no-op on a narrow pane (content uses what is
31898
+ available). */
31899
+ .ws-row { display: flex; gap: 6px; align-items: center; margin: 6px 0; max-width: 760px; }
31893
31900
  .ws-row .ws-input { flex: 1; min-width: 0; background: #1a1a1a; border: 1px solid #333;
31894
31901
  color: #ddd; border-radius: 4px; padding: 5px 7px; font: inherit; }
31895
31902
  .ws-row .ws-input:focus { outline: none; border-color: #4ec97a; }
@@ -31897,7 +31904,10 @@ const STUDIO_CSS = `
31897
31904
  padding: 5px 12px; cursor: pointer; }
31898
31905
  .ws-row button:disabled { background: #2a2a2a; color: #666; cursor: default; }
31899
31906
  .ws-frames { max-height: 180px; overflow: auto; background: #141414; border: 1px solid #262626;
31900
- border-radius: 4px; padding: 6px 8px; margin-top: 4px; min-height: 22px; }
31907
+ border-radius: 4px; padding: 6px 8px; margin-top: 4px; min-height: 22px; max-width: 760px; }
31908
+ /* The serve LOGS <pre> shares the capped column so its Clear (below it,
31909
+ right-aligned via .clear-row) lands at the column edge, near the log. */
31910
+ .serve-log { max-width: 760px; }
31901
31911
  .searchbar { padding: 6px 10px; border-bottom: 1px solid #2a2a2a; background: #151515;
31902
31912
  position: sticky; top: 28px; z-index: 1; }
31903
31913
  .searchbar input {
@@ -32901,10 +32911,13 @@ const STUDIO_SCRIPT = `
32901
32911
  );
32902
32912
  } else if (running && isEcs && st.hostUrl) {
32903
32913
  // An ecs service published via --host-port IS reachable on the host
32904
- // (issue #322); show its host URL. No proxy fronts it, so requests are
32905
- // not captured on the timeline.
32914
+ // (issue #322); show its host URL. No proxy fronts it, so an EXTERNAL
32915
+ // curl to the host port is not captured but a request sent through the
32916
+ // composer below IS recorded on the timeline (studio emits it itself).
32906
32917
  epSec.appendChild(href(st.hostUrl));
32907
- epSec.appendChild(el('div', 'opt-hint', '(direct host port — not captured on the timeline)'));
32918
+ epSec.appendChild(
32919
+ el('div', 'opt-hint', '(direct host port — composer requests are captured on the timeline)')
32920
+ );
32908
32921
  } else if (running && isEcs) {
32909
32922
  // A pure-compute ECS service has no host endpoint — it just runs the
32910
32923
  // replicas (reach them container-to-container via Cloud Map).
@@ -32916,8 +32929,9 @@ const STUDIO_SCRIPT = `
32916
32929
 
32917
32930
  // In-workspace HTTP request composer for a running api / alb (or ecs with
32918
32931
  // --host-port) serve (issue #322): compose a request and Send it; studio
32919
- // relays it server-side (same-origin) so it works cross-port and, for
32920
- // api / alb, lands on the timeline via the capture proxy.
32932
+ // relays it server-side (same-origin) so it works cross-port and lands on
32933
+ // the timeline — api / alb via the capture proxy, ecs via studio emitting
32934
+ // the invocation pair itself (the direct host-port relay has no proxy).
32921
32935
  const httpBase = running
32922
32936
  ? (st.endpoints || []).find((u) => /^https?:/.test(u)) || (isEcs ? st.hostUrl : null)
32923
32937
  : null;
@@ -32935,20 +32949,7 @@ const STUDIO_SCRIPT = `
32935
32949
 
32936
32950
  const logs = logsById.get(id) || [];
32937
32951
  const logSec = el('div', 'section');
32938
- // Logs header carries a Clear button (issue #338): hammering a serve piles
32939
- // up log lines, so let the user empty the panel (display-only — the
32940
- // server-side store / history is untouched).
32941
- const logHead = el('div', 'log-head');
32942
- logHead.appendChild(el('h3', null, 'Logs'));
32943
- const logClear = el('button', 'log-clear', 'Clear');
32944
- logClear.onclick = function () {
32945
- // Surgical clear (issue #334): empty the buffer + the live <pre> without
32946
- // a full re-render that would wipe the request composer's fields.
32947
- logsById.set(id, []);
32948
- if (serveLogPre) serveLogPre.textContent = '(none)';
32949
- };
32950
- logHead.appendChild(logClear);
32951
- logSec.appendChild(logHead);
32952
+ logSec.appendChild(el('h3', null, 'Logs'));
32952
32953
  // A proxy-fronted serve (api / alb) streams its child start-* logs here,
32953
32954
  // which advertise the child internal 127.0.0.1 port — a DIFFERENT port
32954
32955
  // than the capture-proxy URL in Endpoints above. Flag it so the child
@@ -32962,8 +32963,22 @@ const STUDIO_SCRIPT = `
32962
32963
  )
32963
32964
  );
32964
32965
  }
32965
- const logPre = el('pre', null, logs.length ? logs.join('\\n') : '(none)');
32966
+ const logPre = el('pre', 'serve-log', logs.length ? logs.join('\\n') : '(none)');
32966
32967
  logSec.appendChild(logPre);
32968
+ // Clear sits below the log (issue #338): hammering a serve piles up log
32969
+ // lines, so let the user empty the panel (display-only — the server-side
32970
+ // store / history is untouched). Below the log + right-aligned so it lands
32971
+ // near the content it clears, not in the section header above.
32972
+ const logClearRow = el('div', 'clear-row');
32973
+ const logClear = el('button', 'log-clear', 'Clear');
32974
+ logClear.onclick = function () {
32975
+ // Surgical clear (issue #334): empty the buffer + the live <pre> without
32976
+ // a full re-render that would wipe the request composer's fields.
32977
+ logsById.set(id, []);
32978
+ if (serveLogPre) serveLogPre.textContent = '(none)';
32979
+ };
32980
+ logClearRow.appendChild(logClear);
32981
+ logSec.appendChild(logClearRow);
32967
32982
  ws.appendChild(logSec);
32968
32983
  // Register the live LOGS <pre> so streamed log events update it surgically
32969
32984
  // (issue #334) instead of re-rendering the whole serve workspace.
@@ -33203,17 +33218,25 @@ const STUDIO_SCRIPT = `
33203
33218
  msg.textContent = 'Request failed: ' + (data.error || ('HTTP ' + res.status));
33204
33219
  return;
33205
33220
  }
33206
- const statusLine = el('div', 'req-status');
33221
+ // Frame the result as a "Response" section (status badge in the
33222
+ // heading) so a sent request reads as Request (the compose form above)
33223
+ // -> Response, matching the timeline's read-only detail. Without the
33224
+ // heading the status + headers + body dumped raw under Send read as an
33225
+ // unlabeled blob — most visible for an ecs --host-port serve, which is
33226
+ // not captured on the timeline and so has only this inline result.
33227
+ const respSec = el('div', 'section req-resp');
33228
+ const respHead = el('h3', null, 'Response');
33207
33229
  const cls = data.status >= 200 && data.status < 300 ? 'ok' : 'bad';
33208
- statusLine.appendChild(
33209
- el('span', cls, data.status + (data.durationMs != null ? ' · ' + data.durationMs + 'ms' : ''))
33230
+ respHead.appendChild(
33231
+ el('span', cls, ' ' + data.status + (data.durationMs != null ? ' · ' + data.durationMs + 'ms' : ''))
33210
33232
  );
33211
- result.appendChild(statusLine);
33233
+ respSec.appendChild(respHead);
33212
33234
  const hdrs = Object.keys(data.headers || {})
33213
33235
  .map(function (k) { return k + ': ' + data.headers[k]; })
33214
33236
  .join('\\n');
33215
- if (hdrs) result.appendChild(el('pre', 'req-resp-headers', hdrs));
33216
- result.appendChild(el('pre', null, data.body != null ? data.body : ''));
33237
+ if (hdrs) respSec.appendChild(el('pre', 'req-resp-headers', hdrs));
33238
+ respSec.appendChild(el('pre', null, data.body != null ? data.body : ''));
33239
+ result.appendChild(respSec);
33217
33240
  } catch (err) {
33218
33241
  msg.textContent = 'Request failed: ' + err;
33219
33242
  } finally {
@@ -33373,12 +33396,16 @@ const STUDIO_SCRIPT = `
33373
33396
  row.appendChild(sendBtn);
33374
33397
  sec.appendChild(row);
33375
33398
 
33376
- const clearBtn = el('button', 'log-clear ws-clear', 'Clear');
33377
- clearBtn.onclick = wsClear;
33378
- h.appendChild(clearBtn);
33379
-
33380
33399
  const frames = el('pre', 'ws-frames', wsFrames.join('\\n'));
33381
33400
  sec.appendChild(frames);
33401
+
33402
+ // Clear sits BELOW the log it clears (the log streams downward), right-
33403
+ // aligned within the capped column so it stays near the content.
33404
+ const clearRow = el('div', 'clear-row');
33405
+ const clearBtn = el('button', 'log-clear ws-clear', 'Clear');
33406
+ clearBtn.onclick = wsClear;
33407
+ clearRow.appendChild(clearBtn);
33408
+ sec.appendChild(clearRow);
33382
33409
  return sec;
33383
33410
  }
33384
33411
 
@@ -35665,6 +35692,89 @@ function resolveServeBaseUrl(state) {
35665
35692
  return (state.endpoints || []).find((u) => /^https?:/.test(u)) ?? state.hostUrl;
35666
35693
  }
35667
35694
  /**
35695
+ * Whether a relayed request to this serve is already captured on the timeline.
35696
+ * An `api` / `alb` / `cloudfront` serve's `endpoints` are the studio
35697
+ * capture-proxy URLs, so relaying to one emits `invocation` events from the
35698
+ * proxy. An `ecs` serve published via `--host-port` has only a `hostUrl` (no
35699
+ * proxy in front), so a relay to it is NOT captured — the caller emits the
35700
+ * timeline events itself (see {@link relayAndCaptureServeRequest}).
35701
+ */
35702
+ function serveRelayIsCaptured(state) {
35703
+ return (state.endpoints || []).some((u) => /^https?:/.test(u));
35704
+ }
35705
+ let serveRelayIdCounter = 0;
35706
+ /**
35707
+ * Relay a composed request to an UNCAPTURED serve (an `ecs` `--host-port`
35708
+ * replica, reached direct with no capture proxy in front) while emitting the
35709
+ * `invocation` start/end pair onto the bus, so the request lands on the studio
35710
+ * timeline exactly like an api / alb request the capture proxy records. The
35711
+ * event shape mirrors {@link startStudioProxy}'s so the UI's read-only
35712
+ * Request/Response detail + the store's history/log binding treat it
35713
+ * identically. Exported for unit testing. `clock` / `idFactory` are injectable.
35714
+ */
35715
+ async function relayAndCaptureServeRequest(deps, relay = relayServeRequest, clock = Date.now, idFactory = () => {
35716
+ serveRelayIdCounter += 1;
35717
+ return `req-${Date.now()}-${serveRelayIdCounter}`;
35718
+ }) {
35719
+ const { bus, state, req, baseUrl } = deps;
35720
+ const id = idFactory();
35721
+ const startedAt = clock();
35722
+ const pathStr = req.path ?? "/";
35723
+ const label = `${req.method} ${pathStr.split("?")[0]}`;
35724
+ const headers = req.headers ?? {};
35725
+ const base = {
35726
+ id,
35727
+ ts: startedAt,
35728
+ target: state.targetId,
35729
+ kind: state.kind,
35730
+ label
35731
+ };
35732
+ bus.emit("invocation", {
35733
+ ...base,
35734
+ request: {
35735
+ method: req.method,
35736
+ path: pathStr,
35737
+ headers
35738
+ }
35739
+ });
35740
+ const reqShape = {
35741
+ method: req.method,
35742
+ path: pathStr,
35743
+ headers,
35744
+ body: req.body
35745
+ };
35746
+ try {
35747
+ const result = await relay({
35748
+ baseUrl,
35749
+ method: req.method,
35750
+ ...req.path !== void 0 ? { path: req.path } : {},
35751
+ ...req.headers !== void 0 ? { headers: req.headers } : {},
35752
+ ...req.body !== void 0 ? { body: req.body } : {}
35753
+ });
35754
+ bus.emit("invocation", {
35755
+ ...base,
35756
+ request: reqShape,
35757
+ response: {
35758
+ status: result.status,
35759
+ headers: result.headers,
35760
+ body: result.body
35761
+ },
35762
+ status: result.status,
35763
+ durationMs: result.durationMs
35764
+ });
35765
+ return result;
35766
+ } catch (err) {
35767
+ bus.emit("invocation", {
35768
+ ...base,
35769
+ request: reqShape,
35770
+ response: `relay error: ${err instanceof Error ? err.message : String(err)}`,
35771
+ status: 502,
35772
+ durationMs: clock() - startedAt
35773
+ });
35774
+ throw err;
35775
+ }
35776
+ }
35777
+ /**
35668
35778
  * Validate + narrow the untyped `POST /api/request` body (issue #322). Throws
35669
35779
  * on a malformed body; the studio server surfaces a thrown handler error as a
35670
35780
  * 500 (the same convention as {@link coerceRunRequest} / {@link
@@ -36152,13 +36262,19 @@ async function localStudioCommand(options) {
36152
36262
  if (!state || state.status !== "running") throw new Error(`'${req.targetId}' is not a running serve target.`);
36153
36263
  const baseUrl = resolveServeBaseUrl(state);
36154
36264
  if (!baseUrl) throw new Error(`'${req.targetId}' has no reachable HTTP endpoint (an ecs service needs --host-port).`);
36155
- return await relayServeRequest({
36265
+ if (serveRelayIsCaptured(state)) return relayServeRequest({
36156
36266
  baseUrl,
36157
36267
  method: req.method,
36158
36268
  ...req.path !== void 0 ? { path: req.path } : {},
36159
36269
  ...req.headers !== void 0 ? { headers: req.headers } : {},
36160
36270
  ...req.body !== void 0 ? { body: req.body } : {}
36161
36271
  });
36272
+ return relayAndCaptureServeRequest({
36273
+ bus,
36274
+ state,
36275
+ req,
36276
+ baseUrl
36277
+ });
36162
36278
  },
36163
36279
  onReinvoke: (body) => {
36164
36280
  const { invocationId, payload } = coerceReinvokeRequest(body);
@@ -36293,4 +36409,4 @@ function addStudioSpecificOptions(cmd) {
36293
36409
 
36294
36410
  //#endregion
36295
36411
  export { CLOUDFRONT_DISTRIBUTION_TYPE as $, computeRequestIdentityHash as $n, availableWebSocketApiIdentifiers as $r, getContainerNetworkIp as $t, addStartCloudFrontSpecificOptions as A, resolveApiTargetSubset as An, buildContainerImage as Ar, addImageOverrideOptions as At, classifyS3Error as B, groupRoutesByServer as Bn, createLocalStateProvider as Br, enforceImageOverrideOrphans as Bt, addListSpecificOptions as C, toCmdArgv as Cn, buildMgmtEndpointEnvUrl as Cr, createLocalStartServiceCommand as Ct, createLocalStartAgentCoreCommand as D, addStartApiSpecificOptions as Dn, buildDisconnectEvent as Dr, MAX_TASKS_SUBNET_RANGE_CAP as Dt, addStartAgentCoreSpecificOptions as E, createLocalInvokeCommand as En, buildConnectEvent as Er, createLocalRunTaskCommand as Et, idFromArn as F, materializeLayerFromArn as Fn, substituteAgainstState as Fr, resolveEcsAssumeRoleOption as Ft, serveFromStaticOrigin as G, defaultCredentialsLoader as Gn, resolveCfnStackName as Gr, describePinnedImageUri as Gt, matchBehavior as H, startApiServer as Hn, rejectExplicitCfnStackWithMultipleStacks as Hr, parseImageOverrideFlags as Ht, resolveKvsModulesForDistribution as I, resolveEnvVars$1 as In, substituteAgainstStateAsync as Ir, resolveSharedSidecarCredentials as It, applyEdgeResponseResult as J, createJwksCache as Jn, resolveSsmParameters as Jr, buildCloudMapIndex as Jt, serveLambdaUrlOrigin as K, buildCognitoJwksUrl as Kn, CfnLocalStateProvider as Kr, isLocalCdkAssetImage as Kt, createDeployedKvsDataSource as L, availableApiIdentifiers as Ln, substituteEnvVarsFromState as Lr, runEcsServiceEmulator as Lt, parseKvsFileOverrides as M, createFileWatcher as Mn, resolveRuntimeFileExtension as Mr, ecsClusterOption as Mt, parseOriginOverrides as N, attachStageContext as Nn, resolveRuntimeImage as Nr, parseMaxTasks as Nt, startAgentCoreWsBridge as O, createLocalStartApiCommand as On, buildMessageEvent as Or, addCommonEcsServiceOptions as Ot, resolveCloudFrontTarget as P, buildStageMap as Pn, EcsTaskResolutionError as Pr, parseRestartPolicy as Pt, httpHeadersToEdge as Q, buildMethodArn as Qn, listTargets as Qr, setShadowReadyTimeoutMs as Qt, resolveDeployedKvsArnByName as R, filterRoutesByApiIdentifier as Rn, substituteEnvVarsFromStateAsync as Rr, ImageOverrideError as Rt, StudioEventBus as S, resolveProfileCredentials as Si, renderCodeDockerfile as Sn, ConnectionRegistry as Sr, addStartServiceSpecificOptions as St, formatTargetListing as T, addInvokeSpecificOptions as Tn, parseConnectionsPath as Tr, addRunTaskSpecificOptions as Tt, startCloudFrontServer as U, resolveSelectionExpression as Un, resolveCfnFallbackRegion as Ur, resolveImageOverrides as Ut, createS3OriginReader as V, readMtlsMaterialsFromDisk as Vn, isCfnFlagPresent as Vr, mergeForService as Vt, resolveErrorResponseCandidates as W, resolveServiceIntegrationParameters as Wn, resolveCfnRegion as Wr, runImageOverrideBuilds as Wt, buildEdgeResponseEvent as X, verifyJwtAuthorizer as Xn, resolveSingleTarget as Xr, DEFAULT_SHADOW_READY_TIMEOUT_MS as Xt, buildEdgeRequestEvent as Y, verifyCognitoJwt as Yn, resolveWatchConfig as Yr, CloudMapRegistry as Yt, edgeHeadersToHttp as Z, verifyJwtViaDiscovery as Zn, countTargets as Zr, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as Zt, filterStudioTargetGroups as _, formatStateRemedy as _i, waitForAgentCorePing as _n, tryParseStatus as _r, createLocalStartAlbCommand as _t, createLocalStudioCommand as a, discoverRoutes as ai, A2A_CONTAINER_PORT as an, buildCorsConfigByApiId as ar, pickLambdaEdgeFunctionLogicalId as at, renderStudioHtml as b, LocalInvokeBuildError as bi, buildAgentCoreCodeImage as bn, probeHostGatewaySupport as br, isApplicationLoadBalancer as bt, startStudioProxy as c, AGENTCORE_A2A_PROTOCOL as ci, MCP_CONTAINER_PORT as cn, matchPreflight as cr, compileCloudFrontFunction as ct, createStudioDispatcher as d, AGENTCORE_MCP_PROTOCOL as di, mcpInvokeOnce as dn, applyAuthorizerOverlay as dr, stripCloudFrontImport as dt, discoverWebSocketApis as ei, attachContainerLogStreamer as en, evaluateCachedLambdaPolicy as er, describeS3OriginDomain as et, filterStudioCustomResources as f, AGENTCORE_RUNTIME_TYPE as fi, parseSseForJsonRpc as fn, buildHttpApiV2Event as fr, createCloudFrontModule as ft, annotatePinnedEcsTargets as g, derivePseudoParametersFromRegion as gi, invokeAgentCore as gn, selectIntegrationResponse as gr, albStrategy as gt, annotateEcsTaskPinnedTargets as h, resolveAgentCoreTarget as hi, AGENTCORE_SESSION_ID_HEADER as hn, pickResponseTemplate as hr, addAlbSpecificOptions as ht, coerceStopRequest as i, webSocketApiMatchesIdentifier as ii, invokeAgentCoreWs as in, applyCorsResponseHeaders as ir, pickKvsLogicalIdFromArn as it, createLocalStartCloudFrontCommand as j, createAuthorizerCache as jn, resolveRuntimeCodeMountPath as jr, buildEcsImageResolutionContext$1 as jt, LocalStartCloudFrontError as k, createWatchPredicates as kn, architectureToPlatform as kr, addEcsAssumeRoleOptions as kt, relayServeRequest as l, AGENTCORE_AGUI_PROTOCOL as li, MCP_PATH as ln, matchRoute as lr, runViewerRequest as lt, annotateAlbPinnedBackingServices as m, pickAgentCoreCandidateStack as mi, signAgentCoreInvocation as mn, evaluateResponseParameters as mr, createUnboundCloudFrontModule as mt, coerceRunRequest as n, filterWebSocketApisByIdentifiers as ni, createLocalInvokeAgentCoreCommand as nn, invokeTokenAuthorizer as nr, isCloudFrontDistribution as nt, resolveServeBaseUrl as o, pickRefLogicalId as oi, A2A_PATH as on, buildCorsConfigFromCloudFrontChain as or, pickTargetFunctionLogicalId as ot, isCustomResourceLambdaTarget as p, AgentCoreResolutionError as pi, AGENTCORE_SIGV4_SERVICE as pn, buildRestV1Event as pr, createLocalFileKvsDataSource as pt, applyEdgeRequestResult as q, buildJwksUrlFromIssuer as qn, collectSsmParameterRefs as qr, listPinnedTargets as qt, coerceServeRequest as r, parseSelectionExpressionPath as ri, bridgeAgentCoreWs as rn, attachAuthorizers as rr, pickFunctionUrlLogicalIdFromOrigin as rt, createStudioServeManager as s, resolveLambdaArnIntrinsic as si, a2aInvokeOnce as sn, isFunctionUrlOacFronted as sr, resolveCloudFrontDistribution as st, addStudioSpecificOptions as t, discoverWebSocketApisOrThrow as ti, addInvokeAgentCoreSpecificOptions as tn, invokeRequestAuthorizer as tr, extractKvsAssociations as tt, reinvoke as u, AGENTCORE_HTTP_PROTOCOL as ui, MCP_PROTOCOL_VERSION as un, translateLambdaResponse as ur, runViewerResponse as ut, startStudioServer as v, substituteImagePlaceholders as vi, downloadAndExtractS3Bundle as vn, VtlEvaluationError as vr, parseLbPortOverrides as vt, createLocalListCommand as w, classifySourceChange as wn, handleConnectionsRequest as wr, serviceStrategy as wt, createStudioStore as x, buildStsClientConfig as xi, computeCodeImageTag as xn, bufferToBody as xr, resolveAlbFrontDoor as xt, toStudioTargetGroups as y, tryResolveImageFnJoin as yi, SUPPORTED_CODE_RUNTIMES as yn, HOST_GATEWAY_MIN_VERSION as yr, resolveAlbTarget as yt, resolveDeployedOriginBucket as z, filterRoutesByApiIdentifiers as zn, LocalStateSourceError as zr, buildImageOverrideTag as zt };
36296
- //# sourceMappingURL=local-studio-DiU9lacE.js.map
36412
+ //# sourceMappingURL=local-studio-JqYMptkG.js.map