@anvia/studio 1.1.2 → 1.2.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/README.md +52 -0
- package/dist/index.d.ts +31 -4
- package/dist/index.js +19806 -626
- package/dist/index.js.map +1 -1
- package/dist/ui/assets/ArrowClockwise.es-Dn4lp0ac.js +2 -0
- package/dist/ui/assets/{ArrowClockwise.es-5vr4h4OH.js.map → ArrowClockwise.es-Dn4lp0ac.js.map} +1 -1
- package/dist/ui/assets/Check.es-BaQZo8Jl.js +2 -0
- package/dist/ui/assets/{Check.es-DgvuCllR.js.map → Check.es-BaQZo8Jl.js.map} +1 -1
- package/dist/ui/assets/Combination-Cj4UR5tg.js +42 -0
- package/dist/ui/assets/Combination-Cj4UR5tg.js.map +1 -0
- package/dist/ui/assets/Copy.es-CU5v9Pav.js +2 -0
- package/dist/ui/assets/{Copy.es-DV7tb_eC.js.map → Copy.es-CU5v9Pav.js.map} +1 -1
- package/dist/ui/assets/MagnifyingGlass.es-C72UX0bz.js +2 -0
- package/dist/ui/assets/{MagnifyingGlass.es-yzEp9c89.js.map → MagnifyingGlass.es-C72UX0bz.js.map} +1 -1
- package/dist/ui/assets/Wrench.es-Q3fLRWow.js +2 -0
- package/dist/ui/assets/{Wrench.es-rRuP3Mrh.js.map → Wrench.es-Q3fLRWow.js.map} +1 -1
- package/dist/ui/assets/agents-page-6DCSMWnZ.js +2 -0
- package/dist/ui/assets/{agents-page-ByhvVYOx.js.map → agents-page-6DCSMWnZ.js.map} +1 -1
- package/dist/ui/assets/badge-DUs0RCHV.js +2 -0
- package/dist/ui/assets/{badge-C3fkxijh.js.map → badge-DUs0RCHV.js.map} +1 -1
- package/dist/ui/assets/button-BWxpVW85.js +2 -0
- package/dist/ui/assets/{button-B_AoswCu.js.map → button-BWxpVW85.js.map} +1 -1
- package/dist/ui/assets/dialog-DauYXFnG.js +2 -0
- package/dist/ui/assets/{dialog-BfKpnby4.js.map → dialog-DauYXFnG.js.map} +1 -1
- package/dist/ui/assets/dist-BmLOFYIW.js +2 -0
- package/dist/ui/assets/{dist-Dr6EWOhl.js.map → dist-BmLOFYIW.js.map} +1 -1
- package/dist/ui/assets/dist-CHLp-Np4.js +2 -0
- package/dist/ui/assets/dist-CHLp-Np4.js.map +1 -0
- package/dist/ui/assets/dist-DD97Shn_.js +2 -0
- package/dist/ui/assets/{dist-CUv0NHNl.js.map → dist-DD97Shn_.js.map} +1 -1
- package/dist/ui/assets/graphs-page-BA0jzknS.js +2 -0
- package/dist/ui/assets/{graphs-page-vBCjLEva.js.map → graphs-page-BA0jzknS.js.map} +1 -1
- package/dist/ui/assets/icon-ksPSRwE8.js +2 -0
- package/dist/ui/assets/{icon-DyadsXLr.js.map → icon-ksPSRwE8.js.map} +1 -1
- package/dist/ui/assets/index-DDzW7QMd.css +2 -0
- package/dist/ui/assets/{index-D7rMlAzl.js → index-Dyjst4Yt.js} +5 -5
- package/dist/ui/assets/index-Dyjst4Yt.js.map +1 -0
- package/dist/ui/assets/input-DdUxz9c8.js +2 -0
- package/dist/ui/assets/{input-DuERdYTl.js.map → input-DdUxz9c8.js.map} +1 -1
- package/dist/ui/assets/knowledge-page-BVVc4w3w.js +2 -0
- package/dist/ui/assets/{knowledge-page-ZeAUXg01.js.map → knowledge-page-BVVc4w3w.js.map} +1 -1
- package/dist/ui/assets/mcps-page-BfF4B22U.js +2 -0
- package/dist/ui/assets/{mcps-page-BSkygYJM.js.map → mcps-page-BfF4B22U.js.map} +1 -1
- package/dist/ui/assets/{memory-page-B2pWZ4in.js → memory-page-BQkt2BAW.js} +2 -2
- package/dist/ui/assets/memory-page-BQkt2BAW.js.map +1 -0
- package/dist/ui/assets/pipelines-page-Xx2kQNCI.js +2 -0
- package/dist/ui/assets/pipelines-page-Xx2kQNCI.js.map +1 -0
- package/dist/ui/assets/{renderers-DRD34eUr.js → renderers-CrjMPAR2.js} +5 -5
- package/dist/ui/assets/{renderers-DRD34eUr.js.map → renderers-CrjMPAR2.js.map} +1 -1
- package/dist/ui/assets/{request-DbgMKweq.js → request-DYxy87Kp.js} +3 -3
- package/dist/ui/assets/{request-DbgMKweq.js.map → request-DYxy87Kp.js.map} +1 -1
- package/dist/ui/assets/sandboxes-page-BwidNA5G.js +2 -0
- package/dist/ui/assets/{sandboxes-page-Bo4S4ILL.js.map → sandboxes-page-BwidNA5G.js.map} +1 -1
- package/dist/ui/assets/select-C4MbvpHr.js +2 -0
- package/dist/ui/assets/{select-BdCBnmXx.js.map → select-C4MbvpHr.js.map} +1 -1
- package/dist/ui/assets/sessions-page-C3dJDjJb.js +2 -0
- package/dist/ui/assets/{sessions-page-BMnR-r_F.js.map → sessions-page-C3dJDjJb.js.map} +1 -1
- package/dist/ui/assets/status-page-92JD9Hj8.js +2 -0
- package/dist/ui/assets/{status-page-CqmMMSo2.js.map → status-page-92JD9Hj8.js.map} +1 -1
- package/dist/ui/assets/studio-CtQdOoHK.js +2 -0
- package/dist/ui/assets/{studio-DzEdCFsX.js.map → studio-CtQdOoHK.js.map} +1 -1
- package/dist/ui/assets/style-CrHHNFw2.js +8 -0
- package/dist/ui/assets/{style-FGiH1LIC.js.map → style-CrHHNFw2.js.map} +1 -1
- package/dist/ui/assets/team-playground-GcG3j0Hl.js +2 -0
- package/dist/ui/assets/team-playground-GcG3j0Hl.js.map +1 -0
- package/dist/ui/assets/textarea-gPj9-ALc.js +2 -0
- package/dist/ui/assets/{textarea-fAtCF2cf.js.map → textarea-gPj9-ALc.js.map} +1 -1
- package/dist/ui/assets/tool-runner-xLspgGPa.js +2 -0
- package/dist/ui/assets/{tool-runner-CExWna8k.js.map → tool-runner-xLspgGPa.js.map} +1 -1
- package/dist/ui/assets/tools-page-BMyx2xRT.js +2 -0
- package/dist/ui/assets/{tools-page-CdkExqNd.js.map → tools-page-BMyx2xRT.js.map} +1 -1
- package/dist/ui/assets/trace-browser-Axd-aif6.js +4 -0
- package/dist/ui/assets/{trace-browser-Co9iS9HR.js.map → trace-browser-Axd-aif6.js.map} +1 -1
- package/dist/ui/assets/transcript-item-Bl3Yl-NT.js +3 -0
- package/dist/ui/assets/{transcript-item-D9NWsnsD.js.map → transcript-item-Bl3Yl-NT.js.map} +1 -1
- package/dist/ui/assets/with-selector-BIQdjRiO.js +2 -0
- package/dist/ui/assets/{with-selector-B8ah9Wvu.js.map → with-selector-BIQdjRiO.js.map} +1 -1
- package/dist/ui/index.html +17 -17
- package/package.json +8 -8
- package/dist/ui/assets/ArrowClockwise.es-5vr4h4OH.js +0 -2
- package/dist/ui/assets/Check.es-DgvuCllR.js +0 -2
- package/dist/ui/assets/Copy.es-DV7tb_eC.js +0 -2
- package/dist/ui/assets/MagnifyingGlass.es-yzEp9c89.js +0 -2
- package/dist/ui/assets/Wrench.es-rRuP3Mrh.js +0 -2
- package/dist/ui/assets/agents-page-ByhvVYOx.js +0 -2
- package/dist/ui/assets/badge-C3fkxijh.js +0 -2
- package/dist/ui/assets/button-B_AoswCu.js +0 -2
- package/dist/ui/assets/dialog-BfKpnby4.js +0 -2
- package/dist/ui/assets/dist-CUv0NHNl.js +0 -2
- package/dist/ui/assets/dist-Dr6EWOhl.js +0 -2
- package/dist/ui/assets/es2015-DGcxtKLK.js +0 -42
- package/dist/ui/assets/es2015-DGcxtKLK.js.map +0 -1
- package/dist/ui/assets/graphs-page-vBCjLEva.js +0 -2
- package/dist/ui/assets/icon-DyadsXLr.js +0 -2
- package/dist/ui/assets/index-BGl7eOVR.css +0 -2
- package/dist/ui/assets/index-D7rMlAzl.js.map +0 -1
- package/dist/ui/assets/input-DuERdYTl.js +0 -2
- package/dist/ui/assets/knowledge-page-ZeAUXg01.js +0 -2
- package/dist/ui/assets/mcps-page-BSkygYJM.js +0 -2
- package/dist/ui/assets/memory-page-B2pWZ4in.js.map +0 -1
- package/dist/ui/assets/pipelines-page-DAqa699J.js +0 -2
- package/dist/ui/assets/pipelines-page-DAqa699J.js.map +0 -1
- package/dist/ui/assets/sandboxes-page-Bo4S4ILL.js +0 -2
- package/dist/ui/assets/select-BdCBnmXx.js +0 -2
- package/dist/ui/assets/sessions-page-BMnR-r_F.js +0 -2
- package/dist/ui/assets/status-page-CqmMMSo2.js +0 -2
- package/dist/ui/assets/studio-DzEdCFsX.js +0 -2
- package/dist/ui/assets/style-FGiH1LIC.js +0 -8
- package/dist/ui/assets/textarea-fAtCF2cf.js +0 -2
- package/dist/ui/assets/tool-runner-CExWna8k.js +0 -2
- package/dist/ui/assets/tools-page-CdkExqNd.js +0 -2
- package/dist/ui/assets/trace-browser-Co9iS9HR.js +0 -4
- package/dist/ui/assets/transcript-item-D9NWsnsD.js +0 -3
- package/dist/ui/assets/utils-DzstcfqT.js +0 -2
- package/dist/ui/assets/utils-DzstcfqT.js.map +0 -1
- package/dist/ui/assets/with-selector-B8ah9Wvu.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as e}from"./button-
|
|
1
|
+
import{s as e}from"./button-BWxpVW85.js";async function*t(e){let t=e.getReader(),n=new TextDecoder,i=``,a=!1;try{for(;;){let e=await t.read();if(e.done){a=!0;break}i+=n.decode(e.value,{stream:!0});let r=i.split(/\r?\n/);i=r.pop()??``;for(let e of r){let t=e.trim();t.length>0&&(yield JSON.parse(t))}}i+=n.decode();let e=i.trim();e.length>0&&(yield JSON.parse(e))}finally{a||await r(t),t.releaseLock()}}async function*n(e){let t=e.getReader(),n=new TextDecoder,i=``,a=[],o=!1;function s(e){if(e===``){let e=a.length===0?void 0:a.join(`
|
|
2
2
|
`);return a=[],e}if(e.startsWith(`:`))return;let t=e.indexOf(`:`),n=t===-1?e:e.slice(0,t),r=t===-1?``:e.slice(t+1).replace(/^ /,``);n===`data`&&a.push(r)}try{for(;;){let e=await t.read();if(e.done){o=!0;break}i+=n.decode(e.value,{stream:!0});let r=i.split(/\r?\n/);i=r.pop()??``;for(let e of r){let t=s(e);t!==void 0&&(yield JSON.parse(t))}}if(i+=n.decode(),i.length>0){let e=s(i);e!==void 0&&(yield JSON.parse(e))}a.length>0&&(yield JSON.parse(a.join(`
|
|
3
|
-
`)))}finally{o||await r(t),t.releaseLock()}}async function r(e){try{await e.cancel()}catch{}}var i=class extends Error{constructor(e,t){super(`Event stream request failed with status ${e.status}`),this.response=e,this.body=t,this.name=`EventStreamHttpError`}response;body};async function*a(e){let r=e.fetch??globalThis.fetch;if(r===void 0)throw Error(`fetchEventStream requires a fetch implementation.`);let a=await r(e.input,o(e));if(!a.ok)throw new i(a,await a.text());if(e.validateResponse?.(a),a.body===null)throw Error(`Event stream response does not include a body.`);(e.format===void 0||e.format===`auto`?s(a.headers.get(`content-type`)):e.format)===`sse`?yield*n(a.body):yield*t(a.body)}function o(e){let{input:t,format:n,fetch:r,validateResponse:i,...a}=e;return a}function s(e){return e?.toLowerCase().includes(`text/event-stream`)?`sse`:`jsonl`}function c(e){return{async*send(t){let n=typeof e.endpoint==`function`?e.endpoint(t):e.endpoint,r=d(await l(e.headers,t),t.headers),i=e.method??`POST`,o=await u(e.body,t,r,i),s={...e.init,input:n,method:i,headers:r,format:e.format??`auto`};o!==void 0&&(s.body=o),t.abortSignal!==void 0&&(s.signal=t.abortSignal),e.fetch!==void 0&&(s.fetch=e.fetch),e.validateResponse!==void 0&&(s.validateResponse=e.validateResponse);for await(let t of a(s))yield e.mapEvent===void 0?t:e.mapEvent(t)}}}async function l(e,t){return typeof e==`function`?e(t):e}async function u(e,t,n,r){if(e!==void 0)return e({...t,headers:n});if(r.toUpperCase()!==`GET`&&r.toUpperCase()!==`HEAD`)return n.has(`content-type`)||n.set(`content-type`,`application/json`),JSON.stringify(t.request)}function d(...e){let t=new Headers;for(let n of e)n!==void 0&&new Headers(n).forEach((e,n)=>{t.set(n,e)});return t}async function f(e,t){let n=``;try{let t=await e.json();typeof t==`object`&&t&&`error`in t&&typeof t.error==`object`&&t.error!==null&&`message`in t.error&&typeof t.error.message==`string`&&(n=`: ${t.error.message}`)}catch{}return`${t} with HTTP ${e.status}${n}`}function p(t){return t instanceof i?t.response.status===401?`Authentication required`:`Run failed with HTTP ${t.response.status}`:e(t)}function m(e,t){let n=``;try{let t=JSON.parse(e.body);typeof t==`object`&&t&&`error`in t&&typeof t.error==`object`&&t.error!==null&&`message`in t.error&&typeof t.error.message==`string`&&(n=`: ${t.error.message}`)}catch{}return`${t} with HTTP ${e.response.status}${n}`}function h(e){if(typeof e==`string`)return e;if(e instanceof Error)return e.message;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}async function g(e,t,n,r=`default`,i={}){let a={...i,cache:r};n!==void 0&&(a.signal=n);let o=await fetch(e,a);if(!o.ok)throw Error(await f(o,t));return await o.json()}export{h as a,f as i,p as n,i as o,m as r,c as s,g as t};
|
|
4
|
-
//# sourceMappingURL=request-
|
|
3
|
+
`)))}finally{o||await r(t),t.releaseLock()}}async function r(e){try{await e.cancel()}catch{}}var i=class extends Error{constructor(e,t){super(`Event stream request failed with status ${e.status}`),this.response=e,this.body=t,this.name=`EventStreamHttpError`}response;body};async function*a(e){let r=e.fetch??globalThis.fetch;if(r===void 0)throw Error(`fetchEventStream requires a fetch implementation.`);let a=await r(e.input,o(e));if(!a.ok)throw new i(a,await a.text());if(e.validateResponse?.(a),a.body===null)throw Error(`Event stream response does not include a body.`);(e.format===void 0||e.format===`auto`?s(a.headers.get(`content-type`)):e.format)===`sse`?yield*n(a.body):yield*t(a.body)}function o(e){let{input:t,format:n,fetch:r,validateResponse:i,...a}=e;return a}function s(e){return e?.toLowerCase().includes(`text/event-stream`)?`sse`:`jsonl`}function c(e){return{async*send(t){let n=typeof e.endpoint==`function`?e.endpoint(t):e.endpoint,r=d(await l(e.headers,t),t.headers),i=e.method??`POST`,o=await u(e.body,t,r,i),s={...e.init,input:n,method:i,headers:r,format:e.format??`auto`};o!==void 0&&(s.body=o),t.abortSignal!==void 0&&(s.signal=t.abortSignal),e.fetch!==void 0&&(s.fetch=e.fetch),e.validateResponse!==void 0&&(s.validateResponse=e.validateResponse);for await(let t of a(s))yield e.mapEvent===void 0?t:e.mapEvent(t)}}}async function l(e,t){return typeof e==`function`?e(t):e}async function u(e,t,n,r){if(e!==void 0)return e({...t,headers:n});if(r.toUpperCase()!==`GET`&&r.toUpperCase()!==`HEAD`)return n.has(`content-type`)||n.set(`content-type`,`application/json`),JSON.stringify(t.request)}function d(...e){let t=new Headers;for(let n of e)n!==void 0&&new Headers(n).forEach((e,n)=>{t.set(n,e)});return t}async function f(e,t){let n=``;try{let t=await e.json();typeof t==`object`&&t&&`error`in t&&typeof t.error==`object`&&t.error!==null&&`message`in t.error&&typeof t.error.message==`string`&&(n=`: ${t.error.message}`)}catch{}return`${t} with HTTP ${e.status}${n}`}function p(t){return t instanceof i?t.response.status===401?`Authentication required`:`Run failed with HTTP ${t.response.status}`:e(t)}function m(e,t){let n=``;try{let t=JSON.parse(e.body);typeof t==`object`&&t&&`error`in t&&typeof t.error==`object`&&t.error!==null&&`message`in t.error&&typeof t.error.message==`string`&&(n=`: ${t.error.message}`)}catch{}return`${t} with HTTP ${e.response.status}${n}`}function h(e){if(typeof e==`string`)return e;if(e instanceof Error)return e.message;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}async function g(e,t,n,r=`default`,i={}){let a={...i,cache:r};n!==void 0&&(a.signal=n);let o=await fetch(e,a);if(!o.ok)throw Error(await f(o,t));return await o.json()}export{h as a,t as c,f as i,p as n,i as o,m as r,c as s,g as t};
|
|
4
|
+
//# sourceMappingURL=request-DYxy87Kp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-DbgMKweq.js","names":[],"sources":["../../../../client/dist/chunk-2KGXQZWA.js","../../../src/ui/app/app-errors.ts","../../../src/ui/app/modules/shared/request.ts"],"sourcesContent":["// src/transport/streams.ts\nasync function* readJsonlStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let completed = false;\n try {\n while (true) {\n const next = await reader.read();\n if (next.done) {\n completed = true;\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const value2 = line.trim();\n if (value2.length > 0) yield JSON.parse(value2);\n }\n }\n buffer += decoder.decode();\n const value = buffer.trim();\n if (value.length > 0) yield JSON.parse(value);\n } finally {\n if (!completed) await cancelReader(reader);\n reader.releaseLock();\n }\n}\nasync function* readSseStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let data = [];\n let completed = false;\n function parseLine(line) {\n if (line === \"\") {\n const complete = data.length === 0 ? void 0 : data.join(\"\\n\");\n data = [];\n return complete;\n }\n if (line.startsWith(\":\")) return void 0;\n const separator = line.indexOf(\":\");\n const field = separator === -1 ? line : line.slice(0, separator);\n const value = separator === -1 ? \"\" : line.slice(separator + 1).replace(/^ /, \"\");\n if (field === \"data\") data.push(value);\n return void 0;\n }\n try {\n while (true) {\n const next = await reader.read();\n if (next.done) {\n completed = true;\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const complete = parseLine(line);\n if (complete !== void 0) yield JSON.parse(complete);\n }\n }\n buffer += decoder.decode();\n if (buffer.length > 0) {\n const complete = parseLine(buffer);\n if (complete !== void 0) yield JSON.parse(complete);\n }\n if (data.length > 0) yield JSON.parse(data.join(\"\\n\"));\n } finally {\n if (!completed) await cancelReader(reader);\n reader.releaseLock();\n }\n}\nasync function cancelReader(reader) {\n try {\n await reader.cancel();\n } catch {\n }\n}\n\n// src/transport/fetch.ts\nvar EventStreamHttpError = class extends Error {\n constructor(response, body) {\n super(`Event stream request failed with status ${response.status}`);\n this.response = response;\n this.body = body;\n this.name = \"EventStreamHttpError\";\n }\n response;\n body;\n};\nasync function* fetchEventStream(options) {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (fetchImpl === void 0) throw new Error(\"fetchEventStream requires a fetch implementation.\");\n const response = await fetchImpl(options.input, fetchOptions(options));\n if (!response.ok) throw new EventStreamHttpError(response, await response.text());\n options.validateResponse?.(response);\n if (response.body === null) throw new Error(\"Event stream response does not include a body.\");\n const format = options.format === void 0 || options.format === \"auto\" ? inferEventStreamFormat(response.headers.get(\"content-type\")) : options.format;\n if (format === \"sse\") {\n yield* readSseStream(response.body);\n } else {\n yield* readJsonlStream(response.body);\n }\n}\nfunction fetchOptions(options) {\n const {\n input: _input,\n format: _format,\n fetch: _fetch,\n validateResponse: _validate,\n ...init\n } = options;\n return init;\n}\nfunction inferEventStreamFormat(contentType) {\n return contentType?.toLowerCase().includes(\"text/event-stream\") ? \"sse\" : \"jsonl\";\n}\n\n// src/transport/event-transport.ts\nfunction createFetchEventTransport(options) {\n return {\n async *send(transportOptions) {\n const endpoint = typeof options.endpoint === \"function\" ? options.endpoint(transportOptions) : options.endpoint;\n const requestHeaders = await resolveHeaders(options.headers, transportOptions);\n const headers = mergeHeaders(requestHeaders, transportOptions.headers);\n const method = options.method ?? \"POST\";\n const body = await resolveBody(options.body, transportOptions, headers, method);\n const init = {\n ...options.init,\n input: endpoint,\n method,\n headers,\n format: options.format ?? \"auto\"\n };\n if (body !== void 0) init.body = body;\n if (transportOptions.abortSignal !== void 0) init.signal = transportOptions.abortSignal;\n if (options.fetch !== void 0) init.fetch = options.fetch;\n if (options.validateResponse !== void 0) init.validateResponse = options.validateResponse;\n for await (const event of fetchEventStream(init)) {\n yield options.mapEvent === void 0 ? event : options.mapEvent(event);\n }\n }\n };\n}\nfunction createDirectEventTransport(options) {\n return {\n async *send(context) {\n const iterator = options.handler(context)[Symbol.asyncIterator]();\n let closePromise;\n const close = () => {\n closePromise ??= Promise.resolve(iterator.return?.());\n return closePromise;\n };\n const onAbort = () => {\n void close();\n };\n context.abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n try {\n while (!context.abortSignal?.aborted) {\n const next = await iterator.next();\n if (next.done) break;\n yield next.value;\n }\n } finally {\n context.abortSignal?.removeEventListener(\"abort\", onAbort);\n await close();\n }\n }\n };\n}\nasync function resolveHeaders(headers, context) {\n return typeof headers === \"function\" ? headers(context) : headers;\n}\nasync function resolveBody(body, context, headers, method) {\n if (body !== void 0) return body({ ...context, headers });\n if (method.toUpperCase() === \"GET\" || method.toUpperCase() === \"HEAD\") return void 0;\n if (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n return JSON.stringify(context.request);\n}\nfunction mergeHeaders(...values) {\n const headers = new Headers();\n for (const value of values) {\n if (value === void 0) continue;\n new Headers(value).forEach((headerValue, key) => {\n headers.set(key, headerValue);\n });\n }\n return headers;\n}\n\nexport {\n readJsonlStream,\n readSseStream,\n EventStreamHttpError,\n fetchEventStream,\n createFetchEventTransport,\n createDirectEventTransport\n};\n//# sourceMappingURL=chunk-2KGXQZWA.js.map","import { EventStreamHttpError } from \"@anvia/client/transport\";\nimport { errorMessage } from \"./modules/shared/format\";\n\nexport async function responseErrorMessage(response: Response, label: string): Promise<string> {\n let detail = \"\";\n try {\n const body = (await response.json()) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${response.status}${detail}`;\n}\n\nexport function agentRunErrorMessage(error: unknown): string {\n if (error instanceof EventStreamHttpError) {\n return error.response.status === 401\n ? \"Authentication required\"\n : `Run failed with HTTP ${error.response.status}`;\n }\n return errorMessage(error);\n}\n\nexport function eventStreamResponseErrorMessage(\n error: EventStreamHttpError,\n label: string,\n): string {\n let detail = \"\";\n try {\n const body = JSON.parse(error.body) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${error.response.status}${detail}`;\n}\n\nexport function serializedStreamErrorText(error: unknown): string {\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n try {\n return JSON.stringify(error) ?? String(error);\n } catch {\n return String(error);\n }\n}\n","import { responseErrorMessage } from \"../../app-errors\";\n\nexport async function requestJson<T>(\n url: string,\n label: string,\n signal?: AbortSignal,\n cache: RequestCache = \"default\",\n init: RequestInit = {},\n): Promise<T> {\n const request: RequestInit = {\n ...init,\n cache,\n };\n if (signal !== undefined) request.signal = signal;\n const response = await fetch(url, request);\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, label));\n }\n return (await response.json()) as T;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request-DYxy87Kp.js","names":[],"sources":["../../../../client/dist/chunk-2KGXQZWA.js","../../../src/ui/app/app-errors.ts","../../../src/ui/app/modules/shared/request.ts"],"sourcesContent":["// src/transport/streams.ts\nasync function* readJsonlStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let completed = false;\n try {\n while (true) {\n const next = await reader.read();\n if (next.done) {\n completed = true;\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const value2 = line.trim();\n if (value2.length > 0) yield JSON.parse(value2);\n }\n }\n buffer += decoder.decode();\n const value = buffer.trim();\n if (value.length > 0) yield JSON.parse(value);\n } finally {\n if (!completed) await cancelReader(reader);\n reader.releaseLock();\n }\n}\nasync function* readSseStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let data = [];\n let completed = false;\n function parseLine(line) {\n if (line === \"\") {\n const complete = data.length === 0 ? void 0 : data.join(\"\\n\");\n data = [];\n return complete;\n }\n if (line.startsWith(\":\")) return void 0;\n const separator = line.indexOf(\":\");\n const field = separator === -1 ? line : line.slice(0, separator);\n const value = separator === -1 ? \"\" : line.slice(separator + 1).replace(/^ /, \"\");\n if (field === \"data\") data.push(value);\n return void 0;\n }\n try {\n while (true) {\n const next = await reader.read();\n if (next.done) {\n completed = true;\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const complete = parseLine(line);\n if (complete !== void 0) yield JSON.parse(complete);\n }\n }\n buffer += decoder.decode();\n if (buffer.length > 0) {\n const complete = parseLine(buffer);\n if (complete !== void 0) yield JSON.parse(complete);\n }\n if (data.length > 0) yield JSON.parse(data.join(\"\\n\"));\n } finally {\n if (!completed) await cancelReader(reader);\n reader.releaseLock();\n }\n}\nasync function cancelReader(reader) {\n try {\n await reader.cancel();\n } catch {\n }\n}\n\n// src/transport/fetch.ts\nvar EventStreamHttpError = class extends Error {\n constructor(response, body) {\n super(`Event stream request failed with status ${response.status}`);\n this.response = response;\n this.body = body;\n this.name = \"EventStreamHttpError\";\n }\n response;\n body;\n};\nasync function* fetchEventStream(options) {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (fetchImpl === void 0) throw new Error(\"fetchEventStream requires a fetch implementation.\");\n const response = await fetchImpl(options.input, fetchOptions(options));\n if (!response.ok) throw new EventStreamHttpError(response, await response.text());\n options.validateResponse?.(response);\n if (response.body === null) throw new Error(\"Event stream response does not include a body.\");\n const format = options.format === void 0 || options.format === \"auto\" ? inferEventStreamFormat(response.headers.get(\"content-type\")) : options.format;\n if (format === \"sse\") {\n yield* readSseStream(response.body);\n } else {\n yield* readJsonlStream(response.body);\n }\n}\nfunction fetchOptions(options) {\n const {\n input: _input,\n format: _format,\n fetch: _fetch,\n validateResponse: _validate,\n ...init\n } = options;\n return init;\n}\nfunction inferEventStreamFormat(contentType) {\n return contentType?.toLowerCase().includes(\"text/event-stream\") ? \"sse\" : \"jsonl\";\n}\n\n// src/transport/event-transport.ts\nfunction createFetchEventTransport(options) {\n return {\n async *send(transportOptions) {\n const endpoint = typeof options.endpoint === \"function\" ? options.endpoint(transportOptions) : options.endpoint;\n const requestHeaders = await resolveHeaders(options.headers, transportOptions);\n const headers = mergeHeaders(requestHeaders, transportOptions.headers);\n const method = options.method ?? \"POST\";\n const body = await resolveBody(options.body, transportOptions, headers, method);\n const init = {\n ...options.init,\n input: endpoint,\n method,\n headers,\n format: options.format ?? \"auto\"\n };\n if (body !== void 0) init.body = body;\n if (transportOptions.abortSignal !== void 0) init.signal = transportOptions.abortSignal;\n if (options.fetch !== void 0) init.fetch = options.fetch;\n if (options.validateResponse !== void 0) init.validateResponse = options.validateResponse;\n for await (const event of fetchEventStream(init)) {\n yield options.mapEvent === void 0 ? event : options.mapEvent(event);\n }\n }\n };\n}\nfunction createDirectEventTransport(options) {\n return {\n async *send(context) {\n const iterator = options.handler(context)[Symbol.asyncIterator]();\n let closePromise;\n const close = () => {\n closePromise ??= Promise.resolve(iterator.return?.());\n return closePromise;\n };\n const onAbort = () => {\n void close();\n };\n context.abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n try {\n while (!context.abortSignal?.aborted) {\n const next = await iterator.next();\n if (next.done) break;\n yield next.value;\n }\n } finally {\n context.abortSignal?.removeEventListener(\"abort\", onAbort);\n await close();\n }\n }\n };\n}\nasync function resolveHeaders(headers, context) {\n return typeof headers === \"function\" ? headers(context) : headers;\n}\nasync function resolveBody(body, context, headers, method) {\n if (body !== void 0) return body({ ...context, headers });\n if (method.toUpperCase() === \"GET\" || method.toUpperCase() === \"HEAD\") return void 0;\n if (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n return JSON.stringify(context.request);\n}\nfunction mergeHeaders(...values) {\n const headers = new Headers();\n for (const value of values) {\n if (value === void 0) continue;\n new Headers(value).forEach((headerValue, key) => {\n headers.set(key, headerValue);\n });\n }\n return headers;\n}\n\nexport {\n readJsonlStream,\n readSseStream,\n EventStreamHttpError,\n fetchEventStream,\n createFetchEventTransport,\n createDirectEventTransport\n};\n//# sourceMappingURL=chunk-2KGXQZWA.js.map","import { EventStreamHttpError } from \"@anvia/client/transport\";\nimport { errorMessage } from \"./modules/shared/format\";\n\nexport async function responseErrorMessage(response: Response, label: string): Promise<string> {\n let detail = \"\";\n try {\n const body = (await response.json()) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${response.status}${detail}`;\n}\n\nexport function agentRunErrorMessage(error: unknown): string {\n if (error instanceof EventStreamHttpError) {\n return error.response.status === 401\n ? \"Authentication required\"\n : `Run failed with HTTP ${error.response.status}`;\n }\n return errorMessage(error);\n}\n\nexport function eventStreamResponseErrorMessage(\n error: EventStreamHttpError,\n label: string,\n): string {\n let detail = \"\";\n try {\n const body = JSON.parse(error.body) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${error.response.status}${detail}`;\n}\n\nexport function serializedStreamErrorText(error: unknown): string {\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n try {\n return JSON.stringify(error) ?? String(error);\n } catch {\n return String(error);\n }\n}\n","import { responseErrorMessage } from \"../../app-errors\";\n\nexport async function requestJson<T>(\n url: string,\n label: string,\n signal?: AbortSignal,\n cache: RequestCache = \"default\",\n init: RequestInit = {},\n): Promise<T> {\n const request: RequestInit = {\n ...init,\n cache,\n };\n if (signal !== undefined) request.signal = signal;\n const response = await fetch(url, request);\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, label));\n }\n return (await response.json()) as T;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e,n as t,r as n,s as r}from"./dist-CHLp-Np4.js";import{s as i,t as a}from"./button-BWxpVW85.js";import{i as ee,t as o}from"./request-DYxy87Kp.js";import{t as s}from"./ArrowClockwise.es-Dn4lp0ac.js";import{n as c,t as l}from"./icon-ksPSRwE8.js";import{a as u,i as d,o as f,r as p,s as m,t as h}from"./studio-CtQdOoHK.js";var g=r(e(),1),_=new Map([[`bold`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M228,144v64a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V144a12,12,0,0,1,24,0v52H204V144a12,12,0,0,1,24,0Zm-108.49,8.49a12,12,0,0,0,17,0l40-40a12,12,0,0,0-17-17L140,115V32a12,12,0,0,0-24,0v83L96.49,95.51a12,12,0,0,0-17,17Z`}))],[`duotone`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,48V208H40V48A16,16,0,0,1,56,32H200A16,16,0,0,1,216,48Z`,opacity:`0.2`}),g.createElement(`path`,{d:`M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z`}))],[`fill`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40A8,8,0,0,0,168,96H136V32a8,8,0,0,0-16,0V96H88a8,8,0,0,0-5.66,13.66Z`}))],[`light`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M222,144v64a6,6,0,0,1-6,6H40a6,6,0,0,1-6-6V144a6,6,0,0,1,12,0v58H210V144a6,6,0,0,1,12,0Zm-98.24,4.24a6,6,0,0,0,8.48,0l40-40a6,6,0,0,0-8.48-8.48L134,129.51V32a6,6,0,0,0-12,0v97.51L92.24,99.76a6,6,0,0,0-8.48,8.48Z`}))],[`regular`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z`}))],[`thin`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M220,144v64a4,4,0,0,1-4,4H40a4,4,0,0,1-4-4V144a4,4,0,0,1,8,0v60H212V144a4,4,0,0,1,8,0Zm-94.83,2.83a4,4,0,0,0,5.66,0l40-40a4,4,0,1,0-5.66-5.66L132,134.34V32a4,4,0,0,0-8,0V134.34L90.83,101.17a4,4,0,0,0-5.66,5.66Z`}))]]),v=new Map([[`bold`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Z`}))],[`duotone`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M208,88H152V32Z`,opacity:`0.2`}),g.createElement(`path`,{d:`M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z`}))],[`fill`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM152,88V44l44,44Z`}))],[`light`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M212.24,83.76l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V88A6,6,0,0,0,212.24,83.76ZM158,46.48,193.52,82H158ZM200,218H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50V216A2,2,0,0,1,200,218Z`}))],[`regular`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z`}))],[`thin`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM200,220H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52V216A4,4,0,0,1,200,220Z`}))]]),y=new Map([[`bold`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M248.23,112.31A20,20,0,0,0,232,104H220V88a20,20,0,0,0-20-20H132L105.34,48a20.12,20.12,0,0,0-12-4H40A20,20,0,0,0,20,64V208a12,12,0,0,0,12,12H211.1a12,12,0,0,0,11.33-8l28.49-81.47.06-.17A20,20,0,0,0,248.23,112.31ZM92,68l28.8,21.6A12,12,0,0,0,128,92h68v12H69.77a20,20,0,0,0-18.94,13.58L44,137.15V68ZM202.59,196H48.89l23.72-68H226.37Z`}))],[`duotone`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M208,88v24H69.77a8,8,0,0,0-7.59,5.47L32,208V64a8,8,0,0,1,8-8H93.33a8,8,0,0,1,4.8,1.6L128,80h72A8,8,0,0,1,208,88Z`,opacity:`0.2`}),g.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z`}))],[`fill`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Z`}))],[`light`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M243.36,111.81A14,14,0,0,0,232,106H214V88a14,14,0,0,0-14-14H130L101.74,52.8a14.06,14.06,0,0,0-8.4-2.8H40A14,14,0,0,0,26,64V208a6,6,0,0,0,6,6H211.1a6,6,0,0,0,5.69-4.1l28.49-85.47A14,14,0,0,0,243.36,111.81ZM40,62H93.34a2,2,0,0,1,1.2.4L124.4,84.8A6,6,0,0,0,128,86h72a2,2,0,0,1,2,2v18H69.77a14,14,0,0,0-13.28,9.57L38,171V64A2,2,0,0,1,40,62Zm193.9,58.63L206.78,202H40.33l27.54-82.63a2,2,0,0,1,1.9-1.37H232a2,2,0,0,1,1.9,2.63Z`}))],[`regular`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z`}))],[`thin`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M241.72,113a11.88,11.88,0,0,0-9.73-5H212V88a12,12,0,0,0-12-12H129.33l-28.8-21.6a12.05,12.05,0,0,0-7.2-2.4H40A12,12,0,0,0,28,64V208a4,4,0,0,0,4,4H211.09a4,4,0,0,0,3.79-2.74l28.49-85.47A11.86,11.86,0,0,0,241.72,113ZM40,60H93.33a4,4,0,0,1,2.4.8L125.6,83.2a4,4,0,0,0,2.4.8h72a4,4,0,0,1,4,4v20H69.76a12,12,0,0,0-11.38,8.21L36,183.35V64A4,4,0,0,1,40,60Zm195.78,61.26L208.2,204H37.55L66,118.74A4,4,0,0,1,69.76,116H232a4,4,0,0,1,3.79,5.26Z`}))]]),b=new Map([[`bold`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M72.5,150.63,100.79,128,72.5,105.37a12,12,0,1,1,15-18.74l40,32a12,12,0,0,1,0,18.74l-40,32a12,12,0,0,1-15-18.74ZM144,172h32a12,12,0,0,0,0-24H144a12,12,0,0,0,0,24ZM236,56V200a20,20,0,0,1-20,20H40a20,20,0,0,1-20-20V56A20,20,0,0,1,40,36H216A20,20,0,0,1,236,56Zm-24,4H44V196H212Z`}))],[`duotone`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M224,56V200a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z`,opacity:`0.2`}),g.createElement(`path`,{d:`M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z`}))],[`fill`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm-91,94.25-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32a8,8,0,0,1,0,12.5ZM176,168H136a8,8,0,0,1,0-16h40a8,8,0,0,1,0,16Z`}))],[`light`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M126,128a6,6,0,0,1-2.25,4.69l-40,32a6,6,0,0,1-7.5-9.38L110.4,128,76.25,100.69a6,6,0,1,1,7.5-9.38l40,32A6,6,0,0,1,126,128Zm50,26H136a6,6,0,0,0,0,12h40a6,6,0,0,0,0-12Zm54-98V200a14,14,0,0,1-14,14H40a14,14,0,0,1-14-14V56A14,14,0,0,1,40,42H216A14,14,0,0,1,230,56Zm-12,0a2,2,0,0,0-2-2H40a2,2,0,0,0-2,2V200a2,2,0,0,0,2,2H216a2,2,0,0,0,2-2Z`}))],[`regular`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z`}))],[`thin`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M122.5,124.88a4,4,0,0,1,0,6.24l-40,32a4,4,0,0,1-5-6.24L113.6,128,77.5,99.12a4,4,0,0,1,5-6.24ZM176,156H136a4,4,0,0,0,0,8h40a4,4,0,0,0,0-8ZM228,56V200a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V56A12,12,0,0,1,40,44H216A12,12,0,0,1,228,56Zm-8,0a4,4,0,0,0-4-4H40a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H216a4,4,0,0,0,4-4Z`}))]]),x=g.forwardRef((e,t)=>g.createElement(c,{ref:t,...e,weights:_}));x.displayName=`DownloadSimpleIcon`;var S=x,C=g.forwardRef((e,t)=>g.createElement(c,{ref:t,...e,weights:v}));C.displayName=`FileIcon`;var w=C,T=g.forwardRef((e,t)=>g.createElement(c,{ref:t,...e,weights:y}));T.displayName=`FolderOpenIcon`;var E=T,D=g.forwardRef((e,t)=>g.createElement(c,{ref:t,...e,weights:b}));D.displayName=`TerminalWindowIcon`;var O=D,k=n(),A=1048576,j=new Set(`css.csv.env.gitignore.graphql.html.ini.java.js.json.jsx.log.md.mdx.mjs.py.rb.rs.sh.sql.svg.toml.ts.tsx.txt.xml.yaml.yml`.split(`.`)),M=new Map([[`gif`,`image/gif`],[`jpeg`,`image/jpeg`],[`jpg`,`image/jpeg`],[`png`,`image/png`],[`webp`,`image/webp`]]);function N(e){let[t,n]=(0,g.useState)([]),[r,c]=(0,g.useState)(`idle`),[f,m]=(0,g.useState)(0),[_,v]=(0,g.useState)(`.`),[y,b]=(0,g.useState)([]),[x,S]=(0,g.useState)(`idle`),[C,w]=(0,g.useState)(),[T,E]=(0,g.useState)([]),[D,O]=(0,g.useState)([]),[N,P]=(0,g.useState)(`idle`),[I,R]=(0,g.useState)(``),[z,B]=(0,g.useState)(),[V,W]=(0,g.useState)(``),G=(0,g.useRef)(void 0),K=e.initialSandboxRef??t[0]?.ref??``,q=t.find(e=>e.ref===K),J=q?.ref,Y=q?.capabilities.files??!1,X=q?.capabilities.ports??!1,Z=q?.capabilities.processes??!1,Q=(0,g.useCallback)(t=>{let n=i(t);W(n),e.onError(n)},[e.onError]);(0,g.useEffect)(()=>{if(!e.enabled){n([]);return}let t=new AbortController;return c(`loading`),W(``),o(`/sandboxes`,`Sandboxes`,t.signal,f===0?`default`:`reload`).then(e=>n(e.sandboxes)).catch(e=>{t.signal.aborted||Q(e)}).finally(()=>{t.signal.aborted||c(`idle`)}),()=>t.abort()},[e.enabled,f,Q]),(0,g.useEffect)(()=>{e.initialSandboxRef===void 0&&t[0]!==void 0&&e.onSelectSandbox(t[0].ref)},[e.initialSandboxRef,e.onSelectSandbox,t]),(0,g.useEffect)(()=>(v(`.`),b([]),w(void 0),E([]),O([]),R(``),B(void 0),()=>G.current?.abort()),[K]),(0,g.useEffect)(()=>{if(J===void 0||!Y){b([]),S(`idle`);return}let e=new AbortController;S(`loading`);let t=new URLSearchParams({path:_});return o(`/sandboxes/${encodeURIComponent(J)}/files?${t}`,`Sandbox files`,e.signal,f===0?`default`:`reload`).then(e=>b(e.entries)).catch(t=>{e.signal.aborted||(b([]),Q(t))}).finally(()=>{e.signal.aborted||S(`idle`)}),()=>e.abort()},[_,f,Q,J,Y]),(0,g.useEffect)(()=>{if(J===void 0)return;let e=new AbortController;P(`loading`);let t=`/sandboxes/${encodeURIComponent(J)}`,n=[];return X?n.push(o(`${t}/ports`,`Sandbox ports`,e.signal,f===0?`default`:`reload`).then(e=>E(e.ports))):E([]),Z?n.push(o(`${t}/processes`,`Sandbox processes`,e.signal,f===0?`default`:`reload`).then(e=>{O(e.processes),R(t=>e.processes.some(e=>e.id===t)?t:``)})):(O([]),R(``)),Promise.all(n).catch(t=>{e.signal.aborted||Q(t)}).finally(()=>{e.signal.aborted||P(`idle`)}),()=>e.abort()},[f,Q,J,X,Z]),(0,g.useEffect)(()=>{if(J===void 0||I.length===0){B(void 0);return}let e=new AbortController,t=`/sandboxes/${encodeURIComponent(J)}/processes`;return o(`${t}/${encodeURIComponent(I)}/logs`,`Process logs`,e.signal,f===0?`default`:`reload`).then(B).catch(t=>{e.signal.aborted||Q(t)}),()=>e.abort()},[f,Q,I,J]),(0,g.useEffect)(()=>()=>{C?.kind===`image`&&URL.revokeObjectURL(C.url)},[C]);let $=(0,g.useCallback)(()=>{G.current?.abort(),G.current=void 0,w(void 0)},[]),ie=(0,g.useCallback)(async e=>{if(G.current?.abort(),G.current=void 0,J===void 0)return;if((e.size??0)>A){w({kind:`large`,file:e});return}let t=U(e.path),n=M.get(t);if(!j.has(t)&&n===void 0){w({kind:`binary`,file:e});return}w({kind:`loading`,file:e}),W(``);let r=new AbortController;G.current=r;try{let t=await fetch(H(J,e.path),{signal:r.signal});if(!t.ok)throw Error(await ee(t,`Sandbox file`));let i=await t.arrayBuffer();if(i.byteLength>A){w({kind:`large`,file:e});return}if(n!==void 0){let t=URL.createObjectURL(new Blob([i],{type:n}));w({kind:`image`,file:e,url:t});return}try{let t=new TextDecoder(`utf-8`,{fatal:!0}).decode(i);w({kind:`text`,file:e,text:t})}catch{w({kind:`binary`,file:e})}}catch(t){if(r.signal.aborted)return;Q(t),w({kind:`binary`,file:e})}finally{G.current===r&&(G.current=void 0)}},[Q,J]);return e.enabled?(0,k.jsxs)(u,{className:`grid-rows-[auto_minmax(0,1fr)]`,"aria-label":`Sandboxes`,children:[(0,k.jsx)(d,{title:`Sandboxes`,description:`Read-only sandbox inspectors explicitly registered by the application.`,action:(0,k.jsxs)(a,{disabled:r===`loading`,size:`sm`,type:`button`,variant:`secondary`,onClick:()=>m(e=>e+1),children:[(0,k.jsx)(l,{icon:s,"aria-hidden":`true`}),`Refresh`]})}),(0,k.jsx)(p,{className:`grid grid-rows-[minmax(0,1fr)] overflow-hidden`,children:t.length===0?(0,k.jsx)(h,{className:`h-full`,title:r===`loading`?`Loading sandboxes`:`No live sandboxes detected`,text:r===`loading`?`Reading live sandbox workspaces.`:`Register live sandbox inspectors in the Studio options.`}):(0,k.jsxs)(`div`,{className:`grid min-h-0 min-w-0 grid-cols-[250px_minmax(300px,0.8fr)_minmax(400px,1.2fr)] gap-3 overflow-hidden`,children:[(0,k.jsx)(te,{sandboxes:t,selectedRef:K,onSelect:e.onSelectSandbox}),Y?(0,k.jsx)(ne,{currentPath:_,files:y,loading:x===`loading`,onOpenDirectory:e=>{$(),v(e)},onOpenFile:e=>void ie(e),onSelectPath:e=>{$(),v(e)}}):(0,k.jsx)(h,{title:`Files unavailable`,text:`This registration did not expose file inspection.`}),(0,k.jsx)(`div`,{className:`grid min-h-0 gap-3 overflow-y-auto pr-1`,children:q===void 0?(0,k.jsx)(h,{title:`Sandbox unavailable`,text:`The requested live sandbox is not registered by this Studio runtime.`}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(re,{sandbox:q,error:V}),(0,k.jsx)(F,{preview:C,sandboxRef:q.ref}),(0,k.jsx)(L,{loading:N===`loading`,logs:z,ports:T,processes:D,selectedProcessId:I,supportsPorts:q.capabilities.ports,supportsProcesses:q.capabilities.processes,onSelectProcess:R})]})})]})})]}):(0,k.jsxs)(u,{className:`grid-rows-[auto_minmax(0,1fr)]`,"aria-label":`Sandboxes`,children:[(0,k.jsx)(d,{title:`Sandboxes`,description:`Read-only sandbox inspectors explicitly registered by the application.`}),(0,k.jsx)(p,{className:`overflow-auto`,children:(0,k.jsx)(h,{title:`No sandbox workspaces`,text:`Register a sandbox inspector in the Studio options to inspect it here.`})})]})}function te(e){return(0,k.jsxs)(m,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)]`,children:[(0,k.jsxs)(`div`,{className:`border-b border-hair px-4 py-3`,children:[(0,k.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Workspaces`}),(0,k.jsxs)(`p`,{className:`m-0 mt-1 text-xs text-muted-foreground`,children:[e.sandboxes.length,` live `,e.sandboxes.length===1?`session`:`sessions`]})]}),(0,k.jsx)(`div`,{className:`min-h-0 overflow-y-auto p-2`,children:e.sandboxes.map(n=>(0,k.jsxs)(a,{className:t(`mb-1 grid h-auto min-h-16 w-full justify-stretch gap-1 rounded-lg px-3 py-2.5 text-left`,n.ref===e.selectedRef&&`border-border bg-accent text-foreground`),type:`button`,variant:`ghost`,onClick:()=>e.onSelect(n.ref),children:[(0,k.jsxs)(`span`,{className:`flex min-w-0 items-center justify-between gap-2`,children:[(0,k.jsx)(`strong`,{className:`truncate text-sm font-semibold text-foreground`,children:n.id}),(0,k.jsx)(f,{className:`shrink-0 px-1.5 py-0.5 text-[10px]`,children:n.provider})]}),(0,k.jsx)(`span`,{className:`truncate font-mono text-[11px] font-normal text-muted-foreground`,children:n.workdir})]},n.ref))})]})}function ne(e){let t=(0,g.useMemo)(()=>V(e.currentPath),[e.currentPath]);return(0,k.jsxs)(m,{className:`grid min-h-0 grid-rows-[auto_auto_minmax(0,1fr)]`,children:[(0,k.jsxs)(`div`,{className:`border-b border-hair px-4 py-3`,children:[(0,k.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Files`}),(0,k.jsx)(`p`,{className:`m-0 mt-1 text-xs text-muted-foreground`,children:`One level at a time`})]}),(0,k.jsx)(`div`,{className:`flex min-h-10 items-center gap-1 overflow-x-auto border-b border-hair px-3 py-1.5`,children:t.map((t,n)=>(0,k.jsxs)(`span`,{className:`flex items-center gap-1`,children:[n>0?(0,k.jsx)(`span`,{className:`text-dim`,children:`/`}):null,(0,k.jsx)(a,{className:`h-7 min-h-7 px-2 font-mono text-xs`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>e.onSelectPath(t.path),children:t.label})]},t.path))}),(0,k.jsxs)(`div`,{className:`min-h-0 overflow-y-auto p-2`,children:[e.loading?(0,k.jsx)(h,{size:`compact`,title:`Loading workspace`,text:`Reading files from the selected sandbox.`}):null,!e.loading&&e.files.length===0?(0,k.jsx)(h,{size:`compact`,title:`Empty directory`,text:`This directory does not contain any files.`}):null,e.files.map(t=>(0,k.jsxs)(a,{className:`mb-0.5 grid h-10 min-h-10 w-full grid-cols-[18px_minmax(0,1fr)_auto] justify-stretch gap-2 rounded-md px-2.5 text-left text-xs font-medium`,type:`button`,variant:`ghost`,onClick:()=>t.type===`directory`?e.onOpenDirectory(t.path):e.onOpenFile(t),children:[(0,k.jsx)(l,{className:`text-muted-foreground`,icon:t.type===`directory`?E:w,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`truncate text-foreground`,children:W(t.path)}),(0,k.jsx)(`span`,{className:`font-mono text-[10px] font-normal text-muted-foreground`,children:t.type===`file`?G(t.size):t.type})]},t.path))]})]})}function re(e){return(0,k.jsxs)(m,{className:`p-4`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,k.jsxs)(`div`,{className:`min-w-0`,children:[(0,k.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Active sandbox`}),(0,k.jsx)(`h2`,{className:`m-0 mt-1 truncate text-lg font-semibold text-foreground`,children:e.sandbox.id}),(0,k.jsx)(`p`,{className:`m-0 mt-1 truncate font-mono text-xs text-muted-foreground`,children:e.sandbox.workdir})]}),(0,k.jsx)(f,{children:e.sandbox.provider})]}),(0,k.jsxs)(`div`,{className:`mt-4 grid grid-cols-3 gap-3 text-xs`,children:[(0,k.jsx)(P,{label:`Agents`,values:e.sandbox.agentIds}),(0,k.jsx)(P,{label:`Sandbox tools`,values:e.sandbox.toolNames}),(0,k.jsx)(P,{label:`Views`,values:e.sandbox.views.map(e=>`${e.label} (${e.protocol})`)})]}),e.error.length>0?(0,k.jsx)(`p`,{className:`m-0 mt-3 rounded-lg border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive`,children:e.error}):null]})}function P(e){return(0,k.jsxs)(`div`,{className:`rounded-lg border border-hair bg-background p-3`,children:[(0,k.jsx)(`span`,{className:`font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:e.label}),(0,k.jsx)(`p`,{className:`m-0 mt-1 break-words font-mono leading-5 text-foreground`,children:e.values.join(`, `)||`-`})]})}function F(e){let t=e.preview?.file;return(0,k.jsxs)(m,{className:`grid min-h-64 grid-rows-[auto_minmax(0,1fr)]`,children:[(0,k.jsxs)(`div`,{className:`flex min-h-12 items-center justify-between gap-3 border-b border-hair px-4 py-2`,children:[(0,k.jsxs)(`div`,{className:`min-w-0`,children:[(0,k.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Preview`}),(0,k.jsx)(`p`,{className:`m-0 mt-0.5 truncate font-mono text-[11px] text-muted-foreground`,children:t?.path??`Select a file`})]}),t===void 0?null:(0,k.jsx)(a,{asChild:!0,size:`sm`,variant:`secondary`,children:(0,k.jsxs)(`a`,{href:H(e.sandboxRef,t.path,!0),children:[(0,k.jsx)(l,{icon:S,"aria-hidden":`true`}),`Download`]})})]}),(0,k.jsxs)(`div`,{className:`grid min-h-0 place-items-center overflow-auto`,children:[e.preview===void 0?(0,k.jsx)(h,{className:`h-full rounded-none`,size:`compact`,title:`No file selected`,text:`Choose a regular file to inspect its contents.`}):null,e.preview?.kind===`loading`?(0,k.jsx)(h,{className:`h-full rounded-none`,size:`compact`,title:`Loading preview`,text:`Reading the selected file.`}):null,e.preview?.kind===`text`?(0,k.jsx)(`pre`,{className:`m-0 h-full min-h-48 w-full overflow-auto whitespace-pre-wrap break-words rounded-lg border border-hair bg-card p-4 font-mono text-xs leading-5 text-foreground`,children:e.preview.text}):null,e.preview?.kind===`image`?(0,k.jsx)(`img`,{className:`max-h-96 max-w-full rounded-lg border border-hair object-contain`,src:e.preview.url,alt:W(e.preview.file.path)}):null,e.preview?.kind===`binary`?(0,k.jsx)(I,{text:`This file type is download-only and will not be rendered in Studio.`}):null,e.preview?.kind===`large`?(0,k.jsx)(I,{text:`This file is larger than the 1 MiB inline preview limit.`}):null]})]})}function I(e){return(0,k.jsxs)(`div`,{className:`grid max-w-sm justify-items-center gap-2 text-center`,children:[(0,k.jsx)(l,{className:`h-6 w-6 text-muted-foreground`,icon:w,"aria-hidden":`true`}),(0,k.jsx)(`p`,{className:`m-0 text-xs leading-5 text-muted-foreground`,children:e.text})]})}function L(e){return(0,k.jsxs)(m,{className:`p-4`,children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Runtime`}),(0,k.jsx)(`p`,{className:`m-0 mt-1 text-xs text-muted-foreground`,children:`Published ports and managed processes`})]}),e.loading?(0,k.jsx)(f,{children:`Refreshing`}):null]}),(0,k.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,k.jsx)(R,{title:`Ports`,children:e.supportsPorts?e.ports.length===0?(0,k.jsx)(z,{text:`No ports are published.`}):(0,k.jsx)(`div`,{className:`grid gap-1`,children:e.ports.map(e=>(0,k.jsxs)(`div`,{className:`grid grid-cols-[90px_minmax(0,1fr)] gap-3 rounded-md border border-hair px-3 py-2 font-mono text-xs`,children:[(0,k.jsxs)(`span`,{className:`text-foreground`,children:[e.containerPort,`/`,e.protocol]}),(0,k.jsxs)(`span`,{className:`truncate text-muted-foreground`,children:[e.host,`:`,e.hostPort]})]},`${e.containerPort}:${e.hostPort}`))}):(0,k.jsx)(z,{text:`Published ports are not supported by this sandbox.`})}),(0,k.jsx)(R,{title:`Processes`,children:e.supportsProcesses?e.processes.length===0?(0,k.jsx)(z,{text:`No managed processes are recorded.`}):(0,k.jsx)(`div`,{className:`grid gap-1`,children:e.processes.map(n=>(0,k.jsxs)(a,{className:t(`grid h-auto min-h-11 w-full grid-cols-[minmax(0,1fr)_auto] justify-stretch gap-3 rounded-md px-3 py-2 text-left`,n.id===e.selectedProcessId&&`border-border bg-accent text-foreground`),type:`button`,variant:`ghost`,onClick:()=>e.onSelectProcess(n.id),children:[(0,k.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,k.jsx)(l,{className:`text-muted-foreground`,icon:O,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`truncate font-mono text-xs text-foreground`,children:[n.command,...n.args].join(` `)})]}),(0,k.jsx)(f,{className:`px-1.5 py-0.5 text-[10px]`,children:n.status})]},n.id))}):(0,k.jsx)(z,{text:`Managed processes are not supported by this sandbox.`})}),e.selectedProcessId.length>0?(0,k.jsx)(R,{title:`Process logs`,children:e.logs===void 0?(0,k.jsx)(z,{text:`Loading the latest bounded output.`}):(0,k.jsxs)(`div`,{className:`grid gap-2`,children:[(0,k.jsx)(B,{label:`stdout`,text:e.logs.stdout,truncated:e.logs.stdoutTruncated}),(0,k.jsx)(B,{label:`stderr`,text:e.logs.stderr,truncated:e.logs.stderrTruncated})]})}):null]})]})}function R(e){return(0,k.jsxs)(`section`,{className:`grid gap-2`,children:[(0,k.jsx)(`h3`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e.title}),e.children]})}function z(e){return(0,k.jsx)(`p`,{className:`m-0 rounded-md border border-dashed border-hair px-3 py-2 text-xs leading-5 text-muted-foreground`,children:e.text})}function B(e){return(0,k.jsxs)(`div`,{className:`overflow-hidden rounded-md border border-hair bg-background`,children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between border-b border-hair px-3 py-1.5 text-[10px] font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:[(0,k.jsx)(`span`,{children:e.label}),e.truncated?(0,k.jsx)(`span`,{children:`truncated`}):null]}),(0,k.jsx)(`pre`,{className:`m-0 max-h-48 overflow-auto whitespace-pre-wrap break-words p-3 font-mono text-[11px] leading-5 text-foreground`,children:e.text||`No output`})]})}function V(e){let t=e===`.`?[]:e.split(`/`).filter(Boolean),n=[{label:`/`,path:`.`}];for(let e=0;e<t.length;e+=1)n.push({label:t[e]??``,path:t.slice(0,e+1).join(`/`)});return n}function H(e,t,n=!1){let r=new URLSearchParams({path:t});return n&&r.set(`download`,`1`),`/sandboxes/${encodeURIComponent(e)}/files/content?${r}`}function U(e){let t=W(e).toLowerCase(),n=t.lastIndexOf(`.`);return n<0?t:t.slice(n+1)}function W(e){return e.split(`/`).at(-1)??e}function G(e){return e===void 0?`-`:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KiB`:`${(e/1048576).toFixed(1)} MiB`}export{N as SandboxesPage};
|
|
2
|
+
//# sourceMappingURL=sandboxes-page-BwidNA5G.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxes-page-Bo4S4ILL.js","names":["e","e","e","e","r","t","a","i","e","t","a","a","i"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/DownloadSimple.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/File.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/FolderOpen.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/TerminalWindow.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/DownloadSimple.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/File.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/FolderOpen.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/TerminalWindow.es.js","../../../src/ui/app/modules/sandboxes/sandboxes-page.tsx"],"sourcesContent":["import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,144v64a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V144a12,12,0,0,1,24,0v52H204V144a12,12,0,0,1,24,0Zm-108.49,8.49a12,12,0,0,0,17,0l40-40a12,12,0,0,0-17-17L140,115V32a12,12,0,0,0-24,0v83L96.49,95.51a12,12,0,0,0-17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M216,48V208H40V48A16,16,0,0,1,56,32H200A16,16,0,0,1,216,48Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40A8,8,0,0,0,168,96H136V32a8,8,0,0,0-16,0V96H88a8,8,0,0,0-5.66,13.66Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,144v64a6,6,0,0,1-6,6H40a6,6,0,0,1-6-6V144a6,6,0,0,1,12,0v58H210V144a6,6,0,0,1,12,0Zm-98.24,4.24a6,6,0,0,0,8.48,0l40-40a6,6,0,0,0-8.48-8.48L134,129.51V32a6,6,0,0,0-12,0v97.51L92.24,99.76a6,6,0,0,0-8.48,8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,144v64a4,4,0,0,1-4,4H40a4,4,0,0,1-4-4V144a4,4,0,0,1,8,0v60H212V144a4,4,0,0,1,8,0Zm-94.83,2.83a4,4,0,0,0,5.66,0l40-40a4,4,0,1,0-5.66-5.66L132,134.34V32a4,4,0,0,0-8,0V134.34L90.83,101.17a4,4,0,0,0-5.66,5.66Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,88H152V32Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM152,88V44l44,44Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M212.24,83.76l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V88A6,6,0,0,0,212.24,83.76ZM158,46.48,193.52,82H158ZM200,218H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50V216A2,2,0,0,1,200,218Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM200,220H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52V216A4,4,0,0,1,200,220Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M248.23,112.31A20,20,0,0,0,232,104H220V88a20,20,0,0,0-20-20H132L105.34,48a20.12,20.12,0,0,0-12-4H40A20,20,0,0,0,20,64V208a12,12,0,0,0,12,12H211.1a12,12,0,0,0,11.33-8l28.49-81.47.06-.17A20,20,0,0,0,248.23,112.31ZM92,68l28.8,21.6A12,12,0,0,0,128,92h68v12H69.77a20,20,0,0,0-18.94,13.58L44,137.15V68ZM202.59,196H48.89l23.72-68H226.37Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M208,88v24H69.77a8,8,0,0,0-7.59,5.47L32,208V64a8,8,0,0,1,8-8H93.33a8,8,0,0,1,4.8,1.6L128,80h72A8,8,0,0,1,208,88Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M243.36,111.81A14,14,0,0,0,232,106H214V88a14,14,0,0,0-14-14H130L101.74,52.8a14.06,14.06,0,0,0-8.4-2.8H40A14,14,0,0,0,26,64V208a6,6,0,0,0,6,6H211.1a6,6,0,0,0,5.69-4.1l28.49-85.47A14,14,0,0,0,243.36,111.81ZM40,62H93.34a2,2,0,0,1,1.2.4L124.4,84.8A6,6,0,0,0,128,86h72a2,2,0,0,1,2,2v18H69.77a14,14,0,0,0-13.28,9.57L38,171V64A2,2,0,0,1,40,62Zm193.9,58.63L206.78,202H40.33l27.54-82.63a2,2,0,0,1,1.9-1.37H232a2,2,0,0,1,1.9,2.63Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M241.72,113a11.88,11.88,0,0,0-9.73-5H212V88a12,12,0,0,0-12-12H129.33l-28.8-21.6a12.05,12.05,0,0,0-7.2-2.4H40A12,12,0,0,0,28,64V208a4,4,0,0,0,4,4H211.09a4,4,0,0,0,3.79-2.74l28.49-85.47A11.86,11.86,0,0,0,241.72,113ZM40,60H93.33a4,4,0,0,1,2.4.8L125.6,83.2a4,4,0,0,0,2.4.8h72a4,4,0,0,1,4,4v20H69.76a12,12,0,0,0-11.38,8.21L36,183.35V64A4,4,0,0,1,40,60Zm195.78,61.26L208.2,204H37.55L66,118.74A4,4,0,0,1,69.76,116H232a4,4,0,0,1,3.79,5.26Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M72.5,150.63,100.79,128,72.5,105.37a12,12,0,1,1,15-18.74l40,32a12,12,0,0,1,0,18.74l-40,32a12,12,0,0,1-15-18.74ZM144,172h32a12,12,0,0,0,0-24H144a12,12,0,0,0,0,24ZM236,56V200a20,20,0,0,1-20,20H40a20,20,0,0,1-20-20V56A20,20,0,0,1,40,36H216A20,20,0,0,1,236,56Zm-24,4H44V196H212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,56V200a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm-91,94.25-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32a8,8,0,0,1,0,12.5ZM176,168H136a8,8,0,0,1,0-16h40a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M126,128a6,6,0,0,1-2.25,4.69l-40,32a6,6,0,0,1-7.5-9.38L110.4,128,76.25,100.69a6,6,0,1,1,7.5-9.38l40,32A6,6,0,0,1,126,128Zm50,26H136a6,6,0,0,0,0,12h40a6,6,0,0,0,0-12Zm54-98V200a14,14,0,0,1-14,14H40a14,14,0,0,1-14-14V56A14,14,0,0,1,40,42H216A14,14,0,0,1,230,56Zm-12,0a2,2,0,0,0-2-2H40a2,2,0,0,0-2,2V200a2,2,0,0,0,2,2H216a2,2,0,0,0,2-2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M122.5,124.88a4,4,0,0,1,0,6.24l-40,32a4,4,0,0,1-5-6.24L113.6,128,77.5,99.12a4,4,0,0,1,5-6.24ZM176,156H136a4,4,0,0,0,0,8h40a4,4,0,0,0,0-8ZM228,56V200a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V56A12,12,0,0,1,40,44H216A12,12,0,0,1,228,56Zm-8,0a4,4,0,0,0-4-4H40a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H216a4,4,0,0,0,4-4Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport r from \"../lib/IconBase.es.js\";\nimport t from \"../defs/DownloadSimple.es.js\";\nconst e = o.forwardRef((a, m) => /* @__PURE__ */ o.createElement(r, { ref: m, ...a, weights: t }));\ne.displayName = \"DownloadSimpleIcon\";\nconst l = e;\nexport {\n l as DownloadSimple,\n e as DownloadSimpleIcon\n};\n","import * as e from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport i from \"../defs/File.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(a, { ref: t, ...r, weights: i }));\no.displayName = \"FileIcon\";\nconst s = o;\nexport {\n s as File,\n o as FileIcon\n};\n","import * as o from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/FolderOpen.es.js\";\nconst e = o.forwardRef((r, n) => /* @__PURE__ */ o.createElement(t, { ref: n, ...r, weights: a }));\ne.displayName = \"FolderOpenIcon\";\nconst m = e;\nexport {\n e as FolderNotchOpenIcon,\n m as FolderOpen,\n e as FolderOpenIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport i from \"../defs/TerminalWindow.es.js\";\nconst e = o.forwardRef((r, n) => /* @__PURE__ */ o.createElement(a, { ref: n, ...r, weights: i }));\ne.displayName = \"TerminalWindowIcon\";\nconst c = e;\nexport {\n c as TerminalWindow,\n e as TerminalWindowIcon\n};\n","import {\n ArrowClockwise,\n DownloadSimple,\n File,\n FolderOpen,\n TerminalWindow,\n} from \"@phosphor-icons/react\";\nimport { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n StudioSandboxesSummary,\n StudioSandboxFileEntry,\n StudioSandboxFilesResponse,\n StudioSandboxPort,\n StudioSandboxPortsResponse,\n StudioSandboxProcess,\n StudioSandboxProcessesResponse,\n StudioSandboxProcessLogsResponse,\n StudioSandboxSummary,\n} from \"../../../../types\";\nimport { responseErrorMessage } from \"../../app-errors\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport {\n StudioEmptyState,\n StudioPageContent,\n StudioPageHeader,\n StudioPageShell,\n StudioStatusBadge,\n StudioSurface,\n} from \"../../components/ui/studio\";\nimport { cn } from \"../../lib/utils\";\nimport { errorMessage } from \"../shared/format\";\nimport { requestJson } from \"../shared/request\";\n\nconst maxInlinePreviewBytes = 1024 * 1024;\nconst textExtensions = new Set([\n \"css\",\n \"csv\",\n \"env\",\n \"gitignore\",\n \"graphql\",\n \"html\",\n \"ini\",\n \"java\",\n \"js\",\n \"json\",\n \"jsx\",\n \"log\",\n \"md\",\n \"mdx\",\n \"mjs\",\n \"py\",\n \"rb\",\n \"rs\",\n \"sh\",\n \"sql\",\n \"svg\",\n \"toml\",\n \"ts\",\n \"tsx\",\n \"txt\",\n \"xml\",\n \"yaml\",\n \"yml\",\n]);\nconst imageTypes = new Map([\n [\"gif\", \"image/gif\"],\n [\"jpeg\", \"image/jpeg\"],\n [\"jpg\", \"image/jpeg\"],\n [\"png\", \"image/png\"],\n [\"webp\", \"image/webp\"],\n]);\n\ntype LoadState = \"idle\" | \"loading\";\ntype FilePreview =\n | { kind: \"binary\" | \"large\"; file: StudioSandboxFileEntry }\n | { kind: \"image\"; file: StudioSandboxFileEntry; url: string }\n | { kind: \"loading\"; file: StudioSandboxFileEntry }\n | { kind: \"text\"; file: StudioSandboxFileEntry; text: string };\n\nexport function SandboxesPage(props: {\n enabled: boolean;\n initialSandboxRef?: string;\n onError: (message: string) => void;\n onSelectSandbox: (sandboxRef: string) => void;\n}) {\n const [sandboxes, setSandboxes] = useState<StudioSandboxSummary[]>([]);\n const [summaryLoadState, setSummaryLoadState] = useState<LoadState>(\"idle\");\n const [refreshSequence, setRefreshSequence] = useState(0);\n const [currentPath, setCurrentPath] = useState(\".\");\n const [files, setFiles] = useState<StudioSandboxFileEntry[]>([]);\n const [fileLoadState, setFileLoadState] = useState<LoadState>(\"idle\");\n const [preview, setPreview] = useState<FilePreview | undefined>();\n const [ports, setPorts] = useState<StudioSandboxPort[]>([]);\n const [processes, setProcesses] = useState<StudioSandboxProcess[]>([]);\n const [runtimeLoadState, setRuntimeLoadState] = useState<LoadState>(\"idle\");\n const [selectedProcessId, setSelectedProcessId] = useState(\"\");\n const [processLogs, setProcessLogs] = useState<StudioSandboxProcessLogsResponse | undefined>();\n const [localError, setLocalError] = useState(\"\");\n const previewRequest = useRef<AbortController | undefined>(undefined);\n\n const selectedRef = props.initialSandboxRef ?? sandboxes[0]?.ref ?? \"\";\n const selectedSandbox = sandboxes.find((sandbox) => sandbox.ref === selectedRef);\n const selectedSandboxRef = selectedSandbox?.ref;\n const supportsFiles = selectedSandbox?.capabilities.files ?? false;\n const supportsPorts = selectedSandbox?.capabilities.ports ?? false;\n const supportsProcesses = selectedSandbox?.capabilities.processes ?? false;\n\n const reportError = useCallback(\n (error: unknown) => {\n const message = errorMessage(error);\n setLocalError(message);\n props.onError(message);\n },\n [props.onError],\n );\n\n useEffect(() => {\n if (!props.enabled) {\n setSandboxes([]);\n return;\n }\n const controller = new AbortController();\n setSummaryLoadState(\"loading\");\n setLocalError(\"\");\n void requestJson<StudioSandboxesSummary>(\n \"/sandboxes\",\n \"Sandboxes\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n )\n .then((summary) => setSandboxes(summary.sandboxes))\n .catch((error: unknown) => {\n if (!controller.signal.aborted) reportError(error);\n })\n .finally(() => {\n if (!controller.signal.aborted) setSummaryLoadState(\"idle\");\n });\n return () => controller.abort();\n }, [props.enabled, refreshSequence, reportError]);\n\n useEffect(() => {\n if (props.initialSandboxRef === undefined && sandboxes[0] !== undefined) {\n props.onSelectSandbox(sandboxes[0].ref);\n }\n }, [props.initialSandboxRef, props.onSelectSandbox, sandboxes]);\n\n useEffect(() => {\n setCurrentPath(\".\");\n setFiles([]);\n setPreview(undefined);\n setPorts([]);\n setProcesses([]);\n setSelectedProcessId(\"\");\n setProcessLogs(undefined);\n return () => previewRequest.current?.abort();\n }, [selectedRef]);\n\n useEffect(() => {\n if (selectedSandboxRef === undefined || !supportsFiles) {\n setFiles([]);\n setFileLoadState(\"idle\");\n return;\n }\n const controller = new AbortController();\n setFileLoadState(\"loading\");\n const params = new URLSearchParams({ path: currentPath });\n void requestJson<StudioSandboxFilesResponse>(\n `/sandboxes/${encodeURIComponent(selectedSandboxRef)}/files?${params}`,\n \"Sandbox files\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n )\n .then((response) => setFiles(response.entries))\n .catch((error: unknown) => {\n if (!controller.signal.aborted) {\n setFiles([]);\n reportError(error);\n }\n })\n .finally(() => {\n if (!controller.signal.aborted) setFileLoadState(\"idle\");\n });\n return () => controller.abort();\n }, [currentPath, refreshSequence, reportError, selectedSandboxRef, supportsFiles]);\n\n useEffect(() => {\n if (selectedSandboxRef === undefined) {\n return;\n }\n const controller = new AbortController();\n setRuntimeLoadState(\"loading\");\n const base = `/sandboxes/${encodeURIComponent(selectedSandboxRef)}`;\n const requests: Promise<void>[] = [];\n if (supportsPorts) {\n requests.push(\n requestJson<StudioSandboxPortsResponse>(\n `${base}/ports`,\n \"Sandbox ports\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n ).then((response) => setPorts(response.ports)),\n );\n } else {\n setPorts([]);\n }\n if (supportsProcesses) {\n requests.push(\n requestJson<StudioSandboxProcessesResponse>(\n `${base}/processes`,\n \"Sandbox processes\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n ).then((response) => {\n setProcesses(response.processes);\n setSelectedProcessId((current) =>\n response.processes.some((process) => process.id === current) ? current : \"\",\n );\n }),\n );\n } else {\n setProcesses([]);\n setSelectedProcessId(\"\");\n }\n void Promise.all(requests)\n .catch((error: unknown) => {\n if (!controller.signal.aborted) reportError(error);\n })\n .finally(() => {\n if (!controller.signal.aborted) setRuntimeLoadState(\"idle\");\n });\n return () => controller.abort();\n }, [refreshSequence, reportError, selectedSandboxRef, supportsPorts, supportsProcesses]);\n\n useEffect(() => {\n if (selectedSandboxRef === undefined || selectedProcessId.length === 0) {\n setProcessLogs(undefined);\n return;\n }\n const controller = new AbortController();\n const base = `/sandboxes/${encodeURIComponent(selectedSandboxRef)}/processes`;\n void requestJson<StudioSandboxProcessLogsResponse>(\n `${base}/${encodeURIComponent(selectedProcessId)}/logs`,\n \"Process logs\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n )\n .then(setProcessLogs)\n .catch((error: unknown) => {\n if (!controller.signal.aborted) reportError(error);\n });\n return () => controller.abort();\n }, [refreshSequence, reportError, selectedProcessId, selectedSandboxRef]);\n\n useEffect(\n () => () => {\n if (preview?.kind === \"image\") URL.revokeObjectURL(preview.url);\n },\n [preview],\n );\n\n const clearPreview = useCallback(() => {\n previewRequest.current?.abort();\n previewRequest.current = undefined;\n setPreview(undefined);\n }, []);\n\n const openFile = useCallback(\n async (file: StudioSandboxFileEntry) => {\n previewRequest.current?.abort();\n previewRequest.current = undefined;\n if (selectedSandboxRef === undefined) {\n return;\n }\n if ((file.size ?? 0) > maxInlinePreviewBytes) {\n setPreview({ kind: \"large\", file });\n return;\n }\n const extension = fileExtension(file.path);\n const imageType = imageTypes.get(extension);\n if (!textExtensions.has(extension) && imageType === undefined) {\n setPreview({ kind: \"binary\", file });\n return;\n }\n\n setPreview({ kind: \"loading\", file });\n setLocalError(\"\");\n const controller = new AbortController();\n previewRequest.current = controller;\n try {\n const response = await fetch(fileContentUrl(selectedSandboxRef, file.path), {\n signal: controller.signal,\n });\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, \"Sandbox file\"));\n }\n const bytes = await response.arrayBuffer();\n if (bytes.byteLength > maxInlinePreviewBytes) {\n setPreview({ kind: \"large\", file });\n return;\n }\n if (imageType !== undefined) {\n const url = URL.createObjectURL(new Blob([bytes], { type: imageType }));\n setPreview({ kind: \"image\", file, url });\n return;\n }\n try {\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n setPreview({ kind: \"text\", file, text });\n } catch {\n setPreview({ kind: \"binary\", file });\n }\n } catch (error) {\n if (controller.signal.aborted) return;\n reportError(error);\n setPreview({ kind: \"binary\", file });\n } finally {\n if (previewRequest.current === controller) previewRequest.current = undefined;\n }\n },\n [reportError, selectedSandboxRef],\n );\n\n if (!props.enabled) {\n return (\n <StudioPageShell className=\"grid-rows-[auto_minmax(0,1fr)]\" aria-label=\"Sandboxes\">\n <StudioPageHeader\n title=\"Sandboxes\"\n description=\"Read-only sandbox inspectors explicitly registered by the application.\"\n />\n <StudioPageContent className=\"overflow-auto\">\n <StudioEmptyState\n title=\"No sandbox workspaces\"\n text=\"Register a sandbox inspector in the Studio options to inspect it here.\"\n />\n </StudioPageContent>\n </StudioPageShell>\n );\n }\n\n return (\n <StudioPageShell className=\"grid-rows-[auto_minmax(0,1fr)]\" aria-label=\"Sandboxes\">\n <StudioPageHeader\n title=\"Sandboxes\"\n description=\"Read-only sandbox inspectors explicitly registered by the application.\"\n action={\n <Button\n disabled={summaryLoadState === \"loading\"}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary\"\n onClick={() => setRefreshSequence((current) => current + 1)}\n >\n <StudioIcon icon={ArrowClockwise} aria-hidden=\"true\" />\n Refresh\n </Button>\n }\n />\n\n <StudioPageContent className=\"grid grid-rows-[minmax(0,1fr)] overflow-hidden\">\n {sandboxes.length === 0 ? (\n <StudioEmptyState\n className=\"h-full\"\n title={\n summaryLoadState === \"loading\" ? \"Loading sandboxes\" : \"No live sandboxes detected\"\n }\n text={\n summaryLoadState === \"loading\"\n ? \"Reading live sandbox workspaces.\"\n : \"Register live sandbox inspectors in the Studio options.\"\n }\n />\n ) : (\n <div className=\"grid min-h-0 min-w-0 grid-cols-[250px_minmax(300px,0.8fr)_minmax(400px,1.2fr)] gap-3 overflow-hidden\">\n <SandboxRail\n sandboxes={sandboxes}\n selectedRef={selectedRef}\n onSelect={props.onSelectSandbox}\n />\n {supportsFiles ? (\n <FileBrowser\n currentPath={currentPath}\n files={files}\n loading={fileLoadState === \"loading\"}\n onOpenDirectory={(filePath) => {\n clearPreview();\n setCurrentPath(filePath);\n }}\n onOpenFile={(file) => void openFile(file)}\n onSelectPath={(filePath) => {\n clearPreview();\n setCurrentPath(filePath);\n }}\n />\n ) : (\n <StudioEmptyState\n title=\"Files unavailable\"\n text=\"This registration did not expose file inspection.\"\n />\n )}\n <div className=\"grid min-h-0 gap-3 overflow-y-auto pr-1\">\n {selectedSandbox === undefined ? (\n <StudioEmptyState\n title=\"Sandbox unavailable\"\n text=\"The requested live sandbox is not registered by this Studio runtime.\"\n />\n ) : (\n <>\n <SandboxOverview sandbox={selectedSandbox} error={localError} />\n <FilePreviewPanel preview={preview} sandboxRef={selectedSandbox.ref} />\n <RuntimePanel\n loading={runtimeLoadState === \"loading\"}\n logs={processLogs}\n ports={ports}\n processes={processes}\n selectedProcessId={selectedProcessId}\n supportsPorts={selectedSandbox.capabilities.ports}\n supportsProcesses={selectedSandbox.capabilities.processes}\n onSelectProcess={setSelectedProcessId}\n />\n </>\n )}\n </div>\n </div>\n )}\n </StudioPageContent>\n </StudioPageShell>\n );\n}\n\nfunction SandboxRail(props: {\n sandboxes: StudioSandboxSummary[];\n selectedRef: string;\n onSelect: (sandboxRef: string) => void;\n}) {\n return (\n <StudioSurface className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]\">\n <div className=\"border-b border-hair px-4 py-3\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Workspaces\n </span>\n <p className=\"m-0 mt-1 text-xs text-muted-foreground\">\n {props.sandboxes.length} live {props.sandboxes.length === 1 ? \"session\" : \"sessions\"}\n </p>\n </div>\n <div className=\"min-h-0 overflow-y-auto p-2\">\n {props.sandboxes.map((sandbox) => (\n <Button\n className={cn(\n \"mb-1 grid h-auto min-h-16 w-full justify-stretch gap-1 rounded-lg px-3 py-2.5 text-left\",\n sandbox.ref === props.selectedRef && \"border-border bg-accent text-foreground\",\n )}\n key={sandbox.ref}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onSelect(sandbox.ref)}\n >\n <span className=\"flex min-w-0 items-center justify-between gap-2\">\n <strong className=\"truncate text-sm font-semibold text-foreground\">\n {sandbox.id}\n </strong>\n <StudioStatusBadge className=\"shrink-0 px-1.5 py-0.5 text-[10px]\">\n {sandbox.provider}\n </StudioStatusBadge>\n </span>\n <span className=\"truncate font-mono text-[11px] font-normal text-muted-foreground\">\n {sandbox.workdir}\n </span>\n </Button>\n ))}\n </div>\n </StudioSurface>\n );\n}\n\nfunction FileBrowser(props: {\n currentPath: string;\n files: StudioSandboxFileEntry[];\n loading: boolean;\n onOpenDirectory: (path: string) => void;\n onOpenFile: (file: StudioSandboxFileEntry) => void;\n onSelectPath: (path: string) => void;\n}) {\n const breadcrumbs = useMemo(() => sandboxBreadcrumbs(props.currentPath), [props.currentPath]);\n return (\n <StudioSurface className=\"grid min-h-0 grid-rows-[auto_auto_minmax(0,1fr)]\">\n <div className=\"border-b border-hair px-4 py-3\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Files\n </span>\n <p className=\"m-0 mt-1 text-xs text-muted-foreground\">One level at a time</p>\n </div>\n <div className=\"flex min-h-10 items-center gap-1 overflow-x-auto border-b border-hair px-3 py-1.5\">\n {breadcrumbs.map((breadcrumb, index) => (\n <span className=\"flex items-center gap-1\" key={breadcrumb.path}>\n {index > 0 ? <span className=\"text-dim\">/</span> : null}\n <Button\n className=\"h-7 min-h-7 px-2 font-mono text-xs\"\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onSelectPath(breadcrumb.path)}\n >\n {breadcrumb.label}\n </Button>\n </span>\n ))}\n </div>\n <div className=\"min-h-0 overflow-y-auto p-2\">\n {props.loading ? (\n <StudioEmptyState\n size=\"compact\"\n title=\"Loading workspace\"\n text=\"Reading files from the selected sandbox.\"\n />\n ) : null}\n {!props.loading && props.files.length === 0 ? (\n <StudioEmptyState\n size=\"compact\"\n title=\"Empty directory\"\n text=\"This directory does not contain any files.\"\n />\n ) : null}\n {props.files.map((file) => (\n <Button\n className=\"mb-0.5 grid h-10 min-h-10 w-full grid-cols-[18px_minmax(0,1fr)_auto] justify-stretch gap-2 rounded-md px-2.5 text-left text-xs font-medium\"\n key={file.path}\n type=\"button\"\n variant=\"ghost\"\n onClick={() =>\n file.type === \"directory\" ? props.onOpenDirectory(file.path) : props.onOpenFile(file)\n }\n >\n <StudioIcon\n className=\"text-muted-foreground\"\n icon={file.type === \"directory\" ? FolderOpen : File}\n aria-hidden=\"true\"\n />\n <span className=\"truncate text-foreground\">{basename(file.path)}</span>\n <span className=\"font-mono text-[10px] font-normal text-muted-foreground\">\n {file.type === \"file\" ? formatBytes(file.size) : file.type}\n </span>\n </Button>\n ))}\n </div>\n </StudioSurface>\n );\n}\n\nfunction SandboxOverview(props: { sandbox: StudioSandboxSummary; error: string }) {\n return (\n <StudioSurface className=\"p-4\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Active sandbox\n </span>\n <h2 className=\"m-0 mt-1 truncate text-lg font-semibold text-foreground\">\n {props.sandbox.id}\n </h2>\n <p className=\"m-0 mt-1 truncate font-mono text-xs text-muted-foreground\">\n {props.sandbox.workdir}\n </p>\n </div>\n <StudioStatusBadge>{props.sandbox.provider}</StudioStatusBadge>\n </div>\n <div className=\"mt-4 grid grid-cols-3 gap-3 text-xs\">\n <MetadataList label=\"Agents\" values={props.sandbox.agentIds} />\n <MetadataList label=\"Sandbox tools\" values={props.sandbox.toolNames} />\n <MetadataList\n label=\"Views\"\n values={props.sandbox.views.map((view) => `${view.label} (${view.protocol})`)}\n />\n </div>\n {props.error.length > 0 ? (\n <p className=\"m-0 mt-3 rounded-lg border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive\">\n {props.error}\n </p>\n ) : null}\n </StudioSurface>\n );\n}\n\nfunction MetadataList(props: { label: string; values: string[] }) {\n return (\n <div className=\"rounded-lg border border-hair bg-background p-3\">\n <span className=\"font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {props.label}\n </span>\n <p className=\"m-0 mt-1 break-words font-mono leading-5 text-foreground\">\n {props.values.join(\", \") || \"-\"}\n </p>\n </div>\n );\n}\n\nfunction FilePreviewPanel(props: { preview: FilePreview | undefined; sandboxRef: string }) {\n const file = props.preview?.file;\n return (\n <StudioSurface className=\"grid min-h-64 grid-rows-[auto_minmax(0,1fr)]\">\n <div className=\"flex min-h-12 items-center justify-between gap-3 border-b border-hair px-4 py-2\">\n <div className=\"min-w-0\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Preview\n </span>\n <p className=\"m-0 mt-0.5 truncate font-mono text-[11px] text-muted-foreground\">\n {file?.path ?? \"Select a file\"}\n </p>\n </div>\n {file !== undefined ? (\n <Button asChild size=\"sm\" variant=\"secondary\">\n <a href={fileContentUrl(props.sandboxRef, file.path, true)}>\n <StudioIcon icon={DownloadSimple} aria-hidden=\"true\" />\n Download\n </a>\n </Button>\n ) : null}\n </div>\n <div className=\"grid min-h-0 place-items-center overflow-auto\">\n {props.preview === undefined ? (\n <StudioEmptyState\n className=\"h-full rounded-none\"\n size=\"compact\"\n title=\"No file selected\"\n text=\"Choose a regular file to inspect its contents.\"\n />\n ) : null}\n {props.preview?.kind === \"loading\" ? (\n <StudioEmptyState\n className=\"h-full rounded-none\"\n size=\"compact\"\n title=\"Loading preview\"\n text=\"Reading the selected file.\"\n />\n ) : null}\n {props.preview?.kind === \"text\" ? (\n <pre className=\"m-0 h-full min-h-48 w-full overflow-auto whitespace-pre-wrap break-words rounded-lg border border-hair bg-card p-4 font-mono text-xs leading-5 text-foreground\">\n {props.preview.text}\n </pre>\n ) : null}\n {props.preview?.kind === \"image\" ? (\n <img\n className=\"max-h-96 max-w-full rounded-lg border border-hair object-contain\"\n src={props.preview.url}\n alt={basename(props.preview.file.path)}\n />\n ) : null}\n {props.preview?.kind === \"binary\" ? (\n <PreviewNotice text=\"This file type is download-only and will not be rendered in Studio.\" />\n ) : null}\n {props.preview?.kind === \"large\" ? (\n <PreviewNotice text=\"This file is larger than the 1 MiB inline preview limit.\" />\n ) : null}\n </div>\n </StudioSurface>\n );\n}\n\nfunction PreviewNotice(props: { text: string }) {\n return (\n <div className=\"grid max-w-sm justify-items-center gap-2 text-center\">\n <StudioIcon className=\"h-6 w-6 text-muted-foreground\" icon={File} aria-hidden=\"true\" />\n <p className=\"m-0 text-xs leading-5 text-muted-foreground\">{props.text}</p>\n </div>\n );\n}\n\nfunction RuntimePanel(props: {\n loading: boolean;\n logs: StudioSandboxProcessLogsResponse | undefined;\n ports: StudioSandboxPort[];\n processes: StudioSandboxProcess[];\n selectedProcessId: string;\n supportsPorts: boolean;\n supportsProcesses: boolean;\n onSelectProcess: (processId: string) => void;\n}) {\n return (\n <StudioSurface className=\"p-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Runtime\n </span>\n <p className=\"m-0 mt-1 text-xs text-muted-foreground\">\n Published ports and managed processes\n </p>\n </div>\n {props.loading ? <StudioStatusBadge>Refreshing</StudioStatusBadge> : null}\n </div>\n\n <div className=\"mt-4 grid gap-4\">\n <RuntimeSection title=\"Ports\">\n {!props.supportsPorts ? (\n <RuntimeEmpty text=\"Published ports are not supported by this sandbox.\" />\n ) : props.ports.length === 0 ? (\n <RuntimeEmpty text=\"No ports are published.\" />\n ) : (\n <div className=\"grid gap-1\">\n {props.ports.map((port) => (\n <div\n className=\"grid grid-cols-[90px_minmax(0,1fr)] gap-3 rounded-md border border-hair px-3 py-2 font-mono text-xs\"\n key={`${port.containerPort}:${port.hostPort}`}\n >\n <span className=\"text-foreground\">\n {port.containerPort}/{port.protocol}\n </span>\n <span className=\"truncate text-muted-foreground\">\n {port.host}:{port.hostPort}\n </span>\n </div>\n ))}\n </div>\n )}\n </RuntimeSection>\n\n <RuntimeSection title=\"Processes\">\n {!props.supportsProcesses ? (\n <RuntimeEmpty text=\"Managed processes are not supported by this sandbox.\" />\n ) : props.processes.length === 0 ? (\n <RuntimeEmpty text=\"No managed processes are recorded.\" />\n ) : (\n <div className=\"grid gap-1\">\n {props.processes.map((process) => (\n <Button\n className={cn(\n \"grid h-auto min-h-11 w-full grid-cols-[minmax(0,1fr)_auto] justify-stretch gap-3 rounded-md px-3 py-2 text-left\",\n process.id === props.selectedProcessId &&\n \"border-border bg-accent text-foreground\",\n )}\n key={process.id}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onSelectProcess(process.id)}\n >\n <span className=\"flex min-w-0 items-center gap-2\">\n <StudioIcon\n className=\"text-muted-foreground\"\n icon={TerminalWindow}\n aria-hidden=\"true\"\n />\n <span className=\"truncate font-mono text-xs text-foreground\">\n {[process.command, ...process.args].join(\" \")}\n </span>\n </span>\n <StudioStatusBadge className=\"px-1.5 py-0.5 text-[10px]\">\n {process.status}\n </StudioStatusBadge>\n </Button>\n ))}\n </div>\n )}\n </RuntimeSection>\n\n {props.selectedProcessId.length > 0 ? (\n <RuntimeSection title=\"Process logs\">\n {props.logs === undefined ? (\n <RuntimeEmpty text=\"Loading the latest bounded output.\" />\n ) : (\n <div className=\"grid gap-2\">\n <LogBlock\n label=\"stdout\"\n text={props.logs.stdout}\n truncated={props.logs.stdoutTruncated}\n />\n <LogBlock\n label=\"stderr\"\n text={props.logs.stderr}\n truncated={props.logs.stderrTruncated}\n />\n </div>\n )}\n </RuntimeSection>\n ) : null}\n </div>\n </StudioSurface>\n );\n}\n\nfunction RuntimeSection(props: { title: string; children: ReactNode }) {\n return (\n <section className=\"grid gap-2\">\n <h3 className=\"m-0 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {props.title}\n </h3>\n {props.children}\n </section>\n );\n}\n\nfunction RuntimeEmpty(props: { text: string }) {\n return (\n <p className=\"m-0 rounded-md border border-dashed border-hair px-3 py-2 text-xs leading-5 text-muted-foreground\">\n {props.text}\n </p>\n );\n}\n\nfunction LogBlock(props: { label: string; text: string; truncated: boolean }) {\n return (\n <div className=\"overflow-hidden rounded-md border border-hair bg-background\">\n <div className=\"flex items-center justify-between border-b border-hair px-3 py-1.5 text-[10px] font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n <span>{props.label}</span>\n {props.truncated ? <span>truncated</span> : null}\n </div>\n <pre className=\"m-0 max-h-48 overflow-auto whitespace-pre-wrap break-words p-3 font-mono text-[11px] leading-5 text-foreground\">\n {props.text || \"No output\"}\n </pre>\n </div>\n );\n}\n\nfunction sandboxBreadcrumbs(filePath: string): Array<{ label: string; path: string }> {\n const segments = filePath === \".\" ? [] : filePath.split(\"/\").filter(Boolean);\n const breadcrumbs = [{ label: \"/\", path: \".\" }];\n for (let index = 0; index < segments.length; index += 1) {\n breadcrumbs.push({\n label: segments[index] ?? \"\",\n path: segments.slice(0, index + 1).join(\"/\"),\n });\n }\n return breadcrumbs;\n}\n\nfunction fileContentUrl(sandboxRef: string, filePath: string, download = false): string {\n const params = new URLSearchParams({ path: filePath });\n if (download) params.set(\"download\", \"1\");\n return `/sandboxes/${encodeURIComponent(sandboxRef)}/files/content?${params}`;\n}\n\nfunction fileExtension(filePath: string): string {\n const name = basename(filePath).toLowerCase();\n const dot = name.lastIndexOf(\".\");\n return dot < 0 ? name : name.slice(dot + 1);\n}\n\nfunction basename(filePath: string): string {\n return filePath.split(\"/\").at(-1) ?? filePath;\n}\n\nfunction formatBytes(size: number | undefined): string {\n if (size === undefined) return \"-\";\n if (size < 1024) return `${size} B`;\n if (size < 1024 * 1024) return `${(size / 1024).toFixed(1)} KiB`;\n return `${(size / (1024 * 1024)).toFixed(1)} MiB`;\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sandboxes-page-BwidNA5G.js","names":["e","e","e","e","r","t","a","i","e","t","a","a","i"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/DownloadSimple.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/File.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/FolderOpen.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/TerminalWindow.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/DownloadSimple.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/File.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/FolderOpen.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/TerminalWindow.es.js","../../../src/ui/app/modules/sandboxes/sandboxes-page.tsx"],"sourcesContent":["import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,144v64a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V144a12,12,0,0,1,24,0v52H204V144a12,12,0,0,1,24,0Zm-108.49,8.49a12,12,0,0,0,17,0l40-40a12,12,0,0,0-17-17L140,115V32a12,12,0,0,0-24,0v83L96.49,95.51a12,12,0,0,0-17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M216,48V208H40V48A16,16,0,0,1,56,32H200A16,16,0,0,1,216,48Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40A8,8,0,0,0,168,96H136V32a8,8,0,0,0-16,0V96H88a8,8,0,0,0-5.66,13.66Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,144v64a6,6,0,0,1-6,6H40a6,6,0,0,1-6-6V144a6,6,0,0,1,12,0v58H210V144a6,6,0,0,1,12,0Zm-98.24,4.24a6,6,0,0,0,8.48,0l40-40a6,6,0,0,0-8.48-8.48L134,129.51V32a6,6,0,0,0-12,0v97.51L92.24,99.76a6,6,0,0,0-8.48,8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,144v64a4,4,0,0,1-4,4H40a4,4,0,0,1-4-4V144a4,4,0,0,1,8,0v60H212V144a4,4,0,0,1,8,0Zm-94.83,2.83a4,4,0,0,0,5.66,0l40-40a4,4,0,1,0-5.66-5.66L132,134.34V32a4,4,0,0,0-8,0V134.34L90.83,101.17a4,4,0,0,0-5.66,5.66Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,88H152V32Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM152,88V44l44,44Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M212.24,83.76l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V88A6,6,0,0,0,212.24,83.76ZM158,46.48,193.52,82H158ZM200,218H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50V216A2,2,0,0,1,200,218Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM200,220H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52V216A4,4,0,0,1,200,220Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M248.23,112.31A20,20,0,0,0,232,104H220V88a20,20,0,0,0-20-20H132L105.34,48a20.12,20.12,0,0,0-12-4H40A20,20,0,0,0,20,64V208a12,12,0,0,0,12,12H211.1a12,12,0,0,0,11.33-8l28.49-81.47.06-.17A20,20,0,0,0,248.23,112.31ZM92,68l28.8,21.6A12,12,0,0,0,128,92h68v12H69.77a20,20,0,0,0-18.94,13.58L44,137.15V68ZM202.59,196H48.89l23.72-68H226.37Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M208,88v24H69.77a8,8,0,0,0-7.59,5.47L32,208V64a8,8,0,0,1,8-8H93.33a8,8,0,0,1,4.8,1.6L128,80h72A8,8,0,0,1,208,88Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M243.36,111.81A14,14,0,0,0,232,106H214V88a14,14,0,0,0-14-14H130L101.74,52.8a14.06,14.06,0,0,0-8.4-2.8H40A14,14,0,0,0,26,64V208a6,6,0,0,0,6,6H211.1a6,6,0,0,0,5.69-4.1l28.49-85.47A14,14,0,0,0,243.36,111.81ZM40,62H93.34a2,2,0,0,1,1.2.4L124.4,84.8A6,6,0,0,0,128,86h72a2,2,0,0,1,2,2v18H69.77a14,14,0,0,0-13.28,9.57L38,171V64A2,2,0,0,1,40,62Zm193.9,58.63L206.78,202H40.33l27.54-82.63a2,2,0,0,1,1.9-1.37H232a2,2,0,0,1,1.9,2.63Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M241.72,113a11.88,11.88,0,0,0-9.73-5H212V88a12,12,0,0,0-12-12H129.33l-28.8-21.6a12.05,12.05,0,0,0-7.2-2.4H40A12,12,0,0,0,28,64V208a4,4,0,0,0,4,4H211.09a4,4,0,0,0,3.79-2.74l28.49-85.47A11.86,11.86,0,0,0,241.72,113ZM40,60H93.33a4,4,0,0,1,2.4.8L125.6,83.2a4,4,0,0,0,2.4.8h72a4,4,0,0,1,4,4v20H69.76a12,12,0,0,0-11.38,8.21L36,183.35V64A4,4,0,0,1,40,60Zm195.78,61.26L208.2,204H37.55L66,118.74A4,4,0,0,1,69.76,116H232a4,4,0,0,1,3.79,5.26Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M72.5,150.63,100.79,128,72.5,105.37a12,12,0,1,1,15-18.74l40,32a12,12,0,0,1,0,18.74l-40,32a12,12,0,0,1-15-18.74ZM144,172h32a12,12,0,0,0,0-24H144a12,12,0,0,0,0,24ZM236,56V200a20,20,0,0,1-20,20H40a20,20,0,0,1-20-20V56A20,20,0,0,1,40,36H216A20,20,0,0,1,236,56Zm-24,4H44V196H212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,56V200a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm-91,94.25-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32a8,8,0,0,1,0,12.5ZM176,168H136a8,8,0,0,1,0-16h40a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M126,128a6,6,0,0,1-2.25,4.69l-40,32a6,6,0,0,1-7.5-9.38L110.4,128,76.25,100.69a6,6,0,1,1,7.5-9.38l40,32A6,6,0,0,1,126,128Zm50,26H136a6,6,0,0,0,0,12h40a6,6,0,0,0,0-12Zm54-98V200a14,14,0,0,1-14,14H40a14,14,0,0,1-14-14V56A14,14,0,0,1,40,42H216A14,14,0,0,1,230,56Zm-12,0a2,2,0,0,0-2-2H40a2,2,0,0,0-2,2V200a2,2,0,0,0,2,2H216a2,2,0,0,0,2-2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M122.5,124.88a4,4,0,0,1,0,6.24l-40,32a4,4,0,0,1-5-6.24L113.6,128,77.5,99.12a4,4,0,0,1,5-6.24ZM176,156H136a4,4,0,0,0,0,8h40a4,4,0,0,0,0-8ZM228,56V200a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V56A12,12,0,0,1,40,44H216A12,12,0,0,1,228,56Zm-8,0a4,4,0,0,0-4-4H40a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H216a4,4,0,0,0,4-4Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport r from \"../lib/IconBase.es.js\";\nimport t from \"../defs/DownloadSimple.es.js\";\nconst e = o.forwardRef((a, m) => /* @__PURE__ */ o.createElement(r, { ref: m, ...a, weights: t }));\ne.displayName = \"DownloadSimpleIcon\";\nconst l = e;\nexport {\n l as DownloadSimple,\n e as DownloadSimpleIcon\n};\n","import * as e from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport i from \"../defs/File.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(a, { ref: t, ...r, weights: i }));\no.displayName = \"FileIcon\";\nconst s = o;\nexport {\n s as File,\n o as FileIcon\n};\n","import * as o from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/FolderOpen.es.js\";\nconst e = o.forwardRef((r, n) => /* @__PURE__ */ o.createElement(t, { ref: n, ...r, weights: a }));\ne.displayName = \"FolderOpenIcon\";\nconst m = e;\nexport {\n e as FolderNotchOpenIcon,\n m as FolderOpen,\n e as FolderOpenIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport i from \"../defs/TerminalWindow.es.js\";\nconst e = o.forwardRef((r, n) => /* @__PURE__ */ o.createElement(a, { ref: n, ...r, weights: i }));\ne.displayName = \"TerminalWindowIcon\";\nconst c = e;\nexport {\n c as TerminalWindow,\n e as TerminalWindowIcon\n};\n","import {\n ArrowClockwise,\n DownloadSimple,\n File,\n FolderOpen,\n TerminalWindow,\n} from \"@phosphor-icons/react\";\nimport { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n StudioSandboxesSummary,\n StudioSandboxFileEntry,\n StudioSandboxFilesResponse,\n StudioSandboxPort,\n StudioSandboxPortsResponse,\n StudioSandboxProcess,\n StudioSandboxProcessesResponse,\n StudioSandboxProcessLogsResponse,\n StudioSandboxSummary,\n} from \"../../../../types\";\nimport { responseErrorMessage } from \"../../app-errors\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport {\n StudioEmptyState,\n StudioPageContent,\n StudioPageHeader,\n StudioPageShell,\n StudioStatusBadge,\n StudioSurface,\n} from \"../../components/ui/studio\";\nimport { cn } from \"../../lib/utils\";\nimport { errorMessage } from \"../shared/format\";\nimport { requestJson } from \"../shared/request\";\n\nconst maxInlinePreviewBytes = 1024 * 1024;\nconst textExtensions = new Set([\n \"css\",\n \"csv\",\n \"env\",\n \"gitignore\",\n \"graphql\",\n \"html\",\n \"ini\",\n \"java\",\n \"js\",\n \"json\",\n \"jsx\",\n \"log\",\n \"md\",\n \"mdx\",\n \"mjs\",\n \"py\",\n \"rb\",\n \"rs\",\n \"sh\",\n \"sql\",\n \"svg\",\n \"toml\",\n \"ts\",\n \"tsx\",\n \"txt\",\n \"xml\",\n \"yaml\",\n \"yml\",\n]);\nconst imageTypes = new Map([\n [\"gif\", \"image/gif\"],\n [\"jpeg\", \"image/jpeg\"],\n [\"jpg\", \"image/jpeg\"],\n [\"png\", \"image/png\"],\n [\"webp\", \"image/webp\"],\n]);\n\ntype LoadState = \"idle\" | \"loading\";\ntype FilePreview =\n | { kind: \"binary\" | \"large\"; file: StudioSandboxFileEntry }\n | { kind: \"image\"; file: StudioSandboxFileEntry; url: string }\n | { kind: \"loading\"; file: StudioSandboxFileEntry }\n | { kind: \"text\"; file: StudioSandboxFileEntry; text: string };\n\nexport function SandboxesPage(props: {\n enabled: boolean;\n initialSandboxRef?: string;\n onError: (message: string) => void;\n onSelectSandbox: (sandboxRef: string) => void;\n}) {\n const [sandboxes, setSandboxes] = useState<StudioSandboxSummary[]>([]);\n const [summaryLoadState, setSummaryLoadState] = useState<LoadState>(\"idle\");\n const [refreshSequence, setRefreshSequence] = useState(0);\n const [currentPath, setCurrentPath] = useState(\".\");\n const [files, setFiles] = useState<StudioSandboxFileEntry[]>([]);\n const [fileLoadState, setFileLoadState] = useState<LoadState>(\"idle\");\n const [preview, setPreview] = useState<FilePreview | undefined>();\n const [ports, setPorts] = useState<StudioSandboxPort[]>([]);\n const [processes, setProcesses] = useState<StudioSandboxProcess[]>([]);\n const [runtimeLoadState, setRuntimeLoadState] = useState<LoadState>(\"idle\");\n const [selectedProcessId, setSelectedProcessId] = useState(\"\");\n const [processLogs, setProcessLogs] = useState<StudioSandboxProcessLogsResponse | undefined>();\n const [localError, setLocalError] = useState(\"\");\n const previewRequest = useRef<AbortController | undefined>(undefined);\n\n const selectedRef = props.initialSandboxRef ?? sandboxes[0]?.ref ?? \"\";\n const selectedSandbox = sandboxes.find((sandbox) => sandbox.ref === selectedRef);\n const selectedSandboxRef = selectedSandbox?.ref;\n const supportsFiles = selectedSandbox?.capabilities.files ?? false;\n const supportsPorts = selectedSandbox?.capabilities.ports ?? false;\n const supportsProcesses = selectedSandbox?.capabilities.processes ?? false;\n\n const reportError = useCallback(\n (error: unknown) => {\n const message = errorMessage(error);\n setLocalError(message);\n props.onError(message);\n },\n [props.onError],\n );\n\n useEffect(() => {\n if (!props.enabled) {\n setSandboxes([]);\n return;\n }\n const controller = new AbortController();\n setSummaryLoadState(\"loading\");\n setLocalError(\"\");\n void requestJson<StudioSandboxesSummary>(\n \"/sandboxes\",\n \"Sandboxes\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n )\n .then((summary) => setSandboxes(summary.sandboxes))\n .catch((error: unknown) => {\n if (!controller.signal.aborted) reportError(error);\n })\n .finally(() => {\n if (!controller.signal.aborted) setSummaryLoadState(\"idle\");\n });\n return () => controller.abort();\n }, [props.enabled, refreshSequence, reportError]);\n\n useEffect(() => {\n if (props.initialSandboxRef === undefined && sandboxes[0] !== undefined) {\n props.onSelectSandbox(sandboxes[0].ref);\n }\n }, [props.initialSandboxRef, props.onSelectSandbox, sandboxes]);\n\n useEffect(() => {\n setCurrentPath(\".\");\n setFiles([]);\n setPreview(undefined);\n setPorts([]);\n setProcesses([]);\n setSelectedProcessId(\"\");\n setProcessLogs(undefined);\n return () => previewRequest.current?.abort();\n }, [selectedRef]);\n\n useEffect(() => {\n if (selectedSandboxRef === undefined || !supportsFiles) {\n setFiles([]);\n setFileLoadState(\"idle\");\n return;\n }\n const controller = new AbortController();\n setFileLoadState(\"loading\");\n const params = new URLSearchParams({ path: currentPath });\n void requestJson<StudioSandboxFilesResponse>(\n `/sandboxes/${encodeURIComponent(selectedSandboxRef)}/files?${params}`,\n \"Sandbox files\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n )\n .then((response) => setFiles(response.entries))\n .catch((error: unknown) => {\n if (!controller.signal.aborted) {\n setFiles([]);\n reportError(error);\n }\n })\n .finally(() => {\n if (!controller.signal.aborted) setFileLoadState(\"idle\");\n });\n return () => controller.abort();\n }, [currentPath, refreshSequence, reportError, selectedSandboxRef, supportsFiles]);\n\n useEffect(() => {\n if (selectedSandboxRef === undefined) {\n return;\n }\n const controller = new AbortController();\n setRuntimeLoadState(\"loading\");\n const base = `/sandboxes/${encodeURIComponent(selectedSandboxRef)}`;\n const requests: Promise<void>[] = [];\n if (supportsPorts) {\n requests.push(\n requestJson<StudioSandboxPortsResponse>(\n `${base}/ports`,\n \"Sandbox ports\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n ).then((response) => setPorts(response.ports)),\n );\n } else {\n setPorts([]);\n }\n if (supportsProcesses) {\n requests.push(\n requestJson<StudioSandboxProcessesResponse>(\n `${base}/processes`,\n \"Sandbox processes\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n ).then((response) => {\n setProcesses(response.processes);\n setSelectedProcessId((current) =>\n response.processes.some((process) => process.id === current) ? current : \"\",\n );\n }),\n );\n } else {\n setProcesses([]);\n setSelectedProcessId(\"\");\n }\n void Promise.all(requests)\n .catch((error: unknown) => {\n if (!controller.signal.aborted) reportError(error);\n })\n .finally(() => {\n if (!controller.signal.aborted) setRuntimeLoadState(\"idle\");\n });\n return () => controller.abort();\n }, [refreshSequence, reportError, selectedSandboxRef, supportsPorts, supportsProcesses]);\n\n useEffect(() => {\n if (selectedSandboxRef === undefined || selectedProcessId.length === 0) {\n setProcessLogs(undefined);\n return;\n }\n const controller = new AbortController();\n const base = `/sandboxes/${encodeURIComponent(selectedSandboxRef)}/processes`;\n void requestJson<StudioSandboxProcessLogsResponse>(\n `${base}/${encodeURIComponent(selectedProcessId)}/logs`,\n \"Process logs\",\n controller.signal,\n refreshSequence === 0 ? \"default\" : \"reload\",\n )\n .then(setProcessLogs)\n .catch((error: unknown) => {\n if (!controller.signal.aborted) reportError(error);\n });\n return () => controller.abort();\n }, [refreshSequence, reportError, selectedProcessId, selectedSandboxRef]);\n\n useEffect(\n () => () => {\n if (preview?.kind === \"image\") URL.revokeObjectURL(preview.url);\n },\n [preview],\n );\n\n const clearPreview = useCallback(() => {\n previewRequest.current?.abort();\n previewRequest.current = undefined;\n setPreview(undefined);\n }, []);\n\n const openFile = useCallback(\n async (file: StudioSandboxFileEntry) => {\n previewRequest.current?.abort();\n previewRequest.current = undefined;\n if (selectedSandboxRef === undefined) {\n return;\n }\n if ((file.size ?? 0) > maxInlinePreviewBytes) {\n setPreview({ kind: \"large\", file });\n return;\n }\n const extension = fileExtension(file.path);\n const imageType = imageTypes.get(extension);\n if (!textExtensions.has(extension) && imageType === undefined) {\n setPreview({ kind: \"binary\", file });\n return;\n }\n\n setPreview({ kind: \"loading\", file });\n setLocalError(\"\");\n const controller = new AbortController();\n previewRequest.current = controller;\n try {\n const response = await fetch(fileContentUrl(selectedSandboxRef, file.path), {\n signal: controller.signal,\n });\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, \"Sandbox file\"));\n }\n const bytes = await response.arrayBuffer();\n if (bytes.byteLength > maxInlinePreviewBytes) {\n setPreview({ kind: \"large\", file });\n return;\n }\n if (imageType !== undefined) {\n const url = URL.createObjectURL(new Blob([bytes], { type: imageType }));\n setPreview({ kind: \"image\", file, url });\n return;\n }\n try {\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n setPreview({ kind: \"text\", file, text });\n } catch {\n setPreview({ kind: \"binary\", file });\n }\n } catch (error) {\n if (controller.signal.aborted) return;\n reportError(error);\n setPreview({ kind: \"binary\", file });\n } finally {\n if (previewRequest.current === controller) previewRequest.current = undefined;\n }\n },\n [reportError, selectedSandboxRef],\n );\n\n if (!props.enabled) {\n return (\n <StudioPageShell className=\"grid-rows-[auto_minmax(0,1fr)]\" aria-label=\"Sandboxes\">\n <StudioPageHeader\n title=\"Sandboxes\"\n description=\"Read-only sandbox inspectors explicitly registered by the application.\"\n />\n <StudioPageContent className=\"overflow-auto\">\n <StudioEmptyState\n title=\"No sandbox workspaces\"\n text=\"Register a sandbox inspector in the Studio options to inspect it here.\"\n />\n </StudioPageContent>\n </StudioPageShell>\n );\n }\n\n return (\n <StudioPageShell className=\"grid-rows-[auto_minmax(0,1fr)]\" aria-label=\"Sandboxes\">\n <StudioPageHeader\n title=\"Sandboxes\"\n description=\"Read-only sandbox inspectors explicitly registered by the application.\"\n action={\n <Button\n disabled={summaryLoadState === \"loading\"}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary\"\n onClick={() => setRefreshSequence((current) => current + 1)}\n >\n <StudioIcon icon={ArrowClockwise} aria-hidden=\"true\" />\n Refresh\n </Button>\n }\n />\n\n <StudioPageContent className=\"grid grid-rows-[minmax(0,1fr)] overflow-hidden\">\n {sandboxes.length === 0 ? (\n <StudioEmptyState\n className=\"h-full\"\n title={\n summaryLoadState === \"loading\" ? \"Loading sandboxes\" : \"No live sandboxes detected\"\n }\n text={\n summaryLoadState === \"loading\"\n ? \"Reading live sandbox workspaces.\"\n : \"Register live sandbox inspectors in the Studio options.\"\n }\n />\n ) : (\n <div className=\"grid min-h-0 min-w-0 grid-cols-[250px_minmax(300px,0.8fr)_minmax(400px,1.2fr)] gap-3 overflow-hidden\">\n <SandboxRail\n sandboxes={sandboxes}\n selectedRef={selectedRef}\n onSelect={props.onSelectSandbox}\n />\n {supportsFiles ? (\n <FileBrowser\n currentPath={currentPath}\n files={files}\n loading={fileLoadState === \"loading\"}\n onOpenDirectory={(filePath) => {\n clearPreview();\n setCurrentPath(filePath);\n }}\n onOpenFile={(file) => void openFile(file)}\n onSelectPath={(filePath) => {\n clearPreview();\n setCurrentPath(filePath);\n }}\n />\n ) : (\n <StudioEmptyState\n title=\"Files unavailable\"\n text=\"This registration did not expose file inspection.\"\n />\n )}\n <div className=\"grid min-h-0 gap-3 overflow-y-auto pr-1\">\n {selectedSandbox === undefined ? (\n <StudioEmptyState\n title=\"Sandbox unavailable\"\n text=\"The requested live sandbox is not registered by this Studio runtime.\"\n />\n ) : (\n <>\n <SandboxOverview sandbox={selectedSandbox} error={localError} />\n <FilePreviewPanel preview={preview} sandboxRef={selectedSandbox.ref} />\n <RuntimePanel\n loading={runtimeLoadState === \"loading\"}\n logs={processLogs}\n ports={ports}\n processes={processes}\n selectedProcessId={selectedProcessId}\n supportsPorts={selectedSandbox.capabilities.ports}\n supportsProcesses={selectedSandbox.capabilities.processes}\n onSelectProcess={setSelectedProcessId}\n />\n </>\n )}\n </div>\n </div>\n )}\n </StudioPageContent>\n </StudioPageShell>\n );\n}\n\nfunction SandboxRail(props: {\n sandboxes: StudioSandboxSummary[];\n selectedRef: string;\n onSelect: (sandboxRef: string) => void;\n}) {\n return (\n <StudioSurface className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]\">\n <div className=\"border-b border-hair px-4 py-3\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Workspaces\n </span>\n <p className=\"m-0 mt-1 text-xs text-muted-foreground\">\n {props.sandboxes.length} live {props.sandboxes.length === 1 ? \"session\" : \"sessions\"}\n </p>\n </div>\n <div className=\"min-h-0 overflow-y-auto p-2\">\n {props.sandboxes.map((sandbox) => (\n <Button\n className={cn(\n \"mb-1 grid h-auto min-h-16 w-full justify-stretch gap-1 rounded-lg px-3 py-2.5 text-left\",\n sandbox.ref === props.selectedRef && \"border-border bg-accent text-foreground\",\n )}\n key={sandbox.ref}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onSelect(sandbox.ref)}\n >\n <span className=\"flex min-w-0 items-center justify-between gap-2\">\n <strong className=\"truncate text-sm font-semibold text-foreground\">\n {sandbox.id}\n </strong>\n <StudioStatusBadge className=\"shrink-0 px-1.5 py-0.5 text-[10px]\">\n {sandbox.provider}\n </StudioStatusBadge>\n </span>\n <span className=\"truncate font-mono text-[11px] font-normal text-muted-foreground\">\n {sandbox.workdir}\n </span>\n </Button>\n ))}\n </div>\n </StudioSurface>\n );\n}\n\nfunction FileBrowser(props: {\n currentPath: string;\n files: StudioSandboxFileEntry[];\n loading: boolean;\n onOpenDirectory: (path: string) => void;\n onOpenFile: (file: StudioSandboxFileEntry) => void;\n onSelectPath: (path: string) => void;\n}) {\n const breadcrumbs = useMemo(() => sandboxBreadcrumbs(props.currentPath), [props.currentPath]);\n return (\n <StudioSurface className=\"grid min-h-0 grid-rows-[auto_auto_minmax(0,1fr)]\">\n <div className=\"border-b border-hair px-4 py-3\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Files\n </span>\n <p className=\"m-0 mt-1 text-xs text-muted-foreground\">One level at a time</p>\n </div>\n <div className=\"flex min-h-10 items-center gap-1 overflow-x-auto border-b border-hair px-3 py-1.5\">\n {breadcrumbs.map((breadcrumb, index) => (\n <span className=\"flex items-center gap-1\" key={breadcrumb.path}>\n {index > 0 ? <span className=\"text-dim\">/</span> : null}\n <Button\n className=\"h-7 min-h-7 px-2 font-mono text-xs\"\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onSelectPath(breadcrumb.path)}\n >\n {breadcrumb.label}\n </Button>\n </span>\n ))}\n </div>\n <div className=\"min-h-0 overflow-y-auto p-2\">\n {props.loading ? (\n <StudioEmptyState\n size=\"compact\"\n title=\"Loading workspace\"\n text=\"Reading files from the selected sandbox.\"\n />\n ) : null}\n {!props.loading && props.files.length === 0 ? (\n <StudioEmptyState\n size=\"compact\"\n title=\"Empty directory\"\n text=\"This directory does not contain any files.\"\n />\n ) : null}\n {props.files.map((file) => (\n <Button\n className=\"mb-0.5 grid h-10 min-h-10 w-full grid-cols-[18px_minmax(0,1fr)_auto] justify-stretch gap-2 rounded-md px-2.5 text-left text-xs font-medium\"\n key={file.path}\n type=\"button\"\n variant=\"ghost\"\n onClick={() =>\n file.type === \"directory\" ? props.onOpenDirectory(file.path) : props.onOpenFile(file)\n }\n >\n <StudioIcon\n className=\"text-muted-foreground\"\n icon={file.type === \"directory\" ? FolderOpen : File}\n aria-hidden=\"true\"\n />\n <span className=\"truncate text-foreground\">{basename(file.path)}</span>\n <span className=\"font-mono text-[10px] font-normal text-muted-foreground\">\n {file.type === \"file\" ? formatBytes(file.size) : file.type}\n </span>\n </Button>\n ))}\n </div>\n </StudioSurface>\n );\n}\n\nfunction SandboxOverview(props: { sandbox: StudioSandboxSummary; error: string }) {\n return (\n <StudioSurface className=\"p-4\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Active sandbox\n </span>\n <h2 className=\"m-0 mt-1 truncate text-lg font-semibold text-foreground\">\n {props.sandbox.id}\n </h2>\n <p className=\"m-0 mt-1 truncate font-mono text-xs text-muted-foreground\">\n {props.sandbox.workdir}\n </p>\n </div>\n <StudioStatusBadge>{props.sandbox.provider}</StudioStatusBadge>\n </div>\n <div className=\"mt-4 grid grid-cols-3 gap-3 text-xs\">\n <MetadataList label=\"Agents\" values={props.sandbox.agentIds} />\n <MetadataList label=\"Sandbox tools\" values={props.sandbox.toolNames} />\n <MetadataList\n label=\"Views\"\n values={props.sandbox.views.map((view) => `${view.label} (${view.protocol})`)}\n />\n </div>\n {props.error.length > 0 ? (\n <p className=\"m-0 mt-3 rounded-lg border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive\">\n {props.error}\n </p>\n ) : null}\n </StudioSurface>\n );\n}\n\nfunction MetadataList(props: { label: string; values: string[] }) {\n return (\n <div className=\"rounded-lg border border-hair bg-background p-3\">\n <span className=\"font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {props.label}\n </span>\n <p className=\"m-0 mt-1 break-words font-mono leading-5 text-foreground\">\n {props.values.join(\", \") || \"-\"}\n </p>\n </div>\n );\n}\n\nfunction FilePreviewPanel(props: { preview: FilePreview | undefined; sandboxRef: string }) {\n const file = props.preview?.file;\n return (\n <StudioSurface className=\"grid min-h-64 grid-rows-[auto_minmax(0,1fr)]\">\n <div className=\"flex min-h-12 items-center justify-between gap-3 border-b border-hair px-4 py-2\">\n <div className=\"min-w-0\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Preview\n </span>\n <p className=\"m-0 mt-0.5 truncate font-mono text-[11px] text-muted-foreground\">\n {file?.path ?? \"Select a file\"}\n </p>\n </div>\n {file !== undefined ? (\n <Button asChild size=\"sm\" variant=\"secondary\">\n <a href={fileContentUrl(props.sandboxRef, file.path, true)}>\n <StudioIcon icon={DownloadSimple} aria-hidden=\"true\" />\n Download\n </a>\n </Button>\n ) : null}\n </div>\n <div className=\"grid min-h-0 place-items-center overflow-auto\">\n {props.preview === undefined ? (\n <StudioEmptyState\n className=\"h-full rounded-none\"\n size=\"compact\"\n title=\"No file selected\"\n text=\"Choose a regular file to inspect its contents.\"\n />\n ) : null}\n {props.preview?.kind === \"loading\" ? (\n <StudioEmptyState\n className=\"h-full rounded-none\"\n size=\"compact\"\n title=\"Loading preview\"\n text=\"Reading the selected file.\"\n />\n ) : null}\n {props.preview?.kind === \"text\" ? (\n <pre className=\"m-0 h-full min-h-48 w-full overflow-auto whitespace-pre-wrap break-words rounded-lg border border-hair bg-card p-4 font-mono text-xs leading-5 text-foreground\">\n {props.preview.text}\n </pre>\n ) : null}\n {props.preview?.kind === \"image\" ? (\n <img\n className=\"max-h-96 max-w-full rounded-lg border border-hair object-contain\"\n src={props.preview.url}\n alt={basename(props.preview.file.path)}\n />\n ) : null}\n {props.preview?.kind === \"binary\" ? (\n <PreviewNotice text=\"This file type is download-only and will not be rendered in Studio.\" />\n ) : null}\n {props.preview?.kind === \"large\" ? (\n <PreviewNotice text=\"This file is larger than the 1 MiB inline preview limit.\" />\n ) : null}\n </div>\n </StudioSurface>\n );\n}\n\nfunction PreviewNotice(props: { text: string }) {\n return (\n <div className=\"grid max-w-sm justify-items-center gap-2 text-center\">\n <StudioIcon className=\"h-6 w-6 text-muted-foreground\" icon={File} aria-hidden=\"true\" />\n <p className=\"m-0 text-xs leading-5 text-muted-foreground\">{props.text}</p>\n </div>\n );\n}\n\nfunction RuntimePanel(props: {\n loading: boolean;\n logs: StudioSandboxProcessLogsResponse | undefined;\n ports: StudioSandboxPort[];\n processes: StudioSandboxProcess[];\n selectedProcessId: string;\n supportsPorts: boolean;\n supportsProcesses: boolean;\n onSelectProcess: (processId: string) => void;\n}) {\n return (\n <StudioSurface className=\"p-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Runtime\n </span>\n <p className=\"m-0 mt-1 text-xs text-muted-foreground\">\n Published ports and managed processes\n </p>\n </div>\n {props.loading ? <StudioStatusBadge>Refreshing</StudioStatusBadge> : null}\n </div>\n\n <div className=\"mt-4 grid gap-4\">\n <RuntimeSection title=\"Ports\">\n {!props.supportsPorts ? (\n <RuntimeEmpty text=\"Published ports are not supported by this sandbox.\" />\n ) : props.ports.length === 0 ? (\n <RuntimeEmpty text=\"No ports are published.\" />\n ) : (\n <div className=\"grid gap-1\">\n {props.ports.map((port) => (\n <div\n className=\"grid grid-cols-[90px_minmax(0,1fr)] gap-3 rounded-md border border-hair px-3 py-2 font-mono text-xs\"\n key={`${port.containerPort}:${port.hostPort}`}\n >\n <span className=\"text-foreground\">\n {port.containerPort}/{port.protocol}\n </span>\n <span className=\"truncate text-muted-foreground\">\n {port.host}:{port.hostPort}\n </span>\n </div>\n ))}\n </div>\n )}\n </RuntimeSection>\n\n <RuntimeSection title=\"Processes\">\n {!props.supportsProcesses ? (\n <RuntimeEmpty text=\"Managed processes are not supported by this sandbox.\" />\n ) : props.processes.length === 0 ? (\n <RuntimeEmpty text=\"No managed processes are recorded.\" />\n ) : (\n <div className=\"grid gap-1\">\n {props.processes.map((process) => (\n <Button\n className={cn(\n \"grid h-auto min-h-11 w-full grid-cols-[minmax(0,1fr)_auto] justify-stretch gap-3 rounded-md px-3 py-2 text-left\",\n process.id === props.selectedProcessId &&\n \"border-border bg-accent text-foreground\",\n )}\n key={process.id}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onSelectProcess(process.id)}\n >\n <span className=\"flex min-w-0 items-center gap-2\">\n <StudioIcon\n className=\"text-muted-foreground\"\n icon={TerminalWindow}\n aria-hidden=\"true\"\n />\n <span className=\"truncate font-mono text-xs text-foreground\">\n {[process.command, ...process.args].join(\" \")}\n </span>\n </span>\n <StudioStatusBadge className=\"px-1.5 py-0.5 text-[10px]\">\n {process.status}\n </StudioStatusBadge>\n </Button>\n ))}\n </div>\n )}\n </RuntimeSection>\n\n {props.selectedProcessId.length > 0 ? (\n <RuntimeSection title=\"Process logs\">\n {props.logs === undefined ? (\n <RuntimeEmpty text=\"Loading the latest bounded output.\" />\n ) : (\n <div className=\"grid gap-2\">\n <LogBlock\n label=\"stdout\"\n text={props.logs.stdout}\n truncated={props.logs.stdoutTruncated}\n />\n <LogBlock\n label=\"stderr\"\n text={props.logs.stderr}\n truncated={props.logs.stderrTruncated}\n />\n </div>\n )}\n </RuntimeSection>\n ) : null}\n </div>\n </StudioSurface>\n );\n}\n\nfunction RuntimeSection(props: { title: string; children: ReactNode }) {\n return (\n <section className=\"grid gap-2\">\n <h3 className=\"m-0 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {props.title}\n </h3>\n {props.children}\n </section>\n );\n}\n\nfunction RuntimeEmpty(props: { text: string }) {\n return (\n <p className=\"m-0 rounded-md border border-dashed border-hair px-3 py-2 text-xs leading-5 text-muted-foreground\">\n {props.text}\n </p>\n );\n}\n\nfunction LogBlock(props: { label: string; text: string; truncated: boolean }) {\n return (\n <div className=\"overflow-hidden rounded-md border border-hair bg-background\">\n <div className=\"flex items-center justify-between border-b border-hair px-3 py-1.5 text-[10px] font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n <span>{props.label}</span>\n {props.truncated ? <span>truncated</span> : null}\n </div>\n <pre className=\"m-0 max-h-48 overflow-auto whitespace-pre-wrap break-words p-3 font-mono text-[11px] leading-5 text-foreground\">\n {props.text || \"No output\"}\n </pre>\n </div>\n );\n}\n\nfunction sandboxBreadcrumbs(filePath: string): Array<{ label: string; path: string }> {\n const segments = filePath === \".\" ? [] : filePath.split(\"/\").filter(Boolean);\n const breadcrumbs = [{ label: \"/\", path: \".\" }];\n for (let index = 0; index < segments.length; index += 1) {\n breadcrumbs.push({\n label: segments[index] ?? \"\",\n path: segments.slice(0, index + 1).join(\"/\"),\n });\n }\n return breadcrumbs;\n}\n\nfunction fileContentUrl(sandboxRef: string, filePath: string, download = false): string {\n const params = new URLSearchParams({ path: filePath });\n if (download) params.set(\"download\", \"1\");\n return `/sandboxes/${encodeURIComponent(sandboxRef)}/files/content?${params}`;\n}\n\nfunction fileExtension(filePath: string): string {\n const name = basename(filePath).toLowerCase();\n const dot = name.lastIndexOf(\".\");\n return dot < 0 ? name : name.slice(dot + 1);\n}\n\nfunction basename(filePath: string): string {\n return filePath.split(\"/\").at(-1) ?? filePath;\n}\n\nfunction formatBytes(size: number | undefined): string {\n if (size === undefined) return \"-\";\n if (size < 1024) return `${size} B`;\n if (size < 1024 * 1024) return `${(size / 1024).toFixed(1)} KiB`;\n return `${(size / (1024 * 1024)).toFixed(1)} MiB`;\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7],"mappings":"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"}
|