@av-pi-studio/web-client 0.0.117 → 0.0.118

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 (122) hide show
  1. package/README.md +12 -12
  2. package/dist/web/assets/BinaryFallbackViewer-6oStgFbx.js +1 -0
  3. package/dist/web/assets/{ChatPanel-Dh8HDToX.js → ChatPanel-BVw71R5q.js} +5 -5
  4. package/dist/web/assets/CodeView-DBvTM0BW.js +1 -0
  5. package/dist/web/assets/{DiffView-H0nfCGhg.js → DiffView-Bp1YwIcs.js} +1 -1
  6. package/dist/web/assets/FilePanel-Bl5ytI3U.js +1 -0
  7. package/dist/web/assets/HtmlViewer-D52zbW1I.js +1 -0
  8. package/dist/web/assets/ImageViewer-DyQNZCKd.js +1 -0
  9. package/dist/web/assets/MarkdownFileViewer-BZJbZEGK.js +1 -0
  10. package/dist/web/assets/ModelProvidersPanel-DoQ6F0J7.js +1 -0
  11. package/dist/web/assets/MoleculeViewerPanel-CUgDBSd_.js +1 -0
  12. package/dist/web/assets/PdfViewer-BHiGul5n.js +1 -0
  13. package/dist/web/assets/SaveFileButton-469govDl.js +1 -0
  14. package/dist/web/assets/SettingsDialog-D2rCwciZ.js +8 -0
  15. package/dist/web/assets/SkillsPanel-Bwa_B9KI.js +1 -0
  16. package/dist/web/assets/{StatusBadge-4Ta2PiFt.js → StatusBadge-eoBBn7zF.js} +1 -1
  17. package/dist/web/assets/{Switch-DrRVfYsF.js → Switch-DvBJf8Rd.js} +1 -1
  18. package/dist/web/assets/TerminalPanel-B8j4fo6Z.js +1 -0
  19. package/dist/web/assets/TextViewer-DNjD6up3.js +1 -0
  20. package/dist/web/assets/VideoViewer-BeiZJGIs.js +1 -0
  21. package/dist/web/assets/ViewersPanel-DbKljM62.js +1 -0
  22. package/dist/web/assets/{abnfDiagram-N423BO3Z-DAM-L4Gi.js → abnfDiagram-N423BO3Z-CpfpOF_O.js} +1 -1
  23. package/dist/web/assets/{arc-B5fbklv-.js → arc-DBTSI6_N.js} +1 -1
  24. package/dist/web/assets/{architectureDiagram-T3A2C74G-g5YdBqOD.js → architectureDiagram-T3A2C74G-BSevfMW_.js} +1 -1
  25. package/dist/web/assets/{blockDiagram-VBNYF7ZC-CnQe9SwF.js → blockDiagram-VBNYF7ZC-mjH_gzpo.js} +1 -1
  26. package/dist/web/assets/{c4Diagram-5PPSVZJV-hnI3bmAh.js → c4Diagram-5PPSVZJV-CKvGPw0r.js} +1 -1
  27. package/dist/web/assets/channel-DewxN4Jo.js +1 -0
  28. package/dist/web/assets/{chunk-2GRJ4B5K-ga2EpiBM.js → chunk-2GRJ4B5K-DX9yxpY8.js} +1 -1
  29. package/dist/web/assets/{chunk-2Q5K7J3B-8EL89tcM.js → chunk-2Q5K7J3B-CLN7DvaK.js} +1 -1
  30. package/dist/web/assets/{chunk-5RXB4S5H-ny9nLzV7.js → chunk-5RXB4S5H-_JxweRkX.js} +1 -1
  31. package/dist/web/assets/{chunk-5VM5RSS4-D8AiE16-.js → chunk-5VM5RSS4-3BAvSy1_.js} +1 -1
  32. package/dist/web/assets/{chunk-6Q2QTUOP-BEyDElR_.js → chunk-6Q2QTUOP-DQLD88Lm.js} +1 -1
  33. package/dist/web/assets/{chunk-GF5L2VYU-BOQX5MLe.js → chunk-GF5L2VYU-D-1fx8P7.js} +1 -1
  34. package/dist/web/assets/{chunk-JWPE2WC7-DZ7yLQfa.js → chunk-JWPE2WC7-C2fToatl.js} +1 -1
  35. package/dist/web/assets/{chunk-KBJHAD2P-ogydf6uq.js → chunk-KBJHAD2P-DHjSexvX.js} +1 -1
  36. package/dist/web/assets/{chunk-RYQCIY6F-B4kX-J9n.js → chunk-RYQCIY6F-DsVSVTjX.js} +1 -1
  37. package/dist/web/assets/{chunk-XXDRQBXY-CJ0O9VGU.js → chunk-XXDRQBXY-Csxxsn8g.js} +1 -1
  38. package/dist/web/assets/classDiagram-JCYQIIEL-YbS66O-E.js +1 -0
  39. package/dist/web/assets/classDiagram-v2-OCEON4UE-YbS66O-E.js +1 -0
  40. package/dist/web/assets/{cose-bilkent-JH36ORCC-lwzifGUR.js → cose-bilkent-JH36ORCC-DIVX_YPY.js} +1 -1
  41. package/dist/web/assets/{cynefin-VYW2F7L2-UwoALUYS.js → cynefin-VYW2F7L2-fVS7Seyd.js} +1 -1
  42. package/dist/web/assets/{cynefinDiagram-MW4NZA55-Dal57Q23.js → cynefinDiagram-MW4NZA55-krsTOg0x.js} +1 -1
  43. package/dist/web/assets/{dagre-VZM6K2ZE-CKlrZnar.js → dagre-VZM6K2ZE-Byz_9-UR.js} +1 -1
  44. package/dist/web/assets/{diagram-7IWD3JNH-FMn1vsHL.js → diagram-7IWD3JNH-CAwWHICT.js} +1 -1
  45. package/dist/web/assets/{diagram-B4RE2ZJO-CI5rpxKQ.js → diagram-B4RE2ZJO-zvv-V2co.js} +1 -1
  46. package/dist/web/assets/{diagram-LBJQPF4R-BOVH3I-f.js → diagram-LBJQPF4R-i5y2WTdZ.js} +1 -1
  47. package/dist/web/assets/{diagram-Q27KOJAE-DmuUX06N.js → diagram-Q27KOJAE-B1inWemu.js} +1 -1
  48. package/dist/web/assets/{diagram-UB23O5K3-Cw9DrP-K.js → diagram-UB23O5K3-Dh89SZOh.js} +1 -1
  49. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-f4TEQ7_W.js → ebnfDiagram-BXEA7PRR-su2ygatX.js} +1 -1
  50. package/dist/web/assets/{erDiagram-JOGREHBK-CF47Mcra.js → erDiagram-JOGREHBK-BbsgEzQn.js} +1 -1
  51. package/dist/web/assets/{flowDiagram-UKHOOZJN-rdiIClpu.js → flowDiagram-UKHOOZJN-Chl_0-ag.js} +1 -1
  52. package/dist/web/assets/{ganttDiagram-PKOTCBZU-BBqllMXi.js → ganttDiagram-PKOTCBZU-CYMojHU0.js} +1 -1
  53. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-6sOrT3Es.js → gitGraphDiagram-DS77QQ5N-BZQF2UJa.js} +1 -1
  54. package/dist/web/assets/{graph-DUOUaKTD.js → graph-q4AqDxwU.js} +1 -1
  55. package/dist/web/assets/{href-resolution-XVtyCiRv.js → href-resolution-A_PcAhnr.js} +1 -1
  56. package/dist/web/assets/{index-DbyP1ZAT.css → index-Dg0mhDS9.css} +1 -1
  57. package/dist/web/assets/index-DjRqFIN0.js +19 -0
  58. package/dist/web/assets/{infoDiagram-6WML65LV-B8DQ1Ntn.js → infoDiagram-6WML65LV-L2kKwrdb.js} +1 -1
  59. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-CL_6Xhdk.js → ishikawaDiagram-WSZJBQD7-B-hdpT0j.js} +1 -1
  60. package/dist/web/assets/{journeyDiagram-NVQOT4AX-iO2oB_PM.js → journeyDiagram-NVQOT4AX-DtZbDU0g.js} +1 -1
  61. package/dist/web/assets/{kanban-definition-27J2QSJJ-Bq5zUdk6.js → kanban-definition-27J2QSJJ-BNVi4euz.js} +1 -1
  62. package/dist/web/assets/{layout-CKWK6l6a.js → layout-ZLTTNfUo.js} +1 -1
  63. package/dist/web/assets/{linear-hDCiku2e.js → linear-Dg9CPt0k.js} +1 -1
  64. package/dist/web/assets/markdown-lfaaW_Mn.js +5 -0
  65. package/dist/web/assets/{mermaid.core-CHAol8ex.js → mermaid.core-524tR-D2.js} +4 -4
  66. package/dist/web/assets/{mindmap-definition-FAOFIHXS-BBmO4Gks.js → mindmap-definition-FAOFIHXS-CJKkZcYQ.js} +1 -1
  67. package/dist/web/assets/{ordinal-Bt4q2WDw.js → ordinal-B7gl1e82.js} +1 -1
  68. package/dist/web/assets/{pegDiagram-VL7TDLO6-DqQhyw9T.js → pegDiagram-VL7TDLO6-C29SbD0M.js} +1 -1
  69. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-BS5cr7Al.js → pieDiagram-7S7Q4E2Y-BpeO9BuX.js} +1 -1
  70. package/dist/web/assets/{provider-auth-store-B0otZuIW.js → provider-auth-store-CpmUGwuu.js} +1 -1
  71. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-BLDUr9qC.js → quadrantDiagram-CIZ2JOQS-yU4K00QE.js} +1 -1
  72. package/dist/web/assets/{railroadDiagram-AXF67PYL-VFMEovCO.js → railroadDiagram-AXF67PYL-DIkSup17.js} +1 -1
  73. package/dist/web/assets/{requirementDiagram-LRYGKXZP-B1AZqGHF.js → requirementDiagram-LRYGKXZP-DB5tgpS1.js} +1 -1
  74. package/dist/web/assets/{sankeyDiagram-W5VNT64P-DsZPKpe8.js → sankeyDiagram-W5VNT64P-DYPa3r0S.js} +1 -1
  75. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-BiJ-GnCG.js → sequenceDiagram-SI44F4Z6-C_rD0zxP.js} +1 -1
  76. package/dist/web/assets/{sizeCapture-X5ZJPWSS-C2FFfWkK.js → sizeCapture-X5ZJPWSS-DzC-Nn78.js} +1 -1
  77. package/dist/web/assets/{stateDiagram-OKZ733FA-qFV_v5ZT.js → stateDiagram-OKZ733FA-DQdSURcD.js} +1 -1
  78. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-BCmrjJ-P.js +1 -0
  79. package/dist/web/assets/{swimlanes-SLNWSIFB-9sGFMDql.js → swimlanes-SLNWSIFB-BA-Oww3o.js} +2 -2
  80. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-BtietnZ5.js +8 -0
  81. package/dist/web/assets/{timeline-definition-Z64GVDOM-D3ypJvTh.js → timeline-definition-Z64GVDOM-C7JXpk1W.js} +1 -1
  82. package/dist/web/assets/use-file-download-FoQrf961.js +1 -0
  83. package/dist/web/assets/{use-file-watch-Ca_f0M8P.js → use-file-watch-Th-A-3Ws.js} +1 -1
  84. package/dist/web/assets/{use-provider-auth-list-BfHGDiIE.js → use-provider-auth-list-D5pguVWm.js} +1 -1
  85. package/dist/web/assets/{vendor-dnd-CayJj8TC.js → vendor-dnd-vJGfGIIi.js} +1 -1
  86. package/dist/web/assets/{vendor-highlight-2yu9fuIs.js → vendor-highlight-DaCUEPaW.js} +1 -1
  87. package/dist/web/assets/{vendor-icons-DEs9VPZK.js → vendor-icons-CSCeICuX.js} +1 -1
  88. package/dist/web/assets/{vendor-markdown-BdpekPki.js → vendor-markdown-Bo-Xpsuy.js} +1 -1
  89. package/dist/web/assets/{vendor-molviewer-DeAF8d5d.js → vendor-molviewer-7FbONJs2.js} +1 -1
  90. package/dist/web/assets/{vendor-overlays-SaWbfdX8.js → vendor-overlays-DjMT65Ip.js} +1 -1
  91. package/dist/web/assets/{vendor-pdfjs-BrYGnqfM.js → vendor-pdfjs-BSchhGel.js} +2 -2
  92. package/dist/web/assets/{vendor-query-i7fr__Xm.js → vendor-query-CDNPrdQ8.js} +1 -1
  93. package/dist/web/assets/{vendor-react-DQUAl2K8.js → vendor-react-Dka9ZH0B.js} +1 -1
  94. package/dist/web/assets/{vendor-D3SOLPPh.js → vendor-z183l2lP.js} +6 -6
  95. package/dist/web/assets/{vennDiagram-T6HMQDX7-CL6HBdNJ.js → vennDiagram-T6HMQDX7-C_y33Ta5.js} +1 -1
  96. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-CovrUiAA.js → wardleyDiagram-T6FBY63Y-gxOBkNAp.js} +1 -1
  97. package/dist/web/assets/{xychartDiagram-ELKLHX3M-B4B84nxd.js → xychartDiagram-ELKLHX3M-BEdGwPiU.js} +1 -1
  98. package/dist/web/index.html +9 -8
  99. package/package.json +5 -42
  100. package/dist/web/assets/BinaryFallbackViewer-BtxtcHuV.js +0 -1
  101. package/dist/web/assets/CodeView-CAB3SZYK.js +0 -1
  102. package/dist/web/assets/FilePanel-C8cn3iJj.js +0 -1
  103. package/dist/web/assets/HtmlViewer-C6i8TGWc.js +0 -1
  104. package/dist/web/assets/ImageViewer-CyNec5RW.js +0 -1
  105. package/dist/web/assets/MarkdownFileViewer-Ck__w_R6.js +0 -1
  106. package/dist/web/assets/ModelProvidersPanel-BzCxTWcG.js +0 -1
  107. package/dist/web/assets/MoleculeViewerPanel-Dm74U_GU.js +0 -1
  108. package/dist/web/assets/PdfViewer-DP5N6Zq4.js +0 -1
  109. package/dist/web/assets/SettingsDialog-DFOcdK5d.js +0 -8
  110. package/dist/web/assets/SkillsPanel-B1rX9W8m.js +0 -1
  111. package/dist/web/assets/TerminalPanel-Bl7fG-P0.js +0 -1
  112. package/dist/web/assets/TextViewer-C6sO1Esy.js +0 -1
  113. package/dist/web/assets/VideoViewer-cj1hw5cl.js +0 -1
  114. package/dist/web/assets/ViewersPanel-DtgabN6n.js +0 -1
  115. package/dist/web/assets/channel-BC5O3Fw2.js +0 -1
  116. package/dist/web/assets/classDiagram-JCYQIIEL-DtNk70ER.js +0 -1
  117. package/dist/web/assets/classDiagram-v2-OCEON4UE-DtNk70ER.js +0 -1
  118. package/dist/web/assets/index-DVjN3uZm.js +0 -19
  119. package/dist/web/assets/markdown-DNjz8eN5.js +0 -5
  120. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-BLx9oVo-.js +0 -1
  121. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-DXJEgu0Z.js +0 -8
  122. package/dist/web/assets/use-file-download-DF0pV2Qv.js +0 -1
