@av-pi-studio/web-client 0.0.44 → 0.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/web/assets/{BinaryFallbackViewer-Diavog5U.js → BinaryFallbackViewer-DN2oT6N7.js} +2 -2
- package/dist/web/assets/{BinaryFallbackViewer-Diavog5U.js.map → BinaryFallbackViewer-DN2oT6N7.js.map} +1 -1
- package/dist/web/assets/{ChatPanel-sp_aMtby.js → ChatPanel-YUfYdTdZ.js} +2 -2
- package/dist/web/assets/{ChatPanel-sp_aMtby.js.map → ChatPanel-YUfYdTdZ.js.map} +1 -1
- package/dist/web/assets/{CodeView-BO9eNSWw.js → CodeView-DwUKpXwU.js} +2 -2
- package/dist/web/assets/{CodeView-BO9eNSWw.js.map → CodeView-DwUKpXwU.js.map} +1 -1
- package/dist/web/assets/FilePanel-DCZ6Vntr.js +2 -0
- package/dist/web/assets/FilePanel-DCZ6Vntr.js.map +1 -0
- package/dist/web/assets/{ImageViewer-DA1VjBRz.js → ImageViewer-BKflylHn.js} +2 -2
- package/dist/web/assets/{ImageViewer-DA1VjBRz.js.map → ImageViewer-BKflylHn.js.map} +1 -1
- package/dist/web/assets/{MarkdownFileViewer-Co5iIbJn.js → MarkdownFileViewer-BDmo3la-.js} +2 -2
- package/dist/web/assets/{MarkdownFileViewer-Co5iIbJn.js.map → MarkdownFileViewer-BDmo3la-.js.map} +1 -1
- package/dist/web/assets/MoleculeViewerPanel-BZA00vSx.js +2 -0
- package/dist/web/assets/MoleculeViewerPanel-BZA00vSx.js.map +1 -0
- package/dist/web/assets/{TerminalPanel-BfOpqaj0.js → TerminalPanel-qx_HdM7y.js} +2 -2
- package/dist/web/assets/{TerminalPanel-BfOpqaj0.js.map → TerminalPanel-qx_HdM7y.js.map} +1 -1
- package/dist/web/assets/TextViewer-CDXNfUrU.js +2 -0
- package/dist/web/assets/TextViewer-CDXNfUrU.js.map +1 -0
- package/dist/web/assets/{VideoViewer-SeMcovVF.js → VideoViewer-D4XJC0lT.js} +2 -2
- package/dist/web/assets/{VideoViewer-SeMcovVF.js.map → VideoViewer-D4XJC0lT.js.map} +1 -1
- package/dist/web/assets/{index-CeQxaU3V.js → index-DneBC_ta.js} +3 -3
- package/dist/web/assets/index-DneBC_ta.js.map +1 -0
- package/dist/web/assets/{use-file-download-BDc3Flim.js → use-file-download-DsIqcxhB.js} +2 -2
- package/dist/web/assets/{use-file-download-BDc3Flim.js.map → use-file-download-DsIqcxhB.js.map} +1 -1
- package/dist/web/assets/use-file-watch-ld_2lbTl.js +2 -0
- package/dist/web/assets/use-file-watch-ld_2lbTl.js.map +1 -0
- package/dist/web/index.html +1 -1
- package/package.json +3 -3
- package/dist/web/assets/FilePanel-Dla22Uov.js +0 -2
- package/dist/web/assets/FilePanel-Dla22Uov.js.map +0 -1
- package/dist/web/assets/MoleculeViewerPanel-BTsiMK_L.js +0 -2
- package/dist/web/assets/MoleculeViewerPanel-BTsiMK_L.js.map +0 -1
- package/dist/web/assets/TextViewer-C76HR2kP.js +0 -2
- package/dist/web/assets/TextViewer-C76HR2kP.js.map +0 -1
- package/dist/web/assets/index-CeQxaU3V.js.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatPanel-
|
|
2
|
-
var Mn=Object.defineProperty;var Bn=(e,t,n)=>t in e?Mn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var I=(e,t,n)=>Bn(e,typeof t!="symbol"?t+"":t,n);import{r as w,j as i,c as An}from"./vendor-react-p-LLqNcx.js";import{Q as $n,a as Dn,u as Lt,b as On,c as Se,d as Pn}from"./vendor-query-chxBrUuj.js";import{A as l,B as u,C as $,D as Ht,E as q,F as fe,G as ne,H as B,I as b,J as D,K as P,L as Ve,M as be,N as he}from"./vendor-B2Vnrid8.js";import{L as Fn,P as zn,a as Ln,b as Hn,c as Wn,E as Wt,C as gt,d as Ut,F as Un,e as Kt,f as Vt,A as Gt,S as Jt,G as Kn,g as Vn,M as Xt,X as it,h as Be,i as Yt,j as Gn,k as Qt,U as Jn,R as Xn,l as Zt,m as Yn,n as Qn,o as Zn,D as es,p as ts,q as ns}from"./vendor-icons-CAhpOZSZ.js";import{R as Ge,T as Je,P as Xe,C as Ye,I as H,S as ct,D as ss,a as os,b as rs,c as as,d as xt,e as lt}from"./vendor-overlays-DWi-xJna.js";import{u as is,a as cs,D as ls,c as ds,S as us,h as ps,P as fs,b as hs,C as ms}from"./vendor-dnd-CjSU1Kqk.js";import{_ as se}from"./vendor-highlight-Cry4x-mr.js";import"./vendor-markdown-ePgMI45n.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 a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).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 gs=new $n;function en(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 _s(e){return Math.max(0,Math.min(255,Math.round(e)))}function ys({r:e,g:t,b:n}){const s=o=>_s(o).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function bs(e){const{r:t,g:n,b:s}=en(e),o=r=>{const a=r/255;return a<=.03928?a/12.92:((a+.055)/1.055)**2.4};return .2126*o(t)+.7152*o(n)+.0722*o(s)}function _t(e,t="#18181b",n="#ffffff"){return bs(e)>.45?t:n}function ws(e,t){const{r:n,g:s,b:o}=en(e),r=Math.max(0,Math.min(1,t));return ys({r:n+(255-n)*r,g:s+(255-s)*r,b:o+(255-o)*r})}function Oe(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const K=(e,t,n,s,o,r,a,c,d,m,f)=>({50:e,100:t,200:n,300:s,400:o,500:r,600:a,700:c,800:d,900:m,950:f}),v={zinc:K("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:K("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:K("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:K("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:K("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:K("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:K("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:K("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:K("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:K("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:K("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"},Ss={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea"},xs={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed"};function vs(){return{keyword:v.purple[300],string:v.green[300],number:v.orange[300],boolean:v.orange[300],comment:v.zinc[500],function:v.blue[300],variable:v.zinc[200],type:v.teal[300],class:v.amber[300],constant:v.orange[300],operator:v.zinc[400],punctuation:v.zinc[400],tag:v.red[300],attribute:v.amber[300],property:v.blue[200],regexp:v.teal[300],escape:v.orange[200],heading:v.blue[300],link:v.blue[400],deleted:v.red[400],inserted:v.green[400]}}function ks(){return{keyword:v.purple[700],string:v.green[700],number:v.orange[700],boolean:v.orange[700],comment:v.zinc[500],function:v.blue[700],variable:v.zinc[800],type:v.teal[700],class:v.amber[700],constant:v.orange[700],operator:v.zinc[600],punctuation:v.zinc[600],tag:v.red[700],attribute:v.amber[700],property:v.blue[700],regexp:v.teal[700],escape:v.orange[700],heading:v.blue[700],link:v.blue[600],deleted:v.red[700],inserted:v.green[700]}}function tn(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:v.zinc[900],red:v.red[500],green:v.green[500],yellow:v.amber[500],blue:v.blue[500],magenta:v.purple[500],cyan:v.teal[500],white:v.zinc[300],brightBlack:v.zinc[600],brightRed:v.red[400],brightGreen:v.green[400],brightYellow:v.amber[400],brightBlue:v.blue[400],brightMagenta:v.purple[400],brightCyan:v.teal[400],brightWhite:v.zinc[50]}}function je(e){const t=v.zinc[50],n=_t(e.accent);return{surface0:e.surface0,surface1:e.surface1,surface2:e.surface2,surface3:e.surface3,surface4:e.surface4,surfaceDiffEmpty:e.surfaceDiffEmpty,surfaceSidebar:e.surfaceSidebar,surfaceSidebarHover:e.surfaceSidebarHover,surfaceWorkspace:e.surface1,foreground:t,foregroundMuted:e.mutedForeground,accent:e.accent,accentBright:e.accentBright,accentForeground:n,destructive:e.destructive,destructiveForeground:v.white,success:e.accent,successForeground:v.white,border:e.border,borderAccent:e.borderAccent,...Ss,diffAddition:v.green[400],diffDeletion:v.red[500],scrollbarHandle:e.scrollbarHandle,background:e.surface0,popover:e.surface2,popoverForeground:t,primary:e.accent,secondary:e.surface2,muted:e.surface2,mutedForeground:e.mutedForeground,input:e.surface2,ring:e.accent,palette:v,syntax:vs(),terminal:tn(e.surface0,t,e.accent)}}function Is(){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:_t(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...xs,diffAddition:"#15803d",diffDeletion:"#b91c1c",scrollbarHandle:"#3f3f46",background:"#ffffff",popover:"#ffffff",popoverForeground:e,primary:t,secondary:"#f4f4f5",muted:"#f4f4f5",mutedForeground:"#71717a",input:"#f4f4f5",ring:t,palette:v,syntax:ks(),terminal:{...tn("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const js={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},nn=["light","dark","zinc","midnight","claude","ghostty"];function Cs(e){if(e==="light")return Is();switch(e){case"dark":return je({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 je({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 je({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 je({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 je({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 sn={};for(const e of nn){const t=e==="light"?"light":"dark";sn[e]={name:e,colorScheme:t,colors:Cs(e),swatch:js[e]}}const Es=sn,Ts={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},on={xs:12,code:12,sm:14,base:16,lg:18,xl:20,"2xl":22,"3xl":26,"4xl":34},Ns={normal:"400",medium:"500",semibold:"600",bold:"700"},Rs={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},qs={0:0,1:1,2:2},Ms={0:0,50:.5,100:1},Bs={xs:12,sm:14,md:16,lg:20},As={diff:22},rn='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',an='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function $s(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 cn(e){const t=Es[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:Ts,fontSize:{...on},fontFamily:{ui:rn,mono:an},lineHeight:{...As},iconSize:Bs,fontWeight:Ns,borderRadius:Rs,borderWidth:qs,opacity:Ms,shadow:$s(t.colorScheme),swatch:t.swatch}}const Ds=16,Os=10,Ps=24;function Fs(e,t){const n=t.themeName??e.name,s=cn(n),o=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:rn,r=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:an;let a={...s.fontSize};if(t.fontSize!=null){const d=Math.max(Os,Math.min(Ps,t.fontSize))/Ds,m=["xs","code","sm","base","lg","xl","2xl","3xl","4xl"];for(const f of m){const S=on[f];a[f]=Math.round(S*d)}}return{...s,fontSize:a,fontFamily:{ui:o,mono:r}}}function zs(e){return cn(e)}const Ls="dark";function Hs(e){const t={};Ws(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}`]=`${s}px`;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 Ws(e,t){const{palette:n,syntax:s,terminal:o,...r}=e;for(const[a,c]of Object.entries(r))typeof c=="string"&&(t[`--pi-color-${a}`]=c);s&&Us(s,t),o&&(t["--pi-terminal-bg"]=o.background,t["--pi-terminal-fg"]=o.foreground)}function Us(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${Ks(n)}`]=s)}function Ks(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Vs(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 Gs(e){const t=Hs(e);Vs(t)}const Ce=l().min(1,"Asset path must not be empty"),Js=u({accent:l().refine(Oe,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(Oe,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(Oe,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(Oe,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),Xs=u({logoLight:Ce,logoDark:Ce,logoMark:Ce.optional(),icon:Ce,splash:Ce.optional()}),Ys=u({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),Qs=u({copyright:l().optional(),companyName:l().optional()}).optional();u({productName:l().min(1,"productName is required"),shortName:l().optional(),tagline:l().optional(),colors:Js,assets:Xs,links:Ys,legal:Qs});function Zs(e){const t=e.accent,n=e.accentBright??ws(t,.35),s=e.accentForeground??_t(t),o=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:o}}function eo(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 vt="pi-studio-appearance";function to(e,t){let n=c(e),s=null;function o(f){return f==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":f}function r(f,S){const h=o(f),x=zs(h);let g=Fs(x,{...S,themeName:h});if(t!=null&&t.colors){const _=Zs(t.colors);g=eo(g,_)}return g}function a(){const f=JSON.stringify({mode:n.mode,settings:n.settings});e.set(vt,f)}function c(f){const S=f.get(vt);let h=Ls,x={};if(S)try{const _=JSON.parse(S);_.mode&&(nn.includes(_.mode)||_.mode==="system")&&(h=_.mode),_.settings&&typeof _.settings=="object"&&(x=_.settings)}catch{}const g=r(h,x);return{mode:h,settings:x,resolvedTheme:g}}function d(){n={...n,resolvedTheme:r(n.mode,n.settings)},a()}const m={getState(){return n},setMode(f){n={...n,mode:f},d(),m.apply()},updateSettings(f){n={...n,settings:{...n.settings,...f}},d(),m.apply()},apply(){Gs(n.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const f=window.matchMedia("(prefers-color-scheme: dark)"),S=()=>{n.mode==="system"&&(d(),m.apply())};return f.addEventListener("change",S),s=()=>f.removeEventListener("change",S),s}};return m}function no({store:e,brandConfig:t,children:n}){const s=w.useRef(null);return s.current||(s.current=to(e,t),s.current.apply()),w.useEffect(()=>s.current.listen(),[]),i.jsx(i.Fragment,{children:n})}const so={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 oo({children:e}){return i.jsx(no,{store:so,children:i.jsx(Dn,{client:gs,children:e})})}const ro="_btn_1chbg_4",ao="_secondary_1chbg_44",io="_outline_1chbg_53",co="_ghost_1chbg_62",lo="_destructive_1chbg_72",uo="_iconOnly_1chbg_82",po="_loadingSpinner_1chbg_89",fo="_piSpin_1chbg_1",Pe={btn:ro,default:"_default_1chbg_35",secondary:ao,outline:io,ghost:co,destructive:lo,iconOnly:uo,loadingSpinner:po,piSpin:fo},kt={xs:28,sm:32,md:36,lg:40},ho={xs:12,sm:14,md:16,lg:20},It={xs:8,sm:10,md:12,lg:16},mo={xs:12,sm:13,md:14,lg:15};function go(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}function O({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:o,trailing:r,iconOnly:a=!1,children:c,style:d,className:m,...f}){const{opacity:S}=go({disabled:s??!1,loading:n}),h=s||n,x=ho[t];return i.jsxs("button",{className:$(Pe.btn,Pe[e],a&&Pe.iconOnly,m),disabled:h,"aria-busy":n||void 0,style:{minHeight:kt[t],paddingLeft:a?void 0:It[t],paddingRight:a?void 0:It[t],fontSize:mo[t],opacity:S,...a?{width:kt[t]}:{},...d},...f,children:[n?i.jsx(Fn,{className:Pe.loadingSpinner,size:x,"aria-hidden":!0}):o?i.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o}):null,c,r&&!n&&i.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r})]})}const _o="_input_a7qyq_3",yo="_textarea_a7qyq_32",dt={input:_o,textarea:yo},Ke=w.forwardRef(function({className:t,...n},s){return i.jsx("input",{ref:s,className:$(dt.input,t),...n})}),wu=w.forwardRef(function({className:t,...n},s){return i.jsx("textarea",{ref:s,className:$(dt.input,dt.textarea,t),...n})}),ln=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const Me=Ht([q(),ln]),bo=fe(["mobile","browser","cli","mcp"]),wo=u({type:b("hello"),clientId:l(),clientType:bo,protocolVersion:q(),appVersion:l().optional(),capabilities:ne(l(),B()).optional()}),So=u({status:b("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),capabilities:ne(l(),D()),features:ne(l(),D())}),xo=u({type:b("status"),payload:So}),vo=u({type:b("ping"),requestId:l(),clientSentAt:Me.optional()}),ko=u({type:b("pong"),requestId:l(),clientSentAt:Me.optional(),serverReceivedAt:Me,serverSentAt:Me}),dn=fe(["initializing","idle","running","error","closed"]),Qe=u({mimeType:l().optional(),data:l().optional()}).passthrough(),Io=u({prs:P(D()).optional(),issues:P(D()).optional()}).passthrough(),jo=u({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:ne(l(),D()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:B().optional(),webSearch:B().optional(),extra:u({pi:D().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:ne(l(),D()).optional()}),Co=u({type:b("create_agent_request"),requestId:l(),config:jo,env:ne(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:ne(l(),D()).optional(),images:P(Qe).optional(),attachments:Io.optional(),git:D().optional(),worktree:D().optional(),autoArchive:B().optional(),labels:ne(l(),l()).default({})}),Eo=u({type:b("create_agent_response"),requestId:l(),payload:u({agentId:l()}).passthrough()}),To=u({type:b("agent_update"),agentId:l(),status:dn.optional(),title:l().nullable().optional(),labels:ne(l(),l()).optional()}),No=u({type:b("agent_status"),agentId:l(),status:dn}),Ro=u({type:b("agent_list"),agents:P(u({id:l()}).passthrough())}),qo=u({type:b("agent_deleted"),agentId:l()}),Mo=u({type:b("agent_archived"),agentId:l(),archivedAt:ln.optional()}),un=Ve("kind",[u({kind:b("shell"),command:l().optional(),output:l().optional()}),u({kind:b("read"),path:l().optional(),output:l().optional()}),u({kind:b("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),u({kind:b("write"),path:l().optional(),output:l().optional()}),u({kind:b("search"),query:l().optional(),output:l().optional()}),u({kind:b("fetch"),url:l().optional(),output:l().optional()}),u({kind:b("task"),description:l().optional(),output:l().optional()})]),Bo=Ve("kind",[u({kind:b("user_message"),messageId:l().optional(),text:l().optional(),images:P(Qe).optional()}),u({kind:b("assistant_message"),messageId:l().optional(),text:l().optional()}),u({kind:b("reasoning"),text:l().optional()}),u({kind:b("tool_call"),callId:l().optional(),tool:un,status:l().optional()}),u({kind:b("turn_started"),turnId:l().optional()}),u({kind:b("turn_completed"),turnId:l().optional()}),u({kind:b("turn_failed"),turnId:l().optional(),error:l().optional()}),u({kind:b("turn_canceled"),turnId:l().optional()}),u({kind:b("error"),message:l().optional()}),u({kind:b("queue_update"),steering:P(l()).optional(),followUp:P(l()).optional()})]),Ao=u({type:b("agent_stream"),agentId:l(),seq:q().optional(),timestamp:Me.optional(),event:Bo}),$o=fe(["before","after"]),Do=u({start:q(),end:q()}),Oo=u({type:b("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:$o,limit:q().optional()}),Po=u({type:b("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:P(D()),seqStart:q(),seqEnd:q(),sourceSeqRanges:P(Do),collapsed:B(),hasNewer:B(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),Fo=u({type:b("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:un.optional(),action:D().optional(),responses:P(l()).optional()}),zo=u({type:b("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),Lo=u({type:b("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:D()}),Ho=u({type:b("agent.permission.respond.response"),requestId:l(),payload:u({resolved:B()}).passthrough()}),Wo=u({type:b("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:D()}),pn=fe(["conversation","files","both"]),Uo=u({type:b("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:pn}).passthrough(),Ko=u({type:b("agent.rewind.response"),requestId:l(),payload:u({agentId:l(),messageId:l(),mode:pn,truncatedAt:l().optional()}).passthrough()}).passthrough(),Vo=u({input:q().optional(),output:q().optional(),cacheRead:q().optional(),cacheWrite:q().optional(),total:q().optional()}).passthrough(),Go=u({tokens:q().nullable().optional(),contextWindow:q().optional(),percent:q().nullable().optional()}).passthrough(),Jo=u({type:b("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),Xo=u({type:b("agent_session_stats_response"),requestId:l(),payload:u({sessionId:l().optional(),sessionFile:l().optional(),userMessages:q().optional(),assistantMessages:q().optional(),toolCalls:q().optional(),toolResults:q().optional(),totalMessages:q().optional(),tokens:Vo.optional(),cost:q().optional(),contextUsage:Go.optional(),model:l().optional()}).passthrough()}).passthrough(),Yo=u({type:b("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),Qo=u({type:b("agent_compact_response"),requestId:l(),payload:u({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:q().optional(),details:D().optional()}).passthrough()}).passthrough(),Zo=u({type:b("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),er=u({type:b("agent_new_session_response"),requestId:l(),payload:u({cancelled:B()}).passthrough()}).passthrough(),tr=u({type:b("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),nr=u({type:b("agent_switch_session_response"),requestId:l(),payload:u({cancelled:B()}).passthrough()}).passthrough(),sr=u({type:b("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),or=u({type:b("agent_fork_response"),requestId:l(),payload:u({text:l(),cancelled:B()}).passthrough()}).passthrough(),rr=u({type:b("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),ar=u({type:b("agent_fork_messages_response"),requestId:l(),payload:u({messages:P(u({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),ir=u({type:b("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),cr=u({type:b("agent_clone_response"),requestId:l(),payload:u({cancelled:B()}).passthrough()}).passthrough(),lr=u({type:b("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),dr=u({type:b("agent_set_session_name_response"),requestId:l(),payload:u({}).passthrough().optional()}).passthrough(),ur=u({type:b("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),pr=u({type:b("agent_export_html_response"),requestId:l(),payload:u({path:l()}).passthrough()}).passthrough(),fr=u({type:b("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),hr=u({type:b("agent_set_model_response"),requestId:l(),payload:u({}).passthrough()}).passthrough(),mr=u({type:b("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),gr=u({type:b("agent_cycle_model_response"),requestId:l(),payload:u({model:D().nullable().optional(),thinkingLevel:l().optional(),isScoped:B().optional()}).passthrough()}).passthrough(),_r=u({type:b("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),yr=u({type:b("agent_last_assistant_text_response"),requestId:l(),payload:u({text:l().nullable()}).passthrough()}).passthrough(),br=u({type:b("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:P(Qe).optional(),clientMessageId:l().optional()}).passthrough(),wr=u({type:b("steer_agent_response"),requestId:l(),agentId:l(),ok:B()}).passthrough(),Sr=u({type:b("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:P(Qe).optional(),clientMessageId:l().optional()}).passthrough(),xr=u({type:b("follow_up_agent_response"),requestId:l(),agentId:l(),ok:B()}).passthrough(),vr=u({name:l(),id:l().optional(),description:l().optional(),source:fe(["extension","prompt","skill"]).optional(),scope:fe(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),kr=u({type:b("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),Ir=u({type:b("agent_list_commands_response"),requestId:l(),payload:u({commands:P(vr)}).passthrough()}).passthrough(),jr=u({type:b("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),Cr=Ve("type",[Co,Eo,To,No,Ro,qo,Mo,Ao,Oo,Po,Fo,zo,Lo,Ho,Wo,Uo,Ko,Jo,Xo,Yo,Qo,Zo,er,tr,nr,sr,or,rr,ar,ir,cr,lr,dr,ur,pr,fr,hr,mr,gr,_r,yr,br,wr,Sr,xr,kr,Ir,jr]),Er=u({type:l()}).passthrough(),Tr=u({type:b("session"),message:Ht([Cr,Er])});Ve("type",[wo,xo,vo,ko,Tr]);const ge={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},Nr=Object.fromEntries(Object.entries(ge).map(([e,t])=>[t,e])),fn=u({rows:q().int().nonnegative(),cols:q().int().nonnegative()});class Ne extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const Rr=new TextEncoder,qr=new TextDecoder;function Mr(e){if(!Number.isInteger(e)||e<0||e>255)throw new Ne(`slot must be an integer 0–255, got ${e}`)}function Ee(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function Su(e){switch(Mr(e.slot),e.opcode){case"Output":return Ee(ge.Output,e.slot,e.data);case"Input":return Ee(ge.Input,e.slot,e.data);case"Snapshot":return Ee(ge.Snapshot,e.slot,e.data);case"Restore":return Ee(ge.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(fn.parse({rows:e.rows,cols:e.cols}));return Ee(ge.Resize,e.slot,Rr.encode(t))}}}function Br(e){if(e.length<2)throw new Ne(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=Nr[t];if(!s)throw new Ne(`unknown terminal opcode 0x${t.toString(16)}`);const o=e.subarray(2);if(s==="Resize"){let r;try{r=JSON.parse(qr.decode(o))}catch{throw new Ne("resize payload is not valid JSON")}const a=fn.safeParse(r);if(!a.success)throw new Ne("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:a.data.rows,cols:a.data.cols}}return{opcode:s,slot:n,data:o.slice()}}const ye={Begin:16,Chunk:17,End:18,Error:19},Ar=Object.fromEntries(Object.entries(ye).map(([e,t])=>[t,e])),hn=u({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:q().int().nonnegative().optional()});class Re extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const jt=new TextEncoder,Ct=new TextDecoder;function $r(e){if(!Number.isInteger(e)||e<0||e>255)throw new Re(`stream must be an integer 0–255, got ${e}`)}function Fe(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function nt(e){switch($r(e.stream),e.opcode){case"Begin":return Fe(ye.Begin,e.stream,jt.encode(JSON.stringify(hn.parse(e.meta))));case"Chunk":return Fe(ye.Chunk,e.stream,e.data);case"End":return Fe(ye.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return Fe(ye.Error,e.stream,jt.encode(e.message))}}function Dr(e){if(e.length<2)throw new Re(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=Ar[t];if(!s)throw new Re(`unknown file-transfer opcode 0x${t.toString(16)}`);const o=e.subarray(2);switch(s){case"Begin":{let r;try{r=JSON.parse(Ct.decode(o))}catch{throw new Re("begin payload is not valid JSON")}const a=hn.safeParse(r);if(!a.success)throw new Re("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:a.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:Ct.decode(o)}}}function Or(e){try{return Dr(e)}catch{return null}}const Pr=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),Fr=fe(["safe","moderate","dangerous","planning"]),zr=u({supportsStreaming:B(),supportsSessionPersistence:B(),supportsDynamicModes:B(),supportsMcpServers:B(),supportsReasoningStream:B(),supportsToolInvocations:B(),supportsRewindConversation:B().optional(),supportsRewindFiles:B().optional(),supportsRewindBoth:B().optional(),supportsSteering:B().optional()}).passthrough(),Lr=u({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:Fr});u({id:Pr,label:l(),description:l().optional(),extends:l().optional(),modes:P(Lr),capabilities:zr});function ut(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function mn(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 a=e??(()=>new WebSocket(s));try{t=e?a(s):new WebSocket(s)}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,ut(c.reason))},t.onmessage=c=>{var m,f,S,h;const{data:d}=c;d instanceof ArrayBuffer||d instanceof Uint8Array?(m=n.onMessage)==null||m.call(n,d):typeof d=="string"?(f=n.onMessage)==null||f.call(n,d):typeof Blob<"u"&&d instanceof Blob?(S=n.onMessage)==null||S.call(n,d):Buffer.isBuffer(d)&&((h=n.onMessage)==null||h.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 qe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function gn(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,a=o?e[n+1]:0,c=r?e[n+2]:0;t+=qe[s>>2],t+=qe[(s&3)<<4|a>>4],t+=o?qe[(a&15)<<2|c>>6]:"=",t+=r?qe[c&63]:"="}return t}function _n(e){const t=e.replace(/=+$/,""),n=[];let s=0,o=0;for(const r of t){const a=qe.indexOf(r);if(a===-1)throw new Error(`invalid base64 character: ${JSON.stringify(r)}`);s=s<<6|a,o+=6,o>=8&&(o-=8,n.push(s>>o&255))}return new Uint8Array(n)}function Hr(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const We=24;function yn(e,t){const n=be.randomBytes(We),s=be.box.after(e,n,t),o=new Uint8Array(n.length+s.length);return o.set(n,0),o.set(s,n.length),gn(o)}function bn(e,t){let n;try{n=_n(e)}catch{return null}if(n.length<We)return null;const s=n.slice(0,We),o=n.slice(We);return be.box.open.after(o,s,t)}function Wr(e,t){return yn(new TextEncoder().encode(e),t)}function Ur(e,t){const n=bn(e,t);return n?new TextDecoder().decode(n):null}function Kr(e,t,n,s,o,r){let a=!1;return n.onClose(c=>{var d;a=!0,(d=s.onClose)==null||d.call(s,c)}),{handleAppFrame(c){var f,S;if(a)return;const d=o();if(!r()||!d)return;const m=Ur(c.frame,d);if(m===null){(f=s.onAuthError)==null||f.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(S=s.onMessage)==null||S.call(s,m)},handleBinaryFrame(c){var f,S;if(a)return;const d=o();if(!r()||!d)return;const m=bn(c.frame,d);if(m===null){(f=s.onAuthError)==null||f.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(S=s.onBinaryMessage)==null||S.call(s,m)},send(c){if(a)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:Wr(c,d)}))},sendBinary(c){if(a)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:yn(c,d)}))},close(){a||(a=!0,n.close())}}}function Vr(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,o=e.events??{},r=be.box.keyPair(),a=be.box.before(s,r.secretKey);let c=!1;const d=Kr("client",n,t,o,()=>a,()=>c);return t.onMessage(m=>{var S;const f=Hr(m);if(f){if(f.type==="e2ee_ready"){if(c)return;c=!0,(S=o.onReady)==null||S.call(o);return}if(f.type==="e2ee_app"){d.handleAppFrame(f);return}f.type==="e2ee_bin"&&d.handleBinaryFrame(f)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:gn(r.publicKey)})),{role:"client",attachment:n,get ready(){return c},send:d.send,sendBinary:d.sendBinary,close:d.close}}const Gr=16;function Jr(e){const t=be.hash(e);let n="";for(let s=0;s<Gr;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Xr(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function Yr(e){let t=null,n=null;const s=e.sessionId??Jr(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((a,c)=>{const d=e.factory??(()=>new WebSocket(r));try{t=e.factory?d(r):new WebSocket(r)}catch(h){c(h);return}const m=t,f=[],S=[];m.onopen=()=>{m.send(JSON.stringify({type:"relay_register",sessionId:s})),n=Vr({transport:{send:h=>m.send(h),onMessage:h=>f.push(h),onClose:h=>S.push(h),close:()=>m.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>a(),onMessage:h=>{var x;return(x=o.onMessage)==null?void 0:x.call(o,h)},onBinaryMessage:h=>{var x;return(x=o.onMessage)==null?void 0:x.call(o,h.slice().buffer)},onAuthError:h=>{var x;return(x=o.onError)==null?void 0:x.call(o,h)}}})},m.onerror=h=>{var x;m.readyState!==1&&c(h),(x=o.onError)==null||x.call(o,h)},m.onclose=h=>{var x;for(const g of S)g(ut(h.reason));(x=o.onClose)==null||x.call(o,h.code,ut(h.reason))},m.onmessage=h=>{const{data:x}=h;if(typeof x=="string")for(const g of f)g(x)}})},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,a=""){n==null||n.close(),n=null,t==null||t.close(r,a),t=null}};return o}function Qr(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=_n(o)}catch{return null}const a=s.get("relay");if(a){const d={endpoint:a,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 Zr=1;function pt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class ea extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class Et extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class ta{constructor(t){I(this,"transport");I(this,"rpcTimeoutMs");I(this,"now");I(this,"_state","idle");I(this,"_serverId",null);I(this,"_features",{});I(this,"_serverCapabilities",{});I(this,"pending",new Map);I(this,"sessionHandlers",new Set);I(this,"terminalHandlers",new Set);I(this,"fileTransferHandlers",new Set);I(this,"stateHandlers",new Set);I(this,"helloResolve",null);I(this,"helloReject",null);this.options=t,this.transport=t.transport??mn(),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??Zr,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??pt();return new Promise((r,a)=>{const c=s??this.rpcTimeoutMs,d=c>0?setTimeout(()=>{this.pending.delete(o),a(new Et(o))},c):null;this.pending.set(o,{resolve:m=>r(m),reject:a,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=pt();return new Promise((s,o)=>{const r=t>0?setTimeout(()=>{this.pending.delete(n),o(new Et(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(ye).includes(n)){const r=Or(t);if(!r)return;for(const a of this.fileTransferHandlers)a(r);return}const o=Br(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 ea(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 na{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 oa(this.daemon,t)}workspace(t){return new ra(this.daemon,t)}get providers(){return new aa(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 sa{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 oa{constructor(t,n){I(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new sa(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 aa{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 Tt=32*1024;function ia(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 ca{constructor(t){I(this,"pending",new Map);I(this,"nextStream",1);I(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((a,c)=>{this.pending.set(s,{chunks:[],meta:{},resolve:a,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=pt(),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(nt({opcode:"Begin",stream:r,meta:{transferId:s}}));for(let a=0;a<n.length;a+=Tt){const c=n.subarray(a,a+Tt);this.daemon.sendBinary(nt({opcode:"Chunk",stream:r,data:c}))}this.daemon.sendBinary(nt({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:ia(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 la{constructor(t,n={}){I(this,"initialDelayMs");I(this,"maxDelayMs");I(this,"factor");I(this,"jitter");I(this,"maxAttempts");I(this,"setTimer");I(this,"clearTimer");I(this,"random");I(this,"attempt",0);I(this,"timer",null);I(this,"active",!1);I(this,"detachState",null);I(this,"reconnectedHandlers",new Set);I(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 Nt(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 da(e){const t=Qr(e);return t!=null&&t.relay?{mode:"relay",url:Xr(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:Nt(t.host)}:{mode:"direct",url:Nt(e)}}function ua(){return"web-"+Math.random().toString(36).slice(2,10)}const j=he()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=da(n.url);let o;s.mode==="relay"?o=Yr({daemonPublicKey:s.daemonPublicKey}):n.password&&(o=mn(d=>new WebSocket(d,[`pi-studio.bearer.${n.password}`])));const r=new ta({url:s.url,clientId:n.clientId??ua(),clientType:"browser",capabilities:{},transport:o,rpcTimeoutMs:1800*1e3}),a=new na(r),c=new la(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:a,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(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}})),pa=100,fa=480,ha=220,ma=280;function ze(e){return Math.min(fa,Math.max(pa,e))}const k=he()(e=>({host:"ws://127.0.0.1:6767",password:"",cwd:"~",cwdPickerOpen:!1,sessionMenu:null,fileMenu:null,rightSidebarTab:"files",collapsedWorkspaces:new Set,leftSidebarCollapsed:!1,rightSidebarCollapsed:!1,leftSidebarWidth:ha,rightSidebarWidth:ma,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}),openFileMenu:(t,n,s,o)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:o}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:ze(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:ze(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:ze(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:ze(n.rightSidebarWidth+t)}))})),ga="_wrap_emmus_1",_a="_dot_emmus_8",ya="_open_emmus_15",ba="_connecting_emmus_18",wa="_closed_emmus_21",Sa="_idle_emmus_22",xa="_closing_emmus_23",st={wrap:ga,dot:_a,open:ya,connecting:ba,closed:wa,idle:Sa,closing:xa},va={idle:"disconnected",connecting:"connecting…",open:"connected",closing:"disconnecting…",closed:"disconnected"};function ka(){const e=j(n=>n.status),t=j(n=>n.error);return i.jsxs("span",{className:st.wrap,title:t??void 0,children:[i.jsx("span",{className:$(st.dot,st[e])}),va[e]??e]})}const Ia="_toolbar_i9hmh_1",ja="_brand_i9hmh_10",Ca="_version_i9hmh_16",Ea="_sep_i9hmh_22",Ta="_host_i9hmh_28",Na="_password_i9hmh_31",Ra="_sidebarToggles_i9hmh_34",de={toolbar:Ia,brand:ja,version:Ca,sep:Ea,host:Ta,password:Na,sidebarToggles:Ra};function qa(){const e=j(h=>h.status),t=j(h=>h.connect),n=j(h=>h.disconnect),s=k(h=>h.host),o=k(h=>h.setHost),r=k(h=>h.password),a=k(h=>h.setPassword),c=k(h=>h.leftSidebarCollapsed),d=k(h=>h.toggleLeftSidebar),m=k(h=>h.rightSidebarCollapsed),f=k(h=>h.toggleRightSidebar),S=e==="open"||e==="connecting";return i.jsxs("div",{className:de.toolbar,children:[i.jsx("span",{className:de.brand,children:"Pi-Studio"}),i.jsxs("span",{className:de.version,children:["v","0.0.44"]}),i.jsx(ka,{}),i.jsx("div",{className:de.sep}),i.jsx(Ke,{className:de.host,value:s,onChange:h=>o(h.target.value),placeholder:"host:port, ws://…/http://…, or a pasted pairing link",disabled:S}),i.jsx(Ke,{className:de.password,type:"password",value:r,onChange:h=>a(h.target.value),placeholder:"password",disabled:S}),e==="open"||e==="connecting"||e==="closing"?i.jsx(O,{size:"sm",onClick:()=>n(),children:"Disconnect"}):i.jsx(O,{size:"sm",variant:"default",onClick:()=>void t({url:s,password:r||void 0}),children:"Connect"}),i.jsxs("div",{className:de.sidebarToggles,children:[i.jsx(O,{size:"sm",variant:"ghost",iconOnly:!0,title:c?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>d(),children:c?i.jsx(zn,{size:16}):i.jsx(Ln,{size:16})}),i.jsx(O,{size:"sm",variant:"ghost",iconOnly:!0,title:m?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>f(),children:m?i.jsx(Hn,{size:16}):i.jsx(Wn,{size:16})})]})]})}const ft={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let Rt=0;function ae(){return Rt+=1,`row-${Rt}`}function Ma(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 Ba(e,t){return e??`${t.kind}:${Ma(t)}`}function Aa(e){return{...e,streamingAssistantIndex:null,streamingReasoningIndex:null}}function $a(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 a={kind:"assistant",id:ae(),text:"",streaming:!0};n.push(a),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 Da(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 a={kind:"reasoning",id:ae(),text:"",streaming:!0};n.push(a),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 Oa(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 Pa(e,t){var c;const n=Ba(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:Oa(d.tool,t.tool),status:s},{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null})}const a={kind:"tool",id:ae(),callId:n,tool:t.tool,status:s};return r.push(a),{...e,rows:r,toolIndexByCallId:{...e.toolIndexByCallId,[n]:r.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function yt(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 Fa(e,t){const n=yt(e),s={kind:"error",id:ae(),text:t||"turn failed"};return{...n,rows:[...n.rows,s]}}function za(e){const t=yt(e),n={kind:"system",id:ae(),text:"(canceled)"};return{...t,rows:[...t.rows,n]}}function La(e,t){const n={kind:"error",id:ae(),text:t||"error"};return{...e,rows:[...e.rows,n]}}function Ha(e,t,n,s){if(s!==void 0){const r=e.rows.findIndex(a=>a.kind==="user"&&a.pending&&a.clientMessageId===s);if(r!==-1){const a=e.rows.slice(),c=a[r];if((c==null?void 0:c.kind)==="user")return a[r]={...c,text:t,images:n,pending:!1},{...e,rows:a}}}const o={kind:"user",id:ae(),text:t,images:n,clientMessageId:s};return{...e,rows:[...e.rows,o]}}function Wa(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 wn(e,t){switch(t.kind){case"turn_started":return Aa(e);case"user_message":return Ha(e,t.text??"",t.images,t.messageId);case"assistant_message":return $a(e,t.text??"");case"reasoning":return Da(e,t.text??"");case"tool_call":return Pa(e,t);case"turn_completed":return yt(e);case"turn_failed":return Fa(e,t.error);case"turn_canceled":return za(e);case"error":return La(e,t.message);case"queue_update":return Wa(e,t.steering??[]);default:return e}}function Ua(e,t,n,s,o){const r={kind:"user",id:ae(),text:n,images:s,clientMessageId:t,pending:!0,queued:o};return{...e,rows:[...e.rows,r]}}function Ka(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 qt=0;function Va(){return qt+=1,`s-${Date.now().toString(36)}-${qt}`}const E=he()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=Va(),o={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:ft,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 a=r.sessions[n];return a?{sessions:{...r.sessions,[n]:{...a,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 a=wn(r.timeline,s);let c=r.title;if(s.kind==="turn_completed"&&c==="New chat"){const d=a.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:a,title:c}}}})},addOptimisticUserMessage(n,s,o,r,a){e(c=>{const d=c.sessions[n];if(!d)return c;const m=Ua(d.timeline,s,o,r,a);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 a=Ka(r.timeline,s);return{sessions:{...o.sessions,[n]:{...r,timeline:a}}}})},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:o,...r}=s.sessions,a=s.order.filter(d=>d!==n),c=s.activeSessionId===n?a[0]??null:s.activeSessionId;return{sessions:r,order:a,activeSessionId:c}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),Mt=new WeakMap;function Ga(e,t="pi"){const n=Mt.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(o=>({model:o.model,modelProvider:o.modelProvider})).catch(()=>({}));return Mt.set(e,s),s}const Ue=new Map;function Sn(e,t){const n=E.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=Ue.get(t);if(s)return s;const o=(async()=>{if(!n.model){const d=await Ga(e),m=E.getState().sessions[t];d.model&&m&&!m.model&&E.getState().setModel(t,d.model,d.modelProvider)}const r=E.getState().sessions[t];if(!r)throw new Error(`unknown session: ${t}`);const a={provider:"pi",cwd:r.cwd||"~"};r.model&&(a.model=r.model),r.modelProvider&&(a.modelProvider=r.modelProvider);const c=await e.createAgent({config:a,labels:{}});return E.getState().bindAgent(t,c.agentId),c.agentId})();return Ue.set(t,o),o.finally(()=>Ue.delete(t)),o}async function Ja(e,t){var o;const n=E.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((o=Ue.get(t))==null?void 0:o.catch(()=>{}));const s=E.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),E.getState().remove(t),!0):!1}function ot(e,t){return e.filter(n=>n.workspaceCwd===t)}function Le(e){(e==null?void 0:e.kind)==="chat"&&E.getState().activate(e.data.sessionId)}const T=he()((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}})),Le(n)},close(n){let s;e(o=>{const r=o.tabs.find(f=>f.id===n);if(!r)return o;const a=o.tabs.findIndex(f=>f.id===n),c=o.tabs.filter(f=>f.id!==n);let d=o.activeTabId;const m={...o.lastActiveTabByWorkspace};if(d===n){const f=ot(c,r.workspaceCwd),S=Math.min(a,f.length-1),h=f[S];d=(h==null?void 0:h.id)??null,s=h}if(m[r.workspaceCwd]===n){const f=ot(c,r.workspaceCwd)[0];f?m[r.workspaceCwd]=f.id:delete m[r.workspaceCwd]}return{tabs:c,activeTabId:d,lastActiveTabByWorkspace:m}}),Le(s)},activate(n){let s;e(o=>{const r=o.tabs.find(a=>a.id===n);return r?(s=r,{activeTabId:n,activeWorkspaceCwd:r.workspaceCwd,lastActiveTabByWorkspace:{...o.lastActiveTabByWorkspace,[r.workspaceCwd]:n}}):o}),Le(s)},switchWorkspace(n){let s;e(o=>{var m;const r=ot(o.tabs,n),a=o.lastActiveTabByWorkspace[n],d=a&&r.some(f=>f.id===a)?a:((m=r[0])==null?void 0:m.id)??null;return s=r.find(f=>f.id===d),{activeWorkspaceCwd:n,activeTabId:d,lastActiveTabByWorkspace:d?{...o.lastActiveTabByWorkspace,[n]:d}:o.lastActiveTabByWorkspace}}),Le(s)},reorder(n,s){e(o=>{const r=o.tabs.findIndex(m=>m.id===n),a=o.tabs.findIndex(m=>m.id===s);if(r===-1||a===-1||r===a)return o;const c=o.tabs.slice(),[d]=c.splice(r,1);return d?(c.splice(a,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)}))}})),W={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let rt=0;function xn(e){rt+=1,T.getState().open({id:W.terminal(`new-${rt}`),kind:"terminal",label:`Terminal ${rt}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e})}let at=0;function Xa(e){at+=1,T.getState().open({id:W.molecule(`new-${at}`),kind:"molecule",label:`Molecule ${at}`,closable:!0,data:{path:null},workspaceCwd:e})}function bt(e){const t=E.getState().createSession(e);T.getState().open({id:W.chat(t),kind:"chat",label:"New chat",closable:!0,data:{sessionId:t},workspaceCwd:e});const n=j.getState().client;n&&Sn(n,t).catch(()=>{})}function ht(e){const t=T.getState().tabs.find(s=>s.id===e);if(T.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;Ja(j.getState().client,n)}const re=he()(e=>({rootPath:"",expanded:new Set,expandedByRoot:new Map,draft: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}}),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})}));let _e=null;const mt=new Set;function Ya(e){return mt.add(e),()=>mt.delete(e)}async function Ze(e){var t;if(_e)return _e;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");_e="/home/"+((o==null?void 0:o.name)||"user")}catch{return"/tmp"}for(const n of mt)n(_e);return _e}function Qa(){return _e}async function Za(e,t){return t==="~"||t.startsWith("~/")?await Ze(e)+t.slice(1):t}function wt(){const e=j(o=>o.client),t=j(o=>o.status),[n,s]=w.useState(Qa());return w.useEffect(()=>Ya(s),[]),w.useEffect(()=>{!e||t!=="open"||n||Ze(e)},[e,t,n]),n}const ei="_dot_gfh8u_3",ti="_spinner_gfh8u_16",Bt={dot:ei,spinner:ti};function ni(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 At=8,si={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 oi({className:e,...t}){const n=ni(t);if(!n)return null;const s=t.status==="running"&&!t.requiresAttention,o=s?"var(--pi-color-accentBright, #a2b4d7)":si[n]??"currentColor";return i.jsx("span",{className:`${s?Bt.spinner:Bt.dot}${e?` ${e}`:""}`,style:s?{borderTopColor:o,borderRightColor:o}:{width:At,height:At,backgroundColor:o},role:"presentation"})}const ri={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function ai(e){return ri[e]??"idle"}const ii="_wrap_14der_1",ci="_header_14der_7",li="_list_14der_23",di="_item_14der_28",ui="_active_14der_37",pi="_title_14der_41",fi="_meta_14der_50",hi="_menuBtn_14der_58",mi="_workspaceGroup_14der_76",gi="_workspaceHeader_14der_79",_i="_workspaceChevron_14der_92",yi="_workspaceIcon_14der_103",bi="_workspaceLabel_14der_107",wi="_workspaceCount_14der_113",Si="_newSessionBtn_14der_118",xi="_workspaceSessions_14der_130",vi="_emptyState_14der_133",A={wrap:ii,header:ci,list:li,item:di,active:ui,title:pi,meta:fi,menuBtn:hi,workspaceGroup:mi,workspaceHeader:gi,workspaceChevron:_i,workspaceIcon:yi,workspaceLabel:bi,workspaceCount:wi,newSessionBtn:Si,workspaceSessions:xi,emptyState:vi};function ki({session:e,active:t,onSelect:n,onOpenMenu:s}){return i.jsxs("div",{className:$(A.item,t&&A.active),onClick:n,onContextMenu:o=>{o.preventDefault(),s(o.clientX,o.clientY)},children:[i.jsxs("div",{className:A.title,children:[i.jsx(oi,{status:ai(e.status),showInactive:!0}),i.jsx("span",{children:e.title})]}),i.jsxs("div",{className:A.meta,children:[e.cwd||"~"," · ",e.agentId?e.agentId.slice(0,8):"new"," ·"," ",e.userMessageCount," msgs"]}),i.jsx("button",{type:"button",className:A.menuBtn,title:"Actions",onClick:o=>{o.stopPropagation();const r=o.currentTarget.getBoundingClientRect();s(r.left,r.bottom)},children:i.jsx(Wt,{size:14})})]})}const Ii="_trigger_42hju_1",ji="_content_42hju_12",Ci="_item_42hju_21",Ei="_danger_42hju_38",Ti="_sep_42hju_41",Z={trigger:Ii,content:ji,item:Ci,danger:Ei,sep:Ti};function Ni(){const e=k(g=>g.sessionMenu),t=k(g=>g.closeSessionMenu),n=j(g=>g.client),s=w.useRef(null),[o,r]=w.useState(!1);w.useEffect(()=>{r(e!==null)},[e]);const a=E(g=>e?g.sessions[e.sessionId]:void 0);if(!e)return null;const c=!!(a!=null&&a.agentId)&&(a==null?void 0:a.status)==="running";function d(g){r(g),g||t()}function m(){if(!a)return;const g=window.prompt("Rename:",a.title);if(g!=null&&g.trim()){const _=g.trim();E.getState().setTitle(a.id,_),T.getState().updateLabel(W.chat(a.id),_),a.agentId&&(n==null||n.agent(a.agentId).update({title:_}).catch(()=>{}))}t()}function f(){a!=null&&a.agentId&&(n==null||n.agent(a.agentId).interrupt().catch(()=>{})),t()}function S(g){E.getState().remove(g),T.getState().close(W.chat(g))}async function h(){if(a){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!a.agentId){S(a.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(a.agentId).archive(),S(a.id)}catch(g){window.alert(`Failed to archive: ${g instanceof Error?g.message:String(g)}`)}}}async function x(){if(a){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!a.agentId){S(a.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(a.agentId).delete(),S(a.id)}catch(g){window.alert(`Failed to delete: ${g instanceof Error?g.message:String(g)}`)}}}return i.jsxs(Ge,{open:o,onOpenChange:d,modal:!1,children:[i.jsx(Je,{asChild:!0,children:i.jsx("button",{ref:s,type:"button",className:Z.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),i.jsx(Xe,{children:i.jsxs(Ye,{className:Z.content,align:"start",sideOffset:2,children:[i.jsx(H,{className:Z.item,onSelect:m,children:"Rename"}),i.jsx(H,{className:Z.item,disabled:!c,onSelect:f,children:"Stop agent"}),i.jsx(ct,{className:Z.sep}),i.jsx(H,{className:`${Z.item} ${Z.danger}`,onSelect:h,children:"Archive"}),i.jsx(H,{className:`${Z.item} ${Z.danger}`,onSelect:x,children:"Delete permanently"})]})})]})}function Ri({label:e,cwd:t,sessionCount:n,collapsed:s,onToggleCollapsed:o,onNewSession:r}){return i.jsxs("div",{className:A.workspaceHeader,onClick:o,title:t,children:[i.jsx("button",{type:"button",className:A.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:a=>{a.stopPropagation(),o()},children:s?i.jsx(gt,{size:13}):i.jsx(Ut,{size:13})}),i.jsx(Un,{size:13,className:$(A.workspaceIcon)}),i.jsx("span",{className:A.workspaceLabel,children:e}),i.jsx("span",{className:A.workspaceCount,children:n}),i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:"New conversation",className:A.newSessionBtn,onClick:a=>{a.stopPropagation(),r()},children:i.jsx(Kt,{size:13})})]})}function we(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function vn(e,t,n){const s=new Map;for(const o of e){const r=t[o];if(!r)continue;const a=we(r.cwd||"~",n),c=s.get(a);c?c.push(r):s.set(a,[r])}return Array.from(s,([o,r])=>({cwd:o,sessions:r}))}function qi(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function Mi(){const e=E(_=>_.order),t=E(_=>_.sessions),n=E(_=>_.activeSessionId),s=E(_=>_.activate),o=T(_=>_.open),r=j(_=>_.status),a=k(_=>_.openSessionMenu),c=k(_=>_.setCwd),d=k(_=>_.openCwdPicker),m=k(_=>_.collapsedWorkspaces),f=k(_=>_.toggleWorkspaceCollapsed),S=wt();function h(_){const y=we(_||"~",S);bt(y)}function x(_){s(_);const y=t[_],M=we((y==null?void 0:y.cwd)||"~",S);y!=null&&y.cwd&&c(y.cwd),o({id:W.chat(_),kind:"chat",label:(y==null?void 0:y.title)??"Chat",closable:!0,data:{sessionId:_},workspaceCwd:M})}const g=vn(e,t,S);return i.jsxs("div",{className:A.wrap,children:[i.jsxs("div",{className:A.header,children:[i.jsx("h3",{children:"Workspaces"}),i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:r!=="open"?"Connect to open a workspace":"Open a workspace folder",disabled:r!=="open",onClick:()=>d(),children:i.jsx(Vt,{size:14})})]}),i.jsxs("div",{className:A.list,children:[g.length===0&&i.jsx("div",{className:A.emptyState,children:r!=="open"?"Not connected":"No workspaces — open a folder to start"}),g.map(_=>{const y=m.has(_.cwd);return i.jsxs("div",{className:A.workspaceGroup,children:[i.jsx(Ri,{label:qi(_.cwd),cwd:_.cwd,sessionCount:_.sessions.length,collapsed:y,onToggleCollapsed:()=>f(_.cwd),onNewSession:()=>h(_.cwd)}),!y&&i.jsx("div",{className:A.workspaceSessions,children:_.sessions.map(M=>i.jsx(ki,{session:M,active:M.id===n,onSelect:()=>x(M.id),onOpenMenu:(J,C)=>a(M.id,J,C)},M.id))})]},_.cwd)})]}),i.jsx(Ni,{})]})}const Bi="_strip_8jveh_1",Ai="_tab_8jveh_10",$i="_active_8jveh_26",Di="_icon_8jveh_30",Oi="_label_8jveh_35",Pi="_close_8jveh_40",Fi="_newTab_8jveh_50",zi="_content_8jveh_73",Li="_item_8jveh_82",Hi="_itemIcon_8jveh_96",F={strip:Bi,tab:Ai,active:$i,icon:Di,label:Oi,close:Pi,newTab:Fi,content:zi,item:Li,itemIcon:Hi},Wi={chat:Xt,file:Vn,diff:Kn,terminal:Jt,molecule:Gt};function Ui({tab:e}){const t=T(f=>f.activeTabId),n=T(f=>f.activate),s=Wi[e.kind],{attributes:o,listeners:r,setNodeRef:a,transform:c,transition:d,isDragging:m}=hs({id:e.id});return i.jsxs("div",{ref:a,className:$(F.tab,e.id===t&&F.active),style:{transform:ms.Transform.toString(c),transition:d,opacity:m?.5:1},onClick:()=>n(e.id),onAuxClick:f=>{f.button===1&&e.closable&&ht(e.id)},title:e.label,...o,...r,children:[i.jsx("span",{className:F.icon,children:i.jsx(s,{size:13})}),i.jsx("span",{className:F.label,children:e.label}),e.closable&&i.jsx("span",{className:F.close,onClick:f=>{f.stopPropagation(),ht(e.id)},children:i.jsx(it,{size:12})})]})}function Ki({workspaceCwd:e}){const t=e??"~";return i.jsxs(Ge,{children:[i.jsx(Je,{asChild:!0,children:i.jsx("button",{type:"button",className:F.newTab,title:"New tab",disabled:!e,children:i.jsx(Kt,{size:14})})}),i.jsx(Xe,{children:i.jsxs(Ye,{className:F.content,align:"start",sideOffset:4,children:[i.jsxs(H,{className:F.item,onSelect:()=>bt(t),children:[i.jsx(Xt,{size:13,className:F.itemIcon}),"New chat"]}),i.jsxs(H,{className:F.item,onSelect:()=>xn(t),children:[i.jsx(Jt,{size:13,className:F.itemIcon}),"New terminal"]}),i.jsxs(H,{className:F.item,onSelect:()=>Xa(t),children:[i.jsx(Gt,{size:13,className:F.itemIcon}),"New molecule view"]})]})})]})}function Vi(){const e=T(a=>a.tabs),t=T(a=>a.activeWorkspaceCwd),n=T(a=>a.reorder),s=e.filter(a=>a.workspaceCwd===t),o=is(cs(fs,{activationConstraint:{distance:4}}));function r(a){const{active:c,over:d}=a;!d||c.id===d.id||n(String(c.id),String(d.id))}return i.jsxs("div",{className:F.strip,children:[i.jsx(ls,{sensors:o,collisionDetection:ds,onDragEnd:r,children:i.jsx(us,{items:s.map(a=>a.id),strategy:ps,children:s.map(a=>i.jsx(Ui,{tab:a},a.id))})}),i.jsx(Ki,{workspaceCwd:t})]})}const Gi="_spinner_1tgzp_3",Ji={spinner:Gi},Xi={xs:12,sm:16,md:20,lg:24},Yi={xs:1,sm:2,md:2,lg:3};function kn({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const o=typeof e=="number"?e:Xi[e],r=typeof e=="number"?2:Yi[e];return i.jsx("span",{className:`${Ji.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:o,height:o,borderWidth:r,color:t}})}const Qi=w.lazy(()=>se(()=>import("./ChatPanel-sp_aMtby.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])).then(e=>({default:e.ChatPanel}))),$t=w.lazy(()=>se(()=>import("./FilePanel-Dla22Uov.js"),__vite__mapDeps([16,1,7,6,5,2,11,12,17,18,3,13,14])).then(e=>({default:e.FilePanel}))),Zi=w.lazy(()=>se(()=>import("./TerminalPanel-BfOpqaj0.js"),__vite__mapDeps([19,1,20,21,7,6,5,2,3,13,14,22])).then(e=>({default:e.TerminalPanel}))),ec=w.lazy(()=>se(()=>import("./MoleculeViewerPanel-BTsiMK_L.js"),__vite__mapDeps([23,1,24,25,9,10,26,2,7,6,5,3,13,14,27])).then(e=>({default:e.MoleculeViewerPanel}))),tc={chat:Qi,file:$t,diff:$t,terminal:Zi,molecule:ec},nc="_area_z7u01_1",sc="_panel_z7u01_7",oc="_active_z7u01_14",rc="_empty_z7u01_17",ac="_emptyStack_z7u01_25",ic="_emptyTitle_z7u01_35",cc="_emptyHint_z7u01_39",ee={area:nc,panel:sc,active:oc,empty:rc,emptyStack:ac,emptyTitle:ic,emptyHint:cc};function lc(){const e=T(a=>a.tabs),t=T(a=>a.activeTabId),n=T(a=>a.activeWorkspaceCwd),s=j(a=>a.status),o=k(a=>a.openCwdPicker),r=e.some(a=>a.workspaceCwd===n);return n===null?i.jsx("div",{className:ee.area,children:i.jsxs("div",{className:ee.emptyStack,children:[i.jsx("div",{className:ee.emptyTitle,children:"No workspace open"}),i.jsx("div",{className:ee.emptyHint,children:"Open a project folder to start a chat."}),i.jsx(O,{size:"sm",variant:"secondary",leftIcon:i.jsx(Vt,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>o(),children:"Open Workspace"})]})}):r?i.jsx("div",{className:ee.area,children:e.map(a=>{const c=tc[a.kind];return i.jsx("div",{className:$(ee.panel,a.id===t&&ee.active),children:i.jsx(w.Suspense,{fallback:i.jsx(kn,{size:"md"}),children:i.jsx(c,{tab:a})})},a.id)})}):i.jsx("div",{className:ee.area,children:i.jsx("div",{className:ee.empty,children:"No open tabs in this workspace"})})}const xe={fileRead:e=>["file","read",e],fileDownload:e=>["file","download",e],fileText:e=>["file","text",e],fileDiff:(e,t,n)=>["file","diff",e,t,n],explorer:e=>["explorer",e],agentList:()=>["agents","list"],providerModels:e=>["providers","models",e],agentTimeline:e=>["agents","timeline",e],agentCommands:e=>["agents","commands",e]};function dc(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function uc(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function In(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:uc(o.map(dc))}}function pc(e,t=!0){const n=j(s=>s.client);return Lt({queryKey:xe.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return In(n,e)},enabled:!!n&&!!e&&t})}function fc(e){const t=j(o=>o.client),n=w.useMemo(()=>Array.from(e),[e]),s=On({queries:n.map(o=>({queryKey:xe.explorer(o),queryFn:()=>{if(!t)throw new Error("not connected");return In(t,o)},enabled:!!t&&!!o}))});return w.useMemo(()=>{const o=new Map;return n.forEach((r,a)=>{const c=s[a];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 hc(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function mc(e,t){const n=new Set,s=e.connection.onSessionMessage(o=>{const r=o;hc(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(a=>{const c=a;(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 gc(e){const t=j(a=>a.client),n=Se(),s=w.useRef(null),o=w.useRef(null),r=Array.from(e).toSorted().join("\0");w.useEffect(()=>{var a,c;t&&(o.current!==t&&((a=s.current)==null||a.dispose(),s.current=mc(t,d=>{n.invalidateQueries({queryKey:xe.explorer(d)})}),o.current=t),(c=s.current)==null||c.sync(new Set(r?r.split("\0"):[])))},[t,r,n]),w.useEffect(()=>()=>{var a;(a=s.current)==null||a.dispose(),s.current=null,o.current=null},[])}const Dt=new WeakMap;function Ot(e){let t=Dt.get(e);return t||(t=new ca(e),t.start(),Dt.set(e,t)),t}function _c(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 jn(){const e=j(o=>o.daemon),t=Se(),n=w.useCallback(async(o,r)=>{if(!e)throw new Error("not connected");const a=o?`${o}/${r.name}`:r.name,c=new Uint8Array(await r.arrayBuffer());await Ot(e).upload(a,c),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=w.useCallback(async o=>{if(!e)throw new Error("not connected");const r=await Ot(e).download(o);_c(r.bytes,r.fileName||o.split("/").pop()||"download",r.mimeType)},[e]);return{upload:n,saveToDisk:s}}const yc=w.lazy(()=>se(()=>import("./TextViewer-C76HR2kP.js"),__vite__mapDeps([28,1,29,2,7,6,5,30,26,17,18,3,13,14,31])).then(e=>({default:e.TextViewer}))),bc=w.lazy(()=>se(()=>import("./MarkdownFileViewer-Co5iIbJn.js"),__vite__mapDeps([32,1,29,2,7,6,5,30,4,8,17,18,3,13,14,33])).then(e=>({default:e.MarkdownFileViewer}))),wc=w.lazy(()=>se(()=>import("./ImageViewer-DA1VjBRz.js"),__vite__mapDeps([34,1,26,2,17,18,7,6,5,3,13,14,35])).then(e=>({default:e.ImageViewer}))),Sc=w.lazy(()=>se(()=>import("./VideoViewer-SeMcovVF.js"),__vite__mapDeps([36,1,26,2,17,18,7,6,5,3,13,14,37])).then(e=>({default:e.VideoViewer}))),xc=w.lazy(()=>se(()=>import("./BinaryFallbackViewer-Diavog5U.js"),__vite__mapDeps([38,1,26,2,3,7,6,5,13,14,39])).then(e=>({default:e.BinaryFallbackViewer}))),xu={text:yc,markdown:bc,image:wc,video:Sc,binary:xc},vc={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"},kc=[["image/","image"],["video/","video"]];function Cn(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const Ic={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},jc={poscar:!0,contcar:!0};function Cc(e){if(Ic[Cn(e)])return!0;const t=e.split("/").pop()??e;return!!jc[t.toLowerCase()]}function vu(e,t={}){const n=vc[Cn(e)];if(n)return n;const s=t.mimeHint??"";for(const[o,r]of kc)if(s.startsWith(o))return r;return t.isBinary?"binary":"text"}function Ec(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function En(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 a=o.get(t);if(!a||a.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(a.isError){const d=a.error instanceof Error?a.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:d});return}for(const d of((c=a.listing)==null?void 0:c.entries)??[])Tc(e,t,d,n,s,o,r)}function Tc(e,t,n,s,o,r,a){const c=Ec(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&&En(e,c,s+1,o,r,a)}function Nc(e,t,n,s){if(!e)return[];const o=[];return En(o,e,0,t,n,s),o}const Rc="_container_1098n_1",qc="_header_1098n_7",Mc="_uploadButton_1098n_14",Bc="_hiddenInput_1098n_33",Ac="_status_1098n_36",$c="_statusError_1098n_37",Dc="_rowAction_1098n_50",Oc="_item_1098n_65",Pc="_dropOverlay_1098n_68",Fc="_list_1098n_83",zc="_chevronSlot_1098n_102",Lc="_chevron_1098n_102",Hc="_chevronOpen_1098n_113",Wc="_icon_1098n_116",Uc="_name_1098n_123",Kc="_dirName_1098n_128",Vc="_statusRow_1098n_134",Gc="_statusRowError_1098n_145",Jc="_emptyState_1098n_148",Xc="_draftInput_1098n_154",N={container:Rc,header:qc,uploadButton:Mc,hiddenInput:Bc,status:Ac,statusError:$c,rowAction:Dc,item:Oc,dropOverlay:Pc,list:Fc,chevronSlot:zc,chevron:Lc,chevronOpen:Hc,icon:Wc,name:Uc,dirName:Kc,statusRow:Vc,statusRowError:Gc,emptyState:Jc,draftInput:Xc};function Yc({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[o,r]=w.useState("");return i.jsxs("div",{className:N.item,style:t,onClick:a=>a.stopPropagation(),children:[i.jsx("span",{className:N.chevronSlot}),i.jsx("span",{className:N.icon,children:e==="directory"?i.jsx(Be,{size:14}):i.jsx(Yt,{size:14})}),i.jsx("input",{className:N.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:o,onChange:a=>r(a.target.value),onKeyDown:a=>{if(a.key==="Enter"){a.preventDefault();const c=o.trim();c?n(c):s()}else a.key==="Escape"&&(a.preventDefault(),s())},onBlur:s})]})}const Qc=14;function Zc({row:e,onToggle:t,onOpenFile:n,onContextMenu:s,onSubmitDraft:o,onCancelDraft:r}){const a={paddingLeft:8+e.depth*Qc};if(e.kind==="loading")return i.jsx("div",{className:N.statusRow,style:a,children:"Loading…"});if(e.kind==="error")return i.jsx("div",{className:$(N.statusRow,N.statusRowError),style:a,children:e.message??"failed to load"});if(e.kind==="draft")return i.jsx(Yc,{draftKind:e.draftKind,indentStyle:a,onSubmit:d=>o(e.parentPath,d),onCancel:r});const c=e.kind==="directory";return i.jsxs("div",{className:N.item,style:a,onClick:()=>c?t(e.path):n(e.path),onContextMenu:d=>{d.preventDefault(),s(e.path,c,d.clientX,d.clientY)},children:[i.jsx("span",{className:N.chevronSlot,children:c&&i.jsx(gt,{size:12,className:$(N.chevron,e.expanded&&N.chevronOpen)})}),i.jsx("span",{className:N.icon,children:c?i.jsx(Be,{size:14}):i.jsx(Yt,{size:14})}),i.jsx("span",{className:c?N.dirName:N.name,children:e.name}),i.jsx("button",{type:"button",className:N.rowAction,title:"Actions",onClick:d=>{d.stopPropagation();const m=d.currentTarget.getBoundingClientRect();s(e.path,c,m.left,m.bottom)},children:i.jsx(Wt,{size:12})})]})}const el="_trigger_ngv1a_1",tl="_content_ngv1a_12",nl="_item_ngv1a_21",sl="_danger_ngv1a_34",ol="_sep_ngv1a_37",te={trigger:el,content:tl,item:nl,danger:sl,sep:ol};function rl(){const e=k(g=>g.fileMenu),t=k(g=>g.closeFileMenu),n=j(g=>g.client),s=re(g=>g.startDraft),{saveToDisk:o}=jn(),r=Se(),a=w.useRef(null),[c,d]=w.useState(!1);if(w.useEffect(()=>{d(e!==null)},[e]),!e)return null;const m=e.path.split("/").pop()||e.path;function f(g){d(g),g||t()}async function S(){if(e){t();try{await o(e.path)}catch(g){window.alert(`Failed to download: ${g instanceof Error?g.message:String(g)}`)}}}async function h(){if(!e)return;const g=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${g}? "${m}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{const _=await n.connection.request("file_delete_request",{path:e.path});if(!_.ok)throw new Error(_.error??"delete failed");await r.invalidateQueries({queryKey:["explorer"]})}catch(_){window.alert(`Failed to delete: ${_ instanceof Error?_.message:String(_)}`)}}function x(g){if(!e)return;const _=e.isDirectory?e.path:e.path.split("/").slice(0,-1).join("/")||"/";t(),s(_,g)}return i.jsxs(Ge,{open:c,onOpenChange:f,modal:!1,children:[i.jsx(Je,{asChild:!0,children:i.jsx("button",{ref:a,type:"button",className:te.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),i.jsx(Xe,{children:i.jsxs(Ye,{className:te.content,align:"start",sideOffset:2,children:[i.jsx(H,{className:te.item,onSelect:()=>x("file"),children:"New File"}),i.jsx(H,{className:te.item,onSelect:()=>x("directory"),children:"New Folder"}),i.jsx(ct,{className:te.sep}),!e.isDirectory&&i.jsxs(i.Fragment,{children:[i.jsx(H,{className:te.item,onSelect:S,children:"Download"}),i.jsx(ct,{className:te.sep})]}),i.jsx(H,{className:`${te.item} ${te.danger}`,onSelect:h,children:"Delete"})]})})]})}const al={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 Tn(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(al[r]??r??"Failed to create")}return o.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const il=24;function cl(){const e=j(p=>p.client),t=re(p=>p.rootPath),n=re(p=>p.expanded),s=re(p=>p.setRoot),o=re(p=>p.toggle),r=re(p=>p.draft),a=re(p=>p.startDraft),c=re(p=>p.cancelDraft),d=T(p=>p.activeWorkspaceCwd),m=T(p=>p.open),{upload:f}=jn(),S=k(p=>p.openFileMenu),h=Se(),[x,g]=w.useState(null),[_,y]=w.useState(!1),[M,J]=w.useState(null),C=w.useRef(null),Ae=w.useRef(null),ve=w.useRef(null);w.useEffect(()=>{if(!e)return;const p=d||"~";ve.current!==p&&(ve.current=p,Za(e,p).then(R=>s(R)))},[e,d,s]);const me=fc(n);gc(n);const ie=w.useMemo(()=>Nc(t,n,me,r),[t,n,me,r]),ce=Pn({count:ie.length,getScrollElement:()=>Ae.current,estimateSize:()=>il,overscan:12,getItemKey:p=>{var R;return((R=ie[p])==null?void 0:R.path)??p}});function le(p){if(Cc(p)){m({id:W.molecule(p),kind:"molecule",label:p.split("/").pop()||p,closable:!0,data:{path:p},workspaceCwd:d||"~"});return}m({id:W.file(p),kind:"file",label:p.split("/").pop()||p,closable:!0,data:{path:p},workspaceCwd:d||"~"})}async function et(p,R){const z=(r==null?void 0:r.kind)??"file";if(c(),!!e)try{const U=await Tn(e,p,R,z);await h.invalidateQueries({queryKey:xe.explorer(p)}),g({text:`Created ${U}`,error:!1}),z==="file"&&le(U)}catch(U){g({text:U instanceof Error?U.message:"Failed to create",error:!0})}}async function ke(p,R){var De;if(!R.length||!p)return;const z=(De=me.get(p))==null?void 0:De.listing,U=new Set((z==null?void 0:z.entries.map(X=>X.name))??[]),Ie=R.filter(X=>U.has(X.name));if(Ie.length>0){const X=Ie.map(qn=>qn.name).join(", ");if(!window.confirm(`Overwrite ${Ie.length>1?"these files":"this file"}? ${X}`))return}g({text:`Uploading ${R.length} file${R.length>1?"s":""}…`,error:!1});try{for(const X of R)await f(p,X);g({text:`Uploaded ${R.length} file${R.length>1?"s":""}`,error:!1})}catch(X){g({text:`Upload failed: ${X instanceof Error?X.message:"unknown"}`,error:!0})}}function $e(p){p.preventDefault(),y(!1);const R=M??t;J(null);const z=Array.from(p.dataTransfer.files);ke(R,z)}function tt(p){p.dataTransfer.types.includes("Files")&&(p.preventDefault(),y(!0))}return e?i.jsxs("div",{className:N.container,onDragOver:tt,onDragLeave:()=>y(!1),onDrop:$e,children:[i.jsxs("div",{className:N.header,children:[i.jsx("button",{type:"button",className:N.uploadButton,onClick:()=>a(t,"file"),disabled:!t,title:"New file in workspace root",children:i.jsx(Gn,{size:12})}),i.jsx("button",{type:"button",className:N.uploadButton,onClick:()=>a(t,"directory"),disabled:!t,title:"New folder in workspace root",children:i.jsx(Qt,{size:12})}),i.jsxs("button",{type:"button",className:N.uploadButton,onClick:()=>{var p;return(p=C.current)==null?void 0:p.click()},disabled:!t,title:"Upload files to the workspace root",children:[i.jsx(Jn,{size:12}),i.jsx("span",{children:"Upload"})]}),i.jsx("input",{ref:C,type:"file",multiple:!0,className:N.hiddenInput,onChange:p=>{ke(t,Array.from(p.target.files??[])),p.target.value=""}})]}),x&&i.jsx("div",{className:x.error?N.statusError:N.status,children:x.text}),i.jsxs("div",{className:N.list,ref:Ae,children:[ie.length===0&&i.jsx("div",{className:N.emptyState,children:"No files loaded"}),i.jsx("div",{style:{position:"relative",height:ce.getTotalSize()},children:ce.getVirtualItems().map(p=>{const R=ie[p.index];return R?i.jsx("div",{"data-index":p.index,style:{position:"absolute",top:0,left:0,width:"100%",height:p.size,transform:`translateY(${p.start}px)`},onDragEnter:()=>{R.kind==="directory"&&J(R.path)},children:i.jsx(Zc,{row:R,onToggle:o,onOpenFile:le,onContextMenu:(z,U,Ie,De)=>S(z,U,Ie,De),onSubmitDraft:(z,U)=>void et(z,U),onCancelDraft:c})},p.key):null})})]}),_&&i.jsx("div",{className:N.dropOverlay,children:"Drop to upload"}),i.jsx(rl,{})]}):i.jsx("div",{className:N.emptyState,children:"Connect to browse files"})}const Pt={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},Q=he()(e=>({subscribedCwd:null,changes:[],...Pt,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],...Pt});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})}})),ll="_list_1pgby_1",dl="_summary_1pgby_4",ul="_item_1pgby_11",pl="_badge_1pgby_23",fl="_added_1pgby_30",hl="_modified_1pgby_34",ml="_deleted_1pgby_38",gl="_name_1pgby_42",_l="_emptyState_1pgby_47",ue={list:ll,summary:dl,item:ul,badge:pl,added:fl,modified:hl,deleted:ml,name:gl,emptyState:_l},yl={added:"A",modified:"M",deleted:"D"};function bl(){const t=T(r=>r.activeWorkspaceCwd)||"~",n=Q(r=>r.changes),s=T(r=>r.open);function o(r,a){s({id:W.diff(r,a),kind:"diff",label:r.split("/").pop()||r,closable:!0,data:{path:r,staged:a},workspaceCwd:t})}return n.length===0?i.jsx("div",{className:ue.emptyState,children:"No changes detected"}):i.jsxs("div",{className:ue.list,children:[i.jsxs("div",{className:ue.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((r,a)=>i.jsxs("div",{className:ue.item,onClick:()=>o(r.path,r.staged),children:[i.jsx("span",{className:$(ue.badge,ue[r.status]),children:yl[r.status]}),i.jsx("span",{className:ue.name,children:r.path})]},`${r.path}-${r.staged}-${a}`))]})}const wl="_wrap_r37ok_1",Sl="_tabBar_r37ok_7",xl="_tabBtn_r37ok_13",vl="_active_r37ok_26",kl="_refreshBtn_r37ok_30",Il="_content_r37ok_34",oe={wrap:wl,tabBar:Sl,tabBtn:xl,active:vl,refreshBtn:kl,content:Il};function jl(){const e=k(c=>c.rightSidebarTab),t=k(c=>c.setRightSidebarTab),s=T(c=>c.activeWorkspaceCwd)||"~",o=j(c=>c.client),r=Se();function a(){r.invalidateQueries({queryKey:["explorer"]}),o&&s&&o.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return i.jsxs("div",{className:oe.wrap,children:[i.jsxs("div",{className:oe.tabBar,children:[i.jsx("button",{type:"button",className:$(oe.tabBtn,e==="files"&&oe.active),onClick:()=>t("files"),children:"Files"}),i.jsx("button",{type:"button",className:$(oe.tabBtn,e==="changes"&&oe.active),onClick:()=>t("changes"),children:"Changes"}),i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:oe.refreshBtn,onClick:a,children:i.jsx(Xn,{size:13})})]}),i.jsx("div",{className:oe.content,children:e==="files"?i.jsx(cl,{}):i.jsx(bl,{})})]})}const Nn=he()(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}})}})),Cl=12e3;function El(e,t){return e==="running"&&t!=="running"}function Ft(e,t){var s,o,r,a,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),((a=t.tokens)==null?void 0:a.total)!==void 0&&(n.totalTokens=t.tokens.total),((c=t.tokens)==null?void 0:c.input)!==void 0&&(n.inputTokens=t.tokens.input),((d=t.tokens)==null?void 0:d.output)!==void 0&&(n.outputTokens=t.tokens.output),t.cost!==void 0&&(n.cost=t.cost),t.model!==void 0&&(n.model=t.model,E.getState().setModel(e,t.model)),Nn.getState().setStats(e,n)}function Tl(e){const t=j(c=>c.client),n=j(c=>c.status),s=E(c=>{var d;return e?((d=c.sessions[e])==null?void 0:d.agentId)??null:null}),o=E(c=>{var d;return e?(d=c.sessions[e])==null?void 0:d.status:void 0}),r=w.useRef(!1),a=w.useRef(void 0);w.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let c=!1;const d=async()=>{if(!r.current){r.current=!0;try{const f=await t.agent(s).sessionStats();c||Ft(e,f)}catch{}finally{r.current=!1}}};d();const m=setInterval(()=>void d(),Cl);return()=>{c=!0,clearInterval(m)}},[n,t,e,s]),w.useEffect(()=>{const c=a.current;a.current=o,El(c,o)&&(n!=="open"||!t||!e||!s||(r.current=!1,t.agent(s).sessionStats().then(d=>Ft(e,d)).catch(()=>{})))},[o,n,t,e,s])}function Nl(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 Rl(e){const t=j(r=>r.client),n=Q(r=>r.applyProjection),s=Q(r=>r.setSubscribedCwd),o=w.useRef(t);return o.current=t,w.useEffect(()=>{if(!t||!e)return;let r=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const a=t.connection.onSessionMessage(c=>{if(r)return;const d=c;Nl(d)&&d.cwd===e&&n(d.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{r=!0,a(),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 St="--";function Te(e){return e===void 0?St:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function ql(e){if(e==null)return St;const t=e<=1?e*100:e;return`${Math.round(t)}%`}function Ml(e){if(e===void 0)return St;const t=e<1?4:2;return`$${e.toFixed(t)}`}function Bl(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function Al(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}function $l(e,t=!0){const n=j(s=>s.client);return Lt({queryKey:xe.providerModels(e),queryFn:async()=>{if(!n)throw new Error("not connected");return(await n.providers.listModels(e)).models},enabled:!!n&&!!e&&t})}function Dl(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 Ol(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 Pl(e){const t=new Set;return e.filter(n=>t.has(n.id)?!1:(t.add(n.id),!0))}const Fl="_content_1imfv_4",zl="_search_1imfv_17",Ll="_list_1imfv_35",Hl="_item_1imfv_40",Wl="_itemActive_1imfv_54",Ul="_checkSlot_1imfv_58",Kl="_label_1imfv_67",Vl="_modelId_1imfv_73",Gl="_state_1imfv_80",Jl="_stateError_1imfv_89",Xl="_commandContent_1imfv_99",Yl="_commandList_1imfv_102",Ql="_commandItem_1imfv_107",Zl="_commandItemHeader_1imfv_140",ed="_commandKindBadge_1imfv_154",td="_commandKindExtension_1imfv_173",nd="_commandKindPrompt_1imfv_178",sd="_commandKindSkill_1imfv_183",od="_commandDescription_1imfv_188",Y={content:Fl,search:zl,list:Ll,item:Hl,itemActive:Wl,checkSlot:Ul,label:Kl,modelId:Vl,state:Gl,stateError:Jl,commandContent:Xl,commandList:Yl,commandItem:Ql,commandItemHeader:Zl,commandKindBadge:ed,commandKindExtension:td,commandKindPrompt:nd,commandKindSkill:sd,commandDescription:od};function rd({currentModel:e,provider:t,onSelect:n,renderTrigger:s}){const[o,r]=w.useState(!1),[a,c]=w.useState(""),d=w.useRef(null),{data:m=[],isLoading:f,isError:S,error:h}=$l(t,o),x=Pl(Ol(m,e));w.useEffect(()=>{var C;o&&(c(""),(C=d.current)==null||C.focus())},[o]);const g=new Map(x.map(C=>[C.id,C.provider])),_=x.map(C=>({value:C.id,label:C.label??C.id,description:C.id})),y=Dl(_,a),M=h instanceof Error?h.message:"Failed to load models";function J(C){C.stopPropagation(),C.key==="Escape"&&r(!1)}return i.jsxs(Ge,{open:o,onOpenChange:r,modal:!1,children:[i.jsx(Je,{asChild:!0,children:s(e)}),i.jsx(Xe,{children:i.jsxs(Ye,{className:Y.content,align:"start",sideOffset:4,children:[i.jsx("input",{ref:d,className:Y.search,placeholder:"Search models…",value:a,onChange:C=>c(C.target.value),onKeyDown:J}),f&&i.jsx("div",{className:Y.state,children:i.jsx(kn,{size:"sm"})}),!f&&S&&i.jsx("div",{className:Y.stateError,children:M}),!f&&!S&&y.length===0&&i.jsx("div",{className:Y.state,children:"No models found"}),!f&&!S&&y.length>0&&i.jsx("div",{className:Y.list,children:y.map(C=>i.jsxs(H,{className:Y.item,onSelect:()=>n(C.value,g.get(C.value)),children:[i.jsx("span",{className:Y.checkSlot,"aria-hidden":!0,children:C.value===e&&i.jsx(Zt,{size:14})}),i.jsx("span",{className:Y.label,children:C.label}),i.jsxs("span",{className:Y.modelId,children:["(",C.value,")"]})]},C.value))})]})})]})}const ad="_statusBar_tm1j6_1",id="_segmentGroup_tm1j6_16",cd="_chevron_tm1j6_20",ld="_segment_tm1j6_16",dd="_icon_tm1j6_33",ud="_modelSegment_tm1j6_39",pd="_modelChevron_tm1j6_63",fd="_text_tm1j6_74",V={statusBar:ad,segmentGroup:id,chevron:cd,segment:ld,icon:dd,modelSegment:ud,modelChevron:pd,text:fd};function hd(){const e=E(y=>y.activeSessionId),t=E(y=>e?y.sessions[e]:void 0),n=j(y=>y.client),s=E(y=>y.setModel),o=wt(),r=T(y=>y.activeWorkspaceCwd);Rl(r||"");const a=Q(y=>y.available),c=Q(y=>y.branch),d=Q(y=>y.ahead),m=Q(y=>y.behind),f=Q(y=>y.detached),S=Q(y=>y.conflictCount),h=Q(y=>y.changes.length),x=Nn(y=>e?y.bySession[e]:void 0);Tl(e);const g=[];if(t){const y=Bl(t.cwd,o);g.push({key:"cwd",icon:i.jsx(Be,{size:13}),text:y,title:t.cwd})}if(a){const y=Al(d,m),M=[f?"(detached)":c??"?"];y&&M.push(y),h>0&&M.push(`●${h}`),S>0&&M.push(`⚠${S}`),g.push({key:"branch",icon:i.jsx(Yn,{size:13}),text:M.join(" ")})}if(t){const y=`${ql(x==null?void 0:x.contextPercent)} (${Te(x==null?void 0:x.contextTokens)}/${Te(x==null?void 0:x.contextWindow)})`;g.push({key:"context",icon:i.jsx(Qn,{size:13}),text:y}),g.push({key:"tokens",icon:i.jsx(Zn,{size:13}),text:Te(x==null?void 0:x.totalTokens),title:`in ${Te(x==null?void 0:x.inputTokens)} / out ${Te(x==null?void 0:x.outputTokens)}`}),g.push({key:"cost",icon:i.jsx(es,{size:13}),text:Ml(x==null?void 0:x.cost)})}function _(y,M){e&&(s(e,y,M),!(!n||!M)&&(async()=>{const J=await Sn(n,e);await n.agent(J).setModel(M,y)})().catch(()=>{}))}return i.jsxs("div",{className:V.statusBar,children:[t&&i.jsx("span",{className:V.segmentGroup,children:i.jsx(rd,{currentModel:t.model,provider:"pi",onSelect:_,renderTrigger:y=>i.jsxs("button",{type:"button",className:V.modelSegment,disabled:!n,title:y?`Model: ${y}`:"Select model",children:[i.jsx("span",{className:V.icon,children:i.jsx(ts,{size:13})}),i.jsx("span",{className:V.text,children:y??"Model"}),i.jsx(Ut,{size:12,className:V.modelChevron,"aria-hidden":"true"})]})})}),g.map((y,M)=>i.jsxs("span",{className:V.segmentGroup,children:[(!!t||M>0)&&i.jsx(gt,{size:12,className:V.chevron,"aria-hidden":"true"}),i.jsxs("span",{className:V.segment,title:y.title,children:[i.jsx("span",{className:V.icon,children:y.icon}),i.jsx("span",{className:V.text,children:y.text})]})]},y.key))]})}const md="_wrapper_131x2_3",gd="_box_131x2_18",_d="_checkmark_131x2_36",yd="_nativeInput_131x2_41",He={wrapper:md,box:gd,checkmark:_d,nativeInput:yd};w.forwardRef(function({label:t,checked:n=!1,disabled:s,className:o,onChange:r,...a},c){return i.jsxs("label",{className:He.wrapper,"data-disabled":s||void 0,children:[i.jsx("input",{ref:c,type:"checkbox",className:He.nativeInput,checked:n,disabled:s,onChange:r,...a}),i.jsx("span",{className:He.box,"data-checked":n,"aria-hidden":!0,children:n&&i.jsx(Zt,{size:12,className:He.checkmark})}),t&&i.jsx("span",{children:t})]})});const bd="_select_vj45v_3",wd={select:bd};w.forwardRef(function({options:t,placeholder:n,className:s,...o},r){return i.jsxs("select",{ref:r,className:$(wd.select,s),...o,children:[n&&i.jsx("option",{value:"",disabled:!0,children:n}),t.map(a=>i.jsx("option",{value:a.value,children:a.label},a.value))]})});const Sd="_overlay_1yaef_1",xd="_contentWrapper_1yaef_7",vd="_dialog_1yaef_16",kd="_header_1yaef_28",Id="_title_1yaef_36",jd="_closeBtn_1yaef_43",Cd="_body_1yaef_57",Ed="_footer_1yaef_63",Td="_bare_1yaef_72",Nd="_bareBody_1yaef_78",Rd="_bareCloseBtn_1yaef_82",qd="_visuallyHidden_1yaef_101",L={overlay:Sd,contentWrapper:xd,dialog:vd,header:kd,title:Id,closeBtn:jd,body:Cd,footer:Ed,bare:Td,bareBody:Nd,bareCloseBtn:Rd,visuallyHidden:qd},Md=lt;function Bd({open:e,onOpenChange:t,title:n,children:s,footer:o,width:r,className:a,bare:c=!1}){return i.jsx(ss,{open:e,onOpenChange:t,children:i.jsxs(os,{children:[i.jsx(rs,{className:L.overlay}),i.jsx("div",{className:L.contentWrapper,children:i.jsxs(as,{className:$(L.dialog,c&&L.bare,a),style:r!==void 0?{width:r}:void 0,children:[c?i.jsx(xt,{className:L.visuallyHidden,children:n}):i.jsxs("div",{className:L.header,children:[i.jsx(xt,{className:L.title,children:n}),i.jsx(lt,{asChild:!0,children:i.jsx("button",{type:"button",className:L.closeBtn,"aria-label":"Close",children:i.jsx(it,{size:16})})})]}),i.jsx("div",{className:$(L.body,c&&L.bareBody),children:s}),c&&i.jsx(lt,{asChild:!0,children:i.jsx("button",{type:"button",className:L.bareCloseBtn,"aria-label":"Close",children:i.jsx(it,{size:16})})}),o&&i.jsx("div",{className:L.footer,children:o})]})})]})})}const Ad="_handle_1ocv1_1",$d={handle:Ad};function zt({side:e,onResize:t,className:n}){const s=w.useRef(0),o=w.useCallback(c=>{const d=c.clientX-s.current;s.current=c.clientX,t(e==="left"?d:-d)},[t,e]),r=w.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 a(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 i.jsx("div",{className:$($d.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}function Dd(e,t){const{order:n,sessions:s}=E.getState(),r=vn(n,s,t).find(a=>a.cwd===e);if(r!=null&&r.sessions[0]){const a=r.sessions[0].id;E.getState().activate(a);const c=E.getState().sessions[a];T.getState().open({id:W.chat(a),kind:"chat",label:(c==null?void 0:c.title)??"New chat",closable:!0,data:{sessionId:a},workspaceCwd:e})}else bt(e);k.getState().setCwd(e)}const Od="_pathRow_trimn_1",Pd="_pathInput_trimn_9",Fd="_createRow_trimn_13",zd="_createInput_trimn_21",Ld="_createError_trimn_25",Hd="_list_trimn_30",Wd="_item_trimn_37",Ud="_name_trimn_49",Kd="_emptyState_trimn_54",G={pathRow:Od,pathInput:Pd,createRow:Fd,createInput:zd,createError:Ld,list:Hd,item:Wd,name:Ud,emptyState:Kd};function Vd(){const e=k(p=>p.cwdPickerOpen),t=k(p=>p.closeCwdPicker),n=T(p=>p.activeWorkspaceCwd),s=k(p=>p.cwd),o=j(p=>p.client),r=wt(),[a,c]=w.useState("/"),[d,m]=w.useState("/"),[f,S]=w.useState(!1),[h,x]=w.useState(""),[g,_]=w.useState(null),[y,M]=w.useState(!1),J=Se();w.useEffect(()=>{if(!e)return;const p=we(n||s||"~",r);c(p),m(p),ce()},[e,o,n,s]);const{data:C,isLoading:Ae,isError:ve,error:me}=pc(a,e&&!!o),ie=((C==null?void 0:C.entries)??[]).filter(p=>p.kind==="directory");function ce(){S(!1),x(""),_(null)}function le(p){c(p),m(p),ce()}function et(){le(a.split("/").slice(0,-1).join("/")||"/")}function ke(){le(d.trim())}async function $e(){const p=h.trim();if(!(!p||!o||y)){M(!0),_(null);try{const R=await Tn(o,a,p,"directory");await J.invalidateQueries({queryKey:xe.explorer(a)}),le(R)}catch(R){_(R instanceof Error?R.message:"Failed to create folder")}finally{M(!1)}}}function tt(){Dd(a,r),t()}return i.jsxs(Bd,{open:e,onOpenChange:p=>!p&&t(),title:"Open Workspace",footer:i.jsxs(i.Fragment,{children:[i.jsx(Md,{asChild:!0,children:i.jsx(O,{size:"sm",variant:"secondary",children:"Cancel"})}),i.jsx(O,{size:"sm",onClick:tt,children:"Open this folder"})]}),children:[i.jsxs("div",{className:G.pathRow,children:[i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:et,children:i.jsx(ns,{size:13})}),i.jsx(Ke,{className:G.pathInput,value:d,onChange:p=>m(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.preventDefault(),ke())}}),i.jsx(O,{size:"xs",onClick:ke,children:"Go"}),i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!o||ve||f,onClick:()=>{S(!0),x(""),_(null)},children:i.jsx(Qt,{size:13})})]}),f&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:G.createRow,children:[i.jsx(Be,{size:14}),i.jsx(Ke,{className:G.createInput,autoFocus:!0,placeholder:"New folder name",value:h,onChange:p=>x(p.target.value),onKeyDown:p=>{p.key==="Enter"?(p.preventDefault(),$e()):p.key==="Escape"&&(p.preventDefault(),p.stopPropagation(),ce())}}),i.jsx(O,{size:"xs",loading:y,disabled:!h.trim()||y,onClick:()=>void $e(),children:"Create"}),i.jsx(O,{size:"xs",variant:"secondary",onClick:ce,children:"Cancel"})]}),g&&i.jsx("div",{className:G.createError,children:g})]}),i.jsx("div",{className:G.list,children:Ae?i.jsx("div",{className:G.emptyState,children:"Loading..."}):ve?i.jsxs("div",{className:G.emptyState,children:["Error: ",me instanceof Error?me.message:"unknown error"]}):ie.length===0?i.jsx("div",{className:G.emptyState,children:"No subdirectories"}):ie.map(p=>i.jsxs("div",{className:G.item,onClick:()=>le(a==="/"?`/${p.name}`:`${a}/${p.name}`),children:[i.jsx(Be,{size:14}),i.jsx("span",{className:G.name,children:p.name})]},p.name))})]})}const Gd="_shell_1m1nv_1",Jd="_main_1m1nv_7",Xd="_sidebarLeft_1m1nv_13",Yd="_leftHandle_1m1nv_21",Qd="_center_1m1nv_24",Zd="_sidebarRight_1m1nv_31",eu="_rightHandle_1m1nv_39",pe={shell:Gd,main:Jd,sidebarLeft:Xd,leftHandle:Yd,center:Qd,sidebarRight:Zd,rightHandle:eu};function tu(){const e=k(a=>a.leftSidebarCollapsed),t=k(a=>a.rightSidebarCollapsed),n=k(a=>a.leftSidebarWidth),s=k(a=>a.rightSidebarWidth),o=k(a=>a.resizeLeftSidebar),r=k(a=>a.resizeRightSidebar);return i.jsxs("div",{className:pe.shell,children:[i.jsx(qa,{}),i.jsxs("div",{className:pe.main,children:[!e&&i.jsxs("aside",{className:pe.sidebarLeft,style:{width:n},children:[i.jsx(Mi,{}),i.jsx(zt,{side:"left",className:pe.leftHandle,onResize:o})]}),i.jsxs("div",{className:pe.center,children:[i.jsx(Vi,{}),i.jsx(lc,{})]}),!t&&i.jsxs("aside",{className:pe.sidebarRight,style:{width:s},children:[i.jsx(zt,{side:"right",className:pe.rightHandle,onResize:r}),i.jsx(jl,{})]})]}),i.jsx(hd,{}),i.jsx(Vd,{})]})}function nu(){const e=w.useRef(!1);w.useEffect(()=>{if(e.current)return;if(e.current=!0,window.location.hash.includes("offer=")){const d=window.location.href;k.getState().setHost(d),j.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"),a=t.get("connect")==="1",c=k.getState();if(s?c.setHost(s):n&&c.setHost(n),o&&c.setPassword(o),r&&c.setCwd(r),s)j.getState().connect({url:s});else if(a){const{host:d,password:m}=k.getState();j.getState().connect({url:d,password:m||void 0})}},[])}function su(e){return typeof e=="object"&&e!==null&&"kind"in e}function ou(e){const t=[];for(const n of e)if(su(n))if(n.kind==="other")n.event&&t.push(n.event);else for(const s of n.events??[])t.push(s);return t}function ru(e){return typeof e.model=="string"}function au(){const e=j(s=>s.client),t=j(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,(async()=>{var f;let s=[];try{s=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{s=[]}s.sort((S,h)=>(h.lastActivity??0)-(S.lastActivity??0));const o=E.getState();for(const S of s){if(o.findByAgentId(S.agentId))continue;let h=ft;try{const g=await e.agent(S.agentId).timeline.fetch({direction:"after",limit:200});h=ou(g.items).reduce(wn,ft)}catch{}const x=h.rows.length===0;o.hydrate({id:`s-${S.agentId.slice(0,12)}`,agentId:S.agentId,title:S.title||(x?"New chat":(f=S.cwd)==null?void 0:f.split("/").pop())||"Restored",status:S.status??"idle",cwd:S.cwd||"~",timeline:h,userMessageCount:h.rows.filter(g=>g.kind==="user").length,model:S.model,modelProvider:S.modelProvider})}const{order:r,sessions:a}=E.getState(),c=r.length>0?a[r[0]??""]:void 0;if(!c)return;const d=await Ze(e).catch(()=>null),m=we(c.cwd||"~",d);E.getState().activate(c.id),k.getState().setCwd(c.cwd),T.getState().open({id:W.chat(c.id),kind:"chat",label:c.title,closable:!0,data:{sessionId:c.id},workspaceCwd:m})})())},[t,e]),w.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(ru(s)){const o=typeof s.modelProvider=="string"?s.modelProvider:void 0;E.getState().setModelByAgentId(s.agentId,s.model,o)}})},[t,e])}function iu(){const e=j(s=>s.client),t=j(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,(async()=>{let s=[];try{s=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{s=[]}if(s.length===0)return;const o=await Ze(e).catch(()=>null),r=T.getState().open;for(const a of s){if(a.closed)continue;const c=we(a.cwd||"~",o);r({id:W.terminal(a.slot),kind:"terminal",label:a.name,closable:!0,data:{slot:a.slot,cwd:c},workspaceCwd:c})}})())},[t,e])}function cu(){w.useEffect(()=>{function e(t){const n=k.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),xn(T.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:o,tabs:r}=T.getState();if(!o)return;const a=r.find(c=>c.id===o);(a==null?void 0:a.closable)!==!1&&(t.preventDefault(),ht(o))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function lu(){return nu(),au(),iu(),cu(),null}function du(){return i.jsxs(oo,{children:[i.jsx(lu,{}),i.jsx(tu,{})]})}const Rn=document.getElementById("root");if(!Rn)throw new Error("Missing #root element");An.createRoot(Rn).render(i.jsx(w.StrictMode,{children:i.jsx(du,{})}));export{O as B,Bd as D,kn as S,wu as T,xu as V,j as a,Su as b,T as c,vu as d,Sn as e,Dl as f,Ot as g,xe as r,Y as s,Ma as t,E as u};
|
|
3
|
-
//# sourceMappingURL=index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatPanel-YUfYdTdZ.js","assets/vendor-react-p-LLqNcx.js","assets/vendor-query-chxBrUuj.js","assets/vendor-icons-CAhpOZSZ.js","assets/markdown-BVrzq29V.js","assets/vendor-highlight-Cry4x-mr.js","assets/vendor-markdown-ePgMI45n.js","assets/vendor-B2Vnrid8.js","assets/markdown-BQwXm0MF.css","assets/StatusBadge-D5M084rB.js","assets/StatusBadge-BgIink5J.css","assets/DiffView-CUxhzW_O.js","assets/DiffView-CRbeRztO.css","assets/vendor-overlays-DWi-xJna.js","assets/vendor-dnd-CjSU1Kqk.js","assets/ChatPanel-CG6o6nFc.css","assets/FilePanel-DCZ6Vntr.js","assets/use-file-watch-ld_2lbTl.js","assets/FilePanel.module-DoDNR5C2.js","assets/FilePanel-DIInFr3h.css","assets/TerminalPanel-qx_HdM7y.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-BQj62G6N.css","assets/MoleculeViewerPanel-BZA00vSx.js","assets/vendor-molviewer-PwwY6jQU.js","assets/vendor-molviewer-CtvG6b9Z.css","assets/use-file-download-DsIqcxhB.js","assets/MoleculeViewerPanel-CTZU0_lX.css","assets/TextViewer-CDXNfUrU.js","assets/CodeView-DwUKpXwU.js","assets/CodeView-CLRODhB8.css","assets/TextViewer-B9IV5fXQ.css","assets/MarkdownFileViewer-BDmo3la-.js","assets/MarkdownFileViewer-BD5Ri_Fb.css","assets/ImageViewer-BKflylHn.js","assets/ImageViewer-ijzMsq8H.css","assets/VideoViewer-D4XJC0lT.js","assets/VideoViewer-BBuZ4wou.css","assets/BinaryFallbackViewer-DN2oT6N7.js","assets/BinaryFallbackViewer-CLiNWU_S.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var Mn=Object.defineProperty;var Bn=(e,t,n)=>t in e?Mn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var I=(e,t,n)=>Bn(e,typeof t!="symbol"?t+"":t,n);import{r as w,j as i,c as An}from"./vendor-react-p-LLqNcx.js";import{Q as $n,a as Dn,u as Lt,b as On,c as Se,d as Pn}from"./vendor-query-chxBrUuj.js";import{A as l,B as u,C as $,D as Ht,E as q,F as fe,G as ne,H as B,I as b,J as D,K as P,L as Ve,M as be,N as he}from"./vendor-B2Vnrid8.js";import{L as Fn,P as zn,a as Ln,b as Hn,c as Wn,E as Wt,C as gt,d as Ut,F as Un,e as Kt,f as Vt,A as Gt,S as Jt,G as Kn,g as Vn,M as Xt,X as it,h as Be,i as Yt,j as Gn,k as Qt,U as Jn,R as Xn,l as Zt,m as Yn,n as Qn,o as Zn,D as es,p as ts,q as ns}from"./vendor-icons-CAhpOZSZ.js";import{R as Ge,T as Je,P as Xe,C as Ye,I as H,S as ct,D as ss,a as os,b as rs,c as as,d as xt,e as lt}from"./vendor-overlays-DWi-xJna.js";import{u as is,a as cs,D as ls,c as ds,S as us,h as ps,P as fs,b as hs,C as ms}from"./vendor-dnd-CjSU1Kqk.js";import{_ as se}from"./vendor-highlight-Cry4x-mr.js";import"./vendor-markdown-ePgMI45n.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 a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).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 gs=new $n;function en(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 _s(e){return Math.max(0,Math.min(255,Math.round(e)))}function ys({r:e,g:t,b:n}){const s=o=>_s(o).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function bs(e){const{r:t,g:n,b:s}=en(e),o=r=>{const a=r/255;return a<=.03928?a/12.92:((a+.055)/1.055)**2.4};return .2126*o(t)+.7152*o(n)+.0722*o(s)}function _t(e,t="#18181b",n="#ffffff"){return bs(e)>.45?t:n}function ws(e,t){const{r:n,g:s,b:o}=en(e),r=Math.max(0,Math.min(1,t));return ys({r:n+(255-n)*r,g:s+(255-s)*r,b:o+(255-o)*r})}function Oe(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const K=(e,t,n,s,o,r,a,c,d,m,f)=>({50:e,100:t,200:n,300:s,400:o,500:r,600:a,700:c,800:d,900:m,950:f}),v={zinc:K("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:K("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:K("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:K("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:K("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:K("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:K("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:K("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:K("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:K("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:K("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"},Ss={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea"},xs={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed"};function vs(){return{keyword:v.purple[300],string:v.green[300],number:v.orange[300],boolean:v.orange[300],comment:v.zinc[500],function:v.blue[300],variable:v.zinc[200],type:v.teal[300],class:v.amber[300],constant:v.orange[300],operator:v.zinc[400],punctuation:v.zinc[400],tag:v.red[300],attribute:v.amber[300],property:v.blue[200],regexp:v.teal[300],escape:v.orange[200],heading:v.blue[300],link:v.blue[400],deleted:v.red[400],inserted:v.green[400]}}function ks(){return{keyword:v.purple[700],string:v.green[700],number:v.orange[700],boolean:v.orange[700],comment:v.zinc[500],function:v.blue[700],variable:v.zinc[800],type:v.teal[700],class:v.amber[700],constant:v.orange[700],operator:v.zinc[600],punctuation:v.zinc[600],tag:v.red[700],attribute:v.amber[700],property:v.blue[700],regexp:v.teal[700],escape:v.orange[700],heading:v.blue[700],link:v.blue[600],deleted:v.red[700],inserted:v.green[700]}}function tn(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:v.zinc[900],red:v.red[500],green:v.green[500],yellow:v.amber[500],blue:v.blue[500],magenta:v.purple[500],cyan:v.teal[500],white:v.zinc[300],brightBlack:v.zinc[600],brightRed:v.red[400],brightGreen:v.green[400],brightYellow:v.amber[400],brightBlue:v.blue[400],brightMagenta:v.purple[400],brightCyan:v.teal[400],brightWhite:v.zinc[50]}}function je(e){const t=v.zinc[50],n=_t(e.accent);return{surface0:e.surface0,surface1:e.surface1,surface2:e.surface2,surface3:e.surface3,surface4:e.surface4,surfaceDiffEmpty:e.surfaceDiffEmpty,surfaceSidebar:e.surfaceSidebar,surfaceSidebarHover:e.surfaceSidebarHover,surfaceWorkspace:e.surface1,foreground:t,foregroundMuted:e.mutedForeground,accent:e.accent,accentBright:e.accentBright,accentForeground:n,destructive:e.destructive,destructiveForeground:v.white,success:e.accent,successForeground:v.white,border:e.border,borderAccent:e.borderAccent,...Ss,diffAddition:v.green[400],diffDeletion:v.red[500],scrollbarHandle:e.scrollbarHandle,background:e.surface0,popover:e.surface2,popoverForeground:t,primary:e.accent,secondary:e.surface2,muted:e.surface2,mutedForeground:e.mutedForeground,input:e.surface2,ring:e.accent,palette:v,syntax:vs(),terminal:tn(e.surface0,t,e.accent)}}function Is(){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:_t(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...xs,diffAddition:"#15803d",diffDeletion:"#b91c1c",scrollbarHandle:"#3f3f46",background:"#ffffff",popover:"#ffffff",popoverForeground:e,primary:t,secondary:"#f4f4f5",muted:"#f4f4f5",mutedForeground:"#71717a",input:"#f4f4f5",ring:t,palette:v,syntax:ks(),terminal:{...tn("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const js={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},nn=["light","dark","zinc","midnight","claude","ghostty"];function Cs(e){if(e==="light")return Is();switch(e){case"dark":return je({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 je({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 je({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 je({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 je({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 sn={};for(const e of nn){const t=e==="light"?"light":"dark";sn[e]={name:e,colorScheme:t,colors:Cs(e),swatch:js[e]}}const Es=sn,Ts={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},on={xs:12,code:12,sm:14,base:16,lg:18,xl:20,"2xl":22,"3xl":26,"4xl":34},Ns={normal:"400",medium:"500",semibold:"600",bold:"700"},Rs={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},qs={0:0,1:1,2:2},Ms={0:0,50:.5,100:1},Bs={xs:12,sm:14,md:16,lg:20},As={diff:22},rn='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',an='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function $s(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 cn(e){const t=Es[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:Ts,fontSize:{...on},fontFamily:{ui:rn,mono:an},lineHeight:{...As},iconSize:Bs,fontWeight:Ns,borderRadius:Rs,borderWidth:qs,opacity:Ms,shadow:$s(t.colorScheme),swatch:t.swatch}}const Ds=16,Os=10,Ps=24;function Fs(e,t){const n=t.themeName??e.name,s=cn(n),o=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:rn,r=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:an;let a={...s.fontSize};if(t.fontSize!=null){const d=Math.max(Os,Math.min(Ps,t.fontSize))/Ds,m=["xs","code","sm","base","lg","xl","2xl","3xl","4xl"];for(const f of m){const S=on[f];a[f]=Math.round(S*d)}}return{...s,fontSize:a,fontFamily:{ui:o,mono:r}}}function zs(e){return cn(e)}const Ls="dark";function Hs(e){const t={};Ws(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}`]=`${s}px`;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 Ws(e,t){const{palette:n,syntax:s,terminal:o,...r}=e;for(const[a,c]of Object.entries(r))typeof c=="string"&&(t[`--pi-color-${a}`]=c);s&&Us(s,t),o&&(t["--pi-terminal-bg"]=o.background,t["--pi-terminal-fg"]=o.foreground)}function Us(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${Ks(n)}`]=s)}function Ks(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Vs(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 Gs(e){const t=Hs(e);Vs(t)}const Ce=l().min(1,"Asset path must not be empty"),Js=u({accent:l().refine(Oe,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(Oe,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(Oe,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(Oe,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),Xs=u({logoLight:Ce,logoDark:Ce,logoMark:Ce.optional(),icon:Ce,splash:Ce.optional()}),Ys=u({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),Qs=u({copyright:l().optional(),companyName:l().optional()}).optional();u({productName:l().min(1,"productName is required"),shortName:l().optional(),tagline:l().optional(),colors:Js,assets:Xs,links:Ys,legal:Qs});function Zs(e){const t=e.accent,n=e.accentBright??ws(t,.35),s=e.accentForeground??_t(t),o=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:o}}function eo(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 vt="pi-studio-appearance";function to(e,t){let n=c(e),s=null;function o(f){return f==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":f}function r(f,S){const h=o(f),x=zs(h);let g=Fs(x,{...S,themeName:h});if(t!=null&&t.colors){const _=Zs(t.colors);g=eo(g,_)}return g}function a(){const f=JSON.stringify({mode:n.mode,settings:n.settings});e.set(vt,f)}function c(f){const S=f.get(vt);let h=Ls,x={};if(S)try{const _=JSON.parse(S);_.mode&&(nn.includes(_.mode)||_.mode==="system")&&(h=_.mode),_.settings&&typeof _.settings=="object"&&(x=_.settings)}catch{}const g=r(h,x);return{mode:h,settings:x,resolvedTheme:g}}function d(){n={...n,resolvedTheme:r(n.mode,n.settings)},a()}const m={getState(){return n},setMode(f){n={...n,mode:f},d(),m.apply()},updateSettings(f){n={...n,settings:{...n.settings,...f}},d(),m.apply()},apply(){Gs(n.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const f=window.matchMedia("(prefers-color-scheme: dark)"),S=()=>{n.mode==="system"&&(d(),m.apply())};return f.addEventListener("change",S),s=()=>f.removeEventListener("change",S),s}};return m}function no({store:e,brandConfig:t,children:n}){const s=w.useRef(null);return s.current||(s.current=to(e,t),s.current.apply()),w.useEffect(()=>s.current.listen(),[]),i.jsx(i.Fragment,{children:n})}const so={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 oo({children:e}){return i.jsx(no,{store:so,children:i.jsx(Dn,{client:gs,children:e})})}const ro="_btn_1chbg_4",ao="_secondary_1chbg_44",io="_outline_1chbg_53",co="_ghost_1chbg_62",lo="_destructive_1chbg_72",uo="_iconOnly_1chbg_82",po="_loadingSpinner_1chbg_89",fo="_piSpin_1chbg_1",Pe={btn:ro,default:"_default_1chbg_35",secondary:ao,outline:io,ghost:co,destructive:lo,iconOnly:uo,loadingSpinner:po,piSpin:fo},kt={xs:28,sm:32,md:36,lg:40},ho={xs:12,sm:14,md:16,lg:20},It={xs:8,sm:10,md:12,lg:16},mo={xs:12,sm:13,md:14,lg:15};function go(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}function O({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:o,trailing:r,iconOnly:a=!1,children:c,style:d,className:m,...f}){const{opacity:S}=go({disabled:s??!1,loading:n}),h=s||n,x=ho[t];return i.jsxs("button",{className:$(Pe.btn,Pe[e],a&&Pe.iconOnly,m),disabled:h,"aria-busy":n||void 0,style:{minHeight:kt[t],paddingLeft:a?void 0:It[t],paddingRight:a?void 0:It[t],fontSize:mo[t],opacity:S,...a?{width:kt[t]}:{},...d},...f,children:[n?i.jsx(Fn,{className:Pe.loadingSpinner,size:x,"aria-hidden":!0}):o?i.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o}):null,c,r&&!n&&i.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r})]})}const _o="_input_a7qyq_3",yo="_textarea_a7qyq_32",dt={input:_o,textarea:yo},Ke=w.forwardRef(function({className:t,...n},s){return i.jsx("input",{ref:s,className:$(dt.input,t),...n})}),wu=w.forwardRef(function({className:t,...n},s){return i.jsx("textarea",{ref:s,className:$(dt.input,dt.textarea,t),...n})}),ln=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const Me=Ht([q(),ln]),bo=fe(["mobile","browser","cli","mcp"]),wo=u({type:b("hello"),clientId:l(),clientType:bo,protocolVersion:q(),appVersion:l().optional(),capabilities:ne(l(),B()).optional()}),So=u({status:b("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),capabilities:ne(l(),D()),features:ne(l(),D())}),xo=u({type:b("status"),payload:So}),vo=u({type:b("ping"),requestId:l(),clientSentAt:Me.optional()}),ko=u({type:b("pong"),requestId:l(),clientSentAt:Me.optional(),serverReceivedAt:Me,serverSentAt:Me}),dn=fe(["initializing","idle","running","error","closed"]),Qe=u({mimeType:l().optional(),data:l().optional()}).passthrough(),Io=u({prs:P(D()).optional(),issues:P(D()).optional()}).passthrough(),jo=u({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:ne(l(),D()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:B().optional(),webSearch:B().optional(),extra:u({pi:D().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:ne(l(),D()).optional()}),Co=u({type:b("create_agent_request"),requestId:l(),config:jo,env:ne(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:ne(l(),D()).optional(),images:P(Qe).optional(),attachments:Io.optional(),git:D().optional(),worktree:D().optional(),autoArchive:B().optional(),labels:ne(l(),l()).default({})}),Eo=u({type:b("create_agent_response"),requestId:l(),payload:u({agentId:l()}).passthrough()}),To=u({type:b("agent_update"),agentId:l(),status:dn.optional(),title:l().nullable().optional(),labels:ne(l(),l()).optional()}),No=u({type:b("agent_status"),agentId:l(),status:dn}),Ro=u({type:b("agent_list"),agents:P(u({id:l()}).passthrough())}),qo=u({type:b("agent_deleted"),agentId:l()}),Mo=u({type:b("agent_archived"),agentId:l(),archivedAt:ln.optional()}),un=Ve("kind",[u({kind:b("shell"),command:l().optional(),output:l().optional()}),u({kind:b("read"),path:l().optional(),output:l().optional()}),u({kind:b("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),u({kind:b("write"),path:l().optional(),output:l().optional()}),u({kind:b("search"),query:l().optional(),output:l().optional()}),u({kind:b("fetch"),url:l().optional(),output:l().optional()}),u({kind:b("task"),description:l().optional(),output:l().optional()})]),Bo=Ve("kind",[u({kind:b("user_message"),messageId:l().optional(),text:l().optional(),images:P(Qe).optional()}),u({kind:b("assistant_message"),messageId:l().optional(),text:l().optional()}),u({kind:b("reasoning"),text:l().optional()}),u({kind:b("tool_call"),callId:l().optional(),tool:un,status:l().optional()}),u({kind:b("turn_started"),turnId:l().optional()}),u({kind:b("turn_completed"),turnId:l().optional()}),u({kind:b("turn_failed"),turnId:l().optional(),error:l().optional()}),u({kind:b("turn_canceled"),turnId:l().optional()}),u({kind:b("error"),message:l().optional()}),u({kind:b("queue_update"),steering:P(l()).optional(),followUp:P(l()).optional()})]),Ao=u({type:b("agent_stream"),agentId:l(),seq:q().optional(),timestamp:Me.optional(),event:Bo}),$o=fe(["before","after"]),Do=u({start:q(),end:q()}),Oo=u({type:b("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:$o,limit:q().optional()}),Po=u({type:b("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:P(D()),seqStart:q(),seqEnd:q(),sourceSeqRanges:P(Do),collapsed:B(),hasNewer:B(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),Fo=u({type:b("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:un.optional(),action:D().optional(),responses:P(l()).optional()}),zo=u({type:b("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),Lo=u({type:b("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:D()}),Ho=u({type:b("agent.permission.respond.response"),requestId:l(),payload:u({resolved:B()}).passthrough()}),Wo=u({type:b("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:D()}),pn=fe(["conversation","files","both"]),Uo=u({type:b("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:pn}).passthrough(),Ko=u({type:b("agent.rewind.response"),requestId:l(),payload:u({agentId:l(),messageId:l(),mode:pn,truncatedAt:l().optional()}).passthrough()}).passthrough(),Vo=u({input:q().optional(),output:q().optional(),cacheRead:q().optional(),cacheWrite:q().optional(),total:q().optional()}).passthrough(),Go=u({tokens:q().nullable().optional(),contextWindow:q().optional(),percent:q().nullable().optional()}).passthrough(),Jo=u({type:b("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),Xo=u({type:b("agent_session_stats_response"),requestId:l(),payload:u({sessionId:l().optional(),sessionFile:l().optional(),userMessages:q().optional(),assistantMessages:q().optional(),toolCalls:q().optional(),toolResults:q().optional(),totalMessages:q().optional(),tokens:Vo.optional(),cost:q().optional(),contextUsage:Go.optional(),model:l().optional()}).passthrough()}).passthrough(),Yo=u({type:b("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),Qo=u({type:b("agent_compact_response"),requestId:l(),payload:u({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:q().optional(),details:D().optional()}).passthrough()}).passthrough(),Zo=u({type:b("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),er=u({type:b("agent_new_session_response"),requestId:l(),payload:u({cancelled:B()}).passthrough()}).passthrough(),tr=u({type:b("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),nr=u({type:b("agent_switch_session_response"),requestId:l(),payload:u({cancelled:B()}).passthrough()}).passthrough(),sr=u({type:b("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),or=u({type:b("agent_fork_response"),requestId:l(),payload:u({text:l(),cancelled:B()}).passthrough()}).passthrough(),rr=u({type:b("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),ar=u({type:b("agent_fork_messages_response"),requestId:l(),payload:u({messages:P(u({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),ir=u({type:b("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),cr=u({type:b("agent_clone_response"),requestId:l(),payload:u({cancelled:B()}).passthrough()}).passthrough(),lr=u({type:b("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),dr=u({type:b("agent_set_session_name_response"),requestId:l(),payload:u({}).passthrough().optional()}).passthrough(),ur=u({type:b("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),pr=u({type:b("agent_export_html_response"),requestId:l(),payload:u({path:l()}).passthrough()}).passthrough(),fr=u({type:b("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),hr=u({type:b("agent_set_model_response"),requestId:l(),payload:u({}).passthrough()}).passthrough(),mr=u({type:b("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),gr=u({type:b("agent_cycle_model_response"),requestId:l(),payload:u({model:D().nullable().optional(),thinkingLevel:l().optional(),isScoped:B().optional()}).passthrough()}).passthrough(),_r=u({type:b("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),yr=u({type:b("agent_last_assistant_text_response"),requestId:l(),payload:u({text:l().nullable()}).passthrough()}).passthrough(),br=u({type:b("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:P(Qe).optional(),clientMessageId:l().optional()}).passthrough(),wr=u({type:b("steer_agent_response"),requestId:l(),agentId:l(),ok:B()}).passthrough(),Sr=u({type:b("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:P(Qe).optional(),clientMessageId:l().optional()}).passthrough(),xr=u({type:b("follow_up_agent_response"),requestId:l(),agentId:l(),ok:B()}).passthrough(),vr=u({name:l(),id:l().optional(),description:l().optional(),source:fe(["extension","prompt","skill"]).optional(),scope:fe(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),kr=u({type:b("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),Ir=u({type:b("agent_list_commands_response"),requestId:l(),payload:u({commands:P(vr)}).passthrough()}).passthrough(),jr=u({type:b("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),Cr=Ve("type",[Co,Eo,To,No,Ro,qo,Mo,Ao,Oo,Po,Fo,zo,Lo,Ho,Wo,Uo,Ko,Jo,Xo,Yo,Qo,Zo,er,tr,nr,sr,or,rr,ar,ir,cr,lr,dr,ur,pr,fr,hr,mr,gr,_r,yr,br,wr,Sr,xr,kr,Ir,jr]),Er=u({type:l()}).passthrough(),Tr=u({type:b("session"),message:Ht([Cr,Er])});Ve("type",[wo,xo,vo,ko,Tr]);const ge={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},Nr=Object.fromEntries(Object.entries(ge).map(([e,t])=>[t,e])),fn=u({rows:q().int().nonnegative(),cols:q().int().nonnegative()});class Ne extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const Rr=new TextEncoder,qr=new TextDecoder;function Mr(e){if(!Number.isInteger(e)||e<0||e>255)throw new Ne(`slot must be an integer 0–255, got ${e}`)}function Ee(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function Su(e){switch(Mr(e.slot),e.opcode){case"Output":return Ee(ge.Output,e.slot,e.data);case"Input":return Ee(ge.Input,e.slot,e.data);case"Snapshot":return Ee(ge.Snapshot,e.slot,e.data);case"Restore":return Ee(ge.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(fn.parse({rows:e.rows,cols:e.cols}));return Ee(ge.Resize,e.slot,Rr.encode(t))}}}function Br(e){if(e.length<2)throw new Ne(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=Nr[t];if(!s)throw new Ne(`unknown terminal opcode 0x${t.toString(16)}`);const o=e.subarray(2);if(s==="Resize"){let r;try{r=JSON.parse(qr.decode(o))}catch{throw new Ne("resize payload is not valid JSON")}const a=fn.safeParse(r);if(!a.success)throw new Ne("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:a.data.rows,cols:a.data.cols}}return{opcode:s,slot:n,data:o.slice()}}const ye={Begin:16,Chunk:17,End:18,Error:19},Ar=Object.fromEntries(Object.entries(ye).map(([e,t])=>[t,e])),hn=u({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:q().int().nonnegative().optional()});class Re extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const jt=new TextEncoder,Ct=new TextDecoder;function $r(e){if(!Number.isInteger(e)||e<0||e>255)throw new Re(`stream must be an integer 0–255, got ${e}`)}function Fe(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function nt(e){switch($r(e.stream),e.opcode){case"Begin":return Fe(ye.Begin,e.stream,jt.encode(JSON.stringify(hn.parse(e.meta))));case"Chunk":return Fe(ye.Chunk,e.stream,e.data);case"End":return Fe(ye.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return Fe(ye.Error,e.stream,jt.encode(e.message))}}function Dr(e){if(e.length<2)throw new Re(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=Ar[t];if(!s)throw new Re(`unknown file-transfer opcode 0x${t.toString(16)}`);const o=e.subarray(2);switch(s){case"Begin":{let r;try{r=JSON.parse(Ct.decode(o))}catch{throw new Re("begin payload is not valid JSON")}const a=hn.safeParse(r);if(!a.success)throw new Re("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:a.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:Ct.decode(o)}}}function Or(e){try{return Dr(e)}catch{return null}}const Pr=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),Fr=fe(["safe","moderate","dangerous","planning"]),zr=u({supportsStreaming:B(),supportsSessionPersistence:B(),supportsDynamicModes:B(),supportsMcpServers:B(),supportsReasoningStream:B(),supportsToolInvocations:B(),supportsRewindConversation:B().optional(),supportsRewindFiles:B().optional(),supportsRewindBoth:B().optional(),supportsSteering:B().optional()}).passthrough(),Lr=u({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:Fr});u({id:Pr,label:l(),description:l().optional(),extends:l().optional(),modes:P(Lr),capabilities:zr});function ut(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function mn(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 a=e??(()=>new WebSocket(s));try{t=e?a(s):new WebSocket(s)}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,ut(c.reason))},t.onmessage=c=>{var m,f,S,h;const{data:d}=c;d instanceof ArrayBuffer||d instanceof Uint8Array?(m=n.onMessage)==null||m.call(n,d):typeof d=="string"?(f=n.onMessage)==null||f.call(n,d):typeof Blob<"u"&&d instanceof Blob?(S=n.onMessage)==null||S.call(n,d):Buffer.isBuffer(d)&&((h=n.onMessage)==null||h.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 qe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function gn(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,a=o?e[n+1]:0,c=r?e[n+2]:0;t+=qe[s>>2],t+=qe[(s&3)<<4|a>>4],t+=o?qe[(a&15)<<2|c>>6]:"=",t+=r?qe[c&63]:"="}return t}function _n(e){const t=e.replace(/=+$/,""),n=[];let s=0,o=0;for(const r of t){const a=qe.indexOf(r);if(a===-1)throw new Error(`invalid base64 character: ${JSON.stringify(r)}`);s=s<<6|a,o+=6,o>=8&&(o-=8,n.push(s>>o&255))}return new Uint8Array(n)}function Hr(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const We=24;function yn(e,t){const n=be.randomBytes(We),s=be.box.after(e,n,t),o=new Uint8Array(n.length+s.length);return o.set(n,0),o.set(s,n.length),gn(o)}function bn(e,t){let n;try{n=_n(e)}catch{return null}if(n.length<We)return null;const s=n.slice(0,We),o=n.slice(We);return be.box.open.after(o,s,t)}function Wr(e,t){return yn(new TextEncoder().encode(e),t)}function Ur(e,t){const n=bn(e,t);return n?new TextDecoder().decode(n):null}function Kr(e,t,n,s,o,r){let a=!1;return n.onClose(c=>{var d;a=!0,(d=s.onClose)==null||d.call(s,c)}),{handleAppFrame(c){var f,S;if(a)return;const d=o();if(!r()||!d)return;const m=Ur(c.frame,d);if(m===null){(f=s.onAuthError)==null||f.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(S=s.onMessage)==null||S.call(s,m)},handleBinaryFrame(c){var f,S;if(a)return;const d=o();if(!r()||!d)return;const m=bn(c.frame,d);if(m===null){(f=s.onAuthError)==null||f.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(S=s.onBinaryMessage)==null||S.call(s,m)},send(c){if(a)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:Wr(c,d)}))},sendBinary(c){if(a)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:yn(c,d)}))},close(){a||(a=!0,n.close())}}}function Vr(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,o=e.events??{},r=be.box.keyPair(),a=be.box.before(s,r.secretKey);let c=!1;const d=Kr("client",n,t,o,()=>a,()=>c);return t.onMessage(m=>{var S;const f=Hr(m);if(f){if(f.type==="e2ee_ready"){if(c)return;c=!0,(S=o.onReady)==null||S.call(o);return}if(f.type==="e2ee_app"){d.handleAppFrame(f);return}f.type==="e2ee_bin"&&d.handleBinaryFrame(f)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:gn(r.publicKey)})),{role:"client",attachment:n,get ready(){return c},send:d.send,sendBinary:d.sendBinary,close:d.close}}const Gr=16;function Jr(e){const t=be.hash(e);let n="";for(let s=0;s<Gr;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Xr(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function Yr(e){let t=null,n=null;const s=e.sessionId??Jr(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((a,c)=>{const d=e.factory??(()=>new WebSocket(r));try{t=e.factory?d(r):new WebSocket(r)}catch(h){c(h);return}const m=t,f=[],S=[];m.onopen=()=>{m.send(JSON.stringify({type:"relay_register",sessionId:s})),n=Vr({transport:{send:h=>m.send(h),onMessage:h=>f.push(h),onClose:h=>S.push(h),close:()=>m.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>a(),onMessage:h=>{var x;return(x=o.onMessage)==null?void 0:x.call(o,h)},onBinaryMessage:h=>{var x;return(x=o.onMessage)==null?void 0:x.call(o,h.slice().buffer)},onAuthError:h=>{var x;return(x=o.onError)==null?void 0:x.call(o,h)}}})},m.onerror=h=>{var x;m.readyState!==1&&c(h),(x=o.onError)==null||x.call(o,h)},m.onclose=h=>{var x;for(const g of S)g(ut(h.reason));(x=o.onClose)==null||x.call(o,h.code,ut(h.reason))},m.onmessage=h=>{const{data:x}=h;if(typeof x=="string")for(const g of f)g(x)}})},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,a=""){n==null||n.close(),n=null,t==null||t.close(r,a),t=null}};return o}function Qr(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=_n(o)}catch{return null}const a=s.get("relay");if(a){const d={endpoint:a,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 Zr=1;function pt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class ea extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class Et extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class ta{constructor(t){I(this,"transport");I(this,"rpcTimeoutMs");I(this,"now");I(this,"_state","idle");I(this,"_serverId",null);I(this,"_features",{});I(this,"_serverCapabilities",{});I(this,"pending",new Map);I(this,"sessionHandlers",new Set);I(this,"terminalHandlers",new Set);I(this,"fileTransferHandlers",new Set);I(this,"stateHandlers",new Set);I(this,"helloResolve",null);I(this,"helloReject",null);this.options=t,this.transport=t.transport??mn(),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??Zr,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??pt();return new Promise((r,a)=>{const c=s??this.rpcTimeoutMs,d=c>0?setTimeout(()=>{this.pending.delete(o),a(new Et(o))},c):null;this.pending.set(o,{resolve:m=>r(m),reject:a,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=pt();return new Promise((s,o)=>{const r=t>0?setTimeout(()=>{this.pending.delete(n),o(new Et(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(ye).includes(n)){const r=Or(t);if(!r)return;for(const a of this.fileTransferHandlers)a(r);return}const o=Br(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 ea(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 na{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 oa(this.daemon,t)}workspace(t){return new ra(this.daemon,t)}get providers(){return new aa(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 sa{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 oa{constructor(t,n){I(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new sa(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 aa{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 Tt=32*1024;function ia(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 ca{constructor(t){I(this,"pending",new Map);I(this,"nextStream",1);I(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((a,c)=>{this.pending.set(s,{chunks:[],meta:{},resolve:a,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=pt(),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(nt({opcode:"Begin",stream:r,meta:{transferId:s}}));for(let a=0;a<n.length;a+=Tt){const c=n.subarray(a,a+Tt);this.daemon.sendBinary(nt({opcode:"Chunk",stream:r,data:c}))}this.daemon.sendBinary(nt({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:ia(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 la{constructor(t,n={}){I(this,"initialDelayMs");I(this,"maxDelayMs");I(this,"factor");I(this,"jitter");I(this,"maxAttempts");I(this,"setTimer");I(this,"clearTimer");I(this,"random");I(this,"attempt",0);I(this,"timer",null);I(this,"active",!1);I(this,"detachState",null);I(this,"reconnectedHandlers",new Set);I(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 Nt(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 da(e){const t=Qr(e);return t!=null&&t.relay?{mode:"relay",url:Xr(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:Nt(t.host)}:{mode:"direct",url:Nt(e)}}function ua(){return"web-"+Math.random().toString(36).slice(2,10)}const j=he()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=da(n.url);let o;s.mode==="relay"?o=Yr({daemonPublicKey:s.daemonPublicKey}):n.password&&(o=mn(d=>new WebSocket(d,[`pi-studio.bearer.${n.password}`])));const r=new ta({url:s.url,clientId:n.clientId??ua(),clientType:"browser",capabilities:{},transport:o,rpcTimeoutMs:1800*1e3}),a=new na(r),c=new la(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:a,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(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}})),pa=100,fa=480,ha=220,ma=280;function ze(e){return Math.min(fa,Math.max(pa,e))}const k=he()(e=>({host:"ws://127.0.0.1:6767",password:"",cwd:"~",cwdPickerOpen:!1,sessionMenu:null,fileMenu:null,rightSidebarTab:"files",collapsedWorkspaces:new Set,leftSidebarCollapsed:!1,rightSidebarCollapsed:!1,leftSidebarWidth:ha,rightSidebarWidth:ma,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}),openFileMenu:(t,n,s,o)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:o}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:ze(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:ze(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:ze(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:ze(n.rightSidebarWidth+t)}))})),ga="_wrap_emmus_1",_a="_dot_emmus_8",ya="_open_emmus_15",ba="_connecting_emmus_18",wa="_closed_emmus_21",Sa="_idle_emmus_22",xa="_closing_emmus_23",st={wrap:ga,dot:_a,open:ya,connecting:ba,closed:wa,idle:Sa,closing:xa},va={idle:"disconnected",connecting:"connecting…",open:"connected",closing:"disconnecting…",closed:"disconnected"};function ka(){const e=j(n=>n.status),t=j(n=>n.error);return i.jsxs("span",{className:st.wrap,title:t??void 0,children:[i.jsx("span",{className:$(st.dot,st[e])}),va[e]??e]})}const Ia="_toolbar_i9hmh_1",ja="_brand_i9hmh_10",Ca="_version_i9hmh_16",Ea="_sep_i9hmh_22",Ta="_host_i9hmh_28",Na="_password_i9hmh_31",Ra="_sidebarToggles_i9hmh_34",de={toolbar:Ia,brand:ja,version:Ca,sep:Ea,host:Ta,password:Na,sidebarToggles:Ra};function qa(){const e=j(h=>h.status),t=j(h=>h.connect),n=j(h=>h.disconnect),s=k(h=>h.host),o=k(h=>h.setHost),r=k(h=>h.password),a=k(h=>h.setPassword),c=k(h=>h.leftSidebarCollapsed),d=k(h=>h.toggleLeftSidebar),m=k(h=>h.rightSidebarCollapsed),f=k(h=>h.toggleRightSidebar),S=e==="open"||e==="connecting";return i.jsxs("div",{className:de.toolbar,children:[i.jsx("span",{className:de.brand,children:"Pi-Studio"}),i.jsxs("span",{className:de.version,children:["v","0.0.45"]}),i.jsx(ka,{}),i.jsx("div",{className:de.sep}),i.jsx(Ke,{className:de.host,value:s,onChange:h=>o(h.target.value),placeholder:"host:port, ws://…/http://…, or a pasted pairing link",disabled:S}),i.jsx(Ke,{className:de.password,type:"password",value:r,onChange:h=>a(h.target.value),placeholder:"password",disabled:S}),e==="open"||e==="connecting"||e==="closing"?i.jsx(O,{size:"sm",onClick:()=>n(),children:"Disconnect"}):i.jsx(O,{size:"sm",variant:"default",onClick:()=>void t({url:s,password:r||void 0}),children:"Connect"}),i.jsxs("div",{className:de.sidebarToggles,children:[i.jsx(O,{size:"sm",variant:"ghost",iconOnly:!0,title:c?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>d(),children:c?i.jsx(zn,{size:16}):i.jsx(Ln,{size:16})}),i.jsx(O,{size:"sm",variant:"ghost",iconOnly:!0,title:m?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>f(),children:m?i.jsx(Hn,{size:16}):i.jsx(Wn,{size:16})})]})]})}const ft={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let Rt=0;function ae(){return Rt+=1,`row-${Rt}`}function Ma(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 Ba(e,t){return e??`${t.kind}:${Ma(t)}`}function Aa(e){return{...e,streamingAssistantIndex:null,streamingReasoningIndex:null}}function $a(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 a={kind:"assistant",id:ae(),text:"",streaming:!0};n.push(a),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 Da(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 a={kind:"reasoning",id:ae(),text:"",streaming:!0};n.push(a),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 Oa(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 Pa(e,t){var c;const n=Ba(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:Oa(d.tool,t.tool),status:s},{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null})}const a={kind:"tool",id:ae(),callId:n,tool:t.tool,status:s};return r.push(a),{...e,rows:r,toolIndexByCallId:{...e.toolIndexByCallId,[n]:r.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function yt(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 Fa(e,t){const n=yt(e),s={kind:"error",id:ae(),text:t||"turn failed"};return{...n,rows:[...n.rows,s]}}function za(e){const t=yt(e),n={kind:"system",id:ae(),text:"(canceled)"};return{...t,rows:[...t.rows,n]}}function La(e,t){const n={kind:"error",id:ae(),text:t||"error"};return{...e,rows:[...e.rows,n]}}function Ha(e,t,n,s){if(s!==void 0){const r=e.rows.findIndex(a=>a.kind==="user"&&a.pending&&a.clientMessageId===s);if(r!==-1){const a=e.rows.slice(),c=a[r];if((c==null?void 0:c.kind)==="user")return a[r]={...c,text:t,images:n,pending:!1},{...e,rows:a}}}const o={kind:"user",id:ae(),text:t,images:n,clientMessageId:s};return{...e,rows:[...e.rows,o]}}function Wa(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 wn(e,t){switch(t.kind){case"turn_started":return Aa(e);case"user_message":return Ha(e,t.text??"",t.images,t.messageId);case"assistant_message":return $a(e,t.text??"");case"reasoning":return Da(e,t.text??"");case"tool_call":return Pa(e,t);case"turn_completed":return yt(e);case"turn_failed":return Fa(e,t.error);case"turn_canceled":return za(e);case"error":return La(e,t.message);case"queue_update":return Wa(e,t.steering??[]);default:return e}}function Ua(e,t,n,s,o){const r={kind:"user",id:ae(),text:n,images:s,clientMessageId:t,pending:!0,queued:o};return{...e,rows:[...e.rows,r]}}function Ka(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 qt=0;function Va(){return qt+=1,`s-${Date.now().toString(36)}-${qt}`}const E=he()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=Va(),o={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:ft,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 a=r.sessions[n];return a?{sessions:{...r.sessions,[n]:{...a,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 a=wn(r.timeline,s);let c=r.title;if(s.kind==="turn_completed"&&c==="New chat"){const d=a.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:a,title:c}}}})},addOptimisticUserMessage(n,s,o,r,a){e(c=>{const d=c.sessions[n];if(!d)return c;const m=Ua(d.timeline,s,o,r,a);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 a=Ka(r.timeline,s);return{sessions:{...o.sessions,[n]:{...r,timeline:a}}}})},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:o,...r}=s.sessions,a=s.order.filter(d=>d!==n),c=s.activeSessionId===n?a[0]??null:s.activeSessionId;return{sessions:r,order:a,activeSessionId:c}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),Mt=new WeakMap;function Ga(e,t="pi"){const n=Mt.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(o=>({model:o.model,modelProvider:o.modelProvider})).catch(()=>({}));return Mt.set(e,s),s}const Ue=new Map;function Sn(e,t){const n=E.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=Ue.get(t);if(s)return s;const o=(async()=>{if(!n.model){const d=await Ga(e),m=E.getState().sessions[t];d.model&&m&&!m.model&&E.getState().setModel(t,d.model,d.modelProvider)}const r=E.getState().sessions[t];if(!r)throw new Error(`unknown session: ${t}`);const a={provider:"pi",cwd:r.cwd||"~"};r.model&&(a.model=r.model),r.modelProvider&&(a.modelProvider=r.modelProvider);const c=await e.createAgent({config:a,labels:{}});return E.getState().bindAgent(t,c.agentId),c.agentId})();return Ue.set(t,o),o.finally(()=>Ue.delete(t)),o}async function Ja(e,t){var o;const n=E.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((o=Ue.get(t))==null?void 0:o.catch(()=>{}));const s=E.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),E.getState().remove(t),!0):!1}function ot(e,t){return e.filter(n=>n.workspaceCwd===t)}function Le(e){(e==null?void 0:e.kind)==="chat"&&E.getState().activate(e.data.sessionId)}const T=he()((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}})),Le(n)},close(n){let s;e(o=>{const r=o.tabs.find(f=>f.id===n);if(!r)return o;const a=o.tabs.findIndex(f=>f.id===n),c=o.tabs.filter(f=>f.id!==n);let d=o.activeTabId;const m={...o.lastActiveTabByWorkspace};if(d===n){const f=ot(c,r.workspaceCwd),S=Math.min(a,f.length-1),h=f[S];d=(h==null?void 0:h.id)??null,s=h}if(m[r.workspaceCwd]===n){const f=ot(c,r.workspaceCwd)[0];f?m[r.workspaceCwd]=f.id:delete m[r.workspaceCwd]}return{tabs:c,activeTabId:d,lastActiveTabByWorkspace:m}}),Le(s)},activate(n){let s;e(o=>{const r=o.tabs.find(a=>a.id===n);return r?(s=r,{activeTabId:n,activeWorkspaceCwd:r.workspaceCwd,lastActiveTabByWorkspace:{...o.lastActiveTabByWorkspace,[r.workspaceCwd]:n}}):o}),Le(s)},switchWorkspace(n){let s;e(o=>{var m;const r=ot(o.tabs,n),a=o.lastActiveTabByWorkspace[n],d=a&&r.some(f=>f.id===a)?a:((m=r[0])==null?void 0:m.id)??null;return s=r.find(f=>f.id===d),{activeWorkspaceCwd:n,activeTabId:d,lastActiveTabByWorkspace:d?{...o.lastActiveTabByWorkspace,[n]:d}:o.lastActiveTabByWorkspace}}),Le(s)},reorder(n,s){e(o=>{const r=o.tabs.findIndex(m=>m.id===n),a=o.tabs.findIndex(m=>m.id===s);if(r===-1||a===-1||r===a)return o;const c=o.tabs.slice(),[d]=c.splice(r,1);return d?(c.splice(a,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)}))}})),W={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let rt=0;function xn(e){rt+=1,T.getState().open({id:W.terminal(`new-${rt}`),kind:"terminal",label:`Terminal ${rt}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e})}let at=0;function Xa(e){at+=1,T.getState().open({id:W.molecule(`new-${at}`),kind:"molecule",label:`Molecule ${at}`,closable:!0,data:{path:null},workspaceCwd:e})}function bt(e){const t=E.getState().createSession(e);T.getState().open({id:W.chat(t),kind:"chat",label:"New chat",closable:!0,data:{sessionId:t},workspaceCwd:e});const n=j.getState().client;n&&Sn(n,t).catch(()=>{})}function ht(e){const t=T.getState().tabs.find(s=>s.id===e);if(T.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;Ja(j.getState().client,n)}const re=he()(e=>({rootPath:"",expanded:new Set,expandedByRoot:new Map,draft: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}}),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})}));let _e=null;const mt=new Set;function Ya(e){return mt.add(e),()=>mt.delete(e)}async function Ze(e){var t;if(_e)return _e;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");_e="/home/"+((o==null?void 0:o.name)||"user")}catch{return"/tmp"}for(const n of mt)n(_e);return _e}function Qa(){return _e}async function Za(e,t){return t==="~"||t.startsWith("~/")?await Ze(e)+t.slice(1):t}function wt(){const e=j(o=>o.client),t=j(o=>o.status),[n,s]=w.useState(Qa());return w.useEffect(()=>Ya(s),[]),w.useEffect(()=>{!e||t!=="open"||n||Ze(e)},[e,t,n]),n}const ei="_dot_gfh8u_3",ti="_spinner_gfh8u_16",Bt={dot:ei,spinner:ti};function ni(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 At=8,si={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 oi({className:e,...t}){const n=ni(t);if(!n)return null;const s=t.status==="running"&&!t.requiresAttention,o=s?"var(--pi-color-accentBright, #a2b4d7)":si[n]??"currentColor";return i.jsx("span",{className:`${s?Bt.spinner:Bt.dot}${e?` ${e}`:""}`,style:s?{borderTopColor:o,borderRightColor:o}:{width:At,height:At,backgroundColor:o},role:"presentation"})}const ri={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function ai(e){return ri[e]??"idle"}const ii="_wrap_14der_1",ci="_header_14der_7",li="_list_14der_23",di="_item_14der_28",ui="_active_14der_37",pi="_title_14der_41",fi="_meta_14der_50",hi="_menuBtn_14der_58",mi="_workspaceGroup_14der_76",gi="_workspaceHeader_14der_79",_i="_workspaceChevron_14der_92",yi="_workspaceIcon_14der_103",bi="_workspaceLabel_14der_107",wi="_workspaceCount_14der_113",Si="_newSessionBtn_14der_118",xi="_workspaceSessions_14der_130",vi="_emptyState_14der_133",A={wrap:ii,header:ci,list:li,item:di,active:ui,title:pi,meta:fi,menuBtn:hi,workspaceGroup:mi,workspaceHeader:gi,workspaceChevron:_i,workspaceIcon:yi,workspaceLabel:bi,workspaceCount:wi,newSessionBtn:Si,workspaceSessions:xi,emptyState:vi};function ki({session:e,active:t,onSelect:n,onOpenMenu:s}){return i.jsxs("div",{className:$(A.item,t&&A.active),onClick:n,onContextMenu:o=>{o.preventDefault(),s(o.clientX,o.clientY)},children:[i.jsxs("div",{className:A.title,children:[i.jsx(oi,{status:ai(e.status),showInactive:!0}),i.jsx("span",{children:e.title})]}),i.jsxs("div",{className:A.meta,children:[e.cwd||"~"," · ",e.agentId?e.agentId.slice(0,8):"new"," ·"," ",e.userMessageCount," msgs"]}),i.jsx("button",{type:"button",className:A.menuBtn,title:"Actions",onClick:o=>{o.stopPropagation();const r=o.currentTarget.getBoundingClientRect();s(r.left,r.bottom)},children:i.jsx(Wt,{size:14})})]})}const Ii="_trigger_42hju_1",ji="_content_42hju_12",Ci="_item_42hju_21",Ei="_danger_42hju_38",Ti="_sep_42hju_41",Z={trigger:Ii,content:ji,item:Ci,danger:Ei,sep:Ti};function Ni(){const e=k(g=>g.sessionMenu),t=k(g=>g.closeSessionMenu),n=j(g=>g.client),s=w.useRef(null),[o,r]=w.useState(!1);w.useEffect(()=>{r(e!==null)},[e]);const a=E(g=>e?g.sessions[e.sessionId]:void 0);if(!e)return null;const c=!!(a!=null&&a.agentId)&&(a==null?void 0:a.status)==="running";function d(g){r(g),g||t()}function m(){if(!a)return;const g=window.prompt("Rename:",a.title);if(g!=null&&g.trim()){const _=g.trim();E.getState().setTitle(a.id,_),T.getState().updateLabel(W.chat(a.id),_),a.agentId&&(n==null||n.agent(a.agentId).update({title:_}).catch(()=>{}))}t()}function f(){a!=null&&a.agentId&&(n==null||n.agent(a.agentId).interrupt().catch(()=>{})),t()}function S(g){E.getState().remove(g),T.getState().close(W.chat(g))}async function h(){if(a){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!a.agentId){S(a.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(a.agentId).archive(),S(a.id)}catch(g){window.alert(`Failed to archive: ${g instanceof Error?g.message:String(g)}`)}}}async function x(){if(a){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!a.agentId){S(a.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(a.agentId).delete(),S(a.id)}catch(g){window.alert(`Failed to delete: ${g instanceof Error?g.message:String(g)}`)}}}return i.jsxs(Ge,{open:o,onOpenChange:d,modal:!1,children:[i.jsx(Je,{asChild:!0,children:i.jsx("button",{ref:s,type:"button",className:Z.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),i.jsx(Xe,{children:i.jsxs(Ye,{className:Z.content,align:"start",sideOffset:2,children:[i.jsx(H,{className:Z.item,onSelect:m,children:"Rename"}),i.jsx(H,{className:Z.item,disabled:!c,onSelect:f,children:"Stop agent"}),i.jsx(ct,{className:Z.sep}),i.jsx(H,{className:`${Z.item} ${Z.danger}`,onSelect:h,children:"Archive"}),i.jsx(H,{className:`${Z.item} ${Z.danger}`,onSelect:x,children:"Delete permanently"})]})})]})}function Ri({label:e,cwd:t,sessionCount:n,collapsed:s,onToggleCollapsed:o,onNewSession:r}){return i.jsxs("div",{className:A.workspaceHeader,onClick:o,title:t,children:[i.jsx("button",{type:"button",className:A.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:a=>{a.stopPropagation(),o()},children:s?i.jsx(gt,{size:13}):i.jsx(Ut,{size:13})}),i.jsx(Un,{size:13,className:$(A.workspaceIcon)}),i.jsx("span",{className:A.workspaceLabel,children:e}),i.jsx("span",{className:A.workspaceCount,children:n}),i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:"New conversation",className:A.newSessionBtn,onClick:a=>{a.stopPropagation(),r()},children:i.jsx(Kt,{size:13})})]})}function we(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function vn(e,t,n){const s=new Map;for(const o of e){const r=t[o];if(!r)continue;const a=we(r.cwd||"~",n),c=s.get(a);c?c.push(r):s.set(a,[r])}return Array.from(s,([o,r])=>({cwd:o,sessions:r}))}function qi(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function Mi(){const e=E(_=>_.order),t=E(_=>_.sessions),n=E(_=>_.activeSessionId),s=E(_=>_.activate),o=T(_=>_.open),r=j(_=>_.status),a=k(_=>_.openSessionMenu),c=k(_=>_.setCwd),d=k(_=>_.openCwdPicker),m=k(_=>_.collapsedWorkspaces),f=k(_=>_.toggleWorkspaceCollapsed),S=wt();function h(_){const y=we(_||"~",S);bt(y)}function x(_){s(_);const y=t[_],M=we((y==null?void 0:y.cwd)||"~",S);y!=null&&y.cwd&&c(y.cwd),o({id:W.chat(_),kind:"chat",label:(y==null?void 0:y.title)??"Chat",closable:!0,data:{sessionId:_},workspaceCwd:M})}const g=vn(e,t,S);return i.jsxs("div",{className:A.wrap,children:[i.jsxs("div",{className:A.header,children:[i.jsx("h3",{children:"Workspaces"}),i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:r!=="open"?"Connect to open a workspace":"Open a workspace folder",disabled:r!=="open",onClick:()=>d(),children:i.jsx(Vt,{size:14})})]}),i.jsxs("div",{className:A.list,children:[g.length===0&&i.jsx("div",{className:A.emptyState,children:r!=="open"?"Not connected":"No workspaces — open a folder to start"}),g.map(_=>{const y=m.has(_.cwd);return i.jsxs("div",{className:A.workspaceGroup,children:[i.jsx(Ri,{label:qi(_.cwd),cwd:_.cwd,sessionCount:_.sessions.length,collapsed:y,onToggleCollapsed:()=>f(_.cwd),onNewSession:()=>h(_.cwd)}),!y&&i.jsx("div",{className:A.workspaceSessions,children:_.sessions.map(M=>i.jsx(ki,{session:M,active:M.id===n,onSelect:()=>x(M.id),onOpenMenu:(J,C)=>a(M.id,J,C)},M.id))})]},_.cwd)})]}),i.jsx(Ni,{})]})}const Bi="_strip_8jveh_1",Ai="_tab_8jveh_10",$i="_active_8jveh_26",Di="_icon_8jveh_30",Oi="_label_8jveh_35",Pi="_close_8jveh_40",Fi="_newTab_8jveh_50",zi="_content_8jveh_73",Li="_item_8jveh_82",Hi="_itemIcon_8jveh_96",F={strip:Bi,tab:Ai,active:$i,icon:Di,label:Oi,close:Pi,newTab:Fi,content:zi,item:Li,itemIcon:Hi},Wi={chat:Xt,file:Vn,diff:Kn,terminal:Jt,molecule:Gt};function Ui({tab:e}){const t=T(f=>f.activeTabId),n=T(f=>f.activate),s=Wi[e.kind],{attributes:o,listeners:r,setNodeRef:a,transform:c,transition:d,isDragging:m}=hs({id:e.id});return i.jsxs("div",{ref:a,className:$(F.tab,e.id===t&&F.active),style:{transform:ms.Transform.toString(c),transition:d,opacity:m?.5:1},onClick:()=>n(e.id),onAuxClick:f=>{f.button===1&&e.closable&&ht(e.id)},title:e.label,...o,...r,children:[i.jsx("span",{className:F.icon,children:i.jsx(s,{size:13})}),i.jsx("span",{className:F.label,children:e.label}),e.closable&&i.jsx("span",{className:F.close,onClick:f=>{f.stopPropagation(),ht(e.id)},children:i.jsx(it,{size:12})})]})}function Ki({workspaceCwd:e}){const t=e??"~";return i.jsxs(Ge,{children:[i.jsx(Je,{asChild:!0,children:i.jsx("button",{type:"button",className:F.newTab,title:"New tab",disabled:!e,children:i.jsx(Kt,{size:14})})}),i.jsx(Xe,{children:i.jsxs(Ye,{className:F.content,align:"start",sideOffset:4,children:[i.jsxs(H,{className:F.item,onSelect:()=>bt(t),children:[i.jsx(Xt,{size:13,className:F.itemIcon}),"New chat"]}),i.jsxs(H,{className:F.item,onSelect:()=>xn(t),children:[i.jsx(Jt,{size:13,className:F.itemIcon}),"New terminal"]}),i.jsxs(H,{className:F.item,onSelect:()=>Xa(t),children:[i.jsx(Gt,{size:13,className:F.itemIcon}),"New molecule view"]})]})})]})}function Vi(){const e=T(a=>a.tabs),t=T(a=>a.activeWorkspaceCwd),n=T(a=>a.reorder),s=e.filter(a=>a.workspaceCwd===t),o=is(cs(fs,{activationConstraint:{distance:4}}));function r(a){const{active:c,over:d}=a;!d||c.id===d.id||n(String(c.id),String(d.id))}return i.jsxs("div",{className:F.strip,children:[i.jsx(ls,{sensors:o,collisionDetection:ds,onDragEnd:r,children:i.jsx(us,{items:s.map(a=>a.id),strategy:ps,children:s.map(a=>i.jsx(Ui,{tab:a},a.id))})}),i.jsx(Ki,{workspaceCwd:t})]})}const Gi="_spinner_1tgzp_3",Ji={spinner:Gi},Xi={xs:12,sm:16,md:20,lg:24},Yi={xs:1,sm:2,md:2,lg:3};function kn({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const o=typeof e=="number"?e:Xi[e],r=typeof e=="number"?2:Yi[e];return i.jsx("span",{className:`${Ji.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:o,height:o,borderWidth:r,color:t}})}const Qi=w.lazy(()=>se(()=>import("./ChatPanel-YUfYdTdZ.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])).then(e=>({default:e.ChatPanel}))),$t=w.lazy(()=>se(()=>import("./FilePanel-DCZ6Vntr.js"),__vite__mapDeps([16,1,7,6,5,2,17,11,12,18,19,3,13,14])).then(e=>({default:e.FilePanel}))),Zi=w.lazy(()=>se(()=>import("./TerminalPanel-qx_HdM7y.js"),__vite__mapDeps([20,1,21,22,7,6,5,2,3,13,14,23])).then(e=>({default:e.TerminalPanel}))),ec=w.lazy(()=>se(()=>import("./MoleculeViewerPanel-BZA00vSx.js"),__vite__mapDeps([24,1,25,26,9,10,27,2,17,7,6,5,3,13,14,28])).then(e=>({default:e.MoleculeViewerPanel}))),tc={chat:Qi,file:$t,diff:$t,terminal:Zi,molecule:ec},nc="_area_z7u01_1",sc="_panel_z7u01_7",oc="_active_z7u01_14",rc="_empty_z7u01_17",ac="_emptyStack_z7u01_25",ic="_emptyTitle_z7u01_35",cc="_emptyHint_z7u01_39",ee={area:nc,panel:sc,active:oc,empty:rc,emptyStack:ac,emptyTitle:ic,emptyHint:cc};function lc(){const e=T(a=>a.tabs),t=T(a=>a.activeTabId),n=T(a=>a.activeWorkspaceCwd),s=j(a=>a.status),o=k(a=>a.openCwdPicker),r=e.some(a=>a.workspaceCwd===n);return n===null?i.jsx("div",{className:ee.area,children:i.jsxs("div",{className:ee.emptyStack,children:[i.jsx("div",{className:ee.emptyTitle,children:"No workspace open"}),i.jsx("div",{className:ee.emptyHint,children:"Open a project folder to start a chat."}),i.jsx(O,{size:"sm",variant:"secondary",leftIcon:i.jsx(Vt,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>o(),children:"Open Workspace"})]})}):r?i.jsx("div",{className:ee.area,children:e.map(a=>{const c=tc[a.kind];return i.jsx("div",{className:$(ee.panel,a.id===t&&ee.active),children:i.jsx(w.Suspense,{fallback:i.jsx(kn,{size:"md"}),children:i.jsx(c,{tab:a})})},a.id)})}):i.jsx("div",{className:ee.area,children:i.jsx("div",{className:ee.empty,children:"No open tabs in this workspace"})})}const xe={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 dc(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function uc(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function In(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:uc(o.map(dc))}}function pc(e,t=!0){const n=j(s=>s.client);return Lt({queryKey:xe.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return In(n,e)},enabled:!!n&&!!e&&t})}function fc(e){const t=j(o=>o.client),n=w.useMemo(()=>Array.from(e),[e]),s=On({queries:n.map(o=>({queryKey:xe.explorer(o),queryFn:()=>{if(!t)throw new Error("not connected");return In(t,o)},enabled:!!t&&!!o}))});return w.useMemo(()=>{const o=new Map;return n.forEach((r,a)=>{const c=s[a];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 hc(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function mc(e,t){const n=new Set,s=e.connection.onSessionMessage(o=>{const r=o;hc(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(a=>{const c=a;(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 gc(e){const t=j(a=>a.client),n=Se(),s=w.useRef(null),o=w.useRef(null),r=Array.from(e).toSorted().join("\0");w.useEffect(()=>{var a,c;t&&(o.current!==t&&((a=s.current)==null||a.dispose(),s.current=mc(t,d=>{n.invalidateQueries({queryKey:xe.explorer(d)})}),o.current=t),(c=s.current)==null||c.sync(new Set(r?r.split("\0"):[])))},[t,r,n]),w.useEffect(()=>()=>{var a;(a=s.current)==null||a.dispose(),s.current=null,o.current=null},[])}const Dt=new WeakMap;function Ot(e){let t=Dt.get(e);return t||(t=new ca(e),t.start(),Dt.set(e,t)),t}function _c(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 jn(){const e=j(o=>o.daemon),t=Se(),n=w.useCallback(async(o,r)=>{if(!e)throw new Error("not connected");const a=o?`${o}/${r.name}`:r.name,c=new Uint8Array(await r.arrayBuffer());await Ot(e).upload(a,c),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=w.useCallback(async o=>{if(!e)throw new Error("not connected");const r=await Ot(e).download(o);_c(r.bytes,r.fileName||o.split("/").pop()||"download",r.mimeType)},[e]);return{upload:n,saveToDisk:s}}const yc=w.lazy(()=>se(()=>import("./TextViewer-CDXNfUrU.js"),__vite__mapDeps([29,1,30,2,7,6,5,31,27,18,19,3,13,14,32])).then(e=>({default:e.TextViewer}))),bc=w.lazy(()=>se(()=>import("./MarkdownFileViewer-BDmo3la-.js"),__vite__mapDeps([33,1,30,2,7,6,5,31,4,8,18,19,3,13,14,34])).then(e=>({default:e.MarkdownFileViewer}))),wc=w.lazy(()=>se(()=>import("./ImageViewer-BKflylHn.js"),__vite__mapDeps([35,1,27,2,18,19,7,6,5,3,13,14,36])).then(e=>({default:e.ImageViewer}))),Sc=w.lazy(()=>se(()=>import("./VideoViewer-D4XJC0lT.js"),__vite__mapDeps([37,1,27,2,18,19,7,6,5,3,13,14,38])).then(e=>({default:e.VideoViewer}))),xc=w.lazy(()=>se(()=>import("./BinaryFallbackViewer-DN2oT6N7.js"),__vite__mapDeps([39,1,27,2,3,7,6,5,13,14,40])).then(e=>({default:e.BinaryFallbackViewer}))),xu={text:yc,markdown:bc,image:wc,video:Sc,binary:xc},vc={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"},kc=[["image/","image"],["video/","video"]];function Cn(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const Ic={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},jc={poscar:!0,contcar:!0};function Cc(e){if(Ic[Cn(e)])return!0;const t=e.split("/").pop()??e;return!!jc[t.toLowerCase()]}function vu(e,t={}){const n=vc[Cn(e)];if(n)return n;const s=t.mimeHint??"";for(const[o,r]of kc)if(s.startsWith(o))return r;return t.isBinary?"binary":"text"}function Ec(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function En(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 a=o.get(t);if(!a||a.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(a.isError){const d=a.error instanceof Error?a.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:d});return}for(const d of((c=a.listing)==null?void 0:c.entries)??[])Tc(e,t,d,n,s,o,r)}function Tc(e,t,n,s,o,r,a){const c=Ec(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&&En(e,c,s+1,o,r,a)}function Nc(e,t,n,s){if(!e)return[];const o=[];return En(o,e,0,t,n,s),o}const Rc="_container_1098n_1",qc="_header_1098n_7",Mc="_uploadButton_1098n_14",Bc="_hiddenInput_1098n_33",Ac="_status_1098n_36",$c="_statusError_1098n_37",Dc="_rowAction_1098n_50",Oc="_item_1098n_65",Pc="_dropOverlay_1098n_68",Fc="_list_1098n_83",zc="_chevronSlot_1098n_102",Lc="_chevron_1098n_102",Hc="_chevronOpen_1098n_113",Wc="_icon_1098n_116",Uc="_name_1098n_123",Kc="_dirName_1098n_128",Vc="_statusRow_1098n_134",Gc="_statusRowError_1098n_145",Jc="_emptyState_1098n_148",Xc="_draftInput_1098n_154",N={container:Rc,header:qc,uploadButton:Mc,hiddenInput:Bc,status:Ac,statusError:$c,rowAction:Dc,item:Oc,dropOverlay:Pc,list:Fc,chevronSlot:zc,chevron:Lc,chevronOpen:Hc,icon:Wc,name:Uc,dirName:Kc,statusRow:Vc,statusRowError:Gc,emptyState:Jc,draftInput:Xc};function Yc({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[o,r]=w.useState("");return i.jsxs("div",{className:N.item,style:t,onClick:a=>a.stopPropagation(),children:[i.jsx("span",{className:N.chevronSlot}),i.jsx("span",{className:N.icon,children:e==="directory"?i.jsx(Be,{size:14}):i.jsx(Yt,{size:14})}),i.jsx("input",{className:N.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:o,onChange:a=>r(a.target.value),onKeyDown:a=>{if(a.key==="Enter"){a.preventDefault();const c=o.trim();c?n(c):s()}else a.key==="Escape"&&(a.preventDefault(),s())},onBlur:s})]})}const Qc=14;function Zc({row:e,onToggle:t,onOpenFile:n,onContextMenu:s,onSubmitDraft:o,onCancelDraft:r}){const a={paddingLeft:8+e.depth*Qc};if(e.kind==="loading")return i.jsx("div",{className:N.statusRow,style:a,children:"Loading…"});if(e.kind==="error")return i.jsx("div",{className:$(N.statusRow,N.statusRowError),style:a,children:e.message??"failed to load"});if(e.kind==="draft")return i.jsx(Yc,{draftKind:e.draftKind,indentStyle:a,onSubmit:d=>o(e.parentPath,d),onCancel:r});const c=e.kind==="directory";return i.jsxs("div",{className:N.item,style:a,onClick:()=>c?t(e.path):n(e.path),onContextMenu:d=>{d.preventDefault(),s(e.path,c,d.clientX,d.clientY)},children:[i.jsx("span",{className:N.chevronSlot,children:c&&i.jsx(gt,{size:12,className:$(N.chevron,e.expanded&&N.chevronOpen)})}),i.jsx("span",{className:N.icon,children:c?i.jsx(Be,{size:14}):i.jsx(Yt,{size:14})}),i.jsx("span",{className:c?N.dirName:N.name,children:e.name}),i.jsx("button",{type:"button",className:N.rowAction,title:"Actions",onClick:d=>{d.stopPropagation();const m=d.currentTarget.getBoundingClientRect();s(e.path,c,m.left,m.bottom)},children:i.jsx(Wt,{size:12})})]})}const el="_trigger_ngv1a_1",tl="_content_ngv1a_12",nl="_item_ngv1a_21",sl="_danger_ngv1a_34",ol="_sep_ngv1a_37",te={trigger:el,content:tl,item:nl,danger:sl,sep:ol};function rl(){const e=k(g=>g.fileMenu),t=k(g=>g.closeFileMenu),n=j(g=>g.client),s=re(g=>g.startDraft),{saveToDisk:o}=jn(),r=Se(),a=w.useRef(null),[c,d]=w.useState(!1);if(w.useEffect(()=>{d(e!==null)},[e]),!e)return null;const m=e.path.split("/").pop()||e.path;function f(g){d(g),g||t()}async function S(){if(e){t();try{await o(e.path)}catch(g){window.alert(`Failed to download: ${g instanceof Error?g.message:String(g)}`)}}}async function h(){if(!e)return;const g=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${g}? "${m}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{const _=await n.connection.request("file_delete_request",{path:e.path});if(!_.ok)throw new Error(_.error??"delete failed");await r.invalidateQueries({queryKey:["explorer"]})}catch(_){window.alert(`Failed to delete: ${_ instanceof Error?_.message:String(_)}`)}}function x(g){if(!e)return;const _=e.isDirectory?e.path:e.path.split("/").slice(0,-1).join("/")||"/";t(),s(_,g)}return i.jsxs(Ge,{open:c,onOpenChange:f,modal:!1,children:[i.jsx(Je,{asChild:!0,children:i.jsx("button",{ref:a,type:"button",className:te.trigger,style:{left:e.x,top:e.y},"aria-hidden":!0,tabIndex:-1})}),i.jsx(Xe,{children:i.jsxs(Ye,{className:te.content,align:"start",sideOffset:2,children:[i.jsx(H,{className:te.item,onSelect:()=>x("file"),children:"New File"}),i.jsx(H,{className:te.item,onSelect:()=>x("directory"),children:"New Folder"}),i.jsx(ct,{className:te.sep}),!e.isDirectory&&i.jsxs(i.Fragment,{children:[i.jsx(H,{className:te.item,onSelect:S,children:"Download"}),i.jsx(ct,{className:te.sep})]}),i.jsx(H,{className:`${te.item} ${te.danger}`,onSelect:h,children:"Delete"})]})})]})}const al={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 Tn(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(al[r]??r??"Failed to create")}return o.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const il=24;function cl(){const e=j(p=>p.client),t=re(p=>p.rootPath),n=re(p=>p.expanded),s=re(p=>p.setRoot),o=re(p=>p.toggle),r=re(p=>p.draft),a=re(p=>p.startDraft),c=re(p=>p.cancelDraft),d=T(p=>p.activeWorkspaceCwd),m=T(p=>p.open),{upload:f}=jn(),S=k(p=>p.openFileMenu),h=Se(),[x,g]=w.useState(null),[_,y]=w.useState(!1),[M,J]=w.useState(null),C=w.useRef(null),Ae=w.useRef(null),ve=w.useRef(null);w.useEffect(()=>{if(!e)return;const p=d||"~";ve.current!==p&&(ve.current=p,Za(e,p).then(R=>s(R)))},[e,d,s]);const me=fc(n);gc(n);const ie=w.useMemo(()=>Nc(t,n,me,r),[t,n,me,r]),ce=Pn({count:ie.length,getScrollElement:()=>Ae.current,estimateSize:()=>il,overscan:12,getItemKey:p=>{var R;return((R=ie[p])==null?void 0:R.path)??p}});function le(p){if(Cc(p)){m({id:W.molecule(p),kind:"molecule",label:p.split("/").pop()||p,closable:!0,data:{path:p},workspaceCwd:d||"~"});return}m({id:W.file(p),kind:"file",label:p.split("/").pop()||p,closable:!0,data:{path:p},workspaceCwd:d||"~"})}async function et(p,R){const z=(r==null?void 0:r.kind)??"file";if(c(),!!e)try{const U=await Tn(e,p,R,z);await h.invalidateQueries({queryKey:xe.explorer(p)}),g({text:`Created ${U}`,error:!1}),z==="file"&&le(U)}catch(U){g({text:U instanceof Error?U.message:"Failed to create",error:!0})}}async function ke(p,R){var De;if(!R.length||!p)return;const z=(De=me.get(p))==null?void 0:De.listing,U=new Set((z==null?void 0:z.entries.map(X=>X.name))??[]),Ie=R.filter(X=>U.has(X.name));if(Ie.length>0){const X=Ie.map(qn=>qn.name).join(", ");if(!window.confirm(`Overwrite ${Ie.length>1?"these files":"this file"}? ${X}`))return}g({text:`Uploading ${R.length} file${R.length>1?"s":""}…`,error:!1});try{for(const X of R)await f(p,X);g({text:`Uploaded ${R.length} file${R.length>1?"s":""}`,error:!1})}catch(X){g({text:`Upload failed: ${X instanceof Error?X.message:"unknown"}`,error:!0})}}function $e(p){p.preventDefault(),y(!1);const R=M??t;J(null);const z=Array.from(p.dataTransfer.files);ke(R,z)}function tt(p){p.dataTransfer.types.includes("Files")&&(p.preventDefault(),y(!0))}return e?i.jsxs("div",{className:N.container,onDragOver:tt,onDragLeave:()=>y(!1),onDrop:$e,children:[i.jsxs("div",{className:N.header,children:[i.jsx("button",{type:"button",className:N.uploadButton,onClick:()=>a(t,"file"),disabled:!t,title:"New file in workspace root",children:i.jsx(Gn,{size:12})}),i.jsx("button",{type:"button",className:N.uploadButton,onClick:()=>a(t,"directory"),disabled:!t,title:"New folder in workspace root",children:i.jsx(Qt,{size:12})}),i.jsxs("button",{type:"button",className:N.uploadButton,onClick:()=>{var p;return(p=C.current)==null?void 0:p.click()},disabled:!t,title:"Upload files to the workspace root",children:[i.jsx(Jn,{size:12}),i.jsx("span",{children:"Upload"})]}),i.jsx("input",{ref:C,type:"file",multiple:!0,className:N.hiddenInput,onChange:p=>{ke(t,Array.from(p.target.files??[])),p.target.value=""}})]}),x&&i.jsx("div",{className:x.error?N.statusError:N.status,children:x.text}),i.jsxs("div",{className:N.list,ref:Ae,children:[ie.length===0&&i.jsx("div",{className:N.emptyState,children:"No files loaded"}),i.jsx("div",{style:{position:"relative",height:ce.getTotalSize()},children:ce.getVirtualItems().map(p=>{const R=ie[p.index];return R?i.jsx("div",{"data-index":p.index,style:{position:"absolute",top:0,left:0,width:"100%",height:p.size,transform:`translateY(${p.start}px)`},onDragEnter:()=>{R.kind==="directory"&&J(R.path)},children:i.jsx(Zc,{row:R,onToggle:o,onOpenFile:le,onContextMenu:(z,U,Ie,De)=>S(z,U,Ie,De),onSubmitDraft:(z,U)=>void et(z,U),onCancelDraft:c})},p.key):null})})]}),_&&i.jsx("div",{className:N.dropOverlay,children:"Drop to upload"}),i.jsx(rl,{})]}):i.jsx("div",{className:N.emptyState,children:"Connect to browse files"})}const Pt={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},Q=he()(e=>({subscribedCwd:null,changes:[],...Pt,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],...Pt});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})}})),ll="_list_1pgby_1",dl="_summary_1pgby_4",ul="_item_1pgby_11",pl="_badge_1pgby_23",fl="_added_1pgby_30",hl="_modified_1pgby_34",ml="_deleted_1pgby_38",gl="_name_1pgby_42",_l="_emptyState_1pgby_47",ue={list:ll,summary:dl,item:ul,badge:pl,added:fl,modified:hl,deleted:ml,name:gl,emptyState:_l},yl={added:"A",modified:"M",deleted:"D"};function bl(){const t=T(r=>r.activeWorkspaceCwd)||"~",n=Q(r=>r.changes),s=T(r=>r.open);function o(r,a){s({id:W.diff(r,a),kind:"diff",label:r.split("/").pop()||r,closable:!0,data:{path:r,staged:a},workspaceCwd:t})}return n.length===0?i.jsx("div",{className:ue.emptyState,children:"No changes detected"}):i.jsxs("div",{className:ue.list,children:[i.jsxs("div",{className:ue.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((r,a)=>i.jsxs("div",{className:ue.item,onClick:()=>o(r.path,r.staged),children:[i.jsx("span",{className:$(ue.badge,ue[r.status]),children:yl[r.status]}),i.jsx("span",{className:ue.name,children:r.path})]},`${r.path}-${r.staged}-${a}`))]})}const wl="_wrap_r37ok_1",Sl="_tabBar_r37ok_7",xl="_tabBtn_r37ok_13",vl="_active_r37ok_26",kl="_refreshBtn_r37ok_30",Il="_content_r37ok_34",oe={wrap:wl,tabBar:Sl,tabBtn:xl,active:vl,refreshBtn:kl,content:Il};function jl(){const e=k(c=>c.rightSidebarTab),t=k(c=>c.setRightSidebarTab),s=T(c=>c.activeWorkspaceCwd)||"~",o=j(c=>c.client),r=Se();function a(){r.invalidateQueries({queryKey:["explorer"]}),o&&s&&o.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return i.jsxs("div",{className:oe.wrap,children:[i.jsxs("div",{className:oe.tabBar,children:[i.jsx("button",{type:"button",className:$(oe.tabBtn,e==="files"&&oe.active),onClick:()=>t("files"),children:"Files"}),i.jsx("button",{type:"button",className:$(oe.tabBtn,e==="changes"&&oe.active),onClick:()=>t("changes"),children:"Changes"}),i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:oe.refreshBtn,onClick:a,children:i.jsx(Xn,{size:13})})]}),i.jsx("div",{className:oe.content,children:e==="files"?i.jsx(cl,{}):i.jsx(bl,{})})]})}const Nn=he()(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}})}})),Cl=12e3;function El(e,t){return e==="running"&&t!=="running"}function Ft(e,t){var s,o,r,a,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),((a=t.tokens)==null?void 0:a.total)!==void 0&&(n.totalTokens=t.tokens.total),((c=t.tokens)==null?void 0:c.input)!==void 0&&(n.inputTokens=t.tokens.input),((d=t.tokens)==null?void 0:d.output)!==void 0&&(n.outputTokens=t.tokens.output),t.cost!==void 0&&(n.cost=t.cost),t.model!==void 0&&(n.model=t.model,E.getState().setModel(e,t.model)),Nn.getState().setStats(e,n)}function Tl(e){const t=j(c=>c.client),n=j(c=>c.status),s=E(c=>{var d;return e?((d=c.sessions[e])==null?void 0:d.agentId)??null:null}),o=E(c=>{var d;return e?(d=c.sessions[e])==null?void 0:d.status:void 0}),r=w.useRef(!1),a=w.useRef(void 0);w.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let c=!1;const d=async()=>{if(!r.current){r.current=!0;try{const f=await t.agent(s).sessionStats();c||Ft(e,f)}catch{}finally{r.current=!1}}};d();const m=setInterval(()=>void d(),Cl);return()=>{c=!0,clearInterval(m)}},[n,t,e,s]),w.useEffect(()=>{const c=a.current;a.current=o,El(c,o)&&(n!=="open"||!t||!e||!s||(r.current=!1,t.agent(s).sessionStats().then(d=>Ft(e,d)).catch(()=>{})))},[o,n,t,e,s])}function Nl(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 Rl(e){const t=j(r=>r.client),n=Q(r=>r.applyProjection),s=Q(r=>r.setSubscribedCwd),o=w.useRef(t);return o.current=t,w.useEffect(()=>{if(!t||!e)return;let r=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const a=t.connection.onSessionMessage(c=>{if(r)return;const d=c;Nl(d)&&d.cwd===e&&n(d.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{r=!0,a(),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 St="--";function Te(e){return e===void 0?St:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function ql(e){if(e==null)return St;const t=e<=1?e*100:e;return`${Math.round(t)}%`}function Ml(e){if(e===void 0)return St;const t=e<1?4:2;return`$${e.toFixed(t)}`}function Bl(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function Al(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}function $l(e,t=!0){const n=j(s=>s.client);return Lt({queryKey:xe.providerModels(e),queryFn:async()=>{if(!n)throw new Error("not connected");return(await n.providers.listModels(e)).models},enabled:!!n&&!!e&&t})}function Dl(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 Ol(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 Pl(e){const t=new Set;return e.filter(n=>t.has(n.id)?!1:(t.add(n.id),!0))}const Fl="_content_1imfv_4",zl="_search_1imfv_17",Ll="_list_1imfv_35",Hl="_item_1imfv_40",Wl="_itemActive_1imfv_54",Ul="_checkSlot_1imfv_58",Kl="_label_1imfv_67",Vl="_modelId_1imfv_73",Gl="_state_1imfv_80",Jl="_stateError_1imfv_89",Xl="_commandContent_1imfv_99",Yl="_commandList_1imfv_102",Ql="_commandItem_1imfv_107",Zl="_commandItemHeader_1imfv_140",ed="_commandKindBadge_1imfv_154",td="_commandKindExtension_1imfv_173",nd="_commandKindPrompt_1imfv_178",sd="_commandKindSkill_1imfv_183",od="_commandDescription_1imfv_188",Y={content:Fl,search:zl,list:Ll,item:Hl,itemActive:Wl,checkSlot:Ul,label:Kl,modelId:Vl,state:Gl,stateError:Jl,commandContent:Xl,commandList:Yl,commandItem:Ql,commandItemHeader:Zl,commandKindBadge:ed,commandKindExtension:td,commandKindPrompt:nd,commandKindSkill:sd,commandDescription:od};function rd({currentModel:e,provider:t,onSelect:n,renderTrigger:s}){const[o,r]=w.useState(!1),[a,c]=w.useState(""),d=w.useRef(null),{data:m=[],isLoading:f,isError:S,error:h}=$l(t,o),x=Pl(Ol(m,e));w.useEffect(()=>{var C;o&&(c(""),(C=d.current)==null||C.focus())},[o]);const g=new Map(x.map(C=>[C.id,C.provider])),_=x.map(C=>({value:C.id,label:C.label??C.id,description:C.id})),y=Dl(_,a),M=h instanceof Error?h.message:"Failed to load models";function J(C){C.stopPropagation(),C.key==="Escape"&&r(!1)}return i.jsxs(Ge,{open:o,onOpenChange:r,modal:!1,children:[i.jsx(Je,{asChild:!0,children:s(e)}),i.jsx(Xe,{children:i.jsxs(Ye,{className:Y.content,align:"start",sideOffset:4,children:[i.jsx("input",{ref:d,className:Y.search,placeholder:"Search models…",value:a,onChange:C=>c(C.target.value),onKeyDown:J}),f&&i.jsx("div",{className:Y.state,children:i.jsx(kn,{size:"sm"})}),!f&&S&&i.jsx("div",{className:Y.stateError,children:M}),!f&&!S&&y.length===0&&i.jsx("div",{className:Y.state,children:"No models found"}),!f&&!S&&y.length>0&&i.jsx("div",{className:Y.list,children:y.map(C=>i.jsxs(H,{className:Y.item,onSelect:()=>n(C.value,g.get(C.value)),children:[i.jsx("span",{className:Y.checkSlot,"aria-hidden":!0,children:C.value===e&&i.jsx(Zt,{size:14})}),i.jsx("span",{className:Y.label,children:C.label}),i.jsxs("span",{className:Y.modelId,children:["(",C.value,")"]})]},C.value))})]})})]})}const ad="_statusBar_tm1j6_1",id="_segmentGroup_tm1j6_16",cd="_chevron_tm1j6_20",ld="_segment_tm1j6_16",dd="_icon_tm1j6_33",ud="_modelSegment_tm1j6_39",pd="_modelChevron_tm1j6_63",fd="_text_tm1j6_74",V={statusBar:ad,segmentGroup:id,chevron:cd,segment:ld,icon:dd,modelSegment:ud,modelChevron:pd,text:fd};function hd(){const e=E(y=>y.activeSessionId),t=E(y=>e?y.sessions[e]:void 0),n=j(y=>y.client),s=E(y=>y.setModel),o=wt(),r=T(y=>y.activeWorkspaceCwd);Rl(r||"");const a=Q(y=>y.available),c=Q(y=>y.branch),d=Q(y=>y.ahead),m=Q(y=>y.behind),f=Q(y=>y.detached),S=Q(y=>y.conflictCount),h=Q(y=>y.changes.length),x=Nn(y=>e?y.bySession[e]:void 0);Tl(e);const g=[];if(t){const y=Bl(t.cwd,o);g.push({key:"cwd",icon:i.jsx(Be,{size:13}),text:y,title:t.cwd})}if(a){const y=Al(d,m),M=[f?"(detached)":c??"?"];y&&M.push(y),h>0&&M.push(`●${h}`),S>0&&M.push(`⚠${S}`),g.push({key:"branch",icon:i.jsx(Yn,{size:13}),text:M.join(" ")})}if(t){const y=`${ql(x==null?void 0:x.contextPercent)} (${Te(x==null?void 0:x.contextTokens)}/${Te(x==null?void 0:x.contextWindow)})`;g.push({key:"context",icon:i.jsx(Qn,{size:13}),text:y}),g.push({key:"tokens",icon:i.jsx(Zn,{size:13}),text:Te(x==null?void 0:x.totalTokens),title:`in ${Te(x==null?void 0:x.inputTokens)} / out ${Te(x==null?void 0:x.outputTokens)}`}),g.push({key:"cost",icon:i.jsx(es,{size:13}),text:Ml(x==null?void 0:x.cost)})}function _(y,M){e&&(s(e,y,M),!(!n||!M)&&(async()=>{const J=await Sn(n,e);await n.agent(J).setModel(M,y)})().catch(()=>{}))}return i.jsxs("div",{className:V.statusBar,children:[t&&i.jsx("span",{className:V.segmentGroup,children:i.jsx(rd,{currentModel:t.model,provider:"pi",onSelect:_,renderTrigger:y=>i.jsxs("button",{type:"button",className:V.modelSegment,disabled:!n,title:y?`Model: ${y}`:"Select model",children:[i.jsx("span",{className:V.icon,children:i.jsx(ts,{size:13})}),i.jsx("span",{className:V.text,children:y??"Model"}),i.jsx(Ut,{size:12,className:V.modelChevron,"aria-hidden":"true"})]})})}),g.map((y,M)=>i.jsxs("span",{className:V.segmentGroup,children:[(!!t||M>0)&&i.jsx(gt,{size:12,className:V.chevron,"aria-hidden":"true"}),i.jsxs("span",{className:V.segment,title:y.title,children:[i.jsx("span",{className:V.icon,children:y.icon}),i.jsx("span",{className:V.text,children:y.text})]})]},y.key))]})}const md="_wrapper_131x2_3",gd="_box_131x2_18",_d="_checkmark_131x2_36",yd="_nativeInput_131x2_41",He={wrapper:md,box:gd,checkmark:_d,nativeInput:yd};w.forwardRef(function({label:t,checked:n=!1,disabled:s,className:o,onChange:r,...a},c){return i.jsxs("label",{className:He.wrapper,"data-disabled":s||void 0,children:[i.jsx("input",{ref:c,type:"checkbox",className:He.nativeInput,checked:n,disabled:s,onChange:r,...a}),i.jsx("span",{className:He.box,"data-checked":n,"aria-hidden":!0,children:n&&i.jsx(Zt,{size:12,className:He.checkmark})}),t&&i.jsx("span",{children:t})]})});const bd="_select_vj45v_3",wd={select:bd};w.forwardRef(function({options:t,placeholder:n,className:s,...o},r){return i.jsxs("select",{ref:r,className:$(wd.select,s),...o,children:[n&&i.jsx("option",{value:"",disabled:!0,children:n}),t.map(a=>i.jsx("option",{value:a.value,children:a.label},a.value))]})});const Sd="_overlay_1yaef_1",xd="_contentWrapper_1yaef_7",vd="_dialog_1yaef_16",kd="_header_1yaef_28",Id="_title_1yaef_36",jd="_closeBtn_1yaef_43",Cd="_body_1yaef_57",Ed="_footer_1yaef_63",Td="_bare_1yaef_72",Nd="_bareBody_1yaef_78",Rd="_bareCloseBtn_1yaef_82",qd="_visuallyHidden_1yaef_101",L={overlay:Sd,contentWrapper:xd,dialog:vd,header:kd,title:Id,closeBtn:jd,body:Cd,footer:Ed,bare:Td,bareBody:Nd,bareCloseBtn:Rd,visuallyHidden:qd},Md=lt;function Bd({open:e,onOpenChange:t,title:n,children:s,footer:o,width:r,className:a,bare:c=!1}){return i.jsx(ss,{open:e,onOpenChange:t,children:i.jsxs(os,{children:[i.jsx(rs,{className:L.overlay}),i.jsx("div",{className:L.contentWrapper,children:i.jsxs(as,{className:$(L.dialog,c&&L.bare,a),style:r!==void 0?{width:r}:void 0,children:[c?i.jsx(xt,{className:L.visuallyHidden,children:n}):i.jsxs("div",{className:L.header,children:[i.jsx(xt,{className:L.title,children:n}),i.jsx(lt,{asChild:!0,children:i.jsx("button",{type:"button",className:L.closeBtn,"aria-label":"Close",children:i.jsx(it,{size:16})})})]}),i.jsx("div",{className:$(L.body,c&&L.bareBody),children:s}),c&&i.jsx(lt,{asChild:!0,children:i.jsx("button",{type:"button",className:L.bareCloseBtn,"aria-label":"Close",children:i.jsx(it,{size:16})})}),o&&i.jsx("div",{className:L.footer,children:o})]})})]})})}const Ad="_handle_1ocv1_1",$d={handle:Ad};function zt({side:e,onResize:t,className:n}){const s=w.useRef(0),o=w.useCallback(c=>{const d=c.clientX-s.current;s.current=c.clientX,t(e==="left"?d:-d)},[t,e]),r=w.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 a(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 i.jsx("div",{className:$($d.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}function Dd(e,t){const{order:n,sessions:s}=E.getState(),r=vn(n,s,t).find(a=>a.cwd===e);if(r!=null&&r.sessions[0]){const a=r.sessions[0].id;E.getState().activate(a);const c=E.getState().sessions[a];T.getState().open({id:W.chat(a),kind:"chat",label:(c==null?void 0:c.title)??"New chat",closable:!0,data:{sessionId:a},workspaceCwd:e})}else bt(e);k.getState().setCwd(e)}const Od="_pathRow_trimn_1",Pd="_pathInput_trimn_9",Fd="_createRow_trimn_13",zd="_createInput_trimn_21",Ld="_createError_trimn_25",Hd="_list_trimn_30",Wd="_item_trimn_37",Ud="_name_trimn_49",Kd="_emptyState_trimn_54",G={pathRow:Od,pathInput:Pd,createRow:Fd,createInput:zd,createError:Ld,list:Hd,item:Wd,name:Ud,emptyState:Kd};function Vd(){const e=k(p=>p.cwdPickerOpen),t=k(p=>p.closeCwdPicker),n=T(p=>p.activeWorkspaceCwd),s=k(p=>p.cwd),o=j(p=>p.client),r=wt(),[a,c]=w.useState("/"),[d,m]=w.useState("/"),[f,S]=w.useState(!1),[h,x]=w.useState(""),[g,_]=w.useState(null),[y,M]=w.useState(!1),J=Se();w.useEffect(()=>{if(!e)return;const p=we(n||s||"~",r);c(p),m(p),ce()},[e,o,n,s]);const{data:C,isLoading:Ae,isError:ve,error:me}=pc(a,e&&!!o),ie=((C==null?void 0:C.entries)??[]).filter(p=>p.kind==="directory");function ce(){S(!1),x(""),_(null)}function le(p){c(p),m(p),ce()}function et(){le(a.split("/").slice(0,-1).join("/")||"/")}function ke(){le(d.trim())}async function $e(){const p=h.trim();if(!(!p||!o||y)){M(!0),_(null);try{const R=await Tn(o,a,p,"directory");await J.invalidateQueries({queryKey:xe.explorer(a)}),le(R)}catch(R){_(R instanceof Error?R.message:"Failed to create folder")}finally{M(!1)}}}function tt(){Dd(a,r),t()}return i.jsxs(Bd,{open:e,onOpenChange:p=>!p&&t(),title:"Open Workspace",footer:i.jsxs(i.Fragment,{children:[i.jsx(Md,{asChild:!0,children:i.jsx(O,{size:"sm",variant:"secondary",children:"Cancel"})}),i.jsx(O,{size:"sm",onClick:tt,children:"Open this folder"})]}),children:[i.jsxs("div",{className:G.pathRow,children:[i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:et,children:i.jsx(ns,{size:13})}),i.jsx(Ke,{className:G.pathInput,value:d,onChange:p=>m(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.preventDefault(),ke())}}),i.jsx(O,{size:"xs",onClick:ke,children:"Go"}),i.jsx(O,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!o||ve||f,onClick:()=>{S(!0),x(""),_(null)},children:i.jsx(Qt,{size:13})})]}),f&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:G.createRow,children:[i.jsx(Be,{size:14}),i.jsx(Ke,{className:G.createInput,autoFocus:!0,placeholder:"New folder name",value:h,onChange:p=>x(p.target.value),onKeyDown:p=>{p.key==="Enter"?(p.preventDefault(),$e()):p.key==="Escape"&&(p.preventDefault(),p.stopPropagation(),ce())}}),i.jsx(O,{size:"xs",loading:y,disabled:!h.trim()||y,onClick:()=>void $e(),children:"Create"}),i.jsx(O,{size:"xs",variant:"secondary",onClick:ce,children:"Cancel"})]}),g&&i.jsx("div",{className:G.createError,children:g})]}),i.jsx("div",{className:G.list,children:Ae?i.jsx("div",{className:G.emptyState,children:"Loading..."}):ve?i.jsxs("div",{className:G.emptyState,children:["Error: ",me instanceof Error?me.message:"unknown error"]}):ie.length===0?i.jsx("div",{className:G.emptyState,children:"No subdirectories"}):ie.map(p=>i.jsxs("div",{className:G.item,onClick:()=>le(a==="/"?`/${p.name}`:`${a}/${p.name}`),children:[i.jsx(Be,{size:14}),i.jsx("span",{className:G.name,children:p.name})]},p.name))})]})}const Gd="_shell_1m1nv_1",Jd="_main_1m1nv_7",Xd="_sidebarLeft_1m1nv_13",Yd="_leftHandle_1m1nv_21",Qd="_center_1m1nv_24",Zd="_sidebarRight_1m1nv_31",eu="_rightHandle_1m1nv_39",pe={shell:Gd,main:Jd,sidebarLeft:Xd,leftHandle:Yd,center:Qd,sidebarRight:Zd,rightHandle:eu};function tu(){const e=k(a=>a.leftSidebarCollapsed),t=k(a=>a.rightSidebarCollapsed),n=k(a=>a.leftSidebarWidth),s=k(a=>a.rightSidebarWidth),o=k(a=>a.resizeLeftSidebar),r=k(a=>a.resizeRightSidebar);return i.jsxs("div",{className:pe.shell,children:[i.jsx(qa,{}),i.jsxs("div",{className:pe.main,children:[!e&&i.jsxs("aside",{className:pe.sidebarLeft,style:{width:n},children:[i.jsx(Mi,{}),i.jsx(zt,{side:"left",className:pe.leftHandle,onResize:o})]}),i.jsxs("div",{className:pe.center,children:[i.jsx(Vi,{}),i.jsx(lc,{})]}),!t&&i.jsxs("aside",{className:pe.sidebarRight,style:{width:s},children:[i.jsx(zt,{side:"right",className:pe.rightHandle,onResize:r}),i.jsx(jl,{})]})]}),i.jsx(hd,{}),i.jsx(Vd,{})]})}function nu(){const e=w.useRef(!1);w.useEffect(()=>{if(e.current)return;if(e.current=!0,window.location.hash.includes("offer=")){const d=window.location.href;k.getState().setHost(d),j.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"),a=t.get("connect")==="1",c=k.getState();if(s?c.setHost(s):n&&c.setHost(n),o&&c.setPassword(o),r&&c.setCwd(r),s)j.getState().connect({url:s});else if(a){const{host:d,password:m}=k.getState();j.getState().connect({url:d,password:m||void 0})}},[])}function su(e){return typeof e=="object"&&e!==null&&"kind"in e}function ou(e){const t=[];for(const n of e)if(su(n))if(n.kind==="other")n.event&&t.push(n.event);else for(const s of n.events??[])t.push(s);return t}function ru(e){return typeof e.model=="string"}function au(){const e=j(s=>s.client),t=j(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,(async()=>{var f;let s=[];try{s=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{s=[]}s.sort((S,h)=>(h.lastActivity??0)-(S.lastActivity??0));const o=E.getState();for(const S of s){if(o.findByAgentId(S.agentId))continue;let h=ft;try{const g=await e.agent(S.agentId).timeline.fetch({direction:"after",limit:200});h=ou(g.items).reduce(wn,ft)}catch{}const x=h.rows.length===0;o.hydrate({id:`s-${S.agentId.slice(0,12)}`,agentId:S.agentId,title:S.title||(x?"New chat":(f=S.cwd)==null?void 0:f.split("/").pop())||"Restored",status:S.status??"idle",cwd:S.cwd||"~",timeline:h,userMessageCount:h.rows.filter(g=>g.kind==="user").length,model:S.model,modelProvider:S.modelProvider})}const{order:r,sessions:a}=E.getState(),c=r.length>0?a[r[0]??""]:void 0;if(!c)return;const d=await Ze(e).catch(()=>null),m=we(c.cwd||"~",d);E.getState().activate(c.id),k.getState().setCwd(c.cwd),T.getState().open({id:W.chat(c.id),kind:"chat",label:c.title,closable:!0,data:{sessionId:c.id},workspaceCwd:m})})())},[t,e]),w.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(ru(s)){const o=typeof s.modelProvider=="string"?s.modelProvider:void 0;E.getState().setModelByAgentId(s.agentId,s.model,o)}})},[t,e])}function iu(){const e=j(s=>s.client),t=j(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,(async()=>{let s=[];try{s=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{s=[]}if(s.length===0)return;const o=await Ze(e).catch(()=>null),r=T.getState().open;for(const a of s){if(a.closed)continue;const c=we(a.cwd||"~",o);r({id:W.terminal(a.slot),kind:"terminal",label:a.name,closable:!0,data:{slot:a.slot,cwd:c},workspaceCwd:c})}})())},[t,e])}function cu(){w.useEffect(()=>{function e(t){const n=k.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),xn(T.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:o,tabs:r}=T.getState();if(!o)return;const a=r.find(c=>c.id===o);(a==null?void 0:a.closable)!==!1&&(t.preventDefault(),ht(o))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function lu(){return nu(),au(),iu(),cu(),null}function du(){return i.jsxs(oo,{children:[i.jsx(lu,{}),i.jsx(tu,{})]})}const Rn=document.getElementById("root");if(!Rn)throw new Error("Missing #root element");An.createRoot(Rn).render(i.jsx(w.StrictMode,{children:i.jsx(du,{})}));export{O as B,Bd as D,kn as S,wu as T,xu as V,j as a,Su as b,T as c,vu as d,Sn as e,Dl as f,Ot as g,xe as r,Y as s,Ma as t,E as u};
|
|
3
|
+
//# sourceMappingURL=index-DneBC_ta.js.map
|