@av-pi-studio/web-client 0.0.100 → 0.0.102

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.
Files changed (23) hide show
  1. package/dist/web/assets/{BinaryFallbackViewer-DsgSasPb.js → BinaryFallbackViewer-CyMLJ0Z9.js} +1 -1
  2. package/dist/web/assets/{ChatPanel-5StSD3qU.js → ChatPanel-iZFpjvDH.js} +1 -1
  3. package/dist/web/assets/{CodeView-B6qfEGak.js → CodeView-DAS29sVm.js} +1 -1
  4. package/dist/web/assets/{FilePanel-BxaguwwC.js → FilePanel-Dj-f69gt.js} +1 -1
  5. package/dist/web/assets/{HtmlViewer-C7YMSrJq.js → HtmlViewer-BnJ4OpZk.js} +1 -1
  6. package/dist/web/assets/{ImageViewer-CfaHY3CC.js → ImageViewer-wi_qC7bA.js} +1 -1
  7. package/dist/web/assets/{MarkdownFileViewer-DbLEkHGc.js → MarkdownFileViewer-Cw8TMuO2.js} +1 -1
  8. package/dist/web/assets/{ModelProvidersPanel-bUBf6AX3.js → ModelProvidersPanel-BZctiu8D.js} +1 -1
  9. package/dist/web/assets/{MoleculeViewerPanel-C00LtvUk.js → MoleculeViewerPanel-BjsA9NQA.js} +1 -1
  10. package/dist/web/assets/{SettingsDialog-BgKorpjK.js → SettingsDialog-W_cj4IZ1.js} +3 -3
  11. package/dist/web/assets/{TerminalPanel-D9ohBkwX.js → TerminalPanel-Dgxri7TZ.js} +1 -1
  12. package/dist/web/assets/{TextViewer-D9ipyA5F.js → TextViewer-WgHa1P3Q.js} +1 -1
  13. package/dist/web/assets/{VideoViewer-h2_s2ofo.js → VideoViewer-DJICVzXP.js} +1 -1
  14. package/dist/web/assets/{href-resolution-CIziox_W.js → href-resolution-Dq8Pfl3c.js} +1 -1
  15. package/dist/web/assets/index-EyLgkl0G.js +19 -0
  16. package/dist/web/assets/{markdown-DIRIvR-0.js → markdown-C96aoK7b.js} +1 -1
  17. package/dist/web/assets/{use-file-download-DMsI7yqE.js → use-file-download-BQ91ryk7.js} +1 -1
  18. package/dist/web/assets/{use-file-watch-B_k8jx0c.js → use-file-watch-DQMM_Czn.js} +1 -1
  19. package/dist/web/assets/{use-provider-auth-list-BE34ej1x.js → use-provider-auth-list-BYRqw0OC.js} +1 -1
  20. package/dist/web/assets/{vendor-molviewer-DSzG6_a2.js → vendor-molviewer-DeAF8d5d.js} +145 -145
  21. package/dist/web/index.html +1 -1
  22. package/package.json +4 -4
  23. package/dist/web/assets/index-CisETjfy.js +0 -19