@@ -1,19 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ModelProvidersPanel-BzCxTWcG.js","assets/vendor-react-DQUAl2K8.js","assets/vendor-query-i7fr__Xm.js","assets/use-provider-auth-list-BfHGDiIE.js","assets/provider-auth-store-B0otZuIW.js","assets/vendor-D3SOLPPh.js","assets/vendor-CEK31ho9.css","assets/StatusBadge-4Ta2PiFt.js","assets/StatusBadge-DmrnYEhp.css","assets/vendor-icons-DEs9VPZK.js","assets/vendor-overlays-SaWbfdX8.js","assets/vendor-dnd-CayJj8TC.js","assets/ModelProvidersPanel-BP1zIT6I.css","assets/SkillsPanel-B1rX9W8m.js","assets/Switch-DrRVfYsF.js","assets/Switch-Dz-IIw4-.css","assets/SkillsPanel-Cs4iUzys.css","assets/ViewersPanel-DtgabN6n.js","assets/ViewersPanel-BvWpXbxZ.css","assets/SettingsDialog-DFOcdK5d.js","assets/SettingsDialog-Bc09UjU4.css","assets/ChatPanel-Dh8HDToX.js","assets/markdown-DNjz8eN5.js","assets/vendor-highlight-2yu9fuIs.js","assets/vendor-markdown-BdpekPki.js","assets/href-resolution-XVtyCiRv.js","assets/markdown-C15eCO0s.css","assets/DiffView-H0nfCGhg.js","assets/DiffView-CUctPSBA.css","assets/ChatPanel-eXvPOkx2.css","assets/FilePanel-C8cn3iJj.js","assets/use-file-watch-Ca_f0M8P.js","assets/FilePanel-bWuYWz8t.css","assets/TerminalPanel-Bl7fG-P0.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-DpxpMm0w.css","assets/MoleculeViewerPanel-Dm74U_GU.js","assets/vendor-molviewer-DeAF8d5d.js","assets/vendor-molviewer-Bychyqid.css","assets/use-file-download-DF0pV2Qv.js","assets/MoleculeViewerPanel-CHZ8q0jD.css","assets/TextViewer-C6sO1Esy.js","assets/CodeView-CAB3SZYK.js","assets/CodeView-Bbd7h9aM.css","assets/TextViewer-C7Vnqw_v.css","assets/MarkdownFileViewer-Ck__w_R6.js","assets/MarkdownFileViewer-Cnl1kopk.css","assets/ImageViewer-CyNec5RW.js","assets/ImageViewer-Bh1rkSDM.css","assets/VideoViewer-cj1hw5cl.js","assets/VideoViewer-CCmuaDLl.css","assets/BinaryFallbackViewer-BtxtcHuV.js","assets/BinaryFallbackViewer-ClYyn4IS.css","assets/HtmlViewer-C6i8TGWc.js","assets/HtmlViewer-C9NJC5qE.css","assets/PdfViewer-DP5N6Zq4.js","assets/vendor-pdfjs-BrYGnqfM.js","assets/PdfViewer-DoOGVn5M.css"])))=>i.map(i=>d[i]);
2
- var mi=Object.defineProperty;var _i=(e,t,n)=>t in e?mi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var z=(e,t,n)=>_i(e,typeof t!="symbol"?t+"":t,n);import{r as w,j as c,a as yi,c as wi}from"./vendor-react-DQUAl2K8.js";import{Q as vi,c as bi,u as Si,d as ki,a as st,b as xi}from"./vendor-query-i7fr__Xm.js";import{aj as f,ak as l,N as U,y as ae,al as xt,am as M,an as pe,ao as re,ap as I,aq as v,ar as Z,as as N,at as nn,au as et,_ as de}from"./vendor-D3SOLPPh.js";import{u as Ii,X as vt,K as Ti,v as Ei,w as sn,x as Ci,y as Ri,z as Ai,H as ji,I as qi,J as Bn,P as ko,r as Pi,k as xo,O as Mi,c as Fn,b as zn,n as Vt,Q as Io,R as To,V as on,W as Eo,Y as Ni,_ as Di,$ as $i,a0 as Ve,e as Tn,a1 as Kt,d as Nt,E as Oi,a2 as Li,D as Bi,a3 as Fi,a4 as zi,a5 as Ui,a6 as Wi,a7 as Hi,a8 as Vi,s as Ki}from"./vendor-icons-DEs9VPZK.js";import{D as Gi,a as Yi,b as Xi,c as Ji,d as hs,e as En,P as Zi,C as Qi,G as ea,L as ta,I as na,S as sa,f as oa,g as ra,h as ia,i as aa,R as It,T as Tt}from"./vendor-overlays-SaWbfdX8.js";import{u as ca,a as la,p as da,P as ua,b as Co,S as fa,h as pa,c as ha,C as ga,D as ma,d as _a}from"./vendor-dnd-CayJj8TC.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const ya=new vi,Se=(e,t,n,s,o,r,i,a,d,u,p)=>({50:e,100:t,200:n,300:s,400:o,500:r,600:i,700:a,800:d,900:u,950:p}),E={zinc:Se("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:Se("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:Se("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:Se("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:Se("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:Se("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:Se("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:Se("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:Se("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:Se("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:Se("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"};function Ro(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 wa(e){return Math.max(0,Math.min(255,Math.round(e)))}function va({r:e,g:t,b:n}){const s=o=>wa(o).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function ba(e){const{r:t,g:n,b:s}=Ro(e),o=r=>{const i=r/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*o(t)+.7152*o(n)+.0722*o(s)}function Un(e,t="#18181b",n="#ffffff"){return ba(e)>.45?t:n}function Sa(e,t){const{r:n,g:s,b:o}=Ro(e),r=Math.max(0,Math.min(1,t));return va({r:n+(255-n)*r,g:s+(255-s)*r,b:o+(255-o)*r})}function Dt(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const ka={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,14:14,16:16,20:20,24:24,26:26,30:30,32:32,48:48,64:64,80:80,96:96,128:128},Gt={"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},xa={normal:"400",medium:"500",semibold:"600",bold:"700"},Ia={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},Ta={0:0,1:1,2:2},Ea={0:0,50:.5,100:1},Ca={xs:12,sm:14,md:16,lg:20},Ra={diff:22},Ao='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',jo='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',vb='"MesloLGS NF", "MesloLGS Nerd Font Mono", "Cascadia Mono NF", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function Aa(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}}}const ja={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea",statusInfo:"#3b82f6"},qa={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed",statusInfo:"#2563eb"};function Pa(){return{keyword:E.purple[300],string:E.green[300],number:E.orange[300],boolean:E.orange[300],comment:E.zinc[500],function:E.blue[300],variable:E.zinc[200],type:E.teal[300],class:E.amber[300],constant:E.orange[300],operator:E.zinc[400],punctuation:E.zinc[400],tag:E.red[300],attribute:E.amber[300],property:E.blue[200],regexp:E.teal[300],escape:E.orange[200],heading:E.blue[300],link:E.blue[400],deleted:E.red[400],inserted:E.green[400]}}function Ma(){return{keyword:E.purple[700],string:E.green[700],number:E.orange[700],boolean:E.orange[700],comment:E.zinc[500],function:E.blue[700],variable:E.zinc[800],type:E.teal[700],class:E.amber[700],constant:E.orange[700],operator:E.zinc[600],punctuation:E.zinc[600],tag:E.red[700],attribute:E.amber[700],property:E.blue[700],regexp:E.teal[700],escape:E.orange[700],heading:E.blue[700],link:E.blue[600],deleted:E.red[700],inserted:E.green[700]}}function qo(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:E.zinc[900],red:E.red[500],green:E.green[500],yellow:E.amber[500],blue:E.blue[500],magenta:E.purple[500],cyan:E.teal[500],white:E.zinc[300],brightBlack:E.zinc[600],brightRed:E.red[400],brightGreen:E.green[400],brightYellow:E.amber[400],brightBlue:E.blue[400],brightMagenta:E.purple[400],brightCyan:E.teal[400],brightWhite:E.zinc[50]}}function rt(e){const t=E.zinc[50],n=Un(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:E.white,success:e.accent,successForeground:E.white,border:e.border,borderAccent:e.borderAccent,...ja,diffAddition:E.green[400],diffDeletion:E.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:E,syntax:Pa(),terminal:qo(e.surface0,t,e.accent)}}function Na(){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:Un(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...qa,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:E,syntax:Ma(),terminal:{...qo("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const Da={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},Po=["light","dark","zinc","midnight","claude","ghostty"];function $a(e){if(e==="light")return Na();switch(e){case"dark":return rt({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 rt({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 rt({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 rt({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 rt({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 Mo={};for(const e of Po){const t=e==="light"?"light":"dark";Mo[e]={name:e,colorScheme:t,colors:$a(e),swatch:Da[e]}}const Oa=Mo;function No(e){const t=Oa[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:ka,fontSize:{...Gt},fontFamily:{ui:Ao,mono:jo},lineHeight:{...Ra},iconSize:Ca,fontWeight:xa,borderRadius:Ia,borderWidth:Ta,opacity:Ea,shadow:Aa(t.colorScheme),swatch:t.swatch}}const La=Gt.base,Ba=10,Fa=24;function za(e,t){const n=t.themeName??e.name,s=No(n),o=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:Ao,r=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:jo,i={...s.fontSize};if(t.fontSize!=null){const d=Math.max(Ba,Math.min(Fa,t.fontSize))/La;for(const u of Object.keys(Gt))i[u]=Math.round(Gt[u]*d)}return{...s,fontSize:i,fontFamily:{ui:o,mono:r}}}function Ua(e){return No(e)}const Wa="dark",Ha=16;function Va(e){const t=e/Ha;return`${Number(t.toFixed(4))}rem`}function Ka(e){const t={};Ga(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}`]=Va(s);t["--pi-font-ui"]=e.fontFamily.ui,t["--pi-font-mono"]=e.fontFamily.mono,t["--pi-line-height-diff"]=`${e.lineHeight.diff}px`;for(const[n,s]of Object.entries(e.iconSize))t[`--pi-icon-size-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontWeight))t[`--pi-font-weight-${n}`]=String(s);for(const[n,s]of Object.entries(e.borderRadius))t[`--pi-radius-${n}`]=s===9999?"9999px":`${s}px`;for(const[n,s]of Object.entries(e.borderWidth))t[`--pi-border-width-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.opacity))t[`--pi-opacity-${n}`]=String(s);for(const[n,s]of Object.entries(e.shadow))if(typeof s=="string")t[`--pi-shadow-${n}`]=s;else if(s&&typeof s=="object"){const o=s;t[`--pi-shadow-${n}`]=`${o.offsetX}px ${o.offsetY}px ${o.radius}px ${o.color}`}return t["--pi-color-scheme"]=e.colorScheme,t}function Ga(e,t){const{palette:n,syntax:s,terminal:o,...r}=e;for(const[i,a]of Object.entries(r))typeof a=="string"&&(t[`--pi-color-${i}`]=a);s&&Ya(s,t),o&&(t["--pi-terminal-bg"]=o.background,t["--pi-terminal-fg"]=o.foreground)}function Ya(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${Xa(n)}`]=s)}function Xa(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Ja(e){if(typeof document>"u")return;const t=document.documentElement.style;for(const[s,o]of Object.entries(e))t.setProperty(s,o);const n=e["--pi-color-scheme"];n&&document.documentElement.style.setProperty("color-scheme",n)}function Za(e){const t=Ka(e);Ja(t)}const it=l().min(1,"Asset path must not be empty"),Qa=f({accent:l().refine(Dt,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(Dt,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(Dt,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(Dt,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),ec=f({logoLight:it,logoDark:it,logoMark:it.optional(),icon:it,splash:it.optional()}),tc=f({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),nc=f({copyright:l().optional(),companyName:l().optional()}).optional(),sc=f({productName:l().min(1,"productName must not be empty").optional(),shortName:l().optional(),tagline:l().optional(),colors:Qa,assets:ec.optional(),links:tc,legal:nc});function oc(e){const t=e.accent,n=e.accentBright??Sa(t,.35),s=e.accentForeground??Un(t),o=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:o}}function rc(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 ic="pi-studio-appearance";function ac(e){if(e===void 0)return;const t=sc.safeParse(e);if(t.success)return t.data;const n=t.error.issues.map(s=>`${s.path.join(".")||"(root)"}: ${s.message}`);console.warn(`[ui-library] Ignoring invalid brandConfig, using the unbranded theme. ${n.join("; ")}`)}function cc(e){return e==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e}function lc(e,t,n={}){const s=n.storageKey??ic,o=ac(t);let r=p(),i=null;const a=new Set;function d(h,b){const m=cc(h),x=Ua(m);let y=za(x,{...b,themeName:m});if(o!=null&&o.colors){const S=oc(o.colors);y=rc(y,S)}return y}function u(){const h=JSON.stringify({mode:r.mode,settings:r.settings});e.set(s,h)}function p(){const h=e.get(s);let b=Wa,m={};if(h)try{const y=JSON.parse(h);y.mode&&(Po.includes(y.mode)||y.mode==="system")&&(b=y.mode),y.settings&&typeof y.settings=="object"&&(m=y.settings)}catch{}const x=d(b,m);return{mode:b,settings:m,resolvedTheme:x}}function g(){r={...r,resolvedTheme:d(r.mode,r.settings)},u();for(const h of a)h()}const _={getState(){return r},setMode(h){r={...r,mode:h},g(),_.apply()},updateSettings(h){r={...r,settings:{...r.settings,...h}},g(),_.apply()},apply(){Za(r.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const h=window.matchMedia("(prefers-color-scheme: dark)"),b=()=>{r.mode==="system"&&(g(),_.apply())};return h.addEventListener("change",b),i=()=>h.removeEventListener("change",b),i},subscribe(h){return a.add(h),()=>a.delete(h)}};return _}const rn={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{}}},Do=w.createContext(null),dc=w.createContext(null);function uc({store:e=rn,storageKey:t,brandConfig:n,children:s}){const o=w.useRef(null);o.current||(o.current=lc(e,n,{storageKey:t}),o.current.apply());const r=o.current,i=w.useSyncExternalStore(r.subscribe,r.getState);return w.useEffect(()=>r.listen(),[r]),w.useEffect(()=>{},[]),c.jsx(dc.Provider,{value:r,children:c.jsx(Do.Provider,{value:i,children:s})})}function bb(){const e=w.useContext(Do);if(!e)throw new Error("useAppearance must be used within a ThemeBoundary");return e}const gs={xs:28,sm:32,md:36,lg:40},fc={xs:12,sm:14,md:16,lg:20},ms={xs:8,sm:10,md:12,lg:16},pc={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 hc(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}const hn=["#2563eb","#16a34a","#9333ea","#dc2626","#0d9488","#d97706","#db2777","#0891b2","#ea580c","#4f46e5","#059669","#7c3aed"];function gc(e){let t=0;for(let s=0;s<e.length;s++){const o=e.charCodeAt(s);t=t*31+o>>>0}return hn[t%hn.length]??hn[0]}function mc(e){const t=e.match(/[a-zA-Z0-9]/);return t?t[0].toUpperCase():"?"}function _c(e){switch(e){case"default":return{};case"success":return{token:"statusSuccess"};case"error":return{token:"statusDanger"};case"warning":return{token:"statusWarning"}}}const Wn=2200;function yc(e,t,n,s=Date.now()){return{id:e,content:t,variant:n.variant??"default",durationMs:n.durationMs!==void 0?n.durationMs:Wn,icon:n.icon,paused:!1,shownAt:s}}function wc(e="Copied"){return{content:e,opts:{variant:"success",durationMs:Wn}}}function vc(e){return{content:e,opts:{variant:"error",durationMs:Wn}}}function bc(e,t,n=Date.now()){if(e.durationMs===null)return null;e.paused;const s=n-e.shownAt;return Math.max(0,e.durationMs-s)}function Sc(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:o}=e;if(!t)return null;if(n)switch(s){case"permission":case"question":return"statusWarning";case"error":return"statusDanger";case"finished":default:return"statusSuccess"}switch(t){case"running":case"queued":return"accent";case"waiting":return"statusWarning";case"finished":return"statusSuccess";case"error":return"statusDanger";case"idle":case"archived":return o?"foregroundMuted":null}}const _s=8,kc=36,xc="_btn_dkqaa_4",Ic="_secondary_dkqaa_47",Tc="_outline_dkqaa_56",Ec="_ghost_dkqaa_65",Cc="_destructive_dkqaa_75",Rc="_iconOnly_dkqaa_85",Ac="_loadingSpinner_dkqaa_92",jc="_piSpin_dkqaa_1",$t={btn:xc,default:"_default_dkqaa_38",secondary:Ic,outline:Tc,ghost:Ec,destructive:Cc,iconOnly:Rc,loadingSpinner:Ac,piSpin:jc};function se({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:o,trailing:r,iconOnly:i=!1,children:a,style:d,className:u,ref:p,...g}){const{opacity:_}=hc({disabled:s??!1,loading:n}),h=s||n,b=fc[t];return c.jsxs("button",{ref:p,className:U($t.btn,$t[e],i&&$t.iconOnly,u),disabled:h,"aria-busy":n||void 0,style:{minHeight:gs[t],paddingLeft:i?void 0:ms[t],paddingRight:i?void 0:ms[t],fontSize:pc[t],opacity:_,...i?{width:gs[t]}:{},...d},...g,children:[n?c.jsx(Ii,{className:$t.loadingSpinner,size:b,"aria-hidden":!0}):o?c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o}):null,a,r&&!n&&c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r})]})}const qc="_iconBtn_1unr3_3",Pc="_xs_1unr3_32",Mc="_sm_1unr3_36",ys={iconBtn:qc,xs:Pc,sm:Mc};function qe({size:e="xs",hoverBase:t,className:n,style:s,type:o="button",...r}){return c.jsx("button",{type:o,className:U(ys.iconBtn,ys[e],n),style:t?{"--icon-btn-hover-base":t,...s}:s,...r})}const Nc={xs:12,sm:14,md:16,lg:20};function oe({icon:e,size:t="md",color:n="currentColor",className:s,...o}){const r=typeof t=="number"?t:Nc[t];return c.jsx(e,{size:r,color:n,className:s,"aria-hidden":o["aria-hidden"],"aria-label":o["aria-label"]})}const Dc="_dot_ve4v6_3",$c="_spinner_ve4v6_16",Oc="_pulse_ve4v6_35",gn={dot:Dc,spinner:$c,pulse:Oc},Lc={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 an({className:e,pulse:t,"aria-label":n,...s}){const o=Sc(s);if(!o)return null;const r=s.status==="running"&&!s.requiresAttention,i=r?"var(--pi-color-accentBright, #a2b4d7)":Lc[o]??"currentColor";return c.jsx("span",{className:`${r?gn.spinner:gn.dot}${t&&!r?` ${gn.pulse}`:""}${e?` ${e}`:""}`,style:r?{borderTopColor:i,borderRightColor:i}:{width:`var(--status-dot-size, ${_s}px)`,height:`var(--status-dot-size, ${_s}px)`,backgroundColor:i},role:n?"img":"presentation","aria-label":n})}const Bc="_avatar_1m9k9_4",Fc="_avatarImg_1m9k9_14",zc="_avatarFallback_1m9k9_20",mn={avatar:Bc,avatarImg:Fc,avatarFallback:zc};function Uc({projectKey:e,src:t,size:n=32,className:s}){const o=mc(e),r=gc(e),i=Math.round(n*.4);return c.jsx("span",{className:`${mn.avatar}${s?` ${s}`:""}`,style:{width:n,height:n,backgroundColor:t?void 0:r},"aria-label":e,role:"img",children:t?c.jsx("img",{src:t,alt:e,className:mn.avatarImg}):c.jsx("span",{className:mn.avatarFallback,style:{fontSize:i},"aria-hidden":!0,children:o})})}const Wc="_spinner_1ibj3_3",Hc={spinner:Wc},Vc={xs:12,sm:16,md:20,lg:24},Kc={xs:1,sm:2,md:2,lg:3};function $o({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const o=typeof e=="number"?e:Vc[e],r=typeof e=="number"?2:Kc[e];return c.jsx("span",{className:`${Hc.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:o,height:o,borderWidth:r,color:t}})}const Gc="_panel_1de7t_3",Yc={panel:Gc};function Oo({className:e,...t}){return c.jsx("div",{className:U(Yc.panel,e),...t})}const Xc="_emptyState_kp50e_3",Jc={emptyState:Xc};function De({className:e,...t}){return c.jsx("div",{className:U(Jc.emptyState,e),...t})}const Zc="_input_756jo_3",Qc="_textarea_756jo_32",Cn={input:Zc,textarea:Qc},Yt=w.forwardRef(function({className:t,...n},s){return c.jsx("input",{ref:s,className:U(Cn.input,t),...n})}),el=w.forwardRef(function({className:t,...n},s){return c.jsx("textarea",{ref:s,className:U(Cn.input,Cn.textarea,t),...n})}),tl="_overlay_1k4ng_1",nl="_contentWrapper_1k4ng_7",sl="_dialog_1k4ng_16",ol="_header_1k4ng_28",rl="_title_1k4ng_36",il="_body_1k4ng_43",al="_footer_1k4ng_49",cl="_bare_1k4ng_58",ll="_bareBody_1k4ng_64",dl="_bareCloseBtn_1k4ng_68",ul="_visuallyHidden_1k4ng_73",ke={overlay:tl,contentWrapper:nl,dialog:sl,header:ol,title:rl,body:il,footer:al,bare:cl,bareBody:ll,bareCloseBtn:dl,visuallyHidden:ul},Lo=En;function Rn({open:e,onOpenChange:t,title:n,children:s,footer:o,width:r,className:i,bare:a=!1,onInteractOutside:d,onEscapeKeyDown:u,onCloseAutoFocus:p,onOpenAutoFocus:g}){return c.jsx(Gi,{open:e,onOpenChange:t,children:c.jsxs(Yi,{children:[c.jsx(Xi,{className:ke.overlay}),c.jsx("div",{className:ke.contentWrapper,children:c.jsxs(Ji,{className:U(ke.dialog,a&&ke.bare,i),style:r!==void 0?{width:r}:void 0,onInteractOutside:d,onEscapeKeyDown:u,onCloseAutoFocus:p,onOpenAutoFocus:g,children:[a?c.jsx(hs,{className:ke.visuallyHidden,children:n}):c.jsxs("div",{className:ke.header,children:[c.jsx(hs,{className:ke.title,children:n}),c.jsx(En,{asChild:!0,children:c.jsx(qe,{size:"sm","aria-label":"Close",children:c.jsx(vt,{size:16})})})]}),c.jsx("div",{className:U(ke.body,a&&ke.bareBody),children:s}),a&&c.jsx(En,{asChild:!0,children:c.jsx(qe,{size:"sm","aria-label":"Close",className:ke.bareCloseBtn,style:{background:"var(--pi-color-surface1)",border:"1px solid var(--pi-color-border)",borderRadius:"50%"},children:c.jsx(vt,{size:16})})}),o&&c.jsx("div",{className:ke.footer,children:o})]})})]})})}const fl="_handle_1j18v_1",pl={handle:fl};function ws({side:e,onResize:t,className:n}){const s=w.useRef(0),o=w.useRef(null),r=w.useCallback(d=>{const u=d.clientX-s.current;s.current=d.clientX,t(e==="left"?u:-u)},[t,e]),i=w.useCallback(d=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),document.body.style.cursor="",document.body.style.userSelect="";const u=o.current;u!=null&&u.hasPointerCapture(d.pointerId)&&u.releasePointerCapture(d.pointerId)},[r]);function a(d){d.preventDefault(),s.current=d.clientX,d.currentTarget.setPointerCapture(d.pointerId),document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",r),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i)}return c.jsx("div",{ref:o,className:U(pl.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}const hl="_trigger_u4hed_3",gl="_content_u4hed_15",ml="_item_u4hed_25",_l="_danger_u4hed_44",yl="_groupLabel_u4hed_53",wl="_sep_u4hed_66",tt={trigger:hl,content:gl,item:ml,danger:_l,groupLabel:yl,sep:wl},cn=w.forwardRef(function({x:t,y:n},s){return c.jsx("button",{ref:s,type:"button",className:tt.trigger,style:{left:t,top:n},"aria-hidden":!0,tabIndex:-1})});function Et({className:e,minWidth:t,style:n,sideOffset:s=2,...o}){const r=t===void 0?n:{minWidth:t,...n};return c.jsx(Zi,{children:c.jsx(Qi,{className:U(tt.content,e),align:"start",sideOffset:s,style:r,...o})})}function Sb({label:e,className:t,children:n,...s}){const o=w.useId();return c.jsxs(ea,{className:t,"aria-labelledby":e===void 0?void 0:o,...s,children:[e!==void 0&&c.jsx(ta,{id:o,className:tt.groupLabel,children:e}),n]})}function K({className:e,danger:t,...n}){return c.jsx(na,{className:U(tt.item,t&&tt.danger,e),...n})}function ze(e){return c.jsx(sa,{className:tt.sep,...e})}const vl="_content_1u220_3",bl={content:vl},vs={Root:oa,Trigger:ra};function Sl({className:e,width:t,style:n,side:s="top",align:o="start",sideOffset:r=6,collisionPadding:i=8,...a}){return c.jsx(ia,{children:c.jsx(aa,{className:U(bl.content,e),side:s,align:o,sideOffset:r,collisionPadding:i,style:t===void 0?n:{width:t,...n},...a})})}const Xt=ae()(()=>({message:"",politeness:"polite"})),kl=4e3;let mt=null;function Bo(){mt!==null&&(clearTimeout(mt),mt=null)}function ln(e,t="polite"){Bo(),Xt.setState({message:e,politeness:t})}function Hn(){Bo(),mt=setTimeout(()=>{mt=null,Xt.setState({message:""})},kl)}const xl="_visuallyHidden_rig62_2",bs={visuallyHidden:xl};function Il(){const e=Xt(n=>n.message),t=Xt(n=>n.politeness);return c.jsxs(c.Fragment,{children:[c.jsx("span",{className:bs.visuallyHidden,role:"status","aria-live":"polite",children:t==="polite"?e:""}),c.jsx("span",{className:bs.visuallyHidden,role:"alert",children:t==="assertive"?e:""})]})}const Jt=3;let Tl=0;const _t=new Map;function Ss(e){const t=_t.get(e);t!==void 0&&(clearTimeout(t),_t.delete(e))}const Ce=ae((e,t)=>{function n(s){const o=t().toasts.findIndex(a=>a.id===s);if(o===-1||o>=Jt||_t.has(s))return;const r=t().toasts[o];if(r.durationMs===null||r.paused)return;const i={...r,shownAt:Date.now()};e(a=>({toasts:a.toasts.map(d=>d.id===s?i:d)})),_t.set(s,setTimeout(()=>t().dismiss(s),i.durationMs))}return{toasts:[],show(s,o={}){const r=`toast-${++Tl}`;return e(i=>({toasts:[...i.toasts,yc(r,s,o)]})),n(r),r},copied(s){const{content:o,opts:r}=wc(s);return t().show(o,r)},error(s){const{content:o,opts:r}=vc(s);return t().show(o,r)},dismiss(s){Ss(s),e(o=>({toasts:o.toasts.filter(r=>r.id!==s)}));for(const o of t().toasts.slice(0,Jt))n(o.id)},dismissTop(){const s=t().toasts[0];s&&t().dismiss(s.id)},pause(s){const o=t().toasts.find(i=>i.id===s);if(!o||o.durationMs===null||o.paused)return;const r=bc(o,null,Date.now())??o.durationMs;Ss(s),e(i=>({toasts:i.toasts.map(a=>a.id===s?{...a,paused:!0,pausedRemaining:r}:a)}))},resume(s){const o=t().toasts.find(d=>d.id===s);if(!o||!o.paused)return;const r=o.pausedRemaining??o.durationMs??0,i=Date.now()-((o.durationMs??0)-r),a={...o,paused:!1,pausedRemaining:void 0,shownAt:i};e(d=>({toasts:d.toasts.map(u=>u.id===s?a:u)})),_t.set(s,setTimeout(()=>t().dismiss(s),r))}}}),El="_viewport_rssrd_1",Cl="_toast_rssrd_13",Rl="_exiting_rssrd_43",Al="_content_rssrd_48",jl="_close_rssrd_53",Ke={viewport:El,toast:Cl,exiting:Rl,content:Al,close:jl},ql=180;function Pl(){return typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Ml(){const e=Ce(g=>g.toasts),t=e.slice(0,Jt),n=Ce(g=>g.dismiss),s=Ce(g=>g.pause),o=Ce(g=>g.resume),r=w.useRef(new Map);for(const g of t)r.current.set(g.id,g);const i=w.useRef([]),[a,d]=w.useState([]),u=w.useRef(new Set);w.useEffect(()=>{const g=u.current;return()=>{for(const _ of g)window.clearTimeout(_)}},[]),w.useEffect(()=>{const g=e.slice(0,Jt).map(m=>m.id),_=new Set(g),h=i.current.filter(m=>!_.has(m));if(i.current=g,h.length===0)return;if(Pl()){for(const m of h)r.current.delete(m);return}d(m=>[...m,...h]);const b=window.setTimeout(()=>{u.current.delete(b),d(m=>m.filter(x=>!h.includes(x)));for(const m of h)r.current.delete(m)},ql);u.current.add(b)},[e]);const p=[...t,...a.filter(g=>!t.some(_=>_.id===g)).map(g=>r.current.get(g)).filter(g=>g!==void 0)];return p.length===0?null:yi.createPortal(c.jsx("div",{className:Ke.viewport,role:"status","aria-live":"polite",children:p.map(g=>{const{token:_}=_c(g.variant),h=a.includes(g.id)&&!t.some(b=>b.id===g.id);return c.jsxs("div",{className:h?`${Ke.toast} ${Ke.exiting}`:Ke.toast,style:_?{"--toast-rail":`var(--pi-color-${_})`}:void 0,onMouseEnter:()=>s(g.id),onMouseLeave:()=>o(g.id),children:[c.jsx("span",{className:Ke.content,children:g.content}),c.jsx("button",{type:"button",className:Ke.close,"aria-label":"Dismiss",onClick:()=>n(g.id),children:c.jsx(oe,{icon:vt,size:"xs","aria-hidden":!0})})]},g.id)})}),document.body)}function Nl({children:e}){return c.jsx(uc,{children:c.jsx(bi,{client:ya,children:e})})}const Fo=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const $e=xt([M(),Fo]),Dl=pe(["mobile","browser","cli","mcp"]),$l=f({type:v("hello"),clientId:l(),clientType:Dl,protocolVersion:M(),appVersion:l().optional(),capabilities:re(l(),I()).optional()}),Ol=f({status:v("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),homeDir:l().optional(),capabilities:re(l(),Z()),features:re(l(),Z())}),Ll=f({type:v("status"),payload:Ol}),Bl=f({type:v("ping"),requestId:l(),clientSentAt:$e.optional()}),Fl=f({type:v("pong"),requestId:l(),clientSentAt:$e.optional(),serverReceivedAt:$e,serverSentAt:$e}),zo=pe(["initializing","idle","running","error","closed"]),dn=f({mimeType:l().optional(),data:l().optional()}).passthrough(),zl=f({prs:N(Z()).optional(),issues:N(Z()).optional()}).passthrough(),Ul=f({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:re(l(),Z()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:I().optional(),webSearch:I().optional(),extra:f({pi:Z().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:re(l(),Z()).optional()}),Wl=f({type:v("create_agent_request"),requestId:l(),config:Ul,env:re(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:re(l(),Z()).optional(),images:N(dn).optional(),attachments:zl.optional(),git:Z().optional(),worktree:Z().optional(),autoArchive:I().optional(),labels:re(l(),l()).default({})}),Hl=f({type:v("create_agent_response"),requestId:l(),payload:f({agentId:l()}).passthrough()}),Vl=f({type:v("agent_update"),agentId:l(),status:zo.optional(),title:l().nullable().optional(),labels:re(l(),l()).optional()}),Kl=f({type:v("agent_status"),agentId:l(),status:zo}),Gl=f({type:v("agent_list"),agents:N(f({id:l()}).passthrough())}),Yl=f({type:v("agent_deleted"),agentId:l()}),Xl=f({type:v("agent_archived"),agentId:l(),archivedAt:Fo.optional()}),Uo=nn("kind",[f({kind:v("shell"),command:l().optional(),output:l().optional()}),f({kind:v("read"),path:l().optional(),output:l().optional()}),f({kind:v("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),f({kind:v("write"),path:l().optional(),output:l().optional()}),f({kind:v("search"),query:l().optional(),output:l().optional()}),f({kind:v("fetch"),url:l().optional(),output:l().optional()}),f({kind:v("task"),description:l().optional(),output:l().optional()})]),Jl=nn("kind",[f({kind:v("user_message"),messageId:l().optional(),text:l().optional(),images:N(dn).optional()}),f({kind:v("assistant_message"),messageId:l().optional(),text:l().optional(),final:I().optional()}),f({kind:v("reasoning"),text:l().optional(),final:I().optional()}),f({kind:v("tool_call"),callId:l().optional(),tool:Uo,status:l().optional(),partial:I().optional()}),f({kind:v("turn_started"),turnId:l().optional()}),f({kind:v("turn_completed"),turnId:l().optional()}),f({kind:v("turn_failed"),turnId:l().optional(),error:l().optional()}),f({kind:v("turn_canceled"),turnId:l().optional()}),f({kind:v("error"),message:l().optional()}),f({kind:v("queue_update"),steering:N(l()).optional(),followUp:N(l()).optional()}),f({kind:v("compaction"),compactionId:l(),phase:pe(["started","completed","failed","canceled"]),reason:pe(["manual","threshold","overflow"]).optional(),tokensBefore:M().optional(),estimatedTokensAfter:M().optional(),summary:l().optional(),error:l().optional(),willRetry:I().optional()})]),Zl=f({type:v("agent_stream"),agentId:l(),seq:M().optional(),timestamp:$e.optional(),event:Jl}),Ql=pe(["before","after"]),ed=f({start:M(),end:M()}),td=f({type:v("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:Ql,limit:M().optional()}),nd=f({type:v("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:N(Z()),seqStart:M(),seqEnd:M(),sourceSeqRanges:N(ed),collapsed:I(),hasNewer:I(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),sd=f({type:v("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:Uo.optional(),action:Z().optional(),responses:N(l()).optional()}),od=f({type:v("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),rd=f({type:v("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:Z()}),id=f({type:v("agent.permission.respond.response"),requestId:l(),payload:f({resolved:I()}).passthrough()}),ad=f({type:v("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:Z()}),Wo=pe(["conversation","files","both"]),cd=f({type:v("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:Wo}).passthrough(),ld=f({type:v("agent.rewind.response"),requestId:l(),payload:f({agentId:l(),messageId:l(),mode:Wo,truncatedAt:l().optional()}).passthrough()}).passthrough(),dd=f({input:M().optional(),output:M().optional(),cacheRead:M().optional(),cacheWrite:M().optional(),total:M().optional()}).passthrough(),ud=f({tokens:M().nullable().optional(),contextWindow:M().optional(),percent:M().nullable().optional()}).passthrough(),fd=f({type:v("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),pd=f({type:v("agent_session_stats_response"),requestId:l(),payload:f({sessionId:l().optional(),sessionFile:l().optional(),userMessages:M().optional(),assistantMessages:M().optional(),toolCalls:M().optional(),toolResults:M().optional(),totalMessages:M().optional(),tokens:dd.optional(),cost:M().optional(),contextUsage:ud.optional(),model:l().optional()}).passthrough()}).passthrough(),hd=f({type:v("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),gd=f({type:v("agent_compact_response"),requestId:l(),payload:f({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:M().optional(),estimatedTokensAfter:M().optional(),details:Z().optional()}).passthrough()}).passthrough(),md=f({type:v("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),_d=f({type:v("agent_new_session_response"),requestId:l(),payload:f({cancelled:I()}).passthrough()}).passthrough(),yd=f({type:v("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),wd=f({type:v("agent_switch_session_response"),requestId:l(),payload:f({cancelled:I()}).passthrough()}).passthrough(),vd=f({type:v("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),bd=f({type:v("agent_fork_response"),requestId:l(),payload:f({text:l(),cancelled:I()}).passthrough()}).passthrough(),Sd=f({type:v("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),kd=f({type:v("agent_fork_messages_response"),requestId:l(),payload:f({messages:N(f({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),xd=f({type:v("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),Id=f({type:v("agent_clone_response"),requestId:l(),payload:f({cancelled:I()}).passthrough()}).passthrough(),Td=f({type:v("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),Ed=f({type:v("agent_set_session_name_response"),requestId:l(),payload:f({}).passthrough().optional()}).passthrough(),Cd=f({type:v("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),Rd=f({type:v("agent_export_html_response"),requestId:l(),payload:f({path:l()}).passthrough()}).passthrough(),Ad=f({type:v("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),jd=f({type:v("agent_set_model_response"),requestId:l(),payload:f({}).passthrough()}).passthrough(),qd=f({type:v("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),Pd=f({type:v("agent_cycle_model_response"),requestId:l(),payload:f({model:Z().nullable().optional(),thinkingLevel:l().optional(),isScoped:I().optional()}).passthrough()}).passthrough(),Md=f({type:v("agent_set_thinking_request"),requestId:l(),agentId:l(),level:l()}).passthrough(),Nd=f({type:v("agent_set_thinking_response"),requestId:l(),payload:f({agentId:l(),level:l()}).passthrough()}).passthrough(),Dd=f({type:v("agent_thinking_levels_request"),requestId:l(),agentId:l()}).passthrough(),$d=f({type:v("agent_thinking_levels_response"),requestId:l(),payload:f({agentId:l(),levels:N(l())}).passthrough()}).passthrough(),Od=f({type:v("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),Ld=f({type:v("agent_last_assistant_text_response"),requestId:l(),payload:f({text:l().nullable()}).passthrough()}).passthrough(),Bd=f({type:v("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:N(dn).optional(),clientMessageId:l().optional()}).passthrough(),Fd=f({type:v("steer_agent_response"),requestId:l(),agentId:l(),ok:I()}).passthrough(),zd=f({type:v("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:N(dn).optional(),clientMessageId:l().optional()}).passthrough(),Ud=f({type:v("follow_up_agent_response"),requestId:l(),agentId:l(),ok:I()}).passthrough(),Wd=f({name:l(),id:l().optional(),description:l().optional(),source:pe(["extension","prompt","skill"]).optional(),scope:pe(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),Hd=f({type:v("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),Vd=f({type:v("agent_list_commands_response"),requestId:l(),payload:f({commands:N(Wd)}).passthrough()}).passthrough(),Kd=f({source:l(),identity:l(),addedIn:l(),deprecated:I().optional(),status:l(),lastError:f({at:l(),attempts:M(),reason:l(),message:l()}).passthrough().optional()}).passthrough(),Ho=f({id:l(),title:l(),description:l(),packages:N(Kd)}).passthrough(),Gd=f({identity:l(),source:l(),pack:l(),reason:l(),message:l()}).passthrough(),Yd=f({at:l(),outcome:l(),installed:N(l()),failures:N(Gd)}).passthrough(),Vo=f({at:l(),outcome:l()}).passthrough(),Xd=f({type:v("extension_packs_list_request"),requestId:l()}).passthrough(),Jd=f({type:v("extension_packs_list_response"),requestId:l(),autoSync:I(),selected:N(l()),packs:N(Ho),lastSync:Vo.optional()}).passthrough(),Zd=f({type:v("extension_packs_set_request"),requestId:l(),packs:N(l()).optional()}).passthrough(),Qd=f({type:v("extension_packs_set_response"),requestId:l(),autoSync:I(),selected:N(l()),packs:N(Ho),lastSync:Vo.optional(),ok:I(),error:l().optional(),report:Yd.optional()}).passthrough(),An=pe(["api_key","oauth"]),eu=f({id:l(),name:l(),authTypes:N(An),oauthLoginLabel:l().optional(),oauthIsSubscription:I().optional(),configured:xt([I(),v("unknown")]),configuredType:An.optional(),configuredSource:l().optional()}).passthrough(),tu=f({type:v("provider_auth_list_request"),requestId:l()}).passthrough(),nu=f({type:v("provider_auth_list_response"),requestId:l(),payload:f({ok:I(),providers:N(eu).default([]),error:l().optional()}).passthrough()}).passthrough(),su=f({type:v("provider_auth_login_request"),requestId:l(),provider:l(),authType:An}).passthrough(),ou=f({type:v("provider_auth_login_response"),requestId:l(),payload:f({ok:I(),flowId:l().optional(),error:l().optional()}).passthrough()}).passthrough(),ru=f({type:v("provider_auth_respond_request"),requestId:l(),flowId:l(),promptId:l(),value:l()}).passthrough(),iu=f({type:v("provider_auth_respond_response"),requestId:l(),payload:f({ok:I(),error:l().optional()}).passthrough()}).passthrough(),au=f({type:v("provider_auth_cancel_request"),requestId:l(),flowId:l()}).passthrough(),cu=f({type:v("provider_auth_cancel_response"),requestId:l(),payload:f({ok:I()}).passthrough()}).passthrough(),lu=f({type:v("provider_auth_logout_request"),requestId:l(),provider:l()}).passthrough(),du=f({type:v("provider_auth_logout_response"),requestId:l(),payload:f({ok:I(),stillConfigured:I().optional(),error:l().optional()}).passthrough()}).passthrough(),uu=f({enabled:I(),config:re(l(),Z()).optional()}).passthrough(),Vn=f({version:v(1).default(1),viewers:re(l(),uu).default({})}).passthrough(),fu=f({type:v("viewer_settings_get_request"),requestId:l()}).passthrough(),pu=f({type:v("viewer_settings_get_response"),requestId:l(),payload:f({settings:Vn}).passthrough()}).passthrough(),hu=f({enabled:I().optional(),config:re(l(),Z()).optional()}).passthrough(),gu=f({type:v("viewer_settings_set_request"),requestId:l(),patch:re(l(),hu)}).passthrough(),mu=f({type:v("viewer_settings_set_response"),requestId:l(),payload:f({settings:Vn}).passthrough()}).passthrough(),_u=f({type:v("viewer_settings_update"),settings:Vn}).passthrough(),yu=f({clientId:l(),clientType:l(),appVersion:l().optional(),connectedAt:M(),remoteAddress:l().optional(),transport:pe(["direct","relay"])}).passthrough(),Kn=f({version:l(),startedAt:M(),uptimeMs:M(),pid:M(),nodeVersion:l(),memory:f({rss:M(),heapUsed:M(),heapTotal:M()}).passthrough(),cpuPercent:M(),eventLoopLagMs:M(),agentsByStatus:re(l(),M()),clients:N(yu)}).passthrough(),wu=f({type:v("daemon_status_request"),requestId:l()}).passthrough(),vu=f({type:v("daemon_status_response"),requestId:l(),payload:Kn}).passthrough(),bu=f({type:v("daemon_status_subscribe_request"),requestId:l()}).passthrough(),Su=f({type:v("daemon_status_subscribe_response"),requestId:l(),payload:xt([f({ok:v(!0),intervalMs:M(),status:Kn}).passthrough(),f({ok:v(!1),error:l()}).passthrough()])}).passthrough(),ku=f({type:v("daemon_status_unsubscribe_request"),requestId:l()}).passthrough(),xu=f({type:v("daemon_status_unsubscribe_response"),requestId:l(),payload:f({ok:I()}).passthrough()}).passthrough(),Iu=f({type:v("daemon_status_update"),payload:Kn}).passthrough(),Ko=f({time:M(),level:l(),msg:l(),fields:re(l(),Z()).optional()}).passthrough(),Tu=f({type:v("daemon_logs_subscribe_request"),requestId:l(),minLevel:l(),tail:M().optional()}).passthrough(),Eu=f({type:v("daemon_logs_subscribe_response"),requestId:l(),payload:xt([f({ok:v(!0),minLevel:l(),effectiveLevel:l(),lines:N(Ko),dropped:M()}).passthrough(),f({ok:v(!1),error:l()}).passthrough()])}).passthrough(),Cu=f({type:v("daemon_logs_unsubscribe_request"),requestId:l()}).passthrough(),Ru=f({type:v("daemon_logs_unsubscribe_response"),requestId:l(),payload:f({ok:I()}).passthrough()}).passthrough(),Au=f({type:v("daemon_log_lines"),lines:N(Ko),dropped:M()}).passthrough(),Ct=f({name:l(),description:l().optional(),path:l(),enabled:I(),origin:l(),originLabel:l(),packageSource:l().optional(),shadowedBy:l().optional(),symlinkTarget:l().optional(),provenance:f({source:l(),sourceUrl:l().optional(),installedAt:l().optional()}).passthrough().optional(),disableModelInvocation:I().optional(),warnings:N(l()).optional(),removable:I()}).passthrough(),Rt=f({source:l(),kind:pe(["npm","git","local"]),identity:l(),pinned:I(),curated:I(),filtered:I(),skillCount:M()}).passthrough(),ju=f({type:v("skills_list_request"),requestId:l()}).passthrough(),qu=f({type:v("skills_list_response"),requestId:l(),ok:I(),error:l().optional(),message:l().optional(),skills:N(Ct),packages:N(Rt)}).passthrough(),Pu=f({type:v("skills_set_enabled_request"),requestId:l(),path:l(),enabled:I()}).passthrough(),Mu=f({type:v("skills_set_enabled_response"),requestId:l(),ok:I(),error:l().optional(),message:l().optional(),skills:N(Ct),packages:N(Rt)}).passthrough(),Nu=f({type:v("skills_changed"),reason:l()}).passthrough(),Go=f({type:v("skills_remove_request"),requestId:l(),path:l().optional(),packageSource:l().optional()}).passthrough();Go.refine(e=>e.path!==void 0!=(e.packageSource!==void 0),{message:"exactly one of path or packageSource is required"});const Du=f({type:v("skills_remove_response"),requestId:l(),ok:I(),error:l().optional(),message:l().optional(),stderr:l().optional(),skills:N(Ct),packages:N(Rt)}).passthrough(),Yo=f({target:l(),ok:I(),error:l().optional(),stderr:l().optional()}).passthrough(),$u=f({type:v("skills_update_all_request"),requestId:l()}).passthrough(),Ou=f({type:v("skills_update_all_response"),requestId:l(),ok:I(),error:l().optional(),message:l().optional(),results:N(Yo),skills:N(Ct),packages:N(Rt)}).passthrough(),Lu=f({name:l(),description:l().optional(),relPath:l(),warnings:N(l()).optional(),valid:I(),exists:I()}).passthrough(),Bu=f({type:v("skills_preview_request"),requestId:l(),source:l()}).passthrough(),Fu=f({type:v("skills_preview_response"),requestId:l(),ok:I(),error:l().optional(),message:l().optional(),kind:l(),source:l(),skills:N(Lu)}).passthrough(),zu=f({type:v("skills_install_request"),requestId:l(),source:l(),skills:N(l()).optional(),replace:I().optional()}).passthrough(),Uu=f({type:v("skills_install_response"),requestId:l(),ok:I(),error:l().optional(),message:l().optional(),results:N(Yo),skills:N(Ct),packages:N(Rt)}).passthrough(),Wu=f({requestId:l(),agentId:l(),method:l(),expectsResponse:I(),payload:re(Z()),surfaceKey:l().optional(),timeoutMs:M().optional(),createdAt:$e}).passthrough(),Hu=f({agentId:l(),method:l(),surfaceKey:l(),payload:re(Z()),updatedAt:$e}).passthrough(),Vu=f({type:v("agent_ui_request"),requestId:l(),agentId:l(),method:l(),expectsResponse:I(),payload:re(Z()),surfaceKey:l().optional(),removed:I().optional(),timeoutMs:M().optional(),createdAt:$e}).passthrough(),Ku=f({type:v("agent_ui_resolved"),requestId:l(),agentId:l(),reason:l()}).passthrough(),Gu=f({value:l().optional(),confirmed:I().optional(),cancelled:I().optional()}).passthrough(),Yu=f({type:v("agent_ui_respond_request"),requestId:l(),uiRequestId:l(),response:Gu}).passthrough(),Xu=f({type:v("agent_ui_respond_response"),requestId:l(),payload:f({ok:I(),error:l().optional()}).passthrough()}).passthrough(),Ju=f({type:v("agent_ui_list_request"),requestId:l(),agentId:l().optional()}).passthrough(),Zu=f({type:v("agent_ui_list_response"),requestId:l(),payload:f({ok:I(),pending:N(Wu),surfaces:N(Hu),error:l().optional()}).passthrough()}).passthrough(),Qu=pe(["pending","in_progress","completed"]),kb=200,ef=f({id:M().int(),subject:l(),status:Qu,activeForm:l().optional(),description:l().optional(),owner:l().optional(),blockedBy:N(M().int()).optional()}).passthrough(),Xo=f({agentId:l(),seq:M(),tasks:N(ef),truncated:I().optional()}).passthrough(),tf=f({type:v("agent_todos_list_request"),requestId:l(),agentId:l()}).passthrough(),nf=f({type:v("agent_todos_list_response"),requestId:l(),snapshot:Xo.optional(),ok:I().optional(),error:l().optional()}).passthrough(),sf=f({type:v("agent_todos_update"),snapshot:Xo}).passthrough(),of=f({type:v("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),rf=nn("type",[Wl,Hl,Vl,Kl,Gl,Yl,Xl,Zl,td,nd,sd,od,rd,id,ad,cd,ld,fd,pd,hd,gd,md,_d,yd,wd,vd,bd,Sd,kd,xd,Id,Td,Ed,Cd,Rd,Ad,jd,qd,Pd,Md,Nd,Dd,$d,Od,Ld,Bd,Fd,zd,Ud,Hd,Vd,Xd,Jd,Zd,Qd,tu,nu,su,ou,ru,iu,au,cu,lu,du,fu,pu,gu,mu,_u,wu,vu,bu,Su,ku,xu,Iu,Tu,Eu,Cu,Ru,Au,ju,qu,Pu,Mu,Nu,Go,Du,$u,Ou,Bu,Fu,zu,Uu,Vu,Ku,Yu,Xu,Ju,Zu,tf,nf,sf,of]),af=f({type:l()}).passthrough(),cf=f({type:v("session"),message:xt([rf,af])});nn("type",[$l,Ll,Bl,Fl,cf]);const Ot={terminal_reflowable_snapshot:"terminal_reflowable_snapshot",inline_image_markdown:"inline_image_markdown",file_link_markdown:"file_link_markdown",mermaid_diagram_markdown:"mermaid_diagram_markdown"},Je={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},lf=Object.fromEntries(Object.entries(Je).map(([e,t])=>[t,e])),Jo=f({rows:M().int().nonnegative(),cols:M().int().nonnegative()});class dt extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const df=new TextEncoder,uf=new TextDecoder;function ff(e){if(!Number.isInteger(e)||e<0||e>255)throw new dt(`slot must be an integer 0–255, got ${e}`)}function at(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function xb(e){switch(ff(e.slot),e.opcode){case"Output":return at(Je.Output,e.slot,e.data);case"Input":return at(Je.Input,e.slot,e.data);case"Snapshot":return at(Je.Snapshot,e.slot,e.data);case"Restore":return at(Je.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(Jo.parse({rows:e.rows,cols:e.cols}));return at(Je.Resize,e.slot,df.encode(t))}}}function pf(e){if(e.length<2)throw new dt(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=lf[t];if(!s)throw new dt(`unknown terminal opcode 0x${t.toString(16)}`);const o=e.subarray(2);if(s==="Resize"){let r;try{r=JSON.parse(uf.decode(o))}catch{throw new dt("resize payload is not valid JSON")}const i=Jo.safeParse(r);if(!i.success)throw new dt("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:i.data.rows,cols:i.data.cols}}return{opcode:s,slot:n,data:o.slice()}}const Qe={Begin:16,Chunk:17,End:18,Error:19},hf=Object.fromEntries(Object.entries(Qe).map(([e,t])=>[t,e])),Zo=f({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:M().int().nonnegative().optional()});class ut extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const ks=new TextEncoder,xs=new TextDecoder;function gf(e){if(!Number.isInteger(e)||e<0||e>255)throw new ut(`stream must be an integer 0–255, got ${e}`)}function Lt(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function _n(e){switch(gf(e.stream),e.opcode){case"Begin":return Lt(Qe.Begin,e.stream,ks.encode(JSON.stringify(Zo.parse(e.meta))));case"Chunk":return Lt(Qe.Chunk,e.stream,e.data);case"End":return Lt(Qe.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return Lt(Qe.Error,e.stream,ks.encode(e.message))}}function mf(e){if(e.length<2)throw new ut(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=hf[t];if(!s)throw new ut(`unknown file-transfer opcode 0x${t.toString(16)}`);const o=e.subarray(2);switch(s){case"Begin":{let r;try{r=JSON.parse(xs.decode(o))}catch{throw new ut("begin payload is not valid JSON")}const i=Zo.safeParse(r);if(!i.success)throw new ut("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:i.data}}case"Chunk":return{opcode:"Chunk",stream:n,data:o.slice()};case"End":return{opcode:"End",stream:n,ok:(o[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:xs.decode(o)}}}function _f(e){try{return mf(e)}catch{return null}}const Ze=256;function yf(e,t=0){const n=(t%Ze+Ze)%Ze;for(let s=0;s<Ze;s++){const o=(n+s)%Ze;if(!e.has(o))return o}return null}const wf=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),vf=pe(["safe","moderate","dangerous","planning"]),bf=f({supportsStreaming:I(),supportsSessionPersistence:I(),supportsDynamicModes:I(),supportsMcpServers:I(),supportsReasoningStream:I(),supportsToolInvocations:I(),supportsRewindConversation:I().optional(),supportsRewindFiles:I().optional(),supportsRewindBoth:I().optional(),supportsSteering:I().optional(),supportsExtensionUi:I().optional(),supportsTodos:I().optional()}).passthrough(),Sf=f({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:vf});f({id:wf,label:l(),description:l().optional(),extends:l().optional(),modes:N(Sf),capabilities:bf});function jn(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function Qo(e){let t=null;const n={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1},connect(s){return new Promise((o,r)=>{const i=e??(()=>new WebSocket(s));try{t=e?i(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(a){r(a);return}t.onopen=()=>o(),t.onerror=a=>{var d;(t==null?void 0:t.readyState)!==1&&r(a),(d=n.onError)==null||d.call(n,a)},t.onclose=a=>{var d;(d=n.onClose)==null||d.call(n,a.code,jn(a.reason))},t.onmessage=a=>{var u,p,g,_;const{data:d}=a;d instanceof ArrayBuffer||d instanceof Uint8Array?(u=n.onMessage)==null||u.call(n,d):typeof d=="string"?(p=n.onMessage)==null||p.call(n,d):typeof Blob<"u"&&d instanceof Blob?(g=n.onMessage)==null||g.call(n,d):Buffer.isBuffer(d)&&((_=n.onMessage)==null||_.call(n,d.buffer.slice(d.byteOffset,d.byteOffset+d.byteLength)))}})},sendText(s){t==null||t.send(s)},sendBinary(s){t==null||t.send(s)},close(s=1e3,o=""){t==null||t.close(s,o),t=null}};return n}const ft="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function er(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],o=n+1<e.length,r=n+2<e.length,i=o?e[n+1]:0,a=r?e[n+2]:0;t+=ft[s>>2],t+=ft[(s&3)<<4|i>>4],t+=o?ft[(i&15)<<2|a>>6]:"=",t+=r?ft[a&63]:"="}return t}function tr(e){const t=e.replace(/=+$/,""),n=[];let s=0,o=0;for(const r of t){const i=ft.indexOf(r);if(i===-1)throw new Error(`invalid base64 character: ${JSON.stringify(r)}`);s=s<<6|i,o+=6,o>=8&&(o-=8,n.push(s>>o&255))}return new Uint8Array(n)}function kf(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const Ut=24;function nr(e,t){const n=et.randomBytes(Ut),s=et.box.after(e,n,t),o=new Uint8Array(n.length+s.length);return o.set(n,0),o.set(s,n.length),er(o)}function sr(e,t){let n;try{n=tr(e)}catch{return null}if(n.length<Ut)return null;const s=n.slice(0,Ut),o=n.slice(Ut);return et.box.open.after(o,s,t)}function xf(e,t){return nr(new TextEncoder().encode(e),t)}function If(e,t){const n=sr(e,t);return n?new TextDecoder().decode(n):null}function Tf(e,t,n,s,o,r){let i=!1;return n.onClose(a=>{var d;i=!0,(d=s.onClose)==null||d.call(s,a)}),{handleAppFrame(a){var p,g;if(i)return;const d=o();if(!r()||!d)return;const u=If(a.frame,d);if(u===null){(p=s.onAuthError)==null||p.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(g=s.onMessage)==null||g.call(s,u)},handleBinaryFrame(a){var p,g;if(i)return;const d=o();if(!r()||!d)return;const u=sr(a.frame,d);if(u===null){(p=s.onAuthError)==null||p.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(g=s.onBinaryMessage)==null||g.call(s,u)},send(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const d=o();if(!r()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_app",frame:xf(a,d)}))},sendBinary(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const d=o();if(!r()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_bin",frame:nr(a,d)}))},close(){i||(i=!0,n.close())}}}function Ef(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,o=e.events??{},r=et.box.keyPair(),i=et.box.before(s,r.secretKey);let a=!1;const d=Tf("client",n,t,o,()=>i,()=>a);return t.onMessage(u=>{var g;const p=kf(u);if(p){if(p.type==="e2ee_ready"){if(a)return;a=!0,(g=o.onReady)==null||g.call(o);return}if(p.type==="e2ee_app"){d.handleAppFrame(p);return}p.type==="e2ee_bin"&&d.handleBinaryFrame(p)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:er(r.publicKey)})),{role:"client",attachment:n,get ready(){return a},send:d.send,sendBinary:d.sendBinary,close:d.close}}const Cf=16;function Rf(e){const t=et.hash(e);let n="";for(let s=0;s<Cf;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Af(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function jf(e){let t=null,n=null;const s=e.sessionId??Rf(e.daemonPublicKey),o={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},connect(r){return new Promise((i,a)=>{const d=e.factory??(()=>new WebSocket(r));try{t=e.factory?d(r):new WebSocket(r)}catch(_){a(_);return}const u=t,p=[],g=[];u.onopen=()=>{u.send(JSON.stringify({type:"relay_register",sessionId:s})),n=Ef({transport:{send:_=>u.send(_),onMessage:_=>p.push(_),onClose:_=>g.push(_),close:()=>u.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>i(),onMessage:_=>{var h;return(h=o.onMessage)==null?void 0:h.call(o,_)},onBinaryMessage:_=>{var h;return(h=o.onMessage)==null?void 0:h.call(o,_.slice().buffer)},onAuthError:_=>{var h;return(h=o.onError)==null?void 0:h.call(o,_)}}})},u.onerror=_=>{var h;u.readyState!==1&&a(_),(h=o.onError)==null||h.call(o,_)},u.onclose=_=>{var h;for(const b of g)b(jn(_.reason));(h=o.onClose)==null||h.call(o,_.code,jn(_.reason))},u.onmessage=_=>{const{data:h}=_;if(typeof h=="string")for(const b of p)b(h)}})},sendText(r){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(r)},sendBinary(r){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(r)},close(r=1e3,i=""){n==null||n.close(),n=null,t==null||t.close(r,i),t=null}};return o}function qf(e){const t=e.indexOf("#"),n=t===-1?e:e.slice(t+1),s=new URLSearchParams(n),o=s.get("offer");if(!o)return null;let r;try{r=tr(o)}catch{return null}const i=s.get("relay");if(i){const d={endpoint:i,useTls:s.get("relayTls")==="1"};return{publicKeyB64:o,publicKey:r,relay:d}}const a=s.get("host")??void 0;return{publicKeyB64:o,publicKey:r,...a?{host:a}:{}}}const Pf=1;function qn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class Mf extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class Is extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class Nf{constructor(t){z(this,"transport");z(this,"rpcTimeoutMs");z(this,"now");z(this,"_state","idle");z(this,"_serverId",null);z(this,"_features",{});z(this,"_serverCapabilities",{});z(this,"pending",new Map);z(this,"sessionHandlers",new Set);z(this,"terminalHandlers",new Set);z(this,"fileTransferHandlers",new Set);z(this,"stateHandlers",new Set);z(this,"helloResolve",null);z(this,"helloReject",null);this.options=t,this.transport=t.transport??Qo(),this.rpcTimeoutMs=t.rpcTimeoutMs??3e4,this.now=t.now??(()=>Date.now()),this.transport.onMessage=n=>this.handleIncoming(n),this.transport.onClose=(n,s)=>this.handleClose(n,s),this.transport.onError=()=>{}}get state(){return this._state}get serverId(){return this._serverId}get features(){return this._features}get serverCapabilities(){return this._serverCapabilities}hasFeature(t){return!!this._features[t]}async connect(){this.setState("connecting"),await this.transport.connect(this.options.url);const t=new Promise((s,o)=>{this.helloResolve=s,this.helloReject=o});this.transport.sendText(JSON.stringify({type:"hello",clientId:this.options.clientId,clientType:this.options.clientType,protocolVersion:this.options.protocolVersion??Pf,appVersion:this.options.appVersion,capabilities:this.options.capabilities}));const n=await t;return this._serverId=n.serverId,this._features=n.features,this._serverCapabilities=n.capabilities,this.setState("open"),n}close(t=1e3,n=""){this.setState("closing"),this.transport.close(t,n)}request(t,n={},s){const o=n.requestId??qn();return new Promise((r,i)=>{const a=s??this.rpcTimeoutMs,d=a>0?setTimeout(()=>{this.pending.delete(o),i(new Is(o))},a):null;this.pending.set(o,{resolve:u=>r(u),reject:i,timer:d}),this.sendSession({type:t,...n,requestId:o})})}sendSession(t){this.transport.sendText(JSON.stringify({type:"session",message:t}))}sendBinary(t){this.transport.sendBinary(t)}ping(t=1e4){const n=qn();return new Promise((s,o)=>{const r=t>0?setTimeout(()=>{this.pending.delete(n),o(new Is(n))},t):null;this.pending.set(n,{resolve:()=>s(),reject:o,timer:r}),this.transport.sendText(JSON.stringify({type:"ping",requestId:n,clientSentAt:this.now()}))})}onSessionMessage(t){return this.sessionHandlers.add(t),()=>this.sessionHandlers.delete(t)}onTerminalFrame(t){return this.terminalHandlers.add(t),()=>this.terminalHandlers.delete(t)}onFileTransferFrame(t){return this.fileTransferHandlers.add(t),()=>this.fileTransferHandlers.delete(t)}onStateChange(t){return this.stateHandlers.add(t),()=>this.stateHandlers.delete(t)}setState(t){if(this._state!==t){this._state=t;for(const n of this.stateHandlers)n(t)}}handleClose(t,n){this.helloReject&&(this.helloReject(new Error(`socket closed during handshake: ${n}`)),this.helloResolve=null,this.helloReject=null);for(const[,s]of this.pending)s.timer&&clearTimeout(s.timer),s.reject(new Error(`socket closed: ${n}`));this.pending.clear(),this.setState("closed")}handleIncoming(t){if(typeof t=="string"){this.handleTextFrame(t);return}if(t instanceof ArrayBuffer){this.handleBinaryFrame(new Uint8Array(t));return}typeof t.arrayBuffer=="function"&&t.arrayBuffer().then(n=>this.handleBinaryFrame(new Uint8Array(n)))}handleBinaryFrame(t){const n=t[0];if(n!==void 0&&Object.values(Qe).includes(n)){const r=_f(t);if(!r)return;for(const i of this.fileTransferHandlers)i(r);return}const o=pf(t);for(const r of this.terminalHandlers)r(o)}handleTextFrame(t){let n;try{n=JSON.parse(t)}catch{return}const s=n;switch(s.type){case"status":this.handleStatus(s);return;case"pong":this.resolvePending(s.requestId,void 0);return;case"ping":this.transport.sendText(JSON.stringify({type:"pong",requestId:s.requestId,serverReceivedAt:this.now(),serverSentAt:this.now()}));return;case"session":this.handleSession(s.message);return;default:return}}handleStatus(t){const n=t.payload;(n==null?void 0:n.status)==="server_info"&&this.helloResolve&&(this.helloResolve(n),this.helloResolve=null,this.helloReject=null)}handleSession(t){if(!t||typeof t!="object")return;const n=t;if(n.type==="rpc_error"&&typeof n.requestId=="string"){const s=this.pending.get(n.requestId);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(n.requestId),s.reject(new Mf(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))}}const Df=10*6e4,$f=660*1e3,Of=1300*1e3,Lf=150*1e3,Bf=660*1e3;function Ff(e){const t=e;if(!t||t.type!=="provider_auth_flow_event"||typeof t.flowId!="string")return!1;const n=t.event;return typeof n=="object"&&n!==null&&typeof n.kind=="string"}class Ts extends Error{constructor(t,n){super(t),this.operation=n,this.name="ProviderAuthError"}}class Es extends Error{constructor(t){super("prompt_cancelled"),this.promptId=t,this.name="PromptCancelledError"}}class zf extends Error{constructor(t,n){super(t),this.operation=n,this.name="AgentUiError"}}function Uf(e){const t=e;return!!t&&t.type==="agent_ui_request"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}function Wf(e){const t=e;return!!t&&t.type==="agent_ui_resolved"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}class Cs extends Error{constructor(t,n){super(t),this.code=n,this.name="AgentTodosError"}}function Hf(e){const t=e;return!!t&&t.type==="agent_todos_update"&&typeof t.snapshot=="object"&&t.snapshot!==null}function Vf(e){const t=e;return!!t&&t.type==="agent_archived"&&typeof t.agentId=="string"}function Kf(e){const t=e;return!!t&&t.type==="agent_deleted"&&typeof t.agentId=="string"}class Gf{constructor(t){z(this,"activeProviderAuthFlow",null);this.daemon=t}get connection(){return this.daemon}async createAgent(t){return await this.daemon.request("create_agent_request",{...t})}agent(t){return new Xf(this.daemon,t)}workspace(t){return new Jf(this.daemon,t)}get providers(){return new Zf(this.daemon)}listExtensionPacks(){return this.daemon.request("extension_packs_list_request",{})}setExtensionPacks(t,n){return this.daemon.request("extension_packs_set_request",{packs:t},n==null?void 0:n.timeoutMs)}syncExtensionPacks(t){return this.daemon.request("extension_packs_set_request",{},t==null?void 0:t.timeoutMs)}onAgentUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="agent_update"&&t(n)})}onWorkspaceUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="workspace_update"&&t(n)})}hasProviderAuthCapability(){return this.daemon.hasFeature("providerAuth")}async listProviderAuth(){const t=await this.daemon.request("provider_auth_list_request",{});if(!t.ok)throw new Ts(t.error??"failed to list provider auth state","list");return t.providers}async logoutProvider(t){const n=await this.daemon.request("provider_auth_logout_request",{provider:t});if(!n.ok)throw new Ts(n.error??"failed to log out","logout");return{stillConfigured:n.stillConfigured}}async loginProvider(t,n,s,o){var g;if(this.activeProviderAuthFlow)throw new Error("a provider-auth login is already in progress for this client");let r;const i=new Promise(_=>{r=_}),a={flowId:null,buffered:[],pendingPrompt:null,cancelRequested:((g=o==null?void 0:o.signal)==null?void 0:g.aborted)??!1,terminal:!1,settle:r,unsubscribe:null};this.activeProviderAuthFlow=a;const d=this.daemon.onSessionMessage(_=>{Ff(_)&&this.routeProviderAuthEvent(a,_,s)}),u=this.daemon.onStateChange(_=>{_==="closed"&&this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})});let p=null;if(o!=null&&o.signal){const _=o.signal;p=()=>{a.cancelRequested=!0,a.flowId&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})},_.addEventListener("abort",p,{once:!0}),a.unsubscribe=()=>{d(),u(),_.removeEventListener("abort",p)}}else a.unsubscribe=()=>{d(),u()};try{const _=await this.daemon.request("provider_auth_login_request",{provider:t,authType:n});if(a.terminal)return i;if(!_.ok||!_.flowId)return this.settleProviderAuthFlow(a,{ok:!1,error:_.error}),i;a.flowId=_.flowId;const h=a.buffered;a.buffered=[];for(const b of h)b.flowId===a.flowId&&this.dispatchProviderAuthEvent(a,b.event,s);a.cancelRequested&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})}catch{a.terminal||this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})}return i}routeProviderAuthEvent(t,n,s){if(!t.terminal){if(t.flowId===null){t.buffered.push(n);return}n.flowId===t.flowId&&this.dispatchProviderAuthEvent(t,n.event,s)}}dispatchProviderAuthEvent(t,n,s){var o;switch(n.kind){case"done":this.settleProviderAuthFlow(t,{ok:!!n.ok,error:typeof n.error=="string"?n.error:void 0});return;case"prompt_cancelled":{const r=n.promptId;t.pendingPrompt&&t.pendingPrompt.promptId===r&&(t.pendingPrompt.reject(new Es(r)),t.pendingPrompt=null);return}case"prompt":this.handleProviderAuthPrompt(t,n,s);return;default:(o=s.onEvent)==null||o.call(s,n);return}}async handleProviderAuthPrompt(t,n,s){const o=new AbortController,r={promptId:n.promptId,promptKind:n.promptKind,message:n.message,placeholder:n.placeholder,options:n.options,signal:o.signal};let i;const a=new Promise((u,p)=>{i=p});a.catch(()=>{}),t.pendingPrompt={promptId:r.promptId,reject:u=>{o.abort(),i(u)}};const d=s.prompt(r);d.catch(()=>{});try{const u=await Promise.race([d,a]);if(t.terminal)return;t.pendingPrompt=null,await this.daemon.request("provider_auth_respond_request",{flowId:t.flowId,promptId:r.promptId,value:u})}catch(u){if(t.pendingPrompt=null,t.terminal||u instanceof Es)return;t.flowId&&this.daemon.request("provider_auth_cancel_request",{flowId:t.flowId}).catch(()=>{}),this.settleProviderAuthFlow(t,{ok:!1,error:"connection_lost"})}}settleProviderAuthFlow(t,n){var s;t.terminal||(t.terminal=!0,t.pendingPrompt&&(t.pendingPrompt.reject(new Error("provider-auth: flow ended")),t.pendingPrompt=null),(s=t.unsubscribe)==null||s.call(t),this.activeProviderAuthFlow===t&&(this.activeProviderAuthFlow=null),t.settle(n))}hasViewerSettingsCapability(){return this.daemon.hasFeature("viewerSettings")}async getViewerSettings(){return(await this.daemon.request("viewer_settings_get_request",{})).settings}async setViewerSettings(t){return(await this.daemon.request("viewer_settings_set_request",{patch:t})).settings}onViewerSettingsUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="viewer_settings_update"&&t(n.settings)})}onAgentUiRequest(t){return this.daemon.onSessionMessage(n=>{Uf(n)&&t(n,{receivedAt:Date.now()})})}onAgentUiResolved(t){return this.daemon.onSessionMessage(n=>{Wf(n)&&t(n)})}async respondToUi(t,n){const s=await this.daemon.request("agent_ui_respond_request",{uiRequestId:t,response:n});return s.ok?{ok:!0}:{ok:!1,reason:s.error??"unknown"}}async listAgentUi(t){const n=await this.daemon.request("agent_ui_list_request",t?{agentId:t}:{});if(!n.ok)throw new zf(n.error??"failed to list extension UI state","list");return{pending:n.pending??[],surfaces:n.surfaces??[]}}extensionUiAvailable(){return this.daemon.hasFeature("extensionUi")}hasAgentTodosCapability(){return this.daemon.hasFeature("agentTodos")}async listAgentTodos(t){const n=await this.daemon.request("agent_todos_list_request",{agentId:t});if(n.ok===!1)throw new Cs(n.error??"failed to list agent todos",n.error??"unknown");if(!n.snapshot)throw new Cs("malformed agent_todos_list_response: missing snapshot","malformed_response");return n.snapshot}onAgentTodosUpdate(t){return this.daemon.onSessionMessage(n=>{Hf(n)&&t(n.snapshot)})}hasSkillsCapability(){return this.daemon.hasFeature("skills")}async listSkills(){return this.daemon.request("skills_list_request",{})}async setSkillEnabled(t,n){return this.daemon.request("skills_set_enabled_request",{path:t,enabled:n})}async removeSkill(t){return this.daemon.request("skills_remove_request",t,$f)}async updateAllSkills(){return this.daemon.request("skills_update_all_request",{},Of)}async previewSkillSource(t){return this.daemon.request("skills_preview_request",{source:t},Lf)}async installSkills(t){return this.daemon.request("skills_install_request",t,Bf)}onSkillsChanged(t){return this.daemon.onSessionMessage(n=>{n.type==="skills_changed"&&t(n.reason)})}}class Yf{constructor(t,n){this.daemon=t,this.agentId=n}fetch(t={}){return this.daemon.request("fetch_agent_timeline_request",{agentId:this.agentId,cursor:t.cursor,direction:t.direction,limit:t.limit})}subscribe(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="agent_stream"&&s.agentId===this.agentId&&s.event&&t(s.event,{timestamp:s.timestamp,seq:s.seq})})}}class Xf{constructor(t,n){z(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new Yf(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},Df)}newSession(){return this.daemon.request("agent_new_session_request",{agentId:this.agentId})}switchSession(t){return this.daemon.request("agent_switch_session_request",{agentId:this.agentId,sessionPath:t})}fork(t){return this.daemon.request("agent_fork_request",{agentId:this.agentId,entryId:t})}forkMessages(){return this.daemon.request("agent_fork_messages_request",{agentId:this.agentId})}clone(){return this.daemon.request("agent_clone_request",{agentId:this.agentId})}setSessionName(t){return this.daemon.request("agent_set_session_name_request",{agentId:this.agentId,name:t})}exportHtml(t){return this.daemon.request("agent_export_html_request",{agentId:this.agentId,outputPath:t})}setModel(t,n){return this.daemon.request("agent_set_model_request",{agentId:this.agentId,provider:t,modelId:n})}cycleModel(){return this.daemon.request("agent_cycle_model_request",{agentId:this.agentId})}lastAssistantText(){return this.daemon.request("agent_last_assistant_text_request",{agentId:this.agentId})}listCommands(){return this.daemon.request("agent_list_commands_request",{agentId:this.agentId})}setThinking(t){return this.daemon.request("agent_set_thinking_request",{agentId:this.agentId,level:t})}listThinkingLevels(){return this.daemon.request("agent_thinking_levels_request",{agentId:this.agentId})}}class Jf{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 Zf{constructor(t){this.daemon=t}listProviders(){return this.daemon.request("list_providers",{})}listModels(t,n){return this.daemon.request("list_provider_models",{provider:t,...n!=null&&n.agentId?{agentId:n.agentId}:{}})}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 Gn={pending:{},surfaces:{},resolved:{}},Qf=50;function or(e,t){return`${e}\0${t}`}function Pn(e){return typeof e=="number"?e:Date.parse(e)}function ep(e,t){switch(t.type){case"ui_request":return tp(e,t.event,t.meta);case"ui_resolved":return{state:op(e,t.event),effects:[]};case"snapshot":return{state:ip(t.pending,t.surfaces,e.resolved),effects:[]};case"disconnected":return{state:ap(e),effects:[]};case"agent_removed":return{state:cp(e,t.agentId),effects:[]};case"respond_sent":return{state:lp(e,t.requestId,t.response),effects:[]};case"respond_failed":return{state:dp(e,t.requestId),effects:[]}}}function tp(e,t,n){if(t.expectsResponse){const s={requestId:t.requestId,agentId:t.agentId,method:t.method,payload:t.payload,timeoutMs:t.timeoutMs,createdAt:t.createdAt,receivedAt:n.receivedAt,answerable:!0};return{state:{...e,pending:{...e.pending,[t.requestId]:s}},effects:[]}}if(t.surfaceKey!==void 0){const s=or(t.agentId,t.surfaceKey);if(t.removed){if(!(s in e.surfaces))return{state:e,effects:[]};const r={...e.surfaces};return delete r[s],{state:{...e,surfaces:r},effects:[]}}const o={agentId:t.agentId,surfaceKey:t.surfaceKey,method:t.method,payload:t.payload,updatedAt:t.createdAt};return{state:{...e,surfaces:{...e.surfaces,[s]:o}},effects:[]}}return{state:e,effects:np(t)}}function np(e){switch(e.method){case"set_editor_text":{const t=typeof e.payload.text=="string"?e.payload.text:"";return[{type:"replace_composer_text",agentId:e.agentId,text:t}]}case"notify":{const t=typeof e.payload.message=="string"?e.payload.message:"",n=typeof e.payload.level=="string"?e.payload.level:"info";return[{type:"notify",agentId:e.agentId,message:t,level:n}]}default:return[]}}function sp(e,t){if(!(e!=="select"&&e!=="confirm"))return{value:t.value,confirmed:t.confirmed}}function op(e,t){const n=e.pending[t.requestId];if(!n)return e;const s={...e.pending};delete s[t.requestId];const o={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,createdAt:n.createdAt,reason:t.reason};return n.submittedAnswer!==void 0&&(o.answer=n.submittedAnswer),{...e,pending:s,resolved:rp(e.resolved,o)}}function rp(e,t){const n={...e,[t.requestId]:t},s=Object.values(n).filter(r=>r.agentId===t.agentId).toSorted((r,i)=>Yn(r.createdAt,r.requestId,i.createdAt,i.requestId)),o=s.length-Qf;if(o<=0)return n;for(const r of s.slice(0,o))delete n[r.requestId];return n}function ip(e,t,n){const s={};for(const r of e)s[r.requestId]={requestId:r.requestId,agentId:r.agentId,method:r.method,payload:r.payload,timeoutMs:r.timeoutMs,createdAt:r.createdAt,answerable:!0};const o={};for(const r of t)o[or(r.agentId,r.surfaceKey)]={agentId:r.agentId,surfaceKey:r.surfaceKey,method:r.method,payload:r.payload,updatedAt:r.updatedAt};return{pending:s,surfaces:o,resolved:n}}function ap(e){const t={};for(const[n,s]of Object.entries(e.pending))t[n]={...s,answerable:!1};return{...e,pending:t}}function cp(e,t){const n={};for(const[r,i]of Object.entries(e.pending))i.agentId!==t&&(n[r]=i);const s={};for(const[r,i]of Object.entries(e.surfaces))i.agentId!==t&&(s[r]=i);const o={};for(const[r,i]of Object.entries(e.resolved))i.agentId!==t&&(o[r]=i);return{pending:n,surfaces:s,resolved:o}}function lp(e,t,n){const s=e.pending[t];if(!s)return e;const o=sp(s.method,n),r={...s,submitting:!0};return o!==void 0&&(r.submittedAnswer=o),{...e,pending:{...e.pending,[t]:r}}}function dp(e,t){const n=e.pending[t];if(!n)return e;const s={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,timeoutMs:n.timeoutMs,createdAt:n.createdAt,receivedAt:n.receivedAt,answerable:n.answerable};return{...e,pending:{...e.pending,[t]:s}}}function Yn(e,t,n,s){const o=Pn(e)-Pn(n);return o!==0?o:t.localeCompare(s)}function up(e,t){return Object.values(e.pending).filter(n=>n.agentId===t).toSorted((n,s)=>Yn(n.createdAt,n.requestId,s.createdAt,s.requestId))}function fp(e){const t={};for(const n of Object.values(e.pending))t[n.agentId]=(t[n.agentId]??0)+1;return t}function pp(e,t){return Object.values(e.resolved).filter(n=>n.agentId===t).toSorted((n,s)=>Yn(n.createdAt,n.requestId,s.createdAt,s.requestId))}function Ib(e,t){if(e.timeoutMs===void 0)return null;const n=e.receivedAt??Pn(e.createdAt);return Math.max(0,e.timeoutMs-(t-n))}const Rs={byAgent:{}};function hp(e,t){const n=e.byAgent[t.agentId];return n&&t.seq<=n.seq?e:{byAgent:{...e.byAgent,[t.agentId]:t}}}function gp(e){const t={};for(const[n,s]of Object.entries(e.byAgent))t[n]={...s,seq:Number.NEGATIVE_INFINITY};return{byAgent:t}}function mp(e,t){return e.byAgent[t]}function As(e){return e.expectsResponse?"dialog":e.surfaceKey!==void 0?"surface":"transient"}function _p(e,t={}){let n=Gn;const s=new Set,o=new Set;let r=!1,i=!1,a=[],d=0;function u(y){if(r)return;const S=ep(n,y);n=S.state,y.type==="ui_request"&&As(y.event)==="transient"&&S.effects.length===0&&p(y.event.method);for(const T of s)T(n,S.effects)}function p(y){o.has(y)||(o.add(y),t.onUnknownMethod?t.onUnknownMethod(y):console.warn(`agent-ui-controller: unknown extension-UI method "${y}"`))}async function g(){if(r||!e.extensionUiAvailable())return;const y=++d;i||(i=!0,a=[]);let S;try{S=await e.listAgentUi()}catch(j){if(r||y!==d)return;i=!1,a=[];const W=j instanceof Error?j.message:String(j);console.error(`agent-ui-controller: failed to sync extension UI state: ${W}`);return}if(r||y!==d)return;i=!1;const T=a;a=[],u({type:"snapshot",pending:S.pending,surfaces:S.surfaces});for(const j of T)j.type==="ui_request"&&As(j.event)==="transient"&&u(j)}const _=e.onAgentUiRequest((y,S)=>{const T={type:"ui_request",event:y,meta:S};i?a.push(T):u(T)}),h=e.onAgentUiResolved(y=>{const S={type:"ui_resolved",event:y};i?a.push(S):u(S)}),b=e.connection.onSessionMessage(y=>{(Vf(y)||Kf(y))&&u({type:"agent_removed",agentId:y.agentId})}),m=e.connection.onStateChange(y=>{y==="closed"||y==="closing"?u({type:"disconnected"}):y==="open"&&g()});g();async function x(y,S){u({type:"respond_sent",requestId:y,response:S});const T=await e.respondToUi(y,S);return T.ok||u({type:"respond_failed",requestId:y}),T}return{getState:()=>n,subscribe(y){return s.add(y),()=>s.delete(y)},respond:x,resync:g,dispose(){r||(r=!0,_(),h(),b(),m(),s.clear(),a=[])}}}const js=32*1024,yp="invalid_or_expired_token";function wp(e){const t=e.reduce((o,r)=>o+r.length,0),n=new Uint8Array(t);let s=0;for(const o of e)n.set(o,s),s+=o.length;return n}class vp{constructor(t){z(this,"pending",new Map);z(this,"streamCursor",1);z(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!==yp)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=yf(this.pending,this.streamCursor);if(s===null)throw new Error("no free download stream");this.streamCursor=(s+1)%Ze;const o=new Promise((i,a)=>{this.pending.set(s,{chunks:[],meta:{},resolve:i,reject:a})});let r;try{r=await this.daemon.request("file_download_request",{token:n.token,stream:s})}catch(i){throw this.pending.delete(s),i}if(!r.ok)throw this.pending.delete(s),new Error(r.error??"download request failed");return o}async upload(t,n){const s=qn(),o=await this.daemon.request("file_upload_request",{path:t,transferId:s});if(!o.ok||o.stream===void 0)throw new Error(o.error??"upload request failed");const r=o.stream;this.daemon.sendBinary(_n({opcode:"Begin",stream:r,meta:{transferId:s}}));for(let i=0;i<n.length;i+=js){const a=n.subarray(i,i+js);this.daemon.sendBinary(_n({opcode:"Chunk",stream:r,data:a}))}this.daemon.sendBinary(_n({opcode:"End",stream:r,ok:!0}))}dispatch(t){const n=this.pending.get(t.stream);if(n)switch(t.opcode){case"Begin":n.meta.fileName=t.meta.fileName,n.meta.mimeType=t.meta.mimeType;return;case"Chunk":n.chunks.push(t.data);return;case"End":this.pending.delete(t.stream),t.ok?n.resolve({bytes:wp(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 bp{constructor(t,n={}){z(this,"initialDelayMs");z(this,"maxDelayMs");z(this,"factor");z(this,"jitter");z(this,"maxAttempts");z(this,"setTimer");z(this,"clearTimer");z(this,"random");z(this,"attempt",0);z(this,"timer",null);z(this,"active",!1);z(this,"reconnecting",!1);z(this,"detachState",null);z(this,"reconnectedHandlers",new Set);z(this,"failedHandlers",new Set);this.daemon=t,this.initialDelayMs=n.initialDelayMs??500,this.maxDelayMs=n.maxDelayMs??3e4,this.factor=n.factor??2,this.jitter=n.jitter??.2,this.maxAttempts=n.maxAttempts??Number.POSITIVE_INFINITY,this.setTimer=n.setTimer??((s,o)=>setTimeout(s,o)),this.clearTimer=n.clearTimer??(s=>clearTimeout(s)),this.random=n.random??Math.random}delayForAttempt(t){const n=Math.min(this.maxDelayMs,this.initialDelayMs*this.factor**(t-1)),s=n*this.jitter*(this.random()*2-1);return Math.max(0,Math.round(n+s))}onReconnected(t){return this.reconnectedHandlers.add(t),()=>this.reconnectedHandlers.delete(t)}onReconnectFailed(t){return this.failedHandlers.add(t),()=>this.failedHandlers.delete(t)}start(){this.active||(this.active=!0,this.detachState=this.daemon.onStateChange(t=>{t==="closed"&&this.active&&this.scheduleReconnect(),t==="open"&&(this.attempt=0)}))}stop(){var t;this.active=!1,this.timer&&this.clearTimer(this.timer),this.timer=null,(t=this.detachState)==null||t.call(this),this.detachState=null}reconnectNow(){this.active&&(this.reconnecting||this.daemon.state==="closed"&&(this.timer&&(this.clearTimer(this.timer),this.timer=null),this.attempt=0,this.tryReconnect()))}get attemptCount(){return this.attempt}scheduleReconnect(){if(!this.active||this.timer||this.attempt>=this.maxAttempts)return;this.attempt+=1;const t=this.delayForAttempt(this.attempt);this.timer=this.setTimer(()=>{this.timer=null,!this.reconnecting&&this.tryReconnect()},t)}async tryReconnect(){if(!this.active||this.reconnecting)return;this.reconnecting=!0;const t=this.attempt;try{await this.daemon.connect();for(const n of this.reconnectedHandlers)n({attempt:t,serverId:this.daemon.serverId})}catch(n){for(const s of this.failedHandlers)s(n,t);this.scheduleReconnect()}finally{this.reconnecting=!1}}}function qs(e){const t=e.trim();if(t==="")return t;const n=t.match(/^([a-z][a-z0-9+.-]*):\/\//i);if(!n)return`ws://${t.replace(/\/+$/,"")}`;const s=n[1].toLowerCase(),o=t.slice(n[0].length).replace(/\/+$/,"");switch(s){case"http":return`ws://${o}`;case"https":return`wss://${o}`;case"ws":case"wss":return`${s}://${o}`;default:return t}}function Xn(e){const t=qf(e);return t!=null&&t.relay?{mode:"relay",url:Af(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:qs(t.host)}:{mode:"direct",url:qs(e)}}const Sp=`
3
- const pending = new Set();
4
- self.onmessage = (e) => {
5
- const msg = e.data;
6
- if (msg.cancel) {
7
- pending.delete(msg.id);
8
- return;
9
- }
10
- pending.add(msg.id);
11
- setTimeout(() => {
12
- if (!pending.has(msg.id)) return; // cancelled before it fired
13
- pending.delete(msg.id);
14
- self.postMessage({ id: msg.id });
15
- }, msg.ms);
16
- };
17
- `;function kp(){return{setTimer:(e,t)=>setTimeout(e,t),clearTimer:e=>clearTimeout(e)}}function xp(){const e=new Blob([Sp],{type:"application/javascript"}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t);const s=new Map;let o=1;return n.addEventListener("message",r=>{const i=s.get(r.data.id);s.delete(r.data.id),i==null||i()}),{setTimer:(r,i)=>{const a=o++;return s.set(a,r),n.postMessage({id:a,ms:i}),a},clearTimer:r=>{const i=r;s.delete(i)&&n.postMessage({id:i,cancel:!0})}}}let ct=null;function Ps(){if(ct)return ct;try{ct=xp()}catch{ct=kp()}return ct}function Ip(){return{setTimer:(e,t)=>Ps().setTimer(e,t),clearTimer:e=>Ps().clearTimer(e)}}const Tp=32,ue=new Map;function Ep(){for(;ue.size>Tp;){let e=null;for(const[t,n]of ue)if(n.refs===0&&n.entry){URL.revokeObjectURL(n.entry.objectUrl),e=t;break}if(e===null)return;ue.delete(e)}}function Tb(e,t){const n=ue.get(e);if(n)return n.refs+=1,ue.delete(e),ue.set(e,n),n.entry?Promise.resolve(n.entry):n.pending;const s={refs:1,entry:null,pending:null};return ue.set(e,s),Ep(),s.pending=t(e).then(o=>{const r=new Blob([Uint8Array.from(o.bytes)],{type:o.mimeType||"application/octet-stream"}),i={objectUrl:URL.createObjectURL(r),mimeType:o.mimeType};return ue.get(e)===s?(s.entry=i,s.pending=null):URL.revokeObjectURL(i.objectUrl),i}).catch(o=>{throw ue.get(e)===s&&ue.delete(e),o}),s.pending}function Eb(e){const t=ue.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function Cp(){for(const e of ue.values())e.entry&&URL.revokeObjectURL(e.entry.objectUrl);ue.clear()}function Rp(){return"web-"+Math.random().toString(36).slice(2,10)}const q=ae()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=Xn(n.url);let o;s.mode==="relay"?o=jf({daemonPublicKey:s.daemonPublicKey}):n.password&&(o=Qo(p=>new WebSocket(p,[`pi-studio.bearer.${n.password}`])));const r=new Nf({url:s.url,clientId:n.clientId??Rp(),clientType:"browser",capabilities:{[Ot.inline_image_markdown]:!0,[Ot.file_link_markdown]:!0,[Ot.mermaid_diagram_markdown]:!0,[Ot.terminal_reflowable_snapshot]:!0},transport:o,rpcTimeoutMs:1800*1e3}),i=new Gf(r),{setTimer:a,clearTimer:d}=Ip(),u=new bp(r,{setTimer:a,clearTimer:d});r.onStateChange(p=>e({status:p})),u.onReconnected(()=>e({error:null})),u.onReconnectFailed(p=>{e({error:p instanceof Error?p.message:String(p)})}),e({daemon:r,client:i,reconnection:u,error:null,status:"connecting"});try{const p=await r.connect();e({serverInfo:p}),u.start()}catch(p){throw e({error:p instanceof Error?p.message:String(p)}),p}},disconnect(){const{daemon:n,reconnection:s}=t();s==null||s.stop(),n==null||n.close(),Cp(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}}));function Jn(){return q(e=>e.client)}function rr(){var e;return((e=q.getState().serverInfo)==null?void 0:e.homeDir)??null}const Ap=w.lazy(()=>de(()=>import("./ModelProvidersPanel-BzCxTWcG.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).then(e=>({default:e.ModelProvidersPanel}))),jp=w.lazy(()=>de(()=>import("./SkillsPanel-B1rX9W8m.js"),__vite__mapDeps([13,1,5,6,2,9,7,8,14,15,10,11,16])).then(e=>({default:e.SkillsPanel}))),qp=w.lazy(()=>de(()=>import("./ViewersPanel-DtgabN6n.js"),__vite__mapDeps([17,1,14,5,6,15,2,9,10,11,18])).then(e=>({default:e.ViewersPanel}))),Pp=[{id:"providers",label:"Model Providers",icon:Ti,component:Ap,available:e=>e.providerAuth},{id:"skills",label:"Skills",icon:Ei,component:jp,available:e=>e.skills},{id:"viewers",label:"Viewers",icon:sn,component:qp,available:()=>!0}];function Mp(e){return{providerAuth:!!(e!=null&&e.providerAuth),skills:!!(e!=null&&e.skills)}}const Np=100,Dp=480,$p=220,Op=280;function Bt(e){return Math.min(Dp,Math.max(Np,e))}const D=ae()(e=>({host:"ws://127.0.0.1:6767",password:"",cwd:"~",cwdPickerOpen:!1,settingsOpen:!1,sessionMenu:null,workspaceMenu:null,tabMenu:null,fileMenu:null,rightSidebarTab:"files",collapsedWorkspaces:new Set,leftSidebarCollapsed:!1,rightSidebarCollapsed:!1,leftSidebarWidth:$p,rightSidebarWidth:Op,setHost:t=>e({host:t}),setPassword:t=>e({password:t}),setCwd:t=>e({cwd:t}),openCwdPicker:()=>e({cwdPickerOpen:!0}),closeCwdPicker:()=>e({cwdPickerOpen:!1}),openSettings:()=>e({settingsOpen:!0}),closeSettings:()=>e({settingsOpen:!1}),openSessionMenu:(t,n,s)=>e({sessionMenu:{sessionId:t,x:n,y:s}}),closeSessionMenu:()=>e({sessionMenu:null}),openWorkspaceMenu:(t,n,s)=>e({workspaceMenu:{cwd:t,x:n,y:s}}),closeWorkspaceMenu:()=>e({workspaceMenu:null}),openTabMenu:(t,n,s)=>e({tabMenu:{tabId:t,x:n,y:s}}),closeTabMenu:()=>e({tabMenu:null}),openFileMenu:(t,n,s,o,r)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:o,background:r}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),setCollapsedWorkspaces:t=>e({collapsedWorkspaces:t}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:Bt(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:Bt(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:Bt(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:Bt(n.rightSidebarWidth+t)}))}));function Lp(e){switch(e){case"connected":return{status:"finished"};case"error":return{status:"error"};case"disconnected":case"closing":return{status:"idle",showInactive:!0};case"connecting":return null}}const Ms=40;function ir(e){return/^\[object [A-Za-z]+\]$/.test(e)}function Bp(e){const t=(e.split(`
18
- `)[0]??"").trim();return t===""||ir(t)?"connection failed":/refus/i.test(t)?"connection refused":/time(?:d)?[\s-]*out|timeout/i.test(t)?"timed out":/\b401\b|\b403\b|unauthor|forbidden|auth/i.test(t)?"auth failed":t.length>Ms?`${t.slice(0,Ms-1)}…`:t}function ar(e){if(e.trim()==="")return!1;try{const t=Xn(e);return/^wss?:\/\//i.test(t.url)?new URL(t.url).hostname!=="":!1}catch{return!1}}function Ns(e){try{const{url:t}=Xn(e);return t===""?null:t}catch{return null}}function Fp(e){const{status:t,error:n,url:s}=e;if(t==="open"){const r=Ns(s);return{kind:"connected",statusLabel:"connected",hostLabel:r,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!1},title:r?`${r} · connected`:"connected"}}if(t==="closing"){const r=Ns(s);return{kind:"closing",statusLabel:"disconnecting…",hostLabel:r,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!0},title:r?`${r} · disconnecting…`:"disconnecting…"}}if(t==="connecting")return{kind:"connecting",statusLabel:"connecting…",hostLabel:null,showFields:!0,fieldsFrozen:!0,action:{label:"Connecting…",variant:"default",disabled:!0},title:"connecting…"};const o=ar(s);if(n!==null&&n!==""){const r=Bp(n);return{kind:"error",statusLabel:r,hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Retry",variant:"default",disabled:!o},title:ir(n.trim())?r:n}}return{kind:"disconnected",statusLabel:"disconnected",hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Connect",variant:"default",disabled:!o},title:"disconnected"}}const zp="_bar_1o0iw_9",Up="_title_1o0iw_21",Wp="_brand_1o0iw_27",Hp="_version_1o0iw_33",Vp="_statusPill_1o0iw_41",Kp="_statusText_1o0iw_60",Gp="_statusHost_1o0iw_68",Yp="_statusSep_1o0iw_76",Xp="_statusLabel_1o0iw_79",Jp="_statusDot_1o0iw_82",Zp="_statusSpinner_1o0iw_83",Qp="_statusPillError_1o0iw_87",eh="_field_1o0iw_4",th="_fieldUrl_1o0iw_111",nh="_fieldPassword_1o0iw_115",sh="_fieldInvalid_1o0iw_122",oh="_action_1o0iw_139",rh="_panelToggles_1o0iw_147",ih="_panelToggle_1o0iw_147",J={bar:zp,title:Up,brand:Wp,version:Hp,statusPill:Vp,statusText:Kp,statusHost:Gp,statusSep:Yp,statusLabel:Xp,statusDot:Jp,statusSpinner:Zp,statusPillError:Qp,field:eh,fieldUrl:th,fieldPassword:nh,fieldInvalid:sh,action:oh,panelToggles:rh,panelToggle:ih},ah=w.lazy(()=>de(()=>import("./SettingsDialog-DFOcdK5d.js"),__vite__mapDeps([19,1,5,6,2,4,9,10,11,20])).then(e=>({default:e.SettingsDialog}))),Le=26,ch="var(--pi-font-size-2xs)",lh=9,Ds="host:port, ws://…/http://…, or a pasted pairing link";function dh(){const e=q(A=>A.status),t=q(A=>A.error),n=q(A=>A.connect),s=q(A=>A.disconnect),o=q(A=>A.serverInfo),r=D(A=>A.host),i=D(A=>A.setHost),a=D(A=>A.password),d=D(A=>A.setPassword),u=D(A=>A.leftSidebarCollapsed),p=D(A=>A.toggleLeftSidebar),g=D(A=>A.rightSidebarCollapsed),_=D(A=>A.toggleRightSidebar),h=D(A=>A.settingsOpen),b=D(A=>A.openSettings),m=D(A=>A.closeSettings),x=Mp(o==null?void 0:o.features),y=Pp.some(A=>A.available(x)),[S,T]=w.useState(h);w.useEffect(()=>{h&&T(!0)},[h]);const j=Fp({status:e,error:t,url:r}),W=Lp(j.kind),G=w.useRef({host:r,password:a}),[ie,O]=w.useState(!1),Q=ie&&r.trim()!==""&&!ar(r);function he(){j.action.disabled||(G.current={host:r,password:a},n({url:r,password:a||void 0}))}function Y(){if(j.kind==="connected"||j.kind==="closing"){s();return}he()}function we(A,$){if(A.key==="Enter"){A.preventDefault(),he();return}A.key==="Escape"&&(A.preventDefault(),$==="url"?(i(G.current.host),O(!1)):d(G.current.password),A.currentTarget.blur())}return c.jsxs("div",{className:J.bar,children:[c.jsxs("span",{className:J.title,children:[c.jsx("span",{className:J.brand,children:"Pi-Studio"}),c.jsxs("span",{className:J.version,children:["v","0.0.117"]})]}),c.jsxs("span",{className:U(J.statusPill,j.kind==="error"&&J.statusPillError),title:j.title,children:[W?c.jsx(an,{...W,className:J.statusDot}):c.jsx($o,{size:lh,color:"var(--pi-color-statusWarning)",className:J.statusSpinner,"aria-label":"Connecting"}),c.jsxs("span",{className:J.statusText,children:[j.hostLabel&&c.jsx("span",{className:J.statusHost,children:j.hostLabel}),j.hostLabel&&c.jsx("span",{className:J.statusSep,"aria-hidden":!0,children:"·"}),c.jsx("span",{className:J.statusLabel,"aria-live":"polite",children:j.statusLabel})]})]}),j.showFields&&c.jsxs(c.Fragment,{children:[c.jsx(Yt,{className:U(J.field,J.fieldUrl,Q&&J.fieldInvalid),value:r,onChange:A=>i(A.target.value),onFocus:()=>O(!1),onBlur:()=>O(!0),onKeyDown:A=>we(A,"url"),readOnly:j.fieldsFrozen,placeholder:"ws://127.0.0.1:6767",title:Q?`Not a dialable daemon address — ${Ds}`:Ds,"aria-label":"Daemon address","aria-invalid":Q||void 0,spellCheck:!1,autoComplete:"off"}),c.jsx(Yt,{className:U(J.field,J.fieldPassword),type:"password",value:a,onChange:A=>d(A.target.value),onKeyDown:A=>we(A,"password"),readOnly:j.fieldsFrozen,placeholder:"password",title:"Daemon password — ignored when the address is a pairing link","aria-label":"Daemon password",autoComplete:"off"})]}),c.jsx(se,{className:J.action,size:"xs",variant:j.action.variant,disabled:j.action.disabled,style:{minHeight:Le,fontSize:ch},onClick:Y,children:j.action.label}),c.jsxs("div",{className:J.panelToggles,children:[c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Le,width:Le},"aria-label":"Toggle left panel",title:u?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>p(),children:c.jsx(oe,{icon:u?Ci:Ri,size:"sm"})}),c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Le,width:Le},"aria-label":"Toggle right panel",title:g?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>_(),children:c.jsx(oe,{icon:g?Ai:ji,size:"sm"})}),y&&c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Le,width:Le},"aria-label":"Settings",title:"Settings",onClick:()=>b(),children:c.jsx(oe,{icon:qi,size:"sm"})})]}),S&&c.jsx(w.Suspense,{fallback:null,children:c.jsx(ah,{open:h,onOpenChange:A=>A?b():m()})})]})}const un={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let $s=0;function Pe(){return $s+=1,`row-${$s}`}function uh(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 fh(e,t){return e??`${t.kind}:${uh(t)}`}function nt(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 cr(e){if(e.streamingAssistantIndex===null&&e.streamingReasoningIndex===null)return e;const t=e.rows.slice();return nt(t,e.streamingAssistantIndex),nt(t,e.streamingReasoningIndex),{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function ph(e){return cr(e)}function hh(e,t,n,s){var a;const o=e.rows.slice();nt(o,e.streamingReasoningIndex);let r=e.streamingAssistantIndex;if(r===null||((a=o[r])==null?void 0:a.kind)!=="assistant"){if(!t)return{...e,rows:o,streamingAssistantIndex:null,streamingReasoningIndex:null};const d={kind:"assistant",id:Pe(),text:"",streaming:!0,timestamp:s};o.push(d),r=o.length-1}const i=o[r];return!i||i.kind!=="assistant"?e:(o[r]={...i,text:i.text+t,streaming:!n},{...e,rows:o,streamingAssistantIndex:n?null:r,streamingReasoningIndex:null})}function gh(e,t,n,s){var a;const o=e.rows.slice();nt(o,e.streamingAssistantIndex);let r=e.streamingReasoningIndex;if(r===null||((a=o[r])==null?void 0:a.kind)!=="reasoning"){if(!t)return{...e,rows:o,streamingAssistantIndex:null,streamingReasoningIndex:null};const d={kind:"reasoning",id:Pe(),text:"",streaming:!0,timestamp:s};o.push(d),r=o.length-1}const i=o[r];return!i||i.kind!=="reasoning"?e:(o[r]={...i,text:i.text+t,streaming:!n},{...e,rows:o,streamingReasoningIndex:n?null:r,streamingAssistantIndex:null})}function mh(e,t){if(e.kind!==t.kind)return t;const n={...e};for(const[s,o]of Object.entries(t))o!==void 0&&o!==""&&(n[s]=o);return n}function _h(e,t,n){const s=mh(e,t);if(n==="running")return s;const{output:o,...r}=s;return t.output?{...r,output:t.output}:r}function yh(e,t,n){var d;const s=fh(t.callId,t.tool),o=t.status==="completed"||t.status==="error"?t.status:"running",r=e.toolIndexByCallId[s],i=e.rows.slice();if(nt(i,e.streamingAssistantIndex),nt(i,e.streamingReasoningIndex),r!==void 0&&((d=i[r])==null?void 0:d.kind)==="tool"){const u=i[r];if(u.kind!=="tool")return e;const p=t.status??u.statusText;return i[r]={...u,tool:_h(u.tool,t.tool,o),status:o,...p!==void 0?{statusText:p}:{}},{...e,rows:i,streamingAssistantIndex:null,streamingReasoningIndex:null}}const a={kind:"tool",id:Pe(),callId:s,tool:t.tool,status:o,...t.status!==void 0?{statusText:t.status}:{},timestamp:n};return i.push(a),{...e,rows:i,toolIndexByCallId:{...e.toolIndexByCallId,[s]:i.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function wh(e){if(!e.rows.some(n=>n.kind==="compaction"&&n.phase==="started"))return e;const t=e.rows.map(n=>n.kind==="compaction"&&n.phase==="started"?{...n,phase:"canceled"}:n);return{...e,rows:t}}function lr(e,t){if(!e.rows.some(s=>s.kind==="tool"&&s.status==="running"))return e;const n=e.rows.map(s=>s.kind==="tool"&&s.status==="running"?{...s,status:t,statusText:t}:s);return{...e,rows:n}}function Zn(e){return wh(cr(e))}function vh(e,t,n){const{kind:s,...o}=t,r=Object.fromEntries(Object.entries(o).filter(([,d])=>d!==void 0)),i=e.rows.findIndex(d=>d.kind==="compaction"&&d.compactionId===t.compactionId);if(i===-1){const d={...r,kind:"compaction",id:Pe(),timestamp:n};return{...e,rows:[...e.rows,d]}}const a=e.rows.slice();return a[i]={...a[i],...r},{...e,rows:a}}function bh(e,t,n){const s=lr(Zn(e),"error"),o={kind:"error",id:Pe(),text:t||"turn failed",timestamp:n};return{...s,rows:[...s.rows,o]}}function Sh(e,t){const n=lr(Zn(e),"canceled"),s={kind:"system",id:Pe(),text:"(canceled)",timestamp:t};return{...n,rows:[...n.rows,s]}}function kh(e,t,n){const s={kind:"error",id:Pe(),text:t||"error",timestamp:n};return{...e,rows:[...e.rows,s]}}function xh(e,t,n,s,o){if(s!==void 0){const i=e.rows.findIndex(a=>a.kind==="user"&&a.pending&&a.clientMessageId===s);if(i!==-1){const a=e.rows.slice(),d=a[i];if((d==null?void 0:d.kind)==="user")return a[i]={...d,text:t,images:n,pending:!1,...o!==void 0?{timestamp:o}:{}},{...e,rows:a}}}const r={kind:"user",id:Pe(),text:t,images:n,clientMessageId:s,timestamp:o};return{...e,rows:[...e.rows,r]}}function Ih(e,t){let n=!1;const s=e.rows.map(o=>o.kind!=="user"||!o.queued||t.includes(o.text)?o:(n=!0,{...o,queued:!1}));return n?{...e,rows:s}:e}function dr(e,t,n){switch(t.kind){case"turn_started":return ph(e);case"user_message":return xh(e,t.text??"",t.images,t.messageId,n);case"assistant_message":return hh(e,t.text??"",t.final??!1,n);case"reasoning":return gh(e,t.text??"",t.final??!1,n);case"tool_call":return yh(e,t,n);case"turn_completed":return Zn(e);case"turn_failed":return bh(e,t.error,n);case"turn_canceled":return Sh(e,n);case"error":return kh(e,t.message,n);case"queue_update":return Ih(e,t.steering??[]);case"compaction":return vh(e,t,n);default:return e}}function ur(e){return e.reduce((t,{event:n,timestamp:s})=>dr(t,n,s),un)}function Th(e,t,n,s,o,r){const i={kind:"user",id:Pe(),text:n,images:s,clientMessageId:t,pending:!0,queued:o,timestamp:r};return{...e,rows:[...e.rows,i]}}function Eh(e,t){const n=e.rows.findIndex(r=>r.kind==="user"&&r.pending&&r.clientMessageId===t);if(n===-1)return e;const s=e.rows.slice(),o=s[n];return(o==null?void 0:o.kind)!=="user"?e:(s[n]={...o,pending:!1,failed:!0},{...e,rows:s})}let Os=0;function Ch(){return Os+=1,`s-${Date.now().toString(36)}-${Os}`}const R=ae()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=Ch(),o={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:un,userMessageCount:0};return e(r=>({sessions:{...r.sessions,[s]:o},order:[s,...r.order],activeSessionId:s})),s},hydrate(n){e(s=>s.sessions[n.id]?s:{sessions:{...s.sessions,[n.id]:n},order:[...s.order,n.id]})},bindAgent(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,agentId:s}}}:o})},setStatus(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,status:s}}}:o})},setStatusByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setStatus(o.id,s)},setModel(n,s,o){e(r=>{const i=r.sessions[n];return i?{sessions:{...r.sessions,[n]:{...i,model:s,modelProvider:o}}}:r})},setModelByAgentId(n,s,o){const r=t().findByAgentId(n);r&&t().setModel(r.id,s,o)},setThinkingLevel(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,thinkingLevel:s}}}:o})},setThinkingLevelByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setThinkingLevel(o.id,s)},setTitle(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,title:s}}}:o})},setCwd(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,cwd:s}}}:o})},applyStreamEvent(n,s,o){e(r=>{const i=r.sessions[n];if(!i)return r;const a=dr(i.timeline,s,o);return{sessions:{...r.sessions,[n]:{...i,timeline:a}}}})},setTitleByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setTitle(o.id,s)},addOptimisticUserMessage(n,s,o,r,i){e(a=>{const d=a.sessions[n];if(!d)return a;const u=Th(d.timeline,s,o,r,i,new Date().toISOString());return{sessions:{...a.sessions,[n]:{...d,timeline:u,userMessageCount:d.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(o=>{const r=o.sessions[n];if(!r)return o;const i=Eh(r.timeline,s);return{sessions:{...o.sessions,[n]:{...r,timeline:i}}}})},setTimeline(n,s){e(o=>{const r=o.sessions[n];if(!r)return o;const i=s.rows.filter(a=>a.kind==="user").length;return{sessions:{...o.sessions,[n]:{...r,timeline:s,userMessageCount:i}}}})},setTimelineByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setTimeline(o.id,s)},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:o,...r}=s.sessions,i=s.order.filter(d=>d!==n),a=s.activeSessionId===n?i[0]??null:s.activeSessionId;return{sessions:r,order:i,activeSessionId:a}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),Ls=new WeakMap;function Rh(e,t="pi"){const n=Ls.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(o=>({model:o.model,modelProvider:o.modelProvider,thinkingLevel:o.thinkingLevel})).catch(()=>({}));return Ls.set(e,s),s}const Wt=new Map;function Ah(e,t){const n=R.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=Wt.get(t);if(s)return s;const o=(async()=>{if(!n.model){const d=await Rh(e),u=R.getState().sessions[t];d.model&&u&&!u.model&&R.getState().setModel(t,d.model,d.modelProvider);const p=R.getState().sessions[t];d.thinkingLevel&&p&&p.thinkingLevel===void 0&&R.getState().setThinkingLevel(t,d.thinkingLevel)}const r=R.getState().sessions[t];if(!r)throw new Error(`unknown session: ${t}`);const i={provider:"pi",cwd:r.cwd||"~"};r.model&&(i.model=r.model),r.modelProvider&&(i.modelProvider=r.modelProvider);const a=await e.createAgent({config:i,labels:{}});return R.getState().bindAgent(t,a.agentId),a.agentId})();return Wt.set(t,o),o.finally(()=>Wt.delete(t)),o}async function jh(e,t){var o;const n=R.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((o=Wt.get(t))==null?void 0:o.catch(()=>{}));const s=R.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),R.getState().remove(t),!0):!1}const qh=4;function fr(e){return e==="left"||e==="right"?"row":"column"}function fe(e){return e.kind==="leaf"?[e.id]:e.children.flatMap(fe)}function Qn(e,t){return e.kind==="leaf"?e.id===t:e.children.some(n=>Qn(n,t))}function pr(e,t,n=1){if(e.kind==="leaf")return e.id===t?n:null;for(const s of e.children){const o=pr(s,t,n+1);if(o!==null)return o}return null}function hr(e,t){if(e.kind==="leaf")return null;if(es(e,t)!==-1)return e;for(const n of e.children){const s=hr(n,t);if(s)return s}return null}function es(e,t){return e.children.findIndex(n=>n.kind==="leaf"&&n.id===t)}function bt(e,t,n){const s=pr(e,t);if(s===null)return!1;const o=hr(e,t);return o&&o.direction===fr(n)?!0:s+1<=qh}function Bs(e,t,n,s){if(!bt(e,t,n)||Qn(e,s))return e;const o=fr(n),r=n==="left"||n==="top",i={kind:"leaf",id:s},a=u=>({kind:"split",direction:o,children:r?[i,u]:[u,i],sizes:[.5,.5]}),d=u=>{if(u.kind==="leaf")return u.id===t?a(u):u;const p=es(u,t);if(p!==-1&&u.direction===o){const g=u.sizes[p]/2,_=r?p:p+1,h=u.children.slice(),b=u.sizes.slice();return b[p]=g,h.splice(_,0,i),b.splice(_,0,g),{kind:"split",direction:u.direction,children:h,sizes:b}}return{kind:"split",direction:u.direction,children:u.children.map(d),sizes:u.sizes.slice()}};return d(e)}function gr(e,t){if(!Qn(e,t)||e.kind==="leaf")return e;const n=s=>{if(s.kind==="leaf")return s;const o=es(s,t);if(o===-1)return{kind:"split",direction:s.direction,children:s.children.map(n),sizes:s.sizes.slice()};const r=s.sizes.filter((d,u)=>u!==o),i=r.reduce((d,u)=>d+u,0),a=i+s.sizes[o];return{kind:"split",direction:s.direction,children:s.children.filter((d,u)=>u!==o),sizes:r.map(d=>d/i*a)}};return mr(n(e))}function mr(e){if(e.kind==="leaf")return e;const t=e.children.map(mr);if(t.length===1)return t[0];const n=[],s=[];return t.forEach((o,r)=>{const i=e.sizes[r];o.kind==="split"&&o.direction===e.direction?o.children.forEach((a,d)=>{n.push(a),s.push(i*o.sizes[d])}):(n.push(o),s.push(i))}),n.length===1?n[0]:{kind:"split",direction:e.direction,children:n,sizes:s}}const Fs=.1;function Ph(e){const t=new Map,n=(s,o)=>{if(s.kind==="leaf"){t.set(s.id,o);return}_r(s,o).forEach((r,i)=>n(s.children[i],r))};return n(e,{x:0,y:0,width:1,height:1}),t}function _r(e,t){const n=[];let s=0;for(const o of e.sizes)n.push(e.direction==="row"?{x:t.x+s*t.width,y:t.y,width:o*t.width,height:t.height}:{x:t.x,y:t.y+s*t.height,width:t.width,height:o*t.height}),s+=o;return n}function Mh(e){const t=[],n=(s,o,r)=>{if(s.kind==="leaf")return;const i=_r(s,o);for(let a=0;a<s.children.length-1;a+=1){const d=i[a];t.push({splitPath:r.slice(),boundaryIndex:a,direction:s.direction,rect:s.direction==="row"?{x:d.x+d.width,y:o.y,width:0,height:o.height}:{x:o.x,y:d.y+d.height,width:o.width,height:0},splitRect:o})}i.forEach((a,d)=>n(s.children[d],a,[...r,d]))};return n(e,{x:0,y:0,width:1,height:1},[]),t}function Nh(e,t){let n=e;for(const s of t){if(!n||n.kind!=="split")return null;n=n.children[s]}return n??null}function Dh(e,t,n,s){const o=Nh(e,t);if(!o||o.kind!=="split"||n<0||n>o.children.length-2||!Number.isFinite(s)||s===0)return e;const r=o.sizes[n],i=o.sizes[n+1],a=i-Math.min(i,Fs),d=r-Math.min(r,Fs),u=Math.max(-d,Math.min(a,s));if(u===0)return e;const p=_=>{const h=_.sizes.slice();return h[n]=r+u,h[n+1]=i-u,{kind:"split",direction:_.direction,children:_.children,sizes:h}},g=(_,h)=>{if(_.kind!=="split")return _;if(h===t.length)return p(_);const b=t[h],m=_.children.slice();return m[b]=g(_.children[b],h+1),{kind:"split",direction:_.direction,children:m,sizes:_.sizes.slice()}};return g(e,0)}function yr(e,t){const n=fe(e).filter(s=>!t.has(s));return n.length===0?e:n.reduce((s,o)=>gr(s,o),e)}const wr=1;function $h(e){return vr(e,new Set)}function vr(e,t){if(typeof e!="object"||e===null)return null;const n=e;if(n.kind==="leaf"){const{id:r}=n;return typeof r!="string"||r.trim()===""||t.has(r)?null:(t.add(r),{kind:"leaf",id:r})}if(n.kind!=="split"||n.direction!=="row"&&n.direction!=="column"||!Array.isArray(n.children)||!Array.isArray(n.sizes)||n.children.length<2||n.sizes.length!==n.children.length)return null;let s=0;for(const r of n.sizes){if(typeof r!="number"||!Number.isFinite(r)||r<=0)return null;s+=r}const o=[];for(const r of n.children){const i=vr(r,t);if(!i)return null;o.push(i)}return{kind:"split",direction:n.direction,children:o,sizes:n.sizes.map(r=>r/s)}}function Oh(){if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"){const e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;const t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}const Lh=["sessions","terminals"];function Mn(){return`pane-${Oh()}`}function zs(){const e=Mn();return{tree:{kind:"leaf",id:e},placement:{},activeByPane:{},focusedPaneId:e,pendingPlacement:{},pendingActive:{},userActedPanes:new Set}}function br(e,t,n){return(n??Object.keys(e.placement)).filter(o=>e.placement[o]===t)}function Sr(e,t,n,s){const o=br(e,t,s),r=o.indexOf(n),i=o.filter(a=>a!==n);if(i.length!==0)return i[Math.min(Math.max(r,0),i.length-1)]}function Bh(e,t){return e.pendingActive[t]!==void 0?!0:Object.values(e.pendingPlacement).includes(t)}function ts(e,t){if(Bh(e,t))return e;const n=gr(e.tree,t);if(n===e.tree)return e;const s={...e.activeByPane};delete s[t];const o=fe(n);return{...e,tree:n,activeByPane:s,focusedPaneId:o.includes(e.focusedPaneId)?e.focusedPaneId:o[0]}}function Ft(e,t,n,s){const o=e.placement[t],r={...e.placement,[t]:n},i={...e.activeByPane};if(s.activate&&(i[n]=t),o!==void 0&&o!==n&&i[o]===t){const u=Sr(e,o,t,s.order);u===void 0?delete i[o]:i[o]=u}const a={...e,placement:r,activeByPane:i,focusedPaneId:s.focus?n:e.focusedPaneId};return o!==void 0&&o!==n&&!Object.values(r).includes(o)?ts(a,o):a}function Ge(e,t){return e.userActedPanes.has(t)?e:{...e,userActedPanes:new Set(e.userActedPanes).add(t)}}function Fh(e){let t={...e,pendingPlacement:{},pendingActive:{}};const n=new Set(Object.values(t.placement));for(const r of fe(t.tree))n.has(r)||(t=ts(t,r));const s={...t.activeByPane};let o=!1;for(const r of fe(t.tree)){if(s[r]!==void 0)continue;const i=Object.keys(t.placement).find(a=>t.placement[a]===r);i!==void 0&&(s[r]=i,o=!0)}return o?{...t,activeByPane:s}:t}function kr(e,t){if(e===void 0)return!1;const n=e.placement[t];return n!==void 0&&e.activeByPane[n]===t}const B=ae()((e,t)=>{const n=(s,o)=>{e(r=>{const i=r.layouts[s]??zs(),a=o(i)??i;return a===r.layouts[s]?r:{layouts:{...r.layouts,[s]:a}}})};return{layouts:{},hydrationSources:{sessions:!1,terminals:!1},restoring:!1,pendingActiveWorkspace:null,ensureWorkspace(s){e(o=>o.layouts[s]?o:{layouts:{...o.layouts,[s]:zs()}})},assignTab(s,o,r,i,a){n(s,d=>{const u=fe(d.tree),p=r!==void 0&&u.includes(r)?r:u.includes(d.focusedPaneId)?d.focusedPaneId:u[0],g=i!==!0,_=Ft(d,o,p,{activate:g,focus:g,order:a});return g?Ge(_,p):_})},moveTab(s,o,r,i){n(s,a=>{if(a.placement[o]===void 0||a.placement[o]===r||!fe(a.tree).includes(r))return null;const d=Ft(a,o,r,{activate:!0,focus:!0,order:i});return Ge(d,r)})},splitWithTab(s,o,r,i,a){n(s,d=>{if(!fe(d.tree).includes(r)||!bt(d.tree,r,i))return null;const u=br(d,r,a);if(u.length===1&&u[0]===o)return null;const p=Mn(),g=Bs(d.tree,r,i,p);if(g===d.tree)return null;const _=Ft({...d,tree:g},o,p,{activate:!0,focus:!0,order:a});return Ge(_,p)})},splitEmpty(s,o,r){let i=null;return n(s,a=>{if(!fe(a.tree).includes(o)||!bt(a.tree,o,r))return null;const d=Mn(),u=Bs(a.tree,o,r,d);return u===a.tree?null:(i=d,{...a,tree:u,focusedPaneId:d})}),i},removeTab(s,o,r){n(s,i=>{const a=i.placement[o];if(a===void 0)return null;const d={...i.placement};delete d[o];const u={...i.activeByPane};if(u[a]===o){const g=Sr(i,a,o,r);g===void 0?delete u[a]:u[a]=g}const p={...i,placement:d,activeByPane:u};return Object.values(d).includes(a)?p:ts(p,a)})},setActiveTab(s,o,r){n(s,i=>i.placement[r]!==o?null:i.activeByPane[o]===r?Ge(i,o):Ge({...i,activeByPane:{...i.activeByPane,[o]:r}},o))},focusPane(s,o){n(s,r=>r.focusedPaneId===o||!fe(r.tree).includes(o)?null:{...r,focusedPaneId:o})},resizeDivider(s,o,r,i){n(s,a=>{const d=Dh(a.tree,o,r,i);return d===a.tree?null:{...a,tree:d}})},installPersistedLayouts(s,o=null){e(r=>{const i={...r.layouts};for(const[a,d]of s){const u=fe(d.tree);i[a]={tree:d.tree,placement:{},activeByPane:{},focusedPaneId:d.activePaneId!==null&&u.includes(d.activePaneId)?d.activePaneId:u[0],pendingPlacement:{...d.placement},pendingActive:{...d.activeByPane},userActedPanes:new Set}}return{layouts:i,hydrationSources:{sessions:!1,terminals:!1},restoring:!0,pendingActiveWorkspace:o!==null&&i[o]!==void 0?o:null}})},claimPaneFor(s,o,r,i){n(s,a=>{const d=fe(a.tree);let u,p=!1;if(i!==void 0&&d.includes(i))u=i;else if(r!==null){const b=a.pendingPlacement[r];b!==void 0&&d.includes(b)&&(u=b,p=!0)}u??(u=d.includes(a.focusedPaneId)?a.focusedPaneId:d[0]);let g=a;if(p&&r!==null){const b={...a.pendingPlacement};delete b[r],g={...a,pendingPlacement:b}}let _=!0;if(p){const b=g.pendingActive[u];g.userActedPanes.has(u)?_=!1:b!==void 0&&b!==r&&(_=g.activeByPane[u]===void 0)}else t().restoring&&(_=g.activeByPane[u]===void 0);const h=Ft(g,o,u,{activate:_,focus:!p&&_});return p?h:Ge(h,u)})},markHydrationSource(s){e(o=>{if(o.hydrationSources[s])return o;const r={...o.hydrationSources,[s]:!0};if(!Lh.every(a=>r[a]))return{hydrationSources:r};const i={};for(const[a,d]of Object.entries(o.layouts))i[a]=Fh(d);return{hydrationSources:r,layouts:i,restoring:!1,pendingActiveWorkspace:null}})},paneOfTab(s,o){var r;return((r=t().layouts[s])==null?void 0:r.placement[o])??null},activeTabOf(s){const o=t().layouts[s];return o?o.activeByPane[o.focusedPaneId]??null:null}}});function zh(e,t){return e.filter(n=>n.workspaceCwd===t)}function Uh(e,t){return zh(e,t).map(n=>n.id)}function pt(e){const t=e===null?null:B.getState().activeTabOf(e);if(P.setState({activeTabId:t,activeWorkspaceCwd:e}),t!==null)return P.getState().tabs.find(n=>n.id===t)}function ht(e){(e==null?void 0:e.kind)==="chat"&&R.getState().activate(e.data.sessionId)}const P=ae()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,open(n,s){const o=t().tabs.find(i=>i.id===n.id);if(o){t().activate(o.id);return}e(i=>({tabs:[...i.tabs,n]}));const r=B.getState();r.ensureWorkspace(n.workspaceCwd),r.claimPaneFor(n.workspaceCwd,n.id,Zt(n),s),ht(pt(n.workspaceCwd))},close(n){const s=t().tabs.find(a=>a.id===n);if(!s)return;const o=Uh(t().tabs,s.workspaceCwd),r=t().activeTabId;e(a=>({tabs:a.tabs.filter(d=>d.id!==n)})),B.getState().removeTab(s.workspaceCwd,n,o);const i=pt(t().activeWorkspaceCwd);t().activeTabId!==r&&ht(i)},activate(n){const s=t().tabs.find(i=>i.id===n);if(!s)return;const o=B.getState();o.ensureWorkspace(s.workspaceCwd);const r=o.paneOfTab(s.workspaceCwd,n);r===null?o.claimPaneFor(s.workspaceCwd,n,Zt(s)):(o.focusPane(s.workspaceCwd,r),o.setActiveTab(s.workspaceCwd,r,n)),ht(pt(s.workspaceCwd))},switchWorkspace(n){B.getState().ensureWorkspace(n),ht(pt(n))},reorder(n,s){e(o=>{const r=o.tabs.findIndex(u=>u.id===n),i=o.tabs.findIndex(u=>u.id===s);if(r===-1||i===-1||r===i)return o;const a=o.tabs.slice(),[d]=a.splice(r,1);return d?(a.splice(i,0,d),{tabs:a}):o})},updateLabel(n,s){e(o=>({tabs:o.tabs.map(r=>r.id===n?{...r,label:s}:r)}))},updateData(n,s){e(o=>({tabs:o.tabs.map(r=>r.id===n?{...r,data:{...r.data,...s}}:r)}))},closeByPathPrefix(n){const s=t().tabs.filter(o=>{if(o.kind!=="file"&&o.kind!=="diff"&&o.kind!=="molecule")return!1;const r=o.data.path;return r===n||((r==null?void 0:r.startsWith(`${n}/`))??!1)});for(const o of s)t().close(o.id)}}));function Zt(e){var t;switch(e.kind){case"chat":{const{sessionId:n}=e.data,s=(t=R.getState().sessions[n])==null?void 0:t.agentId;return s?`agent:${s}`:null}case"file":return`file:${e.data.path}`;case"diff":{const{path:n,staged:s}=e.data;return`diff:${s?"staged":"worktree"}:${n}`}case"terminal":{const{slot:n}=e.data;return n===null?null:`terminal:${n}`}case"molecule":{const{path:n}=e.data;return n===null?null:`molecule:${n}`}}}function xr(e,t,n){var s;return((s=e.find(o=>o.id===n))==null?void 0:s.workspaceCwd)===t?t:null}function Cb(e){const t=P(n=>xr(n.tabs,n.activeWorkspaceCwd,e));return B(n=>t===null?!1:kr(n.layouts[t],e))}function Wh(e){const{tabs:t,activeWorkspaceCwd:n}=P.getState(),s=xr(t,n,e);return s===null?!1:kr(B.getState().layouts[s],e)}const ee={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let yn=0;function Ir(e,t){yn+=1,P.getState().open({id:ee.terminal(`new-${yn}`),kind:"terminal",label:`Terminal ${yn}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e},t)}let wn=0;function Hh(e,t){wn+=1,P.getState().open({id:ee.molecule(`new-${wn}`),kind:"molecule",label:`Molecule ${wn}`,closable:!0,data:{path:null},workspaceCwd:e},t)}function At(e,t){const n=R.getState().createSession(e);P.getState().open({id:ee.chat(n),kind:"chat",label:"New chat",closable:!0,data:{sessionId:n},workspaceCwd:e},t);const s=q.getState().client;s&&Ah(s,n).catch(()=>{})}function Qt(e){const t=P.getState().tabs.find(s=>s.id===e);if(P.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;jh(q.getState().client,n)}B.subscribe(()=>{const{activeWorkspaceCwd:e,activeTabId:t}=P.getState();e!==null&&B.getState().activeTabOf(e)!==t&&ht(pt(e))});function ot(){return q(e=>{var t;return((t=e.serverInfo)==null?void 0:t.homeDir)??null})}const Nn=ae()((e,t)=>({drafts:{},pendingFeedback:{},setDraft(n,s){e(o=>({drafts:{...o.drafts,[n]:s}}))},replaceDraft(n,s,o){const i={copy:(t().drafts[n]??"")===""?"filled":"replaced",flash:o};e(a=>({drafts:{...a.drafts,[n]:s},pendingFeedback:{...a.pendingFeedback,[n]:i}}))},consumeFeedback(n){const s=t().pendingFeedback[n];if(s!==void 0)return e(o=>{const r={...o.pendingFeedback};return delete r[n],{pendingFeedback:r}}),s}}));function xe(e,t,n,s=!1){return{tone:e,glyph:t,text:n,truncate:s}}function Vh(e){var t,n;return e.reason==="answered"?e.method==="input"?xe("success","check","answered"):e.method==="editor"?xe("success","check","submitted"):e.method==="select"?((t=e.answer)==null?void 0:t.value)===void 0?xe("muted",null,"no longer pending"):xe("success","check",e.answer.value,!0):e.method==="confirm"?((n=e.answer)==null?void 0:n.confirmed)===void 0?xe("muted",null,"no longer pending"):e.answer.confirmed?xe("success","check","Yes"):xe("muted",null,"declined"):xe("success","check","answered"):e.reason==="cancelled"?xe("muted",null,"declined"):e.reason==="timeout"?xe("muted",null,"expired"):xe("muted",null,e.reason)}function vn(e){return e||"Chat"}function Kh(e,t){let n=0;for(const s of Object.values(e))s.agentId===t&&n++;return n}function Gh(e){const t=e.title;return typeof t=="string"&&t.length>0?t:void 0}function Yh(e){const t=Vh(e);return t.tone==="success"?"Answered":t.text==="declined"?"Dismissed":t.text==="expired"?"Expired":"No longer pending"}function Xh(e,t,n){const s=[];for(const o of Object.values(t.pending)){if(o.receivedAt===void 0||e.pending[o.requestId]!==void 0)continue;const r=Kh(e.pending,o.agentId);if(r===0)if(o.agentId===n.activeAgentId){const i=Gh(o.payload);s.push({text:i?`A question needs input: ${i}`:"A question needs input",politeness:"polite"})}else s.push({text:`A question needs input in ${vn(n.sessionTitle(o.agentId))}`,politeness:"polite"});else s.push({text:`${r+1} questions need input in ${vn(n.sessionTitle(o.agentId))}`,politeness:"polite"})}for(const o of Object.values(t.resolved))e.resolved[o.requestId]===void 0&&s.push({text:`${Yh(o)} in ${vn(n.sessionTitle(o.agentId))}`,politeness:"polite"});return s}function Jh(e){switch(e){case"warning":return"warning";case"error":return"error";default:return"default"}}function Zh(e){switch(e){case"warning":return 6e3;case"error":return null;default:return 4e3}}function Qh(e,t,n,s){return t===n?e:`${s||"Chat"} — ${e}`}function eg(e,t,n,s,o){return{text:n===s?e:`${o||"Chat"}: ${e}`,politeness:t==="error"?"assertive":"polite"}}const Re=ae()(()=>({controller:null,uiState:Gn}));let Us=null,Ee=null,Tr=new Map,Er=new Map,gt=new Set;function Cr(){Tr=new Map,Er=new Map,gt=new Set}function tg(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Rr(e,t,n){const s=n(),o=e.get(t);return o&&tg(o,s)?o:(e.set(t,s),s)}function ng(e){for(const t of e)switch(t.type){case"notify":sg(t);break;case"replace_composer_text":og(t);break}}function sg(e){const t=R.getState(),n=t.activeSessionId?t.sessions[t.activeSessionId]:void 0,s=Object.values(t.sessions).find(a=>a.agentId===e.agentId),o=(n==null?void 0:n.agentId)??null,r=(s==null?void 0:s.title)??null;Ce.getState().show(Qh(e.message,e.agentId,o,r),{variant:Jh(e.level),durationMs:Zh(e.level)});const i=eg(e.message,e.level,e.agentId,o,r);ln(i.text,i.politeness)}function og(e){const t=Object.values(R.getState().sessions).find(s=>s.agentId===e.agentId);if(t===void 0)return;const n=Wh(ee.chat(t.id));Nn.getState().replaceDraft(t.id,e.text,n),n||ln(`Draft replaced in ${t.title||"Chat"}`,"polite")}function rg(e,t){const n=R.getState(),s=n.activeSessionId?n.sessions[n.activeSessionId]:void 0,o=Xh(e,t,{activeAgentId:(s==null?void 0:s.agentId)??null,sessionTitle:r=>{var i;return((i=Object.values(n.sessions).find(a=>a.agentId===r))==null?void 0:i.title)??null}});for(const r of o)ln(r.text,r.politeness);Object.keys(e.pending).length>0&&Object.keys(t.pending).length===0&&Hn()}const Ws=new Set;function ig(e){Cr();const t=_p(e,{onUnknownMethod(s){Ws.has(s)||(Ws.add(s),console.warn(`agent-ui: unrecognised extension-UI method "${s}"`))}}),n=t.subscribe((s,o)=>{const r=Re.getState().uiState;Re.setState({uiState:s}),ng(o),rg(r,s)});Re.setState({controller:t,uiState:t.getState()}),Ee=()=>{n(),t.dispose()}}function ag(){Ee==null||Ee(),Ee=null,Cr(),Re.setState({controller:null,uiState:Gn})}function Ar(e){if(e===Us||(ag(),Us=e,!e))return;const t=()=>{Re.getState().controller||e.connection.state==="open"&&e.extensionUiAvailable()&&(Ee==null||Ee(),Ee=null,ig(e))};t(),Re.getState().controller||(Ee=e.connection.onStateChange(n=>{n==="open"&&queueMicrotask(t)}))}q.subscribe(e=>Ar(e.client));Ar(q.getState().client);const Hs=[],Vs=[];function cg(e,t){if(!e.controller)return Hs;const n=Rr(Tr,t,()=>up(e.uiState,t));return n.length===0?Hs:n}function lg(e,t){if(!e.controller)return Vs;const n=Rr(Er,t,()=>pp(e.uiState,t));return n.length===0?Vs:n}const Ks=new Set;function dg(e){if(!e.controller)return Ks;const t=new Set(Object.keys(fp(e.uiState)));return t.size===gt.size&&[...t].every(n=>gt.has(n))?gt:(gt=t,t.size===0?Ks:t)}function ug(){return Re(dg)}function jr(e){return Re(t=>cg(t,e))}function Rb(e){return Re(t=>lg(t,e))}function Ab(e,t){const n=Re.getState().controller;return n?n.respond(e,t):Promise.resolve({ok:!1,reason:"unsupported"})}const fg={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function Ue(e){return fg[e]??"idle"}const Gs=120;function pg(e,t){return e.status==="error"?"failed":t?"needsInput":e.status==="running"?"running":e.userMessageCount===0&&e.timeline.rows.length===0?"empty":"idle"}function hg(e){const{rows:t}=e.timeline;for(let n=t.length-1;n>=0;n--){const s=t[n];if(s&&s.kind==="error"){const o=(s.text.split(`
19
- `,1)[0]??"").trim();return o.length>Gs?o.slice(0,Gs):o}}return null}function gg(e,t){const n=pg(e,t);switch(n){case"failed":return{state:n,meta:"turn failed",reason:hg(e),dot:{status:Ue("error")},titleItalic:!1};case"needsInput":return{state:n,meta:"needs input",reason:null,dot:{status:Ue(e.status),requiresAttention:!0,attentionReason:"question"},titleItalic:!1};case"running":return{state:n,meta:"running",reason:null,dot:{status:Ue("running")},titleItalic:!1};case"empty":return{state:n,meta:"no messages",reason:null,dot:{status:Ue("idle"),showInactive:!0},titleItalic:!0};case"idle":return{state:n,meta:"idle",reason:null,dot:{status:Ue("idle"),showInactive:!0},titleItalic:!1}}}function mg(e,t){const n=e.filter(o=>o.agentId!==null&&t.has(o.agentId)).length;return n>0?{dot:{status:"waiting",requiresAttention:!0,attentionReason:"question"},reason:"question",pendingSessionCount:n}:e.some(o=>o.status==="error")?{dot:{status:Ue("error")},reason:"failed",pendingSessionCount:0}:null}const _g="_header_4rtcu_1",yg="_list_4rtcu_15",wg="_newSessionRow_4rtcu_20",vg="_footer_4rtcu_45",bg="_item_4rtcu_70",Sg="_itemFailed_4rtcu_85",kg="_active_4rtcu_83",xg="_activeBar_4rtcu_88",Ig="_activeBarNeedsInput_4rtcu_107",Tg="_title_4rtcu_89",Eg="_titleLabel_4rtcu_89",Cg="_titleItalic_4rtcu_127",Rg="_meta_4rtcu_130",Ag="_metaDot_4rtcu_138",jg="_metaLabel_4rtcu_143",qg="_metaFailed_4rtcu_148",Pg="_metaNeedsInput_4rtcu_151",Mg="_metaEmpty_4rtcu_154",Ng="_menuBtn_4rtcu_159",Dg="_workspaceHeader_4rtcu_172",$g="_workspaceChevron_4rtcu_194",Og="_chevronGlyphExpanded_4rtcu_205",Lg="_workspaceLabel_4rtcu_211",Bg="_workspaceCount_4rtcu_217",Fg="_workspaceMenuBtn_4rtcu_225",zg="_workspaceSessions_4rtcu_237",V={header:_g,list:yg,newSessionRow:wg,footer:vg,item:bg,itemFailed:Sg,active:kg,activeBar:xg,activeBarNeedsInput:Ig,title:Tg,titleLabel:Eg,titleItalic:Cg,meta:Rg,metaDot:Ag,metaLabel:jg,metaFailed:qg,metaNeedsInput:Pg,metaEmpty:Mg,menuBtn:Ng,workspaceHeader:Dg,workspaceChevron:$g,chevronGlyphExpanded:Og,workspaceLabel:Lg,workspaceCount:Bg,workspaceMenuBtn:Fg,workspaceSessions:zg};function Ug({session:e,active:t,draggable:n,onSelect:s,onOpenMenu:o,onDragStartRow:r}){const i=jr(e.agentId??""),a=gg(e,i.length>0);return c.jsxs("div",{className:U(V.item,t&&V.active,!t&&a.state==="failed"&&V.itemFailed),draggable:n,onDragStart:r,onClick:s,onContextMenu:d=>{d.preventDefault(),o(d.clientX,d.clientY)},children:[(t||a.state==="needsInput")&&c.jsx("span",{className:U(V.activeBar,a.state==="needsInput"&&V.activeBarNeedsInput),"aria-hidden":!0}),c.jsxs("div",{className:V.title,children:[c.jsx("span",{className:U(V.titleLabel,a.titleItalic&&V.titleItalic),children:e.title}),c.jsx(qe,{className:V.menuBtn,hoverBase:"var(--pi-color-surfaceSidebar)",title:"Actions",onClick:d=>{d.stopPropagation();const u=d.currentTarget.getBoundingClientRect();o(u.left,u.bottom)},children:c.jsx(oe,{icon:Bn,size:"sm"})})]}),c.jsxs("div",{className:U(V.meta,a.state==="empty"&&V.metaEmpty),children:[a.dot&&c.jsx(an,{...a.dot,className:V.metaDot,pulse:a.state==="needsInput"}),c.jsxs("span",{className:V.metaLabel,children:[c.jsx("span",{className:a.state==="failed"?V.metaFailed:a.state==="needsInput"?V.metaNeedsInput:void 0,children:a.meta}),a.reason&&c.jsxs(c.Fragment,{children:[" · ",a.reason]})]})]})]})}const ye=ae()(e=>({dialog:{status:"closed"},openConfirm:(t,n,s)=>e({dialog:{status:"confirm",agentId:t,target:n,pending:!1,backTo:null,triggerElement:s}}),openPicker:(t,n,s)=>e({dialog:{status:"picker",agentId:t,messages:n,triggerElement:s}}),selectFromPicker:t=>e(n=>n.dialog.status!=="picker"?n:{dialog:{status:"confirm",agentId:n.dialog.agentId,target:t,pending:!1,backTo:n.dialog.messages,triggerElement:n.dialog.triggerElement}}),backToPicker:()=>e(t=>t.dialog.status!=="confirm"||t.dialog.backTo===null?t:{dialog:{status:"picker",agentId:t.dialog.agentId,messages:t.dialog.backTo,triggerElement:t.dialog.triggerElement}}),setPending:t=>e(n=>n.dialog.status==="confirm"?{dialog:{...n.dialog,pending:t}}:n),close:()=>e({dialog:{status:"closed"}})}));function qr(e){return e.kind==="user"&&!e.pending&&!e.failed}function Wg(e){return e.filter(qr).map(t=>t.text)}function Hg(e){const t=new Map;let n=0;for(const s of e)qr(s)&&(t.set(s.id,n),n+=1);return t}function Ys(e){return e.trim().replace(/\s+/g," ")}function Vg(e,t,n){const s=e[t],o=n[t];return s===void 0||o===void 0?{outcome:"fallback-to-picker"}:Ys(s)!==Ys(o.text)?{outcome:"fallback-to-picker"}:{outcome:"matched",target:o}}function Kg(e){return e.forkTimelineSync&&!e.running&&e.agentId!==null}const Gg=new Map;function Pr(e){var s;const t=q(o=>o.serverInfo),n=!!((s=t==null?void 0:t.features)!=null&&s.forkTimelineSync);return Kg({forkTimelineSync:n,running:(e==null?void 0:e.status)==="running",agentId:(e==null?void 0:e.agentId)??null})}function jb(e){const t=Jn(),n=ye(u=>u.openConfirm),s=ye(u=>u.openPicker),o=Pr(e),r=e.timeline.rows,i=w.useMemo(()=>o?Hg(r):Gg,[o,r]),a=e.agentId,d=w.useCallback(u=>{if(!t||!a)return;const p=document.activeElement instanceof HTMLElement?document.activeElement:null;t.agent(a).forkMessages().then(({messages:g})=>{const _=Wg(e.timeline.rows),h=Vg(_,u,g);h.outcome==="matched"?n(a,h.target,p):s(a,g,p)}).catch(g=>{console.error("[fork] forkMessages() failed",g)})},[t,a,e,n,s]);return{canFork:o,ordinalByRowId:i,onForkFromRow:d}}function Yg(e){const t=Jn(),n=ye(i=>i.openPicker),s=Pr(e),o=e==null?void 0:e.agentId,r=w.useCallback(()=>{if(!t||!o)return;const i=document.activeElement instanceof HTMLElement?document.activeElement:null;t.agent(o).forkMessages().then(({messages:a})=>n(o,a,i)).catch(a=>{console.error("[fork] forkMessages() failed",a)})},[t,o,n]);return{canFork:s,openForkPicker:r}}function Xg(){const e=D(m=>m.sessionMenu),t=D(m=>m.closeSessionMenu),n=q(m=>m.client),s=w.useRef(null),[o,r]=w.useState(!1);w.useEffect(()=>{r(e!==null)},[e]);const i=R(m=>e?m.sessions[e.sessionId]:void 0),a=Yg(i);if(!e)return null;const d=!!(i!=null&&i.agentId)&&(i==null?void 0:i.status)==="running";function u(m){r(m),m||t()}function p(){if(!i)return;const m=window.prompt("Rename:",i.title);if(m!=null&&m.trim()){const x=m.trim();R.getState().setTitle(i.id,x),P.getState().updateLabel(ee.chat(i.id),x),i.agentId&&(n==null||n.agent(i.agentId).update({title:x}).catch(()=>{}))}t()}function g(){i!=null&&i.agentId&&(n==null||n.agent(i.agentId).interrupt().catch(()=>{})),t()}function _(m){R.getState().remove(m),P.getState().close(ee.chat(m))}async function h(){if(i){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!i.agentId){_(i.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(i.agentId).archive(),_(i.id)}catch(m){window.alert(`Failed to archive: ${m instanceof Error?m.message:String(m)}`)}}}async function b(){if(i){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!i.agentId){_(i.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(i.agentId).delete(),_(i.id)}catch(m){window.alert(`Failed to delete: ${m instanceof Error?m.message:String(m)}`)}}}return c.jsxs(It,{open:o,onOpenChange:u,modal:!1,children:[c.jsx(Tt,{asChild:!0,children:c.jsx(cn,{ref:s,x:e.x,y:e.y})}),c.jsxs(Et,{minWidth:160,children:[c.jsxs(K,{onSelect:p,children:[c.jsx(ko,{size:13}),"Rename"]}),c.jsxs(K,{disabled:!d,onSelect:g,children:[c.jsx(Pi,{size:13}),"Stop agent"]}),a.canFork&&c.jsxs(K,{onSelect:a.openForkPicker,children:[c.jsx(xo,{size:13}),"Fork from…"]}),c.jsx(ze,{}),c.jsxs(K,{danger:!0,onSelect:h,children:[c.jsx(Mi,{size:13}),"Archive"]}),c.jsxs(K,{danger:!0,onSelect:b,children:[c.jsx(Fn,{size:13}),"Delete permanently"]})]})]})}function Jg({label:e,cwd:t,sessionCount:n,collapsed:s,attentionDot:o,onToggleCollapsed:r,onOpenMenu:i}){return c.jsxs("div",{className:V.workspaceHeader,onClick:r,title:t,children:[c.jsx(qe,{className:V.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:a=>{a.stopPropagation(),r()},children:c.jsx(oe,{icon:zn,size:"xs",className:s?void 0:V.chevronGlyphExpanded})}),c.jsx(Uc,{projectKey:e,size:20}),c.jsx("span",{className:V.workspaceLabel,children:e}),o&&c.jsx(an,{...o.dot,pulse:o.reason==="question","aria-label":o.reason==="question"?`${e} — ${o.pendingSessionCount} session${o.pendingSessionCount===1?"":"s"} needs input`:`${e} — turn failed`}),c.jsx("span",{className:V.workspaceCount,children:n}),c.jsx(qe,{className:V.workspaceMenuBtn,hoverBase:"var(--pi-color-surface2)",title:"Workspace actions",onClick:a=>{a.stopPropagation();const d=a.currentTarget.getBoundingClientRect();i(d.left,d.bottom)},children:c.jsx(oe,{icon:Bn,size:"sm"})})]})}function Oe(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function ns(e,t,n){const s=new Map;for(const o of e){const r=t[o];if(!r)continue;const i=Oe(r.cwd||"~",n),a=s.get(i);a?a.push(r):s.set(i,[r])}return Array.from(s,([o,r])=>({cwd:o,sessions:r}))}function Mr(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function Zg(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function Qg(){const e=D(h=>h.workspaceMenu),t=D(h=>h.closeWorkspaceMenu),n=q(h=>h.client),s=R(h=>h.order),o=R(h=>h.sessions),r=ot(),i=w.useRef(null),[a,d]=w.useState(!1);if(w.useEffect(()=>{d(e!==null)},[e]),!e)return null;const u=s.map(h=>o[h]).filter(h=>!!h).filter(h=>Oe(h.cwd||"~",r)===e.cwd);function p(h){d(h),h||t()}function g(){e&&(t(),At(e.cwd))}async function _(){if(!e)return;const h=u.length;if(!window.confirm(`Delete all ${h} conversation${h===1?"":"s"} in "${Mr(e.cwd)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return t();t();for(const m of u){if(m.agentId&&n)try{await n.agent(m.agentId).delete()}catch(x){window.alert(`Failed to delete "${m.title}": ${x instanceof Error?x.message:String(x)}`);continue}R.getState().remove(m.id),P.getState().close(ee.chat(m.id))}}return c.jsxs(It,{open:a,onOpenChange:p,modal:!1,children:[c.jsx(Tt,{asChild:!0,children:c.jsx(cn,{ref:i,x:e.x,y:e.y})}),c.jsxs(Et,{minWidth:160,children:[c.jsxs(K,{onSelect:g,children:[c.jsx(Vt,{size:13}),"New session"]}),c.jsx(ze,{}),c.jsxs(K,{danger:!0,onSelect:_,children:[c.jsx(Fn,{size:13}),"Delete workspace (all conversations)"]})]})]})}function St(e,t,n){P.getState().open({id:ee.chat(e.id),kind:"chat",label:e.title||"Chat",closable:!0,data:{sessionId:e.id},workspaceCwd:Oe(e.cwd||"~",t)},n)}const em=.25;function Nr(e,t){if(t.width<=0||t.height<=0)return"center";const n=(e.x-(t.left+t.width/2))/t.width,s=(e.y-(t.top+t.height/2))/t.height;return Math.max(Math.abs(n),Math.abs(s))<em?"center":Math.abs(n)>=Math.abs(s)?n<0?"left":"right":s<0?"top":"bottom"}function tm(e,t){return t.x>=e.left&&t.x<=e.left+e.width&&t.y>=e.top&&t.y<=e.top+e.height}function Dr(e,t,n){return n==="center"?"center":bt(e,t,n)?n:"center"}function Dn(e,t,n,s){return s[n]!==t?!1:e==="center"?!0:Object.keys(s).every(r=>r===n||s[r]!==t)}const jt={chat:"application/x-pi-studio-open-chat",path:"application/x-pi-studio-open-path"},nm=["chat","path"];function $r(e){for(const t of nm)if(e.includes(jt[t]))return t;return null}function qb(e){return t=>{t.dataTransfer.setData(jt.path,e),t.dataTransfer.effectAllowed="copyMove"}}function sm(e,t){const n=$r(e);if(n===null)return null;const s=t(jt[n]).trim();return s===""?null:{kind:n,value:s}}const ss="application/x-pi-studio-path-ref";function Or(e){return e.includes(ss)}function om(e,t){const n=e.replace(/\/+$/,"");return t?`${n}/`:e}function Pb(e,t){if(!Or(e))return null;const n=t(ss).trim();return n===""?null:n}const Lr="data-composer-drop";function Mb(){return{[Lr]:""}}function Xs(e){var t;return((t=e==null?void 0:e.closest)==null?void 0:t.call(e,`[${Lr}]`))!=null}function Js(e,t){return t&&Or(e)}function rm(e,t,n,s){return Dr(e,t,Nr(n,s))}function im(){const e=R(y=>y.order),t=R(y=>y.sessions),n=R(y=>y.activeSessionId),s=R(y=>y.activate),o=P(y=>y.activeWorkspaceCwd),r=q(y=>y.status),i=D(y=>y.openSessionMenu),a=D(y=>y.openWorkspaceMenu),d=D(y=>y.setCwd),u=D(y=>y.openCwdPicker),p=D(y=>y.collapsedWorkspaces),g=D(y=>y.toggleWorkspaceCollapsed),_=ot(),h=ug();function b(y){s(y);const S=t[y];S!=null&&S.cwd&&d(S.cwd),S&&St(S,_)}function m(y,S,T){S===o&&(T.dataTransfer.setData(jt.chat,y),T.dataTransfer.effectAllowed="copy")}const x=ns(e,t,_);return c.jsxs(Oo,{children:[c.jsx("div",{className:V.header,style:{minHeight:kc},children:c.jsxs("h3",{children:["Workspaces · ",x.length]})}),c.jsxs("div",{className:V.list,children:[x.length===0&&c.jsx(De,{style:{padding:"var(--pi-spacing-12) var(--pi-spacing-10)"},children:r!=="open"?"Not connected":"No workspaces — open a folder to start"}),x.map(y=>{const S=p.has(y.cwd);return c.jsxs("div",{children:[c.jsx(Jg,{label:Mr(y.cwd),cwd:y.cwd,sessionCount:y.sessions.length,collapsed:S,attentionDot:S?mg(y.sessions,h):null,onToggleCollapsed:()=>g(y.cwd),onOpenMenu:(T,j)=>a(y.cwd,T,j)}),!S&&c.jsxs("div",{className:V.workspaceSessions,children:[y.sessions.map(T=>c.jsx(Ug,{session:T,active:T.id===n,draggable:y.cwd===o,onSelect:()=>b(T.id),onOpenMenu:(j,W)=>i(T.id,j,W),onDragStartRow:j=>m(T.id,y.cwd,j)},T.id)),c.jsxs("button",{type:"button",className:V.newSessionRow,disabled:r!=="open",title:r!=="open"?"Connect to start a new session":void 0,onClick:()=>At(y.cwd),children:[c.jsx(oe,{icon:Vt,size:"xs"}),"New session"]})]})]},y.cwd)})]}),c.jsxs("button",{type:"button",className:V.footer,disabled:r!=="open",title:r!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>u(),children:[c.jsx(oe,{icon:Vt,size:"xs"}),"Add workspace"]}),c.jsx(Xg,{}),c.jsx(Qg,{})]})}const Br="data-pi-dragging";function Fr(e=document.body){e.setAttribute(Br,"")}function en(e=document.body){e.removeAttribute(Br)}const Zs={tab:0,strip:1,pane:2};function bn(e){if(e===null||typeof e!="object"||!("type"in e))return null;const{type:t}=e;if(t!=="tab"&&t!=="strip"&&t!=="pane")return null;const n="paneId"in e&&typeof e.paneId=="string"?e.paneId:null;return{kind:t,paneId:n}}function am(e){const t=e.activatorEvent;return t instanceof MouseEvent?{x:t.clientX+e.delta.x,y:t.clientY+e.delta.y}:null}function cm(e,t,n){return e.kind==="tab"?n.placement[t]??null:e.paneId}function lm(e){const[t,n]=w.useState(null),[s,o]=w.useState(null),r=P(h=>h.tabs.find(b=>b.id===t)??null),i=ca(la(ua,{activationConstraint:{distance:4}})),a=w.useMemo(()=>h=>{const b=da(h).map(m=>{var x;return{hit:m,target:bn((x=h.droppableContainers.find(y=>y.id===m.id))==null?void 0:x.data.current)}}).filter(m=>m.target!==null).toSorted((m,x)=>Zs[m.target.kind]-Zs[x.target.kind]);return b.length===0?[]:[b[0].hit]},[]),d=w.useCallback(h=>{const{over:b,active:m}=h,x=bn(b==null?void 0:b.data.current);if(!b||x===null||e===null)return null;const y=B.getState().layouts[e];if(y===void 0)return null;const S=String(m.id),T=String(b.id);if(x.kind!=="pane"){const G=cm(x,T,y);return G===null||x.kind==="tab"&&T===S?null:x.kind==="tab"&&y.placement[S]===G?{paneId:G,region:"center"}:Dn("center",G,S,y.placement)?null:{paneId:G,region:"center"}}const j=am(h);if(x.paneId===null||j===null)return null;const W=Dr(y.tree,x.paneId,Nr(j,b.rect));return Dn(W,x.paneId,S,y.placement)?null:{paneId:x.paneId,region:W}},[e]),u=w.useCallback(h=>{Fr(),n(String(h.active.id))},[]),p=w.useCallback(h=>{const b=d(h);o(m=>(m==null?void 0:m.paneId)===(b==null?void 0:b.paneId)&&(m==null?void 0:m.region)===(b==null?void 0:b.region)?m:b)},[d]),g=w.useCallback(()=>{en(),n(null),o(null)},[]),_=w.useCallback(h=>{var he;en(),n(null),o(null);const{active:b,over:m}=h,x=bn(m==null?void 0:m.data.current);if(!m||x===null||e===null)return;const y=String(b.id),S=B.getState().layouts[e];if(S===void 0)return;const T=P.getState(),j=T.tabs.filter(Y=>Y.workspaceCwd===e).map(Y=>Y.id),{moveTab:W,splitWithTab:G}=B.getState();if(x.kind==="tab"){const Y=String(m.id);if(Y===y)return;const we=S.placement[Y];we!==void 0&&we!==S.placement[y]&&W(e,y,we,j),T.reorder(y,Y);return}const ie=d(h);if(ie===null)return;if(ie.region!=="center"){G(e,y,ie.paneId,ie.region,j);return}W(e,y,ie.paneId,j);const O=((he=B.getState().layouts[e])==null?void 0:he.placement)??{},Q=j.filter(Y=>Y!==y&&O[Y]===ie.paneId).at(-1);Q!==void 0&&j.indexOf(y)<j.indexOf(Q)&&T.reorder(y,Q)},[e,d]);return{sensors:i,collisionDetection:a,onDragStart:u,onDragMove:p,onDragEnd:_,onDragCancel:g,draggedTab:r,preview:s}}const dm=w.lazy(()=>de(()=>import("./ChatPanel-Dh8HDToX.js"),__vite__mapDeps([21,1,2,9,3,5,6,22,23,24,25,26,27,28,10,11,29])).then(e=>({default:e.ChatPanel}))),Qs=w.lazy(()=>de(()=>import("./FilePanel-C8cn3iJj.js"),__vite__mapDeps([30,1,5,6,2,31,27,28,9,10,11,32])).then(e=>({default:e.FilePanel}))),um=w.lazy(()=>de(()=>import("./TerminalPanel-Bl7fG-P0.js"),__vite__mapDeps([33,1,34,35,5,6,2,9,10,11,36])).then(e=>({default:e.TerminalPanel}))),fm=w.lazy(()=>de(()=>import("./MoleculeViewerPanel-Dm74U_GU.js"),__vite__mapDeps([37,1,38,39,40,2,31,7,8,5,6,9,10,11,41])).then(e=>({default:e.MoleculeViewerPanel}))),pm={chat:dm,file:Qs,diff:Qs,terminal:um,molecule:fm},kt="var(--pane-strip-height)";function os(e){return e===void 0?new Map:Ph(yr(e.tree,new Set(Object.values(e.placement))))}function te(e){const t=(e*100).toFixed(4);return`${t.includes(".")?t.replace(/\.?0+$/,""):t}%`}function zr(e){if(e!==void 0)return{left:te(e.x),top:`calc(${te(e.y)} + ${kt})`,width:te(e.width),height:`calc(${te(e.height)} - ${kt})`}}function hm(e,t){const n=`${te(e.y)} + ${kt}`,s=`${te(e.height)} - ${kt}`,o=`calc((${s}) / 2)`;switch(t){case"left":return{left:te(e.x),top:`calc(${n})`,width:te(e.width/2),height:`calc(${s})`};case"right":return{left:te(e.x+e.width/2),top:`calc(${n})`,width:te(e.width/2),height:`calc(${s})`};case"top":return{left:te(e.x),top:`calc(${n})`,width:te(e.width),height:o};case"bottom":return{left:te(e.x),top:`calc(${n} + (${s}) / 2)`,width:te(e.width),height:o};case"center":return{left:te(e.x),top:`calc(${n})`,width:te(e.width),height:`calc(${s})`}}}function gm(e){const t=os(e);return[...t].map(([n,s])=>({paneId:n,stripStyle:{left:te(s.x),top:te(s.y),width:te(s.width),height:kt},focused:t.size>1&&(e==null?void 0:e.focusedPaneId)===n}))}function mm(e){if(e===void 0)return[];const t=yr(e.tree,new Set(Object.values(e.placement)));return t!==e.tree?[]:Mh(t)}function _m(e,t){return(t==null?void 0:t.placement[e])??null}function ym(e,t,n){const s=os(n);return e.map(o=>{const r=o.workspaceCwd===t?n==null?void 0:n.placement[o.id]:void 0;return{tabId:o.id,style:zr(r===void 0?void 0:s.get(r)),visible:r!==void 0&&(n==null?void 0:n.activeByPane[r])===o.id}})}const wm="_divider_4eg4l_9",vm="_vertical_4eg4l_26",bm="_horizontal_4eg4l_41",Sn={divider:wm,vertical:vm,horizontal:bm};function Sm({cwd:e,dividers:t,hostRef:n}){const s=B(i=>i.resizeDivider),o=w.useRef(0);function r(i,a){var b;const d=(b=n.current)==null?void 0:b.getBoundingClientRect();if(!d)return;i.preventDefault(),i.stopPropagation();const u=a.direction==="row",p=u?a.splitRect.width*d.width:a.splitRect.height*d.height;if(p<=0)return;const g=i.currentTarget;g.setPointerCapture(i.pointerId),o.current=u?i.clientX:i.clientY,document.body.style.cursor=u?"col-resize":"row-resize",document.body.style.userSelect="none";const _=m=>{const x=u?m.clientX:m.clientY,y=x-o.current;o.current=x,s(e,a.splitPath,a.boundaryIndex,y/p)},h=m=>{window.removeEventListener("pointermove",_),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h),document.body.style.cursor="",document.body.style.userSelect="",g.hasPointerCapture(m.pointerId)&&g.releasePointerCapture(m.pointerId)};window.addEventListener("pointermove",_),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h)}return t.map(i=>{const a=i.direction==="row";return c.jsx("div",{className:U(Sn.divider,a?Sn.vertical:Sn.horizontal),style:a?{left:`${i.rect.x*100}%`,top:`${i.rect.y*100}%`,height:`${i.rect.height*100}%`}:{left:`${i.rect.x*100}%`,top:`${i.rect.y*100}%`,width:`${i.rect.width*100}%`},role:"separator","aria-orientation":a?"vertical":"horizontal",onPointerDown:d=>r(d,i)},`${i.splitPath.join(".")}:${i.boundaryIndex}`)})}const eo={loaded:!1,capable:!1,viewers:{}},We=ae()((e,t)=>({...eo,isViewerEnabled(n){var s;return((s=t().viewers[n])==null?void 0:s.enabled)??!0},async hydrate(){const n=q.getState().client,s=(n==null?void 0:n.hasViewerSettingsCapability())??!1;if(!n||!s){e({loaded:!0,capable:!1,viewers:{}});return}try{const o=await n.getViewerSettings();e({loaded:!0,capable:!0,viewers:o.viewers})}catch{e({loaded:!0,capable:!0,viewers:{}})}},applyUpdate(n){e({viewers:n.viewers})},async setEnabled(n,s){const o=q.getState().client,r=t().viewers[n];if(e(i=>({viewers:{...i.viewers,[n]:{...r,enabled:s}}})),!!o)try{const i=await o.setViewerSettings({[n]:{enabled:s}});e({viewers:i.viewers})}catch{to(e,n,r),no()}},async setConfig(n,s){const o=q.getState().client,r=t().viewers[n];if(e(i=>({viewers:{...i.viewers,[n]:{enabled:(r==null?void 0:r.enabled)??!0,config:s}}})),!!o)try{const i=await o.setViewerSettings({[n]:{config:s}});e({viewers:i.viewers})}catch{to(e,n,r),no()}},reset(){e(eo)}}));function to(e,t,n){e(s=>{const o={...s.viewers};return n===void 0?delete o[t]:o[t]=n,{viewers:o}})}function no(){Ce.getState().error("Could not save the viewer setting. Reverted.")}function Ur(e){return We.getState().isViewerEnabled(e)}const km=w.lazy(()=>de(()=>import("./TextViewer-C6sO1Esy.js"),__vite__mapDeps([42,1,43,2,40,5,6,44,9,10,11,45])).then(e=>({default:e.TextViewer}))),xm=w.lazy(()=>de(()=>import("./MarkdownFileViewer-Ck__w_R6.js"),__vite__mapDeps([46,1,43,2,40,5,6,44,22,23,24,25,26,9,10,11,47])).then(e=>({default:e.MarkdownFileViewer}))),Im=w.lazy(()=>de(()=>import("./ImageViewer-CyNec5RW.js"),__vite__mapDeps([48,1,40,2,5,6,9,10,11,49])).then(e=>({default:e.ImageViewer}))),Tm=w.lazy(()=>de(()=>import("./VideoViewer-cj1hw5cl.js"),__vite__mapDeps([50,1,40,2,5,6,9,10,11,51])).then(e=>({default:e.VideoViewer}))),Em=w.lazy(()=>de(()=>import("./BinaryFallbackViewer-BtxtcHuV.js"),__vite__mapDeps([52,1,40,2,9,5,6,10,11,53])).then(e=>({default:e.BinaryFallbackViewer}))),Cm=w.lazy(()=>de(()=>import("./HtmlViewer-C6i8TGWc.js"),__vite__mapDeps([54,1,2,43,40,5,6,44,25,14,15,9,10,11,55])).then(e=>({default:e.HtmlViewer}))),Rm=w.lazy(()=>de(()=>import("./PdfViewer-DP5N6Zq4.js"),__vite__mapDeps([56,1,40,2,57,9,5,6,10,11,58])).then(e=>({default:e.PdfViewer}))),qt=[{kind:"text",component:km,extensions:[],liveRefresh:!0},{kind:"markdown",component:xm,extensions:["md","markdown","mdx"],liveRefresh:!0},{kind:"html",component:Cm,extensions:["html","htm","xhtml"],liveRefresh:!0},{kind:"image",component:Im,extensions:["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"],mimePrefixes:["image/"],liveRefresh:!0},{kind:"video",component:Tm,extensions:["mp4","webm","mov","m4v","ogv"],mimePrefixes:["video/"],liveRefresh:!1},{kind:"pdf",component:Rm,extensions:["pdf"],mimePrefixes:["application/pdf"],liveRefresh:!0,toggle:{id:"pdfviewer",fallback:"binary"}},{kind:"binary",component:Em,extensions:["zip","gz","tar","exe","wasm","woff","woff2","ttf","otf"],liveRefresh:!1}],Nb=Object.freeze(Object.fromEntries(qt.map(e=>[e.kind,e.component]))),Am=Object.freeze(Object.fromEntries(qt.flatMap(e=>e.extensions.map(t=>[t,e.kind])))),jm=Object.freeze(qt.flatMap(e=>(e.mimePrefixes??[]).map(t=>[t,e.kind]))),Db=Object.freeze(new Set(qt.filter(e=>e.liveRefresh).map(e=>e.kind)));function Wr(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const qm={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},Pm={poscar:!0,contcar:!0};function Hr(e){if(qm[Wr(e)])return!0;const t=e.split("/").pop()??e;return!!Pm[t.toLowerCase()]}function Mm(e,t={}){const n=Am[Wr(e)];if(n)return n;const s=t.mimeHint??"";for(const[o,r]of jm)if(s.startsWith(o))return r;return t.isBinary?"binary":"text"}const Nm=new Map(qt.flatMap(e=>e.toggle?[[e.kind,e.toggle]]:[]));function $b(e,t,n={}){const s=Mm(e,n),o=Nm.get(s);return o&&!t(o.id)?o.fallback:s}function rs(e,t,n){Hr(e)&&Ur("molviewer")?Kr(e,t,n):Vr(e,t,n)}function Vr(e,t,n){const s=e.split("/").pop()||e;P.getState().open({id:ee.file(e),kind:"file",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}function Kr(e,t,n){const s=e.split("/").pop()||e;P.getState().open({id:ee.molecule(e),kind:"molecule",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}const $n="data-pane-drop";function Dm(e){return{[$n]:e}}function $m(e,t){if(e===null)return null;for(const n of e.querySelectorAll(`[${$n}]`)){const s=n.getBoundingClientRect(),o={left:s.left,top:s.top,width:s.width,height:s.height},r=n.getAttribute($n);if(r!==null&&r!==""&&tm(o,t))return{paneId:r,bounds:o}}return null}function Om(e){const{tabs:t}=P.getState(),n=s=>t.some(o=>o.id===s)?s:null;return e.kind==="chat"?n(ee.chat(e.value)):n(ee.file(e.value))??n(ee.molecule(e.value))}function Lm(e,t,n,s,o){const r=B.getState().layouts[t];if(r===void 0)return;const i=P.getState().tabs.filter(p=>p.workspaceCwd===t).map(p=>p.id),a=Om(e);if(a!==null){if(Dn(s,n,a,r.placement))return;const{moveTab:p,splitWithTab:g}=B.getState();s==="center"?p(t,a,n,i):g(t,a,n,s,i);return}let d=n;if(s!=="center"&&(d=B.getState().splitEmpty(t,n,s)),d===null)return;if(e.kind==="path"){rs(e.value,t,d);return}const u=R.getState().sessions[e.value];u!==void 0&&St(u,o,d)}function Bm(e,t){const[n,s]=w.useState(null),o=ot();w.useEffect(()=>{const u=()=>Fr(),p=()=>en();return document.addEventListener("dragstart",u),document.addEventListener("dragend",p),document.addEventListener("drop",p),()=>{document.removeEventListener("dragstart",u),document.removeEventListener("dragend",p),document.removeEventListener("drop",p),en()}},[]);const r=w.useCallback(u=>{if(e===null)return null;const p=B.getState().layouts[e];if(p===void 0)return null;const g={x:u.clientX,y:u.clientY},_=$m(t.current,g);return _===null?null:{paneId:_.paneId,region:rm(p.tree,_.paneId,g,_.bounds)}},[e,t]),i=w.useCallback(u=>{if(Js(u.dataTransfer.types,Xs(u.target))){s(null);return}if($r(u.dataTransfer.types)===null)return;u.preventDefault(),u.dataTransfer.dropEffect="copy";const p=r(u);s(g=>(g==null?void 0:g.paneId)===(p==null?void 0:p.paneId)&&(g==null?void 0:g.region)===(p==null?void 0:p.region)?g:p)},[r]),a=w.useCallback(u=>{u.currentTarget.contains(u.relatedTarget)||s(null)},[]),d=w.useCallback(u=>{if(Js(u.dataTransfer.types,Xs(u.target))){s(null);return}const p=sm(u.dataTransfer.types,_=>u.dataTransfer.getData(_));if(p===null)return;u.preventDefault(),s(null);const g=r(u);g===null||e===null||Lm(p,e,g.paneId,g.region,o)},[e,o,r]);return{preview:n,onDragOver:i,onDragLeave:a,onDrop:d}}function Fm(e,t,n,s){if(e.kind!=="chat"||n)return null;if(s)return{status:"waiting",requiresAttention:!0,attentionReason:"question"};if(t===void 0)return null;const o=Ue(t);return o==="running"||o==="error"?{status:o}:null}const zm="_strip_1jel9_1",Um="_tabs_1jel9_13",Wm="_paneStrip_1jel9_28",Hm="_focused_1jel9_36",Vm="_tab_1jel9_13",Km="_tabActive_1jel9_61",Gm="_tabIcon_1jel9_65",Ym="_tabLabel_1jel9_70",Xm="_tabLabelMono_1jel9_76",Jm="_tabDot_1jel9_81",Zm="_tabClose_1jel9_88",Qm="_tabNeedsInput_1jel9_114",e_="_newTab_1jel9_122",t_="_stripActions_1jel9_130",n_="_splitAction_1jel9_137",s_="_itemIcon_1jel9_142",ne={strip:zm,tabs:Um,paneStrip:Wm,focused:Hm,tab:Vm,tabActive:Km,tabIcon:Gm,tabLabel:Ym,tabLabelMono:Xm,tabDot:Jm,tabClose:Zm,tabNeedsInput:Qm,newTab:e_,stripActions:t_,splitAction:n_,itemIcon:s_},Gr={chat:Eo,file:on,diff:To,terminal:Io,molecule:sn},o_={file:!0,diff:!0};function r_({tab:e,active:t}){const n=P(y=>y.activate),s=D(y=>y.openTabMenu),o=Gr[e.kind],r=R(y=>{var S;return e.kind==="chat"?(S=y.sessions[e.data.sessionId])==null?void 0:S.status:void 0}),i=R(y=>{var S;return e.kind==="chat"?(S=y.sessions[e.data.sessionId])==null?void 0:S.agentId:void 0}),a=jr(i??""),d=Fm(e,r,t,a.length>0),u=(d==null?void 0:d.attentionReason)==="question",p=e.kind==="terminal"&&e.data.exited===!0,{attributes:g,listeners:_,setNodeRef:h,transform:b,transition:m,isDragging:x}=ha({id:e.id,data:{type:"tab"}});return c.jsxs("div",{ref:h,className:U(ne.tab,t&&ne.tabActive,u&&ne.tabNeedsInput),style:{transform:ga.Transform.toString(b),transition:m,opacity:x?.5:p?.6:1},onClick:()=>n(e.id),onAuxClick:y=>{y.button===1&&e.closable&&Qt(e.id)},onContextMenu:y=>{e.closable&&(y.preventDefault(),s(e.id,y.clientX,y.clientY))},title:p?`${e.label} (exited)`:e.label,...g,..._,children:[c.jsx("span",{className:ne.tabIcon,children:c.jsx(oe,{icon:o,size:"xs",color:t&&e.kind==="chat"?"var(--pi-color-accentBright)":"currentColor","aria-hidden":!0})}),c.jsx("span",{className:U(ne.tabLabel,o_[e.kind]&&ne.tabLabelMono),children:e.label}),d&&c.jsx(an,{...d,className:ne.tabDot,pulse:u,"aria-label":u?"Needs input":void 0}),e.closable&&c.jsx("span",{className:ne.tabClose,onClick:y=>{y.stopPropagation(),Qt(e.id)},children:c.jsx(oe,{icon:vt,size:"xs","aria-hidden":!0})})]})}function i_({workspaceCwd:e,paneId:t}){const n=We(o=>o.isViewerEnabled("molviewer")),s=o=>()=>{e!==null&&o(e,t??void 0)};return c.jsxs(It,{children:[c.jsx(Tt,{asChild:!0,children:c.jsx(qe,{className:ne.newTab,size:"xs",hoverBase:"var(--pi-color-background)",title:"New tab",disabled:!e,children:c.jsx(oe,{icon:Vt,size:"sm","aria-hidden":!0})})}),c.jsxs(Et,{minWidth:160,sideOffset:4,children:[c.jsxs(K,{onSelect:s(At),children:[c.jsx(oe,{icon:Eo,size:"xs",className:ne.itemIcon,"aria-hidden":!0}),"New chat"]}),c.jsxs(K,{onSelect:s(Ir),children:[c.jsx(oe,{icon:Io,size:"xs",className:ne.itemIcon,"aria-hidden":!0}),"New terminal"]}),n&&c.jsxs(K,{onSelect:s(Hh),children:[c.jsx(oe,{icon:sn,size:"xs",className:ne.itemIcon,"aria-hidden":!0}),"New molecule view"]})]})]})}function a_({cwd:e,paneId:t}){const n=B(a=>{var d;return e===null||(d=a.layouts[e])==null?void 0:d.tree}),s=a=>()=>{if(e===null||t===null)return;const d=B.getState().splitEmpty(e,t,a);d!==null&&At(e,d)},o=a=>n===void 0||t===null?"Open a workspace to split":bt(n,t,a)?null:"Maximum split depth reached",r=o("right"),i=o("bottom");return c.jsxs("div",{className:ne.stripActions,children:[c.jsx(qe,{className:ne.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:r??"Split right",disabled:r!==null,onClick:s("right"),children:c.jsx(oe,{icon:Ni,size:"sm","aria-hidden":!0})}),c.jsx(qe,{className:ne.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:i??"Split down",disabled:i!==null,onClick:s("bottom"),children:c.jsx(oe,{icon:Di,size:"sm","aria-hidden":!0})})]})}function so({cwd:e,paneId:t,style:n,focused:s=!1}){const o=P(p=>p.tabs),r=B(p=>p.focusPane),i=B(p=>{var g;return e===null||(g=p.layouts[e])==null?void 0:g.placement}),a=B(p=>{var g;return e===null||t===null||(g=p.layouts[e])==null?void 0:g.activeByPane[t]}),d=t===null?[]:o.filter(p=>(i==null?void 0:i[p.id])===t),{setNodeRef:u}=Co({id:`strip:${t??"none"}`,disabled:t===null,data:{type:"strip",paneId:t}});return c.jsxs("div",{ref:u,className:U(ne.strip,ne.paneStrip,s&&ne.focused),style:n,onPointerDown:()=>{e!==null&&t!==null&&r(e,t)},children:[c.jsx("div",{className:ne.tabs,children:c.jsx(fa,{items:d.map(p=>p.id),strategy:pa,children:d.map(p=>c.jsx(r_,{tab:p,active:p.id===a},p.id))})}),c.jsx(i_,{workspaceCwd:e,paneId:t}),c.jsx(a_,{cwd:e,paneId:t})]})}const c_="_preview_1txmv_1",l_="_chip_1txmv_9",d_="_chipLabel_1txmv_23",On={preview:c_,chip:l_,chipLabel:d_};function u_({rect:e,region:t}){return c.jsx("div",{className:On.preview,style:hm(e,t)})}function f_({tab:e}){const t=Gr[e.kind];return c.jsxs("div",{className:On.chip,children:[c.jsx(t,{size:13}),c.jsx("span",{className:On.chipLabel,children:e.label})]})}function p_(){const e=D(a=>a.tabMenu),t=D(a=>a.closeTabMenu),n=w.useRef(null),[s,o]=w.useState(!1);if(w.useEffect(()=>{o(e!==null)},[e]),!e)return null;function r(a){o(a),a||t()}function i(){e&&Qt(e.tabId),t()}return c.jsxs(It,{open:s,onOpenChange:r,modal:!1,children:[c.jsx(Tt,{asChild:!0,children:c.jsx(cn,{ref:n,x:e.x,y:e.y})}),c.jsx(Et,{minWidth:120,children:c.jsxs(K,{onSelect:i,children:[c.jsx(vt,{size:13}),"Close"]})})]})}function h_(e,t,n){return n===0?-1:Math.min(Math.max(e+(t==="ArrowDown"?1:-1),0),n-1)}const g_="An extension declined the fork.",m_="Couldn't fork. Try again.";function __(e,t){if(Hn(),t.cancelled){Ce.getState().error(g_),ye.getState().close();return}ye.getState().close();const n=R.getState().findByAgentId(e);if(!n)return;(Nn.getState().drafts[n.id]??"")===""&&Nn.getState().setDraft(n.id,t.text)}function y_(e){Hn();const t=e instanceof Error&&e.message?e.message:m_;Ce.getState().error(t),ye.getState().setPending(!1)}const w_="_confirmContent_10pv6_9",v_="_preview_10pv6_13",b_="_previewPending_10pv6_28",S_="_copy_10pv6_32",k_="_backButton_10pv6_39",x_="_pickerList_10pv6_45",I_="_pickerRow_10pv6_54",T_="_pickerOrdinal_10pv6_73",E_="_pickerText_10pv6_80",C_="_pickerEmpty_10pv6_88",Te={confirmContent:w_,preview:v_,previewPending:b_,copy:S_,backButton:k_,pickerList:x_,pickerRow:I_,pickerOrdinal:T_,pickerText:E_,pickerEmpty:C_},R_="Later messages leave the agent's context. The original prompt is placed in the composer for editing.";function A_(e){var o;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return;e.preventDefault();const t=Array.from(e.currentTarget.querySelectorAll("button")),n=t.indexOf(document.activeElement),s=h_(n,e.key,t.length);s>=0&&((o=t[s])==null||o.focus())}function j_(){const e=ye(S=>S.dialog),t=ye(S=>S.selectFromPicker),n=ye(S=>S.backToPicker),s=ye(S=>S.setPending),o=ye(S=>S.close),r=Jn(),i=w.useRef(null),a=w.useRef(null),d=e.status!=="closed",u=e.status==="confirm"&&e.pending,p=w.useRef(null),g=w.useRef(null);e.status!=="closed"&&(p.current=e.triggerElement,g.current=e.agentId),w.useEffect(()=>{e.status==="picker"&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[e]);function _(S){var T,j;S.preventDefault(),(j=(T=i.current)==null?void 0:T.querySelector("button"))==null||j.focus()}function h(S){var T;S.preventDefault(),(T=a.current)==null||T.focus()}function b(S){const T=p.current;if(T!=null&&T.isConnected){S.preventDefault(),T.focus();return}const j=g.current,W=j?R.getState().findByAgentId(j):void 0,G=W?document.querySelector(`[data-session-id="${W.id}"]`):null;G&&(S.preventDefault(),G.focus())}async function m(){const S=ye.getState().dialog;if(!(S.status!=="confirm"||S.pending||!r)){s(!0),ln("Forking…");try{const T=await r.agent(S.agentId).fork(S.target.entryId);__(S.agentId,T)}catch(T){y_(T)}}}if(!d)return null;if(e.status==="picker")return c.jsx(Rn,{open:!0,onOpenChange:S=>!S&&o(),title:"Fork from…",width:460,onCloseAutoFocus:b,onOpenAutoFocus:_,children:e.messages.length===0?c.jsxs(De,{className:Te.pickerEmpty,children:[c.jsx(oe,{icon:xo,size:"lg"}),c.jsx("div",{children:"Nothing to fork yet"})]}):c.jsx("div",{className:Te.pickerList,ref:i,onKeyDown:A_,children:e.messages.map((S,T)=>c.jsxs("button",{type:"button",className:Te.pickerRow,onClick:()=>t(S),children:[c.jsxs("span",{className:Te.pickerOrdinal,children:["#",T+1]}),c.jsx("span",{className:Te.pickerText,children:S.text})]},S.entryId))})});const{target:x,backTo:y}=e;return c.jsx(Rn,{open:!0,onOpenChange:S=>!S&&!u&&o(),title:"Fork conversation",width:440,onInteractOutside:S=>{u&&S.preventDefault()},onEscapeKeyDown:S=>{u&&S.preventDefault()},onCloseAutoFocus:b,onOpenAutoFocus:h,footer:c.jsxs(c.Fragment,{children:[y!==null&&c.jsx(se,{className:Te.backButton,size:"sm",variant:"ghost",disabled:u,onClick:()=>n(),children:"‹ Back"}),c.jsx(Lo,{asChild:!0,children:c.jsx(se,{ref:a,size:"sm",variant:"secondary",disabled:u,children:"Cancel"})}),c.jsx(se,{size:"sm",loading:u,onClick:()=>void m(),children:u?"Forking…":"Fork from here"})]}),children:c.jsxs("div",{className:Te.confirmContent,children:[c.jsx("div",{className:U(Te.preview,u&&Te.previewPending),children:x.text}),c.jsx("div",{className:Te.copy,children:R_})]})})}const q_="_area_9sawz_1",P_="_panel_9sawz_11",M_="_dropZone_9sawz_27",N_="_active_9sawz_31",D_="_empty_9sawz_35",$_="_emptyStack_9sawz_47",O_="_emptyTitle_9sawz_61",L_="_emptyHint_9sawz_65",Ne={area:q_,panel:P_,dropZone:M_,active:N_,empty:D_,emptyStack:$_,emptyTitle:O_,emptyHint:L_};function B_({paneId:e,style:t}){const{setNodeRef:n}=Co({id:`pane:${e}`,data:{type:"pane",paneId:e}});return c.jsx("div",{ref:n,className:Ne.dropZone,style:t,...Dm(e)})}function F_(){const e=P(m=>m.tabs),t=P(m=>m.activeWorkspaceCwd),n=B(m=>t===null?void 0:m.layouts[t]),s=q(m=>m.status),o=D(m=>m.openCwdPicker),r=B(m=>m.focusPane),i=e.some(m=>m.workspaceCwd===t),a=w.useRef(null),d=w.useMemo(()=>ym(e,t,n),[e,t,n]),u=w.useMemo(()=>gm(n),[n]),p=w.useMemo(()=>mm(n),[n]),g=w.useMemo(()=>os(n),[n]),_=lm(t),h=Bm(t,a),b=_.preview??h.preview;return c.jsxs(ma,{sensors:_.sensors,collisionDetection:_.collisionDetection,onDragStart:_.onDragStart,onDragMove:_.onDragMove,onDragEnd:_.onDragEnd,onDragCancel:_.onDragCancel,children:[c.jsxs("div",{className:Ne.area,ref:a,onDragOver:h.onDragOver,onDragLeave:h.onDragLeave,onDrop:h.onDrop,children:[u.length===0?c.jsx(so,{cwd:t,paneId:null}):u.map(m=>c.jsx(so,{cwd:t,paneId:m.paneId,style:m.stripStyle,focused:m.focused},m.paneId)),c.jsx(p_,{}),c.jsx(j_,{}),t!==null&&p.length>0&&c.jsx(Sm,{cwd:t,dividers:p,hostRef:a}),u.map(m=>c.jsx(B_,{paneId:m.paneId,style:zr(g.get(m.paneId))},`drop-${m.paneId}`)),b!==null&&g.has(b.paneId)&&c.jsx(u_,{rect:g.get(b.paneId),region:b.region}),t===null&&c.jsxs("div",{className:Ne.emptyStack,children:[c.jsx("div",{className:Ne.emptyTitle,children:"No workspace open"}),c.jsx("div",{className:Ne.emptyHint,children:"Open a project folder to start a chat."}),c.jsx(se,{size:"sm",variant:"secondary",leftIcon:c.jsx($i,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>o(),children:"Open Workspace"})]}),t!==null&&!i&&c.jsx("div",{className:Ne.empty,children:"No open tabs in this workspace"}),e.map((m,x)=>{const y=pm[m.kind],S=d[x],T=n==null?void 0:n.placement[m.id];return c.jsx("div",{className:U(Ne.panel,S.visible&&Ne.active),style:S.style,onPointerDown:()=>{t!==null&&T!==void 0&&r(t,T)},children:c.jsx(w.Suspense,{fallback:c.jsx($o,{size:"md"}),children:c.jsx(y,{tab:m,owningPaneId:_m(m.id,n)})})},m.id)})]}),c.jsx(_a,{dropAnimation:null,children:_.draggedTab&&c.jsx(f_,{tab:_.draggedTab})})]})}const le=ae()(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 o=s.get(t);return{rootPath:t,expanded:o?new Set(o):new Set([t]),expandedByRoot:s,draft:null,selected:null,renaming:null}}),toggle:t=>e(n=>{const s=new Set(n.expanded);s.has(t)?s.delete(t):s.add(t);const o=new Map(n.expandedByRoot);return o.set(n.rootPath,s),{expanded:s,expandedByRoot:o}}),startDraft:(t,n)=>e(s=>{const o=new Set(s.expanded);o.add(t);const r=new Map(s.expandedByRoot);return s.rootPath&&r.set(s.rootPath,o),{draft:{parentPath:t,kind:n},expanded:o,expandedByRoot:r,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(o=>{const r=u=>u===t?n:u.startsWith(`${t}/`)?n+u.slice(t.length):u,i=new Set([...o.expanded].map(r));i.add(s);const a=new Map(o.expandedByRoot);o.rootPath&&a.set(o.rootPath,i);const d=o.selected?{path:r(o.selected.path),isDirectory:o.selected.isDirectory}:null;return{expanded:i,expandedByRoot:a,selected:d,renaming:null}})})),He={fileRead:e=>["file","read",e],fileDownload:e=>["file","download",e],fileText:(e,t)=>["file","text",e,t],fileDiff:(e,t,n)=>["file","diff",e,t,n],fileDiffByPath:e=>["file","diff",e],htmlAssetBundle:(e,t)=>["file","htmlAssets",e,t],htmlAssetBundleByPath:e=>["file","htmlAssets",e],explorer:e=>["explorer",e],agentList:()=>["agents","list"],providerModels:(e,t)=>["providers","models",e,t??null],providerModelsAll:()=>["providers","models"],agentTimeline:e=>["agents","timeline",e],thinkingLevels:(e,t)=>["agents","thinkingLevels",e,t??""],agentCommands:e=>["agents","commands",e],providerAuthList:()=>["providers","auth","list"],skillsList:()=>["skills","list"]};function z_(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function U_(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function Yr(e,t){const s=(await e.connection.request("file_explorer_request",{path:t})).result;if(!s||s.ok===!1)throw new Error(s&&"error"in s?s.error:"explorer request failed");const o="entries"in s?s.entries??[]:[];return{path:s.resolvedPath??t,entries:U_(o.map(z_))}}function W_(e,t=!0){const n=q(s=>s.client);return Si({queryKey:He.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return Yr(n,e)},enabled:!!n&&!!e&&t})}function H_(e){const t=q(o=>o.client),n=w.useMemo(()=>Array.from(e),[e]),s=ki({queries:n.map(o=>({queryKey:He.explorer(o),queryFn:()=>{if(!t)throw new Error("not connected");return Yr(t,o)},enabled:!!t&&!!o}))});return w.useMemo(()=>{const o=new Map;return n.forEach((r,i)=>{const a=s[i];o.set(r,{listing:a==null?void 0:a.data,isLoading:!!(a!=null&&a.isLoading),isError:!!(a!=null&&a.isError),error:a==null?void 0:a.error})}),o},[n,s])}function V_(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function K_(e,t){const n=new Set,s=e.connection.onSessionMessage(o=>{const r=o;V_(r)&&n.has(r.path)&&t(r.path)});return{sync(o){for(const r of n)o.has(r)||(n.delete(r),e.connection.request("file_watch_unsubscribe",{path:r}).catch(()=>{}));for(const r of o)n.has(r)||(n.add(r),e.connection.request("file_watch_subscribe",{path:r}).then(i=>{const a=i;(a==null?void 0:a.ok)===!1&&console.warn(`useExplorerWatch: ${a.error??"subscribe failed"} for "${r}"`)}).catch(()=>{}))},dispose(){s();for(const o of n)e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{});n.clear()}}}function G_(e){const t=q(i=>i.client),n=st(),s=w.useRef(null),o=w.useRef(null),r=Array.from(e).toSorted().join("\0");w.useEffect(()=>{var i,a;t&&(o.current!==t&&((i=s.current)==null||i.dispose(),s.current=K_(t,d=>{n.invalidateQueries({queryKey:He.explorer(d)})}),o.current=t),(a=s.current)==null||a.sync(new Set(r?r.split("\0"):[])))},[t,r,n]),w.useEffect(()=>()=>{var i;(i=s.current)==null||i.dispose(),s.current=null,o.current=null},[])}const oo=new WeakMap;function ro(e){let t=oo.get(e);return t||(t=new vp(e),t.start(),oo.set(e,t)),t}function Y_(e,t,n){const s=new Blob([Uint8Array.from(e)],{type:n||"application/octet-stream"}),o=URL.createObjectURL(s),r=document.createElement("a");r.href=o,r.download=t,r.rel="noopener",document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(o),0)}function Xr(){const e=q(o=>o.daemon),t=st(),n=w.useCallback(async(o,r)=>{if(!e)throw new Error("not connected");const i=o?`${o}/${r.name}`:r.name,a=new Uint8Array(await r.arrayBuffer());await ro(e).upload(i,a),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=w.useCallback(async o=>{if(!e)throw new Error("not connected");const r=await ro(e).download(o);Y_(r.bytes,r.fileName||o.split("/").pop()||"download",r.mimeType)},[e]);return{upload:n,saveToDisk:s}}const io={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},_e=ae()(e=>({subscribedCwd:null,changes:[],ignored:[],...io,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],ignored:[],...io});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 Ob(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function Ie(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function X_(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function Lb(e){if(!e.startsWith("/"))return e;const t=e.split("/"),n=[];for(const s of t)s===""||s==="."||(s===".."?n.length>0&&n.pop():n.push(s));return"/"+n.join("/")}function ao(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:Ie(t.path);if(s===Ie(e)||s===e||s.startsWith(`${e}/`)||s!==n&&!s.startsWith(`${n}/`))return null;const o=e.split("/").pop();return{destinationDir:s,destination:`${s}/${o}`}}function co(e,t){if(e.kind!=="file"&&e.kind!=="directory")return null;const n=e.kind==="directory"?e.path:Ie(e.path);return n!==t&&!n.startsWith(`${t}/`)?null:n}const J_={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 Z_(e,t,n){const s=await e.connection.request("file_move_request",{path:t,destination:n});if(!s.ok){const o=s.error??"";throw new Error(J_[o]??o??"Failed to move")}return s.destination??n}function lo(e,t){return t===0?e:`${e} — closed ${t} ${t===1?"diff tab":"diff tabs"}`}function Q_(e){return`${e.kind}:${e.path}`}function Jr(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function Zr(e,t,n,s,o,r,i){var d;(r==null?void 0:r.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:r.kind,parentPath:t});const a=o.get(t);if(!a||a.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(a.isError){const u=a.error instanceof Error?a.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:u});return}for(const u of((d=a.listing)==null?void 0:d.entries)??[])ey(e,t,u,n,s,o,r,i)}function ey(e,t,n,s,o,r,i,a){const d=Jr(t,n.name),u=n.kind==="directory",p=u&&o.has(d);d===a?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:p}):e.push({kind:"file",path:d,name:n.name,depth:s}),p&&Zr(e,d,s+1,o,r,i,a)}function ty(e,t,n,s,o){if(!e)return[];const r=t.has(e),i=[{kind:"directory",path:e,name:e.split("/").pop()||e,depth:0,expanded:r}];return r&&Zr(i,e,1,t,n,s,o),i}const ny=()=>{};function sy(e,t){return e===void 0?t:e==="deleted"||t==="deleted"?"deleted":e==="added"||t==="added"?"added":"modified"}function oy(e){return e==="added"?"added":"modified"}function ry(e,t){if(!e||t.length===0)return ny;const n=e.replace(/\/+$/,""),s=new Map,o=new Map,r=[];for(const i of t){const a=i.path.endsWith("/"),d=a?i.path.slice(0,-1):i.path;if(!d)continue;const u=`${n}/${d}`;s.set(u,sy(s.get(u),i.status)),a&&r.push(u);const p=oy(i.status);let g=Ie(u);for(;g.length>n.length&&g.startsWith(n);){const _=o.get(g);o.set(g,_===void 0||_===p?p:"modified");const h=Ie(g);if(h===g)break;g=h}}return i=>{const a=s.get(i)??o.get(i);if(a!==void 0)return a;for(const d of r)if(i.startsWith(`${d}/`))return"added"}}const iy=()=>!1;function ay(e,t){if(!e||t.length===0)return iy;const n=e.replace(/\/+$/,""),s=new Set,o=[];for(const r of t){const i=r.endsWith("/"),a=i?r.slice(0,-1):r;if(!a)continue;const d=`${n}/${a}`;s.add(d),i&&o.push(`${d}/`)}return r=>{if(s.has(r))return!0;for(const i of o)if(r.startsWith(i))return!0;return!1}}const cy="_container_1wywk_1",ly="_header_1wywk_7",dy="_uploadButton_1wywk_14",uy="_hiddenInput_1wywk_33",fy="_status_1wywk_36",py="_statusError_1wywk_37",hy="_rowAction_1wywk_50",gy="_item_1wywk_53",my="_list_1wywk_60",_y="_active_1wywk_83",yy="_selected_1wywk_88",wy="_dropTarget_1wywk_92",vy="_rootItem_1wywk_99",by="_dirName_1wywk_98",Sy="_chevronSlot_1wywk_104",ky="_chevron_1wywk_104",xy="_chevronOpen_1wywk_115",Iy="_icon_1wywk_118",Ty="_name_1wywk_125",Ey="_gitAdded_1wywk_140",Cy="_gitModified_1wywk_145",Ry="_gitDeleted_1wywk_150",Ay="_hiddenEntry_1wywk_162",jy="_statusRow_1wywk_171",qy="_statusRowError_1wywk_182",Py="_draftInput_1wywk_185",F={container:cy,header:ly,uploadButton:dy,hiddenInput:uy,status:fy,statusError:py,rowAction:hy,item:gy,list:my,active:_y,selected:yy,dropTarget:wy,rootItem:vy,dirName:by,chevronSlot:Sy,chevron:ky,chevronOpen:xy,icon:Iy,name:Ty,gitAdded:Ey,gitModified:Cy,gitDeleted:Ry,hiddenEntry:Ay,statusRow:jy,statusRowError:qy,draftInput:Py};function My({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[o,r]=w.useState("");return c.jsxs("div",{className:F.item,style:t,onClick:i=>i.stopPropagation(),children:[c.jsx("span",{className:F.chevronSlot}),c.jsx("span",{className:F.icon,children:e==="directory"?c.jsx(Ve,{size:16}):c.jsx(on,{size:16})}),c.jsx("input",{className:F.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:o,onChange:i=>r(i.target.value),onKeyDown:i=>{if(i.key==="Enter"){i.preventDefault();const a=o.trim();a?n(a):s()}else i.key==="Escape"&&(i.preventDefault(),s())},onBlur:s})]})}function Ny({name:e,isDirectory:t,indentStyle:n,onSubmit:s,onCancel:o}){const[r,i]=w.useState(e),a=w.useRef(null);return w.useEffect(()=>{const d=a.current;if(!d)return;d.focus();const u=e.lastIndexOf("."),p=t||u<=0?e.length:u;d.setSelectionRange(0,p)},[e,t]),c.jsxs("div",{className:F.item,style:n,onClick:d=>d.stopPropagation(),children:[c.jsx("span",{className:F.chevronSlot}),c.jsx("span",{className:F.icon,children:t?c.jsx(Ve,{size:16}):c.jsx(on,{size:16})}),c.jsx("input",{ref:a,className:F.draftInput,spellCheck:!1,value:r,onChange:d=>i(d.target.value),onKeyDown:d=>{if(d.key==="Enter"){d.preventDefault();const u=r.trim();!u||u===e?o():s(u)}else d.key==="Escape"&&(d.preventDefault(),o())},onBlur:o})]})}const Dy=14,$y={added:F.gitAdded,modified:F.gitModified,deleted:F.gitDeleted};function Oy({row:e,active:t,selected:n,dropTarget:s,gitStatus:o,hidden:r,isRoot:i,onToggle:a,onOpenFile:d,onContextMenu:u,onSubmitDraft:p,onCancelDraft:g,onSubmitRename:_,onCancelRename:h,onDragStartRow:b,onDragEndRow:m}){const x={paddingLeft:8+e.depth*Dy};if(e.kind==="loading")return c.jsx("div",{className:F.statusRow,style:x,children:"Loading…"});if(e.kind==="error")return c.jsx("div",{className:U(F.statusRow,F.statusRowError),style:x,children:e.message??"failed to load"});if(e.kind==="draft")return c.jsx(My,{draftKind:e.draftKind,indentStyle:x,onSubmit:S=>p(e.parentPath,S),onCancel:g});if(e.kind==="rename")return c.jsx(Ny,{name:e.name,isDirectory:e.isDirectory,indentStyle:x,onSubmit:S=>_(e.path,S),onCancel:h});const y=e.kind==="directory";return c.jsxs("div",{className:U(F.item,i&&F.rootItem,t&&F.active,n&&F.selected,s&&F.dropTarget,o&&$y[o],r&&F.hiddenEntry),style:x,title:e.path,draggable:!i,onDragStart:S=>b(e.path,y,S),onDragEnd:m,onClick:()=>y?a(e.path):d(e.path),onContextMenu:S=>{S.preventDefault(),S.stopPropagation(),u(e.path,y,S.clientX,S.clientY)},children:[c.jsx("span",{className:F.chevronSlot,children:y&&c.jsx(zn,{size:14,className:U(F.chevron,e.expanded&&F.chevronOpen)})}),c.jsx("span",{className:F.icon,children:y?c.jsx(Ve,{size:16}):c.jsx(on,{size:16})}),c.jsx("span",{className:y?F.dirName:F.name,children:e.name}),c.jsx(qe,{className:F.rowAction,title:"Actions",onClick:S=>{S.stopPropagation();const T=S.currentTarget.getBoundingClientRect();u(e.path,y,T.left,T.bottom)},children:c.jsx(Bn,{size:14})})]})}async function uo(e){var o;if((o=navigator.clipboard)!=null&&o.writeText)try{await navigator.clipboard.writeText(e);return}catch{}const t=document.activeElement,n=(t instanceof HTMLElement?t.closest('[role="dialog"], [role="menu"]'):null)??document.body,s=document.createElement("textarea");s.value=e,s.setAttribute("aria-hidden","true"),s.style.position="fixed",s.style.opacity="0",n.appendChild(s),s.focus(),s.select();try{const r=document.activeElement===s&&s.selectionStart===0&&s.selectionEnd===s.value.length;if(!document.execCommand("copy")||!r)throw new Error('execCommand("copy") did not copy the requested text')}finally{s.remove(),t instanceof HTMLElement&&t.focus()}}const Ly={empty_path:"Nothing to delete.",not_found:"That item no longer exists."};async function By(e,t){const n=await e.connection.request("file_delete_request",{path:t});if(!n.ok){const s=n.error??"";throw new Error(Ly[s]??s??"Failed to delete")}}function Fy(){const e=D(O=>O.fileMenu),t=D(O=>O.closeFileMenu),n=q(O=>O.client),s=le(O=>O.startDraft),o=le(O=>O.startRename),r=le(O=>O.rootPath),i=P(O=>O.activeWorkspaceCwd),a=We(O=>O.isViewerEnabled("molviewer")),{saveToDisk:d}=Xr(),u=st(),p=w.useRef(null),[g,_]=w.useState(!1);if(w.useEffect(()=>{_(e!==null)},[e]),!e)return null;const h=e.path.split("/").pop()||e.path;function b(O){_(O),O||t()}function m(){e&&(t(),rs(e.path,i||"~"))}function x(){e&&(t(),Kr(e.path,i||"~"))}function y(){e&&(t(),Vr(e.path,i||"~"))}async function S(){if(e){t();try{await uo(e.path)}catch{window.alert("Failed to copy to clipboard.")}}}async function T(){if(e){t();try{await uo(X_(e.path,r)||"/")}catch{window.alert("Failed to copy to clipboard.")}}}async function j(){if(e){t();try{await d(e.path)}catch(O){window.alert(`Failed to download: ${O instanceof Error?O.message:String(O)}`)}}}async function W(){if(!e)return;const O=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${O}? "${h}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{await By(n,e.path),await u.invalidateQueries({queryKey:["explorer"]}),P.getState().closeByPathPrefix(e.path)}catch(Q){window.alert(`Failed to delete: ${Q instanceof Error?Q.message:String(Q)}`)}}function G(O){if(!e)return;const Q=e.isDirectory?e.path:Ie(e.path);t(),s(Q,O)}function ie(){e&&(t(),o(e.path))}return c.jsxs(It,{open:g,onOpenChange:b,modal:!1,children:[c.jsx(Tt,{asChild:!0,children:c.jsx(cn,{ref:p,x:e.x,y:e.y})}),c.jsx(Et,{minWidth:140,children:e.background?c.jsxs(c.Fragment,{children:[c.jsxs(K,{onSelect:()=>G("file"),children:[c.jsx(Tn,{size:13}),"New File"]}),c.jsxs(K,{onSelect:()=>G("directory"),children:[c.jsx(Kt,{size:13}),"New Folder"]}),c.jsx(ze,{}),c.jsxs(K,{onSelect:S,children:[c.jsx(Nt,{size:13}),"Copy Current Directory Path"]}),c.jsxs(K,{onSelect:T,children:[c.jsx(Nt,{size:13}),"Copy Current Directory Relative Path"]})]}):c.jsxs(c.Fragment,{children:[!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(K,{onSelect:m,children:[c.jsx(Oi,{size:13}),"Open"]}),a&&c.jsxs(K,{onSelect:x,children:[c.jsx(sn,{size:13}),"Open in MolViewer"]}),a&&Hr(e.path)&&c.jsxs(K,{onSelect:y,children:[c.jsx(Li,{size:13}),"Open as Text"]}),c.jsx(ze,{})]}),e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(K,{onSelect:()=>G("file"),children:[c.jsx(Tn,{size:13}),"New File"]}),c.jsxs(K,{onSelect:()=>G("directory"),children:[c.jsx(Kt,{size:13}),"New Folder"]}),c.jsx(ze,{})]}),c.jsxs(K,{onSelect:S,children:[c.jsx(Nt,{size:13}),"Copy Absolute Path"]}),c.jsxs(K,{onSelect:T,children:[c.jsx(Nt,{size:13}),"Copy Relative Path"]}),c.jsx(ze,{}),!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(K,{onSelect:j,children:[c.jsx(Bi,{size:13}),"Download"]}),c.jsx(ze,{})]}),c.jsxs(K,{onSelect:ie,children:[c.jsx(ko,{size:13}),"Rename"]}),c.jsxs(K,{danger:!0,onSelect:W,children:[c.jsx(Fn,{size:13}),"Delete"]})]})})]})}const zy={empty_path:"Choose a folder first.",invalid_name:'Invalid name — cannot be empty or contain "/".',exists:"An item with that name already exists here.",not_found:"That folder no longer exists.",not_a_directory:"That path is not a folder.",unreadable:"That folder is not readable."};class Uy extends Error{constructor(t,n){super(n),this.code=t,this.name="CreateEntryError"}}async function Qr(e,t,n,s){const o=await e.connection.request("file_create_request",{path:t,name:n,kind:s});if(!o.ok){const r=o.error??"";throw new Uy(r,zy[r]??r??"Failed to create")}return o.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const Wy=28,lt="application/x-pi-studio-path",kn="Files";function Hy(){const e=q(k=>k.client),t=le(k=>k.rootPath),n=le(k=>k.expanded),s=le(k=>k.setRoot),o=le(k=>k.toggle),r=le(k=>k.draft),i=le(k=>k.startDraft),a=le(k=>k.cancelDraft),d=le(k=>k.renaming),u=le(k=>k.cancelRename),p=le(k=>k.selected),g=le(k=>k.setSelected),_=P(k=>k.activeWorkspaceCwd),h=ot(),b=P(k=>k.tabs.find(C=>C.id===k.activeTabId)),m=_e(k=>k.changes),x=_e(k=>k.ignored),{upload:y}=Xr(),S=D(k=>k.openFileMenu),T=st(),[j,W]=w.useState(null),[G,ie]=w.useState(null),O=w.useRef(null),Q=w.useRef(null),he=w.useRef(null),Y=w.useRef(null),we=(b==null?void 0:b.kind)==="file"||(b==null?void 0:b.kind)==="molecule"?b.data.path:null,A=p?p.isDirectory?p.path:Ie(p.path):t,$=w.useRef(null);w.useEffect(()=>{if(!e)return;const k=Oe(_||"~",h);k.startsWith("~")||$.current!==k&&($.current=k,s(k))},[e,_,h,s]);const ve=H_(n);G_(n);const Pt=w.useMemo(()=>ty(t,n,ve,r,d),[t,n,ve,r,d]),ci=w.useMemo(()=>ry(t,m),[t,m]),li=w.useMemo(()=>ay(t,x),[t,x]),ls=xi({count:Pt.length,getScrollElement:()=>Q.current,estimateSize:()=>Wy,overscan:12,getItemKey:k=>{const C=Pt[k];return C?Q_(C):k}});function fn(k){rs(k,_||"~")}function di(k,C,H){H.dataTransfer.setData(lt,k),C||H.dataTransfer.setData(jt.path,k),H.dataTransfer.setData(ss,om(k,C)),H.dataTransfer.effectAllowed="copyMove",he.current=k}function ui(){he.current=null}function pn(){ie(null),Y.current&&(clearTimeout(Y.current.timer),Y.current=null)}function ds(k){var H;if(((H=Y.current)==null?void 0:H.path)===k.path||(Y.current&&clearTimeout(Y.current.timer),Y.current=null,k.kind!=="directory"||k.expanded))return;const C=window.setTimeout(()=>o(k.path),700);Y.current={path:k.path,timer:C}}async function us(k,C){if(!e)throw new Error("Not connected.");const H=await Z_(e,k,C),L=Ie(H);await T.invalidateQueries({queryKey:He.explorer(Ie(k))}),await T.invalidateQueries({queryKey:He.explorer(L)}),le.getState().repathAfterMove(k,H,L);const X=P.getState().tabs.filter(ge=>{if(ge.kind!=="file"&&ge.kind!=="diff"&&ge.kind!=="molecule")return!1;const Mt=ge.data.path;return Mt===k||((Mt==null?void 0:Mt.startsWith(`${k}/`))??!1)}),be=X.some(ge=>(ge.kind==="file"||ge.kind==="molecule")&&ge.data.path===k),ce=X.filter(ge=>ge.kind==="diff").length;return P.getState().closeByPathPrefix(k),be&&fn(H),{destination:H,closedDiffs:ce}}async function fi(k,C){const H=ao(k,C,t);if(!H||!e)return;const L=k.split("/").pop()??k;W({text:`Moving ${L}…`,error:!1});try{const{destination:X,closedDiffs:be}=await us(k,H.destination);W({text:lo(`Moved to ${Ie(X).split("/").pop()||"/"}`,be),error:!1})}catch(X){W({text:X instanceof Error?X.message:"Failed to move",error:!0})}}async function pi(k,C){const H=(r==null?void 0:r.kind)??"file";if(a(),!!e)try{const L=await Qr(e,k,C,H);await T.invalidateQueries({queryKey:He.explorer(k)}),W({text:`Created ${L}`,error:!1}),H==="file"&&fn(L)}catch(L){W({text:L instanceof Error?L.message:"Failed to create",error:!0})}}async function hi(k,C){if(u(),!e)return;const H=Jr(Ie(k),C);W({text:`Renaming ${k.split("/").pop()}…`,error:!1});try{const{destination:L,closedDiffs:X}=await us(k,H);W({text:lo(`Renamed to ${L.split("/").pop()}`,X),error:!1})}catch(L){W({text:L instanceof Error?L.message:"Failed to rename",error:!0})}}async function fs(k,C){var be;if(!C.length||!k)return;const H=(be=ve.get(k))==null?void 0:be.listing,L=new Set((H==null?void 0:H.entries.map(ce=>ce.name))??[]),X=C.filter(ce=>L.has(ce.name));if(X.length>0){const ce=X.map(ge=>ge.name).join(", ");if(!window.confirm(`Overwrite ${X.length>1?"these files":"this file"}? ${ce}`))return}W({text:`Uploading ${C.length} file${C.length>1?"s":""}…`,error:!1});try{for(const ce of C)await y(k,ce);W({text:`Uploaded ${C.length} file${C.length>1?"s":""}`,error:!1})}catch(ce){W({text:`Upload failed: ${ce instanceof Error?ce.message:"unknown"}`,error:!0})}}function ps(k,C){if(k.preventDefault(),k.dataTransfer.types.includes(lt)){const X=k.dataTransfer.getData(lt)||he.current;pn(),X&&fi(X,C??{kind:"directory",path:t});return}if(pn(),!k.dataTransfer.types.includes(kn))return;const H=C?co(C,t):t;if(!H)return;const L=Array.from(k.dataTransfer.files);L.length&&fs(H,L)}function gi(k){const C=k.dataTransfer.types.includes(lt);!C&&!k.dataTransfer.types.includes(kn)||(k.preventDefault(),k.dataTransfer.dropEffect=C?"move":"copy")}return e?c.jsxs("div",{className:F.container,onDragOver:gi,onDragLeave:k=>{k.currentTarget.contains(k.relatedTarget)||pn()},onDrop:k=>ps(k),children:[c.jsxs("div",{className:F.header,children:[c.jsx("button",{type:"button",className:F.uploadButton,onClick:()=>i(A,"file"),disabled:!t,title:p?`New file in ${A.split("/").pop()||"/"}`:"New file in workspace root",children:c.jsx(Tn,{size:14})}),c.jsx("button",{type:"button",className:F.uploadButton,onClick:()=>i(A,"directory"),disabled:!t,title:p?`New folder in ${A.split("/").pop()||"/"}`:"New folder in workspace root",children:c.jsx(Kt,{size:14})}),c.jsxs("button",{type:"button",className:F.uploadButton,onClick:()=>{var k;return(k=O.current)==null?void 0:k.click()},disabled:!t,title:"Upload files to the workspace root",children:[c.jsx(Fi,{size:14}),c.jsx("span",{children:"Upload"})]}),c.jsx("input",{ref:O,type:"file",multiple:!0,className:F.hiddenInput,onChange:k=>{fs(t,Array.from(k.target.files??[])),k.target.value=""}})]}),j&&c.jsx("div",{className:j.error?F.statusError:F.status,children:j.text}),c.jsxs("div",{className:F.list,ref:Q,onContextMenu:k=>{k.preventDefault(),S(t,!0,k.clientX,k.clientY,!0)},children:[Pt.length===0&&c.jsx(De,{children:"No files loaded"}),c.jsx("div",{style:{position:"relative",height:ls.getTotalSize()},children:ls.getVirtualItems().map(k=>{const C=Pt[k.index];if(!C)return null;const H=C.path===t&&C.kind==="directory";return c.jsx("div",{"data-index":k.index,style:{position:"absolute",top:0,left:0,width:"100%",height:k.size,transform:`translateY(${k.start}px)`},onDragEnter:L=>{if(L.dataTransfer.types.includes(lt)){const be=he.current;if(!be)return;const ce=ao(be,C,t);ie(ce?C.path:null),ds(C);return}if(!L.dataTransfer.types.includes(kn))return;const X=co(C,t);ie(X?C.path:null),ds(C)},onDrop:L=>{L.stopPropagation(),ps(L,C)},children:c.jsx(Oy,{row:C,active:(C.kind==="file"||C.kind==="directory")&&C.path===we,selected:(C.kind==="file"||C.kind==="directory")&&C.path===(p==null?void 0:p.path),gitStatus:!H&&(C.kind==="file"||C.kind==="directory")?ci(C.path):void 0,hidden:!H&&(C.kind==="file"||C.kind==="directory")&&(C.name.startsWith(".")||li(C.path)),isRoot:H,onToggle:L=>{g({path:L,isDirectory:!0}),o(L)},onOpenFile:L=>{g({path:L,isDirectory:!1}),fn(L)},onContextMenu:(L,X,be,ce)=>S(L,X,be,ce,H),onSubmitDraft:(L,X)=>void pi(L,X),onCancelDraft:a,onSubmitRename:(L,X)=>void hi(L,X),onCancelRename:u,onDragStartRow:di,onDragEndRow:ui,dropTarget:(C.kind==="file"||C.kind==="directory")&&C.path===G})},k.key)})})]}),c.jsx(Fy,{})]}):c.jsx(De,{children:"Connect to browse files"})}const Vy="_list_1n3q6_1",Ky="_summary_1n3q6_4",Gy="_item_1n3q6_11",Yy="_badge_1n3q6_23",Xy="_added_1n3q6_30",Jy="_modified_1n3q6_34",Zy="_deleted_1n3q6_38",Qy="_name_1n3q6_42",Ye={list:Vy,summary:Ky,item:Gy,badge:Yy,added:Xy,modified:Jy,deleted:Zy,name:Qy},ew={added:"A",modified:"M",deleted:"D"};function tw(){const t=P(r=>r.activeWorkspaceCwd)||"~",n=_e(r=>r.changes),s=P(r=>r.open);function o(r,i){s({id:ee.diff(r,i),kind:"diff",label:r.split("/").pop()||r,closable:!0,data:{path:r,staged:i},workspaceCwd:t})}return n.length===0?c.jsx(De,{children:"No changes detected"}):c.jsxs("div",{className:Ye.list,children:[c.jsxs("div",{className:Ye.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((r,i)=>c.jsxs("div",{className:Ye.item,onClick:()=>o(r.path,r.staged),children:[c.jsx("span",{className:U(Ye.badge,Ye[r.status]),children:ew[r.status]}),c.jsx("span",{className:Ye.name,children:r.path})]},`${r.path}-${r.staged}-${i}`))]})}const nw="_tabBar_1tvri_1",sw="_tabBtn_1tvri_7",ow="_active_1tvri_23",rw="_refreshBtn_1tvri_27",iw="_content_1tvri_31",Be={tabBar:nw,tabBtn:sw,active:ow,refreshBtn:rw,content:iw};function aw(){const e=D(a=>a.rightSidebarTab),t=D(a=>a.setRightSidebarTab),s=P(a=>a.activeWorkspaceCwd)||"~",o=q(a=>a.client),r=st();function i(){r.invalidateQueries({queryKey:["explorer"]}),o&&s&&o.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return c.jsxs(Oo,{children:[c.jsxs("div",{className:Be.tabBar,children:[c.jsxs("button",{type:"button",className:U(Be.tabBtn,e==="files"&&Be.active),onClick:()=>t("files"),children:[c.jsx(Ve,{size:13}),"Files"]}),c.jsxs("button",{type:"button",className:U(Be.tabBtn,e==="changes"&&Be.active),onClick:()=>t("changes"),children:[c.jsx(To,{size:13}),"Changes"]}),c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:Be.refreshBtn,onClick:i,children:c.jsx(zi,{size:13})})]}),c.jsx("div",{className:Be.content,children:e==="files"?c.jsx(Hy,{}):c.jsx(tw,{})})]})}function cw(e,t){var r;const{bySession:n,setStats:s}=is.getState(),o=(r=n[e])==null?void 0:r.contextWindow;s(e,{contextTokens:t,contextPercent:o?t*100/o:void 0,contextEstimated:!0})}const is=ae()(e=>({bySession:{},setStats(t,n){e(s=>({bySession:{...s.bySession,[t]:{...s.bySession[t],...n}}}))},clear(t){e(n=>{const{[t]:s,...o}=n.bySession;return{bySession:o}})}})),lw=12e3;function dw(e,t){return e==="running"&&t!=="running"}function fo(e,t){var s,o,r,i,a,d;const n={};((s=t.contextUsage)==null?void 0:s.tokens)!=null&&(n.contextTokens=t.contextUsage.tokens,n.contextEstimated=!1),((o=t.contextUsage)==null?void 0:o.contextWindow)!==void 0&&(n.contextWindow=t.contextUsage.contextWindow),((r=t.contextUsage)==null?void 0:r.percent)!=null&&(n.contextPercent=t.contextUsage.percent),((i=t.tokens)==null?void 0:i.total)!==void 0&&(n.totalTokens=t.tokens.total),((a=t.tokens)==null?void 0:a.input)!==void 0&&(n.inputTokens=t.tokens.input),((d=t.tokens)==null?void 0:d.output)!==void 0&&(n.outputTokens=t.tokens.output),t.cost!==void 0&&(n.cost=t.cost),t.model!==void 0&&(n.model=t.model,R.getState().setModel(e,t.model)),is.getState().setStats(e,n)}function uw(e){const t=q(a=>a.client),n=q(a=>a.status),s=R(a=>{var d;return e?((d=a.sessions[e])==null?void 0:d.agentId)??null:null}),o=R(a=>{var d;return e?(d=a.sessions[e])==null?void 0:d.status:void 0}),r=w.useRef(!1),i=w.useRef(void 0);w.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let a=!1;const d=async()=>{if(!r.current){r.current=!0;try{const p=await t.agent(s).sessionStats();a||fo(e,p)}catch{}finally{r.current=!1}}};d();const u=setInterval(()=>void d(),lw);return()=>{a=!0,clearInterval(u)}},[n,t,e,s]),w.useEffect(()=>{const a=i.current;i.current=o,dw(a,o)&&(n!=="open"||!t||!e||!s||(r.current=!1,t.agent(s).sessionStats().then(d=>fo(e,d)).catch(()=>{})))},[o,n,t,e,s])}function fw(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 pw(e){const t=q(r=>r.client),n=_e(r=>r.applyProjection),s=_e(r=>r.setSubscribedCwd),o=w.useRef(t);return o.current=t,w.useEffect(()=>{if(!t||!e)return;let r=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const i=t.connection.onSessionMessage(a=>{if(r)return;const d=a;fw(d)&&d.cwd===e&&n(d.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{r=!0,i(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const r=o.current;!r||!e||r.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const as="--";function yt(e){return e===void 0?as:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function hw(e){return e==null?as:e>0&&e<1?"<1%":`${Math.round(e)}%`}function gw(e){if(e===void 0)return as;const t=e<1?4:2;return`$${e.toFixed(t)}`}function mw(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function _w(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}function ei(e){return e.some(t=>t.kind==="compaction"&&t.phase==="started")}function yw(e){return e.find(t=>t.kind==="compaction"&&t.phase==="started")}function po(e){return e<1e3?String(e):e<1e6?`${+(e/1e3).toFixed(1)}k`:`${+(e/1e6).toFixed(1)}M`}function ww(e){let t;if(e.reason==="manual"?t="manual":e.reason==="threshold"?t="auto · threshold":e.reason==="overflow"&&(t="auto · overflow"),!!t)return e.willRetry?`${t} · retrying turn`:t}function vw(e){const t=ww(e),n=t?` (${t})`:"";switch(e.phase){case"started":return`Compacting context…${n}`;case"completed":{if(e.tokensBefore===void 0)return`Context compacted${n}`;const s=po(e.tokensBefore);return`Context compacted · ${e.estimatedTokensAfter===void 0?`${s} before`:`${s} → ~${po(e.estimatedTokensAfter)}`}${n}`}case"failed":return`Compaction failed${e.error?`: ${e.error}`:""}${n}`;case"canceled":return`Compaction canceled${n}`}}const xn=new Set;function In(e,t){const{[t]:n,...s}=e;return s}const Ht=ae()((e,t)=>({pendingBySession:{},lastErrorBySession:{},async compactSession(n,s){var d;const{client:o,status:r,serverInfo:i}=q.getState();if(!o||r!=="open")return{ok:!1,reason:"disconnected"};const a=R.getState().sessions[n];if(!(a!=null&&a.agentId))return{ok:!1,reason:"no-agent"};if(a.status==="running")return{ok:!1,reason:"running"};if(t().pendingBySession[n]||ei(a.timeline.rows))return{ok:!1,reason:"compacting"};e(u=>({pendingBySession:{...u.pendingBySession,[n]:!0},lastErrorBySession:In(u.lastErrorBySession,n)}));try{const u=await o.agent(a.agentId).compact(s);return!((d=i==null?void 0:i.features)!=null&&d.compactionEvents)&&u.estimatedTokensAfter!=null&&cw(n,u.estimatedTokensAfter),{ok:!0}}catch(u){if(xn.has(n))return{ok:!1,reason:"canceled"};const p=u instanceof Error?u.message:String(u);return e(g=>({lastErrorBySession:{...g.lastErrorBySession,[n]:p}})),{ok:!1,reason:"failed",message:p}}finally{xn.delete(n),e(u=>({pendingBySession:In(u.pendingBySession,n)}))}},async cancelCompaction(n){var r;const s=q.getState().client,o=(r=R.getState().sessions[n])==null?void 0:r.agentId;!s||!o||(t().pendingBySession[n]&&xn.add(n),await s.agent(o).interrupt())},clearError(n){e(s=>({lastErrorBySession:In(s.lastErrorBySession,n)}))}}));function bw(e){const t=R(s=>{var o;return e?ei(((o=s.sessions[e])==null?void 0:o.timeline.rows)??[]):!1}),n=Ht(s=>e?s.pendingBySession[e]===!0:!1);return t||n}const Sw=.7,kw=.9;function ti(e,t){if(t)return{kind:"compacting"};const n=(e==null?void 0:e.contextEstimated)===!0;return(e==null?void 0:e.contextTokens)!==void 0&&e.contextWindow?{kind:"value",fraction:e.contextTokens/e.contextWindow,estimated:n}:(e==null?void 0:e.contextPercent)!==void 0?{kind:"value",fraction:e.contextPercent/100,estimated:n}:{kind:"unknown"}}function xw(e){return e>=kw?"danger":e>=Sw?"warning":"normal"}function ni(e){return e.kind==="value"?Math.min(Math.max(e.fraction,0),1):0}function cs(e){switch(e.kind){case"compacting":return"Compacting…";case"unknown":return"—";case"value":return`${e.estimated?"~":""}${hw(e.fraction*100)}`}}function Ln(e,t){if(t.kind==="compacting")return"Compacting context…";if(t.kind==="unknown")return"Context usage unknown";const n=yt(e==null?void 0:e.contextWindow),s=(e==null?void 0:e.contextTokens)!==void 0&&e.contextWindow?yt(e.contextTokens):void 0;return s===void 0?`${cs(t)} of ${n} tokens`:t.estimated?`≈ ${s} / ${n} tokens (estimate)`:`${s} / ${n} tokens`}function Iw(e){return e.kind==="value"?Math.round(ni(e)*100):void 0}const Tw="_meter_mqbjo_1",Ew="_meterWide_mqbjo_7",Cw="_trackWide_mqbjo_12",Rw="_track_mqbjo_12",Aw="_trackUnknown_mqbjo_27",jw="_fill_mqbjo_32",qw="_fillWarning_mqbjo_39",Pw="_fillDanger_mqbjo_43",Mw="_fillEstimated_mqbjo_48",Nw="_sweep_mqbjo_58",Dw="_label_mqbjo_90",me={meter:Tw,meterWide:Ew,trackWide:Cw,track:Rw,trackUnknown:Aw,fill:jw,fillWarning:qw,fillDanger:Pw,fillEstimated:Mw,sweep:Nw,label:Dw};function ho({stats:e,compacting:t,wide:n=!1}){const s=ti(e,t),o=cs(s),r=Iw(s),i=s.kind==="value"&&s.estimated,a=s.kind==="value"?xw(s.fraction):"normal";return c.jsxs("span",{className:U(me.meter,n&&me.meterWide),title:Ln(e,s),children:[c.jsxs("span",{role:"meter","aria-label":"Context usage","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":r,"aria-valuetext":s.kind==="value"&&!i?void 0:o,className:U(me.track,n&&me.trackWide,s.kind==="unknown"&&me.trackUnknown,s.kind==="compacting"&&me.trackCompacting),children:[s.kind==="value"&&c.jsx("span",{className:U(me.fill,a==="warning"&&me.fillWarning,a==="danger"&&me.fillDanger,i&&me.fillEstimated),style:{width:`${ni(s)*100}%`}}),s.kind==="compacting"&&c.jsx("span",{className:me.sweep})]}),c.jsx("span",{className:me.label,children:o})]})}function $w(e){return e.compacting?{kind:"cancel"}:e.connected?e.hasAgent?e.running?{kind:"disabled",note:"Wait for the agent to finish"}:{kind:"compact"}:{kind:"disabled",note:"Nothing to compact yet"}:{kind:"disabled",note:"Not connected"}}const Ow="_trigger_fxl9k_2",Lw="_body_fxl9k_19",Bw="_heading_fxl9k_25",Fw="_detail_fxl9k_29",zw="_note_fxl9k_30",Uw="_field_fxl9k_35",Ww="_fieldLabel_fxl9k_41",Hw="_error_fxl9k_46",Vw="_actions_fxl9k_51",Ae={trigger:Ow,body:Lw,heading:Bw,detail:Fw,note:zw,field:Uw,fieldLabel:Ww,error:Hw,actions:Vw};function Kw({sessionId:e,stats:t}){const[n,s]=w.useState(""),o=bw(e),r=q(x=>x.status==="open"),i=R(x=>{var y;return((y=x.sessions[e])==null?void 0:y.agentId)??null}),a=R(x=>{var y;return((y=x.sessions[e])==null?void 0:y.status)==="running"}),d=R(x=>{var y;return yw(((y=x.sessions[e])==null?void 0:y.timeline.rows)??[])}),u=Ht(x=>x.lastErrorBySession[e]),p=Ht(x=>x.compactSession),g=Ht(x=>x.cancelCompaction),_=ti(t,o),h=$w({compacting:o,running:a,hasAgent:i!==null,connected:r}),b=h.kind==="cancel"?d?vw(d):"Compacting…":h.note;async function m(){(await p(e,n.trim()||void 0)).ok&&s("")}return c.jsxs(vs.Root,{children:[c.jsx(vs.Trigger,{asChild:!0,children:c.jsx("button",{type:"button",className:Ae.trigger,"aria-label":"Context usage — open compaction options",children:c.jsx(ho,{stats:t,compacting:o})})}),c.jsx(Sl,{width:320,"aria-label":"Compact context",children:c.jsxs("div",{className:Ae.body,children:[c.jsx("div",{className:Ae.heading,children:"Context"}),c.jsx(ho,{stats:t,compacting:o,wide:!0}),c.jsx("div",{className:Ae.detail,children:_.kind==="value"?`${Ln(t,_)} (${cs(_)})`:Ln(t,_)}),c.jsxs("label",{className:Ae.field,children:[c.jsx("span",{className:Ae.fieldLabel,children:"Instructions (optional)"}),c.jsx(el,{value:n,rows:3,placeholder:"e.g. focus on the auth refactor",disabled:o,onChange:x=>s(x.target.value)})]}),u&&!o&&c.jsx("div",{role:"alert",className:Ae.error,children:u}),b&&c.jsx("div",{className:Ae.note,children:b}),c.jsx("div",{className:Ae.actions,children:h.kind==="cancel"?c.jsx(se,{variant:"outline",size:"sm",onClick:()=>void g(e),children:"Cancel"}):c.jsx(se,{variant:"default",size:"sm",disabled:h.kind==="disabled",onClick:()=>void m(),children:"Compact now"})})]})})]})}const Gw="_statusBar_t655h_1",Yw="_segmentGroup_t655h_16",Xw="_chevron_t655h_20",Jw="_segment_t655h_16",Zw="_icon_t655h_33",Qw="_text_t655h_39",Xe={statusBar:Gw,segmentGroup:Yw,chevron:Xw,segment:Jw,icon:Zw,text:Qw};function ev(){const e=R(h=>h.activeSessionId),t=R(h=>e?h.sessions[e]:void 0),n=ot(),s=P(h=>h.activeWorkspaceCwd);pw(s||"");const o=_e(h=>h.available),r=_e(h=>h.branch),i=_e(h=>h.ahead),a=_e(h=>h.behind),d=_e(h=>h.detached),u=_e(h=>h.conflictCount),p=_e(h=>h.changes.length),g=is(h=>e?h.bySession[e]:void 0);uw(e);const _=[];if(t){const h=mw(t.cwd,n);_.push({key:"cwd",icon:c.jsx(Ve,{size:13}),text:h,title:t.cwd})}if(o){const h=_w(i,a),b=[d?"(detached)":r??"?"];h&&b.push(h),p>0&&b.push(`●${p}`),u>0&&b.push(`⚠${u}`),_.push({key:"branch",icon:c.jsx(Ui,{size:13}),text:b.join(" ")})}return t&&(_.push({key:"context",icon:c.jsx(Wi,{size:13}),content:e?c.jsx(Kw,{sessionId:e,stats:g}):null}),_.push({key:"tokens",icon:c.jsx(Hi,{size:13}),text:yt(g==null?void 0:g.totalTokens),title:`in ${yt(g==null?void 0:g.inputTokens)} / out ${yt(g==null?void 0:g.outputTokens)}`}),_.push({key:"cost",icon:c.jsx(Vi,{size:13}),text:gw(g==null?void 0:g.cost)})),c.jsx("div",{className:Xe.statusBar,children:_.map((h,b)=>c.jsxs("span",{className:Xe.segmentGroup,children:[b>0&&c.jsx(zn,{size:12,className:Xe.chevron,"aria-hidden":"true"}),c.jsxs("span",{className:Xe.segment,title:h.title,children:[c.jsx("span",{className:Xe.icon,children:h.icon}),h.content??c.jsx("span",{className:Xe.text,children:h.text})]})]},h.key))})}function tv(e,t){const{order:n,sessions:s}=R.getState(),r=ns(n,s,t).find(i=>i.cwd===e);if(r!=null&&r.sessions[0]){const i=r.sessions[0].id;R.getState().activate(i);const a=R.getState().sessions[i];P.getState().open({id:ee.chat(i),kind:"chat",label:(a==null?void 0:a.title)??"New chat",closable:!0,data:{sessionId:i},workspaceCwd:e})}else At(e);D.getState().setCwd(e)}const nv="_pathRow_1mu84_1",sv="_pathInput_1mu84_9",ov="_createRow_1mu84_13",rv="_createInput_1mu84_21",iv="_createError_1mu84_25",av="_list_1mu84_30",cv="_item_1mu84_37",lv="_name_1mu84_49",Me={pathRow:nv,pathInput:sv,createRow:ov,createInput:rv,createError:iv,list:av,item:cv,name:lv};function dv(){const e=D($=>$.cwdPickerOpen),t=D($=>$.closeCwdPicker),n=P($=>$.activeWorkspaceCwd),s=D($=>$.cwd),o=q($=>$.client),r=ot(),[i,a]=w.useState("/"),[d,u]=w.useState("/"),[p,g]=w.useState(!1),[_,h]=w.useState(""),[b,m]=w.useState(null),[x,y]=w.useState(!1),S=st();w.useEffect(()=>{if(!e)return;const $=Oe(n||s||"~",r);a($),u($),O()},[e,o,n,s,r]);const{data:T,isLoading:j,isError:W,error:G}=W_(i,e&&!!o),ie=((T==null?void 0:T.entries)??[]).filter($=>$.kind==="directory");function O(){g(!1),h(""),m(null)}function Q($){const ve=$.length>1?$.replace(/\/+$/,"")||"/":$;a(ve),u(ve),O()}function he(){Q(i.split("/").slice(0,-1).join("/")||"/")}function Y(){Q(d.trim())}async function we(){const $=_.trim();if(!(!$||!o||x)){y(!0),m(null);try{const ve=await Qr(o,i,$,"directory");await S.invalidateQueries({queryKey:He.explorer(i)}),Q(ve)}catch(ve){m(ve instanceof Error?ve.message:"Failed to create folder")}finally{y(!1)}}}function A(){tv(i,r),t()}return c.jsxs(Rn,{open:e,onOpenChange:$=>!$&&t(),title:"Open Workspace",footer:c.jsxs(c.Fragment,{children:[c.jsx(Lo,{asChild:!0,children:c.jsx(se,{size:"sm",variant:"secondary",children:"Cancel"})}),c.jsx(se,{size:"sm",onClick:A,children:"Open this folder"})]}),children:[c.jsxs("div",{className:Me.pathRow,children:[c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:he,children:c.jsx(Ki,{size:13})}),c.jsx(Yt,{className:Me.pathInput,value:d,onChange:$=>u($.target.value),onKeyDown:$=>{$.key==="Enter"&&($.preventDefault(),Y())}}),c.jsx(se,{size:"xs",onClick:Y,children:"Go"}),c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!o||W||p,onClick:()=>{g(!0),h(""),m(null)},children:c.jsx(Kt,{size:13})})]}),p&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:Me.createRow,children:[c.jsx(Ve,{size:14}),c.jsx(Yt,{className:Me.createInput,autoFocus:!0,placeholder:"New folder name",value:_,onChange:$=>h($.target.value),onKeyDown:$=>{$.key==="Enter"?($.preventDefault(),we()):$.key==="Escape"&&($.preventDefault(),$.stopPropagation(),O())}}),c.jsx(se,{size:"xs",loading:x,disabled:!_.trim()||x,onClick:()=>void we(),children:"Create"}),c.jsx(se,{size:"xs",variant:"secondary",onClick:O,children:"Cancel"})]}),b&&c.jsx("div",{className:Me.createError,children:b})]}),c.jsx("div",{className:Me.list,children:j?c.jsx(De,{children:"Loading..."}):W?c.jsxs(De,{children:["Error: ",G instanceof Error?G.message:"unknown error"]}):ie.length===0?c.jsx(De,{children:"No subdirectories"}):ie.map($=>c.jsxs("div",{className:Me.item,onClick:()=>Q(i==="/"?`/${$.name}`:`${i}/${$.name}`),children:[c.jsx(Ve,{size:14}),c.jsx("span",{className:Me.name,children:$.name})]},$.name))})]})}const uv="_shell_570m8_1",fv="_main_570m8_7",pv="_sidebarLeft_570m8_13",hv="_leftHandle_570m8_25",gv="_center_570m8_28",mv="_sidebarRight_570m8_35",_v="_rightHandle_570m8_43",Fe={shell:uv,main:fv,sidebarLeft:pv,leftHandle:hv,center:gv,sidebarRight:mv,rightHandle:_v};function yv(){const e=D(i=>i.leftSidebarCollapsed),t=D(i=>i.rightSidebarCollapsed),n=D(i=>i.leftSidebarWidth),s=D(i=>i.rightSidebarWidth),o=D(i=>i.resizeLeftSidebar),r=D(i=>i.resizeRightSidebar);return c.jsxs("div",{className:Fe.shell,children:[c.jsx(dh,{}),c.jsxs("div",{className:Fe.main,children:[!e&&c.jsxs("aside",{className:Fe.sidebarLeft,style:{width:n},children:[c.jsx(im,{}),c.jsx(ws,{side:"left",className:Fe.leftHandle,onResize:o})]}),c.jsx("div",{className:Fe.center,children:c.jsx(F_,{})}),!t&&c.jsxs("aside",{className:Fe.sidebarRight,style:{width:s},children:[c.jsx(ws,{side:"right",className:Fe.rightHandle,onResize:r}),c.jsx(aw,{})]})]}),c.jsx(ev,{}),c.jsx(dv,{}),c.jsx(Ml,{}),c.jsx(Il,{})]})}function wv(){const e=w.useRef(!1);w.useEffect(()=>{if(e.current)return;if(e.current=!0,window.location.hash.includes("offer=")){const d=window.location.href;D.getState().setHost(d),q.getState().connect({url:d});return}const t=new URLSearchParams(window.location.search),n=t.get("host"),s=t.get("pair"),o=t.get("password"),r=t.get("cwd"),i=t.get("connect")==="1",a=D.getState();if(s?a.setHost(s):n&&a.setHost(n),o&&a.setPassword(o),r&&a.setCwd(r),s)q.getState().connect({url:s});else if(i){const{host:d,password:u}=D.getState();q.getState().connect({url:d,password:u||void 0})}},[])}const vv=256;function go(e){const t=e.startsWith("#")?e.slice(1):e,n=new URLSearchParams(t).get("agent");if(!(!n||n.length>vv))return n}function bv(e){const t=e.indexOf("#");if(t===-1)return e;const n=e.slice(0,t),s=e.slice(t+1).split("&").filter(o=>o!==""&&new URLSearchParams(o).keys().next().value!=="agent");return s.length===0?n:`${n}#${s.join("&")}`}function Sv(e){const t=e.consume();if(!t)return;const n=e.findByAgentId(t);n?e.select(n):e.notifyNotFound(t),e.replaceUrl()}const wt=ae((e,t)=>({pendingAgentId:void 0,restored:!1,set(n){e({pendingAgentId:n})},consume(){const n=t().pendingAgentId;return e({pendingAgentId:void 0}),n},markRestored(){e({restored:!0})}}));function si(){Sv({consume:()=>wt.getState().consume(),findByAgentId:e=>R.getState().findByAgentId(e),select(e){var t;R.getState().activate(e.id),e.cwd&&D.getState().setCwd(e.cwd),St(e,((t=q.getState().serverInfo)==null?void 0:t.homeDir)??null)},notifyNotFound(e){Ce.getState().show(`Agent not found: ${e}`,{variant:"warning"})},replaceUrl(){window.history.replaceState(null,"",bv(window.location.href))}})}function kv(){w.useEffect(()=>{const e=go(window.location.hash);e&&wt.getState().set(e);function t(){const n=go(window.location.hash);n&&(wt.getState().set(n),q.getState().status==="open"&&wt.getState().restored&&si())}return window.addEventListener("hashchange",t),()=>window.removeEventListener("hashchange",t)},[])}function xv(){const e=q(n=>n.status),t=q(n=>n.client);w.useEffect(()=>{if(e!=="open"||!t){We.getState().reset();return}return We.getState().hydrate(),t.onViewerSettingsUpdate(n=>{We.getState().applyUpdate(n)})},[e,t])}const mo="pi-studio-agent-todos-ui";function Iv(e){if(!e)return new Set;try{const t=JSON.parse(e);if(!t||typeof t!="object")return new Set;const{version:n,collapsed:s}=t;return n!==1||!Array.isArray(s)?new Set:s.every(o=>typeof o=="string")?new Set(s):new Set}catch{return new Set}}function Tv(e){const t=[...e];return JSON.stringify({version:1,collapsed:t.slice(-500)})}const Ev=250;function Cv(e){let t;const n=async o=>{const r=e.getClient();if(r!=null&&r.hasAgentTodosCapability())try{const i=await r.listAgentTodos(o);s.getState().applyUpdate(i)}catch{}},s=ae()((o,r)=>({todos:Rs,tracked:{},collapsed:Iv(e.kv.get(mo)),track(i){const a=(r().tracked[i]??0)===0;o(u=>({tracked:{...u.tracked,[i]:(u.tracked[i]??0)+1}})),a&&n(i);let d=!1;return()=>{d||(d=!0,o(u=>{const{[i]:p=0,...g}=u.tracked;return{tracked:p>1?{...g,[i]:p-1}:g}}))}},async refetchTracked(){o(i=>({todos:gp(i.todos)})),await Promise.all(Object.keys(r().tracked).map(n))},applyUpdate(i){o(a=>{const d=hp(a.todos,i);return d===a.todos?a:{todos:d}})},clear(){o({todos:Rs})},setCollapsed(i,a){const d=new Set(r().collapsed);d.delete(i),a&&d.add(i),o({collapsed:d}),clearTimeout(t),t=setTimeout(()=>{e.kv.set(mo,Tv(r().collapsed))},Ev)}}));return s}const tn=Cv({getClient:()=>q.getState().client,kv:rn});function Bb(e){return tn(t=>e?mp(t.todos,e):void 0)}function Fb(e){return tn(t=>e?t.collapsed.has(e):!1)}function Rv(){const e=q(n=>n.status),t=q(n=>n.client);w.useEffect(()=>{if(e!=="open"||!t)return;const n=tn.getState();if(!t.hasAgentTodosCapability()){n.clear();return}const s=t.onAgentTodosUpdate(o=>{tn.getState().applyUpdate(o)});return n.refetchTracked(),s},[e,t])}const oi="pi-studio-pane-layout",Av=250;function jv(){const e=new Map,t={workspaces:e,activeWorkspaceCwd:null},n=rn.get(oi);if(!n)return t;let s;try{s=JSON.parse(n)}catch{return t}if(typeof s!="object"||s===null)return t;const o=s;if(o.version!==wr||typeof o.workspaces!="object"||o.workspaces===null)return t;for(const[i,a]of Object.entries(o.workspaces)){const d=qv(a);d&&e.set(i,d)}const r=o.activeWorkspaceCwd;return{workspaces:e,activeWorkspaceCwd:typeof r=="string"&&e.has(r)?r:null}}function qv(e){if(typeof e!="object"||e===null)return null;const t=e,n=$h(t.tree);if(!n)return null;const s=new Set(fe(n)),o={};for(const[a,d]of _o(t.placement))s.has(d)&&(o[a]=d);const r={};for(const[a,d]of _o(t.activeByPane))s.has(a)&&(r[a]=d);const i=t.activePaneId;return{tree:n,placement:o,activeByPane:r,activePaneId:typeof i=="string"&&s.has(i)?i:null}}function _o(e){return typeof e!="object"||e===null?[]:Object.entries(e).filter(t=>typeof t[1]=="string")}let je=null;function yo(){je==null||je();const e=setTimeout(()=>{je=null,ri()},Av);je=()=>clearTimeout(e)}function Pv(){je==null||je(),je=null,ri()}function ri(){const e=new Map;for(const s of P.getState().tabs){const o=Zt(s);o!==null&&e.set(s.id,o)}const t={};for(const[s,o]of Object.entries(B.getState().layouts)){const r={...o.pendingPlacement};for(const[a,d]of Object.entries(o.placement)){const u=e.get(a);u!==void 0&&(r[u]=d)}const i={...o.pendingActive};for(const[a,d]of Object.entries(o.activeByPane)){const u=e.get(d);u!==void 0&&(i[a]=u)}t[s]={tree:o.tree,placement:r,activeByPane:i,activePaneId:o.focusedPaneId}}const n={version:wr,workspaces:t,activeWorkspaceCwd:P.getState().activeWorkspaceCwd??void 0};rn.set(oi,JSON.stringify(n))}function Mv(){let e=wo(P.getState().tabs);const t=()=>{const r=wo(P.getState().tabs);r!==e&&(e=r,yo())},n=B.subscribe(yo),s=P.subscribe(t),o=R.subscribe(t);return()=>{n(),s(),o()}}function wo(e){return e.map(t=>`${t.id}\0${Zt(t)??""}`).join("")}const Nv=/^diff:(staged|worktree):(.+)$/;function Dv(e){for(const[t,n]of e)for(const s of Object.keys(n.placement)){const o=$v(s,t,Ur);o!==null&&P.getState().open(o)}}function $v(e,t,n){const s=vo(e,"file:");if(s!==null)return{id:ee.file(s),kind:"file",...zt(s),workspaceCwd:t,data:{path:s}};const o=vo(e,"molecule:");if(o!==null)return n("molviewer")?{id:ee.molecule(o),kind:"molecule",...zt(o),workspaceCwd:t,data:{path:o}}:{id:ee.file(o),kind:"file",...zt(o),workspaceCwd:t,data:{path:o}};const r=Nv.exec(e);if(r!==null){const i=r[2],a=r[1]==="staged";return{id:ee.diff(i,a),kind:"diff",...zt(i),workspaceCwd:t,data:{path:i,staged:a}}}return null}function vo(e,t){if(!e.startsWith(t))return null;const n=e.slice(t.length);return n===""?null:n}function zt(e){return{label:e.split("/").pop()||e,closable:!0}}function Ov(e){if(e===null)return()=>{};if(So())return bo(e),()=>{};const t=B.subscribe(()=>{So()&&(t(),bo(e))});return t}function bo(e){if(B.getState().layouts[e]===void 0||!P.getState().tabs.some(n=>n.workspaceCwd===e))return!1;const t=P.getState().activeWorkspaceCwd!==e;return t&&P.getState().switchWorkspace(e),Lv(e),t}function Lv(e){const t=P.getState().tabs.filter(s=>s.workspaceCwd===e&&s.kind==="chat");if(t.length===0)return;const n=R.getState().activeSessionId;t.some(s=>s.data.sessionId===n)||R.getState().activate(t[0].data.sessionId)}function So(){const{sessions:e,terminals:t}=B.getState().hydrationSources;return e&&t}const Bv={workspaces:new Map,activeWorkspaceCwd:null};function Fv(e,t,n){return e==="open"&&t&&!n}function zv(){const e=q(o=>o.status),t=We(o=>o.loaded),n=w.useRef(Bv),s=w.useRef(!1);w.useEffect(()=>{const o=jv();n.current=o,B.getState().installPersistedLayouts(o.workspaces,o.activeWorkspaceCwd);const r=Mv(),i=()=>Pv();return window.addEventListener("pagehide",i),()=>{window.removeEventListener("pagehide",i),r()}},[]),w.useEffect(()=>{if(!Fv(e,t,s.current))return;s.current=!0;const o=n.current;Dv(o.workspaces),Ov(o.activeWorkspaceCwd)},[e,t])}function Uv(e){return typeof e=="object"&&e!==null&&"kind"in e}function Wv(e){const t=[];for(const n of e)Uv(n)&&(n.kind==="other"?n.event&&t.push({event:n.event,timestamp:n.timestamp}):(n.events??[]).forEach((s,o)=>{t.push({event:s,timestamp:o===0?n.timestamp:void 0})}));return t}async function ii(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...Wv(s.items)),!s.hasNewer))return t;const o=s.endCursor;if(typeof o!="string"||o===n)return t;n=o}}function Hv(e){return typeof e.model=="string"}function Vv(e){return typeof e.thinkingLevel=="string"}function Kv(e){return typeof e.title=="string"}function Gv(){const e=q(s=>s.client),t=q(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,Yv(e).then(()=>{wt.getState().markRestored(),si()}))},[t,e]),w.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(Hv(s)){const o=typeof s.modelProvider=="string"?s.modelProvider:void 0;R.getState().setModelByAgentId(s.agentId,s.model,o)}if(Vv(s)&&R.getState().setThinkingLevelByAgentId(s.agentId,s.thinkingLevel),Kv(s)){R.getState().setTitleByAgentId(s.agentId,s.title);const o=R.getState().findByAgentId(s.agentId);o&&P.getState().updateLabel(ee.chat(o.id),s.title)}})},[t,e])}async function Yv(e){try{await Xv(e)}finally{B.getState().markHydrationSource("sessions")}}async function Xv(e){var b;let t=[];try{t=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{t=[]}t.sort((m,x)=>(x.lastActivity??0)-(m.lastActivity??0));const n=R.getState();for(const m of t){if(n.findByAgentId(m.agentId))continue;let x=un;try{const S=await ii(T=>e.agent(m.agentId).timeline.fetch({direction:"after",cursor:T??void 0,limit:200}));x=ur(S)}catch{}const y=x.rows.length===0;n.hydrate({id:`s-${m.agentId.slice(0,12)}`,agentId:m.agentId,title:m.title||(y?"New chat":(b=m.cwd)==null?void 0:b.split("/").pop())||"Restored",status:m.status??"idle",cwd:m.cwd||"~",timeline:x,userMessageCount:x.rows.filter(S=>S.kind==="user").length,model:m.model,modelProvider:m.modelProvider,thinkingLevel:m.thinkingLevel})}const{order:s,sessions:o}=R.getState(),r=s.length>0?o[s[0]??""]:void 0;if(!r)return;const i=rr(),a=Oe(r.cwd||"~",i),d=B.getState().pendingActiveWorkspace??a,u=ns(s,o,i);D.getState().setCollapsedWorkspaces(Zg(u,d));const p=s.find(m=>{var x;return Oe(((x=o[m])==null?void 0:x.cwd)||"~",i)===d});R.getState().activate(p??r.id),D.getState().setCwd(d);const g=Jv(),_=new Set;for(const m of s){const x=o[m];!(x!=null&&x.agentId)||!g.has(`agent:${x.agentId}`)||(St(x,i),_.add(m))}const h=B.getState().layouts[a]!==void 0;!_.has(r.id)&&!h&&St(r,i)}function Jv(){const e=new Set;for(const t of Object.values(B.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("agent:")&&e.add(n);return e}async function Zv(e){try{let t=[];try{t=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{t=[]}if(t.length===0)return;const n=B.getState().layouts,s=Qv(),o=rr(),r=P.getState().open;for(const i of t){if(i.closed)continue;const a=Oe(i.cwd||"~",o);n[a]!==void 0&&!s.has(`terminal:${i.slot}`)||r({id:ee.terminal(i.slot),kind:"terminal",label:i.name,closable:!0,data:{slot:i.slot,cwd:a},workspaceCwd:a})}}finally{B.getState().markHydrationSource("terminals")}}function Qv(){const e=new Set;for(const t of Object.values(B.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("terminal:")&&e.add(n);return e}function eb(){const e=q(s=>s.client),t=q(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,Zv(e))},[t,e])}function tb(e){return typeof e=="object"&&e!==null&&e.type==="terminals_update"&&Array.isArray(e.terminals)}function nb(e){const{tabs:t,updateData:n}=P.getState();for(const s of t){if(s.kind!=="terminal")continue;const o=s.data;o.slot===null||o.exited||e.has(o.slot)||n(s.id,{exited:!0})}}function sb(){const e=q(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;tb(n)&&nb(new Set(n.terminals.map(s=>s.slot)))})},[e])}function ob(e){return typeof e=="object"&&e!==null&&e.type==="agent_timeline_reset"&&typeof e.agentId=="string"}async function rb(e,t){if(!R.getState().findByAgentId(t))return;let s=un;try{const o=await ii(r=>e.agent(t).timeline.fetch({direction:"after",cursor:r??void 0,limit:200}));s=ur(o)}catch{}R.getState().setTimelineByAgentId(t,s)}function ib(){const e=q(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;ob(n)&&rb(e,n.agentId)})},[e])}function ab(){w.useEffect(()=>{function e(t){const n=D.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu(),document.querySelector('[role="dialog"], [role="alertdialog"]')||Ce.getState().dismissTop();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),Ir(P.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:o,tabs:r}=P.getState();if(!o)return;const i=r.find(a=>a.id===o);(i==null?void 0:i.closable)!==!1&&(t.preventDefault(),Qt(o))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function cb(){return wv(),kv(),xv(),Rv(),zv(),Gv(),eb(),sb(),ib(),ab(),null}function lb(){return c.jsxs(Nl,{children:[c.jsx(cb,{}),c.jsx(yv,{})]})}function db(e){return e.managerActive?e.status==="closed"?"reconnect-now":e.status==="open"?e.probeInFlight?"none":"probe":"none":"none"}const ub=5e3;function fb(){let e=!1;function t(){const{status:s,reconnection:o,daemon:r}=q.getState(),i=db({status:s,managerActive:o!==null,probeInFlight:e});if(i==="reconnect-now"){o==null||o.reconnectNow();return}if(i==="probe"){if(!r)return;e=!0,r.ping(ub).catch(()=>{q.getState().daemon===r&&r.close(4e3,"stale-connection-probe")}).finally(()=>{e=!1})}}function n(){document.visibilityState==="visible"&&t()}return document.addEventListener("visibilitychange",n),window.addEventListener("online",t),()=>{document.removeEventListener("visibilitychange",n),window.removeEventListener("online",t)}}const ai=document.getElementById("root");if(!ai)throw new Error("Missing #root element");wi.createRoot(ai).render(c.jsx(w.StrictMode,{children:c.jsx(lb,{})}));fb();export{jr as $,Tb as A,se as B,Uy as C,Rn as D,De as E,Eb as F,qb as G,rs as H,oe as I,Oh as J,uo as K,Db as L,Mp as M,Pp as N,uh as O,Oo as P,R as Q,cw as R,$o as S,vb as T,Ib as U,Nb as V,Vh as W,Ab as X,el as Y,vw as Z,jb as _,Ob as a,Rb as a0,D as a1,Ah as a2,Et as a3,Sb as a4,Nn as a5,bw as a6,Ht as a7,yw as a8,Mb as a9,ee as aa,Or as ab,Pb as ac,Bb as ad,Fb as ae,tn as af,kb as ag,We as b,Lb as c,Ie as d,$b as e,xb as f,Gt as g,Cb as h,Ur as i,bb as j,tb as k,P as l,kr as m,Oe as n,B as o,ot as p,Xr as q,He as r,Kr as s,ro as t,q as u,Qr as v,By as w,Yt as x,qe as y,Mm as z};