@av-pi-studio/web-client 0.0.81 → 0.0.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/web/assets/{BinaryFallbackViewer-DcNI7WIf.js → BinaryFallbackViewer-DekY7VRF.js} +1 -1
- package/dist/web/assets/ChatPanel-CtECldc3.js +4 -0
- package/dist/web/assets/{CodeView-DRq7A8Dl.js → CodeView-C4sk-KiE.js} +1 -1
- package/dist/web/assets/{FilePanel-DwaWCdrE.js → FilePanel-CzXhq3Hu.js} +1 -1
- package/dist/web/assets/{ImageViewer-DLFbLZt7.js → ImageViewer-QvSUEaaQ.js} +1 -1
- package/dist/web/assets/{MarkdownFileViewer-0S5PGRSU.js → MarkdownFileViewer-CPHS_Npv.js} +1 -1
- package/dist/web/assets/{MoleculeViewerPanel-B0MBoSrh.js → MoleculeViewerPanel-BuiEdCWP.js} +1 -1
- package/dist/web/assets/{TerminalPanel-C3MSsQ1V.js → TerminalPanel-CvJZUneu.js} +1 -1
- package/dist/web/assets/{TextViewer-D2AofRac.js → TextViewer-WeseUSSg.js} +1 -1
- package/dist/web/assets/{VideoViewer-CIaaYIcv.js → VideoViewer-CaCi8C8s.js} +1 -1
- package/dist/web/assets/index-CJKgXjmo.js +19 -0
- package/dist/web/assets/index-DNsKUhP1.css +1 -0
- package/dist/web/assets/markdown-CZPTvNlV.js +5 -0
- package/dist/web/assets/{use-file-download-Bc9mhvXB.js → use-file-download-4ySDCFi1.js} +1 -1
- package/dist/web/assets/{use-file-watch-COYEdraP.js → use-file-watch-CDe1Klx7.js} +1 -1
- package/dist/web/assets/{vendor-icons-DrilcayZ.js → vendor-icons-CQPWxe0u.js} +53 -58
- package/dist/web/index.html +3 -3
- package/package.json +3 -3
- package/dist/web/assets/ChatPanel-BULGQHP2.js +0 -4
- package/dist/web/assets/index-CLKr9fTl.css +0 -1
- package/dist/web/assets/index-DN3UKN9P.js +0 -17
- package/dist/web/assets/markdown-5Ps6k_y4.js +0 -5
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatPanel-CtECldc3.js","assets/vendor-react-DQUAl2K8.js","assets/vendor-query-i7fr__Xm.js","assets/vendor-icons-CQPWxe0u.js","assets/markdown-CZPTvNlV.js","assets/vendor-DVp0ZLQo.js","assets/vendor-CEK31ho9.css","assets/vendor-highlight-BjiGXuEM.js","assets/vendor-markdown-Bc_dOmsB.js","assets/markdown-DEMXo8TU.css","assets/DiffView-CRrnffpG.js","assets/DiffView-CUctPSBA.css","assets/vendor-overlays-BfyojyuH.js","assets/vendor-dnd-CayJj8TC.js","assets/ChatPanel-CM1-XG5f.css","assets/FilePanel-CzXhq3Hu.js","assets/use-file-watch-CDe1Klx7.js","assets/FilePanel-bWuYWz8t.css","assets/TerminalPanel-CvJZUneu.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-DoDBqfAg.css","assets/MoleculeViewerPanel-BuiEdCWP.js","assets/vendor-molviewer-DSzG6_a2.js","assets/vendor-molviewer-Bychyqid.css","assets/use-file-download-4ySDCFi1.js","assets/MoleculeViewerPanel-B_0tE8BE.css","assets/TextViewer-WeseUSSg.js","assets/CodeView-C4sk-KiE.js","assets/CodeView-Bbd7h9aM.css","assets/TextViewer-C7Vnqw_v.css","assets/MarkdownFileViewer-CPHS_Npv.js","assets/MarkdownFileViewer-BOOIyc8-.css","assets/ImageViewer-QvSUEaaQ.js","assets/ImageViewer-Bh1rkSDM.css","assets/VideoViewer-CaCi8C8s.js","assets/VideoViewer-CCmuaDLl.css","assets/BinaryFallbackViewer-DekY7VRF.js","assets/BinaryFallbackViewer-ClYyn4IS.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var Dr=Object.defineProperty;var Mr=(e,t,n)=>t in e?Dr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var $=(e,t,n)=>Mr(e,typeof t!="symbol"?t+"":t,n);import{r as b,j as c,c as Pr}from"./vendor-react-DQUAl2K8.js";import{Q as Ar,c as $r,u as zr,d as Br,a as He,b as qr}from"./vendor-query-i7fr__Xm.js";import{ae as d,af as g,M as L,ag as ms,ah as W,ai as Ne,aj as we,ak as F,al as x,am as ee,an as K,ao as Et,ap as Le,aq as ke,_ as ve}from"./vendor-DVp0ZLQo.js";import{l as Or,m as Fr,n as Lr,o as Wr,p as Hr,q as on,P as gs,j as Ur,r as Vr,s as an,C as cn,g as vt,t as ln,u as _s,v as ys,w as jt,M as ws,X as Kt,x as Kr,R as Gr,y as Xr,z as De,a as Gt,D as xt,H as ft,I as Yr,J as Jr,K as Zr,O as Qr,Q as eo,V as to,W as no,Y as so,Z as ro,f as oo,k as ao}from"./vendor-icons-CQPWxe0u.js";import{P as io,C as co,I as lo,S as uo,R as Ct,T as Rt,D as fo,a as po,b as ho,c as mo,d as jn,e as Xt}from"./vendor-overlays-BfyojyuH.js";import{u as go,a as _o,p as yo,P as wo,b as bs,S as bo,h as vo,c as xo,C as So,D as ko,d as Io}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 a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();const To=new Ar;function vs(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 Eo(e){return Math.max(0,Math.min(255,Math.round(e)))}function jo({r:e,g:t,b:n}){const s=r=>Eo(r).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function Co(e){const{r:t,g:n,b:s}=vs(e),r=o=>{const a=o/255;return a<=.03928?a/12.92:((a+.055)/1.055)**2.4};return .2126*r(t)+.7152*r(n)+.0722*r(s)}function dn(e,t="#18181b",n="#ffffff"){return Co(e)>.45?t:n}function Ro(e,t){const{r:n,g:s,b:r}=vs(e),o=Math.max(0,Math.min(1,t));return jo({r:n+(255-n)*o,g:s+(255-s)*o,b:r+(255-r)*o})}function pt(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const me=(e,t,n,s,r,o,a,i,l,u,f)=>({50:e,100:t,200:n,300:s,400:r,500:o,600:a,700:i,800:l,900:u,950:f}),S={zinc:me("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:me("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:me("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:me("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:me("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:me("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:me("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:me("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:me("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:me("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:me("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"},No={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea",statusInfo:"#3b82f6"},Do={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed",statusInfo:"#2563eb"};function Mo(){return{keyword:S.purple[300],string:S.green[300],number:S.orange[300],boolean:S.orange[300],comment:S.zinc[500],function:S.blue[300],variable:S.zinc[200],type:S.teal[300],class:S.amber[300],constant:S.orange[300],operator:S.zinc[400],punctuation:S.zinc[400],tag:S.red[300],attribute:S.amber[300],property:S.blue[200],regexp:S.teal[300],escape:S.orange[200],heading:S.blue[300],link:S.blue[400],deleted:S.red[400],inserted:S.green[400]}}function Po(){return{keyword:S.purple[700],string:S.green[700],number:S.orange[700],boolean:S.orange[700],comment:S.zinc[500],function:S.blue[700],variable:S.zinc[800],type:S.teal[700],class:S.amber[700],constant:S.orange[700],operator:S.zinc[600],punctuation:S.zinc[600],tag:S.red[700],attribute:S.amber[700],property:S.blue[700],regexp:S.teal[700],escape:S.orange[700],heading:S.blue[700],link:S.blue[600],deleted:S.red[700],inserted:S.green[700]}}function xs(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:S.zinc[900],red:S.red[500],green:S.green[500],yellow:S.amber[500],blue:S.blue[500],magenta:S.purple[500],cyan:S.teal[500],white:S.zinc[300],brightBlack:S.zinc[600],brightRed:S.red[400],brightGreen:S.green[400],brightYellow:S.amber[400],brightBlue:S.blue[400],brightMagenta:S.purple[400],brightCyan:S.teal[400],brightWhite:S.zinc[50]}}function Ue(e){const t=S.zinc[50],n=dn(e.accent);return{surface0:e.surface0,surface1:e.surface1,surface2:e.surface2,surface3:e.surface3,surface4:e.surface4,surfaceDiffEmpty:e.surfaceDiffEmpty,surfaceSidebar:e.surfaceSidebar,surfaceSidebarHover:e.surfaceSidebarHover,surfaceWorkspace:e.surface1,foreground:t,foregroundMuted:e.mutedForeground,accent:e.accent,accentBright:e.accentBright,accentForeground:n,destructive:e.destructive,destructiveForeground:S.white,success:e.accent,successForeground:S.white,border:e.border,borderAccent:e.borderAccent,...No,diffAddition:S.green[400],diffDeletion:S.red[500],scrollbarHandle:e.scrollbarHandle,background:e.surface0,popover:e.surface2,popoverForeground:t,primary:e.accent,secondary:e.surface2,muted:e.surface2,mutedForeground:e.mutedForeground,input:e.surface2,ring:e.accent,palette:S,syntax:Mo(),terminal:xs(e.surface0,t,e.accent)}}function Ao(){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:dn(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...Do,diffAddition:"#15803d",diffDeletion:"#b91c1c",scrollbarHandle:"#3f3f46",background:"#ffffff",popover:"#ffffff",popoverForeground:e,primary:t,secondary:"#f4f4f5",muted:"#f4f4f5",mutedForeground:"#71717a",input:"#f4f4f5",ring:t,palette:S,syntax:Po(),terminal:{...xs("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const $o={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},Ss=["light","dark","zinc","midnight","claude","ghostty"];function zo(e){if(e==="light")return Ao();switch(e){case"dark":return Ue({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 Ue({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 Ue({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 Ue({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 Ue({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 ks={};for(const e of Ss){const t=e==="light"?"light":"dark";ks[e]={name:e,colorScheme:t,colors:zo(e),swatch:$o[e]}}const Bo=ks,qo={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},St={"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},Oo={normal:"400",medium:"500",semibold:"600",bold:"700"},Fo={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},Lo={0:0,1:1,2:2},Wo={0:0,50:.5,100:1},Ho={xs:12,sm:14,md:16,lg:20},Uo={diff:22},Is='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',Ts='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function Vo(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 Es(e){const t=Bo[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:qo,fontSize:{...St},fontFamily:{ui:Is,mono:Ts},lineHeight:{...Uo},iconSize:Ho,fontWeight:Oo,borderRadius:Fo,borderWidth:Lo,opacity:Wo,shadow:Vo(t.colorScheme),swatch:t.swatch}}const Ko=St.base,Go=10,Xo=24;function Yo(e,t){const n=t.themeName??e.name,s=Es(n),r=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:Is,o=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:Ts,a={...s.fontSize};if(t.fontSize!=null){const l=Math.max(Go,Math.min(Xo,t.fontSize))/Ko;for(const u of Object.keys(St))a[u]=Math.round(St[u]*l)}return{...s,fontSize:a,fontFamily:{ui:r,mono:o}}}function Jo(e){return Es(e)}const Zo="dark",Qo=16;function ea(e){const t=e/Qo;return`${Number(t.toFixed(4))}rem`}function ta(e){const t={};na(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}`]=ea(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 na(e,t){const{palette:n,syntax:s,terminal:r,...o}=e;for(const[a,i]of Object.entries(o))typeof i=="string"&&(t[`--pi-color-${a}`]=i);s&&sa(s,t),r&&(t["--pi-terminal-bg"]=r.background,t["--pi-terminal-fg"]=r.foreground)}function sa(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${ra(n)}`]=s)}function ra(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function oa(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 aa(e){const t=ta(e);oa(t)}const Ve=d().min(1,"Asset path must not be empty"),ia=g({accent:d().refine(pt,{message:"accent must be a valid #rrggbb hex color"}),accentBright:d().refine(pt,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:d().refine(pt,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:d().refine(pt,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),ca=g({logoLight:Ve,logoDark:Ve,logoMark:Ve.optional(),icon:Ve,splash:Ve.optional()}),la=g({docs:d().url().optional(),support:d().url().optional(),issues:d().url().optional(),website:d().url().optional()}).optional(),da=g({copyright:d().optional(),companyName:d().optional()}).optional();g({productName:d().min(1,"productName is required"),shortName:d().optional(),tagline:d().optional(),colors:ia,assets:ca,links:la,legal:da});function ua(e){const t=e.accent,n=e.accentBright??Ro(t,.35),s=e.accentForeground??dn(t),r=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:r}}function fa(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 Cn="pi-studio-appearance";function pa(e,t){let n=i(e),s=null;function r(f){return f==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":f}function o(f,m){const h=r(f),p=Jo(h);let y=Yo(p,{...m,themeName:h});if(t!=null&&t.colors){const _=ua(t.colors);y=fa(y,_)}return y}function a(){const f=JSON.stringify({mode:n.mode,settings:n.settings});e.set(Cn,f)}function i(f){const m=f.get(Cn);let h=Zo,p={};if(m)try{const _=JSON.parse(m);_.mode&&(Ss.includes(_.mode)||_.mode==="system")&&(h=_.mode),_.settings&&typeof _.settings=="object"&&(p=_.settings)}catch{}const y=o(h,p);return{mode:h,settings:p,resolvedTheme:y}}function l(){n={...n,resolvedTheme:o(n.mode,n.settings)},a()}const u={getState(){return n},setMode(f){n={...n,mode:f},l(),u.apply()},updateSettings(f){n={...n,settings:{...n.settings,...f}},l(),u.apply()},apply(){aa(n.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const f=window.matchMedia("(prefers-color-scheme: dark)"),m=()=>{n.mode==="system"&&(l(),u.apply())};return f.addEventListener("change",m),s=()=>f.removeEventListener("change",m),s}};return u}function ha({store:e,brandConfig:t,children:n}){const s=b.useRef(null);return s.current||(s.current=pa(e,t),s.current.apply()),b.useEffect(()=>s.current.listen(),[]),c.jsx(c.Fragment,{children:n})}const un={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 ma({children:e}){return c.jsx(ha,{store:un,children:c.jsx($r,{client:To,children:e})})}const ga="_btn_1oc6k_4",_a="_secondary_1oc6k_47",ya="_outline_1oc6k_56",wa="_ghost_1oc6k_65",ba="_destructive_1oc6k_75",va="_iconOnly_1oc6k_85",xa="_loadingSpinner_1oc6k_92",Sa="_piSpin_1oc6k_1",ht={btn:ga,default:"_default_1oc6k_38",secondary:_a,outline:ya,ghost:wa,destructive:ba,iconOnly:va,loadingSpinner:xa,piSpin:Sa},Rn={xs:28,sm:32,md:36,lg:40},ka={xs:12,sm:14,md:16,lg:20},Nn={xs:8,sm:10,md:12,lg:16},Ia={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 Ta(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}function ue({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:r,trailing:o,iconOnly:a=!1,children:i,style:l,className:u,...f}){const{opacity:m}=Ta({disabled:s??!1,loading:n}),h=s||n,p=ka[t];return c.jsxs("button",{className:L(ht.btn,ht[e],a&&ht.iconOnly,u),disabled:h,"aria-busy":n||void 0,style:{minHeight:Rn[t],paddingLeft:a?void 0:Nn[t],paddingRight:a?void 0:Nn[t],fontSize:Ia[t],opacity:m,...a?{width:Rn[t]}:{},...l},...f,children:[n?c.jsx(Or,{className:ht.loadingSpinner,size:p,"aria-hidden":!0}):r?c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r}):null,i,o&&!n&&c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o})]})}const Ea={xs:12,sm:14,md:16,lg:20};function re({icon:e,size:t="md",color:n="currentColor",className:s,...r}){const o=typeof t=="number"?t:Ea[t];return c.jsx(e,{size:o,color:n,className:s,"aria-hidden":r["aria-hidden"],"aria-label":r["aria-label"]})}const ja="_spinner_1ibj3_3",Ca={spinner:ja},Ra={xs:12,sm:16,md:20,lg:24},Na={xs:1,sm:2,md:2,lg:3};function js({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const r=typeof e=="number"?e:Ra[e],o=typeof e=="number"?2:Na[e];return c.jsx("span",{className:`${Ca.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:r,height:r,borderWidth:o,color:t}})}const Da="_dot_hctvn_3",Ma="_spinner_hctvn_16",Dn={dot:Da,spinner:Ma};function Pa(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:r}=e;if(!t)return null;if(n)switch(s){case"permission":return"statusWarning";case"error":return"statusDanger";case"finished":default:return"statusSuccess"}switch(t){case"running":case"queued":return"accent";case"waiting":return"statusWarning";case"finished":return"statusSuccess";case"error":return"statusDanger";case"idle":case"archived":return r?"foregroundMuted":null}}const Mn=8,Aa={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 Nt({className:e,...t}){const n=Pa(t);if(!n)return null;const s=t.status==="running"&&!t.requiresAttention,r=s?"var(--pi-color-accentBright, #a2b4d7)":Aa[n]??"currentColor";return c.jsx("span",{className:`${s?Dn.spinner:Dn.dot}${e?` ${e}`:""}`,style:s?{borderTopColor:r,borderRightColor:r}:{width:`var(--status-dot-size, ${Mn}px)`,height:`var(--status-dot-size, ${Mn}px)`,backgroundColor:r},role:"presentation"})}const $a="_input_756jo_3",za="_textarea_756jo_32",Yt={input:$a,textarea:za},kt=b.forwardRef(function({className:t,...n},s){return c.jsx("input",{ref:s,className:L(Yt.input,t),...n})}),km=b.forwardRef(function({className:t,...n},s){return c.jsx("textarea",{ref:s,className:L(Yt.input,Yt.textarea,t),...n})}),Cs=d().datetime({offset:!0});d().uuid();d().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const st=ms([W(),Cs]),Ba=Ne(["mobile","browser","cli","mcp"]),qa=g({type:x("hello"),clientId:d(),clientType:Ba,protocolVersion:W(),appVersion:d().optional(),capabilities:we(d(),F()).optional()}),Oa=g({status:x("server_info"),serverId:d(),hostname:d().optional(),version:d().optional(),capabilities:we(d(),ee()),features:we(d(),ee())}),Fa=g({type:x("status"),payload:Oa}),La=g({type:x("ping"),requestId:d(),clientSentAt:st.optional()}),Wa=g({type:x("pong"),requestId:d(),clientSentAt:st.optional(),serverReceivedAt:st,serverSentAt:st}),Rs=Ne(["initializing","idle","running","error","closed"]),Dt=g({mimeType:d().optional(),data:d().optional()}).passthrough(),Ha=g({prs:K(ee()).optional(),issues:K(ee()).optional()}).passthrough(),Ua=g({provider:d(),cwd:d(),modeId:d().optional(),model:d().optional(),modelProvider:d().optional(),thinkingOptionId:d().optional(),featureValues:we(d(),ee()).optional(),title:d().nullable().optional(),approvalPolicy:d().optional(),sandboxMode:d().optional(),networkAccess:F().optional(),webSearch:F().optional(),extra:g({pi:ee().optional()}).passthrough().optional(),systemPrompt:d().optional(),mcpServers:we(d(),ee()).optional()}),Va=g({type:x("create_agent_request"),requestId:d(),config:Ua,env:we(d(),d()).optional(),workspaceId:d().optional(),worktreeName:d().optional(),initialPrompt:d().optional(),clientMessageId:d().optional(),outputSchema:we(d(),ee()).optional(),images:K(Dt).optional(),attachments:Ha.optional(),git:ee().optional(),worktree:ee().optional(),autoArchive:F().optional(),labels:we(d(),d()).default({})}),Ka=g({type:x("create_agent_response"),requestId:d(),payload:g({agentId:d()}).passthrough()}),Ga=g({type:x("agent_update"),agentId:d(),status:Rs.optional(),title:d().nullable().optional(),labels:we(d(),d()).optional()}),Xa=g({type:x("agent_status"),agentId:d(),status:Rs}),Ya=g({type:x("agent_list"),agents:K(g({id:d()}).passthrough())}),Ja=g({type:x("agent_deleted"),agentId:d()}),Za=g({type:x("agent_archived"),agentId:d(),archivedAt:Cs.optional()}),Ns=Et("kind",[g({kind:x("shell"),command:d().optional(),output:d().optional()}),g({kind:x("read"),path:d().optional(),output:d().optional()}),g({kind:x("edit"),path:d().optional(),diff:d().optional(),output:d().optional()}),g({kind:x("write"),path:d().optional(),output:d().optional()}),g({kind:x("search"),query:d().optional(),output:d().optional()}),g({kind:x("fetch"),url:d().optional(),output:d().optional()}),g({kind:x("task"),description:d().optional(),output:d().optional()})]),Qa=Et("kind",[g({kind:x("user_message"),messageId:d().optional(),text:d().optional(),images:K(Dt).optional()}),g({kind:x("assistant_message"),messageId:d().optional(),text:d().optional(),final:F().optional()}),g({kind:x("reasoning"),text:d().optional(),final:F().optional()}),g({kind:x("tool_call"),callId:d().optional(),tool:Ns,status:d().optional()}),g({kind:x("turn_started"),turnId:d().optional()}),g({kind:x("turn_completed"),turnId:d().optional()}),g({kind:x("turn_failed"),turnId:d().optional(),error:d().optional()}),g({kind:x("turn_canceled"),turnId:d().optional()}),g({kind:x("error"),message:d().optional()}),g({kind:x("queue_update"),steering:K(d()).optional(),followUp:K(d()).optional()})]),ei=g({type:x("agent_stream"),agentId:d(),seq:W().optional(),timestamp:st.optional(),event:Qa}),ti=Ne(["before","after"]),ni=g({start:W(),end:W()}),si=g({type:x("fetch_agent_timeline_request"),requestId:d(),agentId:d(),cursor:d().nullable().optional(),direction:ti,limit:W().optional()}),ri=g({type:x("fetch_agent_timeline_response"),requestId:d(),agentId:d().optional(),items:K(ee()),seqStart:W(),seqEnd:W(),sourceSeqRanges:K(ni),collapsed:F(),hasNewer:F(),startCursor:d().nullable().optional(),endCursor:d().nullable().optional()}),oi=g({type:x("agent_permission_request"),requestId:d(),agentId:d(),toolName:d().optional(),tool:Ns.optional(),action:ee().optional(),responses:K(d()).optional()}),ai=g({type:x("agent_permission_resolved"),requestId:d(),agentId:d(),decision:d().optional()}),ii=g({type:x("agent.permission.respond.request"),requestId:d(),permissionRequestId:d(),response:ee()}),ci=g({type:x("agent.permission.respond.response"),requestId:d(),payload:g({resolved:F()}).passthrough()}),li=g({type:x("respond_to_permission"),requestId:d(),permissionRequestId:d(),response:ee()}),Ds=Ne(["conversation","files","both"]),di=g({type:x("agent.rewind.request"),requestId:d(),agentId:d(),messageId:d(),mode:Ds}).passthrough(),ui=g({type:x("agent.rewind.response"),requestId:d(),payload:g({agentId:d(),messageId:d(),mode:Ds,truncatedAt:d().optional()}).passthrough()}).passthrough(),fi=g({input:W().optional(),output:W().optional(),cacheRead:W().optional(),cacheWrite:W().optional(),total:W().optional()}).passthrough(),pi=g({tokens:W().nullable().optional(),contextWindow:W().optional(),percent:W().nullable().optional()}).passthrough(),hi=g({type:x("agent_session_stats_request"),requestId:d(),agentId:d()}).passthrough(),mi=g({type:x("agent_session_stats_response"),requestId:d(),payload:g({sessionId:d().optional(),sessionFile:d().optional(),userMessages:W().optional(),assistantMessages:W().optional(),toolCalls:W().optional(),toolResults:W().optional(),totalMessages:W().optional(),tokens:fi.optional(),cost:W().optional(),contextUsage:pi.optional(),model:d().optional()}).passthrough()}).passthrough(),gi=g({type:x("agent_compact_request"),requestId:d(),agentId:d(),customInstructions:d().optional()}).passthrough(),_i=g({type:x("agent_compact_response"),requestId:d(),payload:g({summary:d().optional(),firstKeptEntryId:d().optional(),tokensBefore:W().optional(),details:ee().optional()}).passthrough()}).passthrough(),yi=g({type:x("agent_new_session_request"),requestId:d(),agentId:d()}).passthrough(),wi=g({type:x("agent_new_session_response"),requestId:d(),payload:g({cancelled:F()}).passthrough()}).passthrough(),bi=g({type:x("agent_switch_session_request"),requestId:d(),agentId:d(),sessionPath:d()}).passthrough(),vi=g({type:x("agent_switch_session_response"),requestId:d(),payload:g({cancelled:F()}).passthrough()}).passthrough(),xi=g({type:x("agent_fork_request"),requestId:d(),agentId:d(),entryId:d()}).passthrough(),Si=g({type:x("agent_fork_response"),requestId:d(),payload:g({text:d(),cancelled:F()}).passthrough()}).passthrough(),ki=g({type:x("agent_fork_messages_request"),requestId:d(),agentId:d()}).passthrough(),Ii=g({type:x("agent_fork_messages_response"),requestId:d(),payload:g({messages:K(g({entryId:d(),text:d()}).passthrough())}).passthrough()}).passthrough(),Ti=g({type:x("agent_clone_request"),requestId:d(),agentId:d()}).passthrough(),Ei=g({type:x("agent_clone_response"),requestId:d(),payload:g({cancelled:F()}).passthrough()}).passthrough(),ji=g({type:x("agent_set_session_name_request"),requestId:d(),agentId:d(),name:d()}).passthrough(),Ci=g({type:x("agent_set_session_name_response"),requestId:d(),payload:g({}).passthrough().optional()}).passthrough(),Ri=g({type:x("agent_export_html_request"),requestId:d(),agentId:d(),outputPath:d().optional()}).passthrough(),Ni=g({type:x("agent_export_html_response"),requestId:d(),payload:g({path:d()}).passthrough()}).passthrough(),Di=g({type:x("agent_set_model_request"),requestId:d(),agentId:d(),provider:d(),modelId:d()}).passthrough(),Mi=g({type:x("agent_set_model_response"),requestId:d(),payload:g({}).passthrough()}).passthrough(),Pi=g({type:x("agent_cycle_model_request"),requestId:d(),agentId:d()}).passthrough(),Ai=g({type:x("agent_cycle_model_response"),requestId:d(),payload:g({model:ee().nullable().optional(),thinkingLevel:d().optional(),isScoped:F().optional()}).passthrough()}).passthrough(),$i=g({type:x("agent_last_assistant_text_request"),requestId:d(),agentId:d()}).passthrough(),zi=g({type:x("agent_last_assistant_text_response"),requestId:d(),payload:g({text:d().nullable()}).passthrough()}).passthrough(),Bi=g({type:x("steer_agent_request"),requestId:d(),agentId:d(),message:d(),images:K(Dt).optional(),clientMessageId:d().optional()}).passthrough(),qi=g({type:x("steer_agent_response"),requestId:d(),agentId:d(),ok:F()}).passthrough(),Oi=g({type:x("follow_up_agent_request"),requestId:d(),agentId:d(),message:d(),images:K(Dt).optional(),clientMessageId:d().optional()}).passthrough(),Fi=g({type:x("follow_up_agent_response"),requestId:d(),agentId:d(),ok:F()}).passthrough(),Li=g({name:d(),id:d().optional(),description:d().optional(),source:Ne(["extension","prompt","skill"]).optional(),scope:Ne(["user","project","temporary"]).optional(),path:d().optional()}).passthrough(),Wi=g({type:x("agent_list_commands_request"),requestId:d(),agentId:d()}).passthrough(),Hi=g({type:x("agent_list_commands_response"),requestId:d(),payload:g({commands:K(Li)}).passthrough()}).passthrough(),Ui=g({source:d(),identity:d(),addedIn:d(),deprecated:F().optional(),status:d(),lastError:g({at:d(),attempts:W(),reason:d(),message:d()}).passthrough().optional()}).passthrough(),Ms=g({id:d(),title:d(),description:d(),packages:K(Ui)}).passthrough(),Vi=g({identity:d(),source:d(),pack:d(),reason:d(),message:d()}).passthrough(),Ki=g({at:d(),outcome:d(),installed:K(d()),failures:K(Vi)}).passthrough(),Ps=g({at:d(),outcome:d()}).passthrough(),Gi=g({type:x("extension_packs_list_request"),requestId:d()}).passthrough(),Xi=g({type:x("extension_packs_list_response"),requestId:d(),autoSync:F(),selected:K(d()),packs:K(Ms),lastSync:Ps.optional()}).passthrough(),Yi=g({type:x("extension_packs_set_request"),requestId:d(),packs:K(d()).optional()}).passthrough(),Ji=g({type:x("extension_packs_set_response"),requestId:d(),autoSync:F(),selected:K(d()),packs:K(Ms),lastSync:Ps.optional(),ok:F(),error:d().optional(),report:Ki.optional()}).passthrough(),Zi=g({type:x("rpc_error"),requestId:d(),code:d().optional(),message:d().optional(),error:d().optional()}),Qi=Et("type",[Va,Ka,Ga,Xa,Ya,Ja,Za,ei,si,ri,oi,ai,ii,ci,li,di,ui,hi,mi,gi,_i,yi,wi,bi,vi,xi,Si,ki,Ii,Ti,Ei,ji,Ci,Ri,Ni,Di,Mi,Pi,Ai,$i,zi,Bi,qi,Oi,Fi,Wi,Hi,Gi,Xi,Yi,Ji,Zi]),ec=g({type:d()}).passthrough(),tc=g({type:x("session"),message:ms([Qi,ec])});Et("type",[qa,Fa,La,Wa,tc]);const zt={inline_image_markdown:"inline_image_markdown",file_link_markdown:"file_link_markdown",mermaid_diagram_markdown:"mermaid_diagram_markdown"},ze={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},nc=Object.fromEntries(Object.entries(ze).map(([e,t])=>[t,e])),As=g({rows:W().int().nonnegative(),cols:W().int().nonnegative()});class Ze extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const sc=new TextEncoder,rc=new TextDecoder;function oc(e){if(!Number.isInteger(e)||e<0||e>255)throw new Ze(`slot must be an integer 0–255, got ${e}`)}function Ke(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function Im(e){switch(oc(e.slot),e.opcode){case"Output":return Ke(ze.Output,e.slot,e.data);case"Input":return Ke(ze.Input,e.slot,e.data);case"Snapshot":return Ke(ze.Snapshot,e.slot,e.data);case"Restore":return Ke(ze.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(As.parse({rows:e.rows,cols:e.cols}));return Ke(ze.Resize,e.slot,sc.encode(t))}}}function ac(e){if(e.length<2)throw new Ze(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=nc[t];if(!s)throw new Ze(`unknown terminal opcode 0x${t.toString(16)}`);const r=e.subarray(2);if(s==="Resize"){let o;try{o=JSON.parse(rc.decode(r))}catch{throw new Ze("resize payload is not valid JSON")}const a=As.safeParse(o);if(!a.success)throw new Ze("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:a.data.rows,cols:a.data.cols}}return{opcode:s,slot:n,data:r.slice()}}const Oe={Begin:16,Chunk:17,End:18,Error:19},ic=Object.fromEntries(Object.entries(Oe).map(([e,t])=>[t,e])),$s=g({transferId:d(),fileName:d().optional(),mimeType:d().optional(),totalBytes:W().int().nonnegative().optional()});class Qe extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const Pn=new TextEncoder,An=new TextDecoder;function cc(e){if(!Number.isInteger(e)||e<0||e>255)throw new Qe(`stream must be an integer 0–255, got ${e}`)}function mt(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function Bt(e){switch(cc(e.stream),e.opcode){case"Begin":return mt(Oe.Begin,e.stream,Pn.encode(JSON.stringify($s.parse(e.meta))));case"Chunk":return mt(Oe.Chunk,e.stream,e.data);case"End":return mt(Oe.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return mt(Oe.Error,e.stream,Pn.encode(e.message))}}function lc(e){if(e.length<2)throw new Qe(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=ic[t];if(!s)throw new Qe(`unknown file-transfer opcode 0x${t.toString(16)}`);const r=e.subarray(2);switch(s){case"Begin":{let o;try{o=JSON.parse(An.decode(r))}catch{throw new Qe("begin payload is not valid JSON")}const a=$s.safeParse(o);if(!a.success)throw new Qe("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:a.data}}case"Chunk":return{opcode:"Chunk",stream:n,data:r.slice()};case"End":return{opcode:"End",stream:n,ok:(r[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:An.decode(r)}}}function dc(e){try{return lc(e)}catch{return null}}const Be=256;function uc(e,t=0){const n=(t%Be+Be)%Be;for(let s=0;s<Be;s++){const r=(n+s)%Be;if(!e.has(r))return r}return null}const fc=d().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),pc=Ne(["safe","moderate","dangerous","planning"]),hc=g({supportsStreaming:F(),supportsSessionPersistence:F(),supportsDynamicModes:F(),supportsMcpServers:F(),supportsReasoningStream:F(),supportsToolInvocations:F(),supportsRewindConversation:F().optional(),supportsRewindFiles:F().optional(),supportsRewindBoth:F().optional(),supportsSteering:F().optional()}).passthrough(),mc=g({id:d(),label:d().optional(),description:d().optional(),icon:d().optional(),colorTier:pc});g({id:fc,label:d(),description:d().optional(),extends:d().optional(),modes:K(mc),capabilities:hc});function Jt(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function zs(e){let t=null;const n={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1},connect(s){return new Promise((r,o)=>{const a=e??(()=>new WebSocket(s));try{t=e?a(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(i){o(i);return}t.onopen=()=>r(),t.onerror=i=>{var l;(t==null?void 0:t.readyState)!==1&&o(i),(l=n.onError)==null||l.call(n,i)},t.onclose=i=>{var l;(l=n.onClose)==null||l.call(n,i.code,Jt(i.reason))},t.onmessage=i=>{var u,f,m,h;const{data:l}=i;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?(m=n.onMessage)==null||m.call(n,l):Buffer.isBuffer(l)&&((h=n.onMessage)==null||h.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 et="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Bs(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],r=n+1<e.length,o=n+2<e.length,a=r?e[n+1]:0,i=o?e[n+2]:0;t+=et[s>>2],t+=et[(s&3)<<4|a>>4],t+=r?et[(a&15)<<2|i>>6]:"=",t+=o?et[i&63]:"="}return t}function qs(e){const t=e.replace(/=+$/,""),n=[];let s=0,r=0;for(const o of t){const a=et.indexOf(o);if(a===-1)throw new Error(`invalid base64 character: ${JSON.stringify(o)}`);s=s<<6|a,r+=6,r>=8&&(r-=8,n.push(s>>r&255))}return new Uint8Array(n)}function gc(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const wt=24;function Os(e,t){const n=Le.randomBytes(wt),s=Le.box.after(e,n,t),r=new Uint8Array(n.length+s.length);return r.set(n,0),r.set(s,n.length),Bs(r)}function Fs(e,t){let n;try{n=qs(e)}catch{return null}if(n.length<wt)return null;const s=n.slice(0,wt),r=n.slice(wt);return Le.box.open.after(r,s,t)}function _c(e,t){return Os(new TextEncoder().encode(e),t)}function yc(e,t){const n=Fs(e,t);return n?new TextDecoder().decode(n):null}function wc(e,t,n,s,r,o){let a=!1;return n.onClose(i=>{var l;a=!0,(l=s.onClose)==null||l.call(s,i)}),{handleAppFrame(i){var f,m;if(a)return;const l=r();if(!o()||!l)return;const u=yc(i.frame,l);if(u===null){(f=s.onAuthError)==null||f.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(m=s.onMessage)==null||m.call(s,u)},handleBinaryFrame(i){var f,m;if(a)return;const l=r();if(!o()||!l)return;const u=Fs(i.frame,l);if(u===null){(f=s.onAuthError)==null||f.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(m=s.onBinaryMessage)==null||m.call(s,u)},send(i){if(a)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:_c(i,l)}))},sendBinary(i){if(a)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:Os(i,l)}))},close(){a||(a=!0,n.close())}}}function bc(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,r=e.events??{},o=Le.box.keyPair(),a=Le.box.before(s,o.secretKey);let i=!1;const l=wc("client",n,t,r,()=>a,()=>i);return t.onMessage(u=>{var m;const f=gc(u);if(f){if(f.type==="e2ee_ready"){if(i)return;i=!0,(m=r.onReady)==null||m.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:Bs(o.publicKey)})),{role:"client",attachment:n,get ready(){return i},send:l.send,sendBinary:l.sendBinary,close:l.close}}const vc=16;function xc(e){const t=Le.hash(e);let n="";for(let s=0;s<vc;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Sc(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function kc(e){let t=null,n=null;const s=e.sessionId??xc(e.daemonPublicKey),r={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},connect(o){return new Promise((a,i)=>{const l=e.factory??(()=>new WebSocket(o));try{t=e.factory?l(o):new WebSocket(o)}catch(h){i(h);return}const u=t,f=[],m=[];u.onopen=()=>{u.send(JSON.stringify({type:"relay_register",sessionId:s})),n=bc({transport:{send:h=>u.send(h),onMessage:h=>f.push(h),onClose:h=>m.push(h),close:()=>u.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>a(),onMessage:h=>{var p;return(p=r.onMessage)==null?void 0:p.call(r,h)},onBinaryMessage:h=>{var p;return(p=r.onMessage)==null?void 0:p.call(r,h.slice().buffer)},onAuthError:h=>{var p;return(p=r.onError)==null?void 0:p.call(r,h)}}})},u.onerror=h=>{var p;u.readyState!==1&&i(h),(p=r.onError)==null||p.call(r,h)},u.onclose=h=>{var p;for(const y of m)y(Jt(h.reason));(p=r.onClose)==null||p.call(r,h.code,Jt(h.reason))},u.onmessage=h=>{const{data:p}=h;if(typeof p=="string")for(const y of f)y(p)}})},sendText(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(o)},sendBinary(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(o)},close(o=1e3,a=""){n==null||n.close(),n=null,t==null||t.close(o,a),t=null}};return r}function Ic(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=qs(r)}catch{return null}const a=s.get("relay");if(a){const l={endpoint:a,useTls:s.get("relayTls")==="1"};return{publicKeyB64:r,publicKey:o,relay:l}}const i=s.get("host")??void 0;return{publicKeyB64:r,publicKey:o,...i?{host:i}:{}}}const Tc=1;function Zt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class Ec extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class $n extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class jc{constructor(t){$(this,"transport");$(this,"rpcTimeoutMs");$(this,"now");$(this,"_state","idle");$(this,"_serverId",null);$(this,"_features",{});$(this,"_serverCapabilities",{});$(this,"pending",new Map);$(this,"sessionHandlers",new Set);$(this,"terminalHandlers",new Set);$(this,"fileTransferHandlers",new Set);$(this,"stateHandlers",new Set);$(this,"helloResolve",null);$(this,"helloReject",null);this.options=t,this.transport=t.transport??zs(),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??Tc,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??Zt();return new Promise((o,a)=>{const i=s??this.rpcTimeoutMs,l=i>0?setTimeout(()=>{this.pending.delete(r),a(new $n(r))},i):null;this.pending.set(r,{resolve:u=>o(u),reject:a,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=Zt();return new Promise((s,r)=>{const o=t>0?setTimeout(()=>{this.pending.delete(n),r(new $n(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(Oe).includes(n)){const o=dc(t);if(!o)return;for(const a of this.fileTransferHandlers)a(o);return}const r=ac(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 Ec(n.message??n.error??"RPC failed",n.requestId,n.code)));return}if(typeof n.requestId=="string"&&this.pending.has(n.requestId)){const s="payload"in n?n.payload:n;this.resolvePending(n.requestId,s)}for(const s of this.sessionHandlers)s(t)}resolvePending(t,n){const s=this.pending.get(t);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(t),s.resolve(n))}}class Cc{constructor(t){this.daemon=t}get connection(){return this.daemon}async createAgent(t){return await this.daemon.request("create_agent_request",{...t})}agent(t){return new Nc(this.daemon,t)}workspace(t){return new Dc(this.daemon,t)}get providers(){return new Mc(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)})}}class Rc{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 Nc{constructor(t,n){$(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new Rc(t,n)}send(t,n={}){return this.daemon.request("send_agent_prompt",{agentId:this.agentId,prompt:t,clientMessageId:n.clientMessageId,images:n.images})}run(t,n){return this.send(t,n)}interrupt(){return this.daemon.request("interrupt_agent",{agentId:this.agentId})}steer(t,n={}){return this.daemon.request("steer_agent_request",{agentId:this.agentId,message:t,clientMessageId:n.clientMessageId,images:n.images})}followUp(t,n={}){return this.daemon.request("follow_up_agent_request",{agentId:this.agentId,message:t,clientMessageId:n.clientMessageId,images:n.images})}update(t){return this.daemon.request("update_agent",{agentId:this.agentId,...t})}resume(){return this.daemon.request("resume_agent",{agentId:this.agentId})}archive(){return this.daemon.request("archive_agent",{agentId:this.agentId})}delete(){return this.daemon.request("delete_agent",{agentId:this.agentId})}onUpdate(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="agent_update"&&s.agentId===this.agentId&&t(s)})}sessionStats(){return this.daemon.request("agent_session_stats_request",{agentId:this.agentId})}compact(t){return this.daemon.request("agent_compact_request",{agentId:this.agentId,customInstructions:t})}newSession(){return this.daemon.request("agent_new_session_request",{agentId:this.agentId})}switchSession(t){return this.daemon.request("agent_switch_session_request",{agentId:this.agentId,sessionPath:t})}fork(t){return this.daemon.request("agent_fork_request",{agentId:this.agentId,entryId:t})}forkMessages(){return this.daemon.request("agent_fork_messages_request",{agentId:this.agentId})}clone(){return this.daemon.request("agent_clone_request",{agentId:this.agentId})}setSessionName(t){return this.daemon.request("agent_set_session_name_request",{agentId:this.agentId,name:t})}exportHtml(t){return this.daemon.request("agent_export_html_request",{agentId:this.agentId,outputPath:t})}setModel(t,n){return this.daemon.request("agent_set_model_request",{agentId:this.agentId,provider:t,modelId:n})}cycleModel(){return this.daemon.request("agent_cycle_model_request",{agentId:this.agentId})}lastAssistantText(){return this.daemon.request("agent_last_assistant_text_request",{agentId:this.agentId})}listCommands(){return this.daemon.request("agent_list_commands_request",{agentId:this.agentId})}}class Dc{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 Mc{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 zn=32*1024,Pc="invalid_or_expired_token";function Ac(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 $c{constructor(t){$(this,"pending",new Map);$(this,"streamCursor",1);$(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!==Pc)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=uc(this.pending,this.streamCursor);if(s===null)throw new Error("no free download stream");this.streamCursor=(s+1)%Be;const r=new Promise((a,i)=>{this.pending.set(s,{chunks:[],meta:{},resolve:a,reject:i})});let o;try{o=await this.daemon.request("file_download_request",{token:n.token,stream:s})}catch(a){throw this.pending.delete(s),a}if(!o.ok)throw this.pending.delete(s),new Error(o.error??"download request failed");return r}async upload(t,n){const s=Zt(),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(Bt({opcode:"Begin",stream:o,meta:{transferId:s}}));for(let a=0;a<n.length;a+=zn){const i=n.subarray(a,a+zn);this.daemon.sendBinary(Bt({opcode:"Chunk",stream:o,data:i}))}this.daemon.sendBinary(Bt({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:Ac(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 zc{constructor(t,n={}){$(this,"initialDelayMs");$(this,"maxDelayMs");$(this,"factor");$(this,"jitter");$(this,"maxAttempts");$(this,"setTimer");$(this,"clearTimer");$(this,"random");$(this,"attempt",0);$(this,"timer",null);$(this,"active",!1);$(this,"reconnecting",!1);$(this,"detachState",null);$(this,"reconnectedHandlers",new Set);$(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 Bn(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 fn(e){const t=Ic(e);return t!=null&&t.relay?{mode:"relay",url:Sc(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:Bn(t.host)}:{mode:"direct",url:Bn(e)}}const Bc=`
|
|
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 qc(){return{setTimer:(e,t)=>setTimeout(e,t),clearTimer:e=>clearTimeout(e)}}function Oc(){const e=new Blob([Bc],{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 a=s.get(o.data.id);s.delete(o.data.id),a==null||a()}),{setTimer:(o,a)=>{const i=r++;return s.set(i,o),n.postMessage({id:i,ms:a}),i},clearTimer:o=>{const a=o;s.delete(a)&&n.postMessage({id:a,cancel:!0})}}}let Ge=null;function qn(){if(Ge)return Ge;try{Ge=Oc()}catch{Ge=qc()}return Ge}function Fc(){return{setTimer:(e,t)=>qn().setTimer(e,t),clearTimer:e=>qn().clearTimer(e)}}const Lc=32,ie=new Map;function Wc(){for(;ie.size>Lc;){let e=null;for(const[t,n]of ie)if(n.refs===0&&n.entry){URL.revokeObjectURL(n.entry.objectUrl),e=t;break}if(e===null)return;ie.delete(e)}}function Tm(e,t){const n=ie.get(e);if(n)return n.refs+=1,ie.delete(e),ie.set(e,n),n.entry?Promise.resolve(n.entry):n.pending;const s={refs:1,entry:null,pending:null};return ie.set(e,s),Wc(),s.pending=t(e).then(r=>{const o=new Blob([Uint8Array.from(r.bytes)],{type:r.mimeType||"application/octet-stream"}),a={objectUrl:URL.createObjectURL(o),mimeType:r.mimeType};return ie.get(e)===s?(s.entry=a,s.pending=null):URL.revokeObjectURL(a.objectUrl),a}).catch(r=>{throw ie.get(e)===s&&ie.delete(e),r}),s.pending}function Em(e){const t=ie.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function Hc(){for(const e of ie.values())e.entry&&URL.revokeObjectURL(e.entry.objectUrl);ie.clear()}function Uc(){return"web-"+Math.random().toString(36).slice(2,10)}const z=ke()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=fn(n.url);let r;s.mode==="relay"?r=kc({daemonPublicKey:s.daemonPublicKey}):n.password&&(r=zs(f=>new WebSocket(f,[`pi-studio.bearer.${n.password}`])));const o=new jc({url:s.url,clientId:n.clientId??Uc(),clientType:"browser",capabilities:{[zt.inline_image_markdown]:!0,[zt.file_link_markdown]:!0,[zt.mermaid_diagram_markdown]:!0},transport:r,rpcTimeoutMs:1800*1e3}),a=new Cc(o),{setTimer:i,clearTimer:l}=Fc(),u=new zc(o,{setTimer:i,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:a,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(),Hc(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}})),Vc=100,Kc=480,Gc=220,Xc=280;function gt(e){return Math.min(Kc,Math.max(Vc,e))}const R=ke()(e=>({host:"ws://127.0.0.1:6767",password:"",cwd:"~",cwdPickerOpen:!1,sessionMenu:null,workspaceMenu:null,fileMenu:null,rightSidebarTab:"files",collapsedWorkspaces:new Set,leftSidebarCollapsed:!1,rightSidebarCollapsed:!1,leftSidebarWidth:Gc,rightSidebarWidth:Xc,setHost:t=>e({host:t}),setPassword:t=>e({password:t}),setCwd:t=>e({cwd:t}),openCwdPicker:()=>e({cwdPickerOpen:!0}),closeCwdPicker:()=>e({cwdPickerOpen:!1}),openSessionMenu:(t,n,s)=>e({sessionMenu:{sessionId:t,x:n,y:s}}),closeSessionMenu:()=>e({sessionMenu:null}),openWorkspaceMenu:(t,n,s)=>e({workspaceMenu:{cwd:t,x:n,y:s}}),closeWorkspaceMenu:()=>e({workspaceMenu:null}),openFileMenu:(t,n,s,r,o)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:r,background:o}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),setCollapsedWorkspaces:t=>e({collapsedWorkspaces:t}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:gt(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:gt(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:gt(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:gt(n.rightSidebarWidth+t)}))}));function Yc(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 On=40;function Ls(e){return/^\[object [A-Za-z]+\]$/.test(e)}function Jc(e){const t=(e.split(`
|
|
18
|
+
`)[0]??"").trim();return t===""||Ls(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>On?`${t.slice(0,On-1)}…`:t}function Ws(e){if(e.trim()==="")return!1;try{const t=fn(e);return/^wss?:\/\//i.test(t.url)?new URL(t.url).hostname!=="":!1}catch{return!1}}function Fn(e){try{const{url:t}=fn(e);return t===""?null:t}catch{return null}}function Zc(e){const{status:t,error:n,url:s}=e;if(t==="open"){const o=Fn(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=Fn(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=Ws(s);if(n!==null&&n!==""){const o=Jc(n);return{kind:"error",statusLabel:o,hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Retry",variant:"default",disabled:!r},title:Ls(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 Qc="_bar_1o0iw_9",el="_title_1o0iw_21",tl="_brand_1o0iw_27",nl="_version_1o0iw_33",sl="_statusPill_1o0iw_41",rl="_statusText_1o0iw_60",ol="_statusHost_1o0iw_68",al="_statusSep_1o0iw_76",il="_statusLabel_1o0iw_79",cl="_statusDot_1o0iw_82",ll="_statusSpinner_1o0iw_83",dl="_statusPillError_1o0iw_87",ul="_field_1o0iw_4",fl="_fieldUrl_1o0iw_111",pl="_fieldPassword_1o0iw_115",hl="_fieldInvalid_1o0iw_122",ml="_action_1o0iw_139",gl="_panelToggles_1o0iw_147",_l="_panelToggle_1o0iw_147",G={bar:Qc,title:el,brand:tl,version:nl,statusPill:sl,statusText:rl,statusHost:ol,statusSep:al,statusLabel:il,statusDot:cl,statusSpinner:ll,statusPillError:dl,field:ul,fieldUrl:fl,fieldPassword:pl,fieldInvalid:hl,action:ml,panelToggles:gl,panelToggle:_l},Xe=26,yl="var(--pi-font-size-2xs)",wl=9,Ln="host:port, ws://…/http://…, or a pasted pairing link";function bl(){const e=z(E=>E.status),t=z(E=>E.error),n=z(E=>E.connect),s=z(E=>E.disconnect),r=R(E=>E.host),o=R(E=>E.setHost),a=R(E=>E.password),i=R(E=>E.setPassword),l=R(E=>E.leftSidebarCollapsed),u=R(E=>E.toggleLeftSidebar),f=R(E=>E.rightSidebarCollapsed),m=R(E=>E.toggleRightSidebar),h=Zc({status:e,error:t,url:r}),p=Yc(h.kind),y=b.useRef({host:r,password:a}),[_,v]=b.useState(!1),I=_&&r.trim()!==""&&!Ws(r);function T(){h.action.disabled||(y.current={host:r,password:a},n({url:r,password:a||void 0}))}function B(){if(h.kind==="connected"||h.kind==="closing"){s();return}T()}function O(E,Y){if(E.key==="Enter"){E.preventDefault(),T();return}E.key==="Escape"&&(E.preventDefault(),Y==="url"?(o(y.current.host),v(!1)):i(y.current.password),E.currentTarget.blur())}return c.jsxs("div",{className:G.bar,children:[c.jsxs("span",{className:G.title,children:[c.jsx("span",{className:G.brand,children:"Pi-Studio"}),c.jsxs("span",{className:G.version,children:["v","0.0.83"]})]}),c.jsxs("span",{className:L(G.statusPill,h.kind==="error"&&G.statusPillError),title:h.title,children:[p?c.jsx(Nt,{...p,className:G.statusDot}):c.jsx(js,{size:wl,color:"var(--pi-color-statusWarning)",className:G.statusSpinner,"aria-label":"Connecting"}),c.jsxs("span",{className:G.statusText,children:[h.hostLabel&&c.jsx("span",{className:G.statusHost,children:h.hostLabel}),h.hostLabel&&c.jsx("span",{className:G.statusSep,"aria-hidden":!0,children:"·"}),c.jsx("span",{className:G.statusLabel,"aria-live":"polite",children:h.statusLabel})]})]}),h.showFields&&c.jsxs(c.Fragment,{children:[c.jsx(kt,{className:L(G.field,G.fieldUrl,I&&G.fieldInvalid),value:r,onChange:E=>o(E.target.value),onFocus:()=>v(!1),onBlur:()=>v(!0),onKeyDown:E=>O(E,"url"),readOnly:h.fieldsFrozen,placeholder:"ws://127.0.0.1:6767",title:I?`Not a dialable daemon address — ${Ln}`:Ln,"aria-label":"Daemon address","aria-invalid":I||void 0,spellCheck:!1,autoComplete:"off"}),c.jsx(kt,{className:L(G.field,G.fieldPassword),type:"password",value:a,onChange:E=>i(E.target.value),onKeyDown:E=>O(E,"password"),readOnly:h.fieldsFrozen,placeholder:"password",title:"Daemon password — ignored when the address is a pairing link","aria-label":"Daemon password",autoComplete:"off"})]}),c.jsx(ue,{className:G.action,size:"xs",variant:h.action.variant,disabled:h.action.disabled,style:{minHeight:Xe,fontSize:yl},onClick:B,children:h.action.label}),c.jsxs("div",{className:G.panelToggles,children:[c.jsx(ue,{className:G.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Xe,width:Xe},"aria-label":"Toggle left panel",title:l?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>u(),children:c.jsx(re,{icon:l?Fr:Lr,size:"sm"})}),c.jsx(ue,{className:G.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Xe,width:Xe},"aria-label":"Toggle right panel",title:f?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>m(),children:c.jsx(re,{icon:f?Wr:Hr,size:"sm"})})]})]})}const pn={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let Wn=0;function Ie(){return Wn+=1,`row-${Wn}`}function vl(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 xl(e,t){return e??`${t.kind}:${vl(t)}`}function We(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 Hs(e){if(e.streamingAssistantIndex===null&&e.streamingReasoningIndex===null)return e;const t=e.rows.slice();return We(t,e.streamingAssistantIndex),We(t,e.streamingReasoningIndex),{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function Sl(e){return Hs(e)}function kl(e,t,n,s){var i;const r=e.rows.slice();We(r,e.streamingReasoningIndex);let o=e.streamingAssistantIndex;if(o===null||((i=r[o])==null?void 0:i.kind)!=="assistant"){if(!t)return{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null};const l={kind:"assistant",id:Ie(),text:"",streaming:!0,timestamp:s};r.push(l),o=r.length-1}const a=r[o];return!a||a.kind!=="assistant"?e:(r[o]={...a,text:a.text+t,streaming:!n},{...e,rows:r,streamingAssistantIndex:n?null:o,streamingReasoningIndex:null})}function Il(e,t,n,s){var i;const r=e.rows.slice();We(r,e.streamingAssistantIndex);let o=e.streamingReasoningIndex;if(o===null||((i=r[o])==null?void 0:i.kind)!=="reasoning"){if(!t)return{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null};const l={kind:"reasoning",id:Ie(),text:"",streaming:!0,timestamp:s};r.push(l),o=r.length-1}const a=r[o];return!a||a.kind!=="reasoning"?e:(r[o]={...a,text:a.text+t,streaming:!n},{...e,rows:r,streamingReasoningIndex:n?null:o,streamingAssistantIndex:null})}function Tl(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 El(e,t){var i;const n=xl(t.callId,t.tool),s=t.status==="completed"||t.status==="error"?t.status:"running",r=e.toolIndexByCallId[n],o=e.rows.slice();if(We(o,e.streamingAssistantIndex),We(o,e.streamingReasoningIndex),r!==void 0&&((i=o[r])==null?void 0:i.kind)==="tool"){const l=o[r];if(l.kind!=="tool")return e;const u=t.status??l.statusText;return o[r]={...l,tool:Tl(l.tool,t.tool),status:s,...u!==void 0?{statusText:u}:{}},{...e,rows:o,streamingAssistantIndex:null,streamingReasoningIndex:null}}const a={kind:"tool",id:Ie(),callId:n,tool:t.tool,status:s,...t.status!==void 0?{statusText:t.status}:{}};return o.push(a),{...e,rows:o,toolIndexByCallId:{...e.toolIndexByCallId,[n]:o.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function hn(e){return Hs(e)}function jl(e,t){const n=hn(e),s={kind:"error",id:Ie(),text:t||"turn failed"};return{...n,rows:[...n.rows,s]}}function Cl(e){const t=hn(e),n={kind:"system",id:Ie(),text:"(canceled)"};return{...t,rows:[...t.rows,n]}}function Rl(e,t){const n={kind:"error",id:Ie(),text:t||"error"};return{...e,rows:[...e.rows,n]}}function Nl(e,t,n,s,r){if(s!==void 0){const a=e.rows.findIndex(i=>i.kind==="user"&&i.pending&&i.clientMessageId===s);if(a!==-1){const i=e.rows.slice(),l=i[a];if((l==null?void 0:l.kind)==="user")return i[a]={...l,text:t,images:n,pending:!1,...r!==void 0?{timestamp:r}:{}},{...e,rows:i}}}const o={kind:"user",id:Ie(),text:t,images:n,clientMessageId:s,timestamp:r};return{...e,rows:[...e.rows,o]}}function Dl(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 Us(e,t,n){switch(t.kind){case"turn_started":return Sl(e);case"user_message":return Nl(e,t.text??"",t.images,t.messageId,n);case"assistant_message":return kl(e,t.text??"",t.final??!1,n);case"reasoning":return Il(e,t.text??"",t.final??!1,n);case"tool_call":return El(e,t);case"turn_completed":return hn(e);case"turn_failed":return jl(e,t.error);case"turn_canceled":return Cl(e);case"error":return Rl(e,t.message);case"queue_update":return Dl(e,t.steering??[]);default:return e}}function Ml(e){return e.reduce((t,{event:n,timestamp:s})=>Us(t,n,s),pn)}function Pl(e,t,n,s,r,o){const a={kind:"user",id:Ie(),text:n,images:s,clientMessageId:t,pending:!0,queued:r,timestamp:o};return{...e,rows:[...e.rows,a]}}function Al(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 Hn=0;function $l(){return Hn+=1,`s-${Date.now().toString(36)}-${Hn}`}const D=ke()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=$l(),r={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:pn,userMessageCount:0};return e(o=>({sessions:{...o.sessions,[s]:r},order:[s,...o.order],activeSessionId:s})),s},hydrate(n){e(s=>s.sessions[n.id]?s:{sessions:{...s.sessions,[n.id]:n},order:[...s.order,n.id]})},bindAgent(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,agentId:s}}}:r})},setStatus(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,status:s}}}:r})},setStatusByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setStatus(r.id,s)},setModel(n,s,r){e(o=>{const a=o.sessions[n];return a?{sessions:{...o.sessions,[n]:{...a,model:s,modelProvider:r}}}:o})},setModelByAgentId(n,s,r){const o=t().findByAgentId(n);o&&t().setModel(o.id,s,r)},setTitle(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,title:s}}}:r})},setCwd(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,cwd:s}}}:r})},applyStreamEvent(n,s,r){e(o=>{const a=o.sessions[n];if(!a)return o;const i=Us(a.timeline,s,r);let l=a.title;if(s.kind==="turn_completed"&&l==="New chat"){const u=i.rows.slice().reverse().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]:{...a,timeline:i,title:l}}}})},addOptimisticUserMessage(n,s,r,o,a){e(i=>{const l=i.sessions[n];if(!l)return i;const u=Pl(l.timeline,s,r,o,a,new Date().toISOString());return{sessions:{...i.sessions,[n]:{...l,timeline:u,userMessageCount:l.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(r=>{const o=r.sessions[n];if(!o)return r;const a=Al(o.timeline,s);return{sessions:{...r.sessions,[n]:{...o,timeline:a}}}})},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:r,...o}=s.sessions,a=s.order.filter(l=>l!==n),i=s.activeSessionId===n?a[0]??null:s.activeSessionId;return{sessions:o,order:a,activeSessionId:i}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),Un=new WeakMap;function zl(e,t="pi"){const n=Un.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(r=>({model:r.model,modelProvider:r.modelProvider})).catch(()=>({}));return Un.set(e,s),s}const bt=new Map;function Bl(e,t){const n=D.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=bt.get(t);if(s)return s;const r=(async()=>{if(!n.model){const l=await zl(e),u=D.getState().sessions[t];l.model&&u&&!u.model&&D.getState().setModel(t,l.model,l.modelProvider)}const o=D.getState().sessions[t];if(!o)throw new Error(`unknown session: ${t}`);const a={provider:"pi",cwd:o.cwd||"~"};o.model&&(a.model=o.model),o.modelProvider&&(a.modelProvider=o.modelProvider);const i=await e.createAgent({config:a,labels:{}});return D.getState().bindAgent(t,i.agentId),i.agentId})();return bt.set(t,r),r.finally(()=>bt.delete(t)),r}async function ql(e,t){var r;const n=D.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((r=bt.get(t))==null?void 0:r.catch(()=>{}));const s=D.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),D.getState().remove(t),!0):!1}const Ol=4;function Vs(e){return e==="left"||e==="right"?"row":"column"}function ce(e){return e.kind==="leaf"?[e.id]:e.children.flatMap(ce)}function mn(e,t){return e.kind==="leaf"?e.id===t:e.children.some(n=>mn(n,t))}function Ks(e,t,n=1){if(e.kind==="leaf")return e.id===t?n:null;for(const s of e.children){const r=Ks(s,t,n+1);if(r!==null)return r}return null}function Gs(e,t){if(e.kind==="leaf")return null;if(gn(e,t)!==-1)return e;for(const n of e.children){const s=Gs(n,t);if(s)return s}return null}function gn(e,t){return e.children.findIndex(n=>n.kind==="leaf"&&n.id===t)}function rt(e,t,n){const s=Ks(e,t);if(s===null)return!1;const r=Gs(e,t);return r&&r.direction===Vs(n)?!0:s+1<=Ol}function Vn(e,t,n,s){if(!rt(e,t,n)||mn(e,s))return e;const r=Vs(n),o=n==="left"||n==="top",a={kind:"leaf",id:s},i=u=>({kind:"split",direction:r,children:o?[a,u]:[u,a],sizes:[.5,.5]}),l=u=>{if(u.kind==="leaf")return u.id===t?i(u):u;const f=gn(u,t);if(f!==-1&&u.direction===r){const m=u.sizes[f]/2,h=o?f:f+1,p=u.children.slice(),y=u.sizes.slice();return y[f]=m,p.splice(h,0,a),y.splice(h,0,m),{kind:"split",direction:u.direction,children:p,sizes:y}}return{kind:"split",direction:u.direction,children:u.children.map(l),sizes:u.sizes.slice()}};return l(e)}function Xs(e,t){if(!mn(e,t)||e.kind==="leaf")return e;const n=s=>{if(s.kind==="leaf")return s;const r=gn(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),a=o.reduce((l,u)=>l+u,0),i=a+s.sizes[r];return{kind:"split",direction:s.direction,children:s.children.filter((l,u)=>u!==r),sizes:o.map(l=>l/a*i)}};return Ys(n(e))}function Ys(e){if(e.kind==="leaf")return e;const t=e.children.map(Ys);if(t.length===1)return t[0];const n=[],s=[];return t.forEach((r,o)=>{const a=e.sizes[o];r.kind==="split"&&r.direction===e.direction?r.children.forEach((i,l)=>{n.push(i),s.push(a*r.sizes[l])}):(n.push(r),s.push(a))}),n.length===1?n[0]:{kind:"split",direction:e.direction,children:n,sizes:s}}const Kn=.1;function Fl(e){const t=new Map,n=(s,r)=>{if(s.kind==="leaf"){t.set(s.id,r);return}Js(s,r).forEach((o,a)=>n(s.children[a],o))};return n(e,{x:0,y:0,width:1,height:1}),t}function Js(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 Ll(e){const t=[],n=(s,r,o)=>{if(s.kind==="leaf")return;const a=Js(s,r);for(let i=0;i<s.children.length-1;i+=1){const l=a[i];t.push({splitPath:o.slice(),boundaryIndex:i,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})}a.forEach((i,l)=>n(s.children[l],i,[...o,l]))};return n(e,{x:0,y:0,width:1,height:1},[]),t}function Wl(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 Hl(e,t,n,s){const r=Wl(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],a=r.sizes[n+1],i=a-Math.min(a,Kn),l=o-Math.min(o,Kn),u=Math.max(-l,Math.min(i,s));if(u===0)return e;const f=h=>{const p=h.sizes.slice();return p[n]=o+u,p[n+1]=a-u,{kind:"split",direction:h.direction,children:h.children,sizes:p}},m=(h,p)=>{if(h.kind!=="split")return h;if(p===t.length)return f(h);const y=t[p],_=h.children.slice();return _[y]=m(h.children[y],p+1),{kind:"split",direction:h.direction,children:_,sizes:h.sizes.slice()}};return m(e,0)}function Zs(e,t){const n=ce(e).filter(s=>!t.has(s));return n.length===0?e:n.reduce((s,r)=>Xs(s,r),e)}const Qs=1;function Ul(e){return er(e,new Set)}function er(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 a=er(o,t);if(!a)return null;r.push(a)}return{kind:"split",direction:n.direction,children:r,sizes:n.sizes.map(o=>o/s)}}function Vl(){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 Kl=["sessions","terminals"];function Qt(){return`pane-${Vl()}`}function Gn(){const e=Qt();return{tree:{kind:"leaf",id:e},placement:{},activeByPane:{},focusedPaneId:e,pendingPlacement:{},pendingActive:{},userActedPanes:new Set}}function tr(e,t,n){return(n??Object.keys(e.placement)).filter(r=>e.placement[r]===t)}function nr(e,t,n,s){const r=tr(e,t,s),o=r.indexOf(n),a=r.filter(i=>i!==n);if(a.length!==0)return a[Math.min(Math.max(o,0),a.length-1)]}function Gl(e,t){return e.pendingActive[t]!==void 0?!0:Object.values(e.pendingPlacement).includes(t)}function _n(e,t){if(Gl(e,t))return e;const n=Xs(e.tree,t);if(n===e.tree)return e;const s={...e.activeByPane};delete s[t];const r=ce(n);return{...e,tree:n,activeByPane:s,focusedPaneId:r.includes(e.focusedPaneId)?e.focusedPaneId:r[0]}}function _t(e,t,n,s){const r=e.placement[t],o={...e.placement,[t]:n},a={...e.activeByPane};if(s.activate&&(a[n]=t),r!==void 0&&r!==n&&a[r]===t){const u=nr(e,r,t,s.order);u===void 0?delete a[r]:a[r]=u}const i={...e,placement:o,activeByPane:a,focusedPaneId:s.focus?n:e.focusedPaneId};return r!==void 0&&r!==n&&!Object.values(o).includes(r)?_n(i,r):i}function Pe(e,t){return e.userActedPanes.has(t)?e:{...e,userActedPanes:new Set(e.userActedPanes).add(t)}}function Xl(e){let t={...e,pendingPlacement:{},pendingActive:{}};const n=new Set(Object.values(t.placement));for(const o of ce(t.tree))n.has(o)||(t=_n(t,o));const s={...t.activeByPane};let r=!1;for(const o of ce(t.tree)){if(s[o]!==void 0)continue;const a=Object.keys(t.placement).find(i=>t.placement[i]===o);a!==void 0&&(s[o]=a,r=!0)}return r?{...t,activeByPane:s}:t}function Yl(e,t){if(e===void 0)return!1;const n=e.placement[t];return n!==void 0&&e.activeByPane[n]===t}const P=ke()((e,t)=>{const n=(s,r)=>{e(o=>{const a=o.layouts[s]??Gn(),i=r(a)??a;return i===o.layouts[s]?o:{layouts:{...o.layouts,[s]:i}}})};return{layouts:{},hydrationSources:{sessions:!1,terminals:!1},restoring:!1,pendingActiveWorkspace:null,ensureWorkspace(s){e(r=>r.layouts[s]?r:{layouts:{...r.layouts,[s]:Gn()}})},assignTab(s,r,o,a,i){n(s,l=>{const u=ce(l.tree),f=o!==void 0&&u.includes(o)?o:u.includes(l.focusedPaneId)?l.focusedPaneId:u[0],m=a!==!0,h=_t(l,r,f,{activate:m,focus:m,order:i});return m?Pe(h,f):h})},moveTab(s,r,o,a){n(s,i=>{if(i.placement[r]===void 0||i.placement[r]===o||!ce(i.tree).includes(o))return null;const l=_t(i,r,o,{activate:!0,focus:!0,order:a});return Pe(l,o)})},splitWithTab(s,r,o,a,i){n(s,l=>{if(!ce(l.tree).includes(o)||!rt(l.tree,o,a))return null;const u=tr(l,o,i);if(u.length===1&&u[0]===r)return null;const f=Qt(),m=Vn(l.tree,o,a,f);if(m===l.tree)return null;const h=_t({...l,tree:m},r,f,{activate:!0,focus:!0,order:i});return Pe(h,f)})},splitEmpty(s,r,o){let a=null;return n(s,i=>{if(!ce(i.tree).includes(r)||!rt(i.tree,r,o))return null;const l=Qt(),u=Vn(i.tree,r,o,l);return u===i.tree?null:(a=l,{...i,tree:u,focusedPaneId:l})}),a},removeTab(s,r,o){n(s,a=>{const i=a.placement[r];if(i===void 0)return null;const l={...a.placement};delete l[r];const u={...a.activeByPane};if(u[i]===r){const m=nr(a,i,r,o);m===void 0?delete u[i]:u[i]=m}const f={...a,placement:l,activeByPane:u};return Object.values(l).includes(i)?f:_n(f,i)})},setActiveTab(s,r,o){n(s,a=>a.placement[o]!==r?null:a.activeByPane[r]===o?Pe(a,r):Pe({...a,activeByPane:{...a.activeByPane,[r]:o}},r))},focusPane(s,r){n(s,o=>o.focusedPaneId===r||!ce(o.tree).includes(r)?null:{...o,focusedPaneId:r})},resizeDivider(s,r,o,a){n(s,i=>{const l=Hl(i.tree,r,o,a);return l===i.tree?null:{...i,tree:l}})},installPersistedLayouts(s,r=null){e(o=>{const a={...o.layouts};for(const[i,l]of s){const u=ce(l.tree);a[i]={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:a,hydrationSources:{sessions:!1,terminals:!1},restoring:!0,pendingActiveWorkspace:r!==null&&a[r]!==void 0?r:null}})},claimPaneFor(s,r,o,a){n(s,i=>{const l=ce(i.tree);let u,f=!1;if(a!==void 0&&l.includes(a))u=a;else if(o!==null){const y=i.pendingPlacement[o];y!==void 0&&l.includes(y)&&(u=y,f=!0)}u??(u=l.includes(i.focusedPaneId)?i.focusedPaneId:l[0]);let m=i;if(f&&o!==null){const y={...i.pendingPlacement};delete y[o],m={...i,pendingPlacement:y}}let h=!0;if(f){const y=m.pendingActive[u];m.userActedPanes.has(u)?h=!1:y!==void 0&&y!==o&&(h=m.activeByPane[u]===void 0)}else t().restoring&&(h=m.activeByPane[u]===void 0);const p=_t(m,r,u,{activate:h,focus:!f&&h});return f?p:Pe(p,u)})},markHydrationSource(s){e(r=>{if(r.hydrationSources[s])return r;const o={...r.hydrationSources,[s]:!0};if(!Kl.every(i=>o[i]))return{hydrationSources:o};const a={};for(const[i,l]of Object.entries(r.layouts))a[i]=Xl(l);return{hydrationSources:o,layouts:a,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 Jl(e,t){return e.filter(n=>n.workspaceCwd===t)}function Zl(e,t){return Jl(e,t).map(n=>n.id)}function tt(e){const t=e===null?null:P.getState().activeTabOf(e);if(j.setState({activeTabId:t,activeWorkspaceCwd:e}),t!==null)return j.getState().tabs.find(n=>n.id===t)}function nt(e){(e==null?void 0:e.kind)==="chat"&&D.getState().activate(e.data.sessionId)}const j=ke()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,open(n,s){const r=t().tabs.find(a=>a.id===n.id);if(r){t().activate(r.id);return}e(a=>({tabs:[...a.tabs,n]}));const o=P.getState();o.ensureWorkspace(n.workspaceCwd),o.claimPaneFor(n.workspaceCwd,n.id,It(n),s),nt(tt(n.workspaceCwd))},close(n){const s=t().tabs.find(i=>i.id===n);if(!s)return;const r=Zl(t().tabs,s.workspaceCwd),o=t().activeTabId;e(i=>({tabs:i.tabs.filter(l=>l.id!==n)})),P.getState().removeTab(s.workspaceCwd,n,r);const a=tt(t().activeWorkspaceCwd);t().activeTabId!==o&&nt(a)},activate(n){const s=t().tabs.find(a=>a.id===n);if(!s)return;const r=P.getState();r.ensureWorkspace(s.workspaceCwd);const o=r.paneOfTab(s.workspaceCwd,n);o===null?r.claimPaneFor(s.workspaceCwd,n,It(s)):(r.focusPane(s.workspaceCwd,o),r.setActiveTab(s.workspaceCwd,o,n)),nt(tt(s.workspaceCwd))},switchWorkspace(n){P.getState().ensureWorkspace(n),nt(tt(n))},reorder(n,s){e(r=>{const o=r.tabs.findIndex(u=>u.id===n),a=r.tabs.findIndex(u=>u.id===s);if(o===-1||a===-1||o===a)return r;const i=r.tabs.slice(),[l]=i.splice(o,1);return l?(i.splice(a,0,l),{tabs:i}):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 It(e){var t;switch(e.kind){case"chat":{const{sessionId:n}=e.data,s=(t=D.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 jm(e){const t=j(n=>{var s;return((s=n.tabs.find(r=>r.id===e))==null?void 0:s.workspaceCwd)===n.activeWorkspaceCwd?n.activeWorkspaceCwd:null});return P(n=>t===null?!1:Yl(n.layouts[t],e))}const Z={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 sr(e,t){qt+=1,j.getState().open({id:Z.terminal(`new-${qt}`),kind:"terminal",label:`Terminal ${qt}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e},t)}let Ot=0;function Ql(e,t){Ot+=1,j.getState().open({id:Z.molecule(`new-${Ot}`),kind:"molecule",label:`Molecule ${Ot}`,closable:!0,data:{path:null},workspaceCwd:e},t)}function it(e,t){const n=D.getState().createSession(e);j.getState().open({id:Z.chat(n),kind:"chat",label:"New chat",closable:!0,data:{sessionId:n},workspaceCwd:e},t);const s=z.getState().client;s&&Bl(s,n).catch(()=>{})}function en(e){const t=j.getState().tabs.find(s=>s.id===e);if(j.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;ql(z.getState().client,n)}P.subscribe(()=>{const{activeWorkspaceCwd:e,activeTabId:t}=j.getState();e!==null&&P.getState().activeTabOf(e)!==t&&nt(tt(e))});const ed="_panel_1de7t_3",td={panel:ed};function rr({className:e,...t}){return c.jsx("div",{className:L(td.panel,e),...t})}const nd="_emptyState_kp50e_3",sd={emptyState:nd};function Ce({className:e,...t}){return c.jsx("div",{className:L(sd.emptyState,e),...t})}const se=ke()(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,a=new Set([...r.expanded].map(o));a.add(s);const i=new Map(r.expandedByRoot);r.rootPath&&i.set(r.rootPath,a);const l=r.selected?{path:o(r.selected.path),isDirectory:r.selected.isDirectory}:null;return{expanded:a,expandedByRoot:i,selected:l,renaming:null}})}));let qe=null;const tn=new Set;function rd(e){return tn.add(e),()=>tn.delete(e)}async function Mt(e){var t;if(qe)return qe;try{const n=await e.connection.request("file_explorer_request",{path:"/home"}),r=(((t=n.result)==null?void 0:t.entries)??n.entries??[]).find(o=>o.kind==="directory"||o.type==="directory");qe="/home/"+((r==null?void 0:r.name)||"user")}catch{return"/tmp"}for(const n of tn)n(qe);return qe}function od(){return qe}async function ad(e,t){return t==="~"||t.startsWith("~/")?await Mt(e)+t.slice(1):t}function ct(){const e=z(r=>r.client),t=z(r=>r.status),[n,s]=b.useState(od());return b.useEffect(()=>rd(s),[]),b.useEffect(()=>{!e||t!=="open"||n||Mt(e)},[e,t,n]),n}const id="_iconBtn_1unr3_3",cd="_xs_1unr3_32",ld="_sm_1unr3_36",Xn={iconBtn:id,xs:cd,sm:ld};function be({size:e="xs",hoverBase:t,className:n,style:s,type:r="button",...o}){return c.jsx("button",{type:r,className:L(Xn.iconBtn,Xn[e],n),style:t?{"--icon-btn-hover-base":t,...s}:s,...o})}const dd={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function Fe(e){return dd[e]??"idle"}const Yn=120;function ud(e){return e.status==="error"?"failed":e.status==="running"?"running":e.userMessageCount===0&&e.timeline.rows.length===0?"empty":"idle"}function fd(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>Yn?r.slice(0,Yn):r}}return null}function pd(e){const t=ud(e);switch(t){case"failed":return{state:t,meta:"turn failed",reason:fd(e),dot:{status:Fe("error")},titleItalic:!1};case"running":return{state:t,meta:"running",reason:null,dot:{status:Fe("running")},titleItalic:!1};case"empty":return{state:t,meta:"no messages",reason:null,dot:{status:Fe("idle"),showInactive:!0},titleItalic:!0};case"idle":return{state:t,meta:"idle",reason:null,dot:{status:Fe("idle"),showInactive:!0},titleItalic:!1}}}function hd(e){return e.some(n=>n.status==="error")?{status:Fe("error")}:null}const md="_header_962zs_1",gd="_list_962zs_15",_d="_newSessionRow_962zs_20",yd="_footer_962zs_45",wd="_item_962zs_70",bd="_itemFailed_962zs_85",vd="_active_962zs_83",xd="_activeBar_962zs_88",Sd="_title_962zs_89",kd="_titleLabel_962zs_89",Id="_titleItalic_962zs_120",Td="_meta_962zs_123",Ed="_metaDot_962zs_131",jd="_metaLabel_962zs_136",Cd="_metaFailed_962zs_141",Rd="_metaEmpty_962zs_144",Nd="_menuBtn_962zs_149",Dd="_workspaceHeader_962zs_162",Md="_workspaceChevron_962zs_184",Pd="_chevronGlyphExpanded_962zs_195",Ad="_workspaceLabel_962zs_201",$d="_workspaceCount_962zs_207",zd="_workspaceMenuBtn_962zs_215",Bd="_workspaceSessions_962zs_227",U={header:md,list:gd,newSessionRow:_d,footer:yd,item:wd,itemFailed:bd,active:vd,activeBar:xd,title:Sd,titleLabel:kd,titleItalic:Id,meta:Td,metaDot:Ed,metaLabel:jd,metaFailed:Cd,metaEmpty:Rd,menuBtn:Nd,workspaceHeader:Dd,workspaceChevron:Md,chevronGlyphExpanded:Pd,workspaceLabel:Ad,workspaceCount:$d,workspaceMenuBtn:zd,workspaceSessions:Bd};function qd({session:e,active:t,draggable:n,onSelect:s,onOpenMenu:r,onDragStartRow:o}){const a=pd(e);return c.jsxs("div",{className:L(U.item,t&&U.active,!t&&a.state==="failed"&&U.itemFailed),draggable:n,onDragStart:o,onClick:s,onContextMenu:i=>{i.preventDefault(),r(i.clientX,i.clientY)},children:[t&&c.jsx("span",{className:U.activeBar,"aria-hidden":!0}),c.jsxs("div",{className:U.title,children:[c.jsx("span",{className:L(U.titleLabel,a.titleItalic&&U.titleItalic),children:e.title}),c.jsx(be,{className:U.menuBtn,hoverBase:"var(--pi-color-surfaceSidebar)",title:"Actions",onClick:i=>{i.stopPropagation();const l=i.currentTarget.getBoundingClientRect();r(l.left,l.bottom)},children:c.jsx(re,{icon:on,size:"sm"})})]}),c.jsxs("div",{className:L(U.meta,a.state==="empty"&&U.metaEmpty),children:[a.dot&&c.jsx(Nt,{...a.dot,className:U.metaDot}),c.jsxs("span",{className:U.metaLabel,children:[c.jsx("span",{className:a.state==="failed"?U.metaFailed:void 0,children:a.meta}),a.reason&&c.jsxs(c.Fragment,{children:[" · ",a.reason]})]})]})]})}const Od="_trigger_cd29a_3",Fd="_content_cd29a_15",Ld="_item_cd29a_25",Wd="_danger_cd29a_44",Hd="_sep_cd29a_48",ot={trigger:Od,content:Fd,item:Ld,danger:Wd,sep:Hd},yn=b.forwardRef(function({x:t,y:n},s){return c.jsx("button",{ref:s,type:"button",className:ot.trigger,style:{left:t,top:n},"aria-hidden":!0,tabIndex:-1})});function Pt({className:e,minWidth:t,style:n,sideOffset:s=2,...r}){const o=t===void 0?n:{minWidth:t,...n};return c.jsx(io,{children:c.jsx(co,{className:L(ot.content,e),align:"start",sideOffset:s,style:o,...r})})}function V({className:e,danger:t,...n}){return c.jsx(lo,{className:L(ot.item,t&&ot.danger,e),...n})}function je(e){return c.jsx(uo,{className:ot.sep,...e})}function Ud(){const e=R(y=>y.sessionMenu),t=R(y=>y.closeSessionMenu),n=z(y=>y.client),s=b.useRef(null),[r,o]=b.useState(!1);b.useEffect(()=>{o(e!==null)},[e]);const a=D(y=>e?y.sessions[e.sessionId]:void 0);if(!e)return null;const i=!!(a!=null&&a.agentId)&&(a==null?void 0:a.status)==="running";function l(y){o(y),y||t()}function u(){if(!a)return;const y=window.prompt("Rename:",a.title);if(y!=null&&y.trim()){const _=y.trim();D.getState().setTitle(a.id,_),j.getState().updateLabel(Z.chat(a.id),_),a.agentId&&(n==null||n.agent(a.agentId).update({title:_}).catch(()=>{}))}t()}function f(){a!=null&&a.agentId&&(n==null||n.agent(a.agentId).interrupt().catch(()=>{})),t()}function m(y){D.getState().remove(y),j.getState().close(Z.chat(y))}async function h(){if(a){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!a.agentId){m(a.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(a.agentId).archive(),m(a.id)}catch(y){window.alert(`Failed to archive: ${y instanceof Error?y.message:String(y)}`)}}}async function p(){if(a){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!a.agentId){m(a.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(a.agentId).delete(),m(a.id)}catch(y){window.alert(`Failed to delete: ${y instanceof Error?y.message:String(y)}`)}}}return c.jsxs(Ct,{open:r,onOpenChange:l,modal:!1,children:[c.jsx(Rt,{asChild:!0,children:c.jsx(yn,{ref:s,x:e.x,y:e.y})}),c.jsxs(Pt,{minWidth:160,children:[c.jsxs(V,{onSelect:u,children:[c.jsx(gs,{size:13}),"Rename"]}),c.jsxs(V,{disabled:!i,onSelect:f,children:[c.jsx(Ur,{size:13}),"Stop agent"]}),c.jsx(je,{}),c.jsxs(V,{danger:!0,onSelect:h,children:[c.jsx(Vr,{size:13}),"Archive"]}),c.jsxs(V,{danger:!0,onSelect:p,children:[c.jsx(an,{size:13}),"Delete permanently"]})]})]})}const Vd="_avatar_1m9k9_4",Kd="_avatarImg_1m9k9_14",Gd="_avatarFallback_1m9k9_20",Ft={avatar:Vd,avatarImg:Kd,avatarFallback:Gd},Lt=["#2563eb","#16a34a","#9333ea","#dc2626","#0d9488","#d97706","#db2777","#0891b2","#ea580c","#4f46e5","#059669","#7c3aed"];function Xd(e){let t=0;for(let s=0;s<e.length;s++){const r=e.charCodeAt(s);t=t*31+r>>>0}return Lt[t%Lt.length]??Lt[0]}function Yd(e){const t=e.match(/[a-zA-Z0-9]/);return t?t[0].toUpperCase():"?"}function Jd({projectKey:e,src:t,size:n=32,className:s}){const r=Yd(e),o=Xd(e),a=Math.round(n*.4);return c.jsx("span",{className:`${Ft.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:Ft.avatarImg}):c.jsx("span",{className:Ft.avatarFallback,style:{fontSize:a},"aria-hidden":!0,children:r})})}function Zd({label:e,cwd:t,sessionCount:n,collapsed:s,attentionDot:r,onToggleCollapsed:o,onOpenMenu:a}){return c.jsxs("div",{className:U.workspaceHeader,onClick:o,title:t,children:[c.jsx(be,{className:U.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:i=>{i.stopPropagation(),o()},children:c.jsx(re,{icon:cn,size:"xs",className:s?void 0:U.chevronGlyphExpanded})}),c.jsx(Jd,{projectKey:e,size:20}),c.jsx("span",{className:U.workspaceLabel,children:e}),r&&c.jsx(Nt,{...r}),c.jsx("span",{className:U.workspaceCount,children:n}),c.jsx(be,{className:U.workspaceMenuBtn,hoverBase:"var(--pi-color-surface2)",title:"Workspace actions",onClick:i=>{i.stopPropagation();const l=i.currentTarget.getBoundingClientRect();a(l.left,l.bottom)},children:c.jsx(re,{icon:on,size:"sm"})})]})}function Me(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function wn(e,t,n){const s=new Map;for(const r of e){const o=t[r];if(!o)continue;const a=Me(o.cwd||"~",n),i=s.get(a);i?i.push(o):s.set(a,[o])}return Array.from(s,([r,o])=>({cwd:r,sessions:o}))}function or(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function Qd(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function eu(){const e=R(p=>p.workspaceMenu),t=R(p=>p.closeWorkspaceMenu),n=z(p=>p.client),s=D(p=>p.order),r=D(p=>p.sessions),o=ct(),a=b.useRef(null),[i,l]=b.useState(!1);if(b.useEffect(()=>{l(e!==null)},[e]),!e)return null;const u=s.map(p=>r[p]).filter(p=>!!p).filter(p=>Me(p.cwd||"~",o)===e.cwd);function f(p){l(p),p||t()}function m(){e&&(t(),it(e.cwd))}async function h(){if(!e)return;const p=u.length;if(!window.confirm(`Delete all ${p} conversation${p===1?"":"s"} in "${or(e.cwd)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return t();t();for(const _ of u){if(_.agentId&&n)try{await n.agent(_.agentId).delete()}catch(v){window.alert(`Failed to delete "${_.title}": ${v instanceof Error?v.message:String(v)}`);continue}D.getState().remove(_.id),j.getState().close(Z.chat(_.id))}}return c.jsxs(Ct,{open:i,onOpenChange:f,modal:!1,children:[c.jsx(Rt,{asChild:!0,children:c.jsx(yn,{ref:a,x:e.x,y:e.y})}),c.jsxs(Pt,{minWidth:160,children:[c.jsxs(V,{onSelect:m,children:[c.jsx(vt,{size:13}),"New session"]}),c.jsx(je,{}),c.jsxs(V,{danger:!0,onSelect:h,children:[c.jsx(an,{size:13}),"Delete workspace (all conversations)"]})]})]})}function Tt(e,t,n){j.getState().open({id:Z.chat(e.id),kind:"chat",label:e.title||"Chat",closable:!0,data:{sessionId:e.id},workspaceCwd:Me(e.cwd||"~",t)},n)}const tu=.25;function ar(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))<tu?"center":Math.abs(n)>=Math.abs(s)?n<0?"left":"right":s<0?"top":"bottom"}function nu(e,t){return t.x>=e.left&&t.x<=e.left+e.width&&t.y>=e.top&&t.y<=e.top+e.height}function ir(e,t,n){return n==="center"?"center":rt(e,t,n)?n:"center"}function nn(e,t,n,s){return s[n]!==t?!1:e==="center"?!0:Object.keys(s).every(o=>o===n||s[o]!==t)}const lt={chat:"application/x-pi-studio-open-chat",path:"application/x-pi-studio-open-path"},su=["chat","path"];function cr(e){for(const t of su)if(e.includes(lt[t]))return t;return null}function Cm(e){return t=>{t.dataTransfer.setData(lt.path,e),t.dataTransfer.effectAllowed="copyMove"}}function ru(e,t){const n=cr(e);if(n===null)return null;const s=t(lt[n]).trim();return s===""?null:{kind:n,value:s}}function ou(e,t,n,s){return ir(e,t,ar(n,s))}const au=36;function iu(){const e=D(v=>v.order),t=D(v=>v.sessions),n=D(v=>v.activeSessionId),s=D(v=>v.activate),r=j(v=>v.activeWorkspaceCwd),o=z(v=>v.status),a=R(v=>v.openSessionMenu),i=R(v=>v.openWorkspaceMenu),l=R(v=>v.setCwd),u=R(v=>v.openCwdPicker),f=R(v=>v.collapsedWorkspaces),m=R(v=>v.toggleWorkspaceCollapsed),h=ct();function p(v){s(v);const I=t[v];I!=null&&I.cwd&&l(I.cwd),I&&Tt(I,h)}function y(v,I,T){I===r&&(T.dataTransfer.setData(lt.chat,v),T.dataTransfer.effectAllowed="copy")}const _=wn(e,t,h);return c.jsxs(rr,{children:[c.jsx("div",{className:U.header,style:{minHeight:au},children:c.jsxs("h3",{children:["Workspaces · ",_.length]})}),c.jsxs("div",{className:U.list,children:[_.length===0&&c.jsx(Ce,{style:{padding:"var(--pi-spacing-12) var(--pi-spacing-10)"},children:o!=="open"?"Not connected":"No workspaces — open a folder to start"}),_.map(v=>{const I=f.has(v.cwd);return c.jsxs("div",{children:[c.jsx(Zd,{label:or(v.cwd),cwd:v.cwd,sessionCount:v.sessions.length,collapsed:I,attentionDot:I?hd(v.sessions):null,onToggleCollapsed:()=>m(v.cwd),onOpenMenu:(T,B)=>i(v.cwd,T,B)}),!I&&c.jsxs("div",{className:U.workspaceSessions,children:[v.sessions.map(T=>c.jsx(qd,{session:T,active:T.id===n,draggable:v.cwd===r,onSelect:()=>p(T.id),onOpenMenu:(B,O)=>a(T.id,B,O),onDragStartRow:B=>y(T.id,v.cwd,B)},T.id)),c.jsxs("button",{type:"button",className:U.newSessionRow,disabled:o!=="open",title:o!=="open"?"Connect to start a new session":void 0,onClick:()=>it(v.cwd),children:[c.jsx(re,{icon:vt,size:"xs"}),"New session"]})]})]},v.cwd)})]}),c.jsxs("button",{type:"button",className:U.footer,disabled:o!=="open",title:o!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>u(),children:[c.jsx(re,{icon:vt,size:"xs"}),"Add workspace"]}),c.jsx(Ud,{}),c.jsx(eu,{})]})}const Jn={tab:0,strip:1,pane:2};function Wt(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 cu(e){const t=e.activatorEvent;return t instanceof MouseEvent?{x:t.clientX+e.delta.x,y:t.clientY+e.delta.y}:null}function lu(e,t,n){return e.kind==="tab"?n.placement[t]??null:e.paneId}function du(e){const[t,n]=b.useState(null),[s,r]=b.useState(null),o=j(p=>p.tabs.find(y=>y.id===t)??null),a=go(_o(wo,{activationConstraint:{distance:4}})),i=b.useMemo(()=>p=>{const y=yo(p).map(_=>{var v;return{hit:_,target:Wt((v=p.droppableContainers.find(I=>I.id===_.id))==null?void 0:v.data.current)}}).filter(_=>_.target!==null).toSorted((_,v)=>Jn[_.target.kind]-Jn[v.target.kind]);return y.length===0?[]:[y[0].hit]},[]),l=b.useCallback(p=>{const{over:y,active:_}=p,v=Wt(y==null?void 0:y.data.current);if(!y||v===null||e===null)return null;const I=P.getState().layouts[e];if(I===void 0)return null;const T=String(_.id),B=String(y.id);if(v.kind!=="pane"){const Y=lu(v,B,I);return Y===null||v.kind==="tab"&&B===T?null:v.kind==="tab"&&I.placement[T]===Y?{paneId:Y,region:"center"}:nn("center",Y,T,I.placement)?null:{paneId:Y,region:"center"}}const O=cu(p);if(v.paneId===null||O===null)return null;const E=ir(I.tree,v.paneId,ar(O,y.rect));return nn(E,v.paneId,T,I.placement)?null:{paneId:v.paneId,region:E}},[e]),u=b.useCallback(p=>{n(String(p.active.id))},[]),f=b.useCallback(p=>{const y=l(p);r(_=>(_==null?void 0:_.paneId)===(y==null?void 0:y.paneId)&&(_==null?void 0:_.region)===(y==null?void 0:y.region)?_:y)},[l]),m=b.useCallback(()=>{n(null),r(null)},[]),h=b.useCallback(p=>{var ae;n(null),r(null);const{active:y,over:_}=p,v=Wt(_==null?void 0:_.data.current);if(!_||v===null||e===null)return;const I=String(y.id),T=P.getState().layouts[e];if(T===void 0)return;const B=j.getState(),O=B.tabs.filter(ne=>ne.workspaceCwd===e).map(ne=>ne.id),{moveTab:E,splitWithTab:Y}=P.getState();if(v.kind==="tab"){const ne=String(_.id);if(ne===I)return;const pe=T.placement[ne];pe!==void 0&&pe!==T.placement[I]&&E(e,I,pe,O),B.reorder(I,ne);return}const M=l(p);if(M===null)return;if(M.region!=="center"){Y(e,I,M.paneId,M.region,O);return}E(e,I,M.paneId,O);const te=((ae=P.getState().layouts[e])==null?void 0:ae.placement)??{},oe=O.filter(ne=>ne!==I&&te[ne]===M.paneId).at(-1);oe!==void 0&&O.indexOf(I)<O.indexOf(oe)&&B.reorder(I,oe)},[e,l]);return{sensors:a,collisionDetection:i,onDragStart:u,onDragMove:f,onDragEnd:h,onDragCancel:m,draggedTab:o,preview:s}}const uu=b.lazy(()=>ve(()=>import("./ChatPanel-CtECldc3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])).then(e=>({default:e.ChatPanel}))),Zn=b.lazy(()=>ve(()=>import("./FilePanel-CzXhq3Hu.js"),__vite__mapDeps([15,1,5,6,2,16,10,11,3,12,13,17])).then(e=>({default:e.FilePanel}))),fu=b.lazy(()=>ve(()=>import("./TerminalPanel-CvJZUneu.js"),__vite__mapDeps([18,1,19,20,5,6,2,3,12,13,21])).then(e=>({default:e.TerminalPanel}))),pu=b.lazy(()=>ve(()=>import("./MoleculeViewerPanel-BuiEdCWP.js"),__vite__mapDeps([22,1,23,24,25,2,16,5,6,3,12,13,26])).then(e=>({default:e.MoleculeViewerPanel}))),hu={chat:uu,file:Zn,diff:Zn,terminal:fu,molecule:pu},at="var(--pane-strip-height)";function bn(e){return e===void 0?new Map:Fl(Zs(e.tree,new Set(Object.values(e.placement))))}function X(e){const t=(e*100).toFixed(4);return`${t.includes(".")?t.replace(/\.?0+$/,""):t}%`}function lr(e){if(e!==void 0)return{left:X(e.x),top:`calc(${X(e.y)} + ${at})`,width:X(e.width),height:`calc(${X(e.height)} - ${at})`}}function mu(e,t){const n=`${X(e.y)} + ${at}`,s=`${X(e.height)} - ${at}`,r=`calc((${s}) / 2)`;switch(t){case"left":return{left:X(e.x),top:`calc(${n})`,width:X(e.width/2),height:`calc(${s})`};case"right":return{left:X(e.x+e.width/2),top:`calc(${n})`,width:X(e.width/2),height:`calc(${s})`};case"top":return{left:X(e.x),top:`calc(${n})`,width:X(e.width),height:r};case"bottom":return{left:X(e.x),top:`calc(${n} + (${s}) / 2)`,width:X(e.width),height:r};case"center":return{left:X(e.x),top:`calc(${n})`,width:X(e.width),height:`calc(${s})`}}}function gu(e){const t=bn(e);return[...t].map(([n,s])=>({paneId:n,stripStyle:{left:X(s.x),top:X(s.y),width:X(s.width),height:at},focused:t.size>1&&(e==null?void 0:e.focusedPaneId)===n}))}function _u(e){if(e===void 0)return[];const t=Zs(e.tree,new Set(Object.values(e.placement)));return t!==e.tree?[]:Ll(t)}function yu(e,t){return(t==null?void 0:t.placement[e])??null}function wu(e,t,n){const s=bn(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:lr(o===void 0?void 0:s.get(o)),visible:o!==void 0&&(n==null?void 0:n.activeByPane[o])===r.id}})}const bu="_divider_4eg4l_9",vu="_vertical_4eg4l_26",xu="_horizontal_4eg4l_41",Ht={divider:bu,vertical:vu,horizontal:xu};function Su({cwd:e,dividers:t,hostRef:n}){const s=P(a=>a.resizeDivider),r=b.useRef(0);function o(a,i){var p;const l=(p=n.current)==null?void 0:p.getBoundingClientRect();if(!l)return;a.preventDefault(),a.stopPropagation();const u=i.direction==="row",f=u?i.splitRect.width*l.width:i.splitRect.height*l.height;if(f<=0)return;r.current=u?a.clientX:a.clientY,document.body.style.cursor=u?"col-resize":"row-resize",document.body.style.userSelect="none";const m=y=>{const _=u?y.clientX:y.clientY,v=_-r.current;r.current=_,s(e,i.splitPath,i.boundaryIndex,v/f)},h=()=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",h),document.body.style.cursor="",document.body.style.userSelect=""};window.addEventListener("pointermove",m),window.addEventListener("pointerup",h)}return t.map(a=>{const i=a.direction==="row";return c.jsx("div",{className:L(Ht.divider,i?Ht.vertical:Ht.horizontal),style:i?{left:`${a.rect.x*100}%`,top:`${a.rect.y*100}%`,height:`${a.rect.height*100}%`}:{left:`${a.rect.x*100}%`,top:`${a.rect.y*100}%`,width:`${a.rect.width*100}%`},role:"separator","aria-orientation":i?"vertical":"horizontal",onPointerDown:l=>o(l,a)},`${a.splitPath.join(".")}:${a.boundaryIndex}`)})}const ku=b.lazy(()=>ve(()=>import("./TextViewer-WeseUSSg.js"),__vite__mapDeps([27,1,28,2,5,6,29,25,3,12,13,30])).then(e=>({default:e.TextViewer}))),Iu=b.lazy(()=>ve(()=>import("./MarkdownFileViewer-CPHS_Npv.js"),__vite__mapDeps([31,1,28,2,5,6,29,4,7,8,9,3,12,13,32])).then(e=>({default:e.MarkdownFileViewer}))),Tu=b.lazy(()=>ve(()=>import("./ImageViewer-QvSUEaaQ.js"),__vite__mapDeps([33,1,25,2,5,6,3,12,13,34])).then(e=>({default:e.ImageViewer}))),Eu=b.lazy(()=>ve(()=>import("./VideoViewer-CaCi8C8s.js"),__vite__mapDeps([35,1,25,2,5,6,3,12,13,36])).then(e=>({default:e.VideoViewer}))),ju=b.lazy(()=>ve(()=>import("./BinaryFallbackViewer-DekY7VRF.js"),__vite__mapDeps([37,1,25,2,3,5,6,12,13,38])).then(e=>({default:e.BinaryFallbackViewer}))),Rm={text:ku,markdown:Iu,image:Tu,video:Eu,binary:ju},Cu={md:"markdown",markdown:"markdown",mdx:"markdown",png:"image",jpg:"image",jpeg:"image",gif:"image",webp:"image",svg:"image",bmp:"image",ico:"image",avif:"image",mp4:"video",webm:"video",mov:"video",m4v:"video",ogv:"video",pdf:"binary",zip:"binary",gz:"binary",tar:"binary",exe:"binary",wasm:"binary",woff:"binary",woff2:"binary",ttf:"binary",otf:"binary"},Ru=[["image/","image"],["video/","video"]];function dr(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const Nu={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},Du={poscar:!0,contcar:!0};function ur(e){if(Nu[dr(e)])return!0;const t=e.split("/").pop()??e;return!!Du[t.toLowerCase()]}function Nm(e,t={}){const n=Cu[dr(e)];if(n)return n;const s=t.mimeHint??"";for(const[r,o]of Ru)if(s.startsWith(r))return o;return t.isBinary?"binary":"text"}function vn(e,t,n){ur(e)?pr(e,t,n):fr(e,t,n)}function fr(e,t,n){const s=e.split("/").pop()||e;j.getState().open({id:Z.file(e),kind:"file",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}function pr(e,t,n){const s=e.split("/").pop()||e;j.getState().open({id:Z.molecule(e),kind:"molecule",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}const sn="data-pane-drop";function Mu(e){return{[sn]:e}}function Pu(e,t){if(e===null)return null;for(const n of e.querySelectorAll(`[${sn}]`)){const s=n.getBoundingClientRect(),r={left:s.left,top:s.top,width:s.width,height:s.height},o=n.getAttribute(sn);if(o!==null&&o!==""&&nu(r,t))return{paneId:o,bounds:r}}return null}function Au(e){const{tabs:t}=j.getState(),n=s=>t.some(r=>r.id===s)?s:null;return e.kind==="chat"?n(Z.chat(e.value)):n(Z.file(e.value))??n(Z.molecule(e.value))}function $u(e,t,n,s,r){const o=P.getState().layouts[t];if(o===void 0)return;const a=j.getState().tabs.filter(f=>f.workspaceCwd===t).map(f=>f.id),i=Au(e);if(i!==null){if(nn(s,n,i,o.placement))return;const{moveTab:f,splitWithTab:m}=P.getState();s==="center"?f(t,i,n,a):m(t,i,n,s,a);return}let l=n;if(s!=="center"&&(l=P.getState().splitEmpty(t,n,s)),l===null)return;if(e.kind==="path"){vn(e.value,t,l);return}const u=D.getState().sessions[e.value];u!==void 0&&Tt(u,r,l)}function zu(e,t){const[n,s]=b.useState(null),r=ct(),o=b.useCallback(u=>{if(e===null)return null;const f=P.getState().layouts[e];if(f===void 0)return null;const m={x:u.clientX,y:u.clientY},h=Pu(t.current,m);return h===null?null:{paneId:h.paneId,region:ou(f.tree,h.paneId,m,h.bounds)}},[e,t]),a=b.useCallback(u=>{if(cr(u.dataTransfer.types)===null)return;u.preventDefault(),u.dataTransfer.dropEffect="copy";const f=o(u);s(m=>(m==null?void 0:m.paneId)===(f==null?void 0:f.paneId)&&(m==null?void 0:m.region)===(f==null?void 0:f.region)?m:f)},[o]),i=b.useCallback(u=>{u.currentTarget.contains(u.relatedTarget)||s(null)},[]),l=b.useCallback(u=>{const f=ru(u.dataTransfer.types,h=>u.dataTransfer.getData(h));if(f===null)return;u.preventDefault(),s(null);const m=o(u);m===null||e===null||$u(f,e,m.paneId,m.region,r)},[e,r,o]);return{preview:n,onDragOver:a,onDragLeave:i,onDrop:l}}function Bu(e,t,n){if(e.kind!=="chat"||n||t===void 0)return null;const s=Fe(t);return s==="running"||s==="error"?s:null}const qu="_strip_16ago_1",Ou="_tabs_16ago_13",Fu="_paneStrip_16ago_23",Lu="_focused_16ago_28",Wu="_tab_16ago_13",Hu="_tabActive_16ago_51",Uu="_tabIcon_16ago_55",Vu="_tabLabel_16ago_60",Ku="_tabLabelMono_16ago_65",Gu="_tabDot_16ago_70",Xu="_tabClose_16ago_77",Yu="_newTab_16ago_98",Ju="_stripActions_16ago_106",Zu="_splitAction_16ago_113",Qu="_itemIcon_16ago_118",J={strip:qu,tabs:Ou,paneStrip:Fu,focused:Lu,tab:Wu,tabActive:Hu,tabIcon:Uu,tabLabel:Vu,tabLabelMono:Ku,tabDot:Gu,tabClose:Xu,newTab:Yu,stripActions:Ju,splitAction:Zu,itemIcon:Qu},hr={chat:ws,file:jt,diff:ys,terminal:_s,molecule:ln},ef={file:!0,diff:!0};function tf({tab:e,active:t}){const n=j(h=>h.activate),s=hr[e.kind],r=D(h=>{var p;return e.kind==="chat"?(p=h.sessions[e.data.sessionId])==null?void 0:p.status:void 0}),o=Bu(e,r,t),{attributes:a,listeners:i,setNodeRef:l,transform:u,transition:f,isDragging:m}=xo({id:e.id,data:{type:"tab"}});return c.jsxs("div",{ref:l,className:L(J.tab,t&&J.tabActive),style:{transform:So.Transform.toString(u),transition:f,opacity:m?.5:1},onClick:()=>n(e.id),onAuxClick:h=>{h.button===1&&e.closable&&en(e.id)},title:e.label,...a,...i,children:[c.jsx("span",{className:J.tabIcon,children:c.jsx(re,{icon:s,size:"xs",color:t&&e.kind==="chat"?"var(--pi-color-accentBright)":"currentColor","aria-hidden":!0})}),c.jsx("span",{className:L(J.tabLabel,ef[e.kind]&&J.tabLabelMono),children:e.label}),c.jsx(Nt,{status:o,className:J.tabDot}),e.closable&&c.jsx("span",{className:J.tabClose,onClick:h=>{h.stopPropagation(),en(e.id)},children:c.jsx(re,{icon:Kt,size:"xs","aria-hidden":!0})})]})}function nf({workspaceCwd:e,paneId:t}){const n=s=>()=>{e!==null&&s(e,t??void 0)};return c.jsxs(Ct,{children:[c.jsx(Rt,{asChild:!0,children:c.jsx(be,{className:J.newTab,size:"xs",hoverBase:"var(--pi-color-background)",title:"New tab",disabled:!e,children:c.jsx(re,{icon:vt,size:"sm","aria-hidden":!0})})}),c.jsxs(Pt,{minWidth:160,sideOffset:4,children:[c.jsxs(V,{onSelect:n(it),children:[c.jsx(re,{icon:ws,size:"xs",className:J.itemIcon,"aria-hidden":!0}),"New chat"]}),c.jsxs(V,{onSelect:n(sr),children:[c.jsx(re,{icon:_s,size:"xs",className:J.itemIcon,"aria-hidden":!0}),"New terminal"]}),c.jsxs(V,{onSelect:n(Ql),children:[c.jsx(re,{icon:ln,size:"xs",className:J.itemIcon,"aria-hidden":!0}),"New molecule view"]})]})]})}function sf({cwd:e,paneId:t}){const n=P(i=>{var l;return e===null||(l=i.layouts[e])==null?void 0:l.tree}),s=i=>()=>{if(e===null||t===null)return;const l=P.getState().splitEmpty(e,t,i);l!==null&&it(e,l)},r=i=>n===void 0||t===null?"Open a workspace to split":rt(n,t,i)?null:"Maximum split depth reached",o=r("right"),a=r("bottom");return c.jsxs("div",{className:J.stripActions,children:[c.jsx(be,{className:J.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:o??"Split right",disabled:o!==null,onClick:s("right"),children:c.jsx(re,{icon:Kr,size:"sm","aria-hidden":!0})}),c.jsx(be,{className:J.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:a??"Split down",disabled:a!==null,onClick:s("bottom"),children:c.jsx(re,{icon:Gr,size:"sm","aria-hidden":!0})})]})}function Qn({cwd:e,paneId:t,style:n,focused:s=!1}){const r=j(f=>f.tabs),o=P(f=>f.focusPane),a=P(f=>{var m;return e===null||(m=f.layouts[e])==null?void 0:m.placement}),i=P(f=>{var m;return e===null||t===null||(m=f.layouts[e])==null?void 0:m.activeByPane[t]}),l=t===null?[]:r.filter(f=>(a==null?void 0:a[f.id])===t),{setNodeRef:u}=bs({id:`strip:${t??"none"}`,disabled:t===null,data:{type:"strip",paneId:t}});return c.jsxs("div",{ref:u,className:L(J.strip,J.paneStrip,s&&J.focused),style:n,onPointerDown:()=>{e!==null&&t!==null&&o(e,t)},children:[c.jsx("div",{className:J.tabs,children:c.jsx(bo,{items:l.map(f=>f.id),strategy:vo,children:l.map(f=>c.jsx(tf,{tab:f,active:f.id===i},f.id))})}),c.jsx(nf,{workspaceCwd:e,paneId:t}),c.jsx(sf,{cwd:e,paneId:t})]})}const rf="_preview_1txmv_1",of="_chip_1txmv_9",af="_chipLabel_1txmv_23",rn={preview:rf,chip:of,chipLabel:af};function cf({rect:e,region:t}){return c.jsx("div",{className:rn.preview,style:mu(e,t)})}function lf({tab:e}){const t=hr[e.kind];return c.jsxs("div",{className:rn.chip,children:[c.jsx(t,{size:13}),c.jsx("span",{className:rn.chipLabel,children:e.label})]})}const df="_area_9sawz_1",uf="_panel_9sawz_11",ff="_dropZone_9sawz_27",pf="_active_9sawz_31",hf="_empty_9sawz_35",mf="_emptyStack_9sawz_47",gf="_emptyTitle_9sawz_61",_f="_emptyHint_9sawz_65",Se={area:df,panel:uf,dropZone:ff,active:pf,empty:hf,emptyStack:mf,emptyTitle:gf,emptyHint:_f};function yf({paneId:e,style:t}){const{setNodeRef:n}=bs({id:`pane:${e}`,data:{type:"pane",paneId:e}});return c.jsx("div",{ref:n,className:Se.dropZone,style:t,...Mu(e)})}function wf(){const e=j(_=>_.tabs),t=j(_=>_.activeWorkspaceCwd),n=P(_=>t===null?void 0:_.layouts[t]),s=z(_=>_.status),r=R(_=>_.openCwdPicker),o=P(_=>_.focusPane),a=e.some(_=>_.workspaceCwd===t),i=b.useRef(null),l=b.useMemo(()=>wu(e,t,n),[e,t,n]),u=b.useMemo(()=>gu(n),[n]),f=b.useMemo(()=>_u(n),[n]),m=b.useMemo(()=>bn(n),[n]),h=du(t),p=zu(t,i),y=h.preview??p.preview;return c.jsxs(ko,{sensors:h.sensors,collisionDetection:h.collisionDetection,onDragStart:h.onDragStart,onDragMove:h.onDragMove,onDragEnd:h.onDragEnd,onDragCancel:h.onDragCancel,children:[c.jsxs("div",{className:Se.area,ref:i,onDragOver:p.onDragOver,onDragLeave:p.onDragLeave,onDrop:p.onDrop,children:[u.length===0?c.jsx(Qn,{cwd:t,paneId:null}):u.map(_=>c.jsx(Qn,{cwd:t,paneId:_.paneId,style:_.stripStyle,focused:_.focused},_.paneId)),t!==null&&f.length>0&&c.jsx(Su,{cwd:t,dividers:f,hostRef:i}),u.map(_=>c.jsx(yf,{paneId:_.paneId,style:lr(m.get(_.paneId))},`drop-${_.paneId}`)),y!==null&&m.has(y.paneId)&&c.jsx(cf,{rect:m.get(y.paneId),region:y.region}),t===null&&c.jsxs("div",{className:Se.emptyStack,children:[c.jsx("div",{className:Se.emptyTitle,children:"No workspace open"}),c.jsx("div",{className:Se.emptyHint,children:"Open a project folder to start a chat."}),c.jsx(ue,{size:"sm",variant:"secondary",leftIcon:c.jsx(Xr,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>r(),children:"Open Workspace"})]}),t!==null&&!a&&c.jsx("div",{className:Se.empty,children:"No open tabs in this workspace"}),e.map((_,v)=>{const I=hu[_.kind],T=l[v],B=n==null?void 0:n.placement[_.id];return c.jsx("div",{className:L(Se.panel,T.visible&&Se.active),style:T.style,onPointerDown:()=>{t!==null&&B!==void 0&&o(t,B)},children:c.jsx(b.Suspense,{fallback:c.jsx(js,{size:"md"}),children:c.jsx(I,{tab:_,owningPaneId:yu(_.id,n)})})},_.id)})]}),c.jsx(Io,{dropAnimation:null,children:h.draggedTab&&c.jsx(lf,{tab:h.draggedTab})})]})}const Re={fileRead:e=>["file","read",e],fileDownload:e=>["file","download",e],fileText:(e,t)=>["file","text",e,t],fileDiff:(e,t,n)=>["file","diff",e,t,n],fileDiffByPath:e=>["file","diff",e],explorer:e=>["explorer",e],agentList:()=>["agents","list"],providerModels:e=>["providers","models",e],agentTimeline:e=>["agents","timeline",e],agentCommands:e=>["agents","commands",e]};function bf(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function vf(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function mr(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:vf(r.map(bf))}}function xf(e,t=!0){const n=z(s=>s.client);return zr({queryKey:Re.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return mr(n,e)},enabled:!!n&&!!e&&t})}function Sf(e){const t=z(r=>r.client),n=b.useMemo(()=>Array.from(e),[e]),s=Br({queries:n.map(r=>({queryKey:Re.explorer(r),queryFn:()=>{if(!t)throw new Error("not connected");return mr(t,r)},enabled:!!t&&!!r}))});return b.useMemo(()=>{const r=new Map;return n.forEach((o,a)=>{const i=s[a];r.set(o,{listing:i==null?void 0:i.data,isLoading:!!(i!=null&&i.isLoading),isError:!!(i!=null&&i.isError),error:i==null?void 0:i.error})}),r},[n,s])}function kf(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function If(e,t){const n=new Set,s=e.connection.onSessionMessage(r=>{const o=r;kf(o)&&n.has(o.path)&&t(o.path)});return{sync(r){for(const o of n)r.has(o)||(n.delete(o),e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{}));for(const o of r)n.has(o)||(n.add(o),e.connection.request("file_watch_subscribe",{path:o}).then(a=>{const i=a;(i==null?void 0:i.ok)===!1&&console.warn(`useExplorerWatch: ${i.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 Tf(e){const t=z(a=>a.client),n=He(),s=b.useRef(null),r=b.useRef(null),o=Array.from(e).toSorted().join("\0");b.useEffect(()=>{var a,i;t&&(r.current!==t&&((a=s.current)==null||a.dispose(),s.current=If(t,l=>{n.invalidateQueries({queryKey:Re.explorer(l)})}),r.current=t),(i=s.current)==null||i.sync(new Set(o?o.split("\0"):[])))},[t,o,n]),b.useEffect(()=>()=>{var a;(a=s.current)==null||a.dispose(),s.current=null,r.current=null},[])}const es=new WeakMap;function ts(e){let t=es.get(e);return t||(t=new $c(e),t.start(),es.set(e,t)),t}function Ef(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 gr(){const e=z(r=>r.daemon),t=He(),n=b.useCallback(async(r,o)=>{if(!e)throw new Error("not connected");const a=r?`${r}/${o.name}`:o.name,i=new Uint8Array(await o.arrayBuffer());await ts(e).upload(a,i),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=b.useCallback(async r=>{if(!e)throw new Error("not connected");const o=await ts(e).download(r);Ef(o.bytes,o.fileName||r.split("/").pop()||"download",o.mimeType)},[e]);return{upload:n,saveToDisk:s}}const ns={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},fe=ke()(e=>({subscribedCwd:null,changes:[],ignored:[],...ns,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],ignored:[],...ns});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 Dm(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function _e(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function jf(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function Mm(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 ss(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:_e(t.path);if(s===_e(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 rs(e,t){if(e.kind!=="file"&&e.kind!=="directory")return null;const n=e.kind==="directory"?e.path:_e(e.path);return n!==t&&!n.startsWith(`${t}/`)?null:n}const Cf={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 Rf(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(Cf[r]??r??"Failed to move")}return s.destination??n}function os(e,t){return t===0?e:`${e} — closed ${t} ${t===1?"diff tab":"diff tabs"}`}function Nf(e){return`${e.kind}:${e.path}`}function _r(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function yr(e,t,n,s,r,o,a){var l;(o==null?void 0:o.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:o.kind,parentPath:t});const i=r.get(t);if(!i||i.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(i.isError){const u=i.error instanceof Error?i.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:u});return}for(const u of((l=i.listing)==null?void 0:l.entries)??[])Df(e,t,u,n,s,r,o,a)}function Df(e,t,n,s,r,o,a,i){const l=_r(t,n.name),u=n.kind==="directory",f=u&&r.has(l);l===i?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&&yr(e,l,s+1,r,o,a,i)}function Mf(e,t,n,s,r){if(!e)return[];const o=t.has(e),a=[{kind:"directory",path:e,name:e.split("/").pop()||e,depth:0,expanded:o}];return o&&yr(a,e,1,t,n,s,r),a}const Pf=()=>{};function Af(e,t){return e===void 0?t:e==="deleted"||t==="deleted"?"deleted":e==="added"||t==="added"?"added":"modified"}function $f(e){return e==="added"?"added":"modified"}function zf(e,t){if(!e||t.length===0)return Pf;const n=e.replace(/\/+$/,""),s=new Map,r=new Map,o=[];for(const a of t){const i=a.path.endsWith("/"),l=i?a.path.slice(0,-1):a.path;if(!l)continue;const u=`${n}/${l}`;s.set(u,Af(s.get(u),a.status)),i&&o.push(u);const f=$f(a.status);let m=_e(u);for(;m.length>n.length&&m.startsWith(n);){const h=r.get(m);r.set(m,h===void 0||h===f?f:"modified");const p=_e(m);if(p===m)break;m=p}}return a=>{const i=s.get(a)??r.get(a);if(i!==void 0)return i;for(const l of o)if(a.startsWith(`${l}/`))return"added"}}const Bf=()=>!1;function qf(e,t){if(!e||t.length===0)return Bf;const n=e.replace(/\/+$/,""),s=new Set,r=[];for(const o of t){const a=o.endsWith("/"),i=a?o.slice(0,-1):o;if(!i)continue;const l=`${n}/${i}`;s.add(l),a&&r.push(`${l}/`)}return o=>{if(s.has(o))return!0;for(const a of r)if(o.startsWith(a))return!0;return!1}}const Of="_container_1wywk_1",Ff="_header_1wywk_7",Lf="_uploadButton_1wywk_14",Wf="_hiddenInput_1wywk_33",Hf="_status_1wywk_36",Uf="_statusError_1wywk_37",Vf="_rowAction_1wywk_50",Kf="_item_1wywk_53",Gf="_list_1wywk_60",Xf="_active_1wywk_83",Yf="_selected_1wywk_88",Jf="_dropTarget_1wywk_92",Zf="_rootItem_1wywk_99",Qf="_dirName_1wywk_98",ep="_chevronSlot_1wywk_104",tp="_chevron_1wywk_104",np="_chevronOpen_1wywk_115",sp="_icon_1wywk_118",rp="_name_1wywk_125",op="_gitAdded_1wywk_140",ap="_gitModified_1wywk_145",ip="_gitDeleted_1wywk_150",cp="_hiddenEntry_1wywk_162",lp="_statusRow_1wywk_171",dp="_statusRowError_1wywk_182",up="_draftInput_1wywk_185",A={container:Of,header:Ff,uploadButton:Lf,hiddenInput:Wf,status:Hf,statusError:Uf,rowAction:Vf,item:Kf,list:Gf,active:Xf,selected:Yf,dropTarget:Jf,rootItem:Zf,dirName:Qf,chevronSlot:ep,chevron:tp,chevronOpen:np,icon:sp,name:rp,gitAdded:op,gitModified:ap,gitDeleted:ip,hiddenEntry:cp,statusRow:lp,statusRowError:dp,draftInput:up};function fp({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[r,o]=b.useState("");return c.jsxs("div",{className:A.item,style:t,onClick:a=>a.stopPropagation(),children:[c.jsx("span",{className:A.chevronSlot}),c.jsx("span",{className:A.icon,children:e==="directory"?c.jsx(De,{size:16}):c.jsx(jt,{size:16})}),c.jsx("input",{className:A.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:r,onChange:a=>o(a.target.value),onKeyDown:a=>{if(a.key==="Enter"){a.preventDefault();const i=r.trim();i?n(i):s()}else a.key==="Escape"&&(a.preventDefault(),s())},onBlur:s})]})}function pp({name:e,isDirectory:t,indentStyle:n,onSubmit:s,onCancel:r}){const[o,a]=b.useState(e),i=b.useRef(null);return b.useEffect(()=>{const l=i.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:A.item,style:n,onClick:l=>l.stopPropagation(),children:[c.jsx("span",{className:A.chevronSlot}),c.jsx("span",{className:A.icon,children:t?c.jsx(De,{size:16}):c.jsx(jt,{size:16})}),c.jsx("input",{ref:i,className:A.draftInput,spellCheck:!1,value:o,onChange:l=>a(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 hp=14,mp={added:A.gitAdded,modified:A.gitModified,deleted:A.gitDeleted};function gp({row:e,active:t,selected:n,dropTarget:s,gitStatus:r,hidden:o,isRoot:a,onToggle:i,onOpenFile:l,onContextMenu:u,onSubmitDraft:f,onCancelDraft:m,onSubmitRename:h,onCancelRename:p,onDragStartRow:y,onDragEndRow:_}){const v={paddingLeft:8+e.depth*hp};if(e.kind==="loading")return c.jsx("div",{className:A.statusRow,style:v,children:"Loading…"});if(e.kind==="error")return c.jsx("div",{className:L(A.statusRow,A.statusRowError),style:v,children:e.message??"failed to load"});if(e.kind==="draft")return c.jsx(fp,{draftKind:e.draftKind,indentStyle:v,onSubmit:T=>f(e.parentPath,T),onCancel:m});if(e.kind==="rename")return c.jsx(pp,{name:e.name,isDirectory:e.isDirectory,indentStyle:v,onSubmit:T=>h(e.path,T),onCancel:p});const I=e.kind==="directory";return c.jsxs("div",{className:L(A.item,a&&A.rootItem,t&&A.active,n&&A.selected,s&&A.dropTarget,r&&mp[r],o&&A.hiddenEntry),style:v,title:e.path,draggable:!a,onDragStart:T=>y(e.path,I,T),onDragEnd:_,onClick:()=>I?i(e.path):l(e.path),onContextMenu:T=>{T.preventDefault(),T.stopPropagation(),u(e.path,I,T.clientX,T.clientY)},children:[c.jsx("span",{className:A.chevronSlot,children:I&&c.jsx(cn,{size:14,className:L(A.chevron,e.expanded&&A.chevronOpen)})}),c.jsx("span",{className:A.icon,children:I?c.jsx(De,{size:16}):c.jsx(jt,{size:16})}),c.jsx("span",{className:I?A.dirName:A.name,children:e.name}),c.jsx(be,{className:A.rowAction,title:"Actions",onClick:T=>{T.stopPropagation();const B=T.currentTarget.getBoundingClientRect();u(e.path,I,B.left,B.bottom)},children:c.jsx(on,{size:14})})]})}async function as(e){var n;if((n=navigator.clipboard)!=null&&n.writeText)try{await navigator.clipboard.writeText(e);return}catch{}const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();try{if(!document.execCommand("copy"))throw new Error('execCommand("copy") failed')}finally{t.remove()}}const _p={empty_path:"Nothing to delete.",not_found:"That item no longer exists."};async function yp(e,t){const n=await e.connection.request("file_delete_request",{path:t});if(!n.ok){const s=n.error??"";throw new Error(_p[s]??s??"Failed to delete")}}function wp(){const e=R(M=>M.fileMenu),t=R(M=>M.closeFileMenu),n=z(M=>M.client),s=se(M=>M.startDraft),r=se(M=>M.startRename),o=se(M=>M.rootPath),a=j(M=>M.activeWorkspaceCwd),{saveToDisk:i}=gr(),l=He(),u=b.useRef(null),[f,m]=b.useState(!1);if(b.useEffect(()=>{m(e!==null)},[e]),!e)return null;const h=e.path.split("/").pop()||e.path;function p(M){m(M),M||t()}function y(){e&&(t(),vn(e.path,a||"~"))}function _(){e&&(t(),pr(e.path,a||"~"))}function v(){e&&(t(),fr(e.path,a||"~"))}async function I(){if(e){t();try{await as(e.path)}catch{window.alert("Failed to copy to clipboard.")}}}async function T(){if(e){t();try{await as(jf(e.path,o)||"/")}catch{window.alert("Failed to copy to clipboard.")}}}async function B(){if(e){t();try{await i(e.path)}catch(M){window.alert(`Failed to download: ${M instanceof Error?M.message:String(M)}`)}}}async function O(){if(!e)return;const M=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${M}? "${h}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{await yp(n,e.path),await l.invalidateQueries({queryKey:["explorer"]}),j.getState().closeByPathPrefix(e.path)}catch(te){window.alert(`Failed to delete: ${te instanceof Error?te.message:String(te)}`)}}function E(M){if(!e)return;const te=e.isDirectory?e.path:_e(e.path);t(),s(te,M)}function Y(){e&&(t(),r(e.path))}return c.jsxs(Ct,{open:f,onOpenChange:p,modal:!1,children:[c.jsx(Rt,{asChild:!0,children:c.jsx(yn,{ref:u,x:e.x,y:e.y})}),c.jsx(Pt,{minWidth:140,children:e.background?c.jsxs(c.Fragment,{children:[c.jsxs(V,{onSelect:()=>E("file"),children:[c.jsx(Gt,{size:13}),"New File"]}),c.jsxs(V,{onSelect:()=>E("directory"),children:[c.jsx(xt,{size:13}),"New Folder"]}),c.jsx(je,{}),c.jsxs(V,{onSelect:I,children:[c.jsx(ft,{size:13}),"Copy Current Directory Path"]}),c.jsxs(V,{onSelect:T,children:[c.jsx(ft,{size:13}),"Copy Current Directory Relative Path"]})]}):c.jsxs(c.Fragment,{children:[!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(V,{onSelect:y,children:[c.jsx(Yr,{size:13}),"Open"]}),c.jsxs(V,{onSelect:_,children:[c.jsx(ln,{size:13}),"Open in MolViewer"]}),ur(e.path)&&c.jsxs(V,{onSelect:v,children:[c.jsx(Jr,{size:13}),"Open as Text"]}),c.jsx(je,{})]}),e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(V,{onSelect:()=>E("file"),children:[c.jsx(Gt,{size:13}),"New File"]}),c.jsxs(V,{onSelect:()=>E("directory"),children:[c.jsx(xt,{size:13}),"New Folder"]}),c.jsx(je,{})]}),c.jsxs(V,{onSelect:I,children:[c.jsx(ft,{size:13}),"Copy Absolute Path"]}),c.jsxs(V,{onSelect:T,children:[c.jsx(ft,{size:13}),"Copy Relative Path"]}),c.jsx(je,{}),!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(V,{onSelect:B,children:[c.jsx(Zr,{size:13}),"Download"]}),c.jsx(je,{})]}),c.jsxs(V,{onSelect:Y,children:[c.jsx(gs,{size:13}),"Rename"]}),c.jsxs(V,{danger:!0,onSelect:O,children:[c.jsx(an,{size:13}),"Delete"]})]})})]})}const bp={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 vp extends Error{constructor(t,n){super(n),this.code=t,this.name="CreateEntryError"}}async function wr(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 vp(o,bp[o]??o??"Failed to create")}return r.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const xp=28,Ye="application/x-pi-studio-path",Ut="Files";function Sp(){const e=z(w=>w.client),t=se(w=>w.rootPath),n=se(w=>w.expanded),s=se(w=>w.setRoot),r=se(w=>w.toggle),o=se(w=>w.draft),a=se(w=>w.startDraft),i=se(w=>w.cancelDraft),l=se(w=>w.renaming),u=se(w=>w.cancelRename),f=se(w=>w.selected),m=se(w=>w.setSelected),h=j(w=>w.activeWorkspaceCwd),p=j(w=>w.tabs.find(k=>k.id===w.activeTabId)),y=fe(w=>w.changes),_=fe(w=>w.ignored),{upload:v}=gr(),I=R(w=>w.openFileMenu),T=He(),[B,O]=b.useState(null),[E,Y]=b.useState(null),M=b.useRef(null),te=b.useRef(null),oe=b.useRef(null),ae=b.useRef(null),ne=(p==null?void 0:p.kind)==="file"||(p==null?void 0:p.kind)==="molecule"?p.data.path:null,pe=f?f.isDirectory?f.path:_e(f.path):t,dt=b.useRef(null);b.useEffect(()=>{if(!e)return;const w=h||"~";dt.current!==w&&(dt.current=w,ad(e,w).then(k=>s(k)))},[e,h,s]);const C=Sf(n);Tf(n);const le=b.useMemo(()=>Mf(t,n,C,o,l),[t,n,C,o,l]),kr=b.useMemo(()=>zf(t,y),[t,y]),Ir=b.useMemo(()=>qf(t,_),[t,_]),Sn=qr({count:le.length,getScrollElement:()=>te.current,estimateSize:()=>xp,overscan:12,getItemKey:w=>{const k=le[w];return k?Nf(k):w}});function At(w){vn(w,h||"~")}function Tr(w,k,q){q.dataTransfer.setData(Ye,w),k||q.dataTransfer.setData(lt.path,w),q.dataTransfer.effectAllowed=k?"move":"copyMove",oe.current=w}function Er(){oe.current=null}function $t(){Y(null),ae.current&&(clearTimeout(ae.current.timer),ae.current=null)}function kn(w){var q;if(((q=ae.current)==null?void 0:q.path)===w.path||(ae.current&&clearTimeout(ae.current.timer),ae.current=null,w.kind!=="directory"||w.expanded))return;const k=window.setTimeout(()=>r(w.path),700);ae.current={path:w.path,timer:k}}async function In(w,k){if(!e)throw new Error("Not connected.");const q=await Rf(e,w,k),N=_e(q);await T.invalidateQueries({queryKey:Re.explorer(_e(w))}),await T.invalidateQueries({queryKey:Re.explorer(N)}),se.getState().repathAfterMove(w,q,N);const H=j.getState().tabs.filter(de=>{if(de.kind!=="file"&&de.kind!=="diff"&&de.kind!=="molecule")return!1;const ut=de.data.path;return ut===w||((ut==null?void 0:ut.startsWith(`${w}/`))??!1)}),he=H.some(de=>(de.kind==="file"||de.kind==="molecule")&&de.data.path===w),Q=H.filter(de=>de.kind==="diff").length;return j.getState().closeByPathPrefix(w),he&&At(q),{destination:q,closedDiffs:Q}}async function jr(w,k){const q=ss(w,k,t);if(!q||!e)return;const N=w.split("/").pop()??w;O({text:`Moving ${N}…`,error:!1});try{const{destination:H,closedDiffs:he}=await In(w,q.destination);O({text:os(`Moved to ${_e(H).split("/").pop()||"/"}`,he),error:!1})}catch(H){O({text:H instanceof Error?H.message:"Failed to move",error:!0})}}async function Cr(w,k){const q=(o==null?void 0:o.kind)??"file";if(i(),!!e)try{const N=await wr(e,w,k,q);await T.invalidateQueries({queryKey:Re.explorer(w)}),O({text:`Created ${N}`,error:!1}),q==="file"&&At(N)}catch(N){O({text:N instanceof Error?N.message:"Failed to create",error:!0})}}async function Rr(w,k){if(u(),!e)return;const q=_r(_e(w),k);O({text:`Renaming ${w.split("/").pop()}…`,error:!1});try{const{destination:N,closedDiffs:H}=await In(w,q);O({text:os(`Renamed to ${N.split("/").pop()}`,H),error:!1})}catch(N){O({text:N instanceof Error?N.message:"Failed to rename",error:!0})}}async function Tn(w,k){var he;if(!k.length||!w)return;const q=(he=C.get(w))==null?void 0:he.listing,N=new Set((q==null?void 0:q.entries.map(Q=>Q.name))??[]),H=k.filter(Q=>N.has(Q.name));if(H.length>0){const Q=H.map(de=>de.name).join(", ");if(!window.confirm(`Overwrite ${H.length>1?"these files":"this file"}? ${Q}`))return}O({text:`Uploading ${k.length} file${k.length>1?"s":""}…`,error:!1});try{for(const Q of k)await v(w,Q);O({text:`Uploaded ${k.length} file${k.length>1?"s":""}`,error:!1})}catch(Q){O({text:`Upload failed: ${Q instanceof Error?Q.message:"unknown"}`,error:!0})}}function En(w,k){if(w.preventDefault(),w.dataTransfer.types.includes(Ye)){const H=w.dataTransfer.getData(Ye)||oe.current;$t(),H&&jr(H,k??{kind:"directory",path:t});return}if($t(),!w.dataTransfer.types.includes(Ut))return;const q=k?rs(k,t):t;if(!q)return;const N=Array.from(w.dataTransfer.files);N.length&&Tn(q,N)}function Nr(w){const k=w.dataTransfer.types.includes(Ye);!k&&!w.dataTransfer.types.includes(Ut)||(w.preventDefault(),w.dataTransfer.dropEffect=k?"move":"copy")}return e?c.jsxs("div",{className:A.container,onDragOver:Nr,onDragLeave:w=>{w.currentTarget.contains(w.relatedTarget)||$t()},onDrop:w=>En(w),children:[c.jsxs("div",{className:A.header,children:[c.jsx("button",{type:"button",className:A.uploadButton,onClick:()=>a(pe,"file"),disabled:!t,title:f?`New file in ${pe.split("/").pop()||"/"}`:"New file in workspace root",children:c.jsx(Gt,{size:14})}),c.jsx("button",{type:"button",className:A.uploadButton,onClick:()=>a(pe,"directory"),disabled:!t,title:f?`New folder in ${pe.split("/").pop()||"/"}`:"New folder in workspace root",children:c.jsx(xt,{size:14})}),c.jsxs("button",{type:"button",className:A.uploadButton,onClick:()=>{var w;return(w=M.current)==null?void 0:w.click()},disabled:!t,title:"Upload files to the workspace root",children:[c.jsx(Qr,{size:14}),c.jsx("span",{children:"Upload"})]}),c.jsx("input",{ref:M,type:"file",multiple:!0,className:A.hiddenInput,onChange:w=>{Tn(t,Array.from(w.target.files??[])),w.target.value=""}})]}),B&&c.jsx("div",{className:B.error?A.statusError:A.status,children:B.text}),c.jsxs("div",{className:A.list,ref:te,onContextMenu:w=>{w.preventDefault(),I(t,!0,w.clientX,w.clientY,!0)},children:[le.length===0&&c.jsx(Ce,{children:"No files loaded"}),c.jsx("div",{style:{position:"relative",height:Sn.getTotalSize()},children:Sn.getVirtualItems().map(w=>{const k=le[w.index];if(!k)return null;const q=k.path===t&&k.kind==="directory";return c.jsx("div",{"data-index":w.index,style:{position:"absolute",top:0,left:0,width:"100%",height:w.size,transform:`translateY(${w.start}px)`},onDragEnter:N=>{if(N.dataTransfer.types.includes(Ye)){const he=oe.current;if(!he)return;const Q=ss(he,k,t);Y(Q?k.path:null),kn(k);return}if(!N.dataTransfer.types.includes(Ut))return;const H=rs(k,t);Y(H?k.path:null),kn(k)},onDrop:N=>{N.stopPropagation(),En(N,k)},children:c.jsx(gp,{row:k,active:(k.kind==="file"||k.kind==="directory")&&k.path===ne,selected:(k.kind==="file"||k.kind==="directory")&&k.path===(f==null?void 0:f.path),gitStatus:!q&&(k.kind==="file"||k.kind==="directory")?kr(k.path):void 0,hidden:!q&&(k.kind==="file"||k.kind==="directory")&&(k.name.startsWith(".")||Ir(k.path)),isRoot:q,onToggle:N=>{m({path:N,isDirectory:!0}),r(N)},onOpenFile:N=>{m({path:N,isDirectory:!1}),At(N)},onContextMenu:(N,H,he,Q)=>I(N,H,he,Q,q),onSubmitDraft:(N,H)=>void Cr(N,H),onCancelDraft:i,onSubmitRename:(N,H)=>void Rr(N,H),onCancelRename:u,onDragStartRow:Tr,onDragEndRow:Er,dropTarget:(k.kind==="file"||k.kind==="directory")&&k.path===E})},w.key)})})]}),c.jsx(wp,{})]}):c.jsx(Ce,{children:"Connect to browse files"})}const kp="_list_1n3q6_1",Ip="_summary_1n3q6_4",Tp="_item_1n3q6_11",Ep="_badge_1n3q6_23",jp="_added_1n3q6_30",Cp="_modified_1n3q6_34",Rp="_deleted_1n3q6_38",Np="_name_1n3q6_42",Ae={list:kp,summary:Ip,item:Tp,badge:Ep,added:jp,modified:Cp,deleted:Rp,name:Np},Dp={added:"A",modified:"M",deleted:"D"};function Mp(){const t=j(o=>o.activeWorkspaceCwd)||"~",n=fe(o=>o.changes),s=j(o=>o.open);function r(o,a){s({id:Z.diff(o,a),kind:"diff",label:o.split("/").pop()||o,closable:!0,data:{path:o,staged:a},workspaceCwd:t})}return n.length===0?c.jsx(Ce,{children:"No changes detected"}):c.jsxs("div",{className:Ae.list,children:[c.jsxs("div",{className:Ae.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((o,a)=>c.jsxs("div",{className:Ae.item,onClick:()=>r(o.path,o.staged),children:[c.jsx("span",{className:L(Ae.badge,Ae[o.status]),children:Dp[o.status]}),c.jsx("span",{className:Ae.name,children:o.path})]},`${o.path}-${o.staged}-${a}`))]})}const Pp="_tabBar_1tvri_1",Ap="_tabBtn_1tvri_7",$p="_active_1tvri_23",zp="_refreshBtn_1tvri_27",Bp="_content_1tvri_31",Te={tabBar:Pp,tabBtn:Ap,active:$p,refreshBtn:zp,content:Bp};function qp(){const e=R(i=>i.rightSidebarTab),t=R(i=>i.setRightSidebarTab),s=j(i=>i.activeWorkspaceCwd)||"~",r=z(i=>i.client),o=He();function a(){o.invalidateQueries({queryKey:["explorer"]}),r&&s&&r.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return c.jsxs(rr,{children:[c.jsxs("div",{className:Te.tabBar,children:[c.jsxs("button",{type:"button",className:L(Te.tabBtn,e==="files"&&Te.active),onClick:()=>t("files"),children:[c.jsx(De,{size:13}),"Files"]}),c.jsxs("button",{type:"button",className:L(Te.tabBtn,e==="changes"&&Te.active),onClick:()=>t("changes"),children:[c.jsx(ys,{size:13}),"Changes"]}),c.jsx(ue,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:Te.refreshBtn,onClick:a,children:c.jsx(eo,{size:13})})]}),c.jsx("div",{className:Te.content,children:e==="files"?c.jsx(Sp,{}):c.jsx(Mp,{})})]})}const br=ke()(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}})}})),Op=12e3;function Fp(e,t){return e==="running"&&t!=="running"}function is(e,t){var s,r,o,a,i,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),((a=t.tokens)==null?void 0:a.total)!==void 0&&(n.totalTokens=t.tokens.total),((i=t.tokens)==null?void 0:i.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,D.getState().setModel(e,t.model)),br.getState().setStats(e,n)}function Lp(e){const t=z(i=>i.client),n=z(i=>i.status),s=D(i=>{var l;return e?((l=i.sessions[e])==null?void 0:l.agentId)??null:null}),r=D(i=>{var l;return e?(l=i.sessions[e])==null?void 0:l.status:void 0}),o=b.useRef(!1),a=b.useRef(void 0);b.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let i=!1;const l=async()=>{if(!o.current){o.current=!0;try{const f=await t.agent(s).sessionStats();i||is(e,f)}catch{}finally{o.current=!1}}};l();const u=setInterval(()=>void l(),Op);return()=>{i=!0,clearInterval(u)}},[n,t,e,s]),b.useEffect(()=>{const i=a.current;a.current=r,Fp(i,r)&&(n!=="open"||!t||!e||!s||(o.current=!1,t.agent(s).sessionStats().then(l=>is(e,l)).catch(()=>{})))},[r,n,t,e,s])}function Wp(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 Hp(e){const t=z(o=>o.client),n=fe(o=>o.applyProjection),s=fe(o=>o.setSubscribedCwd),r=b.useRef(t);return r.current=t,b.useEffect(()=>{if(!t||!e)return;let o=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const a=t.connection.onSessionMessage(i=>{if(o)return;const l=i;Wp(l)&&l.cwd===e&&n(l.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{o=!0,a(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const o=r.current;!o||!e||o.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const xn="--";function Je(e){return e===void 0?xn:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function Up(e){if(e==null)return xn;const t=e<=1?e*100:e;return`${Math.round(t)}%`}function Vp(e){if(e===void 0)return xn;const t=e<1?4:2;return`$${e.toFixed(t)}`}function Kp(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function Gp(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}const Xp="_statusBar_t655h_1",Yp="_segmentGroup_t655h_16",Jp="_chevron_t655h_20",Zp="_segment_t655h_16",Qp="_icon_t655h_33",eh="_text_t655h_39",$e={statusBar:Xp,segmentGroup:Yp,chevron:Jp,segment:Zp,icon:Qp,text:eh};function th(){const e=D(p=>p.activeSessionId),t=D(p=>e?p.sessions[e]:void 0),n=ct(),s=j(p=>p.activeWorkspaceCwd);Hp(s||"");const r=fe(p=>p.available),o=fe(p=>p.branch),a=fe(p=>p.ahead),i=fe(p=>p.behind),l=fe(p=>p.detached),u=fe(p=>p.conflictCount),f=fe(p=>p.changes.length),m=br(p=>e?p.bySession[e]:void 0);Lp(e);const h=[];if(t){const p=Kp(t.cwd,n);h.push({key:"cwd",icon:c.jsx(De,{size:13}),text:p,title:t.cwd})}if(r){const p=Gp(a,i),y=[l?"(detached)":o??"?"];p&&y.push(p),f>0&&y.push(`●${f}`),u>0&&y.push(`⚠${u}`),h.push({key:"branch",icon:c.jsx(to,{size:13}),text:y.join(" ")})}if(t){const p=`${Up(m==null?void 0:m.contextPercent)} (${Je(m==null?void 0:m.contextTokens)}/${Je(m==null?void 0:m.contextWindow)})`;h.push({key:"context",icon:c.jsx(no,{size:13}),text:p}),h.push({key:"tokens",icon:c.jsx(so,{size:13}),text:Je(m==null?void 0:m.totalTokens),title:`in ${Je(m==null?void 0:m.inputTokens)} / out ${Je(m==null?void 0:m.outputTokens)}`}),h.push({key:"cost",icon:c.jsx(ro,{size:13}),text:Vp(m==null?void 0:m.cost)})}return c.jsx("div",{className:$e.statusBar,children:h.map((p,y)=>c.jsxs("span",{className:$e.segmentGroup,children:[y>0&&c.jsx(cn,{size:12,className:$e.chevron,"aria-hidden":"true"}),c.jsxs("span",{className:$e.segment,title:p.title,children:[c.jsx("span",{className:$e.icon,children:p.icon}),c.jsx("span",{className:$e.text,children:p.text})]})]},p.key))})}const nh="_wrapper_14joh_3",sh="_box_14joh_18",rh="_checkmark_14joh_38",oh="_nativeInput_14joh_43",yt={wrapper:nh,box:sh,checkmark:rh,nativeInput:oh};b.forwardRef(function({label:t,checked:n=!1,disabled:s,className:r,onChange:o,...a},i){return c.jsxs("label",{className:yt.wrapper,"data-disabled":s||void 0,children:[c.jsx("input",{ref:i,type:"checkbox",className:yt.nativeInput,checked:n,disabled:s,onChange:o,...a}),c.jsx("span",{className:yt.box,"data-checked":n,"aria-hidden":!0,children:n&&c.jsx(oo,{size:12,className:yt.checkmark})}),t&&c.jsx("span",{children:t})]})});const ah="_select_dl3mw_3",ih={select:ah};b.forwardRef(function({options:t,placeholder:n,className:s,...r},o){return c.jsxs("select",{ref:o,className:L(ih.select,s),...r,children:[n&&c.jsx("option",{value:"",disabled:!0,children:n}),t.map(a=>c.jsx("option",{value:a.value,children:a.label},a.value))]})});const ch="_overlay_1k4ng_1",lh="_contentWrapper_1k4ng_7",dh="_dialog_1k4ng_16",uh="_header_1k4ng_28",fh="_title_1k4ng_36",ph="_body_1k4ng_43",hh="_footer_1k4ng_49",mh="_bare_1k4ng_58",gh="_bareBody_1k4ng_64",_h="_bareCloseBtn_1k4ng_68",yh="_visuallyHidden_1k4ng_73",ge={overlay:ch,contentWrapper:lh,dialog:dh,header:uh,title:fh,body:ph,footer:hh,bare:mh,bareBody:gh,bareCloseBtn:_h,visuallyHidden:yh},wh=Xt;function bh({open:e,onOpenChange:t,title:n,children:s,footer:r,width:o,className:a,bare:i=!1}){return c.jsx(fo,{open:e,onOpenChange:t,children:c.jsxs(po,{children:[c.jsx(ho,{className:ge.overlay}),c.jsx("div",{className:ge.contentWrapper,children:c.jsxs(mo,{className:L(ge.dialog,i&&ge.bare,a),style:o!==void 0?{width:o}:void 0,children:[i?c.jsx(jn,{className:ge.visuallyHidden,children:n}):c.jsxs("div",{className:ge.header,children:[c.jsx(jn,{className:ge.title,children:n}),c.jsx(Xt,{asChild:!0,children:c.jsx(be,{size:"sm","aria-label":"Close",children:c.jsx(Kt,{size:16})})})]}),c.jsx("div",{className:L(ge.body,i&&ge.bareBody),children:s}),i&&c.jsx(Xt,{asChild:!0,children:c.jsx(be,{size:"sm","aria-label":"Close",className:ge.bareCloseBtn,style:{background:"var(--pi-color-surface1)",border:"1px solid var(--pi-color-border)",borderRadius:"50%"},children:c.jsx(Kt,{size:16})})}),r&&c.jsx("div",{className:ge.footer,children:r})]})})]})})}const vh="_handle_1j18v_1",xh={handle:vh};function cs({side:e,onResize:t,className:n}){const s=b.useRef(0),r=b.useCallback(i=>{const l=i.clientX-s.current;s.current=i.clientX,t(e==="left"?l:-l)},[t,e]),o=b.useCallback(i=>{var l,u;window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",o),document.body.style.cursor="",document.body.style.userSelect="",(u=(l=i.target)==null?void 0:l.releasePointerCapture)==null||u.call(l,i.pointerId)},[r]);function a(i){i.preventDefault(),s.current=i.clientX,document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",r),window.addEventListener("pointerup",o)}return c.jsx("div",{className:L(xh.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}function Sh(e,t){const{order:n,sessions:s}=D.getState(),o=wn(n,s,t).find(a=>a.cwd===e);if(o!=null&&o.sessions[0]){const a=o.sessions[0].id;D.getState().activate(a);const i=D.getState().sessions[a];j.getState().open({id:Z.chat(a),kind:"chat",label:(i==null?void 0:i.title)??"New chat",closable:!0,data:{sessionId:a},workspaceCwd:e})}else it(e);R.getState().setCwd(e)}const kh="_pathRow_1mu84_1",Ih="_pathInput_1mu84_9",Th="_createRow_1mu84_13",Eh="_createInput_1mu84_21",jh="_createError_1mu84_25",Ch="_list_1mu84_30",Rh="_item_1mu84_37",Nh="_name_1mu84_49",xe={pathRow:kh,pathInput:Ih,createRow:Th,createInput:Eh,createError:jh,list:Ch,item:Rh,name:Nh};function Dh(){const e=R(C=>C.cwdPickerOpen),t=R(C=>C.closeCwdPicker),n=j(C=>C.activeWorkspaceCwd),s=R(C=>C.cwd),r=z(C=>C.client),o=ct(),[a,i]=b.useState("/"),[l,u]=b.useState("/"),[f,m]=b.useState(!1),[h,p]=b.useState(""),[y,_]=b.useState(null),[v,I]=b.useState(!1),T=He();b.useEffect(()=>{if(!e)return;const C=Me(n||s||"~",o);i(C),u(C),te()},[e,r,n,s]);const{data:B,isLoading:O,isError:E,error:Y}=xf(a,e&&!!r),M=((B==null?void 0:B.entries)??[]).filter(C=>C.kind==="directory");function te(){m(!1),p(""),_(null)}function oe(C){const le=C.length>1?C.replace(/\/+$/,"")||"/":C;i(le),u(le),te()}function ae(){oe(a.split("/").slice(0,-1).join("/")||"/")}function ne(){oe(l.trim())}async function pe(){const C=h.trim();if(!(!C||!r||v)){I(!0),_(null);try{const le=await wr(r,a,C,"directory");await T.invalidateQueries({queryKey:Re.explorer(a)}),oe(le)}catch(le){_(le instanceof Error?le.message:"Failed to create folder")}finally{I(!1)}}}function dt(){Sh(a,o),t()}return c.jsxs(bh,{open:e,onOpenChange:C=>!C&&t(),title:"Open Workspace",footer:c.jsxs(c.Fragment,{children:[c.jsx(wh,{asChild:!0,children:c.jsx(ue,{size:"sm",variant:"secondary",children:"Cancel"})}),c.jsx(ue,{size:"sm",onClick:dt,children:"Open this folder"})]}),children:[c.jsxs("div",{className:xe.pathRow,children:[c.jsx(ue,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:ae,children:c.jsx(ao,{size:13})}),c.jsx(kt,{className:xe.pathInput,value:l,onChange:C=>u(C.target.value),onKeyDown:C=>{C.key==="Enter"&&(C.preventDefault(),ne())}}),c.jsx(ue,{size:"xs",onClick:ne,children:"Go"}),c.jsx(ue,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!r||E||f,onClick:()=>{m(!0),p(""),_(null)},children:c.jsx(xt,{size:13})})]}),f&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:xe.createRow,children:[c.jsx(De,{size:14}),c.jsx(kt,{className:xe.createInput,autoFocus:!0,placeholder:"New folder name",value:h,onChange:C=>p(C.target.value),onKeyDown:C=>{C.key==="Enter"?(C.preventDefault(),pe()):C.key==="Escape"&&(C.preventDefault(),C.stopPropagation(),te())}}),c.jsx(ue,{size:"xs",loading:v,disabled:!h.trim()||v,onClick:()=>void pe(),children:"Create"}),c.jsx(ue,{size:"xs",variant:"secondary",onClick:te,children:"Cancel"})]}),y&&c.jsx("div",{className:xe.createError,children:y})]}),c.jsx("div",{className:xe.list,children:O?c.jsx(Ce,{children:"Loading..."}):E?c.jsxs(Ce,{children:["Error: ",Y instanceof Error?Y.message:"unknown error"]}):M.length===0?c.jsx(Ce,{children:"No subdirectories"}):M.map(C=>c.jsxs("div",{className:xe.item,onClick:()=>oe(a==="/"?`/${C.name}`:`${a}/${C.name}`),children:[c.jsx(De,{size:14}),c.jsx("span",{className:xe.name,children:C.name})]},C.name))})]})}const Mh="_shell_570m8_1",Ph="_main_570m8_7",Ah="_sidebarLeft_570m8_13",$h="_leftHandle_570m8_25",zh="_center_570m8_28",Bh="_sidebarRight_570m8_35",qh="_rightHandle_570m8_43",Ee={shell:Mh,main:Ph,sidebarLeft:Ah,leftHandle:$h,center:zh,sidebarRight:Bh,rightHandle:qh};function Oh(){const e=R(a=>a.leftSidebarCollapsed),t=R(a=>a.rightSidebarCollapsed),n=R(a=>a.leftSidebarWidth),s=R(a=>a.rightSidebarWidth),r=R(a=>a.resizeLeftSidebar),o=R(a=>a.resizeRightSidebar);return c.jsxs("div",{className:Ee.shell,children:[c.jsx(bl,{}),c.jsxs("div",{className:Ee.main,children:[!e&&c.jsxs("aside",{className:Ee.sidebarLeft,style:{width:n},children:[c.jsx(iu,{}),c.jsx(cs,{side:"left",className:Ee.leftHandle,onResize:r})]}),c.jsx("div",{className:Ee.center,children:c.jsx(wf,{})}),!t&&c.jsxs("aside",{className:Ee.sidebarRight,style:{width:s},children:[c.jsx(cs,{side:"right",className:Ee.rightHandle,onResize:o}),c.jsx(qp,{})]})]}),c.jsx(th,{}),c.jsx(Dh,{})]})}function Fh(){const e=b.useRef(!1);b.useEffect(()=>{if(e.current)return;if(e.current=!0,window.location.hash.includes("offer=")){const l=window.location.href;R.getState().setHost(l),z.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"),a=t.get("connect")==="1",i=R.getState();if(s?i.setHost(s):n&&i.setHost(n),r&&i.setPassword(r),o&&i.setCwd(o),s)z.getState().connect({url:s});else if(a){const{host:l,password:u}=R.getState();z.getState().connect({url:l,password:u||void 0})}},[])}const vr="pi-studio-pane-layout",Lh=250;function Wh(){const e=new Map,t={workspaces:e,activeWorkspaceCwd:null},n=un.get(vr);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!==Qs||typeof r.workspaces!="object"||r.workspaces===null)return t;for(const[a,i]of Object.entries(r.workspaces)){const l=Hh(i);l&&e.set(a,l)}const o=r.activeWorkspaceCwd;return{workspaces:e,activeWorkspaceCwd:typeof o=="string"&&e.has(o)?o:null}}function Hh(e){if(typeof e!="object"||e===null)return null;const t=e,n=Ul(t.tree);if(!n)return null;const s=new Set(ce(n)),r={};for(const[i,l]of ls(t.placement))s.has(l)&&(r[i]=l);const o={};for(const[i,l]of ls(t.activeByPane))s.has(i)&&(o[i]=l);const a=t.activePaneId;return{tree:n,placement:r,activeByPane:o,activePaneId:typeof a=="string"&&s.has(a)?a:null}}function ls(e){return typeof e!="object"||e===null?[]:Object.entries(e).filter(t=>typeof t[1]=="string")}let ye=null;function ds(){ye==null||ye();const e=setTimeout(()=>{ye=null,xr()},Lh);ye=()=>clearTimeout(e)}function Uh(){ye==null||ye(),ye=null,xr()}function xr(){const e=new Map;for(const s of j.getState().tabs){const r=It(s);r!==null&&e.set(s.id,r)}const t={};for(const[s,r]of Object.entries(P.getState().layouts)){const o={...r.pendingPlacement};for(const[i,l]of Object.entries(r.placement)){const u=e.get(i);u!==void 0&&(o[u]=l)}const a={...r.pendingActive};for(const[i,l]of Object.entries(r.activeByPane)){const u=e.get(l);u!==void 0&&(a[i]=u)}t[s]={tree:r.tree,placement:o,activeByPane:a,activePaneId:r.focusedPaneId}}const n={version:Qs,workspaces:t,activeWorkspaceCwd:j.getState().activeWorkspaceCwd??void 0};un.set(vr,JSON.stringify(n))}function Vh(){let e=us(j.getState().tabs);const t=()=>{const o=us(j.getState().tabs);o!==e&&(e=o,ds())},n=P.subscribe(ds),s=j.subscribe(t),r=D.subscribe(t);return()=>{n(),s(),r()}}function us(e){return e.map(t=>`${t.id}\0${It(t)??""}`).join("")}const Kh=/^diff:(staged|worktree):(.+)$/;function Gh(e){for(const[t,n]of e)for(const s of Object.keys(n.placement)){const r=Xh(s,t);r!==null&&j.getState().open(r)}}function Xh(e,t){const n=fs(e,"file:");if(n!==null)return{id:Z.file(n),kind:"file",...Vt(n),workspaceCwd:t,data:{path:n}};const s=fs(e,"molecule:");if(s!==null)return{id:Z.molecule(s),kind:"molecule",...Vt(s),workspaceCwd:t,data:{path:s}};const r=Kh.exec(e);if(r!==null){const o=r[2],a=r[1]==="staged";return{id:Z.diff(o,a),kind:"diff",...Vt(o),workspaceCwd:t,data:{path:o,staged:a}}}return null}function fs(e,t){if(!e.startsWith(t))return null;const n=e.slice(t.length);return n===""?null:n}function Vt(e){return{label:e.split("/").pop()||e,closable:!0}}function Yh(e){if(e===null)return()=>{};if(hs())return ps(e),()=>{};const t=P.subscribe(()=>{hs()&&(t(),ps(e))});return t}function ps(e){if(P.getState().layouts[e]===void 0||!j.getState().tabs.some(n=>n.workspaceCwd===e))return!1;const t=j.getState().activeWorkspaceCwd!==e;return t&&j.getState().switchWorkspace(e),Jh(e),t}function Jh(e){const t=j.getState().tabs.filter(s=>s.workspaceCwd===e&&s.kind==="chat");if(t.length===0)return;const n=D.getState().activeSessionId;t.some(s=>s.data.sessionId===n)||D.getState().activate(t[0].data.sessionId)}function hs(){const{sessions:e,terminals:t}=P.getState().hydrationSources;return e&&t}const Zh={workspaces:new Map,activeWorkspaceCwd:null};function Qh(){const e=z(s=>s.status),t=b.useRef(Zh),n=b.useRef(!1);b.useEffect(()=>{const s=Wh();t.current=s,P.getState().installPersistedLayouts(s.workspaces,s.activeWorkspaceCwd);const r=Vh(),o=()=>Uh();return window.addEventListener("pagehide",o),()=>{window.removeEventListener("pagehide",o),r()}},[]),b.useEffect(()=>{if(e!=="open"||n.current)return;n.current=!0;const s=t.current;Gh(s.workspaces),Yh(s.activeWorkspaceCwd)},[e])}function em(e){return typeof e=="object"&&e!==null&&"kind"in e}function tm(e){const t=[];for(const n of e)em(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 nm(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...tm(s.items)),!s.hasNewer))return t;const r=s.endCursor;if(typeof r!="string"||r===n)return t;n=r}}function sm(e){return typeof e.model=="string"}function rm(){const e=z(s=>s.client),t=z(s=>s.status),n=b.useRef(!1);b.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,om(e))},[t,e]),b.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(sm(s)){const r=typeof s.modelProvider=="string"?s.modelProvider:void 0;D.getState().setModelByAgentId(s.agentId,s.model,r)}})},[t,e])}async function om(e){try{await am(e)}finally{P.getState().markHydrationSource("sessions")}}async function am(e){var y;let t=[];try{t=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{t=[]}t.sort((_,v)=>(v.lastActivity??0)-(_.lastActivity??0));const n=D.getState();for(const _ of t){if(n.findByAgentId(_.agentId))continue;let v=pn;try{const T=await nm(B=>e.agent(_.agentId).timeline.fetch({direction:"after",cursor:B??void 0,limit:200}));v=Ml(T)}catch{}const I=v.rows.length===0;n.hydrate({id:`s-${_.agentId.slice(0,12)}`,agentId:_.agentId,title:_.title||(I?"New chat":(y=_.cwd)==null?void 0:y.split("/").pop())||"Restored",status:_.status??"idle",cwd:_.cwd||"~",timeline:v,userMessageCount:v.rows.filter(T=>T.kind==="user").length,model:_.model,modelProvider:_.modelProvider})}const{order:s,sessions:r}=D.getState(),o=s.length>0?r[s[0]??""]:void 0;if(!o)return;const a=await Mt(e).catch(()=>null),i=Me(o.cwd||"~",a),l=P.getState().pendingActiveWorkspace??i,u=wn(s,r,a);R.getState().setCollapsedWorkspaces(Qd(u,l));const f=s.find(_=>{var v;return Me(((v=r[_])==null?void 0:v.cwd)||"~",a)===l});D.getState().activate(f??o.id),R.getState().setCwd(l);const m=im(),h=new Set;for(const _ of s){const v=r[_];!(v!=null&&v.agentId)||!m.has(`agent:${v.agentId}`)||(Tt(v,a),h.add(_))}const p=P.getState().layouts[i]!==void 0;!h.has(o.id)&&!p&&Tt(o,a)}function im(){const e=new Set;for(const t of Object.values(P.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("agent:")&&e.add(n);return e}async function cm(e){try{let t=[];try{t=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{t=[]}if(t.length===0)return;const n=P.getState().layouts,s=lm(),r=await Mt(e).catch(()=>null),o=j.getState().open;for(const a of t){if(a.closed)continue;const i=Me(a.cwd||"~",r);n[i]!==void 0&&!s.has(`terminal:${a.slot}`)||o({id:Z.terminal(a.slot),kind:"terminal",label:a.name,closable:!0,data:{slot:a.slot,cwd:i},workspaceCwd:i})}}finally{P.getState().markHydrationSource("terminals")}}function lm(){const e=new Set;for(const t of Object.values(P.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("terminal:")&&e.add(n);return e}function dm(){const e=z(s=>s.client),t=z(s=>s.status),n=b.useRef(!1);b.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,cm(e))},[t,e])}function um(){b.useEffect(()=>{function e(t){const n=R.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),sr(j.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:r,tabs:o}=j.getState();if(!r)return;const a=o.find(i=>i.id===r);(a==null?void 0:a.closable)!==!1&&(t.preventDefault(),en(r))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function fm(){return Fh(),Qh(),rm(),dm(),um(),null}function pm(){return c.jsxs(ma,{children:[c.jsx(fm,{}),c.jsx(Oh,{})]})}function hm(e){return e.managerActive?e.status==="closed"?"reconnect-now":e.status==="open"?e.probeInFlight?"none":"probe":"none":"none"}const mm=5e3;function gm(){let e=!1;function t(){const{status:s,reconnection:r,daemon:o}=z.getState(),a=hm({status:s,managerActive:r!==null,probeInFlight:e});if(a==="reconnect-now"){r==null||r.reconnectNow();return}if(a==="probe"){if(!o)return;e=!0,o.ping(mm).catch(()=>{z.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 Sr=document.getElementById("root");if(!Sr)throw new Error("Missing #root element");Pr.createRoot(Sr).render(c.jsx(b.StrictMode,{children:c.jsx(pm,{})}));gm();export{Bl as A,ue as B,vp as C,bh as D,Ce as E,re as I,Pt as M,rr as P,js as S,km as T,Rm as V,Dm as a,jm as b,St as c,Nm as d,Im as e,j as f,P as g,gr as h,Yl as i,_e as j,wr as k,yp as l,Mm as m,Me as n,pr as o,Tm as p,Em as q,Re as r,ct as s,ts as t,z as u,Cm as v,vn as w,Vl as x,vl as y,D as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
html,body{margin:0;padding:0}body{min-height:100vh;overflow:hidden;background:var(--pi-color-background);color:var(--pi-color-foreground);font-family:var(--pi-font-ui)}#root{display:flex;flex-direction:column;min-height:100vh}*,*:before,*:after{box-sizing:border-box}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--pi-color-border);border-radius:var(--pi-radius-base)}._btn_1oc6k_4{display:inline-flex;align-items:center;justify-content:center;gap:var(--pi-spacing-8);border-radius:var(--pi-radius-lg);border:1px solid transparent;font-family:var(--pi-font-ui);font-weight:500;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;text-decoration:none;outline:none;transition:opacity .12s ease,background-color .12s ease,border-color .12s ease;box-sizing:border-box}._btn_1oc6k_4:focus-visible{outline:2px solid var(--pi-color-accent);outline-offset:2px}._btn_1oc6k_4:disabled,._btn_1oc6k_4[aria-disabled=true]{cursor:not-allowed;pointer-events:none}._default_1oc6k_38{background-color:var(--pi-color-accent);color:var(--pi-color-accentForeground);border-color:var(--pi-color-accent)}._default_1oc6k_38:hover:not(:disabled){filter:brightness(1.08)}._secondary_1oc6k_47{background-color:var(--pi-color-surface3);color:var(--pi-color-foreground);border-color:var(--pi-color-border)}._secondary_1oc6k_47:hover:not(:disabled){background-color:var(--pi-color-surface2)}._outline_1oc6k_56{background-color:transparent;color:var(--pi-color-accentBright);border-color:var(--pi-color-accent)}._outline_1oc6k_56:hover:not(:disabled){background-color:var(--pi-color-surface1)}._ghost_1oc6k_65{background-color:transparent;color:var(--pi-color-foregroundMuted);border-color:transparent}._ghost_1oc6k_65:hover:not(:disabled){color:var(--pi-color-foreground);background-color:var(--pi-color-surface1)}._destructive_1oc6k_75{background-color:var(--pi-color-destructive);color:var(--pi-color-destructiveForeground);border-color:var(--pi-color-destructive)}._destructive_1oc6k_75:hover:not(:disabled){filter:brightness(1.1)}._iconOnly_1oc6k_85{padding-left:0!important;padding-right:0!important;aspect-ratio:1}._loadingSpinner_1oc6k_92{animation:_piSpin_1oc6k_1 .75s linear infinite;flex-shrink:0}@keyframes _piSpin_1oc6k_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._spinner_1ibj3_3{display:inline-block;border-radius:var(--pi-radius-full);border-style:solid;border-color:currentColor transparent transparent transparent;animation:_piSpinnerRotate_1ibj3_1 .7s linear infinite;flex-shrink:0}@keyframes _piSpinnerRotate_1ibj3_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){._spinner_1ibj3_3{animation:none}}._dot_hctvn_3{display:inline-block;width:8px;height:8px;border-radius:var(--pi-radius-full);flex-shrink:0}._spinner_hctvn_16{display:inline-block;width:var(--status-dot-size, 12px);height:var(--status-dot-size, 12px);border-radius:var(--pi-radius-full);border:var(--status-dot-border-width, 2px) solid var(--pi-color-border);flex-shrink:0;animation:_statusSpin_hctvn_1 .7s linear infinite}@keyframes _statusSpin_hctvn_1{to{transform:rotate(360deg)}}._input_756jo_3{width:100%;padding:var(--pi-spacing-8) var(--pi-spacing-12);border-radius:var(--pi-radius-md);border:1px solid var(--pi-color-border);background-color:var(--pi-color-surface2);color:var(--pi-color-foreground);font-size:var(--pi-font-size-base);font-family:var(--pi-font-ui);outline:none;transition:border-color .12s ease;box-sizing:border-box}._input_756jo_3::placeholder{color:var(--pi-color-foregroundMuted)}._input_756jo_3:focus{border-color:var(--pi-color-accent);outline:2px solid var(--pi-color-accent);outline-offset:-1px}._input_756jo_3:disabled{opacity:.5;cursor:not-allowed}._textarea_756jo_32{resize:vertical;min-height:80px}._bar_1o0iw_9{display:flex;align-items:center;gap:var(--pi-spacing-12);height:42px;padding:0 var(--pi-spacing-14);border-bottom:var(--pi-border-width-1) solid var(--pi-color-border);flex-shrink:0;overflow-x:auto;overflow-y:hidden}._title_1o0iw_21{flex:none;display:flex;align-items:baseline;gap:var(--pi-spacing-4)}._brand_1o0iw_27{font-weight:600;font-size:var(--pi-font-size-sm);letter-spacing:.02em;white-space:nowrap}._version_1o0iw_33{font-size:var(--pi-font-size-2xs);color:var(--pi-color-foregroundMuted);white-space:nowrap}._statusPill_1o0iw_41{flex:none;max-width:340px;display:flex;align-items:center;gap:var(--pi-spacing-7);height:var(--pi-spacing-26);padding:0 var(--pi-spacing-11);background:var(--pi-color-surface1);border:var(--pi-border-width-1) solid var(--pi-color-border);border-radius:var(--pi-radius-full);font-size:var(--pi-font-size-2xs);color:var(--pi-color-foregroundMuted);white-space:nowrap}._statusText_1o0iw_60{min-width:0;display:flex;align-items:center;gap:var(--pi-spacing-4)}._statusHost_1o0iw_68{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--pi-font-mono);color:var(--pi-color-foreground)}._statusSep_1o0iw_76,._statusLabel_1o0iw_79,._statusDot_1o0iw_82,._statusSpinner_1o0iw_83{flex:none}._statusPillError_1o0iw_87{color:var(--pi-color-destructive);border-color:color-mix(in srgb,var(--pi-color-destructive) 45%,transparent);background:color-mix(in srgb,var(--pi-color-destructive) 12%,var(--pi-color-surface1))}input._field_1o0iw_4{flex:0 1 auto;min-width:40px;width:auto;height:var(--pi-spacing-26);padding:0 var(--pi-spacing-11);background:var(--pi-color-surface1);border:var(--pi-border-width-1) solid var(--pi-color-border);border-radius:var(--pi-radius-md);font-size:var(--pi-font-size-2xs);color:var(--pi-color-foreground);text-overflow:ellipsis}input._fieldUrl_1o0iw_111{flex-basis:220px;font-family:var(--pi-font-mono)}input._fieldPassword_1o0iw_115{flex-basis:120px}input._field_1o0iw_4:focus{border-color:var(--pi-color-accentBright);outline:none}input._fieldInvalid_1o0iw_122,input._fieldInvalid_1o0iw_122:focus{border-color:var(--pi-color-destructive)}input._field_1o0iw_4:read-only{opacity:var(--pi-opacity-50);pointer-events:none}._action_1o0iw_139{flex:none}._panelToggles_1o0iw_147{margin-left:auto;flex:none;display:flex;align-items:center;gap:var(--pi-spacing-6)}._panelToggle_1o0iw_147{flex:none;border-color:var(--pi-color-border);border-radius:var(--pi-radius-md)}._panel_1de7t_3{display:flex;flex-direction:column;height:100%;min-height:0}._emptyState_kp50e_3{display:flex;align-items:center;justify-content:center;gap:var(--pi-spacing-8);color:var(--pi-color-foregroundMuted);font-size:var(--pi-font-size-xs);padding:var(--pi-spacing-20);text-align:center}._iconBtn_1unr3_3{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;background:none;border:none;border-radius:var(--pi-radius-base);color:var(--pi-color-foregroundMuted);cursor:pointer}._iconBtn_1unr3_3:hover{color:var(--pi-color-foreground);background:color-mix(in srgb,var(--icon-btn-hover-base, var(--pi-color-surface1)) 85%,var(--pi-color-foreground) 15%)}._iconBtn_1unr3_3:focus-visible{outline:2px solid var(--pi-color-accent);outline-offset:2px}._iconBtn_1unr3_3:disabled{opacity:.4;cursor:default}._xs_1unr3_32{width:20px;height:20px}._sm_1unr3_36{width:28px;height:28px}._header_962zs_1{display:flex;align-items:center;padding:0 var(--pi-spacing-10);flex-shrink:0}._header_962zs_1 h3{margin:0;font-size:var(--pi-font-size-3xs);font-weight:var(--pi-font-weight-bold);color:var(--pi-color-foregroundMuted);text-transform:uppercase;letter-spacing:.1em}._list_962zs_15{flex:1 1 auto;overflow-y:auto;min-height:0}._newSessionRow_962zs_20{display:flex;align-items:center;justify-content:center;gap:var(--pi-spacing-4);width:100%;margin:0;padding:var(--pi-spacing-6) var(--pi-spacing-10);border:none;border-radius:var(--pi-radius-sm);background:none;font-size:var(--pi-font-size-2xs);color:var(--pi-color-foregroundMuted);cursor:pointer}._newSessionRow_962zs_20:hover{background:var(--pi-color-surface0)}._newSessionRow_962zs_20:disabled{cursor:default;opacity:var(--pi-opacity-50)}._newSessionRow_962zs_20:disabled:hover{background:none}._footer_962zs_45{display:flex;align-items:center;justify-content:center;gap:var(--pi-spacing-4);flex-shrink:0;margin:0;padding:var(--pi-spacing-8) var(--pi-spacing-10);border:none;border-top:var(--pi-border-width-1) solid var(--pi-color-border);background:none;font-size:var(--pi-font-size-2xs);color:var(--pi-color-foregroundMuted);cursor:pointer}._footer_962zs_45:hover{background:var(--pi-color-surface0)}._footer_962zs_45:disabled{cursor:default;opacity:var(--pi-opacity-50)}._footer_962zs_45:disabled:hover{background:none}._item_962zs_70{position:relative;display:flex;flex-direction:column;gap:var(--pi-spacing-2);padding:var(--pi-spacing-7) var(--pi-spacing-10);border-radius:var(--pi-radius-sm);cursor:pointer;background:color-mix(in srgb,var(--pi-color-surface0) 60%,transparent)}._item_962zs_70:hover{background:var(--pi-color-surface0)}._itemFailed_962zs_85{background:color-mix(in srgb,var(--pi-color-destructive) 10%,transparent)}._item_962zs_70._active_962zs_83{background:color-mix(in srgb,var(--pi-color-accent) 34%,transparent);box-shadow:inset 0 0 0 var(--pi-border-width-1) color-mix(in srgb,var(--pi-color-accentBright) 32%,transparent)}._activeBar_962zs_88{position:absolute;top:0;bottom:0;left:0;width:2px;background:var(--pi-color-accentBright)}._title_962zs_89{display:flex;align-items:center;gap:var(--pi-spacing-6);font-size:var(--pi-font-size-sm)}._titleLabel_962zs_89{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._item_962zs_70._active_962zs_83 ._titleLabel_962zs_89{color:var(--pi-color-accentForeground);font-weight:var(--pi-font-weight-bold)}._titleItalic_962zs_120{font-style:italic}._meta_962zs_123{display:flex;align-items:center;gap:var(--pi-spacing-6);font-size:var(--pi-font-size-3xs);color:var(--pi-color-foregroundMuted);overflow:hidden}._metaDot_962zs_131{flex-shrink:0;--status-dot-size: 9px;--status-dot-border-width: 1.5px}._metaLabel_962zs_136{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._metaFailed_962zs_141{color:var(--pi-color-destructive)}._metaEmpty_962zs_144{opacity:var(--pi-opacity-50)}._menuBtn_962zs_149{flex-shrink:0;opacity:0}._item_962zs_70:hover ._menuBtn_962zs_149,._item_962zs_70:focus-within ._menuBtn_962zs_149{opacity:1}@media(max-width:575px),(hover:none){._menuBtn_962zs_149{opacity:1}}._workspaceHeader_962zs_162{display:flex;align-items:center;gap:var(--pi-spacing-8);padding:var(--pi-spacing-8) var(--pi-spacing-12);cursor:pointer;font-size:var(--pi-font-size-xs);color:var(--pi-color-foreground);background:var(--pi-color-surface2);border-top:var(--pi-border-width-1) solid var(--pi-color-border);border-bottom:var(--pi-border-width-1) solid var(--pi-color-border)}._workspaceHeader_962zs_162:hover{background:color-mix(in srgb,var(--pi-color-surface2) 85%,var(--pi-color-foreground) 15%)}._workspaceChevron_962zs_184{flex-shrink:0;background:var(--pi-color-surface3);border-radius:var(--pi-radius-base)}._workspaceHeader_962zs_162 ._workspaceChevron_962zs_184:hover{background:var(--pi-color-surface3)}._chevronGlyphExpanded_962zs_195{transform:rotate(90deg)}._workspaceLabel_962zs_201{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._workspaceCount_962zs_207{flex-shrink:0;font-size:var(--pi-font-size-4xs);color:var(--pi-color-foregroundMuted);background:var(--pi-color-surface3);border-radius:var(--pi-radius-full);padding:var(--pi-spacing-1) var(--pi-spacing-6)}._workspaceMenuBtn_962zs_215{flex-shrink:0;opacity:0}._workspaceHeader_962zs_162:hover ._workspaceMenuBtn_962zs_215{opacity:1}@media(max-width:575px),(hover:none){._workspaceMenuBtn_962zs_215{opacity:1}}._workspaceSessions_962zs_227{display:flex;flex-direction:column;gap:var(--pi-spacing-3);padding:var(--pi-spacing-5) var(--pi-spacing-8) var(--pi-spacing-8)}._trigger_cd29a_3{position:fixed;width:1px;height:1px;padding:0;border:0;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0;pointer-events:none}._content_cd29a_15{min-width:140px;padding:var(--pi-spacing-4);border-radius:var(--pi-radius-md);background:var(--pi-color-surface1);border:1px solid var(--pi-color-border);box-shadow:0 8px 24px #0006;z-index:1000}._item_cd29a_25{display:flex;align-items:center;gap:var(--pi-spacing-8);padding:var(--pi-spacing-6) var(--pi-spacing-10);border-radius:var(--pi-radius-base);font-size:var(--pi-font-size-sm);cursor:pointer;outline:none}._item_cd29a_25:hover,._item_cd29a_25[data-highlighted]{background:color-mix(in srgb,var(--pi-color-surface1) 85%,var(--pi-color-foreground) 15%)}._item_cd29a_25[data-disabled]{opacity:.4;cursor:default}._danger_cd29a_44{color:var(--pi-color-statusDanger)}._sep_cd29a_48{height:1px;margin:var(--pi-spacing-4) 0;background:var(--pi-color-border)}._avatar_1m9k9_4{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--pi-radius-md);flex-shrink:0;-webkit-user-select:none;user-select:none}._avatarImg_1m9k9_14{width:100%;height:100%;object-fit:cover}._avatarFallback_1m9k9_20{font-weight:600;color:#fff;font-family:var(--pi-font-ui);line-height:1}._divider_4eg4l_9{position:absolute;z-index:2}._divider_4eg4l_9:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--pi-color-border);transition:background .12s ease,inset .12s ease}._divider_4eg4l_9:hover:before,._divider_4eg4l_9:active:before{background:var(--pi-color-accent)}._vertical_4eg4l_26{width:7px;margin-left:-3px;cursor:col-resize}._vertical_4eg4l_26:before{left:3px;right:3px}._vertical_4eg4l_26:hover:before,._vertical_4eg4l_26:active:before{left:2px;right:2px}._horizontal_4eg4l_41{height:7px;margin-top:-3px;cursor:row-resize}._horizontal_4eg4l_41:before{top:3px;bottom:3px}._horizontal_4eg4l_41:hover:before,._horizontal_4eg4l_41:active:before{top:2px;bottom:2px}._strip_16ago_1{display:flex;align-items:center;gap:var(--pi-spacing-2);min-height:var(--pane-strip-height);padding:0 var(--pi-spacing-8);overflow:hidden;flex-shrink:0;border-bottom:var(--pi-border-width-1) solid var(--pi-color-border)}._tabs_16ago_13{display:flex;align-items:center;gap:var(--pi-spacing-2);flex:0 1 auto;min-width:0;overflow-x:auto}._paneStrip_16ago_23{position:absolute;z-index:1}._focused_16ago_28{border-bottom-color:var(--pi-color-accent)}._tab_16ago_13{display:flex;align-items:center;gap:var(--pi-spacing-7);flex:0 1 auto;min-width:var(--pi-spacing-128);max-width:200px;height:var(--pi-spacing-24);padding:0 var(--pi-spacing-10);border-radius:var(--pi-radius-base);font-size:var(--pi-font-size-2xs);cursor:pointer;color:var(--pi-color-foregroundMuted);white-space:nowrap;overflow:hidden;-webkit-user-select:none;user-select:none}._tab_16ago_13:hover{background:color-mix(in srgb,var(--pi-color-background) 85%,var(--pi-color-foreground) 15%)}._tabActive_16ago_51{background:var(--pi-color-surface2);color:var(--pi-color-foreground)}._tabIcon_16ago_55{display:flex;align-items:center;flex:none}._tabLabel_16ago_60{min-width:0;overflow:hidden;text-overflow:ellipsis}._tabLabelMono_16ago_65{font-family:var(--pi-font-mono)}._tabDot_16ago_70{flex:none}._tabClose_16ago_77{display:flex;align-items:center;flex:none;border-radius:var(--pi-radius-base);padding:var(--pi-spacing-1);opacity:0}._tabActive_16ago_51 ._tabClose_16ago_77,._tab_16ago_13:hover ._tabClose_16ago_77,._tab_16ago_13:focus-within ._tabClose_16ago_77{opacity:1}._tabClose_16ago_77:hover{background:color-mix(in srgb,var(--pi-color-background) 85%,var(--pi-color-foreground) 15%)}@media(max-width:575px),(hover:none){._tabClose_16ago_77{opacity:1}}._newTab_16ago_98{position:relative;border-radius:var(--pi-radius-sm);flex:none}._stripActions_16ago_106{margin-left:auto;display:flex;align-items:center;gap:var(--pi-spacing-8);flex:none}._splitAction_16ago_113{position:relative;border-radius:var(--pi-radius-sm);flex:none}._itemIcon_16ago_118{flex-shrink:0;color:var(--pi-color-foregroundMuted)}._preview_1txmv_1{position:absolute;z-index:3;pointer-events:none;border:1px solid var(--pi-color-accent);border-radius:var(--pi-radius-sm);background:color-mix(in srgb,var(--pi-color-accent) 18%,transparent)}._chip_1txmv_9{display:flex;align-items:center;gap:var(--pi-spacing-6);padding:var(--pi-spacing-6) var(--pi-spacing-8);border:1px solid var(--pi-color-border);border-radius:var(--pi-radius-md);background:var(--pi-color-surface0);color:var(--pi-color-foreground);font-size:var(--pi-font-size-xs);white-space:nowrap;cursor:grabbing;box-shadow:var(--pi-shadow-md)}._chipLabel_1txmv_23{max-width:160px;overflow:hidden;text-overflow:ellipsis}._area_9sawz_1{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;--pane-strip-height: 36px}._panel_9sawz_11{position:absolute;left:0;top:0;width:100%;height:100%;display:none;flex-direction:column;min-height:0;overflow:hidden}._dropZone_9sawz_27{position:absolute;pointer-events:none}._active_9sawz_31{display:flex}._empty_9sawz_35{position:absolute;left:0;right:0;top:var(--pane-strip-height);bottom:0;display:flex;align-items:center;justify-content:center;color:var(--pi-color-foregroundMuted);font-size:var(--pi-font-size-sm)}._emptyStack_9sawz_47{position:absolute;left:0;right:0;top:var(--pane-strip-height);bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--pi-spacing-10);padding:0 var(--pi-spacing-16);text-align:center}._emptyTitle_9sawz_61{font-size:var(--pi-font-size-sm);color:var(--pi-color-foreground)}._emptyHint_9sawz_65{font-size:var(--pi-font-size-xs);color:var(--pi-color-foregroundMuted)}._container_1wywk_1{position:relative;height:100%;display:flex;flex-direction:column}._header_1wywk_7{display:flex;align-items:center;gap:var(--pi-spacing-6);padding:var(--pi-spacing-6) var(--pi-spacing-8);border-bottom:1px solid var(--pi-color-border)}._uploadButton_1wywk_14{display:inline-flex;align-items:center;gap:var(--pi-spacing-5);font-size:var(--pi-font-size-2xs);padding:var(--pi-spacing-3) var(--pi-spacing-8);border-radius:var(--pi-radius-base);border:1px solid var(--pi-color-border);background:var(--pi-color-surface1);color:var(--pi-color-foreground);cursor:pointer}._uploadButton_1wywk_14:hover:not(:disabled){background:color-mix(in srgb,var(--pi-color-background) 85%,var(--pi-color-foreground) 15%)}._uploadButton_1wywk_14:disabled{opacity:.5;cursor:default}._hiddenInput_1wywk_33{display:none}._status_1wywk_36,._statusError_1wywk_37{font-size:var(--pi-font-size-2xs);padding:var(--pi-spacing-4) var(--pi-spacing-8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._status_1wywk_36{color:var(--pi-color-foregroundMuted)}._statusError_1wywk_37{color:var(--pi-color-statusDanger)}._rowAction_1wywk_50{margin-left:auto}._item_1wywk_53 ._rowAction_1wywk_50{display:none}._item_1wywk_53:hover ._rowAction_1wywk_50{display:inline-flex}._list_1wywk_60{padding:var(--pi-spacing-4) 0;flex:1;overflow-y:auto;position:relative}._item_1wywk_53{height:28px;padding-right:var(--pi-spacing-8);font-size:var(--pi-font-size-xs);border-radius:var(--pi-radius-base);cursor:pointer;display:flex;align-items:center;gap:var(--pi-spacing-6);user-select:none;-webkit-user-select:none}._item_1wywk_53:hover{background:color-mix(in srgb,var(--pi-color-background) 85%,var(--pi-color-foreground) 15%)}._item_1wywk_53._active_1wywk_83{background:var(--pi-color-surface0);box-shadow:inset 2px 0 0 var(--pi-color-accent);border-radius:var(--pi-radius-none)}._item_1wywk_53._selected_1wywk_88{background:var(--pi-color-surface0);border-radius:var(--pi-radius-none)}._item_1wywk_53._dropTarget_1wywk_92{background:color-mix(in srgb,var(--pi-color-accent) 22%,transparent);box-shadow:inset 0 0 0 1px var(--pi-color-accent);border-radius:var(--pi-radius-base)}._item_1wywk_53._rootItem_1wywk_99 ._dirName_1wywk_98{color:var(--pi-color-foreground);font-weight:600}._chevronSlot_1wywk_104{display:flex;align-items:center;justify-content:center;width:var(--pi-icon-size-sm);flex-shrink:0;color:var(--pi-color-foregroundMuted)}._chevron_1wywk_104{transition:transform .1s ease}._chevronOpen_1wywk_115{transform:rotate(90deg)}._icon_1wywk_118{display:flex;align-items:center;width:var(--pi-icon-size-md);flex-shrink:0;color:var(--pi-color-foregroundMuted)}._name_1wywk_125{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._dirName_1wywk_98{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--pi-color-accentBright)}._item_1wywk_53._gitAdded_1wywk_140 ._icon_1wywk_118,._item_1wywk_53._gitAdded_1wywk_140 ._name_1wywk_125,._item_1wywk_53._gitAdded_1wywk_140 ._dirName_1wywk_98{color:var(--pi-color-statusSuccess)}._item_1wywk_53._gitModified_1wywk_145 ._icon_1wywk_118,._item_1wywk_53._gitModified_1wywk_145 ._name_1wywk_125,._item_1wywk_53._gitModified_1wywk_145 ._dirName_1wywk_98{color:var(--pi-color-statusWarning)}._item_1wywk_53._gitDeleted_1wywk_150 ._icon_1wywk_118,._item_1wywk_53._gitDeleted_1wywk_150 ._name_1wywk_125,._item_1wywk_53._gitDeleted_1wywk_150 ._dirName_1wywk_98{color:var(--pi-color-statusDanger)}._item_1wywk_53._gitDeleted_1wywk_150 ._name_1wywk_125{text-decoration:line-through}._item_1wywk_53._hiddenEntry_1wywk_162{opacity:.45}._item_1wywk_53._hiddenEntry_1wywk_162:hover,._item_1wywk_53._hiddenEntry_1wywk_162._active_1wywk_83,._item_1wywk_53._hiddenEntry_1wywk_162._selected_1wywk_88,._item_1wywk_53._hiddenEntry_1wywk_162._dropTarget_1wywk_92{opacity:1}._statusRow_1wywk_171{height:28px;display:flex;align-items:center;padding-right:var(--pi-spacing-8);font-size:var(--pi-font-size-2xs);color:var(--pi-color-foregroundMuted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._statusRowError_1wywk_182{color:var(--pi-color-statusDanger)}._draftInput_1wywk_185{flex:1;min-width:0;height:20px;font:inherit;font-size:var(--pi-font-size-xs);padding:0 var(--pi-spacing-4);color:var(--pi-color-foreground);background:var(--pi-color-surface0);border:1px solid var(--pi-color-accent);border-radius:var(--pi-radius-base);outline:none}._list_1n3q6_1{padding:var(--pi-spacing-4) 0}._summary_1n3q6_4{padding:var(--pi-spacing-4) var(--pi-spacing-8);font-size:var(--pi-font-size-2xs);color:var(--pi-color-foregroundMuted);border-bottom:1px solid var(--pi-color-border);margin-bottom:var(--pi-spacing-4)}._item_1n3q6_11{padding:var(--pi-spacing-4) var(--pi-spacing-8);font-size:var(--pi-font-size-xs);border-radius:var(--pi-radius-base);cursor:pointer;display:flex;align-items:center;gap:var(--pi-spacing-6)}._item_1n3q6_11:hover{background:color-mix(in srgb,var(--pi-color-background) 85%,var(--pi-color-foreground) 15%)}._badge_1n3q6_23{font-size:var(--pi-font-size-3xs);padding:0 var(--pi-spacing-4);border-radius:var(--pi-radius-base);font-weight:600;flex-shrink:0}._added_1n3q6_30{background:color-mix(in srgb,var(--pi-color-statusSuccess) 20%,transparent);color:var(--pi-color-statusSuccess)}._modified_1n3q6_34{background:color-mix(in srgb,var(--pi-color-statusWarning) 20%,transparent);color:var(--pi-color-statusWarning)}._deleted_1n3q6_38{background:color-mix(in srgb,var(--pi-color-statusDanger) 20%,transparent);color:var(--pi-color-statusDanger)}._name_1n3q6_42{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tabBar_1tvri_1{display:flex;align-items:center;border-bottom:1px solid var(--pi-color-border);flex-shrink:0}._tabBtn_1tvri_7{display:flex;align-items:center;gap:var(--pi-spacing-6);font:inherit;font-size:var(--pi-font-size-xs);padding:var(--pi-spacing-8) var(--pi-spacing-12);background:none;border:none;color:var(--pi-color-foregroundMuted);cursor:pointer;border-bottom:2px solid transparent}._tabBtn_1tvri_7:hover{color:var(--pi-color-foreground)}._active_1tvri_23{color:var(--pi-color-foreground);border-bottom-color:var(--pi-color-accent)}._refreshBtn_1tvri_27{margin-left:auto;margin-right:var(--pi-spacing-6)}._content_1tvri_31{flex:1;overflow-y:auto;padding:var(--pi-spacing-8);min-height:0}._statusBar_t655h_1{height:35px;width:100%;flex-shrink:0;display:flex;align-items:center;gap:var(--pi-spacing-2);padding:0 var(--pi-spacing-12);overflow-x:auto;border-top:1px solid var(--pi-color-border);background:var(--pi-color-surface1);font-size:var(--pi-font-size-xs);color:var(--pi-color-foreground);white-space:nowrap}._segmentGroup_t655h_16{display:flex;align-items:center}._chevron_t655h_20{color:var(--pi-color-border);margin:0 var(--pi-spacing-4);flex-shrink:0}._segment_t655h_16{display:flex;align-items:center;gap:var(--pi-spacing-6);padding:var(--pi-spacing-2) var(--pi-spacing-8);border-radius:var(--pi-radius-base);background:var(--pi-color-surface2)}._icon_t655h_33{display:flex;align-items:center;color:var(--pi-color-foregroundMuted);flex-shrink:0}._text_t655h_39{overflow:hidden;text-overflow:ellipsis;max-width:320px}._wrapper_14joh_3{display:inline-flex;align-items:center;gap:var(--pi-spacing-8);cursor:pointer;font-family:var(--pi-font-ui);font-size:var(--pi-font-size-md);color:var(--pi-color-foreground)}._wrapper_14joh_3[data-disabled=true]{opacity:.5;pointer-events:none}._box_14joh_18{width:16px;height:16px;border-radius:var(--pi-radius-sm);border:1.5px solid var(--pi-color-border);background-color:transparent;display:flex;align-items:center;justify-content:center;transition:background-color .1s,border-color .1s;flex-shrink:0}._box_14joh_18[data-checked=true]{background-color:var(--pi-color-accent);border-color:var(--pi-color-accent)}._checkmark_14joh_38{color:var(--pi-color-accentForeground)}._nativeInput_14joh_43{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}._select_dl3mw_3{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--pi-color-surface1);border:1px solid var(--pi-color-border);border-radius:var(--pi-radius-base);padding:var(--pi-spacing-8) var(--pi-spacing-32) var(--pi-spacing-8) var(--pi-spacing-10);font-family:var(--pi-font-ui);font-size:var(--pi-font-size-md);color:var(--pi-color-foreground);width:100%;outline:none;transition:border-color .1s;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23a1a1aa' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}._select_dl3mw_3:focus{border-color:var(--pi-color-accent)}._select_dl3mw_3:disabled{opacity:.5;cursor:not-allowed}._comboboxWrapper_dl3mw_31{position:relative;width:100%}._comboboxInput_dl3mw_36{width:100%;background-color:var(--pi-color-surface1);border:1px solid var(--pi-color-border);border-radius:var(--pi-radius-base);padding:var(--pi-spacing-8) var(--pi-spacing-10);font-family:var(--pi-font-ui);font-size:var(--pi-font-size-md);color:var(--pi-color-foreground);outline:none;box-sizing:border-box}._comboboxInput_dl3mw_36:focus{border-color:var(--pi-color-accent)}._comboboxList_dl3mw_53{position:absolute;top:100%;left:0;right:0;z-index:80;max-height:200px;overflow-y:auto;background-color:var(--pi-color-surface1);border:1px solid var(--pi-color-border);border-radius:var(--pi-radius-base);margin-top:var(--pi-spacing-4);padding:var(--pi-spacing-4);box-shadow:var(--pi-shadow-md)}._comboboxOption_dl3mw_69{padding:var(--pi-spacing-6) var(--pi-spacing-8);border-radius:var(--pi-radius-sm);font-size:var(--pi-font-size-md);font-family:var(--pi-font-ui);color:var(--pi-color-foreground);cursor:pointer;background:none;border:none;width:100%;text-align:left}._comboboxOption_dl3mw_69:hover,._comboboxOptionHighlighted_dl3mw_83{background-color:var(--pi-color-surface2)}._overlay_1k4ng_1{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:100}._contentWrapper_1k4ng_7{position:fixed;top:0;right:0;bottom:0;left:0;z-index:101;display:flex;align-items:center;justify-content:center;pointer-events:none}._dialog_1k4ng_16{pointer-events:auto;width:500px;max-width:90vw;max-height:70vh;background:var(--pi-color-surface1);border:1px solid var(--pi-color-border);border-radius:var(--pi-radius-lg);display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080}._header_1k4ng_28{padding:var(--pi-spacing-12) var(--pi-spacing-14);border-bottom:1px solid var(--pi-color-border);display:flex;align-items:center;gap:var(--pi-spacing-8);flex-shrink:0}._title_1k4ng_36{font-size:var(--pi-font-size-sm);margin:0;flex:1;color:var(--pi-color-foreground);font-weight:600}._body_1k4ng_43{flex:1;display:flex;flex-direction:column;min-height:0}._footer_1k4ng_49{padding:var(--pi-spacing-10) var(--pi-spacing-14);border-top:1px solid var(--pi-color-border);display:flex;align-items:center;gap:var(--pi-spacing-8);justify-content:flex-end;flex-shrink:0}._bare_1k4ng_58{border:none;background:transparent;box-shadow:none;position:relative}._bareBody_1k4ng_64{border-radius:var(--pi-radius-lg);overflow:hidden}._bareCloseBtn_1k4ng_68{position:absolute;top:-12px;right:-12px}._visuallyHidden_1k4ng_73{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}._handle_1j18v_1{position:absolute;top:0;bottom:0;width:5px;cursor:col-resize;z-index:5;background:transparent;transition:background .12s ease}._handle_1j18v_1:hover,._handle_1j18v_1:active{background:var(--pi-color-accent)}._pathRow_1mu84_1{padding:var(--pi-spacing-8) var(--pi-spacing-14);display:flex;align-items:center;gap:var(--pi-spacing-6);border-bottom:1px solid var(--pi-color-border);flex-shrink:0}._pathInput_1mu84_9{flex:1;font-size:var(--pi-font-size-xs)}._createRow_1mu84_13{padding:var(--pi-spacing-6) var(--pi-spacing-14);display:flex;align-items:center;gap:var(--pi-spacing-6);border-bottom:1px solid var(--pi-color-border);flex-shrink:0}._createInput_1mu84_21{flex:1;font-size:var(--pi-font-size-xs)}._createError_1mu84_25{padding:var(--pi-spacing-4) var(--pi-spacing-14) var(--pi-spacing-6);font-size:var(--pi-font-size-2xs);color:var(--pi-color-statusDanger)}._list_1mu84_30{flex:1;overflow-y:auto;padding:var(--pi-spacing-4) 0;min-height:200px;max-height:400px}._item_1mu84_37{padding:var(--pi-spacing-6) var(--pi-spacing-14);cursor:pointer;display:flex;align-items:center;gap:var(--pi-spacing-8);font-size:var(--pi-font-size-xs);color:var(--pi-color-foreground)}._item_1mu84_37:hover{background:color-mix(in srgb,var(--pi-color-surface1) 85%,var(--pi-color-foreground) 15%)}._name_1mu84_49{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._shell_570m8_1{display:flex;flex-direction:column;height:100vh;min-height:0}._main_570m8_7{display:flex;flex:1 1 auto;min-height:0;overflow:hidden}._sidebarLeft_570m8_13{position:relative;flex-shrink:0;border-right:1px solid var(--pi-color-border);display:flex;flex-direction:column;min-width:0;background:var(--pi-color-surfaceSidebar)}._leftHandle_570m8_25{right:-3px}._center_570m8_28{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0}._sidebarRight_570m8_35{position:relative;flex-shrink:0;border-left:1px solid var(--pi-color-border);display:flex;flex-direction:column;min-width:0}._rightHandle_570m8_43{left:-3px}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-BEntOW_N.js","assets/vendor-DVp0ZLQo.js","assets/vendor-react-DQUAl2K8.js","assets/vendor-CEK31ho9.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as L}from"./vendor-DVp0ZLQo.js";import{r as m,j as o}from"./vendor-react-DQUAl2K8.js";import{n as N,a as H,m as P,d as R,u as _,p as $,q as F,t as D,s as b,S as A,v as E,w as I,x as V}from"./index-CJKgXjmo.js";import{c as U}from"./vendor-highlight-BjiGXuEM.js";import{M as z,r as O,a as B,b as G}from"./vendor-markdown-Bc_dOmsB.js";const y="github-dark";let h=null;const j=new Set(["plaintext"]);function K(){return h||(h=U({themes:[y],langs:["plaintext"]})),h}async function W(t,e){if(j.has(e))return e;try{return await t.loadLanguage(e),j.add(e),e}catch{return"plaintext"}}async function Z(t,e){const n=await K(),r=await W(n,e);return n.codeToHtml(t,{lang:r,theme:y})}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 q(t){var n;const e={};for(const[r,s]of Object.entries(M)){const a=(n=t[s])==null?void 0:n.trim();a&&(e[r]=a)}return e}function Y(){const t=getComputedStyle(document.documentElement),e={};for(const n of Object.values(M))e[n]=t.getPropertyValue(n);return q(e)}const J="_prose_k8kw9_1",Q="_streaming_k8kw9_26",X="_inlineCode_k8kw9_65",ee="_mermaid_k8kw9_83",te="_mermaidError_k8kw9_92",ne="_mermaidErrorMessage_k8kw9_95",re="_inlineImage_k8kw9_126",se="_inlineImageSkeleton_k8kw9_135",ae="_inlineImageFallback_k8kw9_146",d={prose:J,streaming:Q,inlineCode:X,mermaid:ee,mermaidError:te,mermaidErrorMessage:ne,inlineImage:re,inlineImageSkeleton:se,inlineImageFallback:ae},ie=/^([a-zA-Z][a-zA-Z0-9+.-]*):/;function oe(t){try{return decodeURIComponent(t)}catch{return t}}function v(t,e,n){const r=t.trim();if(!r)return null;const s=r.split(/[?#]/,1)[0];if(!s||ie.exec(s))return null;let i;if(s.startsWith("/")?i=s:s==="~"||s.startsWith("~/")?i=n?N(s,n):null:i=H(s,e??""),!i)return null;const c=P(i);return oe(c)}const le={"http:":!0,"https:":!0,"data:":!0,"blob:":!0},ce=/^([a-zA-Z][a-zA-Z0-9+.-]*):/;function ue(t,e,n){const r=t.trim();if(!r)return{kind:"unresolvable"};const s=r.split(/[?#]/,1)[0];if(!s)return{kind:"unresolvable"};const a=ce.exec(s);if(a)return`${a[1].toLowerCase()}:`in le?{kind:"remote"}:{kind:"unresolvable"};const i=v(t,e,n);return i?R(i)!=="image"?{kind:"unresolvable"}:{kind:"local",path:i}:{kind:"unresolvable"}}function de(t,e,n,r){return t.kind==="remote"?{kind:"remote",src:n||"",alt:r}:t.kind==="unresolvable"?{kind:"unresolvable",fallbackText:r||n||"(image)"}:e.status==="loading"||e.status==="idle"?{kind:"loading"}:e.status==="ready"?{kind:"ready",objectUrl:e.objectUrl,alt:r,path:t.path}:{kind:"error",fallbackText:r||t.path||"(image)"}}function w(t,e,n){return{workspaceCwd:n??(t||"~"),targetPaneId:e??void 0}}function me(t,e,n){if(!t||!e){n({status:"idle"});return}let r=!1;return n({status:"loading"}),$(t,e).then(s=>{r||n({status:"ready",objectUrl:s.objectUrl})}).catch(s=>{r||n({status:"error",message:s instanceof Error?s.message:String(s)})}),()=>{r=!0,F(t)}}function fe(t){const e=_(a=>a.client),n=_(a=>a.daemon),[r,s]=m.useState({status:"idle"});return m.useEffect(()=>me(t,e&&n?i=>D(n).download(i):null,s),[e,n,t]),r}const ge=m.memo(function({src:e,alt:n,assetBase:r,owningPaneId:s,workspaceCwd:a}){const i=b(),c=m.useMemo(()=>ue(e||"",r,i),[e,r,i]),u=fe(c.kind==="local"?c.path:null),l=de(c,u,e,n);if(l.kind==="remote")return o.jsx("img",{src:l.src,alt:l.alt,className:d.inlineImage});if(l.kind==="unresolvable"||l.kind==="error")return o.jsx("code",{className:d.inlineImageFallback,children:l.fallbackText});if(l.kind==="loading")return o.jsx("div",{className:d.inlineImageSkeleton,children:o.jsx(A,{size:"sm"})});const g=w(r,s??null,a??null),p=()=>{I(l.path,g.workspaceCwd,g.targetPaneId)};return o.jsx("img",{src:l.objectUrl,alt:l.alt,className:d.inlineImage,title:l.path,draggable:!0,onDragStart:E(l.path),onClick:p,style:{cursor:"pointer"}})});function pe(t,e,n){const r=t.trim();if(!r)return{kind:"external"};if(r.startsWith("#"))return{kind:"external"};const s=v(t,e,n);return s?{kind:"local",path:s}:{kind:"external"}}function ke({href:t,children:e,assetBase:n,owningPaneId:r,workspaceCwd:s}){const a=b(),i=pe(t??"",n,a);if(i.kind==="external")return o.jsx("a",{href:t,children:e});const c=i.path,u=w(n,r,s);return o.jsx("a",{href:t,draggable:!0,onDragStart:E(c),onClick:l=>{l.preventDefault(),I(c,u.workspaceCwd,u.targetPaneId)},children:e})}const C=/^ {0,3}([-*+]|\d{1,9}[.)])(\s|$)/,he=/^(\s*)(`{3,}|~{3,})(.*)$/;function xe(t){return C.test(t[0]??"")}function _e(t,e){for(let n=e;n<t.length;n++)if((t[n]??"").trim()!=="")return n;return-1}function je(t){if(!t)return{blocks:[],tail:""};const e=t.split(`
|
|
3
|
+
`),n=[];let r=[],s=null,a=!1,i=!1;const c=()=>{const u=r.join(`
|
|
4
|
+
`).trim();u&&n.push(u),r=[]};for(let u=0;u<e.length;u++){const l=e[u]??"",g=l.trim();if(s!==null){if(r.push(l),s.test(g)){const f=a;s=null,a=!1,f&&c()}continue}const p=he.exec(l);if(p&&!i){const f=p[2];s=new RegExp(`^[${f[0]}]{${f.length},}$`),a=p[1]==="",r.push(l);continue}if(g===""&&r.length===0)continue;if((g.split("$$").length-1)%2===1&&(i=!i),g===""&&!i){const f=_e(e,u+1),k=f===-1?null:e[f]??"",S=k!==null&&!/^\s/.test(k),T=k!==null&&C.test(k)&&xe(r);if(S&&!T){c(),u=f-1;continue}}r.push(l)}return{blocks:n,tail:r.join(`
|
|
5
|
+
`)}}function be({language:t,code:e}){const[n,r]=m.useState(null);return m.useEffect(()=>{let s=!1;return Z(e,t).then(a=>{s||r(a)}),()=>{s=!0}},[e,t]),n?o.jsx("div",{className:d.prose,dangerouslySetInnerHTML:{__html:n}}):o.jsx("pre",{children:o.jsx("code",{children:e})})}function Ee({code:t}){const[e]=m.useState(()=>`mermaid-${V()}`),[n,r]=m.useState({status:"pending"});return m.useEffect(()=>{let s=!1;return(async()=>{try{const{default:a}=await L(async()=>{const{default:c}=await import("./mermaid.core-BEntOW_N.js").then(u=>u.b0);return{default:c}},__vite__mapDeps([0,1,2,3]));a.initialize({startOnLoad:!1,theme:"base",themeVariables:Y(),securityLevel:"strict",fontFamily:"var(--pi-font-ui)"});const{svg:i}=await a.render(e,t);s||r({status:"ready",svg:i})}catch(a){s||r({status:"error",message:a instanceof Error?a.message:"Failed to render diagram"})}})(),()=>{s=!0}},[e,t]),n.status==="ready"?o.jsx("div",{className:d.mermaid,dangerouslySetInnerHTML:{__html:n.svg}}):n.status==="error"?o.jsxs("div",{className:d.mermaidError,children:[o.jsxs("p",{className:d.mermaidErrorMessage,children:["Failed to render diagram: ",n.message]}),o.jsx("pre",{children:o.jsx("code",{children:t})})]}):o.jsx("pre",{children:o.jsx("code",{children:t})})}function Ie({className:t,children:e,...n}){const r=/language-(\w+)/.exec(t??""),s=!!r,a=String(e).replace(/\n$/,"");if(s&&r){const i=r[1]??"plaintext";return i==="mermaid"?o.jsx(Ee,{code:a}):o.jsx(be,{language:i,code:a})}return o.jsx("code",{className:d.inlineCode,...n,children:e})}function ye({className:t,children:e,...n}){return/language-(\w+)/.test(t??"")?o.jsx("pre",{children:o.jsx("code",{children:String(e).replace(/\n$/,"")})}):o.jsx("code",{className:d.inlineCode,...n,children:e})}const Me=[B,G],ve=[O],we=[],x=m.memo(function({text:e,assetBase:n=null,owningPaneId:r=null,workspaceCwd:s=null,lean:a=!1}){return o.jsx(z,{remarkPlugins:Me,rehypePlugins:a?we:ve,components:{code:a?ye:Ie,img:i=>o.jsx(ge,{...i,assetBase:n,owningPaneId:r,workspaceCwd:s}),a:i=>o.jsx(ke,{...i,assetBase:n,owningPaneId:r,workspaceCwd:s})},children:e})});function Pe({text:t,assetBase:e,owningPaneId:n,workspaceCwd:r}){return o.jsx("div",{className:d.prose,children:o.jsx(x,{text:t,assetBase:e,owningPaneId:n,workspaceCwd:r})})}function Re({text:t,assetBase:e,owningPaneId:n,workspaceCwd:r}){const{blocks:s,tail:a}=m.useMemo(()=>je(t),[t]);return o.jsxs("div",{className:`${d.prose} ${d.streaming}`,children:[s.map((i,c)=>o.jsx(x,{text:i,assetBase:e,owningPaneId:n,workspaceCwd:r},c)),a!==""&&o.jsx(x,{text:a,lean:!0,assetBase:e,owningPaneId:n,workspaceCwd:r})]})}export{Pe as M,Re as S,w 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,r as y}from"./index-
|
|
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,r as y}from"./index-CJKgXjmo.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-
|
|
1
|
+
import{r as a}from"./vendor-react-DQUAl2K8.js";import{u as w}from"./index-CJKgXjmo.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};
|