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.
- package/dist/cli.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +1 -20
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/{local-studio-0CCaAGzv.d.ts → local-studio-BnF1Vlrs.d.ts} +21 -2
- package/dist/local-studio-BnF1Vlrs.d.ts.map +1 -0
- package/dist/{local-studio-DiU9lacE.js → local-studio-JqYMptkG.js} +156 -40
- package/dist/{local-studio-DiU9lacE.js.map → local-studio-JqYMptkG.js.map} +1 -1
- package/package.json +1 -1
- package/dist/local-studio-0CCaAGzv.d.ts.map +0 -1
|
@@ -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-
|
|
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: #
|
|
31878
|
-
padding:
|
|
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: #
|
|
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
|
-
|
|
31892
|
-
|
|
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
|
|
32905
|
-
// not captured
|
|
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(
|
|
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
|
|
32920
|
-
// api / alb
|
|
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
|
-
|
|
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',
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
|
33216
|
-
|
|
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
|
|
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-
|
|
36412
|
+
//# sourceMappingURL=local-studio-JqYMptkG.js.map
|