@@ -0,0 +1,19 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SettingsDialog-W_cj4IZ1.js","assets/vendor-CIkm_8TG.js","assets/vendor-react-DQUAl2K8.js","assets/vendor-CEK31ho9.css","assets/vendor-query-i7fr__Xm.js","assets/vendor-icons-C3PrZPxy.js","assets/SettingsDialog-Bc09UjU4.css","assets/ChatPanel-iZFpjvDH.js","assets/use-provider-auth-list-BYRqw0OC.js","assets/markdown-C96aoK7b.js","assets/vendor-highlight-A9hNQ6ne.js","assets/vendor-markdown-Bu3Y4y-M.js","assets/href-resolution-Dq8Pfl3c.js","assets/markdown-C15eCO0s.css","assets/DiffView-DYwtgWeX.js","assets/DiffView-CUctPSBA.css","assets/vendor-overlays-CO23GfSO.js","assets/vendor-dnd-CayJj8TC.js","assets/ChatPanel-BbKggE_R.css","assets/FilePanel-Dj-f69gt.js","assets/use-file-watch-DQMM_Czn.js","assets/FilePanel-bWuYWz8t.css","assets/TerminalPanel-Dgxri7TZ.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-DpxpMm0w.css","assets/MoleculeViewerPanel-BjsA9NQA.js","assets/vendor-molviewer-DeAF8d5d.js","assets/vendor-molviewer-Bychyqid.css","assets/StatusBadge-BMKAPA9O.js","assets/StatusBadge-DmrnYEhp.css","assets/use-file-download-BQ91ryk7.js","assets/MoleculeViewerPanel-CHZ8q0jD.css","assets/TextViewer-WgHa1P3Q.js","assets/CodeView-DAS29sVm.js","assets/CodeView-Bbd7h9aM.css","assets/TextViewer-C7Vnqw_v.css","assets/MarkdownFileViewer-Cw8TMuO2.js","assets/MarkdownFileViewer-Cnl1kopk.css","assets/ImageViewer-wi_qC7bA.js","assets/ImageViewer-Bh1rkSDM.css","assets/VideoViewer-DJICVzXP.js","assets/VideoViewer-CCmuaDLl.css","assets/BinaryFallbackViewer-CyMLJ0Z9.js","assets/BinaryFallbackViewer-ClYyn4IS.css","assets/HtmlViewer-BnJ4OpZk.js","assets/HtmlViewer-gN2oIGsk.css"])))=>i.map(i=>d[i]);
2
+ var vo=Object.defineProperty;var bo=(e,t,n)=>t in e?vo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var L=(e,t,n)=>bo(e,typeof t!="symbol"?t+"":t,n);import{r as w,j as c,a as So,c as xo}from"./vendor-react-DQUAl2K8.js";import{Q as ko,c as Io,u as To,d as Eo,a as Ze,b as jo}from"./vendor-query-i7fr__Xm.js";import{ag as d,ah as g,M as W,ai as bn,aj as U,ak as Ce,al as fe,am as A,an as S,ao as ee,ap as H,aq as Wt,ar as Ye,af as pe,_ as Se}from"./vendor-CIkm_8TG.js";import{p as Ro,q as Co,r as Ao,s as Mo,t as qo,u as Po,v as Sn,P as Ws,l as No,w as Do,x as xn,d as kn,h as Pt,y as In,z as Us,D as Hs,H as Ut,M as Vs,X as ht,I as $o,R as Oo,J as Lo,O as Be,a as ln,Q as Nt,o as kt,n as Bo,V as Fo,W as zo,Y as Wo,Z as Uo,_ as Ho,$ as Vo,a0 as Ko,a1 as Go,b as Yo,m as Xo}from"./vendor-icons-C3PrZPxy.js";import{P as Jo,C as Zo,G as Qo,L as ei,I as ti,S as ni,R as _t,T as yt,D as si,a as ri,b as oi,c as ii,d as Kn,e as dn}from"./vendor-overlays-CO23GfSO.js";import{u as ai,a as ci,p as li,P as di,b as Ks,S as ui,h as fi,c as pi,C as hi,D as gi,d as mi}from"./vendor-dnd-CayJj8TC.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();const _i=new ko;function Gs(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 yi(e){return Math.max(0,Math.min(255,Math.round(e)))}function wi({r:e,g:t,b:n}){const s=r=>yi(r).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function vi(e){const{r:t,g:n,b:s}=Gs(e),r=o=>{const i=o/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*r(t)+.7152*r(n)+.0722*r(s)}function Tn(e,t="#18181b",n="#ffffff"){return vi(e)>.45?t:n}function bi(e,t){const{r:n,g:s,b:r}=Gs(e),o=Math.max(0,Math.min(1,t));return wi({r:n+(255-n)*o,g:s+(255-s)*o,b:r+(255-r)*o})}function It(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const ye=(e,t,n,s,r,o,i,a,l,u,f)=>({50:e,100:t,200:n,300:s,400:r,500:o,600:i,700:a,800:l,900:u,950:f}),I={zinc:ye("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:ye("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:ye("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:ye("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:ye("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:ye("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:ye("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:ye("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:ye("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:ye("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:ye("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"},Si={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea",statusInfo:"#3b82f6"},xi={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed",statusInfo:"#2563eb"};function ki(){return{keyword:I.purple[300],string:I.green[300],number:I.orange[300],boolean:I.orange[300],comment:I.zinc[500],function:I.blue[300],variable:I.zinc[200],type:I.teal[300],class:I.amber[300],constant:I.orange[300],operator:I.zinc[400],punctuation:I.zinc[400],tag:I.red[300],attribute:I.amber[300],property:I.blue[200],regexp:I.teal[300],escape:I.orange[200],heading:I.blue[300],link:I.blue[400],deleted:I.red[400],inserted:I.green[400]}}function Ii(){return{keyword:I.purple[700],string:I.green[700],number:I.orange[700],boolean:I.orange[700],comment:I.zinc[500],function:I.blue[700],variable:I.zinc[800],type:I.teal[700],class:I.amber[700],constant:I.orange[700],operator:I.zinc[600],punctuation:I.zinc[600],tag:I.red[700],attribute:I.amber[700],property:I.blue[700],regexp:I.teal[700],escape:I.orange[700],heading:I.blue[700],link:I.blue[600],deleted:I.red[700],inserted:I.green[700]}}function Ys(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:I.zinc[900],red:I.red[500],green:I.green[500],yellow:I.amber[500],blue:I.blue[500],magenta:I.purple[500],cyan:I.teal[500],white:I.zinc[300],brightBlack:I.zinc[600],brightRed:I.red[400],brightGreen:I.green[400],brightYellow:I.amber[400],brightBlue:I.blue[400],brightMagenta:I.purple[400],brightCyan:I.teal[400],brightWhite:I.zinc[50]}}function et(e){const t=I.zinc[50],n=Tn(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:I.white,success:e.accent,successForeground:I.white,border:e.border,borderAccent:e.borderAccent,...Si,diffAddition:I.green[400],diffDeletion:I.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:I,syntax:ki(),terminal:Ys(e.surface0,t,e.accent)}}function Ti(){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:Tn(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...xi,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:I,syntax:Ii(),terminal:{...Ys("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const Ei={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},Xs=["light","dark","zinc","midnight","claude","ghostty"];function ji(e){if(e==="light")return Ti();switch(e){case"dark":return et({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 et({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 et({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 et({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 et({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 Js={};for(const e of Xs){const t=e==="light"?"light":"dark";Js[e]={name:e,colorScheme:t,colors:ji(e),swatch:Ei[e]}}const Ri=Js,Ci={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,14:14,16:16,20:20,24:24,26:26,30:30,32:32,48:48,64:64,80:80,96:96,128:128},Dt={"4xs":10,"3xs":11,"2xs":12,xs:13,code:13,sm:14,md:15,base:17,lg:19,xl:21,"2xl":23,"3xl":28,"4xl":36},Ai={normal:"400",medium:"500",semibold:"600",bold:"700"},Mi={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},qi={0:0,1:1,2:2},Pi={0:0,50:.5,100:1},Ni={xs:12,sm:14,md:16,lg:20},Di={diff:22},Zs='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',Qs='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',ty='"MesloLGS NF", "MesloLGS Nerd Font Mono", "Cascadia Mono NF", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function $i(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 er(e){const t=Ri[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:Ci,fontSize:{...Dt},fontFamily:{ui:Zs,mono:Qs},lineHeight:{...Di},iconSize:Ni,fontWeight:Ai,borderRadius:Mi,borderWidth:qi,opacity:Pi,shadow:$i(t.colorScheme),swatch:t.swatch}}const Oi=Dt.base,Li=10,Bi=24;function Fi(e,t){const n=t.themeName??e.name,s=er(n),r=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:Zs,o=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:Qs,i={...s.fontSize};if(t.fontSize!=null){const l=Math.max(Li,Math.min(Bi,t.fontSize))/Oi;for(const u of Object.keys(Dt))i[u]=Math.round(Dt[u]*l)}return{...s,fontSize:i,fontFamily:{ui:r,mono:o}}}function zi(e){return er(e)}const Wi="dark",Ui=16;function Hi(e){const t=e/Ui;return`${Number(t.toFixed(4))}rem`}function Vi(e){const t={};Ki(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}`]=Hi(s);t["--pi-font-ui"]=e.fontFamily.ui,t["--pi-font-mono"]=e.fontFamily.mono,t["--pi-line-height-diff"]=`${e.lineHeight.diff}px`;for(const[n,s]of Object.entries(e.iconSize))t[`--pi-icon-size-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontWeight))t[`--pi-font-weight-${n}`]=String(s);for(const[n,s]of Object.entries(e.borderRadius))t[`--pi-radius-${n}`]=s===9999?"9999px":`${s}px`;for(const[n,s]of Object.entries(e.borderWidth))t[`--pi-border-width-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.opacity))t[`--pi-opacity-${n}`]=String(s);for(const[n,s]of Object.entries(e.shadow))if(typeof s=="string")t[`--pi-shadow-${n}`]=s;else if(s&&typeof s=="object"){const r=s;t[`--pi-shadow-${n}`]=`${r.offsetX}px ${r.offsetY}px ${r.radius}px ${r.color}`}return t["--pi-color-scheme"]=e.colorScheme,t}function Ki(e,t){const{palette:n,syntax:s,terminal:r,...o}=e;for(const[i,a]of Object.entries(o))typeof a=="string"&&(t[`--pi-color-${i}`]=a);s&&Gi(s,t),r&&(t["--pi-terminal-bg"]=r.background,t["--pi-terminal-fg"]=r.foreground)}function Gi(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${Yi(n)}`]=s)}function Yi(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Xi(e){if(typeof document>"u")return;const t=document.documentElement.style;for(const[s,r]of Object.entries(e))t.setProperty(s,r);const n=e["--pi-color-scheme"];n&&document.documentElement.style.setProperty("color-scheme",n)}function Ji(e){const t=Vi(e);Xi(t)}const tt=d().min(1,"Asset path must not be empty"),Zi=g({accent:d().refine(It,{message:"accent must be a valid #rrggbb hex color"}),accentBright:d().refine(It,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:d().refine(It,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:d().refine(It,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),Qi=g({logoLight:tt,logoDark:tt,logoMark:tt.optional(),icon:tt,splash:tt.optional()}),ea=g({docs:d().url().optional(),support:d().url().optional(),issues:d().url().optional(),website:d().url().optional()}).optional(),ta=g({copyright:d().optional(),companyName:d().optional()}).optional();g({productName:d().min(1,"productName is required"),shortName:d().optional(),tagline:d().optional(),colors:Zi,assets:Qi,links:ea,legal:ta});function na(e){const t=e.accent,n=e.accentBright??bi(t,.35),s=e.accentForeground??Tn(t),r=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:r}}function sa(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 Gn="pi-studio-appearance";function ra(e,t){let n=l(e),s=null;const r=new Set;function o(p){return p==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":p}function i(p,m){const h=o(p),y=zi(h);let v=Fi(y,{...m,themeName:h});if(t!=null&&t.colors){const x=na(t.colors);v=sa(v,x)}return v}function a(){const p=JSON.stringify({mode:n.mode,settings:n.settings});e.set(Gn,p)}function l(p){const m=p.get(Gn);let h=Wi,y={};if(m)try{const x=JSON.parse(m);x.mode&&(Xs.includes(x.mode)||x.mode==="system")&&(h=x.mode),x.settings&&typeof x.settings=="object"&&(y=x.settings)}catch{}const v=i(h,y);return{mode:h,settings:y,resolvedTheme:v}}function u(){n={...n,resolvedTheme:i(n.mode,n.settings)},a();for(const p of r)p()}const f={getState(){return n},setMode(p){n={...n,mode:p},u(),f.apply()},updateSettings(p){n={...n,settings:{...n.settings,...p}},u(),f.apply()},apply(){Ji(n.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const p=window.matchMedia("(prefers-color-scheme: dark)"),m=()=>{n.mode==="system"&&(u(),f.apply())};return p.addEventListener("change",m),s=()=>p.removeEventListener("change",m),s},subscribe(p){return r.add(p),()=>r.delete(p)}};return f}const tr=w.createContext(null);function oa({store:e,brandConfig:t,children:n}){const s=w.useRef(null);s.current||(s.current=ra(e,t),s.current.apply());const r=s.current,o=w.useSyncExternalStore(r.subscribe,r.getState);return w.useEffect(()=>r.listen(),[r]),c.jsx(tr.Provider,{value:o,children:n})}function ny(){const e=w.useContext(tr);if(!e)throw new Error("useAppearance must be used within a ThemeBoundary");return e}const En={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 ia({children:e}){return c.jsx(oa,{store:En,children:c.jsx(Io,{client:_i,children:e})})}const aa="_btn_dkqaa_4",ca="_secondary_dkqaa_47",la="_outline_dkqaa_56",da="_ghost_dkqaa_65",ua="_destructive_dkqaa_75",fa="_iconOnly_dkqaa_85",pa="_loadingSpinner_dkqaa_92",ha="_piSpin_dkqaa_1",Tt={btn:aa,default:"_default_dkqaa_38",secondary:ca,outline:la,ghost:da,destructive:ua,iconOnly:fa,loadingSpinner:pa,piSpin:ha},Yn={xs:28,sm:32,md:36,lg:40},ga={xs:12,sm:14,md:16,lg:20},Xn={xs:8,sm:10,md:12,lg:16},ma={xs:"var(--pi-font-size-xs)",sm:"var(--pi-font-size-sm)",md:"var(--pi-font-size-md)",lg:"var(--pi-font-size-base)"};function _a(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}function ae({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:r,trailing:o,iconOnly:i=!1,children:a,style:l,className:u,ref:f,...p}){const{opacity:m}=_a({disabled:s??!1,loading:n}),h=s||n,y=ga[t];return c.jsxs("button",{ref:f,className:W(Tt.btn,Tt[e],i&&Tt.iconOnly,u),disabled:h,"aria-busy":n||void 0,style:{minHeight:Yn[t],paddingLeft:i?void 0:Xn[t],paddingRight:i?void 0:Xn[t],fontSize:ma[t],opacity:m,...i?{width:Yn[t]}:{},...l},...p,children:[n?c.jsx(Ro,{className:Tt.loadingSpinner,size:y,"aria-hidden":!0}):r?c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r}):null,a,o&&!n&&c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o})]})}const ya={xs:12,sm:14,md:16,lg:20};function ne({icon:e,size:t="md",color:n="currentColor",className:s,...r}){const o=typeof t=="number"?t:ya[t];return c.jsx(e,{size:o,color:n,className:s,"aria-hidden":r["aria-hidden"],"aria-label":r["aria-label"]})}const wa="_spinner_1ibj3_3",va={spinner:wa},ba={xs:12,sm:16,md:20,lg:24},Sa={xs:1,sm:2,md:2,lg:3};function nr({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const r=typeof e=="number"?e:ba[e],o=typeof e=="number"?2:Sa[e];return c.jsx("span",{className:`${va.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:r,height:r,borderWidth:o,color:t}})}const xa="_dot_ve4v6_3",ka="_spinner_ve4v6_16",Ia="_pulse_ve4v6_35",Jt={dot:xa,spinner:ka,pulse:Ia};function Ta(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:r}=e;if(!t)return null;if(n)switch(s){case"permission":case"question":return"statusWarning";case"error":return"statusDanger";case"finished":default:return"statusSuccess"}switch(t){case"running":case"queued":return"accent";case"waiting":return"statusWarning";case"finished":return"statusSuccess";case"error":return"statusDanger";case"idle":case"archived":return r?"foregroundMuted":null}}const Jn=8,Ea={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 Ht({className:e,pulse:t,"aria-label":n,...s}){const r=Ta(s);if(!r)return null;const o=s.status==="running"&&!s.requiresAttention,i=o?"var(--pi-color-accentBright, #a2b4d7)":Ea[r]??"currentColor";return c.jsx("span",{className:`${o?Jt.spinner:Jt.dot}${t&&!o?` ${Jt.pulse}`:""}${e?` ${e}`:""}`,style:o?{borderTopColor:i,borderRightColor:i}:{width:`var(--status-dot-size, ${Jn}px)`,height:`var(--status-dot-size, ${Jn}px)`,backgroundColor:i},role:n?"img":"presentation","aria-label":n})}const ja="_input_756jo_3",Ra="_textarea_756jo_32",un={input:ja,textarea:Ra},$t=w.forwardRef(function({className:t,...n},s){return c.jsx("input",{ref:s,className:W(un.input,t),...n})}),sy=w.forwardRef(function({className:t,...n},s){return c.jsx("textarea",{ref:s,className:W(un.input,un.textarea,t),...n})}),sr=d().datetime({offset:!0});d().uuid();d().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const Re=bn([U(),sr]),Ca=Ce(["mobile","browser","cli","mcp"]),Aa=g({type:S("hello"),clientId:d(),clientType:Ca,protocolVersion:U(),appVersion:d().optional(),capabilities:fe(d(),A()).optional()}),Ma=g({status:S("server_info"),serverId:d(),hostname:d().optional(),version:d().optional(),homeDir:d().optional(),capabilities:fe(d(),ee()),features:fe(d(),ee())}),qa=g({type:S("status"),payload:Ma}),Pa=g({type:S("ping"),requestId:d(),clientSentAt:Re.optional()}),Na=g({type:S("pong"),requestId:d(),clientSentAt:Re.optional(),serverReceivedAt:Re,serverSentAt:Re}),rr=Ce(["initializing","idle","running","error","closed"]),Vt=g({mimeType:d().optional(),data:d().optional()}).passthrough(),Da=g({prs:H(ee()).optional(),issues:H(ee()).optional()}).passthrough(),$a=g({provider:d(),cwd:d(),modeId:d().optional(),model:d().optional(),modelProvider:d().optional(),thinkingOptionId:d().optional(),featureValues:fe(d(),ee()).optional(),title:d().nullable().optional(),approvalPolicy:d().optional(),sandboxMode:d().optional(),networkAccess:A().optional(),webSearch:A().optional(),extra:g({pi:ee().optional()}).passthrough().optional(),systemPrompt:d().optional(),mcpServers:fe(d(),ee()).optional()}),Oa=g({type:S("create_agent_request"),requestId:d(),config:$a,env:fe(d(),d()).optional(),workspaceId:d().optional(),worktreeName:d().optional(),initialPrompt:d().optional(),clientMessageId:d().optional(),outputSchema:fe(d(),ee()).optional(),images:H(Vt).optional(),attachments:Da.optional(),git:ee().optional(),worktree:ee().optional(),autoArchive:A().optional(),labels:fe(d(),d()).default({})}),La=g({type:S("create_agent_response"),requestId:d(),payload:g({agentId:d()}).passthrough()}),Ba=g({type:S("agent_update"),agentId:d(),status:rr.optional(),title:d().nullable().optional(),labels:fe(d(),d()).optional()}),Fa=g({type:S("agent_status"),agentId:d(),status:rr}),za=g({type:S("agent_list"),agents:H(g({id:d()}).passthrough())}),Wa=g({type:S("agent_deleted"),agentId:d()}),Ua=g({type:S("agent_archived"),agentId:d(),archivedAt:sr.optional()}),or=Wt("kind",[g({kind:S("shell"),command:d().optional(),output:d().optional()}),g({kind:S("read"),path:d().optional(),output:d().optional()}),g({kind:S("edit"),path:d().optional(),diff:d().optional(),output:d().optional()}),g({kind:S("write"),path:d().optional(),output:d().optional()}),g({kind:S("search"),query:d().optional(),output:d().optional()}),g({kind:S("fetch"),url:d().optional(),output:d().optional()}),g({kind:S("task"),description:d().optional(),output:d().optional()})]),Ha=Wt("kind",[g({kind:S("user_message"),messageId:d().optional(),text:d().optional(),images:H(Vt).optional()}),g({kind:S("assistant_message"),messageId:d().optional(),text:d().optional(),final:A().optional()}),g({kind:S("reasoning"),text:d().optional(),final:A().optional()}),g({kind:S("tool_call"),callId:d().optional(),tool:or,status:d().optional()}),g({kind:S("turn_started"),turnId:d().optional()}),g({kind:S("turn_completed"),turnId:d().optional()}),g({kind:S("turn_failed"),turnId:d().optional(),error:d().optional()}),g({kind:S("turn_canceled"),turnId:d().optional()}),g({kind:S("error"),message:d().optional()}),g({kind:S("queue_update"),steering:H(d()).optional(),followUp:H(d()).optional()})]),Va=g({type:S("agent_stream"),agentId:d(),seq:U().optional(),timestamp:Re.optional(),event:Ha}),Ka=Ce(["before","after"]),Ga=g({start:U(),end:U()}),Ya=g({type:S("fetch_agent_timeline_request"),requestId:d(),agentId:d(),cursor:d().nullable().optional(),direction:Ka,limit:U().optional()}),Xa=g({type:S("fetch_agent_timeline_response"),requestId:d(),agentId:d().optional(),items:H(ee()),seqStart:U(),seqEnd:U(),sourceSeqRanges:H(Ga),collapsed:A(),hasNewer:A(),startCursor:d().nullable().optional(),endCursor:d().nullable().optional()}),Ja=g({type:S("agent_permission_request"),requestId:d(),agentId:d(),toolName:d().optional(),tool:or.optional(),action:ee().optional(),responses:H(d()).optional()}),Za=g({type:S("agent_permission_resolved"),requestId:d(),agentId:d(),decision:d().optional()}),Qa=g({type:S("agent.permission.respond.request"),requestId:d(),permissionRequestId:d(),response:ee()}),ec=g({type:S("agent.permission.respond.response"),requestId:d(),payload:g({resolved:A()}).passthrough()}),tc=g({type:S("respond_to_permission"),requestId:d(),permissionRequestId:d(),response:ee()}),ir=Ce(["conversation","files","both"]),nc=g({type:S("agent.rewind.request"),requestId:d(),agentId:d(),messageId:d(),mode:ir}).passthrough(),sc=g({type:S("agent.rewind.response"),requestId:d(),payload:g({agentId:d(),messageId:d(),mode:ir,truncatedAt:d().optional()}).passthrough()}).passthrough(),rc=g({input:U().optional(),output:U().optional(),cacheRead:U().optional(),cacheWrite:U().optional(),total:U().optional()}).passthrough(),oc=g({tokens:U().nullable().optional(),contextWindow:U().optional(),percent:U().nullable().optional()}).passthrough(),ic=g({type:S("agent_session_stats_request"),requestId:d(),agentId:d()}).passthrough(),ac=g({type:S("agent_session_stats_response"),requestId:d(),payload:g({sessionId:d().optional(),sessionFile:d().optional(),userMessages:U().optional(),assistantMessages:U().optional(),toolCalls:U().optional(),toolResults:U().optional(),totalMessages:U().optional(),tokens:rc.optional(),cost:U().optional(),contextUsage:oc.optional(),model:d().optional()}).passthrough()}).passthrough(),cc=g({type:S("agent_compact_request"),requestId:d(),agentId:d(),customInstructions:d().optional()}).passthrough(),lc=g({type:S("agent_compact_response"),requestId:d(),payload:g({summary:d().optional(),firstKeptEntryId:d().optional(),tokensBefore:U().optional(),details:ee().optional()}).passthrough()}).passthrough(),dc=g({type:S("agent_new_session_request"),requestId:d(),agentId:d()}).passthrough(),uc=g({type:S("agent_new_session_response"),requestId:d(),payload:g({cancelled:A()}).passthrough()}).passthrough(),fc=g({type:S("agent_switch_session_request"),requestId:d(),agentId:d(),sessionPath:d()}).passthrough(),pc=g({type:S("agent_switch_session_response"),requestId:d(),payload:g({cancelled:A()}).passthrough()}).passthrough(),hc=g({type:S("agent_fork_request"),requestId:d(),agentId:d(),entryId:d()}).passthrough(),gc=g({type:S("agent_fork_response"),requestId:d(),payload:g({text:d(),cancelled:A()}).passthrough()}).passthrough(),mc=g({type:S("agent_fork_messages_request"),requestId:d(),agentId:d()}).passthrough(),_c=g({type:S("agent_fork_messages_response"),requestId:d(),payload:g({messages:H(g({entryId:d(),text:d()}).passthrough())}).passthrough()}).passthrough(),yc=g({type:S("agent_clone_request"),requestId:d(),agentId:d()}).passthrough(),wc=g({type:S("agent_clone_response"),requestId:d(),payload:g({cancelled:A()}).passthrough()}).passthrough(),vc=g({type:S("agent_set_session_name_request"),requestId:d(),agentId:d(),name:d()}).passthrough(),bc=g({type:S("agent_set_session_name_response"),requestId:d(),payload:g({}).passthrough().optional()}).passthrough(),Sc=g({type:S("agent_export_html_request"),requestId:d(),agentId:d(),outputPath:d().optional()}).passthrough(),xc=g({type:S("agent_export_html_response"),requestId:d(),payload:g({path:d()}).passthrough()}).passthrough(),kc=g({type:S("agent_set_model_request"),requestId:d(),agentId:d(),provider:d(),modelId:d()}).passthrough(),Ic=g({type:S("agent_set_model_response"),requestId:d(),payload:g({}).passthrough()}).passthrough(),Tc=g({type:S("agent_cycle_model_request"),requestId:d(),agentId:d()}).passthrough(),Ec=g({type:S("agent_cycle_model_response"),requestId:d(),payload:g({model:ee().nullable().optional(),thinkingLevel:d().optional(),isScoped:A().optional()}).passthrough()}).passthrough(),jc=g({type:S("agent_set_thinking_request"),requestId:d(),agentId:d(),level:d()}).passthrough(),Rc=g({type:S("agent_set_thinking_response"),requestId:d(),payload:g({agentId:d(),level:d()}).passthrough()}).passthrough(),Cc=g({type:S("agent_thinking_levels_request"),requestId:d(),agentId:d()}).passthrough(),Ac=g({type:S("agent_thinking_levels_response"),requestId:d(),payload:g({agentId:d(),levels:H(d())}).passthrough()}).passthrough(),Mc=g({type:S("agent_last_assistant_text_request"),requestId:d(),agentId:d()}).passthrough(),qc=g({type:S("agent_last_assistant_text_response"),requestId:d(),payload:g({text:d().nullable()}).passthrough()}).passthrough(),Pc=g({type:S("steer_agent_request"),requestId:d(),agentId:d(),message:d(),images:H(Vt).optional(),clientMessageId:d().optional()}).passthrough(),Nc=g({type:S("steer_agent_response"),requestId:d(),agentId:d(),ok:A()}).passthrough(),Dc=g({type:S("follow_up_agent_request"),requestId:d(),agentId:d(),message:d(),images:H(Vt).optional(),clientMessageId:d().optional()}).passthrough(),$c=g({type:S("follow_up_agent_response"),requestId:d(),agentId:d(),ok:A()}).passthrough(),Oc=g({name:d(),id:d().optional(),description:d().optional(),source:Ce(["extension","prompt","skill"]).optional(),scope:Ce(["user","project","temporary"]).optional(),path:d().optional()}).passthrough(),Lc=g({type:S("agent_list_commands_request"),requestId:d(),agentId:d()}).passthrough(),Bc=g({type:S("agent_list_commands_response"),requestId:d(),payload:g({commands:H(Oc)}).passthrough()}).passthrough(),Fc=g({source:d(),identity:d(),addedIn:d(),deprecated:A().optional(),status:d(),lastError:g({at:d(),attempts:U(),reason:d(),message:d()}).passthrough().optional()}).passthrough(),ar=g({id:d(),title:d(),description:d(),packages:H(Fc)}).passthrough(),zc=g({identity:d(),source:d(),pack:d(),reason:d(),message:d()}).passthrough(),Wc=g({at:d(),outcome:d(),installed:H(d()),failures:H(zc)}).passthrough(),cr=g({at:d(),outcome:d()}).passthrough(),Uc=g({type:S("extension_packs_list_request"),requestId:d()}).passthrough(),Hc=g({type:S("extension_packs_list_response"),requestId:d(),autoSync:A(),selected:H(d()),packs:H(ar),lastSync:cr.optional()}).passthrough(),Vc=g({type:S("extension_packs_set_request"),requestId:d(),packs:H(d()).optional()}).passthrough(),Kc=g({type:S("extension_packs_set_response"),requestId:d(),autoSync:A(),selected:H(d()),packs:H(ar),lastSync:cr.optional(),ok:A(),error:d().optional(),report:Wc.optional()}).passthrough(),fn=Ce(["api_key","oauth"]),Gc=g({id:d(),name:d(),authTypes:H(fn),oauthLoginLabel:d().optional(),oauthIsSubscription:A().optional(),configured:bn([A(),S("unknown")]),configuredType:fn.optional(),configuredSource:d().optional()}).passthrough(),Yc=g({type:S("provider_auth_list_request"),requestId:d()}).passthrough(),Xc=g({type:S("provider_auth_list_response"),requestId:d(),payload:g({ok:A(),providers:H(Gc).default([]),error:d().optional()}).passthrough()}).passthrough(),Jc=g({type:S("provider_auth_login_request"),requestId:d(),provider:d(),authType:fn}).passthrough(),Zc=g({type:S("provider_auth_login_response"),requestId:d(),payload:g({ok:A(),flowId:d().optional(),error:d().optional()}).passthrough()}).passthrough(),Qc=g({type:S("provider_auth_respond_request"),requestId:d(),flowId:d(),promptId:d(),value:d()}).passthrough(),el=g({type:S("provider_auth_respond_response"),requestId:d(),payload:g({ok:A(),error:d().optional()}).passthrough()}).passthrough(),tl=g({type:S("provider_auth_cancel_request"),requestId:d(),flowId:d()}).passthrough(),nl=g({type:S("provider_auth_cancel_response"),requestId:d(),payload:g({ok:A()}).passthrough()}).passthrough(),sl=g({type:S("provider_auth_logout_request"),requestId:d(),provider:d()}).passthrough(),rl=g({type:S("provider_auth_logout_response"),requestId:d(),payload:g({ok:A(),stillConfigured:A().optional(),error:d().optional()}).passthrough()}).passthrough(),ol=g({requestId:d(),agentId:d(),method:d(),expectsResponse:A(),payload:fe(ee()),surfaceKey:d().optional(),timeoutMs:U().optional(),createdAt:Re}).passthrough(),il=g({agentId:d(),method:d(),surfaceKey:d(),payload:fe(ee()),updatedAt:Re}).passthrough(),al=g({type:S("agent_ui_request"),requestId:d(),agentId:d(),method:d(),expectsResponse:A(),payload:fe(ee()),surfaceKey:d().optional(),removed:A().optional(),timeoutMs:U().optional(),createdAt:Re}).passthrough(),cl=g({type:S("agent_ui_resolved"),requestId:d(),agentId:d(),reason:d()}).passthrough(),ll=g({value:d().optional(),confirmed:A().optional(),cancelled:A().optional()}).passthrough(),dl=g({type:S("agent_ui_respond_request"),requestId:d(),uiRequestId:d(),response:ll}).passthrough(),ul=g({type:S("agent_ui_respond_response"),requestId:d(),payload:g({ok:A(),error:d().optional()}).passthrough()}).passthrough(),fl=g({type:S("agent_ui_list_request"),requestId:d(),agentId:d().optional()}).passthrough(),pl=g({type:S("agent_ui_list_response"),requestId:d(),payload:g({ok:A(),pending:H(ol),surfaces:H(il),error:d().optional()}).passthrough()}).passthrough(),hl=g({type:S("rpc_error"),requestId:d(),code:d().optional(),message:d().optional(),error:d().optional()}),gl=Wt("type",[Oa,La,Ba,Fa,za,Wa,Ua,Va,Ya,Xa,Ja,Za,Qa,ec,tc,nc,sc,ic,ac,cc,lc,dc,uc,fc,pc,hc,gc,mc,_c,yc,wc,vc,bc,Sc,xc,kc,Ic,Tc,Ec,jc,Rc,Cc,Ac,Mc,qc,Pc,Nc,Dc,$c,Lc,Bc,Uc,Hc,Vc,Kc,Yc,Xc,Jc,Zc,Qc,el,tl,nl,sl,rl,al,cl,dl,ul,fl,pl,hl]),ml=g({type:d()}).passthrough(),_l=g({type:S("session"),message:bn([gl,ml])});Wt("type",[Aa,qa,Pa,Na,_l]);const Et={terminal_reflowable_snapshot:"terminal_reflowable_snapshot",inline_image_markdown:"inline_image_markdown",file_link_markdown:"file_link_markdown",mermaid_diagram_markdown:"mermaid_diagram_markdown"},He={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},yl=Object.fromEntries(Object.entries(He).map(([e,t])=>[t,e])),lr=g({rows:U().int().nonnegative(),cols:U().int().nonnegative()});class it extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const wl=new TextEncoder,vl=new TextDecoder;function bl(e){if(!Number.isInteger(e)||e<0||e>255)throw new it(`slot must be an integer 0–255, got ${e}`)}function nt(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function ry(e){switch(bl(e.slot),e.opcode){case"Output":return nt(He.Output,e.slot,e.data);case"Input":return nt(He.Input,e.slot,e.data);case"Snapshot":return nt(He.Snapshot,e.slot,e.data);case"Restore":return nt(He.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(lr.parse({rows:e.rows,cols:e.cols}));return nt(He.Resize,e.slot,wl.encode(t))}}}function Sl(e){if(e.length<2)throw new it(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=yl[t];if(!s)throw new it(`unknown terminal opcode 0x${t.toString(16)}`);const r=e.subarray(2);if(s==="Resize"){let o;try{o=JSON.parse(vl.decode(r))}catch{throw new it("resize payload is not valid JSON")}const i=lr.safeParse(o);if(!i.success)throw new it("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:i.data.rows,cols:i.data.cols}}return{opcode:s,slot:n,data:r.slice()}}const Ke={Begin:16,Chunk:17,End:18,Error:19},xl=Object.fromEntries(Object.entries(Ke).map(([e,t])=>[t,e])),dr=g({transferId:d(),fileName:d().optional(),mimeType:d().optional(),totalBytes:U().int().nonnegative().optional()});class at extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const Zn=new TextEncoder,Qn=new TextDecoder;function kl(e){if(!Number.isInteger(e)||e<0||e>255)throw new at(`stream must be an integer 0–255, got ${e}`)}function jt(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function Zt(e){switch(kl(e.stream),e.opcode){case"Begin":return jt(Ke.Begin,e.stream,Zn.encode(JSON.stringify(dr.parse(e.meta))));case"Chunk":return jt(Ke.Chunk,e.stream,e.data);case"End":return jt(Ke.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return jt(Ke.Error,e.stream,Zn.encode(e.message))}}function Il(e){if(e.length<2)throw new at(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=xl[t];if(!s)throw new at(`unknown file-transfer opcode 0x${t.toString(16)}`);const r=e.subarray(2);switch(s){case"Begin":{let o;try{o=JSON.parse(Qn.decode(r))}catch{throw new at("begin payload is not valid JSON")}const i=dr.safeParse(o);if(!i.success)throw new at("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:i.data}}case"Chunk":return{opcode:"Chunk",stream:n,data:r.slice()};case"End":return{opcode:"End",stream:n,ok:(r[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:Qn.decode(r)}}}function Tl(e){try{return Il(e)}catch{return null}}const Ve=256;function El(e,t=0){const n=(t%Ve+Ve)%Ve;for(let s=0;s<Ve;s++){const r=(n+s)%Ve;if(!e.has(r))return r}return null}const jl=d().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),Rl=Ce(["safe","moderate","dangerous","planning"]),Cl=g({supportsStreaming:A(),supportsSessionPersistence:A(),supportsDynamicModes:A(),supportsMcpServers:A(),supportsReasoningStream:A(),supportsToolInvocations:A(),supportsRewindConversation:A().optional(),supportsRewindFiles:A().optional(),supportsRewindBoth:A().optional(),supportsSteering:A().optional(),supportsExtensionUi:A().optional()}).passthrough(),Al=g({id:d(),label:d().optional(),description:d().optional(),icon:d().optional(),colorTier:Rl});g({id:jl,label:d(),description:d().optional(),extends:d().optional(),modes:H(Al),capabilities:Cl});function pn(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function ur(e){let t=null;const n={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1},connect(s){return new Promise((r,o)=>{const i=e??(()=>new WebSocket(s));try{t=e?i(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(a){o(a);return}t.onopen=()=>r(),t.onerror=a=>{var l;(t==null?void 0:t.readyState)!==1&&o(a),(l=n.onError)==null||l.call(n,a)},t.onclose=a=>{var l;(l=n.onClose)==null||l.call(n,a.code,pn(a.reason))},t.onmessage=a=>{var u,f,p,m;const{data:l}=a;l instanceof ArrayBuffer||l instanceof Uint8Array?(u=n.onMessage)==null||u.call(n,l):typeof l=="string"?(f=n.onMessage)==null||f.call(n,l):typeof Blob<"u"&&l instanceof Blob?(p=n.onMessage)==null||p.call(n,l):Buffer.isBuffer(l)&&((m=n.onMessage)==null||m.call(n,l.buffer.slice(l.byteOffset,l.byteOffset+l.byteLength)))}})},sendText(s){t==null||t.send(s)},sendBinary(s){t==null||t.send(s)},close(s=1e3,r=""){t==null||t.close(s,r),t=null}};return n}const ct="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function fr(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],r=n+1<e.length,o=n+2<e.length,i=r?e[n+1]:0,a=o?e[n+2]:0;t+=ct[s>>2],t+=ct[(s&3)<<4|i>>4],t+=r?ct[(i&15)<<2|a>>6]:"=",t+=o?ct[a&63]:"="}return t}function pr(e){const t=e.replace(/=+$/,""),n=[];let s=0,r=0;for(const o of t){const i=ct.indexOf(o);if(i===-1)throw new Error(`invalid base64 character: ${JSON.stringify(o)}`);s=s<<6|i,r+=6,r>=8&&(r-=8,n.push(s>>r&255))}return new Uint8Array(n)}function Ml(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const Mt=24;function hr(e,t){const n=Ye.randomBytes(Mt),s=Ye.box.after(e,n,t),r=new Uint8Array(n.length+s.length);return r.set(n,0),r.set(s,n.length),fr(r)}function gr(e,t){let n;try{n=pr(e)}catch{return null}if(n.length<Mt)return null;const s=n.slice(0,Mt),r=n.slice(Mt);return Ye.box.open.after(r,s,t)}function ql(e,t){return hr(new TextEncoder().encode(e),t)}function Pl(e,t){const n=gr(e,t);return n?new TextDecoder().decode(n):null}function Nl(e,t,n,s,r,o){let i=!1;return n.onClose(a=>{var l;i=!0,(l=s.onClose)==null||l.call(s,a)}),{handleAppFrame(a){var f,p;if(i)return;const l=r();if(!o()||!l)return;const u=Pl(a.frame,l);if(u===null){(f=s.onAuthError)==null||f.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(p=s.onMessage)==null||p.call(s,u)},handleBinaryFrame(a){var f,p;if(i)return;const l=r();if(!o()||!l)return;const u=gr(a.frame,l);if(u===null){(f=s.onAuthError)==null||f.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(p=s.onBinaryMessage)==null||p.call(s,u)},send(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const l=r();if(!o()||!l)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_app",frame:ql(a,l)}))},sendBinary(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const l=r();if(!o()||!l)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_bin",frame:hr(a,l)}))},close(){i||(i=!0,n.close())}}}function Dl(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,r=e.events??{},o=Ye.box.keyPair(),i=Ye.box.before(s,o.secretKey);let a=!1;const l=Nl("client",n,t,r,()=>i,()=>a);return t.onMessage(u=>{var p;const f=Ml(u);if(f){if(f.type==="e2ee_ready"){if(a)return;a=!0,(p=r.onReady)==null||p.call(r);return}if(f.type==="e2ee_app"){l.handleAppFrame(f);return}f.type==="e2ee_bin"&&l.handleBinaryFrame(f)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:fr(o.publicKey)})),{role:"client",attachment:n,get ready(){return a},send:l.send,sendBinary:l.sendBinary,close:l.close}}const $l=16;function Ol(e){const t=Ye.hash(e);let n="";for(let s=0;s<$l;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Ll(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function Bl(e){let t=null,n=null;const s=e.sessionId??Ol(e.daemonPublicKey),r={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},connect(o){return new Promise((i,a)=>{const l=e.factory??(()=>new WebSocket(o));try{t=e.factory?l(o):new WebSocket(o)}catch(m){a(m);return}const u=t,f=[],p=[];u.onopen=()=>{u.send(JSON.stringify({type:"relay_register",sessionId:s})),n=Dl({transport:{send:m=>u.send(m),onMessage:m=>f.push(m),onClose:m=>p.push(m),close:()=>u.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>i(),onMessage:m=>{var h;return(h=r.onMessage)==null?void 0:h.call(r,m)},onBinaryMessage:m=>{var h;return(h=r.onMessage)==null?void 0:h.call(r,m.slice().buffer)},onAuthError:m=>{var h;return(h=r.onError)==null?void 0:h.call(r,m)}}})},u.onerror=m=>{var h;u.readyState!==1&&a(m),(h=r.onError)==null||h.call(r,m)},u.onclose=m=>{var h;for(const y of p)y(pn(m.reason));(h=r.onClose)==null||h.call(r,m.code,pn(m.reason))},u.onmessage=m=>{const{data:h}=m;if(typeof h=="string")for(const y of f)y(h)}})},sendText(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(o)},sendBinary(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(o)},close(o=1e3,i=""){n==null||n.close(),n=null,t==null||t.close(o,i),t=null}};return r}function Fl(e){const t=e.indexOf("#"),n=t===-1?e:e.slice(t+1),s=new URLSearchParams(n),r=s.get("offer");if(!r)return null;let o;try{o=pr(r)}catch{return null}const i=s.get("relay");if(i){const l={endpoint:i,useTls:s.get("relayTls")==="1"};return{publicKeyB64:r,publicKey:o,relay:l}}const a=s.get("host")??void 0;return{publicKeyB64:r,publicKey:o,...a?{host:a}:{}}}const zl=1;function hn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class Wl extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class es extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class Ul{constructor(t){L(this,"transport");L(this,"rpcTimeoutMs");L(this,"now");L(this,"_state","idle");L(this,"_serverId",null);L(this,"_features",{});L(this,"_serverCapabilities",{});L(this,"pending",new Map);L(this,"sessionHandlers",new Set);L(this,"terminalHandlers",new Set);L(this,"fileTransferHandlers",new Set);L(this,"stateHandlers",new Set);L(this,"helloResolve",null);L(this,"helloReject",null);this.options=t,this.transport=t.transport??ur(),this.rpcTimeoutMs=t.rpcTimeoutMs??3e4,this.now=t.now??(()=>Date.now()),this.transport.onMessage=n=>this.handleIncoming(n),this.transport.onClose=(n,s)=>this.handleClose(n,s),this.transport.onError=()=>{}}get state(){return this._state}get serverId(){return this._serverId}get features(){return this._features}get serverCapabilities(){return this._serverCapabilities}hasFeature(t){return!!this._features[t]}async connect(){this.setState("connecting"),await this.transport.connect(this.options.url);const t=new Promise((s,r)=>{this.helloResolve=s,this.helloReject=r});this.transport.sendText(JSON.stringify({type:"hello",clientId:this.options.clientId,clientType:this.options.clientType,protocolVersion:this.options.protocolVersion??zl,appVersion:this.options.appVersion,capabilities:this.options.capabilities}));const n=await t;return this._serverId=n.serverId,this._features=n.features,this._serverCapabilities=n.capabilities,this.setState("open"),n}close(t=1e3,n=""){this.setState("closing"),this.transport.close(t,n)}request(t,n={},s){const r=n.requestId??hn();return new Promise((o,i)=>{const a=s??this.rpcTimeoutMs,l=a>0?setTimeout(()=>{this.pending.delete(r),i(new es(r))},a):null;this.pending.set(r,{resolve:u=>o(u),reject:i,timer:l}),this.sendSession({type:t,...n,requestId:r})})}sendSession(t){this.transport.sendText(JSON.stringify({type:"session",message:t}))}sendBinary(t){this.transport.sendBinary(t)}ping(t=1e4){const n=hn();return new Promise((s,r)=>{const o=t>0?setTimeout(()=>{this.pending.delete(n),r(new es(n))},t):null;this.pending.set(n,{resolve:()=>s(),reject:r,timer:o}),this.transport.sendText(JSON.stringify({type:"ping",requestId:n,clientSentAt:this.now()}))})}onSessionMessage(t){return this.sessionHandlers.add(t),()=>this.sessionHandlers.delete(t)}onTerminalFrame(t){return this.terminalHandlers.add(t),()=>this.terminalHandlers.delete(t)}onFileTransferFrame(t){return this.fileTransferHandlers.add(t),()=>this.fileTransferHandlers.delete(t)}onStateChange(t){return this.stateHandlers.add(t),()=>this.stateHandlers.delete(t)}setState(t){if(this._state!==t){this._state=t;for(const n of this.stateHandlers)n(t)}}handleClose(t,n){this.helloReject&&(this.helloReject(new Error(`socket closed during handshake: ${n}`)),this.helloResolve=null,this.helloReject=null);for(const[,s]of this.pending)s.timer&&clearTimeout(s.timer),s.reject(new Error(`socket closed: ${n}`));this.pending.clear(),this.setState("closed")}handleIncoming(t){if(typeof t=="string"){this.handleTextFrame(t);return}if(t instanceof ArrayBuffer){this.handleBinaryFrame(new Uint8Array(t));return}typeof t.arrayBuffer=="function"&&t.arrayBuffer().then(n=>this.handleBinaryFrame(new Uint8Array(n)))}handleBinaryFrame(t){const n=t[0];if(n!==void 0&&Object.values(Ke).includes(n)){const o=Tl(t);if(!o)return;for(const i of this.fileTransferHandlers)i(o);return}const r=Sl(t);for(const o of this.terminalHandlers)o(r)}handleTextFrame(t){let n;try{n=JSON.parse(t)}catch{return}const s=n;switch(s.type){case"status":this.handleStatus(s);return;case"pong":this.resolvePending(s.requestId,void 0);return;case"ping":this.transport.sendText(JSON.stringify({type:"pong",requestId:s.requestId,serverReceivedAt:this.now(),serverSentAt:this.now()}));return;case"session":this.handleSession(s.message);return;default:return}}handleStatus(t){const n=t.payload;(n==null?void 0:n.status)==="server_info"&&this.helloResolve&&(this.helloResolve(n),this.helloResolve=null,this.helloReject=null)}handleSession(t){if(!t||typeof t!="object")return;const n=t;if(n.type==="rpc_error"&&typeof n.requestId=="string"){const s=this.pending.get(n.requestId);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(n.requestId),s.reject(new Wl(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))}}function Hl(e){const t=e;if(!t||t.type!=="provider_auth_flow_event"||typeof t.flowId!="string")return!1;const n=t.event;return typeof n=="object"&&n!==null&&typeof n.kind=="string"}class ts extends Error{constructor(t,n){super(t),this.operation=n,this.name="ProviderAuthError"}}class ns extends Error{constructor(t){super("prompt_cancelled"),this.promptId=t,this.name="PromptCancelledError"}}class Vl extends Error{constructor(t,n){super(t),this.operation=n,this.name="AgentUiError"}}function Kl(e){const t=e;return!!t&&t.type==="agent_ui_request"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}function Gl(e){const t=e;return!!t&&t.type==="agent_ui_resolved"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}function Yl(e){const t=e;return!!t&&t.type==="agent_archived"&&typeof t.agentId=="string"}function Xl(e){const t=e;return!!t&&t.type==="agent_deleted"&&typeof t.agentId=="string"}class Jl{constructor(t){L(this,"activeProviderAuthFlow",null);this.daemon=t}get connection(){return this.daemon}async createAgent(t){return await this.daemon.request("create_agent_request",{...t})}agent(t){return new Ql(this.daemon,t)}workspace(t){return new ed(this.daemon,t)}get providers(){return new td(this.daemon)}listExtensionPacks(){return this.daemon.request("extension_packs_list_request",{})}setExtensionPacks(t,n){return this.daemon.request("extension_packs_set_request",{packs:t},n==null?void 0:n.timeoutMs)}syncExtensionPacks(t){return this.daemon.request("extension_packs_set_request",{},t==null?void 0:t.timeoutMs)}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)})}hasProviderAuthCapability(){return this.daemon.hasFeature("providerAuth")}async listProviderAuth(){const t=await this.daemon.request("provider_auth_list_request",{});if(!t.ok)throw new ts(t.error??"failed to list provider auth state","list");return t.providers}async logoutProvider(t){const n=await this.daemon.request("provider_auth_logout_request",{provider:t});if(!n.ok)throw new ts(n.error??"failed to log out","logout");return{stillConfigured:n.stillConfigured}}async loginProvider(t,n,s,r){var p;if(this.activeProviderAuthFlow)throw new Error("a provider-auth login is already in progress for this client");let o;const i=new Promise(m=>{o=m}),a={flowId:null,buffered:[],pendingPrompt:null,cancelRequested:((p=r==null?void 0:r.signal)==null?void 0:p.aborted)??!1,terminal:!1,settle:o,unsubscribe:null};this.activeProviderAuthFlow=a;const l=this.daemon.onSessionMessage(m=>{Hl(m)&&this.routeProviderAuthEvent(a,m,s)}),u=this.daemon.onStateChange(m=>{m==="closed"&&this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})});let f=null;if(r!=null&&r.signal){const m=r.signal;f=()=>{a.cancelRequested=!0,a.flowId&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})},m.addEventListener("abort",f,{once:!0}),a.unsubscribe=()=>{l(),u(),m.removeEventListener("abort",f)}}else a.unsubscribe=()=>{l(),u()};try{const m=await this.daemon.request("provider_auth_login_request",{provider:t,authType:n});if(a.terminal)return i;if(!m.ok||!m.flowId)return this.settleProviderAuthFlow(a,{ok:!1,error:m.error}),i;a.flowId=m.flowId;const h=a.buffered;a.buffered=[];for(const y of h)y.flowId===a.flowId&&this.dispatchProviderAuthEvent(a,y.event,s);a.cancelRequested&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})}catch{a.terminal||this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})}return i}routeProviderAuthEvent(t,n,s){if(!t.terminal){if(t.flowId===null){t.buffered.push(n);return}n.flowId===t.flowId&&this.dispatchProviderAuthEvent(t,n.event,s)}}dispatchProviderAuthEvent(t,n,s){var r;switch(n.kind){case"done":this.settleProviderAuthFlow(t,{ok:!!n.ok,error:typeof n.error=="string"?n.error:void 0});return;case"prompt_cancelled":{const o=n.promptId;t.pendingPrompt&&t.pendingPrompt.promptId===o&&(t.pendingPrompt.reject(new ns(o)),t.pendingPrompt=null);return}case"prompt":this.handleProviderAuthPrompt(t,n,s);return;default:(r=s.onEvent)==null||r.call(s,n);return}}async handleProviderAuthPrompt(t,n,s){const r=new AbortController,o={promptId:n.promptId,promptKind:n.promptKind,message:n.message,placeholder:n.placeholder,options:n.options,signal:r.signal};let i;const a=new Promise((u,f)=>{i=f});a.catch(()=>{}),t.pendingPrompt={promptId:o.promptId,reject:u=>{r.abort(),i(u)}};const l=s.prompt(o);l.catch(()=>{});try{const u=await Promise.race([l,a]);if(t.terminal)return;t.pendingPrompt=null,await this.daemon.request("provider_auth_respond_request",{flowId:t.flowId,promptId:o.promptId,value:u})}catch(u){if(t.pendingPrompt=null,t.terminal||u instanceof ns)return;t.flowId&&this.daemon.request("provider_auth_cancel_request",{flowId:t.flowId}).catch(()=>{}),this.settleProviderAuthFlow(t,{ok:!1,error:"connection_lost"})}}settleProviderAuthFlow(t,n){var s;t.terminal||(t.terminal=!0,t.pendingPrompt&&(t.pendingPrompt.reject(new Error("provider-auth: flow ended")),t.pendingPrompt=null),(s=t.unsubscribe)==null||s.call(t),this.activeProviderAuthFlow===t&&(this.activeProviderAuthFlow=null),t.settle(n))}onAgentUiRequest(t){return this.daemon.onSessionMessage(n=>{Kl(n)&&t(n,{receivedAt:Date.now()})})}onAgentUiResolved(t){return this.daemon.onSessionMessage(n=>{Gl(n)&&t(n)})}async respondToUi(t,n){const s=await this.daemon.request("agent_ui_respond_request",{uiRequestId:t,response:n});return s.ok?{ok:!0}:{ok:!1,reason:s.error??"unknown"}}async listAgentUi(t){const n=await this.daemon.request("agent_ui_list_request",t?{agentId:t}:{});if(!n.ok)throw new Vl(n.error??"failed to list extension UI state","list");return{pending:n.pending??[],surfaces:n.surfaces??[]}}extensionUiAvailable(){return this.daemon.hasFeature("extensionUi")}}class Zl{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,{timestamp:s.timestamp,seq:s.seq})})}}class Ql{constructor(t,n){L(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new Zl(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})}setThinking(t){return this.daemon.request("agent_set_thinking_request",{agentId:this.agentId,level:t})}listThinkingLevels(){return this.daemon.request("agent_thinking_levels_request",{agentId:this.agentId})}}class ed{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 td{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 jn={pending:{},surfaces:{},resolved:{}},nd=50;function mr(e,t){return`${e}\0${t}`}function gn(e){return typeof e=="number"?e:Date.parse(e)}function sd(e,t){switch(t.type){case"ui_request":return rd(e,t.event,t.meta);case"ui_resolved":return{state:ad(e,t.event),effects:[]};case"snapshot":return{state:ld(t.pending,t.surfaces,e.resolved),effects:[]};case"disconnected":return{state:dd(e),effects:[]};case"agent_removed":return{state:ud(e,t.agentId),effects:[]};case"respond_sent":return{state:fd(e,t.requestId,t.response),effects:[]};case"respond_failed":return{state:pd(e,t.requestId),effects:[]}}}function rd(e,t,n){if(t.expectsResponse){const s={requestId:t.requestId,agentId:t.agentId,method:t.method,payload:t.payload,timeoutMs:t.timeoutMs,createdAt:t.createdAt,receivedAt:n.receivedAt,answerable:!0};return{state:{...e,pending:{...e.pending,[t.requestId]:s}},effects:[]}}if(t.surfaceKey!==void 0){const s=mr(t.agentId,t.surfaceKey);if(t.removed){if(!(s in e.surfaces))return{state:e,effects:[]};const o={...e.surfaces};return delete o[s],{state:{...e,surfaces:o},effects:[]}}const r={agentId:t.agentId,surfaceKey:t.surfaceKey,method:t.method,payload:t.payload,updatedAt:t.createdAt};return{state:{...e,surfaces:{...e.surfaces,[s]:r}},effects:[]}}return{state:e,effects:od(t)}}function od(e){switch(e.method){case"set_editor_text":{const t=typeof e.payload.text=="string"?e.payload.text:"";return[{type:"replace_composer_text",agentId:e.agentId,text:t}]}case"notify":{const t=typeof e.payload.message=="string"?e.payload.message:"",n=typeof e.payload.level=="string"?e.payload.level:"info";return[{type:"notify",agentId:e.agentId,message:t,level:n}]}default:return[]}}function id(e,t){if(!(e!=="select"&&e!=="confirm"))return{value:t.value,confirmed:t.confirmed}}function ad(e,t){const n=e.pending[t.requestId];if(!n)return e;const s={...e.pending};delete s[t.requestId];const r={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,createdAt:n.createdAt,reason:t.reason};return n.submittedAnswer!==void 0&&(r.answer=n.submittedAnswer),{...e,pending:s,resolved:cd(e.resolved,r)}}function cd(e,t){const n={...e,[t.requestId]:t},s=Object.values(n).filter(o=>o.agentId===t.agentId).toSorted((o,i)=>Rn(o.createdAt,o.requestId,i.createdAt,i.requestId)),r=s.length-nd;if(r<=0)return n;for(const o of s.slice(0,r))delete n[o.requestId];return n}function ld(e,t,n){const s={};for(const o of e)s[o.requestId]={requestId:o.requestId,agentId:o.agentId,method:o.method,payload:o.payload,timeoutMs:o.timeoutMs,createdAt:o.createdAt,answerable:!0};const r={};for(const o of t)r[mr(o.agentId,o.surfaceKey)]={agentId:o.agentId,surfaceKey:o.surfaceKey,method:o.method,payload:o.payload,updatedAt:o.updatedAt};return{pending:s,surfaces:r,resolved:n}}function dd(e){const t={};for(const[n,s]of Object.entries(e.pending))t[n]={...s,answerable:!1};return{...e,pending:t}}function ud(e,t){const n={};for(const[o,i]of Object.entries(e.pending))i.agentId!==t&&(n[o]=i);const s={};for(const[o,i]of Object.entries(e.surfaces))i.agentId!==t&&(s[o]=i);const r={};for(const[o,i]of Object.entries(e.resolved))i.agentId!==t&&(r[o]=i);return{pending:n,surfaces:s,resolved:r}}function fd(e,t,n){const s=e.pending[t];if(!s)return e;const r=id(s.method,n),o={...s,submitting:!0};return r!==void 0&&(o.submittedAnswer=r),{...e,pending:{...e.pending,[t]:o}}}function pd(e,t){const n=e.pending[t];if(!n)return e;const s={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,timeoutMs:n.timeoutMs,createdAt:n.createdAt,receivedAt:n.receivedAt,answerable:n.answerable};return{...e,pending:{...e.pending,[t]:s}}}function Rn(e,t,n,s){const r=gn(e)-gn(n);return r!==0?r:t.localeCompare(s)}function hd(e,t){return Object.values(e.pending).filter(n=>n.agentId===t).toSorted((n,s)=>Rn(n.createdAt,n.requestId,s.createdAt,s.requestId))}function gd(e){const t={};for(const n of Object.values(e.pending))t[n.agentId]=(t[n.agentId]??0)+1;return t}function md(e,t){return Object.values(e.resolved).filter(n=>n.agentId===t).toSorted((n,s)=>Rn(n.createdAt,n.requestId,s.createdAt,s.requestId))}function oy(e,t){if(e.timeoutMs===void 0)return null;const n=e.receivedAt??gn(e.createdAt);return Math.max(0,e.timeoutMs-(t-n))}function ss(e){return e.expectsResponse?"dialog":e.surfaceKey!==void 0?"surface":"transient"}function _d(e,t={}){let n=jn;const s=new Set,r=new Set;let o=!1,i=!1,a=[],l=0;function u(_){if(o)return;const k=sd(n,_);n=k.state,_.type==="ui_request"&&ss(_.event)==="transient"&&k.effects.length===0&&f(_.event.method);for(const T of s)T(n,k.effects)}function f(_){r.has(_)||(r.add(_),t.onUnknownMethod?t.onUnknownMethod(_):console.warn(`agent-ui-controller: unknown extension-UI method "${_}"`))}async function p(){if(o||!e.extensionUiAvailable())return;const _=++l;i||(i=!0,a=[]);let k;try{k=await e.listAgentUi()}catch(B){if(o||_!==l)return;i=!1,a=[];const F=B instanceof Error?B.message:String(B);console.error(`agent-ui-controller: failed to sync extension UI state: ${F}`);return}if(o||_!==l)return;i=!1;const T=a;a=[],u({type:"snapshot",pending:k.pending,surfaces:k.surfaces});for(const B of T)B.type==="ui_request"&&ss(B.event)==="transient"&&u(B)}const m=e.onAgentUiRequest((_,k)=>{const T={type:"ui_request",event:_,meta:k};i?a.push(T):u(T)}),h=e.onAgentUiResolved(_=>{const k={type:"ui_resolved",event:_};i?a.push(k):u(k)}),y=e.connection.onSessionMessage(_=>{(Yl(_)||Xl(_))&&u({type:"agent_removed",agentId:_.agentId})}),v=e.connection.onStateChange(_=>{_==="closed"||_==="closing"?u({type:"disconnected"}):_==="open"&&p()});p();async function x(_,k){u({type:"respond_sent",requestId:_,response:k});const T=await e.respondToUi(_,k);return T.ok||u({type:"respond_failed",requestId:_}),T}return{getState:()=>n,subscribe(_){return s.add(_),()=>s.delete(_)},respond:x,resync:p,dispose(){o||(o=!0,m(),h(),y(),v(),s.clear(),a=[])}}}const rs=32*1024,yd="invalid_or_expired_token";function wd(e){const t=e.reduce((r,o)=>r+o.length,0),n=new Uint8Array(t);let s=0;for(const r of e)n.set(r,s),s+=r.length;return n}class vd{constructor(t){L(this,"pending",new Map);L(this,"streamCursor",1);L(this,"detach",null);this.daemon=t}start(){this.detach||(this.detach=this.daemon.onFileTransferFrame(t=>this.dispatch(t)))}stop(){var t;(t=this.detach)==null||t.call(this),this.detach=null;for(const[n,s]of this.pending)s.reject(new Error("file transfer router stopped")),this.pending.delete(n)}async download(t){try{return await this.attemptDownload(t)}catch(n){if(!(n instanceof Error)||n.message!==yd)throw n;return await this.attemptDownload(t)}}async attemptDownload(t){const n=await this.daemon.request("file_download_token_request",{path:t});if(!n.ok||!n.token)throw new Error(n.error??"failed to issue download token");const s=El(this.pending,this.streamCursor);if(s===null)throw new Error("no free download stream");this.streamCursor=(s+1)%Ve;const r=new Promise((i,a)=>{this.pending.set(s,{chunks:[],meta:{},resolve:i,reject:a})});let o;try{o=await this.daemon.request("file_download_request",{token:n.token,stream:s})}catch(i){throw this.pending.delete(s),i}if(!o.ok)throw this.pending.delete(s),new Error(o.error??"download request failed");return r}async upload(t,n){const s=hn(),r=await this.daemon.request("file_upload_request",{path:t,transferId:s});if(!r.ok||r.stream===void 0)throw new Error(r.error??"upload request failed");const o=r.stream;this.daemon.sendBinary(Zt({opcode:"Begin",stream:o,meta:{transferId:s}}));for(let i=0;i<n.length;i+=rs){const a=n.subarray(i,i+rs);this.daemon.sendBinary(Zt({opcode:"Chunk",stream:o,data:a}))}this.daemon.sendBinary(Zt({opcode:"End",stream:o,ok:!0}))}dispatch(t){const n=this.pending.get(t.stream);if(n)switch(t.opcode){case"Begin":n.meta.fileName=t.meta.fileName,n.meta.mimeType=t.meta.mimeType;return;case"Chunk":n.chunks.push(t.data);return;case"End":this.pending.delete(t.stream),t.ok?n.resolve({bytes:wd(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 bd{constructor(t,n={}){L(this,"initialDelayMs");L(this,"maxDelayMs");L(this,"factor");L(this,"jitter");L(this,"maxAttempts");L(this,"setTimer");L(this,"clearTimer");L(this,"random");L(this,"attempt",0);L(this,"timer",null);L(this,"active",!1);L(this,"reconnecting",!1);L(this,"detachState",null);L(this,"reconnectedHandlers",new Set);L(this,"failedHandlers",new Set);this.daemon=t,this.initialDelayMs=n.initialDelayMs??500,this.maxDelayMs=n.maxDelayMs??3e4,this.factor=n.factor??2,this.jitter=n.jitter??.2,this.maxAttempts=n.maxAttempts??Number.POSITIVE_INFINITY,this.setTimer=n.setTimer??((s,r)=>setTimeout(s,r)),this.clearTimer=n.clearTimer??(s=>clearTimeout(s)),this.random=n.random??Math.random}delayForAttempt(t){const n=Math.min(this.maxDelayMs,this.initialDelayMs*this.factor**(t-1)),s=n*this.jitter*(this.random()*2-1);return Math.max(0,Math.round(n+s))}onReconnected(t){return this.reconnectedHandlers.add(t),()=>this.reconnectedHandlers.delete(t)}onReconnectFailed(t){return this.failedHandlers.add(t),()=>this.failedHandlers.delete(t)}start(){this.active||(this.active=!0,this.detachState=this.daemon.onStateChange(t=>{t==="closed"&&this.active&&this.scheduleReconnect(),t==="open"&&(this.attempt=0)}))}stop(){var t;this.active=!1,this.timer&&this.clearTimer(this.timer),this.timer=null,(t=this.detachState)==null||t.call(this),this.detachState=null}reconnectNow(){this.active&&(this.reconnecting||this.daemon.state==="closed"&&(this.timer&&(this.clearTimer(this.timer),this.timer=null),this.attempt=0,this.tryReconnect()))}get attemptCount(){return this.attempt}scheduleReconnect(){if(!this.active||this.timer||this.attempt>=this.maxAttempts)return;this.attempt+=1;const t=this.delayForAttempt(this.attempt);this.timer=this.setTimer(()=>{this.timer=null,!this.reconnecting&&this.tryReconnect()},t)}async tryReconnect(){if(!this.active||this.reconnecting)return;this.reconnecting=!0;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()}finally{this.reconnecting=!1}}}function os(e){const t=e.trim();if(t==="")return t;const n=t.match(/^([a-z][a-z0-9+.-]*):\/\//i);if(!n)return`ws://${t.replace(/\/+$/,"")}`;const s=n[1].toLowerCase(),r=t.slice(n[0].length).replace(/\/+$/,"");switch(s){case"http":return`ws://${r}`;case"https":return`wss://${r}`;case"ws":case"wss":return`${s}://${r}`;default:return t}}function Cn(e){const t=Fl(e);return t!=null&&t.relay?{mode:"relay",url:Ll(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:os(t.host)}:{mode:"direct",url:os(e)}}const Sd=`
3
+ const pending = new Set();
4
+ self.onmessage = (e) => {
5
+ const msg = e.data;
6
+ if (msg.cancel) {
7
+ pending.delete(msg.id);
8
+ return;
9
+ }
10
+ pending.add(msg.id);
11
+ setTimeout(() => {
12
+ if (!pending.has(msg.id)) return; // cancelled before it fired
13
+ pending.delete(msg.id);
14
+ self.postMessage({ id: msg.id });
15
+ }, msg.ms);
16
+ };
17
+ `;function xd(){return{setTimer:(e,t)=>setTimeout(e,t),clearTimer:e=>clearTimeout(e)}}function kd(){const e=new Blob([Sd],{type:"application/javascript"}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t);const s=new Map;let r=1;return n.addEventListener("message",o=>{const i=s.get(o.data.id);s.delete(o.data.id),i==null||i()}),{setTimer:(o,i)=>{const a=r++;return s.set(a,o),n.postMessage({id:a,ms:i}),a},clearTimer:o=>{const i=o;s.delete(i)&&n.postMessage({id:i,cancel:!0})}}}let st=null;function is(){if(st)return st;try{st=kd()}catch{st=xd()}return st}function Id(){return{setTimer:(e,t)=>is().setTimer(e,t),clearTimer:e=>is().clearTimer(e)}}const Td=32,ce=new Map;function Ed(){for(;ce.size>Td;){let e=null;for(const[t,n]of ce)if(n.refs===0&&n.entry){URL.revokeObjectURL(n.entry.objectUrl),e=t;break}if(e===null)return;ce.delete(e)}}function iy(e,t){const n=ce.get(e);if(n)return n.refs+=1,ce.delete(e),ce.set(e,n),n.entry?Promise.resolve(n.entry):n.pending;const s={refs:1,entry:null,pending:null};return ce.set(e,s),Ed(),s.pending=t(e).then(r=>{const o=new Blob([Uint8Array.from(r.bytes)],{type:r.mimeType||"application/octet-stream"}),i={objectUrl:URL.createObjectURL(o),mimeType:r.mimeType};return ce.get(e)===s?(s.entry=i,s.pending=null):URL.revokeObjectURL(i.objectUrl),i}).catch(r=>{throw ce.get(e)===s&&ce.delete(e),r}),s.pending}function ay(e){const t=ce.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function jd(){for(const e of ce.values())e.entry&&URL.revokeObjectURL(e.entry.objectUrl);ce.clear()}function Rd(){return"web-"+Math.random().toString(36).slice(2,10)}const $=pe()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=Cn(n.url);let r;s.mode==="relay"?r=Bl({daemonPublicKey:s.daemonPublicKey}):n.password&&(r=ur(f=>new WebSocket(f,[`pi-studio.bearer.${n.password}`])));const o=new Ul({url:s.url,clientId:n.clientId??Rd(),clientType:"browser",capabilities:{[Et.inline_image_markdown]:!0,[Et.file_link_markdown]:!0,[Et.mermaid_diagram_markdown]:!0,[Et.terminal_reflowable_snapshot]:!0},transport:r,rpcTimeoutMs:1800*1e3}),i=new Jl(o),{setTimer:a,clearTimer:l}=Id(),u=new bd(o,{setTimer:a,clearTimer:l});o.onStateChange(f=>e({status:f})),u.onReconnected(()=>e({error:null})),u.onReconnectFailed(f=>{e({error:f instanceof Error?f.message:String(f)})}),e({daemon:o,client:i,reconnection:u,error:null,status:"connecting"});try{const f=await o.connect();e({serverInfo:f}),u.start()}catch(f){throw e({error:f instanceof Error?f.message:String(f)}),f}},disconnect(){const{daemon:n,reconnection:s}=t();s==null||s.stop(),n==null||n.close(),jd(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}}));function _r(){var e;return((e=$.getState().serverInfo)==null?void 0:e.homeDir)??null}const Cd=100,Ad=480,Md=220,qd=280;function Rt(e){return Math.min(Ad,Math.max(Cd,e))}const M=pe()(e=>({host:"ws://127.0.0.1:6767",password:"",cwd:"~",cwdPickerOpen:!1,settingsOpen:!1,sessionMenu:null,workspaceMenu:null,tabMenu:null,fileMenu:null,rightSidebarTab:"files",collapsedWorkspaces:new Set,leftSidebarCollapsed:!1,rightSidebarCollapsed:!1,leftSidebarWidth:Md,rightSidebarWidth:qd,setHost:t=>e({host:t}),setPassword:t=>e({password:t}),setCwd:t=>e({cwd:t}),openCwdPicker:()=>e({cwdPickerOpen:!0}),closeCwdPicker:()=>e({cwdPickerOpen:!1}),openSettings:()=>e({settingsOpen:!0}),closeSettings:()=>e({settingsOpen:!1}),openSessionMenu:(t,n,s)=>e({sessionMenu:{sessionId:t,x:n,y:s}}),closeSessionMenu:()=>e({sessionMenu:null}),openWorkspaceMenu:(t,n,s)=>e({workspaceMenu:{cwd:t,x:n,y:s}}),closeWorkspaceMenu:()=>e({workspaceMenu:null}),openTabMenu:(t,n,s)=>e({tabMenu:{tabId:t,x:n,y:s}}),closeTabMenu:()=>e({tabMenu:null}),openFileMenu:(t,n,s,r,o)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:r,background:o}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),setCollapsedWorkspaces:t=>e({collapsedWorkspaces:t}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:Rt(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:Rt(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:Rt(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:Rt(n.rightSidebarWidth+t)}))}));function Pd(e){switch(e){case"connected":return{status:"finished"};case"error":return{status:"error"};case"disconnected":case"closing":return{status:"idle",showInactive:!0};case"connecting":return null}}const as=40;function yr(e){return/^\[object [A-Za-z]+\]$/.test(e)}function Nd(e){const t=(e.split(`
18
+ `)[0]??"").trim();return t===""||yr(t)?"connection failed":/refus/i.test(t)?"connection refused":/time(?:d)?[\s-]*out|timeout/i.test(t)?"timed out":/\b401\b|\b403\b|unauthor|forbidden|auth/i.test(t)?"auth failed":t.length>as?`${t.slice(0,as-1)}…`:t}function wr(e){if(e.trim()==="")return!1;try{const t=Cn(e);return/^wss?:\/\//i.test(t.url)?new URL(t.url).hostname!=="":!1}catch{return!1}}function cs(e){try{const{url:t}=Cn(e);return t===""?null:t}catch{return null}}function Dd(e){const{status:t,error:n,url:s}=e;if(t==="open"){const o=cs(s);return{kind:"connected",statusLabel:"connected",hostLabel:o,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!1},title:o?`${o} · connected`:"connected"}}if(t==="closing"){const o=cs(s);return{kind:"closing",statusLabel:"disconnecting…",hostLabel:o,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!0},title:o?`${o} · disconnecting…`:"disconnecting…"}}if(t==="connecting")return{kind:"connecting",statusLabel:"connecting…",hostLabel:null,showFields:!0,fieldsFrozen:!0,action:{label:"Connecting…",variant:"default",disabled:!0},title:"connecting…"};const r=wr(s);if(n!==null&&n!==""){const o=Nd(n);return{kind:"error",statusLabel:o,hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Retry",variant:"default",disabled:!r},title:yr(n.trim())?o:n}}return{kind:"disconnected",statusLabel:"disconnected",hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Connect",variant:"default",disabled:!r},title:"disconnected"}}const $d="_bar_1o0iw_9",Od="_title_1o0iw_21",Ld="_brand_1o0iw_27",Bd="_version_1o0iw_33",Fd="_statusPill_1o0iw_41",zd="_statusText_1o0iw_60",Wd="_statusHost_1o0iw_68",Ud="_statusSep_1o0iw_76",Hd="_statusLabel_1o0iw_79",Vd="_statusDot_1o0iw_82",Kd="_statusSpinner_1o0iw_83",Gd="_statusPillError_1o0iw_87",Yd="_field_1o0iw_4",Xd="_fieldUrl_1o0iw_111",Jd="_fieldPassword_1o0iw_115",Zd="_fieldInvalid_1o0iw_122",Qd="_action_1o0iw_139",eu="_panelToggles_1o0iw_147",tu="_panelToggle_1o0iw_147",X={bar:$d,title:Od,brand:Ld,version:Bd,statusPill:Fd,statusText:zd,statusHost:Wd,statusSep:Ud,statusLabel:Hd,statusDot:Vd,statusSpinner:Kd,statusPillError:Gd,field:Yd,fieldUrl:Xd,fieldPassword:Jd,fieldInvalid:Zd,action:Qd,panelToggles:eu,panelToggle:tu},nu=w.lazy(()=>Se(()=>import("./SettingsDialog-W_cj4IZ1.js").then(e=>e.S),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.SettingsDialog}))),qe=26,su="var(--pi-font-size-2xs)",ru=9,ls="host:port, ws://…/http://…, or a pasted pairing link";function ou(){var ge;const e=$(j=>j.status),t=$(j=>j.error),n=$(j=>j.connect),s=$(j=>j.disconnect),r=$(j=>j.serverInfo),o=M(j=>j.host),i=M(j=>j.setHost),a=M(j=>j.password),l=M(j=>j.setPassword),u=M(j=>j.leftSidebarCollapsed),f=M(j=>j.toggleLeftSidebar),p=M(j=>j.rightSidebarCollapsed),m=M(j=>j.toggleRightSidebar),h=M(j=>j.settingsOpen),y=M(j=>j.openSettings),v=M(j=>j.closeSettings),x=!!((ge=r==null?void 0:r.features)!=null&&ge.providerAuth),[_,k]=w.useState(h);w.useEffect(()=>{h&&k(!0)},[h]);const T=Dd({status:e,error:t,url:o}),B=Pd(T.kind),F=w.useRef({host:o,password:a}),[se,P]=w.useState(!1),J=se&&o.trim()!==""&&!wr(o);function ie(){T.action.disabled||(F.current={host:o,password:a},n({url:o,password:a||void 0}))}function he(){if(T.kind==="connected"||T.kind==="closing"){s();return}ie()}function K(j,C){if(j.key==="Enter"){j.preventDefault(),ie();return}j.key==="Escape"&&(j.preventDefault(),C==="url"?(i(F.current.host),P(!1)):l(F.current.password),j.currentTarget.blur())}return c.jsxs("div",{className:X.bar,children:[c.jsxs("span",{className:X.title,children:[c.jsx("span",{className:X.brand,children:"Pi-Studio"}),c.jsxs("span",{className:X.version,children:["v","0.0.102"]})]}),c.jsxs("span",{className:W(X.statusPill,T.kind==="error"&&X.statusPillError),title:T.title,children:[B?c.jsx(Ht,{...B,className:X.statusDot}):c.jsx(nr,{size:ru,color:"var(--pi-color-statusWarning)",className:X.statusSpinner,"aria-label":"Connecting"}),c.jsxs("span",{className:X.statusText,children:[T.hostLabel&&c.jsx("span",{className:X.statusHost,children:T.hostLabel}),T.hostLabel&&c.jsx("span",{className:X.statusSep,"aria-hidden":!0,children:"·"}),c.jsx("span",{className:X.statusLabel,"aria-live":"polite",children:T.statusLabel})]})]}),T.showFields&&c.jsxs(c.Fragment,{children:[c.jsx($t,{className:W(X.field,X.fieldUrl,J&&X.fieldInvalid),value:o,onChange:j=>i(j.target.value),onFocus:()=>P(!1),onBlur:()=>P(!0),onKeyDown:j=>K(j,"url"),readOnly:T.fieldsFrozen,placeholder:"ws://127.0.0.1:6767",title:J?`Not a dialable daemon address — ${ls}`:ls,"aria-label":"Daemon address","aria-invalid":J||void 0,spellCheck:!1,autoComplete:"off"}),c.jsx($t,{className:W(X.field,X.fieldPassword),type:"password",value:a,onChange:j=>l(j.target.value),onKeyDown:j=>K(j,"password"),readOnly:T.fieldsFrozen,placeholder:"password",title:"Daemon password — ignored when the address is a pairing link","aria-label":"Daemon password",autoComplete:"off"})]}),c.jsx(ae,{className:X.action,size:"xs",variant:T.action.variant,disabled:T.action.disabled,style:{minHeight:qe,fontSize:su},onClick:he,children:T.action.label}),c.jsxs("div",{className:X.panelToggles,children:[c.jsx(ae,{className:X.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:qe,width:qe},"aria-label":"Toggle left panel",title:u?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>f(),children:c.jsx(ne,{icon:u?Co:Ao,size:"sm"})}),c.jsx(ae,{className:X.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:qe,width:qe},"aria-label":"Toggle right panel",title:p?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>m(),children:c.jsx(ne,{icon:p?Mo:qo,size:"sm"})}),x&&c.jsx(ae,{className:X.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:qe,width:qe},"aria-label":"Settings",title:"Settings",onClick:()=>y(),children:c.jsx(ne,{icon:Po,size:"sm"})})]}),_&&c.jsx(w.Suspense,{fallback:null,children:c.jsx(nu,{open:h,onOpenChange:j=>j?y():v()})})]})}const An={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let ds=0;function Me(){return ds+=1,`row-${ds}`}function iu(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 au(e,t){return e??`${t.kind}:${iu(t)}`}function Xe(e,t){if(t===null)return;const n=e[t];n&&(n.kind!=="assistant"&&n.kind!=="reasoning"||n.streaming&&(e[t]={...n,streaming:!1}))}function vr(e){if(e.streamingAssistantIndex===null&&e.streamingReasoningIndex===null)return e;const t=e.rows.slice();return Xe(t,e.streamingAssistantIndex),Xe(t,e.streamingReasoningIndex),{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function cu(e){return vr(e)}function lu(e,t,n,s){var a;const r=e.rows.slice();Xe(r,e.streamingReasoningIndex);let o=e.streamingAssistantIndex;if(o===null||((a=r[o])==null?void 0:a.kind)!=="assistant"){if(!t)return{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null};const l={kind:"assistant",id:Me(),text:"",streaming:!0,timestamp:s};r.push(l),o=r.length-1}const i=r[o];return!i||i.kind!=="assistant"?e:(r[o]={...i,text:i.text+t,streaming:!n},{...e,rows:r,streamingAssistantIndex:n?null:o,streamingReasoningIndex:null})}function du(e,t,n,s){var a;const r=e.rows.slice();Xe(r,e.streamingAssistantIndex);let o=e.streamingReasoningIndex;if(o===null||((a=r[o])==null?void 0:a.kind)!=="reasoning"){if(!t)return{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null};const l={kind:"reasoning",id:Me(),text:"",streaming:!0,timestamp:s};r.push(l),o=r.length-1}const i=r[o];return!i||i.kind!=="reasoning"?e:(r[o]={...i,text:i.text+t,streaming:!n},{...e,rows:r,streamingReasoningIndex:n?null:o,streamingAssistantIndex:null})}function uu(e,t){if(e.kind!==t.kind)return t;const n={...e};for(const[s,r]of Object.entries(t))r!==void 0&&r!==""&&(n[s]=r);return n}function fu(e,t,n){var l;const s=au(t.callId,t.tool),r=t.status==="completed"||t.status==="error"?t.status:"running",o=e.toolIndexByCallId[s],i=e.rows.slice();if(Xe(i,e.streamingAssistantIndex),Xe(i,e.streamingReasoningIndex),o!==void 0&&((l=i[o])==null?void 0:l.kind)==="tool"){const u=i[o];if(u.kind!=="tool")return e;const f=t.status??u.statusText;return i[o]={...u,tool:uu(u.tool,t.tool),status:r,...f!==void 0?{statusText:f}:{}},{...e,rows:i,streamingAssistantIndex:null,streamingReasoningIndex:null}}const a={kind:"tool",id:Me(),callId:s,tool:t.tool,status:r,...t.status!==void 0?{statusText:t.status}:{},timestamp:n};return i.push(a),{...e,rows:i,toolIndexByCallId:{...e.toolIndexByCallId,[s]:i.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function Mn(e){return vr(e)}function pu(e,t,n){const s=Mn(e),r={kind:"error",id:Me(),text:t||"turn failed",timestamp:n};return{...s,rows:[...s.rows,r]}}function hu(e,t){const n=Mn(e),s={kind:"system",id:Me(),text:"(canceled)",timestamp:t};return{...n,rows:[...n.rows,s]}}function gu(e,t,n){const s={kind:"error",id:Me(),text:t||"error",timestamp:n};return{...e,rows:[...e.rows,s]}}function mu(e,t,n,s,r){if(s!==void 0){const i=e.rows.findIndex(a=>a.kind==="user"&&a.pending&&a.clientMessageId===s);if(i!==-1){const a=e.rows.slice(),l=a[i];if((l==null?void 0:l.kind)==="user")return a[i]={...l,text:t,images:n,pending:!1,...r!==void 0?{timestamp:r}:{}},{...e,rows:a}}}const o={kind:"user",id:Me(),text:t,images:n,clientMessageId:s,timestamp:r};return{...e,rows:[...e.rows,o]}}function _u(e,t){let n=!1;const s=e.rows.map(r=>r.kind!=="user"||!r.queued||t.includes(r.text)?r:(n=!0,{...r,queued:!1}));return n?{...e,rows:s}:e}function br(e,t,n){switch(t.kind){case"turn_started":return cu(e);case"user_message":return mu(e,t.text??"",t.images,t.messageId,n);case"assistant_message":return lu(e,t.text??"",t.final??!1,n);case"reasoning":return du(e,t.text??"",t.final??!1,n);case"tool_call":return fu(e,t,n);case"turn_completed":return Mn(e);case"turn_failed":return pu(e,t.error,n);case"turn_canceled":return hu(e,n);case"error":return gu(e,t.message,n);case"queue_update":return _u(e,t.steering??[]);default:return e}}function yu(e){return e.reduce((t,{event:n,timestamp:s})=>br(t,n,s),An)}function wu(e,t,n,s,r,o){const i={kind:"user",id:Me(),text:n,images:s,clientMessageId:t,pending:!0,queued:r,timestamp:o};return{...e,rows:[...e.rows,i]}}function vu(e,t){const n=e.rows.findIndex(o=>o.kind==="user"&&o.pending&&o.clientMessageId===t);if(n===-1)return e;const s=e.rows.slice(),r=s[n];return(r==null?void 0:r.kind)!=="user"?e:(s[n]={...r,pending:!1,failed:!0},{...e,rows:s})}let us=0;function bu(){return us+=1,`s-${Date.now().toString(36)}-${us}`}const q=pe()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=bu(),r={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:An,userMessageCount:0};return e(o=>({sessions:{...o.sessions,[s]:r},order:[s,...o.order],activeSessionId:s})),s},hydrate(n){e(s=>s.sessions[n.id]?s:{sessions:{...s.sessions,[n.id]:n},order:[...s.order,n.id]})},bindAgent(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,agentId:s}}}:r})},setStatus(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,status:s}}}:r})},setStatusByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setStatus(r.id,s)},setModel(n,s,r){e(o=>{const i=o.sessions[n];return i?{sessions:{...o.sessions,[n]:{...i,model:s,modelProvider:r}}}:o})},setModelByAgentId(n,s,r){const o=t().findByAgentId(n);o&&t().setModel(o.id,s,r)},setThinkingLevel(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,thinkingLevel:s}}}:r})},setThinkingLevelByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setThinkingLevel(r.id,s)},setTitle(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,title:s}}}:r})},setCwd(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,cwd:s}}}:r})},applyStreamEvent(n,s,r){e(o=>{const i=o.sessions[n];if(!i)return o;const a=br(i.timeline,s,r);let l=i.title;if(s.kind==="turn_completed"&&l==="New chat"){const u=a.rows.toReversed().find(f=>f.kind==="assistant");u&&u.kind==="assistant"&&u.text&&(l=u.text.slice(0,40)+(u.text.length>40?"…":""))}return{sessions:{...o.sessions,[n]:{...i,timeline:a,title:l}}}})},addOptimisticUserMessage(n,s,r,o,i){e(a=>{const l=a.sessions[n];if(!l)return a;const u=wu(l.timeline,s,r,o,i,new Date().toISOString());return{sessions:{...a.sessions,[n]:{...l,timeline:u,userMessageCount:l.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(r=>{const o=r.sessions[n];if(!o)return r;const i=vu(o.timeline,s);return{sessions:{...r.sessions,[n]:{...o,timeline:i}}}})},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:r,...o}=s.sessions,i=s.order.filter(l=>l!==n),a=s.activeSessionId===n?i[0]??null:s.activeSessionId;return{sessions:o,order:i,activeSessionId:a}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),fs=new WeakMap;function Su(e,t="pi"){const n=fs.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(r=>({model:r.model,modelProvider:r.modelProvider,thinkingLevel:r.thinkingLevel})).catch(()=>({}));return fs.set(e,s),s}const qt=new Map;function xu(e,t){const n=q.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=qt.get(t);if(s)return s;const r=(async()=>{if(!n.model){const l=await Su(e),u=q.getState().sessions[t];l.model&&u&&!u.model&&q.getState().setModel(t,l.model,l.modelProvider);const f=q.getState().sessions[t];l.thinkingLevel&&f&&f.thinkingLevel===void 0&&q.getState().setThinkingLevel(t,l.thinkingLevel)}const o=q.getState().sessions[t];if(!o)throw new Error(`unknown session: ${t}`);const i={provider:"pi",cwd:o.cwd||"~"};o.model&&(i.model=o.model),o.modelProvider&&(i.modelProvider=o.modelProvider);const a=await e.createAgent({config:i,labels:{}});return q.getState().bindAgent(t,a.agentId),a.agentId})();return qt.set(t,r),r.finally(()=>qt.delete(t)),r}async function ku(e,t){var r;const n=q.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((r=qt.get(t))==null?void 0:r.catch(()=>{}));const s=q.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),q.getState().remove(t),!0):!1}const Iu=4;function Sr(e){return e==="left"||e==="right"?"row":"column"}function le(e){return e.kind==="leaf"?[e.id]:e.children.flatMap(le)}function qn(e,t){return e.kind==="leaf"?e.id===t:e.children.some(n=>qn(n,t))}function xr(e,t,n=1){if(e.kind==="leaf")return e.id===t?n:null;for(const s of e.children){const r=xr(s,t,n+1);if(r!==null)return r}return null}function kr(e,t){if(e.kind==="leaf")return null;if(Pn(e,t)!==-1)return e;for(const n of e.children){const s=kr(n,t);if(s)return s}return null}function Pn(e,t){return e.children.findIndex(n=>n.kind==="leaf"&&n.id===t)}function gt(e,t,n){const s=xr(e,t);if(s===null)return!1;const r=kr(e,t);return r&&r.direction===Sr(n)?!0:s+1<=Iu}function ps(e,t,n,s){if(!gt(e,t,n)||qn(e,s))return e;const r=Sr(n),o=n==="left"||n==="top",i={kind:"leaf",id:s},a=u=>({kind:"split",direction:r,children:o?[i,u]:[u,i],sizes:[.5,.5]}),l=u=>{if(u.kind==="leaf")return u.id===t?a(u):u;const f=Pn(u,t);if(f!==-1&&u.direction===r){const p=u.sizes[f]/2,m=o?f:f+1,h=u.children.slice(),y=u.sizes.slice();return y[f]=p,h.splice(m,0,i),y.splice(m,0,p),{kind:"split",direction:u.direction,children:h,sizes:y}}return{kind:"split",direction:u.direction,children:u.children.map(l),sizes:u.sizes.slice()}};return l(e)}function Ir(e,t){if(!qn(e,t)||e.kind==="leaf")return e;const n=s=>{if(s.kind==="leaf")return s;const r=Pn(s,t);if(r===-1)return{kind:"split",direction:s.direction,children:s.children.map(n),sizes:s.sizes.slice()};const o=s.sizes.filter((l,u)=>u!==r),i=o.reduce((l,u)=>l+u,0),a=i+s.sizes[r];return{kind:"split",direction:s.direction,children:s.children.filter((l,u)=>u!==r),sizes:o.map(l=>l/i*a)}};return Tr(n(e))}function Tr(e){if(e.kind==="leaf")return e;const t=e.children.map(Tr);if(t.length===1)return t[0];const n=[],s=[];return t.forEach((r,o)=>{const i=e.sizes[o];r.kind==="split"&&r.direction===e.direction?r.children.forEach((a,l)=>{n.push(a),s.push(i*r.sizes[l])}):(n.push(r),s.push(i))}),n.length===1?n[0]:{kind:"split",direction:e.direction,children:n,sizes:s}}const hs=.1;function Tu(e){const t=new Map,n=(s,r)=>{if(s.kind==="leaf"){t.set(s.id,r);return}Er(s,r).forEach((o,i)=>n(s.children[i],o))};return n(e,{x:0,y:0,width:1,height:1}),t}function Er(e,t){const n=[];let s=0;for(const r of e.sizes)n.push(e.direction==="row"?{x:t.x+s*t.width,y:t.y,width:r*t.width,height:t.height}:{x:t.x,y:t.y+s*t.height,width:t.width,height:r*t.height}),s+=r;return n}function Eu(e){const t=[],n=(s,r,o)=>{if(s.kind==="leaf")return;const i=Er(s,r);for(let a=0;a<s.children.length-1;a+=1){const l=i[a];t.push({splitPath:o.slice(),boundaryIndex:a,direction:s.direction,rect:s.direction==="row"?{x:l.x+l.width,y:r.y,width:0,height:r.height}:{x:r.x,y:l.y+l.height,width:r.width,height:0},splitRect:r})}i.forEach((a,l)=>n(s.children[l],a,[...o,l]))};return n(e,{x:0,y:0,width:1,height:1},[]),t}function ju(e,t){let n=e;for(const s of t){if(!n||n.kind!=="split")return null;n=n.children[s]}return n??null}function Ru(e,t,n,s){const r=ju(e,t);if(!r||r.kind!=="split"||n<0||n>r.children.length-2||!Number.isFinite(s)||s===0)return e;const o=r.sizes[n],i=r.sizes[n+1],a=i-Math.min(i,hs),l=o-Math.min(o,hs),u=Math.max(-l,Math.min(a,s));if(u===0)return e;const f=m=>{const h=m.sizes.slice();return h[n]=o+u,h[n+1]=i-u,{kind:"split",direction:m.direction,children:m.children,sizes:h}},p=(m,h)=>{if(m.kind!=="split")return m;if(h===t.length)return f(m);const y=t[h],v=m.children.slice();return v[y]=p(m.children[y],h+1),{kind:"split",direction:m.direction,children:v,sizes:m.sizes.slice()}};return p(e,0)}function jr(e,t){const n=le(e).filter(s=>!t.has(s));return n.length===0?e:n.reduce((s,r)=>Ir(s,r),e)}const Rr=1;function Cu(e){return Cr(e,new Set)}function Cr(e,t){if(typeof e!="object"||e===null)return null;const n=e;if(n.kind==="leaf"){const{id:o}=n;return typeof o!="string"||o.trim()===""||t.has(o)?null:(t.add(o),{kind:"leaf",id:o})}if(n.kind!=="split"||n.direction!=="row"&&n.direction!=="column"||!Array.isArray(n.children)||!Array.isArray(n.sizes)||n.children.length<2||n.sizes.length!==n.children.length)return null;let s=0;for(const o of n.sizes){if(typeof o!="number"||!Number.isFinite(o)||o<=0)return null;s+=o}const r=[];for(const o of n.children){const i=Cr(o,t);if(!i)return null;r.push(i)}return{kind:"split",direction:n.direction,children:r,sizes:n.sizes.map(o=>o/s)}}function Au(){if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"){const e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;const t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}const Mu=["sessions","terminals"];function mn(){return`pane-${Au()}`}function gs(){const e=mn();return{tree:{kind:"leaf",id:e},placement:{},activeByPane:{},focusedPaneId:e,pendingPlacement:{},pendingActive:{},userActedPanes:new Set}}function Ar(e,t,n){return(n??Object.keys(e.placement)).filter(r=>e.placement[r]===t)}function Mr(e,t,n,s){const r=Ar(e,t,s),o=r.indexOf(n),i=r.filter(a=>a!==n);if(i.length!==0)return i[Math.min(Math.max(o,0),i.length-1)]}function qu(e,t){return e.pendingActive[t]!==void 0?!0:Object.values(e.pendingPlacement).includes(t)}function Nn(e,t){if(qu(e,t))return e;const n=Ir(e.tree,t);if(n===e.tree)return e;const s={...e.activeByPane};delete s[t];const r=le(n);return{...e,tree:n,activeByPane:s,focusedPaneId:r.includes(e.focusedPaneId)?e.focusedPaneId:r[0]}}function Ct(e,t,n,s){const r=e.placement[t],o={...e.placement,[t]:n},i={...e.activeByPane};if(s.activate&&(i[n]=t),r!==void 0&&r!==n&&i[r]===t){const u=Mr(e,r,t,s.order);u===void 0?delete i[r]:i[r]=u}const a={...e,placement:o,activeByPane:i,focusedPaneId:s.focus?n:e.focusedPaneId};return r!==void 0&&r!==n&&!Object.values(o).includes(r)?Nn(a,r):a}function Fe(e,t){return e.userActedPanes.has(t)?e:{...e,userActedPanes:new Set(e.userActedPanes).add(t)}}function Pu(e){let t={...e,pendingPlacement:{},pendingActive:{}};const n=new Set(Object.values(t.placement));for(const o of le(t.tree))n.has(o)||(t=Nn(t,o));const s={...t.activeByPane};let r=!1;for(const o of le(t.tree)){if(s[o]!==void 0)continue;const i=Object.keys(t.placement).find(a=>t.placement[a]===o);i!==void 0&&(s[o]=i,r=!0)}return r?{...t,activeByPane:s}:t}function qr(e,t){if(e===void 0)return!1;const n=e.placement[t];return n!==void 0&&e.activeByPane[n]===t}const D=pe()((e,t)=>{const n=(s,r)=>{e(o=>{const i=o.layouts[s]??gs(),a=r(i)??i;return a===o.layouts[s]?o:{layouts:{...o.layouts,[s]:a}}})};return{layouts:{},hydrationSources:{sessions:!1,terminals:!1},restoring:!1,pendingActiveWorkspace:null,ensureWorkspace(s){e(r=>r.layouts[s]?r:{layouts:{...r.layouts,[s]:gs()}})},assignTab(s,r,o,i,a){n(s,l=>{const u=le(l.tree),f=o!==void 0&&u.includes(o)?o:u.includes(l.focusedPaneId)?l.focusedPaneId:u[0],p=i!==!0,m=Ct(l,r,f,{activate:p,focus:p,order:a});return p?Fe(m,f):m})},moveTab(s,r,o,i){n(s,a=>{if(a.placement[r]===void 0||a.placement[r]===o||!le(a.tree).includes(o))return null;const l=Ct(a,r,o,{activate:!0,focus:!0,order:i});return Fe(l,o)})},splitWithTab(s,r,o,i,a){n(s,l=>{if(!le(l.tree).includes(o)||!gt(l.tree,o,i))return null;const u=Ar(l,o,a);if(u.length===1&&u[0]===r)return null;const f=mn(),p=ps(l.tree,o,i,f);if(p===l.tree)return null;const m=Ct({...l,tree:p},r,f,{activate:!0,focus:!0,order:a});return Fe(m,f)})},splitEmpty(s,r,o){let i=null;return n(s,a=>{if(!le(a.tree).includes(r)||!gt(a.tree,r,o))return null;const l=mn(),u=ps(a.tree,r,o,l);return u===a.tree?null:(i=l,{...a,tree:u,focusedPaneId:l})}),i},removeTab(s,r,o){n(s,i=>{const a=i.placement[r];if(a===void 0)return null;const l={...i.placement};delete l[r];const u={...i.activeByPane};if(u[a]===r){const p=Mr(i,a,r,o);p===void 0?delete u[a]:u[a]=p}const f={...i,placement:l,activeByPane:u};return Object.values(l).includes(a)?f:Nn(f,a)})},setActiveTab(s,r,o){n(s,i=>i.placement[o]!==r?null:i.activeByPane[r]===o?Fe(i,r):Fe({...i,activeByPane:{...i.activeByPane,[r]:o}},r))},focusPane(s,r){n(s,o=>o.focusedPaneId===r||!le(o.tree).includes(r)?null:{...o,focusedPaneId:r})},resizeDivider(s,r,o,i){n(s,a=>{const l=Ru(a.tree,r,o,i);return l===a.tree?null:{...a,tree:l}})},installPersistedLayouts(s,r=null){e(o=>{const i={...o.layouts};for(const[a,l]of s){const u=le(l.tree);i[a]={tree:l.tree,placement:{},activeByPane:{},focusedPaneId:l.activePaneId!==null&&u.includes(l.activePaneId)?l.activePaneId:u[0],pendingPlacement:{...l.placement},pendingActive:{...l.activeByPane},userActedPanes:new Set}}return{layouts:i,hydrationSources:{sessions:!1,terminals:!1},restoring:!0,pendingActiveWorkspace:r!==null&&i[r]!==void 0?r:null}})},claimPaneFor(s,r,o,i){n(s,a=>{const l=le(a.tree);let u,f=!1;if(i!==void 0&&l.includes(i))u=i;else if(o!==null){const y=a.pendingPlacement[o];y!==void 0&&l.includes(y)&&(u=y,f=!0)}u??(u=l.includes(a.focusedPaneId)?a.focusedPaneId:l[0]);let p=a;if(f&&o!==null){const y={...a.pendingPlacement};delete y[o],p={...a,pendingPlacement:y}}let m=!0;if(f){const y=p.pendingActive[u];p.userActedPanes.has(u)?m=!1:y!==void 0&&y!==o&&(m=p.activeByPane[u]===void 0)}else t().restoring&&(m=p.activeByPane[u]===void 0);const h=Ct(p,r,u,{activate:m,focus:!f&&m});return f?h:Fe(h,u)})},markHydrationSource(s){e(r=>{if(r.hydrationSources[s])return r;const o={...r.hydrationSources,[s]:!0};if(!Mu.every(a=>o[a]))return{hydrationSources:o};const i={};for(const[a,l]of Object.entries(r.layouts))i[a]=Pu(l);return{hydrationSources:o,layouts:i,restoring:!1,pendingActiveWorkspace:null}})},paneOfTab(s,r){var o;return((o=t().layouts[s])==null?void 0:o.placement[r])??null},activeTabOf(s){const r=t().layouts[s];return r?r.activeByPane[r.focusedPaneId]??null:null}}});function Nu(e,t){return e.filter(n=>n.workspaceCwd===t)}function Du(e,t){return Nu(e,t).map(n=>n.id)}function lt(e){const t=e===null?null:D.getState().activeTabOf(e);if(R.setState({activeTabId:t,activeWorkspaceCwd:e}),t!==null)return R.getState().tabs.find(n=>n.id===t)}function dt(e){(e==null?void 0:e.kind)==="chat"&&q.getState().activate(e.data.sessionId)}const R=pe()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,open(n,s){const r=t().tabs.find(i=>i.id===n.id);if(r){t().activate(r.id);return}e(i=>({tabs:[...i.tabs,n]}));const o=D.getState();o.ensureWorkspace(n.workspaceCwd),o.claimPaneFor(n.workspaceCwd,n.id,Ot(n),s),dt(lt(n.workspaceCwd))},close(n){const s=t().tabs.find(a=>a.id===n);if(!s)return;const r=Du(t().tabs,s.workspaceCwd),o=t().activeTabId;e(a=>({tabs:a.tabs.filter(l=>l.id!==n)})),D.getState().removeTab(s.workspaceCwd,n,r);const i=lt(t().activeWorkspaceCwd);t().activeTabId!==o&&dt(i)},activate(n){const s=t().tabs.find(i=>i.id===n);if(!s)return;const r=D.getState();r.ensureWorkspace(s.workspaceCwd);const o=r.paneOfTab(s.workspaceCwd,n);o===null?r.claimPaneFor(s.workspaceCwd,n,Ot(s)):(r.focusPane(s.workspaceCwd,o),r.setActiveTab(s.workspaceCwd,o,n)),dt(lt(s.workspaceCwd))},switchWorkspace(n){D.getState().ensureWorkspace(n),dt(lt(n))},reorder(n,s){e(r=>{const o=r.tabs.findIndex(u=>u.id===n),i=r.tabs.findIndex(u=>u.id===s);if(o===-1||i===-1||o===i)return r;const a=r.tabs.slice(),[l]=a.splice(o,1);return l?(a.splice(i,0,l),{tabs:a}):r})},updateLabel(n,s){e(r=>({tabs:r.tabs.map(o=>o.id===n?{...o,label:s}:o)}))},updateData(n,s){e(r=>({tabs:r.tabs.map(o=>o.id===n?{...o,data:{...o.data,...s}}:o)}))},closeByPathPrefix(n){const s=t().tabs.filter(r=>{if(r.kind!=="file"&&r.kind!=="diff"&&r.kind!=="molecule")return!1;const o=r.data.path;return o===n||((o==null?void 0:o.startsWith(`${n}/`))??!1)});for(const r of s)t().close(r.id)}}));function Ot(e){var t;switch(e.kind){case"chat":{const{sessionId:n}=e.data,s=(t=q.getState().sessions[n])==null?void 0:t.agentId;return s?`agent:${s}`:null}case"file":return`file:${e.data.path}`;case"diff":{const{path:n,staged:s}=e.data;return`diff:${s?"staged":"worktree"}:${n}`}case"terminal":{const{slot:n}=e.data;return n===null?null:`terminal:${n}`}case"molecule":{const{path:n}=e.data;return n===null?null:`molecule:${n}`}}}function Pr(e,t,n){var s;return((s=e.find(r=>r.id===n))==null?void 0:s.workspaceCwd)===t?t:null}function cy(e){const t=R(n=>Pr(n.tabs,n.activeWorkspaceCwd,e));return D(n=>t===null?!1:qr(n.layouts[t],e))}function $u(e){const{tabs:t,activeWorkspaceCwd:n}=R.getState(),s=Pr(t,n,e);return s===null?!1:qr(D.getState().layouts[s],e)}const te={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let Qt=0;function Nr(e,t){Qt+=1,R.getState().open({id:te.terminal(`new-${Qt}`),kind:"terminal",label:`Terminal ${Qt}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e},t)}let en=0;function Ou(e,t){en+=1,R.getState().open({id:te.molecule(`new-${en}`),kind:"molecule",label:`Molecule ${en}`,closable:!0,data:{path:null},workspaceCwd:e},t)}function wt(e,t){const n=q.getState().createSession(e);R.getState().open({id:te.chat(n),kind:"chat",label:"New chat",closable:!0,data:{sessionId:n},workspaceCwd:e},t);const s=$.getState().client;s&&xu(s,n).catch(()=>{})}function Lt(e){const t=R.getState().tabs.find(s=>s.id===e);if(R.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;ku($.getState().client,n)}D.subscribe(()=>{const{activeWorkspaceCwd:e,activeTabId:t}=R.getState();e!==null&&D.getState().activeTabOf(e)!==t&&dt(lt(e))});const Lu="_panel_1de7t_3",Bu={panel:Lu};function Dr({className:e,...t}){return c.jsx("div",{className:W(Bu.panel,e),...t})}const Fu="_emptyState_kp50e_3",zu={emptyState:Fu};function Oe({className:e,...t}){return c.jsx("div",{className:W(zu.emptyState,e),...t})}function Qe(){return $(e=>{var t;return((t=e.serverInfo)==null?void 0:t.homeDir)??null})}const Wu=pe()((e,t)=>({drafts:{},pendingFeedback:{},setDraft(n,s){e(r=>({drafts:{...r.drafts,[n]:s}}))},replaceDraft(n,s,r){const i={copy:(t().drafts[n]??"")===""?"filled":"replaced",flash:r};e(a=>({drafts:{...a.drafts,[n]:s},pendingFeedback:{...a.pendingFeedback,[n]:i}}))},consumeFeedback(n){const s=t().pendingFeedback[n];if(s!==void 0)return e(r=>{const o={...r.pendingFeedback};return delete o[n],{pendingFeedback:o}}),s}})),Bt=pe()(()=>({message:"",politeness:"polite"})),Uu=4e3;let ft=null;function $r(){ft!==null&&(clearTimeout(ft),ft=null)}function Dn(e,t="polite"){$r(),Bt.setState({message:e,politeness:t})}function Hu(){$r(),ft=setTimeout(()=>{ft=null,Bt.setState({message:""})},Uu)}function Vu(e){switch(e){case"default":return{};case"success":return{token:"statusSuccess"};case"error":return{token:"statusDanger"};case"warning":return{token:"statusWarning"}}}const $n=2200;function Ku(e,t,n,s=Date.now()){return{id:e,content:t,variant:n.variant??"default",durationMs:n.durationMs!==void 0?n.durationMs:$n,icon:n.icon,paused:!1,shownAt:s}}function Gu(e="Copied"){return{content:e,opts:{variant:"success",durationMs:$n}}}function Yu(e){return{content:e,opts:{variant:"error",durationMs:$n}}}function Xu(e,t,n=Date.now()){if(e.durationMs===null)return null;e.paused;const s=n-e.shownAt;return Math.max(0,e.durationMs-s)}const _n=3;let Ju=0;const pt=new Map;function ms(e){const t=pt.get(e);t!==void 0&&(clearTimeout(t),pt.delete(e))}const Ge=pe((e,t)=>{function n(s){const r=t().toasts.findIndex(a=>a.id===s);if(r===-1||r>=_n||pt.has(s))return;const o=t().toasts[r];if(o.durationMs===null||o.paused)return;const i={...o,shownAt:Date.now()};e(a=>({toasts:a.toasts.map(l=>l.id===s?i:l)})),pt.set(s,setTimeout(()=>t().dismiss(s),i.durationMs))}return{toasts:[],show(s,r={}){const o=`toast-${++Ju}`;return e(i=>({toasts:[...i.toasts,Ku(o,s,r)]})),n(o),o},copied(s){const{content:r,opts:o}=Gu(s);return t().show(r,o)},error(s){const{content:r,opts:o}=Yu(s);return t().show(r,o)},dismiss(s){ms(s),e(r=>({toasts:r.toasts.filter(o=>o.id!==s)}));for(const r of t().toasts.slice(0,_n))n(r.id)},dismissTop(){const s=t().toasts[0];s&&t().dismiss(s.id)},pause(s){const r=t().toasts.find(i=>i.id===s);if(!r||r.durationMs===null||r.paused)return;const o=Xu(r,null,Date.now())??r.durationMs;ms(s),e(i=>({toasts:i.toasts.map(a=>a.id===s?{...a,paused:!0,pausedRemaining:o}:a)}))},resume(s){const r=t().toasts.find(l=>l.id===s);if(!r||!r.paused)return;const o=r.pausedRemaining??r.durationMs??0,i=Date.now()-((r.durationMs??0)-o),a={...r,paused:!1,pausedRemaining:void 0,shownAt:i};e(l=>({toasts:l.toasts.map(u=>u.id===s?a:u)})),pt.set(s,setTimeout(()=>t().dismiss(s),o))}}});function we(e,t,n,s=!1){return{tone:e,glyph:t,text:n,truncate:s}}function Zu(e){var t,n;return e.reason==="answered"?e.method==="input"?we("success","check","answered"):e.method==="editor"?we("success","check","submitted"):e.method==="select"?((t=e.answer)==null?void 0:t.value)===void 0?we("muted",null,"no longer pending"):we("success","check",e.answer.value,!0):e.method==="confirm"?((n=e.answer)==null?void 0:n.confirmed)===void 0?we("muted",null,"no longer pending"):e.answer.confirmed?we("success","check","Yes"):we("muted",null,"declined"):we("success","check","answered"):e.reason==="cancelled"?we("muted",null,"declined"):e.reason==="timeout"?we("muted",null,"expired"):we("muted",null,e.reason)}function tn(e){return e||"Chat"}function Qu(e,t){let n=0;for(const s of Object.values(e))s.agentId===t&&n++;return n}function ef(e){const t=e.title;return typeof t=="string"&&t.length>0?t:void 0}function tf(e){const t=Zu(e);return t.tone==="success"?"Answered":t.text==="declined"?"Dismissed":t.text==="expired"?"Expired":"No longer pending"}function nf(e,t,n){const s=[];for(const r of Object.values(t.pending)){if(r.receivedAt===void 0||e.pending[r.requestId]!==void 0)continue;const o=Qu(e.pending,r.agentId);if(o===0)if(r.agentId===n.activeAgentId){const i=ef(r.payload);s.push({text:i?`A question needs input: ${i}`:"A question needs input",politeness:"polite"})}else s.push({text:`A question needs input in ${tn(n.sessionTitle(r.agentId))}`,politeness:"polite"});else s.push({text:`${o+1} questions need input in ${tn(n.sessionTitle(r.agentId))}`,politeness:"polite"})}for(const r of Object.values(t.resolved))e.resolved[r.requestId]===void 0&&s.push({text:`${tf(r)} in ${tn(n.sessionTitle(r.agentId))}`,politeness:"polite"});return s}function sf(e){switch(e){case"warning":return"warning";case"error":return"error";default:return"default"}}function rf(e){switch(e){case"warning":return 6e3;case"error":return null;default:return 4e3}}function of(e,t,n,s){return t===n?e:`${s||"Chat"} — ${e}`}function af(e,t,n,s,r){return{text:n===s?e:`${r||"Chat"}: ${e}`,politeness:t==="error"?"assertive":"polite"}}const ke=pe()(()=>({controller:null,uiState:jn}));let _s=null,xe=null,Or=new Map,Lr=new Map,ut=new Set;function Br(){Or=new Map,Lr=new Map,ut=new Set}function cf(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Fr(e,t,n){const s=n(),r=e.get(t);return r&&cf(r,s)?r:(e.set(t,s),s)}function lf(e){for(const t of e)switch(t.type){case"notify":df(t);break;case"replace_composer_text":uf(t);break}}function df(e){const t=q.getState(),n=t.activeSessionId?t.sessions[t.activeSessionId]:void 0,s=Object.values(t.sessions).find(a=>a.agentId===e.agentId),r=(n==null?void 0:n.agentId)??null,o=(s==null?void 0:s.title)??null;Ge.getState().show(of(e.message,e.agentId,r,o),{variant:sf(e.level),durationMs:rf(e.level)});const i=af(e.message,e.level,e.agentId,r,o);Dn(i.text,i.politeness)}function uf(e){const t=Object.values(q.getState().sessions).find(s=>s.agentId===e.agentId);if(t===void 0)return;const n=$u(te.chat(t.id));Wu.getState().replaceDraft(t.id,e.text,n),n||Dn(`Draft replaced in ${t.title||"Chat"}`,"polite")}function ff(e,t){const n=q.getState(),s=n.activeSessionId?n.sessions[n.activeSessionId]:void 0,r=nf(e,t,{activeAgentId:(s==null?void 0:s.agentId)??null,sessionTitle:o=>{var i;return((i=Object.values(n.sessions).find(a=>a.agentId===o))==null?void 0:i.title)??null}});for(const o of r)Dn(o.text,o.politeness);Object.keys(e.pending).length>0&&Object.keys(t.pending).length===0&&Hu()}const ys=new Set;function pf(e){Br();const t=_d(e,{onUnknownMethod(s){ys.has(s)||(ys.add(s),console.warn(`agent-ui: unrecognised extension-UI method "${s}"`))}}),n=t.subscribe((s,r)=>{const o=ke.getState().uiState;ke.setState({uiState:s}),lf(r),ff(o,s)});ke.setState({controller:t,uiState:t.getState()}),xe=()=>{n(),t.dispose()}}function hf(){xe==null||xe(),xe=null,Br(),ke.setState({controller:null,uiState:jn})}function zr(e){if(e===_s||(hf(),_s=e,!e))return;const t=()=>{ke.getState().controller||e.connection.state==="open"&&e.extensionUiAvailable()&&(xe==null||xe(),xe=null,pf(e))};t(),ke.getState().controller||(xe=e.connection.onStateChange(n=>{n==="open"&&queueMicrotask(t)}))}$.subscribe(e=>zr(e.client));zr($.getState().client);const ws=[],vs=[];function gf(e,t){if(!e.controller)return ws;const n=Fr(Or,t,()=>hd(e.uiState,t));return n.length===0?ws:n}function mf(e,t){if(!e.controller)return vs;const n=Fr(Lr,t,()=>md(e.uiState,t));return n.length===0?vs:n}const bs=new Set;function _f(e){if(!e.controller)return bs;const t=new Set(Object.keys(gd(e.uiState)));return t.size===ut.size&&[...t].every(n=>ut.has(n))?ut:(ut=t,t.size===0?bs:t)}function yf(){return ke(_f)}function Wr(e){return ke(t=>gf(t,e))}function ly(e){return ke(t=>mf(t,e))}function dy(e,t){const n=ke.getState().controller;return n?n.respond(e,t):Promise.resolve({ok:!1,reason:"unsupported"})}const wf="_iconBtn_1unr3_3",vf="_xs_1unr3_32",bf="_sm_1unr3_36",Ss={iconBtn:wf,xs:vf,sm:bf};function Te({size:e="xs",hoverBase:t,className:n,style:s,type:r="button",...o}){return c.jsx("button",{type:r,className:W(Ss.iconBtn,Ss[e],n),style:t?{"--icon-btn-hover-base":t,...s}:s,...o})}const Sf={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function De(e){return Sf[e]??"idle"}const xs=120;function xf(e,t){return e.status==="error"?"failed":t?"needsInput":e.status==="running"?"running":e.userMessageCount===0&&e.timeline.rows.length===0?"empty":"idle"}function kf(e){const{rows:t}=e.timeline;for(let n=t.length-1;n>=0;n--){const s=t[n];if(s&&s.kind==="error"){const r=(s.text.split(`
19
+ `,1)[0]??"").trim();return r.length>xs?r.slice(0,xs):r}}return null}function If(e,t){const n=xf(e,t);switch(n){case"failed":return{state:n,meta:"turn failed",reason:kf(e),dot:{status:De("error")},titleItalic:!1};case"needsInput":return{state:n,meta:"needs input",reason:null,dot:{status:De(e.status),requiresAttention:!0,attentionReason:"question"},titleItalic:!1};case"running":return{state:n,meta:"running",reason:null,dot:{status:De("running")},titleItalic:!1};case"empty":return{state:n,meta:"no messages",reason:null,dot:{status:De("idle"),showInactive:!0},titleItalic:!0};case"idle":return{state:n,meta:"idle",reason:null,dot:{status:De("idle"),showInactive:!0},titleItalic:!1}}}function Tf(e,t){const n=e.filter(r=>r.agentId!==null&&t.has(r.agentId)).length;return n>0?{dot:{status:"waiting",requiresAttention:!0,attentionReason:"question"},reason:"question",pendingSessionCount:n}:e.some(r=>r.status==="error")?{dot:{status:De("error")},reason:"failed",pendingSessionCount:0}:null}const Ef="_header_4rtcu_1",jf="_list_4rtcu_15",Rf="_newSessionRow_4rtcu_20",Cf="_footer_4rtcu_45",Af="_item_4rtcu_70",Mf="_itemFailed_4rtcu_85",qf="_active_4rtcu_83",Pf="_activeBar_4rtcu_88",Nf="_activeBarNeedsInput_4rtcu_107",Df="_title_4rtcu_89",$f="_titleLabel_4rtcu_89",Of="_titleItalic_4rtcu_127",Lf="_meta_4rtcu_130",Bf="_metaDot_4rtcu_138",Ff="_metaLabel_4rtcu_143",zf="_metaFailed_4rtcu_148",Wf="_metaNeedsInput_4rtcu_151",Uf="_metaEmpty_4rtcu_154",Hf="_menuBtn_4rtcu_159",Vf="_workspaceHeader_4rtcu_172",Kf="_workspaceChevron_4rtcu_194",Gf="_chevronGlyphExpanded_4rtcu_205",Yf="_workspaceLabel_4rtcu_211",Xf="_workspaceCount_4rtcu_217",Jf="_workspaceMenuBtn_4rtcu_225",Zf="_workspaceSessions_4rtcu_237",V={header:Ef,list:jf,newSessionRow:Rf,footer:Cf,item:Af,itemFailed:Mf,active:qf,activeBar:Pf,activeBarNeedsInput:Nf,title:Df,titleLabel:$f,titleItalic:Of,meta:Lf,metaDot:Bf,metaLabel:Ff,metaFailed:zf,metaNeedsInput:Wf,metaEmpty:Uf,menuBtn:Hf,workspaceHeader:Vf,workspaceChevron:Kf,chevronGlyphExpanded:Gf,workspaceLabel:Yf,workspaceCount:Xf,workspaceMenuBtn:Jf,workspaceSessions:Zf};function Qf({session:e,active:t,draggable:n,onSelect:s,onOpenMenu:r,onDragStartRow:o}){const i=Wr(e.agentId??""),a=If(e,i.length>0);return c.jsxs("div",{className:W(V.item,t&&V.active,!t&&a.state==="failed"&&V.itemFailed),draggable:n,onDragStart:o,onClick:s,onContextMenu:l=>{l.preventDefault(),r(l.clientX,l.clientY)},children:[(t||a.state==="needsInput")&&c.jsx("span",{className:W(V.activeBar,a.state==="needsInput"&&V.activeBarNeedsInput),"aria-hidden":!0}),c.jsxs("div",{className:V.title,children:[c.jsx("span",{className:W(V.titleLabel,a.titleItalic&&V.titleItalic),children:e.title}),c.jsx(Te,{className:V.menuBtn,hoverBase:"var(--pi-color-surfaceSidebar)",title:"Actions",onClick:l=>{l.stopPropagation();const u=l.currentTarget.getBoundingClientRect();r(u.left,u.bottom)},children:c.jsx(ne,{icon:Sn,size:"sm"})})]}),c.jsxs("div",{className:W(V.meta,a.state==="empty"&&V.metaEmpty),children:[a.dot&&c.jsx(Ht,{...a.dot,className:V.metaDot,pulse:a.state==="needsInput"}),c.jsxs("span",{className:V.metaLabel,children:[c.jsx("span",{className:a.state==="failed"?V.metaFailed:a.state==="needsInput"?V.metaNeedsInput:void 0,children:a.meta}),a.reason&&c.jsxs(c.Fragment,{children:[" · ",a.reason]})]})]})]})}const ep="_trigger_u4hed_3",tp="_content_u4hed_15",np="_item_u4hed_25",sp="_danger_u4hed_44",rp="_groupLabel_u4hed_53",op="_sep_u4hed_66",Je={trigger:ep,content:tp,item:np,danger:sp,groupLabel:rp,sep:op},Kt=w.forwardRef(function({x:t,y:n},s){return c.jsx("button",{ref:s,type:"button",className:Je.trigger,style:{left:t,top:n},"aria-hidden":!0,tabIndex:-1})});function vt({className:e,minWidth:t,style:n,sideOffset:s=2,...r}){const o=t===void 0?n:{minWidth:t,...n};return c.jsx(Jo,{children:c.jsx(Zo,{className:W(Je.content,e),align:"start",sideOffset:s,style:o,...r})})}function uy({label:e,className:t,children:n,...s}){const r=w.useId();return c.jsxs(Qo,{className:t,"aria-labelledby":e===void 0?void 0:r,...s,children:[e!==void 0&&c.jsx(ei,{id:r,className:Je.groupLabel,children:e}),n]})}function Y({className:e,danger:t,...n}){return c.jsx(ti,{className:W(Je.item,t&&Je.danger,e),...n})}function $e(e){return c.jsx(ni,{className:Je.sep,...e})}function ip(){const e=M(y=>y.sessionMenu),t=M(y=>y.closeSessionMenu),n=$(y=>y.client),s=w.useRef(null),[r,o]=w.useState(!1);w.useEffect(()=>{o(e!==null)},[e]);const i=q(y=>e?y.sessions[e.sessionId]:void 0);if(!e)return null;const a=!!(i!=null&&i.agentId)&&(i==null?void 0:i.status)==="running";function l(y){o(y),y||t()}function u(){if(!i)return;const y=window.prompt("Rename:",i.title);if(y!=null&&y.trim()){const v=y.trim();q.getState().setTitle(i.id,v),R.getState().updateLabel(te.chat(i.id),v),i.agentId&&(n==null||n.agent(i.agentId).update({title:v}).catch(()=>{}))}t()}function f(){i!=null&&i.agentId&&(n==null||n.agent(i.agentId).interrupt().catch(()=>{})),t()}function p(y){q.getState().remove(y),R.getState().close(te.chat(y))}async function m(){if(i){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!i.agentId){p(i.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(i.agentId).archive(),p(i.id)}catch(y){window.alert(`Failed to archive: ${y instanceof Error?y.message:String(y)}`)}}}async function h(){if(i){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!i.agentId){p(i.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(i.agentId).delete(),p(i.id)}catch(y){window.alert(`Failed to delete: ${y instanceof Error?y.message:String(y)}`)}}}return c.jsxs(_t,{open:r,onOpenChange:l,modal:!1,children:[c.jsx(yt,{asChild:!0,children:c.jsx(Kt,{ref:s,x:e.x,y:e.y})}),c.jsxs(vt,{minWidth:160,children:[c.jsxs(Y,{onSelect:u,children:[c.jsx(Ws,{size:13}),"Rename"]}),c.jsxs(Y,{disabled:!a,onSelect:f,children:[c.jsx(No,{size:13}),"Stop agent"]}),c.jsx($e,{}),c.jsxs(Y,{danger:!0,onSelect:m,children:[c.jsx(Do,{size:13}),"Archive"]}),c.jsxs(Y,{danger:!0,onSelect:h,children:[c.jsx(xn,{size:13}),"Delete permanently"]})]})]})}const ap="_avatar_1m9k9_4",cp="_avatarImg_1m9k9_14",lp="_avatarFallback_1m9k9_20",nn={avatar:ap,avatarImg:cp,avatarFallback:lp},sn=["#2563eb","#16a34a","#9333ea","#dc2626","#0d9488","#d97706","#db2777","#0891b2","#ea580c","#4f46e5","#059669","#7c3aed"];function dp(e){let t=0;for(let s=0;s<e.length;s++){const r=e.charCodeAt(s);t=t*31+r>>>0}return sn[t%sn.length]??sn[0]}function up(e){const t=e.match(/[a-zA-Z0-9]/);return t?t[0].toUpperCase():"?"}function fp({projectKey:e,src:t,size:n=32,className:s}){const r=up(e),o=dp(e),i=Math.round(n*.4);return c.jsx("span",{className:`${nn.avatar}${s?` ${s}`:""}`,style:{width:n,height:n,backgroundColor:t?void 0:o},"aria-label":e,role:"img",children:t?c.jsx("img",{src:t,alt:e,className:nn.avatarImg}):c.jsx("span",{className:nn.avatarFallback,style:{fontSize:i},"aria-hidden":!0,children:r})})}function pp({label:e,cwd:t,sessionCount:n,collapsed:s,attentionDot:r,onToggleCollapsed:o,onOpenMenu:i}){return c.jsxs("div",{className:V.workspaceHeader,onClick:o,title:t,children:[c.jsx(Te,{className:V.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:a=>{a.stopPropagation(),o()},children:c.jsx(ne,{icon:kn,size:"xs",className:s?void 0:V.chevronGlyphExpanded})}),c.jsx(fp,{projectKey:e,size:20}),c.jsx("span",{className:V.workspaceLabel,children:e}),r&&c.jsx(Ht,{...r.dot,pulse:r.reason==="question","aria-label":r.reason==="question"?`${e} — ${r.pendingSessionCount} session${r.pendingSessionCount===1?"":"s"} needs input`:`${e} — turn failed`}),c.jsx("span",{className:V.workspaceCount,children:n}),c.jsx(Te,{className:V.workspaceMenuBtn,hoverBase:"var(--pi-color-surface2)",title:"Workspace actions",onClick:a=>{a.stopPropagation();const l=a.currentTarget.getBoundingClientRect();i(l.left,l.bottom)},children:c.jsx(ne,{icon:Sn,size:"sm"})})]})}function Ae(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function On(e,t,n){const s=new Map;for(const r of e){const o=t[r];if(!o)continue;const i=Ae(o.cwd||"~",n),a=s.get(i);a?a.push(o):s.set(i,[o])}return Array.from(s,([r,o])=>({cwd:r,sessions:o}))}function Ur(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function hp(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function gp(){const e=M(h=>h.workspaceMenu),t=M(h=>h.closeWorkspaceMenu),n=$(h=>h.client),s=q(h=>h.order),r=q(h=>h.sessions),o=Qe(),i=w.useRef(null),[a,l]=w.useState(!1);if(w.useEffect(()=>{l(e!==null)},[e]),!e)return null;const u=s.map(h=>r[h]).filter(h=>!!h).filter(h=>Ae(h.cwd||"~",o)===e.cwd);function f(h){l(h),h||t()}function p(){e&&(t(),wt(e.cwd))}async function m(){if(!e)return;const h=u.length;if(!window.confirm(`Delete all ${h} conversation${h===1?"":"s"} in "${Ur(e.cwd)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return t();t();for(const v of u){if(v.agentId&&n)try{await n.agent(v.agentId).delete()}catch(x){window.alert(`Failed to delete "${v.title}": ${x instanceof Error?x.message:String(x)}`);continue}q.getState().remove(v.id),R.getState().close(te.chat(v.id))}}return c.jsxs(_t,{open:a,onOpenChange:f,modal:!1,children:[c.jsx(yt,{asChild:!0,children:c.jsx(Kt,{ref:i,x:e.x,y:e.y})}),c.jsxs(vt,{minWidth:160,children:[c.jsxs(Y,{onSelect:p,children:[c.jsx(Pt,{size:13}),"New session"]}),c.jsx($e,{}),c.jsxs(Y,{danger:!0,onSelect:m,children:[c.jsx(xn,{size:13}),"Delete workspace (all conversations)"]})]})]})}function Ft(e,t,n){R.getState().open({id:te.chat(e.id),kind:"chat",label:e.title||"Chat",closable:!0,data:{sessionId:e.id},workspaceCwd:Ae(e.cwd||"~",t)},n)}const mp=.25;function Hr(e,t){if(t.width<=0||t.height<=0)return"center";const n=(e.x-(t.left+t.width/2))/t.width,s=(e.y-(t.top+t.height/2))/t.height;return Math.max(Math.abs(n),Math.abs(s))<mp?"center":Math.abs(n)>=Math.abs(s)?n<0?"left":"right":s<0?"top":"bottom"}function _p(e,t){return t.x>=e.left&&t.x<=e.left+e.width&&t.y>=e.top&&t.y<=e.top+e.height}function Vr(e,t,n){return n==="center"?"center":gt(e,t,n)?n:"center"}function yn(e,t,n,s){return s[n]!==t?!1:e==="center"?!0:Object.keys(s).every(o=>o===n||s[o]!==t)}const bt={chat:"application/x-pi-studio-open-chat",path:"application/x-pi-studio-open-path"},yp=["chat","path"];function Kr(e){for(const t of yp)if(e.includes(bt[t]))return t;return null}function fy(e){return t=>{t.dataTransfer.setData(bt.path,e),t.dataTransfer.effectAllowed="copyMove"}}function wp(e,t){const n=Kr(e);if(n===null)return null;const s=t(bt[n]).trim();return s===""?null:{kind:n,value:s}}function vp(e,t,n,s){return Vr(e,t,Hr(n,s))}const bp=36;function Sp(){const e=q(_=>_.order),t=q(_=>_.sessions),n=q(_=>_.activeSessionId),s=q(_=>_.activate),r=R(_=>_.activeWorkspaceCwd),o=$(_=>_.status),i=M(_=>_.openSessionMenu),a=M(_=>_.openWorkspaceMenu),l=M(_=>_.setCwd),u=M(_=>_.openCwdPicker),f=M(_=>_.collapsedWorkspaces),p=M(_=>_.toggleWorkspaceCollapsed),m=Qe(),h=yf();function y(_){s(_);const k=t[_];k!=null&&k.cwd&&l(k.cwd),k&&Ft(k,m)}function v(_,k,T){k===r&&(T.dataTransfer.setData(bt.chat,_),T.dataTransfer.effectAllowed="copy")}const x=On(e,t,m);return c.jsxs(Dr,{children:[c.jsx("div",{className:V.header,style:{minHeight:bp},children:c.jsxs("h3",{children:["Workspaces · ",x.length]})}),c.jsxs("div",{className:V.list,children:[x.length===0&&c.jsx(Oe,{style:{padding:"var(--pi-spacing-12) var(--pi-spacing-10)"},children:o!=="open"?"Not connected":"No workspaces — open a folder to start"}),x.map(_=>{const k=f.has(_.cwd);return c.jsxs("div",{children:[c.jsx(pp,{label:Ur(_.cwd),cwd:_.cwd,sessionCount:_.sessions.length,collapsed:k,attentionDot:k?Tf(_.sessions,h):null,onToggleCollapsed:()=>p(_.cwd),onOpenMenu:(T,B)=>a(_.cwd,T,B)}),!k&&c.jsxs("div",{className:V.workspaceSessions,children:[_.sessions.map(T=>c.jsx(Qf,{session:T,active:T.id===n,draggable:_.cwd===r,onSelect:()=>y(T.id),onOpenMenu:(B,F)=>i(T.id,B,F),onDragStartRow:B=>v(T.id,_.cwd,B)},T.id)),c.jsxs("button",{type:"button",className:V.newSessionRow,disabled:o!=="open",title:o!=="open"?"Connect to start a new session":void 0,onClick:()=>wt(_.cwd),children:[c.jsx(ne,{icon:Pt,size:"xs"}),"New session"]})]})]},_.cwd)})]}),c.jsxs("button",{type:"button",className:V.footer,disabled:o!=="open",title:o!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>u(),children:[c.jsx(ne,{icon:Pt,size:"xs"}),"Add workspace"]}),c.jsx(ip,{}),c.jsx(gp,{})]})}const Gr="data-pi-dragging";function Yr(e=document.body){e.setAttribute(Gr,"")}function zt(e=document.body){e.removeAttribute(Gr)}const ks={tab:0,strip:1,pane:2};function rn(e){if(e===null||typeof e!="object"||!("type"in e))return null;const{type:t}=e;if(t!=="tab"&&t!=="strip"&&t!=="pane")return null;const n="paneId"in e&&typeof e.paneId=="string"?e.paneId:null;return{kind:t,paneId:n}}function xp(e){const t=e.activatorEvent;return t instanceof MouseEvent?{x:t.clientX+e.delta.x,y:t.clientY+e.delta.y}:null}function kp(e,t,n){return e.kind==="tab"?n.placement[t]??null:e.paneId}function Ip(e){const[t,n]=w.useState(null),[s,r]=w.useState(null),o=R(h=>h.tabs.find(y=>y.id===t)??null),i=ai(ci(di,{activationConstraint:{distance:4}})),a=w.useMemo(()=>h=>{const y=li(h).map(v=>{var x;return{hit:v,target:rn((x=h.droppableContainers.find(_=>_.id===v.id))==null?void 0:x.data.current)}}).filter(v=>v.target!==null).toSorted((v,x)=>ks[v.target.kind]-ks[x.target.kind]);return y.length===0?[]:[y[0].hit]},[]),l=w.useCallback(h=>{const{over:y,active:v}=h,x=rn(y==null?void 0:y.data.current);if(!y||x===null||e===null)return null;const _=D.getState().layouts[e];if(_===void 0)return null;const k=String(v.id),T=String(y.id);if(x.kind!=="pane"){const se=kp(x,T,_);return se===null||x.kind==="tab"&&T===k?null:x.kind==="tab"&&_.placement[k]===se?{paneId:se,region:"center"}:yn("center",se,k,_.placement)?null:{paneId:se,region:"center"}}const B=xp(h);if(x.paneId===null||B===null)return null;const F=Vr(_.tree,x.paneId,Hr(B,y.rect));return yn(F,x.paneId,k,_.placement)?null:{paneId:x.paneId,region:F}},[e]),u=w.useCallback(h=>{Yr(),n(String(h.active.id))},[]),f=w.useCallback(h=>{const y=l(h);r(v=>(v==null?void 0:v.paneId)===(y==null?void 0:y.paneId)&&(v==null?void 0:v.region)===(y==null?void 0:y.region)?v:y)},[l]),p=w.useCallback(()=>{zt(),n(null),r(null)},[]),m=w.useCallback(h=>{var he;zt(),n(null),r(null);const{active:y,over:v}=h,x=rn(v==null?void 0:v.data.current);if(!v||x===null||e===null)return;const _=String(y.id),k=D.getState().layouts[e];if(k===void 0)return;const T=R.getState(),B=T.tabs.filter(K=>K.workspaceCwd===e).map(K=>K.id),{moveTab:F,splitWithTab:se}=D.getState();if(x.kind==="tab"){const K=String(v.id);if(K===_)return;const ge=k.placement[K];ge!==void 0&&ge!==k.placement[_]&&F(e,_,ge,B),T.reorder(_,K);return}const P=l(h);if(P===null)return;if(P.region!=="center"){se(e,_,P.paneId,P.region,B);return}F(e,_,P.paneId,B);const J=((he=D.getState().layouts[e])==null?void 0:he.placement)??{},ie=B.filter(K=>K!==_&&J[K]===P.paneId).at(-1);ie!==void 0&&B.indexOf(_)<B.indexOf(ie)&&T.reorder(_,ie)},[e,l]);return{sensors:i,collisionDetection:a,onDragStart:u,onDragMove:f,onDragEnd:m,onDragCancel:p,draggedTab:o,preview:s}}const Tp=w.lazy(()=>Se(()=>import("./ChatPanel-iZFpjvDH.js"),__vite__mapDeps([7,2,4,5,8,1,3,9,10,11,12,13,14,15,16,17,18])).then(e=>({default:e.ChatPanel}))),Is=w.lazy(()=>Se(()=>import("./FilePanel-Dj-f69gt.js"),__vite__mapDeps([19,2,1,3,4,20,14,15,5,16,17,21])).then(e=>({default:e.FilePanel}))),Ep=w.lazy(()=>Se(()=>import("./TerminalPanel-Dgxri7TZ.js"),__vite__mapDeps([22,2,23,24,1,3,4,5,16,17,25])).then(e=>({default:e.TerminalPanel}))),jp=w.lazy(()=>Se(()=>import("./MoleculeViewerPanel-BjsA9NQA.js"),__vite__mapDeps([26,2,27,28,29,30,31,4,20,1,3,5,16,17,32])).then(e=>({default:e.MoleculeViewerPanel}))),Rp={chat:Tp,file:Is,diff:Is,terminal:Ep,molecule:jp},mt="var(--pane-strip-height)";function Ln(e){return e===void 0?new Map:Tu(jr(e.tree,new Set(Object.values(e.placement))))}function Z(e){const t=(e*100).toFixed(4);return`${t.includes(".")?t.replace(/\.?0+$/,""):t}%`}function Xr(e){if(e!==void 0)return{left:Z(e.x),top:`calc(${Z(e.y)} + ${mt})`,width:Z(e.width),height:`calc(${Z(e.height)} - ${mt})`}}function Cp(e,t){const n=`${Z(e.y)} + ${mt}`,s=`${Z(e.height)} - ${mt}`,r=`calc((${s}) / 2)`;switch(t){case"left":return{left:Z(e.x),top:`calc(${n})`,width:Z(e.width/2),height:`calc(${s})`};case"right":return{left:Z(e.x+e.width/2),top:`calc(${n})`,width:Z(e.width/2),height:`calc(${s})`};case"top":return{left:Z(e.x),top:`calc(${n})`,width:Z(e.width),height:r};case"bottom":return{left:Z(e.x),top:`calc(${n} + (${s}) / 2)`,width:Z(e.width),height:r};case"center":return{left:Z(e.x),top:`calc(${n})`,width:Z(e.width),height:`calc(${s})`}}}function Ap(e){const t=Ln(e);return[...t].map(([n,s])=>({paneId:n,stripStyle:{left:Z(s.x),top:Z(s.y),width:Z(s.width),height:mt},focused:t.size>1&&(e==null?void 0:e.focusedPaneId)===n}))}function Mp(e){if(e===void 0)return[];const t=jr(e.tree,new Set(Object.values(e.placement)));return t!==e.tree?[]:Eu(t)}function qp(e,t){return(t==null?void 0:t.placement[e])??null}function Pp(e,t,n){const s=Ln(n);return e.map(r=>{const o=r.workspaceCwd===t?n==null?void 0:n.placement[r.id]:void 0;return{tabId:r.id,style:Xr(o===void 0?void 0:s.get(o)),visible:o!==void 0&&(n==null?void 0:n.activeByPane[o])===r.id}})}const Np="_divider_4eg4l_9",Dp="_vertical_4eg4l_26",$p="_horizontal_4eg4l_41",on={divider:Np,vertical:Dp,horizontal:$p};function Op({cwd:e,dividers:t,hostRef:n}){const s=D(i=>i.resizeDivider),r=w.useRef(0);function o(i,a){var y;const l=(y=n.current)==null?void 0:y.getBoundingClientRect();if(!l)return;i.preventDefault(),i.stopPropagation();const u=a.direction==="row",f=u?a.splitRect.width*l.width:a.splitRect.height*l.height;if(f<=0)return;const p=i.currentTarget;p.setPointerCapture(i.pointerId),r.current=u?i.clientX:i.clientY,document.body.style.cursor=u?"col-resize":"row-resize",document.body.style.userSelect="none";const m=v=>{const x=u?v.clientX:v.clientY,_=x-r.current;r.current=x,s(e,a.splitPath,a.boundaryIndex,_/f)},h=v=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h),document.body.style.cursor="",document.body.style.userSelect="",p.hasPointerCapture(v.pointerId)&&p.releasePointerCapture(v.pointerId)};window.addEventListener("pointermove",m),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h)}return t.map(i=>{const a=i.direction==="row";return c.jsx("div",{className:W(on.divider,a?on.vertical:on.horizontal),style:a?{left:`${i.rect.x*100}%`,top:`${i.rect.y*100}%`,height:`${i.rect.height*100}%`}:{left:`${i.rect.x*100}%`,top:`${i.rect.y*100}%`,width:`${i.rect.width*100}%`},role:"separator","aria-orientation":a?"vertical":"horizontal",onPointerDown:l=>o(l,i)},`${i.splitPath.join(".")}:${i.boundaryIndex}`)})}const Lp=w.lazy(()=>Se(()=>import("./TextViewer-WgHa1P3Q.js"),__vite__mapDeps([33,2,34,4,31,1,3,35,5,16,17,36])).then(e=>({default:e.TextViewer}))),Bp=w.lazy(()=>Se(()=>import("./MarkdownFileViewer-Cw8TMuO2.js"),__vite__mapDeps([37,2,34,4,31,1,3,35,9,10,11,12,13,5,16,17,38])).then(e=>({default:e.MarkdownFileViewer}))),Fp=w.lazy(()=>Se(()=>import("./ImageViewer-wi_qC7bA.js"),__vite__mapDeps([39,2,31,4,1,3,5,16,17,40])).then(e=>({default:e.ImageViewer}))),zp=w.lazy(()=>Se(()=>import("./VideoViewer-DJICVzXP.js"),__vite__mapDeps([41,2,31,4,1,3,5,16,17,42])).then(e=>({default:e.VideoViewer}))),Wp=w.lazy(()=>Se(()=>import("./BinaryFallbackViewer-CyMLJ0Z9.js"),__vite__mapDeps([43,2,31,4,5,1,3,16,17,44])).then(e=>({default:e.BinaryFallbackViewer}))),Up=w.lazy(()=>Se(()=>import("./HtmlViewer-BnJ4OpZk.js"),__vite__mapDeps([45,2,4,1,3,34,31,35,12,5,16,17,46])).then(e=>({default:e.HtmlViewer}))),Gt=[{kind:"text",component:Lp,extensions:[],liveRefresh:!0},{kind:"markdown",component:Bp,extensions:["md","markdown","mdx"],liveRefresh:!0},{kind:"html",component:Up,extensions:["html","htm","xhtml"],liveRefresh:!0},{kind:"image",component:Fp,extensions:["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"],mimePrefixes:["image/"],liveRefresh:!0},{kind:"video",component:zp,extensions:["mp4","webm","mov","m4v","ogv"],mimePrefixes:["video/"],liveRefresh:!1},{kind:"binary",component:Wp,extensions:["pdf","zip","gz","tar","exe","wasm","woff","woff2","ttf","otf"],liveRefresh:!1}],py=Object.freeze(Object.fromEntries(Gt.map(e=>[e.kind,e.component]))),Hp=Object.freeze(Object.fromEntries(Gt.flatMap(e=>e.extensions.map(t=>[t,e.kind])))),Vp=Object.freeze(Gt.flatMap(e=>(e.mimePrefixes??[]).map(t=>[t,e.kind]))),hy=Object.freeze(new Set(Gt.filter(e=>e.liveRefresh).map(e=>e.kind)));function Jr(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const Kp={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},Gp={poscar:!0,contcar:!0};function Zr(e){if(Kp[Jr(e)])return!0;const t=e.split("/").pop()??e;return!!Gp[t.toLowerCase()]}function gy(e,t={}){const n=Hp[Jr(e)];if(n)return n;const s=t.mimeHint??"";for(const[r,o]of Vp)if(s.startsWith(r))return o;return t.isBinary?"binary":"text"}function Bn(e,t,n){Zr(e)?eo(e,t,n):Qr(e,t,n)}function Qr(e,t,n){const s=e.split("/").pop()||e;R.getState().open({id:te.file(e),kind:"file",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}function eo(e,t,n){const s=e.split("/").pop()||e;R.getState().open({id:te.molecule(e),kind:"molecule",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}const wn="data-pane-drop";function Yp(e){return{[wn]:e}}function Xp(e,t){if(e===null)return null;for(const n of e.querySelectorAll(`[${wn}]`)){const s=n.getBoundingClientRect(),r={left:s.left,top:s.top,width:s.width,height:s.height},o=n.getAttribute(wn);if(o!==null&&o!==""&&_p(r,t))return{paneId:o,bounds:r}}return null}function Jp(e){const{tabs:t}=R.getState(),n=s=>t.some(r=>r.id===s)?s:null;return e.kind==="chat"?n(te.chat(e.value)):n(te.file(e.value))??n(te.molecule(e.value))}function Zp(e,t,n,s,r){const o=D.getState().layouts[t];if(o===void 0)return;const i=R.getState().tabs.filter(f=>f.workspaceCwd===t).map(f=>f.id),a=Jp(e);if(a!==null){if(yn(s,n,a,o.placement))return;const{moveTab:f,splitWithTab:p}=D.getState();s==="center"?f(t,a,n,i):p(t,a,n,s,i);return}let l=n;if(s!=="center"&&(l=D.getState().splitEmpty(t,n,s)),l===null)return;if(e.kind==="path"){Bn(e.value,t,l);return}const u=q.getState().sessions[e.value];u!==void 0&&Ft(u,r,l)}function Qp(e,t){const[n,s]=w.useState(null),r=Qe();w.useEffect(()=>{const u=()=>Yr(),f=()=>zt();return document.addEventListener("dragstart",u),document.addEventListener("dragend",f),document.addEventListener("drop",f),()=>{document.removeEventListener("dragstart",u),document.removeEventListener("dragend",f),document.removeEventListener("drop",f),zt()}},[]);const o=w.useCallback(u=>{if(e===null)return null;const f=D.getState().layouts[e];if(f===void 0)return null;const p={x:u.clientX,y:u.clientY},m=Xp(t.current,p);return m===null?null:{paneId:m.paneId,region:vp(f.tree,m.paneId,p,m.bounds)}},[e,t]),i=w.useCallback(u=>{if(Kr(u.dataTransfer.types)===null)return;u.preventDefault(),u.dataTransfer.dropEffect="copy";const f=o(u);s(p=>(p==null?void 0:p.paneId)===(f==null?void 0:f.paneId)&&(p==null?void 0:p.region)===(f==null?void 0:f.region)?p:f)},[o]),a=w.useCallback(u=>{u.currentTarget.contains(u.relatedTarget)||s(null)},[]),l=w.useCallback(u=>{const f=wp(u.dataTransfer.types,m=>u.dataTransfer.getData(m));if(f===null)return;u.preventDefault(),s(null);const p=o(u);p===null||e===null||Zp(f,e,p.paneId,p.region,r)},[e,r,o]);return{preview:n,onDragOver:i,onDragLeave:a,onDrop:l}}function eh(e,t,n,s){if(e.kind!=="chat"||n)return null;if(s)return{status:"waiting",requiresAttention:!0,attentionReason:"question"};if(t===void 0)return null;const r=De(t);return r==="running"||r==="error"?{status:r}:null}const th="_strip_1jel9_1",nh="_tabs_1jel9_13",sh="_paneStrip_1jel9_28",rh="_focused_1jel9_36",oh="_tab_1jel9_13",ih="_tabActive_1jel9_61",ah="_tabIcon_1jel9_65",ch="_tabLabel_1jel9_70",lh="_tabLabelMono_1jel9_76",dh="_tabDot_1jel9_81",uh="_tabClose_1jel9_88",fh="_tabNeedsInput_1jel9_114",ph="_newTab_1jel9_122",hh="_stripActions_1jel9_130",gh="_splitAction_1jel9_137",mh="_itemIcon_1jel9_142",Q={strip:th,tabs:nh,paneStrip:sh,focused:rh,tab:oh,tabActive:ih,tabIcon:ah,tabLabel:ch,tabLabelMono:lh,tabDot:dh,tabClose:uh,tabNeedsInput:fh,newTab:ph,stripActions:hh,splitAction:gh,itemIcon:mh},to={chat:Vs,file:Ut,diff:Hs,terminal:Us,molecule:In},_h={file:!0,diff:!0};function yh({tab:e,active:t}){const n=R(_=>_.activate),s=M(_=>_.openTabMenu),r=to[e.kind],o=q(_=>{var k;return e.kind==="chat"?(k=_.sessions[e.data.sessionId])==null?void 0:k.status:void 0}),i=q(_=>{var k;return e.kind==="chat"?(k=_.sessions[e.data.sessionId])==null?void 0:k.agentId:void 0}),a=Wr(i??""),l=eh(e,o,t,a.length>0),u=(l==null?void 0:l.attentionReason)==="question",f=e.kind==="terminal"&&e.data.exited===!0,{attributes:p,listeners:m,setNodeRef:h,transform:y,transition:v,isDragging:x}=pi({id:e.id,data:{type:"tab"}});return c.jsxs("div",{ref:h,className:W(Q.tab,t&&Q.tabActive,u&&Q.tabNeedsInput),style:{transform:hi.Transform.toString(y),transition:v,opacity:x?.5:f?.6:1},onClick:()=>n(e.id),onAuxClick:_=>{_.button===1&&e.closable&&Lt(e.id)},onContextMenu:_=>{e.closable&&(_.preventDefault(),s(e.id,_.clientX,_.clientY))},title:f?`${e.label} (exited)`:e.label,...p,...m,children:[c.jsx("span",{className:Q.tabIcon,children:c.jsx(ne,{icon:r,size:"xs",color:t&&e.kind==="chat"?"var(--pi-color-accentBright)":"currentColor","aria-hidden":!0})}),c.jsx("span",{className:W(Q.tabLabel,_h[e.kind]&&Q.tabLabelMono),children:e.label}),l&&c.jsx(Ht,{...l,className:Q.tabDot,pulse:u,"aria-label":u?"Needs input":void 0}),e.closable&&c.jsx("span",{className:Q.tabClose,onClick:_=>{_.stopPropagation(),Lt(e.id)},children:c.jsx(ne,{icon:ht,size:"xs","aria-hidden":!0})})]})}function wh({workspaceCwd:e,paneId:t}){const n=s=>()=>{e!==null&&s(e,t??void 0)};return c.jsxs(_t,{children:[c.jsx(yt,{asChild:!0,children:c.jsx(Te,{className:Q.newTab,size:"xs",hoverBase:"var(--pi-color-background)",title:"New tab",disabled:!e,children:c.jsx(ne,{icon:Pt,size:"sm","aria-hidden":!0})})}),c.jsxs(vt,{minWidth:160,sideOffset:4,children:[c.jsxs(Y,{onSelect:n(wt),children:[c.jsx(ne,{icon:Vs,size:"xs",className:Q.itemIcon,"aria-hidden":!0}),"New chat"]}),c.jsxs(Y,{onSelect:n(Nr),children:[c.jsx(ne,{icon:Us,size:"xs",className:Q.itemIcon,"aria-hidden":!0}),"New terminal"]}),c.jsxs(Y,{onSelect:n(Ou),children:[c.jsx(ne,{icon:In,size:"xs",className:Q.itemIcon,"aria-hidden":!0}),"New molecule view"]})]})]})}function vh({cwd:e,paneId:t}){const n=D(a=>{var l;return e===null||(l=a.layouts[e])==null?void 0:l.tree}),s=a=>()=>{if(e===null||t===null)return;const l=D.getState().splitEmpty(e,t,a);l!==null&&wt(e,l)},r=a=>n===void 0||t===null?"Open a workspace to split":gt(n,t,a)?null:"Maximum split depth reached",o=r("right"),i=r("bottom");return c.jsxs("div",{className:Q.stripActions,children:[c.jsx(Te,{className:Q.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:o??"Split right",disabled:o!==null,onClick:s("right"),children:c.jsx(ne,{icon:$o,size:"sm","aria-hidden":!0})}),c.jsx(Te,{className:Q.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:i??"Split down",disabled:i!==null,onClick:s("bottom"),children:c.jsx(ne,{icon:Oo,size:"sm","aria-hidden":!0})})]})}function Ts({cwd:e,paneId:t,style:n,focused:s=!1}){const r=R(f=>f.tabs),o=D(f=>f.focusPane),i=D(f=>{var p;return e===null||(p=f.layouts[e])==null?void 0:p.placement}),a=D(f=>{var p;return e===null||t===null||(p=f.layouts[e])==null?void 0:p.activeByPane[t]}),l=t===null?[]:r.filter(f=>(i==null?void 0:i[f.id])===t),{setNodeRef:u}=Ks({id:`strip:${t??"none"}`,disabled:t===null,data:{type:"strip",paneId:t}});return c.jsxs("div",{ref:u,className:W(Q.strip,Q.paneStrip,s&&Q.focused),style:n,onPointerDown:()=>{e!==null&&t!==null&&o(e,t)},children:[c.jsx("div",{className:Q.tabs,children:c.jsx(ui,{items:l.map(f=>f.id),strategy:fi,children:l.map(f=>c.jsx(yh,{tab:f,active:f.id===a},f.id))})}),c.jsx(wh,{workspaceCwd:e,paneId:t}),c.jsx(vh,{cwd:e,paneId:t})]})}const bh="_preview_1txmv_1",Sh="_chip_1txmv_9",xh="_chipLabel_1txmv_23",vn={preview:bh,chip:Sh,chipLabel:xh};function kh({rect:e,region:t}){return c.jsx("div",{className:vn.preview,style:Cp(e,t)})}function Ih({tab:e}){const t=to[e.kind];return c.jsxs("div",{className:vn.chip,children:[c.jsx(t,{size:13}),c.jsx("span",{className:vn.chipLabel,children:e.label})]})}function Th(){const e=M(a=>a.tabMenu),t=M(a=>a.closeTabMenu),n=w.useRef(null),[s,r]=w.useState(!1);if(w.useEffect(()=>{r(e!==null)},[e]),!e)return null;function o(a){r(a),a||t()}function i(){e&&Lt(e.tabId),t()}return c.jsxs(_t,{open:s,onOpenChange:o,modal:!1,children:[c.jsx(yt,{asChild:!0,children:c.jsx(Kt,{ref:n,x:e.x,y:e.y})}),c.jsx(vt,{minWidth:120,children:c.jsxs(Y,{onSelect:i,children:[c.jsx(ht,{size:13}),"Close"]})})]})}const Eh="_area_9sawz_1",jh="_panel_9sawz_11",Rh="_dropZone_9sawz_27",Ch="_active_9sawz_31",Ah="_empty_9sawz_35",Mh="_emptyStack_9sawz_47",qh="_emptyTitle_9sawz_61",Ph="_emptyHint_9sawz_65",je={area:Eh,panel:jh,dropZone:Rh,active:Ch,empty:Ah,emptyStack:Mh,emptyTitle:qh,emptyHint:Ph};function Nh({paneId:e,style:t}){const{setNodeRef:n}=Ks({id:`pane:${e}`,data:{type:"pane",paneId:e}});return c.jsx("div",{ref:n,className:je.dropZone,style:t,...Yp(e)})}function Dh(){const e=R(v=>v.tabs),t=R(v=>v.activeWorkspaceCwd),n=D(v=>t===null?void 0:v.layouts[t]),s=$(v=>v.status),r=M(v=>v.openCwdPicker),o=D(v=>v.focusPane),i=e.some(v=>v.workspaceCwd===t),a=w.useRef(null),l=w.useMemo(()=>Pp(e,t,n),[e,t,n]),u=w.useMemo(()=>Ap(n),[n]),f=w.useMemo(()=>Mp(n),[n]),p=w.useMemo(()=>Ln(n),[n]),m=Ip(t),h=Qp(t,a),y=m.preview??h.preview;return c.jsxs(gi,{sensors:m.sensors,collisionDetection:m.collisionDetection,onDragStart:m.onDragStart,onDragMove:m.onDragMove,onDragEnd:m.onDragEnd,onDragCancel:m.onDragCancel,children:[c.jsxs("div",{className:je.area,ref:a,onDragOver:h.onDragOver,onDragLeave:h.onDragLeave,onDrop:h.onDrop,children:[u.length===0?c.jsx(Ts,{cwd:t,paneId:null}):u.map(v=>c.jsx(Ts,{cwd:t,paneId:v.paneId,style:v.stripStyle,focused:v.focused},v.paneId)),c.jsx(Th,{}),t!==null&&f.length>0&&c.jsx(Op,{cwd:t,dividers:f,hostRef:a}),u.map(v=>c.jsx(Nh,{paneId:v.paneId,style:Xr(p.get(v.paneId))},`drop-${v.paneId}`)),y!==null&&p.has(y.paneId)&&c.jsx(kh,{rect:p.get(y.paneId),region:y.region}),t===null&&c.jsxs("div",{className:je.emptyStack,children:[c.jsx("div",{className:je.emptyTitle,children:"No workspace open"}),c.jsx("div",{className:je.emptyHint,children:"Open a project folder to start a chat."}),c.jsx(ae,{size:"sm",variant:"secondary",leftIcon:c.jsx(Lo,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>r(),children:"Open Workspace"})]}),t!==null&&!i&&c.jsx("div",{className:je.empty,children:"No open tabs in this workspace"}),e.map((v,x)=>{const _=Rp[v.kind],k=l[x],T=n==null?void 0:n.placement[v.id];return c.jsx("div",{className:W(je.panel,k.visible&&je.active),style:k.style,onPointerDown:()=>{t!==null&&T!==void 0&&o(t,T)},children:c.jsx(w.Suspense,{fallback:c.jsx(nr,{size:"md"}),children:c.jsx(_,{tab:v,owningPaneId:qp(v.id,n)})})},v.id)})]}),c.jsx(mi,{dropAnimation:null,children:m.draggedTab&&c.jsx(Ih,{tab:m.draggedTab})})]})}const oe=pe()(e=>({rootPath:"",expanded:new Set,expandedByRoot:new Map,draft:null,renaming:null,selected:null,setRoot:t=>e(n=>{const s=new Map(n.expandedByRoot);n.rootPath&&s.set(n.rootPath,n.expanded);const r=s.get(t);return{rootPath:t,expanded:r?new Set(r):new Set([t]),expandedByRoot:s,draft:null,selected:null,renaming:null}}),toggle:t=>e(n=>{const s=new Set(n.expanded);s.has(t)?s.delete(t):s.add(t);const r=new Map(n.expandedByRoot);return r.set(n.rootPath,s),{expanded:s,expandedByRoot:r}}),startDraft:(t,n)=>e(s=>{const r=new Set(s.expanded);r.add(t);const o=new Map(s.expandedByRoot);return s.rootPath&&o.set(s.rootPath,r),{draft:{parentPath:t,kind:n},expanded:r,expandedByRoot:o,renaming:null}}),cancelDraft:()=>e({draft:null}),startRename:t=>e({renaming:t,draft:null}),cancelRename:()=>e({renaming:null}),setSelected:t=>e({selected:t}),repathAfterMove:(t,n,s)=>e(r=>{const o=u=>u===t?n:u.startsWith(`${t}/`)?n+u.slice(t.length):u,i=new Set([...r.expanded].map(o));i.add(s);const a=new Map(r.expandedByRoot);r.rootPath&&a.set(r.rootPath,i);const l=r.selected?{path:o(r.selected.path),isDirectory:r.selected.isDirectory}:null;return{expanded:i,expandedByRoot:a,selected:l,renaming:null}})})),Le={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],htmlAssetBundle:(e,t)=>["file","htmlAssets",e,t],htmlAssetBundleByPath:e=>["file","htmlAssets",e],explorer:e=>["explorer",e],agentList:()=>["agents","list"],providerModels:e=>["providers","models",e],agentTimeline:e=>["agents","timeline",e],thinkingLevels:(e,t)=>["agents","thinkingLevels",e,t??""],agentCommands:e=>["agents","commands",e],providerAuthList:()=>["providers","auth","list"]};function $h(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function Oh(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function no(e,t){const s=(await e.connection.request("file_explorer_request",{path:t})).result;if(!s||s.ok===!1)throw new Error(s&&"error"in s?s.error:"explorer request failed");const r="entries"in s?s.entries??[]:[];return{path:s.resolvedPath??t,entries:Oh(r.map($h))}}function Lh(e,t=!0){const n=$(s=>s.client);return To({queryKey:Le.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return no(n,e)},enabled:!!n&&!!e&&t})}function Bh(e){const t=$(r=>r.client),n=w.useMemo(()=>Array.from(e),[e]),s=Eo({queries:n.map(r=>({queryKey:Le.explorer(r),queryFn:()=>{if(!t)throw new Error("not connected");return no(t,r)},enabled:!!t&&!!r}))});return w.useMemo(()=>{const r=new Map;return n.forEach((o,i)=>{const a=s[i];r.set(o,{listing:a==null?void 0:a.data,isLoading:!!(a!=null&&a.isLoading),isError:!!(a!=null&&a.isError),error:a==null?void 0:a.error})}),r},[n,s])}function Fh(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function zh(e,t){const n=new Set,s=e.connection.onSessionMessage(r=>{const o=r;Fh(o)&&n.has(o.path)&&t(o.path)});return{sync(r){for(const o of n)r.has(o)||(n.delete(o),e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{}));for(const o of r)n.has(o)||(n.add(o),e.connection.request("file_watch_subscribe",{path:o}).then(i=>{const a=i;(a==null?void 0:a.ok)===!1&&console.warn(`useExplorerWatch: ${a.error??"subscribe failed"} for "${o}"`)}).catch(()=>{}))},dispose(){s();for(const r of n)e.connection.request("file_watch_unsubscribe",{path:r}).catch(()=>{});n.clear()}}}function Wh(e){const t=$(i=>i.client),n=Ze(),s=w.useRef(null),r=w.useRef(null),o=Array.from(e).toSorted().join("\0");w.useEffect(()=>{var i,a;t&&(r.current!==t&&((i=s.current)==null||i.dispose(),s.current=zh(t,l=>{n.invalidateQueries({queryKey:Le.explorer(l)})}),r.current=t),(a=s.current)==null||a.sync(new Set(o?o.split("\0"):[])))},[t,o,n]),w.useEffect(()=>()=>{var i;(i=s.current)==null||i.dispose(),s.current=null,r.current=null},[])}const Es=new WeakMap;function js(e){let t=Es.get(e);return t||(t=new vd(e),t.start(),Es.set(e,t)),t}function Uh(e,t,n){const s=new Blob([Uint8Array.from(e)],{type:n||"application/octet-stream"}),r=URL.createObjectURL(s),o=document.createElement("a");o.href=r,o.download=t,o.rel="noopener",document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(r),0)}function so(){const e=$(r=>r.daemon),t=Ze(),n=w.useCallback(async(r,o)=>{if(!e)throw new Error("not connected");const i=r?`${r}/${o.name}`:o.name,a=new Uint8Array(await o.arrayBuffer());await js(e).upload(i,a),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=w.useCallback(async r=>{if(!e)throw new Error("not connected");const o=await js(e).download(r);Uh(o.bytes,o.fileName||r.split("/").pop()||"download",o.mimeType)},[e]);return{upload:n,saveToDisk:s}}const Rs={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},ue=pe()(e=>({subscribedCwd:null,changes:[],ignored:[],...Rs,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],ignored:[],...Rs});return}const n=[];for(const s of t.staged)n.push({path:s.path,status:s.indexStatus==="A"?"added":s.indexStatus==="D"?"deleted":"modified",staged:!0});for(const s of t.unstaged)n.push({path:s.path,status:s.worktreeStatus==="D"?"deleted":"modified",staged:!1});for(const s of t.untracked)n.push({path:s,status:"added",staged:!1});e({changes:n,ignored:t.ignored??[],available:!0,branch:t.branch,upstream:t.upstream,ahead:t.ahead,behind:t.behind,detached:t.detached,conflictCount:t.conflicted.length})}}));function my(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function be(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function Hh(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function _y(e){if(!e.startsWith("/"))return e;const t=e.split("/"),n=[];for(const s of t)s===""||s==="."||(s===".."?n.length>0&&n.pop():n.push(s));return"/"+n.join("/")}function Cs(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:be(t.path);if(s===be(e)||s===e||s.startsWith(`${e}/`)||s!==n&&!s.startsWith(`${n}/`))return null;const r=e.split("/").pop();return{destinationDir:s,destination:`${s}/${r}`}}function As(e,t){if(e.kind!=="file"&&e.kind!=="directory")return null;const n=e.kind==="directory"?e.path:be(e.path);return n!==t&&!n.startsWith(`${t}/`)?null:n}const Vh={empty_path:"Nothing to move.",invalid_name:"Invalid name for the destination.",exists:"An item with that name already exists in the destination folder.",not_found:"That item or destination folder no longer exists.",not_a_directory:"The destination is not a folder.",same_path:"That item is already in this folder.",into_descendant:"A folder cannot be moved into itself.",cross_device:"Cannot move across filesystems."};async function Kh(e,t,n){const s=await e.connection.request("file_move_request",{path:t,destination:n});if(!s.ok){const r=s.error??"";throw new Error(Vh[r]??r??"Failed to move")}return s.destination??n}function Ms(e,t){return t===0?e:`${e} — closed ${t} ${t===1?"diff tab":"diff tabs"}`}function Gh(e){return`${e.kind}:${e.path}`}function ro(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function oo(e,t,n,s,r,o,i){var l;(o==null?void 0:o.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:o.kind,parentPath:t});const a=r.get(t);if(!a||a.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(a.isError){const u=a.error instanceof Error?a.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:u});return}for(const u of((l=a.listing)==null?void 0:l.entries)??[])Yh(e,t,u,n,s,r,o,i)}function Yh(e,t,n,s,r,o,i,a){const l=ro(t,n.name),u=n.kind==="directory",f=u&&r.has(l);l===a?e.push({kind:"rename",path:l,depth:s,name:n.name,isDirectory:u}):u?e.push({kind:"directory",path:l,name:n.name,depth:s,expanded:f}):e.push({kind:"file",path:l,name:n.name,depth:s}),f&&oo(e,l,s+1,r,o,i,a)}function Xh(e,t,n,s,r){if(!e)return[];const o=t.has(e),i=[{kind:"directory",path:e,name:e.split("/").pop()||e,depth:0,expanded:o}];return o&&oo(i,e,1,t,n,s,r),i}const Jh=()=>{};function Zh(e,t){return e===void 0?t:e==="deleted"||t==="deleted"?"deleted":e==="added"||t==="added"?"added":"modified"}function Qh(e){return e==="added"?"added":"modified"}function eg(e,t){if(!e||t.length===0)return Jh;const n=e.replace(/\/+$/,""),s=new Map,r=new Map,o=[];for(const i of t){const a=i.path.endsWith("/"),l=a?i.path.slice(0,-1):i.path;if(!l)continue;const u=`${n}/${l}`;s.set(u,Zh(s.get(u),i.status)),a&&o.push(u);const f=Qh(i.status);let p=be(u);for(;p.length>n.length&&p.startsWith(n);){const m=r.get(p);r.set(p,m===void 0||m===f?f:"modified");const h=be(p);if(h===p)break;p=h}}return i=>{const a=s.get(i)??r.get(i);if(a!==void 0)return a;for(const l of o)if(i.startsWith(`${l}/`))return"added"}}const tg=()=>!1;function ng(e,t){if(!e||t.length===0)return tg;const n=e.replace(/\/+$/,""),s=new Set,r=[];for(const o of t){const i=o.endsWith("/"),a=i?o.slice(0,-1):o;if(!a)continue;const l=`${n}/${a}`;s.add(l),i&&r.push(`${l}/`)}return o=>{if(s.has(o))return!0;for(const i of r)if(o.startsWith(i))return!0;return!1}}const sg="_container_1wywk_1",rg="_header_1wywk_7",og="_uploadButton_1wywk_14",ig="_hiddenInput_1wywk_33",ag="_status_1wywk_36",cg="_statusError_1wywk_37",lg="_rowAction_1wywk_50",dg="_item_1wywk_53",ug="_list_1wywk_60",fg="_active_1wywk_83",pg="_selected_1wywk_88",hg="_dropTarget_1wywk_92",gg="_rootItem_1wywk_99",mg="_dirName_1wywk_98",_g="_chevronSlot_1wywk_104",yg="_chevron_1wywk_104",wg="_chevronOpen_1wywk_115",vg="_icon_1wywk_118",bg="_name_1wywk_125",Sg="_gitAdded_1wywk_140",xg="_gitModified_1wywk_145",kg="_gitDeleted_1wywk_150",Ig="_hiddenEntry_1wywk_162",Tg="_statusRow_1wywk_171",Eg="_statusRowError_1wywk_182",jg="_draftInput_1wywk_185",O={container:sg,header:rg,uploadButton:og,hiddenInput:ig,status:ag,statusError:cg,rowAction:lg,item:dg,list:ug,active:fg,selected:pg,dropTarget:hg,rootItem:gg,dirName:mg,chevronSlot:_g,chevron:yg,chevronOpen:wg,icon:vg,name:bg,gitAdded:Sg,gitModified:xg,gitDeleted:kg,hiddenEntry:Ig,statusRow:Tg,statusRowError:Eg,draftInput:jg};function Rg({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[r,o]=w.useState("");return c.jsxs("div",{className:O.item,style:t,onClick:i=>i.stopPropagation(),children:[c.jsx("span",{className:O.chevronSlot}),c.jsx("span",{className:O.icon,children:e==="directory"?c.jsx(Be,{size:16}):c.jsx(Ut,{size:16})}),c.jsx("input",{className:O.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:r,onChange:i=>o(i.target.value),onKeyDown:i=>{if(i.key==="Enter"){i.preventDefault();const a=r.trim();a?n(a):s()}else i.key==="Escape"&&(i.preventDefault(),s())},onBlur:s})]})}function Cg({name:e,isDirectory:t,indentStyle:n,onSubmit:s,onCancel:r}){const[o,i]=w.useState(e),a=w.useRef(null);return w.useEffect(()=>{const l=a.current;if(!l)return;l.focus();const u=e.lastIndexOf("."),f=t||u<=0?e.length:u;l.setSelectionRange(0,f)},[e,t]),c.jsxs("div",{className:O.item,style:n,onClick:l=>l.stopPropagation(),children:[c.jsx("span",{className:O.chevronSlot}),c.jsx("span",{className:O.icon,children:t?c.jsx(Be,{size:16}):c.jsx(Ut,{size:16})}),c.jsx("input",{ref:a,className:O.draftInput,spellCheck:!1,value:o,onChange:l=>i(l.target.value),onKeyDown:l=>{if(l.key==="Enter"){l.preventDefault();const u=o.trim();!u||u===e?r():s(u)}else l.key==="Escape"&&(l.preventDefault(),r())},onBlur:r})]})}const Ag=14,Mg={added:O.gitAdded,modified:O.gitModified,deleted:O.gitDeleted};function qg({row:e,active:t,selected:n,dropTarget:s,gitStatus:r,hidden:o,isRoot:i,onToggle:a,onOpenFile:l,onContextMenu:u,onSubmitDraft:f,onCancelDraft:p,onSubmitRename:m,onCancelRename:h,onDragStartRow:y,onDragEndRow:v}){const x={paddingLeft:8+e.depth*Ag};if(e.kind==="loading")return c.jsx("div",{className:O.statusRow,style:x,children:"Loading…"});if(e.kind==="error")return c.jsx("div",{className:W(O.statusRow,O.statusRowError),style:x,children:e.message??"failed to load"});if(e.kind==="draft")return c.jsx(Rg,{draftKind:e.draftKind,indentStyle:x,onSubmit:k=>f(e.parentPath,k),onCancel:p});if(e.kind==="rename")return c.jsx(Cg,{name:e.name,isDirectory:e.isDirectory,indentStyle:x,onSubmit:k=>m(e.path,k),onCancel:h});const _=e.kind==="directory";return c.jsxs("div",{className:W(O.item,i&&O.rootItem,t&&O.active,n&&O.selected,s&&O.dropTarget,r&&Mg[r],o&&O.hiddenEntry),style:x,title:e.path,draggable:!i,onDragStart:k=>y(e.path,_,k),onDragEnd:v,onClick:()=>_?a(e.path):l(e.path),onContextMenu:k=>{k.preventDefault(),k.stopPropagation(),u(e.path,_,k.clientX,k.clientY)},children:[c.jsx("span",{className:O.chevronSlot,children:_&&c.jsx(kn,{size:14,className:W(O.chevron,e.expanded&&O.chevronOpen)})}),c.jsx("span",{className:O.icon,children:_?c.jsx(Be,{size:16}):c.jsx(Ut,{size:16})}),c.jsx("span",{className:_?O.dirName:O.name,children:e.name}),c.jsx(Te,{className:O.rowAction,title:"Actions",onClick:k=>{k.stopPropagation();const T=k.currentTarget.getBoundingClientRect();u(e.path,_,T.left,T.bottom)},children:c.jsx(Sn,{size:14})})]})}async function qs(e){var r;if((r=navigator.clipboard)!=null&&r.writeText)try{await navigator.clipboard.writeText(e);return}catch{}const t=document.activeElement,n=(t instanceof HTMLElement?t.closest('[role="dialog"], [role="menu"]'):null)??document.body,s=document.createElement("textarea");s.value=e,s.setAttribute("aria-hidden","true"),s.style.position="fixed",s.style.opacity="0",n.appendChild(s),s.focus(),s.select();try{const o=document.activeElement===s&&s.selectionStart===0&&s.selectionEnd===s.value.length;if(!document.execCommand("copy")||!o)throw new Error('execCommand("copy") did not copy the requested text')}finally{s.remove(),t instanceof HTMLElement&&t.focus()}}const Pg={empty_path:"Nothing to delete.",not_found:"That item no longer exists."};async function Ng(e,t){const n=await e.connection.request("file_delete_request",{path:t});if(!n.ok){const s=n.error??"";throw new Error(Pg[s]??s??"Failed to delete")}}function Dg(){const e=M(P=>P.fileMenu),t=M(P=>P.closeFileMenu),n=$(P=>P.client),s=oe(P=>P.startDraft),r=oe(P=>P.startRename),o=oe(P=>P.rootPath),i=R(P=>P.activeWorkspaceCwd),{saveToDisk:a}=so(),l=Ze(),u=w.useRef(null),[f,p]=w.useState(!1);if(w.useEffect(()=>{p(e!==null)},[e]),!e)return null;const m=e.path.split("/").pop()||e.path;function h(P){p(P),P||t()}function y(){e&&(t(),Bn(e.path,i||"~"))}function v(){e&&(t(),eo(e.path,i||"~"))}function x(){e&&(t(),Qr(e.path,i||"~"))}async function _(){if(e){t();try{await qs(e.path)}catch{window.alert("Failed to copy to clipboard.")}}}async function k(){if(e){t();try{await qs(Hh(e.path,o)||"/")}catch{window.alert("Failed to copy to clipboard.")}}}async function T(){if(e){t();try{await a(e.path)}catch(P){window.alert(`Failed to download: ${P instanceof Error?P.message:String(P)}`)}}}async function B(){if(!e)return;const P=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${P}? "${m}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{await Ng(n,e.path),await l.invalidateQueries({queryKey:["explorer"]}),R.getState().closeByPathPrefix(e.path)}catch(J){window.alert(`Failed to delete: ${J instanceof Error?J.message:String(J)}`)}}function F(P){if(!e)return;const J=e.isDirectory?e.path:be(e.path);t(),s(J,P)}function se(){e&&(t(),r(e.path))}return c.jsxs(_t,{open:f,onOpenChange:h,modal:!1,children:[c.jsx(yt,{asChild:!0,children:c.jsx(Kt,{ref:u,x:e.x,y:e.y})}),c.jsx(vt,{minWidth:140,children:e.background?c.jsxs(c.Fragment,{children:[c.jsxs(Y,{onSelect:()=>F("file"),children:[c.jsx(ln,{size:13}),"New File"]}),c.jsxs(Y,{onSelect:()=>F("directory"),children:[c.jsx(Nt,{size:13}),"New Folder"]}),c.jsx($e,{}),c.jsxs(Y,{onSelect:_,children:[c.jsx(kt,{size:13}),"Copy Current Directory Path"]}),c.jsxs(Y,{onSelect:k,children:[c.jsx(kt,{size:13}),"Copy Current Directory Relative Path"]})]}):c.jsxs(c.Fragment,{children:[!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(Y,{onSelect:y,children:[c.jsx(Bo,{size:13}),"Open"]}),c.jsxs(Y,{onSelect:v,children:[c.jsx(In,{size:13}),"Open in MolViewer"]}),Zr(e.path)&&c.jsxs(Y,{onSelect:x,children:[c.jsx(Fo,{size:13}),"Open as Text"]}),c.jsx($e,{})]}),e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(Y,{onSelect:()=>F("file"),children:[c.jsx(ln,{size:13}),"New File"]}),c.jsxs(Y,{onSelect:()=>F("directory"),children:[c.jsx(Nt,{size:13}),"New Folder"]}),c.jsx($e,{})]}),c.jsxs(Y,{onSelect:_,children:[c.jsx(kt,{size:13}),"Copy Absolute Path"]}),c.jsxs(Y,{onSelect:k,children:[c.jsx(kt,{size:13}),"Copy Relative Path"]}),c.jsx($e,{}),!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(Y,{onSelect:T,children:[c.jsx(zo,{size:13}),"Download"]}),c.jsx($e,{})]}),c.jsxs(Y,{onSelect:se,children:[c.jsx(Ws,{size:13}),"Rename"]}),c.jsxs(Y,{danger:!0,onSelect:B,children:[c.jsx(xn,{size:13}),"Delete"]})]})})]})}const $g={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."};class Og extends Error{constructor(t,n){super(n),this.code=t,this.name="CreateEntryError"}}async function io(e,t,n,s){const r=await e.connection.request("file_create_request",{path:t,name:n,kind:s});if(!r.ok){const o=r.error??"";throw new Og(o,$g[o]??o??"Failed to create")}return r.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const Lg=28,rt="application/x-pi-studio-path",an="Files";function Bg(){const e=$(b=>b.client),t=oe(b=>b.rootPath),n=oe(b=>b.expanded),s=oe(b=>b.setRoot),r=oe(b=>b.toggle),o=oe(b=>b.draft),i=oe(b=>b.startDraft),a=oe(b=>b.cancelDraft),l=oe(b=>b.renaming),u=oe(b=>b.cancelRename),f=oe(b=>b.selected),p=oe(b=>b.setSelected),m=R(b=>b.activeWorkspaceCwd),h=Qe(),y=R(b=>b.tabs.find(E=>E.id===b.activeTabId)),v=ue(b=>b.changes),x=ue(b=>b.ignored),{upload:_}=so(),k=M(b=>b.openFileMenu),T=Ze(),[B,F]=w.useState(null),[se,P]=w.useState(null),J=w.useRef(null),ie=w.useRef(null),he=w.useRef(null),K=w.useRef(null),ge=(y==null?void 0:y.kind)==="file"||(y==null?void 0:y.kind)==="molecule"?y.data.path:null,j=f?f.isDirectory?f.path:be(f.path):t,C=w.useRef(null);w.useEffect(()=>{if(!e)return;const b=Ae(m||"~",h);b.startsWith("~")||C.current!==b&&(C.current=b,s(b))},[e,m,h,s]);const me=Bh(n);Wh(n);const St=w.useMemo(()=>Xh(t,n,me,o,l),[t,n,me,o,l]),fo=w.useMemo(()=>eg(t,v),[t,v]),po=w.useMemo(()=>ng(t,x),[t,x]),zn=jo({count:St.length,getScrollElement:()=>ie.current,estimateSize:()=>Lg,overscan:12,getItemKey:b=>{const E=St[b];return E?Gh(E):b}});function Yt(b){Bn(b,m||"~")}function ho(b,E,z){z.dataTransfer.setData(rt,b),E||z.dataTransfer.setData(bt.path,b),z.dataTransfer.effectAllowed=E?"move":"copyMove",he.current=b}function go(){he.current=null}function Xt(){P(null),K.current&&(clearTimeout(K.current.timer),K.current=null)}function Wn(b){var z;if(((z=K.current)==null?void 0:z.path)===b.path||(K.current&&clearTimeout(K.current.timer),K.current=null,b.kind!=="directory"||b.expanded))return;const E=window.setTimeout(()=>r(b.path),700);K.current={path:b.path,timer:E}}async function Un(b,E){if(!e)throw new Error("Not connected.");const z=await Kh(e,b,E),N=be(z);await T.invalidateQueries({queryKey:Le.explorer(be(b))}),await T.invalidateQueries({queryKey:Le.explorer(N)}),oe.getState().repathAfterMove(b,z,N);const G=R.getState().tabs.filter(de=>{if(de.kind!=="file"&&de.kind!=="diff"&&de.kind!=="molecule")return!1;const xt=de.data.path;return xt===b||((xt==null?void 0:xt.startsWith(`${b}/`))??!1)}),_e=G.some(de=>(de.kind==="file"||de.kind==="molecule")&&de.data.path===b),re=G.filter(de=>de.kind==="diff").length;return R.getState().closeByPathPrefix(b),_e&&Yt(z),{destination:z,closedDiffs:re}}async function mo(b,E){const z=Cs(b,E,t);if(!z||!e)return;const N=b.split("/").pop()??b;F({text:`Moving ${N}…`,error:!1});try{const{destination:G,closedDiffs:_e}=await Un(b,z.destination);F({text:Ms(`Moved to ${be(G).split("/").pop()||"/"}`,_e),error:!1})}catch(G){F({text:G instanceof Error?G.message:"Failed to move",error:!0})}}async function _o(b,E){const z=(o==null?void 0:o.kind)??"file";if(a(),!!e)try{const N=await io(e,b,E,z);await T.invalidateQueries({queryKey:Le.explorer(b)}),F({text:`Created ${N}`,error:!1}),z==="file"&&Yt(N)}catch(N){F({text:N instanceof Error?N.message:"Failed to create",error:!0})}}async function yo(b,E){if(u(),!e)return;const z=ro(be(b),E);F({text:`Renaming ${b.split("/").pop()}…`,error:!1});try{const{destination:N,closedDiffs:G}=await Un(b,z);F({text:Ms(`Renamed to ${N.split("/").pop()}`,G),error:!1})}catch(N){F({text:N instanceof Error?N.message:"Failed to rename",error:!0})}}async function Hn(b,E){var _e;if(!E.length||!b)return;const z=(_e=me.get(b))==null?void 0:_e.listing,N=new Set((z==null?void 0:z.entries.map(re=>re.name))??[]),G=E.filter(re=>N.has(re.name));if(G.length>0){const re=G.map(de=>de.name).join(", ");if(!window.confirm(`Overwrite ${G.length>1?"these files":"this file"}? ${re}`))return}F({text:`Uploading ${E.length} file${E.length>1?"s":""}…`,error:!1});try{for(const re of E)await _(b,re);F({text:`Uploaded ${E.length} file${E.length>1?"s":""}`,error:!1})}catch(re){F({text:`Upload failed: ${re instanceof Error?re.message:"unknown"}`,error:!0})}}function Vn(b,E){if(b.preventDefault(),b.dataTransfer.types.includes(rt)){const G=b.dataTransfer.getData(rt)||he.current;Xt(),G&&mo(G,E??{kind:"directory",path:t});return}if(Xt(),!b.dataTransfer.types.includes(an))return;const z=E?As(E,t):t;if(!z)return;const N=Array.from(b.dataTransfer.files);N.length&&Hn(z,N)}function wo(b){const E=b.dataTransfer.types.includes(rt);!E&&!b.dataTransfer.types.includes(an)||(b.preventDefault(),b.dataTransfer.dropEffect=E?"move":"copy")}return e?c.jsxs("div",{className:O.container,onDragOver:wo,onDragLeave:b=>{b.currentTarget.contains(b.relatedTarget)||Xt()},onDrop:b=>Vn(b),children:[c.jsxs("div",{className:O.header,children:[c.jsx("button",{type:"button",className:O.uploadButton,onClick:()=>i(j,"file"),disabled:!t,title:f?`New file in ${j.split("/").pop()||"/"}`:"New file in workspace root",children:c.jsx(ln,{size:14})}),c.jsx("button",{type:"button",className:O.uploadButton,onClick:()=>i(j,"directory"),disabled:!t,title:f?`New folder in ${j.split("/").pop()||"/"}`:"New folder in workspace root",children:c.jsx(Nt,{size:14})}),c.jsxs("button",{type:"button",className:O.uploadButton,onClick:()=>{var b;return(b=J.current)==null?void 0:b.click()},disabled:!t,title:"Upload files to the workspace root",children:[c.jsx(Wo,{size:14}),c.jsx("span",{children:"Upload"})]}),c.jsx("input",{ref:J,type:"file",multiple:!0,className:O.hiddenInput,onChange:b=>{Hn(t,Array.from(b.target.files??[])),b.target.value=""}})]}),B&&c.jsx("div",{className:B.error?O.statusError:O.status,children:B.text}),c.jsxs("div",{className:O.list,ref:ie,onContextMenu:b=>{b.preventDefault(),k(t,!0,b.clientX,b.clientY,!0)},children:[St.length===0&&c.jsx(Oe,{children:"No files loaded"}),c.jsx("div",{style:{position:"relative",height:zn.getTotalSize()},children:zn.getVirtualItems().map(b=>{const E=St[b.index];if(!E)return null;const z=E.path===t&&E.kind==="directory";return c.jsx("div",{"data-index":b.index,style:{position:"absolute",top:0,left:0,width:"100%",height:b.size,transform:`translateY(${b.start}px)`},onDragEnter:N=>{if(N.dataTransfer.types.includes(rt)){const _e=he.current;if(!_e)return;const re=Cs(_e,E,t);P(re?E.path:null),Wn(E);return}if(!N.dataTransfer.types.includes(an))return;const G=As(E,t);P(G?E.path:null),Wn(E)},onDrop:N=>{N.stopPropagation(),Vn(N,E)},children:c.jsx(qg,{row:E,active:(E.kind==="file"||E.kind==="directory")&&E.path===ge,selected:(E.kind==="file"||E.kind==="directory")&&E.path===(f==null?void 0:f.path),gitStatus:!z&&(E.kind==="file"||E.kind==="directory")?fo(E.path):void 0,hidden:!z&&(E.kind==="file"||E.kind==="directory")&&(E.name.startsWith(".")||po(E.path)),isRoot:z,onToggle:N=>{p({path:N,isDirectory:!0}),r(N)},onOpenFile:N=>{p({path:N,isDirectory:!1}),Yt(N)},onContextMenu:(N,G,_e,re)=>k(N,G,_e,re,z),onSubmitDraft:(N,G)=>void _o(N,G),onCancelDraft:a,onSubmitRename:(N,G)=>void yo(N,G),onCancelRename:u,onDragStartRow:ho,onDragEndRow:go,dropTarget:(E.kind==="file"||E.kind==="directory")&&E.path===se})},b.key)})})]}),c.jsx(Dg,{})]}):c.jsx(Oe,{children:"Connect to browse files"})}const Fg="_list_1n3q6_1",zg="_summary_1n3q6_4",Wg="_item_1n3q6_11",Ug="_badge_1n3q6_23",Hg="_added_1n3q6_30",Vg="_modified_1n3q6_34",Kg="_deleted_1n3q6_38",Gg="_name_1n3q6_42",ze={list:Fg,summary:zg,item:Wg,badge:Ug,added:Hg,modified:Vg,deleted:Kg,name:Gg},Yg={added:"A",modified:"M",deleted:"D"};function Xg(){const t=R(o=>o.activeWorkspaceCwd)||"~",n=ue(o=>o.changes),s=R(o=>o.open);function r(o,i){s({id:te.diff(o,i),kind:"diff",label:o.split("/").pop()||o,closable:!0,data:{path:o,staged:i},workspaceCwd:t})}return n.length===0?c.jsx(Oe,{children:"No changes detected"}):c.jsxs("div",{className:ze.list,children:[c.jsxs("div",{className:ze.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((o,i)=>c.jsxs("div",{className:ze.item,onClick:()=>r(o.path,o.staged),children:[c.jsx("span",{className:W(ze.badge,ze[o.status]),children:Yg[o.status]}),c.jsx("span",{className:ze.name,children:o.path})]},`${o.path}-${o.staged}-${i}`))]})}const Jg="_tabBar_1tvri_1",Zg="_tabBtn_1tvri_7",Qg="_active_1tvri_23",em="_refreshBtn_1tvri_27",tm="_content_1tvri_31",Pe={tabBar:Jg,tabBtn:Zg,active:Qg,refreshBtn:em,content:tm};function nm(){const e=M(a=>a.rightSidebarTab),t=M(a=>a.setRightSidebarTab),s=R(a=>a.activeWorkspaceCwd)||"~",r=$(a=>a.client),o=Ze();function i(){o.invalidateQueries({queryKey:["explorer"]}),r&&s&&r.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return c.jsxs(Dr,{children:[c.jsxs("div",{className:Pe.tabBar,children:[c.jsxs("button",{type:"button",className:W(Pe.tabBtn,e==="files"&&Pe.active),onClick:()=>t("files"),children:[c.jsx(Be,{size:13}),"Files"]}),c.jsxs("button",{type:"button",className:W(Pe.tabBtn,e==="changes"&&Pe.active),onClick:()=>t("changes"),children:[c.jsx(Hs,{size:13}),"Changes"]}),c.jsx(ae,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:Pe.refreshBtn,onClick:i,children:c.jsx(Uo,{size:13})})]}),c.jsx("div",{className:Pe.content,children:e==="files"?c.jsx(Bg,{}):c.jsx(Xg,{})})]})}const ao=pe()(e=>({bySession:{},setStats(t,n){e(s=>({bySession:{...s.bySession,[t]:{...s.bySession[t],...n}}}))},clear(t){e(n=>{const{[t]:s,...r}=n.bySession;return{bySession:r}})}})),sm=12e3;function rm(e,t){return e==="running"&&t!=="running"}function Ps(e,t){var s,r,o,i,a,l;const n={};((s=t.contextUsage)==null?void 0:s.tokens)!=null&&(n.contextTokens=t.contextUsage.tokens),((r=t.contextUsage)==null?void 0:r.contextWindow)!==void 0&&(n.contextWindow=t.contextUsage.contextWindow),((o=t.contextUsage)==null?void 0:o.percent)!=null&&(n.contextPercent=t.contextUsage.percent),((i=t.tokens)==null?void 0:i.total)!==void 0&&(n.totalTokens=t.tokens.total),((a=t.tokens)==null?void 0:a.input)!==void 0&&(n.inputTokens=t.tokens.input),((l=t.tokens)==null?void 0:l.output)!==void 0&&(n.outputTokens=t.tokens.output),t.cost!==void 0&&(n.cost=t.cost),t.model!==void 0&&(n.model=t.model,q.getState().setModel(e,t.model)),ao.getState().setStats(e,n)}function om(e){const t=$(a=>a.client),n=$(a=>a.status),s=q(a=>{var l;return e?((l=a.sessions[e])==null?void 0:l.agentId)??null:null}),r=q(a=>{var l;return e?(l=a.sessions[e])==null?void 0:l.status:void 0}),o=w.useRef(!1),i=w.useRef(void 0);w.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let a=!1;const l=async()=>{if(!o.current){o.current=!0;try{const f=await t.agent(s).sessionStats();a||Ps(e,f)}catch{}finally{o.current=!1}}};l();const u=setInterval(()=>void l(),sm);return()=>{a=!0,clearInterval(u)}},[n,t,e,s]),w.useEffect(()=>{const a=i.current;i.current=r,rm(a,r)&&(n!=="open"||!t||!e||!s||(o.current=!1,t.agent(s).sessionStats().then(l=>Ps(e,l)).catch(()=>{})))},[r,n,t,e,s])}function im(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 am(e){const t=$(o=>o.client),n=ue(o=>o.applyProjection),s=ue(o=>o.setSubscribedCwd),r=w.useRef(t);return r.current=t,w.useEffect(()=>{if(!t||!e)return;let o=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const i=t.connection.onSessionMessage(a=>{if(o)return;const l=a;im(l)&&l.cwd===e&&n(l.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{o=!0,i(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const o=r.current;!o||!e||o.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const Fn="--";function ot(e){return e===void 0?Fn:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function cm(e){if(e==null)return Fn;const t=e<=1?e*100:e;return`${Math.round(t)}%`}function lm(e){if(e===void 0)return Fn;const t=e<1?4:2;return`$${e.toFixed(t)}`}function dm(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function um(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}const fm="_statusBar_t655h_1",pm="_segmentGroup_t655h_16",hm="_chevron_t655h_20",gm="_segment_t655h_16",mm="_icon_t655h_33",_m="_text_t655h_39",We={statusBar:fm,segmentGroup:pm,chevron:hm,segment:gm,icon:mm,text:_m};function ym(){const e=q(h=>h.activeSessionId),t=q(h=>e?h.sessions[e]:void 0),n=Qe(),s=R(h=>h.activeWorkspaceCwd);am(s||"");const r=ue(h=>h.available),o=ue(h=>h.branch),i=ue(h=>h.ahead),a=ue(h=>h.behind),l=ue(h=>h.detached),u=ue(h=>h.conflictCount),f=ue(h=>h.changes.length),p=ao(h=>e?h.bySession[e]:void 0);om(e);const m=[];if(t){const h=dm(t.cwd,n);m.push({key:"cwd",icon:c.jsx(Be,{size:13}),text:h,title:t.cwd})}if(r){const h=um(i,a),y=[l?"(detached)":o??"?"];h&&y.push(h),f>0&&y.push(`●${f}`),u>0&&y.push(`⚠${u}`),m.push({key:"branch",icon:c.jsx(Ho,{size:13}),text:y.join(" ")})}if(t){const h=`${cm(p==null?void 0:p.contextPercent)} (${ot(p==null?void 0:p.contextTokens)}/${ot(p==null?void 0:p.contextWindow)})`;m.push({key:"context",icon:c.jsx(Vo,{size:13}),text:h}),m.push({key:"tokens",icon:c.jsx(Ko,{size:13}),text:ot(p==null?void 0:p.totalTokens),title:`in ${ot(p==null?void 0:p.inputTokens)} / out ${ot(p==null?void 0:p.outputTokens)}`}),m.push({key:"cost",icon:c.jsx(Go,{size:13}),text:lm(p==null?void 0:p.cost)})}return c.jsx("div",{className:We.statusBar,children:m.map((h,y)=>c.jsxs("span",{className:We.segmentGroup,children:[y>0&&c.jsx(kn,{size:12,className:We.chevron,"aria-hidden":"true"}),c.jsxs("span",{className:We.segment,title:h.title,children:[c.jsx("span",{className:We.icon,children:h.icon}),c.jsx("span",{className:We.text,children:h.text})]})]},h.key))})}const wm="_wrapper_14joh_3",vm="_box_14joh_18",bm="_checkmark_14joh_38",Sm="_nativeInput_14joh_43",At={wrapper:wm,box:vm,checkmark:bm,nativeInput:Sm};w.forwardRef(function({label:t,checked:n=!1,disabled:s,className:r,onChange:o,...i},a){return c.jsxs("label",{className:At.wrapper,"data-disabled":s||void 0,children:[c.jsx("input",{ref:a,type:"checkbox",className:At.nativeInput,checked:n,disabled:s,onChange:o,...i}),c.jsx("span",{className:At.box,"data-checked":n,"aria-hidden":!0,children:n&&c.jsx(Yo,{size:12,className:At.checkmark})}),t&&c.jsx("span",{children:t})]})});const xm="_select_dl3mw_3",km={select:xm};w.forwardRef(function({options:t,placeholder:n,className:s,...r},o){return c.jsxs("select",{ref:o,className:W(km.select,s),...r,children:[n&&c.jsx("option",{value:"",disabled:!0,children:n}),t.map(i=>c.jsx("option",{value:i.value,children:i.label},i.value))]})});const Im="_overlay_1k4ng_1",Tm="_contentWrapper_1k4ng_7",Em="_dialog_1k4ng_16",jm="_header_1k4ng_28",Rm="_title_1k4ng_36",Cm="_body_1k4ng_43",Am="_footer_1k4ng_49",Mm="_bare_1k4ng_58",qm="_bareBody_1k4ng_64",Pm="_bareCloseBtn_1k4ng_68",Nm="_visuallyHidden_1k4ng_73",ve={overlay:Im,contentWrapper:Tm,dialog:Em,header:jm,title:Rm,body:Cm,footer:Am,bare:Mm,bareBody:qm,bareCloseBtn:Pm,visuallyHidden:Nm},Dm=dn;function $m({open:e,onOpenChange:t,title:n,children:s,footer:r,width:o,className:i,bare:a=!1,onInteractOutside:l,onEscapeKeyDown:u}){return c.jsx(si,{open:e,onOpenChange:t,children:c.jsxs(ri,{children:[c.jsx(oi,{className:ve.overlay}),c.jsx("div",{className:ve.contentWrapper,children:c.jsxs(ii,{className:W(ve.dialog,a&&ve.bare,i),style:o!==void 0?{width:o}:void 0,onInteractOutside:l,onEscapeKeyDown:u,children:[a?c.jsx(Kn,{className:ve.visuallyHidden,children:n}):c.jsxs("div",{className:ve.header,children:[c.jsx(Kn,{className:ve.title,children:n}),c.jsx(dn,{asChild:!0,children:c.jsx(Te,{size:"sm","aria-label":"Close",children:c.jsx(ht,{size:16})})})]}),c.jsx("div",{className:W(ve.body,a&&ve.bareBody),children:s}),a&&c.jsx(dn,{asChild:!0,children:c.jsx(Te,{size:"sm","aria-label":"Close",className:ve.bareCloseBtn,style:{background:"var(--pi-color-surface1)",border:"1px solid var(--pi-color-border)",borderRadius:"50%"},children:c.jsx(ht,{size:16})})}),r&&c.jsx("div",{className:ve.footer,children:r})]})})]})})}const Om="_handle_1j18v_1",Lm={handle:Om};function Ns({side:e,onResize:t,className:n}){const s=w.useRef(0),r=w.useRef(null),o=w.useCallback(l=>{const u=l.clientX-s.current;s.current=l.clientX,t(e==="left"?u:-u)},[t,e]),i=w.useCallback(l=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),document.body.style.cursor="",document.body.style.userSelect="";const u=r.current;u!=null&&u.hasPointerCapture(l.pointerId)&&u.releasePointerCapture(l.pointerId)},[o]);function a(l){l.preventDefault(),s.current=l.clientX,l.currentTarget.setPointerCapture(l.pointerId),document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",o),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i)}return c.jsx("div",{ref:r,className:W(Lm.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}function Bm(e,t){const{order:n,sessions:s}=q.getState(),o=On(n,s,t).find(i=>i.cwd===e);if(o!=null&&o.sessions[0]){const i=o.sessions[0].id;q.getState().activate(i);const a=q.getState().sessions[i];R.getState().open({id:te.chat(i),kind:"chat",label:(a==null?void 0:a.title)??"New chat",closable:!0,data:{sessionId:i},workspaceCwd:e})}else wt(e);M.getState().setCwd(e)}const Fm="_pathRow_1mu84_1",zm="_pathInput_1mu84_9",Wm="_createRow_1mu84_13",Um="_createInput_1mu84_21",Hm="_createError_1mu84_25",Vm="_list_1mu84_30",Km="_item_1mu84_37",Gm="_name_1mu84_49",Ee={pathRow:Fm,pathInput:zm,createRow:Wm,createInput:Um,createError:Hm,list:Vm,item:Km,name:Gm};function Ym(){const e=M(C=>C.cwdPickerOpen),t=M(C=>C.closeCwdPicker),n=R(C=>C.activeWorkspaceCwd),s=M(C=>C.cwd),r=$(C=>C.client),o=Qe(),[i,a]=w.useState("/"),[l,u]=w.useState("/"),[f,p]=w.useState(!1),[m,h]=w.useState(""),[y,v]=w.useState(null),[x,_]=w.useState(!1),k=Ze();w.useEffect(()=>{if(!e)return;const C=Ae(n||s||"~",o);a(C),u(C),J()},[e,r,n,s,o]);const{data:T,isLoading:B,isError:F,error:se}=Lh(i,e&&!!r),P=((T==null?void 0:T.entries)??[]).filter(C=>C.kind==="directory");function J(){p(!1),h(""),v(null)}function ie(C){const me=C.length>1?C.replace(/\/+$/,"")||"/":C;a(me),u(me),J()}function he(){ie(i.split("/").slice(0,-1).join("/")||"/")}function K(){ie(l.trim())}async function ge(){const C=m.trim();if(!(!C||!r||x)){_(!0),v(null);try{const me=await io(r,i,C,"directory");await k.invalidateQueries({queryKey:Le.explorer(i)}),ie(me)}catch(me){v(me instanceof Error?me.message:"Failed to create folder")}finally{_(!1)}}}function j(){Bm(i,o),t()}return c.jsxs($m,{open:e,onOpenChange:C=>!C&&t(),title:"Open Workspace",footer:c.jsxs(c.Fragment,{children:[c.jsx(Dm,{asChild:!0,children:c.jsx(ae,{size:"sm",variant:"secondary",children:"Cancel"})}),c.jsx(ae,{size:"sm",onClick:j,children:"Open this folder"})]}),children:[c.jsxs("div",{className:Ee.pathRow,children:[c.jsx(ae,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:he,children:c.jsx(Xo,{size:13})}),c.jsx($t,{className:Ee.pathInput,value:l,onChange:C=>u(C.target.value),onKeyDown:C=>{C.key==="Enter"&&(C.preventDefault(),K())}}),c.jsx(ae,{size:"xs",onClick:K,children:"Go"}),c.jsx(ae,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!r||F||f,onClick:()=>{p(!0),h(""),v(null)},children:c.jsx(Nt,{size:13})})]}),f&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:Ee.createRow,children:[c.jsx(Be,{size:14}),c.jsx($t,{className:Ee.createInput,autoFocus:!0,placeholder:"New folder name",value:m,onChange:C=>h(C.target.value),onKeyDown:C=>{C.key==="Enter"?(C.preventDefault(),ge()):C.key==="Escape"&&(C.preventDefault(),C.stopPropagation(),J())}}),c.jsx(ae,{size:"xs",loading:x,disabled:!m.trim()||x,onClick:()=>void ge(),children:"Create"}),c.jsx(ae,{size:"xs",variant:"secondary",onClick:J,children:"Cancel"})]}),y&&c.jsx("div",{className:Ee.createError,children:y})]}),c.jsx("div",{className:Ee.list,children:B?c.jsx(Oe,{children:"Loading..."}):F?c.jsxs(Oe,{children:["Error: ",se instanceof Error?se.message:"unknown error"]}):P.length===0?c.jsx(Oe,{children:"No subdirectories"}):P.map(C=>c.jsxs("div",{className:Ee.item,onClick:()=>ie(i==="/"?`/${C.name}`:`${i}/${C.name}`),children:[c.jsx(Be,{size:14}),c.jsx("span",{className:Ee.name,children:C.name})]},C.name))})]})}const Xm="_visuallyHidden_rig62_2",Ds={visuallyHidden:Xm};function Jm(){const e=Bt(n=>n.message),t=Bt(n=>n.politeness);return c.jsxs(c.Fragment,{children:[c.jsx("span",{className:Ds.visuallyHidden,role:"status","aria-live":"polite",children:t==="polite"?e:""}),c.jsx("span",{className:Ds.visuallyHidden,role:"alert",children:t==="assertive"?e:""})]})}const Zm="_viewport_qa8a1_1",Qm="_toast_qa8a1_13",e_="_exiting_qa8a1_42",t_="_content_qa8a1_46",n_="_close_qa8a1_51",Ue={viewport:Zm,toast:Qm,exiting:e_,content:t_,close:n_},s_=180;function r_(){return typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function o_(){const e=Ge(u=>u.toasts).slice(0,_n),t=Ge(u=>u.dismiss),n=Ge(u=>u.pause),s=Ge(u=>u.resume),r=w.useRef(new Map);for(const u of e)r.current.set(u.id,u);const o=w.useRef([]),[i,a]=w.useState([]);w.useEffect(()=>{const u=e.map(h=>h.id),f=new Set(u),p=o.current.filter(h=>!f.has(h));if(o.current=u,p.length===0)return;if(r_()){for(const h of p)r.current.delete(h);return}a(h=>[...h,...p]);const m=window.setTimeout(()=>{a(h=>h.filter(y=>!p.includes(y)));for(const h of p)r.current.delete(h)},s_);return()=>window.clearTimeout(m)},[e]);const l=[...e,...i.filter(u=>!e.some(f=>f.id===u)).map(u=>r.current.get(u)).filter(u=>u!==void 0)];return l.length===0?null:So.createPortal(c.jsx("div",{className:Ue.viewport,role:"status","aria-live":"polite",children:l.map(u=>{const{token:f}=Vu(u.variant),p=i.includes(u.id)&&!e.some(m=>m.id===u.id);return c.jsxs("div",{className:p?`${Ue.toast} ${Ue.exiting}`:Ue.toast,style:f?{"--toast-rail":`var(--pi-color-${f})`}:void 0,onMouseEnter:()=>n(u.id),onMouseLeave:()=>s(u.id),children:[c.jsx("span",{className:Ue.content,children:u.content}),c.jsx("button",{type:"button",className:Ue.close,"aria-label":"Dismiss",onClick:()=>t(u.id),children:c.jsx(ne,{icon:ht,size:"xs","aria-hidden":!0})})]},u.id)})}),document.body)}const i_="_shell_570m8_1",a_="_main_570m8_7",c_="_sidebarLeft_570m8_13",l_="_leftHandle_570m8_25",d_="_center_570m8_28",u_="_sidebarRight_570m8_35",f_="_rightHandle_570m8_43",Ne={shell:i_,main:a_,sidebarLeft:c_,leftHandle:l_,center:d_,sidebarRight:u_,rightHandle:f_};function p_(){const e=M(i=>i.leftSidebarCollapsed),t=M(i=>i.rightSidebarCollapsed),n=M(i=>i.leftSidebarWidth),s=M(i=>i.rightSidebarWidth),r=M(i=>i.resizeLeftSidebar),o=M(i=>i.resizeRightSidebar);return c.jsxs("div",{className:Ne.shell,children:[c.jsx(ou,{}),c.jsxs("div",{className:Ne.main,children:[!e&&c.jsxs("aside",{className:Ne.sidebarLeft,style:{width:n},children:[c.jsx(Sp,{}),c.jsx(Ns,{side:"left",className:Ne.leftHandle,onResize:r})]}),c.jsx("div",{className:Ne.center,children:c.jsx(Dh,{})}),!t&&c.jsxs("aside",{className:Ne.sidebarRight,style:{width:s},children:[c.jsx(Ns,{side:"right",className:Ne.rightHandle,onResize:o}),c.jsx(nm,{})]})]}),c.jsx(ym,{}),c.jsx(Ym,{}),c.jsx(o_,{}),c.jsx(Jm,{})]})}function h_(){const e=w.useRef(!1);w.useEffect(()=>{if(e.current)return;if(e.current=!0,window.location.hash.includes("offer=")){const l=window.location.href;M.getState().setHost(l),$.getState().connect({url:l});return}const t=new URLSearchParams(window.location.search),n=t.get("host"),s=t.get("pair"),r=t.get("password"),o=t.get("cwd"),i=t.get("connect")==="1",a=M.getState();if(s?a.setHost(s):n&&a.setHost(n),r&&a.setPassword(r),o&&a.setCwd(o),s)$.getState().connect({url:s});else if(i){const{host:l,password:u}=M.getState();$.getState().connect({url:l,password:u||void 0})}},[])}const co="pi-studio-pane-layout",g_=250;function m_(){const e=new Map,t={workspaces:e,activeWorkspaceCwd:null},n=En.get(co);if(!n)return t;let s;try{s=JSON.parse(n)}catch{return t}if(typeof s!="object"||s===null)return t;const r=s;if(r.version!==Rr||typeof r.workspaces!="object"||r.workspaces===null)return t;for(const[i,a]of Object.entries(r.workspaces)){const l=__(a);l&&e.set(i,l)}const o=r.activeWorkspaceCwd;return{workspaces:e,activeWorkspaceCwd:typeof o=="string"&&e.has(o)?o:null}}function __(e){if(typeof e!="object"||e===null)return null;const t=e,n=Cu(t.tree);if(!n)return null;const s=new Set(le(n)),r={};for(const[a,l]of $s(t.placement))s.has(l)&&(r[a]=l);const o={};for(const[a,l]of $s(t.activeByPane))s.has(a)&&(o[a]=l);const i=t.activePaneId;return{tree:n,placement:r,activeByPane:o,activePaneId:typeof i=="string"&&s.has(i)?i:null}}function $s(e){return typeof e!="object"||e===null?[]:Object.entries(e).filter(t=>typeof t[1]=="string")}let Ie=null;function Os(){Ie==null||Ie();const e=setTimeout(()=>{Ie=null,lo()},g_);Ie=()=>clearTimeout(e)}function y_(){Ie==null||Ie(),Ie=null,lo()}function lo(){const e=new Map;for(const s of R.getState().tabs){const r=Ot(s);r!==null&&e.set(s.id,r)}const t={};for(const[s,r]of Object.entries(D.getState().layouts)){const o={...r.pendingPlacement};for(const[a,l]of Object.entries(r.placement)){const u=e.get(a);u!==void 0&&(o[u]=l)}const i={...r.pendingActive};for(const[a,l]of Object.entries(r.activeByPane)){const u=e.get(l);u!==void 0&&(i[a]=u)}t[s]={tree:r.tree,placement:o,activeByPane:i,activePaneId:r.focusedPaneId}}const n={version:Rr,workspaces:t,activeWorkspaceCwd:R.getState().activeWorkspaceCwd??void 0};En.set(co,JSON.stringify(n))}function w_(){let e=Ls(R.getState().tabs);const t=()=>{const o=Ls(R.getState().tabs);o!==e&&(e=o,Os())},n=D.subscribe(Os),s=R.subscribe(t),r=q.subscribe(t);return()=>{n(),s(),r()}}function Ls(e){return e.map(t=>`${t.id}\0${Ot(t)??""}`).join("")}const v_=/^diff:(staged|worktree):(.+)$/;function b_(e){for(const[t,n]of e)for(const s of Object.keys(n.placement)){const r=S_(s,t);r!==null&&R.getState().open(r)}}function S_(e,t){const n=Bs(e,"file:");if(n!==null)return{id:te.file(n),kind:"file",...cn(n),workspaceCwd:t,data:{path:n}};const s=Bs(e,"molecule:");if(s!==null)return{id:te.molecule(s),kind:"molecule",...cn(s),workspaceCwd:t,data:{path:s}};const r=v_.exec(e);if(r!==null){const o=r[2],i=r[1]==="staged";return{id:te.diff(o,i),kind:"diff",...cn(o),workspaceCwd:t,data:{path:o,staged:i}}}return null}function Bs(e,t){if(!e.startsWith(t))return null;const n=e.slice(t.length);return n===""?null:n}function cn(e){return{label:e.split("/").pop()||e,closable:!0}}function x_(e){if(e===null)return()=>{};if(zs())return Fs(e),()=>{};const t=D.subscribe(()=>{zs()&&(t(),Fs(e))});return t}function Fs(e){if(D.getState().layouts[e]===void 0||!R.getState().tabs.some(n=>n.workspaceCwd===e))return!1;const t=R.getState().activeWorkspaceCwd!==e;return t&&R.getState().switchWorkspace(e),k_(e),t}function k_(e){const t=R.getState().tabs.filter(s=>s.workspaceCwd===e&&s.kind==="chat");if(t.length===0)return;const n=q.getState().activeSessionId;t.some(s=>s.data.sessionId===n)||q.getState().activate(t[0].data.sessionId)}function zs(){const{sessions:e,terminals:t}=D.getState().hydrationSources;return e&&t}const I_={workspaces:new Map,activeWorkspaceCwd:null};function T_(){const e=$(s=>s.status),t=w.useRef(I_),n=w.useRef(!1);w.useEffect(()=>{const s=m_();t.current=s,D.getState().installPersistedLayouts(s.workspaces,s.activeWorkspaceCwd);const r=w_(),o=()=>y_();return window.addEventListener("pagehide",o),()=>{window.removeEventListener("pagehide",o),r()}},[]),w.useEffect(()=>{if(e!=="open"||n.current)return;n.current=!0;const s=t.current;b_(s.workspaces),x_(s.activeWorkspaceCwd)},[e])}function E_(e){return typeof e=="object"&&e!==null&&"kind"in e}function j_(e){const t=[];for(const n of e)E_(n)&&(n.kind==="other"?n.event&&t.push({event:n.event,timestamp:n.timestamp}):(n.events??[]).forEach((s,r)=>{t.push({event:s,timestamp:r===0?n.timestamp:void 0})}));return t}async function R_(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...j_(s.items)),!s.hasNewer))return t;const r=s.endCursor;if(typeof r!="string"||r===n)return t;n=r}}function C_(e){return typeof e.model=="string"}function A_(e){return typeof e.thinkingLevel=="string"}function M_(){const e=$(s=>s.client),t=$(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,q_(e))},[t,e]),w.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(C_(s)){const r=typeof s.modelProvider=="string"?s.modelProvider:void 0;q.getState().setModelByAgentId(s.agentId,s.model,r)}A_(s)&&q.getState().setThinkingLevelByAgentId(s.agentId,s.thinkingLevel)})},[t,e])}async function q_(e){try{await P_(e)}finally{D.getState().markHydrationSource("sessions")}}async function P_(e){var y;let t=[];try{t=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{t=[]}t.sort((v,x)=>(x.lastActivity??0)-(v.lastActivity??0));const n=q.getState();for(const v of t){if(n.findByAgentId(v.agentId))continue;let x=An;try{const k=await R_(T=>e.agent(v.agentId).timeline.fetch({direction:"after",cursor:T??void 0,limit:200}));x=yu(k)}catch{}const _=x.rows.length===0;n.hydrate({id:`s-${v.agentId.slice(0,12)}`,agentId:v.agentId,title:v.title||(_?"New chat":(y=v.cwd)==null?void 0:y.split("/").pop())||"Restored",status:v.status??"idle",cwd:v.cwd||"~",timeline:x,userMessageCount:x.rows.filter(k=>k.kind==="user").length,model:v.model,modelProvider:v.modelProvider,thinkingLevel:v.thinkingLevel})}const{order:s,sessions:r}=q.getState(),o=s.length>0?r[s[0]??""]:void 0;if(!o)return;const i=_r(),a=Ae(o.cwd||"~",i),l=D.getState().pendingActiveWorkspace??a,u=On(s,r,i);M.getState().setCollapsedWorkspaces(hp(u,l));const f=s.find(v=>{var x;return Ae(((x=r[v])==null?void 0:x.cwd)||"~",i)===l});q.getState().activate(f??o.id),M.getState().setCwd(l);const p=N_(),m=new Set;for(const v of s){const x=r[v];!(x!=null&&x.agentId)||!p.has(`agent:${x.agentId}`)||(Ft(x,i),m.add(v))}const h=D.getState().layouts[a]!==void 0;!m.has(o.id)&&!h&&Ft(o,i)}function N_(){const e=new Set;for(const t of Object.values(D.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("agent:")&&e.add(n);return e}async function D_(e){try{let t=[];try{t=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{t=[]}if(t.length===0)return;const n=D.getState().layouts,s=$_(),r=_r(),o=R.getState().open;for(const i of t){if(i.closed)continue;const a=Ae(i.cwd||"~",r);n[a]!==void 0&&!s.has(`terminal:${i.slot}`)||o({id:te.terminal(i.slot),kind:"terminal",label:i.name,closable:!0,data:{slot:i.slot,cwd:a},workspaceCwd:a})}}finally{D.getState().markHydrationSource("terminals")}}function $_(){const e=new Set;for(const t of Object.values(D.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("terminal:")&&e.add(n);return e}function O_(){const e=$(s=>s.client),t=$(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,D_(e))},[t,e])}function L_(e){return typeof e=="object"&&e!==null&&e.type==="terminals_update"&&Array.isArray(e.terminals)}function B_(e){const{tabs:t,updateData:n}=R.getState();for(const s of t){if(s.kind!=="terminal")continue;const r=s.data;r.slot===null||r.exited||e.has(r.slot)||n(s.id,{exited:!0})}}function F_(){const e=$(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;L_(n)&&B_(new Set(n.terminals.map(s=>s.slot)))})},[e])}function z_(){w.useEffect(()=>{function e(t){const n=M.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu(),document.querySelector('[role="dialog"], [role="alertdialog"]')||Ge.getState().dismissTop();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),Nr(R.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:r,tabs:o}=R.getState();if(!r)return;const i=o.find(a=>a.id===r);(i==null?void 0:i.closable)!==!1&&(t.preventDefault(),Lt(r))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function W_(){return h_(),T_(),M_(),O_(),F_(),z_(),null}function U_(){return c.jsxs(ia,{children:[c.jsx(W_,{}),c.jsx(p_,{})]})}function H_(e){return e.managerActive?e.status==="closed"?"reconnect-now":e.status==="open"?e.probeInFlight?"none":"probe":"none":"none"}const V_=5e3;function K_(){let e=!1;function t(){const{status:s,reconnection:r,daemon:o}=$.getState(),i=H_({status:s,managerActive:r!==null,probeInFlight:e});if(i==="reconnect-now"){r==null||r.reconnectNow();return}if(i==="probe"){if(!o)return;e=!0,o.ping(V_).catch(()=>{$.getState().daemon===o&&o.close(4e3,"stale-connection-probe")}).finally(()=>{e=!1})}}function n(){document.visibilityState==="visible"&&t()}return document.addEventListener("visibilitychange",n),window.addEventListener("online",t),()=>{document.removeEventListener("visibilitychange",n),window.removeEventListener("online",t)}}const uo=document.getElementById("root");if(!uo)throw new Error("Missing #root element");xo.createRoot(uo).render(c.jsx(w.StrictMode,{children:c.jsx(U_,{})}));K_();export{iu as A,ae as B,Og as C,q as D,Oe as E,oy as F,Zu as G,dy as H,ne as I,$t as J,sy as K,hy as L,$m as M,Wr as N,ly as O,Dr as P,M as Q,xu as R,nr as S,ty as T,vt as U,py as V,uy as W,Wu as X,te as Y,Te as Z,qs as _,Le as a,gy as b,_y as c,be as d,ry as e,Dt as f,cy as g,ny as h,L_ as i,R as j,qr as k,D as l,Qe as m,Ae as n,so as o,eo as p,io as q,my as r,Ng as s,js as t,$ as u,iy as v,ay as w,fy as x,Bn as y,Au as z};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-BoLmyLCE.js","assets/vendor-CIkm_8TG.js","assets/vendor-react-DQUAl2K8.js","assets/vendor-CEK31ho9.css"])))=>i.map(i=>d[i]);
2
- import{_ as L}from"./vendor-CIkm_8TG.js";import{r as m,j as i}from"./vendor-react-DQUAl2K8.js";import{b as N,u as _,v as H,w as P,t as $,m as j,S as F,x as I,y as E,z as R}from"./index-CisETjfy.js";import{c as D}from"./vendor-highlight-A9hNQ6ne.js";import{r as y}from"./href-resolution-CIziox_W.js";import{M as V,r as A,a as U,b as O}from"./vendor-markdown-Bu3Y4y-M.js";const v="github-dark";let k=null;const b=new Set(["plaintext"]);function B(){return k||(k=D({themes:[v],langs:["plaintext"]})),k}async function z(r,e){if(b.has(e))return e;try{return await r.loadLanguage(e),b.add(e),e}catch{return"plaintext"}}async function G(r,e){const t=await B(),n=await z(t,e);return t.codeToHtml(r,{lang:n,theme:v})}const M={background:"--pi-color-surface1",primaryColor:"--pi-color-surface2",primaryTextColor:"--pi-color-foreground",primaryBorderColor:"--pi-color-surface3",lineColor:"--pi-color-foregroundMuted",secondaryColor:"--pi-color-surface3",secondaryTextColor:"--pi-color-foreground",secondaryBorderColor:"--pi-color-surface4",tertiaryColor:"--pi-color-surface1",tertiaryTextColor:"--pi-color-foreground",tertiaryBorderColor:"--pi-color-surface3",textColor:"--pi-color-foreground"};function K(r){var t;const e={};for(const[n,a]of Object.entries(M)){const s=(t=r[a])==null?void 0:t.trim();s&&(e[n]=s)}return e}function Y(){const r=getComputedStyle(document.documentElement),e={};for(const t of Object.values(M))e[t]=r.getPropertyValue(t);return K(e)}const Z="_prose_1697a_1",q="_streaming_1697a_26",W="_inlineCode_1697a_87",J="_mermaid_1697a_105",Q="_mermaidError_1697a_114",X="_mermaidErrorMessage_1697a_117",ee="_inlineImage_1697a_148",te="_inlineImageSkeleton_1697a_157",re="_inlineImageFallback_1697a_168",d={prose:Z,streaming:q,inlineCode:W,mermaid:J,mermaidError:Q,mermaidErrorMessage:X,inlineImage:ee,inlineImageSkeleton:te,inlineImageFallback:re},ne={"http:":!0,"https:":!0,"data:":!0,"blob:":!0},ae=/^([a-zA-Z][a-zA-Z0-9+.-]*):/;function se(r,e,t){const n=r.trim();if(!n)return{kind:"unresolvable"};const a=n.split(/[?#]/,1)[0];if(!a)return{kind:"unresolvable"};const s=ae.exec(a);if(s)return`${s[1].toLowerCase()}:`in ne?{kind:"remote"}:{kind:"unresolvable"};const o=y(r,e,t);return o?N(o)!=="image"?{kind:"unresolvable"}:{kind:"local",path:o}:{kind:"unresolvable"}}function ie(r,e,t,n){return r.kind==="remote"?{kind:"remote",src:t||"",alt:n}:r.kind==="unresolvable"?{kind:"unresolvable",fallbackText:n||t||"(image)"}:e.status==="loading"||e.status==="idle"?{kind:"loading"}:e.status==="ready"?{kind:"ready",objectUrl:e.objectUrl,alt:n,path:r.path}:{kind:"error",fallbackText:n||r.path||"(image)"}}function C(r,e,t){return{workspaceCwd:t??(r||"~"),targetPaneId:e??void 0}}function oe(r,e,t){if(!r||!e){t({status:"idle"});return}let n=!1;return t({status:"loading"}),H(r,e).then(a=>{n||t({status:"ready",objectUrl:a.objectUrl})}).catch(a=>{n||t({status:"error",message:a instanceof Error?a.message:String(a)})}),()=>{n=!0,P(r)}}function le(r){const e=_(s=>s.client),t=_(s=>s.daemon),[n,a]=m.useState({status:"idle"});return m.useEffect(()=>oe(r,e&&t?o=>$(t).download(o):null,a),[e,t,r]),n}const ce=m.memo(function({src:e,alt:t,assetBase:n,owningPaneId:a,workspaceCwd:s}){const o=j(),u=m.useMemo(()=>se(e||"",n,o),[e,n,o]),c=le(u.kind==="local"?u.path:null),l=ie(u,c,e,t);if(l.kind==="remote")return i.jsx("img",{src:l.src,alt:l.alt,className:d.inlineImage});if(l.kind==="unresolvable"||l.kind==="error")return i.jsx("code",{className:d.inlineImageFallback,children:l.fallbackText});if(l.kind==="loading")return i.jsx("div",{className:d.inlineImageSkeleton,children:i.jsx(F,{size:"sm"})});const g=C(n,a??null,s??null),p=()=>{E(l.path,g.workspaceCwd,g.targetPaneId)};return i.jsx("img",{src:l.objectUrl,alt:l.alt,className:d.inlineImage,title:l.path,draggable:!0,onDragStart:I(l.path),onClick:p,style:{cursor:"pointer"}})});function ue(r,e,t){const n=r.trim();if(!n)return{kind:"external"};if(n.startsWith("#"))return{kind:"external"};const a=y(r,e,t);return a?{kind:"local",path:a}:{kind:"external"}}function de({href:r,children:e,assetBase:t,owningPaneId:n,workspaceCwd:a}){const s=j(),o=ue(r??"",t,s);if(o.kind==="external")return i.jsx("a",{href:r,children:e});const u=o.path,c=C(t,n,a);return i.jsx("a",{href:r,draggable:!0,onDragStart:I(u),onClick:l=>{l.preventDefault(),E(u,c.workspaceCwd,c.targetPaneId)},children:e})}const S=/^ {0,3}([-*+]|\d{1,9}[.)])(\s|$)/,me=/^(\s*)(`{3,}|~{3,})(.*)$/;function fe(r){return S.test(r[0]??"")}function ge(r,e){for(let t=e;t<r.length;t++)if((r[t]??"").trim()!=="")return t;return-1}function pe(r){if(!r)return{blocks:[],tail:""};const e=r.split(`
2
+ import{_ as L}from"./vendor-CIkm_8TG.js";import{r as m,j as i}from"./vendor-react-DQUAl2K8.js";import{b as N,u as _,v as H,w as P,t as $,m as j,S as F,x as I,y as E,z as R}from"./index-EyLgkl0G.js";import{c as D}from"./vendor-highlight-A9hNQ6ne.js";import{r as y}from"./href-resolution-Dq8Pfl3c.js";import{M as V,r as A,a as U,b as O}from"./vendor-markdown-Bu3Y4y-M.js";const v="github-dark";let k=null;const b=new Set(["plaintext"]);function B(){return k||(k=D({themes:[v],langs:["plaintext"]})),k}async function z(r,e){if(b.has(e))return e;try{return await r.loadLanguage(e),b.add(e),e}catch{return"plaintext"}}async function G(r,e){const t=await B(),n=await z(t,e);return t.codeToHtml(r,{lang:n,theme:v})}const M={background:"--pi-color-surface1",primaryColor:"--pi-color-surface2",primaryTextColor:"--pi-color-foreground",primaryBorderColor:"--pi-color-surface3",lineColor:"--pi-color-foregroundMuted",secondaryColor:"--pi-color-surface3",secondaryTextColor:"--pi-color-foreground",secondaryBorderColor:"--pi-color-surface4",tertiaryColor:"--pi-color-surface1",tertiaryTextColor:"--pi-color-foreground",tertiaryBorderColor:"--pi-color-surface3",textColor:"--pi-color-foreground"};function K(r){var t;const e={};for(const[n,a]of Object.entries(M)){const s=(t=r[a])==null?void 0:t.trim();s&&(e[n]=s)}return e}function Y(){const r=getComputedStyle(document.documentElement),e={};for(const t of Object.values(M))e[t]=r.getPropertyValue(t);return K(e)}const Z="_prose_1697a_1",q="_streaming_1697a_26",W="_inlineCode_1697a_87",J="_mermaid_1697a_105",Q="_mermaidError_1697a_114",X="_mermaidErrorMessage_1697a_117",ee="_inlineImage_1697a_148",te="_inlineImageSkeleton_1697a_157",re="_inlineImageFallback_1697a_168",d={prose:Z,streaming:q,inlineCode:W,mermaid:J,mermaidError:Q,mermaidErrorMessage:X,inlineImage:ee,inlineImageSkeleton:te,inlineImageFallback:re},ne={"http:":!0,"https:":!0,"data:":!0,"blob:":!0},ae=/^([a-zA-Z][a-zA-Z0-9+.-]*):/;function se(r,e,t){const n=r.trim();if(!n)return{kind:"unresolvable"};const a=n.split(/[?#]/,1)[0];if(!a)return{kind:"unresolvable"};const s=ae.exec(a);if(s)return`${s[1].toLowerCase()}:`in ne?{kind:"remote"}:{kind:"unresolvable"};const o=y(r,e,t);return o?N(o)!=="image"?{kind:"unresolvable"}:{kind:"local",path:o}:{kind:"unresolvable"}}function ie(r,e,t,n){return r.kind==="remote"?{kind:"remote",src:t||"",alt:n}:r.kind==="unresolvable"?{kind:"unresolvable",fallbackText:n||t||"(image)"}:e.status==="loading"||e.status==="idle"?{kind:"loading"}:e.status==="ready"?{kind:"ready",objectUrl:e.objectUrl,alt:n,path:r.path}:{kind:"error",fallbackText:n||r.path||"(image)"}}function C(r,e,t){return{workspaceCwd:t??(r||"~"),targetPaneId:e??void 0}}function oe(r,e,t){if(!r||!e){t({status:"idle"});return}let n=!1;return t({status:"loading"}),H(r,e).then(a=>{n||t({status:"ready",objectUrl:a.objectUrl})}).catch(a=>{n||t({status:"error",message:a instanceof Error?a.message:String(a)})}),()=>{n=!0,P(r)}}function le(r){const e=_(s=>s.client),t=_(s=>s.daemon),[n,a]=m.useState({status:"idle"});return m.useEffect(()=>oe(r,e&&t?o=>$(t).download(o):null,a),[e,t,r]),n}const ce=m.memo(function({src:e,alt:t,assetBase:n,owningPaneId:a,workspaceCwd:s}){const o=j(),u=m.useMemo(()=>se(e||"",n,o),[e,n,o]),c=le(u.kind==="local"?u.path:null),l=ie(u,c,e,t);if(l.kind==="remote")return i.jsx("img",{src:l.src,alt:l.alt,className:d.inlineImage});if(l.kind==="unresolvable"||l.kind==="error")return i.jsx("code",{className:d.inlineImageFallback,children:l.fallbackText});if(l.kind==="loading")return i.jsx("div",{className:d.inlineImageSkeleton,children:i.jsx(F,{size:"sm"})});const g=C(n,a??null,s??null),p=()=>{E(l.path,g.workspaceCwd,g.targetPaneId)};return i.jsx("img",{src:l.objectUrl,alt:l.alt,className:d.inlineImage,title:l.path,draggable:!0,onDragStart:I(l.path),onClick:p,style:{cursor:"pointer"}})});function ue(r,e,t){const n=r.trim();if(!n)return{kind:"external"};if(n.startsWith("#"))return{kind:"external"};const a=y(r,e,t);return a?{kind:"local",path:a}:{kind:"external"}}function de({href:r,children:e,assetBase:t,owningPaneId:n,workspaceCwd:a}){const s=j(),o=ue(r??"",t,s);if(o.kind==="external")return i.jsx("a",{href:r,children:e});const u=o.path,c=C(t,n,a);return i.jsx("a",{href:r,draggable:!0,onDragStart:I(u),onClick:l=>{l.preventDefault(),E(u,c.workspaceCwd,c.targetPaneId)},children:e})}const S=/^ {0,3}([-*+]|\d{1,9}[.)])(\s|$)/,me=/^(\s*)(`{3,}|~{3,})(.*)$/;function fe(r){return S.test(r[0]??"")}function ge(r,e){for(let t=e;t<r.length;t++)if((r[t]??"").trim()!=="")return t;return-1}function pe(r){if(!r)return{blocks:[],tail:""};const e=r.split(`
3
3
  `),t=[];let n=[],a=null,s=!1,o=!1;const u=()=>{const c=n.join(`
4
4
  `).trim();c&&t.push(c),n=[]};for(let c=0;c<e.length;c++){const l=e[c]??"",g=l.trim();if(a!==null){if(n.push(l),a.test(g)){const f=s;a=null,s=!1,f&&u()}continue}const p=me.exec(l);if(p&&!o){const f=p[2];a=new RegExp(`^[${f[0]}]{${f.length},}$`),s=p[1]==="",n.push(l);continue}if(g===""&&n.length===0)continue;if((g.split("$$").length-1)%2===1&&(o=!o),g===""&&!o){const f=ge(e,c+1),h=f===-1?null:e[f]??"",w=h!==null&&!/^\s/.test(h),T=h!==null&&S.test(h)&&fe(n);if(w&&!T){u(),c=f-1;continue}}n.push(l)}return{blocks:t,tail:n.join(`
5
5
  `)}}function he({language:r,code:e}){const[t,n]=m.useState(null);return m.useEffect(()=>{let a=!1;return G(e,r).then(s=>{a||n(s)}),()=>{a=!0}},[e,r]),t?i.jsx("div",{className:d.prose,dangerouslySetInnerHTML:{__html:t}}):i.jsx("pre",{children:i.jsx("code",{children:e})})}function ke({code:r}){const[e]=m.useState(()=>`mermaid-${R()}`),[t,n]=m.useState({status:"pending"});return m.useEffect(()=>{let a=!1;return(async()=>{try{const{default:s}=await L(async()=>{const{default:u}=await import("./mermaid.core-BoLmyLCE.js").then(c=>c.b0);return{default:u}},__vite__mapDeps([0,1,2,3]));s.initialize({startOnLoad:!1,theme:"base",themeVariables:Y(),securityLevel:"strict",fontFamily:"var(--pi-font-ui)"});const{svg:o}=await s.render(e,r);a||n({status:"ready",svg:o})}catch(s){a||n({status:"error",message:s instanceof Error?s.message:"Failed to render diagram"})}})(),()=>{a=!0}},[e,r]),t.status==="ready"?i.jsx("div",{className:d.mermaid,dangerouslySetInnerHTML:{__html:t.svg}}):t.status==="error"?i.jsxs("div",{className:d.mermaidError,children:[i.jsxs("p",{className:d.mermaidErrorMessage,children:["Failed to render diagram: ",t.message]}),i.jsx("pre",{children:i.jsx("code",{children:r})})]}):i.jsx("pre",{children:i.jsx("code",{children:r})})}function xe({className:r,children:e,...t}){const n=/language-(\w+)/.exec(r??""),a=!!n,s=String(e).replace(/\n$/,"");if(a&&n){const o=n[1]??"plaintext";return o==="mermaid"?i.jsx(ke,{code:s}):i.jsx(he,{language:o,code:s})}return i.jsx("code",{className:d.inlineCode,...t,children:e})}function _e({className:r,children:e,...t}){return/language-(\w+)/.test(r??"")?i.jsx("pre",{children:i.jsx("code",{children:String(e).replace(/\n$/,"")})}):i.jsx("code",{className:d.inlineCode,...t,children:e})}const be=[U,O],je=[A],Ie=[],x=m.memo(function({text:e,assetBase:t=null,owningPaneId:n=null,workspaceCwd:a=null,lean:s=!1}){return i.jsx(V,{remarkPlugins:be,rehypePlugins:s?Ie:je,components:{code:s?_e:xe,img:o=>i.jsx(ce,{...o,assetBase:t,owningPaneId:n,workspaceCwd:a}),a:o=>i.jsx(de,{...o,assetBase:t,owningPaneId:n,workspaceCwd:a})},children:e})});function Te({text:r,assetBase:e,owningPaneId:t,workspaceCwd:n}){return i.jsx("div",{className:d.prose,children:i.jsx(x,{text:r,assetBase:e,owningPaneId:t,workspaceCwd:n})})}function Le({text:r,assetBase:e,owningPaneId:t,workspaceCwd:n}){const{blocks:a,tail:s}=m.useMemo(()=>pe(r),[r]);return i.jsxs("div",{className:`${d.prose} ${d.streaming}`,children:[a.map((o,u)=>i.jsx(x,{text:o,assetBase:e,owningPaneId:t,workspaceCwd:n},u)),s!==""&&i.jsx(x,{text:s,lean:!0,assetBase:e,owningPaneId:t,workspaceCwd:n})]})}export{Te as M,Le as S,C as r};
@@ -1 +1 @@
1
- import{r as a}from"./vendor-react-DQUAl2K8.js";import{u as f}from"./vendor-query-i7fr__Xm.js";import{u as i,t as m,a as y}from"./index-CisETjfy.js";function p(o,s=!0){var u;const l=i(e=>e.client),n=i(e=>e.daemon),c=f({queryKey:y.fileDownload(o),queryFn:async()=>{if(!l||!n)throw new Error("not connected");const e=await m(n).download(o),t=new Blob([Uint8Array.from(e.bytes)],{type:e.mimeType||"application/octet-stream"});return{objectUrl:URL.createObjectURL(t),mimeType:e.mimeType,fileName:e.fileName}},enabled:!!l&&!!n&&!!o&&s,staleTime:1/0,gcTime:0}),r=a.useRef(null);return a.useEffect(()=>{var t;const e=((t=c.data)==null?void 0:t.objectUrl)??null;e&&r.current&&r.current!==e&&URL.revokeObjectURL(r.current),r.current=e},[(u=c.data)==null?void 0:u.objectUrl]),a.useEffect(()=>()=>{r.current&&URL.revokeObjectURL(r.current)},[]),c}export{p as u};
1
+ import{r as a}from"./vendor-react-DQUAl2K8.js";import{u as f}from"./vendor-query-i7fr__Xm.js";import{u as i,t as m,a as y}from"./index-EyLgkl0G.js";function p(o,s=!0){var u;const l=i(e=>e.client),n=i(e=>e.daemon),c=f({queryKey:y.fileDownload(o),queryFn:async()=>{if(!l||!n)throw new Error("not connected");const e=await m(n).download(o),t=new Blob([Uint8Array.from(e.bytes)],{type:e.mimeType||"application/octet-stream"});return{objectUrl:URL.createObjectURL(t),mimeType:e.mimeType,fileName:e.fileName}},enabled:!!l&&!!n&&!!o&&s,staleTime:1/0,gcTime:0}),r=a.useRef(null);return a.useEffect(()=>{var t;const e=((t=c.data)==null?void 0:t.objectUrl)??null;e&&r.current&&r.current!==e&&URL.revokeObjectURL(r.current),r.current=e},[(u=c.data)==null?void 0:u.objectUrl]),a.useEffect(()=>()=>{r.current&&URL.revokeObjectURL(r.current)},[]),c}export{p as u};
@@ -1 +1 @@
1
- import{r as a}from"./vendor-react-DQUAl2K8.js";import{u as w}from"./index-CisETjfy.js";function b(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}const l=new WeakMap;function p(e,t,i){let s=l.get(e);s||(s=new Map,l.set(e,s));let o=s.get(t);if(!o){const r={count:0,resolvedPath:null,listeners:new Set,dispose:()=>{}},f=e.connection.onSessionMessage(c=>{const n=c;if(!b(n)||n.path!==t&&n.path!==r.resolvedPath)return;const d=Date.now();for(const h of r.listeners)h(d)});e.connection.request("file_watch_subscribe",{path:t}).then(c=>{const n=c;if((n==null?void 0:n.ok)===!1){console.warn(`watchFile: ${n.error??"subscribe failed"} for "${t}"`);return}typeof(n==null?void 0:n.path)=="string"&&(r.resolvedPath=n.path)}).catch(()=>{}),r.dispose=()=>{f(),e.connection.request("file_watch_unsubscribe",{path:t}).catch(()=>{})},o=r,s.set(t,o)}o.count++,o.listeners.add(i);let u=!1;return()=>{if(u)return;u=!0;const r=s.get(t);r&&(r.listeners.delete(i),r.count--,r.count===0&&(s.delete(t),r.dispose()))}}function v(e){const t=w(o=>o.client),[i,s]=a.useState(null);return a.useEffect(()=>{if(!(!t||!e))return p(t,e,s)},[t,e]),{changedAt:i}}export{v as u};
1
+ import{r as a}from"./vendor-react-DQUAl2K8.js";import{u as w}from"./index-EyLgkl0G.js";function b(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}const l=new WeakMap;function p(e,t,i){let s=l.get(e);s||(s=new Map,l.set(e,s));let o=s.get(t);if(!o){const r={count:0,resolvedPath:null,listeners:new Set,dispose:()=>{}},f=e.connection.onSessionMessage(c=>{const n=c;if(!b(n)||n.path!==t&&n.path!==r.resolvedPath)return;const d=Date.now();for(const h of r.listeners)h(d)});e.connection.request("file_watch_subscribe",{path:t}).then(c=>{const n=c;if((n==null?void 0:n.ok)===!1){console.warn(`watchFile: ${n.error??"subscribe failed"} for "${t}"`);return}typeof(n==null?void 0:n.path)=="string"&&(r.resolvedPath=n.path)}).catch(()=>{}),r.dispose=()=>{f(),e.connection.request("file_watch_unsubscribe",{path:t}).catch(()=>{})},o=r,s.set(t,o)}o.count++,o.listeners.add(i);let u=!1;return()=>{if(u)return;u=!0;const r=s.get(t);r&&(r.listeners.delete(i),r.count--,r.count===0&&(s.delete(t),r.dispose()))}}function v(e){const t=w(o=>o.client),[i,s]=a.useState(null);return a.useEffect(()=>{if(!(!t||!e))return p(t,e,s)},[t,e]),{changedAt:i}}export{v as u};
@@ -1 +1 @@
1
- import{u as o}from"./vendor-query-i7fr__Xm.js";import{u as n,a as u}from"./index-CisETjfy.js";function c(r=!0){const e=n(t=>t.client);return o({queryKey:u.providerAuthList(),queryFn:()=>{if(!e)throw new Error("not connected");return e.listProviderAuth()},enabled:!!e&&r})}export{c as u};
1
+ import{u as o}from"./vendor-query-i7fr__Xm.js";import{u as n,a as u}from"./index-EyLgkl0G.js";function c(r=!0){const e=n(t=>t.client);return o({queryKey:u.providerAuthList(),queryFn:()=>{if(!e)throw new Error("not connected");return e.listProviderAuth()},enabled:!!e&&r})}export{c as u};