@av-pi-studio/web-client 0.0.60 → 0.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/web/assets/{BinaryFallbackViewer-yIyZW16D.js → BinaryFallbackViewer-CJSe5ie0.js} +2 -2
- package/dist/web/assets/{BinaryFallbackViewer-yIyZW16D.js.map → BinaryFallbackViewer-CJSe5ie0.js.map} +1 -1
- package/dist/web/assets/{ChatPanel-DDk43VVt.js → ChatPanel-Cn_AWjZz.js} +2 -2
- package/dist/web/assets/ChatPanel-Cn_AWjZz.js.map +1 -0
- package/dist/web/assets/{CodeView-QYCEkfyO.js → CodeView-D4jsgevr.js} +2 -2
- package/dist/web/assets/{CodeView-QYCEkfyO.js.map → CodeView-D4jsgevr.js.map} +1 -1
- package/dist/web/assets/{FilePanel-DnHbd9i_.js → FilePanel-BU2XAEYR.js} +2 -2
- package/dist/web/assets/{FilePanel-DnHbd9i_.js.map → FilePanel-BU2XAEYR.js.map} +1 -1
- package/dist/web/assets/{ImageViewer-C4xbKf7H.js → ImageViewer-y3ocyvDt.js} +2 -2
- package/dist/web/assets/{ImageViewer-C4xbKf7H.js.map → ImageViewer-y3ocyvDt.js.map} +1 -1
- package/dist/web/assets/{MarkdownFileViewer-dvpIuide.js → MarkdownFileViewer-Ce523oEI.js} +2 -2
- package/dist/web/assets/{MarkdownFileViewer-dvpIuide.js.map → MarkdownFileViewer-Ce523oEI.js.map} +1 -1
- package/dist/web/assets/MoleculeViewerPanel-BLqvYxzD.js +2 -0
- package/dist/web/assets/{MoleculeViewerPanel-BNHZ9nNu.js.map → MoleculeViewerPanel-BLqvYxzD.js.map} +1 -1
- package/dist/web/assets/TerminalPanel-DkgPyEZ5.js +2 -0
- package/dist/web/assets/TerminalPanel-DkgPyEZ5.js.map +1 -0
- package/dist/web/assets/{TextViewer-C7Qx8B8k.js → TextViewer-D9iFgeuq.js} +2 -2
- package/dist/web/assets/{TextViewer-C7Qx8B8k.js.map → TextViewer-D9iFgeuq.js.map} +1 -1
- package/dist/web/assets/{VideoViewer-BM1PeKnI.js → VideoViewer-D0tIiEFg.js} +2 -2
- package/dist/web/assets/{VideoViewer-BM1PeKnI.js.map → VideoViewer-D0tIiEFg.js.map} +1 -1
- package/dist/web/assets/index-B5BmInG5.js +3 -0
- package/dist/web/assets/index-B5BmInG5.js.map +1 -0
- package/dist/web/assets/index-BLK6SFvN.css +1 -0
- package/dist/web/assets/{markdown-BCnETsl_.js → markdown-BSxBpL4G.js} +2 -2
- package/dist/web/assets/{markdown-BCnETsl_.js.map → markdown-BSxBpL4G.js.map} +1 -1
- package/dist/web/assets/{use-file-download-fsjornMU.js → use-file-download-Bz8jOdqH.js} +2 -2
- package/dist/web/assets/use-file-download-Bz8jOdqH.js.map +1 -0
- package/dist/web/assets/{use-file-watch-hwGslaA9.js → use-file-watch-5WY0JV4a.js} +2 -2
- package/dist/web/assets/{use-file-watch-hwGslaA9.js.map → use-file-watch-5WY0JV4a.js.map} +1 -1
- package/dist/web/assets/vendor-dnd-Bj2_GhfD.js +6 -0
- package/dist/web/assets/{vendor-dnd-CH6z-X6S.js.map → vendor-dnd-Bj2_GhfD.js.map} +1 -1
- package/dist/web/assets/{vendor-icons-o8-A85LK.js → vendor-icons-CJ_dOXcR.js} +60 -50
- package/dist/web/assets/vendor-icons-CJ_dOXcR.js.map +1 -0
- package/dist/web/index.html +4 -4
- package/package.json +3 -3
- package/dist/web/assets/ChatPanel-DDk43VVt.js.map +0 -1
- package/dist/web/assets/MoleculeViewerPanel-BNHZ9nNu.js +0 -2
- package/dist/web/assets/TerminalPanel-Db3aR8Ro.js +0 -2
- package/dist/web/assets/TerminalPanel-Db3aR8Ro.js.map +0 -1
- package/dist/web/assets/index-CJ1RqoGo.css +0 -1
- package/dist/web/assets/index-CP2RuEUB.js +0 -3
- package/dist/web/assets/index-CP2RuEUB.js.map +0 -1
- package/dist/web/assets/use-file-download-fsjornMU.js.map +0 -1
- package/dist/web/assets/vendor-dnd-CH6z-X6S.js +0 -6
- package/dist/web/assets/vendor-icons-o8-A85LK.js.map +0 -1
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatPanel-DDk43VVt.js","assets/vendor-react-CWo7Do4s.js","assets/vendor-query-BGIh-vlp.js","assets/vendor-icons-o8-A85LK.js","assets/markdown-BCnETsl_.js","assets/vendor-highlight-Efc6A-g6.js","assets/vendor-markdown-YvkQLm_s.js","assets/vendor-04vXFIXe.js","assets/markdown-DZO6X1Zb.css","assets/StatusBadge-DFSeaZ3p.js","assets/StatusBadge-DmrnYEhp.css","assets/DiffView-CrQA2QN6.js","assets/DiffView-CUctPSBA.css","assets/vendor-overlays-BnmaUbKw.js","assets/vendor-dnd-CH6z-X6S.js","assets/ChatPanel-qE6vr3IJ.css","assets/FilePanel-DnHbd9i_.js","assets/use-file-watch-hwGslaA9.js","assets/FilePanel-bWuYWz8t.css","assets/TerminalPanel-Db3aR8Ro.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-C1yf8u8e.css","assets/MoleculeViewerPanel-BNHZ9nNu.js","assets/vendor-molviewer-CARaM-YQ.js","assets/vendor-molviewer-Bychyqid.css","assets/use-file-download-fsjornMU.js","assets/MoleculeViewerPanel-CHZ8q0jD.css","assets/TextViewer-C7Qx8B8k.js","assets/CodeView-QYCEkfyO.js","assets/CodeView-Bbd7h9aM.css","assets/TextViewer-C7Vnqw_v.css","assets/MarkdownFileViewer-dvpIuide.js","assets/MarkdownFileViewer-BOOIyc8-.css","assets/ImageViewer-C4xbKf7H.js","assets/ImageViewer-Bh1rkSDM.css","assets/VideoViewer-BM1PeKnI.js","assets/VideoViewer-CCmuaDLl.css","assets/BinaryFallbackViewer-yIyZW16D.js","assets/BinaryFallbackViewer-ClYyn4IS.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
var ps=Object.defineProperty;var hs=(e,t,n)=>t in e?ps(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var R=(e,t,n)=>hs(e,typeof t!="symbol"?t+"":t,n);import{r as w,j as i,c as ms}from"./vendor-react-CWo7Do4s.js";import{Q as gs,a as _s,u as gn,b as ys,c as De,d as ws}from"./vendor-query-BGIh-vlp.js";import{A as l,B as u,C as z,D as _n,E as $,F as be,G as ce,H as A,I as x,J as H,K as U,L as dt,M as qe,N as Se}from"./vendor-04vXFIXe.js";import{L as bs,P as xs,a as Ss,b as vs,c as ks,E as Nt,d as Is,S as js,A as Cs,T as qt,C as Mt,e as yn,F as Ts,f as wn,g as bn,h as Bt,i as xn,G as Sn,j as Es,M as vn,X as St,k as Me,l as kn,m as vt,n as it,o as Qe,p as Rs,D as Ns,U as qs,R as Ms,q as In,r as Bs,s as Ds,t as As,u as $s,v as zs,w as Ps}from"./vendor-icons-o8-A85LK.js";import{P as Os,C as Fs,I as jn,S as Ws,R as Xe,T as Ye,D as Ls,a as Hs,b as Us,c as Ks,d as Ut,e as kt}from"./vendor-overlays-BnmaUbKw.js";import{u as Vs,a as Gs,D as Xs,c as Ys,S as Js,h as Qs,P as Zs,b as er,C as tr}from"./vendor-dnd-CH6z-X6S.js";import{_ as le}from"./vendor-highlight-Efc6A-g6.js";import"./vendor-markdown-YvkQLm_s.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();const nr=new gs;function Cn(e){const t=e.trim().replace(/^#/,""),n=t.length===3?t.split("").map(s=>s+s).join(""):t;if(n.length!==6||/[^0-9a-fA-F]/.test(n))throw new Error(`Invalid hex color: ${e}`);return{r:parseInt(n.slice(0,2),16),g:parseInt(n.slice(2,4),16),b:parseInt(n.slice(4,6),16)}}function sr(e){return Math.max(0,Math.min(255,Math.round(e)))}function rr({r:e,g:t,b:n}){const s=r=>sr(r).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function or(e){const{r:t,g:n,b:s}=Cn(e),r=o=>{const a=o/255;return a<=.03928?a/12.92:((a+.055)/1.055)**2.4};return .2126*r(t)+.7152*r(n)+.0722*r(s)}function Dt(e,t="#18181b",n="#ffffff"){return or(e)>.45?t:n}function ar(e,t){const{r:n,g:s,b:r}=Cn(e),o=Math.max(0,Math.min(1,t));return rr({r:n+(255-n)*o,g:s+(255-s)*o,b:r+(255-r)*o})}function Ze(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const Z=(e,t,n,s,r,o,a,c,d,h,m)=>({50:e,100:t,200:n,300:s,400:r,500:o,600:a,700:c,800:d,900:h,950:m}),v={zinc:Z("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:Z("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:Z("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:Z("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:Z("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:Z("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:Z("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:Z("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:Z("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:Z("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:Z("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"},ir={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea"},cr={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed"};function lr(){return{keyword:v.purple[300],string:v.green[300],number:v.orange[300],boolean:v.orange[300],comment:v.zinc[500],function:v.blue[300],variable:v.zinc[200],type:v.teal[300],class:v.amber[300],constant:v.orange[300],operator:v.zinc[400],punctuation:v.zinc[400],tag:v.red[300],attribute:v.amber[300],property:v.blue[200],regexp:v.teal[300],escape:v.orange[200],heading:v.blue[300],link:v.blue[400],deleted:v.red[400],inserted:v.green[400]}}function dr(){return{keyword:v.purple[700],string:v.green[700],number:v.orange[700],boolean:v.orange[700],comment:v.zinc[500],function:v.blue[700],variable:v.zinc[800],type:v.teal[700],class:v.amber[700],constant:v.orange[700],operator:v.zinc[600],punctuation:v.zinc[600],tag:v.red[700],attribute:v.amber[700],property:v.blue[700],regexp:v.teal[700],escape:v.orange[700],heading:v.blue[700],link:v.blue[600],deleted:v.red[700],inserted:v.green[700]}}function Tn(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:v.zinc[900],red:v.red[500],green:v.green[500],yellow:v.amber[500],blue:v.blue[500],magenta:v.purple[500],cyan:v.teal[500],white:v.zinc[300],brightBlack:v.zinc[600],brightRed:v.red[400],brightGreen:v.green[400],brightYellow:v.amber[400],brightBlue:v.blue[400],brightMagenta:v.purple[400],brightCyan:v.teal[400],brightWhite:v.zinc[50]}}function Pe(e){const t=v.zinc[50],n=Dt(e.accent);return{surface0:e.surface0,surface1:e.surface1,surface2:e.surface2,surface3:e.surface3,surface4:e.surface4,surfaceDiffEmpty:e.surfaceDiffEmpty,surfaceSidebar:e.surfaceSidebar,surfaceSidebarHover:e.surfaceSidebarHover,surfaceWorkspace:e.surface1,foreground:t,foregroundMuted:e.mutedForeground,accent:e.accent,accentBright:e.accentBright,accentForeground:n,destructive:e.destructive,destructiveForeground:v.white,success:e.accent,successForeground:v.white,border:e.border,borderAccent:e.borderAccent,...ir,diffAddition:v.green[400],diffDeletion:v.red[500],scrollbarHandle:e.scrollbarHandle,background:e.surface0,popover:e.surface2,popoverForeground:t,primary:e.accent,secondary:e.surface2,muted:e.surface2,mutedForeground:e.mutedForeground,input:e.surface2,ring:e.accent,palette:v,syntax:lr(),terminal:Tn(e.surface0,t,e.accent)}}function ur(){const e="#1a1a1e",t="#253e6f";return{surface0:"#ffffff",surface1:"#fafafa",surface2:"#f4f4f5",surface3:"#e4e4e7",surface4:"#d4d4d8",surfaceDiffEmpty:"#f6f6f6",surfaceSidebar:"#f4f4f5",surfaceSidebarHover:"#e9e9ec",surfaceWorkspace:"#ffffff",foreground:e,foregroundMuted:"#71717a",accent:t,accentBright:"#2f4f8e",accentForeground:Dt(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...cr,diffAddition:"#15803d",diffDeletion:"#b91c1c",scrollbarHandle:"#3f3f46",background:"#ffffff",popover:"#ffffff",popoverForeground:e,primary:t,secondary:"#f4f4f5",muted:"#f4f4f5",mutedForeground:"#71717a",input:"#f4f4f5",ring:t,palette:v,syntax:dr(),terminal:{...Tn("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const fr={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},En=["light","dark","zinc","midnight","claude","ghostty"];function pr(e){if(e==="light")return ur();switch(e){case"dark":return Pe({surface0:"#181B1A",surface1:"#1E2120",surface2:"#272A29",surface3:"#434645",surface4:"#595B5B",surfaceDiffEmpty:"#252827",surfaceSidebar:"#141716",surfaceSidebarHover:"#1c1f1e",mutedForeground:"#A1A5A4",scrollbarHandle:"#717574",border:"#252B2A",borderAccent:"#2f3135",accent:"#2e5cb8",accentBright:"#a2b4d7",destructive:"#c64f43"});case"zinc":return Pe({surface0:"#18181b",surface1:"#1f1f22",surface2:"#27272a",surface3:"#3f3f46",surface4:"#52525b",surfaceDiffEmpty:"#242427",surfaceSidebar:"#131316",surfaceSidebarHover:"#1b1b1e",mutedForeground:"#a1a1aa",scrollbarHandle:"#71717a",border:"#27272a",borderAccent:"#303036",accent:"#e4e4e7",accentBright:"#fafafa",destructive:"#c44a4a"});case"midnight":return Pe({surface0:"#161820",surface1:"#1c1e27",surface2:"#252731",surface3:"#3c3e4c",surface4:"#535564",surfaceDiffEmpty:"#222430",surfaceSidebar:"#121420",surfaceSidebarHover:"#1a1c28",mutedForeground:"#9a9db0",scrollbarHandle:"#6b6e82",border:"#242636",borderAccent:"#2e3040",accent:"#3b6fcf",accentBright:"#7eaaeb",destructive:"#c44a52"});case"claude":return Pe({surface0:"#1f1f1e",surface1:"#262523",surface2:"#2f2d2b",surface3:"#4a4745",surface4:"#605d5b",surfaceDiffEmpty:"#2a2826",surfaceSidebar:"#1a1918",surfaceSidebarHover:"#222120",mutedForeground:"#ada9a5",scrollbarHandle:"#78746f",border:"#2c2a27",borderAccent:"#36332f",accent:"#d97757",accentBright:"#e89a7f",destructive:"#cf513e"});case"ghostty":return Pe({surface0:"#282c34",surface1:"#2f333d",surface2:"#383c48",surface3:"#4a4f5e",surface4:"#5b6175",surfaceDiffEmpty:"#323643",surfaceSidebar:"#21252d",surfaceSidebarHover:"#292d36",mutedForeground:"#c8ccd8",scrollbarHandle:"#a0a4b2",border:"#353a47",borderAccent:"#3f4454",accent:"#89b4fa",accentBright:"#b4d0fc",destructive:"#c44a55"})}}const Rn={};for(const e of En){const t=e==="light"?"light":"dark";Rn[e]={name:e,colorScheme:t,colors:pr(e),swatch:fr[e]}}const hr=Rn,mr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,12:12,14:14,16:16,20:20,24:24,30:30,32:32,48:48,64:64,80:80,96:96,128:128},ct={"4xs":10,"3xs":11,"2xs":12,xs:13,code:13,sm:14,md:15,base:17,lg:19,xl:21,"2xl":23,"3xl":28,"4xl":36},gr={normal:"400",medium:"500",semibold:"600",bold:"700"},_r={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},yr={0:0,1:1,2:2},wr={0:0,50:.5,100:1},br={xs:12,sm:14,md:16,lg:20},xr={diff:22},Nn='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',qn='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function Sr(e){const t=e==="dark"?"rgba(0,0,0,0.55)":"rgba(24,24,27,0.12)";return{sm:{color:t,offsetX:0,offsetY:1,radius:2,elevation:1},md:{color:t,offsetX:0,offsetY:3,radius:8,elevation:4},lg:{color:t,offsetX:0,offsetY:10,radius:24,elevation:12}}}function Mn(e){const t=hr[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:mr,fontSize:{...ct},fontFamily:{ui:Nn,mono:qn},lineHeight:{...xr},iconSize:br,fontWeight:gr,borderRadius:_r,borderWidth:yr,opacity:wr,shadow:Sr(t.colorScheme),swatch:t.swatch}}const vr=ct.base,kr=10,Ir=24;function jr(e,t){const n=t.themeName??e.name,s=Mn(n),r=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:Nn,o=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:qn,a={...s.fontSize};if(t.fontSize!=null){const d=Math.max(kr,Math.min(Ir,t.fontSize))/vr;for(const h of Object.keys(ct))a[h]=Math.round(ct[h]*d)}return{...s,fontSize:a,fontFamily:{ui:r,mono:o}}}function Cr(e){return Mn(e)}const Tr="dark",Er=16;function Rr(e){const t=e/Er;return`${Number(t.toFixed(4))}rem`}function Nr(e){const t={};qr(e.colors,t);for(const[n,s]of Object.entries(e.spacing))t[`--pi-spacing-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontSize))t[`--pi-font-size-${n}`]=Rr(s);t["--pi-font-ui"]=e.fontFamily.ui,t["--pi-font-mono"]=e.fontFamily.mono,t["--pi-line-height-diff"]=`${e.lineHeight.diff}px`;for(const[n,s]of Object.entries(e.iconSize))t[`--pi-icon-size-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontWeight))t[`--pi-font-weight-${n}`]=String(s);for(const[n,s]of Object.entries(e.borderRadius))t[`--pi-radius-${n}`]=s===9999?"9999px":`${s}px`;for(const[n,s]of Object.entries(e.borderWidth))t[`--pi-border-width-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.opacity))t[`--pi-opacity-${n}`]=String(s);for(const[n,s]of Object.entries(e.shadow))if(typeof s=="string")t[`--pi-shadow-${n}`]=s;else if(s&&typeof s=="object"){const r=s;t[`--pi-shadow-${n}`]=`${r.offsetX}px ${r.offsetY}px ${r.radius}px ${r.color}`}return t["--pi-color-scheme"]=e.colorScheme,t}function qr(e,t){const{palette:n,syntax:s,terminal:r,...o}=e;for(const[a,c]of Object.entries(o))typeof c=="string"&&(t[`--pi-color-${a}`]=c);s&&Mr(s,t),r&&(t["--pi-terminal-bg"]=r.background,t["--pi-terminal-fg"]=r.foreground)}function Mr(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${Br(n)}`]=s)}function Br(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Dr(e){if(typeof document>"u")return;const t=document.documentElement.style;for(const[s,r]of Object.entries(e))t.setProperty(s,r);const n=e["--pi-color-scheme"];n&&document.documentElement.style.setProperty("color-scheme",n)}function Ar(e){const t=Nr(e);Dr(t)}const Oe=l().min(1,"Asset path must not be empty"),$r=u({accent:l().refine(Ze,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(Ze,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(Ze,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(Ze,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),zr=u({logoLight:Oe,logoDark:Oe,logoMark:Oe.optional(),icon:Oe,splash:Oe.optional()}),Pr=u({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),Or=u({copyright:l().optional(),companyName:l().optional()}).optional();u({productName:l().min(1,"productName is required"),shortName:l().optional(),tagline:l().optional(),colors:$r,assets:zr,links:Pr,legal:Or});function Fr(e){const t=e.accent,n=e.accentBright??ar(t,.35),s=e.accentForeground??Dt(t),r=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:r}}function Wr(e,t){return{...e,colors:{...e.colors,accent:t.accent,accentBright:t.accentBright,accentForeground:t.accentForeground,primary:t.accent,ring:t.accent},swatch:t.swatch}}const Kt="pi-studio-appearance";function Lr(e,t){let n=c(e),s=null;function r(m){return m==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":m}function o(m,b){const f=r(m),p=Cr(f);let S=jr(p,{...b,themeName:f});if(t!=null&&t.colors){const _=Fr(t.colors);S=Wr(S,_)}return S}function a(){const m=JSON.stringify({mode:n.mode,settings:n.settings});e.set(Kt,m)}function c(m){const b=m.get(Kt);let f=Tr,p={};if(b)try{const _=JSON.parse(b);_.mode&&(En.includes(_.mode)||_.mode==="system")&&(f=_.mode),_.settings&&typeof _.settings=="object"&&(p=_.settings)}catch{}const S=o(f,p);return{mode:f,settings:p,resolvedTheme:S}}function d(){n={...n,resolvedTheme:o(n.mode,n.settings)},a()}const h={getState(){return n},setMode(m){n={...n,mode:m},d(),h.apply()},updateSettings(m){n={...n,settings:{...n.settings,...m}},d(),h.apply()},apply(){Ar(n.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const m=window.matchMedia("(prefers-color-scheme: dark)"),b=()=>{n.mode==="system"&&(d(),h.apply())};return m.addEventListener("change",b),s=()=>m.removeEventListener("change",b),s}};return h}function Hr({store:e,brandConfig:t,children:n}){const s=w.useRef(null);return s.current||(s.current=Lr(e,t),s.current.apply()),w.useEffect(()=>s.current.listen(),[]),i.jsx(i.Fragment,{children:n})}const Ur={get(e){var t;try{return((t=globalThis.localStorage)==null?void 0:t.getItem(e))??null}catch{return null}},set(e,t){var n;try{(n=globalThis.localStorage)==null||n.setItem(e,t)}catch{}}};function Kr({children:e}){return i.jsx(Hr,{store:Ur,children:i.jsx(_s,{client:nr,children:e})})}const Vr="_btn_1oc6k_4",Gr="_secondary_1oc6k_47",Xr="_outline_1oc6k_56",Yr="_ghost_1oc6k_65",Jr="_destructive_1oc6k_75",Qr="_iconOnly_1oc6k_85",Zr="_loadingSpinner_1oc6k_92",eo="_piSpin_1oc6k_1",et={btn:Vr,default:"_default_1oc6k_38",secondary:Gr,outline:Xr,ghost:Yr,destructive:Jr,iconOnly:Qr,loadingSpinner:Zr,piSpin:eo},Vt={xs:28,sm:32,md:36,lg:40},to={xs:12,sm:14,md:16,lg:20},Gt={xs:8,sm:10,md:12,lg:16},no={xs:"var(--pi-font-size-xs)",sm:"var(--pi-font-size-sm)",md:"var(--pi-font-size-md)",lg:"var(--pi-font-size-base)"};function so(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}function V({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:r,trailing:o,iconOnly:a=!1,children:c,style:d,className:h,...m}){const{opacity:b}=so({disabled:s??!1,loading:n}),f=s||n,p=to[t];return i.jsxs("button",{className:z(et.btn,et[e],a&&et.iconOnly,h),disabled:f,"aria-busy":n||void 0,style:{minHeight:Vt[t],paddingLeft:a?void 0:Gt[t],paddingRight:a?void 0:Gt[t],fontSize:no[t],opacity:b,...a?{width:Vt[t]}:{},...d},...m,children:[n?i.jsx(bs,{className:et.loadingSpinner,size:p,"aria-hidden":!0}):r?i.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r}):null,c,o&&!n&&i.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o})]})}const ro="_input_756jo_3",oo="_textarea_756jo_32",It={input:ro,textarea:oo},lt=w.forwardRef(function({className:t,...n},s){return i.jsx("input",{ref:s,className:z(It.input,t),...n})}),Cf=w.forwardRef(function({className:t,...n},s){return i.jsx("textarea",{ref:s,className:z(It.input,It.textarea,t),...n})}),Bn=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const Ve=_n([$(),Bn]),ao=be(["mobile","browser","cli","mcp"]),io=u({type:x("hello"),clientId:l(),clientType:ao,protocolVersion:$(),appVersion:l().optional(),capabilities:ce(l(),A()).optional()}),co=u({status:x("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),capabilities:ce(l(),H()),features:ce(l(),H())}),lo=u({type:x("status"),payload:co}),uo=u({type:x("ping"),requestId:l(),clientSentAt:Ve.optional()}),fo=u({type:x("pong"),requestId:l(),clientSentAt:Ve.optional(),serverReceivedAt:Ve,serverSentAt:Ve}),Dn=be(["initializing","idle","running","error","closed"]),ut=u({mimeType:l().optional(),data:l().optional()}).passthrough(),po=u({prs:U(H()).optional(),issues:U(H()).optional()}).passthrough(),ho=u({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:ce(l(),H()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:A().optional(),webSearch:A().optional(),extra:u({pi:H().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:ce(l(),H()).optional()}),mo=u({type:x("create_agent_request"),requestId:l(),config:ho,env:ce(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:ce(l(),H()).optional(),images:U(ut).optional(),attachments:po.optional(),git:H().optional(),worktree:H().optional(),autoArchive:A().optional(),labels:ce(l(),l()).default({})}),go=u({type:x("create_agent_response"),requestId:l(),payload:u({agentId:l()}).passthrough()}),_o=u({type:x("agent_update"),agentId:l(),status:Dn.optional(),title:l().nullable().optional(),labels:ce(l(),l()).optional()}),yo=u({type:x("agent_status"),agentId:l(),status:Dn}),wo=u({type:x("agent_list"),agents:U(u({id:l()}).passthrough())}),bo=u({type:x("agent_deleted"),agentId:l()}),xo=u({type:x("agent_archived"),agentId:l(),archivedAt:Bn.optional()}),An=dt("kind",[u({kind:x("shell"),command:l().optional(),output:l().optional()}),u({kind:x("read"),path:l().optional(),output:l().optional()}),u({kind:x("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),u({kind:x("write"),path:l().optional(),output:l().optional()}),u({kind:x("search"),query:l().optional(),output:l().optional()}),u({kind:x("fetch"),url:l().optional(),output:l().optional()}),u({kind:x("task"),description:l().optional(),output:l().optional()})]),So=dt("kind",[u({kind:x("user_message"),messageId:l().optional(),text:l().optional(),images:U(ut).optional()}),u({kind:x("assistant_message"),messageId:l().optional(),text:l().optional(),final:A().optional()}),u({kind:x("reasoning"),text:l().optional(),final:A().optional()}),u({kind:x("tool_call"),callId:l().optional(),tool:An,status:l().optional()}),u({kind:x("turn_started"),turnId:l().optional()}),u({kind:x("turn_completed"),turnId:l().optional()}),u({kind:x("turn_failed"),turnId:l().optional(),error:l().optional()}),u({kind:x("turn_canceled"),turnId:l().optional()}),u({kind:x("error"),message:l().optional()}),u({kind:x("queue_update"),steering:U(l()).optional(),followUp:U(l()).optional()})]),vo=u({type:x("agent_stream"),agentId:l(),seq:$().optional(),timestamp:Ve.optional(),event:So}),ko=be(["before","after"]),Io=u({start:$(),end:$()}),jo=u({type:x("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:ko,limit:$().optional()}),Co=u({type:x("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:U(H()),seqStart:$(),seqEnd:$(),sourceSeqRanges:U(Io),collapsed:A(),hasNewer:A(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),To=u({type:x("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:An.optional(),action:H().optional(),responses:U(l()).optional()}),Eo=u({type:x("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),Ro=u({type:x("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:H()}),No=u({type:x("agent.permission.respond.response"),requestId:l(),payload:u({resolved:A()}).passthrough()}),qo=u({type:x("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:H()}),$n=be(["conversation","files","both"]),Mo=u({type:x("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:$n}).passthrough(),Bo=u({type:x("agent.rewind.response"),requestId:l(),payload:u({agentId:l(),messageId:l(),mode:$n,truncatedAt:l().optional()}).passthrough()}).passthrough(),Do=u({input:$().optional(),output:$().optional(),cacheRead:$().optional(),cacheWrite:$().optional(),total:$().optional()}).passthrough(),Ao=u({tokens:$().nullable().optional(),contextWindow:$().optional(),percent:$().nullable().optional()}).passthrough(),$o=u({type:x("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),zo=u({type:x("agent_session_stats_response"),requestId:l(),payload:u({sessionId:l().optional(),sessionFile:l().optional(),userMessages:$().optional(),assistantMessages:$().optional(),toolCalls:$().optional(),toolResults:$().optional(),totalMessages:$().optional(),tokens:Do.optional(),cost:$().optional(),contextUsage:Ao.optional(),model:l().optional()}).passthrough()}).passthrough(),Po=u({type:x("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),Oo=u({type:x("agent_compact_response"),requestId:l(),payload:u({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:$().optional(),details:H().optional()}).passthrough()}).passthrough(),Fo=u({type:x("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),Wo=u({type:x("agent_new_session_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),Lo=u({type:x("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),Ho=u({type:x("agent_switch_session_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),Uo=u({type:x("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),Ko=u({type:x("agent_fork_response"),requestId:l(),payload:u({text:l(),cancelled:A()}).passthrough()}).passthrough(),Vo=u({type:x("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),Go=u({type:x("agent_fork_messages_response"),requestId:l(),payload:u({messages:U(u({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),Xo=u({type:x("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),Yo=u({type:x("agent_clone_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),Jo=u({type:x("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),Qo=u({type:x("agent_set_session_name_response"),requestId:l(),payload:u({}).passthrough().optional()}).passthrough(),Zo=u({type:x("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),ea=u({type:x("agent_export_html_response"),requestId:l(),payload:u({path:l()}).passthrough()}).passthrough(),ta=u({type:x("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),na=u({type:x("agent_set_model_response"),requestId:l(),payload:u({}).passthrough()}).passthrough(),sa=u({type:x("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),ra=u({type:x("agent_cycle_model_response"),requestId:l(),payload:u({model:H().nullable().optional(),thinkingLevel:l().optional(),isScoped:A().optional()}).passthrough()}).passthrough(),oa=u({type:x("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),aa=u({type:x("agent_last_assistant_text_response"),requestId:l(),payload:u({text:l().nullable()}).passthrough()}).passthrough(),ia=u({type:x("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:U(ut).optional(),clientMessageId:l().optional()}).passthrough(),ca=u({type:x("steer_agent_response"),requestId:l(),agentId:l(),ok:A()}).passthrough(),la=u({type:x("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:U(ut).optional(),clientMessageId:l().optional()}).passthrough(),da=u({type:x("follow_up_agent_response"),requestId:l(),agentId:l(),ok:A()}).passthrough(),ua=u({name:l(),id:l().optional(),description:l().optional(),source:be(["extension","prompt","skill"]).optional(),scope:be(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),fa=u({type:x("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),pa=u({type:x("agent_list_commands_response"),requestId:l(),payload:u({commands:U(ua)}).passthrough()}).passthrough(),ha=u({type:x("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),ma=dt("type",[mo,go,_o,yo,wo,bo,xo,vo,jo,Co,To,Eo,Ro,No,qo,Mo,Bo,$o,zo,Po,Oo,Fo,Wo,Lo,Ho,Uo,Ko,Vo,Go,Xo,Yo,Jo,Qo,Zo,ea,ta,na,sa,ra,oa,aa,ia,ca,la,da,fa,pa,ha]),ga=u({type:l()}).passthrough(),_a=u({type:x("session"),message:_n([ma,ga])});dt("type",[io,lo,uo,fo,_a]);const ya={inline_image_markdown:"inline_image_markdown"},Te={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},wa=Object.fromEntries(Object.entries(Te).map(([e,t])=>[t,e])),zn=u({rows:$().int().nonnegative(),cols:$().int().nonnegative()});class He extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const ba=new TextEncoder,xa=new TextDecoder;function Sa(e){if(!Number.isInteger(e)||e<0||e>255)throw new He(`slot must be an integer 0–255, got ${e}`)}function Fe(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function Tf(e){switch(Sa(e.slot),e.opcode){case"Output":return Fe(Te.Output,e.slot,e.data);case"Input":return Fe(Te.Input,e.slot,e.data);case"Snapshot":return Fe(Te.Snapshot,e.slot,e.data);case"Restore":return Fe(Te.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(zn.parse({rows:e.rows,cols:e.cols}));return Fe(Te.Resize,e.slot,ba.encode(t))}}}function va(e){if(e.length<2)throw new He(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=wa[t];if(!s)throw new He(`unknown terminal opcode 0x${t.toString(16)}`);const r=e.subarray(2);if(s==="Resize"){let o;try{o=JSON.parse(xa.decode(r))}catch{throw new He("resize payload is not valid JSON")}const a=zn.safeParse(o);if(!a.success)throw new He("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:a.data.rows,cols:a.data.cols}}return{opcode:s,slot:n,data:r.slice()}}const Ne={Begin:16,Chunk:17,End:18,Error:19},ka=Object.fromEntries(Object.entries(Ne).map(([e,t])=>[t,e])),Pn=u({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:$().int().nonnegative().optional()});class Ue extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const Xt=new TextEncoder,Yt=new TextDecoder;function Ia(e){if(!Number.isInteger(e)||e<0||e>255)throw new Ue(`stream must be an integer 0–255, got ${e}`)}function tt(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function gt(e){switch(Ia(e.stream),e.opcode){case"Begin":return tt(Ne.Begin,e.stream,Xt.encode(JSON.stringify(Pn.parse(e.meta))));case"Chunk":return tt(Ne.Chunk,e.stream,e.data);case"End":return tt(Ne.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return tt(Ne.Error,e.stream,Xt.encode(e.message))}}function ja(e){if(e.length<2)throw new Ue(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=ka[t];if(!s)throw new Ue(`unknown file-transfer opcode 0x${t.toString(16)}`);const r=e.subarray(2);switch(s){case"Begin":{let o;try{o=JSON.parse(Yt.decode(r))}catch{throw new Ue("begin payload is not valid JSON")}const a=Pn.safeParse(o);if(!a.success)throw new Ue("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:a.data}}case"Chunk":return{opcode:"Chunk",stream:n,data:r.slice()};case"End":return{opcode:"End",stream:n,ok:(r[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:Yt.decode(r)}}}function Ca(e){try{return ja(e)}catch{return null}}const Ee=256;function Ta(e,t=0){const n=(t%Ee+Ee)%Ee;for(let s=0;s<Ee;s++){const r=(n+s)%Ee;if(!e.has(r))return r}return null}const Ea=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),Ra=be(["safe","moderate","dangerous","planning"]),Na=u({supportsStreaming:A(),supportsSessionPersistence:A(),supportsDynamicModes:A(),supportsMcpServers:A(),supportsReasoningStream:A(),supportsToolInvocations:A(),supportsRewindConversation:A().optional(),supportsRewindFiles:A().optional(),supportsRewindBoth:A().optional(),supportsSteering:A().optional()}).passthrough(),qa=u({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:Ra});u({id:Ea,label:l(),description:l().optional(),extends:l().optional(),modes:U(qa),capabilities:Na});function jt(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function On(e){let t=null;const n={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1},connect(s){return new Promise((r,o)=>{const a=e??(()=>new WebSocket(s));try{t=e?a(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(c){o(c);return}t.onopen=()=>r(),t.onerror=c=>{var d;(t==null?void 0:t.readyState)!==1&&o(c),(d=n.onError)==null||d.call(n,c)},t.onclose=c=>{var d;(d=n.onClose)==null||d.call(n,c.code,jt(c.reason))},t.onmessage=c=>{var h,m,b,f;const{data:d}=c;d instanceof ArrayBuffer||d instanceof Uint8Array?(h=n.onMessage)==null||h.call(n,d):typeof d=="string"?(m=n.onMessage)==null||m.call(n,d):typeof Blob<"u"&&d instanceof Blob?(b=n.onMessage)==null||b.call(n,d):Buffer.isBuffer(d)&&((f=n.onMessage)==null||f.call(n,d.buffer.slice(d.byteOffset,d.byteOffset+d.byteLength)))}})},sendText(s){t==null||t.send(s)},sendBinary(s){t==null||t.send(s)},close(s=1e3,r=""){t==null||t.close(s,r),t=null}};return n}const Ke="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Fn(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],r=n+1<e.length,o=n+2<e.length,a=r?e[n+1]:0,c=o?e[n+2]:0;t+=Ke[s>>2],t+=Ke[(s&3)<<4|a>>4],t+=r?Ke[(a&15)<<2|c>>6]:"=",t+=o?Ke[c&63]:"="}return t}function Wn(e){const t=e.replace(/=+$/,""),n=[];let s=0,r=0;for(const o of t){const a=Ke.indexOf(o);if(a===-1)throw new Error(`invalid base64 character: ${JSON.stringify(o)}`);s=s<<6|a,r+=6,r>=8&&(r-=8,n.push(s>>r&255))}return new Uint8Array(n)}function Ma(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const ot=24;function Ln(e,t){const n=qe.randomBytes(ot),s=qe.box.after(e,n,t),r=new Uint8Array(n.length+s.length);return r.set(n,0),r.set(s,n.length),Fn(r)}function Hn(e,t){let n;try{n=Wn(e)}catch{return null}if(n.length<ot)return null;const s=n.slice(0,ot),r=n.slice(ot);return qe.box.open.after(r,s,t)}function Ba(e,t){return Ln(new TextEncoder().encode(e),t)}function Da(e,t){const n=Hn(e,t);return n?new TextDecoder().decode(n):null}function Aa(e,t,n,s,r,o){let a=!1;return n.onClose(c=>{var d;a=!0,(d=s.onClose)==null||d.call(s,c)}),{handleAppFrame(c){var m,b;if(a)return;const d=r();if(!o()||!d)return;const h=Da(c.frame,d);if(h===null){(m=s.onAuthError)==null||m.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(b=s.onMessage)==null||b.call(s,h)},handleBinaryFrame(c){var m,b;if(a)return;const d=r();if(!o()||!d)return;const h=Hn(c.frame,d);if(h===null){(m=s.onAuthError)==null||m.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(b=s.onBinaryMessage)==null||b.call(s,h)},send(c){if(a)throw new Error(`relay ${e} channel: cannot send after close()`);const d=r();if(!o()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_app",frame:Ba(c,d)}))},sendBinary(c){if(a)throw new Error(`relay ${e} channel: cannot send after close()`);const d=r();if(!o()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_bin",frame:Ln(c,d)}))},close(){a||(a=!0,n.close())}}}function $a(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,r=e.events??{},o=qe.box.keyPair(),a=qe.box.before(s,o.secretKey);let c=!1;const d=Aa("client",n,t,r,()=>a,()=>c);return t.onMessage(h=>{var b;const m=Ma(h);if(m){if(m.type==="e2ee_ready"){if(c)return;c=!0,(b=r.onReady)==null||b.call(r);return}if(m.type==="e2ee_app"){d.handleAppFrame(m);return}m.type==="e2ee_bin"&&d.handleBinaryFrame(m)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:Fn(o.publicKey)})),{role:"client",attachment:n,get ready(){return c},send:d.send,sendBinary:d.sendBinary,close:d.close}}const za=16;function Pa(e){const t=qe.hash(e);let n="";for(let s=0;s<za;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Oa(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function Fa(e){let t=null,n=null;const s=e.sessionId??Pa(e.daemonPublicKey),r={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},connect(o){return new Promise((a,c)=>{const d=e.factory??(()=>new WebSocket(o));try{t=e.factory?d(o):new WebSocket(o)}catch(f){c(f);return}const h=t,m=[],b=[];h.onopen=()=>{h.send(JSON.stringify({type:"relay_register",sessionId:s})),n=$a({transport:{send:f=>h.send(f),onMessage:f=>m.push(f),onClose:f=>b.push(f),close:()=>h.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>a(),onMessage:f=>{var p;return(p=r.onMessage)==null?void 0:p.call(r,f)},onBinaryMessage:f=>{var p;return(p=r.onMessage)==null?void 0:p.call(r,f.slice().buffer)},onAuthError:f=>{var p;return(p=r.onError)==null?void 0:p.call(r,f)}}})},h.onerror=f=>{var p;h.readyState!==1&&c(f),(p=r.onError)==null||p.call(r,f)},h.onclose=f=>{var p;for(const S of b)S(jt(f.reason));(p=r.onClose)==null||p.call(r,f.code,jt(f.reason))},h.onmessage=f=>{const{data:p}=f;if(typeof p=="string")for(const S of m)S(p)}})},sendText(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(o)},sendBinary(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(o)},close(o=1e3,a=""){n==null||n.close(),n=null,t==null||t.close(o,a),t=null}};return r}function Wa(e){const t=e.indexOf("#"),n=t===-1?e:e.slice(t+1),s=new URLSearchParams(n),r=s.get("offer");if(!r)return null;let o;try{o=Wn(r)}catch{return null}const a=s.get("relay");if(a){const d={endpoint:a,useTls:s.get("relayTls")==="1"};return{publicKeyB64:r,publicKey:o,relay:d}}const c=s.get("host")??void 0;return{publicKeyB64:r,publicKey:o,...c?{host:c}:{}}}const La=1;function Ct(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class Ha extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class Jt extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class Ua{constructor(t){R(this,"transport");R(this,"rpcTimeoutMs");R(this,"now");R(this,"_state","idle");R(this,"_serverId",null);R(this,"_features",{});R(this,"_serverCapabilities",{});R(this,"pending",new Map);R(this,"sessionHandlers",new Set);R(this,"terminalHandlers",new Set);R(this,"fileTransferHandlers",new Set);R(this,"stateHandlers",new Set);R(this,"helloResolve",null);R(this,"helloReject",null);this.options=t,this.transport=t.transport??On(),this.rpcTimeoutMs=t.rpcTimeoutMs??3e4,this.now=t.now??(()=>Date.now()),this.transport.onMessage=n=>this.handleIncoming(n),this.transport.onClose=(n,s)=>this.handleClose(n,s),this.transport.onError=()=>{}}get state(){return this._state}get serverId(){return this._serverId}get features(){return this._features}get serverCapabilities(){return this._serverCapabilities}hasFeature(t){return!!this._features[t]}async connect(){this.setState("connecting"),await this.transport.connect(this.options.url);const t=new Promise((s,r)=>{this.helloResolve=s,this.helloReject=r});this.transport.sendText(JSON.stringify({type:"hello",clientId:this.options.clientId,clientType:this.options.clientType,protocolVersion:this.options.protocolVersion??La,appVersion:this.options.appVersion,capabilities:this.options.capabilities}));const n=await t;return this._serverId=n.serverId,this._features=n.features,this._serverCapabilities=n.capabilities,this.setState("open"),n}close(t=1e3,n=""){this.setState("closing"),this.transport.close(t,n)}request(t,n={},s){const r=n.requestId??Ct();return new Promise((o,a)=>{const c=s??this.rpcTimeoutMs,d=c>0?setTimeout(()=>{this.pending.delete(r),a(new Jt(r))},c):null;this.pending.set(r,{resolve:h=>o(h),reject:a,timer:d}),this.sendSession({type:t,...n,requestId:r})})}sendSession(t){this.transport.sendText(JSON.stringify({type:"session",message:t}))}sendBinary(t){this.transport.sendBinary(t)}ping(t=1e4){const n=Ct();return new Promise((s,r)=>{const o=t>0?setTimeout(()=>{this.pending.delete(n),r(new Jt(n))},t):null;this.pending.set(n,{resolve:()=>s(),reject:r,timer:o}),this.transport.sendText(JSON.stringify({type:"ping",requestId:n,clientSentAt:this.now()}))})}onSessionMessage(t){return this.sessionHandlers.add(t),()=>this.sessionHandlers.delete(t)}onTerminalFrame(t){return this.terminalHandlers.add(t),()=>this.terminalHandlers.delete(t)}onFileTransferFrame(t){return this.fileTransferHandlers.add(t),()=>this.fileTransferHandlers.delete(t)}onStateChange(t){return this.stateHandlers.add(t),()=>this.stateHandlers.delete(t)}setState(t){if(this._state!==t){this._state=t;for(const n of this.stateHandlers)n(t)}}handleClose(t,n){this.helloReject&&(this.helloReject(new Error(`socket closed during handshake: ${n}`)),this.helloResolve=null,this.helloReject=null);for(const[,s]of this.pending)s.timer&&clearTimeout(s.timer),s.reject(new Error(`socket closed: ${n}`));this.pending.clear(),this.setState("closed")}handleIncoming(t){if(typeof t=="string"){this.handleTextFrame(t);return}if(t instanceof ArrayBuffer){this.handleBinaryFrame(new Uint8Array(t));return}typeof t.arrayBuffer=="function"&&t.arrayBuffer().then(n=>this.handleBinaryFrame(new Uint8Array(n)))}handleBinaryFrame(t){const n=t[0];if(n!==void 0&&Object.values(Ne).includes(n)){const o=Ca(t);if(!o)return;for(const a of this.fileTransferHandlers)a(o);return}const r=va(t);for(const o of this.terminalHandlers)o(r)}handleTextFrame(t){let n;try{n=JSON.parse(t)}catch{return}const s=n;switch(s.type){case"status":this.handleStatus(s);return;case"pong":this.resolvePending(s.requestId,void 0);return;case"ping":this.transport.sendText(JSON.stringify({type:"pong",requestId:s.requestId,serverReceivedAt:this.now(),serverSentAt:this.now()}));return;case"session":this.handleSession(s.message);return;default:return}}handleStatus(t){const n=t.payload;(n==null?void 0:n.status)==="server_info"&&this.helloResolve&&(this.helloResolve(n),this.helloResolve=null,this.helloReject=null)}handleSession(t){if(!t||typeof t!="object")return;const n=t;if(n.type==="rpc_error"&&typeof n.requestId=="string"){const s=this.pending.get(n.requestId);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(n.requestId),s.reject(new Ha(n.message??n.error??"RPC failed",n.requestId,n.code)));return}if(typeof n.requestId=="string"&&this.pending.has(n.requestId)){const s="payload"in n?n.payload:n;this.resolvePending(n.requestId,s)}for(const s of this.sessionHandlers)s(t)}resolvePending(t,n){const s=this.pending.get(t);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(t),s.resolve(n))}}class Ka{constructor(t){this.daemon=t}get connection(){return this.daemon}async createAgent(t){return await this.daemon.request("create_agent_request",{...t})}agent(t){return new Ga(this.daemon,t)}workspace(t){return new Xa(this.daemon,t)}get providers(){return new Ya(this.daemon)}onAgentUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="agent_update"&&t(n)})}onWorkspaceUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="workspace_update"&&t(n)})}}class Va{constructor(t,n){this.daemon=t,this.agentId=n}fetch(t={}){return this.daemon.request("fetch_agent_timeline_request",{agentId:this.agentId,cursor:t.cursor,direction:t.direction,limit:t.limit})}subscribe(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="agent_stream"&&s.agentId===this.agentId&&s.event&&t(s.event)})}}class Ga{constructor(t,n){R(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new Va(t,n)}send(t,n={}){return this.daemon.request("send_agent_prompt",{agentId:this.agentId,prompt:t,clientMessageId:n.clientMessageId,images:n.images})}run(t,n){return this.send(t,n)}interrupt(){return this.daemon.request("interrupt_agent",{agentId:this.agentId})}steer(t,n={}){return this.daemon.request("steer_agent_request",{agentId:this.agentId,message:t,clientMessageId:n.clientMessageId,images:n.images})}followUp(t,n={}){return this.daemon.request("follow_up_agent_request",{agentId:this.agentId,message:t,clientMessageId:n.clientMessageId,images:n.images})}update(t){return this.daemon.request("update_agent",{agentId:this.agentId,...t})}resume(){return this.daemon.request("resume_agent",{agentId:this.agentId})}archive(){return this.daemon.request("archive_agent",{agentId:this.agentId})}delete(){return this.daemon.request("delete_agent",{agentId:this.agentId})}onUpdate(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="agent_update"&&s.agentId===this.agentId&&t(s)})}sessionStats(){return this.daemon.request("agent_session_stats_request",{agentId:this.agentId})}compact(t){return this.daemon.request("agent_compact_request",{agentId:this.agentId,customInstructions:t})}newSession(){return this.daemon.request("agent_new_session_request",{agentId:this.agentId})}switchSession(t){return this.daemon.request("agent_switch_session_request",{agentId:this.agentId,sessionPath:t})}fork(t){return this.daemon.request("agent_fork_request",{agentId:this.agentId,entryId:t})}forkMessages(){return this.daemon.request("agent_fork_messages_request",{agentId:this.agentId})}clone(){return this.daemon.request("agent_clone_request",{agentId:this.agentId})}setSessionName(t){return this.daemon.request("agent_set_session_name_request",{agentId:this.agentId,name:t})}exportHtml(t){return this.daemon.request("agent_export_html_request",{agentId:this.agentId,outputPath:t})}setModel(t,n){return this.daemon.request("agent_set_model_request",{agentId:this.agentId,provider:t,modelId:n})}cycleModel(){return this.daemon.request("agent_cycle_model_request",{agentId:this.agentId})}lastAssistantText(){return this.daemon.request("agent_last_assistant_text_request",{agentId:this.agentId})}listCommands(){return this.daemon.request("agent_list_commands_request",{agentId:this.agentId})}}class Xa{constructor(t,n){this.daemon=t,this.workspaceId=n}onUpdate(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="workspace_update"&&s.workspaceId===this.workspaceId&&t(s)})}}class Ya{constructor(t){this.daemon=t}listProviders(){return this.daemon.request("list_providers",{})}listModels(t){return this.daemon.request("list_provider_models",{provider:t})}listModes(t){return this.daemon.request("list_provider_modes",{provider:t})}resolveDefaultModel(t,n){return this.daemon.request("resolve_default_model",{provider:t,...n?{cwd:n}:{}})}refreshSnapshot(){return this.daemon.request("providers.snapshot.refresh.request",{})}}const Qt=32*1024,Ja="invalid_or_expired_token";function Qa(e){const t=e.reduce((r,o)=>r+o.length,0),n=new Uint8Array(t);let s=0;for(const r of e)n.set(r,s),s+=r.length;return n}class Za{constructor(t){R(this,"pending",new Map);R(this,"streamCursor",1);R(this,"detach",null);this.daemon=t}start(){this.detach||(this.detach=this.daemon.onFileTransferFrame(t=>this.dispatch(t)))}stop(){var t;(t=this.detach)==null||t.call(this),this.detach=null;for(const[n,s]of this.pending)s.reject(new Error("file transfer router stopped")),this.pending.delete(n)}async download(t){try{return await this.attemptDownload(t)}catch(n){if(!(n instanceof Error)||n.message!==Ja)throw n;return await this.attemptDownload(t)}}async attemptDownload(t){const n=await this.daemon.request("file_download_token_request",{path:t});if(!n.ok||!n.token)throw new Error(n.error??"failed to issue download token");const s=Ta(this.pending,this.streamCursor);if(s===null)throw new Error("no free download stream");this.streamCursor=(s+1)%Ee;const r=new Promise((a,c)=>{this.pending.set(s,{chunks:[],meta:{},resolve:a,reject:c})});let o;try{o=await this.daemon.request("file_download_request",{token:n.token,stream:s})}catch(a){throw this.pending.delete(s),a}if(!o.ok)throw this.pending.delete(s),new Error(o.error??"download request failed");return r}async upload(t,n){const s=Ct(),r=await this.daemon.request("file_upload_request",{path:t,transferId:s});if(!r.ok||r.stream===void 0)throw new Error(r.error??"upload request failed");const o=r.stream;this.daemon.sendBinary(gt({opcode:"Begin",stream:o,meta:{transferId:s}}));for(let a=0;a<n.length;a+=Qt){const c=n.subarray(a,a+Qt);this.daemon.sendBinary(gt({opcode:"Chunk",stream:o,data:c}))}this.daemon.sendBinary(gt({opcode:"End",stream:o,ok:!0}))}dispatch(t){const n=this.pending.get(t.stream);if(n)switch(t.opcode){case"Begin":n.meta.fileName=t.meta.fileName,n.meta.mimeType=t.meta.mimeType;return;case"Chunk":n.chunks.push(t.data);return;case"End":this.pending.delete(t.stream),t.ok?n.resolve({bytes:Qa(n.chunks),...n.meta}):n.reject(new Error("download failed"));return;case"Error":this.pending.delete(t.stream),n.reject(new Error(t.message));return}}}class ei{constructor(t,n={}){R(this,"initialDelayMs");R(this,"maxDelayMs");R(this,"factor");R(this,"jitter");R(this,"maxAttempts");R(this,"setTimer");R(this,"clearTimer");R(this,"random");R(this,"attempt",0);R(this,"timer",null);R(this,"active",!1);R(this,"detachState",null);R(this,"reconnectedHandlers",new Set);R(this,"failedHandlers",new Set);this.daemon=t,this.initialDelayMs=n.initialDelayMs??500,this.maxDelayMs=n.maxDelayMs??3e4,this.factor=n.factor??2,this.jitter=n.jitter??.2,this.maxAttempts=n.maxAttempts??Number.POSITIVE_INFINITY,this.setTimer=n.setTimer??((s,r)=>setTimeout(s,r)),this.clearTimer=n.clearTimer??(s=>clearTimeout(s)),this.random=n.random??Math.random}delayForAttempt(t){const n=Math.min(this.maxDelayMs,this.initialDelayMs*this.factor**(t-1)),s=n*this.jitter*(this.random()*2-1);return Math.max(0,Math.round(n+s))}onReconnected(t){return this.reconnectedHandlers.add(t),()=>this.reconnectedHandlers.delete(t)}onReconnectFailed(t){return this.failedHandlers.add(t),()=>this.failedHandlers.delete(t)}start(){this.active||(this.active=!0,this.detachState=this.daemon.onStateChange(t=>{t==="closed"&&this.active&&this.scheduleReconnect(),t==="open"&&(this.attempt=0)}))}stop(){var t;this.active=!1,this.timer&&this.clearTimer(this.timer),this.timer=null,(t=this.detachState)==null||t.call(this),this.detachState=null}get attemptCount(){return this.attempt}scheduleReconnect(){if(!this.active||this.attempt>=this.maxAttempts)return;this.attempt+=1;const t=this.delayForAttempt(this.attempt);this.timer=this.setTimer(()=>{this.timer=null,this.tryReconnect()},t)}async tryReconnect(){if(!this.active)return;const t=this.attempt;try{await this.daemon.connect();for(const n of this.reconnectedHandlers)n({attempt:t,serverId:this.daemon.serverId})}catch(n){for(const s of this.failedHandlers)s(n,t);this.scheduleReconnect()}}}function Zt(e){const t=e.trim();if(t==="")return t;const n=t.match(/^([a-z][a-z0-9+.-]*):\/\//i);if(!n)return`ws://${t.replace(/\/+$/,"")}`;const s=n[1].toLowerCase(),r=t.slice(n[0].length).replace(/\/+$/,"");switch(s){case"http":return`ws://${r}`;case"https":return`wss://${r}`;case"ws":case"wss":return`${s}://${r}`;default:return t}}function ti(e){const t=Wa(e);return t!=null&&t.relay?{mode:"relay",url:Oa(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:Zt(t.host)}:{mode:"direct",url:Zt(e)}}const ni=32,X=new Map;function si(){for(;X.size>ni;){let e=null;for(const[t,n]of X)if(n.refs===0&&n.entry){URL.revokeObjectURL(n.entry.objectUrl),e=t;break}if(e===null)return;X.delete(e)}}function Ef(e,t){const n=X.get(e);if(n)return n.refs+=1,X.delete(e),X.set(e,n),n.entry?Promise.resolve(n.entry):n.pending;const s={refs:1,entry:null,pending:null};return X.set(e,s),si(),s.pending=t(e).then(r=>{const o=new Blob([Uint8Array.from(r.bytes)],{type:r.mimeType||"application/octet-stream"}),a={objectUrl:URL.createObjectURL(o),mimeType:r.mimeType};return X.get(e)===s?(s.entry=a,s.pending=null):URL.revokeObjectURL(a.objectUrl),a}).catch(r=>{throw X.get(e)===s&&X.delete(e),r}),s.pending}function Rf(e){const t=X.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function ri(){for(const e of X.values())e.entry&&URL.revokeObjectURL(e.entry.objectUrl);X.clear()}function oi(){return"web-"+Math.random().toString(36).slice(2,10)}const q=Se()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=ti(n.url);let r;s.mode==="relay"?r=Fa({daemonPublicKey:s.daemonPublicKey}):n.password&&(r=On(d=>new WebSocket(d,[`pi-studio.bearer.${n.password}`])));const o=new Ua({url:s.url,clientId:n.clientId??oi(),clientType:"browser",capabilities:{[ya.inline_image_markdown]:!0},transport:r,rpcTimeoutMs:1800*1e3}),a=new Ka(o),c=new ei(o);o.onStateChange(d=>e({status:d})),c.onReconnected(()=>e({error:null})),c.onReconnectFailed(d=>{e({error:d instanceof Error?d.message:String(d)})}),e({daemon:o,client:a,reconnection:c,error:null,status:"connecting"});try{const d=await o.connect();e({serverInfo:d}),c.start()}catch(d){throw e({error:d instanceof Error?d.message:String(d)}),d}},disconnect(){const{daemon:n,reconnection:s}=t();s==null||s.stop(),n==null||n.close(),ri(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}})),ai=100,ii=480,ci=220,li=280;function nt(e){return Math.min(ii,Math.max(ai,e))}const j=Se()(e=>({host:"ws://127.0.0.1:6767",password:"",cwd:"~",cwdPickerOpen:!1,sessionMenu:null,workspaceMenu:null,fileMenu:null,rightSidebarTab:"files",collapsedWorkspaces:new Set,leftSidebarCollapsed:!1,rightSidebarCollapsed:!1,leftSidebarWidth:ci,rightSidebarWidth:li,setHost:t=>e({host:t}),setPassword:t=>e({password:t}),setCwd:t=>e({cwd:t}),openCwdPicker:()=>e({cwdPickerOpen:!0}),closeCwdPicker:()=>e({cwdPickerOpen:!1}),openSessionMenu:(t,n,s)=>e({sessionMenu:{sessionId:t,x:n,y:s}}),closeSessionMenu:()=>e({sessionMenu:null}),openWorkspaceMenu:(t,n,s)=>e({workspaceMenu:{cwd:t,x:n,y:s}}),closeWorkspaceMenu:()=>e({workspaceMenu:null}),openFileMenu:(t,n,s,r,o)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:r,background:o}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),setCollapsedWorkspaces:t=>e({collapsedWorkspaces:t}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:nt(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:nt(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:nt(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:nt(n.rightSidebarWidth+t)}))})),di="_wrap_aquqo_1",ui="_dot_aquqo_8",fi="_open_aquqo_15",pi="_connecting_aquqo_18",hi="_closed_aquqo_21",mi="_idle_aquqo_22",gi="_closing_aquqo_23",_t={wrap:di,dot:ui,open:fi,connecting:pi,closed:hi,idle:mi,closing:gi},_i={idle:"disconnected",connecting:"connecting…",open:"connected",closing:"disconnecting…",closed:"disconnected"};function yi(){const e=q(n=>n.status),t=q(n=>n.error);return i.jsxs("span",{className:_t.wrap,title:t??void 0,children:[i.jsx("span",{className:z(_t.dot,_t[e])}),_i[e]??e]})}const wi="_toolbar_1lcb1_1",bi="_brand_1lcb1_10",xi="_version_1lcb1_16",Si="_sep_1lcb1_22",vi="_host_1lcb1_28",ki="_password_1lcb1_31",Ii="_sidebarToggles_1lcb1_34",me={toolbar:wi,brand:bi,version:xi,sep:Si,host:vi,password:ki,sidebarToggles:Ii};function ji(){const e=q(f=>f.status),t=q(f=>f.connect),n=q(f=>f.disconnect),s=j(f=>f.host),r=j(f=>f.setHost),o=j(f=>f.password),a=j(f=>f.setPassword),c=j(f=>f.leftSidebarCollapsed),d=j(f=>f.toggleLeftSidebar),h=j(f=>f.rightSidebarCollapsed),m=j(f=>f.toggleRightSidebar),b=e==="open"||e==="connecting";return i.jsxs("div",{className:me.toolbar,children:[i.jsx("span",{className:me.brand,children:"Pi-Studio"}),i.jsxs("span",{className:me.version,children:["v","0.0.60"]}),i.jsx(yi,{}),i.jsx("div",{className:me.sep}),i.jsx(lt,{className:me.host,value:s,onChange:f=>r(f.target.value),placeholder:"host:port, ws://…/http://…, or a pasted pairing link",disabled:b}),i.jsx(lt,{className:me.password,type:"password",value:o,onChange:f=>a(f.target.value),placeholder:"password",disabled:b}),e==="open"||e==="connecting"||e==="closing"?i.jsx(V,{size:"sm",onClick:()=>n(),children:"Disconnect"}):i.jsx(V,{size:"sm",variant:"default",onClick:()=>void t({url:s,password:o||void 0}),children:"Connect"}),i.jsxs("div",{className:me.sidebarToggles,children:[i.jsx(V,{size:"sm",variant:"ghost",iconOnly:!0,title:c?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>d(),children:c?i.jsx(xs,{size:16}):i.jsx(Ss,{size:16})}),i.jsx(V,{size:"sm",variant:"ghost",iconOnly:!0,title:h?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>m(),children:h?i.jsx(vs,{size:16}):i.jsx(ks,{size:16})})]})]})}const Tt={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let en=0;function pe(){return en+=1,`row-${en}`}function Ci(e){switch(e.kind){case"shell":return e.command??"";case"read":case"write":return e.path??"";case"edit":return e.path??"";case"search":return e.query??"";case"fetch":return e.url??"";case"task":return e.description??"";default:return""}}function Ti(e,t){return e??`${t.kind}:${Ci(t)}`}function Be(e,t){if(t===null)return;const n=e[t];n&&(n.kind!=="assistant"&&n.kind!=="reasoning"||n.streaming&&(e[t]={...n,streaming:!1}))}function Un(e){if(e.streamingAssistantIndex===null&&e.streamingReasoningIndex===null)return e;const t=e.rows.slice();return Be(t,e.streamingAssistantIndex),Be(t,e.streamingReasoningIndex),{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function Ei(e){return Un(e)}function Ri(e,t,n){var a;const s=e.rows.slice();Be(s,e.streamingReasoningIndex);let r=e.streamingAssistantIndex;if(r===null||((a=s[r])==null?void 0:a.kind)!=="assistant"){if(!t)return{...e,rows:s,streamingAssistantIndex:null,streamingReasoningIndex:null};const c={kind:"assistant",id:pe(),text:"",streaming:!0};s.push(c),r=s.length-1}const o=s[r];return!o||o.kind!=="assistant"?e:(s[r]={...o,text:o.text+t,streaming:!n},{...e,rows:s,streamingAssistantIndex:n?null:r,streamingReasoningIndex:null})}function Ni(e,t,n){var a;const s=e.rows.slice();Be(s,e.streamingAssistantIndex);let r=e.streamingReasoningIndex;if(r===null||((a=s[r])==null?void 0:a.kind)!=="reasoning"){if(!t)return{...e,rows:s,streamingAssistantIndex:null,streamingReasoningIndex:null};const c={kind:"reasoning",id:pe(),text:"",streaming:!0};s.push(c),r=s.length-1}const o=s[r];return!o||o.kind!=="reasoning"?e:(s[r]={...o,text:o.text+t,streaming:!n},{...e,rows:s,streamingReasoningIndex:n?null:r,streamingAssistantIndex:null})}function qi(e,t){if(e.kind!==t.kind)return t;const n={...e};for(const[s,r]of Object.entries(t))r!==void 0&&r!==""&&(n[s]=r);return n}function Mi(e,t){var c;const n=Ti(t.callId,t.tool),s=t.status==="completed"||t.status==="error"?t.status:"running",r=e.toolIndexByCallId[n],o=e.rows.slice();if(Be(o,e.streamingAssistantIndex),Be(o,e.streamingReasoningIndex),r!==void 0&&((c=o[r])==null?void 0:c.kind)==="tool"){const d=o[r];return d.kind!=="tool"?e:(o[r]={...d,tool:qi(d.tool,t.tool),status:s},{...e,rows:o,streamingAssistantIndex:null,streamingReasoningIndex:null})}const a={kind:"tool",id:pe(),callId:n,tool:t.tool,status:s};return o.push(a),{...e,rows:o,toolIndexByCallId:{...e.toolIndexByCallId,[n]:o.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function At(e){return Un(e)}function Bi(e,t){const n=At(e),s={kind:"error",id:pe(),text:t||"turn failed"};return{...n,rows:[...n.rows,s]}}function Di(e){const t=At(e),n={kind:"system",id:pe(),text:"(canceled)"};return{...t,rows:[...t.rows,n]}}function Ai(e,t){const n={kind:"error",id:pe(),text:t||"error"};return{...e,rows:[...e.rows,n]}}function $i(e,t,n,s){if(s!==void 0){const o=e.rows.findIndex(a=>a.kind==="user"&&a.pending&&a.clientMessageId===s);if(o!==-1){const a=e.rows.slice(),c=a[o];if((c==null?void 0:c.kind)==="user")return a[o]={...c,text:t,images:n,pending:!1},{...e,rows:a}}}const r={kind:"user",id:pe(),text:t,images:n,clientMessageId:s};return{...e,rows:[...e.rows,r]}}function zi(e,t){let n=!1;const s=e.rows.map(r=>r.kind!=="user"||!r.queued||t.includes(r.text)?r:(n=!0,{...r,queued:!1}));return n?{...e,rows:s}:e}function Kn(e,t){switch(t.kind){case"turn_started":return Ei(e);case"user_message":return $i(e,t.text??"",t.images,t.messageId);case"assistant_message":return Ri(e,t.text??"",t.final??!1);case"reasoning":return Ni(e,t.text??"",t.final??!1);case"tool_call":return Mi(e,t);case"turn_completed":return At(e);case"turn_failed":return Bi(e,t.error);case"turn_canceled":return Di(e);case"error":return Ai(e,t.message);case"queue_update":return zi(e,t.steering??[]);default:return e}}function Pi(e,t,n,s,r){const o={kind:"user",id:pe(),text:n,images:s,clientMessageId:t,pending:!0,queued:r};return{...e,rows:[...e.rows,o]}}function Oi(e,t){const n=e.rows.findIndex(o=>o.kind==="user"&&o.pending&&o.clientMessageId===t);if(n===-1)return e;const s=e.rows.slice(),r=s[n];return(r==null?void 0:r.kind)!=="user"?e:(s[n]={...r,pending:!1,failed:!0},{...e,rows:s})}let tn=0;function Fi(){return tn+=1,`s-${Date.now().toString(36)}-${tn}`}const N=Se()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=Fi(),r={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:Tt,userMessageCount:0};return e(o=>({sessions:{...o.sessions,[s]:r},order:[s,...o.order],activeSessionId:s})),s},hydrate(n){e(s=>s.sessions[n.id]?s:{sessions:{...s.sessions,[n.id]:n},order:[...s.order,n.id]})},bindAgent(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,agentId:s}}}:r})},setStatus(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,status:s}}}:r})},setStatusByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setStatus(r.id,s)},setModel(n,s,r){e(o=>{const a=o.sessions[n];return a?{sessions:{...o.sessions,[n]:{...a,model:s,modelProvider:r}}}:o})},setModelByAgentId(n,s,r){const o=t().findByAgentId(n);o&&t().setModel(o.id,s,r)},setTitle(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,title:s}}}:r})},setCwd(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,cwd:s}}}:r})},applyStreamEvent(n,s){e(r=>{const o=r.sessions[n];if(!o)return r;const a=Kn(o.timeline,s);let c=o.title;if(s.kind==="turn_completed"&&c==="New chat"){const d=a.rows.slice().reverse().find(h=>h.kind==="assistant");d&&d.kind==="assistant"&&d.text&&(c=d.text.slice(0,40)+(d.text.length>40?"…":""))}return{sessions:{...r.sessions,[n]:{...o,timeline:a,title:c}}}})},addOptimisticUserMessage(n,s,r,o,a){e(c=>{const d=c.sessions[n];if(!d)return c;const h=Pi(d.timeline,s,r,o,a);return{sessions:{...c.sessions,[n]:{...d,timeline:h,userMessageCount:d.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(r=>{const o=r.sessions[n];if(!o)return r;const a=Oi(o.timeline,s);return{sessions:{...r.sessions,[n]:{...o,timeline:a}}}})},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:r,...o}=s.sessions,a=s.order.filter(d=>d!==n),c=s.activeSessionId===n?a[0]??null:s.activeSessionId;return{sessions:o,order:a,activeSessionId:c}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),nn=new WeakMap;function Wi(e,t="pi"){const n=nn.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(r=>({model:r.model,modelProvider:r.modelProvider})).catch(()=>({}));return nn.set(e,s),s}const at=new Map;function Vn(e,t){const n=N.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=at.get(t);if(s)return s;const r=(async()=>{if(!n.model){const d=await Wi(e),h=N.getState().sessions[t];d.model&&h&&!h.model&&N.getState().setModel(t,d.model,d.modelProvider)}const o=N.getState().sessions[t];if(!o)throw new Error(`unknown session: ${t}`);const a={provider:"pi",cwd:o.cwd||"~"};o.model&&(a.model=o.model),o.modelProvider&&(a.modelProvider=o.modelProvider);const c=await e.createAgent({config:a,labels:{}});return N.getState().bindAgent(t,c.agentId),c.agentId})();return at.set(t,r),r.finally(()=>at.delete(t)),r}async function Li(e,t){var r;const n=N.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((r=at.get(t))==null?void 0:r.catch(()=>{}));const s=N.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),N.getState().remove(t),!0):!1}function yt(e,t){return e.filter(n=>n.workspaceCwd===t)}function st(e){(e==null?void 0:e.kind)==="chat"&&N.getState().activate(e.data.sessionId)}const E=Se()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,lastActiveTabByWorkspace:{},open(n){const s=t().tabs.find(r=>r.id===n.id);if(s){t().activate(s.id);return}e(r=>({tabs:[...r.tabs,n],activeTabId:n.id,activeWorkspaceCwd:n.workspaceCwd,lastActiveTabByWorkspace:{...r.lastActiveTabByWorkspace,[n.workspaceCwd]:n.id}})),st(n)},close(n){let s;e(r=>{const o=r.tabs.find(m=>m.id===n);if(!o)return r;const a=r.tabs.findIndex(m=>m.id===n),c=r.tabs.filter(m=>m.id!==n);let d=r.activeTabId;const h={...r.lastActiveTabByWorkspace};if(d===n){const m=yt(c,o.workspaceCwd),b=Math.min(a,m.length-1),f=m[b];d=(f==null?void 0:f.id)??null,s=f}if(h[o.workspaceCwd]===n){const m=yt(c,o.workspaceCwd)[0];m?h[o.workspaceCwd]=m.id:delete h[o.workspaceCwd]}return{tabs:c,activeTabId:d,lastActiveTabByWorkspace:h}}),st(s)},activate(n){let s;e(r=>{const o=r.tabs.find(a=>a.id===n);return o?(s=o,{activeTabId:n,activeWorkspaceCwd:o.workspaceCwd,lastActiveTabByWorkspace:{...r.lastActiveTabByWorkspace,[o.workspaceCwd]:n}}):r}),st(s)},switchWorkspace(n){let s;e(r=>{var h;const o=yt(r.tabs,n),a=r.lastActiveTabByWorkspace[n],d=a&&o.some(m=>m.id===a)?a:((h=o[0])==null?void 0:h.id)??null;return s=o.find(m=>m.id===d),{activeWorkspaceCwd:n,activeTabId:d,lastActiveTabByWorkspace:d?{...r.lastActiveTabByWorkspace,[n]:d}:r.lastActiveTabByWorkspace}}),st(s)},reorder(n,s){e(r=>{const o=r.tabs.findIndex(h=>h.id===n),a=r.tabs.findIndex(h=>h.id===s);if(o===-1||a===-1||o===a)return r;const c=r.tabs.slice(),[d]=c.splice(o,1);return d?(c.splice(a,0,d),{tabs:c}):r})},updateLabel(n,s){e(r=>({tabs:r.tabs.map(o=>o.id===n?{...o,label:s}:o)}))},updateData(n,s){e(r=>({tabs:r.tabs.map(o=>o.id===n?{...o,data:{...o.data,...s}}:o)}))},closeByPathPrefix(n){const s=t().tabs.filter(r=>{if(r.kind!=="file"&&r.kind!=="diff"&&r.kind!=="molecule")return!1;const o=r.data.path;return o===n||((o==null?void 0:o.startsWith(`${n}/`))??!1)});for(const r of s)t().close(r.id)}})),Y={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let wt=0;function Gn(e){wt+=1,E.getState().open({id:Y.terminal(`new-${wt}`),kind:"terminal",label:`Terminal ${wt}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e})}let bt=0;function Hi(e){bt+=1,E.getState().open({id:Y.molecule(`new-${bt}`),kind:"molecule",label:`Molecule ${bt}`,closable:!0,data:{path:null},workspaceCwd:e})}function $t(e){const t=N.getState().createSession(e);E.getState().open({id:Y.chat(t),kind:"chat",label:"New chat",closable:!0,data:{sessionId:t},workspaceCwd:e});const n=q.getState().client;n&&Vn(n,t).catch(()=>{})}function Et(e){const t=E.getState().tabs.find(s=>s.id===e);if(E.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;Li(q.getState().client,n)}const Ui="_panel_1de7t_3",Ki={panel:Ui};function Xn({className:e,...t}){return i.jsx("div",{className:z(Ki.panel,e),...t})}const Vi="_emptyState_kp50e_3",Gi={emptyState:Vi};function we({className:e,...t}){return i.jsx("div",{className:z(Gi.emptyState,e),...t})}const J=Se()(e=>({rootPath:"",expanded:new Set,expandedByRoot:new Map,draft:null,selected:null,setRoot:t=>e(n=>{const s=new Map(n.expandedByRoot);n.rootPath&&s.set(n.rootPath,n.expanded);const r=s.get(t),o=new Set(r);return o.add(t),{rootPath:t,expanded:o,expandedByRoot:s,draft:null,selected:null}}),toggle:t=>e(n=>{if(t===n.rootPath)return n;const s=new Set(n.expanded);s.has(t)?s.delete(t):s.add(t);const r=new Map(n.expandedByRoot);return r.set(n.rootPath,s),{expanded:s,expandedByRoot:r}}),startDraft:(t,n)=>e(s=>{const r=new Set(s.expanded);r.add(t);const o=new Map(s.expandedByRoot);return s.rootPath&&o.set(s.rootPath,r),{draft:{parentPath:t,kind:n},expanded:r,expandedByRoot:o}}),cancelDraft:()=>e({draft:null}),setSelected:t=>e({selected:t}),repathAfterMove:(t,n,s)=>e(r=>{const o=h=>h===t?n:h.startsWith(`${t}/`)?n+h.slice(t.length):h,a=new Set([...r.expanded].map(o));a.add(s);const c=new Map(r.expandedByRoot);r.rootPath&&c.set(r.rootPath,a);const d=r.selected?{path:o(r.selected.path),isDirectory:r.selected.isDirectory}:null;return{expanded:a,expandedByRoot:c,selected:d}})}));let Re=null;const Rt=new Set;function Xi(e){return Rt.add(e),()=>Rt.delete(e)}async function ft(e){var t;if(Re)return Re;try{const n=await e.connection.request("file_explorer_request",{path:"/home"}),r=(((t=n.result)==null?void 0:t.entries)??n.entries??[]).find(o=>o.kind==="directory"||o.type==="directory");Re="/home/"+((r==null?void 0:r.name)||"user")}catch{return"/tmp"}for(const n of Rt)n(Re);return Re}function Yi(){return Re}async function Ji(e,t){return t==="~"||t.startsWith("~/")?await ft(e)+t.slice(1):t}function pt(){const e=q(r=>r.client),t=q(r=>r.status),[n,s]=w.useState(Yi());return w.useEffect(()=>Xi(s),[]),w.useEffect(()=>{!e||t!=="open"||n||ft(e)},[e,t,n]),n}const Qi="_iconBtn_1unr3_3",Zi="_xs_1unr3_32",ec="_sm_1unr3_36",sn={iconBtn:Qi,xs:Zi,sm:ec};function xe({size:e="xs",hoverBase:t,className:n,style:s,type:r="button",...o}){return i.jsx("button",{type:r,className:z(sn.iconBtn,sn[e],n),style:t?{"--icon-btn-hover-base":t,...s}:s,...o})}const tc="_dot_1mn1j_3",nc="_spinner_1mn1j_16",rn={dot:tc,spinner:nc};function sc(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:r}=e;if(!t)return null;if(n)switch(s){case"permission":return"statusWarning";case"error":return"statusDanger";case"finished":default:return"statusSuccess"}switch(t){case"running":case"queued":return"accent";case"waiting":return"statusWarning";case"finished":return"statusSuccess";case"error":return"statusDanger";case"idle":case"archived":return r?"foregroundMuted":null}}const on=8,rc={accent:"var(--pi-color-accent)",statusSuccess:"var(--pi-color-statusSuccess)",statusDanger:"var(--pi-color-statusDanger)",statusWarning:"var(--pi-color-statusWarning)",foregroundMuted:"var(--pi-color-foregroundMuted)"};function oc({className:e,...t}){const n=sc(t);if(!n)return null;const s=t.status==="running"&&!t.requiresAttention,r=s?"var(--pi-color-accentBright, #a2b4d7)":rc[n]??"currentColor";return i.jsx("span",{className:`${s?rn.spinner:rn.dot}${e?` ${e}`:""}`,style:s?{borderTopColor:r,borderRightColor:r}:{width:on,height:on,backgroundColor:r},role:"presentation"})}const ac={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function ic(e){return ac[e]??"idle"}const cc="_header_z4gra_1",lc="_openBtn_z4gra_9",dc="_list_z4gra_21",uc="_item_z4gra_26",fc="_active_z4gra_39",pc="_title_z4gra_43",hc="_meta_z4gra_52",mc="_menuBtn_z4gra_60",gc="_workspaceGroup_z4gra_69",_c="_workspaceHeader_z4gra_72",yc="_workspaceChevron_z4gra_97",wc="_workspaceIcon_z4gra_105",bc="_workspaceLabel_z4gra_109",xc="_workspaceCount_z4gra_115",Sc="_workspaceMenuBtn_z4gra_120",vc="_workspaceSessions_z4gra_127",L={header:cc,openBtn:lc,list:dc,item:uc,active:fc,title:pc,meta:hc,menuBtn:mc,workspaceGroup:gc,workspaceHeader:_c,workspaceChevron:yc,workspaceIcon:wc,workspaceLabel:bc,workspaceCount:xc,workspaceMenuBtn:Sc,workspaceSessions:vc};function kc({session:e,active:t,onSelect:n,onOpenMenu:s}){return i.jsxs("div",{className:z(L.item,t&&L.active),onClick:n,onContextMenu:r=>{r.preventDefault(),s(r.clientX,r.clientY)},children:[i.jsxs("div",{className:L.title,children:[i.jsx(oc,{status:ic(e.status),showInactive:!0}),i.jsx("span",{children:e.title})]}),i.jsxs("div",{className:L.meta,children:[e.cwd||"~"," · ",e.agentId?e.agentId.slice(0,8):"new"," ·"," ",e.userMessageCount," msgs"]}),i.jsx(xe,{className:L.menuBtn,hoverBase:"var(--pi-color-surfaceSidebar)",title:"Actions",onClick:r=>{r.stopPropagation();const o=r.currentTarget.getBoundingClientRect();s(o.left,o.bottom)},children:i.jsx(Nt,{size:14})})]})}const Ic="_trigger_cd29a_3",jc="_content_cd29a_15",Cc="_item_cd29a_25",Tc="_danger_cd29a_44",Ec="_sep_cd29a_48",Ge={trigger:Ic,content:jc,item:Cc,danger:Tc,sep:Ec},zt=w.forwardRef(function({x:t,y:n},s){return i.jsx("button",{ref:s,type:"button",className:Ge.trigger,style:{left:t,top:n},"aria-hidden":!0,tabIndex:-1})});function Je({className:e,minWidth:t,style:n,sideOffset:s=2,...r}){const o=t===void 0?n:{minWidth:t,...n};return i.jsx(Os,{children:i.jsx(Fs,{className:z(Ge.content,e),align:"start",sideOffset:s,style:o,...r})})}function P({className:e,danger:t,...n}){return i.jsx(jn,{className:z(Ge.item,t&&Ge.danger,e),...n})}function ye(e){return i.jsx(Ws,{className:Ge.sep,...e})}function Rc(){const e=j(S=>S.sessionMenu),t=j(S=>S.closeSessionMenu),n=q(S=>S.client),s=w.useRef(null),[r,o]=w.useState(!1);w.useEffect(()=>{o(e!==null)},[e]);const a=N(S=>e?S.sessions[e.sessionId]:void 0);if(!e)return null;const c=!!(a!=null&&a.agentId)&&(a==null?void 0:a.status)==="running";function d(S){o(S),S||t()}function h(){if(!a)return;const S=window.prompt("Rename:",a.title);if(S!=null&&S.trim()){const _=S.trim();N.getState().setTitle(a.id,_),E.getState().updateLabel(Y.chat(a.id),_),a.agentId&&(n==null||n.agent(a.agentId).update({title:_}).catch(()=>{}))}t()}function m(){a!=null&&a.agentId&&(n==null||n.agent(a.agentId).interrupt().catch(()=>{})),t()}function b(S){N.getState().remove(S),E.getState().close(Y.chat(S))}async function f(){if(a){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!a.agentId){b(a.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(a.agentId).archive(),b(a.id)}catch(S){window.alert(`Failed to archive: ${S instanceof Error?S.message:String(S)}`)}}}async function p(){if(a){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!a.agentId){b(a.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(a.agentId).delete(),b(a.id)}catch(S){window.alert(`Failed to delete: ${S instanceof Error?S.message:String(S)}`)}}}return i.jsxs(Xe,{open:r,onOpenChange:d,modal:!1,children:[i.jsx(Ye,{asChild:!0,children:i.jsx(zt,{ref:s,x:e.x,y:e.y})}),i.jsxs(Je,{minWidth:160,children:[i.jsxs(P,{onSelect:h,children:[i.jsx(Is,{size:13}),"Rename"]}),i.jsxs(P,{disabled:!c,onSelect:m,children:[i.jsx(js,{size:13}),"Stop agent"]}),i.jsx(ye,{}),i.jsxs(P,{danger:!0,onSelect:f,children:[i.jsx(Cs,{size:13}),"Archive"]}),i.jsxs(P,{danger:!0,onSelect:p,children:[i.jsx(qt,{size:13}),"Delete permanently"]})]})]})}function Nc({label:e,cwd:t,sessionCount:n,collapsed:s,onToggleCollapsed:r,onOpenMenu:o}){return i.jsxs("div",{className:L.workspaceHeader,onClick:r,title:t,children:[i.jsx(xe,{className:L.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:a=>{a.stopPropagation(),r()},children:s?i.jsx(Mt,{size:13}):i.jsx(yn,{size:13})}),i.jsx(Ts,{size:13,className:z(L.workspaceIcon)}),i.jsx("span",{className:L.workspaceLabel,children:e}),i.jsx("span",{className:L.workspaceCount,children:n}),i.jsx(xe,{className:L.workspaceMenuBtn,hoverBase:"var(--pi-color-surfaceSidebar)",title:"Workspace actions",onClick:a=>{a.stopPropagation();const c=a.currentTarget.getBoundingClientRect();o(c.left,c.bottom)},children:i.jsx(Nt,{size:13})})]})}function Ae(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function Pt(e,t,n){const s=new Map;for(const r of e){const o=t[r];if(!o)continue;const a=Ae(o.cwd||"~",n),c=s.get(a);c?c.push(o):s.set(a,[o])}return Array.from(s,([r,o])=>({cwd:r,sessions:o}))}function Yn(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function qc(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function Mc(){const e=j(p=>p.workspaceMenu),t=j(p=>p.closeWorkspaceMenu),n=q(p=>p.client),s=N(p=>p.order),r=N(p=>p.sessions),o=pt(),a=w.useRef(null),[c,d]=w.useState(!1);if(w.useEffect(()=>{d(e!==null)},[e]),!e)return null;const h=s.map(p=>r[p]).filter(p=>!!p).filter(p=>Ae(p.cwd||"~",o)===e.cwd);function m(p){d(p),p||t()}function b(){e&&(t(),$t(e.cwd))}async function f(){if(!e)return;const p=h.length;if(!window.confirm(`Delete all ${p} conversation${p===1?"":"s"} in "${Yn(e.cwd)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return t();t();for(const _ of h){if(_.agentId&&n)try{await n.agent(_.agentId).delete()}catch(y){window.alert(`Failed to delete "${_.title}": ${y instanceof Error?y.message:String(y)}`);continue}N.getState().remove(_.id),E.getState().close(Y.chat(_.id))}}return i.jsxs(Xe,{open:c,onOpenChange:m,modal:!1,children:[i.jsx(Ye,{asChild:!0,children:i.jsx(zt,{ref:a,x:e.x,y:e.y})}),i.jsxs(Je,{minWidth:160,children:[i.jsxs(P,{onSelect:b,children:[i.jsx(wn,{size:13}),"New conversation"]}),i.jsx(ye,{}),i.jsxs(P,{danger:!0,onSelect:f,children:[i.jsx(qt,{size:13}),"Delete workspace (all conversations)"]})]})]})}function Bc(){const e=N(_=>_.order),t=N(_=>_.sessions),n=N(_=>_.activeSessionId),s=N(_=>_.activate),r=E(_=>_.open),o=q(_=>_.status),a=j(_=>_.openSessionMenu),c=j(_=>_.openWorkspaceMenu),d=j(_=>_.setCwd),h=j(_=>_.openCwdPicker),m=j(_=>_.collapsedWorkspaces),b=j(_=>_.toggleWorkspaceCollapsed),f=pt();function p(_){s(_);const y=t[_],M=Ae((y==null?void 0:y.cwd)||"~",f);y!=null&&y.cwd&&d(y.cwd),r({id:Y.chat(_),kind:"chat",label:(y==null?void 0:y.title)??"Chat",closable:!0,data:{sessionId:_},workspaceCwd:M})}const S=Pt(e,t,f);return i.jsxs(Xn,{children:[i.jsxs("div",{className:L.header,children:[i.jsx("h3",{children:"Workspaces"}),i.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,className:L.openBtn,title:o!=="open"?"Connect to open a workspace":"Open a workspace folder",disabled:o!=="open",onClick:()=>h(),children:i.jsx(bn,{size:13})})]}),i.jsxs("div",{className:L.list,children:[S.length===0&&i.jsx(we,{style:{padding:"var(--pi-spacing-12) var(--pi-spacing-10)"},children:o!=="open"?"Not connected":"No workspaces — open a folder to start"}),S.map(_=>{const y=m.has(_.cwd);return i.jsxs("div",{className:L.workspaceGroup,children:[i.jsx(Nc,{label:Yn(_.cwd),cwd:_.cwd,sessionCount:_.sessions.length,collapsed:y,onToggleCollapsed:()=>b(_.cwd),onOpenMenu:(M,O)=>c(_.cwd,M,O)}),!y&&i.jsx("div",{className:L.workspaceSessions,children:_.sessions.map(M=>i.jsx(kc,{session:M,active:M.id===n,onSelect:()=>p(M.id),onOpenMenu:(O,T)=>a(M.id,O,T)},M.id))})]},_.cwd)})]}),i.jsx(Rc,{}),i.jsx(Mc,{})]})}const Dc="_strip_11auw_1",Ac="_tab_11auw_11",$c="_active_11auw_27",zc="_icon_11auw_31",Pc="_label_11auw_36",Oc="_close_11auw_41",Fc="_newTab_11auw_51",Wc="_itemIcon_11auw_55",oe={strip:Dc,tab:Ac,active:$c,icon:zc,label:Pc,close:Oc,newTab:Fc,itemIcon:Wc},Lc={chat:vn,file:Es,diff:Sn,terminal:xn,molecule:Bt};function Hc({tab:e}){const t=E(m=>m.activeTabId),n=E(m=>m.activate),s=Lc[e.kind],{attributes:r,listeners:o,setNodeRef:a,transform:c,transition:d,isDragging:h}=er({id:e.id});return i.jsxs("div",{ref:a,className:z(oe.tab,e.id===t&&oe.active),style:{transform:tr.Transform.toString(c),transition:d,opacity:h?.5:1},onClick:()=>n(e.id),onAuxClick:m=>{m.button===1&&e.closable&&Et(e.id)},title:e.label,...r,...o,children:[i.jsx("span",{className:oe.icon,children:i.jsx(s,{size:13})}),i.jsx("span",{className:oe.label,children:e.label}),e.closable&&i.jsx("span",{className:oe.close,onClick:m=>{m.stopPropagation(),Et(e.id)},children:i.jsx(St,{size:12})})]})}function Uc({workspaceCwd:e}){const t=e??"~";return i.jsxs(Xe,{children:[i.jsx(Ye,{asChild:!0,children:i.jsx(xe,{className:oe.newTab,hoverBase:"var(--pi-color-background)",style:{borderRadius:"var(--pi-radius-sm)"},title:"New tab",disabled:!e,children:i.jsx(wn,{size:14})})}),i.jsxs(Je,{minWidth:160,sideOffset:4,children:[i.jsxs(P,{onSelect:()=>$t(t),children:[i.jsx(vn,{size:13,className:oe.itemIcon}),"New chat"]}),i.jsxs(P,{onSelect:()=>Gn(t),children:[i.jsx(xn,{size:13,className:oe.itemIcon}),"New terminal"]}),i.jsxs(P,{onSelect:()=>Hi(t),children:[i.jsx(Bt,{size:13,className:oe.itemIcon}),"New molecule view"]})]})]})}function Kc(){const e=E(a=>a.tabs),t=E(a=>a.activeWorkspaceCwd),n=E(a=>a.reorder),s=e.filter(a=>a.workspaceCwd===t),r=Vs(Gs(Zs,{activationConstraint:{distance:4}}));function o(a){const{active:c,over:d}=a;!d||c.id===d.id||n(String(c.id),String(d.id))}return i.jsxs("div",{className:oe.strip,children:[i.jsx(Xs,{sensors:r,collisionDetection:Ys,onDragEnd:o,children:i.jsx(Js,{items:s.map(a=>a.id),strategy:Qs,children:s.map(a=>i.jsx(Hc,{tab:a},a.id))})}),i.jsx(Uc,{workspaceCwd:t})]})}const Vc="_spinner_ohxfo_3",Gc={spinner:Vc},Xc={xs:12,sm:16,md:20,lg:24},Yc={xs:1,sm:2,md:2,lg:3};function Jn({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const r=typeof e=="number"?e:Xc[e],o=typeof e=="number"?2:Yc[e];return i.jsx("span",{className:`${Gc.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:r,height:r,borderWidth:o,color:t}})}const Jc=w.lazy(()=>le(()=>import("./ChatPanel-DDk43VVt.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])).then(e=>({default:e.ChatPanel}))),an=w.lazy(()=>le(()=>import("./FilePanel-DnHbd9i_.js"),__vite__mapDeps([16,1,7,6,5,2,17,11,12,3,13,14,18])).then(e=>({default:e.FilePanel}))),Qc=w.lazy(()=>le(()=>import("./TerminalPanel-Db3aR8Ro.js"),__vite__mapDeps([19,1,20,21,7,6,5,2,3,13,14,22])).then(e=>({default:e.TerminalPanel}))),Zc=w.lazy(()=>le(()=>import("./MoleculeViewerPanel-BNHZ9nNu.js"),__vite__mapDeps([23,1,24,25,9,10,26,2,17,7,6,5,3,13,14,27])).then(e=>({default:e.MoleculeViewerPanel}))),el={chat:Jc,file:an,diff:an,terminal:Qc,molecule:Zc},tl="_area_mqg08_1",nl="_panel_mqg08_7",sl="_active_mqg08_14",rl="_empty_mqg08_17",ol="_emptyStack_mqg08_25",al="_emptyTitle_mqg08_35",il="_emptyHint_mqg08_39",ie={area:tl,panel:nl,active:sl,empty:rl,emptyStack:ol,emptyTitle:al,emptyHint:il};function cl(){const e=E(a=>a.tabs),t=E(a=>a.activeTabId),n=E(a=>a.activeWorkspaceCwd),s=q(a=>a.status),r=j(a=>a.openCwdPicker),o=e.some(a=>a.workspaceCwd===n);return n===null?i.jsx("div",{className:ie.area,children:i.jsxs("div",{className:ie.emptyStack,children:[i.jsx("div",{className:ie.emptyTitle,children:"No workspace open"}),i.jsx("div",{className:ie.emptyHint,children:"Open a project folder to start a chat."}),i.jsx(V,{size:"sm",variant:"secondary",leftIcon:i.jsx(bn,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>r(),children:"Open Workspace"})]})}):o?i.jsx("div",{className:ie.area,children:e.map(a=>{const c=el[a.kind];return i.jsx("div",{className:z(ie.panel,a.id===t&&ie.active),children:i.jsx(w.Suspense,{fallback:i.jsx(Jn,{size:"md"}),children:i.jsx(c,{tab:a})})},a.id)})}):i.jsx("div",{className:ie.area,children:i.jsx("div",{className:ie.empty,children:"No open tabs in this workspace"})})}const ue={fileRead:e=>["file","read",e],fileDownload:e=>["file","download",e],fileText:(e,t)=>["file","text",e,t],fileDiff:(e,t,n)=>["file","diff",e,t,n],fileDiffByPath:e=>["file","diff",e],explorer:e=>["explorer",e],agentList:()=>["agents","list"],providerModels:e=>["providers","models",e],agentTimeline:e=>["agents","timeline",e],agentCommands:e=>["agents","commands",e]};function ll(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function dl(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function Qn(e,t){const s=(await e.connection.request("file_explorer_request",{path:t})).result;if(!s||s.ok===!1)throw new Error(s&&"error"in s?s.error:"explorer request failed");const r="entries"in s?s.entries??[]:[];return{path:s.resolvedPath??t,entries:dl(r.map(ll))}}function ul(e,t=!0){const n=q(s=>s.client);return gn({queryKey:ue.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return Qn(n,e)},enabled:!!n&&!!e&&t})}function fl(e){const t=q(r=>r.client),n=w.useMemo(()=>Array.from(e),[e]),s=ys({queries:n.map(r=>({queryKey:ue.explorer(r),queryFn:()=>{if(!t)throw new Error("not connected");return Qn(t,r)},enabled:!!t&&!!r}))});return w.useMemo(()=>{const r=new Map;return n.forEach((o,a)=>{const c=s[a];r.set(o,{listing:c==null?void 0:c.data,isLoading:!!(c!=null&&c.isLoading),isError:!!(c!=null&&c.isError),error:c==null?void 0:c.error})}),r},[n,s])}function pl(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function hl(e,t){const n=new Set,s=e.connection.onSessionMessage(r=>{const o=r;pl(o)&&n.has(o.path)&&t(o.path)});return{sync(r){for(const o of n)r.has(o)||(n.delete(o),e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{}));for(const o of r)n.has(o)||(n.add(o),e.connection.request("file_watch_subscribe",{path:o}).then(a=>{const c=a;(c==null?void 0:c.ok)===!1&&console.warn(`useExplorerWatch: ${c.error??"subscribe failed"} for "${o}"`)}).catch(()=>{}))},dispose(){s();for(const r of n)e.connection.request("file_watch_unsubscribe",{path:r}).catch(()=>{});n.clear()}}}function ml(e){const t=q(a=>a.client),n=De(),s=w.useRef(null),r=w.useRef(null),o=Array.from(e).toSorted().join("\0");w.useEffect(()=>{var a,c;t&&(r.current!==t&&((a=s.current)==null||a.dispose(),s.current=hl(t,d=>{n.invalidateQueries({queryKey:ue.explorer(d)})}),r.current=t),(c=s.current)==null||c.sync(new Set(o?o.split("\0"):[])))},[t,o,n]),w.useEffect(()=>()=>{var a;(a=s.current)==null||a.dispose(),s.current=null,r.current=null},[])}const cn=new WeakMap;function ln(e){let t=cn.get(e);return t||(t=new Za(e),t.start(),cn.set(e,t)),t}function gl(e,t,n){const s=new Blob([Uint8Array.from(e)],{type:n||"application/octet-stream"}),r=URL.createObjectURL(s),o=document.createElement("a");o.href=r,o.download=t,o.rel="noopener",document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(r),0)}function Zn(){const e=q(r=>r.daemon),t=De(),n=w.useCallback(async(r,o)=>{if(!e)throw new Error("not connected");const a=r?`${r}/${o.name}`:o.name,c=new Uint8Array(await o.arrayBuffer());await ln(e).upload(a,c),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=w.useCallback(async r=>{if(!e)throw new Error("not connected");const o=await ln(e).download(r);gl(o.bytes,o.fileName||r.split("/").pop()||"download",o.mimeType)},[e]);return{upload:n,saveToDisk:s}}const dn={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},Q=Se()(e=>({subscribedCwd:null,changes:[],ignored:[],...dn,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],ignored:[],...dn});return}const n=[];for(const s of t.staged)n.push({path:s.path,status:s.indexStatus==="A"?"added":s.indexStatus==="D"?"deleted":"modified",staged:!0});for(const s of t.unstaged)n.push({path:s.path,status:s.worktreeStatus==="D"?"deleted":"modified",staged:!1});for(const s of t.untracked)n.push({path:s,status:"added",staged:!1});e({changes:n,ignored:t.ignored??[],available:!0,branch:t.branch,upstream:t.upstream,ahead:t.ahead,behind:t.behind,detached:t.detached,conflictCount:t.conflicted.length})}}));function Nf(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function fe(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function _l(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function un(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:fe(t.path);if(s===fe(e)||s===e||s.startsWith(`${e}/`)||s!==n&&!s.startsWith(`${n}/`))return null;const r=e.split("/").pop();return{destinationDir:s,destination:`${s}/${r}`}}function fn(e,t){if(e.kind!=="file"&&e.kind!=="directory")return null;const n=e.kind==="directory"?e.path:fe(e.path);return n!==t&&!n.startsWith(`${t}/`)?null:n}const yl={empty_path:"Nothing to move.",invalid_name:"Invalid name for the destination.",exists:"An item with that name already exists in the destination folder.",not_found:"That item or destination folder no longer exists.",not_a_directory:"The destination is not a folder.",same_path:"That item is already in this folder.",into_descendant:"A folder cannot be moved into itself.",cross_device:"Cannot move across filesystems."};async function wl(e,t,n){const s=await e.connection.request("file_move_request",{path:t,destination:n});if(!s.ok){const r=s.error??"";throw new Error(yl[r]??r??"Failed to move")}return s.destination??n}function bl(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function es(e,t,n,s,r,o){var c;(o==null?void 0:o.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:o.kind,parentPath:t});const a=r.get(t);if(!a||a.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(a.isError){const d=a.error instanceof Error?a.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:d});return}for(const d of((c=a.listing)==null?void 0:c.entries)??[])xl(e,t,d,n,s,r,o)}function xl(e,t,n,s,r,o,a){const c=bl(t,n.name);if(n.kind!=="directory"){e.push({kind:"file",path:c,name:n.name,depth:s});return}const d=r.has(c);e.push({kind:"directory",path:c,name:n.name,depth:s,expanded:d}),d&&es(e,c,s+1,r,o,a)}function Sl(e,t,n,s){if(!e)return[];const r=[];return es(r,e,0,t,n,s),r}const vl=()=>{};function kl(e,t){return e===void 0?t:e==="deleted"||t==="deleted"?"deleted":e==="added"||t==="added"?"added":"modified"}function Il(e){return e==="added"?"added":"modified"}function jl(e,t){if(!e||t.length===0)return vl;const n=e.replace(/\/+$/,""),s=new Map,r=new Map,o=[];for(const a of t){const c=a.path.endsWith("/"),d=c?a.path.slice(0,-1):a.path;if(!d)continue;const h=`${n}/${d}`;s.set(h,kl(s.get(h),a.status)),c&&o.push(h);const m=Il(a.status);let b=fe(h);for(;b.length>n.length&&b.startsWith(n);){const f=r.get(b);r.set(b,f===void 0||f===m?m:"modified");const p=fe(b);if(p===b)break;b=p}}return a=>{const c=s.get(a)??r.get(a);if(c!==void 0)return c;for(const d of o)if(a.startsWith(`${d}/`))return"added"}}const Cl=()=>!1;function Tl(e,t){if(!e||t.length===0)return Cl;const n=e.replace(/\/+$/,""),s=new Set,r=[];for(const o of t){const a=o.endsWith("/"),c=a?o.slice(0,-1):o;if(!c)continue;const d=`${n}/${c}`;s.add(d),a&&r.push(`${d}/`)}return o=>{if(s.has(o))return!0;for(const a of r)if(o.startsWith(a))return!0;return!1}}const El="_container_1mqaz_1",Rl="_header_1mqaz_7",Nl="_uploadButton_1mqaz_14",ql="_hiddenInput_1mqaz_33",Ml="_status_1mqaz_36",Bl="_statusError_1mqaz_37",Dl="_rowAction_1mqaz_50",Al="_item_1mqaz_53",$l="_list_1mqaz_60",zl="_active_1mqaz_83",Pl="_selected_1mqaz_88",Ol="_dropTarget_1mqaz_92",Fl="_chevronSlot_1mqaz_97",Wl="_chevron_1mqaz_97",Ll="_chevronOpen_1mqaz_108",Hl="_icon_1mqaz_111",Ul="_name_1mqaz_118",Kl="_dirName_1mqaz_123",Vl="_gitAdded_1mqaz_133",Gl="_gitModified_1mqaz_138",Xl="_gitDeleted_1mqaz_143",Yl="_hiddenEntry_1mqaz_155",Jl="_statusRow_1mqaz_164",Ql="_statusRowError_1mqaz_175",Zl="_draftInput_1mqaz_178",B={container:El,header:Rl,uploadButton:Nl,hiddenInput:ql,status:Ml,statusError:Bl,rowAction:Dl,item:Al,list:$l,active:zl,selected:Pl,dropTarget:Ol,chevronSlot:Fl,chevron:Wl,chevronOpen:Ll,icon:Hl,name:Ul,dirName:Kl,gitAdded:Vl,gitModified:Gl,gitDeleted:Xl,hiddenEntry:Yl,statusRow:Jl,statusRowError:Ql,draftInput:Zl};function ed({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[r,o]=w.useState("");return i.jsxs("div",{className:B.item,style:t,onClick:a=>a.stopPropagation(),children:[i.jsx("span",{className:B.chevronSlot}),i.jsx("span",{className:B.icon,children:e==="directory"?i.jsx(Me,{size:16}):i.jsx(kn,{size:16})}),i.jsx("input",{className:B.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:r,onChange:a=>o(a.target.value),onKeyDown:a=>{if(a.key==="Enter"){a.preventDefault();const c=r.trim();c?n(c):s()}else a.key==="Escape"&&(a.preventDefault(),s())},onBlur:s})]})}const td=14,nd={added:B.gitAdded,modified:B.gitModified,deleted:B.gitDeleted};function sd({row:e,active:t,selected:n,dropTarget:s,gitStatus:r,hidden:o,onToggle:a,onOpenFile:c,onContextMenu:d,onSubmitDraft:h,onCancelDraft:m,onDragStartRow:b,onDragEndRow:f}){const p={paddingLeft:8+e.depth*td};if(e.kind==="loading")return i.jsx("div",{className:B.statusRow,style:p,children:"Loading…"});if(e.kind==="error")return i.jsx("div",{className:z(B.statusRow,B.statusRowError),style:p,children:e.message??"failed to load"});if(e.kind==="draft")return i.jsx(ed,{draftKind:e.draftKind,indentStyle:p,onSubmit:_=>h(e.parentPath,_),onCancel:m});const S=e.kind==="directory";return i.jsxs("div",{className:z(B.item,t&&B.active,n&&B.selected,s&&B.dropTarget,r&&nd[r],o&&B.hiddenEntry),style:p,title:e.path,draggable:!0,onDragStart:_=>b(e.path,_),onDragEnd:f,onClick:()=>S?a(e.path):c(e.path),onContextMenu:_=>{_.preventDefault(),_.stopPropagation(),d(e.path,S,_.clientX,_.clientY)},children:[i.jsx("span",{className:B.chevronSlot,children:S&&i.jsx(Mt,{size:14,className:z(B.chevron,e.expanded&&B.chevronOpen)})}),i.jsx("span",{className:B.icon,children:S?i.jsx(Me,{size:16}):i.jsx(kn,{size:16})}),i.jsx("span",{className:S?B.dirName:B.name,children:e.name}),i.jsx(xe,{className:B.rowAction,title:"Actions",onClick:_=>{_.stopPropagation();const y=_.currentTarget.getBoundingClientRect();d(e.path,S,y.left,y.bottom)},children:i.jsx(Nt,{size:14})})]})}async function pn(e){var n;if((n=navigator.clipboard)!=null&&n.writeText)try{await navigator.clipboard.writeText(e);return}catch{}const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();try{if(!document.execCommand("copy"))throw new Error('execCommand("copy") failed')}finally{t.remove()}}const rd=w.lazy(()=>le(()=>import("./TextViewer-C7Qx8B8k.js"),__vite__mapDeps([28,1,29,2,7,6,5,30,26,3,13,14,31])).then(e=>({default:e.TextViewer}))),od=w.lazy(()=>le(()=>import("./MarkdownFileViewer-dvpIuide.js"),__vite__mapDeps([32,1,29,2,7,6,5,30,4,8,3,13,14,33])).then(e=>({default:e.MarkdownFileViewer}))),ad=w.lazy(()=>le(()=>import("./ImageViewer-C4xbKf7H.js"),__vite__mapDeps([34,1,26,2,7,6,5,3,13,14,35])).then(e=>({default:e.ImageViewer}))),id=w.lazy(()=>le(()=>import("./VideoViewer-BM1PeKnI.js"),__vite__mapDeps([36,1,26,2,7,6,5,3,13,14,37])).then(e=>({default:e.VideoViewer}))),cd=w.lazy(()=>le(()=>import("./BinaryFallbackViewer-yIyZW16D.js"),__vite__mapDeps([38,1,26,2,3,7,6,5,13,14,39])).then(e=>({default:e.BinaryFallbackViewer}))),qf={text:rd,markdown:od,image:ad,video:id,binary:cd},ld={md:"markdown",markdown:"markdown",mdx:"markdown",png:"image",jpg:"image",jpeg:"image",gif:"image",webp:"image",svg:"image",bmp:"image",ico:"image",avif:"image",mp4:"video",webm:"video",mov:"video",m4v:"video",ogv:"video",pdf:"binary",zip:"binary",gz:"binary",tar:"binary",exe:"binary",wasm:"binary",woff:"binary",woff2:"binary",ttf:"binary",otf:"binary"},dd=[["image/","image"],["video/","video"]];function ts(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const ud={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},fd={poscar:!0,contcar:!0};function pd(e){if(ud[ts(e)])return!0;const t=e.split("/").pop()??e;return!!fd[t.toLowerCase()]}function Mf(e,t={}){const n=ld[ts(e)];if(n)return n;const s=t.mimeHint??"";for(const[r,o]of dd)if(s.startsWith(r))return o;return t.isBinary?"binary":"text"}function ns(e,t){if(pd(e)){ss(e,t);return}const n=e.split("/").pop()||e;E.getState().open({id:Y.file(e),kind:"file",label:n,closable:!0,data:{path:e},workspaceCwd:t})}function ss(e,t){const n=e.split("/").pop()||e;E.getState().open({id:Y.molecule(e),kind:"molecule",label:n,closable:!0,data:{path:e},workspaceCwd:t})}function hd(){const e=j(D=>D.fileMenu),t=j(D=>D.closeFileMenu),n=q(D=>D.client),s=J(D=>D.startDraft),r=J(D=>D.rootPath),o=E(D=>D.activeWorkspaceCwd),{saveToDisk:a}=Zn(),c=De(),d=w.useRef(null),[h,m]=w.useState(!1);if(w.useEffect(()=>{m(e!==null)},[e]),!e)return null;const b=e.path.split("/").pop()||e.path;function f(D){m(D),D||t()}function p(){e&&(t(),ns(e.path,o||"~"))}function S(){e&&(t(),ss(e.path,o||"~"))}async function _(){if(e){t();try{await pn(e.path)}catch{window.alert("Failed to copy to clipboard.")}}}async function y(){if(e){t();try{await pn(_l(e.path,r)||"/")}catch{window.alert("Failed to copy to clipboard.")}}}async function M(){if(e){t();try{await a(e.path)}catch(D){window.alert(`Failed to download: ${D instanceof Error?D.message:String(D)}`)}}}async function O(){if(!e)return;const D=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${D}? "${b}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{const K=await n.connection.request("file_delete_request",{path:e.path});if(!K.ok)throw new Error(K.error??"delete failed");await c.invalidateQueries({queryKey:["explorer"]}),E.getState().closeByPathPrefix(e.path)}catch(K){window.alert(`Failed to delete: ${K instanceof Error?K.message:String(K)}`)}}function T(D){if(!e)return;const K=e.isDirectory?e.path:fe(e.path);t(),s(K,D)}return i.jsxs(Xe,{open:h,onOpenChange:f,modal:!1,children:[i.jsx(Ye,{asChild:!0,children:i.jsx(zt,{ref:d,x:e.x,y:e.y})}),i.jsx(Je,{minWidth:140,children:e.background?i.jsxs(i.Fragment,{children:[i.jsxs(P,{onSelect:()=>T("file"),children:[i.jsx(vt,{size:13}),"New File"]}),i.jsxs(P,{onSelect:()=>T("directory"),children:[i.jsx(it,{size:13}),"New Folder"]}),i.jsx(ye,{}),i.jsxs(P,{onSelect:_,children:[i.jsx(Qe,{size:13}),"Copy Current Directory Path"]}),i.jsxs(P,{onSelect:y,children:[i.jsx(Qe,{size:13}),"Copy Current Directory Relative Path"]})]}):i.jsxs(i.Fragment,{children:[!e.isDirectory&&i.jsxs(i.Fragment,{children:[i.jsxs(P,{onSelect:p,children:[i.jsx(Rs,{size:13}),"Open"]}),i.jsxs(P,{onSelect:S,children:[i.jsx(Bt,{size:13}),"Open in MolViewer"]}),i.jsx(ye,{})]}),e.isDirectory&&i.jsxs(i.Fragment,{children:[i.jsxs(P,{onSelect:()=>T("file"),children:[i.jsx(vt,{size:13}),"New File"]}),i.jsxs(P,{onSelect:()=>T("directory"),children:[i.jsx(it,{size:13}),"New Folder"]}),i.jsx(ye,{})]}),i.jsxs(P,{onSelect:_,children:[i.jsx(Qe,{size:13}),"Copy Absolute Path"]}),i.jsxs(P,{onSelect:y,children:[i.jsx(Qe,{size:13}),"Copy Relative Path"]}),i.jsx(ye,{}),!e.isDirectory&&i.jsxs(i.Fragment,{children:[i.jsxs(P,{onSelect:M,children:[i.jsx(Ns,{size:13}),"Download"]}),i.jsx(ye,{})]}),i.jsxs(P,{danger:!0,onSelect:O,children:[i.jsx(qt,{size:13}),"Delete"]})]})})]})}const md={empty_path:"Choose a folder first.",invalid_name:'Invalid name — cannot be empty or contain "/".',exists:"An item with that name already exists here.",not_found:"That folder no longer exists.",not_a_directory:"That path is not a folder.",unreadable:"That folder is not readable."};async function rs(e,t,n,s){const r=await e.connection.request("file_create_request",{path:t,name:n,kind:s});if(!r.ok){const o=r.error??"";throw new Error(md[o]??o??"Failed to create")}return r.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const gd=28,We="application/x-pi-studio-path",xt="Files";function _d(){const e=q(g=>g.client),t=J(g=>g.rootPath),n=J(g=>g.expanded),s=J(g=>g.setRoot),r=J(g=>g.toggle),o=J(g=>g.draft),a=J(g=>g.startDraft),c=J(g=>g.cancelDraft),d=J(g=>g.selected),h=J(g=>g.setSelected),m=E(g=>g.activeWorkspaceCwd),b=E(g=>g.tabs.find(k=>k.id===g.activeTabId)),f=Q(g=>g.changes),p=Q(g=>g.ignored),{upload:S}=Zn(),_=j(g=>g.openFileMenu),y=De(),[M,O]=w.useState(null),[T,D]=w.useState(null),K=w.useRef(null),$e=w.useRef(null),he=w.useRef(null),G=w.useRef(null),ve=(b==null?void 0:b.kind)==="file"||(b==null?void 0:b.kind)==="molecule"?b.data.path:null,ke=d?d.isDirectory?d.path:fe(d.path):t,ze=w.useRef(null);w.useEffect(()=>{if(!e)return;const g=m||"~";ze.current!==g&&(ze.current=g,Ji(e,g).then(k=>s(k)))},[e,m,s]);const Ie=fl(n);ml(n);const je=w.useMemo(()=>Sl(t,n,Ie,o),[t,n,Ie,o]),I=w.useMemo(()=>jl(t,f),[t,f]),ae=w.useMemo(()=>Tl(t,p),[t,p]),Ft=ws({count:je.length,getScrollElement:()=>$e.current,estimateSize:()=>gd,overscan:12,getItemKey:g=>{var k;return((k=je[g])==null?void 0:k.path)??g}});function ht(g){ns(g,m||"~")}function is(g,k){k.dataTransfer.setData(We,g),k.dataTransfer.effectAllowed="move",he.current=g}function cs(){he.current=null}function mt(){D(null),G.current&&(clearTimeout(G.current.timer),G.current=null)}function Wt(g){var C;if(((C=G.current)==null?void 0:C.path)===g.path||(G.current&&clearTimeout(G.current.timer),G.current=null,g.kind!=="directory"||g.expanded))return;const k=window.setTimeout(()=>r(g.path),700);G.current={path:g.path,timer:k}}async function ls(g,k){const C=un(g,k,t);if(!C||!e)return;const F=g.split("/").pop()??g;O({text:`Moving ${F}…`,error:!1});try{await wl(e,g,C.destination),await y.invalidateQueries({queryKey:ue.explorer(fe(g))}),await y.invalidateQueries({queryKey:ue.explorer(C.destinationDir)}),J.getState().repathAfterMove(g,C.destination,C.destinationDir);const W=E.getState().tabs.some(ne=>(ne.kind==="file"||ne.kind==="molecule")&&ne.data.path===g);E.getState().closeByPathPrefix(g),W&&ht(C.destination),O({text:`Moved to ${C.destinationDir.split("/").pop()||"/"}`,error:!1})}catch(W){O({text:W instanceof Error?W.message:"Failed to move",error:!0})}}async function ds(g,k){const C=(o==null?void 0:o.kind)??"file";if(c(),!!e)try{const F=await rs(e,g,k,C);await y.invalidateQueries({queryKey:ue.explorer(g)}),O({text:`Created ${F}`,error:!1}),C==="file"&&ht(F)}catch(F){O({text:F instanceof Error?F.message:"Failed to create",error:!0})}}async function Lt(g,k){var ne;if(!k.length||!g)return;const C=(ne=Ie.get(g))==null?void 0:ne.listing,F=new Set((C==null?void 0:C.entries.map(se=>se.name))??[]),W=k.filter(se=>F.has(se.name));if(W.length>0){const se=W.map(fs=>fs.name).join(", ");if(!window.confirm(`Overwrite ${W.length>1?"these files":"this file"}? ${se}`))return}O({text:`Uploading ${k.length} file${k.length>1?"s":""}…`,error:!1});try{for(const se of k)await S(g,se);O({text:`Uploaded ${k.length} file${k.length>1?"s":""}`,error:!1})}catch(se){O({text:`Upload failed: ${se instanceof Error?se.message:"unknown"}`,error:!0})}}function Ht(g,k){if(g.preventDefault(),g.dataTransfer.types.includes(We)){const W=g.dataTransfer.getData(We)||he.current;mt(),W&&ls(W,k??{kind:"directory",path:t});return}if(mt(),!g.dataTransfer.types.includes(xt))return;const C=k?fn(k,t):t;if(!C)return;const F=Array.from(g.dataTransfer.files);F.length&&Lt(C,F)}function us(g){const k=g.dataTransfer.types.includes(We);!k&&!g.dataTransfer.types.includes(xt)||(g.preventDefault(),g.dataTransfer.dropEffect=k?"move":"copy")}return e?i.jsxs("div",{className:B.container,onDragOver:us,onDragLeave:g=>{g.currentTarget.contains(g.relatedTarget)||mt()},onDrop:g=>Ht(g),children:[i.jsxs("div",{className:B.header,children:[i.jsx("button",{type:"button",className:B.uploadButton,onClick:()=>a(ke,"file"),disabled:!t,title:d?`New file in ${ke.split("/").pop()||"/"}`:"New file in workspace root",children:i.jsx(vt,{size:14})}),i.jsx("button",{type:"button",className:B.uploadButton,onClick:()=>a(ke,"directory"),disabled:!t,title:d?`New folder in ${ke.split("/").pop()||"/"}`:"New folder in workspace root",children:i.jsx(it,{size:14})}),i.jsxs("button",{type:"button",className:B.uploadButton,onClick:()=>{var g;return(g=K.current)==null?void 0:g.click()},disabled:!t,title:"Upload files to the workspace root",children:[i.jsx(qs,{size:14}),i.jsx("span",{children:"Upload"})]}),i.jsx("input",{ref:K,type:"file",multiple:!0,className:B.hiddenInput,onChange:g=>{Lt(t,Array.from(g.target.files??[])),g.target.value=""}})]}),M&&i.jsx("div",{className:M.error?B.statusError:B.status,children:M.text}),i.jsxs("div",{className:B.list,ref:$e,onContextMenu:g=>{g.preventDefault(),_(t,!0,g.clientX,g.clientY,!0)},children:[je.length===0&&i.jsx(we,{children:"No files loaded"}),i.jsx("div",{style:{position:"relative",height:Ft.getTotalSize()},children:Ft.getVirtualItems().map(g=>{const k=je[g.index];return k?i.jsx("div",{"data-index":g.index,style:{position:"absolute",top:0,left:0,width:"100%",height:g.size,transform:`translateY(${g.start}px)`},onDragEnter:C=>{if(C.dataTransfer.types.includes(We)){const W=he.current;if(!W)return;const ne=un(W,k,t);D(ne?k.path:null),Wt(k);return}if(!C.dataTransfer.types.includes(xt))return;const F=fn(k,t);D(F?k.path:null),Wt(k)},onDrop:C=>{C.stopPropagation(),Ht(C,k)},children:i.jsx(sd,{row:k,active:(k.kind==="file"||k.kind==="directory")&&k.path===ve,selected:(k.kind==="file"||k.kind==="directory")&&k.path===(d==null?void 0:d.path),gitStatus:k.kind==="file"||k.kind==="directory"?I(k.path):void 0,hidden:(k.kind==="file"||k.kind==="directory")&&(k.name.startsWith(".")||ae(k.path)),onToggle:C=>{h({path:C,isDirectory:!0}),r(C)},onOpenFile:C=>{h({path:C,isDirectory:!1}),ht(C)},onContextMenu:(C,F,W,ne)=>_(C,F,W,ne),onSubmitDraft:(C,F)=>void ds(C,F),onCancelDraft:c,onDragStartRow:is,onDragEndRow:cs,dropTarget:(k.kind==="file"||k.kind==="directory")&&k.path===T})},g.key):null})})]}),i.jsx(hd,{})]}):i.jsx(we,{children:"Connect to browse files"})}const yd="_list_1n3q6_1",wd="_summary_1n3q6_4",bd="_item_1n3q6_11",xd="_badge_1n3q6_23",Sd="_added_1n3q6_30",vd="_modified_1n3q6_34",kd="_deleted_1n3q6_38",Id="_name_1n3q6_42",Ce={list:yd,summary:wd,item:bd,badge:xd,added:Sd,modified:vd,deleted:kd,name:Id},jd={added:"A",modified:"M",deleted:"D"};function Cd(){const t=E(o=>o.activeWorkspaceCwd)||"~",n=Q(o=>o.changes),s=E(o=>o.open);function r(o,a){s({id:Y.diff(o,a),kind:"diff",label:o.split("/").pop()||o,closable:!0,data:{path:o,staged:a},workspaceCwd:t})}return n.length===0?i.jsx(we,{children:"No changes detected"}):i.jsxs("div",{className:Ce.list,children:[i.jsxs("div",{className:Ce.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((o,a)=>i.jsxs("div",{className:Ce.item,onClick:()=>r(o.path,o.staged),children:[i.jsx("span",{className:z(Ce.badge,Ce[o.status]),children:jd[o.status]}),i.jsx("span",{className:Ce.name,children:o.path})]},`${o.path}-${o.staged}-${a}`))]})}const Td="_tabBar_1tvri_1",Ed="_tabBtn_1tvri_7",Rd="_active_1tvri_23",Nd="_refreshBtn_1tvri_27",qd="_content_1tvri_31",ge={tabBar:Td,tabBtn:Ed,active:Rd,refreshBtn:Nd,content:qd};function Md(){const e=j(c=>c.rightSidebarTab),t=j(c=>c.setRightSidebarTab),s=E(c=>c.activeWorkspaceCwd)||"~",r=q(c=>c.client),o=De();function a(){o.invalidateQueries({queryKey:["explorer"]}),r&&s&&r.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return i.jsxs(Xn,{children:[i.jsxs("div",{className:ge.tabBar,children:[i.jsxs("button",{type:"button",className:z(ge.tabBtn,e==="files"&&ge.active),onClick:()=>t("files"),children:[i.jsx(Me,{size:13}),"Files"]}),i.jsxs("button",{type:"button",className:z(ge.tabBtn,e==="changes"&&ge.active),onClick:()=>t("changes"),children:[i.jsx(Sn,{size:13}),"Changes"]}),i.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:ge.refreshBtn,onClick:a,children:i.jsx(Ms,{size:13})})]}),i.jsx("div",{className:ge.content,children:e==="files"?i.jsx(_d,{}):i.jsx(Cd,{})})]})}const os=Se()(e=>({bySession:{},setStats(t,n){e(s=>({bySession:{...s.bySession,[t]:{...s.bySession[t],...n}}}))},clear(t){e(n=>{const{[t]:s,...r}=n.bySession;return{bySession:r}})}})),Bd=12e3;function Dd(e,t){return e==="running"&&t!=="running"}function hn(e,t){var s,r,o,a,c,d;const n={};((s=t.contextUsage)==null?void 0:s.tokens)!=null&&(n.contextTokens=t.contextUsage.tokens),((r=t.contextUsage)==null?void 0:r.contextWindow)!==void 0&&(n.contextWindow=t.contextUsage.contextWindow),((o=t.contextUsage)==null?void 0:o.percent)!=null&&(n.contextPercent=t.contextUsage.percent),((a=t.tokens)==null?void 0:a.total)!==void 0&&(n.totalTokens=t.tokens.total),((c=t.tokens)==null?void 0:c.input)!==void 0&&(n.inputTokens=t.tokens.input),((d=t.tokens)==null?void 0:d.output)!==void 0&&(n.outputTokens=t.tokens.output),t.cost!==void 0&&(n.cost=t.cost),t.model!==void 0&&(n.model=t.model,N.getState().setModel(e,t.model)),os.getState().setStats(e,n)}function Ad(e){const t=q(c=>c.client),n=q(c=>c.status),s=N(c=>{var d;return e?((d=c.sessions[e])==null?void 0:d.agentId)??null:null}),r=N(c=>{var d;return e?(d=c.sessions[e])==null?void 0:d.status:void 0}),o=w.useRef(!1),a=w.useRef(void 0);w.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let c=!1;const d=async()=>{if(!o.current){o.current=!0;try{const m=await t.agent(s).sessionStats();c||hn(e,m)}catch{}finally{o.current=!1}}};d();const h=setInterval(()=>void d(),Bd);return()=>{c=!0,clearInterval(h)}},[n,t,e,s]),w.useEffect(()=>{const c=a.current;a.current=r,Dd(c,r)&&(n!=="open"||!t||!e||!s||(o.current=!1,t.agent(s).sessionStats().then(d=>hn(e,d)).catch(()=>{})))},[r,n,t,e,s])}function $d(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="checkout_status_update"&&"cwd"in e&&typeof e.cwd=="string"&&"projection"in e&&typeof e.projection=="object"&&e.projection!==null}function zd(e){const t=q(o=>o.client),n=Q(o=>o.applyProjection),s=Q(o=>o.setSubscribedCwd),r=w.useRef(t);return r.current=t,w.useEffect(()=>{if(!t||!e)return;let o=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const a=t.connection.onSessionMessage(c=>{if(o)return;const d=c;$d(d)&&d.cwd===e&&n(d.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{o=!0,a(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const o=r.current;!o||!e||o.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const Ot="--";function Le(e){return e===void 0?Ot:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function Pd(e){if(e==null)return Ot;const t=e<=1?e*100:e;return`${Math.round(t)}%`}function Od(e){if(e===void 0)return Ot;const t=e<1?4:2;return`$${e.toFixed(t)}`}function Fd(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function Wd(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}function Ld(e,t=!0){const n=q(s=>s.client);return gn({queryKey:ue.providerModels(e),queryFn:async()=>{if(!n)throw new Error("not connected");return(await n.providers.listModels(e)).models},enabled:!!n&&!!e&&t})}function Hd(e,t){if(t.trim()==="")return e;const n=t.toLowerCase();return e.filter(s=>s.label.toLowerCase().includes(n)||s.description!==void 0&&s.description.toLowerCase().includes(n))}function Ud(e,t){if(!t)return e;const n=e.find(s=>s.id===t);return n?[n,...e.filter(s=>s.id!==t)]:e}function Kd(e){const t=new Set;return e.filter(n=>t.has(n.id)?!1:(t.add(n.id),!0))}const Vd="_picker_1jy8c_4",Gd="_search_1jy8c_10",Xd="_list_1jy8c_28",Yd="_item_1jy8c_33",Jd="_itemActive_1jy8c_47",Qd="_checkSlot_1jy8c_51",Zd="_label_1jy8c_60",eu="_modelId_1jy8c_66",tu="_state_1jy8c_73",nu="_stateError_1jy8c_82",su="_commandContent_1jy8c_92",ru="_commandList_1jy8c_95",ou="_commandItem_1jy8c_100",au="_commandItemHeader_1jy8c_132",iu="_commandKindBadge_1jy8c_146",cu="_commandKindExtension_1jy8c_165",lu="_commandKindPrompt_1jy8c_170",du="_commandKindSkill_1jy8c_175",uu="_commandDescription_1jy8c_180",re={picker:Vd,search:Gd,list:Xd,item:Yd,itemActive:Jd,checkSlot:Qd,label:Zd,modelId:eu,state:tu,stateError:nu,commandContent:su,commandList:ru,commandItem:ou,commandItemHeader:au,commandKindBadge:iu,commandKindExtension:cu,commandKindPrompt:lu,commandKindSkill:du,commandDescription:uu};function fu({currentModel:e,provider:t,onSelect:n,renderTrigger:s}){const[r,o]=w.useState(!1),[a,c]=w.useState(""),d=w.useRef(null),{data:h=[],isLoading:m,isError:b,error:f}=Ld(t,r),p=Kd(Ud(h,e));w.useEffect(()=>{var T;r&&(c(""),(T=d.current)==null||T.focus())},[r]);const S=new Map(p.map(T=>[T.id,T.provider])),_=p.map(T=>({value:T.id,label:T.label??T.id,description:T.id})),y=Hd(_,a),M=f instanceof Error?f.message:"Failed to load models";function O(T){T.stopPropagation(),T.key==="Escape"&&o(!1)}return i.jsxs(Xe,{open:r,onOpenChange:o,modal:!1,children:[i.jsx(Ye,{asChild:!0,children:s(e)}),i.jsxs(Je,{minWidth:240,sideOffset:4,className:re.picker,children:[i.jsx("input",{ref:d,className:re.search,placeholder:"Search models…",value:a,onChange:T=>c(T.target.value),onKeyDown:O}),m&&i.jsx("div",{className:re.state,children:i.jsx(Jn,{size:"sm"})}),!m&&b&&i.jsx("div",{className:re.stateError,children:M}),!m&&!b&&y.length===0&&i.jsx("div",{className:re.state,children:"No models found"}),!m&&!b&&y.length>0&&i.jsx("div",{className:re.list,children:y.map(T=>i.jsxs(jn,{className:re.item,onSelect:()=>n(T.value,S.get(T.value)),children:[i.jsx("span",{className:re.checkSlot,"aria-hidden":!0,children:T.value===e&&i.jsx(In,{size:14})}),i.jsx("span",{className:re.label,children:T.label}),i.jsxs("span",{className:re.modelId,children:["(",T.value,")"]})]},T.value))})]})]})}const pu="_statusBar_1r17k_1",hu="_segmentGroup_1r17k_16",mu="_chevron_1r17k_20",gu="_segment_1r17k_16",_u="_icon_1r17k_33",yu="_modelSegment_1r17k_39",wu="_modelChevron_1r17k_63",bu="_text_1r17k_74",ee={statusBar:pu,segmentGroup:hu,chevron:mu,segment:gu,icon:_u,modelSegment:yu,modelChevron:wu,text:bu};function xu(){const e=N(y=>y.activeSessionId),t=N(y=>e?y.sessions[e]:void 0),n=q(y=>y.client),s=N(y=>y.setModel),r=pt(),o=E(y=>y.activeWorkspaceCwd);zd(o||"");const a=Q(y=>y.available),c=Q(y=>y.branch),d=Q(y=>y.ahead),h=Q(y=>y.behind),m=Q(y=>y.detached),b=Q(y=>y.conflictCount),f=Q(y=>y.changes.length),p=os(y=>e?y.bySession[e]:void 0);Ad(e);const S=[];if(t){const y=Fd(t.cwd,r);S.push({key:"cwd",icon:i.jsx(Me,{size:13}),text:y,title:t.cwd})}if(a){const y=Wd(d,h),M=[m?"(detached)":c??"?"];y&&M.push(y),f>0&&M.push(`●${f}`),b>0&&M.push(`⚠${b}`),S.push({key:"branch",icon:i.jsx(Bs,{size:13}),text:M.join(" ")})}if(t){const y=`${Pd(p==null?void 0:p.contextPercent)} (${Le(p==null?void 0:p.contextTokens)}/${Le(p==null?void 0:p.contextWindow)})`;S.push({key:"context",icon:i.jsx(Ds,{size:13}),text:y}),S.push({key:"tokens",icon:i.jsx(As,{size:13}),text:Le(p==null?void 0:p.totalTokens),title:`in ${Le(p==null?void 0:p.inputTokens)} / out ${Le(p==null?void 0:p.outputTokens)}`}),S.push({key:"cost",icon:i.jsx($s,{size:13}),text:Od(p==null?void 0:p.cost)})}function _(y,M){e&&(s(e,y,M),!(!n||!M)&&(async()=>{const O=await Vn(n,e);await n.agent(O).setModel(M,y)})().catch(()=>{}))}return i.jsxs("div",{className:ee.statusBar,children:[t&&i.jsx("span",{className:ee.segmentGroup,children:i.jsx(fu,{currentModel:t.model,provider:"pi",onSelect:_,renderTrigger:y=>i.jsxs("button",{type:"button",className:ee.modelSegment,disabled:!n,title:y?`Model: ${y}`:"Select model",children:[i.jsx("span",{className:ee.icon,children:i.jsx(zs,{size:13})}),i.jsx("span",{className:ee.text,children:y??"Model"}),i.jsx(yn,{size:12,className:ee.modelChevron,"aria-hidden":"true"})]})})}),S.map((y,M)=>i.jsxs("span",{className:ee.segmentGroup,children:[(!!t||M>0)&&i.jsx(Mt,{size:12,className:ee.chevron,"aria-hidden":"true"}),i.jsxs("span",{className:ee.segment,title:y.title,children:[i.jsx("span",{className:ee.icon,children:y.icon}),i.jsx("span",{className:ee.text,children:y.text})]})]},y.key))]})}const Su="_wrapper_14joh_3",vu="_box_14joh_18",ku="_checkmark_14joh_38",Iu="_nativeInput_14joh_43",rt={wrapper:Su,box:vu,checkmark:ku,nativeInput:Iu};w.forwardRef(function({label:t,checked:n=!1,disabled:s,className:r,onChange:o,...a},c){return i.jsxs("label",{className:rt.wrapper,"data-disabled":s||void 0,children:[i.jsx("input",{ref:c,type:"checkbox",className:rt.nativeInput,checked:n,disabled:s,onChange:o,...a}),i.jsx("span",{className:rt.box,"data-checked":n,"aria-hidden":!0,children:n&&i.jsx(In,{size:12,className:rt.checkmark})}),t&&i.jsx("span",{children:t})]})});const ju="_select_dl3mw_3",Cu={select:ju};w.forwardRef(function({options:t,placeholder:n,className:s,...r},o){return i.jsxs("select",{ref:o,className:z(Cu.select,s),...r,children:[n&&i.jsx("option",{value:"",disabled:!0,children:n}),t.map(a=>i.jsx("option",{value:a.value,children:a.label},a.value))]})});const Tu="_overlay_1k4ng_1",Eu="_contentWrapper_1k4ng_7",Ru="_dialog_1k4ng_16",Nu="_header_1k4ng_28",qu="_title_1k4ng_36",Mu="_body_1k4ng_43",Bu="_footer_1k4ng_49",Du="_bare_1k4ng_58",Au="_bareBody_1k4ng_64",$u="_bareCloseBtn_1k4ng_68",zu="_visuallyHidden_1k4ng_73",te={overlay:Tu,contentWrapper:Eu,dialog:Ru,header:Nu,title:qu,body:Mu,footer:Bu,bare:Du,bareBody:Au,bareCloseBtn:$u,visuallyHidden:zu},Pu=kt;function Ou({open:e,onOpenChange:t,title:n,children:s,footer:r,width:o,className:a,bare:c=!1}){return i.jsx(Ls,{open:e,onOpenChange:t,children:i.jsxs(Hs,{children:[i.jsx(Us,{className:te.overlay}),i.jsx("div",{className:te.contentWrapper,children:i.jsxs(Ks,{className:z(te.dialog,c&&te.bare,a),style:o!==void 0?{width:o}:void 0,children:[c?i.jsx(Ut,{className:te.visuallyHidden,children:n}):i.jsxs("div",{className:te.header,children:[i.jsx(Ut,{className:te.title,children:n}),i.jsx(kt,{asChild:!0,children:i.jsx(xe,{size:"sm","aria-label":"Close",children:i.jsx(St,{size:16})})})]}),i.jsx("div",{className:z(te.body,c&&te.bareBody),children:s}),c&&i.jsx(kt,{asChild:!0,children:i.jsx(xe,{size:"sm","aria-label":"Close",className:te.bareCloseBtn,style:{background:"var(--pi-color-surface1)",border:"1px solid var(--pi-color-border)",borderRadius:"50%"},children:i.jsx(St,{size:16})})}),r&&i.jsx("div",{className:te.footer,children:r})]})})]})})}const Fu="_handle_1j18v_1",Wu={handle:Fu};function mn({side:e,onResize:t,className:n}){const s=w.useRef(0),r=w.useCallback(c=>{const d=c.clientX-s.current;s.current=c.clientX,t(e==="left"?d:-d)},[t,e]),o=w.useCallback(c=>{var d,h;window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",o),document.body.style.cursor="",document.body.style.userSelect="",(h=(d=c.target)==null?void 0:d.releasePointerCapture)==null||h.call(d,c.pointerId)},[r]);function a(c){c.preventDefault(),s.current=c.clientX,document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",r),window.addEventListener("pointerup",o)}return i.jsx("div",{className:z(Wu.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}function Lu(e,t){const{order:n,sessions:s}=N.getState(),o=Pt(n,s,t).find(a=>a.cwd===e);if(o!=null&&o.sessions[0]){const a=o.sessions[0].id;N.getState().activate(a);const c=N.getState().sessions[a];E.getState().open({id:Y.chat(a),kind:"chat",label:(c==null?void 0:c.title)??"New chat",closable:!0,data:{sessionId:a},workspaceCwd:e})}else $t(e);j.getState().setCwd(e)}const Hu="_pathRow_1mu84_1",Uu="_pathInput_1mu84_9",Ku="_createRow_1mu84_13",Vu="_createInput_1mu84_21",Gu="_createError_1mu84_25",Xu="_list_1mu84_30",Yu="_item_1mu84_37",Ju="_name_1mu84_49",de={pathRow:Hu,pathInput:Uu,createRow:Ku,createInput:Vu,createError:Gu,list:Xu,item:Yu,name:Ju};function Qu(){const e=j(I=>I.cwdPickerOpen),t=j(I=>I.closeCwdPicker),n=E(I=>I.activeWorkspaceCwd),s=j(I=>I.cwd),r=q(I=>I.client),o=pt(),[a,c]=w.useState("/"),[d,h]=w.useState("/"),[m,b]=w.useState(!1),[f,p]=w.useState(""),[S,_]=w.useState(null),[y,M]=w.useState(!1),O=De();w.useEffect(()=>{if(!e)return;const I=Ae(n||s||"~",o);c(I),h(I),G()},[e,r,n,s]);const{data:T,isLoading:D,isError:K,error:$e}=ul(a,e&&!!r),he=((T==null?void 0:T.entries)??[]).filter(I=>I.kind==="directory");function G(){b(!1),p(""),_(null)}function ve(I){const ae=I.length>1?I.replace(/\/+$/,"")||"/":I;c(ae),h(ae),G()}function ke(){ve(a.split("/").slice(0,-1).join("/")||"/")}function ze(){ve(d.trim())}async function Ie(){const I=f.trim();if(!(!I||!r||y)){M(!0),_(null);try{const ae=await rs(r,a,I,"directory");await O.invalidateQueries({queryKey:ue.explorer(a)}),ve(ae)}catch(ae){_(ae instanceof Error?ae.message:"Failed to create folder")}finally{M(!1)}}}function je(){Lu(a,o),t()}return i.jsxs(Ou,{open:e,onOpenChange:I=>!I&&t(),title:"Open Workspace",footer:i.jsxs(i.Fragment,{children:[i.jsx(Pu,{asChild:!0,children:i.jsx(V,{size:"sm",variant:"secondary",children:"Cancel"})}),i.jsx(V,{size:"sm",onClick:je,children:"Open this folder"})]}),children:[i.jsxs("div",{className:de.pathRow,children:[i.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:ke,children:i.jsx(Ps,{size:13})}),i.jsx(lt,{className:de.pathInput,value:d,onChange:I=>h(I.target.value),onKeyDown:I=>{I.key==="Enter"&&(I.preventDefault(),ze())}}),i.jsx(V,{size:"xs",onClick:ze,children:"Go"}),i.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!r||K||m,onClick:()=>{b(!0),p(""),_(null)},children:i.jsx(it,{size:13})})]}),m&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:de.createRow,children:[i.jsx(Me,{size:14}),i.jsx(lt,{className:de.createInput,autoFocus:!0,placeholder:"New folder name",value:f,onChange:I=>p(I.target.value),onKeyDown:I=>{I.key==="Enter"?(I.preventDefault(),Ie()):I.key==="Escape"&&(I.preventDefault(),I.stopPropagation(),G())}}),i.jsx(V,{size:"xs",loading:y,disabled:!f.trim()||y,onClick:()=>void Ie(),children:"Create"}),i.jsx(V,{size:"xs",variant:"secondary",onClick:G,children:"Cancel"})]}),S&&i.jsx("div",{className:de.createError,children:S})]}),i.jsx("div",{className:de.list,children:D?i.jsx(we,{children:"Loading..."}):K?i.jsxs(we,{children:["Error: ",$e instanceof Error?$e.message:"unknown error"]}):he.length===0?i.jsx(we,{children:"No subdirectories"}):he.map(I=>i.jsxs("div",{className:de.item,onClick:()=>ve(a==="/"?`/${I.name}`:`${a}/${I.name}`),children:[i.jsx(Me,{size:14}),i.jsx("span",{className:de.name,children:I.name})]},I.name))})]})}const Zu="_shell_570m8_1",ef="_main_570m8_7",tf="_sidebarLeft_570m8_13",nf="_leftHandle_570m8_25",sf="_center_570m8_28",rf="_sidebarRight_570m8_35",of="_rightHandle_570m8_43",_e={shell:Zu,main:ef,sidebarLeft:tf,leftHandle:nf,center:sf,sidebarRight:rf,rightHandle:of};function af(){const e=j(a=>a.leftSidebarCollapsed),t=j(a=>a.rightSidebarCollapsed),n=j(a=>a.leftSidebarWidth),s=j(a=>a.rightSidebarWidth),r=j(a=>a.resizeLeftSidebar),o=j(a=>a.resizeRightSidebar);return i.jsxs("div",{className:_e.shell,children:[i.jsx(ji,{}),i.jsxs("div",{className:_e.main,children:[!e&&i.jsxs("aside",{className:_e.sidebarLeft,style:{width:n},children:[i.jsx(Bc,{}),i.jsx(mn,{side:"left",className:_e.leftHandle,onResize:r})]}),i.jsxs("div",{className:_e.center,children:[i.jsx(Kc,{}),i.jsx(cl,{})]}),!t&&i.jsxs("aside",{className:_e.sidebarRight,style:{width:s},children:[i.jsx(mn,{side:"right",className:_e.rightHandle,onResize:o}),i.jsx(Md,{})]})]}),i.jsx(xu,{}),i.jsx(Qu,{})]})}function cf(){const e=w.useRef(!1);w.useEffect(()=>{if(e.current)return;if(e.current=!0,window.location.hash.includes("offer=")){const d=window.location.href;j.getState().setHost(d),q.getState().connect({url:d});return}const t=new URLSearchParams(window.location.search),n=t.get("host"),s=t.get("pair"),r=t.get("password"),o=t.get("cwd"),a=t.get("connect")==="1",c=j.getState();if(s?c.setHost(s):n&&c.setHost(n),r&&c.setPassword(r),o&&c.setCwd(o),s)q.getState().connect({url:s});else if(a){const{host:d,password:h}=j.getState();q.getState().connect({url:d,password:h||void 0})}},[])}function lf(e){return typeof e=="object"&&e!==null&&"kind"in e}function df(e){const t=[];for(const n of e)if(lf(n))if(n.kind==="other")n.event&&t.push(n.event);else for(const s of n.events??[])t.push(s);return t}async function uf(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...df(s.items)),!s.hasNewer))return t;const r=s.endCursor;if(typeof r!="string"||r===n)return t;n=r}}function ff(e){return typeof e.model=="string"}function pf(){const e=q(s=>s.client),t=q(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,(async()=>{var b;let s=[];try{s=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{s=[]}s.sort((f,p)=>(p.lastActivity??0)-(f.lastActivity??0));const r=N.getState();for(const f of s){if(r.findByAgentId(f.agentId))continue;let p=Tt;try{p=(await uf(y=>e.agent(f.agentId).timeline.fetch({direction:"after",cursor:y??void 0,limit:200}))).reduce(Kn,Tt)}catch{}const S=p.rows.length===0;r.hydrate({id:`s-${f.agentId.slice(0,12)}`,agentId:f.agentId,title:f.title||(S?"New chat":(b=f.cwd)==null?void 0:b.split("/").pop())||"Restored",status:f.status??"idle",cwd:f.cwd||"~",timeline:p,userMessageCount:p.rows.filter(_=>_.kind==="user").length,model:f.model,modelProvider:f.modelProvider})}const{order:o,sessions:a}=N.getState(),c=o.length>0?a[o[0]??""]:void 0;if(!c)return;const d=await ft(e).catch(()=>null),h=Ae(c.cwd||"~",d),m=Pt(o,a,d);j.getState().setCollapsedWorkspaces(qc(m,h)),N.getState().activate(c.id),j.getState().setCwd(c.cwd),E.getState().open({id:Y.chat(c.id),kind:"chat",label:c.title,closable:!0,data:{sessionId:c.id},workspaceCwd:h})})())},[t,e]),w.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(ff(s)){const r=typeof s.modelProvider=="string"?s.modelProvider:void 0;N.getState().setModelByAgentId(s.agentId,s.model,r)}})},[t,e])}function hf(){const e=q(s=>s.client),t=q(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,(async()=>{let s=[];try{s=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{s=[]}if(s.length===0)return;const r=await ft(e).catch(()=>null),o=E.getState().open;for(const a of s){if(a.closed)continue;const c=Ae(a.cwd||"~",r);o({id:Y.terminal(a.slot),kind:"terminal",label:a.name,closable:!0,data:{slot:a.slot,cwd:c},workspaceCwd:c})}})())},[t,e])}function mf(){w.useEffect(()=>{function e(t){const n=j.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),Gn(E.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:r,tabs:o}=E.getState();if(!r)return;const a=o.find(c=>c.id===r);(a==null?void 0:a.closable)!==!1&&(t.preventDefault(),Et(r))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function gf(){return cf(),pf(),hf(),mf(),null}function _f(){return i.jsxs(Kr,{children:[i.jsx(gf,{}),i.jsx(af,{})]})}const as=document.getElementById("root");if(!as)throw new Error("Missing #root element");ms.createRoot(as).render(i.jsx(w.StrictMode,{children:i.jsx(_f,{})}));export{V as B,Ou as D,we as E,Je as M,Xn as P,Jn as S,Cf as T,qf as V,q as a,pt as b,Nf as c,Mf as d,Vn as e,Hd as f,Tf as g,E as h,ct as i,Ef as j,Rf as k,ln as l,Y as m,Ae as n,ue as r,re as s,Ci as t,N as u};
|
|
3
|
-
//# sourceMappingURL=index-CP2RuEUB.js.map
|