@av-pi-studio/web-client 0.0.111 → 0.0.113

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 (231) hide show
  1. package/dist/web/assets/{BinaryFallbackViewer-CSbPntox.js → BinaryFallbackViewer-BH2FpXPq.js} +1 -1
  2. package/dist/web/assets/{ChatPanel-BKlvAZdq.js → ChatPanel-IwIp9TyM.js} +3 -3
  3. package/dist/web/assets/{CodeView-BtHrI9KP.js → CodeView-nWhbxYNo.js} +1 -1
  4. package/dist/web/assets/FilePanel-DuSXRbB3.js +1 -0
  5. package/dist/web/assets/{HtmlViewer-Ct935Cm7.js → HtmlViewer-Bp9FVmsO.js} +1 -1
  6. package/dist/web/assets/{ImageViewer-B3Li_xtG.js → ImageViewer-CGkHIlbr.js} +1 -1
  7. package/dist/web/assets/{MarkdownFileViewer-CaG8FaWX.js → MarkdownFileViewer-Jd18lpAb.js} +1 -1
  8. package/dist/web/assets/{ModelProvidersPanel-DTXVCt2J.js → ModelProvidersPanel-BGnWcyq9.js} +1 -1
  9. package/dist/web/assets/{MoleculeViewerPanel-CsyoepbO.js → MoleculeViewerPanel-gr1xhI3B.js} +1 -1
  10. package/dist/web/assets/PdfViewer-Chvwi-vw.js +1 -0
  11. package/dist/web/assets/PdfViewer-DoOGVn5M.css +1 -0
  12. package/dist/web/assets/{SettingsDialog-C6TA5tSk.js → SettingsDialog-TBdq-cJW.js} +4 -4
  13. package/dist/web/assets/SkillsPanel-BPOQfm8q.js +1 -0
  14. package/dist/web/assets/SkillsPanel-DH-_EKrv.css +1 -0
  15. package/dist/web/assets/{TerminalPanel-Dl_Qe91o.js → TerminalPanel-BHWw9ZUE.js} +1 -1
  16. package/dist/web/assets/{TextViewer-DxhiKUe5.js → TextViewer-d0xfOD_a.js} +1 -1
  17. package/dist/web/assets/{VideoViewer-Ctu1uw95.js → VideoViewer-DhoCw-I5.js} +1 -1
  18. package/dist/web/assets/ViewersPanel-DKQeezkV.js +1 -0
  19. package/dist/web/assets/{href-resolution-bgv3HgGq.js → href-resolution-CKrMBdbX.js} +1 -1
  20. package/dist/web/assets/index-BbSAfLF_.js +19 -0
  21. package/dist/web/assets/markdown-BWyDQ88Y.js +5 -0
  22. package/dist/web/assets/pdf.worker.min-ypFJvUNP.js +53 -0
  23. package/dist/web/assets/{use-file-download-TjW4POi1.js → use-file-download-IryqzIsu.js} +1 -1
  24. package/dist/web/assets/{use-file-watch-Cm5eDhih.js → use-file-watch-CKy-EMBA.js} +1 -1
  25. package/dist/web/assets/{use-provider-auth-list-B7wM3n-2.js → use-provider-auth-list-CkrX1tsv.js} +1 -1
  26. package/dist/web/assets/{vendor-icons-K8oF_80Q.js → vendor-icons-FMicTc5d.js} +86 -61
  27. package/dist/web/assets/vendor-pdfjs-BrYGnqfM.js +55 -0
  28. package/dist/web/index.html +2 -2
  29. package/dist/web/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
  30. package/dist/web/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
  31. package/dist/web/pdfjs/cmaps/78-H.bcmap +0 -0
  32. package/dist/web/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
  33. package/dist/web/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
  34. package/dist/web/pdfjs/cmaps/78-V.bcmap +0 -0
  35. package/dist/web/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
  36. package/dist/web/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
  37. package/dist/web/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
  38. package/dist/web/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
  39. package/dist/web/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
  40. package/dist/web/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
  41. package/dist/web/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
  42. package/dist/web/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
  43. package/dist/web/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
  44. package/dist/web/pdfjs/cmaps/Add-H.bcmap +0 -0
  45. package/dist/web/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
  46. package/dist/web/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
  47. package/dist/web/pdfjs/cmaps/Add-V.bcmap +0 -0
  48. package/dist/web/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
  49. package/dist/web/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
  50. package/dist/web/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
  51. package/dist/web/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
  52. package/dist/web/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
  53. package/dist/web/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
  54. package/dist/web/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
  55. package/dist/web/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  56. package/dist/web/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
  57. package/dist/web/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
  58. package/dist/web/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
  59. package/dist/web/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
  60. package/dist/web/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
  61. package/dist/web/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
  62. package/dist/web/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  63. package/dist/web/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
  64. package/dist/web/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
  65. package/dist/web/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
  66. package/dist/web/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
  67. package/dist/web/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
  68. package/dist/web/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
  69. package/dist/web/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
  70. package/dist/web/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  71. package/dist/web/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
  72. package/dist/web/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
  73. package/dist/web/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
  74. package/dist/web/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  75. package/dist/web/pdfjs/cmaps/B5-H.bcmap +0 -0
  76. package/dist/web/pdfjs/cmaps/B5-V.bcmap +0 -0
  77. package/dist/web/pdfjs/cmaps/B5pc-H.bcmap +0 -0
  78. package/dist/web/pdfjs/cmaps/B5pc-V.bcmap +0 -0
  79. package/dist/web/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
  80. package/dist/web/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
  81. package/dist/web/pdfjs/cmaps/CNS1-H.bcmap +0 -0
  82. package/dist/web/pdfjs/cmaps/CNS1-V.bcmap +0 -0
  83. package/dist/web/pdfjs/cmaps/CNS2-H.bcmap +0 -0
  84. package/dist/web/pdfjs/cmaps/CNS2-V.bcmap +3 -0
  85. package/dist/web/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
  86. package/dist/web/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
  87. package/dist/web/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
  88. package/dist/web/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
  89. package/dist/web/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
  90. package/dist/web/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
  91. package/dist/web/pdfjs/cmaps/EUC-H.bcmap +0 -0
  92. package/dist/web/pdfjs/cmaps/EUC-V.bcmap +0 -0
  93. package/dist/web/pdfjs/cmaps/Ext-H.bcmap +0 -0
  94. package/dist/web/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
  95. package/dist/web/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
  96. package/dist/web/pdfjs/cmaps/Ext-V.bcmap +0 -0
  97. package/dist/web/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
  98. package/dist/web/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
  99. package/dist/web/pdfjs/cmaps/GB-H.bcmap +4 -0
  100. package/dist/web/pdfjs/cmaps/GB-V.bcmap +0 -0
  101. package/dist/web/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
  102. package/dist/web/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
  103. package/dist/web/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
  104. package/dist/web/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
  105. package/dist/web/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
  106. package/dist/web/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
  107. package/dist/web/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
  108. package/dist/web/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
  109. package/dist/web/pdfjs/cmaps/GBT-H.bcmap +0 -0
  110. package/dist/web/pdfjs/cmaps/GBT-V.bcmap +0 -0
  111. package/dist/web/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
  112. package/dist/web/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
  113. package/dist/web/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
  114. package/dist/web/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
  115. package/dist/web/pdfjs/cmaps/H.bcmap +0 -0
  116. package/dist/web/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
  117. package/dist/web/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
  118. package/dist/web/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
  119. package/dist/web/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
  120. package/dist/web/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
  121. package/dist/web/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
  122. package/dist/web/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
  123. package/dist/web/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
  124. package/dist/web/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
  125. package/dist/web/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
  126. package/dist/web/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
  127. package/dist/web/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
  128. package/dist/web/pdfjs/cmaps/Hankaku.bcmap +0 -0
  129. package/dist/web/pdfjs/cmaps/Hiragana.bcmap +0 -0
  130. package/dist/web/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
  131. package/dist/web/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
  132. package/dist/web/pdfjs/cmaps/KSC-H.bcmap +0 -0
  133. package/dist/web/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
  134. package/dist/web/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
  135. package/dist/web/pdfjs/cmaps/KSC-V.bcmap +0 -0
  136. package/dist/web/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
  137. package/dist/web/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  138. package/dist/web/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  139. package/dist/web/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
  140. package/dist/web/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
  141. package/dist/web/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
  142. package/dist/web/pdfjs/cmaps/Katakana.bcmap +0 -0
  143. package/dist/web/pdfjs/cmaps/LICENSE +36 -0
  144. package/dist/web/pdfjs/cmaps/NWP-H.bcmap +0 -0
  145. package/dist/web/pdfjs/cmaps/NWP-V.bcmap +0 -0
  146. package/dist/web/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
  147. package/dist/web/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
  148. package/dist/web/pdfjs/cmaps/Roman.bcmap +0 -0
  149. package/dist/web/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  150. package/dist/web/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  151. package/dist/web/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  152. package/dist/web/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  153. package/dist/web/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  154. package/dist/web/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  155. package/dist/web/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  156. package/dist/web/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  157. package/dist/web/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
  158. package/dist/web/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
  159. package/dist/web/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
  160. package/dist/web/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
  161. package/dist/web/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
  162. package/dist/web/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
  163. package/dist/web/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
  164. package/dist/web/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
  165. package/dist/web/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  166. package/dist/web/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  167. package/dist/web/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  168. package/dist/web/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  169. package/dist/web/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  170. package/dist/web/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  171. package/dist/web/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  172. package/dist/web/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  173. package/dist/web/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  174. package/dist/web/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  175. package/dist/web/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  176. package/dist/web/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  177. package/dist/web/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  178. package/dist/web/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  179. package/dist/web/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  180. package/dist/web/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  181. package/dist/web/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  182. package/dist/web/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  183. package/dist/web/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  184. package/dist/web/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  185. package/dist/web/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  186. package/dist/web/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  187. package/dist/web/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  188. package/dist/web/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
  189. package/dist/web/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
  190. package/dist/web/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
  191. package/dist/web/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
  192. package/dist/web/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
  193. package/dist/web/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
  194. package/dist/web/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
  195. package/dist/web/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
  196. package/dist/web/pdfjs/cmaps/V.bcmap +0 -0
  197. package/dist/web/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
  198. package/dist/web/pdfjs/iccs/CGATS001Compat-v2-micro.icc +0 -0
  199. package/dist/web/pdfjs/iccs/LICENSE +116 -0
  200. package/dist/web/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
  201. package/dist/web/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
  202. package/dist/web/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
  203. package/dist/web/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  204. package/dist/web/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
  205. package/dist/web/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
  206. package/dist/web/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
  207. package/dist/web/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  208. package/dist/web/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
  209. package/dist/web/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
  210. package/dist/web/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
  211. package/dist/web/pdfjs/standard_fonts/LICENSE_LIBERATION +363 -0
  212. package/dist/web/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
  213. package/dist/web/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  214. package/dist/web/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
  215. package/dist/web/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
  216. package/dist/web/pdfjs/wasm/LICENSE_JBIG2 +196 -0
  217. package/dist/web/pdfjs/wasm/LICENSE_OPENJPEG +39 -0
  218. package/dist/web/pdfjs/wasm/LICENSE_PDFJS_JBIG2 +13 -0
  219. package/dist/web/pdfjs/wasm/LICENSE_PDFJS_OPENJPEG +22 -0
  220. package/dist/web/pdfjs/wasm/LICENSE_PDFJS_QCMS +19 -0
  221. package/dist/web/pdfjs/wasm/LICENSE_QCMS +21 -0
  222. package/dist/web/pdfjs/wasm/jbig2.wasm +0 -0
  223. package/dist/web/pdfjs/wasm/jbig2_nowasm_fallback.js +15 -0
  224. package/dist/web/pdfjs/wasm/openjpeg.wasm +0 -0
  225. package/dist/web/pdfjs/wasm/openjpeg_nowasm_fallback.js +17 -0
  226. package/dist/web/pdfjs/wasm/qcms_bg.wasm +0 -0
  227. package/package.json +4 -3
  228. package/dist/web/assets/FilePanel-ywlcSAmX.js +0 -1
  229. package/dist/web/assets/ViewersPanel-B3DJPFi0.js +0 -1
  230. package/dist/web/assets/index-DawGVQic.js +0 -19
  231. package/dist/web/assets/markdown-CRfVs-Rh.js +0 -5
