@av-pi-studio/web-client 0.0.59 → 0.0.61

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