@av-pi-studio/web-client 0.0.52 → 0.0.53
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/web/assets/{BinaryFallbackViewer-C7VRdZi7.js → BinaryFallbackViewer-mpzWiSnO.js} +2 -2
- package/dist/web/assets/{BinaryFallbackViewer-C7VRdZi7.js.map → BinaryFallbackViewer-mpzWiSnO.js.map} +1 -1
- package/dist/web/assets/{ChatPanel-GkrDdBS1.js → ChatPanel-DkzghxDD.js} +2 -2
- package/dist/web/assets/{ChatPanel-GkrDdBS1.js.map → ChatPanel-DkzghxDD.js.map} +1 -1
- package/dist/web/assets/{CodeView-kJXF7jSu.js → CodeView-C1JNpC0H.js} +2 -2
- package/dist/web/assets/{CodeView-kJXF7jSu.js.map → CodeView-C1JNpC0H.js.map} +1 -1
- package/dist/web/assets/{FilePanel-DCobulZh.js → FilePanel-DyripXtT.js} +2 -2
- package/dist/web/assets/{FilePanel-DCobulZh.js.map → FilePanel-DyripXtT.js.map} +1 -1
- package/dist/web/assets/{ImageViewer-BPrAhaij.js → ImageViewer-kCGwfJK6.js} +2 -2
- package/dist/web/assets/{ImageViewer-BPrAhaij.js.map → ImageViewer-kCGwfJK6.js.map} +1 -1
- package/dist/web/assets/{MarkdownFileViewer-6YOnAwAu.js → MarkdownFileViewer-Bsnk43R7.js} +2 -2
- package/dist/web/assets/{MarkdownFileViewer-6YOnAwAu.js.map → MarkdownFileViewer-Bsnk43R7.js.map} +1 -1
- package/dist/web/assets/{MoleculeViewerPanel-CEBdcIi1.js → MoleculeViewerPanel-js-qLz7t.js} +2 -2
- package/dist/web/assets/{MoleculeViewerPanel-CEBdcIi1.js.map → MoleculeViewerPanel-js-qLz7t.js.map} +1 -1
- package/dist/web/assets/{TerminalPanel-DROW3jIj.js → TerminalPanel-BFeJqRjE.js} +2 -2
- package/dist/web/assets/{TerminalPanel-DROW3jIj.js.map → TerminalPanel-BFeJqRjE.js.map} +1 -1
- package/dist/web/assets/{TextViewer-v2fxij9-.js → TextViewer-BQ5pBxgI.js} +2 -2
- package/dist/web/assets/{TextViewer-v2fxij9-.js.map → TextViewer-BQ5pBxgI.js.map} +1 -1
- package/dist/web/assets/{VideoViewer-gg062hcg.js → VideoViewer-CGl515qS.js} +2 -2
- package/dist/web/assets/{VideoViewer-gg062hcg.js.map → VideoViewer-CGl515qS.js.map} +1 -1
- package/dist/web/assets/{index-B1LGLdgE.js → index-D9JEGDmu.js} +3 -3
- package/dist/web/assets/{index-B1LGLdgE.js.map → index-D9JEGDmu.js.map} +1 -1
- package/dist/web/assets/{markdown-DgsLAadd.js → markdown-BYfNvYaQ.js} +2 -2
- package/dist/web/assets/{markdown-DgsLAadd.js.map → markdown-BYfNvYaQ.js.map} +1 -1
- package/dist/web/assets/{use-file-download-BxFMnmoC.js → use-file-download-BBEHMJ-D.js} +2 -2
- package/dist/web/assets/{use-file-download-BxFMnmoC.js.map → use-file-download-BBEHMJ-D.js.map} +1 -1
- package/dist/web/assets/{use-file-watch-CgesjP1k.js → use-file-watch-OymI8MSJ.js} +2 -2
- package/dist/web/assets/{use-file-watch-CgesjP1k.js.map → use-file-watch-OymI8MSJ.js.map} +1 -1
- package/dist/web/index.html +1 -1
- package/package.json +3 -3
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatPanel-
|
|
2
|
-
var Zn=Object.defineProperty;var es=(e,t,n)=>t in e?Zn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var N=(e,t,n)=>es(e,typeof t!="symbol"?t+"":t,n);import{r as b,j as a,c as ts}from"./vendor-react-CWo7Do4s.js";import{Q as ns,a as ss,u as sn,b as os,c as Ne,d as rs}from"./vendor-query-BGIh-vlp.js";import{A as l,B as u,C as F,D as on,E as $,F as ve,G as de,H as A,I as w,J as L,K as U,L as it,M as Te,N as ke}from"./vendor-B8b-mb3g.js";import{L as as,P as is,a as cs,b as ls,c as ds,E as It,d as us,S as ps,A as fs,T as jt,C as Ct,e as rn,F as hs,f as an,g as cn,h as ln,i as dn,G as un,j as ms,M as pn,X as gt,k as Ee,l as fn,m as _t,n as rt,o as Je,p as gs,D as _s,U as ys,R as bs,q as hn,r as ws,s as xs,t as Ss,u as vs,v as ks,w as Is}from"./vendor-icons-o8-A85LK.js";import{R as Ue,T as Ke,P as Ve,C as Ge,I as D,S as Se,D as js,a as Cs,b as Ts,c as Es,d as $t,e as yt}from"./vendor-overlays-K8dEJFRA.js";import{u as Ns,a as Rs,D as Ms,c as qs,S as Bs,h as $s,P as As,b as Ds,C as Ps}from"./vendor-dnd-CH6z-X6S.js";import{_ as ue}from"./vendor-highlight-DJPF6TSB.js";import"./vendor-markdown-B7A4rVFd.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const Os=new ns;function mn(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 Fs(e){return Math.max(0,Math.min(255,Math.round(e)))}function zs({r:e,g:t,b:n}){const s=o=>Fs(o).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function Ws(e){const{r:t,g:n,b:s}=mn(e),o=r=>{const i=r/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*o(t)+.7152*o(n)+.0722*o(s)}function Tt(e,t="#18181b",n="#ffffff"){return Ws(e)>.45?t:n}function Ls(e,t){const{r:n,g:s,b:o}=mn(e),r=Math.max(0,Math.min(1,t));return zs({r:n+(255-n)*r,g:s+(255-s)*r,b:o+(255-o)*r})}function Ye(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const te=(e,t,n,s,o,r,i,c,d,m,h)=>({50:e,100:t,200:n,300:s,400:o,500:r,600:i,700:c,800:d,900:m,950:h}),S={zinc:te("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:te("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:te("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:te("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:te("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:te("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:te("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:te("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:te("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:te("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:te("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"},Hs={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea"},Us={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed"};function Ks(){return{keyword:S.purple[300],string:S.green[300],number:S.orange[300],boolean:S.orange[300],comment:S.zinc[500],function:S.blue[300],variable:S.zinc[200],type:S.teal[300],class:S.amber[300],constant:S.orange[300],operator:S.zinc[400],punctuation:S.zinc[400],tag:S.red[300],attribute:S.amber[300],property:S.blue[200],regexp:S.teal[300],escape:S.orange[200],heading:S.blue[300],link:S.blue[400],deleted:S.red[400],inserted:S.green[400]}}function Vs(){return{keyword:S.purple[700],string:S.green[700],number:S.orange[700],boolean:S.orange[700],comment:S.zinc[500],function:S.blue[700],variable:S.zinc[800],type:S.teal[700],class:S.amber[700],constant:S.orange[700],operator:S.zinc[600],punctuation:S.zinc[600],tag:S.red[700],attribute:S.amber[700],property:S.blue[700],regexp:S.teal[700],escape:S.orange[700],heading:S.blue[700],link:S.blue[600],deleted:S.red[700],inserted:S.green[700]}}function gn(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:S.zinc[900],red:S.red[500],green:S.green[500],yellow:S.amber[500],blue:S.blue[500],magenta:S.purple[500],cyan:S.teal[500],white:S.zinc[300],brightBlack:S.zinc[600],brightRed:S.red[400],brightGreen:S.green[400],brightYellow:S.amber[400],brightBlue:S.blue[400],brightMagenta:S.purple[400],brightCyan:S.teal[400],brightWhite:S.zinc[50]}}function $e(e){const t=S.zinc[50],n=Tt(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:S.white,success:e.accent,successForeground:S.white,border:e.border,borderAccent:e.borderAccent,...Hs,diffAddition:S.green[400],diffDeletion:S.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:S,syntax:Ks(),terminal:gn(e.surface0,t,e.accent)}}function Gs(){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:Tt(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...Us,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:S,syntax:Vs(),terminal:{...gn("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const Xs={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},_n=["light","dark","zinc","midnight","claude","ghostty"];function Js(e){if(e==="light")return Gs();switch(e){case"dark":return $e({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 $e({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 $e({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 $e({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 $e({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 yn={};for(const e of _n){const t=e==="light"?"light":"dark";yn[e]={name:e,colorScheme:t,colors:Js(e),swatch:Xs[e]}}const Ys=yn,Qs={0:0,1:4,"1.5":6,2:8,3:12,4:16,6:24,8:32,12:48,16:64,20:80,24:96,32:128},bn={xs:15,code:15,sm:17,base:20,lg:23,xl:25,"2xl":27,"3xl":33,"4xl":43},Zs={normal:"400",medium:"500",semibold:"600",bold:"700"},eo={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},to={0:0,1:1,2:2},no={0:0,50:.5,100:1},so={xs:12,sm:14,md:16,lg:20},oo={diff:22},wn='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',xn='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function ro(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 Sn(e){const t=Ys[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:Qs,fontSize:{...bn},fontFamily:{ui:wn,mono:xn},lineHeight:{...oo},iconSize:so,fontWeight:Zs,borderRadius:eo,borderWidth:to,opacity:no,shadow:ro(t.colorScheme),swatch:t.swatch}}const ao=16,io=10,co=24;function lo(e,t){const n=t.themeName??e.name,s=Sn(n),o=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:wn,r=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:xn;let i={...s.fontSize};if(t.fontSize!=null){const d=Math.max(io,Math.min(co,t.fontSize))/ao,m=["xs","code","sm","base","lg","xl","2xl","3xl","4xl"];for(const h of m){const x=bn[h];i[h]=Math.round(x*d)}}return{...s,fontSize:i,fontFamily:{ui:o,mono:r}}}function uo(e){return Sn(e)}const po="dark",fo=16;function ho(e){const t=e/fo;return`${Number(t.toFixed(4))}rem`}function mo(e){const t={};go(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}`]=ho(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 o=s;t[`--pi-shadow-${n}`]=`${o.offsetX}px ${o.offsetY}px ${o.radius}px ${o.color}`}return t["--pi-color-scheme"]=e.colorScheme,t}function go(e,t){const{palette:n,syntax:s,terminal:o,...r}=e;for(const[i,c]of Object.entries(r))typeof c=="string"&&(t[`--pi-color-${i}`]=c);s&&_o(s,t),o&&(t["--pi-terminal-bg"]=o.background,t["--pi-terminal-fg"]=o.foreground)}function _o(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${yo(n)}`]=s)}function yo(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function bo(e){if(typeof document>"u")return;const t=document.documentElement.style;for(const[s,o]of Object.entries(e))t.setProperty(s,o);const n=e["--pi-color-scheme"];n&&document.documentElement.style.setProperty("color-scheme",n)}function wo(e){const t=mo(e);bo(t)}const Ae=l().min(1,"Asset path must not be empty"),xo=u({accent:l().refine(Ye,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(Ye,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(Ye,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(Ye,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),So=u({logoLight:Ae,logoDark:Ae,logoMark:Ae.optional(),icon:Ae,splash:Ae.optional()}),vo=u({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),ko=u({copyright:l().optional(),companyName:l().optional()}).optional();u({productName:l().min(1,"productName is required"),shortName:l().optional(),tagline:l().optional(),colors:xo,assets:So,links:vo,legal:ko});function Io(e){const t=e.accent,n=e.accentBright??Ls(t,.35),s=e.accentForeground??Tt(t),o=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:o}}function jo(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 At="pi-studio-appearance";function Co(e,t){let n=c(e),s=null;function o(h){return h==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":h}function r(h,x){const p=o(h),f=uo(p);let v=lo(f,{...x,themeName:p});if(t!=null&&t.colors){const y=Io(t.colors);v=jo(v,y)}return v}function i(){const h=JSON.stringify({mode:n.mode,settings:n.settings});e.set(At,h)}function c(h){const x=h.get(At);let p=po,f={};if(x)try{const y=JSON.parse(x);y.mode&&(_n.includes(y.mode)||y.mode==="system")&&(p=y.mode),y.settings&&typeof y.settings=="object"&&(f=y.settings)}catch{}const v=r(p,f);return{mode:p,settings:f,resolvedTheme:v}}function d(){n={...n,resolvedTheme:r(n.mode,n.settings)},i()}const m={getState(){return n},setMode(h){n={...n,mode:h},d(),m.apply()},updateSettings(h){n={...n,settings:{...n.settings,...h}},d(),m.apply()},apply(){wo(n.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const h=window.matchMedia("(prefers-color-scheme: dark)"),x=()=>{n.mode==="system"&&(d(),m.apply())};return h.addEventListener("change",x),s=()=>h.removeEventListener("change",x),s}};return m}function To({store:e,brandConfig:t,children:n}){const s=b.useRef(null);return s.current||(s.current=Co(e,t),s.current.apply()),b.useEffect(()=>s.current.listen(),[]),a.jsx(a.Fragment,{children:n})}const Eo={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 No({children:e}){return a.jsx(To,{store:Eo,children:a.jsx(ss,{client:Os,children:e})})}const Ro="_btn_1chbg_4",Mo="_secondary_1chbg_44",qo="_outline_1chbg_53",Bo="_ghost_1chbg_62",$o="_destructive_1chbg_72",Ao="_iconOnly_1chbg_82",Do="_loadingSpinner_1chbg_89",Po="_piSpin_1chbg_1",Qe={btn:Ro,default:"_default_1chbg_35",secondary:Mo,outline:qo,ghost:Bo,destructive:$o,iconOnly:Ao,loadingSpinner:Do,piSpin:Po},Dt={xs:28,sm:32,md:36,lg:40},Oo={xs:12,sm:14,md:16,lg:20},Pt={xs:8,sm:10,md:12,lg:16},Fo={xs:"0.9375rem",sm:"1rem",md:"1.0625rem",lg:"1.1875rem"};function zo(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:o,trailing:r,iconOnly:i=!1,children:c,style:d,className:m,...h}){const{opacity:x}=zo({disabled:s??!1,loading:n}),p=s||n,f=Oo[t];return a.jsxs("button",{className:F(Qe.btn,Qe[e],i&&Qe.iconOnly,m),disabled:p,"aria-busy":n||void 0,style:{minHeight:Dt[t],paddingLeft:i?void 0:Pt[t],paddingRight:i?void 0:Pt[t],fontSize:Fo[t],opacity:x,...i?{width:Dt[t]}:{},...d},...h,children:[n?a.jsx(as,{className:Qe.loadingSpinner,size:f,"aria-hidden":!0}):o?a.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o}):null,c,r&&!n&&a.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r})]})}const Wo="_input_14ys1_3",Lo="_textarea_14ys1_32",bt={input:Wo,textarea:Lo},at=b.forwardRef(function({className:t,...n},s){return a.jsx("input",{ref:s,className:F(bt.input,t),...n})}),sp=b.forwardRef(function({className:t,...n},s){return a.jsx("textarea",{ref:s,className:F(bt.input,bt.textarea,t),...n})}),vn=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const Le=on([$(),vn]),Ho=ve(["mobile","browser","cli","mcp"]),Uo=u({type:w("hello"),clientId:l(),clientType:Ho,protocolVersion:$(),appVersion:l().optional(),capabilities:de(l(),A()).optional()}),Ko=u({status:w("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),capabilities:de(l(),L()),features:de(l(),L())}),Vo=u({type:w("status"),payload:Ko}),Go=u({type:w("ping"),requestId:l(),clientSentAt:Le.optional()}),Xo=u({type:w("pong"),requestId:l(),clientSentAt:Le.optional(),serverReceivedAt:Le,serverSentAt:Le}),kn=ve(["initializing","idle","running","error","closed"]),ct=u({mimeType:l().optional(),data:l().optional()}).passthrough(),Jo=u({prs:U(L()).optional(),issues:U(L()).optional()}).passthrough(),Yo=u({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:de(l(),L()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:A().optional(),webSearch:A().optional(),extra:u({pi:L().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:de(l(),L()).optional()}),Qo=u({type:w("create_agent_request"),requestId:l(),config:Yo,env:de(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:de(l(),L()).optional(),images:U(ct).optional(),attachments:Jo.optional(),git:L().optional(),worktree:L().optional(),autoArchive:A().optional(),labels:de(l(),l()).default({})}),Zo=u({type:w("create_agent_response"),requestId:l(),payload:u({agentId:l()}).passthrough()}),er=u({type:w("agent_update"),agentId:l(),status:kn.optional(),title:l().nullable().optional(),labels:de(l(),l()).optional()}),tr=u({type:w("agent_status"),agentId:l(),status:kn}),nr=u({type:w("agent_list"),agents:U(u({id:l()}).passthrough())}),sr=u({type:w("agent_deleted"),agentId:l()}),or=u({type:w("agent_archived"),agentId:l(),archivedAt:vn.optional()}),In=it("kind",[u({kind:w("shell"),command:l().optional(),output:l().optional()}),u({kind:w("read"),path:l().optional(),output:l().optional()}),u({kind:w("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),u({kind:w("write"),path:l().optional(),output:l().optional()}),u({kind:w("search"),query:l().optional(),output:l().optional()}),u({kind:w("fetch"),url:l().optional(),output:l().optional()}),u({kind:w("task"),description:l().optional(),output:l().optional()})]),rr=it("kind",[u({kind:w("user_message"),messageId:l().optional(),text:l().optional(),images:U(ct).optional()}),u({kind:w("assistant_message"),messageId:l().optional(),text:l().optional()}),u({kind:w("reasoning"),text:l().optional()}),u({kind:w("tool_call"),callId:l().optional(),tool:In,status:l().optional()}),u({kind:w("turn_started"),turnId:l().optional()}),u({kind:w("turn_completed"),turnId:l().optional()}),u({kind:w("turn_failed"),turnId:l().optional(),error:l().optional()}),u({kind:w("turn_canceled"),turnId:l().optional()}),u({kind:w("error"),message:l().optional()}),u({kind:w("queue_update"),steering:U(l()).optional(),followUp:U(l()).optional()})]),ar=u({type:w("agent_stream"),agentId:l(),seq:$().optional(),timestamp:Le.optional(),event:rr}),ir=ve(["before","after"]),cr=u({start:$(),end:$()}),lr=u({type:w("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:ir,limit:$().optional()}),dr=u({type:w("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:U(L()),seqStart:$(),seqEnd:$(),sourceSeqRanges:U(cr),collapsed:A(),hasNewer:A(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),ur=u({type:w("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:In.optional(),action:L().optional(),responses:U(l()).optional()}),pr=u({type:w("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),fr=u({type:w("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:L()}),hr=u({type:w("agent.permission.respond.response"),requestId:l(),payload:u({resolved:A()}).passthrough()}),mr=u({type:w("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:L()}),jn=ve(["conversation","files","both"]),gr=u({type:w("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:jn}).passthrough(),_r=u({type:w("agent.rewind.response"),requestId:l(),payload:u({agentId:l(),messageId:l(),mode:jn,truncatedAt:l().optional()}).passthrough()}).passthrough(),yr=u({input:$().optional(),output:$().optional(),cacheRead:$().optional(),cacheWrite:$().optional(),total:$().optional()}).passthrough(),br=u({tokens:$().nullable().optional(),contextWindow:$().optional(),percent:$().nullable().optional()}).passthrough(),wr=u({type:w("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),xr=u({type:w("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:yr.optional(),cost:$().optional(),contextUsage:br.optional(),model:l().optional()}).passthrough()}).passthrough(),Sr=u({type:w("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),vr=u({type:w("agent_compact_response"),requestId:l(),payload:u({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:$().optional(),details:L().optional()}).passthrough()}).passthrough(),kr=u({type:w("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),Ir=u({type:w("agent_new_session_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),jr=u({type:w("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),Cr=u({type:w("agent_switch_session_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),Tr=u({type:w("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),Er=u({type:w("agent_fork_response"),requestId:l(),payload:u({text:l(),cancelled:A()}).passthrough()}).passthrough(),Nr=u({type:w("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),Rr=u({type:w("agent_fork_messages_response"),requestId:l(),payload:u({messages:U(u({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),Mr=u({type:w("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),qr=u({type:w("agent_clone_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),Br=u({type:w("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),$r=u({type:w("agent_set_session_name_response"),requestId:l(),payload:u({}).passthrough().optional()}).passthrough(),Ar=u({type:w("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),Dr=u({type:w("agent_export_html_response"),requestId:l(),payload:u({path:l()}).passthrough()}).passthrough(),Pr=u({type:w("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),Or=u({type:w("agent_set_model_response"),requestId:l(),payload:u({}).passthrough()}).passthrough(),Fr=u({type:w("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),zr=u({type:w("agent_cycle_model_response"),requestId:l(),payload:u({model:L().nullable().optional(),thinkingLevel:l().optional(),isScoped:A().optional()}).passthrough()}).passthrough(),Wr=u({type:w("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),Lr=u({type:w("agent_last_assistant_text_response"),requestId:l(),payload:u({text:l().nullable()}).passthrough()}).passthrough(),Hr=u({type:w("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:U(ct).optional(),clientMessageId:l().optional()}).passthrough(),Ur=u({type:w("steer_agent_response"),requestId:l(),agentId:l(),ok:A()}).passthrough(),Kr=u({type:w("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:U(ct).optional(),clientMessageId:l().optional()}).passthrough(),Vr=u({type:w("follow_up_agent_response"),requestId:l(),agentId:l(),ok:A()}).passthrough(),Gr=u({name:l(),id:l().optional(),description:l().optional(),source:ve(["extension","prompt","skill"]).optional(),scope:ve(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),Xr=u({type:w("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),Jr=u({type:w("agent_list_commands_response"),requestId:l(),payload:u({commands:U(Gr)}).passthrough()}).passthrough(),Yr=u({type:w("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),Qr=it("type",[Qo,Zo,er,tr,nr,sr,or,ar,lr,dr,ur,pr,fr,hr,mr,gr,_r,wr,xr,Sr,vr,kr,Ir,jr,Cr,Tr,Er,Nr,Rr,Mr,qr,Br,$r,Ar,Dr,Pr,Or,Fr,zr,Wr,Lr,Hr,Ur,Kr,Vr,Xr,Jr,Yr]),Zr=u({type:l()}).passthrough(),ea=u({type:w("session"),message:on([Qr,Zr])});it("type",[Uo,Vo,Go,Xo,ea]);const ta={inline_image_markdown:"inline_image_markdown"},Ie={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},na=Object.fromEntries(Object.entries(Ie).map(([e,t])=>[t,e])),Cn=u({rows:$().int().nonnegative(),cols:$().int().nonnegative()});class Fe extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const sa=new TextEncoder,oa=new TextDecoder;function ra(e){if(!Number.isInteger(e)||e<0||e>255)throw new Fe(`slot must be an integer 0–255, got ${e}`)}function De(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function op(e){switch(ra(e.slot),e.opcode){case"Output":return De(Ie.Output,e.slot,e.data);case"Input":return De(Ie.Input,e.slot,e.data);case"Snapshot":return De(Ie.Snapshot,e.slot,e.data);case"Restore":return De(Ie.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(Cn.parse({rows:e.rows,cols:e.cols}));return De(Ie.Resize,e.slot,sa.encode(t))}}}function aa(e){if(e.length<2)throw new Fe(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=na[t];if(!s)throw new Fe(`unknown terminal opcode 0x${t.toString(16)}`);const o=e.subarray(2);if(s==="Resize"){let r;try{r=JSON.parse(oa.decode(o))}catch{throw new Fe("resize payload is not valid JSON")}const i=Cn.safeParse(r);if(!i.success)throw new Fe("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:i.data.rows,cols:i.data.cols}}return{opcode:s,slot:n,data:o.slice()}}const Ce={Begin:16,Chunk:17,End:18,Error:19},ia=Object.fromEntries(Object.entries(Ce).map(([e,t])=>[t,e])),Tn=u({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:$().int().nonnegative().optional()});class ze extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const Ot=new TextEncoder,Ft=new TextDecoder;function ca(e){if(!Number.isInteger(e)||e<0||e>255)throw new ze(`stream must be an integer 0–255, got ${e}`)}function Ze(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function ut(e){switch(ca(e.stream),e.opcode){case"Begin":return Ze(Ce.Begin,e.stream,Ot.encode(JSON.stringify(Tn.parse(e.meta))));case"Chunk":return Ze(Ce.Chunk,e.stream,e.data);case"End":return Ze(Ce.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return Ze(Ce.Error,e.stream,Ot.encode(e.message))}}function la(e){if(e.length<2)throw new ze(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=ia[t];if(!s)throw new ze(`unknown file-transfer opcode 0x${t.toString(16)}`);const o=e.subarray(2);switch(s){case"Begin":{let r;try{r=JSON.parse(Ft.decode(o))}catch{throw new ze("begin payload is not valid JSON")}const i=Tn.safeParse(r);if(!i.success)throw new ze("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:i.data}}case"Chunk":return{opcode:"Chunk",stream:n,data:o.slice()};case"End":return{opcode:"End",stream:n,ok:(o[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:Ft.decode(o)}}}function da(e){try{return la(e)}catch{return null}}const ua=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),pa=ve(["safe","moderate","dangerous","planning"]),fa=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(),ha=u({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:pa});u({id:ua,label:l(),description:l().optional(),extends:l().optional(),modes:U(ha),capabilities:fa});function wt(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function En(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((o,r)=>{const i=e??(()=>new WebSocket(s));try{t=e?i(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(c){r(c);return}t.onopen=()=>o(),t.onerror=c=>{var d;(t==null?void 0:t.readyState)!==1&&r(c),(d=n.onError)==null||d.call(n,c)},t.onclose=c=>{var d;(d=n.onClose)==null||d.call(n,c.code,wt(c.reason))},t.onmessage=c=>{var m,h,x,p;const{data:d}=c;d instanceof ArrayBuffer||d instanceof Uint8Array?(m=n.onMessage)==null||m.call(n,d):typeof d=="string"?(h=n.onMessage)==null||h.call(n,d):typeof Blob<"u"&&d instanceof Blob?(x=n.onMessage)==null||x.call(n,d):Buffer.isBuffer(d)&&((p=n.onMessage)==null||p.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,o=""){t==null||t.close(s,o),t=null}};return n}const We="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Nn(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],o=n+1<e.length,r=n+2<e.length,i=o?e[n+1]:0,c=r?e[n+2]:0;t+=We[s>>2],t+=We[(s&3)<<4|i>>4],t+=o?We[(i&15)<<2|c>>6]:"=",t+=r?We[c&63]:"="}return t}function Rn(e){const t=e.replace(/=+$/,""),n=[];let s=0,o=0;for(const r of t){const i=We.indexOf(r);if(i===-1)throw new Error(`invalid base64 character: ${JSON.stringify(r)}`);s=s<<6|i,o+=6,o>=8&&(o-=8,n.push(s>>o&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 st=24;function Mn(e,t){const n=Te.randomBytes(st),s=Te.box.after(e,n,t),o=new Uint8Array(n.length+s.length);return o.set(n,0),o.set(s,n.length),Nn(o)}function qn(e,t){let n;try{n=Rn(e)}catch{return null}if(n.length<st)return null;const s=n.slice(0,st),o=n.slice(st);return Te.box.open.after(o,s,t)}function ga(e,t){return Mn(new TextEncoder().encode(e),t)}function _a(e,t){const n=qn(e,t);return n?new TextDecoder().decode(n):null}function ya(e,t,n,s,o,r){let i=!1;return n.onClose(c=>{var d;i=!0,(d=s.onClose)==null||d.call(s,c)}),{handleAppFrame(c){var h,x;if(i)return;const d=o();if(!r()||!d)return;const m=_a(c.frame,d);if(m===null){(h=s.onAuthError)==null||h.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(x=s.onMessage)==null||x.call(s,m)},handleBinaryFrame(c){var h,x;if(i)return;const d=o();if(!r()||!d)return;const m=qn(c.frame,d);if(m===null){(h=s.onAuthError)==null||h.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(x=s.onBinaryMessage)==null||x.call(s,m)},send(c){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const d=o();if(!r()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_app",frame:ga(c,d)}))},sendBinary(c){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const d=o();if(!r()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_bin",frame:Mn(c,d)}))},close(){i||(i=!0,n.close())}}}function ba(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,o=e.events??{},r=Te.box.keyPair(),i=Te.box.before(s,r.secretKey);let c=!1;const d=ya("client",n,t,o,()=>i,()=>c);return t.onMessage(m=>{var x;const h=ma(m);if(h){if(h.type==="e2ee_ready"){if(c)return;c=!0,(x=o.onReady)==null||x.call(o);return}if(h.type==="e2ee_app"){d.handleAppFrame(h);return}h.type==="e2ee_bin"&&d.handleBinaryFrame(h)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:Nn(r.publicKey)})),{role:"client",attachment:n,get ready(){return c},send:d.send,sendBinary:d.sendBinary,close:d.close}}const wa=16;function xa(e){const t=Te.hash(e);let n="";for(let s=0;s<wa;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Sa(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function va(e){let t=null,n=null;const s=e.sessionId??xa(e.daemonPublicKey),o={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},connect(r){return new Promise((i,c)=>{const d=e.factory??(()=>new WebSocket(r));try{t=e.factory?d(r):new WebSocket(r)}catch(p){c(p);return}const m=t,h=[],x=[];m.onopen=()=>{m.send(JSON.stringify({type:"relay_register",sessionId:s})),n=ba({transport:{send:p=>m.send(p),onMessage:p=>h.push(p),onClose:p=>x.push(p),close:()=>m.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>i(),onMessage:p=>{var f;return(f=o.onMessage)==null?void 0:f.call(o,p)},onBinaryMessage:p=>{var f;return(f=o.onMessage)==null?void 0:f.call(o,p.slice().buffer)},onAuthError:p=>{var f;return(f=o.onError)==null?void 0:f.call(o,p)}}})},m.onerror=p=>{var f;m.readyState!==1&&c(p),(f=o.onError)==null||f.call(o,p)},m.onclose=p=>{var f;for(const v of x)v(wt(p.reason));(f=o.onClose)==null||f.call(o,p.code,wt(p.reason))},m.onmessage=p=>{const{data:f}=p;if(typeof f=="string")for(const v of h)v(f)}})},sendText(r){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(r)},sendBinary(r){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(r)},close(r=1e3,i=""){n==null||n.close(),n=null,t==null||t.close(r,i),t=null}};return o}function ka(e){const t=e.indexOf("#"),n=t===-1?e:e.slice(t+1),s=new URLSearchParams(n),o=s.get("offer");if(!o)return null;let r;try{r=Rn(o)}catch{return null}const i=s.get("relay");if(i){const d={endpoint:i,useTls:s.get("relayTls")==="1"};return{publicKeyB64:o,publicKey:r,relay:d}}const c=s.get("host")??void 0;return{publicKeyB64:o,publicKey:r,...c?{host:c}:{}}}const Ia=1;function xt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class ja extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class zt extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class Ca{constructor(t){N(this,"transport");N(this,"rpcTimeoutMs");N(this,"now");N(this,"_state","idle");N(this,"_serverId",null);N(this,"_features",{});N(this,"_serverCapabilities",{});N(this,"pending",new Map);N(this,"sessionHandlers",new Set);N(this,"terminalHandlers",new Set);N(this,"fileTransferHandlers",new Set);N(this,"stateHandlers",new Set);N(this,"helloResolve",null);N(this,"helloReject",null);this.options=t,this.transport=t.transport??En(),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,o)=>{this.helloResolve=s,this.helloReject=o});this.transport.sendText(JSON.stringify({type:"hello",clientId:this.options.clientId,clientType:this.options.clientType,protocolVersion:this.options.protocolVersion??Ia,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 o=n.requestId??xt();return new Promise((r,i)=>{const c=s??this.rpcTimeoutMs,d=c>0?setTimeout(()=>{this.pending.delete(o),i(new zt(o))},c):null;this.pending.set(o,{resolve:m=>r(m),reject:i,timer:d}),this.sendSession({type:t,...n,requestId:o})})}sendSession(t){this.transport.sendText(JSON.stringify({type:"session",message:t}))}sendBinary(t){this.transport.sendBinary(t)}ping(t=1e4){const n=xt();return new Promise((s,o)=>{const r=t>0?setTimeout(()=>{this.pending.delete(n),o(new zt(n))},t):null;this.pending.set(n,{resolve:()=>s(),reject:o,timer:r}),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(Ce).includes(n)){const r=da(t);if(!r)return;for(const i of this.fileTransferHandlers)i(r);return}const o=aa(t);for(const r of this.terminalHandlers)r(o)}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 ja(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 Ta{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 Na(this.daemon,t)}workspace(t){return new Ra(this.daemon,t)}get providers(){return new Ma(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 Ea{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 Na{constructor(t,n){N(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new Ea(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 Ra{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 Ma{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 Wt=32*1024;function qa(e){const t=e.reduce((o,r)=>o+r.length,0),n=new Uint8Array(t);let s=0;for(const o of e)n.set(o,s),s+=o.length;return n}class Ba{constructor(t){N(this,"pending",new Map);N(this,"nextStream",1);N(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){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=this.nextStream++,o=new Promise((i,c)=>{this.pending.set(s,{chunks:[],meta:{},resolve:i,reject:c})}),r=await this.daemon.request("file_download_request",{token:n.token,stream:s});if(!r.ok)throw this.pending.delete(s),new Error(r.error??"download request failed");return o}async upload(t,n){const s=xt(),o=await this.daemon.request("file_upload_request",{path:t,transferId:s});if(!o.ok||o.stream===void 0)throw new Error(o.error??"upload request failed");const r=o.stream;this.daemon.sendBinary(ut({opcode:"Begin",stream:r,meta:{transferId:s}}));for(let i=0;i<n.length;i+=Wt){const c=n.subarray(i,i+Wt);this.daemon.sendBinary(ut({opcode:"Chunk",stream:r,data:c}))}this.daemon.sendBinary(ut({opcode:"End",stream:r,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 $a{constructor(t,n={}){N(this,"initialDelayMs");N(this,"maxDelayMs");N(this,"factor");N(this,"jitter");N(this,"maxAttempts");N(this,"setTimer");N(this,"clearTimer");N(this,"random");N(this,"attempt",0);N(this,"timer",null);N(this,"active",!1);N(this,"detachState",null);N(this,"reconnectedHandlers",new Set);N(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,o)=>setTimeout(s,o)),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 Lt(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(),o=t.slice(n[0].length).replace(/\/+$/,"");switch(s){case"http":return`ws://${o}`;case"https":return`wss://${o}`;case"ws":case"wss":return`${s}://${o}`;default:return t}}function Aa(e){const t=ka(e);return t!=null&&t.relay?{mode:"relay",url:Sa(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:Lt(t.host)}:{mode:"direct",url:Lt(e)}}const Da=32,X=new Map;function Pa(){for(;X.size>Da;){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 rp(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),Pa(),s.pending=t(e).then(o=>{const r=new Blob([Uint8Array.from(o.bytes)],{type:o.mimeType||"application/octet-stream"}),i={objectUrl:URL.createObjectURL(r),mimeType:o.mimeType};return X.get(e)===s?(s.entry=i,s.pending=null):URL.revokeObjectURL(i.objectUrl),i}).catch(o=>{throw X.get(e)===s&&X.delete(e),o}),s.pending}function ap(e){const t=X.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function Oa(){for(const e of X.values())e.entry&&URL.revokeObjectURL(e.entry.objectUrl);X.clear()}function Fa(){return"web-"+Math.random().toString(36).slice(2,10)}const M=ke()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=Aa(n.url);let o;s.mode==="relay"?o=va({daemonPublicKey:s.daemonPublicKey}):n.password&&(o=En(d=>new WebSocket(d,[`pi-studio.bearer.${n.password}`])));const r=new Ca({url:s.url,clientId:n.clientId??Fa(),clientType:"browser",capabilities:{[ta.inline_image_markdown]:!0},transport:o,rpcTimeoutMs:1800*1e3}),i=new Ta(r),c=new $a(r);r.onStateChange(d=>e({status:d})),c.onReconnected(()=>e({error:null})),c.onReconnectFailed(d=>{e({error:d instanceof Error?d.message:String(d)})}),e({daemon:r,client:i,reconnection:c,error:null,status:"connecting"});try{const d=await r.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(),Oa(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}})),za=100,Wa=480,La=220,Ha=280;function et(e){return Math.min(Wa,Math.max(za,e))}const C=ke()(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:La,rightSidebarWidth:Ha,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,o,r)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:o,background:r}}),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:et(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:et(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:et(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:et(n.rightSidebarWidth+t)}))})),Ua="_wrap_ym570_1",Ka="_dot_ym570_8",Va="_open_ym570_15",Ga="_connecting_ym570_18",Xa="_closed_ym570_21",Ja="_idle_ym570_22",Ya="_closing_ym570_23",pt={wrap:Ua,dot:Ka,open:Va,connecting:Ga,closed:Xa,idle:Ja,closing:Ya},Qa={idle:"disconnected",connecting:"connecting…",open:"connected",closing:"disconnecting…",closed:"disconnected"};function Za(){const e=M(n=>n.status),t=M(n=>n.error);return a.jsxs("span",{className:pt.wrap,title:t??void 0,children:[a.jsx("span",{className:F(pt.dot,pt[e])}),Qa[e]??e]})}const ei="_toolbar_1dzkx_1",ti="_brand_1dzkx_10",ni="_version_1dzkx_16",si="_sep_1dzkx_22",oi="_host_1dzkx_28",ri="_password_1dzkx_31",ai="_sidebarToggles_1dzkx_34",be={toolbar:ei,brand:ti,version:ni,sep:si,host:oi,password:ri,sidebarToggles:ai};function ii(){const e=M(p=>p.status),t=M(p=>p.connect),n=M(p=>p.disconnect),s=C(p=>p.host),o=C(p=>p.setHost),r=C(p=>p.password),i=C(p=>p.setPassword),c=C(p=>p.leftSidebarCollapsed),d=C(p=>p.toggleLeftSidebar),m=C(p=>p.rightSidebarCollapsed),h=C(p=>p.toggleRightSidebar),x=e==="open"||e==="connecting";return a.jsxs("div",{className:be.toolbar,children:[a.jsx("span",{className:be.brand,children:"Pi-Studio"}),a.jsxs("span",{className:be.version,children:["v","0.0.52"]}),a.jsx(Za,{}),a.jsx("div",{className:be.sep}),a.jsx(at,{className:be.host,value:s,onChange:p=>o(p.target.value),placeholder:"host:port, ws://…/http://…, or a pasted pairing link",disabled:x}),a.jsx(at,{className:be.password,type:"password",value:r,onChange:p=>i(p.target.value),placeholder:"password",disabled:x}),e==="open"||e==="connecting"||e==="closing"?a.jsx(V,{size:"sm",onClick:()=>n(),children:"Disconnect"}):a.jsx(V,{size:"sm",variant:"default",onClick:()=>void t({url:s,password:r||void 0}),children:"Connect"}),a.jsxs("div",{className:be.sidebarToggles,children:[a.jsx(V,{size:"sm",variant:"ghost",iconOnly:!0,title:c?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>d(),children:c?a.jsx(is,{size:16}):a.jsx(cs,{size:16})}),a.jsx(V,{size:"sm",variant:"ghost",iconOnly:!0,title:m?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>h(),children:m?a.jsx(ls,{size:16}):a.jsx(ds,{size:16})})]})]})}const St={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let Ht=0;function me(){return Ht+=1,`row-${Ht}`}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 li(e,t){return e??`${t.kind}:${ci(t)}`}function di(e){return{...e,streamingAssistantIndex:null,streamingReasoningIndex:null}}function ui(e,t){var r;const n=e.rows.slice();let s=e.streamingAssistantIndex;if(s===null||((r=n[s])==null?void 0:r.kind)!=="assistant"){const i={kind:"assistant",id:me(),text:"",streaming:!0};n.push(i),s=n.length-1}const o=n[s];return!o||o.kind!=="assistant"?e:(n[s]={...o,text:o.text+t},{...e,rows:n,streamingAssistantIndex:s,streamingReasoningIndex:null})}function pi(e,t){var r;const n=e.rows.slice();let s=e.streamingReasoningIndex;if(s===null||((r=n[s])==null?void 0:r.kind)!=="reasoning"){const i={kind:"reasoning",id:me(),text:"",streaming:!0};n.push(i),s=n.length-1}const o=n[s];return!o||o.kind!=="reasoning"?e:(n[s]={...o,text:o.text+t},{...e,rows:n,streamingReasoningIndex:s,streamingAssistantIndex:null})}function fi(e,t){if(e.kind!==t.kind)return t;const n={...e};for(const[s,o]of Object.entries(t))o!==void 0&&o!==""&&(n[s]=o);return n}function hi(e,t){var c;const n=li(t.callId,t.tool),s=t.status==="completed"||t.status==="error"?t.status:"running",o=e.toolIndexByCallId[n],r=e.rows.slice();if(o!==void 0&&((c=r[o])==null?void 0:c.kind)==="tool"){const d=r[o];return d.kind!=="tool"?e:(r[o]={...d,tool:fi(d.tool,t.tool),status:s},{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null})}const i={kind:"tool",id:me(),callId:n,tool:t.tool,status:s};return r.push(i),{...e,rows:r,toolIndexByCallId:{...e.toolIndexByCallId,[n]:r.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function Et(e){const t=e.rows.slice();if(e.streamingAssistantIndex!==null){const n=t[e.streamingAssistantIndex];(n==null?void 0:n.kind)==="assistant"&&(t[e.streamingAssistantIndex]={...n,streaming:!1})}if(e.streamingReasoningIndex!==null){const n=t[e.streamingReasoningIndex];(n==null?void 0:n.kind)==="reasoning"&&(t[e.streamingReasoningIndex]={...n,streaming:!1})}return{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function mi(e,t){const n=Et(e),s={kind:"error",id:me(),text:t||"turn failed"};return{...n,rows:[...n.rows,s]}}function gi(e){const t=Et(e),n={kind:"system",id:me(),text:"(canceled)"};return{...t,rows:[...t.rows,n]}}function _i(e,t){const n={kind:"error",id:me(),text:t||"error"};return{...e,rows:[...e.rows,n]}}function yi(e,t,n,s){if(s!==void 0){const r=e.rows.findIndex(i=>i.kind==="user"&&i.pending&&i.clientMessageId===s);if(r!==-1){const i=e.rows.slice(),c=i[r];if((c==null?void 0:c.kind)==="user")return i[r]={...c,text:t,images:n,pending:!1},{...e,rows:i}}}const o={kind:"user",id:me(),text:t,images:n,clientMessageId:s};return{...e,rows:[...e.rows,o]}}function bi(e,t){let n=!1;const s=e.rows.map(o=>o.kind!=="user"||!o.queued||t.includes(o.text)?o:(n=!0,{...o,queued:!1}));return n?{...e,rows:s}:e}function Bn(e,t){switch(t.kind){case"turn_started":return di(e);case"user_message":return yi(e,t.text??"",t.images,t.messageId);case"assistant_message":return ui(e,t.text??"");case"reasoning":return pi(e,t.text??"");case"tool_call":return hi(e,t);case"turn_completed":return Et(e);case"turn_failed":return mi(e,t.error);case"turn_canceled":return gi(e);case"error":return _i(e,t.message);case"queue_update":return bi(e,t.steering??[]);default:return e}}function wi(e,t,n,s,o){const r={kind:"user",id:me(),text:n,images:s,clientMessageId:t,pending:!0,queued:o};return{...e,rows:[...e.rows,r]}}function xi(e,t){const n=e.rows.findIndex(r=>r.kind==="user"&&r.pending&&r.clientMessageId===t);if(n===-1)return e;const s=e.rows.slice(),o=s[n];return(o==null?void 0:o.kind)!=="user"?e:(s[n]={...o,pending:!1,failed:!0},{...e,rows:s})}let Ut=0;function Si(){return Ut+=1,`s-${Date.now().toString(36)}-${Ut}`}const R=ke()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=Si(),o={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:St,userMessageCount:0};return e(r=>({sessions:{...r.sessions,[s]:o},order:[s,...r.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(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,agentId:s}}}:o})},setStatus(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,status:s}}}:o})},setStatusByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setStatus(o.id,s)},setModel(n,s,o){e(r=>{const i=r.sessions[n];return i?{sessions:{...r.sessions,[n]:{...i,model:s,modelProvider:o}}}:r})},setModelByAgentId(n,s,o){const r=t().findByAgentId(n);r&&t().setModel(r.id,s,o)},setTitle(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,title:s}}}:o})},setCwd(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,cwd:s}}}:o})},applyStreamEvent(n,s){e(o=>{const r=o.sessions[n];if(!r)return o;const i=Bn(r.timeline,s);let c=r.title;if(s.kind==="turn_completed"&&c==="New chat"){const d=i.rows.slice().reverse().find(m=>m.kind==="assistant");d&&d.kind==="assistant"&&d.text&&(c=d.text.slice(0,40)+(d.text.length>40?"…":""))}return{sessions:{...o.sessions,[n]:{...r,timeline:i,title:c}}}})},addOptimisticUserMessage(n,s,o,r,i){e(c=>{const d=c.sessions[n];if(!d)return c;const m=wi(d.timeline,s,o,r,i);return{sessions:{...c.sessions,[n]:{...d,timeline:m,userMessageCount:d.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(o=>{const r=o.sessions[n];if(!r)return o;const i=xi(r.timeline,s);return{sessions:{...o.sessions,[n]:{...r,timeline:i}}}})},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:o,...r}=s.sessions,i=s.order.filter(d=>d!==n),c=s.activeSessionId===n?i[0]??null:s.activeSessionId;return{sessions:r,order:i,activeSessionId:c}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),Kt=new WeakMap;function vi(e,t="pi"){const n=Kt.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(o=>({model:o.model,modelProvider:o.modelProvider})).catch(()=>({}));return Kt.set(e,s),s}const ot=new Map;function $n(e,t){const n=R.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=ot.get(t);if(s)return s;const o=(async()=>{if(!n.model){const d=await vi(e),m=R.getState().sessions[t];d.model&&m&&!m.model&&R.getState().setModel(t,d.model,d.modelProvider)}const r=R.getState().sessions[t];if(!r)throw new Error(`unknown session: ${t}`);const i={provider:"pi",cwd:r.cwd||"~"};r.model&&(i.model=r.model),r.modelProvider&&(i.modelProvider=r.modelProvider);const c=await e.createAgent({config:i,labels:{}});return R.getState().bindAgent(t,c.agentId),c.agentId})();return ot.set(t,o),o.finally(()=>ot.delete(t)),o}async function ki(e,t){var o;const n=R.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((o=ot.get(t))==null?void 0:o.catch(()=>{}));const s=R.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),R.getState().remove(t),!0):!1}function ft(e,t){return e.filter(n=>n.workspaceCwd===t)}function tt(e){(e==null?void 0:e.kind)==="chat"&&R.getState().activate(e.data.sessionId)}const E=ke()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,lastActiveTabByWorkspace:{},open(n){const s=t().tabs.find(o=>o.id===n.id);if(s){t().activate(s.id);return}e(o=>({tabs:[...o.tabs,n],activeTabId:n.id,activeWorkspaceCwd:n.workspaceCwd,lastActiveTabByWorkspace:{...o.lastActiveTabByWorkspace,[n.workspaceCwd]:n.id}})),tt(n)},close(n){let s;e(o=>{const r=o.tabs.find(h=>h.id===n);if(!r)return o;const i=o.tabs.findIndex(h=>h.id===n),c=o.tabs.filter(h=>h.id!==n);let d=o.activeTabId;const m={...o.lastActiveTabByWorkspace};if(d===n){const h=ft(c,r.workspaceCwd),x=Math.min(i,h.length-1),p=h[x];d=(p==null?void 0:p.id)??null,s=p}if(m[r.workspaceCwd]===n){const h=ft(c,r.workspaceCwd)[0];h?m[r.workspaceCwd]=h.id:delete m[r.workspaceCwd]}return{tabs:c,activeTabId:d,lastActiveTabByWorkspace:m}}),tt(s)},activate(n){let s;e(o=>{const r=o.tabs.find(i=>i.id===n);return r?(s=r,{activeTabId:n,activeWorkspaceCwd:r.workspaceCwd,lastActiveTabByWorkspace:{...o.lastActiveTabByWorkspace,[r.workspaceCwd]:n}}):o}),tt(s)},switchWorkspace(n){let s;e(o=>{var m;const r=ft(o.tabs,n),i=o.lastActiveTabByWorkspace[n],d=i&&r.some(h=>h.id===i)?i:((m=r[0])==null?void 0:m.id)??null;return s=r.find(h=>h.id===d),{activeWorkspaceCwd:n,activeTabId:d,lastActiveTabByWorkspace:d?{...o.lastActiveTabByWorkspace,[n]:d}:o.lastActiveTabByWorkspace}}),tt(s)},reorder(n,s){e(o=>{const r=o.tabs.findIndex(m=>m.id===n),i=o.tabs.findIndex(m=>m.id===s);if(r===-1||i===-1||r===i)return o;const c=o.tabs.slice(),[d]=c.splice(r,1);return d?(c.splice(i,0,d),{tabs:c}):o})},updateLabel(n,s){e(o=>({tabs:o.tabs.map(r=>r.id===n?{...r,label:s}:r)}))},updateData(n,s){e(o=>({tabs:o.tabs.map(r=>r.id===n?{...r,data:{...r.data,...s}}:r)}))},closeByPathPrefix(n){const s=t().tabs.filter(o=>{if(o.kind!=="file"&&o.kind!=="diff"&&o.kind!=="molecule")return!1;const r=o.data.path;return r===n||((r==null?void 0:r.startsWith(`${n}/`))??!1)});for(const o of s)t().close(o.id)}})),J={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let ht=0;function An(e){ht+=1,E.getState().open({id:J.terminal(`new-${ht}`),kind:"terminal",label:`Terminal ${ht}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e})}let mt=0;function Ii(e){mt+=1,E.getState().open({id:J.molecule(`new-${mt}`),kind:"molecule",label:`Molecule ${mt}`,closable:!0,data:{path:null},workspaceCwd:e})}function Nt(e){const t=R.getState().createSession(e);E.getState().open({id:J.chat(t),kind:"chat",label:"New chat",closable:!0,data:{sessionId:t},workspaceCwd:e});const n=M.getState().client;n&&$n(n,t).catch(()=>{})}function vt(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;ki(M.getState().client,n)}const Z=ke()(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 o=s.get(t),r=new Set(o);return r.add(t),{rootPath:t,expanded:r,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 o=new Map(n.expandedByRoot);return o.set(n.rootPath,s),{expanded:s,expandedByRoot:o}}),startDraft:(t,n)=>e(s=>{const o=new Set(s.expanded);o.add(t);const r=new Map(s.expandedByRoot);return s.rootPath&&r.set(s.rootPath,o),{draft:{parentPath:t,kind:n},expanded:o,expandedByRoot:r}}),cancelDraft:()=>e({draft:null}),setSelected:t=>e({selected:t}),repathAfterMove:(t,n,s)=>e(o=>{const r=m=>m===t?n:m.startsWith(`${t}/`)?n+m.slice(t.length):m,i=new Set([...o.expanded].map(r));i.add(s);const c=new Map(o.expandedByRoot);o.rootPath&&c.set(o.rootPath,i);const d=o.selected?{path:r(o.selected.path),isDirectory:o.selected.isDirectory}:null;return{expanded:i,expandedByRoot:c,selected:d}})}));let je=null;const kt=new Set;function ji(e){return kt.add(e),()=>kt.delete(e)}async function lt(e){var t;if(je)return je;try{const n=await e.connection.request("file_explorer_request",{path:"/home"}),o=(((t=n.result)==null?void 0:t.entries)??n.entries??[]).find(r=>r.kind==="directory"||r.type==="directory");je="/home/"+((o==null?void 0:o.name)||"user")}catch{return"/tmp"}for(const n of kt)n(je);return je}function Ci(){return je}async function Ti(e,t){return t==="~"||t.startsWith("~/")?await lt(e)+t.slice(1):t}function dt(){const e=M(o=>o.client),t=M(o=>o.status),[n,s]=b.useState(Ci());return b.useEffect(()=>ji(s),[]),b.useEffect(()=>{!e||t!=="open"||n||lt(e)},[e,t,n]),n}const Ei="_dot_gfh8u_3",Ni="_spinner_gfh8u_16",Vt={dot:Ei,spinner:Ni};function Ri(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:o}=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 o?"foregroundMuted":null}}const Gt=8,Mi={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 qi({className:e,...t}){const n=Ri(t);if(!n)return null;const s=t.status==="running"&&!t.requiresAttention,o=s?"var(--pi-color-accentBright, #a2b4d7)":Mi[n]??"currentColor";return a.jsx("span",{className:`${s?Vt.spinner:Vt.dot}${e?` ${e}`:""}`,style:s?{borderTopColor:o,borderRightColor:o}:{width:Gt,height:Gt,backgroundColor:o},role:"presentation"})}const Bi={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function $i(e){return Bi[e]??"idle"}const Ai="_wrap_v2ehs_1",Di="_header_v2ehs_7",Pi="_openBtn_v2ehs_15",Oi="_list_v2ehs_27",Fi="_item_v2ehs_32",zi="_active_v2ehs_41",Wi="_title_v2ehs_45",Li="_meta_v2ehs_54",Hi="_menuBtn_v2ehs_62",Ui="_workspaceGroup_v2ehs_80",Ki="_workspaceHeader_v2ehs_83",Vi="_workspaceChevron_v2ehs_108",Gi="_workspaceIcon_v2ehs_119",Xi="_workspaceLabel_v2ehs_123",Ji="_workspaceCount_v2ehs_129",Yi="_workspaceMenuBtn_v2ehs_134",Qi="_workspaceSessions_v2ehs_154",Zi="_emptyState_v2ehs_157",O={wrap:Ai,header:Di,openBtn:Pi,list:Oi,item:Fi,active:zi,title:Wi,meta:Li,menuBtn:Hi,workspaceGroup:Ui,workspaceHeader:Ki,workspaceChevron:Vi,workspaceIcon:Gi,workspaceLabel:Xi,workspaceCount:Ji,workspaceMenuBtn:Yi,workspaceSessions:Qi,emptyState:Zi};function ec({session:e,active:t,onSelect:n,onOpenMenu:s}){return a.jsxs("div",{className:F(O.item,t&&O.active),onClick:n,onContextMenu:o=>{o.preventDefault(),s(o.clientX,o.clientY)},children:[a.jsxs("div",{className:O.title,children:[a.jsx(qi,{status:$i(e.status),showInactive:!0}),a.jsx("span",{children:e.title})]}),a.jsxs("div",{className:O.meta,children:[e.cwd||"~"," · ",e.agentId?e.agentId.slice(0,8):"new"," ·"," ",e.userMessageCount," msgs"]}),a.jsx("button",{type:"button",className:O.menuBtn,title:"Actions",onClick:o=>{o.stopPropagation();const r=o.currentTarget.getBoundingClientRect();s(r.left,r.bottom)},children:a.jsx(It,{size:14})})]})}const tc="_trigger_byu5g_1",nc="_content_byu5g_12",sc="_item_byu5g_21",oc="_danger_byu5g_39",rc="_sep_byu5g_42",H={trigger:tc,content:nc,item:sc,danger:oc,sep:rc};function ac(){const e=C(v=>v.sessionMenu),t=C(v=>v.closeSessionMenu),n=M(v=>v.client),s=b.useRef(null),[o,r]=b.useState(!1);b.useEffect(()=>{r(e!==null)},[e]);const i=R(v=>e?v.sessions[e.sessionId]:void 0);if(!e)return null;const c=!!(i!=null&&i.agentId)&&(i==null?void 0:i.status)==="running";function d(v){r(v),v||t()}function m(){if(!i)return;const v=window.prompt("Rename:",i.title);if(v!=null&&v.trim()){const y=v.trim();R.getState().setTitle(i.id,y),E.getState().updateLabel(J.chat(i.id),y),i.agentId&&(n==null||n.agent(i.agentId).update({title:y}).catch(()=>{}))}t()}function h(){i!=null&&i.agentId&&(n==null||n.agent(i.agentId).interrupt().catch(()=>{})),t()}function x(v){R.getState().remove(v),E.getState().close(J.chat(v))}async function p(){if(i){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!i.agentId){x(i.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(i.agentId).archive(),x(i.id)}catch(v){window.alert(`Failed to archive: ${v instanceof Error?v.message:String(v)}`)}}}async function f(){if(i){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!i.agentId){x(i.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(i.agentId).delete(),x(i.id)}catch(v){window.alert(`Failed to delete: ${v instanceof Error?v.message:String(v)}`)}}}return a.jsxs(Ue,{open:o,onOpenChange:d,modal:!1,children:[a.jsx(Ke,{asChild:!0,children:a.jsx("button",{ref:s,type:"button",className:H.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),a.jsx(Ve,{children:a.jsxs(Ge,{className:H.content,align:"start",sideOffset:2,children:[a.jsxs(D,{className:H.item,onSelect:m,children:[a.jsx(us,{size:13}),"Rename"]}),a.jsxs(D,{className:H.item,disabled:!c,onSelect:h,children:[a.jsx(ps,{size:13}),"Stop agent"]}),a.jsx(Se,{className:H.sep}),a.jsxs(D,{className:`${H.item} ${H.danger}`,onSelect:p,children:[a.jsx(fs,{size:13}),"Archive"]}),a.jsxs(D,{className:`${H.item} ${H.danger}`,onSelect:f,children:[a.jsx(jt,{size:13}),"Delete permanently"]})]})})]})}function ic({label:e,cwd:t,sessionCount:n,collapsed:s,onToggleCollapsed:o,onOpenMenu:r}){return a.jsxs("div",{className:O.workspaceHeader,onClick:o,title:t,children:[a.jsx("button",{type:"button",className:O.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:i=>{i.stopPropagation(),o()},children:s?a.jsx(Ct,{size:13}):a.jsx(rn,{size:13})}),a.jsx(hs,{size:13,className:F(O.workspaceIcon)}),a.jsx("span",{className:O.workspaceLabel,children:e}),a.jsx("span",{className:O.workspaceCount,children:n}),a.jsx("button",{type:"button",className:O.workspaceMenuBtn,title:"Workspace actions",onClick:i=>{i.stopPropagation();const c=i.currentTarget.getBoundingClientRect();r(c.left,c.bottom)},children:a.jsx(It,{size:13})})]})}function Re(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function Rt(e,t,n){const s=new Map;for(const o of e){const r=t[o];if(!r)continue;const i=Re(r.cwd||"~",n),c=s.get(i);c?c.push(r):s.set(i,[r])}return Array.from(s,([o,r])=>({cwd:o,sessions:r}))}function Dn(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function cc(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function lc(){const e=C(f=>f.workspaceMenu),t=C(f=>f.closeWorkspaceMenu),n=M(f=>f.client),s=R(f=>f.order),o=R(f=>f.sessions),r=dt(),i=b.useRef(null),[c,d]=b.useState(!1);if(b.useEffect(()=>{d(e!==null)},[e]),!e)return null;const m=s.map(f=>o[f]).filter(f=>!!f).filter(f=>Re(f.cwd||"~",r)===e.cwd);function h(f){d(f),f||t()}function x(){e&&(t(),Nt(e.cwd))}async function p(){if(!e)return;const f=m.length;if(!window.confirm(`Delete all ${f} conversation${f===1?"":"s"} in "${Dn(e.cwd)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return t();t();for(const y of m){if(y.agentId&&n)try{await n.agent(y.agentId).delete()}catch(_){window.alert(`Failed to delete "${y.title}": ${_ instanceof Error?_.message:String(_)}`);continue}R.getState().remove(y.id),E.getState().close(J.chat(y.id))}}return a.jsxs(Ue,{open:c,onOpenChange:h,modal:!1,children:[a.jsx(Ke,{asChild:!0,children:a.jsx("button",{ref:i,type:"button",className:H.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),a.jsx(Ve,{children:a.jsxs(Ge,{className:H.content,align:"start",sideOffset:2,children:[a.jsxs(D,{className:H.item,onSelect:x,children:[a.jsx(an,{size:13}),"New conversation"]}),a.jsx(Se,{className:H.sep}),a.jsxs(D,{className:`${H.item} ${H.danger}`,onSelect:p,children:[a.jsx(jt,{size:13}),"Delete workspace (all conversations)"]})]})})]})}function dc(){const e=R(y=>y.order),t=R(y=>y.sessions),n=R(y=>y.activeSessionId),s=R(y=>y.activate),o=E(y=>y.open),r=M(y=>y.status),i=C(y=>y.openSessionMenu),c=C(y=>y.openWorkspaceMenu),d=C(y=>y.setCwd),m=C(y=>y.openCwdPicker),h=C(y=>y.collapsedWorkspaces),x=C(y=>y.toggleWorkspaceCollapsed),p=dt();function f(y){s(y);const _=t[y],q=Re((_==null?void 0:_.cwd)||"~",p);_!=null&&_.cwd&&d(_.cwd),o({id:J.chat(y),kind:"chat",label:(_==null?void 0:_.title)??"Chat",closable:!0,data:{sessionId:y},workspaceCwd:q})}const v=Rt(e,t,p);return a.jsxs("div",{className:O.wrap,children:[a.jsxs("div",{className:O.header,children:[a.jsx("h3",{children:"Workspaces"}),a.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,className:O.openBtn,title:r!=="open"?"Connect to open a workspace":"Open a workspace folder",disabled:r!=="open",onClick:()=>m(),children:a.jsx(cn,{size:13})})]}),a.jsxs("div",{className:O.list,children:[v.length===0&&a.jsx("div",{className:O.emptyState,children:r!=="open"?"Not connected":"No workspaces — open a folder to start"}),v.map(y=>{const _=h.has(y.cwd);return a.jsxs("div",{className:O.workspaceGroup,children:[a.jsx(ic,{label:Dn(y.cwd),cwd:y.cwd,sessionCount:y.sessions.length,collapsed:_,onToggleCollapsed:()=>x(y.cwd),onOpenMenu:(q,z)=>c(y.cwd,q,z)}),!_&&a.jsx("div",{className:O.workspaceSessions,children:y.sessions.map(q=>a.jsx(ec,{session:q,active:q.id===n,onSelect:()=>f(q.id),onOpenMenu:(z,k)=>i(q.id,z,k)},q.id))})]},y.cwd)})]}),a.jsx(ac,{}),a.jsx(lc,{})]})}const uc="_strip_1s2dw_1",pc="_tab_1s2dw_11",fc="_active_1s2dw_27",hc="_icon_1s2dw_31",mc="_label_1s2dw_36",gc="_close_1s2dw_41",_c="_newTab_1s2dw_51",yc="_content_1s2dw_74",bc="_item_1s2dw_83",wc="_itemIcon_1s2dw_97",K={strip:uc,tab:pc,active:fc,icon:hc,label:mc,close:gc,newTab:_c,content:yc,item:bc,itemIcon:wc},xc={chat:pn,file:ms,diff:un,terminal:dn,molecule:ln};function Sc({tab:e}){const t=E(h=>h.activeTabId),n=E(h=>h.activate),s=xc[e.kind],{attributes:o,listeners:r,setNodeRef:i,transform:c,transition:d,isDragging:m}=Ds({id:e.id});return a.jsxs("div",{ref:i,className:F(K.tab,e.id===t&&K.active),style:{transform:Ps.Transform.toString(c),transition:d,opacity:m?.5:1},onClick:()=>n(e.id),onAuxClick:h=>{h.button===1&&e.closable&&vt(e.id)},title:e.label,...o,...r,children:[a.jsx("span",{className:K.icon,children:a.jsx(s,{size:13})}),a.jsx("span",{className:K.label,children:e.label}),e.closable&&a.jsx("span",{className:K.close,onClick:h=>{h.stopPropagation(),vt(e.id)},children:a.jsx(gt,{size:12})})]})}function vc({workspaceCwd:e}){const t=e??"~";return a.jsxs(Ue,{children:[a.jsx(Ke,{asChild:!0,children:a.jsx("button",{type:"button",className:K.newTab,title:"New tab",disabled:!e,children:a.jsx(an,{size:14})})}),a.jsx(Ve,{children:a.jsxs(Ge,{className:K.content,align:"start",sideOffset:4,children:[a.jsxs(D,{className:K.item,onSelect:()=>Nt(t),children:[a.jsx(pn,{size:13,className:K.itemIcon}),"New chat"]}),a.jsxs(D,{className:K.item,onSelect:()=>An(t),children:[a.jsx(dn,{size:13,className:K.itemIcon}),"New terminal"]}),a.jsxs(D,{className:K.item,onSelect:()=>Ii(t),children:[a.jsx(ln,{size:13,className:K.itemIcon}),"New molecule view"]})]})})]})}function kc(){const e=E(i=>i.tabs),t=E(i=>i.activeWorkspaceCwd),n=E(i=>i.reorder),s=e.filter(i=>i.workspaceCwd===t),o=Ns(Rs(As,{activationConstraint:{distance:4}}));function r(i){const{active:c,over:d}=i;!d||c.id===d.id||n(String(c.id),String(d.id))}return a.jsxs("div",{className:K.strip,children:[a.jsx(Ms,{sensors:o,collisionDetection:qs,onDragEnd:r,children:a.jsx(Bs,{items:s.map(i=>i.id),strategy:$s,children:s.map(i=>a.jsx(Sc,{tab:i},i.id))})}),a.jsx(vc,{workspaceCwd:t})]})}const Ic="_spinner_1tgzp_3",jc={spinner:Ic},Cc={xs:12,sm:16,md:20,lg:24},Tc={xs:1,sm:2,md:2,lg:3};function Pn({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const o=typeof e=="number"?e:Cc[e],r=typeof e=="number"?2:Tc[e];return a.jsx("span",{className:`${jc.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:o,height:o,borderWidth:r,color:t}})}const Ec=b.lazy(()=>ue(()=>import("./ChatPanel-GkrDdBS1.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])).then(e=>({default:e.ChatPanel}))),Xt=b.lazy(()=>ue(()=>import("./FilePanel-DCobulZh.js"),__vite__mapDeps([16,1,7,6,5,2,17,11,12,18,19,3,13,14])).then(e=>({default:e.FilePanel}))),Nc=b.lazy(()=>ue(()=>import("./TerminalPanel-DROW3jIj.js"),__vite__mapDeps([20,1,21,22,7,6,5,2,3,13,14,23])).then(e=>({default:e.TerminalPanel}))),Rc=b.lazy(()=>ue(()=>import("./MoleculeViewerPanel-CEBdcIi1.js"),__vite__mapDeps([24,1,25,26,9,10,27,2,17,7,6,5,3,13,14,28])).then(e=>({default:e.MoleculeViewerPanel}))),Mc={chat:Ec,file:Xt,diff:Xt,terminal:Nc,molecule:Rc},qc="_area_182yv_1",Bc="_panel_182yv_7",$c="_active_182yv_14",Ac="_empty_182yv_17",Dc="_emptyStack_182yv_25",Pc="_emptyTitle_182yv_35",Oc="_emptyHint_182yv_39",le={area:qc,panel:Bc,active:$c,empty:Ac,emptyStack:Dc,emptyTitle:Pc,emptyHint:Oc};function Fc(){const e=E(i=>i.tabs),t=E(i=>i.activeTabId),n=E(i=>i.activeWorkspaceCwd),s=M(i=>i.status),o=C(i=>i.openCwdPicker),r=e.some(i=>i.workspaceCwd===n);return n===null?a.jsx("div",{className:le.area,children:a.jsxs("div",{className:le.emptyStack,children:[a.jsx("div",{className:le.emptyTitle,children:"No workspace open"}),a.jsx("div",{className:le.emptyHint,children:"Open a project folder to start a chat."}),a.jsx(V,{size:"sm",variant:"secondary",leftIcon:a.jsx(cn,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>o(),children:"Open Workspace"})]})}):r?a.jsx("div",{className:le.area,children:e.map(i=>{const c=Mc[i.kind];return a.jsx("div",{className:F(le.panel,i.id===t&&le.active),children:a.jsx(b.Suspense,{fallback:a.jsx(Pn,{size:"md"}),children:a.jsx(c,{tab:i})})},i.id)})}):a.jsx("div",{className:le.area,children:a.jsx("div",{className:le.empty,children:"No open tabs in this workspace"})})}const he={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 zc(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function Wc(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function On(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 o="entries"in s?s.entries??[]:[];return{path:s.resolvedPath??t,entries:Wc(o.map(zc))}}function Lc(e,t=!0){const n=M(s=>s.client);return sn({queryKey:he.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return On(n,e)},enabled:!!n&&!!e&&t})}function Hc(e){const t=M(o=>o.client),n=b.useMemo(()=>Array.from(e),[e]),s=os({queries:n.map(o=>({queryKey:he.explorer(o),queryFn:()=>{if(!t)throw new Error("not connected");return On(t,o)},enabled:!!t&&!!o}))});return b.useMemo(()=>{const o=new Map;return n.forEach((r,i)=>{const c=s[i];o.set(r,{listing:c==null?void 0:c.data,isLoading:!!(c!=null&&c.isLoading),isError:!!(c!=null&&c.isError),error:c==null?void 0:c.error})}),o},[n,s])}function Uc(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function Kc(e,t){const n=new Set,s=e.connection.onSessionMessage(o=>{const r=o;Uc(r)&&n.has(r.path)&&t(r.path)});return{sync(o){for(const r of n)o.has(r)||(n.delete(r),e.connection.request("file_watch_unsubscribe",{path:r}).catch(()=>{}));for(const r of o)n.has(r)||(n.add(r),e.connection.request("file_watch_subscribe",{path:r}).then(i=>{const c=i;(c==null?void 0:c.ok)===!1&&console.warn(`useExplorerWatch: ${c.error??"subscribe failed"} for "${r}"`)}).catch(()=>{}))},dispose(){s();for(const o of n)e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{});n.clear()}}}function Vc(e){const t=M(i=>i.client),n=Ne(),s=b.useRef(null),o=b.useRef(null),r=Array.from(e).toSorted().join("\0");b.useEffect(()=>{var i,c;t&&(o.current!==t&&((i=s.current)==null||i.dispose(),s.current=Kc(t,d=>{n.invalidateQueries({queryKey:he.explorer(d)})}),o.current=t),(c=s.current)==null||c.sync(new Set(r?r.split("\0"):[])))},[t,r,n]),b.useEffect(()=>()=>{var i;(i=s.current)==null||i.dispose(),s.current=null,o.current=null},[])}const Jt=new WeakMap;function Yt(e){let t=Jt.get(e);return t||(t=new Ba(e),t.start(),Jt.set(e,t)),t}function Gc(e,t,n){const s=new Blob([Uint8Array.from(e)],{type:n||"application/octet-stream"}),o=URL.createObjectURL(s),r=document.createElement("a");r.href=o,r.download=t,r.rel="noopener",document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(o),0)}function Fn(){const e=M(o=>o.daemon),t=Ne(),n=b.useCallback(async(o,r)=>{if(!e)throw new Error("not connected");const i=o?`${o}/${r.name}`:r.name,c=new Uint8Array(await r.arrayBuffer());await Yt(e).upload(i,c),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=b.useCallback(async o=>{if(!e)throw new Error("not connected");const r=await Yt(e).download(o);Gc(r.bytes,r.fileName||o.split("/").pop()||"download",r.mimeType)},[e]);return{upload:n,saveToDisk:s}}function ip(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function He(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function Xc(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function Qt(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:He(t.path);if(s===He(e)||s===e||s.startsWith(`${e}/`)||s!==n&&!s.startsWith(`${n}/`))return null;const o=e.split("/").pop();return{destinationDir:s,destination:`${s}/${o}`}}const Jc={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 Yc(e,t,n){const s=await e.connection.request("file_move_request",{path:t,destination:n});if(!s.ok){const o=s.error??"";throw new Error(Jc[o]??o??"Failed to move")}return s.destination??n}function Qc(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function zn(e,t,n,s,o,r){var c;(r==null?void 0:r.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:r.kind,parentPath:t});const i=o.get(t);if(!i||i.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(i.isError){const d=i.error instanceof Error?i.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:d});return}for(const d of((c=i.listing)==null?void 0:c.entries)??[])Zc(e,t,d,n,s,o,r)}function Zc(e,t,n,s,o,r,i){const c=Qc(t,n.name);if(n.kind!=="directory"){e.push({kind:"file",path:c,name:n.name,depth:s});return}const d=o.has(c);e.push({kind:"directory",path:c,name:n.name,depth:s,expanded:d}),d&&zn(e,c,s+1,o,r,i)}function el(e,t,n,s){if(!e)return[];const o=[];return zn(o,e,0,t,n,s),o}const tl="_container_9bgni_1",nl="_header_9bgni_7",sl="_uploadButton_9bgni_14",ol="_hiddenInput_9bgni_33",rl="_status_9bgni_36",al="_statusError_9bgni_37",il="_rowAction_9bgni_50",cl="_item_9bgni_65",ll="_list_9bgni_69",dl="_active_9bgni_92",ul="_selected_9bgni_97",pl="_dropTarget_9bgni_101",fl="_chevronSlot_9bgni_106",hl="_chevron_9bgni_106",ml="_chevronOpen_9bgni_117",gl="_icon_9bgni_120",_l="_name_9bgni_127",yl="_dirName_9bgni_132",bl="_statusRow_9bgni_138",wl="_statusRowError_9bgni_149",xl="_emptyState_9bgni_152",Sl="_draftInput_9bgni_158",B={container:tl,header:nl,uploadButton:sl,hiddenInput:ol,status:rl,statusError:al,rowAction:il,item:cl,list:ll,active:dl,selected:ul,dropTarget:pl,chevronSlot:fl,chevron:hl,chevronOpen:ml,icon:gl,name:_l,dirName:yl,statusRow:bl,statusRowError:wl,emptyState:xl,draftInput:Sl};function vl({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[o,r]=b.useState("");return a.jsxs("div",{className:B.item,style:t,onClick:i=>i.stopPropagation(),children:[a.jsx("span",{className:B.chevronSlot}),a.jsx("span",{className:B.icon,children:e==="directory"?a.jsx(Ee,{size:16}):a.jsx(fn,{size:16})}),a.jsx("input",{className:B.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:o,onChange:i=>r(i.target.value),onKeyDown:i=>{if(i.key==="Enter"){i.preventDefault();const c=o.trim();c?n(c):s()}else i.key==="Escape"&&(i.preventDefault(),s())},onBlur:s})]})}const kl=14;function Il({row:e,active:t,selected:n,dropTarget:s,onToggle:o,onOpenFile:r,onContextMenu:i,onSubmitDraft:c,onCancelDraft:d,onDragStartRow:m,onDragEndRow:h}){const x={paddingLeft:8+e.depth*kl};if(e.kind==="loading")return a.jsx("div",{className:B.statusRow,style:x,children:"Loading…"});if(e.kind==="error")return a.jsx("div",{className:F(B.statusRow,B.statusRowError),style:x,children:e.message??"failed to load"});if(e.kind==="draft")return a.jsx(vl,{draftKind:e.draftKind,indentStyle:x,onSubmit:f=>c(e.parentPath,f),onCancel:d});const p=e.kind==="directory";return a.jsxs("div",{className:F(B.item,t&&B.active,n&&B.selected,s&&B.dropTarget),style:x,title:e.path,draggable:!0,onDragStart:f=>m(e.path,f),onDragEnd:h,onClick:()=>p?o(e.path):r(e.path),onContextMenu:f=>{f.preventDefault(),f.stopPropagation(),i(e.path,p,f.clientX,f.clientY)},children:[a.jsx("span",{className:B.chevronSlot,children:p&&a.jsx(Ct,{size:14,className:F(B.chevron,e.expanded&&B.chevronOpen)})}),a.jsx("span",{className:B.icon,children:p?a.jsx(Ee,{size:16}):a.jsx(fn,{size:16})}),a.jsx("span",{className:p?B.dirName:B.name,children:e.name}),a.jsx("button",{type:"button",className:B.rowAction,title:"Actions",onClick:f=>{f.stopPropagation();const v=f.currentTarget.getBoundingClientRect();i(e.path,p,v.left,v.bottom)},children:a.jsx(It,{size:14})})]})}async function Zt(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 jl=b.lazy(()=>ue(()=>import("./TextViewer-v2fxij9-.js"),__vite__mapDeps([29,1,30,2,7,6,5,31,27,18,19,3,13,14,32])).then(e=>({default:e.TextViewer}))),Cl=b.lazy(()=>ue(()=>import("./MarkdownFileViewer-6YOnAwAu.js"),__vite__mapDeps([33,1,30,2,7,6,5,31,4,8,18,19,3,13,14,34])).then(e=>({default:e.MarkdownFileViewer}))),Tl=b.lazy(()=>ue(()=>import("./ImageViewer-BPrAhaij.js"),__vite__mapDeps([35,1,27,2,18,19,7,6,5,3,13,14,36])).then(e=>({default:e.ImageViewer}))),El=b.lazy(()=>ue(()=>import("./VideoViewer-gg062hcg.js"),__vite__mapDeps([37,1,27,2,18,19,7,6,5,3,13,14,38])).then(e=>({default:e.VideoViewer}))),Nl=b.lazy(()=>ue(()=>import("./BinaryFallbackViewer-C7VRdZi7.js"),__vite__mapDeps([39,1,27,2,3,7,6,5,13,14,40])).then(e=>({default:e.BinaryFallbackViewer}))),cp={text:jl,markdown:Cl,image:Tl,video:El,binary:Nl},Rl={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"},Ml=[["image/","image"],["video/","video"]];function Wn(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const ql={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},Bl={poscar:!0,contcar:!0};function $l(e){if(ql[Wn(e)])return!0;const t=e.split("/").pop()??e;return!!Bl[t.toLowerCase()]}function lp(e,t={}){const n=Rl[Wn(e)];if(n)return n;const s=t.mimeHint??"";for(const[o,r]of Ml)if(s.startsWith(o))return r;return t.isBinary?"binary":"text"}function Ln(e,t){const n=e.split("/").pop()||e;if($l(e)){E.getState().open({id:J.molecule(e),kind:"molecule",label:n,closable:!0,data:{path:e},workspaceCwd:t});return}E.getState().open({id:J.file(e),kind:"file",label:n,closable:!0,data:{path:e},workspaceCwd:t})}const Al="_trigger_j9lub_1",Dl="_content_j9lub_12",Pl="_item_j9lub_21",Ol="_danger_j9lub_35",Fl="_sep_j9lub_38",P={trigger:Al,content:Dl,item:Pl,danger:Ol,sep:Fl};function zl(){const e=C(k=>k.fileMenu),t=C(k=>k.closeFileMenu),n=M(k=>k.client),s=Z(k=>k.startDraft),o=Z(k=>k.rootPath),r=E(k=>k.activeWorkspaceCwd),{saveToDisk:i}=Fn(),c=Ne(),d=b.useRef(null),[m,h]=b.useState(!1);if(b.useEffect(()=>{h(e!==null)},[e]),!e)return null;const x=e.path.split("/").pop()||e.path;function p(k){h(k),k||t()}function f(){e&&(t(),Ln(e.path,r||"~"))}async function v(){if(e){t();try{await Zt(e.path)}catch{window.alert("Failed to copy to clipboard.")}}}async function y(){if(e){t();try{await Zt(Xc(e.path,o)||"/")}catch{window.alert("Failed to copy to clipboard.")}}}async function _(){if(e){t();try{await i(e.path)}catch(k){window.alert(`Failed to download: ${k instanceof Error?k.message:String(k)}`)}}}async function q(){if(!e)return;const k=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${k}? "${x}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{const G=await n.connection.request("file_delete_request",{path:e.path});if(!G.ok)throw new Error(G.error??"delete failed");await c.invalidateQueries({queryKey:["explorer"]}),E.getState().closeByPathPrefix(e.path)}catch(G){window.alert(`Failed to delete: ${G instanceof Error?G.message:String(G)}`)}}function z(k){if(!e)return;const G=e.isDirectory?e.path:He(e.path);t(),s(G,k)}return a.jsxs(Ue,{open:m,onOpenChange:p,modal:!1,children:[a.jsx(Ke,{asChild:!0,children:a.jsx("button",{ref:d,type:"button",className:P.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),a.jsx(Ve,{children:a.jsx(Ge,{className:P.content,align:"start",sideOffset:2,children:e.background?a.jsxs(a.Fragment,{children:[a.jsxs(D,{className:P.item,onSelect:()=>z("file"),children:[a.jsx(_t,{size:13}),"New File"]}),a.jsxs(D,{className:P.item,onSelect:()=>z("directory"),children:[a.jsx(rt,{size:13}),"New Folder"]}),a.jsx(Se,{className:P.sep}),a.jsxs(D,{className:P.item,onSelect:v,children:[a.jsx(Je,{size:13}),"Copy Current Directory Path"]}),a.jsxs(D,{className:P.item,onSelect:y,children:[a.jsx(Je,{size:13}),"Copy Current Directory Relative Path"]})]}):a.jsxs(a.Fragment,{children:[!e.isDirectory&&a.jsxs(a.Fragment,{children:[a.jsxs(D,{className:P.item,onSelect:f,children:[a.jsx(gs,{size:13}),"Open"]}),a.jsx(Se,{className:P.sep})]}),e.isDirectory&&a.jsxs(a.Fragment,{children:[a.jsxs(D,{className:P.item,onSelect:()=>z("file"),children:[a.jsx(_t,{size:13}),"New File"]}),a.jsxs(D,{className:P.item,onSelect:()=>z("directory"),children:[a.jsx(rt,{size:13}),"New Folder"]}),a.jsx(Se,{className:P.sep})]}),a.jsxs(D,{className:P.item,onSelect:v,children:[a.jsx(Je,{size:13}),"Copy Absolute Path"]}),a.jsxs(D,{className:P.item,onSelect:y,children:[a.jsx(Je,{size:13}),"Copy Relative Path"]}),a.jsx(Se,{className:P.sep}),!e.isDirectory&&a.jsxs(a.Fragment,{children:[a.jsxs(D,{className:P.item,onSelect:_,children:[a.jsx(_s,{size:13}),"Download"]}),a.jsx(Se,{className:P.sep})]}),a.jsxs(D,{className:`${P.item} ${P.danger}`,onSelect:q,children:[a.jsx(jt,{size:13}),"Delete"]})]})})})]})}const Wl={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 Hn(e,t,n,s){const o=await e.connection.request("file_create_request",{path:t,name:n,kind:s});if(!o.ok){const r=o.error??"";throw new Error(Wl[r]??r??"Failed to create")}return o.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const Ll=28,Pe="application/x-pi-studio-path";function Hl(){const e=M(g=>g.client),t=Z(g=>g.rootPath),n=Z(g=>g.expanded),s=Z(g=>g.setRoot),o=Z(g=>g.toggle),r=Z(g=>g.draft),i=Z(g=>g.startDraft),c=Z(g=>g.cancelDraft),d=Z(g=>g.selected),m=Z(g=>g.setSelected),h=E(g=>g.activeWorkspaceCwd),x=E(g=>g.tabs.find(j=>j.id===g.activeTabId)),{upload:p}=Fn(),f=C(g=>g.openFileMenu),v=Ne(),[y,_]=b.useState(null),[q,z]=b.useState(null),k=b.useRef(null),G=b.useRef(null),ge=b.useRef(null),ee=b.useRef(null),Xe=(x==null?void 0:x.kind)==="file"||(x==null?void 0:x.kind)==="molecule"?x.data.path:null,ie=d?d.isDirectory?d.path:He(d.path):t,_e=b.useRef(null);b.useEffect(()=>{if(!e)return;const g=h||"~";_e.current!==g&&(_e.current=g,Ti(e,g).then(j=>s(j)))},[e,h,s]);const Me=Hc(n);Vc(n);const ye=b.useMemo(()=>el(t,n,Me,r),[t,n,Me,r]),qe=rs({count:ye.length,getScrollElement:()=>G.current,estimateSize:()=>Ll,overscan:12,getItemKey:g=>{var j;return((j=ye[g])==null?void 0:j.path)??g}});function Be(g){Ln(g,h||"~")}function I(g,j){j.dataTransfer.setData(Pe,g),j.dataTransfer.effectAllowed="move",ge.current=g}function ce(){ge.current=null}function qt(){z(null),ee.current&&(clearTimeout(ee.current.timer),ee.current=null)}function Vn(g){var T;if(((T=ee.current)==null?void 0:T.path)===g.path||(ee.current&&clearTimeout(ee.current.timer),ee.current=null,g.kind!=="directory"||g.expanded))return;const j=window.setTimeout(()=>o(g.path),700);ee.current={path:g.path,timer:j}}async function Gn(g,j){const T=Qt(g,j,t);if(!T||!e)return;const W=g.split("/").pop()??g;_({text:`Moving ${W}…`,error:!1});try{await Yc(e,g,T.destination),await v.invalidateQueries({queryKey:he.explorer(He(g))}),await v.invalidateQueries({queryKey:he.explorer(T.destinationDir)}),Z.getState().repathAfterMove(g,T.destination,T.destinationDir);const Y=E.getState().tabs.some(pe=>(pe.kind==="file"||pe.kind==="molecule")&&pe.data.path===g);E.getState().closeByPathPrefix(g),Y&&Be(T.destination),_({text:`Moved to ${T.destinationDir.split("/").pop()||"/"}`,error:!1})}catch(Y){_({text:Y instanceof Error?Y.message:"Failed to move",error:!0})}}async function Xn(g,j){const T=(r==null?void 0:r.kind)??"file";if(c(),!!e)try{const W=await Hn(e,g,j,T);await v.invalidateQueries({queryKey:he.explorer(g)}),_({text:`Created ${W}`,error:!1}),T==="file"&&Be(W)}catch(W){_({text:W instanceof Error?W.message:"Failed to create",error:!0})}}async function Jn(g,j){var pe;if(!j.length||!g)return;const T=(pe=Me.get(g))==null?void 0:pe.listing,W=new Set((T==null?void 0:T.entries.map(oe=>oe.name))??[]),Y=j.filter(oe=>W.has(oe.name));if(Y.length>0){const oe=Y.map(Qn=>Qn.name).join(", ");if(!window.confirm(`Overwrite ${Y.length>1?"these files":"this file"}? ${oe}`))return}_({text:`Uploading ${j.length} file${j.length>1?"s":""}…`,error:!1});try{for(const oe of j)await p(g,oe);_({text:`Uploaded ${j.length} file${j.length>1?"s":""}`,error:!1})}catch(oe){_({text:`Upload failed: ${oe instanceof Error?oe.message:"unknown"}`,error:!0})}}function Bt(g,j){g.preventDefault();const T=g.dataTransfer.types.includes(Pe)?g.dataTransfer.getData(Pe)||ge.current:null;qt(),T&&Gn(T,j??{kind:"directory",path:t})}function Yn(g){g.dataTransfer.types.includes(Pe)&&(g.preventDefault(),g.dataTransfer.dropEffect="move")}return e?a.jsxs("div",{className:B.container,onDragOver:Yn,onDragLeave:g=>{g.currentTarget.contains(g.relatedTarget)||qt()},onDrop:g=>Bt(g),children:[a.jsxs("div",{className:B.header,children:[a.jsx("button",{type:"button",className:B.uploadButton,onClick:()=>i(ie,"file"),disabled:!t,title:d?`New file in ${ie.split("/").pop()||"/"}`:"New file in workspace root",children:a.jsx(_t,{size:14})}),a.jsx("button",{type:"button",className:B.uploadButton,onClick:()=>i(ie,"directory"),disabled:!t,title:d?`New folder in ${ie.split("/").pop()||"/"}`:"New folder in workspace root",children:a.jsx(rt,{size:14})}),a.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:[a.jsx(ys,{size:14}),a.jsx("span",{children:"Upload"})]}),a.jsx("input",{ref:k,type:"file",multiple:!0,className:B.hiddenInput,onChange:g=>{Jn(t,Array.from(g.target.files??[])),g.target.value=""}})]}),y&&a.jsx("div",{className:y.error?B.statusError:B.status,children:y.text}),a.jsxs("div",{className:B.list,ref:G,onContextMenu:g=>{g.preventDefault(),f(t,!0,g.clientX,g.clientY,!0)},children:[ye.length===0&&a.jsx("div",{className:B.emptyState,children:"No files loaded"}),a.jsx("div",{style:{position:"relative",height:qe.getTotalSize()},children:qe.getVirtualItems().map(g=>{const j=ye[g.index];return j?a.jsx("div",{"data-index":g.index,style:{position:"absolute",top:0,left:0,width:"100%",height:g.size,transform:`translateY(${g.start}px)`},onDragEnter:T=>{const W=T.dataTransfer.types.includes(Pe)?ge.current:null;if(!W)return;const Y=Qt(W,j,t);z(Y?j.path:null),Vn(j)},onDrop:T=>{T.stopPropagation(),Bt(T,j)},children:a.jsx(Il,{row:j,active:(j.kind==="file"||j.kind==="directory")&&j.path===Xe,selected:(j.kind==="file"||j.kind==="directory")&&j.path===(d==null?void 0:d.path),onToggle:T=>{m({path:T,isDirectory:!0}),o(T)},onOpenFile:T=>{m({path:T,isDirectory:!1}),Be(T)},onContextMenu:(T,W,Y,pe)=>f(T,W,Y,pe),onSubmitDraft:(T,W)=>void Xn(T,W),onCancelDraft:c,onDragStartRow:I,onDragEndRow:ce,dropTarget:(j.kind==="file"||j.kind==="directory")&&j.path===q})},g.key):null})})]}),a.jsx(zl,{})]}):a.jsx("div",{className:B.emptyState,children:"Connect to browse files"})}const en={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},ae=ke()(e=>({subscribedCwd:null,changes:[],...en,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],...en});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,available:!0,branch:t.branch,upstream:t.upstream,ahead:t.ahead,behind:t.behind,detached:t.detached,conflictCount:t.conflicted.length})}})),Ul="_list_1yrj2_1",Kl="_summary_1yrj2_4",Vl="_item_1yrj2_11",Gl="_badge_1yrj2_23",Xl="_added_1yrj2_30",Jl="_modified_1yrj2_34",Yl="_deleted_1yrj2_38",Ql="_name_1yrj2_42",Zl="_emptyState_1yrj2_47",we={list:Ul,summary:Kl,item:Vl,badge:Gl,added:Xl,modified:Jl,deleted:Yl,name:Ql,emptyState:Zl},ed={added:"A",modified:"M",deleted:"D"};function td(){const t=E(r=>r.activeWorkspaceCwd)||"~",n=ae(r=>r.changes),s=E(r=>r.open);function o(r,i){s({id:J.diff(r,i),kind:"diff",label:r.split("/").pop()||r,closable:!0,data:{path:r,staged:i},workspaceCwd:t})}return n.length===0?a.jsx("div",{className:we.emptyState,children:"No changes detected"}):a.jsxs("div",{className:we.list,children:[a.jsxs("div",{className:we.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((r,i)=>a.jsxs("div",{className:we.item,onClick:()=>o(r.path,r.staged),children:[a.jsx("span",{className:F(we.badge,we[r.status]),children:ed[r.status]}),a.jsx("span",{className:we.name,children:r.path})]},`${r.path}-${r.staged}-${i}`))]})}const nd="_wrap_1avgv_1",sd="_tabBar_1avgv_7",od="_tabBtn_1avgv_13",rd="_active_1avgv_29",ad="_refreshBtn_1avgv_33",id="_content_1avgv_37",fe={wrap:nd,tabBar:sd,tabBtn:od,active:rd,refreshBtn:ad,content:id};function cd(){const e=C(c=>c.rightSidebarTab),t=C(c=>c.setRightSidebarTab),s=E(c=>c.activeWorkspaceCwd)||"~",o=M(c=>c.client),r=Ne();function i(){r.invalidateQueries({queryKey:["explorer"]}),o&&s&&o.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return a.jsxs("div",{className:fe.wrap,children:[a.jsxs("div",{className:fe.tabBar,children:[a.jsxs("button",{type:"button",className:F(fe.tabBtn,e==="files"&&fe.active),onClick:()=>t("files"),children:[a.jsx(Ee,{size:13}),"Files"]}),a.jsxs("button",{type:"button",className:F(fe.tabBtn,e==="changes"&&fe.active),onClick:()=>t("changes"),children:[a.jsx(un,{size:13}),"Changes"]}),a.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:fe.refreshBtn,onClick:i,children:a.jsx(bs,{size:13})})]}),a.jsx("div",{className:fe.content,children:e==="files"?a.jsx(Hl,{}):a.jsx(td,{})})]})}const Un=ke()(e=>({bySession:{},setStats(t,n){e(s=>({bySession:{...s.bySession,[t]:{...s.bySession[t],...n}}}))},clear(t){e(n=>{const{[t]:s,...o}=n.bySession;return{bySession:o}})}})),ld=12e3;function dd(e,t){return e==="running"&&t!=="running"}function tn(e,t){var s,o,r,i,c,d;const n={};((s=t.contextUsage)==null?void 0:s.tokens)!=null&&(n.contextTokens=t.contextUsage.tokens),((o=t.contextUsage)==null?void 0:o.contextWindow)!==void 0&&(n.contextWindow=t.contextUsage.contextWindow),((r=t.contextUsage)==null?void 0:r.percent)!=null&&(n.contextPercent=t.contextUsage.percent),((i=t.tokens)==null?void 0:i.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,R.getState().setModel(e,t.model)),Un.getState().setStats(e,n)}function ud(e){const t=M(c=>c.client),n=M(c=>c.status),s=R(c=>{var d;return e?((d=c.sessions[e])==null?void 0:d.agentId)??null:null}),o=R(c=>{var d;return e?(d=c.sessions[e])==null?void 0:d.status:void 0}),r=b.useRef(!1),i=b.useRef(void 0);b.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let c=!1;const d=async()=>{if(!r.current){r.current=!0;try{const h=await t.agent(s).sessionStats();c||tn(e,h)}catch{}finally{r.current=!1}}};d();const m=setInterval(()=>void d(),ld);return()=>{c=!0,clearInterval(m)}},[n,t,e,s]),b.useEffect(()=>{const c=i.current;i.current=o,dd(c,o)&&(n!=="open"||!t||!e||!s||(r.current=!1,t.agent(s).sessionStats().then(d=>tn(e,d)).catch(()=>{})))},[o,n,t,e,s])}function pd(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 fd(e){const t=M(r=>r.client),n=ae(r=>r.applyProjection),s=ae(r=>r.setSubscribedCwd),o=b.useRef(t);return o.current=t,b.useEffect(()=>{if(!t||!e)return;let r=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const i=t.connection.onSessionMessage(c=>{if(r)return;const d=c;pd(d)&&d.cwd===e&&n(d.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{r=!0,i(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const r=o.current;!r||!e||r.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const Mt="--";function Oe(e){return e===void 0?Mt:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function hd(e){if(e==null)return Mt;const t=e<=1?e*100:e;return`${Math.round(t)}%`}function md(e){if(e===void 0)return Mt;const t=e<1?4:2;return`$${e.toFixed(t)}`}function gd(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function _d(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}function yd(e,t=!0){const n=M(s=>s.client);return sn({queryKey:he.providerModels(e),queryFn:async()=>{if(!n)throw new Error("not connected");return(await n.providers.listModels(e)).models},enabled:!!n&&!!e&&t})}function bd(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 wd(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 xd(e){const t=new Set;return e.filter(n=>t.has(n.id)?!1:(t.add(n.id),!0))}const Sd="_content_oe694_4",vd="_search_oe694_17",kd="_list_oe694_35",Id="_item_oe694_40",jd="_itemActive_oe694_54",Cd="_checkSlot_oe694_58",Td="_label_oe694_67",Ed="_modelId_oe694_73",Nd="_state_oe694_80",Rd="_stateError_oe694_89",Md="_commandContent_oe694_99",qd="_commandList_oe694_102",Bd="_commandItem_oe694_107",$d="_commandItemHeader_oe694_140",Ad="_commandKindBadge_oe694_154",Dd="_commandKindExtension_oe694_173",Pd="_commandKindPrompt_oe694_178",Od="_commandKindSkill_oe694_183",Fd="_commandDescription_oe694_188",re={content:Sd,search:vd,list:kd,item:Id,itemActive:jd,checkSlot:Cd,label:Td,modelId:Ed,state:Nd,stateError:Rd,commandContent:Md,commandList:qd,commandItem:Bd,commandItemHeader:$d,commandKindBadge:Ad,commandKindExtension:Dd,commandKindPrompt:Pd,commandKindSkill:Od,commandDescription:Fd};function zd({currentModel:e,provider:t,onSelect:n,renderTrigger:s}){const[o,r]=b.useState(!1),[i,c]=b.useState(""),d=b.useRef(null),{data:m=[],isLoading:h,isError:x,error:p}=yd(t,o),f=xd(wd(m,e));b.useEffect(()=>{var k;o&&(c(""),(k=d.current)==null||k.focus())},[o]);const v=new Map(f.map(k=>[k.id,k.provider])),y=f.map(k=>({value:k.id,label:k.label??k.id,description:k.id})),_=bd(y,i),q=p instanceof Error?p.message:"Failed to load models";function z(k){k.stopPropagation(),k.key==="Escape"&&r(!1)}return a.jsxs(Ue,{open:o,onOpenChange:r,modal:!1,children:[a.jsx(Ke,{asChild:!0,children:s(e)}),a.jsx(Ve,{children:a.jsxs(Ge,{className:re.content,align:"start",sideOffset:4,children:[a.jsx("input",{ref:d,className:re.search,placeholder:"Search models…",value:i,onChange:k=>c(k.target.value),onKeyDown:z}),h&&a.jsx("div",{className:re.state,children:a.jsx(Pn,{size:"sm"})}),!h&&x&&a.jsx("div",{className:re.stateError,children:q}),!h&&!x&&_.length===0&&a.jsx("div",{className:re.state,children:"No models found"}),!h&&!x&&_.length>0&&a.jsx("div",{className:re.list,children:_.map(k=>a.jsxs(D,{className:re.item,onSelect:()=>n(k.value,v.get(k.value)),children:[a.jsx("span",{className:re.checkSlot,"aria-hidden":!0,children:k.value===e&&a.jsx(hn,{size:14})}),a.jsx("span",{className:re.label,children:k.label}),a.jsxs("span",{className:re.modelId,children:["(",k.value,")"]})]},k.value))})]})})]})}const Wd="_statusBar_11z00_1",Ld="_segmentGroup_11z00_16",Hd="_chevron_11z00_20",Ud="_segment_11z00_16",Kd="_icon_11z00_33",Vd="_modelSegment_11z00_39",Gd="_modelChevron_11z00_63",Xd="_text_11z00_74",ne={statusBar:Wd,segmentGroup:Ld,chevron:Hd,segment:Ud,icon:Kd,modelSegment:Vd,modelChevron:Gd,text:Xd};function Jd(){const e=R(_=>_.activeSessionId),t=R(_=>e?_.sessions[e]:void 0),n=M(_=>_.client),s=R(_=>_.setModel),o=dt(),r=E(_=>_.activeWorkspaceCwd);fd(r||"");const i=ae(_=>_.available),c=ae(_=>_.branch),d=ae(_=>_.ahead),m=ae(_=>_.behind),h=ae(_=>_.detached),x=ae(_=>_.conflictCount),p=ae(_=>_.changes.length),f=Un(_=>e?_.bySession[e]:void 0);ud(e);const v=[];if(t){const _=gd(t.cwd,o);v.push({key:"cwd",icon:a.jsx(Ee,{size:13}),text:_,title:t.cwd})}if(i){const _=_d(d,m),q=[h?"(detached)":c??"?"];_&&q.push(_),p>0&&q.push(`●${p}`),x>0&&q.push(`⚠${x}`),v.push({key:"branch",icon:a.jsx(ws,{size:13}),text:q.join(" ")})}if(t){const _=`${hd(f==null?void 0:f.contextPercent)} (${Oe(f==null?void 0:f.contextTokens)}/${Oe(f==null?void 0:f.contextWindow)})`;v.push({key:"context",icon:a.jsx(xs,{size:13}),text:_}),v.push({key:"tokens",icon:a.jsx(Ss,{size:13}),text:Oe(f==null?void 0:f.totalTokens),title:`in ${Oe(f==null?void 0:f.inputTokens)} / out ${Oe(f==null?void 0:f.outputTokens)}`}),v.push({key:"cost",icon:a.jsx(vs,{size:13}),text:md(f==null?void 0:f.cost)})}function y(_,q){e&&(s(e,_,q),!(!n||!q)&&(async()=>{const z=await $n(n,e);await n.agent(z).setModel(q,_)})().catch(()=>{}))}return a.jsxs("div",{className:ne.statusBar,children:[t&&a.jsx("span",{className:ne.segmentGroup,children:a.jsx(zd,{currentModel:t.model,provider:"pi",onSelect:y,renderTrigger:_=>a.jsxs("button",{type:"button",className:ne.modelSegment,disabled:!n,title:_?`Model: ${_}`:"Select model",children:[a.jsx("span",{className:ne.icon,children:a.jsx(ks,{size:13})}),a.jsx("span",{className:ne.text,children:_??"Model"}),a.jsx(rn,{size:12,className:ne.modelChevron,"aria-hidden":"true"})]})})}),v.map((_,q)=>a.jsxs("span",{className:ne.segmentGroup,children:[(!!t||q>0)&&a.jsx(Ct,{size:12,className:ne.chevron,"aria-hidden":"true"}),a.jsxs("span",{className:ne.segment,title:_.title,children:[a.jsx("span",{className:ne.icon,children:_.icon}),a.jsx("span",{className:ne.text,children:_.text})]})]},_.key))]})}const Yd="_wrapper_sylgk_3",Qd="_box_sylgk_18",Zd="_checkmark_sylgk_38",eu="_nativeInput_sylgk_43",nt={wrapper:Yd,box:Qd,checkmark:Zd,nativeInput:eu};b.forwardRef(function({label:t,checked:n=!1,disabled:s,className:o,onChange:r,...i},c){return a.jsxs("label",{className:nt.wrapper,"data-disabled":s||void 0,children:[a.jsx("input",{ref:c,type:"checkbox",className:nt.nativeInput,checked:n,disabled:s,onChange:r,...i}),a.jsx("span",{className:nt.box,"data-checked":n,"aria-hidden":!0,children:n&&a.jsx(hn,{size:12,className:nt.checkmark})}),t&&a.jsx("span",{children:t})]})});const tu="_select_1rlgr_3",nu={select:tu};b.forwardRef(function({options:t,placeholder:n,className:s,...o},r){return a.jsxs("select",{ref:r,className:F(nu.select,s),...o,children:[n&&a.jsx("option",{value:"",disabled:!0,children:n}),t.map(i=>a.jsx("option",{value:i.value,children:i.label},i.value))]})});const su="_overlay_1jyoi_1",ou="_contentWrapper_1jyoi_7",ru="_dialog_1jyoi_16",au="_header_1jyoi_28",iu="_title_1jyoi_36",cu="_closeBtn_1jyoi_43",lu="_body_1jyoi_57",du="_footer_1jyoi_63",uu="_bare_1jyoi_72",pu="_bareBody_1jyoi_78",fu="_bareCloseBtn_1jyoi_82",hu="_visuallyHidden_1jyoi_101",Q={overlay:su,contentWrapper:ou,dialog:ru,header:au,title:iu,closeBtn:cu,body:lu,footer:du,bare:uu,bareBody:pu,bareCloseBtn:fu,visuallyHidden:hu},mu=yt;function gu({open:e,onOpenChange:t,title:n,children:s,footer:o,width:r,className:i,bare:c=!1}){return a.jsx(js,{open:e,onOpenChange:t,children:a.jsxs(Cs,{children:[a.jsx(Ts,{className:Q.overlay}),a.jsx("div",{className:Q.contentWrapper,children:a.jsxs(Es,{className:F(Q.dialog,c&&Q.bare,i),style:r!==void 0?{width:r}:void 0,children:[c?a.jsx($t,{className:Q.visuallyHidden,children:n}):a.jsxs("div",{className:Q.header,children:[a.jsx($t,{className:Q.title,children:n}),a.jsx(yt,{asChild:!0,children:a.jsx("button",{type:"button",className:Q.closeBtn,"aria-label":"Close",children:a.jsx(gt,{size:16})})})]}),a.jsx("div",{className:F(Q.body,c&&Q.bareBody),children:s}),c&&a.jsx(yt,{asChild:!0,children:a.jsx("button",{type:"button",className:Q.bareCloseBtn,"aria-label":"Close",children:a.jsx(gt,{size:16})})}),o&&a.jsx("div",{className:Q.footer,children:o})]})})]})})}const _u="_handle_1ocv1_1",yu={handle:_u};function nn({side:e,onResize:t,className:n}){const s=b.useRef(0),o=b.useCallback(c=>{const d=c.clientX-s.current;s.current=c.clientX,t(e==="left"?d:-d)},[t,e]),r=b.useCallback(c=>{var d,m;window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",r),document.body.style.cursor="",document.body.style.userSelect="",(m=(d=c.target)==null?void 0:d.releasePointerCapture)==null||m.call(d,c.pointerId)},[o]);function i(c){c.preventDefault(),s.current=c.clientX,document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",o),window.addEventListener("pointerup",r)}return a.jsx("div",{className:F(yu.handle,n),onPointerDown:i,role:"separator","aria-orientation":"vertical"})}function bu(e,t){const{order:n,sessions:s}=R.getState(),r=Rt(n,s,t).find(i=>i.cwd===e);if(r!=null&&r.sessions[0]){const i=r.sessions[0].id;R.getState().activate(i);const c=R.getState().sessions[i];E.getState().open({id:J.chat(i),kind:"chat",label:(c==null?void 0:c.title)??"New chat",closable:!0,data:{sessionId:i},workspaceCwd:e})}else Nt(e);C.getState().setCwd(e)}const wu="_pathRow_t4yml_1",xu="_pathInput_t4yml_9",Su="_createRow_t4yml_13",vu="_createInput_t4yml_21",ku="_createError_t4yml_25",Iu="_list_t4yml_30",ju="_item_t4yml_37",Cu="_name_t4yml_49",Tu="_emptyState_t4yml_54",se={pathRow:wu,pathInput:xu,createRow:Su,createInput:vu,createError:ku,list:Iu,item:ju,name:Cu,emptyState:Tu};function Eu(){const e=C(I=>I.cwdPickerOpen),t=C(I=>I.closeCwdPicker),n=E(I=>I.activeWorkspaceCwd),s=C(I=>I.cwd),o=M(I=>I.client),r=dt(),[i,c]=b.useState("/"),[d,m]=b.useState("/"),[h,x]=b.useState(!1),[p,f]=b.useState(""),[v,y]=b.useState(null),[_,q]=b.useState(!1),z=Ne();b.useEffect(()=>{if(!e)return;const I=Re(n||s||"~",r);c(I),m(I),ie()},[e,o,n,s]);const{data:k,isLoading:G,isError:ge,error:ee}=Lc(i,e&&!!o),Xe=((k==null?void 0:k.entries)??[]).filter(I=>I.kind==="directory");function ie(){x(!1),f(""),y(null)}function _e(I){const ce=I.length>1?I.replace(/\/+$/,"")||"/":I;c(ce),m(ce),ie()}function Me(){_e(i.split("/").slice(0,-1).join("/")||"/")}function ye(){_e(d.trim())}async function qe(){const I=p.trim();if(!(!I||!o||_)){q(!0),y(null);try{const ce=await Hn(o,i,I,"directory");await z.invalidateQueries({queryKey:he.explorer(i)}),_e(ce)}catch(ce){y(ce instanceof Error?ce.message:"Failed to create folder")}finally{q(!1)}}}function Be(){bu(i,r),t()}return a.jsxs(gu,{open:e,onOpenChange:I=>!I&&t(),title:"Open Workspace",footer:a.jsxs(a.Fragment,{children:[a.jsx(mu,{asChild:!0,children:a.jsx(V,{size:"sm",variant:"secondary",children:"Cancel"})}),a.jsx(V,{size:"sm",onClick:Be,children:"Open this folder"})]}),children:[a.jsxs("div",{className:se.pathRow,children:[a.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:Me,children:a.jsx(Is,{size:13})}),a.jsx(at,{className:se.pathInput,value:d,onChange:I=>m(I.target.value),onKeyDown:I=>{I.key==="Enter"&&(I.preventDefault(),ye())}}),a.jsx(V,{size:"xs",onClick:ye,children:"Go"}),a.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!o||ge||h,onClick:()=>{x(!0),f(""),y(null)},children:a.jsx(rt,{size:13})})]}),h&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:se.createRow,children:[a.jsx(Ee,{size:14}),a.jsx(at,{className:se.createInput,autoFocus:!0,placeholder:"New folder name",value:p,onChange:I=>f(I.target.value),onKeyDown:I=>{I.key==="Enter"?(I.preventDefault(),qe()):I.key==="Escape"&&(I.preventDefault(),I.stopPropagation(),ie())}}),a.jsx(V,{size:"xs",loading:_,disabled:!p.trim()||_,onClick:()=>void qe(),children:"Create"}),a.jsx(V,{size:"xs",variant:"secondary",onClick:ie,children:"Cancel"})]}),v&&a.jsx("div",{className:se.createError,children:v})]}),a.jsx("div",{className:se.list,children:G?a.jsx("div",{className:se.emptyState,children:"Loading..."}):ge?a.jsxs("div",{className:se.emptyState,children:["Error: ",ee instanceof Error?ee.message:"unknown error"]}):Xe.length===0?a.jsx("div",{className:se.emptyState,children:"No subdirectories"}):Xe.map(I=>a.jsxs("div",{className:se.item,onClick:()=>_e(i==="/"?`/${I.name}`:`${i}/${I.name}`),children:[a.jsx(Ee,{size:14}),a.jsx("span",{className:se.name,children:I.name})]},I.name))})]})}const Nu="_shell_1ilqr_1",Ru="_main_1ilqr_7",Mu="_sidebarLeft_1ilqr_13",qu="_leftHandle_1ilqr_25",Bu="_center_1ilqr_28",$u="_sidebarRight_1ilqr_35",Au="_rightHandle_1ilqr_43",xe={shell:Nu,main:Ru,sidebarLeft:Mu,leftHandle:qu,center:Bu,sidebarRight:$u,rightHandle:Au};function Du(){const e=C(i=>i.leftSidebarCollapsed),t=C(i=>i.rightSidebarCollapsed),n=C(i=>i.leftSidebarWidth),s=C(i=>i.rightSidebarWidth),o=C(i=>i.resizeLeftSidebar),r=C(i=>i.resizeRightSidebar);return a.jsxs("div",{className:xe.shell,children:[a.jsx(ii,{}),a.jsxs("div",{className:xe.main,children:[!e&&a.jsxs("aside",{className:xe.sidebarLeft,style:{width:n},children:[a.jsx(dc,{}),a.jsx(nn,{side:"left",className:xe.leftHandle,onResize:o})]}),a.jsxs("div",{className:xe.center,children:[a.jsx(kc,{}),a.jsx(Fc,{})]}),!t&&a.jsxs("aside",{className:xe.sidebarRight,style:{width:s},children:[a.jsx(nn,{side:"right",className:xe.rightHandle,onResize:r}),a.jsx(cd,{})]})]}),a.jsx(Jd,{}),a.jsx(Eu,{})]})}function Pu(){const e=b.useRef(!1);b.useEffect(()=>{if(e.current)return;if(e.current=!0,window.location.hash.includes("offer=")){const d=window.location.href;C.getState().setHost(d),M.getState().connect({url:d});return}const t=new URLSearchParams(window.location.search),n=t.get("host"),s=t.get("pair"),o=t.get("password"),r=t.get("cwd"),i=t.get("connect")==="1",c=C.getState();if(s?c.setHost(s):n&&c.setHost(n),o&&c.setPassword(o),r&&c.setCwd(r),s)M.getState().connect({url:s});else if(i){const{host:d,password:m}=C.getState();M.getState().connect({url:d,password:m||void 0})}},[])}function Ou(e){return typeof e=="object"&&e!==null&&"kind"in e}function Fu(e){const t=[];for(const n of e)if(Ou(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 zu(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...Fu(s.items)),!s.hasNewer))return t;const o=s.endCursor;if(typeof o!="string"||o===n)return t;n=o}}function Wu(e){return typeof e.model=="string"}function Lu(){const e=M(s=>s.client),t=M(s=>s.status),n=b.useRef(!1);b.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,(async()=>{var x;let s=[];try{s=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{s=[]}s.sort((p,f)=>(f.lastActivity??0)-(p.lastActivity??0));const o=R.getState();for(const p of s){if(o.findByAgentId(p.agentId))continue;let f=St;try{f=(await zu(_=>e.agent(p.agentId).timeline.fetch({direction:"after",cursor:_??void 0,limit:200}))).reduce(Bn,St)}catch{}const v=f.rows.length===0;o.hydrate({id:`s-${p.agentId.slice(0,12)}`,agentId:p.agentId,title:p.title||(v?"New chat":(x=p.cwd)==null?void 0:x.split("/").pop())||"Restored",status:p.status??"idle",cwd:p.cwd||"~",timeline:f,userMessageCount:f.rows.filter(y=>y.kind==="user").length,model:p.model,modelProvider:p.modelProvider})}const{order:r,sessions:i}=R.getState(),c=r.length>0?i[r[0]??""]:void 0;if(!c)return;const d=await lt(e).catch(()=>null),m=Re(c.cwd||"~",d),h=Rt(r,i,d);C.getState().setCollapsedWorkspaces(cc(h,m)),R.getState().activate(c.id),C.getState().setCwd(c.cwd),E.getState().open({id:J.chat(c.id),kind:"chat",label:c.title,closable:!0,data:{sessionId:c.id},workspaceCwd:m})})())},[t,e]),b.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(Wu(s)){const o=typeof s.modelProvider=="string"?s.modelProvider:void 0;R.getState().setModelByAgentId(s.agentId,s.model,o)}})},[t,e])}function Hu(){const e=M(s=>s.client),t=M(s=>s.status),n=b.useRef(!1);b.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 o=await lt(e).catch(()=>null),r=E.getState().open;for(const i of s){if(i.closed)continue;const c=Re(i.cwd||"~",o);r({id:J.terminal(i.slot),kind:"terminal",label:i.name,closable:!0,data:{slot:i.slot,cwd:c},workspaceCwd:c})}})())},[t,e])}function Uu(){b.useEffect(()=>{function e(t){const n=C.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),An(E.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:o,tabs:r}=E.getState();if(!o)return;const i=r.find(c=>c.id===o);(i==null?void 0:i.closable)!==!1&&(t.preventDefault(),vt(o))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function Ku(){return Pu(),Lu(),Hu(),Uu(),null}function Vu(){return a.jsxs(No,{children:[a.jsx(Ku,{}),a.jsx(Du,{})]})}const Kn=document.getElementById("root");if(!Kn)throw new Error("Missing #root element");ts.createRoot(Kn).render(a.jsx(b.StrictMode,{children:a.jsx(Vu,{})}));export{V as B,gu as D,Pn as S,sp as T,cp as V,M as a,dt as b,ip as c,lp as d,$n as e,bd as f,op as g,E as h,rp as i,ap as j,Yt as k,J as l,Re as n,he as r,re as s,ci as t,R as u};
|
|
3
|
-
//# sourceMappingURL=index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatPanel-DkzghxDD.js","assets/vendor-react-CWo7Do4s.js","assets/vendor-query-BGIh-vlp.js","assets/vendor-icons-o8-A85LK.js","assets/markdown-BYfNvYaQ.js","assets/vendor-highlight-DJPF6TSB.js","assets/vendor-markdown-B7A4rVFd.js","assets/vendor-B8b-mb3g.js","assets/markdown-DI2EwgWf.css","assets/StatusBadge-Cripx88K.js","assets/StatusBadge-DwC2kTaC.css","assets/DiffView-C0Hj-N8T.js","assets/DiffView-D4YVGgEU.css","assets/vendor-overlays-K8dEJFRA.js","assets/vendor-dnd-CH6z-X6S.js","assets/ChatPanel-CQLDxTXk.css","assets/FilePanel-DyripXtT.js","assets/use-file-watch-OymI8MSJ.js","assets/FilePanel.module-CZJhfnR7.js","assets/FilePanel-CAeLW13m.css","assets/TerminalPanel-BFeJqRjE.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-D_zUAE5t.css","assets/MoleculeViewerPanel-js-qLz7t.js","assets/vendor-molviewer-CARaM-YQ.js","assets/vendor-molviewer-Bychyqid.css","assets/use-file-download-BBEHMJ-D.js","assets/MoleculeViewerPanel-DSOV4pHJ.css","assets/TextViewer-BQ5pBxgI.js","assets/CodeView-C1JNpC0H.js","assets/CodeView-BO8BIqVA.css","assets/TextViewer-BL-M7P0v.css","assets/MarkdownFileViewer-Bsnk43R7.js","assets/MarkdownFileViewer-BD5Ri_Fb.css","assets/ImageViewer-kCGwfJK6.js","assets/ImageViewer-ijzMsq8H.css","assets/VideoViewer-CGl515qS.js","assets/VideoViewer-BBuZ4wou.css","assets/BinaryFallbackViewer-mpzWiSnO.js","assets/BinaryFallbackViewer-tQuWh1gb.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var Zn=Object.defineProperty;var es=(e,t,n)=>t in e?Zn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var N=(e,t,n)=>es(e,typeof t!="symbol"?t+"":t,n);import{r as b,j as a,c as ts}from"./vendor-react-CWo7Do4s.js";import{Q as ns,a as ss,u as sn,b as os,c as Ne,d as rs}from"./vendor-query-BGIh-vlp.js";import{A as l,B as u,C as F,D as on,E as $,F as ve,G as de,H as A,I as w,J as L,K as U,L as it,M as Te,N as ke}from"./vendor-B8b-mb3g.js";import{L as as,P as is,a as cs,b as ls,c as ds,E as It,d as us,S as ps,A as fs,T as jt,C as Ct,e as rn,F as hs,f as an,g as cn,h as ln,i as dn,G as un,j as ms,M as pn,X as gt,k as Ee,l as fn,m as _t,n as rt,o as Je,p as gs,D as _s,U as ys,R as bs,q as hn,r as ws,s as xs,t as Ss,u as vs,v as ks,w as Is}from"./vendor-icons-o8-A85LK.js";import{R as Ue,T as Ke,P as Ve,C as Ge,I as D,S as Se,D as js,a as Cs,b as Ts,c as Es,d as $t,e as yt}from"./vendor-overlays-K8dEJFRA.js";import{u as Ns,a as Rs,D as Ms,c as qs,S as Bs,h as $s,P as As,b as Ds,C as Ps}from"./vendor-dnd-CH6z-X6S.js";import{_ as ue}from"./vendor-highlight-DJPF6TSB.js";import"./vendor-markdown-B7A4rVFd.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const Os=new ns;function mn(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 Fs(e){return Math.max(0,Math.min(255,Math.round(e)))}function zs({r:e,g:t,b:n}){const s=o=>Fs(o).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function Ws(e){const{r:t,g:n,b:s}=mn(e),o=r=>{const i=r/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*o(t)+.7152*o(n)+.0722*o(s)}function Tt(e,t="#18181b",n="#ffffff"){return Ws(e)>.45?t:n}function Ls(e,t){const{r:n,g:s,b:o}=mn(e),r=Math.max(0,Math.min(1,t));return zs({r:n+(255-n)*r,g:s+(255-s)*r,b:o+(255-o)*r})}function Ye(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const te=(e,t,n,s,o,r,i,c,d,m,h)=>({50:e,100:t,200:n,300:s,400:o,500:r,600:i,700:c,800:d,900:m,950:h}),S={zinc:te("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:te("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:te("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:te("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:te("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:te("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:te("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:te("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:te("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:te("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:te("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"},Hs={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea"},Us={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed"};function Ks(){return{keyword:S.purple[300],string:S.green[300],number:S.orange[300],boolean:S.orange[300],comment:S.zinc[500],function:S.blue[300],variable:S.zinc[200],type:S.teal[300],class:S.amber[300],constant:S.orange[300],operator:S.zinc[400],punctuation:S.zinc[400],tag:S.red[300],attribute:S.amber[300],property:S.blue[200],regexp:S.teal[300],escape:S.orange[200],heading:S.blue[300],link:S.blue[400],deleted:S.red[400],inserted:S.green[400]}}function Vs(){return{keyword:S.purple[700],string:S.green[700],number:S.orange[700],boolean:S.orange[700],comment:S.zinc[500],function:S.blue[700],variable:S.zinc[800],type:S.teal[700],class:S.amber[700],constant:S.orange[700],operator:S.zinc[600],punctuation:S.zinc[600],tag:S.red[700],attribute:S.amber[700],property:S.blue[700],regexp:S.teal[700],escape:S.orange[700],heading:S.blue[700],link:S.blue[600],deleted:S.red[700],inserted:S.green[700]}}function gn(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:S.zinc[900],red:S.red[500],green:S.green[500],yellow:S.amber[500],blue:S.blue[500],magenta:S.purple[500],cyan:S.teal[500],white:S.zinc[300],brightBlack:S.zinc[600],brightRed:S.red[400],brightGreen:S.green[400],brightYellow:S.amber[400],brightBlue:S.blue[400],brightMagenta:S.purple[400],brightCyan:S.teal[400],brightWhite:S.zinc[50]}}function $e(e){const t=S.zinc[50],n=Tt(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:S.white,success:e.accent,successForeground:S.white,border:e.border,borderAccent:e.borderAccent,...Hs,diffAddition:S.green[400],diffDeletion:S.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:S,syntax:Ks(),terminal:gn(e.surface0,t,e.accent)}}function Gs(){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:Tt(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...Us,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:S,syntax:Vs(),terminal:{...gn("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const Xs={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},_n=["light","dark","zinc","midnight","claude","ghostty"];function Js(e){if(e==="light")return Gs();switch(e){case"dark":return $e({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 $e({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 $e({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 $e({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 $e({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 yn={};for(const e of _n){const t=e==="light"?"light":"dark";yn[e]={name:e,colorScheme:t,colors:Js(e),swatch:Xs[e]}}const Ys=yn,Qs={0:0,1:4,"1.5":6,2:8,3:12,4:16,6:24,8:32,12:48,16:64,20:80,24:96,32:128},bn={xs:15,code:15,sm:17,base:20,lg:23,xl:25,"2xl":27,"3xl":33,"4xl":43},Zs={normal:"400",medium:"500",semibold:"600",bold:"700"},eo={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},to={0:0,1:1,2:2},no={0:0,50:.5,100:1},so={xs:12,sm:14,md:16,lg:20},oo={diff:22},wn='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',xn='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function ro(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 Sn(e){const t=Ys[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:Qs,fontSize:{...bn},fontFamily:{ui:wn,mono:xn},lineHeight:{...oo},iconSize:so,fontWeight:Zs,borderRadius:eo,borderWidth:to,opacity:no,shadow:ro(t.colorScheme),swatch:t.swatch}}const ao=16,io=10,co=24;function lo(e,t){const n=t.themeName??e.name,s=Sn(n),o=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:wn,r=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:xn;let i={...s.fontSize};if(t.fontSize!=null){const d=Math.max(io,Math.min(co,t.fontSize))/ao,m=["xs","code","sm","base","lg","xl","2xl","3xl","4xl"];for(const h of m){const x=bn[h];i[h]=Math.round(x*d)}}return{...s,fontSize:i,fontFamily:{ui:o,mono:r}}}function uo(e){return Sn(e)}const po="dark",fo=16;function ho(e){const t=e/fo;return`${Number(t.toFixed(4))}rem`}function mo(e){const t={};go(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}`]=ho(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 o=s;t[`--pi-shadow-${n}`]=`${o.offsetX}px ${o.offsetY}px ${o.radius}px ${o.color}`}return t["--pi-color-scheme"]=e.colorScheme,t}function go(e,t){const{palette:n,syntax:s,terminal:o,...r}=e;for(const[i,c]of Object.entries(r))typeof c=="string"&&(t[`--pi-color-${i}`]=c);s&&_o(s,t),o&&(t["--pi-terminal-bg"]=o.background,t["--pi-terminal-fg"]=o.foreground)}function _o(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${yo(n)}`]=s)}function yo(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function bo(e){if(typeof document>"u")return;const t=document.documentElement.style;for(const[s,o]of Object.entries(e))t.setProperty(s,o);const n=e["--pi-color-scheme"];n&&document.documentElement.style.setProperty("color-scheme",n)}function wo(e){const t=mo(e);bo(t)}const Ae=l().min(1,"Asset path must not be empty"),xo=u({accent:l().refine(Ye,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(Ye,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(Ye,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(Ye,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),So=u({logoLight:Ae,logoDark:Ae,logoMark:Ae.optional(),icon:Ae,splash:Ae.optional()}),vo=u({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),ko=u({copyright:l().optional(),companyName:l().optional()}).optional();u({productName:l().min(1,"productName is required"),shortName:l().optional(),tagline:l().optional(),colors:xo,assets:So,links:vo,legal:ko});function Io(e){const t=e.accent,n=e.accentBright??Ls(t,.35),s=e.accentForeground??Tt(t),o=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:o}}function jo(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 At="pi-studio-appearance";function Co(e,t){let n=c(e),s=null;function o(h){return h==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":h}function r(h,x){const p=o(h),f=uo(p);let v=lo(f,{...x,themeName:p});if(t!=null&&t.colors){const y=Io(t.colors);v=jo(v,y)}return v}function i(){const h=JSON.stringify({mode:n.mode,settings:n.settings});e.set(At,h)}function c(h){const x=h.get(At);let p=po,f={};if(x)try{const y=JSON.parse(x);y.mode&&(_n.includes(y.mode)||y.mode==="system")&&(p=y.mode),y.settings&&typeof y.settings=="object"&&(f=y.settings)}catch{}const v=r(p,f);return{mode:p,settings:f,resolvedTheme:v}}function d(){n={...n,resolvedTheme:r(n.mode,n.settings)},i()}const m={getState(){return n},setMode(h){n={...n,mode:h},d(),m.apply()},updateSettings(h){n={...n,settings:{...n.settings,...h}},d(),m.apply()},apply(){wo(n.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const h=window.matchMedia("(prefers-color-scheme: dark)"),x=()=>{n.mode==="system"&&(d(),m.apply())};return h.addEventListener("change",x),s=()=>h.removeEventListener("change",x),s}};return m}function To({store:e,brandConfig:t,children:n}){const s=b.useRef(null);return s.current||(s.current=Co(e,t),s.current.apply()),b.useEffect(()=>s.current.listen(),[]),a.jsx(a.Fragment,{children:n})}const Eo={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 No({children:e}){return a.jsx(To,{store:Eo,children:a.jsx(ss,{client:Os,children:e})})}const Ro="_btn_1chbg_4",Mo="_secondary_1chbg_44",qo="_outline_1chbg_53",Bo="_ghost_1chbg_62",$o="_destructive_1chbg_72",Ao="_iconOnly_1chbg_82",Do="_loadingSpinner_1chbg_89",Po="_piSpin_1chbg_1",Qe={btn:Ro,default:"_default_1chbg_35",secondary:Mo,outline:qo,ghost:Bo,destructive:$o,iconOnly:Ao,loadingSpinner:Do,piSpin:Po},Dt={xs:28,sm:32,md:36,lg:40},Oo={xs:12,sm:14,md:16,lg:20},Pt={xs:8,sm:10,md:12,lg:16},Fo={xs:"0.9375rem",sm:"1rem",md:"1.0625rem",lg:"1.1875rem"};function zo(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:o,trailing:r,iconOnly:i=!1,children:c,style:d,className:m,...h}){const{opacity:x}=zo({disabled:s??!1,loading:n}),p=s||n,f=Oo[t];return a.jsxs("button",{className:F(Qe.btn,Qe[e],i&&Qe.iconOnly,m),disabled:p,"aria-busy":n||void 0,style:{minHeight:Dt[t],paddingLeft:i?void 0:Pt[t],paddingRight:i?void 0:Pt[t],fontSize:Fo[t],opacity:x,...i?{width:Dt[t]}:{},...d},...h,children:[n?a.jsx(as,{className:Qe.loadingSpinner,size:f,"aria-hidden":!0}):o?a.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o}):null,c,r&&!n&&a.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r})]})}const Wo="_input_14ys1_3",Lo="_textarea_14ys1_32",bt={input:Wo,textarea:Lo},at=b.forwardRef(function({className:t,...n},s){return a.jsx("input",{ref:s,className:F(bt.input,t),...n})}),sp=b.forwardRef(function({className:t,...n},s){return a.jsx("textarea",{ref:s,className:F(bt.input,bt.textarea,t),...n})}),vn=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const Le=on([$(),vn]),Ho=ve(["mobile","browser","cli","mcp"]),Uo=u({type:w("hello"),clientId:l(),clientType:Ho,protocolVersion:$(),appVersion:l().optional(),capabilities:de(l(),A()).optional()}),Ko=u({status:w("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),capabilities:de(l(),L()),features:de(l(),L())}),Vo=u({type:w("status"),payload:Ko}),Go=u({type:w("ping"),requestId:l(),clientSentAt:Le.optional()}),Xo=u({type:w("pong"),requestId:l(),clientSentAt:Le.optional(),serverReceivedAt:Le,serverSentAt:Le}),kn=ve(["initializing","idle","running","error","closed"]),ct=u({mimeType:l().optional(),data:l().optional()}).passthrough(),Jo=u({prs:U(L()).optional(),issues:U(L()).optional()}).passthrough(),Yo=u({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:de(l(),L()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:A().optional(),webSearch:A().optional(),extra:u({pi:L().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:de(l(),L()).optional()}),Qo=u({type:w("create_agent_request"),requestId:l(),config:Yo,env:de(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:de(l(),L()).optional(),images:U(ct).optional(),attachments:Jo.optional(),git:L().optional(),worktree:L().optional(),autoArchive:A().optional(),labels:de(l(),l()).default({})}),Zo=u({type:w("create_agent_response"),requestId:l(),payload:u({agentId:l()}).passthrough()}),er=u({type:w("agent_update"),agentId:l(),status:kn.optional(),title:l().nullable().optional(),labels:de(l(),l()).optional()}),tr=u({type:w("agent_status"),agentId:l(),status:kn}),nr=u({type:w("agent_list"),agents:U(u({id:l()}).passthrough())}),sr=u({type:w("agent_deleted"),agentId:l()}),or=u({type:w("agent_archived"),agentId:l(),archivedAt:vn.optional()}),In=it("kind",[u({kind:w("shell"),command:l().optional(),output:l().optional()}),u({kind:w("read"),path:l().optional(),output:l().optional()}),u({kind:w("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),u({kind:w("write"),path:l().optional(),output:l().optional()}),u({kind:w("search"),query:l().optional(),output:l().optional()}),u({kind:w("fetch"),url:l().optional(),output:l().optional()}),u({kind:w("task"),description:l().optional(),output:l().optional()})]),rr=it("kind",[u({kind:w("user_message"),messageId:l().optional(),text:l().optional(),images:U(ct).optional()}),u({kind:w("assistant_message"),messageId:l().optional(),text:l().optional()}),u({kind:w("reasoning"),text:l().optional()}),u({kind:w("tool_call"),callId:l().optional(),tool:In,status:l().optional()}),u({kind:w("turn_started"),turnId:l().optional()}),u({kind:w("turn_completed"),turnId:l().optional()}),u({kind:w("turn_failed"),turnId:l().optional(),error:l().optional()}),u({kind:w("turn_canceled"),turnId:l().optional()}),u({kind:w("error"),message:l().optional()}),u({kind:w("queue_update"),steering:U(l()).optional(),followUp:U(l()).optional()})]),ar=u({type:w("agent_stream"),agentId:l(),seq:$().optional(),timestamp:Le.optional(),event:rr}),ir=ve(["before","after"]),cr=u({start:$(),end:$()}),lr=u({type:w("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:ir,limit:$().optional()}),dr=u({type:w("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:U(L()),seqStart:$(),seqEnd:$(),sourceSeqRanges:U(cr),collapsed:A(),hasNewer:A(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),ur=u({type:w("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:In.optional(),action:L().optional(),responses:U(l()).optional()}),pr=u({type:w("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),fr=u({type:w("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:L()}),hr=u({type:w("agent.permission.respond.response"),requestId:l(),payload:u({resolved:A()}).passthrough()}),mr=u({type:w("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:L()}),jn=ve(["conversation","files","both"]),gr=u({type:w("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:jn}).passthrough(),_r=u({type:w("agent.rewind.response"),requestId:l(),payload:u({agentId:l(),messageId:l(),mode:jn,truncatedAt:l().optional()}).passthrough()}).passthrough(),yr=u({input:$().optional(),output:$().optional(),cacheRead:$().optional(),cacheWrite:$().optional(),total:$().optional()}).passthrough(),br=u({tokens:$().nullable().optional(),contextWindow:$().optional(),percent:$().nullable().optional()}).passthrough(),wr=u({type:w("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),xr=u({type:w("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:yr.optional(),cost:$().optional(),contextUsage:br.optional(),model:l().optional()}).passthrough()}).passthrough(),Sr=u({type:w("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),vr=u({type:w("agent_compact_response"),requestId:l(),payload:u({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:$().optional(),details:L().optional()}).passthrough()}).passthrough(),kr=u({type:w("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),Ir=u({type:w("agent_new_session_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),jr=u({type:w("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),Cr=u({type:w("agent_switch_session_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),Tr=u({type:w("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),Er=u({type:w("agent_fork_response"),requestId:l(),payload:u({text:l(),cancelled:A()}).passthrough()}).passthrough(),Nr=u({type:w("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),Rr=u({type:w("agent_fork_messages_response"),requestId:l(),payload:u({messages:U(u({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),Mr=u({type:w("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),qr=u({type:w("agent_clone_response"),requestId:l(),payload:u({cancelled:A()}).passthrough()}).passthrough(),Br=u({type:w("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),$r=u({type:w("agent_set_session_name_response"),requestId:l(),payload:u({}).passthrough().optional()}).passthrough(),Ar=u({type:w("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),Dr=u({type:w("agent_export_html_response"),requestId:l(),payload:u({path:l()}).passthrough()}).passthrough(),Pr=u({type:w("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),Or=u({type:w("agent_set_model_response"),requestId:l(),payload:u({}).passthrough()}).passthrough(),Fr=u({type:w("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),zr=u({type:w("agent_cycle_model_response"),requestId:l(),payload:u({model:L().nullable().optional(),thinkingLevel:l().optional(),isScoped:A().optional()}).passthrough()}).passthrough(),Wr=u({type:w("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),Lr=u({type:w("agent_last_assistant_text_response"),requestId:l(),payload:u({text:l().nullable()}).passthrough()}).passthrough(),Hr=u({type:w("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:U(ct).optional(),clientMessageId:l().optional()}).passthrough(),Ur=u({type:w("steer_agent_response"),requestId:l(),agentId:l(),ok:A()}).passthrough(),Kr=u({type:w("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:U(ct).optional(),clientMessageId:l().optional()}).passthrough(),Vr=u({type:w("follow_up_agent_response"),requestId:l(),agentId:l(),ok:A()}).passthrough(),Gr=u({name:l(),id:l().optional(),description:l().optional(),source:ve(["extension","prompt","skill"]).optional(),scope:ve(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),Xr=u({type:w("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),Jr=u({type:w("agent_list_commands_response"),requestId:l(),payload:u({commands:U(Gr)}).passthrough()}).passthrough(),Yr=u({type:w("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),Qr=it("type",[Qo,Zo,er,tr,nr,sr,or,ar,lr,dr,ur,pr,fr,hr,mr,gr,_r,wr,xr,Sr,vr,kr,Ir,jr,Cr,Tr,Er,Nr,Rr,Mr,qr,Br,$r,Ar,Dr,Pr,Or,Fr,zr,Wr,Lr,Hr,Ur,Kr,Vr,Xr,Jr,Yr]),Zr=u({type:l()}).passthrough(),ea=u({type:w("session"),message:on([Qr,Zr])});it("type",[Uo,Vo,Go,Xo,ea]);const ta={inline_image_markdown:"inline_image_markdown"},Ie={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},na=Object.fromEntries(Object.entries(Ie).map(([e,t])=>[t,e])),Cn=u({rows:$().int().nonnegative(),cols:$().int().nonnegative()});class Fe extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const sa=new TextEncoder,oa=new TextDecoder;function ra(e){if(!Number.isInteger(e)||e<0||e>255)throw new Fe(`slot must be an integer 0–255, got ${e}`)}function De(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function op(e){switch(ra(e.slot),e.opcode){case"Output":return De(Ie.Output,e.slot,e.data);case"Input":return De(Ie.Input,e.slot,e.data);case"Snapshot":return De(Ie.Snapshot,e.slot,e.data);case"Restore":return De(Ie.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(Cn.parse({rows:e.rows,cols:e.cols}));return De(Ie.Resize,e.slot,sa.encode(t))}}}function aa(e){if(e.length<2)throw new Fe(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=na[t];if(!s)throw new Fe(`unknown terminal opcode 0x${t.toString(16)}`);const o=e.subarray(2);if(s==="Resize"){let r;try{r=JSON.parse(oa.decode(o))}catch{throw new Fe("resize payload is not valid JSON")}const i=Cn.safeParse(r);if(!i.success)throw new Fe("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:i.data.rows,cols:i.data.cols}}return{opcode:s,slot:n,data:o.slice()}}const Ce={Begin:16,Chunk:17,End:18,Error:19},ia=Object.fromEntries(Object.entries(Ce).map(([e,t])=>[t,e])),Tn=u({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:$().int().nonnegative().optional()});class ze extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const Ot=new TextEncoder,Ft=new TextDecoder;function ca(e){if(!Number.isInteger(e)||e<0||e>255)throw new ze(`stream must be an integer 0–255, got ${e}`)}function Ze(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function ut(e){switch(ca(e.stream),e.opcode){case"Begin":return Ze(Ce.Begin,e.stream,Ot.encode(JSON.stringify(Tn.parse(e.meta))));case"Chunk":return Ze(Ce.Chunk,e.stream,e.data);case"End":return Ze(Ce.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return Ze(Ce.Error,e.stream,Ot.encode(e.message))}}function la(e){if(e.length<2)throw new ze(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=ia[t];if(!s)throw new ze(`unknown file-transfer opcode 0x${t.toString(16)}`);const o=e.subarray(2);switch(s){case"Begin":{let r;try{r=JSON.parse(Ft.decode(o))}catch{throw new ze("begin payload is not valid JSON")}const i=Tn.safeParse(r);if(!i.success)throw new ze("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:i.data}}case"Chunk":return{opcode:"Chunk",stream:n,data:o.slice()};case"End":return{opcode:"End",stream:n,ok:(o[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:Ft.decode(o)}}}function da(e){try{return la(e)}catch{return null}}const ua=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),pa=ve(["safe","moderate","dangerous","planning"]),fa=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(),ha=u({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:pa});u({id:ua,label:l(),description:l().optional(),extends:l().optional(),modes:U(ha),capabilities:fa});function wt(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function En(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((o,r)=>{const i=e??(()=>new WebSocket(s));try{t=e?i(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(c){r(c);return}t.onopen=()=>o(),t.onerror=c=>{var d;(t==null?void 0:t.readyState)!==1&&r(c),(d=n.onError)==null||d.call(n,c)},t.onclose=c=>{var d;(d=n.onClose)==null||d.call(n,c.code,wt(c.reason))},t.onmessage=c=>{var m,h,x,p;const{data:d}=c;d instanceof ArrayBuffer||d instanceof Uint8Array?(m=n.onMessage)==null||m.call(n,d):typeof d=="string"?(h=n.onMessage)==null||h.call(n,d):typeof Blob<"u"&&d instanceof Blob?(x=n.onMessage)==null||x.call(n,d):Buffer.isBuffer(d)&&((p=n.onMessage)==null||p.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,o=""){t==null||t.close(s,o),t=null}};return n}const We="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Nn(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],o=n+1<e.length,r=n+2<e.length,i=o?e[n+1]:0,c=r?e[n+2]:0;t+=We[s>>2],t+=We[(s&3)<<4|i>>4],t+=o?We[(i&15)<<2|c>>6]:"=",t+=r?We[c&63]:"="}return t}function Rn(e){const t=e.replace(/=+$/,""),n=[];let s=0,o=0;for(const r of t){const i=We.indexOf(r);if(i===-1)throw new Error(`invalid base64 character: ${JSON.stringify(r)}`);s=s<<6|i,o+=6,o>=8&&(o-=8,n.push(s>>o&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 st=24;function Mn(e,t){const n=Te.randomBytes(st),s=Te.box.after(e,n,t),o=new Uint8Array(n.length+s.length);return o.set(n,0),o.set(s,n.length),Nn(o)}function qn(e,t){let n;try{n=Rn(e)}catch{return null}if(n.length<st)return null;const s=n.slice(0,st),o=n.slice(st);return Te.box.open.after(o,s,t)}function ga(e,t){return Mn(new TextEncoder().encode(e),t)}function _a(e,t){const n=qn(e,t);return n?new TextDecoder().decode(n):null}function ya(e,t,n,s,o,r){let i=!1;return n.onClose(c=>{var d;i=!0,(d=s.onClose)==null||d.call(s,c)}),{handleAppFrame(c){var h,x;if(i)return;const d=o();if(!r()||!d)return;const m=_a(c.frame,d);if(m===null){(h=s.onAuthError)==null||h.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(x=s.onMessage)==null||x.call(s,m)},handleBinaryFrame(c){var h,x;if(i)return;const d=o();if(!r()||!d)return;const m=qn(c.frame,d);if(m===null){(h=s.onAuthError)==null||h.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(x=s.onBinaryMessage)==null||x.call(s,m)},send(c){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const d=o();if(!r()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_app",frame:ga(c,d)}))},sendBinary(c){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const d=o();if(!r()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_bin",frame:Mn(c,d)}))},close(){i||(i=!0,n.close())}}}function ba(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,o=e.events??{},r=Te.box.keyPair(),i=Te.box.before(s,r.secretKey);let c=!1;const d=ya("client",n,t,o,()=>i,()=>c);return t.onMessage(m=>{var x;const h=ma(m);if(h){if(h.type==="e2ee_ready"){if(c)return;c=!0,(x=o.onReady)==null||x.call(o);return}if(h.type==="e2ee_app"){d.handleAppFrame(h);return}h.type==="e2ee_bin"&&d.handleBinaryFrame(h)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:Nn(r.publicKey)})),{role:"client",attachment:n,get ready(){return c},send:d.send,sendBinary:d.sendBinary,close:d.close}}const wa=16;function xa(e){const t=Te.hash(e);let n="";for(let s=0;s<wa;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Sa(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function va(e){let t=null,n=null;const s=e.sessionId??xa(e.daemonPublicKey),o={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},connect(r){return new Promise((i,c)=>{const d=e.factory??(()=>new WebSocket(r));try{t=e.factory?d(r):new WebSocket(r)}catch(p){c(p);return}const m=t,h=[],x=[];m.onopen=()=>{m.send(JSON.stringify({type:"relay_register",sessionId:s})),n=ba({transport:{send:p=>m.send(p),onMessage:p=>h.push(p),onClose:p=>x.push(p),close:()=>m.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>i(),onMessage:p=>{var f;return(f=o.onMessage)==null?void 0:f.call(o,p)},onBinaryMessage:p=>{var f;return(f=o.onMessage)==null?void 0:f.call(o,p.slice().buffer)},onAuthError:p=>{var f;return(f=o.onError)==null?void 0:f.call(o,p)}}})},m.onerror=p=>{var f;m.readyState!==1&&c(p),(f=o.onError)==null||f.call(o,p)},m.onclose=p=>{var f;for(const v of x)v(wt(p.reason));(f=o.onClose)==null||f.call(o,p.code,wt(p.reason))},m.onmessage=p=>{const{data:f}=p;if(typeof f=="string")for(const v of h)v(f)}})},sendText(r){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(r)},sendBinary(r){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(r)},close(r=1e3,i=""){n==null||n.close(),n=null,t==null||t.close(r,i),t=null}};return o}function ka(e){const t=e.indexOf("#"),n=t===-1?e:e.slice(t+1),s=new URLSearchParams(n),o=s.get("offer");if(!o)return null;let r;try{r=Rn(o)}catch{return null}const i=s.get("relay");if(i){const d={endpoint:i,useTls:s.get("relayTls")==="1"};return{publicKeyB64:o,publicKey:r,relay:d}}const c=s.get("host")??void 0;return{publicKeyB64:o,publicKey:r,...c?{host:c}:{}}}const Ia=1;function xt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class ja extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class zt extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class Ca{constructor(t){N(this,"transport");N(this,"rpcTimeoutMs");N(this,"now");N(this,"_state","idle");N(this,"_serverId",null);N(this,"_features",{});N(this,"_serverCapabilities",{});N(this,"pending",new Map);N(this,"sessionHandlers",new Set);N(this,"terminalHandlers",new Set);N(this,"fileTransferHandlers",new Set);N(this,"stateHandlers",new Set);N(this,"helloResolve",null);N(this,"helloReject",null);this.options=t,this.transport=t.transport??En(),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,o)=>{this.helloResolve=s,this.helloReject=o});this.transport.sendText(JSON.stringify({type:"hello",clientId:this.options.clientId,clientType:this.options.clientType,protocolVersion:this.options.protocolVersion??Ia,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 o=n.requestId??xt();return new Promise((r,i)=>{const c=s??this.rpcTimeoutMs,d=c>0?setTimeout(()=>{this.pending.delete(o),i(new zt(o))},c):null;this.pending.set(o,{resolve:m=>r(m),reject:i,timer:d}),this.sendSession({type:t,...n,requestId:o})})}sendSession(t){this.transport.sendText(JSON.stringify({type:"session",message:t}))}sendBinary(t){this.transport.sendBinary(t)}ping(t=1e4){const n=xt();return new Promise((s,o)=>{const r=t>0?setTimeout(()=>{this.pending.delete(n),o(new zt(n))},t):null;this.pending.set(n,{resolve:()=>s(),reject:o,timer:r}),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(Ce).includes(n)){const r=da(t);if(!r)return;for(const i of this.fileTransferHandlers)i(r);return}const o=aa(t);for(const r of this.terminalHandlers)r(o)}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 ja(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 Ta{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 Na(this.daemon,t)}workspace(t){return new Ra(this.daemon,t)}get providers(){return new Ma(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 Ea{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 Na{constructor(t,n){N(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new Ea(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 Ra{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 Ma{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 Wt=32*1024;function qa(e){const t=e.reduce((o,r)=>o+r.length,0),n=new Uint8Array(t);let s=0;for(const o of e)n.set(o,s),s+=o.length;return n}class Ba{constructor(t){N(this,"pending",new Map);N(this,"nextStream",1);N(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){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=this.nextStream++,o=new Promise((i,c)=>{this.pending.set(s,{chunks:[],meta:{},resolve:i,reject:c})}),r=await this.daemon.request("file_download_request",{token:n.token,stream:s});if(!r.ok)throw this.pending.delete(s),new Error(r.error??"download request failed");return o}async upload(t,n){const s=xt(),o=await this.daemon.request("file_upload_request",{path:t,transferId:s});if(!o.ok||o.stream===void 0)throw new Error(o.error??"upload request failed");const r=o.stream;this.daemon.sendBinary(ut({opcode:"Begin",stream:r,meta:{transferId:s}}));for(let i=0;i<n.length;i+=Wt){const c=n.subarray(i,i+Wt);this.daemon.sendBinary(ut({opcode:"Chunk",stream:r,data:c}))}this.daemon.sendBinary(ut({opcode:"End",stream:r,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 $a{constructor(t,n={}){N(this,"initialDelayMs");N(this,"maxDelayMs");N(this,"factor");N(this,"jitter");N(this,"maxAttempts");N(this,"setTimer");N(this,"clearTimer");N(this,"random");N(this,"attempt",0);N(this,"timer",null);N(this,"active",!1);N(this,"detachState",null);N(this,"reconnectedHandlers",new Set);N(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,o)=>setTimeout(s,o)),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 Lt(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(),o=t.slice(n[0].length).replace(/\/+$/,"");switch(s){case"http":return`ws://${o}`;case"https":return`wss://${o}`;case"ws":case"wss":return`${s}://${o}`;default:return t}}function Aa(e){const t=ka(e);return t!=null&&t.relay?{mode:"relay",url:Sa(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:Lt(t.host)}:{mode:"direct",url:Lt(e)}}const Da=32,X=new Map;function Pa(){for(;X.size>Da;){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 rp(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),Pa(),s.pending=t(e).then(o=>{const r=new Blob([Uint8Array.from(o.bytes)],{type:o.mimeType||"application/octet-stream"}),i={objectUrl:URL.createObjectURL(r),mimeType:o.mimeType};return X.get(e)===s?(s.entry=i,s.pending=null):URL.revokeObjectURL(i.objectUrl),i}).catch(o=>{throw X.get(e)===s&&X.delete(e),o}),s.pending}function ap(e){const t=X.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function Oa(){for(const e of X.values())e.entry&&URL.revokeObjectURL(e.entry.objectUrl);X.clear()}function Fa(){return"web-"+Math.random().toString(36).slice(2,10)}const M=ke()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=Aa(n.url);let o;s.mode==="relay"?o=va({daemonPublicKey:s.daemonPublicKey}):n.password&&(o=En(d=>new WebSocket(d,[`pi-studio.bearer.${n.password}`])));const r=new Ca({url:s.url,clientId:n.clientId??Fa(),clientType:"browser",capabilities:{[ta.inline_image_markdown]:!0},transport:o,rpcTimeoutMs:1800*1e3}),i=new Ta(r),c=new $a(r);r.onStateChange(d=>e({status:d})),c.onReconnected(()=>e({error:null})),c.onReconnectFailed(d=>{e({error:d instanceof Error?d.message:String(d)})}),e({daemon:r,client:i,reconnection:c,error:null,status:"connecting"});try{const d=await r.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(),Oa(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}})),za=100,Wa=480,La=220,Ha=280;function et(e){return Math.min(Wa,Math.max(za,e))}const C=ke()(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:La,rightSidebarWidth:Ha,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,o,r)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:o,background:r}}),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:et(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:et(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:et(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:et(n.rightSidebarWidth+t)}))})),Ua="_wrap_ym570_1",Ka="_dot_ym570_8",Va="_open_ym570_15",Ga="_connecting_ym570_18",Xa="_closed_ym570_21",Ja="_idle_ym570_22",Ya="_closing_ym570_23",pt={wrap:Ua,dot:Ka,open:Va,connecting:Ga,closed:Xa,idle:Ja,closing:Ya},Qa={idle:"disconnected",connecting:"connecting…",open:"connected",closing:"disconnecting…",closed:"disconnected"};function Za(){const e=M(n=>n.status),t=M(n=>n.error);return a.jsxs("span",{className:pt.wrap,title:t??void 0,children:[a.jsx("span",{className:F(pt.dot,pt[e])}),Qa[e]??e]})}const ei="_toolbar_1dzkx_1",ti="_brand_1dzkx_10",ni="_version_1dzkx_16",si="_sep_1dzkx_22",oi="_host_1dzkx_28",ri="_password_1dzkx_31",ai="_sidebarToggles_1dzkx_34",be={toolbar:ei,brand:ti,version:ni,sep:si,host:oi,password:ri,sidebarToggles:ai};function ii(){const e=M(p=>p.status),t=M(p=>p.connect),n=M(p=>p.disconnect),s=C(p=>p.host),o=C(p=>p.setHost),r=C(p=>p.password),i=C(p=>p.setPassword),c=C(p=>p.leftSidebarCollapsed),d=C(p=>p.toggleLeftSidebar),m=C(p=>p.rightSidebarCollapsed),h=C(p=>p.toggleRightSidebar),x=e==="open"||e==="connecting";return a.jsxs("div",{className:be.toolbar,children:[a.jsx("span",{className:be.brand,children:"Pi-Studio"}),a.jsxs("span",{className:be.version,children:["v","0.0.53"]}),a.jsx(Za,{}),a.jsx("div",{className:be.sep}),a.jsx(at,{className:be.host,value:s,onChange:p=>o(p.target.value),placeholder:"host:port, ws://…/http://…, or a pasted pairing link",disabled:x}),a.jsx(at,{className:be.password,type:"password",value:r,onChange:p=>i(p.target.value),placeholder:"password",disabled:x}),e==="open"||e==="connecting"||e==="closing"?a.jsx(V,{size:"sm",onClick:()=>n(),children:"Disconnect"}):a.jsx(V,{size:"sm",variant:"default",onClick:()=>void t({url:s,password:r||void 0}),children:"Connect"}),a.jsxs("div",{className:be.sidebarToggles,children:[a.jsx(V,{size:"sm",variant:"ghost",iconOnly:!0,title:c?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>d(),children:c?a.jsx(is,{size:16}):a.jsx(cs,{size:16})}),a.jsx(V,{size:"sm",variant:"ghost",iconOnly:!0,title:m?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>h(),children:m?a.jsx(ls,{size:16}):a.jsx(ds,{size:16})})]})]})}const St={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let Ht=0;function me(){return Ht+=1,`row-${Ht}`}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 li(e,t){return e??`${t.kind}:${ci(t)}`}function di(e){return{...e,streamingAssistantIndex:null,streamingReasoningIndex:null}}function ui(e,t){var r;const n=e.rows.slice();let s=e.streamingAssistantIndex;if(s===null||((r=n[s])==null?void 0:r.kind)!=="assistant"){const i={kind:"assistant",id:me(),text:"",streaming:!0};n.push(i),s=n.length-1}const o=n[s];return!o||o.kind!=="assistant"?e:(n[s]={...o,text:o.text+t},{...e,rows:n,streamingAssistantIndex:s,streamingReasoningIndex:null})}function pi(e,t){var r;const n=e.rows.slice();let s=e.streamingReasoningIndex;if(s===null||((r=n[s])==null?void 0:r.kind)!=="reasoning"){const i={kind:"reasoning",id:me(),text:"",streaming:!0};n.push(i),s=n.length-1}const o=n[s];return!o||o.kind!=="reasoning"?e:(n[s]={...o,text:o.text+t},{...e,rows:n,streamingReasoningIndex:s,streamingAssistantIndex:null})}function fi(e,t){if(e.kind!==t.kind)return t;const n={...e};for(const[s,o]of Object.entries(t))o!==void 0&&o!==""&&(n[s]=o);return n}function hi(e,t){var c;const n=li(t.callId,t.tool),s=t.status==="completed"||t.status==="error"?t.status:"running",o=e.toolIndexByCallId[n],r=e.rows.slice();if(o!==void 0&&((c=r[o])==null?void 0:c.kind)==="tool"){const d=r[o];return d.kind!=="tool"?e:(r[o]={...d,tool:fi(d.tool,t.tool),status:s},{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null})}const i={kind:"tool",id:me(),callId:n,tool:t.tool,status:s};return r.push(i),{...e,rows:r,toolIndexByCallId:{...e.toolIndexByCallId,[n]:r.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function Et(e){const t=e.rows.slice();if(e.streamingAssistantIndex!==null){const n=t[e.streamingAssistantIndex];(n==null?void 0:n.kind)==="assistant"&&(t[e.streamingAssistantIndex]={...n,streaming:!1})}if(e.streamingReasoningIndex!==null){const n=t[e.streamingReasoningIndex];(n==null?void 0:n.kind)==="reasoning"&&(t[e.streamingReasoningIndex]={...n,streaming:!1})}return{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function mi(e,t){const n=Et(e),s={kind:"error",id:me(),text:t||"turn failed"};return{...n,rows:[...n.rows,s]}}function gi(e){const t=Et(e),n={kind:"system",id:me(),text:"(canceled)"};return{...t,rows:[...t.rows,n]}}function _i(e,t){const n={kind:"error",id:me(),text:t||"error"};return{...e,rows:[...e.rows,n]}}function yi(e,t,n,s){if(s!==void 0){const r=e.rows.findIndex(i=>i.kind==="user"&&i.pending&&i.clientMessageId===s);if(r!==-1){const i=e.rows.slice(),c=i[r];if((c==null?void 0:c.kind)==="user")return i[r]={...c,text:t,images:n,pending:!1},{...e,rows:i}}}const o={kind:"user",id:me(),text:t,images:n,clientMessageId:s};return{...e,rows:[...e.rows,o]}}function bi(e,t){let n=!1;const s=e.rows.map(o=>o.kind!=="user"||!o.queued||t.includes(o.text)?o:(n=!0,{...o,queued:!1}));return n?{...e,rows:s}:e}function Bn(e,t){switch(t.kind){case"turn_started":return di(e);case"user_message":return yi(e,t.text??"",t.images,t.messageId);case"assistant_message":return ui(e,t.text??"");case"reasoning":return pi(e,t.text??"");case"tool_call":return hi(e,t);case"turn_completed":return Et(e);case"turn_failed":return mi(e,t.error);case"turn_canceled":return gi(e);case"error":return _i(e,t.message);case"queue_update":return bi(e,t.steering??[]);default:return e}}function wi(e,t,n,s,o){const r={kind:"user",id:me(),text:n,images:s,clientMessageId:t,pending:!0,queued:o};return{...e,rows:[...e.rows,r]}}function xi(e,t){const n=e.rows.findIndex(r=>r.kind==="user"&&r.pending&&r.clientMessageId===t);if(n===-1)return e;const s=e.rows.slice(),o=s[n];return(o==null?void 0:o.kind)!=="user"?e:(s[n]={...o,pending:!1,failed:!0},{...e,rows:s})}let Ut=0;function Si(){return Ut+=1,`s-${Date.now().toString(36)}-${Ut}`}const R=ke()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=Si(),o={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:St,userMessageCount:0};return e(r=>({sessions:{...r.sessions,[s]:o},order:[s,...r.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(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,agentId:s}}}:o})},setStatus(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,status:s}}}:o})},setStatusByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setStatus(o.id,s)},setModel(n,s,o){e(r=>{const i=r.sessions[n];return i?{sessions:{...r.sessions,[n]:{...i,model:s,modelProvider:o}}}:r})},setModelByAgentId(n,s,o){const r=t().findByAgentId(n);r&&t().setModel(r.id,s,o)},setTitle(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,title:s}}}:o})},setCwd(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,cwd:s}}}:o})},applyStreamEvent(n,s){e(o=>{const r=o.sessions[n];if(!r)return o;const i=Bn(r.timeline,s);let c=r.title;if(s.kind==="turn_completed"&&c==="New chat"){const d=i.rows.slice().reverse().find(m=>m.kind==="assistant");d&&d.kind==="assistant"&&d.text&&(c=d.text.slice(0,40)+(d.text.length>40?"…":""))}return{sessions:{...o.sessions,[n]:{...r,timeline:i,title:c}}}})},addOptimisticUserMessage(n,s,o,r,i){e(c=>{const d=c.sessions[n];if(!d)return c;const m=wi(d.timeline,s,o,r,i);return{sessions:{...c.sessions,[n]:{...d,timeline:m,userMessageCount:d.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(o=>{const r=o.sessions[n];if(!r)return o;const i=xi(r.timeline,s);return{sessions:{...o.sessions,[n]:{...r,timeline:i}}}})},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:o,...r}=s.sessions,i=s.order.filter(d=>d!==n),c=s.activeSessionId===n?i[0]??null:s.activeSessionId;return{sessions:r,order:i,activeSessionId:c}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),Kt=new WeakMap;function vi(e,t="pi"){const n=Kt.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(o=>({model:o.model,modelProvider:o.modelProvider})).catch(()=>({}));return Kt.set(e,s),s}const ot=new Map;function $n(e,t){const n=R.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=ot.get(t);if(s)return s;const o=(async()=>{if(!n.model){const d=await vi(e),m=R.getState().sessions[t];d.model&&m&&!m.model&&R.getState().setModel(t,d.model,d.modelProvider)}const r=R.getState().sessions[t];if(!r)throw new Error(`unknown session: ${t}`);const i={provider:"pi",cwd:r.cwd||"~"};r.model&&(i.model=r.model),r.modelProvider&&(i.modelProvider=r.modelProvider);const c=await e.createAgent({config:i,labels:{}});return R.getState().bindAgent(t,c.agentId),c.agentId})();return ot.set(t,o),o.finally(()=>ot.delete(t)),o}async function ki(e,t){var o;const n=R.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((o=ot.get(t))==null?void 0:o.catch(()=>{}));const s=R.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),R.getState().remove(t),!0):!1}function ft(e,t){return e.filter(n=>n.workspaceCwd===t)}function tt(e){(e==null?void 0:e.kind)==="chat"&&R.getState().activate(e.data.sessionId)}const E=ke()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,lastActiveTabByWorkspace:{},open(n){const s=t().tabs.find(o=>o.id===n.id);if(s){t().activate(s.id);return}e(o=>({tabs:[...o.tabs,n],activeTabId:n.id,activeWorkspaceCwd:n.workspaceCwd,lastActiveTabByWorkspace:{...o.lastActiveTabByWorkspace,[n.workspaceCwd]:n.id}})),tt(n)},close(n){let s;e(o=>{const r=o.tabs.find(h=>h.id===n);if(!r)return o;const i=o.tabs.findIndex(h=>h.id===n),c=o.tabs.filter(h=>h.id!==n);let d=o.activeTabId;const m={...o.lastActiveTabByWorkspace};if(d===n){const h=ft(c,r.workspaceCwd),x=Math.min(i,h.length-1),p=h[x];d=(p==null?void 0:p.id)??null,s=p}if(m[r.workspaceCwd]===n){const h=ft(c,r.workspaceCwd)[0];h?m[r.workspaceCwd]=h.id:delete m[r.workspaceCwd]}return{tabs:c,activeTabId:d,lastActiveTabByWorkspace:m}}),tt(s)},activate(n){let s;e(o=>{const r=o.tabs.find(i=>i.id===n);return r?(s=r,{activeTabId:n,activeWorkspaceCwd:r.workspaceCwd,lastActiveTabByWorkspace:{...o.lastActiveTabByWorkspace,[r.workspaceCwd]:n}}):o}),tt(s)},switchWorkspace(n){let s;e(o=>{var m;const r=ft(o.tabs,n),i=o.lastActiveTabByWorkspace[n],d=i&&r.some(h=>h.id===i)?i:((m=r[0])==null?void 0:m.id)??null;return s=r.find(h=>h.id===d),{activeWorkspaceCwd:n,activeTabId:d,lastActiveTabByWorkspace:d?{...o.lastActiveTabByWorkspace,[n]:d}:o.lastActiveTabByWorkspace}}),tt(s)},reorder(n,s){e(o=>{const r=o.tabs.findIndex(m=>m.id===n),i=o.tabs.findIndex(m=>m.id===s);if(r===-1||i===-1||r===i)return o;const c=o.tabs.slice(),[d]=c.splice(r,1);return d?(c.splice(i,0,d),{tabs:c}):o})},updateLabel(n,s){e(o=>({tabs:o.tabs.map(r=>r.id===n?{...r,label:s}:r)}))},updateData(n,s){e(o=>({tabs:o.tabs.map(r=>r.id===n?{...r,data:{...r.data,...s}}:r)}))},closeByPathPrefix(n){const s=t().tabs.filter(o=>{if(o.kind!=="file"&&o.kind!=="diff"&&o.kind!=="molecule")return!1;const r=o.data.path;return r===n||((r==null?void 0:r.startsWith(`${n}/`))??!1)});for(const o of s)t().close(o.id)}})),J={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let ht=0;function An(e){ht+=1,E.getState().open({id:J.terminal(`new-${ht}`),kind:"terminal",label:`Terminal ${ht}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e})}let mt=0;function Ii(e){mt+=1,E.getState().open({id:J.molecule(`new-${mt}`),kind:"molecule",label:`Molecule ${mt}`,closable:!0,data:{path:null},workspaceCwd:e})}function Nt(e){const t=R.getState().createSession(e);E.getState().open({id:J.chat(t),kind:"chat",label:"New chat",closable:!0,data:{sessionId:t},workspaceCwd:e});const n=M.getState().client;n&&$n(n,t).catch(()=>{})}function vt(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;ki(M.getState().client,n)}const Z=ke()(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 o=s.get(t),r=new Set(o);return r.add(t),{rootPath:t,expanded:r,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 o=new Map(n.expandedByRoot);return o.set(n.rootPath,s),{expanded:s,expandedByRoot:o}}),startDraft:(t,n)=>e(s=>{const o=new Set(s.expanded);o.add(t);const r=new Map(s.expandedByRoot);return s.rootPath&&r.set(s.rootPath,o),{draft:{parentPath:t,kind:n},expanded:o,expandedByRoot:r}}),cancelDraft:()=>e({draft:null}),setSelected:t=>e({selected:t}),repathAfterMove:(t,n,s)=>e(o=>{const r=m=>m===t?n:m.startsWith(`${t}/`)?n+m.slice(t.length):m,i=new Set([...o.expanded].map(r));i.add(s);const c=new Map(o.expandedByRoot);o.rootPath&&c.set(o.rootPath,i);const d=o.selected?{path:r(o.selected.path),isDirectory:o.selected.isDirectory}:null;return{expanded:i,expandedByRoot:c,selected:d}})}));let je=null;const kt=new Set;function ji(e){return kt.add(e),()=>kt.delete(e)}async function lt(e){var t;if(je)return je;try{const n=await e.connection.request("file_explorer_request",{path:"/home"}),o=(((t=n.result)==null?void 0:t.entries)??n.entries??[]).find(r=>r.kind==="directory"||r.type==="directory");je="/home/"+((o==null?void 0:o.name)||"user")}catch{return"/tmp"}for(const n of kt)n(je);return je}function Ci(){return je}async function Ti(e,t){return t==="~"||t.startsWith("~/")?await lt(e)+t.slice(1):t}function dt(){const e=M(o=>o.client),t=M(o=>o.status),[n,s]=b.useState(Ci());return b.useEffect(()=>ji(s),[]),b.useEffect(()=>{!e||t!=="open"||n||lt(e)},[e,t,n]),n}const Ei="_dot_gfh8u_3",Ni="_spinner_gfh8u_16",Vt={dot:Ei,spinner:Ni};function Ri(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:o}=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 o?"foregroundMuted":null}}const Gt=8,Mi={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 qi({className:e,...t}){const n=Ri(t);if(!n)return null;const s=t.status==="running"&&!t.requiresAttention,o=s?"var(--pi-color-accentBright, #a2b4d7)":Mi[n]??"currentColor";return a.jsx("span",{className:`${s?Vt.spinner:Vt.dot}${e?` ${e}`:""}`,style:s?{borderTopColor:o,borderRightColor:o}:{width:Gt,height:Gt,backgroundColor:o},role:"presentation"})}const Bi={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function $i(e){return Bi[e]??"idle"}const Ai="_wrap_v2ehs_1",Di="_header_v2ehs_7",Pi="_openBtn_v2ehs_15",Oi="_list_v2ehs_27",Fi="_item_v2ehs_32",zi="_active_v2ehs_41",Wi="_title_v2ehs_45",Li="_meta_v2ehs_54",Hi="_menuBtn_v2ehs_62",Ui="_workspaceGroup_v2ehs_80",Ki="_workspaceHeader_v2ehs_83",Vi="_workspaceChevron_v2ehs_108",Gi="_workspaceIcon_v2ehs_119",Xi="_workspaceLabel_v2ehs_123",Ji="_workspaceCount_v2ehs_129",Yi="_workspaceMenuBtn_v2ehs_134",Qi="_workspaceSessions_v2ehs_154",Zi="_emptyState_v2ehs_157",O={wrap:Ai,header:Di,openBtn:Pi,list:Oi,item:Fi,active:zi,title:Wi,meta:Li,menuBtn:Hi,workspaceGroup:Ui,workspaceHeader:Ki,workspaceChevron:Vi,workspaceIcon:Gi,workspaceLabel:Xi,workspaceCount:Ji,workspaceMenuBtn:Yi,workspaceSessions:Qi,emptyState:Zi};function ec({session:e,active:t,onSelect:n,onOpenMenu:s}){return a.jsxs("div",{className:F(O.item,t&&O.active),onClick:n,onContextMenu:o=>{o.preventDefault(),s(o.clientX,o.clientY)},children:[a.jsxs("div",{className:O.title,children:[a.jsx(qi,{status:$i(e.status),showInactive:!0}),a.jsx("span",{children:e.title})]}),a.jsxs("div",{className:O.meta,children:[e.cwd||"~"," · ",e.agentId?e.agentId.slice(0,8):"new"," ·"," ",e.userMessageCount," msgs"]}),a.jsx("button",{type:"button",className:O.menuBtn,title:"Actions",onClick:o=>{o.stopPropagation();const r=o.currentTarget.getBoundingClientRect();s(r.left,r.bottom)},children:a.jsx(It,{size:14})})]})}const tc="_trigger_byu5g_1",nc="_content_byu5g_12",sc="_item_byu5g_21",oc="_danger_byu5g_39",rc="_sep_byu5g_42",H={trigger:tc,content:nc,item:sc,danger:oc,sep:rc};function ac(){const e=C(v=>v.sessionMenu),t=C(v=>v.closeSessionMenu),n=M(v=>v.client),s=b.useRef(null),[o,r]=b.useState(!1);b.useEffect(()=>{r(e!==null)},[e]);const i=R(v=>e?v.sessions[e.sessionId]:void 0);if(!e)return null;const c=!!(i!=null&&i.agentId)&&(i==null?void 0:i.status)==="running";function d(v){r(v),v||t()}function m(){if(!i)return;const v=window.prompt("Rename:",i.title);if(v!=null&&v.trim()){const y=v.trim();R.getState().setTitle(i.id,y),E.getState().updateLabel(J.chat(i.id),y),i.agentId&&(n==null||n.agent(i.agentId).update({title:y}).catch(()=>{}))}t()}function h(){i!=null&&i.agentId&&(n==null||n.agent(i.agentId).interrupt().catch(()=>{})),t()}function x(v){R.getState().remove(v),E.getState().close(J.chat(v))}async function p(){if(i){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!i.agentId){x(i.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(i.agentId).archive(),x(i.id)}catch(v){window.alert(`Failed to archive: ${v instanceof Error?v.message:String(v)}`)}}}async function f(){if(i){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!i.agentId){x(i.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(i.agentId).delete(),x(i.id)}catch(v){window.alert(`Failed to delete: ${v instanceof Error?v.message:String(v)}`)}}}return a.jsxs(Ue,{open:o,onOpenChange:d,modal:!1,children:[a.jsx(Ke,{asChild:!0,children:a.jsx("button",{ref:s,type:"button",className:H.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),a.jsx(Ve,{children:a.jsxs(Ge,{className:H.content,align:"start",sideOffset:2,children:[a.jsxs(D,{className:H.item,onSelect:m,children:[a.jsx(us,{size:13}),"Rename"]}),a.jsxs(D,{className:H.item,disabled:!c,onSelect:h,children:[a.jsx(ps,{size:13}),"Stop agent"]}),a.jsx(Se,{className:H.sep}),a.jsxs(D,{className:`${H.item} ${H.danger}`,onSelect:p,children:[a.jsx(fs,{size:13}),"Archive"]}),a.jsxs(D,{className:`${H.item} ${H.danger}`,onSelect:f,children:[a.jsx(jt,{size:13}),"Delete permanently"]})]})})]})}function ic({label:e,cwd:t,sessionCount:n,collapsed:s,onToggleCollapsed:o,onOpenMenu:r}){return a.jsxs("div",{className:O.workspaceHeader,onClick:o,title:t,children:[a.jsx("button",{type:"button",className:O.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:i=>{i.stopPropagation(),o()},children:s?a.jsx(Ct,{size:13}):a.jsx(rn,{size:13})}),a.jsx(hs,{size:13,className:F(O.workspaceIcon)}),a.jsx("span",{className:O.workspaceLabel,children:e}),a.jsx("span",{className:O.workspaceCount,children:n}),a.jsx("button",{type:"button",className:O.workspaceMenuBtn,title:"Workspace actions",onClick:i=>{i.stopPropagation();const c=i.currentTarget.getBoundingClientRect();r(c.left,c.bottom)},children:a.jsx(It,{size:13})})]})}function Re(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function Rt(e,t,n){const s=new Map;for(const o of e){const r=t[o];if(!r)continue;const i=Re(r.cwd||"~",n),c=s.get(i);c?c.push(r):s.set(i,[r])}return Array.from(s,([o,r])=>({cwd:o,sessions:r}))}function Dn(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function cc(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function lc(){const e=C(f=>f.workspaceMenu),t=C(f=>f.closeWorkspaceMenu),n=M(f=>f.client),s=R(f=>f.order),o=R(f=>f.sessions),r=dt(),i=b.useRef(null),[c,d]=b.useState(!1);if(b.useEffect(()=>{d(e!==null)},[e]),!e)return null;const m=s.map(f=>o[f]).filter(f=>!!f).filter(f=>Re(f.cwd||"~",r)===e.cwd);function h(f){d(f),f||t()}function x(){e&&(t(),Nt(e.cwd))}async function p(){if(!e)return;const f=m.length;if(!window.confirm(`Delete all ${f} conversation${f===1?"":"s"} in "${Dn(e.cwd)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return t();t();for(const y of m){if(y.agentId&&n)try{await n.agent(y.agentId).delete()}catch(_){window.alert(`Failed to delete "${y.title}": ${_ instanceof Error?_.message:String(_)}`);continue}R.getState().remove(y.id),E.getState().close(J.chat(y.id))}}return a.jsxs(Ue,{open:c,onOpenChange:h,modal:!1,children:[a.jsx(Ke,{asChild:!0,children:a.jsx("button",{ref:i,type:"button",className:H.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),a.jsx(Ve,{children:a.jsxs(Ge,{className:H.content,align:"start",sideOffset:2,children:[a.jsxs(D,{className:H.item,onSelect:x,children:[a.jsx(an,{size:13}),"New conversation"]}),a.jsx(Se,{className:H.sep}),a.jsxs(D,{className:`${H.item} ${H.danger}`,onSelect:p,children:[a.jsx(jt,{size:13}),"Delete workspace (all conversations)"]})]})})]})}function dc(){const e=R(y=>y.order),t=R(y=>y.sessions),n=R(y=>y.activeSessionId),s=R(y=>y.activate),o=E(y=>y.open),r=M(y=>y.status),i=C(y=>y.openSessionMenu),c=C(y=>y.openWorkspaceMenu),d=C(y=>y.setCwd),m=C(y=>y.openCwdPicker),h=C(y=>y.collapsedWorkspaces),x=C(y=>y.toggleWorkspaceCollapsed),p=dt();function f(y){s(y);const _=t[y],q=Re((_==null?void 0:_.cwd)||"~",p);_!=null&&_.cwd&&d(_.cwd),o({id:J.chat(y),kind:"chat",label:(_==null?void 0:_.title)??"Chat",closable:!0,data:{sessionId:y},workspaceCwd:q})}const v=Rt(e,t,p);return a.jsxs("div",{className:O.wrap,children:[a.jsxs("div",{className:O.header,children:[a.jsx("h3",{children:"Workspaces"}),a.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,className:O.openBtn,title:r!=="open"?"Connect to open a workspace":"Open a workspace folder",disabled:r!=="open",onClick:()=>m(),children:a.jsx(cn,{size:13})})]}),a.jsxs("div",{className:O.list,children:[v.length===0&&a.jsx("div",{className:O.emptyState,children:r!=="open"?"Not connected":"No workspaces — open a folder to start"}),v.map(y=>{const _=h.has(y.cwd);return a.jsxs("div",{className:O.workspaceGroup,children:[a.jsx(ic,{label:Dn(y.cwd),cwd:y.cwd,sessionCount:y.sessions.length,collapsed:_,onToggleCollapsed:()=>x(y.cwd),onOpenMenu:(q,z)=>c(y.cwd,q,z)}),!_&&a.jsx("div",{className:O.workspaceSessions,children:y.sessions.map(q=>a.jsx(ec,{session:q,active:q.id===n,onSelect:()=>f(q.id),onOpenMenu:(z,k)=>i(q.id,z,k)},q.id))})]},y.cwd)})]}),a.jsx(ac,{}),a.jsx(lc,{})]})}const uc="_strip_1s2dw_1",pc="_tab_1s2dw_11",fc="_active_1s2dw_27",hc="_icon_1s2dw_31",mc="_label_1s2dw_36",gc="_close_1s2dw_41",_c="_newTab_1s2dw_51",yc="_content_1s2dw_74",bc="_item_1s2dw_83",wc="_itemIcon_1s2dw_97",K={strip:uc,tab:pc,active:fc,icon:hc,label:mc,close:gc,newTab:_c,content:yc,item:bc,itemIcon:wc},xc={chat:pn,file:ms,diff:un,terminal:dn,molecule:ln};function Sc({tab:e}){const t=E(h=>h.activeTabId),n=E(h=>h.activate),s=xc[e.kind],{attributes:o,listeners:r,setNodeRef:i,transform:c,transition:d,isDragging:m}=Ds({id:e.id});return a.jsxs("div",{ref:i,className:F(K.tab,e.id===t&&K.active),style:{transform:Ps.Transform.toString(c),transition:d,opacity:m?.5:1},onClick:()=>n(e.id),onAuxClick:h=>{h.button===1&&e.closable&&vt(e.id)},title:e.label,...o,...r,children:[a.jsx("span",{className:K.icon,children:a.jsx(s,{size:13})}),a.jsx("span",{className:K.label,children:e.label}),e.closable&&a.jsx("span",{className:K.close,onClick:h=>{h.stopPropagation(),vt(e.id)},children:a.jsx(gt,{size:12})})]})}function vc({workspaceCwd:e}){const t=e??"~";return a.jsxs(Ue,{children:[a.jsx(Ke,{asChild:!0,children:a.jsx("button",{type:"button",className:K.newTab,title:"New tab",disabled:!e,children:a.jsx(an,{size:14})})}),a.jsx(Ve,{children:a.jsxs(Ge,{className:K.content,align:"start",sideOffset:4,children:[a.jsxs(D,{className:K.item,onSelect:()=>Nt(t),children:[a.jsx(pn,{size:13,className:K.itemIcon}),"New chat"]}),a.jsxs(D,{className:K.item,onSelect:()=>An(t),children:[a.jsx(dn,{size:13,className:K.itemIcon}),"New terminal"]}),a.jsxs(D,{className:K.item,onSelect:()=>Ii(t),children:[a.jsx(ln,{size:13,className:K.itemIcon}),"New molecule view"]})]})})]})}function kc(){const e=E(i=>i.tabs),t=E(i=>i.activeWorkspaceCwd),n=E(i=>i.reorder),s=e.filter(i=>i.workspaceCwd===t),o=Ns(Rs(As,{activationConstraint:{distance:4}}));function r(i){const{active:c,over:d}=i;!d||c.id===d.id||n(String(c.id),String(d.id))}return a.jsxs("div",{className:K.strip,children:[a.jsx(Ms,{sensors:o,collisionDetection:qs,onDragEnd:r,children:a.jsx(Bs,{items:s.map(i=>i.id),strategy:$s,children:s.map(i=>a.jsx(Sc,{tab:i},i.id))})}),a.jsx(vc,{workspaceCwd:t})]})}const Ic="_spinner_1tgzp_3",jc={spinner:Ic},Cc={xs:12,sm:16,md:20,lg:24},Tc={xs:1,sm:2,md:2,lg:3};function Pn({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const o=typeof e=="number"?e:Cc[e],r=typeof e=="number"?2:Tc[e];return a.jsx("span",{className:`${jc.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:o,height:o,borderWidth:r,color:t}})}const Ec=b.lazy(()=>ue(()=>import("./ChatPanel-DkzghxDD.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])).then(e=>({default:e.ChatPanel}))),Xt=b.lazy(()=>ue(()=>import("./FilePanel-DyripXtT.js"),__vite__mapDeps([16,1,7,6,5,2,17,11,12,18,19,3,13,14])).then(e=>({default:e.FilePanel}))),Nc=b.lazy(()=>ue(()=>import("./TerminalPanel-BFeJqRjE.js"),__vite__mapDeps([20,1,21,22,7,6,5,2,3,13,14,23])).then(e=>({default:e.TerminalPanel}))),Rc=b.lazy(()=>ue(()=>import("./MoleculeViewerPanel-js-qLz7t.js"),__vite__mapDeps([24,1,25,26,9,10,27,2,17,7,6,5,3,13,14,28])).then(e=>({default:e.MoleculeViewerPanel}))),Mc={chat:Ec,file:Xt,diff:Xt,terminal:Nc,molecule:Rc},qc="_area_182yv_1",Bc="_panel_182yv_7",$c="_active_182yv_14",Ac="_empty_182yv_17",Dc="_emptyStack_182yv_25",Pc="_emptyTitle_182yv_35",Oc="_emptyHint_182yv_39",le={area:qc,panel:Bc,active:$c,empty:Ac,emptyStack:Dc,emptyTitle:Pc,emptyHint:Oc};function Fc(){const e=E(i=>i.tabs),t=E(i=>i.activeTabId),n=E(i=>i.activeWorkspaceCwd),s=M(i=>i.status),o=C(i=>i.openCwdPicker),r=e.some(i=>i.workspaceCwd===n);return n===null?a.jsx("div",{className:le.area,children:a.jsxs("div",{className:le.emptyStack,children:[a.jsx("div",{className:le.emptyTitle,children:"No workspace open"}),a.jsx("div",{className:le.emptyHint,children:"Open a project folder to start a chat."}),a.jsx(V,{size:"sm",variant:"secondary",leftIcon:a.jsx(cn,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>o(),children:"Open Workspace"})]})}):r?a.jsx("div",{className:le.area,children:e.map(i=>{const c=Mc[i.kind];return a.jsx("div",{className:F(le.panel,i.id===t&&le.active),children:a.jsx(b.Suspense,{fallback:a.jsx(Pn,{size:"md"}),children:a.jsx(c,{tab:i})})},i.id)})}):a.jsx("div",{className:le.area,children:a.jsx("div",{className:le.empty,children:"No open tabs in this workspace"})})}const he={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 zc(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function Wc(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function On(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 o="entries"in s?s.entries??[]:[];return{path:s.resolvedPath??t,entries:Wc(o.map(zc))}}function Lc(e,t=!0){const n=M(s=>s.client);return sn({queryKey:he.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return On(n,e)},enabled:!!n&&!!e&&t})}function Hc(e){const t=M(o=>o.client),n=b.useMemo(()=>Array.from(e),[e]),s=os({queries:n.map(o=>({queryKey:he.explorer(o),queryFn:()=>{if(!t)throw new Error("not connected");return On(t,o)},enabled:!!t&&!!o}))});return b.useMemo(()=>{const o=new Map;return n.forEach((r,i)=>{const c=s[i];o.set(r,{listing:c==null?void 0:c.data,isLoading:!!(c!=null&&c.isLoading),isError:!!(c!=null&&c.isError),error:c==null?void 0:c.error})}),o},[n,s])}function Uc(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function Kc(e,t){const n=new Set,s=e.connection.onSessionMessage(o=>{const r=o;Uc(r)&&n.has(r.path)&&t(r.path)});return{sync(o){for(const r of n)o.has(r)||(n.delete(r),e.connection.request("file_watch_unsubscribe",{path:r}).catch(()=>{}));for(const r of o)n.has(r)||(n.add(r),e.connection.request("file_watch_subscribe",{path:r}).then(i=>{const c=i;(c==null?void 0:c.ok)===!1&&console.warn(`useExplorerWatch: ${c.error??"subscribe failed"} for "${r}"`)}).catch(()=>{}))},dispose(){s();for(const o of n)e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{});n.clear()}}}function Vc(e){const t=M(i=>i.client),n=Ne(),s=b.useRef(null),o=b.useRef(null),r=Array.from(e).toSorted().join("\0");b.useEffect(()=>{var i,c;t&&(o.current!==t&&((i=s.current)==null||i.dispose(),s.current=Kc(t,d=>{n.invalidateQueries({queryKey:he.explorer(d)})}),o.current=t),(c=s.current)==null||c.sync(new Set(r?r.split("\0"):[])))},[t,r,n]),b.useEffect(()=>()=>{var i;(i=s.current)==null||i.dispose(),s.current=null,o.current=null},[])}const Jt=new WeakMap;function Yt(e){let t=Jt.get(e);return t||(t=new Ba(e),t.start(),Jt.set(e,t)),t}function Gc(e,t,n){const s=new Blob([Uint8Array.from(e)],{type:n||"application/octet-stream"}),o=URL.createObjectURL(s),r=document.createElement("a");r.href=o,r.download=t,r.rel="noopener",document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(o),0)}function Fn(){const e=M(o=>o.daemon),t=Ne(),n=b.useCallback(async(o,r)=>{if(!e)throw new Error("not connected");const i=o?`${o}/${r.name}`:r.name,c=new Uint8Array(await r.arrayBuffer());await Yt(e).upload(i,c),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=b.useCallback(async o=>{if(!e)throw new Error("not connected");const r=await Yt(e).download(o);Gc(r.bytes,r.fileName||o.split("/").pop()||"download",r.mimeType)},[e]);return{upload:n,saveToDisk:s}}function ip(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function He(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function Xc(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function Qt(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:He(t.path);if(s===He(e)||s===e||s.startsWith(`${e}/`)||s!==n&&!s.startsWith(`${n}/`))return null;const o=e.split("/").pop();return{destinationDir:s,destination:`${s}/${o}`}}const Jc={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 Yc(e,t,n){const s=await e.connection.request("file_move_request",{path:t,destination:n});if(!s.ok){const o=s.error??"";throw new Error(Jc[o]??o??"Failed to move")}return s.destination??n}function Qc(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function zn(e,t,n,s,o,r){var c;(r==null?void 0:r.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:r.kind,parentPath:t});const i=o.get(t);if(!i||i.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(i.isError){const d=i.error instanceof Error?i.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:d});return}for(const d of((c=i.listing)==null?void 0:c.entries)??[])Zc(e,t,d,n,s,o,r)}function Zc(e,t,n,s,o,r,i){const c=Qc(t,n.name);if(n.kind!=="directory"){e.push({kind:"file",path:c,name:n.name,depth:s});return}const d=o.has(c);e.push({kind:"directory",path:c,name:n.name,depth:s,expanded:d}),d&&zn(e,c,s+1,o,r,i)}function el(e,t,n,s){if(!e)return[];const o=[];return zn(o,e,0,t,n,s),o}const tl="_container_9bgni_1",nl="_header_9bgni_7",sl="_uploadButton_9bgni_14",ol="_hiddenInput_9bgni_33",rl="_status_9bgni_36",al="_statusError_9bgni_37",il="_rowAction_9bgni_50",cl="_item_9bgni_65",ll="_list_9bgni_69",dl="_active_9bgni_92",ul="_selected_9bgni_97",pl="_dropTarget_9bgni_101",fl="_chevronSlot_9bgni_106",hl="_chevron_9bgni_106",ml="_chevronOpen_9bgni_117",gl="_icon_9bgni_120",_l="_name_9bgni_127",yl="_dirName_9bgni_132",bl="_statusRow_9bgni_138",wl="_statusRowError_9bgni_149",xl="_emptyState_9bgni_152",Sl="_draftInput_9bgni_158",B={container:tl,header:nl,uploadButton:sl,hiddenInput:ol,status:rl,statusError:al,rowAction:il,item:cl,list:ll,active:dl,selected:ul,dropTarget:pl,chevronSlot:fl,chevron:hl,chevronOpen:ml,icon:gl,name:_l,dirName:yl,statusRow:bl,statusRowError:wl,emptyState:xl,draftInput:Sl};function vl({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[o,r]=b.useState("");return a.jsxs("div",{className:B.item,style:t,onClick:i=>i.stopPropagation(),children:[a.jsx("span",{className:B.chevronSlot}),a.jsx("span",{className:B.icon,children:e==="directory"?a.jsx(Ee,{size:16}):a.jsx(fn,{size:16})}),a.jsx("input",{className:B.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:o,onChange:i=>r(i.target.value),onKeyDown:i=>{if(i.key==="Enter"){i.preventDefault();const c=o.trim();c?n(c):s()}else i.key==="Escape"&&(i.preventDefault(),s())},onBlur:s})]})}const kl=14;function Il({row:e,active:t,selected:n,dropTarget:s,onToggle:o,onOpenFile:r,onContextMenu:i,onSubmitDraft:c,onCancelDraft:d,onDragStartRow:m,onDragEndRow:h}){const x={paddingLeft:8+e.depth*kl};if(e.kind==="loading")return a.jsx("div",{className:B.statusRow,style:x,children:"Loading…"});if(e.kind==="error")return a.jsx("div",{className:F(B.statusRow,B.statusRowError),style:x,children:e.message??"failed to load"});if(e.kind==="draft")return a.jsx(vl,{draftKind:e.draftKind,indentStyle:x,onSubmit:f=>c(e.parentPath,f),onCancel:d});const p=e.kind==="directory";return a.jsxs("div",{className:F(B.item,t&&B.active,n&&B.selected,s&&B.dropTarget),style:x,title:e.path,draggable:!0,onDragStart:f=>m(e.path,f),onDragEnd:h,onClick:()=>p?o(e.path):r(e.path),onContextMenu:f=>{f.preventDefault(),f.stopPropagation(),i(e.path,p,f.clientX,f.clientY)},children:[a.jsx("span",{className:B.chevronSlot,children:p&&a.jsx(Ct,{size:14,className:F(B.chevron,e.expanded&&B.chevronOpen)})}),a.jsx("span",{className:B.icon,children:p?a.jsx(Ee,{size:16}):a.jsx(fn,{size:16})}),a.jsx("span",{className:p?B.dirName:B.name,children:e.name}),a.jsx("button",{type:"button",className:B.rowAction,title:"Actions",onClick:f=>{f.stopPropagation();const v=f.currentTarget.getBoundingClientRect();i(e.path,p,v.left,v.bottom)},children:a.jsx(It,{size:14})})]})}async function Zt(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 jl=b.lazy(()=>ue(()=>import("./TextViewer-BQ5pBxgI.js"),__vite__mapDeps([29,1,30,2,7,6,5,31,27,18,19,3,13,14,32])).then(e=>({default:e.TextViewer}))),Cl=b.lazy(()=>ue(()=>import("./MarkdownFileViewer-Bsnk43R7.js"),__vite__mapDeps([33,1,30,2,7,6,5,31,4,8,18,19,3,13,14,34])).then(e=>({default:e.MarkdownFileViewer}))),Tl=b.lazy(()=>ue(()=>import("./ImageViewer-kCGwfJK6.js"),__vite__mapDeps([35,1,27,2,18,19,7,6,5,3,13,14,36])).then(e=>({default:e.ImageViewer}))),El=b.lazy(()=>ue(()=>import("./VideoViewer-CGl515qS.js"),__vite__mapDeps([37,1,27,2,18,19,7,6,5,3,13,14,38])).then(e=>({default:e.VideoViewer}))),Nl=b.lazy(()=>ue(()=>import("./BinaryFallbackViewer-mpzWiSnO.js"),__vite__mapDeps([39,1,27,2,3,7,6,5,13,14,40])).then(e=>({default:e.BinaryFallbackViewer}))),cp={text:jl,markdown:Cl,image:Tl,video:El,binary:Nl},Rl={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"},Ml=[["image/","image"],["video/","video"]];function Wn(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const ql={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},Bl={poscar:!0,contcar:!0};function $l(e){if(ql[Wn(e)])return!0;const t=e.split("/").pop()??e;return!!Bl[t.toLowerCase()]}function lp(e,t={}){const n=Rl[Wn(e)];if(n)return n;const s=t.mimeHint??"";for(const[o,r]of Ml)if(s.startsWith(o))return r;return t.isBinary?"binary":"text"}function Ln(e,t){const n=e.split("/").pop()||e;if($l(e)){E.getState().open({id:J.molecule(e),kind:"molecule",label:n,closable:!0,data:{path:e},workspaceCwd:t});return}E.getState().open({id:J.file(e),kind:"file",label:n,closable:!0,data:{path:e},workspaceCwd:t})}const Al="_trigger_j9lub_1",Dl="_content_j9lub_12",Pl="_item_j9lub_21",Ol="_danger_j9lub_35",Fl="_sep_j9lub_38",P={trigger:Al,content:Dl,item:Pl,danger:Ol,sep:Fl};function zl(){const e=C(k=>k.fileMenu),t=C(k=>k.closeFileMenu),n=M(k=>k.client),s=Z(k=>k.startDraft),o=Z(k=>k.rootPath),r=E(k=>k.activeWorkspaceCwd),{saveToDisk:i}=Fn(),c=Ne(),d=b.useRef(null),[m,h]=b.useState(!1);if(b.useEffect(()=>{h(e!==null)},[e]),!e)return null;const x=e.path.split("/").pop()||e.path;function p(k){h(k),k||t()}function f(){e&&(t(),Ln(e.path,r||"~"))}async function v(){if(e){t();try{await Zt(e.path)}catch{window.alert("Failed to copy to clipboard.")}}}async function y(){if(e){t();try{await Zt(Xc(e.path,o)||"/")}catch{window.alert("Failed to copy to clipboard.")}}}async function _(){if(e){t();try{await i(e.path)}catch(k){window.alert(`Failed to download: ${k instanceof Error?k.message:String(k)}`)}}}async function q(){if(!e)return;const k=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${k}? "${x}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{const G=await n.connection.request("file_delete_request",{path:e.path});if(!G.ok)throw new Error(G.error??"delete failed");await c.invalidateQueries({queryKey:["explorer"]}),E.getState().closeByPathPrefix(e.path)}catch(G){window.alert(`Failed to delete: ${G instanceof Error?G.message:String(G)}`)}}function z(k){if(!e)return;const G=e.isDirectory?e.path:He(e.path);t(),s(G,k)}return a.jsxs(Ue,{open:m,onOpenChange:p,modal:!1,children:[a.jsx(Ke,{asChild:!0,children:a.jsx("button",{ref:d,type:"button",className:P.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),a.jsx(Ve,{children:a.jsx(Ge,{className:P.content,align:"start",sideOffset:2,children:e.background?a.jsxs(a.Fragment,{children:[a.jsxs(D,{className:P.item,onSelect:()=>z("file"),children:[a.jsx(_t,{size:13}),"New File"]}),a.jsxs(D,{className:P.item,onSelect:()=>z("directory"),children:[a.jsx(rt,{size:13}),"New Folder"]}),a.jsx(Se,{className:P.sep}),a.jsxs(D,{className:P.item,onSelect:v,children:[a.jsx(Je,{size:13}),"Copy Current Directory Path"]}),a.jsxs(D,{className:P.item,onSelect:y,children:[a.jsx(Je,{size:13}),"Copy Current Directory Relative Path"]})]}):a.jsxs(a.Fragment,{children:[!e.isDirectory&&a.jsxs(a.Fragment,{children:[a.jsxs(D,{className:P.item,onSelect:f,children:[a.jsx(gs,{size:13}),"Open"]}),a.jsx(Se,{className:P.sep})]}),e.isDirectory&&a.jsxs(a.Fragment,{children:[a.jsxs(D,{className:P.item,onSelect:()=>z("file"),children:[a.jsx(_t,{size:13}),"New File"]}),a.jsxs(D,{className:P.item,onSelect:()=>z("directory"),children:[a.jsx(rt,{size:13}),"New Folder"]}),a.jsx(Se,{className:P.sep})]}),a.jsxs(D,{className:P.item,onSelect:v,children:[a.jsx(Je,{size:13}),"Copy Absolute Path"]}),a.jsxs(D,{className:P.item,onSelect:y,children:[a.jsx(Je,{size:13}),"Copy Relative Path"]}),a.jsx(Se,{className:P.sep}),!e.isDirectory&&a.jsxs(a.Fragment,{children:[a.jsxs(D,{className:P.item,onSelect:_,children:[a.jsx(_s,{size:13}),"Download"]}),a.jsx(Se,{className:P.sep})]}),a.jsxs(D,{className:`${P.item} ${P.danger}`,onSelect:q,children:[a.jsx(jt,{size:13}),"Delete"]})]})})})]})}const Wl={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 Hn(e,t,n,s){const o=await e.connection.request("file_create_request",{path:t,name:n,kind:s});if(!o.ok){const r=o.error??"";throw new Error(Wl[r]??r??"Failed to create")}return o.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const Ll=28,Pe="application/x-pi-studio-path";function Hl(){const e=M(g=>g.client),t=Z(g=>g.rootPath),n=Z(g=>g.expanded),s=Z(g=>g.setRoot),o=Z(g=>g.toggle),r=Z(g=>g.draft),i=Z(g=>g.startDraft),c=Z(g=>g.cancelDraft),d=Z(g=>g.selected),m=Z(g=>g.setSelected),h=E(g=>g.activeWorkspaceCwd),x=E(g=>g.tabs.find(j=>j.id===g.activeTabId)),{upload:p}=Fn(),f=C(g=>g.openFileMenu),v=Ne(),[y,_]=b.useState(null),[q,z]=b.useState(null),k=b.useRef(null),G=b.useRef(null),ge=b.useRef(null),ee=b.useRef(null),Xe=(x==null?void 0:x.kind)==="file"||(x==null?void 0:x.kind)==="molecule"?x.data.path:null,ie=d?d.isDirectory?d.path:He(d.path):t,_e=b.useRef(null);b.useEffect(()=>{if(!e)return;const g=h||"~";_e.current!==g&&(_e.current=g,Ti(e,g).then(j=>s(j)))},[e,h,s]);const Me=Hc(n);Vc(n);const ye=b.useMemo(()=>el(t,n,Me,r),[t,n,Me,r]),qe=rs({count:ye.length,getScrollElement:()=>G.current,estimateSize:()=>Ll,overscan:12,getItemKey:g=>{var j;return((j=ye[g])==null?void 0:j.path)??g}});function Be(g){Ln(g,h||"~")}function I(g,j){j.dataTransfer.setData(Pe,g),j.dataTransfer.effectAllowed="move",ge.current=g}function ce(){ge.current=null}function qt(){z(null),ee.current&&(clearTimeout(ee.current.timer),ee.current=null)}function Vn(g){var T;if(((T=ee.current)==null?void 0:T.path)===g.path||(ee.current&&clearTimeout(ee.current.timer),ee.current=null,g.kind!=="directory"||g.expanded))return;const j=window.setTimeout(()=>o(g.path),700);ee.current={path:g.path,timer:j}}async function Gn(g,j){const T=Qt(g,j,t);if(!T||!e)return;const W=g.split("/").pop()??g;_({text:`Moving ${W}…`,error:!1});try{await Yc(e,g,T.destination),await v.invalidateQueries({queryKey:he.explorer(He(g))}),await v.invalidateQueries({queryKey:he.explorer(T.destinationDir)}),Z.getState().repathAfterMove(g,T.destination,T.destinationDir);const Y=E.getState().tabs.some(pe=>(pe.kind==="file"||pe.kind==="molecule")&&pe.data.path===g);E.getState().closeByPathPrefix(g),Y&&Be(T.destination),_({text:`Moved to ${T.destinationDir.split("/").pop()||"/"}`,error:!1})}catch(Y){_({text:Y instanceof Error?Y.message:"Failed to move",error:!0})}}async function Xn(g,j){const T=(r==null?void 0:r.kind)??"file";if(c(),!!e)try{const W=await Hn(e,g,j,T);await v.invalidateQueries({queryKey:he.explorer(g)}),_({text:`Created ${W}`,error:!1}),T==="file"&&Be(W)}catch(W){_({text:W instanceof Error?W.message:"Failed to create",error:!0})}}async function Jn(g,j){var pe;if(!j.length||!g)return;const T=(pe=Me.get(g))==null?void 0:pe.listing,W=new Set((T==null?void 0:T.entries.map(oe=>oe.name))??[]),Y=j.filter(oe=>W.has(oe.name));if(Y.length>0){const oe=Y.map(Qn=>Qn.name).join(", ");if(!window.confirm(`Overwrite ${Y.length>1?"these files":"this file"}? ${oe}`))return}_({text:`Uploading ${j.length} file${j.length>1?"s":""}…`,error:!1});try{for(const oe of j)await p(g,oe);_({text:`Uploaded ${j.length} file${j.length>1?"s":""}`,error:!1})}catch(oe){_({text:`Upload failed: ${oe instanceof Error?oe.message:"unknown"}`,error:!0})}}function Bt(g,j){g.preventDefault();const T=g.dataTransfer.types.includes(Pe)?g.dataTransfer.getData(Pe)||ge.current:null;qt(),T&&Gn(T,j??{kind:"directory",path:t})}function Yn(g){g.dataTransfer.types.includes(Pe)&&(g.preventDefault(),g.dataTransfer.dropEffect="move")}return e?a.jsxs("div",{className:B.container,onDragOver:Yn,onDragLeave:g=>{g.currentTarget.contains(g.relatedTarget)||qt()},onDrop:g=>Bt(g),children:[a.jsxs("div",{className:B.header,children:[a.jsx("button",{type:"button",className:B.uploadButton,onClick:()=>i(ie,"file"),disabled:!t,title:d?`New file in ${ie.split("/").pop()||"/"}`:"New file in workspace root",children:a.jsx(_t,{size:14})}),a.jsx("button",{type:"button",className:B.uploadButton,onClick:()=>i(ie,"directory"),disabled:!t,title:d?`New folder in ${ie.split("/").pop()||"/"}`:"New folder in workspace root",children:a.jsx(rt,{size:14})}),a.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:[a.jsx(ys,{size:14}),a.jsx("span",{children:"Upload"})]}),a.jsx("input",{ref:k,type:"file",multiple:!0,className:B.hiddenInput,onChange:g=>{Jn(t,Array.from(g.target.files??[])),g.target.value=""}})]}),y&&a.jsx("div",{className:y.error?B.statusError:B.status,children:y.text}),a.jsxs("div",{className:B.list,ref:G,onContextMenu:g=>{g.preventDefault(),f(t,!0,g.clientX,g.clientY,!0)},children:[ye.length===0&&a.jsx("div",{className:B.emptyState,children:"No files loaded"}),a.jsx("div",{style:{position:"relative",height:qe.getTotalSize()},children:qe.getVirtualItems().map(g=>{const j=ye[g.index];return j?a.jsx("div",{"data-index":g.index,style:{position:"absolute",top:0,left:0,width:"100%",height:g.size,transform:`translateY(${g.start}px)`},onDragEnter:T=>{const W=T.dataTransfer.types.includes(Pe)?ge.current:null;if(!W)return;const Y=Qt(W,j,t);z(Y?j.path:null),Vn(j)},onDrop:T=>{T.stopPropagation(),Bt(T,j)},children:a.jsx(Il,{row:j,active:(j.kind==="file"||j.kind==="directory")&&j.path===Xe,selected:(j.kind==="file"||j.kind==="directory")&&j.path===(d==null?void 0:d.path),onToggle:T=>{m({path:T,isDirectory:!0}),o(T)},onOpenFile:T=>{m({path:T,isDirectory:!1}),Be(T)},onContextMenu:(T,W,Y,pe)=>f(T,W,Y,pe),onSubmitDraft:(T,W)=>void Xn(T,W),onCancelDraft:c,onDragStartRow:I,onDragEndRow:ce,dropTarget:(j.kind==="file"||j.kind==="directory")&&j.path===q})},g.key):null})})]}),a.jsx(zl,{})]}):a.jsx("div",{className:B.emptyState,children:"Connect to browse files"})}const en={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},ae=ke()(e=>({subscribedCwd:null,changes:[],...en,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],...en});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,available:!0,branch:t.branch,upstream:t.upstream,ahead:t.ahead,behind:t.behind,detached:t.detached,conflictCount:t.conflicted.length})}})),Ul="_list_1yrj2_1",Kl="_summary_1yrj2_4",Vl="_item_1yrj2_11",Gl="_badge_1yrj2_23",Xl="_added_1yrj2_30",Jl="_modified_1yrj2_34",Yl="_deleted_1yrj2_38",Ql="_name_1yrj2_42",Zl="_emptyState_1yrj2_47",we={list:Ul,summary:Kl,item:Vl,badge:Gl,added:Xl,modified:Jl,deleted:Yl,name:Ql,emptyState:Zl},ed={added:"A",modified:"M",deleted:"D"};function td(){const t=E(r=>r.activeWorkspaceCwd)||"~",n=ae(r=>r.changes),s=E(r=>r.open);function o(r,i){s({id:J.diff(r,i),kind:"diff",label:r.split("/").pop()||r,closable:!0,data:{path:r,staged:i},workspaceCwd:t})}return n.length===0?a.jsx("div",{className:we.emptyState,children:"No changes detected"}):a.jsxs("div",{className:we.list,children:[a.jsxs("div",{className:we.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((r,i)=>a.jsxs("div",{className:we.item,onClick:()=>o(r.path,r.staged),children:[a.jsx("span",{className:F(we.badge,we[r.status]),children:ed[r.status]}),a.jsx("span",{className:we.name,children:r.path})]},`${r.path}-${r.staged}-${i}`))]})}const nd="_wrap_1avgv_1",sd="_tabBar_1avgv_7",od="_tabBtn_1avgv_13",rd="_active_1avgv_29",ad="_refreshBtn_1avgv_33",id="_content_1avgv_37",fe={wrap:nd,tabBar:sd,tabBtn:od,active:rd,refreshBtn:ad,content:id};function cd(){const e=C(c=>c.rightSidebarTab),t=C(c=>c.setRightSidebarTab),s=E(c=>c.activeWorkspaceCwd)||"~",o=M(c=>c.client),r=Ne();function i(){r.invalidateQueries({queryKey:["explorer"]}),o&&s&&o.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return a.jsxs("div",{className:fe.wrap,children:[a.jsxs("div",{className:fe.tabBar,children:[a.jsxs("button",{type:"button",className:F(fe.tabBtn,e==="files"&&fe.active),onClick:()=>t("files"),children:[a.jsx(Ee,{size:13}),"Files"]}),a.jsxs("button",{type:"button",className:F(fe.tabBtn,e==="changes"&&fe.active),onClick:()=>t("changes"),children:[a.jsx(un,{size:13}),"Changes"]}),a.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:fe.refreshBtn,onClick:i,children:a.jsx(bs,{size:13})})]}),a.jsx("div",{className:fe.content,children:e==="files"?a.jsx(Hl,{}):a.jsx(td,{})})]})}const Un=ke()(e=>({bySession:{},setStats(t,n){e(s=>({bySession:{...s.bySession,[t]:{...s.bySession[t],...n}}}))},clear(t){e(n=>{const{[t]:s,...o}=n.bySession;return{bySession:o}})}})),ld=12e3;function dd(e,t){return e==="running"&&t!=="running"}function tn(e,t){var s,o,r,i,c,d;const n={};((s=t.contextUsage)==null?void 0:s.tokens)!=null&&(n.contextTokens=t.contextUsage.tokens),((o=t.contextUsage)==null?void 0:o.contextWindow)!==void 0&&(n.contextWindow=t.contextUsage.contextWindow),((r=t.contextUsage)==null?void 0:r.percent)!=null&&(n.contextPercent=t.contextUsage.percent),((i=t.tokens)==null?void 0:i.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,R.getState().setModel(e,t.model)),Un.getState().setStats(e,n)}function ud(e){const t=M(c=>c.client),n=M(c=>c.status),s=R(c=>{var d;return e?((d=c.sessions[e])==null?void 0:d.agentId)??null:null}),o=R(c=>{var d;return e?(d=c.sessions[e])==null?void 0:d.status:void 0}),r=b.useRef(!1),i=b.useRef(void 0);b.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let c=!1;const d=async()=>{if(!r.current){r.current=!0;try{const h=await t.agent(s).sessionStats();c||tn(e,h)}catch{}finally{r.current=!1}}};d();const m=setInterval(()=>void d(),ld);return()=>{c=!0,clearInterval(m)}},[n,t,e,s]),b.useEffect(()=>{const c=i.current;i.current=o,dd(c,o)&&(n!=="open"||!t||!e||!s||(r.current=!1,t.agent(s).sessionStats().then(d=>tn(e,d)).catch(()=>{})))},[o,n,t,e,s])}function pd(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 fd(e){const t=M(r=>r.client),n=ae(r=>r.applyProjection),s=ae(r=>r.setSubscribedCwd),o=b.useRef(t);return o.current=t,b.useEffect(()=>{if(!t||!e)return;let r=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const i=t.connection.onSessionMessage(c=>{if(r)return;const d=c;pd(d)&&d.cwd===e&&n(d.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{r=!0,i(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const r=o.current;!r||!e||r.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const Mt="--";function Oe(e){return e===void 0?Mt:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function hd(e){if(e==null)return Mt;const t=e<=1?e*100:e;return`${Math.round(t)}%`}function md(e){if(e===void 0)return Mt;const t=e<1?4:2;return`$${e.toFixed(t)}`}function gd(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function _d(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}function yd(e,t=!0){const n=M(s=>s.client);return sn({queryKey:he.providerModels(e),queryFn:async()=>{if(!n)throw new Error("not connected");return(await n.providers.listModels(e)).models},enabled:!!n&&!!e&&t})}function bd(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 wd(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 xd(e){const t=new Set;return e.filter(n=>t.has(n.id)?!1:(t.add(n.id),!0))}const Sd="_content_oe694_4",vd="_search_oe694_17",kd="_list_oe694_35",Id="_item_oe694_40",jd="_itemActive_oe694_54",Cd="_checkSlot_oe694_58",Td="_label_oe694_67",Ed="_modelId_oe694_73",Nd="_state_oe694_80",Rd="_stateError_oe694_89",Md="_commandContent_oe694_99",qd="_commandList_oe694_102",Bd="_commandItem_oe694_107",$d="_commandItemHeader_oe694_140",Ad="_commandKindBadge_oe694_154",Dd="_commandKindExtension_oe694_173",Pd="_commandKindPrompt_oe694_178",Od="_commandKindSkill_oe694_183",Fd="_commandDescription_oe694_188",re={content:Sd,search:vd,list:kd,item:Id,itemActive:jd,checkSlot:Cd,label:Td,modelId:Ed,state:Nd,stateError:Rd,commandContent:Md,commandList:qd,commandItem:Bd,commandItemHeader:$d,commandKindBadge:Ad,commandKindExtension:Dd,commandKindPrompt:Pd,commandKindSkill:Od,commandDescription:Fd};function zd({currentModel:e,provider:t,onSelect:n,renderTrigger:s}){const[o,r]=b.useState(!1),[i,c]=b.useState(""),d=b.useRef(null),{data:m=[],isLoading:h,isError:x,error:p}=yd(t,o),f=xd(wd(m,e));b.useEffect(()=>{var k;o&&(c(""),(k=d.current)==null||k.focus())},[o]);const v=new Map(f.map(k=>[k.id,k.provider])),y=f.map(k=>({value:k.id,label:k.label??k.id,description:k.id})),_=bd(y,i),q=p instanceof Error?p.message:"Failed to load models";function z(k){k.stopPropagation(),k.key==="Escape"&&r(!1)}return a.jsxs(Ue,{open:o,onOpenChange:r,modal:!1,children:[a.jsx(Ke,{asChild:!0,children:s(e)}),a.jsx(Ve,{children:a.jsxs(Ge,{className:re.content,align:"start",sideOffset:4,children:[a.jsx("input",{ref:d,className:re.search,placeholder:"Search models…",value:i,onChange:k=>c(k.target.value),onKeyDown:z}),h&&a.jsx("div",{className:re.state,children:a.jsx(Pn,{size:"sm"})}),!h&&x&&a.jsx("div",{className:re.stateError,children:q}),!h&&!x&&_.length===0&&a.jsx("div",{className:re.state,children:"No models found"}),!h&&!x&&_.length>0&&a.jsx("div",{className:re.list,children:_.map(k=>a.jsxs(D,{className:re.item,onSelect:()=>n(k.value,v.get(k.value)),children:[a.jsx("span",{className:re.checkSlot,"aria-hidden":!0,children:k.value===e&&a.jsx(hn,{size:14})}),a.jsx("span",{className:re.label,children:k.label}),a.jsxs("span",{className:re.modelId,children:["(",k.value,")"]})]},k.value))})]})})]})}const Wd="_statusBar_11z00_1",Ld="_segmentGroup_11z00_16",Hd="_chevron_11z00_20",Ud="_segment_11z00_16",Kd="_icon_11z00_33",Vd="_modelSegment_11z00_39",Gd="_modelChevron_11z00_63",Xd="_text_11z00_74",ne={statusBar:Wd,segmentGroup:Ld,chevron:Hd,segment:Ud,icon:Kd,modelSegment:Vd,modelChevron:Gd,text:Xd};function Jd(){const e=R(_=>_.activeSessionId),t=R(_=>e?_.sessions[e]:void 0),n=M(_=>_.client),s=R(_=>_.setModel),o=dt(),r=E(_=>_.activeWorkspaceCwd);fd(r||"");const i=ae(_=>_.available),c=ae(_=>_.branch),d=ae(_=>_.ahead),m=ae(_=>_.behind),h=ae(_=>_.detached),x=ae(_=>_.conflictCount),p=ae(_=>_.changes.length),f=Un(_=>e?_.bySession[e]:void 0);ud(e);const v=[];if(t){const _=gd(t.cwd,o);v.push({key:"cwd",icon:a.jsx(Ee,{size:13}),text:_,title:t.cwd})}if(i){const _=_d(d,m),q=[h?"(detached)":c??"?"];_&&q.push(_),p>0&&q.push(`●${p}`),x>0&&q.push(`⚠${x}`),v.push({key:"branch",icon:a.jsx(ws,{size:13}),text:q.join(" ")})}if(t){const _=`${hd(f==null?void 0:f.contextPercent)} (${Oe(f==null?void 0:f.contextTokens)}/${Oe(f==null?void 0:f.contextWindow)})`;v.push({key:"context",icon:a.jsx(xs,{size:13}),text:_}),v.push({key:"tokens",icon:a.jsx(Ss,{size:13}),text:Oe(f==null?void 0:f.totalTokens),title:`in ${Oe(f==null?void 0:f.inputTokens)} / out ${Oe(f==null?void 0:f.outputTokens)}`}),v.push({key:"cost",icon:a.jsx(vs,{size:13}),text:md(f==null?void 0:f.cost)})}function y(_,q){e&&(s(e,_,q),!(!n||!q)&&(async()=>{const z=await $n(n,e);await n.agent(z).setModel(q,_)})().catch(()=>{}))}return a.jsxs("div",{className:ne.statusBar,children:[t&&a.jsx("span",{className:ne.segmentGroup,children:a.jsx(zd,{currentModel:t.model,provider:"pi",onSelect:y,renderTrigger:_=>a.jsxs("button",{type:"button",className:ne.modelSegment,disabled:!n,title:_?`Model: ${_}`:"Select model",children:[a.jsx("span",{className:ne.icon,children:a.jsx(ks,{size:13})}),a.jsx("span",{className:ne.text,children:_??"Model"}),a.jsx(rn,{size:12,className:ne.modelChevron,"aria-hidden":"true"})]})})}),v.map((_,q)=>a.jsxs("span",{className:ne.segmentGroup,children:[(!!t||q>0)&&a.jsx(Ct,{size:12,className:ne.chevron,"aria-hidden":"true"}),a.jsxs("span",{className:ne.segment,title:_.title,children:[a.jsx("span",{className:ne.icon,children:_.icon}),a.jsx("span",{className:ne.text,children:_.text})]})]},_.key))]})}const Yd="_wrapper_sylgk_3",Qd="_box_sylgk_18",Zd="_checkmark_sylgk_38",eu="_nativeInput_sylgk_43",nt={wrapper:Yd,box:Qd,checkmark:Zd,nativeInput:eu};b.forwardRef(function({label:t,checked:n=!1,disabled:s,className:o,onChange:r,...i},c){return a.jsxs("label",{className:nt.wrapper,"data-disabled":s||void 0,children:[a.jsx("input",{ref:c,type:"checkbox",className:nt.nativeInput,checked:n,disabled:s,onChange:r,...i}),a.jsx("span",{className:nt.box,"data-checked":n,"aria-hidden":!0,children:n&&a.jsx(hn,{size:12,className:nt.checkmark})}),t&&a.jsx("span",{children:t})]})});const tu="_select_1rlgr_3",nu={select:tu};b.forwardRef(function({options:t,placeholder:n,className:s,...o},r){return a.jsxs("select",{ref:r,className:F(nu.select,s),...o,children:[n&&a.jsx("option",{value:"",disabled:!0,children:n}),t.map(i=>a.jsx("option",{value:i.value,children:i.label},i.value))]})});const su="_overlay_1jyoi_1",ou="_contentWrapper_1jyoi_7",ru="_dialog_1jyoi_16",au="_header_1jyoi_28",iu="_title_1jyoi_36",cu="_closeBtn_1jyoi_43",lu="_body_1jyoi_57",du="_footer_1jyoi_63",uu="_bare_1jyoi_72",pu="_bareBody_1jyoi_78",fu="_bareCloseBtn_1jyoi_82",hu="_visuallyHidden_1jyoi_101",Q={overlay:su,contentWrapper:ou,dialog:ru,header:au,title:iu,closeBtn:cu,body:lu,footer:du,bare:uu,bareBody:pu,bareCloseBtn:fu,visuallyHidden:hu},mu=yt;function gu({open:e,onOpenChange:t,title:n,children:s,footer:o,width:r,className:i,bare:c=!1}){return a.jsx(js,{open:e,onOpenChange:t,children:a.jsxs(Cs,{children:[a.jsx(Ts,{className:Q.overlay}),a.jsx("div",{className:Q.contentWrapper,children:a.jsxs(Es,{className:F(Q.dialog,c&&Q.bare,i),style:r!==void 0?{width:r}:void 0,children:[c?a.jsx($t,{className:Q.visuallyHidden,children:n}):a.jsxs("div",{className:Q.header,children:[a.jsx($t,{className:Q.title,children:n}),a.jsx(yt,{asChild:!0,children:a.jsx("button",{type:"button",className:Q.closeBtn,"aria-label":"Close",children:a.jsx(gt,{size:16})})})]}),a.jsx("div",{className:F(Q.body,c&&Q.bareBody),children:s}),c&&a.jsx(yt,{asChild:!0,children:a.jsx("button",{type:"button",className:Q.bareCloseBtn,"aria-label":"Close",children:a.jsx(gt,{size:16})})}),o&&a.jsx("div",{className:Q.footer,children:o})]})})]})})}const _u="_handle_1ocv1_1",yu={handle:_u};function nn({side:e,onResize:t,className:n}){const s=b.useRef(0),o=b.useCallback(c=>{const d=c.clientX-s.current;s.current=c.clientX,t(e==="left"?d:-d)},[t,e]),r=b.useCallback(c=>{var d,m;window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",r),document.body.style.cursor="",document.body.style.userSelect="",(m=(d=c.target)==null?void 0:d.releasePointerCapture)==null||m.call(d,c.pointerId)},[o]);function i(c){c.preventDefault(),s.current=c.clientX,document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",o),window.addEventListener("pointerup",r)}return a.jsx("div",{className:F(yu.handle,n),onPointerDown:i,role:"separator","aria-orientation":"vertical"})}function bu(e,t){const{order:n,sessions:s}=R.getState(),r=Rt(n,s,t).find(i=>i.cwd===e);if(r!=null&&r.sessions[0]){const i=r.sessions[0].id;R.getState().activate(i);const c=R.getState().sessions[i];E.getState().open({id:J.chat(i),kind:"chat",label:(c==null?void 0:c.title)??"New chat",closable:!0,data:{sessionId:i},workspaceCwd:e})}else Nt(e);C.getState().setCwd(e)}const wu="_pathRow_t4yml_1",xu="_pathInput_t4yml_9",Su="_createRow_t4yml_13",vu="_createInput_t4yml_21",ku="_createError_t4yml_25",Iu="_list_t4yml_30",ju="_item_t4yml_37",Cu="_name_t4yml_49",Tu="_emptyState_t4yml_54",se={pathRow:wu,pathInput:xu,createRow:Su,createInput:vu,createError:ku,list:Iu,item:ju,name:Cu,emptyState:Tu};function Eu(){const e=C(I=>I.cwdPickerOpen),t=C(I=>I.closeCwdPicker),n=E(I=>I.activeWorkspaceCwd),s=C(I=>I.cwd),o=M(I=>I.client),r=dt(),[i,c]=b.useState("/"),[d,m]=b.useState("/"),[h,x]=b.useState(!1),[p,f]=b.useState(""),[v,y]=b.useState(null),[_,q]=b.useState(!1),z=Ne();b.useEffect(()=>{if(!e)return;const I=Re(n||s||"~",r);c(I),m(I),ie()},[e,o,n,s]);const{data:k,isLoading:G,isError:ge,error:ee}=Lc(i,e&&!!o),Xe=((k==null?void 0:k.entries)??[]).filter(I=>I.kind==="directory");function ie(){x(!1),f(""),y(null)}function _e(I){const ce=I.length>1?I.replace(/\/+$/,"")||"/":I;c(ce),m(ce),ie()}function Me(){_e(i.split("/").slice(0,-1).join("/")||"/")}function ye(){_e(d.trim())}async function qe(){const I=p.trim();if(!(!I||!o||_)){q(!0),y(null);try{const ce=await Hn(o,i,I,"directory");await z.invalidateQueries({queryKey:he.explorer(i)}),_e(ce)}catch(ce){y(ce instanceof Error?ce.message:"Failed to create folder")}finally{q(!1)}}}function Be(){bu(i,r),t()}return a.jsxs(gu,{open:e,onOpenChange:I=>!I&&t(),title:"Open Workspace",footer:a.jsxs(a.Fragment,{children:[a.jsx(mu,{asChild:!0,children:a.jsx(V,{size:"sm",variant:"secondary",children:"Cancel"})}),a.jsx(V,{size:"sm",onClick:Be,children:"Open this folder"})]}),children:[a.jsxs("div",{className:se.pathRow,children:[a.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:Me,children:a.jsx(Is,{size:13})}),a.jsx(at,{className:se.pathInput,value:d,onChange:I=>m(I.target.value),onKeyDown:I=>{I.key==="Enter"&&(I.preventDefault(),ye())}}),a.jsx(V,{size:"xs",onClick:ye,children:"Go"}),a.jsx(V,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!o||ge||h,onClick:()=>{x(!0),f(""),y(null)},children:a.jsx(rt,{size:13})})]}),h&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:se.createRow,children:[a.jsx(Ee,{size:14}),a.jsx(at,{className:se.createInput,autoFocus:!0,placeholder:"New folder name",value:p,onChange:I=>f(I.target.value),onKeyDown:I=>{I.key==="Enter"?(I.preventDefault(),qe()):I.key==="Escape"&&(I.preventDefault(),I.stopPropagation(),ie())}}),a.jsx(V,{size:"xs",loading:_,disabled:!p.trim()||_,onClick:()=>void qe(),children:"Create"}),a.jsx(V,{size:"xs",variant:"secondary",onClick:ie,children:"Cancel"})]}),v&&a.jsx("div",{className:se.createError,children:v})]}),a.jsx("div",{className:se.list,children:G?a.jsx("div",{className:se.emptyState,children:"Loading..."}):ge?a.jsxs("div",{className:se.emptyState,children:["Error: ",ee instanceof Error?ee.message:"unknown error"]}):Xe.length===0?a.jsx("div",{className:se.emptyState,children:"No subdirectories"}):Xe.map(I=>a.jsxs("div",{className:se.item,onClick:()=>_e(i==="/"?`/${I.name}`:`${i}/${I.name}`),children:[a.jsx(Ee,{size:14}),a.jsx("span",{className:se.name,children:I.name})]},I.name))})]})}const Nu="_shell_1ilqr_1",Ru="_main_1ilqr_7",Mu="_sidebarLeft_1ilqr_13",qu="_leftHandle_1ilqr_25",Bu="_center_1ilqr_28",$u="_sidebarRight_1ilqr_35",Au="_rightHandle_1ilqr_43",xe={shell:Nu,main:Ru,sidebarLeft:Mu,leftHandle:qu,center:Bu,sidebarRight:$u,rightHandle:Au};function Du(){const e=C(i=>i.leftSidebarCollapsed),t=C(i=>i.rightSidebarCollapsed),n=C(i=>i.leftSidebarWidth),s=C(i=>i.rightSidebarWidth),o=C(i=>i.resizeLeftSidebar),r=C(i=>i.resizeRightSidebar);return a.jsxs("div",{className:xe.shell,children:[a.jsx(ii,{}),a.jsxs("div",{className:xe.main,children:[!e&&a.jsxs("aside",{className:xe.sidebarLeft,style:{width:n},children:[a.jsx(dc,{}),a.jsx(nn,{side:"left",className:xe.leftHandle,onResize:o})]}),a.jsxs("div",{className:xe.center,children:[a.jsx(kc,{}),a.jsx(Fc,{})]}),!t&&a.jsxs("aside",{className:xe.sidebarRight,style:{width:s},children:[a.jsx(nn,{side:"right",className:xe.rightHandle,onResize:r}),a.jsx(cd,{})]})]}),a.jsx(Jd,{}),a.jsx(Eu,{})]})}function Pu(){const e=b.useRef(!1);b.useEffect(()=>{if(e.current)return;if(e.current=!0,window.location.hash.includes("offer=")){const d=window.location.href;C.getState().setHost(d),M.getState().connect({url:d});return}const t=new URLSearchParams(window.location.search),n=t.get("host"),s=t.get("pair"),o=t.get("password"),r=t.get("cwd"),i=t.get("connect")==="1",c=C.getState();if(s?c.setHost(s):n&&c.setHost(n),o&&c.setPassword(o),r&&c.setCwd(r),s)M.getState().connect({url:s});else if(i){const{host:d,password:m}=C.getState();M.getState().connect({url:d,password:m||void 0})}},[])}function Ou(e){return typeof e=="object"&&e!==null&&"kind"in e}function Fu(e){const t=[];for(const n of e)if(Ou(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 zu(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...Fu(s.items)),!s.hasNewer))return t;const o=s.endCursor;if(typeof o!="string"||o===n)return t;n=o}}function Wu(e){return typeof e.model=="string"}function Lu(){const e=M(s=>s.client),t=M(s=>s.status),n=b.useRef(!1);b.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,(async()=>{var x;let s=[];try{s=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{s=[]}s.sort((p,f)=>(f.lastActivity??0)-(p.lastActivity??0));const o=R.getState();for(const p of s){if(o.findByAgentId(p.agentId))continue;let f=St;try{f=(await zu(_=>e.agent(p.agentId).timeline.fetch({direction:"after",cursor:_??void 0,limit:200}))).reduce(Bn,St)}catch{}const v=f.rows.length===0;o.hydrate({id:`s-${p.agentId.slice(0,12)}`,agentId:p.agentId,title:p.title||(v?"New chat":(x=p.cwd)==null?void 0:x.split("/").pop())||"Restored",status:p.status??"idle",cwd:p.cwd||"~",timeline:f,userMessageCount:f.rows.filter(y=>y.kind==="user").length,model:p.model,modelProvider:p.modelProvider})}const{order:r,sessions:i}=R.getState(),c=r.length>0?i[r[0]??""]:void 0;if(!c)return;const d=await lt(e).catch(()=>null),m=Re(c.cwd||"~",d),h=Rt(r,i,d);C.getState().setCollapsedWorkspaces(cc(h,m)),R.getState().activate(c.id),C.getState().setCwd(c.cwd),E.getState().open({id:J.chat(c.id),kind:"chat",label:c.title,closable:!0,data:{sessionId:c.id},workspaceCwd:m})})())},[t,e]),b.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(Wu(s)){const o=typeof s.modelProvider=="string"?s.modelProvider:void 0;R.getState().setModelByAgentId(s.agentId,s.model,o)}})},[t,e])}function Hu(){const e=M(s=>s.client),t=M(s=>s.status),n=b.useRef(!1);b.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 o=await lt(e).catch(()=>null),r=E.getState().open;for(const i of s){if(i.closed)continue;const c=Re(i.cwd||"~",o);r({id:J.terminal(i.slot),kind:"terminal",label:i.name,closable:!0,data:{slot:i.slot,cwd:c},workspaceCwd:c})}})())},[t,e])}function Uu(){b.useEffect(()=>{function e(t){const n=C.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),An(E.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:o,tabs:r}=E.getState();if(!o)return;const i=r.find(c=>c.id===o);(i==null?void 0:i.closable)!==!1&&(t.preventDefault(),vt(o))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function Ku(){return Pu(),Lu(),Hu(),Uu(),null}function Vu(){return a.jsxs(No,{children:[a.jsx(Ku,{}),a.jsx(Du,{})]})}const Kn=document.getElementById("root");if(!Kn)throw new Error("Missing #root element");ts.createRoot(Kn).render(a.jsx(b.StrictMode,{children:a.jsx(Vu,{})}));export{V as B,gu as D,Pn as S,sp as T,cp as V,M as a,dt as b,ip as c,lp as d,$n as e,bd as f,op as g,E as h,rp as i,ap as j,Yt as k,J as l,Re as n,he as r,re as s,ci as t,R as u};
|
|
3
|
+
//# sourceMappingURL=index-D9JEGDmu.js.map
|