@@ -0,0 +1,19 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ModelProvidersPanel-BGnWcyq9.js","assets/vendor-react-DQUAl2K8.js","assets/vendor-query-i7fr__Xm.js","assets/StatusBadge-BMKAPA9O.js","assets/StatusBadge-DmrnYEhp.css","assets/use-provider-auth-list-CkrX1tsv.js","assets/provider-auth-store-9hsJ07X1.js","assets/vendor-DaF96HbP.js","assets/vendor-CEK31ho9.css","assets/vendor-icons-FMicTc5d.js","assets/vendor-overlays-3MkedLFU.js","assets/vendor-dnd-CayJj8TC.js","assets/ModelProvidersPanel-BP1zIT6I.css","assets/SkillsPanel-BPOQfm8q.js","assets/Switch-1I6AMAC7.js","assets/Switch-Dz-IIw4-.css","assets/SkillsPanel-DH-_EKrv.css","assets/ViewersPanel-DKQeezkV.js","assets/ViewersPanel-BvWpXbxZ.css","assets/SettingsDialog-TBdq-cJW.js","assets/SettingsDialog-Bc09UjU4.css","assets/ChatPanel-IwIp9TyM.js","assets/markdown-BWyDQ88Y.js","assets/vendor-highlight-Ddi_n-Jh.js","assets/vendor-markdown-DJUOT8ep.js","assets/href-resolution-CKrMBdbX.js","assets/markdown-C15eCO0s.css","assets/DiffView-D1TsZBGe.js","assets/DiffView-CUctPSBA.css","assets/ChatPanel-C49fPd0n.css","assets/FilePanel-DuSXRbB3.js","assets/use-file-watch-CKy-EMBA.js","assets/FilePanel-bWuYWz8t.css","assets/TerminalPanel-BHWw9ZUE.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-DpxpMm0w.css","assets/MoleculeViewerPanel-gr1xhI3B.js","assets/vendor-molviewer-DeAF8d5d.js","assets/vendor-molviewer-Bychyqid.css","assets/use-file-download-IryqzIsu.js","assets/MoleculeViewerPanel-CHZ8q0jD.css","assets/TextViewer-d0xfOD_a.js","assets/CodeView-nWhbxYNo.js","assets/CodeView-Bbd7h9aM.css","assets/TextViewer-C7Vnqw_v.css","assets/MarkdownFileViewer-Jd18lpAb.js","assets/MarkdownFileViewer-Cnl1kopk.css","assets/ImageViewer-CGkHIlbr.js","assets/ImageViewer-Bh1rkSDM.css","assets/VideoViewer-DhoCw-I5.js","assets/VideoViewer-CCmuaDLl.css","assets/BinaryFallbackViewer-BH2FpXPq.js","assets/BinaryFallbackViewer-ClYyn4IS.css","assets/HtmlViewer-Bp9FVmsO.js","assets/HtmlViewer-C9NJC5qE.css","assets/PdfViewer-Chvwi-vw.js","assets/vendor-pdfjs-BrYGnqfM.js","assets/PdfViewer-DoOGVn5M.css"])))=>i.map(i=>d[i]);
2
+ var ni=Object.defineProperty;var si=(e,t,n)=>t in e?ni(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>si(e,typeof t!="symbol"?t+"":t,n);import{r as w,j as c,a as ri,c as oi}from"./vendor-react-DQUAl2K8.js";import{Q as ii,c as ai,u as ci,d as li,a as st,b as di}from"./vendor-query-i7fr__Xm.js";import{aj as l,ak as h,N as z,al as $n,am as W,an as Ie,ao as ae,ap as E,aq as v,ar as ee,as as D,at as en,au as et,y as le,_ as de}from"./vendor-DaF96HbP.js";import{t as ui,K as fi,u as pi,v as tn,w as hi,x as gi,y as mi,z as _i,H as yi,I as On,P as hr,p as wi,i as gr,J as vi,b as Ln,C as Bn,l as Ut,O as mr,Q as _r,R as nn,V as yr,X as wt,W as bi,Y as ki,_ as Si,$ as Ve,c as Sn,a0 as Ht,s as Mt,r as xi,a1 as Ii,D as Ei,a2 as Ti,a3 as Ci,a4 as Ri,a5 as ji,a6 as Ai,a7 as Mi,f as qi,q as Pi}from"./vendor-icons-FMicTc5d.js";import{P as Ni,C as Di,G as $i,L as Oi,I as Li,S as Bi,R as kt,T as St,D as Fi,a as zi,b as Wi,c as Ui,d as us,e as xn,f as Hi,g as Vi,h as Ki,i as Gi}from"./vendor-overlays-3MkedLFU.js";import{u as Yi,a as Xi,p as Ji,P as Zi,b as wr,S as Qi,h as ea,c as ta,C as na,D as sa,d as ra}from"./vendor-dnd-CayJj8TC.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();const oa=new ii;function vr(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 ia(e){return Math.max(0,Math.min(255,Math.round(e)))}function aa({r:e,g:t,b:n}){const s=r=>ia(r).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function ca(e){const{r:t,g:n,b:s}=vr(e),r=o=>{const i=o/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*r(t)+.7152*r(n)+.0722*r(s)}function Fn(e,t="#18181b",n="#ffffff"){return ca(e)>.45?t:n}function la(e,t){const{r:n,g:s,b:r}=vr(e),o=Math.max(0,Math.min(1,t));return aa({r:n+(255-n)*o,g:s+(255-s)*o,b:r+(255-r)*o})}function qt(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const be=(e,t,n,s,r,o,i,a,d,u,p)=>({50:e,100:t,200:n,300:s,400:r,500:o,600:i,700:a,800:d,900:u,950:p}),T={zinc:be("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:be("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:be("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:be("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:be("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:be("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:be("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:be("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:be("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:be("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:be("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"},da={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea",statusInfo:"#3b82f6"},ua={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed",statusInfo:"#2563eb"};function fa(){return{keyword:T.purple[300],string:T.green[300],number:T.orange[300],boolean:T.orange[300],comment:T.zinc[500],function:T.blue[300],variable:T.zinc[200],type:T.teal[300],class:T.amber[300],constant:T.orange[300],operator:T.zinc[400],punctuation:T.zinc[400],tag:T.red[300],attribute:T.amber[300],property:T.blue[200],regexp:T.teal[300],escape:T.orange[200],heading:T.blue[300],link:T.blue[400],deleted:T.red[400],inserted:T.green[400]}}function pa(){return{keyword:T.purple[700],string:T.green[700],number:T.orange[700],boolean:T.orange[700],comment:T.zinc[500],function:T.blue[700],variable:T.zinc[800],type:T.teal[700],class:T.amber[700],constant:T.orange[700],operator:T.zinc[600],punctuation:T.zinc[600],tag:T.red[700],attribute:T.amber[700],property:T.blue[700],regexp:T.teal[700],escape:T.orange[700],heading:T.blue[700],link:T.blue[600],deleted:T.red[700],inserted:T.green[700]}}function br(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:T.zinc[900],red:T.red[500],green:T.green[500],yellow:T.amber[500],blue:T.blue[500],magenta:T.purple[500],cyan:T.teal[500],white:T.zinc[300],brightBlack:T.zinc[600],brightRed:T.red[400],brightGreen:T.green[400],brightYellow:T.amber[400],brightBlue:T.blue[400],brightMagenta:T.purple[400],brightCyan:T.teal[400],brightWhite:T.zinc[50]}}function ot(e){const t=T.zinc[50],n=Fn(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:T.white,success:e.accent,successForeground:T.white,border:e.border,borderAccent:e.borderAccent,...da,diffAddition:T.green[400],diffDeletion:T.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:T,syntax:fa(),terminal:br(e.surface0,t,e.accent)}}function ha(){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:Fn(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...ua,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:T,syntax:pa(),terminal:{...br("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const ga={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},kr=["light","dark","zinc","midnight","claude","ghostty"];function ma(e){if(e==="light")return ha();switch(e){case"dark":return ot({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 ot({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 ot({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 ot({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 ot({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 Sr={};for(const e of kr){const t=e==="light"?"light":"dark";Sr[e]={name:e,colorScheme:t,colors:ma(e),swatch:ga[e]}}const _a=Sr,ya={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},Vt={"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},wa={normal:"400",medium:"500",semibold:"600",bold:"700"},va={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},ba={0:0,1:1,2:2},ka={0:0,50:.5,100:1},Sa={xs:12,sm:14,md:16,lg:20},xa={diff:22},xr='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',Ir='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',Rv='"MesloLGS NF", "MesloLGS Nerd Font Mono", "Cascadia Mono NF", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function Ia(e){const t=e==="dark"?"rgba(0,0,0,0.55)":"rgba(24,24,27,0.12)";return{sm:{color:t,offsetX:0,offsetY:1,radius:2,elevation:1},md:{color:t,offsetX:0,offsetY:3,radius:8,elevation:4},lg:{color:t,offsetX:0,offsetY:10,radius:24,elevation:12}}}function Er(e){const t=_a[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:ya,fontSize:{...Vt},fontFamily:{ui:xr,mono:Ir},lineHeight:{...xa},iconSize:Sa,fontWeight:wa,borderRadius:va,borderWidth:ba,opacity:ka,shadow:Ia(t.colorScheme),swatch:t.swatch}}const Ea=Vt.base,Ta=10,Ca=24;function Ra(e,t){const n=t.themeName??e.name,s=Er(n),r=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:xr,o=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:Ir,i={...s.fontSize};if(t.fontSize!=null){const d=Math.max(Ta,Math.min(Ca,t.fontSize))/Ea;for(const u of Object.keys(Vt))i[u]=Math.round(Vt[u]*d)}return{...s,fontSize:i,fontFamily:{ui:r,mono:o}}}function ja(e){return Er(e)}const Aa="dark",Ma=16;function qa(e){const t=e/Ma;return`${Number(t.toFixed(4))}rem`}function Pa(e){const t={};Na(e.colors,t);for(const[n,s]of Object.entries(e.spacing))t[`--pi-spacing-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontSize))t[`--pi-font-size-${n}`]=qa(s);t["--pi-font-ui"]=e.fontFamily.ui,t["--pi-font-mono"]=e.fontFamily.mono,t["--pi-line-height-diff"]=`${e.lineHeight.diff}px`;for(const[n,s]of Object.entries(e.iconSize))t[`--pi-icon-size-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontWeight))t[`--pi-font-weight-${n}`]=String(s);for(const[n,s]of Object.entries(e.borderRadius))t[`--pi-radius-${n}`]=s===9999?"9999px":`${s}px`;for(const[n,s]of Object.entries(e.borderWidth))t[`--pi-border-width-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.opacity))t[`--pi-opacity-${n}`]=String(s);for(const[n,s]of Object.entries(e.shadow))if(typeof s=="string")t[`--pi-shadow-${n}`]=s;else if(s&&typeof s=="object"){const r=s;t[`--pi-shadow-${n}`]=`${r.offsetX}px ${r.offsetY}px ${r.radius}px ${r.color}`}return t["--pi-color-scheme"]=e.colorScheme,t}function Na(e,t){const{palette:n,syntax:s,terminal:r,...o}=e;for(const[i,a]of Object.entries(o))typeof a=="string"&&(t[`--pi-color-${i}`]=a);s&&Da(s,t),r&&(t["--pi-terminal-bg"]=r.background,t["--pi-terminal-fg"]=r.foreground)}function Da(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${$a(n)}`]=s)}function $a(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Oa(e){if(typeof document>"u")return;const t=document.documentElement.style;for(const[s,r]of Object.entries(e))t.setProperty(s,r);const n=e["--pi-color-scheme"];n&&document.documentElement.style.setProperty("color-scheme",n)}function La(e){const t=Pa(e);Oa(t)}const it=l().min(1,"Asset path must not be empty"),Ba=h({accent:l().refine(qt,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(qt,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(qt,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(qt,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),Fa=h({logoLight:it,logoDark:it,logoMark:it.optional(),icon:it,splash:it.optional()}),za=h({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),Wa=h({copyright:l().optional(),companyName:l().optional()}).optional();h({productName:l().min(1,"productName is required"),shortName:l().optional(),tagline:l().optional(),colors:Ba,assets:Fa,links:za,legal:Wa});function Ua(e){const t=e.accent,n=e.accentBright??la(t,.35),s=e.accentForeground??Fn(t),r=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:r}}function Ha(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 fs="pi-studio-appearance";function Va(e,t){let n=d(e),s=null;const r=new Set;function o(f){return f==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":f}function i(f,m){const g=o(f),k=ja(g);let _=Ra(k,{...m,themeName:g});if(t!=null&&t.colors){const x=Ua(t.colors);_=Ha(_,x)}return _}function a(){const f=JSON.stringify({mode:n.mode,settings:n.settings});e.set(fs,f)}function d(f){const m=f.get(fs);let g=Aa,k={};if(m)try{const x=JSON.parse(m);x.mode&&(kr.includes(x.mode)||x.mode==="system")&&(g=x.mode),x.settings&&typeof x.settings=="object"&&(k=x.settings)}catch{}const _=i(g,k);return{mode:g,settings:k,resolvedTheme:_}}function u(){n={...n,resolvedTheme:i(n.mode,n.settings)},a();for(const f of r)f()}const p={getState(){return n},setMode(f){n={...n,mode:f},u(),p.apply()},updateSettings(f){n={...n,settings:{...n.settings,...f}},u(),p.apply()},apply(){La(n.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const f=window.matchMedia("(prefers-color-scheme: dark)"),m=()=>{n.mode==="system"&&(u(),p.apply())};return f.addEventListener("change",m),s=()=>f.removeEventListener("change",m),s},subscribe(f){return r.add(f),()=>r.delete(f)}};return p}const Tr=w.createContext(null);function Ka({store:e,brandConfig:t,children:n}){const s=w.useRef(null);s.current||(s.current=Va(e,t),s.current.apply());const r=s.current,o=w.useSyncExternalStore(r.subscribe,r.getState);return w.useEffect(()=>r.listen(),[r]),c.jsx(Tr.Provider,{value:o,children:n})}function jv(){const e=w.useContext(Tr);if(!e)throw new Error("useAppearance must be used within a ThemeBoundary");return e}const zn={get(e){var t;try{return((t=globalThis.localStorage)==null?void 0:t.getItem(e))??null}catch{return null}},set(e,t){var n;try{(n=globalThis.localStorage)==null||n.setItem(e,t)}catch{}}};function Ga({children:e}){return c.jsx(Ka,{store:zn,children:c.jsx(ai,{client:oa,children:e})})}const Ya="_btn_dkqaa_4",Xa="_secondary_dkqaa_47",Ja="_outline_dkqaa_56",Za="_ghost_dkqaa_65",Qa="_destructive_dkqaa_75",ec="_iconOnly_dkqaa_85",tc="_loadingSpinner_dkqaa_92",nc="_piSpin_dkqaa_1",Pt={btn:Ya,default:"_default_dkqaa_38",secondary:Xa,outline:Ja,ghost:Za,destructive:Qa,iconOnly:ec,loadingSpinner:tc,piSpin:nc},ps={xs:28,sm:32,md:36,lg:40},sc={xs:12,sm:14,md:16,lg:20},hs={xs:8,sm:10,md:12,lg:16},rc={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 oc(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}function se({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:r,trailing:o,iconOnly:i=!1,children:a,style:d,className:u,ref:p,...f}){const{opacity:m}=oc({disabled:s??!1,loading:n}),g=s||n,k=sc[t];return c.jsxs("button",{ref:p,className:z(Pt.btn,Pt[e],i&&Pt.iconOnly,u),disabled:g,"aria-busy":n||void 0,style:{minHeight:ps[t],paddingLeft:i?void 0:hs[t],paddingRight:i?void 0:hs[t],fontSize:rc[t],opacity:m,...i?{width:ps[t]}:{},...d},...f,children:[n?c.jsx(ui,{className:Pt.loadingSpinner,size:k,"aria-hidden":!0}):r?c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r}):null,a,o&&!n&&c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o})]})}const ic={xs:12,sm:14,md:16,lg:20};function re({icon:e,size:t="md",color:n="currentColor",className:s,...r}){const o=typeof t=="number"?t:ic[t];return c.jsx(e,{size:o,color:n,className:s,"aria-hidden":r["aria-hidden"],"aria-label":r["aria-label"]})}const ac="_spinner_1ibj3_3",cc={spinner:ac},lc={xs:12,sm:16,md:20,lg:24},dc={xs:1,sm:2,md:2,lg:3};function Cr({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const r=typeof e=="number"?e:lc[e],o=typeof e=="number"?2:dc[e];return c.jsx("span",{className:`${cc.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:r,height:r,borderWidth:o,color:t}})}const uc="_dot_ve4v6_3",fc="_spinner_ve4v6_16",pc="_pulse_ve4v6_35",un={dot:uc,spinner:fc,pulse:pc};function hc(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:r}=e;if(!t)return null;if(n)switch(s){case"permission":case"question":return"statusWarning";case"error":return"statusDanger";case"finished":default:return"statusSuccess"}switch(t){case"running":case"queued":return"accent";case"waiting":return"statusWarning";case"finished":return"statusSuccess";case"error":return"statusDanger";case"idle":case"archived":return r?"foregroundMuted":null}}const gs=8,gc={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 sn({className:e,pulse:t,"aria-label":n,...s}){const r=hc(s);if(!r)return null;const o=s.status==="running"&&!s.requiresAttention,i=o?"var(--pi-color-accentBright, #a2b4d7)":gc[r]??"currentColor";return c.jsx("span",{className:`${o?un.spinner:un.dot}${t&&!o?` ${un.pulse}`:""}${e?` ${e}`:""}`,style:o?{borderTopColor:i,borderRightColor:i}:{width:`var(--status-dot-size, ${gs}px)`,height:`var(--status-dot-size, ${gs}px)`,backgroundColor:i},role:n?"img":"presentation","aria-label":n})}const mc="_input_756jo_3",_c="_textarea_756jo_32",In={input:mc,textarea:_c},Kt=w.forwardRef(function({className:t,...n},s){return c.jsx("input",{ref:s,className:z(In.input,t),...n})}),yc=w.forwardRef(function({className:t,...n},s){return c.jsx("textarea",{ref:s,className:z(In.input,In.textarea,t),...n})}),Rr=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const De=$n([W(),Rr]),wc=Ie(["mobile","browser","cli","mcp"]),vc=h({type:v("hello"),clientId:l(),clientType:wc,protocolVersion:W(),appVersion:l().optional(),capabilities:ae(l(),E()).optional()}),bc=h({status:v("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),homeDir:l().optional(),capabilities:ae(l(),ee()),features:ae(l(),ee())}),kc=h({type:v("status"),payload:bc}),Sc=h({type:v("ping"),requestId:l(),clientSentAt:De.optional()}),xc=h({type:v("pong"),requestId:l(),clientSentAt:De.optional(),serverReceivedAt:De,serverSentAt:De}),jr=Ie(["initializing","idle","running","error","closed"]),rn=h({mimeType:l().optional(),data:l().optional()}).passthrough(),Ic=h({prs:D(ee()).optional(),issues:D(ee()).optional()}).passthrough(),Ec=h({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:ae(l(),ee()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:E().optional(),webSearch:E().optional(),extra:h({pi:ee().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:ae(l(),ee()).optional()}),Tc=h({type:v("create_agent_request"),requestId:l(),config:Ec,env:ae(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:ae(l(),ee()).optional(),images:D(rn).optional(),attachments:Ic.optional(),git:ee().optional(),worktree:ee().optional(),autoArchive:E().optional(),labels:ae(l(),l()).default({})}),Cc=h({type:v("create_agent_response"),requestId:l(),payload:h({agentId:l()}).passthrough()}),Rc=h({type:v("agent_update"),agentId:l(),status:jr.optional(),title:l().nullable().optional(),labels:ae(l(),l()).optional()}),jc=h({type:v("agent_status"),agentId:l(),status:jr}),Ac=h({type:v("agent_list"),agents:D(h({id:l()}).passthrough())}),Mc=h({type:v("agent_deleted"),agentId:l()}),qc=h({type:v("agent_archived"),agentId:l(),archivedAt:Rr.optional()}),Ar=en("kind",[h({kind:v("shell"),command:l().optional(),output:l().optional()}),h({kind:v("read"),path:l().optional(),output:l().optional()}),h({kind:v("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),h({kind:v("write"),path:l().optional(),output:l().optional()}),h({kind:v("search"),query:l().optional(),output:l().optional()}),h({kind:v("fetch"),url:l().optional(),output:l().optional()}),h({kind:v("task"),description:l().optional(),output:l().optional()})]),Pc=en("kind",[h({kind:v("user_message"),messageId:l().optional(),text:l().optional(),images:D(rn).optional()}),h({kind:v("assistant_message"),messageId:l().optional(),text:l().optional(),final:E().optional()}),h({kind:v("reasoning"),text:l().optional(),final:E().optional()}),h({kind:v("tool_call"),callId:l().optional(),tool:Ar,status:l().optional()}),h({kind:v("turn_started"),turnId:l().optional()}),h({kind:v("turn_completed"),turnId:l().optional()}),h({kind:v("turn_failed"),turnId:l().optional(),error:l().optional()}),h({kind:v("turn_canceled"),turnId:l().optional()}),h({kind:v("error"),message:l().optional()}),h({kind:v("queue_update"),steering:D(l()).optional(),followUp:D(l()).optional()}),h({kind:v("compaction"),compactionId:l(),phase:Ie(["started","completed","failed","canceled"]),reason:Ie(["manual","threshold","overflow"]).optional(),tokensBefore:W().optional(),estimatedTokensAfter:W().optional(),summary:l().optional(),error:l().optional(),willRetry:E().optional()})]),Nc=h({type:v("agent_stream"),agentId:l(),seq:W().optional(),timestamp:De.optional(),event:Pc}),Dc=Ie(["before","after"]),$c=h({start:W(),end:W()}),Oc=h({type:v("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:Dc,limit:W().optional()}),Lc=h({type:v("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:D(ee()),seqStart:W(),seqEnd:W(),sourceSeqRanges:D($c),collapsed:E(),hasNewer:E(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),Bc=h({type:v("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:Ar.optional(),action:ee().optional(),responses:D(l()).optional()}),Fc=h({type:v("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),zc=h({type:v("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:ee()}),Wc=h({type:v("agent.permission.respond.response"),requestId:l(),payload:h({resolved:E()}).passthrough()}),Uc=h({type:v("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:ee()}),Mr=Ie(["conversation","files","both"]),Hc=h({type:v("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:Mr}).passthrough(),Vc=h({type:v("agent.rewind.response"),requestId:l(),payload:h({agentId:l(),messageId:l(),mode:Mr,truncatedAt:l().optional()}).passthrough()}).passthrough(),Kc=h({input:W().optional(),output:W().optional(),cacheRead:W().optional(),cacheWrite:W().optional(),total:W().optional()}).passthrough(),Gc=h({tokens:W().nullable().optional(),contextWindow:W().optional(),percent:W().nullable().optional()}).passthrough(),Yc=h({type:v("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),Xc=h({type:v("agent_session_stats_response"),requestId:l(),payload:h({sessionId:l().optional(),sessionFile:l().optional(),userMessages:W().optional(),assistantMessages:W().optional(),toolCalls:W().optional(),toolResults:W().optional(),totalMessages:W().optional(),tokens:Kc.optional(),cost:W().optional(),contextUsage:Gc.optional(),model:l().optional()}).passthrough()}).passthrough(),Jc=h({type:v("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),Zc=h({type:v("agent_compact_response"),requestId:l(),payload:h({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:W().optional(),estimatedTokensAfter:W().optional(),details:ee().optional()}).passthrough()}).passthrough(),Qc=h({type:v("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),el=h({type:v("agent_new_session_response"),requestId:l(),payload:h({cancelled:E()}).passthrough()}).passthrough(),tl=h({type:v("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),nl=h({type:v("agent_switch_session_response"),requestId:l(),payload:h({cancelled:E()}).passthrough()}).passthrough(),sl=h({type:v("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),rl=h({type:v("agent_fork_response"),requestId:l(),payload:h({text:l(),cancelled:E()}).passthrough()}).passthrough(),ol=h({type:v("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),il=h({type:v("agent_fork_messages_response"),requestId:l(),payload:h({messages:D(h({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),al=h({type:v("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),cl=h({type:v("agent_clone_response"),requestId:l(),payload:h({cancelled:E()}).passthrough()}).passthrough(),ll=h({type:v("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),dl=h({type:v("agent_set_session_name_response"),requestId:l(),payload:h({}).passthrough().optional()}).passthrough(),ul=h({type:v("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),fl=h({type:v("agent_export_html_response"),requestId:l(),payload:h({path:l()}).passthrough()}).passthrough(),pl=h({type:v("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),hl=h({type:v("agent_set_model_response"),requestId:l(),payload:h({}).passthrough()}).passthrough(),gl=h({type:v("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),ml=h({type:v("agent_cycle_model_response"),requestId:l(),payload:h({model:ee().nullable().optional(),thinkingLevel:l().optional(),isScoped:E().optional()}).passthrough()}).passthrough(),_l=h({type:v("agent_set_thinking_request"),requestId:l(),agentId:l(),level:l()}).passthrough(),yl=h({type:v("agent_set_thinking_response"),requestId:l(),payload:h({agentId:l(),level:l()}).passthrough()}).passthrough(),wl=h({type:v("agent_thinking_levels_request"),requestId:l(),agentId:l()}).passthrough(),vl=h({type:v("agent_thinking_levels_response"),requestId:l(),payload:h({agentId:l(),levels:D(l())}).passthrough()}).passthrough(),bl=h({type:v("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),kl=h({type:v("agent_last_assistant_text_response"),requestId:l(),payload:h({text:l().nullable()}).passthrough()}).passthrough(),Sl=h({type:v("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:D(rn).optional(),clientMessageId:l().optional()}).passthrough(),xl=h({type:v("steer_agent_response"),requestId:l(),agentId:l(),ok:E()}).passthrough(),Il=h({type:v("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:D(rn).optional(),clientMessageId:l().optional()}).passthrough(),El=h({type:v("follow_up_agent_response"),requestId:l(),agentId:l(),ok:E()}).passthrough(),Tl=h({name:l(),id:l().optional(),description:l().optional(),source:Ie(["extension","prompt","skill"]).optional(),scope:Ie(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),Cl=h({type:v("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),Rl=h({type:v("agent_list_commands_response"),requestId:l(),payload:h({commands:D(Tl)}).passthrough()}).passthrough(),jl=h({source:l(),identity:l(),addedIn:l(),deprecated:E().optional(),status:l(),lastError:h({at:l(),attempts:W(),reason:l(),message:l()}).passthrough().optional()}).passthrough(),qr=h({id:l(),title:l(),description:l(),packages:D(jl)}).passthrough(),Al=h({identity:l(),source:l(),pack:l(),reason:l(),message:l()}).passthrough(),Ml=h({at:l(),outcome:l(),installed:D(l()),failures:D(Al)}).passthrough(),Pr=h({at:l(),outcome:l()}).passthrough(),ql=h({type:v("extension_packs_list_request"),requestId:l()}).passthrough(),Pl=h({type:v("extension_packs_list_response"),requestId:l(),autoSync:E(),selected:D(l()),packs:D(qr),lastSync:Pr.optional()}).passthrough(),Nl=h({type:v("extension_packs_set_request"),requestId:l(),packs:D(l()).optional()}).passthrough(),Dl=h({type:v("extension_packs_set_response"),requestId:l(),autoSync:E(),selected:D(l()),packs:D(qr),lastSync:Pr.optional(),ok:E(),error:l().optional(),report:Ml.optional()}).passthrough(),En=Ie(["api_key","oauth"]),$l=h({id:l(),name:l(),authTypes:D(En),oauthLoginLabel:l().optional(),oauthIsSubscription:E().optional(),configured:$n([E(),v("unknown")]),configuredType:En.optional(),configuredSource:l().optional()}).passthrough(),Ol=h({type:v("provider_auth_list_request"),requestId:l()}).passthrough(),Ll=h({type:v("provider_auth_list_response"),requestId:l(),payload:h({ok:E(),providers:D($l).default([]),error:l().optional()}).passthrough()}).passthrough(),Bl=h({type:v("provider_auth_login_request"),requestId:l(),provider:l(),authType:En}).passthrough(),Fl=h({type:v("provider_auth_login_response"),requestId:l(),payload:h({ok:E(),flowId:l().optional(),error:l().optional()}).passthrough()}).passthrough(),zl=h({type:v("provider_auth_respond_request"),requestId:l(),flowId:l(),promptId:l(),value:l()}).passthrough(),Wl=h({type:v("provider_auth_respond_response"),requestId:l(),payload:h({ok:E(),error:l().optional()}).passthrough()}).passthrough(),Ul=h({type:v("provider_auth_cancel_request"),requestId:l(),flowId:l()}).passthrough(),Hl=h({type:v("provider_auth_cancel_response"),requestId:l(),payload:h({ok:E()}).passthrough()}).passthrough(),Vl=h({type:v("provider_auth_logout_request"),requestId:l(),provider:l()}).passthrough(),Kl=h({type:v("provider_auth_logout_response"),requestId:l(),payload:h({ok:E(),stillConfigured:E().optional(),error:l().optional()}).passthrough()}).passthrough(),Gl=h({enabled:E(),config:ae(l(),ee()).optional()}).passthrough(),Wn=h({version:v(1).default(1),viewers:ae(l(),Gl).default({})}).passthrough(),Yl=h({type:v("viewer_settings_get_request"),requestId:l()}).passthrough(),Xl=h({type:v("viewer_settings_get_response"),requestId:l(),payload:h({settings:Wn}).passthrough()}).passthrough(),Jl=h({enabled:E().optional(),config:ae(l(),ee()).optional()}).passthrough(),Zl=h({type:v("viewer_settings_set_request"),requestId:l(),patch:ae(l(),Jl)}).passthrough(),Ql=h({type:v("viewer_settings_set_response"),requestId:l(),payload:h({settings:Wn}).passthrough()}).passthrough(),ed=h({type:v("viewer_settings_update"),settings:Wn}).passthrough(),xt=h({name:l(),description:l().optional(),path:l(),enabled:E(),origin:l(),originLabel:l(),packageSource:l().optional(),shadowedBy:l().optional(),symlinkTarget:l().optional(),provenance:h({source:l(),sourceUrl:l().optional(),installedAt:l().optional()}).passthrough().optional(),disableModelInvocation:E().optional(),warnings:D(l()).optional(),removable:E()}).passthrough(),It=h({source:l(),kind:Ie(["npm","git","local"]),identity:l(),pinned:E(),curated:E(),filtered:E(),skillCount:W()}).passthrough(),td=h({type:v("skills_list_request"),requestId:l()}).passthrough(),nd=h({type:v("skills_list_response"),requestId:l(),ok:E(),error:l().optional(),message:l().optional(),skills:D(xt),packages:D(It)}).passthrough(),sd=h({type:v("skills_set_enabled_request"),requestId:l(),path:l(),enabled:E()}).passthrough(),rd=h({type:v("skills_set_enabled_response"),requestId:l(),ok:E(),error:l().optional(),message:l().optional(),skills:D(xt),packages:D(It)}).passthrough(),od=h({type:v("skills_changed"),reason:l()}).passthrough(),Nr=h({type:v("skills_remove_request"),requestId:l(),path:l().optional(),packageSource:l().optional()}).passthrough();Nr.refine(e=>e.path!==void 0!=(e.packageSource!==void 0),{message:"exactly one of path or packageSource is required"});const id=h({type:v("skills_remove_response"),requestId:l(),ok:E(),error:l().optional(),message:l().optional(),stderr:l().optional(),skills:D(xt),packages:D(It)}).passthrough(),Dr=h({target:l(),ok:E(),error:l().optional(),stderr:l().optional()}).passthrough(),ad=h({type:v("skills_update_all_request"),requestId:l()}).passthrough(),cd=h({type:v("skills_update_all_response"),requestId:l(),ok:E(),error:l().optional(),message:l().optional(),results:D(Dr),skills:D(xt),packages:D(It)}).passthrough(),ld=h({name:l(),description:l().optional(),relPath:l(),warnings:D(l()).optional(),valid:E(),exists:E()}).passthrough(),dd=h({type:v("skills_preview_request"),requestId:l(),source:l()}).passthrough(),ud=h({type:v("skills_preview_response"),requestId:l(),ok:E(),error:l().optional(),message:l().optional(),kind:l(),source:l(),skills:D(ld)}).passthrough(),fd=h({type:v("skills_install_request"),requestId:l(),source:l(),skills:D(l()).optional(),replace:E().optional()}).passthrough(),pd=h({type:v("skills_install_response"),requestId:l(),ok:E(),error:l().optional(),message:l().optional(),results:D(Dr),skills:D(xt),packages:D(It)}).passthrough(),hd=h({requestId:l(),agentId:l(),method:l(),expectsResponse:E(),payload:ae(ee()),surfaceKey:l().optional(),timeoutMs:W().optional(),createdAt:De}).passthrough(),gd=h({agentId:l(),method:l(),surfaceKey:l(),payload:ae(ee()),updatedAt:De}).passthrough(),md=h({type:v("agent_ui_request"),requestId:l(),agentId:l(),method:l(),expectsResponse:E(),payload:ae(ee()),surfaceKey:l().optional(),removed:E().optional(),timeoutMs:W().optional(),createdAt:De}).passthrough(),_d=h({type:v("agent_ui_resolved"),requestId:l(),agentId:l(),reason:l()}).passthrough(),yd=h({value:l().optional(),confirmed:E().optional(),cancelled:E().optional()}).passthrough(),wd=h({type:v("agent_ui_respond_request"),requestId:l(),uiRequestId:l(),response:yd}).passthrough(),vd=h({type:v("agent_ui_respond_response"),requestId:l(),payload:h({ok:E(),error:l().optional()}).passthrough()}).passthrough(),bd=h({type:v("agent_ui_list_request"),requestId:l(),agentId:l().optional()}).passthrough(),kd=h({type:v("agent_ui_list_response"),requestId:l(),payload:h({ok:E(),pending:D(hd),surfaces:D(gd),error:l().optional()}).passthrough()}).passthrough(),Sd=h({type:v("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),xd=en("type",[Tc,Cc,Rc,jc,Ac,Mc,qc,Nc,Oc,Lc,Bc,Fc,zc,Wc,Uc,Hc,Vc,Yc,Xc,Jc,Zc,Qc,el,tl,nl,sl,rl,ol,il,al,cl,ll,dl,ul,fl,pl,hl,gl,ml,_l,yl,wl,vl,bl,kl,Sl,xl,Il,El,Cl,Rl,ql,Pl,Nl,Dl,Ol,Ll,Bl,Fl,zl,Wl,Ul,Hl,Vl,Kl,Yl,Xl,Zl,Ql,ed,td,nd,sd,rd,od,Nr,id,ad,cd,dd,ud,fd,pd,md,_d,wd,vd,bd,kd,Sd]),Id=h({type:l()}).passthrough(),Ed=h({type:v("session"),message:$n([xd,Id])});en("type",[vc,kc,Sc,xc,Ed]);const Nt={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},Td=Object.fromEntries(Object.entries(Je).map(([e,t])=>[t,e])),$r=h({rows:W().int().nonnegative(),cols:W().int().nonnegative()});class dt extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const Cd=new TextEncoder,Rd=new TextDecoder;function jd(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 Av(e){switch(jd(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($r.parse({rows:e.rows,cols:e.cols}));return at(Je.Resize,e.slot,Cd.encode(t))}}}function Ad(e){if(e.length<2)throw new dt(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=Td[t];if(!s)throw new dt(`unknown terminal opcode 0x${t.toString(16)}`);const r=e.subarray(2);if(s==="Resize"){let o;try{o=JSON.parse(Rd.decode(r))}catch{throw new dt("resize payload is not valid JSON")}const i=$r.safeParse(o);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:r.slice()}}const Qe={Begin:16,Chunk:17,End:18,Error:19},Md=Object.fromEntries(Object.entries(Qe).map(([e,t])=>[t,e])),Or=h({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:W().int().nonnegative().optional()});class ut extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const ms=new TextEncoder,_s=new TextDecoder;function qd(e){if(!Number.isInteger(e)||e<0||e>255)throw new ut(`stream must be an integer 0–255, got ${e}`)}function Dt(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function fn(e){switch(qd(e.stream),e.opcode){case"Begin":return Dt(Qe.Begin,e.stream,ms.encode(JSON.stringify(Or.parse(e.meta))));case"Chunk":return Dt(Qe.Chunk,e.stream,e.data);case"End":return Dt(Qe.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return Dt(Qe.Error,e.stream,ms.encode(e.message))}}function Pd(e){if(e.length<2)throw new ut(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=Md[t];if(!s)throw new ut(`unknown file-transfer opcode 0x${t.toString(16)}`);const r=e.subarray(2);switch(s){case"Begin":{let o;try{o=JSON.parse(_s.decode(r))}catch{throw new ut("begin payload is not valid JSON")}const i=Or.safeParse(o);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:r.slice()};case"End":return{opcode:"End",stream:n,ok:(r[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:_s.decode(r)}}}function Nd(e){try{return Pd(e)}catch{return null}}const Ze=256;function Dd(e,t=0){const n=(t%Ze+Ze)%Ze;for(let s=0;s<Ze;s++){const r=(n+s)%Ze;if(!e.has(r))return r}return null}const $d=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),Od=Ie(["safe","moderate","dangerous","planning"]),Ld=h({supportsStreaming:E(),supportsSessionPersistence:E(),supportsDynamicModes:E(),supportsMcpServers:E(),supportsReasoningStream:E(),supportsToolInvocations:E(),supportsRewindConversation:E().optional(),supportsRewindFiles:E().optional(),supportsRewindBoth:E().optional(),supportsSteering:E().optional(),supportsExtensionUi:E().optional()}).passthrough(),Bd=h({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:Od});h({id:$d,label:l(),description:l().optional(),extends:l().optional(),modes:D(Bd),capabilities:Ld});function Tn(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function Lr(e){let t=null;const n={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1},connect(s){return new Promise((r,o)=>{const i=e??(()=>new WebSocket(s));try{t=e?i(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(a){o(a);return}t.onopen=()=>r(),t.onerror=a=>{var d;(t==null?void 0:t.readyState)!==1&&o(a),(d=n.onError)==null||d.call(n,a)},t.onclose=a=>{var d;(d=n.onClose)==null||d.call(n,a.code,Tn(a.reason))},t.onmessage=a=>{var u,p,f,m;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?(f=n.onMessage)==null||f.call(n,d):Buffer.isBuffer(d)&&((m=n.onMessage)==null||m.call(n,d.buffer.slice(d.byteOffset,d.byteOffset+d.byteLength)))}})},sendText(s){t==null||t.send(s)},sendBinary(s){t==null||t.send(s)},close(s=1e3,r=""){t==null||t.close(s,r),t=null}};return n}const ft="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Br(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],r=n+1<e.length,o=n+2<e.length,i=r?e[n+1]:0,a=o?e[n+2]:0;t+=ft[s>>2],t+=ft[(s&3)<<4|i>>4],t+=r?ft[(i&15)<<2|a>>6]:"=",t+=o?ft[a&63]:"="}return t}function Fr(e){const t=e.replace(/=+$/,""),n=[];let s=0,r=0;for(const o of t){const i=ft.indexOf(o);if(i===-1)throw new Error(`invalid base64 character: ${JSON.stringify(o)}`);s=s<<6|i,r+=6,r>=8&&(r-=8,n.push(s>>r&255))}return new Uint8Array(n)}function Fd(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const Ft=24;function zr(e,t){const n=et.randomBytes(Ft),s=et.box.after(e,n,t),r=new Uint8Array(n.length+s.length);return r.set(n,0),r.set(s,n.length),Br(r)}function Wr(e,t){let n;try{n=Fr(e)}catch{return null}if(n.length<Ft)return null;const s=n.slice(0,Ft),r=n.slice(Ft);return et.box.open.after(r,s,t)}function zd(e,t){return zr(new TextEncoder().encode(e),t)}function Wd(e,t){const n=Wr(e,t);return n?new TextDecoder().decode(n):null}function Ud(e,t,n,s,r,o){let i=!1;return n.onClose(a=>{var d;i=!0,(d=s.onClose)==null||d.call(s,a)}),{handleAppFrame(a){var p,f;if(i)return;const d=r();if(!o()||!d)return;const u=Wd(a.frame,d);if(u===null){(p=s.onAuthError)==null||p.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(f=s.onMessage)==null||f.call(s,u)},handleBinaryFrame(a){var p,f;if(i)return;const d=r();if(!o()||!d)return;const u=Wr(a.frame,d);if(u===null){(p=s.onAuthError)==null||p.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(f=s.onBinaryMessage)==null||f.call(s,u)},send(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const d=r();if(!o()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_app",frame:zd(a,d)}))},sendBinary(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const d=r();if(!o()||!d)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_bin",frame:zr(a,d)}))},close(){i||(i=!0,n.close())}}}function Hd(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,r=e.events??{},o=et.box.keyPair(),i=et.box.before(s,o.secretKey);let a=!1;const d=Ud("client",n,t,r,()=>i,()=>a);return t.onMessage(u=>{var f;const p=Fd(u);if(p){if(p.type==="e2ee_ready"){if(a)return;a=!0,(f=r.onReady)==null||f.call(r);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:Br(o.publicKey)})),{role:"client",attachment:n,get ready(){return a},send:d.send,sendBinary:d.sendBinary,close:d.close}}const Vd=16;function Kd(e){const t=et.hash(e);let n="";for(let s=0;s<Vd;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Gd(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function Yd(e){let t=null,n=null;const s=e.sessionId??Kd(e.daemonPublicKey),r={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},connect(o){return new Promise((i,a)=>{const d=e.factory??(()=>new WebSocket(o));try{t=e.factory?d(o):new WebSocket(o)}catch(m){a(m);return}const u=t,p=[],f=[];u.onopen=()=>{u.send(JSON.stringify({type:"relay_register",sessionId:s})),n=Hd({transport:{send:m=>u.send(m),onMessage:m=>p.push(m),onClose:m=>f.push(m),close:()=>u.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>i(),onMessage:m=>{var g;return(g=r.onMessage)==null?void 0:g.call(r,m)},onBinaryMessage:m=>{var g;return(g=r.onMessage)==null?void 0:g.call(r,m.slice().buffer)},onAuthError:m=>{var g;return(g=r.onError)==null?void 0:g.call(r,m)}}})},u.onerror=m=>{var g;u.readyState!==1&&a(m),(g=r.onError)==null||g.call(r,m)},u.onclose=m=>{var g;for(const k of f)k(Tn(m.reason));(g=r.onClose)==null||g.call(r,m.code,Tn(m.reason))},u.onmessage=m=>{const{data:g}=m;if(typeof g=="string")for(const k of p)k(g)}})},sendText(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(o)},sendBinary(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(o)},close(o=1e3,i=""){n==null||n.close(),n=null,t==null||t.close(o,i),t=null}};return r}function Xd(e){const t=e.indexOf("#"),n=t===-1?e:e.slice(t+1),s=new URLSearchParams(n),r=s.get("offer");if(!r)return null;let o;try{o=Fr(r)}catch{return null}const i=s.get("relay");if(i){const d={endpoint:i,useTls:s.get("relayTls")==="1"};return{publicKeyB64:r,publicKey:o,relay:d}}const a=s.get("host")??void 0;return{publicKeyB64:r,publicKey:o,...a?{host:a}:{}}}const Jd=1;function Cn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class Zd extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class ys extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class Qd{constructor(t){F(this,"transport");F(this,"rpcTimeoutMs");F(this,"now");F(this,"_state","idle");F(this,"_serverId",null);F(this,"_features",{});F(this,"_serverCapabilities",{});F(this,"pending",new Map);F(this,"sessionHandlers",new Set);F(this,"terminalHandlers",new Set);F(this,"fileTransferHandlers",new Set);F(this,"stateHandlers",new Set);F(this,"helloResolve",null);F(this,"helloReject",null);this.options=t,this.transport=t.transport??Lr(),this.rpcTimeoutMs=t.rpcTimeoutMs??3e4,this.now=t.now??(()=>Date.now()),this.transport.onMessage=n=>this.handleIncoming(n),this.transport.onClose=(n,s)=>this.handleClose(n,s),this.transport.onError=()=>{}}get state(){return this._state}get serverId(){return this._serverId}get features(){return this._features}get serverCapabilities(){return this._serverCapabilities}hasFeature(t){return!!this._features[t]}async connect(){this.setState("connecting"),await this.transport.connect(this.options.url);const t=new Promise((s,r)=>{this.helloResolve=s,this.helloReject=r});this.transport.sendText(JSON.stringify({type:"hello",clientId:this.options.clientId,clientType:this.options.clientType,protocolVersion:this.options.protocolVersion??Jd,appVersion:this.options.appVersion,capabilities:this.options.capabilities}));const n=await t;return this._serverId=n.serverId,this._features=n.features,this._serverCapabilities=n.capabilities,this.setState("open"),n}close(t=1e3,n=""){this.setState("closing"),this.transport.close(t,n)}request(t,n={},s){const r=n.requestId??Cn();return new Promise((o,i)=>{const a=s??this.rpcTimeoutMs,d=a>0?setTimeout(()=>{this.pending.delete(r),i(new ys(r))},a):null;this.pending.set(r,{resolve:u=>o(u),reject:i,timer:d}),this.sendSession({type:t,...n,requestId:r})})}sendSession(t){this.transport.sendText(JSON.stringify({type:"session",message:t}))}sendBinary(t){this.transport.sendBinary(t)}ping(t=1e4){const n=Cn();return new Promise((s,r)=>{const o=t>0?setTimeout(()=>{this.pending.delete(n),r(new ys(n))},t):null;this.pending.set(n,{resolve:()=>s(),reject:r,timer:o}),this.transport.sendText(JSON.stringify({type:"ping",requestId:n,clientSentAt:this.now()}))})}onSessionMessage(t){return this.sessionHandlers.add(t),()=>this.sessionHandlers.delete(t)}onTerminalFrame(t){return this.terminalHandlers.add(t),()=>this.terminalHandlers.delete(t)}onFileTransferFrame(t){return this.fileTransferHandlers.add(t),()=>this.fileTransferHandlers.delete(t)}onStateChange(t){return this.stateHandlers.add(t),()=>this.stateHandlers.delete(t)}setState(t){if(this._state!==t){this._state=t;for(const n of this.stateHandlers)n(t)}}handleClose(t,n){this.helloReject&&(this.helloReject(new Error(`socket closed during handshake: ${n}`)),this.helloResolve=null,this.helloReject=null);for(const[,s]of this.pending)s.timer&&clearTimeout(s.timer),s.reject(new Error(`socket closed: ${n}`));this.pending.clear(),this.setState("closed")}handleIncoming(t){if(typeof t=="string"){this.handleTextFrame(t);return}if(t instanceof ArrayBuffer){this.handleBinaryFrame(new Uint8Array(t));return}typeof t.arrayBuffer=="function"&&t.arrayBuffer().then(n=>this.handleBinaryFrame(new Uint8Array(n)))}handleBinaryFrame(t){const n=t[0];if(n!==void 0&&Object.values(Qe).includes(n)){const o=Nd(t);if(!o)return;for(const i of this.fileTransferHandlers)i(o);return}const r=Ad(t);for(const o of this.terminalHandlers)o(r)}handleTextFrame(t){let n;try{n=JSON.parse(t)}catch{return}const s=n;switch(s.type){case"status":this.handleStatus(s);return;case"pong":this.resolvePending(s.requestId,void 0);return;case"ping":this.transport.sendText(JSON.stringify({type:"pong",requestId:s.requestId,serverReceivedAt:this.now(),serverSentAt:this.now()}));return;case"session":this.handleSession(s.message);return;default:return}}handleStatus(t){const n=t.payload;(n==null?void 0:n.status)==="server_info"&&this.helloResolve&&(this.helloResolve(n),this.helloResolve=null,this.helloReject=null)}handleSession(t){if(!t||typeof t!="object")return;const n=t;if(n.type==="rpc_error"&&typeof n.requestId=="string"){const s=this.pending.get(n.requestId);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(n.requestId),s.reject(new Zd(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 eu=10*6e4,tu=660*1e3,nu=1300*1e3,su=150*1e3,ru=660*1e3;function ou(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 ws extends Error{constructor(t,n){super(t),this.operation=n,this.name="ProviderAuthError"}}class vs extends Error{constructor(t){super("prompt_cancelled"),this.promptId=t,this.name="PromptCancelledError"}}class iu extends Error{constructor(t,n){super(t),this.operation=n,this.name="AgentUiError"}}function au(e){const t=e;return!!t&&t.type==="agent_ui_request"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}function cu(e){const t=e;return!!t&&t.type==="agent_ui_resolved"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}function lu(e){const t=e;return!!t&&t.type==="agent_archived"&&typeof t.agentId=="string"}function du(e){const t=e;return!!t&&t.type==="agent_deleted"&&typeof t.agentId=="string"}class uu{constructor(t){F(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 pu(this.daemon,t)}workspace(t){return new hu(this.daemon,t)}get providers(){return new gu(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 ws(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 ws(n.error??"failed to log out","logout");return{stillConfigured:n.stillConfigured}}async loginProvider(t,n,s,r){var f;if(this.activeProviderAuthFlow)throw new Error("a provider-auth login is already in progress for this client");let o;const i=new Promise(m=>{o=m}),a={flowId:null,buffered:[],pendingPrompt:null,cancelRequested:((f=r==null?void 0:r.signal)==null?void 0:f.aborted)??!1,terminal:!1,settle:o,unsubscribe:null};this.activeProviderAuthFlow=a;const d=this.daemon.onSessionMessage(m=>{ou(m)&&this.routeProviderAuthEvent(a,m,s)}),u=this.daemon.onStateChange(m=>{m==="closed"&&this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})});let p=null;if(r!=null&&r.signal){const m=r.signal;p=()=>{a.cancelRequested=!0,a.flowId&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})},m.addEventListener("abort",p,{once:!0}),a.unsubscribe=()=>{d(),u(),m.removeEventListener("abort",p)}}else a.unsubscribe=()=>{d(),u()};try{const m=await this.daemon.request("provider_auth_login_request",{provider:t,authType:n});if(a.terminal)return i;if(!m.ok||!m.flowId)return this.settleProviderAuthFlow(a,{ok:!1,error:m.error}),i;a.flowId=m.flowId;const g=a.buffered;a.buffered=[];for(const k of g)k.flowId===a.flowId&&this.dispatchProviderAuthEvent(a,k.event,s);a.cancelRequested&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})}catch{a.terminal||this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})}return i}routeProviderAuthEvent(t,n,s){if(!t.terminal){if(t.flowId===null){t.buffered.push(n);return}n.flowId===t.flowId&&this.dispatchProviderAuthEvent(t,n.event,s)}}dispatchProviderAuthEvent(t,n,s){var r;switch(n.kind){case"done":this.settleProviderAuthFlow(t,{ok:!!n.ok,error:typeof n.error=="string"?n.error:void 0});return;case"prompt_cancelled":{const o=n.promptId;t.pendingPrompt&&t.pendingPrompt.promptId===o&&(t.pendingPrompt.reject(new vs(o)),t.pendingPrompt=null);return}case"prompt":this.handleProviderAuthPrompt(t,n,s);return;default:(r=s.onEvent)==null||r.call(s,n);return}}async handleProviderAuthPrompt(t,n,s){const r=new AbortController,o={promptId:n.promptId,promptKind:n.promptKind,message:n.message,placeholder:n.placeholder,options:n.options,signal:r.signal};let i;const a=new Promise((u,p)=>{i=p});a.catch(()=>{}),t.pendingPrompt={promptId:o.promptId,reject:u=>{r.abort(),i(u)}};const d=s.prompt(o);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:o.promptId,value:u})}catch(u){if(t.pendingPrompt=null,t.terminal||u instanceof vs)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=>{au(n)&&t(n,{receivedAt:Date.now()})})}onAgentUiResolved(t){return this.daemon.onSessionMessage(n=>{cu(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 iu(n.error??"failed to list extension UI state","list");return{pending:n.pending??[],surfaces:n.surfaces??[]}}extensionUiAvailable(){return this.daemon.hasFeature("extensionUi")}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,tu)}async updateAllSkills(){return this.daemon.request("skills_update_all_request",{},nu)}async previewSkillSource(t){return this.daemon.request("skills_preview_request",{source:t},su)}async installSkills(t){return this.daemon.request("skills_install_request",t,ru)}onSkillsChanged(t){return this.daemon.onSessionMessage(n=>{n.type==="skills_changed"&&t(n.reason)})}}class fu{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 pu{constructor(t,n){F(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new fu(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},eu)}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 hu{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 gu{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 Un={pending:{},surfaces:{},resolved:{}},mu=50;function Ur(e,t){return`${e}\0${t}`}function Rn(e){return typeof e=="number"?e:Date.parse(e)}function _u(e,t){switch(t.type){case"ui_request":return yu(e,t.event,t.meta);case"ui_resolved":return{state:bu(e,t.event),effects:[]};case"snapshot":return{state:Su(t.pending,t.surfaces,e.resolved),effects:[]};case"disconnected":return{state:xu(e),effects:[]};case"agent_removed":return{state:Iu(e,t.agentId),effects:[]};case"respond_sent":return{state:Eu(e,t.requestId,t.response),effects:[]};case"respond_failed":return{state:Tu(e,t.requestId),effects:[]}}}function yu(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=Ur(t.agentId,t.surfaceKey);if(t.removed){if(!(s in e.surfaces))return{state:e,effects:[]};const o={...e.surfaces};return delete o[s],{state:{...e,surfaces:o},effects:[]}}const r={agentId:t.agentId,surfaceKey:t.surfaceKey,method:t.method,payload:t.payload,updatedAt:t.createdAt};return{state:{...e,surfaces:{...e.surfaces,[s]:r}},effects:[]}}return{state:e,effects:wu(t)}}function wu(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 vu(e,t){if(!(e!=="select"&&e!=="confirm"))return{value:t.value,confirmed:t.confirmed}}function bu(e,t){const n=e.pending[t.requestId];if(!n)return e;const s={...e.pending};delete s[t.requestId];const r={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,createdAt:n.createdAt,reason:t.reason};return n.submittedAnswer!==void 0&&(r.answer=n.submittedAnswer),{...e,pending:s,resolved:ku(e.resolved,r)}}function ku(e,t){const n={...e,[t.requestId]:t},s=Object.values(n).filter(o=>o.agentId===t.agentId).toSorted((o,i)=>Hn(o.createdAt,o.requestId,i.createdAt,i.requestId)),r=s.length-mu;if(r<=0)return n;for(const o of s.slice(0,r))delete n[o.requestId];return n}function Su(e,t,n){const s={};for(const o of e)s[o.requestId]={requestId:o.requestId,agentId:o.agentId,method:o.method,payload:o.payload,timeoutMs:o.timeoutMs,createdAt:o.createdAt,answerable:!0};const r={};for(const o of t)r[Ur(o.agentId,o.surfaceKey)]={agentId:o.agentId,surfaceKey:o.surfaceKey,method:o.method,payload:o.payload,updatedAt:o.updatedAt};return{pending:s,surfaces:r,resolved:n}}function xu(e){const t={};for(const[n,s]of Object.entries(e.pending))t[n]={...s,answerable:!1};return{...e,pending:t}}function Iu(e,t){const n={};for(const[o,i]of Object.entries(e.pending))i.agentId!==t&&(n[o]=i);const s={};for(const[o,i]of Object.entries(e.surfaces))i.agentId!==t&&(s[o]=i);const r={};for(const[o,i]of Object.entries(e.resolved))i.agentId!==t&&(r[o]=i);return{pending:n,surfaces:s,resolved:r}}function Eu(e,t,n){const s=e.pending[t];if(!s)return e;const r=vu(s.method,n),o={...s,submitting:!0};return r!==void 0&&(o.submittedAnswer=r),{...e,pending:{...e.pending,[t]:o}}}function Tu(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 Hn(e,t,n,s){const r=Rn(e)-Rn(n);return r!==0?r:t.localeCompare(s)}function Cu(e,t){return Object.values(e.pending).filter(n=>n.agentId===t).toSorted((n,s)=>Hn(n.createdAt,n.requestId,s.createdAt,s.requestId))}function Ru(e){const t={};for(const n of Object.values(e.pending))t[n.agentId]=(t[n.agentId]??0)+1;return t}function ju(e,t){return Object.values(e.resolved).filter(n=>n.agentId===t).toSorted((n,s)=>Hn(n.createdAt,n.requestId,s.createdAt,s.requestId))}function Mv(e,t){if(e.timeoutMs===void 0)return null;const n=e.receivedAt??Rn(e.createdAt);return Math.max(0,e.timeoutMs-(t-n))}function bs(e){return e.expectsResponse?"dialog":e.surfaceKey!==void 0?"surface":"transient"}function Au(e,t={}){let n=Un;const s=new Set,r=new Set;let o=!1,i=!1,a=[],d=0;function u(y){if(o)return;const S=_u(n,y);n=S.state,y.type==="ui_request"&&bs(y.event)==="transient"&&S.effects.length===0&&p(y.event.method);for(const I of s)I(n,S.effects)}function p(y){r.has(y)||(r.add(y),t.onUnknownMethod?t.onUnknownMethod(y):console.warn(`agent-ui-controller: unknown extension-UI method "${y}"`))}async function f(){if(o||!e.extensionUiAvailable())return;const y=++d;i||(i=!0,a=[]);let S;try{S=await e.listAgentUi()}catch(A){if(o||y!==d)return;i=!1,a=[];const U=A instanceof Error?A.message:String(A);console.error(`agent-ui-controller: failed to sync extension UI state: ${U}`);return}if(o||y!==d)return;i=!1;const I=a;a=[],u({type:"snapshot",pending:S.pending,surfaces:S.surfaces});for(const A of I)A.type==="ui_request"&&bs(A.event)==="transient"&&u(A)}const m=e.onAgentUiRequest((y,S)=>{const I={type:"ui_request",event:y,meta:S};i?a.push(I):u(I)}),g=e.onAgentUiResolved(y=>{const S={type:"ui_resolved",event:y};i?a.push(S):u(S)}),k=e.connection.onSessionMessage(y=>{(lu(y)||du(y))&&u({type:"agent_removed",agentId:y.agentId})}),_=e.connection.onStateChange(y=>{y==="closed"||y==="closing"?u({type:"disconnected"}):y==="open"&&f()});f();async function x(y,S){u({type:"respond_sent",requestId:y,response:S});const I=await e.respondToUi(y,S);return I.ok||u({type:"respond_failed",requestId:y}),I}return{getState:()=>n,subscribe(y){return s.add(y),()=>s.delete(y)},respond:x,resync:f,dispose(){o||(o=!0,m(),g(),k(),_(),s.clear(),a=[])}}}const ks=32*1024,Mu="invalid_or_expired_token";function qu(e){const t=e.reduce((r,o)=>r+o.length,0),n=new Uint8Array(t);let s=0;for(const r of e)n.set(r,s),s+=r.length;return n}class Pu{constructor(t){F(this,"pending",new Map);F(this,"streamCursor",1);F(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!==Mu)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=Dd(this.pending,this.streamCursor);if(s===null)throw new Error("no free download stream");this.streamCursor=(s+1)%Ze;const r=new Promise((i,a)=>{this.pending.set(s,{chunks:[],meta:{},resolve:i,reject:a})});let o;try{o=await this.daemon.request("file_download_request",{token:n.token,stream:s})}catch(i){throw this.pending.delete(s),i}if(!o.ok)throw this.pending.delete(s),new Error(o.error??"download request failed");return r}async upload(t,n){const s=Cn(),r=await this.daemon.request("file_upload_request",{path:t,transferId:s});if(!r.ok||r.stream===void 0)throw new Error(r.error??"upload request failed");const o=r.stream;this.daemon.sendBinary(fn({opcode:"Begin",stream:o,meta:{transferId:s}}));for(let i=0;i<n.length;i+=ks){const a=n.subarray(i,i+ks);this.daemon.sendBinary(fn({opcode:"Chunk",stream:o,data:a}))}this.daemon.sendBinary(fn({opcode:"End",stream:o,ok:!0}))}dispatch(t){const n=this.pending.get(t.stream);if(n)switch(t.opcode){case"Begin":n.meta.fileName=t.meta.fileName,n.meta.mimeType=t.meta.mimeType;return;case"Chunk":n.chunks.push(t.data);return;case"End":this.pending.delete(t.stream),t.ok?n.resolve({bytes:qu(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 Nu{constructor(t,n={}){F(this,"initialDelayMs");F(this,"maxDelayMs");F(this,"factor");F(this,"jitter");F(this,"maxAttempts");F(this,"setTimer");F(this,"clearTimer");F(this,"random");F(this,"attempt",0);F(this,"timer",null);F(this,"active",!1);F(this,"reconnecting",!1);F(this,"detachState",null);F(this,"reconnectedHandlers",new Set);F(this,"failedHandlers",new Set);this.daemon=t,this.initialDelayMs=n.initialDelayMs??500,this.maxDelayMs=n.maxDelayMs??3e4,this.factor=n.factor??2,this.jitter=n.jitter??.2,this.maxAttempts=n.maxAttempts??Number.POSITIVE_INFINITY,this.setTimer=n.setTimer??((s,r)=>setTimeout(s,r)),this.clearTimer=n.clearTimer??(s=>clearTimeout(s)),this.random=n.random??Math.random}delayForAttempt(t){const n=Math.min(this.maxDelayMs,this.initialDelayMs*this.factor**(t-1)),s=n*this.jitter*(this.random()*2-1);return Math.max(0,Math.round(n+s))}onReconnected(t){return this.reconnectedHandlers.add(t),()=>this.reconnectedHandlers.delete(t)}onReconnectFailed(t){return this.failedHandlers.add(t),()=>this.failedHandlers.delete(t)}start(){this.active||(this.active=!0,this.detachState=this.daemon.onStateChange(t=>{t==="closed"&&this.active&&this.scheduleReconnect(),t==="open"&&(this.attempt=0)}))}stop(){var t;this.active=!1,this.timer&&this.clearTimer(this.timer),this.timer=null,(t=this.detachState)==null||t.call(this),this.detachState=null}reconnectNow(){this.active&&(this.reconnecting||this.daemon.state==="closed"&&(this.timer&&(this.clearTimer(this.timer),this.timer=null),this.attempt=0,this.tryReconnect()))}get attemptCount(){return this.attempt}scheduleReconnect(){if(!this.active||this.timer||this.attempt>=this.maxAttempts)return;this.attempt+=1;const t=this.delayForAttempt(this.attempt);this.timer=this.setTimer(()=>{this.timer=null,!this.reconnecting&&this.tryReconnect()},t)}async tryReconnect(){if(!this.active||this.reconnecting)return;this.reconnecting=!0;const t=this.attempt;try{await this.daemon.connect();for(const n of this.reconnectedHandlers)n({attempt:t,serverId:this.daemon.serverId})}catch(n){for(const s of this.failedHandlers)s(n,t);this.scheduleReconnect()}finally{this.reconnecting=!1}}}function Ss(e){const t=e.trim();if(t==="")return t;const n=t.match(/^([a-z][a-z0-9+.-]*):\/\//i);if(!n)return`ws://${t.replace(/\/+$/,"")}`;const s=n[1].toLowerCase(),r=t.slice(n[0].length).replace(/\/+$/,"");switch(s){case"http":return`ws://${r}`;case"https":return`wss://${r}`;case"ws":case"wss":return`${s}://${r}`;default:return t}}function Vn(e){const t=Xd(e);return t!=null&&t.relay?{mode:"relay",url:Gd(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:Ss(t.host)}:{mode:"direct",url:Ss(e)}}const Du=`
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 $u(){return{setTimer:(e,t)=>setTimeout(e,t),clearTimer:e=>clearTimeout(e)}}function Ou(){const e=new Blob([Du],{type:"application/javascript"}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t);const s=new Map;let r=1;return n.addEventListener("message",o=>{const i=s.get(o.data.id);s.delete(o.data.id),i==null||i()}),{setTimer:(o,i)=>{const a=r++;return s.set(a,o),n.postMessage({id:a,ms:i}),a},clearTimer:o=>{const i=o;s.delete(i)&&n.postMessage({id:i,cancel:!0})}}}let ct=null;function xs(){if(ct)return ct;try{ct=Ou()}catch{ct=$u()}return ct}function Lu(){return{setTimer:(e,t)=>xs().setTimer(e,t),clearTimer:e=>xs().clearTimer(e)}}const Bu=32,ue=new Map;function Fu(){for(;ue.size>Bu;){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 qv(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),Fu(),s.pending=t(e).then(r=>{const o=new Blob([Uint8Array.from(r.bytes)],{type:r.mimeType||"application/octet-stream"}),i={objectUrl:URL.createObjectURL(o),mimeType:r.mimeType};return ue.get(e)===s?(s.entry=i,s.pending=null):URL.revokeObjectURL(i.objectUrl),i}).catch(r=>{throw ue.get(e)===s&&ue.delete(e),r}),s.pending}function Pv(e){const t=ue.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function zu(){for(const e of ue.values())e.entry&&URL.revokeObjectURL(e.entry.objectUrl);ue.clear()}function Wu(){return"web-"+Math.random().toString(36).slice(2,10)}const q=le()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=Vn(n.url);let r;s.mode==="relay"?r=Yd({daemonPublicKey:s.daemonPublicKey}):n.password&&(r=Lr(p=>new WebSocket(p,[`pi-studio.bearer.${n.password}`])));const o=new Qd({url:s.url,clientId:n.clientId??Wu(),clientType:"browser",capabilities:{[Nt.inline_image_markdown]:!0,[Nt.file_link_markdown]:!0,[Nt.mermaid_diagram_markdown]:!0,[Nt.terminal_reflowable_snapshot]:!0},transport:r,rpcTimeoutMs:1800*1e3}),i=new uu(o),{setTimer:a,clearTimer:d}=Lu(),u=new Nu(o,{setTimer:a,clearTimer:d});o.onStateChange(p=>e({status:p})),u.onReconnected(()=>e({error:null})),u.onReconnectFailed(p=>{e({error:p instanceof Error?p.message:String(p)})}),e({daemon:o,client:i,reconnection:u,error:null,status:"connecting"});try{const p=await o.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(),zu(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}}));function Kn(){return q(e=>e.client)}function Hr(){var e;return((e=q.getState().serverInfo)==null?void 0:e.homeDir)??null}const Uu=w.lazy(()=>de(()=>import("./ModelProvidersPanel-BGnWcyq9.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).then(e=>({default:e.ModelProvidersPanel}))),Hu=w.lazy(()=>de(()=>import("./SkillsPanel-BPOQfm8q.js"),__vite__mapDeps([13,1,3,4,14,7,8,15,2,9,10,11,16])).then(e=>({default:e.SkillsPanel}))),Vu=w.lazy(()=>de(()=>import("./ViewersPanel-DKQeezkV.js"),__vite__mapDeps([17,1,14,7,8,15,2,9,10,11,18])).then(e=>({default:e.ViewersPanel}))),Ku=[{id:"providers",label:"Model Providers",icon:fi,component:Uu,available:e=>e.providerAuth},{id:"skills",label:"Skills",icon:pi,component:Hu,available:e=>e.skills},{id:"viewers",label:"Viewers",icon:tn,component:Vu,available:()=>!0}];function Gu(e){return{providerAuth:!!(e!=null&&e.providerAuth),skills:!!(e!=null&&e.skills)}}const Yu=100,Xu=480,Ju=220,Zu=280;function $t(e){return Math.min(Xu,Math.max(Yu,e))}const N=le()(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:Ju,rightSidebarWidth:Zu,setHost:t=>e({host:t}),setPassword:t=>e({password:t}),setCwd:t=>e({cwd:t}),openCwdPicker:()=>e({cwdPickerOpen:!0}),closeCwdPicker:()=>e({cwdPickerOpen:!1}),openSettings:()=>e({settingsOpen:!0}),closeSettings:()=>e({settingsOpen:!1}),openSessionMenu:(t,n,s)=>e({sessionMenu:{sessionId:t,x:n,y:s}}),closeSessionMenu:()=>e({sessionMenu:null}),openWorkspaceMenu:(t,n,s)=>e({workspaceMenu:{cwd:t,x:n,y:s}}),closeWorkspaceMenu:()=>e({workspaceMenu:null}),openTabMenu:(t,n,s)=>e({tabMenu:{tabId:t,x:n,y:s}}),closeTabMenu:()=>e({tabMenu:null}),openFileMenu:(t,n,s,r,o)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:r,background:o}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),setCollapsedWorkspaces:t=>e({collapsedWorkspaces:t}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:$t(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:$t(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:$t(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:$t(n.rightSidebarWidth+t)}))}));function Qu(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 Is=40;function Vr(e){return/^\[object [A-Za-z]+\]$/.test(e)}function ef(e){const t=(e.split(`
18
+ `)[0]??"").trim();return t===""||Vr(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>Is?`${t.slice(0,Is-1)}…`:t}function Kr(e){if(e.trim()==="")return!1;try{const t=Vn(e);return/^wss?:\/\//i.test(t.url)?new URL(t.url).hostname!=="":!1}catch{return!1}}function Es(e){try{const{url:t}=Vn(e);return t===""?null:t}catch{return null}}function tf(e){const{status:t,error:n,url:s}=e;if(t==="open"){const o=Es(s);return{kind:"connected",statusLabel:"connected",hostLabel:o,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!1},title:o?`${o} · connected`:"connected"}}if(t==="closing"){const o=Es(s);return{kind:"closing",statusLabel:"disconnecting…",hostLabel:o,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!0},title:o?`${o} · disconnecting…`:"disconnecting…"}}if(t==="connecting")return{kind:"connecting",statusLabel:"connecting…",hostLabel:null,showFields:!0,fieldsFrozen:!0,action:{label:"Connecting…",variant:"default",disabled:!0},title:"connecting…"};const r=Kr(s);if(n!==null&&n!==""){const o=ef(n);return{kind:"error",statusLabel:o,hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Retry",variant:"default",disabled:!r},title:Vr(n.trim())?o:n}}return{kind:"disconnected",statusLabel:"disconnected",hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Connect",variant:"default",disabled:!r},title:"disconnected"}}const nf="_bar_1o0iw_9",sf="_title_1o0iw_21",rf="_brand_1o0iw_27",of="_version_1o0iw_33",af="_statusPill_1o0iw_41",cf="_statusText_1o0iw_60",lf="_statusHost_1o0iw_68",df="_statusSep_1o0iw_76",uf="_statusLabel_1o0iw_79",ff="_statusDot_1o0iw_82",pf="_statusSpinner_1o0iw_83",hf="_statusPillError_1o0iw_87",gf="_field_1o0iw_4",mf="_fieldUrl_1o0iw_111",_f="_fieldPassword_1o0iw_115",yf="_fieldInvalid_1o0iw_122",wf="_action_1o0iw_139",vf="_panelToggles_1o0iw_147",bf="_panelToggle_1o0iw_147",J={bar:nf,title:sf,brand:rf,version:of,statusPill:af,statusText:cf,statusHost:lf,statusSep:df,statusLabel:uf,statusDot:ff,statusSpinner:pf,statusPillError:hf,field:gf,fieldUrl:mf,fieldPassword:_f,fieldInvalid:yf,action:wf,panelToggles:vf,panelToggle:bf},kf=w.lazy(()=>de(()=>import("./SettingsDialog-TBdq-cJW.js"),__vite__mapDeps([19,1,7,8,2,6,9,10,11,20])).then(e=>({default:e.SettingsDialog}))),Le=26,Sf="var(--pi-font-size-2xs)",xf=9,Ts="host:port, ws://…/http://…, or a pasted pairing link";function If(){const e=q(j=>j.status),t=q(j=>j.error),n=q(j=>j.connect),s=q(j=>j.disconnect),r=q(j=>j.serverInfo),o=N(j=>j.host),i=N(j=>j.setHost),a=N(j=>j.password),d=N(j=>j.setPassword),u=N(j=>j.leftSidebarCollapsed),p=N(j=>j.toggleLeftSidebar),f=N(j=>j.rightSidebarCollapsed),m=N(j=>j.toggleRightSidebar),g=N(j=>j.settingsOpen),k=N(j=>j.openSettings),_=N(j=>j.closeSettings),x=Gu(r==null?void 0:r.features),y=Ku.some(j=>j.available(x)),[S,I]=w.useState(g);w.useEffect(()=>{g&&I(!0)},[g]);const A=tf({status:e,error:t,url:o}),U=Qu(A.kind),G=w.useRef({host:o,password:a}),[oe,$]=w.useState(!1),Z=oe&&o.trim()!==""&&!Kr(o);function pe(){A.action.disabled||(G.current={host:o,password:a},n({url:o,password:a||void 0}))}function Y(){if(A.kind==="connected"||A.kind==="closing"){s();return}pe()}function ye(j,P){if(j.key==="Enter"){j.preventDefault(),pe();return}j.key==="Escape"&&(j.preventDefault(),P==="url"?(i(G.current.host),$(!1)):d(G.current.password),j.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.113"]})]}),c.jsxs("span",{className:z(J.statusPill,A.kind==="error"&&J.statusPillError),title:A.title,children:[U?c.jsx(sn,{...U,className:J.statusDot}):c.jsx(Cr,{size:xf,color:"var(--pi-color-statusWarning)",className:J.statusSpinner,"aria-label":"Connecting"}),c.jsxs("span",{className:J.statusText,children:[A.hostLabel&&c.jsx("span",{className:J.statusHost,children:A.hostLabel}),A.hostLabel&&c.jsx("span",{className:J.statusSep,"aria-hidden":!0,children:"·"}),c.jsx("span",{className:J.statusLabel,"aria-live":"polite",children:A.statusLabel})]})]}),A.showFields&&c.jsxs(c.Fragment,{children:[c.jsx(Kt,{className:z(J.field,J.fieldUrl,Z&&J.fieldInvalid),value:o,onChange:j=>i(j.target.value),onFocus:()=>$(!1),onBlur:()=>$(!0),onKeyDown:j=>ye(j,"url"),readOnly:A.fieldsFrozen,placeholder:"ws://127.0.0.1:6767",title:Z?`Not a dialable daemon address — ${Ts}`:Ts,"aria-label":"Daemon address","aria-invalid":Z||void 0,spellCheck:!1,autoComplete:"off"}),c.jsx(Kt,{className:z(J.field,J.fieldPassword),type:"password",value:a,onChange:j=>d(j.target.value),onKeyDown:j=>ye(j,"password"),readOnly:A.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:A.action.variant,disabled:A.action.disabled,style:{minHeight:Le,fontSize:Sf},onClick:Y,children:A.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(re,{icon:u?hi:gi,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:f?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>m(),children:c.jsx(re,{icon:f?mi:_i,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:()=>k(),children:c.jsx(re,{icon:yi,size:"sm"})})]}),S&&c.jsx(w.Suspense,{fallback:null,children:c.jsx(kf,{open:g,onOpenChange:j=>j?k():_()})})]})}const on={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let Cs=0;function qe(){return Cs+=1,`row-${Cs}`}function Ef(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 Tf(e,t){return e??`${t.kind}:${Ef(t)}`}function tt(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 Gr(e){if(e.streamingAssistantIndex===null&&e.streamingReasoningIndex===null)return e;const t=e.rows.slice();return tt(t,e.streamingAssistantIndex),tt(t,e.streamingReasoningIndex),{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function Cf(e){return Gr(e)}function Rf(e,t,n,s){var a;const r=e.rows.slice();tt(r,e.streamingReasoningIndex);let o=e.streamingAssistantIndex;if(o===null||((a=r[o])==null?void 0:a.kind)!=="assistant"){if(!t)return{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null};const d={kind:"assistant",id:qe(),text:"",streaming:!0,timestamp:s};r.push(d),o=r.length-1}const i=r[o];return!i||i.kind!=="assistant"?e:(r[o]={...i,text:i.text+t,streaming:!n},{...e,rows:r,streamingAssistantIndex:n?null:o,streamingReasoningIndex:null})}function jf(e,t,n,s){var a;const r=e.rows.slice();tt(r,e.streamingAssistantIndex);let o=e.streamingReasoningIndex;if(o===null||((a=r[o])==null?void 0:a.kind)!=="reasoning"){if(!t)return{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null};const d={kind:"reasoning",id:qe(),text:"",streaming:!0,timestamp:s};r.push(d),o=r.length-1}const i=r[o];return!i||i.kind!=="reasoning"?e:(r[o]={...i,text:i.text+t,streaming:!n},{...e,rows:r,streamingReasoningIndex:n?null:o,streamingAssistantIndex:null})}function Af(e,t){if(e.kind!==t.kind)return t;const n={...e};for(const[s,r]of Object.entries(t))r!==void 0&&r!==""&&(n[s]=r);return n}function Mf(e,t,n){var d;const s=Tf(t.callId,t.tool),r=t.status==="completed"||t.status==="error"?t.status:"running",o=e.toolIndexByCallId[s],i=e.rows.slice();if(tt(i,e.streamingAssistantIndex),tt(i,e.streamingReasoningIndex),o!==void 0&&((d=i[o])==null?void 0:d.kind)==="tool"){const u=i[o];if(u.kind!=="tool")return e;const p=t.status??u.statusText;return i[o]={...u,tool:Af(u.tool,t.tool),status:r,...p!==void 0?{statusText:p}:{}},{...e,rows:i,streamingAssistantIndex:null,streamingReasoningIndex:null}}const a={kind:"tool",id:qe(),callId:s,tool:t.tool,status:r,...t.status!==void 0?{statusText:t.status}:{},timestamp:n};return i.push(a),{...e,rows:i,toolIndexByCallId:{...e.toolIndexByCallId,[s]:i.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function qf(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 Gn(e){return qf(Gr(e))}function Pf(e,t,n){const{kind:s,...r}=t,o=Object.fromEntries(Object.entries(r).filter(([,d])=>d!==void 0)),i=e.rows.findIndex(d=>d.kind==="compaction"&&d.compactionId===t.compactionId);if(i===-1){const d={...o,kind:"compaction",id:qe(),timestamp:n};return{...e,rows:[...e.rows,d]}}const a=e.rows.slice();return a[i]={...a[i],...o},{...e,rows:a}}function Nf(e,t,n){const s=Gn(e),r={kind:"error",id:qe(),text:t||"turn failed",timestamp:n};return{...s,rows:[...s.rows,r]}}function Df(e,t){const n=Gn(e),s={kind:"system",id:qe(),text:"(canceled)",timestamp:t};return{...n,rows:[...n.rows,s]}}function $f(e,t,n){const s={kind:"error",id:qe(),text:t||"error",timestamp:n};return{...e,rows:[...e.rows,s]}}function Of(e,t,n,s,r){if(s!==void 0){const i=e.rows.findIndex(a=>a.kind==="user"&&a.pending&&a.clientMessageId===s);if(i!==-1){const a=e.rows.slice(),d=a[i];if((d==null?void 0:d.kind)==="user")return a[i]={...d,text:t,images:n,pending:!1,...r!==void 0?{timestamp:r}:{}},{...e,rows:a}}}const o={kind:"user",id:qe(),text:t,images:n,clientMessageId:s,timestamp:r};return{...e,rows:[...e.rows,o]}}function Lf(e,t){let n=!1;const s=e.rows.map(r=>r.kind!=="user"||!r.queued||t.includes(r.text)?r:(n=!0,{...r,queued:!1}));return n?{...e,rows:s}:e}function Yr(e,t,n){switch(t.kind){case"turn_started":return Cf(e);case"user_message":return Of(e,t.text??"",t.images,t.messageId,n);case"assistant_message":return Rf(e,t.text??"",t.final??!1,n);case"reasoning":return jf(e,t.text??"",t.final??!1,n);case"tool_call":return Mf(e,t,n);case"turn_completed":return Gn(e);case"turn_failed":return Nf(e,t.error,n);case"turn_canceled":return Df(e,n);case"error":return $f(e,t.message,n);case"queue_update":return Lf(e,t.steering??[]);case"compaction":return Pf(e,t,n);default:return e}}function Xr(e){return e.reduce((t,{event:n,timestamp:s})=>Yr(t,n,s),on)}function Bf(e,t,n,s,r,o){const i={kind:"user",id:qe(),text:n,images:s,clientMessageId:t,pending:!0,queued:r,timestamp:o};return{...e,rows:[...e.rows,i]}}function Ff(e,t){const n=e.rows.findIndex(o=>o.kind==="user"&&o.pending&&o.clientMessageId===t);if(n===-1)return e;const s=e.rows.slice(),r=s[n];return(r==null?void 0:r.kind)!=="user"?e:(s[n]={...r,pending:!1,failed:!0},{...e,rows:s})}let Rs=0;function zf(){return Rs+=1,`s-${Date.now().toString(36)}-${Rs}`}const R=le()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=zf(),r={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:on,userMessageCount:0};return e(o=>({sessions:{...o.sessions,[s]:r},order:[s,...o.order],activeSessionId:s})),s},hydrate(n){e(s=>s.sessions[n.id]?s:{sessions:{...s.sessions,[n.id]:n},order:[...s.order,n.id]})},bindAgent(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,agentId:s}}}:r})},setStatus(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,status:s}}}:r})},setStatusByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setStatus(r.id,s)},setModel(n,s,r){e(o=>{const i=o.sessions[n];return i?{sessions:{...o.sessions,[n]:{...i,model:s,modelProvider:r}}}:o})},setModelByAgentId(n,s,r){const o=t().findByAgentId(n);o&&t().setModel(o.id,s,r)},setThinkingLevel(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,thinkingLevel:s}}}:r})},setThinkingLevelByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setThinkingLevel(r.id,s)},setTitle(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,title:s}}}:r})},setCwd(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,cwd:s}}}:r})},applyStreamEvent(n,s,r){e(o=>{const i=o.sessions[n];if(!i)return o;const a=Yr(i.timeline,s,r);return{sessions:{...o.sessions,[n]:{...i,timeline:a}}}})},setTitleByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setTitle(r.id,s)},addOptimisticUserMessage(n,s,r,o,i){e(a=>{const d=a.sessions[n];if(!d)return a;const u=Bf(d.timeline,s,r,o,i,new Date().toISOString());return{sessions:{...a.sessions,[n]:{...d,timeline:u,userMessageCount:d.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(r=>{const o=r.sessions[n];if(!o)return r;const i=Ff(o.timeline,s);return{sessions:{...r.sessions,[n]:{...o,timeline:i}}}})},setTimeline(n,s){e(r=>{const o=r.sessions[n];if(!o)return r;const i=s.rows.filter(a=>a.kind==="user").length;return{sessions:{...r.sessions,[n]:{...o,timeline:s,userMessageCount:i}}}})},setTimelineByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setTimeline(r.id,s)},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:r,...o}=s.sessions,i=s.order.filter(d=>d!==n),a=s.activeSessionId===n?i[0]??null:s.activeSessionId;return{sessions:o,order:i,activeSessionId:a}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),js=new WeakMap;function Wf(e,t="pi"){const n=js.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(r=>({model:r.model,modelProvider:r.modelProvider,thinkingLevel:r.thinkingLevel})).catch(()=>({}));return js.set(e,s),s}const zt=new Map;function Uf(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=zt.get(t);if(s)return s;const r=(async()=>{if(!n.model){const d=await Wf(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 o=R.getState().sessions[t];if(!o)throw new Error(`unknown session: ${t}`);const i={provider:"pi",cwd:o.cwd||"~"};o.model&&(i.model=o.model),o.modelProvider&&(i.modelProvider=o.modelProvider);const a=await e.createAgent({config:i,labels:{}});return R.getState().bindAgent(t,a.agentId),a.agentId})();return zt.set(t,r),r.finally(()=>zt.delete(t)),r}async function Hf(e,t){var r;const n=R.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((r=zt.get(t))==null?void 0:r.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 Vf=4;function Jr(e){return e==="left"||e==="right"?"row":"column"}function fe(e){return e.kind==="leaf"?[e.id]:e.children.flatMap(fe)}function Yn(e,t){return e.kind==="leaf"?e.id===t:e.children.some(n=>Yn(n,t))}function Zr(e,t,n=1){if(e.kind==="leaf")return e.id===t?n:null;for(const s of e.children){const r=Zr(s,t,n+1);if(r!==null)return r}return null}function Qr(e,t){if(e.kind==="leaf")return null;if(Xn(e,t)!==-1)return e;for(const n of e.children){const s=Qr(n,t);if(s)return s}return null}function Xn(e,t){return e.children.findIndex(n=>n.kind==="leaf"&&n.id===t)}function vt(e,t,n){const s=Zr(e,t);if(s===null)return!1;const r=Qr(e,t);return r&&r.direction===Jr(n)?!0:s+1<=Vf}function As(e,t,n,s){if(!vt(e,t,n)||Yn(e,s))return e;const r=Jr(n),o=n==="left"||n==="top",i={kind:"leaf",id:s},a=u=>({kind:"split",direction:r,children:o?[i,u]:[u,i],sizes:[.5,.5]}),d=u=>{if(u.kind==="leaf")return u.id===t?a(u):u;const p=Xn(u,t);if(p!==-1&&u.direction===r){const f=u.sizes[p]/2,m=o?p:p+1,g=u.children.slice(),k=u.sizes.slice();return k[p]=f,g.splice(m,0,i),k.splice(m,0,f),{kind:"split",direction:u.direction,children:g,sizes:k}}return{kind:"split",direction:u.direction,children:u.children.map(d),sizes:u.sizes.slice()}};return d(e)}function eo(e,t){if(!Yn(e,t)||e.kind==="leaf")return e;const n=s=>{if(s.kind==="leaf")return s;const r=Xn(s,t);if(r===-1)return{kind:"split",direction:s.direction,children:s.children.map(n),sizes:s.sizes.slice()};const o=s.sizes.filter((d,u)=>u!==r),i=o.reduce((d,u)=>d+u,0),a=i+s.sizes[r];return{kind:"split",direction:s.direction,children:s.children.filter((d,u)=>u!==r),sizes:o.map(d=>d/i*a)}};return to(n(e))}function to(e){if(e.kind==="leaf")return e;const t=e.children.map(to);if(t.length===1)return t[0];const n=[],s=[];return t.forEach((r,o)=>{const i=e.sizes[o];r.kind==="split"&&r.direction===e.direction?r.children.forEach((a,d)=>{n.push(a),s.push(i*r.sizes[d])}):(n.push(r),s.push(i))}),n.length===1?n[0]:{kind:"split",direction:e.direction,children:n,sizes:s}}const Ms=.1;function Kf(e){const t=new Map,n=(s,r)=>{if(s.kind==="leaf"){t.set(s.id,r);return}no(s,r).forEach((o,i)=>n(s.children[i],o))};return n(e,{x:0,y:0,width:1,height:1}),t}function no(e,t){const n=[];let s=0;for(const r of e.sizes)n.push(e.direction==="row"?{x:t.x+s*t.width,y:t.y,width:r*t.width,height:t.height}:{x:t.x,y:t.y+s*t.height,width:t.width,height:r*t.height}),s+=r;return n}function Gf(e){const t=[],n=(s,r,o)=>{if(s.kind==="leaf")return;const i=no(s,r);for(let a=0;a<s.children.length-1;a+=1){const d=i[a];t.push({splitPath:o.slice(),boundaryIndex:a,direction:s.direction,rect:s.direction==="row"?{x:d.x+d.width,y:r.y,width:0,height:r.height}:{x:r.x,y:d.y+d.height,width:r.width,height:0},splitRect:r})}i.forEach((a,d)=>n(s.children[d],a,[...o,d]))};return n(e,{x:0,y:0,width:1,height:1},[]),t}function Yf(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 Xf(e,t,n,s){const r=Yf(e,t);if(!r||r.kind!=="split"||n<0||n>r.children.length-2||!Number.isFinite(s)||s===0)return e;const o=r.sizes[n],i=r.sizes[n+1],a=i-Math.min(i,Ms),d=o-Math.min(o,Ms),u=Math.max(-d,Math.min(a,s));if(u===0)return e;const p=m=>{const g=m.sizes.slice();return g[n]=o+u,g[n+1]=i-u,{kind:"split",direction:m.direction,children:m.children,sizes:g}},f=(m,g)=>{if(m.kind!=="split")return m;if(g===t.length)return p(m);const k=t[g],_=m.children.slice();return _[k]=f(m.children[k],g+1),{kind:"split",direction:m.direction,children:_,sizes:m.sizes.slice()}};return f(e,0)}function so(e,t){const n=fe(e).filter(s=>!t.has(s));return n.length===0?e:n.reduce((s,r)=>eo(s,r),e)}const ro=1;function Jf(e){return oo(e,new Set)}function oo(e,t){if(typeof e!="object"||e===null)return null;const n=e;if(n.kind==="leaf"){const{id:o}=n;return typeof o!="string"||o.trim()===""||t.has(o)?null:(t.add(o),{kind:"leaf",id:o})}if(n.kind!=="split"||n.direction!=="row"&&n.direction!=="column"||!Array.isArray(n.children)||!Array.isArray(n.sizes)||n.children.length<2||n.sizes.length!==n.children.length)return null;let s=0;for(const o of n.sizes){if(typeof o!="number"||!Number.isFinite(o)||o<=0)return null;s+=o}const r=[];for(const o of n.children){const i=oo(o,t);if(!i)return null;r.push(i)}return{kind:"split",direction:n.direction,children:r,sizes:n.sizes.map(o=>o/s)}}function Zf(){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 Qf=["sessions","terminals"];function jn(){return`pane-${Zf()}`}function qs(){const e=jn();return{tree:{kind:"leaf",id:e},placement:{},activeByPane:{},focusedPaneId:e,pendingPlacement:{},pendingActive:{},userActedPanes:new Set}}function io(e,t,n){return(n??Object.keys(e.placement)).filter(r=>e.placement[r]===t)}function ao(e,t,n,s){const r=io(e,t,s),o=r.indexOf(n),i=r.filter(a=>a!==n);if(i.length!==0)return i[Math.min(Math.max(o,0),i.length-1)]}function ep(e,t){return e.pendingActive[t]!==void 0?!0:Object.values(e.pendingPlacement).includes(t)}function Jn(e,t){if(ep(e,t))return e;const n=eo(e.tree,t);if(n===e.tree)return e;const s={...e.activeByPane};delete s[t];const r=fe(n);return{...e,tree:n,activeByPane:s,focusedPaneId:r.includes(e.focusedPaneId)?e.focusedPaneId:r[0]}}function Ot(e,t,n,s){const r=e.placement[t],o={...e.placement,[t]:n},i={...e.activeByPane};if(s.activate&&(i[n]=t),r!==void 0&&r!==n&&i[r]===t){const u=ao(e,r,t,s.order);u===void 0?delete i[r]:i[r]=u}const a={...e,placement:o,activeByPane:i,focusedPaneId:s.focus?n:e.focusedPaneId};return r!==void 0&&r!==n&&!Object.values(o).includes(r)?Jn(a,r):a}function Ke(e,t){return e.userActedPanes.has(t)?e:{...e,userActedPanes:new Set(e.userActedPanes).add(t)}}function tp(e){let t={...e,pendingPlacement:{},pendingActive:{}};const n=new Set(Object.values(t.placement));for(const o of fe(t.tree))n.has(o)||(t=Jn(t,o));const s={...t.activeByPane};let r=!1;for(const o of fe(t.tree)){if(s[o]!==void 0)continue;const i=Object.keys(t.placement).find(a=>t.placement[a]===o);i!==void 0&&(s[o]=i,r=!0)}return r?{...t,activeByPane:s}:t}function co(e,t){if(e===void 0)return!1;const n=e.placement[t];return n!==void 0&&e.activeByPane[n]===t}const L=le()((e,t)=>{const n=(s,r)=>{e(o=>{const i=o.layouts[s]??qs(),a=r(i)??i;return a===o.layouts[s]?o:{layouts:{...o.layouts,[s]:a}}})};return{layouts:{},hydrationSources:{sessions:!1,terminals:!1},restoring:!1,pendingActiveWorkspace:null,ensureWorkspace(s){e(r=>r.layouts[s]?r:{layouts:{...r.layouts,[s]:qs()}})},assignTab(s,r,o,i,a){n(s,d=>{const u=fe(d.tree),p=o!==void 0&&u.includes(o)?o:u.includes(d.focusedPaneId)?d.focusedPaneId:u[0],f=i!==!0,m=Ot(d,r,p,{activate:f,focus:f,order:a});return f?Ke(m,p):m})},moveTab(s,r,o,i){n(s,a=>{if(a.placement[r]===void 0||a.placement[r]===o||!fe(a.tree).includes(o))return null;const d=Ot(a,r,o,{activate:!0,focus:!0,order:i});return Ke(d,o)})},splitWithTab(s,r,o,i,a){n(s,d=>{if(!fe(d.tree).includes(o)||!vt(d.tree,o,i))return null;const u=io(d,o,a);if(u.length===1&&u[0]===r)return null;const p=jn(),f=As(d.tree,o,i,p);if(f===d.tree)return null;const m=Ot({...d,tree:f},r,p,{activate:!0,focus:!0,order:a});return Ke(m,p)})},splitEmpty(s,r,o){let i=null;return n(s,a=>{if(!fe(a.tree).includes(r)||!vt(a.tree,r,o))return null;const d=jn(),u=As(a.tree,r,o,d);return u===a.tree?null:(i=d,{...a,tree:u,focusedPaneId:d})}),i},removeTab(s,r,o){n(s,i=>{const a=i.placement[r];if(a===void 0)return null;const d={...i.placement};delete d[r];const u={...i.activeByPane};if(u[a]===r){const f=ao(i,a,r,o);f===void 0?delete u[a]:u[a]=f}const p={...i,placement:d,activeByPane:u};return Object.values(d).includes(a)?p:Jn(p,a)})},setActiveTab(s,r,o){n(s,i=>i.placement[o]!==r?null:i.activeByPane[r]===o?Ke(i,r):Ke({...i,activeByPane:{...i.activeByPane,[r]:o}},r))},focusPane(s,r){n(s,o=>o.focusedPaneId===r||!fe(o.tree).includes(r)?null:{...o,focusedPaneId:r})},resizeDivider(s,r,o,i){n(s,a=>{const d=Xf(a.tree,r,o,i);return d===a.tree?null:{...a,tree:d}})},installPersistedLayouts(s,r=null){e(o=>{const i={...o.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:r!==null&&i[r]!==void 0?r:null}})},claimPaneFor(s,r,o,i){n(s,a=>{const d=fe(a.tree);let u,p=!1;if(i!==void 0&&d.includes(i))u=i;else if(o!==null){const k=a.pendingPlacement[o];k!==void 0&&d.includes(k)&&(u=k,p=!0)}u??(u=d.includes(a.focusedPaneId)?a.focusedPaneId:d[0]);let f=a;if(p&&o!==null){const k={...a.pendingPlacement};delete k[o],f={...a,pendingPlacement:k}}let m=!0;if(p){const k=f.pendingActive[u];f.userActedPanes.has(u)?m=!1:k!==void 0&&k!==o&&(m=f.activeByPane[u]===void 0)}else t().restoring&&(m=f.activeByPane[u]===void 0);const g=Ot(f,r,u,{activate:m,focus:!p&&m});return p?g:Ke(g,u)})},markHydrationSource(s){e(r=>{if(r.hydrationSources[s])return r;const o={...r.hydrationSources,[s]:!0};if(!Qf.every(a=>o[a]))return{hydrationSources:o};const i={};for(const[a,d]of Object.entries(r.layouts))i[a]=tp(d);return{hydrationSources:o,layouts:i,restoring:!1,pendingActiveWorkspace:null}})},paneOfTab(s,r){var o;return((o=t().layouts[s])==null?void 0:o.placement[r])??null},activeTabOf(s){const r=t().layouts[s];return r?r.activeByPane[r.focusedPaneId]??null:null}}});function np(e,t){return e.filter(n=>n.workspaceCwd===t)}function sp(e,t){return np(e,t).map(n=>n.id)}function pt(e){const t=e===null?null:L.getState().activeTabOf(e);if(M.setState({activeTabId:t,activeWorkspaceCwd:e}),t!==null)return M.getState().tabs.find(n=>n.id===t)}function ht(e){(e==null?void 0:e.kind)==="chat"&&R.getState().activate(e.data.sessionId)}const M=le()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,open(n,s){const r=t().tabs.find(i=>i.id===n.id);if(r){t().activate(r.id);return}e(i=>({tabs:[...i.tabs,n]}));const o=L.getState();o.ensureWorkspace(n.workspaceCwd),o.claimPaneFor(n.workspaceCwd,n.id,Gt(n),s),ht(pt(n.workspaceCwd))},close(n){const s=t().tabs.find(a=>a.id===n);if(!s)return;const r=sp(t().tabs,s.workspaceCwd),o=t().activeTabId;e(a=>({tabs:a.tabs.filter(d=>d.id!==n)})),L.getState().removeTab(s.workspaceCwd,n,r);const i=pt(t().activeWorkspaceCwd);t().activeTabId!==o&&ht(i)},activate(n){const s=t().tabs.find(i=>i.id===n);if(!s)return;const r=L.getState();r.ensureWorkspace(s.workspaceCwd);const o=r.paneOfTab(s.workspaceCwd,n);o===null?r.claimPaneFor(s.workspaceCwd,n,Gt(s)):(r.focusPane(s.workspaceCwd,o),r.setActiveTab(s.workspaceCwd,o,n)),ht(pt(s.workspaceCwd))},switchWorkspace(n){L.getState().ensureWorkspace(n),ht(pt(n))},reorder(n,s){e(r=>{const o=r.tabs.findIndex(u=>u.id===n),i=r.tabs.findIndex(u=>u.id===s);if(o===-1||i===-1||o===i)return r;const a=r.tabs.slice(),[d]=a.splice(o,1);return d?(a.splice(i,0,d),{tabs:a}):r})},updateLabel(n,s){e(r=>({tabs:r.tabs.map(o=>o.id===n?{...o,label:s}:o)}))},updateData(n,s){e(r=>({tabs:r.tabs.map(o=>o.id===n?{...o,data:{...o.data,...s}}:o)}))},closeByPathPrefix(n){const s=t().tabs.filter(r=>{if(r.kind!=="file"&&r.kind!=="diff"&&r.kind!=="molecule")return!1;const o=r.data.path;return o===n||((o==null?void 0:o.startsWith(`${n}/`))??!1)});for(const r of s)t().close(r.id)}}));function Gt(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 lo(e,t,n){var s;return((s=e.find(r=>r.id===n))==null?void 0:s.workspaceCwd)===t?t:null}function Nv(e){const t=M(n=>lo(n.tabs,n.activeWorkspaceCwd,e));return L(n=>t===null?!1:co(n.layouts[t],e))}function rp(e){const{tabs:t,activeWorkspaceCwd:n}=M.getState(),s=lo(t,n,e);return s===null?!1:co(L.getState().layouts[s],e)}const Q={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let pn=0;function uo(e,t){pn+=1,M.getState().open({id:Q.terminal(`new-${pn}`),kind:"terminal",label:`Terminal ${pn}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e},t)}let hn=0;function op(e,t){hn+=1,M.getState().open({id:Q.molecule(`new-${hn}`),kind:"molecule",label:`Molecule ${hn}`,closable:!0,data:{path:null},workspaceCwd:e},t)}function Et(e,t){const n=R.getState().createSession(e);M.getState().open({id:Q.chat(n),kind:"chat",label:"New chat",closable:!0,data:{sessionId:n},workspaceCwd:e},t);const s=q.getState().client;s&&Uf(s,n).catch(()=>{})}function Yt(e){const t=M.getState().tabs.find(s=>s.id===e);if(M.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;Hf(q.getState().client,n)}L.subscribe(()=>{const{activeWorkspaceCwd:e,activeTabId:t}=M.getState();e!==null&&L.getState().activeTabOf(e)!==t&&ht(pt(e))});const ip="_panel_1de7t_3",ap={panel:ip};function fo({className:e,...t}){return c.jsx("div",{className:z(ap.panel,e),...t})}const cp="_emptyState_kp50e_3",lp={emptyState:cp};function $e({className:e,...t}){return c.jsx("div",{className:z(lp.emptyState,e),...t})}function rt(){return q(e=>{var t;return((t=e.serverInfo)==null?void 0:t.homeDir)??null})}const An=le()((e,t)=>({drafts:{},pendingFeedback:{},setDraft(n,s){e(r=>({drafts:{...r.drafts,[n]:s}}))},replaceDraft(n,s,r){const i={copy:(t().drafts[n]??"")===""?"filled":"replaced",flash:r};e(a=>({drafts:{...a.drafts,[n]:s},pendingFeedback:{...a.pendingFeedback,[n]:i}}))},consumeFeedback(n){const s=t().pendingFeedback[n];if(s!==void 0)return e(r=>{const o={...r.pendingFeedback};return delete o[n],{pendingFeedback:o}}),s}})),Xt=le()(()=>({message:"",politeness:"polite"})),dp=4e3;let mt=null;function po(){mt!==null&&(clearTimeout(mt),mt=null)}function an(e,t="polite"){po(),Xt.setState({message:e,politeness:t})}function Zn(){po(),mt=setTimeout(()=>{mt=null,Xt.setState({message:""})},dp)}function up(e){switch(e){case"default":return{};case"success":return{token:"statusSuccess"};case"error":return{token:"statusDanger"};case"warning":return{token:"statusWarning"}}}const Qn=2200;function fp(e,t,n,s=Date.now()){return{id:e,content:t,variant:n.variant??"default",durationMs:n.durationMs!==void 0?n.durationMs:Qn,icon:n.icon,paused:!1,shownAt:s}}function pp(e="Copied"){return{content:e,opts:{variant:"success",durationMs:Qn}}}function hp(e){return{content:e,opts:{variant:"error",durationMs:Qn}}}function gp(e,t,n=Date.now()){if(e.durationMs===null)return null;e.paused;const s=n-e.shownAt;return Math.max(0,e.durationMs-s)}const Jt=3;let mp=0;const _t=new Map;function Ps(e){const t=_t.get(e);t!==void 0&&(clearTimeout(t),_t.delete(e))}const Ae=le((e,t)=>{function n(s){const r=t().toasts.findIndex(a=>a.id===s);if(r===-1||r>=Jt||_t.has(s))return;const o=t().toasts[r];if(o.durationMs===null||o.paused)return;const i={...o,shownAt:Date.now()};e(a=>({toasts:a.toasts.map(d=>d.id===s?i:d)})),_t.set(s,setTimeout(()=>t().dismiss(s),i.durationMs))}return{toasts:[],show(s,r={}){const o=`toast-${++mp}`;return e(i=>({toasts:[...i.toasts,fp(o,s,r)]})),n(o),o},copied(s){const{content:r,opts:o}=pp(s);return t().show(r,o)},error(s){const{content:r,opts:o}=hp(s);return t().show(r,o)},dismiss(s){Ps(s),e(r=>({toasts:r.toasts.filter(o=>o.id!==s)}));for(const r of t().toasts.slice(0,Jt))n(r.id)},dismissTop(){const s=t().toasts[0];s&&t().dismiss(s.id)},pause(s){const r=t().toasts.find(i=>i.id===s);if(!r||r.durationMs===null||r.paused)return;const o=gp(r,null,Date.now())??r.durationMs;Ps(s),e(i=>({toasts:i.toasts.map(a=>a.id===s?{...a,paused:!0,pausedRemaining:o}:a)}))},resume(s){const r=t().toasts.find(d=>d.id===s);if(!r||!r.paused)return;const o=r.pausedRemaining??r.durationMs??0,i=Date.now()-((r.durationMs??0)-o),a={...r,paused:!1,pausedRemaining:void 0,shownAt:i};e(d=>({toasts:d.toasts.map(u=>u.id===s?a:u)})),_t.set(s,setTimeout(()=>t().dismiss(s),o))}}});function ke(e,t,n,s=!1){return{tone:e,glyph:t,text:n,truncate:s}}function _p(e){var t,n;return e.reason==="answered"?e.method==="input"?ke("success","check","answered"):e.method==="editor"?ke("success","check","submitted"):e.method==="select"?((t=e.answer)==null?void 0:t.value)===void 0?ke("muted",null,"no longer pending"):ke("success","check",e.answer.value,!0):e.method==="confirm"?((n=e.answer)==null?void 0:n.confirmed)===void 0?ke("muted",null,"no longer pending"):e.answer.confirmed?ke("success","check","Yes"):ke("muted",null,"declined"):ke("success","check","answered"):e.reason==="cancelled"?ke("muted",null,"declined"):e.reason==="timeout"?ke("muted",null,"expired"):ke("muted",null,e.reason)}function gn(e){return e||"Chat"}function yp(e,t){let n=0;for(const s of Object.values(e))s.agentId===t&&n++;return n}function wp(e){const t=e.title;return typeof t=="string"&&t.length>0?t:void 0}function vp(e){const t=_p(e);return t.tone==="success"?"Answered":t.text==="declined"?"Dismissed":t.text==="expired"?"Expired":"No longer pending"}function bp(e,t,n){const s=[];for(const r of Object.values(t.pending)){if(r.receivedAt===void 0||e.pending[r.requestId]!==void 0)continue;const o=yp(e.pending,r.agentId);if(o===0)if(r.agentId===n.activeAgentId){const i=wp(r.payload);s.push({text:i?`A question needs input: ${i}`:"A question needs input",politeness:"polite"})}else s.push({text:`A question needs input in ${gn(n.sessionTitle(r.agentId))}`,politeness:"polite"});else s.push({text:`${o+1} questions need input in ${gn(n.sessionTitle(r.agentId))}`,politeness:"polite"})}for(const r of Object.values(t.resolved))e.resolved[r.requestId]===void 0&&s.push({text:`${vp(r)} in ${gn(n.sessionTitle(r.agentId))}`,politeness:"polite"});return s}function kp(e){switch(e){case"warning":return"warning";case"error":return"error";default:return"default"}}function Sp(e){switch(e){case"warning":return 6e3;case"error":return null;default:return 4e3}}function xp(e,t,n,s){return t===n?e:`${s||"Chat"} — ${e}`}function Ip(e,t,n,s,r){return{text:n===s?e:`${r||"Chat"}: ${e}`,politeness:t==="error"?"assertive":"polite"}}const Ce=le()(()=>({controller:null,uiState:Un}));let Ns=null,Te=null,ho=new Map,go=new Map,gt=new Set;function mo(){ho=new Map,go=new Map,gt=new Set}function Ep(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 _o(e,t,n){const s=n(),r=e.get(t);return r&&Ep(r,s)?r:(e.set(t,s),s)}function Tp(e){for(const t of e)switch(t.type){case"notify":Cp(t);break;case"replace_composer_text":Rp(t);break}}function Cp(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),r=(n==null?void 0:n.agentId)??null,o=(s==null?void 0:s.title)??null;Ae.getState().show(xp(e.message,e.agentId,r,o),{variant:kp(e.level),durationMs:Sp(e.level)});const i=Ip(e.message,e.level,e.agentId,r,o);an(i.text,i.politeness)}function Rp(e){const t=Object.values(R.getState().sessions).find(s=>s.agentId===e.agentId);if(t===void 0)return;const n=rp(Q.chat(t.id));An.getState().replaceDraft(t.id,e.text,n),n||an(`Draft replaced in ${t.title||"Chat"}`,"polite")}function jp(e,t){const n=R.getState(),s=n.activeSessionId?n.sessions[n.activeSessionId]:void 0,r=bp(e,t,{activeAgentId:(s==null?void 0:s.agentId)??null,sessionTitle:o=>{var i;return((i=Object.values(n.sessions).find(a=>a.agentId===o))==null?void 0:i.title)??null}});for(const o of r)an(o.text,o.politeness);Object.keys(e.pending).length>0&&Object.keys(t.pending).length===0&&Zn()}const Ds=new Set;function Ap(e){mo();const t=Au(e,{onUnknownMethod(s){Ds.has(s)||(Ds.add(s),console.warn(`agent-ui: unrecognised extension-UI method "${s}"`))}}),n=t.subscribe((s,r)=>{const o=Ce.getState().uiState;Ce.setState({uiState:s}),Tp(r),jp(o,s)});Ce.setState({controller:t,uiState:t.getState()}),Te=()=>{n(),t.dispose()}}function Mp(){Te==null||Te(),Te=null,mo(),Ce.setState({controller:null,uiState:Un})}function yo(e){if(e===Ns||(Mp(),Ns=e,!e))return;const t=()=>{Ce.getState().controller||e.connection.state==="open"&&e.extensionUiAvailable()&&(Te==null||Te(),Te=null,Ap(e))};t(),Ce.getState().controller||(Te=e.connection.onStateChange(n=>{n==="open"&&queueMicrotask(t)}))}q.subscribe(e=>yo(e.client));yo(q.getState().client);const $s=[],Os=[];function qp(e,t){if(!e.controller)return $s;const n=_o(ho,t,()=>Cu(e.uiState,t));return n.length===0?$s:n}function Pp(e,t){if(!e.controller)return Os;const n=_o(go,t,()=>ju(e.uiState,t));return n.length===0?Os:n}const Ls=new Set;function Np(e){if(!e.controller)return Ls;const t=new Set(Object.keys(Ru(e.uiState)));return t.size===gt.size&&[...t].every(n=>gt.has(n))?gt:(gt=t,t.size===0?Ls:t)}function Dp(){return Ce(Np)}function wo(e){return Ce(t=>qp(t,e))}function Dv(e){return Ce(t=>Pp(t,e))}function $v(e,t){const n=Ce.getState().controller;return n?n.respond(e,t):Promise.resolve({ok:!1,reason:"unsupported"})}const $p="_iconBtn_1unr3_3",Op="_xs_1unr3_32",Lp="_sm_1unr3_36",Bs={iconBtn:$p,xs:Op,sm:Lp};function Me({size:e="xs",hoverBase:t,className:n,style:s,type:r="button",...o}){return c.jsx("button",{type:r,className:z(Bs.iconBtn,Bs[e],n),style:t?{"--icon-btn-hover-base":t,...s}:s,...o})}const Bp={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function ze(e){return Bp[e]??"idle"}const Fs=120;function Fp(e,t){return e.status==="error"?"failed":t?"needsInput":e.status==="running"?"running":e.userMessageCount===0&&e.timeline.rows.length===0?"empty":"idle"}function zp(e){const{rows:t}=e.timeline;for(let n=t.length-1;n>=0;n--){const s=t[n];if(s&&s.kind==="error"){const r=(s.text.split(`
19
+ `,1)[0]??"").trim();return r.length>Fs?r.slice(0,Fs):r}}return null}function Wp(e,t){const n=Fp(e,t);switch(n){case"failed":return{state:n,meta:"turn failed",reason:zp(e),dot:{status:ze("error")},titleItalic:!1};case"needsInput":return{state:n,meta:"needs input",reason:null,dot:{status:ze(e.status),requiresAttention:!0,attentionReason:"question"},titleItalic:!1};case"running":return{state:n,meta:"running",reason:null,dot:{status:ze("running")},titleItalic:!1};case"empty":return{state:n,meta:"no messages",reason:null,dot:{status:ze("idle"),showInactive:!0},titleItalic:!0};case"idle":return{state:n,meta:"idle",reason:null,dot:{status:ze("idle"),showInactive:!0},titleItalic:!1}}}function Up(e,t){const n=e.filter(r=>r.agentId!==null&&t.has(r.agentId)).length;return n>0?{dot:{status:"waiting",requiresAttention:!0,attentionReason:"question"},reason:"question",pendingSessionCount:n}:e.some(r=>r.status==="error")?{dot:{status:ze("error")},reason:"failed",pendingSessionCount:0}:null}const Hp="_header_4rtcu_1",Vp="_list_4rtcu_15",Kp="_newSessionRow_4rtcu_20",Gp="_footer_4rtcu_45",Yp="_item_4rtcu_70",Xp="_itemFailed_4rtcu_85",Jp="_active_4rtcu_83",Zp="_activeBar_4rtcu_88",Qp="_activeBarNeedsInput_4rtcu_107",eh="_title_4rtcu_89",th="_titleLabel_4rtcu_89",nh="_titleItalic_4rtcu_127",sh="_meta_4rtcu_130",rh="_metaDot_4rtcu_138",oh="_metaLabel_4rtcu_143",ih="_metaFailed_4rtcu_148",ah="_metaNeedsInput_4rtcu_151",ch="_metaEmpty_4rtcu_154",lh="_menuBtn_4rtcu_159",dh="_workspaceHeader_4rtcu_172",uh="_workspaceChevron_4rtcu_194",fh="_chevronGlyphExpanded_4rtcu_205",ph="_workspaceLabel_4rtcu_211",hh="_workspaceCount_4rtcu_217",gh="_workspaceMenuBtn_4rtcu_225",mh="_workspaceSessions_4rtcu_237",V={header:Hp,list:Vp,newSessionRow:Kp,footer:Gp,item:Yp,itemFailed:Xp,active:Jp,activeBar:Zp,activeBarNeedsInput:Qp,title:eh,titleLabel:th,titleItalic:nh,meta:sh,metaDot:rh,metaLabel:oh,metaFailed:ih,metaNeedsInput:ah,metaEmpty:ch,menuBtn:lh,workspaceHeader:dh,workspaceChevron:uh,chevronGlyphExpanded:fh,workspaceLabel:ph,workspaceCount:hh,workspaceMenuBtn:gh,workspaceSessions:mh};function _h({session:e,active:t,draggable:n,onSelect:s,onOpenMenu:r,onDragStartRow:o}){const i=wo(e.agentId??""),a=Wp(e,i.length>0);return c.jsxs("div",{className:z(V.item,t&&V.active,!t&&a.state==="failed"&&V.itemFailed),draggable:n,onDragStart:o,onClick:s,onContextMenu:d=>{d.preventDefault(),r(d.clientX,d.clientY)},children:[(t||a.state==="needsInput")&&c.jsx("span",{className:z(V.activeBar,a.state==="needsInput"&&V.activeBarNeedsInput),"aria-hidden":!0}),c.jsxs("div",{className:V.title,children:[c.jsx("span",{className:z(V.titleLabel,a.titleItalic&&V.titleItalic),children:e.title}),c.jsx(Me,{className:V.menuBtn,hoverBase:"var(--pi-color-surfaceSidebar)",title:"Actions",onClick:d=>{d.stopPropagation();const u=d.currentTarget.getBoundingClientRect();r(u.left,u.bottom)},children:c.jsx(re,{icon:On,size:"sm"})})]}),c.jsxs("div",{className:z(V.meta,a.state==="empty"&&V.metaEmpty),children:[a.dot&&c.jsx(sn,{...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 yh="_trigger_u4hed_3",wh="_content_u4hed_15",vh="_item_u4hed_25",bh="_danger_u4hed_44",kh="_groupLabel_u4hed_53",Sh="_sep_u4hed_66",nt={trigger:yh,content:wh,item:vh,danger:bh,groupLabel:kh,sep:Sh},cn=w.forwardRef(function({x:t,y:n},s){return c.jsx("button",{ref:s,type:"button",className:nt.trigger,style:{left:t,top:n},"aria-hidden":!0,tabIndex:-1})});function Tt({className:e,minWidth:t,style:n,sideOffset:s=2,...r}){const o=t===void 0?n:{minWidth:t,...n};return c.jsx(Ni,{children:c.jsx(Di,{className:z(nt.content,e),align:"start",sideOffset:s,style:o,...r})})}function Ov({label:e,className:t,children:n,...s}){const r=w.useId();return c.jsxs($i,{className:t,"aria-labelledby":e===void 0?void 0:r,...s,children:[e!==void 0&&c.jsx(Oi,{id:r,className:nt.groupLabel,children:e}),n]})}function K({className:e,danger:t,...n}){return c.jsx(Li,{className:z(nt.item,t&&nt.danger,e),...n})}function We(e){return c.jsx(Bi,{className:nt.sep,...e})}const _e=le()(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 vo(e){return e.kind==="user"&&!e.pending&&!e.failed}function xh(e){return e.filter(vo).map(t=>t.text)}function Ih(e){const t=new Map;let n=0;for(const s of e)vo(s)&&(t.set(s.id,n),n+=1);return t}function zs(e){return e.trim().replace(/\s+/g," ")}function Eh(e,t,n){const s=e[t],r=n[t];return s===void 0||r===void 0?{outcome:"fallback-to-picker"}:zs(s)!==zs(r.text)?{outcome:"fallback-to-picker"}:{outcome:"matched",target:r}}function Th(e){return e.forkTimelineSync&&!e.running&&e.agentId!==null}const Ch=new Map;function bo(e){var s;const t=q(r=>r.serverInfo),n=!!((s=t==null?void 0:t.features)!=null&&s.forkTimelineSync);return Th({forkTimelineSync:n,running:(e==null?void 0:e.status)==="running",agentId:(e==null?void 0:e.agentId)??null})}function Lv(e){const t=Kn(),n=_e(u=>u.openConfirm),s=_e(u=>u.openPicker),r=bo(e),o=e.timeline.rows,i=w.useMemo(()=>r?Ih(o):Ch,[r,o]),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:f})=>{const m=xh(e.timeline.rows),g=Eh(m,u,f);g.outcome==="matched"?n(a,g.target,p):s(a,f,p)}).catch(f=>{console.error("[fork] forkMessages() failed",f)})},[t,a,e,n,s]);return{canFork:r,ordinalByRowId:i,onForkFromRow:d}}function Rh(e){const t=Kn(),n=_e(i=>i.openPicker),s=bo(e),r=e==null?void 0:e.agentId,o=w.useCallback(()=>{if(!t||!r)return;const i=document.activeElement instanceof HTMLElement?document.activeElement:null;t.agent(r).forkMessages().then(({messages:a})=>n(r,a,i)).catch(a=>{console.error("[fork] forkMessages() failed",a)})},[t,r,n]);return{canFork:s,openForkPicker:o}}function jh(){const e=N(_=>_.sessionMenu),t=N(_=>_.closeSessionMenu),n=q(_=>_.client),s=w.useRef(null),[r,o]=w.useState(!1);w.useEffect(()=>{o(e!==null)},[e]);const i=R(_=>e?_.sessions[e.sessionId]:void 0),a=Rh(i);if(!e)return null;const d=!!(i!=null&&i.agentId)&&(i==null?void 0:i.status)==="running";function u(_){o(_),_||t()}function p(){if(!i)return;const _=window.prompt("Rename:",i.title);if(_!=null&&_.trim()){const x=_.trim();R.getState().setTitle(i.id,x),M.getState().updateLabel(Q.chat(i.id),x),i.agentId&&(n==null||n.agent(i.agentId).update({title:x}).catch(()=>{}))}t()}function f(){i!=null&&i.agentId&&(n==null||n.agent(i.agentId).interrupt().catch(()=>{})),t()}function m(_){R.getState().remove(_),M.getState().close(Q.chat(_))}async function g(){if(i){if(!window.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!i.agentId){m(i.id);return}if(!n){window.alert("Not connected — cannot archive remotely.");return}try{await n.agent(i.agentId).archive(),m(i.id)}catch(_){window.alert(`Failed to archive: ${_ instanceof Error?_.message:String(_)}`)}}}async function k(){if(i){if(!window.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!i.agentId){m(i.id);return}if(!n){window.alert("Not connected — cannot delete remotely.");return}try{await n.agent(i.agentId).delete(),m(i.id)}catch(_){window.alert(`Failed to delete: ${_ instanceof Error?_.message:String(_)}`)}}}return c.jsxs(kt,{open:r,onOpenChange:u,modal:!1,children:[c.jsx(St,{asChild:!0,children:c.jsx(cn,{ref:s,x:e.x,y:e.y})}),c.jsxs(Tt,{minWidth:160,children:[c.jsxs(K,{onSelect:p,children:[c.jsx(hr,{size:13}),"Rename"]}),c.jsxs(K,{disabled:!d,onSelect:f,children:[c.jsx(wi,{size:13}),"Stop agent"]}),a.canFork&&c.jsxs(K,{onSelect:a.openForkPicker,children:[c.jsx(gr,{size:13}),"Fork from…"]}),c.jsx(We,{}),c.jsxs(K,{danger:!0,onSelect:g,children:[c.jsx(vi,{size:13}),"Archive"]}),c.jsxs(K,{danger:!0,onSelect:k,children:[c.jsx(Ln,{size:13}),"Delete permanently"]})]})]})}const Ah="_avatar_1m9k9_4",Mh="_avatarImg_1m9k9_14",qh="_avatarFallback_1m9k9_20",mn={avatar:Ah,avatarImg:Mh,avatarFallback:qh},_n=["#2563eb","#16a34a","#9333ea","#dc2626","#0d9488","#d97706","#db2777","#0891b2","#ea580c","#4f46e5","#059669","#7c3aed"];function Ph(e){let t=0;for(let s=0;s<e.length;s++){const r=e.charCodeAt(s);t=t*31+r>>>0}return _n[t%_n.length]??_n[0]}function Nh(e){const t=e.match(/[a-zA-Z0-9]/);return t?t[0].toUpperCase():"?"}function Dh({projectKey:e,src:t,size:n=32,className:s}){const r=Nh(e),o=Ph(e),i=Math.round(n*.4);return c.jsx("span",{className:`${mn.avatar}${s?` ${s}`:""}`,style:{width:n,height:n,backgroundColor:t?void 0:o},"aria-label":e,role:"img",children:t?c.jsx("img",{src:t,alt:e,className:mn.avatarImg}):c.jsx("span",{className:mn.avatarFallback,style:{fontSize:i},"aria-hidden":!0,children:r})})}function $h({label:e,cwd:t,sessionCount:n,collapsed:s,attentionDot:r,onToggleCollapsed:o,onOpenMenu:i}){return c.jsxs("div",{className:V.workspaceHeader,onClick:o,title:t,children:[c.jsx(Me,{className:V.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:a=>{a.stopPropagation(),o()},children:c.jsx(re,{icon:Bn,size:"xs",className:s?void 0:V.chevronGlyphExpanded})}),c.jsx(Dh,{projectKey:e,size:20}),c.jsx("span",{className:V.workspaceLabel,children:e}),r&&c.jsx(sn,{...r.dot,pulse:r.reason==="question","aria-label":r.reason==="question"?`${e} — ${r.pendingSessionCount} session${r.pendingSessionCount===1?"":"s"} needs input`:`${e} — turn failed`}),c.jsx("span",{className:V.workspaceCount,children:n}),c.jsx(Me,{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(re,{icon:On,size:"sm"})})]})}function Oe(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function es(e,t,n){const s=new Map;for(const r of e){const o=t[r];if(!o)continue;const i=Oe(o.cwd||"~",n),a=s.get(i);a?a.push(o):s.set(i,[o])}return Array.from(s,([r,o])=>({cwd:r,sessions:o}))}function ko(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function Oh(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function Lh(){const e=N(g=>g.workspaceMenu),t=N(g=>g.closeWorkspaceMenu),n=q(g=>g.client),s=R(g=>g.order),r=R(g=>g.sessions),o=rt(),i=w.useRef(null),[a,d]=w.useState(!1);if(w.useEffect(()=>{d(e!==null)},[e]),!e)return null;const u=s.map(g=>r[g]).filter(g=>!!g).filter(g=>Oe(g.cwd||"~",o)===e.cwd);function p(g){d(g),g||t()}function f(){e&&(t(),Et(e.cwd))}async function m(){if(!e)return;const g=u.length;if(!window.confirm(`Delete all ${g} conversation${g===1?"":"s"} in "${ko(e.cwd)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return t();t();for(const _ of u){if(_.agentId&&n)try{await n.agent(_.agentId).delete()}catch(x){window.alert(`Failed to delete "${_.title}": ${x instanceof Error?x.message:String(x)}`);continue}R.getState().remove(_.id),M.getState().close(Q.chat(_.id))}}return c.jsxs(kt,{open:a,onOpenChange:p,modal:!1,children:[c.jsx(St,{asChild:!0,children:c.jsx(cn,{ref:i,x:e.x,y:e.y})}),c.jsxs(Tt,{minWidth:160,children:[c.jsxs(K,{onSelect:f,children:[c.jsx(Ut,{size:13}),"New session"]}),c.jsx(We,{}),c.jsxs(K,{danger:!0,onSelect:m,children:[c.jsx(Ln,{size:13}),"Delete workspace (all conversations)"]})]})]})}function Zt(e,t,n){M.getState().open({id:Q.chat(e.id),kind:"chat",label:e.title||"Chat",closable:!0,data:{sessionId:e.id},workspaceCwd:Oe(e.cwd||"~",t)},n)}const Bh=.25;function So(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))<Bh?"center":Math.abs(n)>=Math.abs(s)?n<0?"left":"right":s<0?"top":"bottom"}function Fh(e,t){return t.x>=e.left&&t.x<=e.left+e.width&&t.y>=e.top&&t.y<=e.top+e.height}function xo(e,t,n){return n==="center"?"center":vt(e,t,n)?n:"center"}function Mn(e,t,n,s){return s[n]!==t?!1:e==="center"?!0:Object.keys(s).every(o=>o===n||s[o]!==t)}const Ct={chat:"application/x-pi-studio-open-chat",path:"application/x-pi-studio-open-path"},zh=["chat","path"];function Io(e){for(const t of zh)if(e.includes(Ct[t]))return t;return null}function Bv(e){return t=>{t.dataTransfer.setData(Ct.path,e),t.dataTransfer.effectAllowed="copyMove"}}function Wh(e,t){const n=Io(e);if(n===null)return null;const s=t(Ct[n]).trim();return s===""?null:{kind:n,value:s}}function Uh(e,t,n,s){return xo(e,t,So(n,s))}const Hh=36;function Vh(){const e=R(y=>y.order),t=R(y=>y.sessions),n=R(y=>y.activeSessionId),s=R(y=>y.activate),r=M(y=>y.activeWorkspaceCwd),o=q(y=>y.status),i=N(y=>y.openSessionMenu),a=N(y=>y.openWorkspaceMenu),d=N(y=>y.setCwd),u=N(y=>y.openCwdPicker),p=N(y=>y.collapsedWorkspaces),f=N(y=>y.toggleWorkspaceCollapsed),m=rt(),g=Dp();function k(y){s(y);const S=t[y];S!=null&&S.cwd&&d(S.cwd),S&&Zt(S,m)}function _(y,S,I){S===r&&(I.dataTransfer.setData(Ct.chat,y),I.dataTransfer.effectAllowed="copy")}const x=es(e,t,m);return c.jsxs(fo,{children:[c.jsx("div",{className:V.header,style:{minHeight:Hh},children:c.jsxs("h3",{children:["Workspaces · ",x.length]})}),c.jsxs("div",{className:V.list,children:[x.length===0&&c.jsx($e,{style:{padding:"var(--pi-spacing-12) var(--pi-spacing-10)"},children:o!=="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($h,{label:ko(y.cwd),cwd:y.cwd,sessionCount:y.sessions.length,collapsed:S,attentionDot:S?Up(y.sessions,g):null,onToggleCollapsed:()=>f(y.cwd),onOpenMenu:(I,A)=>a(y.cwd,I,A)}),!S&&c.jsxs("div",{className:V.workspaceSessions,children:[y.sessions.map(I=>c.jsx(_h,{session:I,active:I.id===n,draggable:y.cwd===r,onSelect:()=>k(I.id),onOpenMenu:(A,U)=>i(I.id,A,U),onDragStartRow:A=>_(I.id,y.cwd,A)},I.id)),c.jsxs("button",{type:"button",className:V.newSessionRow,disabled:o!=="open",title:o!=="open"?"Connect to start a new session":void 0,onClick:()=>Et(y.cwd),children:[c.jsx(re,{icon:Ut,size:"xs"}),"New session"]})]})]},y.cwd)})]}),c.jsxs("button",{type:"button",className:V.footer,disabled:o!=="open",title:o!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>u(),children:[c.jsx(re,{icon:Ut,size:"xs"}),"Add workspace"]}),c.jsx(jh,{}),c.jsx(Lh,{})]})}const Eo="data-pi-dragging";function To(e=document.body){e.setAttribute(Eo,"")}function Qt(e=document.body){e.removeAttribute(Eo)}const Ws={tab:0,strip:1,pane:2};function yn(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 Kh(e){const t=e.activatorEvent;return t instanceof MouseEvent?{x:t.clientX+e.delta.x,y:t.clientY+e.delta.y}:null}function Gh(e,t,n){return e.kind==="tab"?n.placement[t]??null:e.paneId}function Yh(e){const[t,n]=w.useState(null),[s,r]=w.useState(null),o=M(g=>g.tabs.find(k=>k.id===t)??null),i=Yi(Xi(Zi,{activationConstraint:{distance:4}})),a=w.useMemo(()=>g=>{const k=Ji(g).map(_=>{var x;return{hit:_,target:yn((x=g.droppableContainers.find(y=>y.id===_.id))==null?void 0:x.data.current)}}).filter(_=>_.target!==null).toSorted((_,x)=>Ws[_.target.kind]-Ws[x.target.kind]);return k.length===0?[]:[k[0].hit]},[]),d=w.useCallback(g=>{const{over:k,active:_}=g,x=yn(k==null?void 0:k.data.current);if(!k||x===null||e===null)return null;const y=L.getState().layouts[e];if(y===void 0)return null;const S=String(_.id),I=String(k.id);if(x.kind!=="pane"){const G=Gh(x,I,y);return G===null||x.kind==="tab"&&I===S?null:x.kind==="tab"&&y.placement[S]===G?{paneId:G,region:"center"}:Mn("center",G,S,y.placement)?null:{paneId:G,region:"center"}}const A=Kh(g);if(x.paneId===null||A===null)return null;const U=xo(y.tree,x.paneId,So(A,k.rect));return Mn(U,x.paneId,S,y.placement)?null:{paneId:x.paneId,region:U}},[e]),u=w.useCallback(g=>{To(),n(String(g.active.id))},[]),p=w.useCallback(g=>{const k=d(g);r(_=>(_==null?void 0:_.paneId)===(k==null?void 0:k.paneId)&&(_==null?void 0:_.region)===(k==null?void 0:k.region)?_:k)},[d]),f=w.useCallback(()=>{Qt(),n(null),r(null)},[]),m=w.useCallback(g=>{var pe;Qt(),n(null),r(null);const{active:k,over:_}=g,x=yn(_==null?void 0:_.data.current);if(!_||x===null||e===null)return;const y=String(k.id),S=L.getState().layouts[e];if(S===void 0)return;const I=M.getState(),A=I.tabs.filter(Y=>Y.workspaceCwd===e).map(Y=>Y.id),{moveTab:U,splitWithTab:G}=L.getState();if(x.kind==="tab"){const Y=String(_.id);if(Y===y)return;const ye=S.placement[Y];ye!==void 0&&ye!==S.placement[y]&&U(e,y,ye,A),I.reorder(y,Y);return}const oe=d(g);if(oe===null)return;if(oe.region!=="center"){G(e,y,oe.paneId,oe.region,A);return}U(e,y,oe.paneId,A);const $=((pe=L.getState().layouts[e])==null?void 0:pe.placement)??{},Z=A.filter(Y=>Y!==y&&$[Y]===oe.paneId).at(-1);Z!==void 0&&A.indexOf(y)<A.indexOf(Z)&&I.reorder(y,Z)},[e,d]);return{sensors:i,collisionDetection:a,onDragStart:u,onDragMove:p,onDragEnd:m,onDragCancel:f,draggedTab:o,preview:s}}const Xh=w.lazy(()=>de(()=>import("./ChatPanel-IwIp9TyM.js"),__vite__mapDeps([21,1,2,9,5,7,8,22,23,24,25,26,27,28,10,11,29])).then(e=>({default:e.ChatPanel}))),Us=w.lazy(()=>de(()=>import("./FilePanel-DuSXRbB3.js"),__vite__mapDeps([30,1,7,8,2,31,27,28,9,10,11,32])).then(e=>({default:e.FilePanel}))),Jh=w.lazy(()=>de(()=>import("./TerminalPanel-BHWw9ZUE.js"),__vite__mapDeps([33,1,34,35,7,8,2,9,10,11,36])).then(e=>({default:e.TerminalPanel}))),Zh=w.lazy(()=>de(()=>import("./MoleculeViewerPanel-gr1xhI3B.js"),__vite__mapDeps([37,1,38,39,3,4,40,2,31,7,8,9,10,11,41])).then(e=>({default:e.MoleculeViewerPanel}))),Qh={chat:Xh,file:Us,diff:Us,terminal:Jh,molecule:Zh},bt="var(--pane-strip-height)";function ts(e){return e===void 0?new Map:Kf(so(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 Co(e){if(e!==void 0)return{left:te(e.x),top:`calc(${te(e.y)} + ${bt})`,width:te(e.width),height:`calc(${te(e.height)} - ${bt})`}}function eg(e,t){const n=`${te(e.y)} + ${bt}`,s=`${te(e.height)} - ${bt}`,r=`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:r};case"bottom":return{left:te(e.x),top:`calc(${n} + (${s}) / 2)`,width:te(e.width),height:r};case"center":return{left:te(e.x),top:`calc(${n})`,width:te(e.width),height:`calc(${s})`}}}function tg(e){const t=ts(e);return[...t].map(([n,s])=>({paneId:n,stripStyle:{left:te(s.x),top:te(s.y),width:te(s.width),height:bt},focused:t.size>1&&(e==null?void 0:e.focusedPaneId)===n}))}function ng(e){if(e===void 0)return[];const t=so(e.tree,new Set(Object.values(e.placement)));return t!==e.tree?[]:Gf(t)}function sg(e,t){return(t==null?void 0:t.placement[e])??null}function rg(e,t,n){const s=ts(n);return e.map(r=>{const o=r.workspaceCwd===t?n==null?void 0:n.placement[r.id]:void 0;return{tabId:r.id,style:Co(o===void 0?void 0:s.get(o)),visible:o!==void 0&&(n==null?void 0:n.activeByPane[o])===r.id}})}const og="_divider_4eg4l_9",ig="_vertical_4eg4l_26",ag="_horizontal_4eg4l_41",wn={divider:og,vertical:ig,horizontal:ag};function cg({cwd:e,dividers:t,hostRef:n}){const s=L(i=>i.resizeDivider),r=w.useRef(0);function o(i,a){var k;const d=(k=n.current)==null?void 0:k.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 f=i.currentTarget;f.setPointerCapture(i.pointerId),r.current=u?i.clientX:i.clientY,document.body.style.cursor=u?"col-resize":"row-resize",document.body.style.userSelect="none";const m=_=>{const x=u?_.clientX:_.clientY,y=x-r.current;r.current=x,s(e,a.splitPath,a.boundaryIndex,y/p)},g=_=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",g),window.removeEventListener("pointercancel",g),document.body.style.cursor="",document.body.style.userSelect="",f.hasPointerCapture(_.pointerId)&&f.releasePointerCapture(_.pointerId)};window.addEventListener("pointermove",m),window.addEventListener("pointerup",g),window.addEventListener("pointercancel",g)}return t.map(i=>{const a=i.direction==="row";return c.jsx("div",{className:z(wn.divider,a?wn.vertical:wn.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=>o(d,i)},`${i.splitPath.join(".")}:${i.boundaryIndex}`)})}const Hs={loaded:!1,capable:!1,viewers:{}},Ue=le()((e,t)=>({...Hs,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 r=await n.getViewerSettings();e({loaded:!0,capable:!0,viewers:r.viewers})}catch{e({loaded:!0,capable:!0,viewers:{}})}},applyUpdate(n){e({viewers:n.viewers})},async setEnabled(n,s){const r=q.getState().client,o=t().viewers[n];if(e(i=>({viewers:{...i.viewers,[n]:{...o,enabled:s}}})),!!r)try{const i=await r.setViewerSettings({[n]:{enabled:s}});e({viewers:i.viewers})}catch{Vs(e,n,o),Ks()}},async setConfig(n,s){const r=q.getState().client,o=t().viewers[n];if(e(i=>({viewers:{...i.viewers,[n]:{enabled:(o==null?void 0:o.enabled)??!0,config:s}}})),!!r)try{const i=await r.setViewerSettings({[n]:{config:s}});e({viewers:i.viewers})}catch{Vs(e,n,o),Ks()}},reset(){e(Hs)}}));function Vs(e,t,n){e(s=>{const r={...s.viewers};return n===void 0?delete r[t]:r[t]=n,{viewers:r}})}function Ks(){Ae.getState().error("Could not save the viewer setting. Reverted.")}function Ro(e){return Ue.getState().isViewerEnabled(e)}const lg=w.lazy(()=>de(()=>import("./TextViewer-d0xfOD_a.js"),__vite__mapDeps([42,1,43,2,40,7,8,44,9,10,11,45])).then(e=>({default:e.TextViewer}))),dg=w.lazy(()=>de(()=>import("./MarkdownFileViewer-Jd18lpAb.js"),__vite__mapDeps([46,1,43,2,40,7,8,44,22,23,24,25,26,9,10,11,47])).then(e=>({default:e.MarkdownFileViewer}))),ug=w.lazy(()=>de(()=>import("./ImageViewer-CGkHIlbr.js"),__vite__mapDeps([48,1,40,2,7,8,9,10,11,49])).then(e=>({default:e.ImageViewer}))),fg=w.lazy(()=>de(()=>import("./VideoViewer-DhoCw-I5.js"),__vite__mapDeps([50,1,40,2,7,8,9,10,11,51])).then(e=>({default:e.VideoViewer}))),pg=w.lazy(()=>de(()=>import("./BinaryFallbackViewer-BH2FpXPq.js"),__vite__mapDeps([52,1,40,2,9,7,8,10,11,53])).then(e=>({default:e.BinaryFallbackViewer}))),hg=w.lazy(()=>de(()=>import("./HtmlViewer-Bp9FVmsO.js"),__vite__mapDeps([54,1,2,14,7,8,15,43,40,44,25,9,10,11,55])).then(e=>({default:e.HtmlViewer}))),gg=w.lazy(()=>de(()=>import("./PdfViewer-Chvwi-vw.js"),__vite__mapDeps([56,1,40,2,57,9,7,8,10,11,58])).then(e=>({default:e.PdfViewer}))),Rt=[{kind:"text",component:lg,extensions:[],liveRefresh:!0},{kind:"markdown",component:dg,extensions:["md","markdown","mdx"],liveRefresh:!0},{kind:"html",component:hg,extensions:["html","htm","xhtml"],liveRefresh:!0},{kind:"image",component:ug,extensions:["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"],mimePrefixes:["image/"],liveRefresh:!0},{kind:"video",component:fg,extensions:["mp4","webm","mov","m4v","ogv"],mimePrefixes:["video/"],liveRefresh:!1},{kind:"pdf",component:gg,extensions:["pdf"],mimePrefixes:["application/pdf"],liveRefresh:!0,toggle:{id:"pdfviewer",fallback:"binary"}},{kind:"binary",component:pg,extensions:["zip","gz","tar","exe","wasm","woff","woff2","ttf","otf"],liveRefresh:!1}],Fv=Object.freeze(Object.fromEntries(Rt.map(e=>[e.kind,e.component]))),mg=Object.freeze(Object.fromEntries(Rt.flatMap(e=>e.extensions.map(t=>[t,e.kind])))),_g=Object.freeze(Rt.flatMap(e=>(e.mimePrefixes??[]).map(t=>[t,e.kind]))),zv=Object.freeze(new Set(Rt.filter(e=>e.liveRefresh).map(e=>e.kind)));function jo(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const yg={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},wg={poscar:!0,contcar:!0};function Ao(e){if(yg[jo(e)])return!0;const t=e.split("/").pop()??e;return!!wg[t.toLowerCase()]}function vg(e,t={}){const n=mg[jo(e)];if(n)return n;const s=t.mimeHint??"";for(const[r,o]of _g)if(s.startsWith(r))return o;return t.isBinary?"binary":"text"}const bg=new Map(Rt.flatMap(e=>e.toggle?[[e.kind,e.toggle]]:[]));function Wv(e,t,n={}){const s=vg(e,n),r=bg.get(s);return r&&!t(r.id)?r.fallback:s}function ns(e,t,n){Ao(e)&&Ro("molviewer")?qo(e,t,n):Mo(e,t,n)}function Mo(e,t,n){const s=e.split("/").pop()||e;M.getState().open({id:Q.file(e),kind:"file",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}function qo(e,t,n){const s=e.split("/").pop()||e;M.getState().open({id:Q.molecule(e),kind:"molecule",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}const qn="data-pane-drop";function kg(e){return{[qn]:e}}function Sg(e,t){if(e===null)return null;for(const n of e.querySelectorAll(`[${qn}]`)){const s=n.getBoundingClientRect(),r={left:s.left,top:s.top,width:s.width,height:s.height},o=n.getAttribute(qn);if(o!==null&&o!==""&&Fh(r,t))return{paneId:o,bounds:r}}return null}function xg(e){const{tabs:t}=M.getState(),n=s=>t.some(r=>r.id===s)?s:null;return e.kind==="chat"?n(Q.chat(e.value)):n(Q.file(e.value))??n(Q.molecule(e.value))}function Ig(e,t,n,s,r){const o=L.getState().layouts[t];if(o===void 0)return;const i=M.getState().tabs.filter(p=>p.workspaceCwd===t).map(p=>p.id),a=xg(e);if(a!==null){if(Mn(s,n,a,o.placement))return;const{moveTab:p,splitWithTab:f}=L.getState();s==="center"?p(t,a,n,i):f(t,a,n,s,i);return}let d=n;if(s!=="center"&&(d=L.getState().splitEmpty(t,n,s)),d===null)return;if(e.kind==="path"){ns(e.value,t,d);return}const u=R.getState().sessions[e.value];u!==void 0&&Zt(u,r,d)}function Eg(e,t){const[n,s]=w.useState(null),r=rt();w.useEffect(()=>{const u=()=>To(),p=()=>Qt();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),Qt()}},[]);const o=w.useCallback(u=>{if(e===null)return null;const p=L.getState().layouts[e];if(p===void 0)return null;const f={x:u.clientX,y:u.clientY},m=Sg(t.current,f);return m===null?null:{paneId:m.paneId,region:Uh(p.tree,m.paneId,f,m.bounds)}},[e,t]),i=w.useCallback(u=>{if(Io(u.dataTransfer.types)===null)return;u.preventDefault(),u.dataTransfer.dropEffect="copy";const p=o(u);s(f=>(f==null?void 0:f.paneId)===(p==null?void 0:p.paneId)&&(f==null?void 0:f.region)===(p==null?void 0:p.region)?f:p)},[o]),a=w.useCallback(u=>{u.currentTarget.contains(u.relatedTarget)||s(null)},[]),d=w.useCallback(u=>{const p=Wh(u.dataTransfer.types,m=>u.dataTransfer.getData(m));if(p===null)return;u.preventDefault(),s(null);const f=o(u);f===null||e===null||Ig(p,e,f.paneId,f.region,r)},[e,r,o]);return{preview:n,onDragOver:i,onDragLeave:a,onDrop:d}}function Tg(e,t,n,s){if(e.kind!=="chat"||n)return null;if(s)return{status:"waiting",requiresAttention:!0,attentionReason:"question"};if(t===void 0)return null;const r=ze(t);return r==="running"||r==="error"?{status:r}:null}const Cg="_strip_1jel9_1",Rg="_tabs_1jel9_13",jg="_paneStrip_1jel9_28",Ag="_focused_1jel9_36",Mg="_tab_1jel9_13",qg="_tabActive_1jel9_61",Pg="_tabIcon_1jel9_65",Ng="_tabLabel_1jel9_70",Dg="_tabLabelMono_1jel9_76",$g="_tabDot_1jel9_81",Og="_tabClose_1jel9_88",Lg="_tabNeedsInput_1jel9_114",Bg="_newTab_1jel9_122",Fg="_stripActions_1jel9_130",zg="_splitAction_1jel9_137",Wg="_itemIcon_1jel9_142",ne={strip:Cg,tabs:Rg,paneStrip:jg,focused:Ag,tab:Mg,tabActive:qg,tabIcon:Pg,tabLabel:Ng,tabLabelMono:Dg,tabDot:$g,tabClose:Og,tabNeedsInput:Lg,newTab:Bg,stripActions:Fg,splitAction:zg,itemIcon:Wg},Po={chat:yr,file:nn,diff:_r,terminal:mr,molecule:tn},Ug={file:!0,diff:!0};function Hg({tab:e,active:t}){const n=M(y=>y.activate),s=N(y=>y.openTabMenu),r=Po[e.kind],o=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=wo(i??""),d=Tg(e,o,t,a.length>0),u=(d==null?void 0:d.attentionReason)==="question",p=e.kind==="terminal"&&e.data.exited===!0,{attributes:f,listeners:m,setNodeRef:g,transform:k,transition:_,isDragging:x}=ta({id:e.id,data:{type:"tab"}});return c.jsxs("div",{ref:g,className:z(ne.tab,t&&ne.tabActive,u&&ne.tabNeedsInput),style:{transform:na.Transform.toString(k),transition:_,opacity:x?.5:p?.6:1},onClick:()=>n(e.id),onAuxClick:y=>{y.button===1&&e.closable&&Yt(e.id)},onContextMenu:y=>{e.closable&&(y.preventDefault(),s(e.id,y.clientX,y.clientY))},title:p?`${e.label} (exited)`:e.label,...f,...m,children:[c.jsx("span",{className:ne.tabIcon,children:c.jsx(re,{icon:r,size:"xs",color:t&&e.kind==="chat"?"var(--pi-color-accentBright)":"currentColor","aria-hidden":!0})}),c.jsx("span",{className:z(ne.tabLabel,Ug[e.kind]&&ne.tabLabelMono),children:e.label}),d&&c.jsx(sn,{...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(),Yt(e.id)},children:c.jsx(re,{icon:wt,size:"xs","aria-hidden":!0})})]})}function Vg({workspaceCwd:e,paneId:t}){const n=Ue(r=>r.isViewerEnabled("molviewer")),s=r=>()=>{e!==null&&r(e,t??void 0)};return c.jsxs(kt,{children:[c.jsx(St,{asChild:!0,children:c.jsx(Me,{className:ne.newTab,size:"xs",hoverBase:"var(--pi-color-background)",title:"New tab",disabled:!e,children:c.jsx(re,{icon:Ut,size:"sm","aria-hidden":!0})})}),c.jsxs(Tt,{minWidth:160,sideOffset:4,children:[c.jsxs(K,{onSelect:s(Et),children:[c.jsx(re,{icon:yr,size:"xs",className:ne.itemIcon,"aria-hidden":!0}),"New chat"]}),c.jsxs(K,{onSelect:s(uo),children:[c.jsx(re,{icon:mr,size:"xs",className:ne.itemIcon,"aria-hidden":!0}),"New terminal"]}),n&&c.jsxs(K,{onSelect:s(op),children:[c.jsx(re,{icon:tn,size:"xs",className:ne.itemIcon,"aria-hidden":!0}),"New molecule view"]})]})]})}function Kg({cwd:e,paneId:t}){const n=L(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=L.getState().splitEmpty(e,t,a);d!==null&&Et(e,d)},r=a=>n===void 0||t===null?"Open a workspace to split":vt(n,t,a)?null:"Maximum split depth reached",o=r("right"),i=r("bottom");return c.jsxs("div",{className:ne.stripActions,children:[c.jsx(Me,{className:ne.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:o??"Split right",disabled:o!==null,onClick:s("right"),children:c.jsx(re,{icon:bi,size:"sm","aria-hidden":!0})}),c.jsx(Me,{className:ne.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:i??"Split down",disabled:i!==null,onClick:s("bottom"),children:c.jsx(re,{icon:ki,size:"sm","aria-hidden":!0})})]})}function Gs({cwd:e,paneId:t,style:n,focused:s=!1}){const r=M(p=>p.tabs),o=L(p=>p.focusPane),i=L(p=>{var f;return e===null||(f=p.layouts[e])==null?void 0:f.placement}),a=L(p=>{var f;return e===null||t===null||(f=p.layouts[e])==null?void 0:f.activeByPane[t]}),d=t===null?[]:r.filter(p=>(i==null?void 0:i[p.id])===t),{setNodeRef:u}=wr({id:`strip:${t??"none"}`,disabled:t===null,data:{type:"strip",paneId:t}});return c.jsxs("div",{ref:u,className:z(ne.strip,ne.paneStrip,s&&ne.focused),style:n,onPointerDown:()=>{e!==null&&t!==null&&o(e,t)},children:[c.jsx("div",{className:ne.tabs,children:c.jsx(Qi,{items:d.map(p=>p.id),strategy:ea,children:d.map(p=>c.jsx(Hg,{tab:p,active:p.id===a},p.id))})}),c.jsx(Vg,{workspaceCwd:e,paneId:t}),c.jsx(Kg,{cwd:e,paneId:t})]})}const Gg="_preview_1txmv_1",Yg="_chip_1txmv_9",Xg="_chipLabel_1txmv_23",Pn={preview:Gg,chip:Yg,chipLabel:Xg};function Jg({rect:e,region:t}){return c.jsx("div",{className:Pn.preview,style:eg(e,t)})}function Zg({tab:e}){const t=Po[e.kind];return c.jsxs("div",{className:Pn.chip,children:[c.jsx(t,{size:13}),c.jsx("span",{className:Pn.chipLabel,children:e.label})]})}function Qg(){const e=N(a=>a.tabMenu),t=N(a=>a.closeTabMenu),n=w.useRef(null),[s,r]=w.useState(!1);if(w.useEffect(()=>{r(e!==null)},[e]),!e)return null;function o(a){r(a),a||t()}function i(){e&&Yt(e.tabId),t()}return c.jsxs(kt,{open:s,onOpenChange:o,modal:!1,children:[c.jsx(St,{asChild:!0,children:c.jsx(cn,{ref:n,x:e.x,y:e.y})}),c.jsx(Tt,{minWidth:120,children:c.jsxs(K,{onSelect:i,children:[c.jsx(wt,{size:13}),"Close"]})})]})}const em="_overlay_1k4ng_1",tm="_contentWrapper_1k4ng_7",nm="_dialog_1k4ng_16",sm="_header_1k4ng_28",rm="_title_1k4ng_36",om="_body_1k4ng_43",im="_footer_1k4ng_49",am="_bare_1k4ng_58",cm="_bareBody_1k4ng_64",lm="_bareCloseBtn_1k4ng_68",dm="_visuallyHidden_1k4ng_73",Se={overlay:em,contentWrapper:tm,dialog:nm,header:sm,title:rm,body:om,footer:im,bare:am,bareBody:cm,bareCloseBtn:lm,visuallyHidden:dm},No=xn;function Nn({open:e,onOpenChange:t,title:n,children:s,footer:r,width:o,className:i,bare:a=!1,onInteractOutside:d,onEscapeKeyDown:u,onCloseAutoFocus:p,onOpenAutoFocus:f}){return c.jsx(Fi,{open:e,onOpenChange:t,children:c.jsxs(zi,{children:[c.jsx(Wi,{className:Se.overlay}),c.jsx("div",{className:Se.contentWrapper,children:c.jsxs(Ui,{className:z(Se.dialog,a&&Se.bare,i),style:o!==void 0?{width:o}:void 0,onInteractOutside:d,onEscapeKeyDown:u,onCloseAutoFocus:p,onOpenAutoFocus:f,children:[a?c.jsx(us,{className:Se.visuallyHidden,children:n}):c.jsxs("div",{className:Se.header,children:[c.jsx(us,{className:Se.title,children:n}),c.jsx(xn,{asChild:!0,children:c.jsx(Me,{size:"sm","aria-label":"Close",children:c.jsx(wt,{size:16})})})]}),c.jsx("div",{className:z(Se.body,a&&Se.bareBody),children:s}),a&&c.jsx(xn,{asChild:!0,children:c.jsx(Me,{size:"sm","aria-label":"Close",className:Se.bareCloseBtn,style:{background:"var(--pi-color-surface1)",border:"1px solid var(--pi-color-border)",borderRadius:"50%"},children:c.jsx(wt,{size:16})})}),r&&c.jsx("div",{className:Se.footer,children:r})]})})]})})}function um(e,t,n){return n===0?-1:Math.min(Math.max(e+(t==="ArrowDown"?1:-1),0),n-1)}const fm="An extension declined the fork.",pm="Couldn't fork. Try again.";function hm(e,t){if(Zn(),t.cancelled){Ae.getState().error(fm),_e.getState().close();return}_e.getState().close();const n=R.getState().findByAgentId(e);if(!n)return;(An.getState().drafts[n.id]??"")===""&&An.getState().setDraft(n.id,t.text)}function gm(e){Zn();const t=e instanceof Error&&e.message?e.message:pm;Ae.getState().error(t),_e.getState().setPending(!1)}const mm="_confirmContent_10pv6_9",_m="_preview_10pv6_13",ym="_previewPending_10pv6_28",wm="_copy_10pv6_32",vm="_backButton_10pv6_39",bm="_pickerList_10pv6_45",km="_pickerRow_10pv6_54",Sm="_pickerOrdinal_10pv6_73",xm="_pickerText_10pv6_80",Im="_pickerEmpty_10pv6_88",Ee={confirmContent:mm,preview:_m,previewPending:ym,copy:wm,backButton:vm,pickerList:bm,pickerRow:km,pickerOrdinal:Sm,pickerText:xm,pickerEmpty:Im},Em="Later messages leave the agent's context. The original prompt is placed in the composer for editing.";function Tm(e){var r;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return;e.preventDefault();const t=Array.from(e.currentTarget.querySelectorAll("button")),n=t.indexOf(document.activeElement),s=um(n,e.key,t.length);s>=0&&((r=t[s])==null||r.focus())}function Cm(){const e=_e(S=>S.dialog),t=_e(S=>S.selectFromPicker),n=_e(S=>S.backToPicker),s=_e(S=>S.setPending),r=_e(S=>S.close),o=Kn(),i=w.useRef(null),a=w.useRef(null),d=e.status!=="closed",u=e.status==="confirm"&&e.pending,p=w.useRef(null),f=w.useRef(null);e.status!=="closed"&&(p.current=e.triggerElement,f.current=e.agentId),w.useEffect(()=>{e.status==="picker"&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[e]);function m(S){var I,A;S.preventDefault(),(A=(I=i.current)==null?void 0:I.querySelector("button"))==null||A.focus()}function g(S){var I;S.preventDefault(),(I=a.current)==null||I.focus()}function k(S){const I=p.current;if(I!=null&&I.isConnected){S.preventDefault(),I.focus();return}const A=f.current,U=A?R.getState().findByAgentId(A):void 0,G=U?document.querySelector(`[data-session-id="${U.id}"]`):null;G&&(S.preventDefault(),G.focus())}async function _(){const S=_e.getState().dialog;if(!(S.status!=="confirm"||S.pending||!o)){s(!0),an("Forking…");try{const I=await o.agent(S.agentId).fork(S.target.entryId);hm(S.agentId,I)}catch(I){gm(I)}}}if(!d)return null;if(e.status==="picker")return c.jsx(Nn,{open:!0,onOpenChange:S=>!S&&r(),title:"Fork from…",width:460,onCloseAutoFocus:k,onOpenAutoFocus:m,children:e.messages.length===0?c.jsxs($e,{className:Ee.pickerEmpty,children:[c.jsx(re,{icon:gr,size:"lg"}),c.jsx("div",{children:"Nothing to fork yet"})]}):c.jsx("div",{className:Ee.pickerList,ref:i,onKeyDown:Tm,children:e.messages.map((S,I)=>c.jsxs("button",{type:"button",className:Ee.pickerRow,onClick:()=>t(S),children:[c.jsxs("span",{className:Ee.pickerOrdinal,children:["#",I+1]}),c.jsx("span",{className:Ee.pickerText,children:S.text})]},S.entryId))})});const{target:x,backTo:y}=e;return c.jsx(Nn,{open:!0,onOpenChange:S=>!S&&!u&&r(),title:"Fork conversation",width:440,onInteractOutside:S=>{u&&S.preventDefault()},onEscapeKeyDown:S=>{u&&S.preventDefault()},onCloseAutoFocus:k,onOpenAutoFocus:g,footer:c.jsxs(c.Fragment,{children:[y!==null&&c.jsx(se,{className:Ee.backButton,size:"sm",variant:"ghost",disabled:u,onClick:()=>n(),children:"‹ Back"}),c.jsx(No,{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 _(),children:u?"Forking…":"Fork from here"})]}),children:c.jsxs("div",{className:Ee.confirmContent,children:[c.jsx("div",{className:z(Ee.preview,u&&Ee.previewPending),children:x.text}),c.jsx("div",{className:Ee.copy,children:Em})]})})}const Rm="_area_9sawz_1",jm="_panel_9sawz_11",Am="_dropZone_9sawz_27",Mm="_active_9sawz_31",qm="_empty_9sawz_35",Pm="_emptyStack_9sawz_47",Nm="_emptyTitle_9sawz_61",Dm="_emptyHint_9sawz_65",Ne={area:Rm,panel:jm,dropZone:Am,active:Mm,empty:qm,emptyStack:Pm,emptyTitle:Nm,emptyHint:Dm};function $m({paneId:e,style:t}){const{setNodeRef:n}=wr({id:`pane:${e}`,data:{type:"pane",paneId:e}});return c.jsx("div",{ref:n,className:Ne.dropZone,style:t,...kg(e)})}function Om(){const e=M(_=>_.tabs),t=M(_=>_.activeWorkspaceCwd),n=L(_=>t===null?void 0:_.layouts[t]),s=q(_=>_.status),r=N(_=>_.openCwdPicker),o=L(_=>_.focusPane),i=e.some(_=>_.workspaceCwd===t),a=w.useRef(null),d=w.useMemo(()=>rg(e,t,n),[e,t,n]),u=w.useMemo(()=>tg(n),[n]),p=w.useMemo(()=>ng(n),[n]),f=w.useMemo(()=>ts(n),[n]),m=Yh(t),g=Eg(t,a),k=m.preview??g.preview;return c.jsxs(sa,{sensors:m.sensors,collisionDetection:m.collisionDetection,onDragStart:m.onDragStart,onDragMove:m.onDragMove,onDragEnd:m.onDragEnd,onDragCancel:m.onDragCancel,children:[c.jsxs("div",{className:Ne.area,ref:a,onDragOver:g.onDragOver,onDragLeave:g.onDragLeave,onDrop:g.onDrop,children:[u.length===0?c.jsx(Gs,{cwd:t,paneId:null}):u.map(_=>c.jsx(Gs,{cwd:t,paneId:_.paneId,style:_.stripStyle,focused:_.focused},_.paneId)),c.jsx(Qg,{}),c.jsx(Cm,{}),t!==null&&p.length>0&&c.jsx(cg,{cwd:t,dividers:p,hostRef:a}),u.map(_=>c.jsx($m,{paneId:_.paneId,style:Co(f.get(_.paneId))},`drop-${_.paneId}`)),k!==null&&f.has(k.paneId)&&c.jsx(Jg,{rect:f.get(k.paneId),region:k.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(Si,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>r(),children:"Open Workspace"})]}),t!==null&&!i&&c.jsx("div",{className:Ne.empty,children:"No open tabs in this workspace"}),e.map((_,x)=>{const y=Qh[_.kind],S=d[x],I=n==null?void 0:n.placement[_.id];return c.jsx("div",{className:z(Ne.panel,S.visible&&Ne.active),style:S.style,onPointerDown:()=>{t!==null&&I!==void 0&&o(t,I)},children:c.jsx(w.Suspense,{fallback:c.jsx(Cr,{size:"md"}),children:c.jsx(y,{tab:_,owningPaneId:sg(_.id,n)})})},_.id)})]}),c.jsx(ra,{dropAnimation:null,children:m.draggedTab&&c.jsx(Zg,{tab:m.draggedTab})})]})}const ce=le()(e=>({rootPath:"",expanded:new Set,expandedByRoot:new Map,draft:null,renaming:null,selected:null,setRoot:t=>e(n=>{const s=new Map(n.expandedByRoot);n.rootPath&&s.set(n.rootPath,n.expanded);const r=s.get(t);return{rootPath:t,expanded:r?new Set(r):new Set([t]),expandedByRoot:s,draft:null,selected:null,renaming:null}}),toggle:t=>e(n=>{const s=new Set(n.expanded);s.has(t)?s.delete(t):s.add(t);const r=new Map(n.expandedByRoot);return r.set(n.rootPath,s),{expanded:s,expandedByRoot:r}}),startDraft:(t,n)=>e(s=>{const r=new Set(s.expanded);r.add(t);const o=new Map(s.expandedByRoot);return s.rootPath&&o.set(s.rootPath,r),{draft:{parentPath:t,kind:n},expanded:r,expandedByRoot:o,renaming:null}}),cancelDraft:()=>e({draft:null}),startRename:t=>e({renaming:t,draft:null}),cancelRename:()=>e({renaming:null}),setSelected:t=>e({selected:t}),repathAfterMove:(t,n,s)=>e(r=>{const o=u=>u===t?n:u.startsWith(`${t}/`)?n+u.slice(t.length):u,i=new Set([...r.expanded].map(o));i.add(s);const a=new Map(r.expandedByRoot);r.rootPath&&a.set(r.rootPath,i);const d=r.selected?{path:o(r.selected.path),isDirectory:r.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 Lm(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function Bm(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function Do(e,t){const s=(await e.connection.request("file_explorer_request",{path:t})).result;if(!s||s.ok===!1)throw new Error(s&&"error"in s?s.error:"explorer request failed");const r="entries"in s?s.entries??[]:[];return{path:s.resolvedPath??t,entries:Bm(r.map(Lm))}}function Fm(e,t=!0){const n=q(s=>s.client);return ci({queryKey:He.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return Do(n,e)},enabled:!!n&&!!e&&t})}function zm(e){const t=q(r=>r.client),n=w.useMemo(()=>Array.from(e),[e]),s=li({queries:n.map(r=>({queryKey:He.explorer(r),queryFn:()=>{if(!t)throw new Error("not connected");return Do(t,r)},enabled:!!t&&!!r}))});return w.useMemo(()=>{const r=new Map;return n.forEach((o,i)=>{const a=s[i];r.set(o,{listing:a==null?void 0:a.data,isLoading:!!(a!=null&&a.isLoading),isError:!!(a!=null&&a.isError),error:a==null?void 0:a.error})}),r},[n,s])}function Wm(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function Um(e,t){const n=new Set,s=e.connection.onSessionMessage(r=>{const o=r;Wm(o)&&n.has(o.path)&&t(o.path)});return{sync(r){for(const o of n)r.has(o)||(n.delete(o),e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{}));for(const o of r)n.has(o)||(n.add(o),e.connection.request("file_watch_subscribe",{path:o}).then(i=>{const a=i;(a==null?void 0:a.ok)===!1&&console.warn(`useExplorerWatch: ${a.error??"subscribe failed"} for "${o}"`)}).catch(()=>{}))},dispose(){s();for(const r of n)e.connection.request("file_watch_unsubscribe",{path:r}).catch(()=>{});n.clear()}}}function Hm(e){const t=q(i=>i.client),n=st(),s=w.useRef(null),r=w.useRef(null),o=Array.from(e).toSorted().join("\0");w.useEffect(()=>{var i,a;t&&(r.current!==t&&((i=s.current)==null||i.dispose(),s.current=Um(t,d=>{n.invalidateQueries({queryKey:He.explorer(d)})}),r.current=t),(a=s.current)==null||a.sync(new Set(o?o.split("\0"):[])))},[t,o,n]),w.useEffect(()=>()=>{var i;(i=s.current)==null||i.dispose(),s.current=null,r.current=null},[])}const Ys=new WeakMap;function Xs(e){let t=Ys.get(e);return t||(t=new Pu(e),t.start(),Ys.set(e,t)),t}function Vm(e,t,n){const s=new Blob([Uint8Array.from(e)],{type:n||"application/octet-stream"}),r=URL.createObjectURL(s),o=document.createElement("a");o.href=r,o.download=t,o.rel="noopener",document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(r),0)}function $o(){const e=q(r=>r.daemon),t=st(),n=w.useCallback(async(r,o)=>{if(!e)throw new Error("not connected");const i=r?`${r}/${o.name}`:o.name,a=new Uint8Array(await o.arrayBuffer());await Xs(e).upload(i,a),await t.invalidateQueries({queryKey:["explorer"]})},[e,t]),s=w.useCallback(async r=>{if(!e)throw new Error("not connected");const o=await Xs(e).download(r);Vm(o.bytes,o.fileName||r.split("/").pop()||"download",o.mimeType)},[e]);return{upload:n,saveToDisk:s}}const Js={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},me=le()(e=>({subscribedCwd:null,changes:[],ignored:[],...Js,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],ignored:[],...Js});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 Uv(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function xe(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function Km(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function Hv(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 Zs(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:xe(t.path);if(s===xe(e)||s===e||s.startsWith(`${e}/`)||s!==n&&!s.startsWith(`${n}/`))return null;const r=e.split("/").pop();return{destinationDir:s,destination:`${s}/${r}`}}function Qs(e,t){if(e.kind!=="file"&&e.kind!=="directory")return null;const n=e.kind==="directory"?e.path:xe(e.path);return n!==t&&!n.startsWith(`${t}/`)?null:n}const Gm={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 Ym(e,t,n){const s=await e.connection.request("file_move_request",{path:t,destination:n});if(!s.ok){const r=s.error??"";throw new Error(Gm[r]??r??"Failed to move")}return s.destination??n}function er(e,t){return t===0?e:`${e} — closed ${t} ${t===1?"diff tab":"diff tabs"}`}function Xm(e){return`${e.kind}:${e.path}`}function Oo(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function Lo(e,t,n,s,r,o,i){var d;(o==null?void 0:o.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:o.kind,parentPath:t});const a=r.get(t);if(!a||a.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(a.isError){const u=a.error instanceof Error?a.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:u});return}for(const u of((d=a.listing)==null?void 0:d.entries)??[])Jm(e,t,u,n,s,r,o,i)}function Jm(e,t,n,s,r,o,i,a){const d=Oo(t,n.name),u=n.kind==="directory",p=u&&r.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&&Lo(e,d,s+1,r,o,i,a)}function Zm(e,t,n,s,r){if(!e)return[];const o=t.has(e),i=[{kind:"directory",path:e,name:e.split("/").pop()||e,depth:0,expanded:o}];return o&&Lo(i,e,1,t,n,s,r),i}const Qm=()=>{};function e_(e,t){return e===void 0?t:e==="deleted"||t==="deleted"?"deleted":e==="added"||t==="added"?"added":"modified"}function t_(e){return e==="added"?"added":"modified"}function n_(e,t){if(!e||t.length===0)return Qm;const n=e.replace(/\/+$/,""),s=new Map,r=new Map,o=[];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,e_(s.get(u),i.status)),a&&o.push(u);const p=t_(i.status);let f=xe(u);for(;f.length>n.length&&f.startsWith(n);){const m=r.get(f);r.set(f,m===void 0||m===p?p:"modified");const g=xe(f);if(g===f)break;f=g}}return i=>{const a=s.get(i)??r.get(i);if(a!==void 0)return a;for(const d of o)if(i.startsWith(`${d}/`))return"added"}}const s_=()=>!1;function r_(e,t){if(!e||t.length===0)return s_;const n=e.replace(/\/+$/,""),s=new Set,r=[];for(const o of t){const i=o.endsWith("/"),a=i?o.slice(0,-1):o;if(!a)continue;const d=`${n}/${a}`;s.add(d),i&&r.push(`${d}/`)}return o=>{if(s.has(o))return!0;for(const i of r)if(o.startsWith(i))return!0;return!1}}const o_="_container_1wywk_1",i_="_header_1wywk_7",a_="_uploadButton_1wywk_14",c_="_hiddenInput_1wywk_33",l_="_status_1wywk_36",d_="_statusError_1wywk_37",u_="_rowAction_1wywk_50",f_="_item_1wywk_53",p_="_list_1wywk_60",h_="_active_1wywk_83",g_="_selected_1wywk_88",m_="_dropTarget_1wywk_92",__="_rootItem_1wywk_99",y_="_dirName_1wywk_98",w_="_chevronSlot_1wywk_104",v_="_chevron_1wywk_104",b_="_chevronOpen_1wywk_115",k_="_icon_1wywk_118",S_="_name_1wywk_125",x_="_gitAdded_1wywk_140",I_="_gitModified_1wywk_145",E_="_gitDeleted_1wywk_150",T_="_hiddenEntry_1wywk_162",C_="_statusRow_1wywk_171",R_="_statusRowError_1wywk_182",j_="_draftInput_1wywk_185",B={container:o_,header:i_,uploadButton:a_,hiddenInput:c_,status:l_,statusError:d_,rowAction:u_,item:f_,list:p_,active:h_,selected:g_,dropTarget:m_,rootItem:__,dirName:y_,chevronSlot:w_,chevron:v_,chevronOpen:b_,icon:k_,name:S_,gitAdded:x_,gitModified:I_,gitDeleted:E_,hiddenEntry:T_,statusRow:C_,statusRowError:R_,draftInput:j_};function A_({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[r,o]=w.useState("");return c.jsxs("div",{className:B.item,style:t,onClick:i=>i.stopPropagation(),children:[c.jsx("span",{className:B.chevronSlot}),c.jsx("span",{className:B.icon,children:e==="directory"?c.jsx(Ve,{size:16}):c.jsx(nn,{size:16})}),c.jsx("input",{className:B.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:r,onChange:i=>o(i.target.value),onKeyDown:i=>{if(i.key==="Enter"){i.preventDefault();const a=r.trim();a?n(a):s()}else i.key==="Escape"&&(i.preventDefault(),s())},onBlur:s})]})}function M_({name:e,isDirectory:t,indentStyle:n,onSubmit:s,onCancel:r}){const[o,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:B.item,style:n,onClick:d=>d.stopPropagation(),children:[c.jsx("span",{className:B.chevronSlot}),c.jsx("span",{className:B.icon,children:t?c.jsx(Ve,{size:16}):c.jsx(nn,{size:16})}),c.jsx("input",{ref:a,className:B.draftInput,spellCheck:!1,value:o,onChange:d=>i(d.target.value),onKeyDown:d=>{if(d.key==="Enter"){d.preventDefault();const u=o.trim();!u||u===e?r():s(u)}else d.key==="Escape"&&(d.preventDefault(),r())},onBlur:r})]})}const q_=14,P_={added:B.gitAdded,modified:B.gitModified,deleted:B.gitDeleted};function N_({row:e,active:t,selected:n,dropTarget:s,gitStatus:r,hidden:o,isRoot:i,onToggle:a,onOpenFile:d,onContextMenu:u,onSubmitDraft:p,onCancelDraft:f,onSubmitRename:m,onCancelRename:g,onDragStartRow:k,onDragEndRow:_}){const x={paddingLeft:8+e.depth*q_};if(e.kind==="loading")return c.jsx("div",{className:B.statusRow,style:x,children:"Loading…"});if(e.kind==="error")return c.jsx("div",{className:z(B.statusRow,B.statusRowError),style:x,children:e.message??"failed to load"});if(e.kind==="draft")return c.jsx(A_,{draftKind:e.draftKind,indentStyle:x,onSubmit:S=>p(e.parentPath,S),onCancel:f});if(e.kind==="rename")return c.jsx(M_,{name:e.name,isDirectory:e.isDirectory,indentStyle:x,onSubmit:S=>m(e.path,S),onCancel:g});const y=e.kind==="directory";return c.jsxs("div",{className:z(B.item,i&&B.rootItem,t&&B.active,n&&B.selected,s&&B.dropTarget,r&&P_[r],o&&B.hiddenEntry),style:x,title:e.path,draggable:!i,onDragStart:S=>k(e.path,y,S),onDragEnd:_,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:B.chevronSlot,children:y&&c.jsx(Bn,{size:14,className:z(B.chevron,e.expanded&&B.chevronOpen)})}),c.jsx("span",{className:B.icon,children:y?c.jsx(Ve,{size:16}):c.jsx(nn,{size:16})}),c.jsx("span",{className:y?B.dirName:B.name,children:e.name}),c.jsx(Me,{className:B.rowAction,title:"Actions",onClick:S=>{S.stopPropagation();const I=S.currentTarget.getBoundingClientRect();u(e.path,y,I.left,I.bottom)},children:c.jsx(On,{size:14})})]})}async function tr(e){var r;if((r=navigator.clipboard)!=null&&r.writeText)try{await navigator.clipboard.writeText(e);return}catch{}const t=document.activeElement,n=(t instanceof HTMLElement?t.closest('[role="dialog"], [role="menu"]'):null)??document.body,s=document.createElement("textarea");s.value=e,s.setAttribute("aria-hidden","true"),s.style.position="fixed",s.style.opacity="0",n.appendChild(s),s.focus(),s.select();try{const o=document.activeElement===s&&s.selectionStart===0&&s.selectionEnd===s.value.length;if(!document.execCommand("copy")||!o)throw new Error('execCommand("copy") did not copy the requested text')}finally{s.remove(),t instanceof HTMLElement&&t.focus()}}const D_={empty_path:"Nothing to delete.",not_found:"That item no longer exists."};async function $_(e,t){const n=await e.connection.request("file_delete_request",{path:t});if(!n.ok){const s=n.error??"";throw new Error(D_[s]??s??"Failed to delete")}}function O_(){const e=N($=>$.fileMenu),t=N($=>$.closeFileMenu),n=q($=>$.client),s=ce($=>$.startDraft),r=ce($=>$.startRename),o=ce($=>$.rootPath),i=M($=>$.activeWorkspaceCwd),a=Ue($=>$.isViewerEnabled("molviewer")),{saveToDisk:d}=$o(),u=st(),p=w.useRef(null),[f,m]=w.useState(!1);if(w.useEffect(()=>{m(e!==null)},[e]),!e)return null;const g=e.path.split("/").pop()||e.path;function k($){m($),$||t()}function _(){e&&(t(),ns(e.path,i||"~"))}function x(){e&&(t(),qo(e.path,i||"~"))}function y(){e&&(t(),Mo(e.path,i||"~"))}async function S(){if(e){t();try{await tr(e.path)}catch{window.alert("Failed to copy to clipboard.")}}}async function I(){if(e){t();try{await tr(Km(e.path,o)||"/")}catch{window.alert("Failed to copy to clipboard.")}}}async function A(){if(e){t();try{await d(e.path)}catch($){window.alert(`Failed to download: ${$ instanceof Error?$.message:String($)}`)}}}async function U(){if(!e)return;const $=e.isDirectory?"folder (and everything inside it)":"file";if(!window.confirm(`Permanently delete this ${$}? "${g}" — this cannot be undone.`))return t();if(t(),!n){window.alert("Not connected — cannot delete remotely.");return}try{await $_(n,e.path),await u.invalidateQueries({queryKey:["explorer"]}),M.getState().closeByPathPrefix(e.path)}catch(Z){window.alert(`Failed to delete: ${Z instanceof Error?Z.message:String(Z)}`)}}function G($){if(!e)return;const Z=e.isDirectory?e.path:xe(e.path);t(),s(Z,$)}function oe(){e&&(t(),r(e.path))}return c.jsxs(kt,{open:f,onOpenChange:k,modal:!1,children:[c.jsx(St,{asChild:!0,children:c.jsx(cn,{ref:p,x:e.x,y:e.y})}),c.jsx(Tt,{minWidth:140,children:e.background?c.jsxs(c.Fragment,{children:[c.jsxs(K,{onSelect:()=>G("file"),children:[c.jsx(Sn,{size:13}),"New File"]}),c.jsxs(K,{onSelect:()=>G("directory"),children:[c.jsx(Ht,{size:13}),"New Folder"]}),c.jsx(We,{}),c.jsxs(K,{onSelect:S,children:[c.jsx(Mt,{size:13}),"Copy Current Directory Path"]}),c.jsxs(K,{onSelect:I,children:[c.jsx(Mt,{size:13}),"Copy Current Directory Relative Path"]})]}):c.jsxs(c.Fragment,{children:[!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(K,{onSelect:_,children:[c.jsx(xi,{size:13}),"Open"]}),a&&c.jsxs(K,{onSelect:x,children:[c.jsx(tn,{size:13}),"Open in MolViewer"]}),a&&Ao(e.path)&&c.jsxs(K,{onSelect:y,children:[c.jsx(Ii,{size:13}),"Open as Text"]}),c.jsx(We,{})]}),e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(K,{onSelect:()=>G("file"),children:[c.jsx(Sn,{size:13}),"New File"]}),c.jsxs(K,{onSelect:()=>G("directory"),children:[c.jsx(Ht,{size:13}),"New Folder"]}),c.jsx(We,{})]}),c.jsxs(K,{onSelect:S,children:[c.jsx(Mt,{size:13}),"Copy Absolute Path"]}),c.jsxs(K,{onSelect:I,children:[c.jsx(Mt,{size:13}),"Copy Relative Path"]}),c.jsx(We,{}),!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(K,{onSelect:A,children:[c.jsx(Ei,{size:13}),"Download"]}),c.jsx(We,{})]}),c.jsxs(K,{onSelect:oe,children:[c.jsx(hr,{size:13}),"Rename"]}),c.jsxs(K,{danger:!0,onSelect:U,children:[c.jsx(Ln,{size:13}),"Delete"]})]})})]})}const L_={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 B_ extends Error{constructor(t,n){super(n),this.code=t,this.name="CreateEntryError"}}async function Bo(e,t,n,s){const r=await e.connection.request("file_create_request",{path:t,name:n,kind:s});if(!r.ok){const o=r.error??"";throw new B_(o,L_[o]??o??"Failed to create")}return r.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const F_=28,lt="application/x-pi-studio-path",vn="Files";function z_(){const e=q(b=>b.client),t=ce(b=>b.rootPath),n=ce(b=>b.expanded),s=ce(b=>b.setRoot),r=ce(b=>b.toggle),o=ce(b=>b.draft),i=ce(b=>b.startDraft),a=ce(b=>b.cancelDraft),d=ce(b=>b.renaming),u=ce(b=>b.cancelRename),p=ce(b=>b.selected),f=ce(b=>b.setSelected),m=M(b=>b.activeWorkspaceCwd),g=rt(),k=M(b=>b.tabs.find(C=>C.id===b.activeTabId)),_=me(b=>b.changes),x=me(b=>b.ignored),{upload:y}=$o(),S=N(b=>b.openFileMenu),I=st(),[A,U]=w.useState(null),[G,oe]=w.useState(null),$=w.useRef(null),Z=w.useRef(null),pe=w.useRef(null),Y=w.useRef(null),ye=(k==null?void 0:k.kind)==="file"||(k==null?void 0:k.kind)==="molecule"?k.data.path:null,j=p?p.isDirectory?p.path:xe(p.path):t,P=w.useRef(null);w.useEffect(()=>{if(!e)return;const b=Oe(m||"~",g);b.startsWith("~")||P.current!==b&&(P.current=b,s(b))},[e,m,g,s]);const we=zm(n);Hm(n);const jt=w.useMemo(()=>Zm(t,n,we,o,d),[t,n,we,o,d]),Go=w.useMemo(()=>n_(t,_),[t,_]),Yo=w.useMemo(()=>r_(t,x),[t,x]),is=di({count:jt.length,getScrollElement:()=>Z.current,estimateSize:()=>F_,overscan:12,getItemKey:b=>{const C=jt[b];return C?Xm(C):b}});function ln(b){ns(b,m||"~")}function Xo(b,C,H){H.dataTransfer.setData(lt,b),C||H.dataTransfer.setData(Ct.path,b),H.dataTransfer.effectAllowed=C?"move":"copyMove",pe.current=b}function Jo(){pe.current=null}function dn(){oe(null),Y.current&&(clearTimeout(Y.current.timer),Y.current=null)}function as(b){var H;if(((H=Y.current)==null?void 0:H.path)===b.path||(Y.current&&clearTimeout(Y.current.timer),Y.current=null,b.kind!=="directory"||b.expanded))return;const C=window.setTimeout(()=>r(b.path),700);Y.current={path:b.path,timer:C}}async function cs(b,C){if(!e)throw new Error("Not connected.");const H=await Ym(e,b,C),O=xe(H);await I.invalidateQueries({queryKey:He.explorer(xe(b))}),await I.invalidateQueries({queryKey:He.explorer(O)}),ce.getState().repathAfterMove(b,H,O);const X=M.getState().tabs.filter(he=>{if(he.kind!=="file"&&he.kind!=="diff"&&he.kind!=="molecule")return!1;const At=he.data.path;return At===b||((At==null?void 0:At.startsWith(`${b}/`))??!1)}),ve=X.some(he=>(he.kind==="file"||he.kind==="molecule")&&he.data.path===b),ie=X.filter(he=>he.kind==="diff").length;return M.getState().closeByPathPrefix(b),ve&&ln(H),{destination:H,closedDiffs:ie}}async function Zo(b,C){const H=Zs(b,C,t);if(!H||!e)return;const O=b.split("/").pop()??b;U({text:`Moving ${O}…`,error:!1});try{const{destination:X,closedDiffs:ve}=await cs(b,H.destination);U({text:er(`Moved to ${xe(X).split("/").pop()||"/"}`,ve),error:!1})}catch(X){U({text:X instanceof Error?X.message:"Failed to move",error:!0})}}async function Qo(b,C){const H=(o==null?void 0:o.kind)??"file";if(a(),!!e)try{const O=await Bo(e,b,C,H);await I.invalidateQueries({queryKey:He.explorer(b)}),U({text:`Created ${O}`,error:!1}),H==="file"&&ln(O)}catch(O){U({text:O instanceof Error?O.message:"Failed to create",error:!0})}}async function ei(b,C){if(u(),!e)return;const H=Oo(xe(b),C);U({text:`Renaming ${b.split("/").pop()}…`,error:!1});try{const{destination:O,closedDiffs:X}=await cs(b,H);U({text:er(`Renamed to ${O.split("/").pop()}`,X),error:!1})}catch(O){U({text:O instanceof Error?O.message:"Failed to rename",error:!0})}}async function ls(b,C){var ve;if(!C.length||!b)return;const H=(ve=we.get(b))==null?void 0:ve.listing,O=new Set((H==null?void 0:H.entries.map(ie=>ie.name))??[]),X=C.filter(ie=>O.has(ie.name));if(X.length>0){const ie=X.map(he=>he.name).join(", ");if(!window.confirm(`Overwrite ${X.length>1?"these files":"this file"}? ${ie}`))return}U({text:`Uploading ${C.length} file${C.length>1?"s":""}…`,error:!1});try{for(const ie of C)await y(b,ie);U({text:`Uploaded ${C.length} file${C.length>1?"s":""}`,error:!1})}catch(ie){U({text:`Upload failed: ${ie instanceof Error?ie.message:"unknown"}`,error:!0})}}function ds(b,C){if(b.preventDefault(),b.dataTransfer.types.includes(lt)){const X=b.dataTransfer.getData(lt)||pe.current;dn(),X&&Zo(X,C??{kind:"directory",path:t});return}if(dn(),!b.dataTransfer.types.includes(vn))return;const H=C?Qs(C,t):t;if(!H)return;const O=Array.from(b.dataTransfer.files);O.length&&ls(H,O)}function ti(b){const C=b.dataTransfer.types.includes(lt);!C&&!b.dataTransfer.types.includes(vn)||(b.preventDefault(),b.dataTransfer.dropEffect=C?"move":"copy")}return e?c.jsxs("div",{className:B.container,onDragOver:ti,onDragLeave:b=>{b.currentTarget.contains(b.relatedTarget)||dn()},onDrop:b=>ds(b),children:[c.jsxs("div",{className:B.header,children:[c.jsx("button",{type:"button",className:B.uploadButton,onClick:()=>i(j,"file"),disabled:!t,title:p?`New file in ${j.split("/").pop()||"/"}`:"New file in workspace root",children:c.jsx(Sn,{size:14})}),c.jsx("button",{type:"button",className:B.uploadButton,onClick:()=>i(j,"directory"),disabled:!t,title:p?`New folder in ${j.split("/").pop()||"/"}`:"New folder in workspace root",children:c.jsx(Ht,{size:14})}),c.jsxs("button",{type:"button",className:B.uploadButton,onClick:()=>{var b;return(b=$.current)==null?void 0:b.click()},disabled:!t,title:"Upload files to the workspace root",children:[c.jsx(Ti,{size:14}),c.jsx("span",{children:"Upload"})]}),c.jsx("input",{ref:$,type:"file",multiple:!0,className:B.hiddenInput,onChange:b=>{ls(t,Array.from(b.target.files??[])),b.target.value=""}})]}),A&&c.jsx("div",{className:A.error?B.statusError:B.status,children:A.text}),c.jsxs("div",{className:B.list,ref:Z,onContextMenu:b=>{b.preventDefault(),S(t,!0,b.clientX,b.clientY,!0)},children:[jt.length===0&&c.jsx($e,{children:"No files loaded"}),c.jsx("div",{style:{position:"relative",height:is.getTotalSize()},children:is.getVirtualItems().map(b=>{const C=jt[b.index];if(!C)return null;const H=C.path===t&&C.kind==="directory";return c.jsx("div",{"data-index":b.index,style:{position:"absolute",top:0,left:0,width:"100%",height:b.size,transform:`translateY(${b.start}px)`},onDragEnter:O=>{if(O.dataTransfer.types.includes(lt)){const ve=pe.current;if(!ve)return;const ie=Zs(ve,C,t);oe(ie?C.path:null),as(C);return}if(!O.dataTransfer.types.includes(vn))return;const X=Qs(C,t);oe(X?C.path:null),as(C)},onDrop:O=>{O.stopPropagation(),ds(O,C)},children:c.jsx(N_,{row:C,active:(C.kind==="file"||C.kind==="directory")&&C.path===ye,selected:(C.kind==="file"||C.kind==="directory")&&C.path===(p==null?void 0:p.path),gitStatus:!H&&(C.kind==="file"||C.kind==="directory")?Go(C.path):void 0,hidden:!H&&(C.kind==="file"||C.kind==="directory")&&(C.name.startsWith(".")||Yo(C.path)),isRoot:H,onToggle:O=>{f({path:O,isDirectory:!0}),r(O)},onOpenFile:O=>{f({path:O,isDirectory:!1}),ln(O)},onContextMenu:(O,X,ve,ie)=>S(O,X,ve,ie,H),onSubmitDraft:(O,X)=>void Qo(O,X),onCancelDraft:a,onSubmitRename:(O,X)=>void ei(O,X),onCancelRename:u,onDragStartRow:Xo,onDragEndRow:Jo,dropTarget:(C.kind==="file"||C.kind==="directory")&&C.path===G})},b.key)})})]}),c.jsx(O_,{})]}):c.jsx($e,{children:"Connect to browse files"})}const W_="_list_1n3q6_1",U_="_summary_1n3q6_4",H_="_item_1n3q6_11",V_="_badge_1n3q6_23",K_="_added_1n3q6_30",G_="_modified_1n3q6_34",Y_="_deleted_1n3q6_38",X_="_name_1n3q6_42",Ge={list:W_,summary:U_,item:H_,badge:V_,added:K_,modified:G_,deleted:Y_,name:X_},J_={added:"A",modified:"M",deleted:"D"};function Z_(){const t=M(o=>o.activeWorkspaceCwd)||"~",n=me(o=>o.changes),s=M(o=>o.open);function r(o,i){s({id:Q.diff(o,i),kind:"diff",label:o.split("/").pop()||o,closable:!0,data:{path:o,staged:i},workspaceCwd:t})}return n.length===0?c.jsx($e,{children:"No changes detected"}):c.jsxs("div",{className:Ge.list,children:[c.jsxs("div",{className:Ge.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((o,i)=>c.jsxs("div",{className:Ge.item,onClick:()=>r(o.path,o.staged),children:[c.jsx("span",{className:z(Ge.badge,Ge[o.status]),children:J_[o.status]}),c.jsx("span",{className:Ge.name,children:o.path})]},`${o.path}-${o.staged}-${i}`))]})}const Q_="_tabBar_1tvri_1",ey="_tabBtn_1tvri_7",ty="_active_1tvri_23",ny="_refreshBtn_1tvri_27",sy="_content_1tvri_31",Be={tabBar:Q_,tabBtn:ey,active:ty,refreshBtn:ny,content:sy};function ry(){const e=N(a=>a.rightSidebarTab),t=N(a=>a.setRightSidebarTab),s=M(a=>a.activeWorkspaceCwd)||"~",r=q(a=>a.client),o=st();function i(){o.invalidateQueries({queryKey:["explorer"]}),r&&s&&r.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return c.jsxs(fo,{children:[c.jsxs("div",{className:Be.tabBar,children:[c.jsxs("button",{type:"button",className:z(Be.tabBtn,e==="files"&&Be.active),onClick:()=>t("files"),children:[c.jsx(Ve,{size:13}),"Files"]}),c.jsxs("button",{type:"button",className:z(Be.tabBtn,e==="changes"&&Be.active),onClick:()=>t("changes"),children:[c.jsx(_r,{size:13}),"Changes"]}),c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:Be.refreshBtn,onClick:i,children:c.jsx(Ci,{size:13})})]}),c.jsx("div",{className:Be.content,children:e==="files"?c.jsx(z_,{}):c.jsx(Z_,{})})]})}function oy(e,t){var o;const{bySession:n,setStats:s}=ss.getState(),r=(o=n[e])==null?void 0:o.contextWindow;s(e,{contextTokens:t,contextPercent:r?t*100/r:void 0,contextEstimated:!0})}const ss=le()(e=>({bySession:{},setStats(t,n){e(s=>({bySession:{...s.bySession,[t]:{...s.bySession[t],...n}}}))},clear(t){e(n=>{const{[t]:s,...r}=n.bySession;return{bySession:r}})}})),iy=12e3;function ay(e,t){return e==="running"&&t!=="running"}function nr(e,t){var s,r,o,i,a,d;const n={};((s=t.contextUsage)==null?void 0:s.tokens)!=null&&(n.contextTokens=t.contextUsage.tokens,n.contextEstimated=!1),((r=t.contextUsage)==null?void 0:r.contextWindow)!==void 0&&(n.contextWindow=t.contextUsage.contextWindow),((o=t.contextUsage)==null?void 0:o.percent)!=null&&(n.contextPercent=t.contextUsage.percent),((i=t.tokens)==null?void 0:i.total)!==void 0&&(n.totalTokens=t.tokens.total),((a=t.tokens)==null?void 0:a.input)!==void 0&&(n.inputTokens=t.tokens.input),((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)),ss.getState().setStats(e,n)}function cy(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}),r=R(a=>{var d;return e?(d=a.sessions[e])==null?void 0:d.status:void 0}),o=w.useRef(!1),i=w.useRef(void 0);w.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let a=!1;const d=async()=>{if(!o.current){o.current=!0;try{const p=await t.agent(s).sessionStats();a||nr(e,p)}catch{}finally{o.current=!1}}};d();const u=setInterval(()=>void d(),iy);return()=>{a=!0,clearInterval(u)}},[n,t,e,s]),w.useEffect(()=>{const a=i.current;i.current=r,ay(a,r)&&(n!=="open"||!t||!e||!s||(o.current=!1,t.agent(s).sessionStats().then(d=>nr(e,d)).catch(()=>{})))},[r,n,t,e,s])}function ly(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 dy(e){const t=q(o=>o.client),n=me(o=>o.applyProjection),s=me(o=>o.setSubscribedCwd),r=w.useRef(t);return r.current=t,w.useEffect(()=>{if(!t||!e)return;let o=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const i=t.connection.onSessionMessage(a=>{if(o)return;const d=a;ly(d)&&d.cwd===e&&n(d.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{o=!0,i(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const o=r.current;!o||!e||o.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const rs="--";function yt(e){return e===void 0?rs:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function uy(e){return e==null?rs:e>0&&e<1?"<1%":`${Math.round(e)}%`}function fy(e){if(e===void 0)return rs;const t=e<1?4:2;return`$${e.toFixed(t)}`}function py(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function hy(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}const gy="_content_1u220_3",my={content:gy},sr={Root:Hi,Trigger:Vi};function _y({className:e,width:t,style:n,side:s="top",align:r="start",sideOffset:o=6,collisionPadding:i=8,...a}){return c.jsx(Ki,{children:c.jsx(Gi,{className:z(my.content,e),side:s,align:r,sideOffset:o,collisionPadding:i,style:t===void 0?n:{width:t,...n},...a})})}function Fo(e){return e.some(t=>t.kind==="compaction"&&t.phase==="started")}function yy(e){return e.find(t=>t.kind==="compaction"&&t.phase==="started")}function rr(e){return e<1e3?String(e):e<1e6?`${+(e/1e3).toFixed(1)}k`:`${+(e/1e6).toFixed(1)}M`}function wy(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 vy(e){const t=wy(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=rr(e.tokensBefore);return`Context compacted · ${e.estimatedTokensAfter===void 0?`${s} before`:`${s} → ~${rr(e.estimatedTokensAfter)}`}${n}`}case"failed":return`Compaction failed${e.error?`: ${e.error}`:""}${n}`;case"canceled":return`Compaction canceled${n}`}}const bn=new Set;function kn(e,t){const{[t]:n,...s}=e;return s}const Wt=le()((e,t)=>({pendingBySession:{},lastErrorBySession:{},async compactSession(n,s){var d;const{client:r,status:o,serverInfo:i}=q.getState();if(!r||o!=="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]||Fo(a.timeline.rows))return{ok:!1,reason:"compacting"};e(u=>({pendingBySession:{...u.pendingBySession,[n]:!0},lastErrorBySession:kn(u.lastErrorBySession,n)}));try{const u=await r.agent(a.agentId).compact(s);return!((d=i==null?void 0:i.features)!=null&&d.compactionEvents)&&u.estimatedTokensAfter!=null&&oy(n,u.estimatedTokensAfter),{ok:!0}}catch(u){if(bn.has(n))return{ok:!1,reason:"canceled"};const p=u instanceof Error?u.message:String(u);return e(f=>({lastErrorBySession:{...f.lastErrorBySession,[n]:p}})),{ok:!1,reason:"failed",message:p}}finally{bn.delete(n),e(u=>({pendingBySession:kn(u.pendingBySession,n)}))}},async cancelCompaction(n){var o;const s=q.getState().client,r=(o=R.getState().sessions[n])==null?void 0:o.agentId;!s||!r||(t().pendingBySession[n]&&bn.add(n),await s.agent(r).interrupt())},clearError(n){e(s=>({lastErrorBySession:kn(s.lastErrorBySession,n)}))}}));function by(e){const t=R(s=>{var r;return e?Fo(((r=s.sessions[e])==null?void 0:r.timeline.rows)??[]):!1}),n=Wt(s=>e?s.pendingBySession[e]===!0:!1);return t||n}const ky=.7,Sy=.9;function zo(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 xy(e){return e>=Sy?"danger":e>=ky?"warning":"normal"}function Wo(e){return e.kind==="value"?Math.min(Math.max(e.fraction,0),1):0}function os(e){switch(e.kind){case"compacting":return"Compacting…";case"unknown":return"—";case"value":return`${e.estimated?"~":""}${uy(e.fraction*100)}`}}function Dn(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?`${os(t)} of ${n} tokens`:t.estimated?`≈ ${s} / ${n} tokens (estimate)`:`${s} / ${n} tokens`}function Iy(e){return e.kind==="value"?Math.round(Wo(e)*100):void 0}const Ey="_meter_mqbjo_1",Ty="_meterWide_mqbjo_7",Cy="_trackWide_mqbjo_12",Ry="_track_mqbjo_12",jy="_trackUnknown_mqbjo_27",Ay="_fill_mqbjo_32",My="_fillWarning_mqbjo_39",qy="_fillDanger_mqbjo_43",Py="_fillEstimated_mqbjo_48",Ny="_sweep_mqbjo_58",Dy="_label_mqbjo_90",ge={meter:Ey,meterWide:Ty,trackWide:Cy,track:Ry,trackUnknown:jy,fill:Ay,fillWarning:My,fillDanger:qy,fillEstimated:Py,sweep:Ny,label:Dy};function or({stats:e,compacting:t,wide:n=!1}){const s=zo(e,t),r=os(s),o=Iy(s),i=s.kind==="value"&&s.estimated,a=s.kind==="value"?xy(s.fraction):"normal";return c.jsxs("span",{className:z(ge.meter,n&&ge.meterWide),title:Dn(e,s),children:[c.jsxs("span",{role:"meter","aria-label":"Context usage","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":o,"aria-valuetext":s.kind==="value"&&!i?void 0:r,className:z(ge.track,n&&ge.trackWide,s.kind==="unknown"&&ge.trackUnknown,s.kind==="compacting"&&ge.trackCompacting),children:[s.kind==="value"&&c.jsx("span",{className:z(ge.fill,a==="warning"&&ge.fillWarning,a==="danger"&&ge.fillDanger,i&&ge.fillEstimated),style:{width:`${Wo(s)*100}%`}}),s.kind==="compacting"&&c.jsx("span",{className:ge.sweep})]}),c.jsx("span",{className:ge.label,children:r})]})}function $y(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 Oy="_trigger_fxl9k_2",Ly="_body_fxl9k_19",By="_heading_fxl9k_25",Fy="_detail_fxl9k_29",zy="_note_fxl9k_30",Wy="_field_fxl9k_35",Uy="_fieldLabel_fxl9k_41",Hy="_error_fxl9k_46",Vy="_actions_fxl9k_51",Re={trigger:Oy,body:Ly,heading:By,detail:Fy,note:zy,field:Wy,fieldLabel:Uy,error:Hy,actions:Vy};function Ky({sessionId:e,stats:t}){const[n,s]=w.useState(""),r=by(e),o=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 yy(((y=x.sessions[e])==null?void 0:y.timeline.rows)??[])}),u=Wt(x=>x.lastErrorBySession[e]),p=Wt(x=>x.compactSession),f=Wt(x=>x.cancelCompaction),m=zo(t,r),g=$y({compacting:r,running:a,hasAgent:i!==null,connected:o}),k=g.kind==="cancel"?d?vy(d):"Compacting…":g.note;async function _(){(await p(e,n.trim()||void 0)).ok&&s("")}return c.jsxs(sr.Root,{children:[c.jsx(sr.Trigger,{asChild:!0,children:c.jsx("button",{type:"button",className:Re.trigger,"aria-label":"Context usage — open compaction options",children:c.jsx(or,{stats:t,compacting:r})})}),c.jsx(_y,{width:320,"aria-label":"Compact context",children:c.jsxs("div",{className:Re.body,children:[c.jsx("div",{className:Re.heading,children:"Context"}),c.jsx(or,{stats:t,compacting:r,wide:!0}),c.jsx("div",{className:Re.detail,children:m.kind==="value"?`${Dn(t,m)} (${os(m)})`:Dn(t,m)}),c.jsxs("label",{className:Re.field,children:[c.jsx("span",{className:Re.fieldLabel,children:"Instructions (optional)"}),c.jsx(yc,{value:n,rows:3,placeholder:"e.g. focus on the auth refactor",disabled:r,onChange:x=>s(x.target.value)})]}),u&&!r&&c.jsx("div",{role:"alert",className:Re.error,children:u}),k&&c.jsx("div",{className:Re.note,children:k}),c.jsx("div",{className:Re.actions,children:g.kind==="cancel"?c.jsx(se,{variant:"outline",size:"sm",onClick:()=>void f(e),children:"Cancel"}):c.jsx(se,{variant:"default",size:"sm",disabled:g.kind==="disabled",onClick:()=>void _(),children:"Compact now"})})]})})]})}const Gy="_statusBar_t655h_1",Yy="_segmentGroup_t655h_16",Xy="_chevron_t655h_20",Jy="_segment_t655h_16",Zy="_icon_t655h_33",Qy="_text_t655h_39",Ye={statusBar:Gy,segmentGroup:Yy,chevron:Xy,segment:Jy,icon:Zy,text:Qy};function ew(){const e=R(g=>g.activeSessionId),t=R(g=>e?g.sessions[e]:void 0),n=rt(),s=M(g=>g.activeWorkspaceCwd);dy(s||"");const r=me(g=>g.available),o=me(g=>g.branch),i=me(g=>g.ahead),a=me(g=>g.behind),d=me(g=>g.detached),u=me(g=>g.conflictCount),p=me(g=>g.changes.length),f=ss(g=>e?g.bySession[e]:void 0);cy(e);const m=[];if(t){const g=py(t.cwd,n);m.push({key:"cwd",icon:c.jsx(Ve,{size:13}),text:g,title:t.cwd})}if(r){const g=hy(i,a),k=[d?"(detached)":o??"?"];g&&k.push(g),p>0&&k.push(`●${p}`),u>0&&k.push(`⚠${u}`),m.push({key:"branch",icon:c.jsx(Ri,{size:13}),text:k.join(" ")})}return t&&(m.push({key:"context",icon:c.jsx(ji,{size:13}),content:e?c.jsx(Ky,{sessionId:e,stats:f}):null}),m.push({key:"tokens",icon:c.jsx(Ai,{size:13}),text:yt(f==null?void 0:f.totalTokens),title:`in ${yt(f==null?void 0:f.inputTokens)} / out ${yt(f==null?void 0:f.outputTokens)}`}),m.push({key:"cost",icon:c.jsx(Mi,{size:13}),text:fy(f==null?void 0:f.cost)})),c.jsx("div",{className:Ye.statusBar,children:m.map((g,k)=>c.jsxs("span",{className:Ye.segmentGroup,children:[k>0&&c.jsx(Bn,{size:12,className:Ye.chevron,"aria-hidden":"true"}),c.jsxs("span",{className:Ye.segment,title:g.title,children:[c.jsx("span",{className:Ye.icon,children:g.icon}),g.content??c.jsx("span",{className:Ye.text,children:g.text})]})]},g.key))})}const tw="_wrapper_14joh_3",nw="_box_14joh_18",sw="_checkmark_14joh_38",rw="_nativeInput_14joh_43",Lt={wrapper:tw,box:nw,checkmark:sw,nativeInput:rw},Vv=w.forwardRef(function({label:t,checked:n=!1,disabled:s,className:r,onChange:o,...i},a){return c.jsxs("label",{className:Lt.wrapper,"data-disabled":s||void 0,children:[c.jsx("input",{ref:a,type:"checkbox",className:Lt.nativeInput,checked:n,disabled:s,onChange:o,...i}),c.jsx("span",{className:Lt.box,"data-checked":n,"aria-hidden":!0,children:n&&c.jsx(qi,{size:12,className:Lt.checkmark})}),t&&c.jsx("span",{children:t})]})}),ow="_select_dl3mw_3",iw={select:ow};w.forwardRef(function({options:t,placeholder:n,className:s,...r},o){return c.jsxs("select",{ref:o,className:z(iw.select,s),...r,children:[n&&c.jsx("option",{value:"",disabled:!0,children:n}),t.map(i=>c.jsx("option",{value:i.value,children:i.label},i.value))]})});const aw="_handle_1j18v_1",cw={handle:aw};function ir({side:e,onResize:t,className:n}){const s=w.useRef(0),r=w.useRef(null),o=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",o),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),document.body.style.cursor="",document.body.style.userSelect="";const u=r.current;u!=null&&u.hasPointerCapture(d.pointerId)&&u.releasePointerCapture(d.pointerId)},[o]);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",o),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i)}return c.jsx("div",{ref:r,className:z(cw.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}function lw(e,t){const{order:n,sessions:s}=R.getState(),o=es(n,s,t).find(i=>i.cwd===e);if(o!=null&&o.sessions[0]){const i=o.sessions[0].id;R.getState().activate(i);const a=R.getState().sessions[i];M.getState().open({id:Q.chat(i),kind:"chat",label:(a==null?void 0:a.title)??"New chat",closable:!0,data:{sessionId:i},workspaceCwd:e})}else Et(e);N.getState().setCwd(e)}const dw="_pathRow_1mu84_1",uw="_pathInput_1mu84_9",fw="_createRow_1mu84_13",pw="_createInput_1mu84_21",hw="_createError_1mu84_25",gw="_list_1mu84_30",mw="_item_1mu84_37",_w="_name_1mu84_49",Pe={pathRow:dw,pathInput:uw,createRow:fw,createInput:pw,createError:hw,list:gw,item:mw,name:_w};function yw(){const e=N(P=>P.cwdPickerOpen),t=N(P=>P.closeCwdPicker),n=M(P=>P.activeWorkspaceCwd),s=N(P=>P.cwd),r=q(P=>P.client),o=rt(),[i,a]=w.useState("/"),[d,u]=w.useState("/"),[p,f]=w.useState(!1),[m,g]=w.useState(""),[k,_]=w.useState(null),[x,y]=w.useState(!1),S=st();w.useEffect(()=>{if(!e)return;const P=Oe(n||s||"~",o);a(P),u(P),$()},[e,r,n,s,o]);const{data:I,isLoading:A,isError:U,error:G}=Fm(i,e&&!!r),oe=((I==null?void 0:I.entries)??[]).filter(P=>P.kind==="directory");function $(){f(!1),g(""),_(null)}function Z(P){const we=P.length>1?P.replace(/\/+$/,"")||"/":P;a(we),u(we),$()}function pe(){Z(i.split("/").slice(0,-1).join("/")||"/")}function Y(){Z(d.trim())}async function ye(){const P=m.trim();if(!(!P||!r||x)){y(!0),_(null);try{const we=await Bo(r,i,P,"directory");await S.invalidateQueries({queryKey:He.explorer(i)}),Z(we)}catch(we){_(we instanceof Error?we.message:"Failed to create folder")}finally{y(!1)}}}function j(){lw(i,o),t()}return c.jsxs(Nn,{open:e,onOpenChange:P=>!P&&t(),title:"Open Workspace",footer:c.jsxs(c.Fragment,{children:[c.jsx(No,{asChild:!0,children:c.jsx(se,{size:"sm",variant:"secondary",children:"Cancel"})}),c.jsx(se,{size:"sm",onClick:j,children:"Open this folder"})]}),children:[c.jsxs("div",{className:Pe.pathRow,children:[c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:pe,children:c.jsx(Pi,{size:13})}),c.jsx(Kt,{className:Pe.pathInput,value:d,onChange:P=>u(P.target.value),onKeyDown:P=>{P.key==="Enter"&&(P.preventDefault(),Y())}}),c.jsx(se,{size:"xs",onClick:Y,children:"Go"}),c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!r||U||p,onClick:()=>{f(!0),g(""),_(null)},children:c.jsx(Ht,{size:13})})]}),p&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:Pe.createRow,children:[c.jsx(Ve,{size:14}),c.jsx(Kt,{className:Pe.createInput,autoFocus:!0,placeholder:"New folder name",value:m,onChange:P=>g(P.target.value),onKeyDown:P=>{P.key==="Enter"?(P.preventDefault(),ye()):P.key==="Escape"&&(P.preventDefault(),P.stopPropagation(),$())}}),c.jsx(se,{size:"xs",loading:x,disabled:!m.trim()||x,onClick:()=>void ye(),children:"Create"}),c.jsx(se,{size:"xs",variant:"secondary",onClick:$,children:"Cancel"})]}),k&&c.jsx("div",{className:Pe.createError,children:k})]}),c.jsx("div",{className:Pe.list,children:A?c.jsx($e,{children:"Loading..."}):U?c.jsxs($e,{children:["Error: ",G instanceof Error?G.message:"unknown error"]}):oe.length===0?c.jsx($e,{children:"No subdirectories"}):oe.map(P=>c.jsxs("div",{className:Pe.item,onClick:()=>Z(i==="/"?`/${P.name}`:`${i}/${P.name}`),children:[c.jsx(Ve,{size:14}),c.jsx("span",{className:Pe.name,children:P.name})]},P.name))})]})}const ww="_visuallyHidden_rig62_2",ar={visuallyHidden:ww};function vw(){const e=Xt(n=>n.message),t=Xt(n=>n.politeness);return c.jsxs(c.Fragment,{children:[c.jsx("span",{className:ar.visuallyHidden,role:"status","aria-live":"polite",children:t==="polite"?e:""}),c.jsx("span",{className:ar.visuallyHidden,role:"alert",children:t==="assertive"?e:""})]})}const bw="_viewport_rssrd_1",kw="_toast_rssrd_13",Sw="_exiting_rssrd_43",xw="_content_rssrd_48",Iw="_close_rssrd_53",Xe={viewport:bw,toast:kw,exiting:Sw,content:xw,close:Iw},Ew=180;function Tw(){return typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Cw(){const e=Ae(f=>f.toasts),t=e.slice(0,Jt),n=Ae(f=>f.dismiss),s=Ae(f=>f.pause),r=Ae(f=>f.resume),o=w.useRef(new Map);for(const f of t)o.current.set(f.id,f);const i=w.useRef([]),[a,d]=w.useState([]),u=w.useRef(new Set);w.useEffect(()=>{const f=u.current;return()=>{for(const m of f)window.clearTimeout(m)}},[]),w.useEffect(()=>{const f=e.slice(0,Jt).map(_=>_.id),m=new Set(f),g=i.current.filter(_=>!m.has(_));if(i.current=f,g.length===0)return;if(Tw()){for(const _ of g)o.current.delete(_);return}d(_=>[..._,...g]);const k=window.setTimeout(()=>{u.current.delete(k),d(_=>_.filter(x=>!g.includes(x)));for(const _ of g)o.current.delete(_)},Ew);u.current.add(k)},[e]);const p=[...t,...a.filter(f=>!t.some(m=>m.id===f)).map(f=>o.current.get(f)).filter(f=>f!==void 0)];return p.length===0?null:ri.createPortal(c.jsx("div",{className:Xe.viewport,role:"status","aria-live":"polite",children:p.map(f=>{const{token:m}=up(f.variant),g=a.includes(f.id)&&!t.some(k=>k.id===f.id);return c.jsxs("div",{className:g?`${Xe.toast} ${Xe.exiting}`:Xe.toast,style:m?{"--toast-rail":`var(--pi-color-${m})`}:void 0,onMouseEnter:()=>s(f.id),onMouseLeave:()=>r(f.id),children:[c.jsx("span",{className:Xe.content,children:f.content}),c.jsx("button",{type:"button",className:Xe.close,"aria-label":"Dismiss",onClick:()=>n(f.id),children:c.jsx(re,{icon:wt,size:"xs","aria-hidden":!0})})]},f.id)})}),document.body)}const Rw="_shell_570m8_1",jw="_main_570m8_7",Aw="_sidebarLeft_570m8_13",Mw="_leftHandle_570m8_25",qw="_center_570m8_28",Pw="_sidebarRight_570m8_35",Nw="_rightHandle_570m8_43",Fe={shell:Rw,main:jw,sidebarLeft:Aw,leftHandle:Mw,center:qw,sidebarRight:Pw,rightHandle:Nw};function Dw(){const e=N(i=>i.leftSidebarCollapsed),t=N(i=>i.rightSidebarCollapsed),n=N(i=>i.leftSidebarWidth),s=N(i=>i.rightSidebarWidth),r=N(i=>i.resizeLeftSidebar),o=N(i=>i.resizeRightSidebar);return c.jsxs("div",{className:Fe.shell,children:[c.jsx(If,{}),c.jsxs("div",{className:Fe.main,children:[!e&&c.jsxs("aside",{className:Fe.sidebarLeft,style:{width:n},children:[c.jsx(Vh,{}),c.jsx(ir,{side:"left",className:Fe.leftHandle,onResize:r})]}),c.jsx("div",{className:Fe.center,children:c.jsx(Om,{})}),!t&&c.jsxs("aside",{className:Fe.sidebarRight,style:{width:s},children:[c.jsx(ir,{side:"right",className:Fe.rightHandle,onResize:o}),c.jsx(ry,{})]})]}),c.jsx(ew,{}),c.jsx(yw,{}),c.jsx(Cw,{}),c.jsx(vw,{})]})}function $w(){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;N.getState().setHost(d),q.getState().connect({url:d});return}const t=new URLSearchParams(window.location.search),n=t.get("host"),s=t.get("pair"),r=t.get("password"),o=t.get("cwd"),i=t.get("connect")==="1",a=N.getState();if(s?a.setHost(s):n&&a.setHost(n),r&&a.setPassword(r),o&&a.setCwd(o),s)q.getState().connect({url:s});else if(i){const{host:d,password:u}=N.getState();q.getState().connect({url:d,password:u||void 0})}},[])}function Ow(){const e=q(n=>n.status),t=q(n=>n.client);w.useEffect(()=>{if(e!=="open"||!t){Ue.getState().reset();return}return Ue.getState().hydrate(),t.onViewerSettingsUpdate(n=>{Ue.getState().applyUpdate(n)})},[e,t])}const Uo="pi-studio-pane-layout",Lw=250;function Bw(){const e=new Map,t={workspaces:e,activeWorkspaceCwd:null},n=zn.get(Uo);if(!n)return t;let s;try{s=JSON.parse(n)}catch{return t}if(typeof s!="object"||s===null)return t;const r=s;if(r.version!==ro||typeof r.workspaces!="object"||r.workspaces===null)return t;for(const[i,a]of Object.entries(r.workspaces)){const d=Fw(a);d&&e.set(i,d)}const o=r.activeWorkspaceCwd;return{workspaces:e,activeWorkspaceCwd:typeof o=="string"&&e.has(o)?o:null}}function Fw(e){if(typeof e!="object"||e===null)return null;const t=e,n=Jf(t.tree);if(!n)return null;const s=new Set(fe(n)),r={};for(const[a,d]of cr(t.placement))s.has(d)&&(r[a]=d);const o={};for(const[a,d]of cr(t.activeByPane))s.has(a)&&(o[a]=d);const i=t.activePaneId;return{tree:n,placement:r,activeByPane:o,activePaneId:typeof i=="string"&&s.has(i)?i:null}}function cr(e){return typeof e!="object"||e===null?[]:Object.entries(e).filter(t=>typeof t[1]=="string")}let je=null;function lr(){je==null||je();const e=setTimeout(()=>{je=null,Ho()},Lw);je=()=>clearTimeout(e)}function zw(){je==null||je(),je=null,Ho()}function Ho(){const e=new Map;for(const s of M.getState().tabs){const r=Gt(s);r!==null&&e.set(s.id,r)}const t={};for(const[s,r]of Object.entries(L.getState().layouts)){const o={...r.pendingPlacement};for(const[a,d]of Object.entries(r.placement)){const u=e.get(a);u!==void 0&&(o[u]=d)}const i={...r.pendingActive};for(const[a,d]of Object.entries(r.activeByPane)){const u=e.get(d);u!==void 0&&(i[a]=u)}t[s]={tree:r.tree,placement:o,activeByPane:i,activePaneId:r.focusedPaneId}}const n={version:ro,workspaces:t,activeWorkspaceCwd:M.getState().activeWorkspaceCwd??void 0};zn.set(Uo,JSON.stringify(n))}function Ww(){let e=dr(M.getState().tabs);const t=()=>{const o=dr(M.getState().tabs);o!==e&&(e=o,lr())},n=L.subscribe(lr),s=M.subscribe(t),r=R.subscribe(t);return()=>{n(),s(),r()}}function dr(e){return e.map(t=>`${t.id}\0${Gt(t)??""}`).join("")}const Uw=/^diff:(staged|worktree):(.+)$/;function Hw(e){for(const[t,n]of e)for(const s of Object.keys(n.placement)){const r=Vw(s,t,Ro);r!==null&&M.getState().open(r)}}function Vw(e,t,n){const s=ur(e,"file:");if(s!==null)return{id:Q.file(s),kind:"file",...Bt(s),workspaceCwd:t,data:{path:s}};const r=ur(e,"molecule:");if(r!==null)return n("molviewer")?{id:Q.molecule(r),kind:"molecule",...Bt(r),workspaceCwd:t,data:{path:r}}:{id:Q.file(r),kind:"file",...Bt(r),workspaceCwd:t,data:{path:r}};const o=Uw.exec(e);if(o!==null){const i=o[2],a=o[1]==="staged";return{id:Q.diff(i,a),kind:"diff",...Bt(i),workspaceCwd:t,data:{path:i,staged:a}}}return null}function ur(e,t){if(!e.startsWith(t))return null;const n=e.slice(t.length);return n===""?null:n}function Bt(e){return{label:e.split("/").pop()||e,closable:!0}}function Kw(e){if(e===null)return()=>{};if(pr())return fr(e),()=>{};const t=L.subscribe(()=>{pr()&&(t(),fr(e))});return t}function fr(e){if(L.getState().layouts[e]===void 0||!M.getState().tabs.some(n=>n.workspaceCwd===e))return!1;const t=M.getState().activeWorkspaceCwd!==e;return t&&M.getState().switchWorkspace(e),Gw(e),t}function Gw(e){const t=M.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 pr(){const{sessions:e,terminals:t}=L.getState().hydrationSources;return e&&t}const Yw={workspaces:new Map,activeWorkspaceCwd:null};function Xw(e,t,n){return e==="open"&&t&&!n}function Jw(){const e=q(r=>r.status),t=Ue(r=>r.loaded),n=w.useRef(Yw),s=w.useRef(!1);w.useEffect(()=>{const r=Bw();n.current=r,L.getState().installPersistedLayouts(r.workspaces,r.activeWorkspaceCwd);const o=Ww(),i=()=>zw();return window.addEventListener("pagehide",i),()=>{window.removeEventListener("pagehide",i),o()}},[]),w.useEffect(()=>{if(!Xw(e,t,s.current))return;s.current=!0;const r=n.current;Hw(r.workspaces),Kw(r.activeWorkspaceCwd)},[e,t])}function Zw(e){return typeof e=="object"&&e!==null&&"kind"in e}function Qw(e){const t=[];for(const n of e)Zw(n)&&(n.kind==="other"?n.event&&t.push({event:n.event,timestamp:n.timestamp}):(n.events??[]).forEach((s,r)=>{t.push({event:s,timestamp:r===0?n.timestamp:void 0})}));return t}async function Vo(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...Qw(s.items)),!s.hasNewer))return t;const r=s.endCursor;if(typeof r!="string"||r===n)return t;n=r}}function ev(e){return typeof e.model=="string"}function tv(e){return typeof e.thinkingLevel=="string"}function nv(e){return typeof e.title=="string"}function sv(){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,rv(e))},[t,e]),w.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(ev(s)){const r=typeof s.modelProvider=="string"?s.modelProvider:void 0;R.getState().setModelByAgentId(s.agentId,s.model,r)}if(tv(s)&&R.getState().setThinkingLevelByAgentId(s.agentId,s.thinkingLevel),nv(s)){R.getState().setTitleByAgentId(s.agentId,s.title);const r=R.getState().findByAgentId(s.agentId);r&&M.getState().updateLabel(Q.chat(r.id),s.title)}})},[t,e])}async function rv(e){try{await ov(e)}finally{L.getState().markHydrationSource("sessions")}}async function ov(e){var k;let t=[];try{t=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{t=[]}t.sort((_,x)=>(x.lastActivity??0)-(_.lastActivity??0));const n=R.getState();for(const _ of t){if(n.findByAgentId(_.agentId))continue;let x=on;try{const S=await Vo(I=>e.agent(_.agentId).timeline.fetch({direction:"after",cursor:I??void 0,limit:200}));x=Xr(S)}catch{}const y=x.rows.length===0;n.hydrate({id:`s-${_.agentId.slice(0,12)}`,agentId:_.agentId,title:_.title||(y?"New chat":(k=_.cwd)==null?void 0:k.split("/").pop())||"Restored",status:_.status??"idle",cwd:_.cwd||"~",timeline:x,userMessageCount:x.rows.filter(S=>S.kind==="user").length,model:_.model,modelProvider:_.modelProvider,thinkingLevel:_.thinkingLevel})}const{order:s,sessions:r}=R.getState(),o=s.length>0?r[s[0]??""]:void 0;if(!o)return;const i=Hr(),a=Oe(o.cwd||"~",i),d=L.getState().pendingActiveWorkspace??a,u=es(s,r,i);N.getState().setCollapsedWorkspaces(Oh(u,d));const p=s.find(_=>{var x;return Oe(((x=r[_])==null?void 0:x.cwd)||"~",i)===d});R.getState().activate(p??o.id),N.getState().setCwd(d);const f=iv(),m=new Set;for(const _ of s){const x=r[_];!(x!=null&&x.agentId)||!f.has(`agent:${x.agentId}`)||(Zt(x,i),m.add(_))}const g=L.getState().layouts[a]!==void 0;!m.has(o.id)&&!g&&Zt(o,i)}function iv(){const e=new Set;for(const t of Object.values(L.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("agent:")&&e.add(n);return e}async function av(e){try{let t=[];try{t=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{t=[]}if(t.length===0)return;const n=L.getState().layouts,s=cv(),r=Hr(),o=M.getState().open;for(const i of t){if(i.closed)continue;const a=Oe(i.cwd||"~",r);n[a]!==void 0&&!s.has(`terminal:${i.slot}`)||o({id:Q.terminal(i.slot),kind:"terminal",label:i.name,closable:!0,data:{slot:i.slot,cwd:a},workspaceCwd:a})}}finally{L.getState().markHydrationSource("terminals")}}function cv(){const e=new Set;for(const t of Object.values(L.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("terminal:")&&e.add(n);return e}function lv(){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,av(e))},[t,e])}function dv(e){return typeof e=="object"&&e!==null&&e.type==="terminals_update"&&Array.isArray(e.terminals)}function uv(e){const{tabs:t,updateData:n}=M.getState();for(const s of t){if(s.kind!=="terminal")continue;const r=s.data;r.slot===null||r.exited||e.has(r.slot)||n(s.id,{exited:!0})}}function fv(){const e=q(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;dv(n)&&uv(new Set(n.terminals.map(s=>s.slot)))})},[e])}function pv(e){return typeof e=="object"&&e!==null&&e.type==="agent_timeline_reset"&&typeof e.agentId=="string"}async function hv(e,t){if(!R.getState().findByAgentId(t))return;let s=on;try{const r=await Vo(o=>e.agent(t).timeline.fetch({direction:"after",cursor:o??void 0,limit:200}));s=Xr(r)}catch{}R.getState().setTimelineByAgentId(t,s)}function gv(){const e=q(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;pv(n)&&hv(e,n.agentId)})},[e])}function mv(){w.useEffect(()=>{function e(t){const n=N.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu(),document.querySelector('[role="dialog"], [role="alertdialog"]')||Ae.getState().dismissTop();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),uo(M.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:r,tabs:o}=M.getState();if(!r)return;const i=o.find(a=>a.id===r);(i==null?void 0:i.closable)!==!1&&(t.preventDefault(),Yt(r))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function _v(){return $w(),Ow(),Jw(),sv(),lv(),fv(),gv(),mv(),null}function yv(){return c.jsxs(Ga,{children:[c.jsx(_v,{}),c.jsx(Dw,{})]})}function wv(e){return e.managerActive?e.status==="closed"?"reconnect-now":e.status==="open"?e.probeInFlight?"none":"probe":"none":"none"}const vv=5e3;function bv(){let e=!1;function t(){const{status:s,reconnection:r,daemon:o}=q.getState(),i=wv({status:s,managerActive:r!==null,probeInFlight:e});if(i==="reconnect-now"){r==null||r.reconnectNow();return}if(i==="probe"){if(!o)return;e=!0,o.ping(vv).catch(()=>{q.getState().daemon===o&&o.close(4e3,"stale-connection-probe")}).finally(()=>{e=!1})}}function n(){document.visibilityState==="visible"&&t()}return document.addEventListener("visibilitychange",n),window.addEventListener("online",t),()=>{document.removeEventListener("visibilitychange",n),window.removeEventListener("online",t)}}const Ko=document.getElementById("root");if(!Ko)throw new Error("Missing #root element");oi.createRoot(Ko).render(c.jsx(w.StrictMode,{children:c.jsx(yv,{})}));bv();export{N as $,vg as A,se as B,Vv as C,Nn as D,$e as E,qv as F,Pv as G,Bv as H,re as I,ns as J,Zf as K,zv as L,Ef as M,R as N,oy as O,fo as P,Mv as Q,_p as R,Cr as S,Rv as T,$v as U,Fv as V,yc as W,vy as X,Lv as Y,wo as Z,Dv as _,Uv as a,Uf as a0,Tt as a1,Ov as a2,An as a3,by as a4,Wt as a5,yy as a6,Q as a7,tr as a8,Gu as a9,Ku as aa,Ue as b,Hv as c,xe as d,Wv as e,Av as f,Vt as g,Nv as h,Ro as i,jv as j,dv as k,M as l,co as m,Oe as n,L as o,rt as p,Kt as q,He as r,Me as s,Xs as t,q as u,$o as v,qo as w,Bo as x,B_ as y,$_ as z};