@vellumai/web 0.11.0-staging.2 → 0.11.0

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 (400) hide show
  1. package/dist/assets/{AnimatePresence-DPfyu3ET.js → AnimatePresence-xdH2KLtr.js} +1 -1
  2. package/dist/assets/{BundleConfirmPage-CChUOtcg.js → BundleConfirmPage-4StSZy-f.js} +1 -1
  3. package/dist/assets/{a2a-invite-pyBtaaeG.js → a2a-invite-C1xJNSGF.js} +1 -1
  4. package/dist/assets/{about-page-DGUK5p8j.js → about-page-C3tJLjvD.js} +1 -1
  5. package/dist/assets/access-B_b48snn.js +1 -0
  6. package/dist/assets/{account-page-D3ERiewh.js → account-page-BvXVc1IK.js} +1 -1
  7. package/dist/assets/{account-shell-Dk4aC-Ls.js → account-shell-D6aWpePp.js} +1 -1
  8. package/dist/assets/{acp-run-actions-BH8wuBAL.js → acp-run-actions-8ioRAI8C.js} +1 -1
  9. package/dist/assets/{acp-run-detail-panel-dqVK6rPq.js → acp-run-detail-panel-B8ULpnis.js} +1 -1
  10. package/dist/assets/{acp-run-store-B_eDLRwl.js → acp-run-store-CpH4OeOS.js} +1 -1
  11. package/dist/assets/{activity-steps-panel-xxl2hu3E.js → activity-steps-panel-D8fAVo9_.js} +1 -1
  12. package/dist/assets/{add-credential-modal-CY_--m8L.js → add-credential-modal-Cu6aAlhm.js} +1 -1
  13. package/dist/assets/{add-credits-modal-fT_gTTP5.js → add-credits-modal-BelWmezc.js} +1 -1
  14. package/dist/assets/{ai-page-B02NwVRu.js → ai-page-Dd-qECGn.js} +1 -1
  15. package/dist/assets/{animated-avatar-BcgncPkc.js → animated-avatar-DknFwi9-.js} +1 -1
  16. package/dist/assets/{api-C3QSs67k.js → api-BpGogBsg.js} +1 -1
  17. package/dist/assets/{api-LG8zI3nK.js → api-Coj5enET.js} +1 -1
  18. package/dist/assets/{api-key-screen-CvBdN6Ae.js → api-key-screen-BhynbUuC.js} +1 -1
  19. package/dist/assets/{app-card-CAaFL1oB.js → app-card-BF2l9ot8.js} +1 -1
  20. package/dist/assets/{app-info-DefDjPEl.js → app-info-fS0zIUcN.js} +1 -1
  21. package/dist/assets/{archive-redirect-page-BH7h0Lk7.js → archive-redirect-page-DOF2veAy.js} +1 -1
  22. package/dist/assets/{assistant-feature-flag-store-CAdgpPiS.js → assistant-feature-flag-store-B00tpY5e.js} +1 -1
  23. package/dist/assets/assistant-identity-store-6On4WZ62.js +1 -0
  24. package/dist/assets/{assistant-status-panel-BTnD-jhG.js → assistant-status-panel-D2PXdHw0.js} +1 -1
  25. package/dist/assets/{auth-store-5qq59BAN.js → auth-store-EmLZOAkN.js} +2 -2
  26. package/dist/assets/{avatar-random-BMSYTcJK.js → avatar-random-DjmD5llT.js} +1 -1
  27. package/dist/assets/{avatar-renderer-ClUVcQmf.js → avatar-renderer-BrNjnimz.js} +1 -1
  28. package/dist/assets/{background-task-actions-DmP5s0oO.js → background-task-actions-B1bLmbnw.js} +1 -1
  29. package/dist/assets/{background-task-detail-panel-BCYAElGc.js → background-task-detail-panel-56ZpprL7.js} +1 -1
  30. package/dist/assets/{background-task-store-DMP8ByUq.js → background-task-store-C5J8CFan.js} +1 -1
  31. package/dist/assets/billing-page-CbelI-Ui.js +3 -0
  32. package/dist/assets/billing-redirect-page-BIfv18MY.js +1 -0
  33. package/dist/assets/{bookmarks-page-D_Jr-a4Q.js → bookmarks-page-BOhi-7gN.js} +1 -1
  34. package/dist/assets/{browser-CTZVDjOL.js → browser-DvKwnK9l.js} +2 -2
  35. package/dist/assets/{build-state-m0LQ5Iis.js → build-state-C_Hy9WqC.js} +1 -1
  36. package/dist/assets/calendar-RYdAv74D.js +1 -0
  37. package/dist/assets/{capture-error-Bj8_eutd.js → capture-error-Dj49ma74.js} +1 -1
  38. package/dist/assets/channels-page-route-CiOtL1JY.js +9 -0
  39. package/dist/assets/{chat-avatar-CvEA6z0H.js → chat-avatar-C9l3drVu.js} +1 -1
  40. package/dist/assets/{chat-layout-slots-store-BJfYGnd7.js → chat-layout-slots-store-KQz1WMKU.js} +1 -1
  41. package/dist/assets/{chat-markdown-message-rxPKNeTx.js → chat-markdown-message-9ogr9-mn.js} +2 -2
  42. package/dist/assets/{checkbox-CRmgkYah.js → checkbox-D7Eg2K35.js} +1 -1
  43. package/dist/assets/checkout-continuation-DmIXoV4L.js +1 -0
  44. package/dist/assets/checkout-page-2Xr9vx27.js +1 -0
  45. package/dist/assets/checkout-return-target-DQBOhh64.js +1 -0
  46. package/dist/assets/{client-feature-flag-store-CMncoan8.js → client-feature-flag-store-BdNCabm_.js} +1 -1
  47. package/dist/assets/{client-identity-DhkdvP5w.js → client-identity-yPmEu-I1.js} +1 -1
  48. package/dist/assets/{command-palette-BTaT__fo.js → command-palette-CzbYrcNM.js} +1 -1
  49. package/dist/assets/{command-palette-window-page-gq0zowBe.js → command-palette-window-page-CHQdRfhu.js} +1 -1
  50. package/dist/assets/{community-page-CsEKt9wX.js → community-page-_nhJqpCD.js} +1 -1
  51. package/dist/assets/{confirm-dialog-UYFm4osC.js → confirm-dialog-D-Yjf2uS.js} +1 -1
  52. package/dist/assets/{connect-page-B4aTS7Yj.js → connect-page-DS-7aFqU.js} +1 -1
  53. package/dist/assets/consent-c8EJ3D2A.js +1 -0
  54. package/dist/assets/{consent-controls-OcgxuxS0.js → consent-controls-DVeAjj2Z.js} +1 -1
  55. package/dist/assets/{contacts-gateway-B6OrAmU3.js → contacts-gateway-BlLLBft6.js} +1 -1
  56. package/dist/assets/{contacts-page-route-DNoCUXE7.js → contacts-page-route-eTUOUhJL.js} +1 -1
  57. package/dist/assets/{conversation-cache-DKvwwWNo.js → conversation-cache-CqrrtLGM.js} +1 -1
  58. package/dist/assets/{conversation-list-fetchers-DM-Y61u5.js → conversation-list-fetchers-CavIngGf.js} +1 -1
  59. package/dist/assets/{conversation-navigation-DsN0hcpL.js → conversation-navigation-D8y9l5qL.js} +1 -1
  60. package/dist/assets/{conversation-queries-CWvK6RLK.js → conversation-queries-688XB7Bh.js} +1 -1
  61. package/dist/assets/{conversation-store-C--wWMNW.js → conversation-store-D_eevw7L.js} +1 -1
  62. package/dist/assets/{credential-entry-page-CHinHO85.js → credential-entry-page-C22Mw_ea.js} +1 -1
  63. package/dist/assets/{credentials-page-BsJFuOc9.js → credentials-page-da3G5EjN.js} +1 -1
  64. package/dist/assets/{danger-zone-redirect-page-SU45WI74.js → danger-zone-redirect-page-QELjAt0B.js} +1 -1
  65. package/dist/assets/{debug-page-BziypDgA.js → debug-page-BElAND4u.js} +2 -2
  66. package/dist/assets/{deploy-dialogs-DZSd5o9b.js → deploy-dialogs-DcxJ8zmL.js} +1 -1
  67. package/dist/assets/{deploy-store-D6snB1j5.js → deploy-store-Dxp-S0Jo.js} +1 -1
  68. package/dist/assets/{detail-card-Du8OuE3q.js → detail-card-BiNdiBiS.js} +1 -1
  69. package/dist/assets/{detail-panel-stop-button-BNuh6N0s.js → detail-panel-stop-button-CZuQfGZs.js} +1 -1
  70. package/dist/assets/{detail-shell-Cyqr5FXJ.js → detail-shell-DB1cQBnE.js} +1 -1
  71. package/dist/assets/{developer-page-QMFEIyBS.js → developer-page-Ck66ks9T.js} +1 -1
  72. package/dist/assets/{devices-redirect-page-B14wK98N.js → devices-redirect-page-B3KUr7o2.js} +1 -1
  73. package/dist/assets/{diagnostics-T_96Uyh5.js → diagnostics-9AhdBjYA.js} +1 -1
  74. package/dist/assets/{dictation-overlay-pePw7mLd.js → dictation-overlay-CRLGSCST.js} +1 -1
  75. package/dist/assets/{dictation-overlay-page-DtgaXzdF.js → dictation-overlay-page-DHI92ftK.js} +1 -1
  76. package/dist/assets/{dist-oCfq2a_n.js → dist-CXcArvGs.js} +1 -1
  77. package/dist/assets/{dist-DC9QooLF.js → dist-Ckcpfjj7.js} +1 -1
  78. package/dist/assets/{doctor-handoff-store-CYjL1S0n.js → doctor-handoff-store-DPviL0wb.js} +1 -1
  79. package/dist/assets/{document-viewer-container-B7TEDeV0.js → document-viewer-container-Dxc95Z_9.js} +2 -2
  80. package/dist/assets/{document-viewer-page-3Eq8L562.js → document-viewer-page-ClsAgnVX.js} +1 -1
  81. package/dist/assets/{edge-swipe-arbiter-store-CQnDi2yf.js → edge-swipe-arbiter-store-QUBer3EI.js} +1 -1
  82. package/dist/assets/effective-timezone-CnKC3vj0.js +1 -0
  83. package/dist/assets/emails-page-D1eq8Mcq.js +1 -0
  84. package/dist/assets/{environment-store-Bft0lpgv.js → environment-store-nuDZk7wN.js} +1 -1
  85. package/dist/assets/esm-0ejhUWK7.js +2 -0
  86. package/dist/assets/esm-BPFGl7Zp.js +2 -0
  87. package/dist/assets/esm-C2uShH10.js +2 -0
  88. package/dist/assets/esm-CAByj-hK.js +2 -0
  89. package/dist/assets/esm-Cn1fOTtj.js +2 -0
  90. package/dist/assets/esm-Df-J9imF.js +1 -0
  91. package/dist/assets/{esm-Dk6A-sQ0.js → esm-t0mP3xUe.js} +2 -2
  92. package/dist/assets/{eye-bbox-C_V87iLg.js → eye-bbox-u0VzlPuw.js} +1 -1
  93. package/dist/assets/{file-editor-phorJEVv.js → file-editor-plAxQBKk.js} +1 -1
  94. package/dist/assets/{file-markdown-DaflJFk7.js → file-markdown-B0zje_y3.js} +1 -1
  95. package/dist/assets/first-run-scope-Br96Z0Ol.js +1 -0
  96. package/dist/assets/{funnel-events-n2IVlwTo.js → funnel-events-BqvFi8Sp.js} +1 -1
  97. package/dist/assets/{general-page-lbkufqHg.js → general-page-mGY10EuY.js} +1 -1
  98. package/dist/assets/get-memory-stats-CdA2IhkV.js +1 -0
  99. package/dist/assets/{haptics-DvWjk9Fg.js → haptics-BTcSZuHP.js} +2 -2
  100. package/dist/assets/{hatching-screen-D81diZoa.js → hatching-screen-DwNw31vj.js} +1 -1
  101. package/dist/assets/{home-page-route-CHe8eoLz.js → home-page-route-B2ScoHEE.js} +1 -1
  102. package/dist/assets/{hosting-screen-D9atAksQ.js → hosting-screen-DKijoYxW.js} +1 -1
  103. package/dist/assets/identity-page-route-DD_U3Te5.js +7 -0
  104. package/dist/assets/{index-0f48hi7h.js → index-BEpJ8S2b.js} +3 -3
  105. package/dist/assets/{ingest-BizI657K.js → ingest-D3dRmJA9.js} +1 -1
  106. package/dist/assets/{inspect-page-COwvbHtX.js → inspect-page-DVgajY0Q.js} +3 -3
  107. package/dist/assets/{installed-plugins-query-Cgek0q7G.js → installed-plugins-query-s6Kf3pL8.js} +1 -1
  108. package/dist/assets/{integration-icon-dv-9Zzx3.js → integration-icon-CmjrEk0J.js} +1 -1
  109. package/dist/assets/{integrations-page-CJOBwxXp.js → integrations-page-BnPiOw9v.js} +1 -1
  110. package/dist/assets/intelligence-layout-DfdvpHl4.js +1 -0
  111. package/dist/assets/invalidate-memory-queries-D8VNhm2x.js +1 -0
  112. package/dist/assets/{invalidate-plugin-queries-C3NTXkCX.js → invalidate-plugin-queries-v7687-U8.js} +1 -1
  113. package/dist/assets/{keyboard-shortcuts-redirect-page-CBI_mZIL.js → keyboard-shortcuts-redirect-page-DMytLINR.js} +1 -1
  114. package/dist/assets/{latest-assistant-text-DOepZ_Io.js → latest-assistant-text-BIlBGS_i.js} +1 -1
  115. package/dist/assets/library-detail-page-BzvbB9Ud.js +1 -0
  116. package/dist/assets/{library-page-CNA794WY.js → library-page-DK2Dx8vo.js} +1 -1
  117. package/dist/assets/{list-row-B1wPb2Au.js → list-row-BOvxGO5h.js} +1 -1
  118. package/dist/assets/{local-mode-BTovbt13.js → local-mode-BKousn41.js} +1 -1
  119. package/dist/assets/{local-runtime-upgrade-Bqn3d7Q7.js → local-runtime-upgrade-COcJaRWH.js} +1 -1
  120. package/dist/assets/login-flow-BVUkpWP_.js +1 -0
  121. package/dist/assets/login-page-BR42WUVt.js +1 -0
  122. package/dist/assets/{logout-page-CpFeuLA_.js → logout-page-B8EOSvAV.js} +1 -1
  123. package/dist/assets/{logs-layout-BUiPeZ4I.js → logs-layout-DK6gVU21.js} +1 -1
  124. package/dist/assets/memory-page-route-CW1Fgh6X.js +2 -0
  125. package/dist/assets/{memory-router-playground-page-D4UIq8mw.js → memory-router-playground-page-B-6Yt7rp.js} +1 -1
  126. package/dist/assets/{menu-BvjhxZo7.js → menu-BKrcAFYk.js} +1 -1
  127. package/dist/assets/{messages-CFcAW4iz.js → messages-BuqyOjvT.js} +1 -1
  128. package/dist/assets/{metric-card-05a5slPx.js → metric-card-j9s-2nkl.js} +1 -1
  129. package/dist/assets/{mobile-sidebar-drawer-DtKU2vlu.js → mobile-sidebar-drawer-BLGt_R0d.js} +1 -1
  130. package/dist/assets/{modal-BR4CUFBd.js → modal-CoOkN7c0.js} +1 -1
  131. package/dist/assets/mutation-error-DoEwwcm3.js +1 -0
  132. package/dist/assets/native-anchor-BeAcmUWk.js +1 -0
  133. package/dist/assets/{native-biometric-BAMIyaSS.js → native-biometric-DUHF57O_.js} +1 -1
  134. package/dist/assets/{native-file-ySSv1sQ7.js → native-file-CfGNNXKe.js} +2 -2
  135. package/dist/assets/navigation-resolver-BIPJSTY5.js +1 -0
  136. package/dist/assets/{not-found-OqaWNmdx.js → not-found-Dh7Vxgjl.js} +1 -1
  137. package/dist/assets/{notice-BMK7xqUw.js → notice-B6naz_-V.js} +1 -1
  138. package/dist/assets/{notifications-page-ClfcJeLf.js → notifications-page-BB5kRj1s.js} +1 -1
  139. package/dist/assets/{oauth-complete-page-rVmA2Cl8.js → oauth-complete-page-01jk0-Xz.js} +1 -1
  140. package/dist/assets/{oauth-connection-utils-CWPUW4MK.js → oauth-connection-utils-DhmVsbum.js} +1 -1
  141. package/dist/assets/{oauth-popup-complete-page-DBsOvLES.js → oauth-popup-complete-page-DdR3sLCH.js} +1 -1
  142. package/dist/assets/{onboarding-layout-DLs1hfp_.js → onboarding-layout-CYU5QNQ5.js} +1 -1
  143. package/dist/assets/{onboarding-store-bZ2qYISk.js → onboarding-store-CHsGFmyD.js} +1 -1
  144. package/dist/assets/open-workspace-file-AUDky4i4.js +2 -0
  145. package/dist/assets/{page-empty-state-DT-tC1u6.js → page-empty-state-DTRXFoHj.js} +1 -1
  146. package/dist/assets/{page-shell-C7SUgga9.js → page-shell-Ns8K4aqQ.js} +1 -1
  147. package/dist/assets/{pairing-page-ZkFipOSH.js → pairing-page-COqX_5vT.js} +1 -1
  148. package/dist/assets/{panel-item-CrtoJCrd.js → panel-item-CQt19wOM.js} +1 -1
  149. package/dist/assets/{password-reset-page-iASQZawH.js → password-reset-page-Ck1m9qRW.js} +1 -1
  150. package/dist/assets/{personality-page-BJpW3UXD.js → personality-page-B0GpJMv5.js} +1 -1
  151. package/dist/assets/plans-page-GiIsWq7v.js +1 -0
  152. package/dist/assets/{platform-detection-XEAAu4c-.js → platform-detection-D1fBX4KG.js} +1 -1
  153. package/dist/assets/{platform-login-notice-CdYiKsE8.js → platform-login-notice-D_-ZVyk8.js} +1 -1
  154. package/dist/assets/platform-loopback-page-B68rydoU.js +1 -0
  155. package/dist/assets/{plugin-detail-page-Bx2wzKEf.js → plugin-detail-page-DGzmeb3j.js} +1 -1
  156. package/dist/assets/plugins-page-C7Xd3LTL.js +1 -0
  157. package/dist/assets/plugins-surface-BGSKlIwH.js +1 -0
  158. package/dist/assets/{popover-BRpYVASI.js → popover-CDZiHp1D.js} +1 -1
  159. package/dist/assets/{prefs-bw85lYLp.js → prefs-BplCYXxl.js} +1 -1
  160. package/dist/assets/{privacy-page-B0QN4qZO.js → privacy-page-NhPZ8klL.js} +1 -1
  161. package/dist/assets/{privacy-screen-vp4uUpm6.js → privacy-screen-hSx7ZwqA.js} +1 -1
  162. package/dist/assets/{provider-callback-page-BH6DES7c.js → provider-callback-page-Dkxi-_kI.js} +1 -1
  163. package/dist/assets/{provider-key-D2Nsf9zh.js → provider-key-B07UMm1T.js} +1 -1
  164. package/dist/assets/provider-signup-page-BapnHqaW.js +1 -0
  165. package/dist/assets/{provisioning-targets-BTjyR9nk.js → provisioning-targets-epeYMPhZ.js} +1 -1
  166. package/dist/assets/{quick-input-page-Dq-0BGrJ.js → quick-input-page-DnjOMI1n.js} +1 -1
  167. package/dist/assets/{react-query.gen-BC3STDmV.js → react-query.gen-9VRdubOj.js} +1 -1
  168. package/dist/assets/{react-query.gen-C5c1Acuq.js → react-query.gen-BeiAUt-2.js} +1 -1
  169. package/dist/assets/{remote-gateway-session-yRYdsfDx.js → remote-gateway-session-DJ1rzXEw.js} +1 -1
  170. package/dist/assets/{research-facts-B7Ev1zv0.js → research-facts-B5ItKoAK.js} +1 -1
  171. package/dist/assets/{research-mock-page-BJEpxdMv.js → research-mock-page-gbOSvFQL.js} +1 -1
  172. package/dist/assets/{research-onboarding-persistence-51lJoYJ2.js → research-onboarding-persistence-CgJDwdl9.js} +1 -1
  173. package/dist/assets/{research-onboarding-route-CFL3q__m.js → research-onboarding-route-DpgbtSS0.js} +1 -1
  174. package/dist/assets/{research-results-view-C4sIw2gK.js → research-results-view-WQsLxBlE.js} +1 -1
  175. package/dist/assets/{resolved-assistants-store-Dw5UuGyB.js → resolved-assistants-store-FEmi1gGu.js} +1 -1
  176. package/dist/assets/{retire-confirm-dialog-CsSY2-T8.js → retire-confirm-dialog-CFJqb_EM.js} +1 -1
  177. package/dist/assets/review-terms-screen-c4Vt5WqP.js +1 -0
  178. package/dist/assets/{risk-CdT92Vqr.js → risk-RmzL2Rk_.js} +2 -2
  179. package/dist/assets/routes-CsoiCk2y.js +1 -0
  180. package/dist/assets/routes-NQmj27cY.js +23 -0
  181. package/dist/assets/{runtime-upgrade-banner-DPqzKtZU.js → runtime-upgrade-banner-BM2b81eK.js} +2 -2
  182. package/dist/assets/{schedules-6hzhR_C_.js → schedules-BMEs36wC.js} +1 -1
  183. package/dist/assets/schedules-page-BkOE2joT.js +1 -0
  184. package/dist/assets/{sdk.gen-BIu1DgTs.js → sdk.gen-DHJ7Pbqq.js} +1 -1
  185. package/dist/assets/{security-redirect-page-4DKqyPsf.js → security-redirect-page-CMMujz_x.js} +1 -1
  186. package/dist/assets/{select-assistant-screen-CVV3iqMy.js → select-assistant-screen-S526udI9.js} +1 -1
  187. package/dist/assets/{setting-row-BwXKepmJ.js → setting-row-D10FtQcP.js} +1 -1
  188. package/dist/assets/{settings-CfuLzwIw.js → settings-PGZ9c_uo.js} +1 -1
  189. package/dist/assets/{settings-divider-Ro7lPCkV.js → settings-divider-CItcvksF.js} +1 -1
  190. package/dist/assets/settings-layout-DKr7K-B6.js +1 -0
  191. package/dist/assets/{settings-navigation-CSG7jiyJ.js → settings-navigation-ji_jJYq2.js} +1 -1
  192. package/dist/assets/{share-feedback-modal-BoWCg4KH.js → share-feedback-modal-GLBRzcZa.js} +1 -1
  193. package/dist/assets/{sidebar-tree-C_PPNHe5.js → sidebar-tree-CEPitR5K.js} +1 -1
  194. package/dist/assets/signup-page-C0y2CTKm.js +1 -0
  195. package/dist/assets/{signup-shell-CMsBZ8vG.js → signup-shell-DxP2zqed.js} +1 -1
  196. package/dist/assets/{site-favicon-BB1pYWLF.js → site-favicon-Dx98M-cB.js} +1 -1
  197. package/dist/assets/{skill-detail-page-CTobyK6L.js → skill-detail-page-o3EhI_Q2.js} +1 -1
  198. package/dist/assets/{skill-detail-panel-CNzionF7.js → skill-detail-panel-DdQL6oky.js} +1 -1
  199. package/dist/assets/{skills-Cum1XWT2.js → skills-DT9YkYm6.js} +1 -1
  200. package/dist/assets/{skills-page-DZVxAbua.js → skills-page-BtFhw8jF.js} +1 -1
  201. package/dist/assets/{slack-setup-wizard-DK2F8LXc.js → slack-setup-wizard-C6ALDSEa.js} +1 -1
  202. package/dist/assets/{sound-manager-Bx-OcMAz.js → sound-manager-Dy2ohKg4.js} +1 -1
  203. package/dist/assets/{sounds-page-C45-RF4i.js → sounds-page-D4kMljoY.js} +1 -1
  204. package/dist/assets/{src-te3YTBG-.js → src-CnF7WXNj.js} +1 -1
  205. package/dist/assets/{start-screen-CkJiCl9b.js → start-screen-BiV4V5J1.js} +1 -1
  206. package/dist/assets/{subagent-detail-panel-DyyMdaNO.js → subagent-detail-panel-Cvmfu7Ym.js} +1 -1
  207. package/dist/assets/{subagent-store-MDi6lBXs.js → subagent-store-B2Uhma4F.js} +1 -1
  208. package/dist/assets/superpowers-page-CPBz-c5i.js +1 -0
  209. package/dist/assets/{system-events-page-DXAU01ZO.js → system-events-page-CpUI1rsZ.js} +1 -1
  210. package/dist/assets/{system-events-redirect-page-Bm9bipNo.js → system-events-redirect-page-BQrnMF4i.js} +1 -1
  211. package/dist/assets/{tag-NXcyiTkK.js → tag-Dn1d6hKF.js} +1 -1
  212. package/dist/assets/{theme-stage-page-BDTCmutO.js → theme-stage-page-CW3erTQ4.js} +1 -1
  213. package/dist/assets/{threshold-presets-BdTTHCnm.js → threshold-presets-ByKylDXk.js} +1 -1
  214. package/dist/assets/{tiptap-document-editor-CHn2wCDv.js → tiptap-document-editor-CbPrzkBM.js} +1 -1
  215. package/dist/assets/{toast-LgLp4obE.js → toast-BcMdOTp1.js} +1 -1
  216. package/dist/assets/{tool-detail-panel-DFrWEWKG.js → tool-detail-panel-DyfiRoE5.js} +1 -1
  217. package/dist/assets/{transcript-message-body-shared-D9_d2c2X.js → transcript-message-body-shared-Cb89j7p1.js} +1 -1
  218. package/dist/assets/{trust-rules-api-B5lfygCA.js → trust-rules-api-CVYU31TU.js} +1 -1
  219. package/dist/assets/upgrade-cancel-page-BSAoMrm5.js +1 -0
  220. package/dist/assets/{upgrade-success-page-Cb1Gl4MM.js → upgrade-success-page-CooDWnEr.js} +1 -1
  221. package/dist/assets/{usage-redirect-page-BOfJ7uot.js → usage-redirect-page-DtwSt4vM.js} +1 -1
  222. package/dist/assets/{use-active-assistant-id-CldxA_-M.js → use-active-assistant-id-CUKao_nq.js} +1 -1
  223. package/dist/assets/{use-app-theme-Dg8A6vPA.js → use-app-theme-BhnyqHgJ.js} +1 -1
  224. package/dist/assets/{use-assistant-avatar-bwLHcMz4.js → use-assistant-avatar-BcObK2L0.js} +1 -1
  225. package/dist/assets/{use-assistant-capability-CDS7GbSO.js → use-assistant-capability-BdWmg2Vg.js} +1 -1
  226. package/dist/assets/{use-assistant-identity-details-9JRWxXTQ.js → use-assistant-identity-details-BdFppz9B.js} +1 -1
  227. package/dist/assets/{use-avatar-accent-var-vpakP1ce.js → use-avatar-accent-var-rnSeYvBI.js} +1 -1
  228. package/dist/assets/{use-bookmarks-CK-nOiT-.js → use-bookmarks-DtteniG3.js} +1 -1
  229. package/dist/assets/{use-bundled-avatar-components-Bbs4vCnX.js → use-bundled-avatar-components-B1ARUeam.js} +2 -2
  230. package/dist/assets/{use-bus-subscription-nUrbz9Mu.js → use-bus-subscription-NoXmdzgx.js} +1 -1
  231. package/dist/assets/{use-checkout-dismiss-refresh-CqGR_OsB.js → use-checkout-dismiss-refresh-wRSmB_TU.js} +1 -1
  232. package/dist/assets/use-command-palette-sections-GAugkmjU.js +1 -0
  233. package/dist/assets/{use-discord-nudge-C_QdHIeX.js → use-discord-nudge-h0WPtIp6.js} +1 -1
  234. package/dist/assets/{use-edge-swipe-Wm9pU2HX.js → use-edge-swipe-DDntz5ZJ.js} +1 -1
  235. package/dist/assets/{use-edge-swipe-back-BcSHNCwS.js → use-edge-swipe-back-Rp4TEihl.js} +1 -1
  236. package/dist/assets/{use-edit-app-B_Nequzs.js → use-edit-app-BSbRuVnn.js} +1 -1
  237. package/dist/assets/{use-effective-timezone-Dqs8OaXJ.js → use-effective-timezone-Om_EkJxK.js} +1 -1
  238. package/dist/assets/{use-invite-link-dialog-CPPOduk8.js → use-invite-link-dialog-yw1dtYd_.js} +1 -1
  239. package/dist/assets/{use-ios-app-nudge-B-ojl-b1.js → use-ios-app-nudge-CeOXecJj.js} +1 -1
  240. package/dist/assets/{use-is-org-ready-C5xlYywh.js → use-is-org-ready-BrKAc9Df.js} +1 -1
  241. package/dist/assets/{use-onboarding-login-DI5gvqEG.js → use-onboarding-login-DsCjVy0U.js} +1 -1
  242. package/dist/assets/{use-platform-assistant-id-DOsSt6k1.js → use-platform-assistant-id-DSR1LFZF.js} +1 -1
  243. package/dist/assets/{use-platform-gate-C65D14xY.js → use-platform-gate-Cv2oOK8C.js} +1 -1
  244. package/dist/assets/{use-reduced-motion-W1fCe3vS.js → use-reduced-motion-D0Rb5Fd_.js} +1 -1
  245. package/dist/assets/use-return-to-short-circuit-DEKlWitV.js +1 -0
  246. package/dist/assets/{use-save-twilio-credentials-c9xG9RPK.js → use-save-twilio-credentials-CecOWIyh.js} +1 -1
  247. package/dist/assets/{use-skill-actions-BAAx1Eia.js → use-skill-actions-DTznrJR1.js} +1 -1
  248. package/dist/assets/{use-skill-detail-files-BvOKvY0-.js → use-skill-detail-files-CKgT7qkY.js} +1 -1
  249. package/dist/assets/{use-sticky-profiles-CdWX0mgI.js → use-sticky-profiles-CdiEmubF.js} +1 -1
  250. package/dist/assets/{use-subagent-card-data-DHuNtSy9.js → use-subagent-card-data-DJujXR76.js} +1 -1
  251. package/dist/assets/{use-supports-bookmarks-C3J7FtDn.js → use-supports-bookmarks-D4_-FkJA.js} +1 -1
  252. package/dist/assets/use-supports-credentials-settings-CGDLraXI.js +1 -0
  253. package/dist/assets/{use-swipe-engine-6PcZZMVD.js → use-swipe-engine-ehsGV4fb.js} +1 -1
  254. package/dist/assets/{utils-B0rBxtYP.js → utils-CP1NAeej.js} +1 -1
  255. package/dist/assets/{utils-CnB60ZJN.js → utils-D8KOSvh3.js} +1 -1
  256. package/dist/assets/{viewer-store-DLk-jp8U.js → viewer-store-BVsBGqdn.js} +1 -1
  257. package/dist/assets/{voice-list-CW8mzaHU.js → voice-list-DeqvOR_J.js} +1 -1
  258. package/dist/assets/{voice-page-0zsCIOdT.js → voice-page-Cas-WIf4.js} +1 -1
  259. package/dist/assets/voice-picker-modal-D0K6miA1.js +1 -0
  260. package/dist/assets/{weather-forecast-display-BAAnrNdd.js → weather-forecast-display-JW8ecLNy.js} +1 -1
  261. package/dist/assets/{web-9Cwi5jnT.js → web-BTtRunTK.js} +1 -1
  262. package/dist/assets/{web-Bi-BvsRt.js → web-Bd-5Eyoa.js} +1 -1
  263. package/dist/assets/{web-D486_dlv.js → web-ByAAA1Mb.js} +1 -1
  264. package/dist/assets/{web-sr1ba6fP.js → web-DFbI_g4o.js} +1 -1
  265. package/dist/assets/{web-BlvxItuO.js → web-DIn7jUpJ.js} +1 -1
  266. package/dist/assets/{web-l9DWMZeA.js → web-DYQ0KCC4.js} +1 -1
  267. package/dist/assets/{web-DUb4LJ2M.js → web-Db-2E0qX.js} +1 -1
  268. package/dist/assets/{web-B3Q8ntoM.js → web-PfT3uNnR.js} +1 -1
  269. package/dist/assets/{welcome-screen-DwOAZpZS.js → welcome-screen-D_DTupb3.js} +1 -1
  270. package/dist/assets/{workflow-detail-panel-DGL2BZSr.js → workflow-detail-panel-DAVe3vEm.js} +1 -1
  271. package/dist/assets/{workflow-store-lM7yKbUo.js → workflow-store-C3g-qg1u.js} +1 -1
  272. package/dist/assets/{workspace-page-D4NvhCv1.js → workspace-page-Dq0z3-Rs.js} +1 -1
  273. package/dist/assets/{workspace-tree-query-B1A-efgV.js → workspace-tree-query-D9VBUg-W.js} +1 -1
  274. package/dist/index.html +197 -194
  275. package/package.json +1 -1
  276. package/dist/assets/access-DS79PSR3.js +0 -1
  277. package/dist/assets/assistant-identity-store-DIyVo8LV.js +0 -1
  278. package/dist/assets/billing-page-B5j5TW_S.js +0 -3
  279. package/dist/assets/billing-redirect-page-B1o1rsQZ.js +0 -1
  280. package/dist/assets/channels-page-route-BYP9SOw5.js +0 -9
  281. package/dist/assets/checkout-continuation-U3Pd2nxi.js +0 -1
  282. package/dist/assets/checkout-page-C5_9GbP-.js +0 -1
  283. package/dist/assets/checkout-return-target-DI6Hb-9L.js +0 -1
  284. package/dist/assets/consent-hzYg-zbh.js +0 -1
  285. package/dist/assets/effective-timezone-CmcoXrio.js +0 -1
  286. package/dist/assets/emails-page-Wr4wPSYl.js +0 -1
  287. package/dist/assets/esm-BKewCp71.js +0 -2
  288. package/dist/assets/esm-DNvorKcw.js +0 -1
  289. package/dist/assets/esm-Deuay4YU.js +0 -2
  290. package/dist/assets/esm-IoT87yZe.js +0 -2
  291. package/dist/assets/esm-PYpy75OW.js +0 -2
  292. package/dist/assets/esm-xItcektK.js +0 -2
  293. package/dist/assets/first-run-scope-CL5YbC3b.js +0 -1
  294. package/dist/assets/get-memory-stats-BCYSpBF6.js +0 -1
  295. package/dist/assets/identity-page-route-CK3YsXCN.js +0 -7
  296. package/dist/assets/intelligence-layout-MNoGhi-l.js +0 -1
  297. package/dist/assets/library-detail-page-DVwI94NZ.js +0 -1
  298. package/dist/assets/login-flow-CD9tyuFG.js +0 -1
  299. package/dist/assets/login-page-BNStrcnU.js +0 -1
  300. package/dist/assets/memory-page-route-C0cBV7HD.js +0 -2
  301. package/dist/assets/mutation-error-DEknRDAQ.js +0 -1
  302. package/dist/assets/native-anchor-CeekjwVy.js +0 -1
  303. package/dist/assets/navigation-resolver-DPJxzx0h.js +0 -1
  304. package/dist/assets/open-workspace-file-DtK3a84K.js +0 -2
  305. package/dist/assets/plans-page-BDKqdYNM.js +0 -1
  306. package/dist/assets/platform-loopback-page-D0gXCm2S.js +0 -1
  307. package/dist/assets/plugins-page-B2zQ2iGh.js +0 -1
  308. package/dist/assets/plugins-surface-B43Op43l.js +0 -1
  309. package/dist/assets/provider-signup-page-BAPcG_iJ.js +0 -1
  310. package/dist/assets/review-terms-screen-BhyRQBjl.js +0 -1
  311. package/dist/assets/routes-CaP5Tqj7.js +0 -23
  312. package/dist/assets/routes-D9sNqB_o.js +0 -1
  313. package/dist/assets/schedules-page-DVnUeaoB.js +0 -1
  314. package/dist/assets/settings-layout-B_4PKJr9.js +0 -1
  315. package/dist/assets/signup-page-D0S_8XYw.js +0 -1
  316. package/dist/assets/superpowers-page-CaLzK5D-.js +0 -1
  317. package/dist/assets/upgrade-cancel-page-eiJEAvFz.js +0 -1
  318. package/dist/assets/use-command-palette-sections-CkpUaAKs.js +0 -1
  319. package/dist/assets/use-supports-credentials-settings-BbfghcWq.js +0 -1
  320. package/dist/assets/voice-picker-modal-PdsZwrsV.js +0 -1
  321. /package/dist/assets/{Combination-CkAMwkbS.js → Combination-BRDRMC4m.js} +0 -0
  322. /package/dist/assets/{api-errors-CFiCT7Ap.js → api-errors-DHvv5HEN.js} +0 -0
  323. /package/dist/assets/{app-types-DSkgEmV3.js → app-types-BnzWLsk5.js} +0 -0
  324. /package/dist/assets/{apple-logo--8ZT6Umn.js → apple-logo-C3XrRC_i.js} +0 -0
  325. /package/dist/assets/{avatar-bundled-components-DPqbVXi9.js → avatar-bundled-components-yyfTpx_l.js} +0 -0
  326. /package/dist/assets/{avatar-subagent-CRA2B82x.js → avatar-subagent-Bpy9-0YN.js} +0 -0
  327. /package/dist/assets/{avatar-svg-compositor-Dl-ckXRE.js → avatar-svg-compositor-DeuQqt-f.js} +0 -0
  328. /package/dist/assets/{avatar-tone-BKwvoDSj.js → avatar-tone-BBZKSrBa.js} +0 -0
  329. /package/dist/assets/{browser-timezone-CGwaX5Uv.js → browser-timezone-DGz-HvxU.js} +0 -0
  330. /package/dist/assets/{build.umd-Bixyt_xE.js → build.umd-CpQXlBwc.js} +0 -0
  331. /package/dist/assets/{by-tool-use-id-index-M50wYE1f.js → by-tool-use-id-index-DcsiqOhc.js} +0 -0
  332. /package/dist/assets/{chat-CDFCY8f0.js → chat-B9S7HTkM.js} +0 -0
  333. /package/dist/assets/{client.gen-CV05d-kw.js → client.gen-DPP573hb.js} +0 -0
  334. /package/dist/assets/{conversation-selection-oJy8Oht3.js → conversation-selection-Cx6Axfzb.js} +0 -0
  335. /package/dist/assets/{create-selectors-Qo7kcikX.js → create-selectors-B41BzcFF.js} +0 -0
  336. /package/dist/assets/{definitions-JF3PcEff.js → definitions-B2pe1hr8.js} +0 -0
  337. /package/dist/assets/{definitions-D_AmTPWg.js → definitions-B6TMLvuT.js} +0 -0
  338. /package/dist/assets/{dist-jXSU-ejH.js → dist-BbzsnMsY.js} +0 -0
  339. /package/dist/assets/{dist-CaYJ736y.js → dist-BxvMAFS8.js} +0 -0
  340. /package/dist/assets/{dist-BwAT3VYQ.js → dist-CCFYMOVM.js} +0 -0
  341. /package/dist/assets/{domains-DWRzNRJy.js → domains-BLQZqRIT.js} +0 -0
  342. /package/dist/assets/{dropdown-BCfnSdIZ.js → dropdown-BtWhNXSV.js} +0 -0
  343. /package/dist/assets/{edit-chat-session-D37Qx6ol.js → edit-chat-session-DDnAzqkB.js} +0 -0
  344. /package/dist/assets/{emoji-catalog-data-BCc1YNMR.js → emoji-catalog-data-DvjqmdH4.js} +0 -0
  345. /package/dist/assets/{event-bus-DSxmBYhD.js → event-bus-DYZhc6yM.js} +0 -0
  346. /package/dist/assets/{external-urls-_vjsdj2L.js → external-urls-DIbR-npW.js} +0 -0
  347. /package/dist/assets/{feature-flag-catalog-I9-eJQP_.js → feature-flag-catalog-CWB-r-Pj.js} +0 -0
  348. /package/dist/assets/{format-date-BGnM4mqL.js → format-date-BEAiOK8n.js} +0 -0
  349. /package/dist/assets/{format-file-size-BgMTiWPt.js → format-file-size-BtDHBEb-.js} +0 -0
  350. /package/dist/assets/{hard-navigate-DyUrcxe0.js → hard-navigate-V2EFapkk.js} +0 -0
  351. /package/dist/assets/{impersonate-version-flag-4Ki_3iKD.js → impersonate-version-flag-Cad5-ZZv.js} +0 -0
  352. /package/dist/assets/{input-hw3el2GJ.js → input-F_x2LXmm.js} +0 -0
  353. /package/dist/assets/{is-electron-m5eeGBnd.js → is-electron-D-TCQRcE.js} +0 -0
  354. /package/dist/assets/{link-click-DLYgWZdo.js → link-click-BIvzZsRn.js} +0 -0
  355. /package/dist/assets/{machine-sizes-DO8duvpy.js → machine-sizes-CT-fSRKD.js} +0 -0
  356. /package/dist/assets/{misc-CuYswARt.js → misc-CXDB4i-X.js} +0 -0
  357. /package/dist/assets/{native-deep-link-DCBJ-Rw0.js → native-deep-link-D4jZANvf.js} +0 -0
  358. /package/dist/assets/{oauth-popup-OhSYYlQF.js → oauth-popup-BsYPnBq7.js} +0 -0
  359. /package/dist/assets/{onboarding-step-layout-D9rghAjS.js → onboarding-step-layout-Do2o16kf.js} +0 -0
  360. /package/dist/assets/{optimistic-lifecycle-BINTsVFx.js → optimistic-lifecycle-Dxhc3mFf.js} +0 -0
  361. /package/dist/assets/{pdf-BlwLcQAc.js → pdf-CRRXY5Nb.js} +0 -0
  362. /package/dist/assets/{plugin-attribution-DrwveSW_.js → plugin-attribution-ug-jMTXi.js} +0 -0
  363. /package/dist/assets/{pointer-BbPfN86L.js → pointer-DAyn_9jY.js} +0 -0
  364. /package/dist/assets/{prechat-CeL4a_1i.js → prechat-EVefdGcO.js} +0 -0
  365. /package/dist/assets/{profile-metadata-BhqRdqUJ.js → profile-metadata-EGAGq_rk.js} +0 -0
  366. /package/dist/assets/{progress-bar-C_T5_pf2.js → progress-bar-B64ghmWk.js} +0 -0
  367. /package/dist/assets/{proxy-D7UPVac3.js → proxy-lxbolTGx.js} +0 -0
  368. /package/dist/assets/{public-asset-BBVUuTT_.js → public-asset-BoN50HP_.js} +0 -0
  369. /package/dist/assets/{sandbox-bridge-BxW8HZq_.js → sandbox-bridge-CjHMJYTZ.js} +0 -0
  370. /package/dist/assets/{sdk.gen-B5ygTzyg.js → sdk.gen-CtusrdLv.js} +0 -0
  371. /package/dist/assets/{sdk.gen-BHZ0fJla.js → sdk.gen-DeyOX3Kb.js} +0 -0
  372. /package/dist/assets/{semver-BpijV4FQ.js → semver-Ok0Hi8v9.js} +0 -0
  373. /package/dist/assets/{shield-fzs_emVe.js → shield-B69p45Kq.js} +0 -0
  374. /package/dist/assets/{shield-check-22NwY9JM.js → shield-check-C7I-REGg.js} +0 -0
  375. /package/dist/assets/{smartphone-mDNwm_ss.js → smartphone-zTfpbpuH.js} +0 -0
  376. /package/dist/assets/{sparkles-Ccrj7hxd.js → sparkles-nPSxUfsO.js} +0 -0
  377. /package/dist/assets/{square-D_e8nR-F.js → square-CRVB76KQ.js} +0 -0
  378. /package/dist/assets/{status-badge-pill-wJPMXQk1.js → status-badge-pill-CGODAHVT.js} +0 -0
  379. /package/dist/assets/{sun-Dw0t1n1O.js → sun-DXlsFvWD.js} +0 -0
  380. /package/dist/assets/{terminal-CdCI6wMV.js → terminal-BvDcWAOW.js} +0 -0
  381. /package/dist/assets/{theme-preferences-Bb2pPRXa.js → theme-preferences-LQuLaIA6.js} +0 -0
  382. /package/dist/assets/{three-dot-indicator-BMvKQ_On.js → three-dot-indicator-B_GPAioB.js} +0 -0
  383. /package/dist/assets/{toggle-lfnhEAcN.js → toggle-B4nIp0sf.js} +0 -0
  384. /package/dist/assets/{trash-2-L5LNgw9o.js → trash-2-BF5y4UkY.js} +0 -0
  385. /package/dist/assets/{triangle-alert-CQfiAg_t.js → triangle-alert-Dq3v0coH.js} +0 -0
  386. /package/dist/assets/{typed-storage-9Sn8tkE7.js → typed-storage-CcMT-hWr.js} +0 -0
  387. /package/dist/assets/{use-copy-to-clipboard-cF7ZSilD.js → use-copy-to-clipboard-VK_922zc.js} +0 -0
  388. /package/dist/assets/{use-is-mobile-BlQuzI5Z.js → use-is-mobile-Cx2xnNUx.js} +0 -0
  389. /package/dist/assets/{user-_zNqL48O.js → user-KBQkOaB5.js} +0 -0
  390. /package/dist/assets/{user-plus-oiIr9ey8.js → user-plus-CsHAo9W6.js} +0 -0
  391. /package/dist/assets/{users-iLvfYFOP.js → users-C0mu7-R4.js} +0 -0
  392. /package/dist/assets/{volume-2-CvT-JEIl.js → volume-2-DnyXryvu.js} +0 -0
  393. /package/dist/assets/{workflow-cWWiPi3K.js → workflow-CN4xwQpa.js} +0 -0
  394. /package/dist/assets/{workflow-status-HyIIhMBP.js → workflow-status-CgrMMiJT.js} +0 -0
  395. /package/dist/assets/{workspace-theme-tokens-DNNwX-XS.js → workspace-theme-tokens-D8TTf-DX.js} +0 -0
  396. /package/dist/assets/{wrench-0WW0zkkG.js → wrench-DDDwrNwL.js} +0 -0
  397. /package/dist/assets/{x-JBAsSOmg.js → x-BGag7vwj.js} +0 -0
  398. /package/dist/assets/{xterm-addon-fit-BVObYBMM.js → xterm-addon-fit-B1qPIPGd.js} +0 -0
  399. /package/dist/assets/{xterm-DgGqTfet.js → xterm-coCKWVob.js} +0 -0
  400. /package/dist/assets/{zoom-in-CaLYwni-.js → zoom-in-C96B1CNL.js} +0 -0
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,c as n,i as r}from"./local-settings-C-dW2vkq.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-Dy5001j6.js";import{m as o,n as s,t as c}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as l}from"./jsx-runtime-D3ZM-ToX.js";import{r as u}from"./middleware-HE0NLvPl.js";import{t as d}from"./info-vgPTIsGI.js";import{A as f,M as p}from"./src-te3YTBG-.js";import{t as m}from"./toggle-lfnhEAcN.js";import{t as h}from"./dropdown-BCfnSdIZ.js";import{t as g}from"./assistant-identity-store-DIyVo8LV.js";import{u as _}from"./routes-D9sNqB_o.js";import{C as v,S as y,T as b,a as x,b as ee,c as te,f as S,g as C,h as w,m as T,p as E,s as D,t as O,w as k,x as ne}from"./voice-picker-modal-PdsZwrsV.js";import{a as A,r as j,t as M}from"./voice-list-CW8mzaHU.js";import{t as N}from"./use-active-assistant-id-CldxA_-M.js";import{t as P}from"./detail-card-Du8OuE3q.js";var F=e(i(),1),I=l();function L(){let e=N(),{available:t,voices:n,currentModel:r}=A(e),i=n.find(e=>e.model===r)??n[0],[o,s]=(0,F.useState)(!1),l=g.use.name(),u=l?`${l}’s Voice`:`Voice`;return t&&i?(0,I.jsxs)(P,{title:u,subtitle:j,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,I.jsx)(M,{description:i.description,className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`}),(0,I.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,I.jsx)(O,{assistantId:e,open:o,onOpenChange:s})]}):(0,I.jsx)(P,{title:u,children:(0,I.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Your assistant speaks through a provider you configured yourself. Set its voice on`,` `,(0,I.jsx)(c,{to:`${_.settings.ai}#text-to-speech`,className:`text-[var(--primary-base)] hover:underline`,children:`Models & Services`}),`.`]})})}var R=[{prefKey:`showUserTranscript`,label:`Show the words you say`,description:`Live transcription while you speak.`},{prefKey:`showAssistantTranscript`,label:`Show the words the assistant says`,description:`Text alongside the spoken response.`}],z=`We recommend keeping both off to start. It feels more like a real conversation.`;function B(){return(0,I.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Recommended off`})}function V({label:e,description:t,showBadge:n,checked:r,onChange:i}){return(0,I.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-1`,children:[(0,I.jsxs)(`div`,{className:`min-w-0`,children:[(0,I.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,I.jsx)(`span`,{className:`truncate text-body-medium-lighter text-[var(--content-default)]`,children:e}),n?(0,I.jsx)(B,{}):null]}),t?(0,I.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:t}):null]}),(0,I.jsx)(m,{checked:r,onChange:i,"aria-label":e})]})}function H({showDescription:e=!1,showRecommendedBadge:t=!1}){let n=D.use.showUserTranscript(),r=D.use.showAssistantTranscript(),i=D.use.setShowUserTranscript(),a=D.use.setShowAssistantTranscript(),o={showUserTranscript:{checked:n,onChange:i},showAssistantTranscript:{checked:r,onChange:a}};return(0,I.jsx)(I.Fragment,{children:R.map(n=>{let r=o[n.prefKey];return(0,I.jsx)(V,{label:n.label,description:e?n.description:void 0,showBadge:t,checked:r.checked,onChange:r.onChange},n.prefKey)})})}var U=[{label:`Ctrl`,activator:{kind:`modifierOnly`,modifiers:[`control`]}},{label:`Alt`,activator:{kind:`modifierOnly`,modifiers:[`option`]}},{label:`Ctrl+Shift`,activator:{kind:`modifierOnly`,modifiers:[`control`,`shift`]}}],W={label:`Fn`,activator:E},G=`text-body-small-default text-[var(--content-tertiary)]`;function K(){let[e]=o(),t=e.get(`tab`);return t===`sounds`?(0,I.jsx)(s,{replace:!0,to:_.settings.sounds}):t===`services`?(0,I.jsx)(s,{replace:!0,to:_.settings.ai}):(0,I.jsx)(q,{})}function q(){return(0,I.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,I.jsxs)(Y,{heading:`Output`,description:`How your assistant sounds.`,children:[(0,I.jsx)(L,{}),(0,I.jsx)(J,{})]}),(0,I.jsxs)(Y,{heading:`Input`,description:`How you talk to your assistant.`,children:[(0,I.jsx)(re,{}),(0,I.jsx)(ie,{}),(0,I.jsx)(oe,{})]}),(0,I.jsx)(Y,{heading:`Captions`,children:(0,I.jsx)(X,{})})]})}function J(){let{available:e}=A(N());return e?(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,I.jsx)(d,{className:`h-3.5 w-3.5 shrink-0 text-[var(--content-quiet)]`}),(0,I.jsx)(`span`,{children:`Want to use your own API key for STT or TTS, or set a custom voice?`}),(0,I.jsxs)(c,{to:`${_.settings.ai}#text-to-speech`,className:`inline-flex items-center gap-1 text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:[`Set it up in Models & Services`,(0,I.jsx)(u,{className:`h-3 w-3`})]})]}):null}function Y({heading:e,description:t,children:n}){return(0,I.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[(0,I.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,I.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wide text-[var(--content-tertiary)]`,children:e}),t&&(0,I.jsx)(`p`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:t})]}),n]})}function X(){return(0,I.jsx)(P,{title:`Captions`,subtitle:`Show live text of what you and the assistant say during a voice conversation.`,children:(0,I.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,I.jsx)(H,{showDescription:!0}),(0,I.jsx)(`p`,{className:`${G} pt-1`,children:z})]})})}var Z=``;function re(){let[e,r]=(0,F.useState)([]),[i,o]=(0,F.useState)(!1),[s,c]=(0,F.useState)(()=>b()),l=(0,F.useCallback)(async()=>{if(navigator.mediaDevices?.enumerateDevices)try{let e=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`);o(e.length>0&&e.every(e=>!e.label)),r(e.filter(e=>e.deviceId!==``&&e.deviceId!==`default`&&e.deviceId!==`communications`))}catch{r([]),o(!1)}},[]),u=(0,F.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});for(let t of e.getTracks())t.stop()}catch{}l()},[l]);(0,F.useEffect)(()=>{l();let e=navigator.mediaDevices;if(!e?.addEventListener)return;let t=()=>void l();return e.addEventListener(`devicechange`,t),()=>e.removeEventListener(`devicechange`,t)},[l]);let d=(0,F.useMemo)(()=>[{value:Z,label:`System Default`},...e.map((e,t)=>({value:e.deviceId,label:e.label||`Microphone ${t+1}`}))],[e]),f=(0,F.useCallback)(e=>{c(e),e===Z?t(k):n(k,e)},[]);return(0,I.jsx)(P,{title:`Microphone`,subtitle:`Which input device is used for dictation and voice conversations.`,children:(0,I.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,I.jsx)(`div`,{className:`max-w-xs`,children:(0,I.jsx)(h,{options:d,value:d.some(e=>e.value===s)?s:Z,onChange:f,"aria-label":`Microphone`})}),i&&(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,I.jsx)(a,{variant:`outlined`,onClick:u,children:`Allow Microphone Access`}),(0,I.jsx)(`span`,{className:G,children:`Grant microphone access to list your available input devices.`})]})]})})}function ie(){let e=te(),[t,i]=(0,F.useState)(()=>{let t=r(T,``);return t?ne(t,{preserveFunction:e}):e?W.activator:{kind:`off`}}),[a,o]=(0,F.useState)(!1),[s,c]=(0,F.useState)([]),l=(0,F.useRef)(null),u=(0,F.useRef)(!1),f=(0,F.useMemo)(()=>e?[W,...U]:U,[e]),p=t.kind!==`off`,h=p&&!e,g=(0,F.useCallback)(e=>{i(e),n(T,y(e)),o(!1),c([])},[]),_=(0,F.useCallback)(()=>{o(!0),c([]),u.current=!1,requestAnimationFrame(()=>{l.current?.focus()})},[]),b=(0,F.useCallback)(()=>{o(!1),c([]),u.current=!1},[]),x=(0,F.useCallback)(t=>{let n=[];return e&&t.getModifierState(`Fn`)&&n.push(`function`),t.ctrlKey&&n.push(`control`),t.altKey&&n.push(`option`),t.shiftKey&&n.push(`shift`),t.metaKey&&n.push(`command`),n},[e]),D=(0,F.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`){b();return}let t=x(e),n=e.key;if(n===`Control`||n===`Alt`||n===`Shift`||n===`Meta`||n===`Fn`){c(t.includes(`function`)?E.modifiers:v(t));return}if(t.includes(`function`)){g(E);return}u.current=!0,g({kind:`key`,label:n.length===1?n.toUpperCase():n,modifiers:t})},[b,x,g]),O=(0,F.useCallback)(e=>{if(!a)return;e.preventDefault(),e.stopPropagation();let t=e.key;if(t===`Control`||t===`Alt`||t===`Shift`||t===`Meta`||t===`Fn`){if(u.current){u.current=!1,c([]);return}x(e).length===0&&s.length>0&&g({kind:`modifierOnly`,modifiers:s})}},[x,a,s,g]);(0,F.useEffect)(()=>{if(!a)return;let e=e=>{l.current&&!l.current.contains(e.target)&&b()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[b,a]);let k=p&&!f.some(e=>C(e.activator,t));return(0,I.jsx)(P,{title:`Push to Talk`,subtitle:`Hold the activation key to dictate text or start a voice conversation.`,children:(0,I.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,I.jsx)(m,{checked:p,onChange:n=>{n?t.kind===`off`&&g(e?W.activator:S):g({kind:`off`})},label:`Enable Push to Talk`}),p&&(0,I.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,I.jsx)(`span`,{className:G,children:`Activation Key:`}),(0,I.jsxs)(`div`,{ref:l,tabIndex:a?0:-1,onKeyDown:a?D:void 0,onKeyUp:a?O:void 0,className:`flex flex-wrap items-center gap-2 focus:outline-none`,children:[f.map(e=>{let n=C(e.activator,t);return(0,I.jsx)(Q,{label:e.label,selected:n,onClick:()=>g(e.activator)},e.label)}),a?(0,I.jsx)(Q,{label:s.length>0?ee(s):`Press any key…`,selected:!0,recording:!0,onClick:b}):(0,I.jsx)(Q,{label:k?w(t):`Custom`,selected:k,onClick:_})]}),h&&(0,I.jsxs)(`div`,{className:`flex items-start gap-1 pt-1 text-body-small-default text-[var(--content-quiet)]`,children:[(0,I.jsx)(d,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,I.jsx)(`span`,{children:`Push-to-Talk only works while this tab is focused, and browsers may intercept some shortcuts (e.g. Ctrl+T) before the page can see them. For always-on PTT, use the Vellum desktop app.`})]})]})]})})}function Q({label:e,selected:t,recording:n=!1,onClick:r}){return(0,I.jsxs)(`button`,{type:`button`,onClick:r,className:[`inline-flex items-center gap-2 rounded-lg border px-3 py-1.5 text-body-medium-lighter transition-colors`,`border-[var(--border-subtle)]`,t?`bg-[var(--surface-active)]`:`bg-[var(--surface-lift)] hover:bg-[var(--surface-hover)]`,n?`animate-pulse`:``].filter(Boolean).join(` `),children:[(0,I.jsx)(`span`,{className:[`inline-block h-2.5 w-2.5 rounded-full border`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)]`].join(` `)}),(0,I.jsx)(`span`,{className:`text-[var(--content-default)]`,children:e})]})}var ae=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}];function oe(){let e=D.use.pauseBeforeReplyMs(),t=D.use.setPauseBeforeReplyMs(),n=D.use.interruptSensitivity(),r=D.use.setInterruptSensitivity(),i=e!==null||n!==null;return(0,I.jsx)(P,{title:`Turn taking`,subtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations — under push to talk, the key decides.`,children:(0,I.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,I.jsx)($,{label:`Pause before reply`,description:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,isDefault:e===null,children:(0,I.jsx)(`div`,{className:`max-w-xs`,children:(0,I.jsx)(f,{value:(e??1200)/1e3,onValueChange:e=>{typeof e==`number`&&t(Math.round(e*1e3))},min:500/1e3,max:x/1e3,step:.1,showValue:!0,formatValue:e=>`${(typeof e==`number`?e:e[0]).toFixed(1)}s`,"aria-label":`Pause before reply`})})}),(0,I.jsx)($,{label:`Interrupt sensitivity`,description:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,isDefault:n===null,children:(0,I.jsx)(`div`,{className:`max-w-xs`,children:(0,I.jsx)(p,{items:ae,value:n??`medium`,onChange:r,ariaLabel:`Interrupt sensitivity`})})}),i&&(0,I.jsx)(`div`,{children:(0,I.jsx)(a,{variant:`outlined`,onClick:()=>{t(null),r(null)},children:`Reset to defaults`})})]})})}function $({label:e,description:t,isDefault:n,children:r}){return(0,I.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:e}),n&&(0,I.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Default`})]}),(0,I.jsx)(`p`,{className:G,children:t}),r]})}export{K as VoicePage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,c as n,i as r}from"./local-settings-C-dW2vkq.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-Dy5001j6.js";import{m as o,n as s,t as c}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as l}from"./jsx-runtime-D3ZM-ToX.js";import{r as u}from"./middleware-HE0NLvPl.js";import{t as d}from"./info-vgPTIsGI.js";import{A as f,M as p}from"./src-CnF7WXNj.js";import{t as m}from"./toggle-B4nIp0sf.js";import{t as h}from"./dropdown-BtWhNXSV.js";import{t as g}from"./assistant-identity-store-6On4WZ62.js";import{d as _}from"./routes-CsoiCk2y.js";import{C as v,S as y,T as b,a as x,b as ee,c as te,f as S,g as C,h as w,m as T,p as E,s as D,t as O,w as k,x as ne}from"./voice-picker-modal-D0K6miA1.js";import{a as A,r as j,t as M}from"./voice-list-DeqvOR_J.js";import{t as N}from"./use-active-assistant-id-CUKao_nq.js";import{t as P}from"./detail-card-BiNdiBiS.js";var F=e(i(),1),I=l();function L(){let e=N(),{available:t,voices:n,currentModel:r}=A(e),i=n.find(e=>e.model===r)??n[0],[o,s]=(0,F.useState)(!1),l=g.use.name(),u=l?`${l}’s Voice`:`Voice`;return t&&i?(0,I.jsxs)(P,{title:u,subtitle:j,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,I.jsx)(M,{description:i.description,className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`}),(0,I.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,I.jsx)(O,{assistantId:e,open:o,onOpenChange:s})]}):(0,I.jsx)(P,{title:u,children:(0,I.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Your assistant speaks through a provider you configured yourself. Set its voice on`,` `,(0,I.jsx)(c,{to:`${_.settings.ai}#text-to-speech`,className:`text-[var(--primary-base)] hover:underline`,children:`Models & Services`}),`.`]})})}var R=[{prefKey:`showUserTranscript`,label:`Show the words you say`,description:`Live transcription while you speak.`},{prefKey:`showAssistantTranscript`,label:`Show the words the assistant says`,description:`Text alongside the spoken response.`}],z=`We recommend keeping both off to start. It feels more like a real conversation.`;function B(){return(0,I.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Recommended off`})}function V({label:e,description:t,showBadge:n,checked:r,onChange:i}){return(0,I.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-1`,children:[(0,I.jsxs)(`div`,{className:`min-w-0`,children:[(0,I.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,I.jsx)(`span`,{className:`truncate text-body-medium-lighter text-[var(--content-default)]`,children:e}),n?(0,I.jsx)(B,{}):null]}),t?(0,I.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:t}):null]}),(0,I.jsx)(m,{checked:r,onChange:i,"aria-label":e})]})}function H({showDescription:e=!1,showRecommendedBadge:t=!1}){let n=D.use.showUserTranscript(),r=D.use.showAssistantTranscript(),i=D.use.setShowUserTranscript(),a=D.use.setShowAssistantTranscript(),o={showUserTranscript:{checked:n,onChange:i},showAssistantTranscript:{checked:r,onChange:a}};return(0,I.jsx)(I.Fragment,{children:R.map(n=>{let r=o[n.prefKey];return(0,I.jsx)(V,{label:n.label,description:e?n.description:void 0,showBadge:t,checked:r.checked,onChange:r.onChange},n.prefKey)})})}var U=[{label:`Ctrl`,activator:{kind:`modifierOnly`,modifiers:[`control`]}},{label:`Alt`,activator:{kind:`modifierOnly`,modifiers:[`option`]}},{label:`Ctrl+Shift`,activator:{kind:`modifierOnly`,modifiers:[`control`,`shift`]}}],W={label:`Fn`,activator:E},G=`text-body-small-default text-[var(--content-tertiary)]`;function K(){let[e]=o(),t=e.get(`tab`);return t===`sounds`?(0,I.jsx)(s,{replace:!0,to:_.settings.sounds}):t===`services`?(0,I.jsx)(s,{replace:!0,to:_.settings.ai}):(0,I.jsx)(q,{})}function q(){return(0,I.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,I.jsxs)(Y,{heading:`Output`,description:`How your assistant sounds.`,children:[(0,I.jsx)(L,{}),(0,I.jsx)(J,{})]}),(0,I.jsxs)(Y,{heading:`Input`,description:`How you talk to your assistant.`,children:[(0,I.jsx)(re,{}),(0,I.jsx)(ie,{}),(0,I.jsx)(oe,{})]}),(0,I.jsx)(Y,{heading:`Captions`,children:(0,I.jsx)(X,{})})]})}function J(){let{available:e}=A(N());return e?(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,I.jsx)(d,{className:`h-3.5 w-3.5 shrink-0 text-[var(--content-quiet)]`}),(0,I.jsx)(`span`,{children:`Want to use your own API key for STT or TTS, or set a custom voice?`}),(0,I.jsxs)(c,{to:`${_.settings.ai}#text-to-speech`,className:`inline-flex items-center gap-1 text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:[`Set it up in Models & Services`,(0,I.jsx)(u,{className:`h-3 w-3`})]})]}):null}function Y({heading:e,description:t,children:n}){return(0,I.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[(0,I.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,I.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wide text-[var(--content-tertiary)]`,children:e}),t&&(0,I.jsx)(`p`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:t})]}),n]})}function X(){return(0,I.jsx)(P,{title:`Captions`,subtitle:`Show live text of what you and the assistant say during a voice conversation.`,children:(0,I.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,I.jsx)(H,{showDescription:!0}),(0,I.jsx)(`p`,{className:`${G} pt-1`,children:z})]})})}var Z=``;function re(){let[e,r]=(0,F.useState)([]),[i,o]=(0,F.useState)(!1),[s,c]=(0,F.useState)(()=>b()),l=(0,F.useCallback)(async()=>{if(navigator.mediaDevices?.enumerateDevices)try{let e=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`);o(e.length>0&&e.every(e=>!e.label)),r(e.filter(e=>e.deviceId!==``&&e.deviceId!==`default`&&e.deviceId!==`communications`))}catch{r([]),o(!1)}},[]),u=(0,F.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});for(let t of e.getTracks())t.stop()}catch{}l()},[l]);(0,F.useEffect)(()=>{l();let e=navigator.mediaDevices;if(!e?.addEventListener)return;let t=()=>void l();return e.addEventListener(`devicechange`,t),()=>e.removeEventListener(`devicechange`,t)},[l]);let d=(0,F.useMemo)(()=>[{value:Z,label:`System Default`},...e.map((e,t)=>({value:e.deviceId,label:e.label||`Microphone ${t+1}`}))],[e]),f=(0,F.useCallback)(e=>{c(e),e===Z?t(k):n(k,e)},[]);return(0,I.jsx)(P,{title:`Microphone`,subtitle:`Which input device is used for dictation and voice conversations.`,children:(0,I.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,I.jsx)(`div`,{className:`max-w-xs`,children:(0,I.jsx)(h,{options:d,value:d.some(e=>e.value===s)?s:Z,onChange:f,"aria-label":`Microphone`})}),i&&(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,I.jsx)(a,{variant:`outlined`,onClick:u,children:`Allow Microphone Access`}),(0,I.jsx)(`span`,{className:G,children:`Grant microphone access to list your available input devices.`})]})]})})}function ie(){let e=te(),[t,i]=(0,F.useState)(()=>{let t=r(T,``);return t?ne(t,{preserveFunction:e}):e?W.activator:{kind:`off`}}),[a,o]=(0,F.useState)(!1),[s,c]=(0,F.useState)([]),l=(0,F.useRef)(null),u=(0,F.useRef)(!1),f=(0,F.useMemo)(()=>e?[W,...U]:U,[e]),p=t.kind!==`off`,h=p&&!e,g=(0,F.useCallback)(e=>{i(e),n(T,y(e)),o(!1),c([])},[]),_=(0,F.useCallback)(()=>{o(!0),c([]),u.current=!1,requestAnimationFrame(()=>{l.current?.focus()})},[]),b=(0,F.useCallback)(()=>{o(!1),c([]),u.current=!1},[]),x=(0,F.useCallback)(t=>{let n=[];return e&&t.getModifierState(`Fn`)&&n.push(`function`),t.ctrlKey&&n.push(`control`),t.altKey&&n.push(`option`),t.shiftKey&&n.push(`shift`),t.metaKey&&n.push(`command`),n},[e]),D=(0,F.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`){b();return}let t=x(e),n=e.key;if(n===`Control`||n===`Alt`||n===`Shift`||n===`Meta`||n===`Fn`){c(t.includes(`function`)?E.modifiers:v(t));return}if(t.includes(`function`)){g(E);return}u.current=!0,g({kind:`key`,label:n.length===1?n.toUpperCase():n,modifiers:t})},[b,x,g]),O=(0,F.useCallback)(e=>{if(!a)return;e.preventDefault(),e.stopPropagation();let t=e.key;if(t===`Control`||t===`Alt`||t===`Shift`||t===`Meta`||t===`Fn`){if(u.current){u.current=!1,c([]);return}x(e).length===0&&s.length>0&&g({kind:`modifierOnly`,modifiers:s})}},[x,a,s,g]);(0,F.useEffect)(()=>{if(!a)return;let e=e=>{l.current&&!l.current.contains(e.target)&&b()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[b,a]);let k=p&&!f.some(e=>C(e.activator,t));return(0,I.jsx)(P,{title:`Push to Talk`,subtitle:`Hold the activation key to dictate text or start a voice conversation.`,children:(0,I.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,I.jsx)(m,{checked:p,onChange:n=>{n?t.kind===`off`&&g(e?W.activator:S):g({kind:`off`})},label:`Enable Push to Talk`}),p&&(0,I.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,I.jsx)(`span`,{className:G,children:`Activation Key:`}),(0,I.jsxs)(`div`,{ref:l,tabIndex:a?0:-1,onKeyDown:a?D:void 0,onKeyUp:a?O:void 0,className:`flex flex-wrap items-center gap-2 focus:outline-none`,children:[f.map(e=>{let n=C(e.activator,t);return(0,I.jsx)(Q,{label:e.label,selected:n,onClick:()=>g(e.activator)},e.label)}),a?(0,I.jsx)(Q,{label:s.length>0?ee(s):`Press any key…`,selected:!0,recording:!0,onClick:b}):(0,I.jsx)(Q,{label:k?w(t):`Custom`,selected:k,onClick:_})]}),h&&(0,I.jsxs)(`div`,{className:`flex items-start gap-1 pt-1 text-body-small-default text-[var(--content-quiet)]`,children:[(0,I.jsx)(d,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,I.jsx)(`span`,{children:`Push-to-Talk only works while this tab is focused, and browsers may intercept some shortcuts (e.g. Ctrl+T) before the page can see them. For always-on PTT, use the Vellum desktop app.`})]})]})]})})}function Q({label:e,selected:t,recording:n=!1,onClick:r}){return(0,I.jsxs)(`button`,{type:`button`,onClick:r,className:[`inline-flex items-center gap-2 rounded-lg border px-3 py-1.5 text-body-medium-lighter transition-colors`,`border-[var(--border-subtle)]`,t?`bg-[var(--surface-active)]`:`bg-[var(--surface-lift)] hover:bg-[var(--surface-hover)]`,n?`animate-pulse`:``].filter(Boolean).join(` `),children:[(0,I.jsx)(`span`,{className:[`inline-block h-2.5 w-2.5 rounded-full border`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)]`].join(` `)}),(0,I.jsx)(`span`,{className:`text-[var(--content-default)]`,children:e})]})}var ae=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}];function oe(){let e=D.use.pauseBeforeReplyMs(),t=D.use.setPauseBeforeReplyMs(),n=D.use.interruptSensitivity(),r=D.use.setInterruptSensitivity(),i=e!==null||n!==null;return(0,I.jsx)(P,{title:`Turn taking`,subtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations — under push to talk, the key decides.`,children:(0,I.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,I.jsx)($,{label:`Pause before reply`,description:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,isDefault:e===null,children:(0,I.jsx)(`div`,{className:`max-w-xs`,children:(0,I.jsx)(f,{value:(e??1200)/1e3,onValueChange:e=>{typeof e==`number`&&t(Math.round(e*1e3))},min:500/1e3,max:x/1e3,step:.1,showValue:!0,formatValue:e=>`${(typeof e==`number`?e:e[0]).toFixed(1)}s`,"aria-label":`Pause before reply`})})}),(0,I.jsx)($,{label:`Interrupt sensitivity`,description:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,isDefault:n===null,children:(0,I.jsx)(`div`,{className:`max-w-xs`,children:(0,I.jsx)(p,{items:ae,value:n??`medium`,onChange:r,ariaLabel:`Interrupt sensitivity`})})}),i&&(0,I.jsx)(`div`,{children:(0,I.jsx)(a,{variant:`outlined`,onClick:()=>{t(null),r(null)},children:`Reset to defaults`})})]})})}function $({label:e,description:t,isDefault:n,children:r}){return(0,I.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:e}),n&&(0,I.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Default`})]}),(0,I.jsx)(`p`,{className:G,children:t}),r]})}export{K as VoicePage};
@@ -0,0 +1 @@
1
+ import{i as e}from"./local-settings-C-dW2vkq.js";import{t}from"./button-Dy5001j6.js";import{t as n}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as r}from"./jsx-runtime-D3ZM-ToX.js";import{t as i}from"./cn-CJf7MmLX.js";import{n as a,t as o}from"./middleware-HE0NLvPl.js";import"./src-CnF7WXNj.js";import{t as s}from"./modal-CoOkN7c0.js";import{n as c,t as l}from"./create-selectors-B41BzcFF.js";import{t as u}from"./is-electron-D-TCQRcE.js";import{d}from"./routes-CsoiCk2y.js";import{a as f,n as p}from"./voice-list-DeqvOR_J.js";var m=`vellum:voice:inputDeviceId`;function h(){return e(m,``)}function g(){let e=h();return{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,...e?{deviceId:{exact:e}}:{}}}async function _(){let e=g();try{return await navigator.mediaDevices.getUserMedia({audio:e})}catch(t){if(e.deviceId&&t instanceof DOMException&&t.name===`OverconstrainedError`){let{deviceId:t,...n}=e;return navigator.mediaDevices.getUserMedia({audio:n})}throw t}}var v=`vellum:voice:activationKey`,y={kind:`modifierOnly`,modifiers:[`control`]},b={kind:`modifierOnly`,modifiers:[`function`]},x=[`function`,`control`,`option`,`shift`,`command`],S={function:`Fn`,control:`Ctrl`,option:`Alt`,shift:`Shift`,command:`Cmd`};function C(e){return Array.from(new Set(e)).sort((e,t)=>x.indexOf(e)-x.indexOf(t))}function w(e){return C(e).map(e=>S[e]).join(`+`)}function T(e){if(e.kind===`off`)return`Off`;if(e.kind===`modifierOnly`)return w(e.modifiers);let t=w(e.modifiers);return t?`${t}+${e.label}`:e.label}function E(e,t){if(e.kind!==t.kind)return!1;if(e.kind===`off`||t.kind===`off`)return!0;let n=C(e.modifiers),r=C(t.modifiers);return n.length!==r.length||n.some((e,t)=>e!==r[t])?!1:e.kind===`key`&&t.kind===`key`?e.label===t.label:!0}function D(e){return JSON.stringify(e)}function O(e){return e.kind===`modifierOnly`&&e.modifiers.length===1&&e.modifiers[0]===`function`}function k(e){return typeof e==`string`&&x.includes(e)}function A(e,t){let n=e.filter(k);return t.preserveFunction&&n.includes(`function`)?b.modifiers:C(t.preserveFunction?n:n.filter(e=>e!==`function`))}function j(e,t={}){if(!e)return y;if(e===`fn`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?b.modifiers:y.modifiers};if(e===`ctrl`)return y;if(e===`fn_shift`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?b.modifiers:[`shift`]};if(e===`off`)return{kind:`off`};try{let n=JSON.parse(e);if(n.kind===`off`)return{kind:`off`};if(n.kind===`modifierOnly`&&Array.isArray(n.modifiers)){let e=A(n.modifiers,t);return e.length===0?y:{kind:`modifierOnly`,modifiers:e}}if(n.kind===`key`&&typeof n.label==`string`&&Array.isArray(n.modifiers))return{kind:`key`,label:n.label,modifiers:A(n.modifiers,t)}}catch{}return y}function M(e){let t=[];return e.ctrlKey&&t.push(`control`),e.altKey&&t.push(`option`),e.shiftKey&&t.push(`shift`),e.metaKey&&t.push(`command`),t}function N(e){return e===`Control`||e===`Alt`||e===`Shift`||e===`Meta`||e===`Fn`}function P(e,t){if(e.length!==t.length)return!1;let n=C(e),r=C(t);return n.every((e,t)=>e===r[t])}function F(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=M(e),r=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?N(e.key)?P(n,r):!1:(e.key.length===1?e.key.toUpperCase():e.key)===t.label?P(n,r):!1}function I(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?!!(e.key===`Control`&&n.includes(`control`)||e.key===`Alt`&&n.includes(`option`)||e.key===`Shift`&&n.includes(`shift`)||e.key===`Meta`&&n.includes(`command`)):(e.key.length===1?e.key.toUpperCase():e.key)===t.label}function L(){return u()}function R(){return u()&&typeof window.vellum?.helper?.hotkey?.fnPushToTalk==`function`&&typeof window.vellum?.helper?.hotkey?.onEvent==`function`}async function z(e){if(!R())return!1;try{return(await window.vellum.helper.hotkey.fnPushToTalk(e)).ok}catch{return!1}}function B(e){return R()?window.vellum.helper.hotkey.onEvent(e):()=>void 0}var V=1200,H=3e3,U=`medium`,W={high:100,medium:250,low:600};function G(e){return W[e]}function K(e){return Number.isFinite(e)?Math.round(Math.min(H,Math.max(500,e))):V}var q={showUserTranscript:!1,showAssistantTranscript:!1,firstRunSeen:!1,pauseBeforeReplyMs:null,interruptSensitivity:null},J=`vellum:voice-prefs`,Y=c()(a((e,t)=>({...q,setShowUserTranscript:t=>e({showUserTranscript:t}),setShowAssistantTranscript:t=>e({showAssistantTranscript:t}),markFirstRunSeen:()=>{t().firstRunSeen||e({firstRunSeen:!0})},setPauseBeforeReplyMs:t=>e({pauseBeforeReplyMs:t===null?null:K(t)}),setInterruptSensitivity:t=>e({interruptSensitivity:t})}),{name:J,storage:o(()=>localStorage),partialize:e=>({showUserTranscript:e.showUserTranscript,showAssistantTranscript:e.showAssistantTranscript,firstRunSeen:e.firstRunSeen,pauseBeforeReplyMs:e.pauseBeforeReplyMs,interruptSensitivity:e.interruptSensitivity})})),X=l(Y);typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===J&&Y.persist.rehydrate()});var Z=r();function Q({className:e}){return(0,Z.jsxs)(`p`,{className:i(`text-label-small-default text-[var(--content-tertiary)]`,e),children:[`Speech providers, transcription, and API keys live in`,` `,(0,Z.jsx)(n,{to:`${d.settings.ai}#text-to-speech`,className:`text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:`Models & Services`}),`.`]})}function $({assistantId:e,open:t,onOpenChange:n}){return(0,Z.jsx)(s.Root,{open:t,onOpenChange:n,children:(0,Z.jsx)(s.Content,{size:`md`,children:(0,Z.jsx)(ee,{assistantId:e,onDone:()=>n(!1)})})})}function ee({assistantId:e,onDone:n}){let{available:r,currentModel:i,selectModel:a,selecting:o}=f(e);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(s.Header,{children:[(0,Z.jsx)(s.Title,{children:`Voices`}),r&&(0,Z.jsx)(s.Description,{children:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`})]}),(0,Z.jsx)(s.Body,{children:(0,Z.jsx)(p,{assistantId:e,filterBySource:!0,value:i,onChange:a})}),(0,Z.jsxs)(s.Footer,{className:`items-center justify-between gap-3`,children:[(0,Z.jsx)(Q,{}),(0,Z.jsx)(t,{variant:`primary`,onClick:n,disabled:o,className:`shrink-0`,children:`Done`})]})]})}export{C,_ as E,D as S,h as T,F as _,H as a,w as b,L as c,R as d,y as f,E as g,T as h,V as i,z as l,v as m,Q as n,G as o,b as p,U as r,X as s,$ as t,B as u,I as v,m as w,j as x,O as y};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{c as r,d as i,f as a,i as o,l as s,n as c,o as l,p as u,r as d,s as f,t as p,u as m}from"./surface-parse-helpers-CEJ3tQ9Q.js";import{t as h}from"./cloud-RlApB3rO.js";import{t as g}from"./moon-BJzODLTY.js";import{t as _}from"./sun-Dw0t1n1O.js";import{t as v}from"./misc-CuYswARt.js";var y=e(t(),1),b={"sun.max.fill":{icon:_,className:`text-orange-500`},"cloud.sun.fill":{icon:s,className:`text-amber-400`},"moon.fill":{icon:g,className:`text-blue-400`},"cloud.moon.fill":{icon:i,className:`text-blue-400`},"cloud.fill":{icon:h,className:`text-stone-400`},"cloud.rain.fill":{icon:m,className:`text-blue-400`},snowflake:{icon:f,className:`text-blue-300`},"cloud.bolt.fill":{icon:a,className:`text-orange-500`},"cloud.fog.fill":{icon:u,className:`text-stone-400`}},x={sunny:{icon:_,className:`text-orange-500`},clear:{icon:_,className:`text-orange-500`},"partly cloudy":{icon:s,className:`text-amber-400`},"mostly sunny":{icon:s,className:`text-amber-400`},cloudy:{icon:h,className:`text-stone-400`},overcast:{icon:h,className:`text-stone-400`},rainy:{icon:m,className:`text-blue-400`},rain:{icon:m,className:`text-blue-400`},drizzle:{icon:m,className:`text-blue-400`},snow:{icon:f,className:`text-blue-300`},snowy:{icon:f,className:`text-blue-300`},thunderstorm:{icon:a,className:`text-orange-500`},thunder:{icon:a,className:`text-orange-500`},foggy:{icon:u,className:`text-stone-400`},fog:{icon:u,className:`text-stone-400`},mist:{icon:u,className:`text-stone-400`},hazy:{icon:u,className:`text-stone-400`},night:{icon:g,className:`text-blue-400`},"mainly clear":{icon:_,className:`text-orange-500`},"mostly cloudy":{icon:h,className:`text-stone-400`},breezy:{icon:l,className:`text-stone-400`},windy:{icon:l,className:`text-stone-400`},cool:{icon:h,className:`text-stone-400`},warm:{icon:_,className:`text-orange-500`},hot:{icon:_,className:`text-orange-500`},cold:{icon:f,className:`text-blue-300`},"cold snap":{icon:f,className:`text-blue-300`},"warm, mostly sunny":{icon:s,className:`text-amber-400`},"cooler, breezy":{icon:l,className:`text-stone-400`}},S={icon:h,className:`text-stone-400`};function C(e){let t=b[e];if(t)return t;let n=e.toLowerCase(),r=x[n];if(r)return r;for(let[e,t]of Object.entries(x))if(n.includes(e))return t;return S}function w(e){if(typeof e==`string`){let t=e.match(/^(\d+)\s*mph\s*(.*)/i);if(t)return{speed:Number(t[1]),direction:t[2]?.trim()||void 0}}return{}}function T(e){let t;if(typeof e.location==`string`)t=e.location;else{let n=d(e.location);n&&typeof n.name==`string`&&(t=n.name)}if(!t)return null;let n=d(e.current),r=c(n?.temp)??c(e.currentTemp)??c(e.temperature)??c(e.temp),i=c(n?.feelsLike)??c(n?.feels_like)??c(n?.apparentTemperature)??c(e.feelsLike)??c(e.feels_like)??c(e.apparentTemperature),a=o(n?.condition)??o(e.condition),s=c(n?.humidity)??c(e.humidity),l=w(n?.wind??e.wind),u=c(n?.windSpeed)??c(n?.wind_speed)??c(e.windSpeed)??c(e.wind_speed)??l.speed,f=o(n?.windDirection)??o(n?.wind_direction)??o(e.windDirection)??o(e.wind_direction)??l.direction,m=d(e.units),h=o(m?.temperature)??o(n?.unit)??o(e.unit)??`F`,g=o(m?.speed)??o(e.windUnit)??o(e.wind_unit),_=p(e.hourly).map((e,t)=>({id:o(e.id)??String(t),time:o(e.time)??``,icon:o(e.icon)??o(e.condition)??`cloud.fill`,temp:c(e.tempC)??c(e.temp)??c(e.temperature),tempC:c(e.tempC)})),v=p([e.forecast,e.daily,e.days].find(Array.isArray)).map((e,t)=>({id:o(e.id)??String(t),day:o(e.day)??o(e.date),dayLabel:o(e.dayLabel)??o(e.date),icon:o(e.icon)??o(e.condition)??`cloud.fill`,low:c(e.low),high:c(e.high),lowC:c(e.lowC),highC:c(e.highC),precip:c(e.precip)??c(e.precipitation)??c(e.precipitationProbability),condition:o(e.condition)}));return{location:t,currentTemp:r,feelsLike:i,condition:a,humidity:s,windSpeed:u,windDirection:f,windUnit:g,unit:h,hourly:_.length>0?_:void 0,forecast:v.length>0?v:void 0}}function E(e){return e*9/5+32}function D(e){return(e-32)*5/9}function O(e,t,n){if(e===void 0)return null;let r=e;return t&&!n&&(r=D(e)),!t&&n&&(r=E(e)),`${Math.round(r)}`}function k(e,t,n){return e.tempC===void 0?e.temp===void 0?null:O(e.temp,t,n):O(e.tempC,!1,n)}function A(e,t,n){return e.lowC===void 0?O(e.low,t,n):O(e.lowC,!1,n)}function j(e,t,n){return e.highC===void 0?O(e.high,t,n):O(e.highC,!1,n)}var M=n();function N({icon:e,size:t=20}){let{icon:n,className:r}=C(e);return(0,M.jsx)(n,{width:t,height:t,className:r})}function P({useFahrenheit:e,onToggle:t}){return(0,M.jsxs)(`div`,{className:`flex overflow-hidden rounded-md border border-[var(--border-element)]`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:()=>t(!0),className:v(`px-2 py-0.5 text-body-small-default transition-colors`,e?`bg-[var(--primary-base)] text-[var(--content-inset)]`:`bg-transparent text-[var(--content-quiet)]`),children:`°F`}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>t(!1),className:v(`px-2 py-0.5 text-body-small-default transition-colors`,e?`bg-transparent text-[var(--content-quiet)]`:`bg-[var(--primary-base)] text-[var(--content-inset)]`),children:`°C`})]})}function F({data:e,sourceIsFahrenheit:t,useFahrenheit:n,onToggle:i}){let a=e.location,o=O(e.currentTemp,t,n),s=O(e.feelsLike,t,n),c=n?`F`:`C`,u=e.forecast?.[0],d=u?j(u,t,n):null,f=u?A(u,t,n):null,p=null;return e.windSpeed!==void 0&&(p=`${Math.round(e.windSpeed)} ${e.windUnit??`mph`}`,e.windDirection&&(p=`${e.windDirection} ${p}`)),(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:a}),o!==null&&(0,M.jsxs)(`div`,{className:`mt-1 text-4xl font-light text-[var(--content-default)]`,children:[o,`°`,c]}),e.condition&&(0,M.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-quiet)]`,children:e.condition})]}),(0,M.jsx)(P,{useFahrenheit:n,onToggle:i})]}),(0,M.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3`,children:[s!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`Feels like `,s,`°`]}),d!==null&&f!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`H:`,d,`° L:`,f,`°`]}),p&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,M.jsx)(l,{width:12,height:12}),p]}),e.humidity!==void 0&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,M.jsx)(r,{width:12,height:12}),e.humidity,`%`]})]})]})}function I({hourly:e,sourceIsFahrenheit:t,useFahrenheit:n}){return(0,M.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,M.jsx)(`div`,{className:`flex gap-3 overflow-x-auto`,children:e.map((e,r)=>{let i=e.time.toLowerCase()===`now`,a=k(e,t,n);return(0,M.jsxs)(`div`,{className:`flex min-w-[3rem] shrink-0 flex-col items-center gap-1`,children:[(0,M.jsx)(`span`,{className:i?`text-body-small-emphasised text-[var(--content-default)]`:`text-label-medium-default text-[var(--content-quiet)]`,children:i?`Now`:e.time}),(0,M.jsx)(N,{icon:e.icon,size:18}),a!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-default)]`,children:[a,`°`]})]},e.id??r)})})})}function L({forecast:e,currentTemp:t,sourceIsFahrenheit:n,useFahrenheit:r}){let{globalMin:i,globalMax:a}=(0,y.useMemo)(()=>{let t=1/0,n=-1/0;for(let r of e){let e=r.lowC??r.low,i=r.highC??r.high;e!==void 0&&e<t&&(t=e),i!==void 0&&i>n&&(n=i)}return{globalMin:t===1/0?0:t,globalMax:n===-1/0?100:n}},[e]),o=a-i||1;return(0,M.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,M.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map((e,s)=>{let c=e.dayLabel??e.day??`Day ${s+1}`,l=c.toLowerCase()===`today`,u=A(e,n,r),d=j(e,n,r),f=e.precip,p=e.lowC??e.low??i,m=e.highC??e.high??a,h=(p-i)/o*100,g=(m-i)/o*100,_=Math.max(g-h,2),y=null;if(l&&t!==void 0){let r=(e.lowC!==void 0||e.highC!==void 0)&&n?(t-32)*5/9:t;y=m===p?50:(Math.max(p,Math.min(m,r))-p)/(m-p)*100}return(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`span`,{className:v(`w-12 shrink-0 truncate text-body-small-default`,l?`text-[var(--content-default)]`:`text-[var(--content-quiet)]`),children:c}),(0,M.jsxs)(`div`,{className:`flex w-10 shrink-0 items-center justify-center gap-0.5`,children:[(0,M.jsx)(N,{icon:e.icon,size:16}),f!==void 0&&f>0&&(0,M.jsxs)(`span`,{className:`text-label-small-default text-blue-400`,children:[Math.round(f),`%`]})]}),(0,M.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-faint)]`,children:u===null?`--`:`${u}°`}),(0,M.jsxs)(`div`,{className:`relative h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--border-subtle)]`,children:[(0,M.jsx)(`div`,{className:`absolute top-0 h-full rounded-full bg-[var(--primary-base)]`,style:{left:`${h}%`,width:`${_}%`}}),y!==null&&(0,M.jsx)(`div`,{className:`absolute top-1/2 h-2.5 w-2.5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-[var(--aux-white)] bg-[var(--aux-white)] shadow-sm`,style:{left:`${h+y/100*_}%`}})]}),(0,M.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-default)]`,children:d===null?`--`:`${d}°`})]},e.id??s)})})})}function R({templateData:e,fallback:t}){let n=(0,y.useMemo)(()=>T(e),[e]),r=n?.unit?.toUpperCase()===`F`||n?.unit?.toLowerCase()===`fahrenheit`,[i,a]=(0,y.useState)(null),o=i??r;return!n||n.currentTemp===void 0&&!n.forecast?.length?t??null:(0,M.jsxs)(`div`,{className:`mt-3`,children:[(0,M.jsx)(F,{data:n,sourceIsFahrenheit:r,useFahrenheit:o,onToggle:a}),n.hourly&&n.hourly.length>0&&(0,M.jsx)(I,{hourly:n.hourly,sourceIsFahrenheit:r,useFahrenheit:o}),n.forecast&&n.forecast.length>0&&(0,M.jsx)(L,{forecast:n.forecast,currentTemp:n.currentTemp,sourceIsFahrenheit:r,useFahrenheit:o})]})}export{R as WeatherForecastDisplay};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{c as r,d as i,f as a,i as o,l as s,n as c,o as l,p as u,r as d,s as f,t as p,u as m}from"./surface-parse-helpers-CEJ3tQ9Q.js";import{t as h}from"./cloud-RlApB3rO.js";import{t as g}from"./moon-BJzODLTY.js";import{t as _}from"./sun-DXlsFvWD.js";import{t as v}from"./misc-CXDB4i-X.js";var y=e(t(),1),b={"sun.max.fill":{icon:_,className:`text-orange-500`},"cloud.sun.fill":{icon:s,className:`text-amber-400`},"moon.fill":{icon:g,className:`text-blue-400`},"cloud.moon.fill":{icon:i,className:`text-blue-400`},"cloud.fill":{icon:h,className:`text-stone-400`},"cloud.rain.fill":{icon:m,className:`text-blue-400`},snowflake:{icon:f,className:`text-blue-300`},"cloud.bolt.fill":{icon:a,className:`text-orange-500`},"cloud.fog.fill":{icon:u,className:`text-stone-400`}},x={sunny:{icon:_,className:`text-orange-500`},clear:{icon:_,className:`text-orange-500`},"partly cloudy":{icon:s,className:`text-amber-400`},"mostly sunny":{icon:s,className:`text-amber-400`},cloudy:{icon:h,className:`text-stone-400`},overcast:{icon:h,className:`text-stone-400`},rainy:{icon:m,className:`text-blue-400`},rain:{icon:m,className:`text-blue-400`},drizzle:{icon:m,className:`text-blue-400`},snow:{icon:f,className:`text-blue-300`},snowy:{icon:f,className:`text-blue-300`},thunderstorm:{icon:a,className:`text-orange-500`},thunder:{icon:a,className:`text-orange-500`},foggy:{icon:u,className:`text-stone-400`},fog:{icon:u,className:`text-stone-400`},mist:{icon:u,className:`text-stone-400`},hazy:{icon:u,className:`text-stone-400`},night:{icon:g,className:`text-blue-400`},"mainly clear":{icon:_,className:`text-orange-500`},"mostly cloudy":{icon:h,className:`text-stone-400`},breezy:{icon:l,className:`text-stone-400`},windy:{icon:l,className:`text-stone-400`},cool:{icon:h,className:`text-stone-400`},warm:{icon:_,className:`text-orange-500`},hot:{icon:_,className:`text-orange-500`},cold:{icon:f,className:`text-blue-300`},"cold snap":{icon:f,className:`text-blue-300`},"warm, mostly sunny":{icon:s,className:`text-amber-400`},"cooler, breezy":{icon:l,className:`text-stone-400`}},S={icon:h,className:`text-stone-400`};function C(e){let t=b[e];if(t)return t;let n=e.toLowerCase(),r=x[n];if(r)return r;for(let[e,t]of Object.entries(x))if(n.includes(e))return t;return S}function w(e){if(typeof e==`string`){let t=e.match(/^(\d+)\s*mph\s*(.*)/i);if(t)return{speed:Number(t[1]),direction:t[2]?.trim()||void 0}}return{}}function T(e){let t;if(typeof e.location==`string`)t=e.location;else{let n=d(e.location);n&&typeof n.name==`string`&&(t=n.name)}if(!t)return null;let n=d(e.current),r=c(n?.temp)??c(e.currentTemp)??c(e.temperature)??c(e.temp),i=c(n?.feelsLike)??c(n?.feels_like)??c(n?.apparentTemperature)??c(e.feelsLike)??c(e.feels_like)??c(e.apparentTemperature),a=o(n?.condition)??o(e.condition),s=c(n?.humidity)??c(e.humidity),l=w(n?.wind??e.wind),u=c(n?.windSpeed)??c(n?.wind_speed)??c(e.windSpeed)??c(e.wind_speed)??l.speed,f=o(n?.windDirection)??o(n?.wind_direction)??o(e.windDirection)??o(e.wind_direction)??l.direction,m=d(e.units),h=o(m?.temperature)??o(n?.unit)??o(e.unit)??`F`,g=o(m?.speed)??o(e.windUnit)??o(e.wind_unit),_=p(e.hourly).map((e,t)=>({id:o(e.id)??String(t),time:o(e.time)??``,icon:o(e.icon)??o(e.condition)??`cloud.fill`,temp:c(e.tempC)??c(e.temp)??c(e.temperature),tempC:c(e.tempC)})),v=p([e.forecast,e.daily,e.days].find(Array.isArray)).map((e,t)=>({id:o(e.id)??String(t),day:o(e.day)??o(e.date),dayLabel:o(e.dayLabel)??o(e.date),icon:o(e.icon)??o(e.condition)??`cloud.fill`,low:c(e.low),high:c(e.high),lowC:c(e.lowC),highC:c(e.highC),precip:c(e.precip)??c(e.precipitation)??c(e.precipitationProbability),condition:o(e.condition)}));return{location:t,currentTemp:r,feelsLike:i,condition:a,humidity:s,windSpeed:u,windDirection:f,windUnit:g,unit:h,hourly:_.length>0?_:void 0,forecast:v.length>0?v:void 0}}function E(e){return e*9/5+32}function D(e){return(e-32)*5/9}function O(e,t,n){if(e===void 0)return null;let r=e;return t&&!n&&(r=D(e)),!t&&n&&(r=E(e)),`${Math.round(r)}`}function k(e,t,n){return e.tempC===void 0?e.temp===void 0?null:O(e.temp,t,n):O(e.tempC,!1,n)}function A(e,t,n){return e.lowC===void 0?O(e.low,t,n):O(e.lowC,!1,n)}function j(e,t,n){return e.highC===void 0?O(e.high,t,n):O(e.highC,!1,n)}var M=n();function N({icon:e,size:t=20}){let{icon:n,className:r}=C(e);return(0,M.jsx)(n,{width:t,height:t,className:r})}function P({useFahrenheit:e,onToggle:t}){return(0,M.jsxs)(`div`,{className:`flex overflow-hidden rounded-md border border-[var(--border-element)]`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:()=>t(!0),className:v(`px-2 py-0.5 text-body-small-default transition-colors`,e?`bg-[var(--primary-base)] text-[var(--content-inset)]`:`bg-transparent text-[var(--content-quiet)]`),children:`°F`}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>t(!1),className:v(`px-2 py-0.5 text-body-small-default transition-colors`,e?`bg-transparent text-[var(--content-quiet)]`:`bg-[var(--primary-base)] text-[var(--content-inset)]`),children:`°C`})]})}function F({data:e,sourceIsFahrenheit:t,useFahrenheit:n,onToggle:i}){let a=e.location,o=O(e.currentTemp,t,n),s=O(e.feelsLike,t,n),c=n?`F`:`C`,u=e.forecast?.[0],d=u?j(u,t,n):null,f=u?A(u,t,n):null,p=null;return e.windSpeed!==void 0&&(p=`${Math.round(e.windSpeed)} ${e.windUnit??`mph`}`,e.windDirection&&(p=`${e.windDirection} ${p}`)),(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:a}),o!==null&&(0,M.jsxs)(`div`,{className:`mt-1 text-4xl font-light text-[var(--content-default)]`,children:[o,`°`,c]}),e.condition&&(0,M.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-quiet)]`,children:e.condition})]}),(0,M.jsx)(P,{useFahrenheit:n,onToggle:i})]}),(0,M.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3`,children:[s!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`Feels like `,s,`°`]}),d!==null&&f!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`H:`,d,`° L:`,f,`°`]}),p&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,M.jsx)(l,{width:12,height:12}),p]}),e.humidity!==void 0&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,M.jsx)(r,{width:12,height:12}),e.humidity,`%`]})]})]})}function I({hourly:e,sourceIsFahrenheit:t,useFahrenheit:n}){return(0,M.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,M.jsx)(`div`,{className:`flex gap-3 overflow-x-auto`,children:e.map((e,r)=>{let i=e.time.toLowerCase()===`now`,a=k(e,t,n);return(0,M.jsxs)(`div`,{className:`flex min-w-[3rem] shrink-0 flex-col items-center gap-1`,children:[(0,M.jsx)(`span`,{className:i?`text-body-small-emphasised text-[var(--content-default)]`:`text-label-medium-default text-[var(--content-quiet)]`,children:i?`Now`:e.time}),(0,M.jsx)(N,{icon:e.icon,size:18}),a!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-default)]`,children:[a,`°`]})]},e.id??r)})})})}function L({forecast:e,currentTemp:t,sourceIsFahrenheit:n,useFahrenheit:r}){let{globalMin:i,globalMax:a}=(0,y.useMemo)(()=>{let t=1/0,n=-1/0;for(let r of e){let e=r.lowC??r.low,i=r.highC??r.high;e!==void 0&&e<t&&(t=e),i!==void 0&&i>n&&(n=i)}return{globalMin:t===1/0?0:t,globalMax:n===-1/0?100:n}},[e]),o=a-i||1;return(0,M.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,M.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map((e,s)=>{let c=e.dayLabel??e.day??`Day ${s+1}`,l=c.toLowerCase()===`today`,u=A(e,n,r),d=j(e,n,r),f=e.precip,p=e.lowC??e.low??i,m=e.highC??e.high??a,h=(p-i)/o*100,g=(m-i)/o*100,_=Math.max(g-h,2),y=null;if(l&&t!==void 0){let r=(e.lowC!==void 0||e.highC!==void 0)&&n?(t-32)*5/9:t;y=m===p?50:(Math.max(p,Math.min(m,r))-p)/(m-p)*100}return(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`span`,{className:v(`w-12 shrink-0 truncate text-body-small-default`,l?`text-[var(--content-default)]`:`text-[var(--content-quiet)]`),children:c}),(0,M.jsxs)(`div`,{className:`flex w-10 shrink-0 items-center justify-center gap-0.5`,children:[(0,M.jsx)(N,{icon:e.icon,size:16}),f!==void 0&&f>0&&(0,M.jsxs)(`span`,{className:`text-label-small-default text-blue-400`,children:[Math.round(f),`%`]})]}),(0,M.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-faint)]`,children:u===null?`--`:`${u}°`}),(0,M.jsxs)(`div`,{className:`relative h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--border-subtle)]`,children:[(0,M.jsx)(`div`,{className:`absolute top-0 h-full rounded-full bg-[var(--primary-base)]`,style:{left:`${h}%`,width:`${_}%`}}),y!==null&&(0,M.jsx)(`div`,{className:`absolute top-1/2 h-2.5 w-2.5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-[var(--aux-white)] bg-[var(--aux-white)] shadow-sm`,style:{left:`${h+y/100*_}%`}})]}),(0,M.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-default)]`,children:d===null?`--`:`${d}°`})]},e.id??s)})})})}function R({templateData:e,fallback:t}){let n=(0,y.useMemo)(()=>T(e),[e]),r=n?.unit?.toUpperCase()===`F`||n?.unit?.toLowerCase()===`fahrenheit`,[i,a]=(0,y.useState)(null),o=i??r;return!n||n.currentTemp===void 0&&!n.forecast?.length?t??null:(0,M.jsxs)(`div`,{className:`mt-3`,children:[(0,M.jsx)(F,{data:n,sourceIsFahrenheit:r,useFahrenheit:o,onToggle:a}),n.hourly&&n.hourly.length>0&&(0,M.jsx)(I,{hourly:n.hourly,sourceIsFahrenheit:r,useFahrenheit:o}),n.forecast&&n.forecast.length>0&&(0,M.jsx)(L,{forecast:n.forecast,currentTemp:n.currentTemp,sourceIsFahrenheit:r,useFahrenheit:o})]})}export{R as WeatherForecastDisplay};
@@ -1 +1 @@
1
- import{n as e}from"./dist-BwAT3VYQ.js";var t=class extends e{async getSafeAreaInsets(){return{insets:{top:0,left:0,right:0,bottom:0}}}async getStatusBarHeight(){return{statusBarHeight:0}}setImmersiveNavigationBar(){throw this.unimplemented(`Method not supported on Web.`)}unsetImmersiveNavigationBar(){throw this.unimplemented(`Method not supported on Web.`)}};export{t as SafeAreaWeb};
1
+ import{n as e}from"./dist-CCFYMOVM.js";var t=class extends e{async getSafeAreaInsets(){return{insets:{top:0,left:0,right:0,bottom:0}}}async getStatusBarHeight(){return{statusBarHeight:0}}setImmersiveNavigationBar(){throw this.unimplemented(`Method not supported on Web.`)}unsetImmersiveNavigationBar(){throw this.unimplemented(`Method not supported on Web.`)}};export{t as SafeAreaWeb};
@@ -1 +1 @@
1
- import{n as e}from"./dist-BwAT3VYQ.js";var t=class extends e{constructor(){super(),this._lastWindow=null}async open(e){this._lastWindow=window.open(e.url,e.windowName||`_blank`)}async close(){return new Promise((e,t)=>{this._lastWindow==null?t(`No active window to close!`):(this._lastWindow.close(),this._lastWindow=null,e())})}};new t;export{t as BrowserWeb};
1
+ import{n as e}from"./dist-CCFYMOVM.js";var t=class extends e{constructor(){super(),this._lastWindow=null}async open(e){this._lastWindow=window.open(e.url,e.windowName||`_blank`)}async close(){return new Promise((e,t)=>{this._lastWindow==null?t(`No active window to close!`):(this._lastWindow.close(),this._lastWindow=null,e())})}};new t;export{t as BrowserWeb};
@@ -1 +1 @@
1
- import{n as e}from"./dist-BwAT3VYQ.js";var t=class extends e{async canShare(){return typeof navigator>`u`||!navigator.share?{value:!1}:{value:!0}}async share(e){if(typeof navigator>`u`||!navigator.share)throw this.unavailable(`Share API not available in this browser`);return await navigator.share({title:e.title,text:e.text,url:e.url}),{}}};export{t as ShareWeb};
1
+ import{n as e}from"./dist-CCFYMOVM.js";var t=class extends e{async canShare(){return typeof navigator>`u`||!navigator.share?{value:!1}:{value:!0}}async share(e){if(typeof navigator>`u`||!navigator.share)throw this.unavailable(`Share API not available in this browser`);return await navigator.share({title:e.title,text:e.text,url:e.url}),{}}};export{t as ShareWeb};
@@ -1 +1 @@
1
- import{n as e}from"./dist-BwAT3VYQ.js";function t(){let e=window.navigator.connection||window.navigator.mozConnection||window.navigator.webkitConnection,t=`unknown`,n=e?e.type||e.effectiveType:null;if(n&&typeof n==`string`)switch(n){case`bluetooth`:case`cellular`:t=`cellular`;break;case`none`:t=`none`;break;case`ethernet`:case`wifi`:case`wimax`:t=`wifi`;break;case`other`:case`unknown`:t=`unknown`;break;case`slow-2g`:case`2g`:case`3g`:t=`cellular`;break;case`4g`:t=`wifi`;break;default:break}return t}var n=class extends e{constructor(){super(),this.handleOnline=()=>{let e={connected:!0,connectionType:t()};this.notifyListeners(`networkStatusChange`,e)},this.handleOffline=()=>{this.notifyListeners(`networkStatusChange`,{connected:!1,connectionType:`none`})},typeof window<`u`&&(window.addEventListener(`online`,this.handleOnline),window.addEventListener(`offline`,this.handleOffline))}async getStatus(){if(!window.navigator)throw this.unavailable(`Browser does not support the Network Information API`);let e=window.navigator.onLine,n=t();return{connected:e,connectionType:e?n:`none`}}};new n;export{n as NetworkWeb};
1
+ import{n as e}from"./dist-CCFYMOVM.js";function t(){let e=window.navigator.connection||window.navigator.mozConnection||window.navigator.webkitConnection,t=`unknown`,n=e?e.type||e.effectiveType:null;if(n&&typeof n==`string`)switch(n){case`bluetooth`:case`cellular`:t=`cellular`;break;case`none`:t=`none`;break;case`ethernet`:case`wifi`:case`wimax`:t=`wifi`;break;case`other`:case`unknown`:t=`unknown`;break;case`slow-2g`:case`2g`:case`3g`:t=`cellular`;break;case`4g`:t=`wifi`;break;default:break}return t}var n=class extends e{constructor(){super(),this.handleOnline=()=>{let e={connected:!0,connectionType:t()};this.notifyListeners(`networkStatusChange`,e)},this.handleOffline=()=>{this.notifyListeners(`networkStatusChange`,{connected:!1,connectionType:`none`})},typeof window<`u`&&(window.addEventListener(`online`,this.handleOnline),window.addEventListener(`offline`,this.handleOffline))}async getStatus(){if(!window.navigator)throw this.unavailable(`Browser does not support the Network Information API`);let e=window.navigator.onLine,n=t();return{connected:e,connectionType:e?n:`none`}}};new n;export{n as NetworkWeb};
@@ -1 +1 @@
1
- import{n as e,r as t}from"./dist-BwAT3VYQ.js";import{n}from"./definitions-D_AmTPWg.js";function r(e){let t=e.split(`/`).filter(e=>e!==`.`),n=[];return t.forEach(e=>{e===`..`&&n.length>0&&n[n.length-1]!==`..`?n.pop():n.push(e)}),n.join(`/`)}function i(e,t){e=r(e),t=r(t);let n=e.split(`/`),i=t.split(`/`);return e!==t&&n.every((e,t)=>e===i[t])}var a=class r extends e{constructor(){super(...arguments),this.DB_VERSION=1,this.DB_NAME=`Disc`,this._writeCmds=[`add`,`put`,`delete`],this.downloadFile=async e=>{let n=t(e,e.webFetchExtra),r=await fetch(e.url,n),i;if(!e.progress)i=await r.blob();else if(!r?.body)i=new Blob;else{let t=r.body.getReader(),n=0,a=[],o=r.headers.get(`content-type`),s=parseInt(r.headers.get(`content-length`)||`0`,10);for(;;){let{done:r,value:i}=await t.read();if(r)break;a.push(i),n+=i?.length||0;let o={url:e.url,bytes:n,contentLength:s};this.notifyListeners(`progress`,o)}let c=new Uint8Array(n),l=0;for(let e of a)e!==void 0&&(c.set(e,l),l+=e.length);i=new Blob([c.buffer],{type:o||void 0})}return{path:(await this.writeFile({path:e.path,directory:e.directory??void 0,recursive:e.recursive??!1,data:i})).uri,blob:i}}}readFileInChunks(e,t){throw this.unavailable(`Method not implemented.`)}async initDb(){if(this._db!==void 0)return this._db;if(!(`indexedDB`in window))throw this.unavailable(`This browser doesn't support IndexedDB`);return new Promise((e,t)=>{let n=indexedDB.open(this.DB_NAME,this.DB_VERSION);n.onupgradeneeded=r.doUpgrade,n.onsuccess=()=>{this._db=n.result,e(n.result)},n.onerror=()=>t(n.error),n.onblocked=()=>{console.warn(`db blocked`)}})}static doUpgrade(e){let t=e.target.result;switch(e.oldVersion){default:t.objectStoreNames.contains(`FileStorage`)&&t.deleteObjectStore(`FileStorage`),t.createObjectStore(`FileStorage`,{keyPath:`path`}).createIndex(`by_folder`,`folder`)}}async dbRequest(e,t){let n=this._writeCmds.indexOf(e)===-1?`readonly`:`readwrite`;return this.initDb().then(r=>new Promise((i,a)=>{let o=r.transaction([`FileStorage`],n).objectStore(`FileStorage`)[e](...t);o.onsuccess=()=>i(o.result),o.onerror=()=>a(o.error)}))}async dbIndexRequest(e,t,n){let r=this._writeCmds.indexOf(t)===-1?`readonly`:`readwrite`;return this.initDb().then(i=>new Promise((a,o)=>{let s=i.transaction([`FileStorage`],r).objectStore(`FileStorage`).index(e)[t](...n);s.onsuccess=()=>a(s.result),s.onerror=()=>o(s.error)}))}getPath(e,t){let n=t===void 0?``:t.replace(/^[/]+|[/]+$/g,``),r=``;return e!==void 0&&(r+=`/`+e),t!==``&&(r+=`/`+n),r}async clear(){(await this.initDb()).transaction([`FileStorage`],`readwrite`).objectStore(`FileStorage`).clear()}async readFile(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(n===void 0)throw Error(`File does not exist.`);return{data:n.content?n.content:``}}async writeFile(e){let t=this.getPath(e.directory,e.path),n=e.data,r=e.encoding,i=e.recursive,a=await this.dbRequest(`get`,[t]);if(a&&a.type===`directory`)throw Error(`The supplied path is a directory.`);let o=t.substr(0,t.lastIndexOf(`/`));if(await this.dbRequest(`get`,[o])===void 0){let t=o.indexOf(`/`,1);if(t!==-1){let n=o.substr(t);await this.mkdir({path:n,directory:e.directory,recursive:i})}}if(!r&&!(n instanceof Blob)&&(n=n.indexOf(`,`)>=0?n.split(`,`)[1]:n,!this.isBase64String(n)))throw Error(`The supplied data is not valid base64 content.`);let s=Date.now(),c={path:t,folder:o,type:`file`,size:n instanceof Blob?n.size:n.length,ctime:s,mtime:s,content:n};return await this.dbRequest(`put`,[c]),{uri:c.path}}async appendFile(e){let t=this.getPath(e.directory,e.path),n=e.data,r=e.encoding,i=t.substr(0,t.lastIndexOf(`/`)),a=Date.now(),o=a,s=await this.dbRequest(`get`,[t]);if(s&&s.type===`directory`)throw Error(`The supplied path is a directory.`);if(await this.dbRequest(`get`,[i])===void 0){let t=i.indexOf(`/`,1);if(t!==-1){let n=i.substr(t);await this.mkdir({path:n,directory:e.directory,recursive:!0})}}if(!r&&!this.isBase64String(n))throw Error(`The supplied data is not valid base64 content.`);if(s!==void 0){if(s.content instanceof Blob)throw Error(`The occupied entry contains a Blob object which cannot be appended to.`);n=s.content!==void 0&&!r?btoa(atob(s.content)+atob(n)):s.content+n,o=s.ctime}let c={path:t,folder:i,type:`file`,size:n.length,ctime:o,mtime:a,content:n};await this.dbRequest(`put`,[c])}async deleteFile(e){let t=this.getPath(e.directory,e.path);if(await this.dbRequest(`get`,[t])===void 0)throw Error(`File does not exist.`);if((await this.dbIndexRequest(`by_folder`,`getAllKeys`,[IDBKeyRange.only(t)])).length!==0)throw Error(`Folder is not empty.`);await this.dbRequest(`delete`,[t])}async mkdir(e){let t=this.getPath(e.directory,e.path),n=e.recursive,r=t.substr(0,t.lastIndexOf(`/`)),i=(t.match(/\//g)||[]).length,a=await this.dbRequest(`get`,[r]),o=await this.dbRequest(`get`,[t]);if(i===1)throw Error(`Cannot create Root directory`);if(o!==void 0)throw Error(`Current directory does already exist.`);if(!n&&i!==2&&a===void 0)throw Error(`Parent directory must exist`);if(n&&i!==2&&a===void 0){let t=r.substr(r.indexOf(`/`,1));await this.mkdir({path:t,directory:e.directory,recursive:n})}let s=Date.now(),c={path:t,folder:r,type:`directory`,size:0,ctime:s,mtime:s};await this.dbRequest(`put`,[c])}async rmdir(e){let{path:t,directory:n,recursive:r}=e,i=this.getPath(n,t),a=await this.dbRequest(`get`,[i]);if(a===void 0)throw Error(`Folder does not exist.`);if(a.type!==`directory`)throw Error(`Requested path is not a directory`);let o=await this.readdir({path:t,directory:n});if(o.files.length!==0&&!r)throw Error(`Folder is not empty`);for(let e of o.files){let i=`${t}/${e.name}`;(await this.stat({path:i,directory:n})).type===`file`?await this.deleteFile({path:i,directory:n}):await this.rmdir({path:i,directory:n,recursive:r})}await this.dbRequest(`delete`,[i])}async readdir(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(e.path!==``&&n===void 0)throw Error(`Folder does not exist.`);let r=await this.dbIndexRequest(`by_folder`,`getAllKeys`,[IDBKeyRange.only(t)]);return{files:await Promise.all(r.map(async e=>{let n=await this.dbRequest(`get`,[e]);return n===void 0&&(n=await this.dbRequest(`get`,[e+`/`])),{name:e.substring(t.length+1),type:n.type,size:n.size,ctime:n.ctime,mtime:n.mtime,uri:n.path}}))}}async getUri(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);return n===void 0&&(n=await this.dbRequest(`get`,[t+`/`])),{uri:n?.path||t}}async stat(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(n===void 0&&(n=await this.dbRequest(`get`,[t+`/`])),n===void 0)throw Error(`Entry does not exist.`);return{name:n.path.substring(t.length+1),type:n.type,size:n.size,ctime:n.ctime,mtime:n.mtime,uri:n.path}}async rename(e){await this._copy(e,!0)}async copy(e){return this._copy(e,!1)}async requestPermissions(){return{publicStorage:`granted`}}async checkPermissions(){return{publicStorage:`granted`}}async _copy(e,t=!1){let{toDirectory:r}=e,{to:a,from:o,directory:s}=e;if(!a||!o)throw Error(`Both to and from must be provided`);r||=s;let c=this.getPath(s,o),l=this.getPath(r,a);if(c===l)return{uri:l};if(i(c,l))throw Error(`To path cannot contain the from path`);let u;try{u=await this.stat({path:a,directory:r})}catch{let e=a.split(`/`);e.pop();let t=e.join(`/`);if(e.length>0&&(await this.stat({path:t,directory:r})).type!==`directory`)throw Error(`Parent directory of the to path is a file`)}if(u&&u.type===`directory`)throw Error(`Cannot overwrite a directory with a file`);let d=await this.stat({path:o,directory:s}),f=async(e,t,n)=>{let i=this.getPath(r,e),a=await this.dbRequest(`get`,[i]);a.ctime=t,a.mtime=n,await this.dbRequest(`put`,[a])},p=d.ctime?d.ctime:Date.now();switch(d.type){case`file`:{let e=await this.readFile({path:o,directory:s});t&&await this.deleteFile({path:o,directory:s});let i;!(e.data instanceof Blob)&&!this.isBase64String(e.data)&&(i=n.UTF8);let c=await this.writeFile({path:a,directory:r,data:e.data,encoding:i});return t&&await f(a,p,d.mtime),c}case`directory`:{if(u)throw Error(`Cannot move a directory over an existing object`);try{await this.mkdir({path:a,directory:r,recursive:!1}),t&&await f(a,p,d.mtime)}catch{}let e=(await this.readdir({path:o,directory:s})).files;for(let n of e)await this._copy({from:`${o}/${n.name}`,to:`${a}/${n.name}`,directory:s,toDirectory:r},t);t&&await this.rmdir({path:o,directory:s})}}return{uri:l}}isBase64String(e){try{return btoa(atob(e))==e}catch{return!1}}};a._debug=!0;export{a as FilesystemWeb};
1
+ import{n as e,r as t}from"./dist-CCFYMOVM.js";import{n}from"./definitions-B6TMLvuT.js";function r(e){let t=e.split(`/`).filter(e=>e!==`.`),n=[];return t.forEach(e=>{e===`..`&&n.length>0&&n[n.length-1]!==`..`?n.pop():n.push(e)}),n.join(`/`)}function i(e,t){e=r(e),t=r(t);let n=e.split(`/`),i=t.split(`/`);return e!==t&&n.every((e,t)=>e===i[t])}var a=class r extends e{constructor(){super(...arguments),this.DB_VERSION=1,this.DB_NAME=`Disc`,this._writeCmds=[`add`,`put`,`delete`],this.downloadFile=async e=>{let n=t(e,e.webFetchExtra),r=await fetch(e.url,n),i;if(!e.progress)i=await r.blob();else if(!r?.body)i=new Blob;else{let t=r.body.getReader(),n=0,a=[],o=r.headers.get(`content-type`),s=parseInt(r.headers.get(`content-length`)||`0`,10);for(;;){let{done:r,value:i}=await t.read();if(r)break;a.push(i),n+=i?.length||0;let o={url:e.url,bytes:n,contentLength:s};this.notifyListeners(`progress`,o)}let c=new Uint8Array(n),l=0;for(let e of a)e!==void 0&&(c.set(e,l),l+=e.length);i=new Blob([c.buffer],{type:o||void 0})}return{path:(await this.writeFile({path:e.path,directory:e.directory??void 0,recursive:e.recursive??!1,data:i})).uri,blob:i}}}readFileInChunks(e,t){throw this.unavailable(`Method not implemented.`)}async initDb(){if(this._db!==void 0)return this._db;if(!(`indexedDB`in window))throw this.unavailable(`This browser doesn't support IndexedDB`);return new Promise((e,t)=>{let n=indexedDB.open(this.DB_NAME,this.DB_VERSION);n.onupgradeneeded=r.doUpgrade,n.onsuccess=()=>{this._db=n.result,e(n.result)},n.onerror=()=>t(n.error),n.onblocked=()=>{console.warn(`db blocked`)}})}static doUpgrade(e){let t=e.target.result;switch(e.oldVersion){default:t.objectStoreNames.contains(`FileStorage`)&&t.deleteObjectStore(`FileStorage`),t.createObjectStore(`FileStorage`,{keyPath:`path`}).createIndex(`by_folder`,`folder`)}}async dbRequest(e,t){let n=this._writeCmds.indexOf(e)===-1?`readonly`:`readwrite`;return this.initDb().then(r=>new Promise((i,a)=>{let o=r.transaction([`FileStorage`],n).objectStore(`FileStorage`)[e](...t);o.onsuccess=()=>i(o.result),o.onerror=()=>a(o.error)}))}async dbIndexRequest(e,t,n){let r=this._writeCmds.indexOf(t)===-1?`readonly`:`readwrite`;return this.initDb().then(i=>new Promise((a,o)=>{let s=i.transaction([`FileStorage`],r).objectStore(`FileStorage`).index(e)[t](...n);s.onsuccess=()=>a(s.result),s.onerror=()=>o(s.error)}))}getPath(e,t){let n=t===void 0?``:t.replace(/^[/]+|[/]+$/g,``),r=``;return e!==void 0&&(r+=`/`+e),t!==``&&(r+=`/`+n),r}async clear(){(await this.initDb()).transaction([`FileStorage`],`readwrite`).objectStore(`FileStorage`).clear()}async readFile(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(n===void 0)throw Error(`File does not exist.`);return{data:n.content?n.content:``}}async writeFile(e){let t=this.getPath(e.directory,e.path),n=e.data,r=e.encoding,i=e.recursive,a=await this.dbRequest(`get`,[t]);if(a&&a.type===`directory`)throw Error(`The supplied path is a directory.`);let o=t.substr(0,t.lastIndexOf(`/`));if(await this.dbRequest(`get`,[o])===void 0){let t=o.indexOf(`/`,1);if(t!==-1){let n=o.substr(t);await this.mkdir({path:n,directory:e.directory,recursive:i})}}if(!r&&!(n instanceof Blob)&&(n=n.indexOf(`,`)>=0?n.split(`,`)[1]:n,!this.isBase64String(n)))throw Error(`The supplied data is not valid base64 content.`);let s=Date.now(),c={path:t,folder:o,type:`file`,size:n instanceof Blob?n.size:n.length,ctime:s,mtime:s,content:n};return await this.dbRequest(`put`,[c]),{uri:c.path}}async appendFile(e){let t=this.getPath(e.directory,e.path),n=e.data,r=e.encoding,i=t.substr(0,t.lastIndexOf(`/`)),a=Date.now(),o=a,s=await this.dbRequest(`get`,[t]);if(s&&s.type===`directory`)throw Error(`The supplied path is a directory.`);if(await this.dbRequest(`get`,[i])===void 0){let t=i.indexOf(`/`,1);if(t!==-1){let n=i.substr(t);await this.mkdir({path:n,directory:e.directory,recursive:!0})}}if(!r&&!this.isBase64String(n))throw Error(`The supplied data is not valid base64 content.`);if(s!==void 0){if(s.content instanceof Blob)throw Error(`The occupied entry contains a Blob object which cannot be appended to.`);n=s.content!==void 0&&!r?btoa(atob(s.content)+atob(n)):s.content+n,o=s.ctime}let c={path:t,folder:i,type:`file`,size:n.length,ctime:o,mtime:a,content:n};await this.dbRequest(`put`,[c])}async deleteFile(e){let t=this.getPath(e.directory,e.path);if(await this.dbRequest(`get`,[t])===void 0)throw Error(`File does not exist.`);if((await this.dbIndexRequest(`by_folder`,`getAllKeys`,[IDBKeyRange.only(t)])).length!==0)throw Error(`Folder is not empty.`);await this.dbRequest(`delete`,[t])}async mkdir(e){let t=this.getPath(e.directory,e.path),n=e.recursive,r=t.substr(0,t.lastIndexOf(`/`)),i=(t.match(/\//g)||[]).length,a=await this.dbRequest(`get`,[r]),o=await this.dbRequest(`get`,[t]);if(i===1)throw Error(`Cannot create Root directory`);if(o!==void 0)throw Error(`Current directory does already exist.`);if(!n&&i!==2&&a===void 0)throw Error(`Parent directory must exist`);if(n&&i!==2&&a===void 0){let t=r.substr(r.indexOf(`/`,1));await this.mkdir({path:t,directory:e.directory,recursive:n})}let s=Date.now(),c={path:t,folder:r,type:`directory`,size:0,ctime:s,mtime:s};await this.dbRequest(`put`,[c])}async rmdir(e){let{path:t,directory:n,recursive:r}=e,i=this.getPath(n,t),a=await this.dbRequest(`get`,[i]);if(a===void 0)throw Error(`Folder does not exist.`);if(a.type!==`directory`)throw Error(`Requested path is not a directory`);let o=await this.readdir({path:t,directory:n});if(o.files.length!==0&&!r)throw Error(`Folder is not empty`);for(let e of o.files){let i=`${t}/${e.name}`;(await this.stat({path:i,directory:n})).type===`file`?await this.deleteFile({path:i,directory:n}):await this.rmdir({path:i,directory:n,recursive:r})}await this.dbRequest(`delete`,[i])}async readdir(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(e.path!==``&&n===void 0)throw Error(`Folder does not exist.`);let r=await this.dbIndexRequest(`by_folder`,`getAllKeys`,[IDBKeyRange.only(t)]);return{files:await Promise.all(r.map(async e=>{let n=await this.dbRequest(`get`,[e]);return n===void 0&&(n=await this.dbRequest(`get`,[e+`/`])),{name:e.substring(t.length+1),type:n.type,size:n.size,ctime:n.ctime,mtime:n.mtime,uri:n.path}}))}}async getUri(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);return n===void 0&&(n=await this.dbRequest(`get`,[t+`/`])),{uri:n?.path||t}}async stat(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(n===void 0&&(n=await this.dbRequest(`get`,[t+`/`])),n===void 0)throw Error(`Entry does not exist.`);return{name:n.path.substring(t.length+1),type:n.type,size:n.size,ctime:n.ctime,mtime:n.mtime,uri:n.path}}async rename(e){await this._copy(e,!0)}async copy(e){return this._copy(e,!1)}async requestPermissions(){return{publicStorage:`granted`}}async checkPermissions(){return{publicStorage:`granted`}}async _copy(e,t=!1){let{toDirectory:r}=e,{to:a,from:o,directory:s}=e;if(!a||!o)throw Error(`Both to and from must be provided`);r||=s;let c=this.getPath(s,o),l=this.getPath(r,a);if(c===l)return{uri:l};if(i(c,l))throw Error(`To path cannot contain the from path`);let u;try{u=await this.stat({path:a,directory:r})}catch{let e=a.split(`/`);e.pop();let t=e.join(`/`);if(e.length>0&&(await this.stat({path:t,directory:r})).type!==`directory`)throw Error(`Parent directory of the to path is a file`)}if(u&&u.type===`directory`)throw Error(`Cannot overwrite a directory with a file`);let d=await this.stat({path:o,directory:s}),f=async(e,t,n)=>{let i=this.getPath(r,e),a=await this.dbRequest(`get`,[i]);a.ctime=t,a.mtime=n,await this.dbRequest(`put`,[a])},p=d.ctime?d.ctime:Date.now();switch(d.type){case`file`:{let e=await this.readFile({path:o,directory:s});t&&await this.deleteFile({path:o,directory:s});let i;!(e.data instanceof Blob)&&!this.isBase64String(e.data)&&(i=n.UTF8);let c=await this.writeFile({path:a,directory:r,data:e.data,encoding:i});return t&&await f(a,p,d.mtime),c}case`directory`:{if(u)throw Error(`Cannot move a directory over an existing object`);try{await this.mkdir({path:a,directory:r,recursive:!1}),t&&await f(a,p,d.mtime)}catch{}let e=(await this.readdir({path:o,directory:s})).files;for(let n of e)await this._copy({from:`${o}/${n.name}`,to:`${a}/${n.name}`,directory:s,toDirectory:r},t);t&&await this.rmdir({path:o,directory:s})}}return{uri:l}}isBase64String(e){try{return btoa(atob(e))==e}catch{return!1}}};a._debug=!0;export{a as FilesystemWeb};
@@ -1 +1 @@
1
- import{n as e}from"./dist-BwAT3VYQ.js";var t=class extends e{constructor(){super(...arguments),this.pending=[],this.deliveredNotifications=[],this.hasNotificationSupport=()=>{if(!(`Notification`in window)||!Notification.requestPermission)return!1;if(Notification.permission!==`granted`)try{new Notification(``)}catch(e){if(e instanceof Error&&e.name===`TypeError`)return!1}return!0}}async getDeliveredNotifications(){let e=[];for(let t of this.deliveredNotifications){let n={title:t.title,id:parseInt(t.tag),body:t.body};e.push(n)}return{notifications:e}}async removeDeliveredNotifications(e){for(let t of e.notifications){let e=this.deliveredNotifications.find(e=>e.tag===String(t.id));e?.close(),this.deliveredNotifications=this.deliveredNotifications.filter(()=>!e)}}async removeAllDeliveredNotifications(){for(let e of this.deliveredNotifications)e.close();this.deliveredNotifications=[]}async createChannel(){throw this.unimplemented(`Not implemented on web.`)}async deleteChannel(){throw this.unimplemented(`Not implemented on web.`)}async listChannels(){throw this.unimplemented(`Not implemented on web.`)}async schedule(e){if(!this.hasNotificationSupport())throw this.unavailable(`Notifications not supported in this browser.`);for(let t of e.notifications)this.sendNotification(t);return{notifications:e.notifications.map(e=>({id:e.id}))}}async getPending(){return{notifications:this.pending}}async registerActionTypes(){throw this.unimplemented(`Not implemented on web.`)}async cancel(e){this.pending=this.pending.filter(t=>!e.notifications.find(e=>e.id===t.id))}async areEnabled(){let{display:e}=await this.checkPermissions();return{value:e===`granted`}}async changeExactNotificationSetting(){throw this.unimplemented(`Not implemented on web.`)}async checkExactNotificationSetting(){throw this.unimplemented(`Not implemented on web.`)}async requestPermissions(){if(!this.hasNotificationSupport())throw this.unavailable(`Notifications not supported in this browser.`);return{display:this.transformNotificationPermission(await Notification.requestPermission())}}async checkPermissions(){if(!this.hasNotificationSupport())throw this.unavailable(`Notifications not supported in this browser.`);return{display:this.transformNotificationPermission(Notification.permission)}}transformNotificationPermission(e){switch(e){case`granted`:return`granted`;case`denied`:return`denied`;default:return`prompt`}}sendPending(){let e=[],t=new Date().getTime();for(let n of this.pending)n.schedule?.at&&n.schedule.at.getTime()<=t&&(this.buildNotification(n),e.push(n));this.pending=this.pending.filter(t=>!e.find(e=>e===t))}sendNotification(e){if(e.schedule?.at){let t=e.schedule.at.getTime()-new Date().getTime();this.pending.push(e),setTimeout(()=>{this.sendPending()},t);return}this.buildNotification(e)}buildNotification(e){let t=new Notification(e.title,{body:e.body,tag:String(e.id)});return t.addEventListener(`click`,this.onClick.bind(this,e),!1),t.addEventListener(`show`,this.onShow.bind(this,e),!1),t.addEventListener(`close`,()=>{this.deliveredNotifications=this.deliveredNotifications.filter(()=>!this)},!1),this.deliveredNotifications.push(t),t}onClick(e){let t={actionId:`tap`,notification:e};this.notifyListeners(`localNotificationActionPerformed`,t)}onShow(e){this.notifyListeners(`localNotificationReceived`,e)}};export{t as LocalNotificationsWeb};
1
+ import{n as e}from"./dist-CCFYMOVM.js";var t=class extends e{constructor(){super(...arguments),this.pending=[],this.deliveredNotifications=[],this.hasNotificationSupport=()=>{if(!(`Notification`in window)||!Notification.requestPermission)return!1;if(Notification.permission!==`granted`)try{new Notification(``)}catch(e){if(e instanceof Error&&e.name===`TypeError`)return!1}return!0}}async getDeliveredNotifications(){let e=[];for(let t of this.deliveredNotifications){let n={title:t.title,id:parseInt(t.tag),body:t.body};e.push(n)}return{notifications:e}}async removeDeliveredNotifications(e){for(let t of e.notifications){let e=this.deliveredNotifications.find(e=>e.tag===String(t.id));e?.close(),this.deliveredNotifications=this.deliveredNotifications.filter(()=>!e)}}async removeAllDeliveredNotifications(){for(let e of this.deliveredNotifications)e.close();this.deliveredNotifications=[]}async createChannel(){throw this.unimplemented(`Not implemented on web.`)}async deleteChannel(){throw this.unimplemented(`Not implemented on web.`)}async listChannels(){throw this.unimplemented(`Not implemented on web.`)}async schedule(e){if(!this.hasNotificationSupport())throw this.unavailable(`Notifications not supported in this browser.`);for(let t of e.notifications)this.sendNotification(t);return{notifications:e.notifications.map(e=>({id:e.id}))}}async getPending(){return{notifications:this.pending}}async registerActionTypes(){throw this.unimplemented(`Not implemented on web.`)}async cancel(e){this.pending=this.pending.filter(t=>!e.notifications.find(e=>e.id===t.id))}async areEnabled(){let{display:e}=await this.checkPermissions();return{value:e===`granted`}}async changeExactNotificationSetting(){throw this.unimplemented(`Not implemented on web.`)}async checkExactNotificationSetting(){throw this.unimplemented(`Not implemented on web.`)}async requestPermissions(){if(!this.hasNotificationSupport())throw this.unavailable(`Notifications not supported in this browser.`);return{display:this.transformNotificationPermission(await Notification.requestPermission())}}async checkPermissions(){if(!this.hasNotificationSupport())throw this.unavailable(`Notifications not supported in this browser.`);return{display:this.transformNotificationPermission(Notification.permission)}}transformNotificationPermission(e){switch(e){case`granted`:return`granted`;case`denied`:return`denied`;default:return`prompt`}}sendPending(){let e=[],t=new Date().getTime();for(let n of this.pending)n.schedule?.at&&n.schedule.at.getTime()<=t&&(this.buildNotification(n),e.push(n));this.pending=this.pending.filter(t=>!e.find(e=>e===t))}sendNotification(e){if(e.schedule?.at){let t=e.schedule.at.getTime()-new Date().getTime();this.pending.push(e),setTimeout(()=>{this.sendPending()},t);return}this.buildNotification(e)}buildNotification(e){let t=new Notification(e.title,{body:e.body,tag:String(e.id)});return t.addEventListener(`click`,this.onClick.bind(this,e),!1),t.addEventListener(`show`,this.onShow.bind(this,e),!1),t.addEventListener(`close`,()=>{this.deliveredNotifications=this.deliveredNotifications.filter(()=>!this)},!1),this.deliveredNotifications.push(t),t}onClick(e){let t={actionId:`tap`,notification:e};this.notifyListeners(`localNotificationActionPerformed`,t)}onShow(e){this.notifyListeners(`localNotificationReceived`,e)}};export{t as LocalNotificationsWeb};
@@ -1 +1 @@
1
- import{n as e}from"./dist-BwAT3VYQ.js";var t=class extends e{constructor(){super(),this.handleVisibilityChange=()=>{let e={isActive:document.hidden!==!0};this.notifyListeners(`appStateChange`,e),document.hidden?this.notifyListeners(`pause`,null):this.notifyListeners(`resume`,null)},document.addEventListener(`visibilitychange`,this.handleVisibilityChange,!1)}exitApp(){throw this.unimplemented(`Not implemented on web.`)}async getInfo(){throw this.unimplemented(`Not implemented on web.`)}async getLaunchUrl(){return{url:``}}async getState(){return{isActive:document.hidden!==!0}}async minimizeApp(){throw this.unimplemented(`Not implemented on web.`)}async toggleBackButtonHandler(){throw this.unimplemented(`Not implemented on web.`)}async getAppLanguage(){return{value:navigator.language.split(`-`)[0].toLowerCase()}}};export{t as AppWeb};
1
+ import{n as e}from"./dist-CCFYMOVM.js";var t=class extends e{constructor(){super(),this.handleVisibilityChange=()=>{let e={isActive:document.hidden!==!0};this.notifyListeners(`appStateChange`,e),document.hidden?this.notifyListeners(`pause`,null):this.notifyListeners(`resume`,null)},document.addEventListener(`visibilitychange`,this.handleVisibilityChange,!1)}exitApp(){throw this.unimplemented(`Not implemented on web.`)}async getInfo(){throw this.unimplemented(`Not implemented on web.`)}async getLaunchUrl(){return{url:``}}async getState(){return{isActive:document.hidden!==!0}}async minimizeApp(){throw this.unimplemented(`Not implemented on web.`)}async toggleBackButtonHandler(){throw this.unimplemented(`Not implemented on web.`)}async getAppLanguage(){return{value:navigator.language.split(`-`)[0].toLowerCase()}}};export{t as AppWeb};
@@ -1 +1 @@
1
- import{n as e}from"./dist-BwAT3VYQ.js";import{n as t,t as n}from"./definitions-JF3PcEff.js";var r=class extends e{constructor(){super(...arguments),this.selectionStarted=!1}async impact(e){let t=this.patternForImpact(e?.style);this.vibrateWithPattern(t)}async notification(e){let t=this.patternForNotification(e?.type);this.vibrateWithPattern(t)}async vibrate(e){let t=e?.duration||300;this.vibrateWithPattern([t])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(e=n.Heavy){return e===n.Medium?[43]:e===n.Light?[20]:[61]}patternForNotification(e=t.Success){return e===t.Warning?[30,40,30,50,60]:e===t.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(e){if(navigator.vibrate)navigator.vibrate(e);else throw this.unavailable(`Browser does not support the vibrate API`)}};export{r as HapticsWeb};
1
+ import{n as e}from"./dist-CCFYMOVM.js";import{n as t,t as n}from"./definitions-B2pe1hr8.js";var r=class extends e{constructor(){super(...arguments),this.selectionStarted=!1}async impact(e){let t=this.patternForImpact(e?.style);this.vibrateWithPattern(t)}async notification(e){let t=this.patternForNotification(e?.type);this.vibrateWithPattern(t)}async vibrate(e){let t=e?.duration||300;this.vibrateWithPattern([t])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(e=n.Heavy){return e===n.Medium?[43]:e===n.Light?[20]:[61]}patternForNotification(e=t.Success){return e===t.Warning?[30,40,30,50,60]:e===t.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(e){if(navigator.vibrate)navigator.vibrate(e);else throw this.unavailable(`Browser does not support the vibrate API`)}};export{r as HapticsWeb};
@@ -1 +1 @@
1
- import{t as e}from"./button-Dy5001j6.js";import{u as t}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{l as r}from"./local-mode-BTovbt13.js";import{u as i}from"./routes-D9sNqB_o.js";import{t as a}from"./use-onboarding-login-DI5gvqEG.js";import{t as o}from"./onboarding-layout-DLs1hfp_.js";var s=n();function c(){let n=t(),{loading:c,error:l,login:u,cancel:d}=a();return(0,s.jsx)(o,{children:(0,s.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center px-6 pb-40 text-[var(--content-default)]`,children:(0,s.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:[(0,s.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Welcome to Vellum`}),(0,s.jsx)(`p`,{className:`mt-3 text-body-medium-lighter text-[var(--content-tertiary)]`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Your own personal intelligence is just a step away.`}),l&&(0,s.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:l}),(0,s.jsxs)(`div`,{className:`mt-10 flex w-full max-w-sm flex-col gap-3`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,s.jsx)(e,{variant:`primary`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:c?d:()=>void u(),children:c?`Cancel`:`Log In`}),(0,s.jsx)(e,{variant:`ghost`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:()=>{c&&d(),r()?n(i.selectAssistant):n(i.onboarding.hosting)},children:`Continue without account`})]})]})})})}export{c as WelcomeScreen};
1
+ import{t as e}from"./button-Dy5001j6.js";import{u as t}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{l as r}from"./local-mode-BKousn41.js";import{d as i}from"./routes-CsoiCk2y.js";import{t as a}from"./use-onboarding-login-DsCjVy0U.js";import{t as o}from"./onboarding-layout-CYU5QNQ5.js";var s=n();function c(){let n=t(),{loading:c,error:l,login:u,cancel:d}=a();return(0,s.jsx)(o,{children:(0,s.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center px-6 pb-40 text-[var(--content-default)]`,children:(0,s.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:[(0,s.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Welcome to Vellum`}),(0,s.jsx)(`p`,{className:`mt-3 text-body-medium-lighter text-[var(--content-tertiary)]`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Your own personal intelligence is just a step away.`}),l&&(0,s.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:l}),(0,s.jsxs)(`div`,{className:`mt-10 flex w-full max-w-sm flex-col gap-3`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,s.jsx)(e,{variant:`primary`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:c?d:()=>void u(),children:c?`Cancel`:`Log In`}),(0,s.jsx)(e,{variant:`ghost`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:()=>{c&&d(),r()?n(i.selectAssistant):n(i.onboarding.hosting)},children:`Continue without account`})]})]})})})}export{c as WelcomeScreen};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{t as r}from"./jsx-runtime-D3ZM-ToX.js";import{t as i}from"./typography-DEI9Ra9z.js";import{t as a}from"./arrow-down-to-line-Bh_5sIPp.js";import{t as o}from"./arrow-left-C2ylPLHq.js";import{n as s,r as c,t as l}from"./metric-card-05a5slPx.js";import{t as u}from"./ban-B__z3LwE.js";import{t as d}from"./chevron-right-HU6H84S0.js";import{t as f}from"./circle-check-CjGnAahM.js";import{t as p}from"./square-D_e8nR-F.js";import{t as m}from"./triangle-alert-CQfiAg_t.js";import{t as h}from"./users-iLvfYFOP.js";import{t as g}from"./workflow-cWWiPi3K.js";import{t as _}from"./x-JBAsSOmg.js";import"./src-te3YTBG-.js";import{n as v,r as y,t as b}from"./workflow-status-HyIIhMBP.js";import{t as x}from"./proxy-D7UPVac3.js";import{t as S}from"./AnimatePresence-DPfyu3ET.js";import{t as C}from"./use-reduced-motion-W1fCe3vS.js";import{t as w}from"./three-dot-indicator-BMvKQ_On.js";import{t as T}from"./avatar-renderer-ClUVcQmf.js";import{n as E}from"./use-bundled-avatar-components-Bbs4vCnX.js";import{t as D}from"./avatar-subagent-CRA2B82x.js";import{t as O}from"./status-badge-pill-wJPMXQk1.js";var k=e(t(),1),A=r();function j({onClick:e,ariaLabel:t}){return(0,A.jsxs)(`button`,{type:`button`,"aria-label":t,onClick:e,className:`flex h-8 shrink-0 cursor-pointer items-center gap-1.5 rounded-lg border border-[var(--system-negative-strong)] bg-transparent px-2.5 py-1.5 text-[var(--system-negative-strong)] transition-colors hover:bg-[var(--system-negative-weak)]`,children:[(0,A.jsx)(p,{className:`h-3 w-3`,fill:`currentColor`}),(0,A.jsx)(i,{variant:`label-small-default`,children:`Stop`})]})}function M({title:e,body:t,emptyText:n}){return(0,A.jsxs)(`div`,{className:`mb-5`,children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-2 text-[var(--content-emphasised)]`,children:e}),t?(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`whitespace-pre-wrap break-words leading-relaxed text-[var(--content-default)]`,children:t}):(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`text-[var(--content-tertiary)]`,children:n})]})}function N({leaf:e}){let t=e.status===`running`?`Running…`:`No result summary`;return(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-2 gap-3`,children:[(0,A.jsx)(l,{icon:(0,A.jsx)(a,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens??0,format:e=>s(Math.round(e)),label:`Input`}),(0,A.jsx)(l,{icon:(0,A.jsx)(c,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens??0,format:e=>s(Math.round(e)),label:`Output`})]}),(0,A.jsx)(M,{title:`Prompt`,body:e.promptSummary,emptyText:`No prompt summary`}),(0,A.jsx)(M,{title:`Result`,body:e.resultSummary,emptyText:t})]})}function P({status:e}){return(0,A.jsx)(O,{color:v(e),label:y(e)})}function F(e){switch(e){case`completed`:return`var(--system-positive-strong)`;case`failed`:return`var(--system-negative-strong)`;case`cancelled`:return`var(--content-secondary)`;default:return`var(--primary-base)`}}function I(e){switch(e){case`completed`:return`Completed`;case`failed`:return`Failed`;case`cancelled`:return`Cancelled`;default:return`Running`}}function L({status:e}){return(0,A.jsx)(O,{color:F(e),label:I(e)})}function R({status:e}){let t=C(),n=`h-3.5 w-3.5 shrink-0`,r;return r=e===`running`?(0,A.jsx)(w,{className:`shrink-0`,dotSize:4,gap:2}):e===`completed`?(0,A.jsx)(f,{className:n,style:{color:`var(--system-positive-strong)`}}):e===`failed`?(0,A.jsx)(m,{className:n,style:{color:`var(--system-negative-strong)`}}):(0,A.jsx)(u,{className:n,style:{color:`var(--content-secondary)`},role:`img`,"aria-label":`Cancelled`}),(0,A.jsx)(S,{mode:`wait`,initial:!1,children:(0,A.jsx)(x.span,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:t?{duration:0}:{duration:.15,ease:[.16,1,.3,1]},className:`flex shrink-0 items-center`,children:r},e)})}function z({runId:e,leaf:t,components:n,onSelect:r}){let a=t.label??`Subagent ${t.seq}`,o=t.promptSummary,s=D(`${e}:${t.seq}`);return(0,A.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Open ${a} details`,className:`flex w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] px-2 py-1.5 text-left transition-colors hover:bg-[var(--surface-overlay)]`,children:(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,A.jsx)(R,{status:t.status}),n?(0,A.jsx)(T,{components:n,bodyShapeId:s.bodyShape,eyeStyleId:s.eyeStyle,colorId:s.color,size:16}):(0,A.jsx)(`div`,{style:{width:16,height:16,flexShrink:0},"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-medium-default`,title:a,className:`max-w-[60%] shrink-0 truncate text-[var(--content-default)]`,children:a}),o&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:`shrink-0 text-[var(--content-tertiary)] opacity-10`,children:`|`}),(0,A.jsx)(i,{variant:`body-medium-lighter`,title:o,className:`min-w-0 truncate text-[var(--content-tertiary)]`,children:o})]})]})})}function B({entry:e,onClose:t,onStop:r,onRequestJournal:u}){let f=b(e.status),p=C(),m=e.label??e.runId,v=e.agentsSpawned||e.leaves.size,y=E(),S=[...e.leaves.values()].sort((e,t)=>e.seq-t.seq),[w,O]=(0,k.useState)(null),[M,F]=(0,k.useState)(e.runId);M!==e.runId&&(F(e.runId),O(null));let I=w==null?void 0:e.leaves.get(w),R=I?D(`${e.runId}:${I.seq}`):void 0,B=(0,k.useCallback)(()=>O(null),[]),V=I?I.label??`Subagent ${I.seq}`:``,H=I?V:m,U=f?`live`:`final`;return(0,k.useEffect)(()=>{u?.(e.runId)},[e.runId,U,u]),(0,A.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden rounded-xl bg-[var(--surface-lift)]`,children:[I&&(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--border-hover)] px-5 py-3`,children:[(0,A.jsx)(`button`,{type:`button`,onClick:B,title:m,className:`min-w-0 shrink cursor-pointer truncate text-left text-[var(--content-default)] hover:underline`,children:(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,children:m})}),(0,A.jsx)(d,{className:`h-2.5 w-2.5 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,title:V,className:`min-w-0 shrink truncate text-[var(--content-secondary)]`,children:V})]}),(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-hover)] px-5 py-4`,children:[I&&(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(o,{}),onClick:B,"aria-label":`Back to subagents`,tooltip:`Back`,className:`shrink-0 rounded-lg`}),I?y&&R?(0,A.jsx)(T,{components:y,bodyShapeId:R.bodyShape,eyeStyleId:R.eyeStyle,colorId:R.color,size:32}):(0,A.jsx)(`div`,{style:{width:32,height:32,flexShrink:0},"aria-hidden":!0}):(0,A.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-[6px] bg-[var(--surface-overlay)]`,children:(0,A.jsx)(g,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,A.jsx)(i,{variant:`title-medium`,title:H,className:`min-w-0 shrink truncate text-[var(--content-default)]`,children:H}),I?(0,A.jsx)(L,{status:I.status}):(0,A.jsx)(P,{status:e.status}),(0,A.jsx)(`span`,{className:`flex-1`}),f&&r&&(0,A.jsx)(j,{onClick:()=>r(e.runId),ariaLabel:`Stop workflow`}),(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(_,{}),onClick:t,"aria-label":`Close workflow detail`,tooltip:`Close`,className:`shrink-0 rounded-lg`})]}),(0,A.jsx)(`div`,{className:`flex-1 overflow-y-auto px-5 py-5`,children:(0,A.jsx)(x.div,{initial:{opacity:0},animate:{opacity:1},transition:p?{duration:0}:{duration:.18,ease:[.16,1,.3,1]},children:I?(0,A.jsx)(N,{leaf:I}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-3 gap-3`,children:[(0,A.jsx)(l,{icon:(0,A.jsx)(a,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens,format:e=>s(Math.round(e)),label:`Input`}),(0,A.jsx)(l,{icon:(0,A.jsx)(c,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens,format:e=>s(Math.round(e)),label:`Output`}),(0,A.jsx)(l,{icon:(0,A.jsx)(h,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:v,format:e=>s(Math.round(e)),label:`Agents`})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-4 text-[var(--content-emphasised)]`,children:`Subagents`}),S.length===0?(0,A.jsx)(i,{variant:`body-small-default`,className:`py-4 text-center text-[var(--content-tertiary)]`,children:`No subagents yet`}):(0,A.jsx)(`div`,{className:`flex flex-col gap-1`,children:S.map(t=>(0,A.jsx)(z,{runId:e.runId,leaf:t,components:y,onSelect:()=>O(t.seq)},t.seq))})]})]})},I?String(I.seq):`list`)})]})}export{B as WorkflowDetailPanel};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{t as r}from"./jsx-runtime-D3ZM-ToX.js";import{t as i}from"./typography-DEI9Ra9z.js";import{t as a}from"./arrow-down-to-line-Bh_5sIPp.js";import{t as o}from"./arrow-left-C2ylPLHq.js";import{n as s,r as c,t as l}from"./metric-card-j9s-2nkl.js";import{t as u}from"./ban-B__z3LwE.js";import{t as d}from"./chevron-right-HU6H84S0.js";import{t as f}from"./circle-check-CjGnAahM.js";import{t as p}from"./square-CRVB76KQ.js";import{t as m}from"./triangle-alert-Dq3v0coH.js";import{t as h}from"./users-C0mu7-R4.js";import{t as g}from"./workflow-CN4xwQpa.js";import{t as _}from"./x-BGag7vwj.js";import"./src-CnF7WXNj.js";import{n as v,r as y,t as b}from"./workflow-status-CgrMMiJT.js";import{t as x}from"./proxy-lxbolTGx.js";import{t as S}from"./AnimatePresence-xdH2KLtr.js";import{t as C}from"./use-reduced-motion-D0Rb5Fd_.js";import{t as w}from"./three-dot-indicator-B_GPAioB.js";import{t as T}from"./avatar-renderer-BrNjnimz.js";import{n as E}from"./use-bundled-avatar-components-B1ARUeam.js";import{t as D}from"./avatar-subagent-Bpy9-0YN.js";import{t as O}from"./status-badge-pill-CGODAHVT.js";var k=e(t(),1),A=r();function j({onClick:e,ariaLabel:t}){return(0,A.jsxs)(`button`,{type:`button`,"aria-label":t,onClick:e,className:`flex h-8 shrink-0 cursor-pointer items-center gap-1.5 rounded-lg border border-[var(--system-negative-strong)] bg-transparent px-2.5 py-1.5 text-[var(--system-negative-strong)] transition-colors hover:bg-[var(--system-negative-weak)]`,children:[(0,A.jsx)(p,{className:`h-3 w-3`,fill:`currentColor`}),(0,A.jsx)(i,{variant:`label-small-default`,children:`Stop`})]})}function M({title:e,body:t,emptyText:n}){return(0,A.jsxs)(`div`,{className:`mb-5`,children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-2 text-[var(--content-emphasised)]`,children:e}),t?(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`whitespace-pre-wrap break-words leading-relaxed text-[var(--content-default)]`,children:t}):(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`text-[var(--content-tertiary)]`,children:n})]})}function N({leaf:e}){let t=e.status===`running`?`Running…`:`No result summary`;return(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-2 gap-3`,children:[(0,A.jsx)(l,{icon:(0,A.jsx)(a,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens??0,format:e=>s(Math.round(e)),label:`Input`}),(0,A.jsx)(l,{icon:(0,A.jsx)(c,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens??0,format:e=>s(Math.round(e)),label:`Output`})]}),(0,A.jsx)(M,{title:`Prompt`,body:e.promptSummary,emptyText:`No prompt summary`}),(0,A.jsx)(M,{title:`Result`,body:e.resultSummary,emptyText:t})]})}function P({status:e}){return(0,A.jsx)(O,{color:v(e),label:y(e)})}function F(e){switch(e){case`completed`:return`var(--system-positive-strong)`;case`failed`:return`var(--system-negative-strong)`;case`cancelled`:return`var(--content-secondary)`;default:return`var(--primary-base)`}}function I(e){switch(e){case`completed`:return`Completed`;case`failed`:return`Failed`;case`cancelled`:return`Cancelled`;default:return`Running`}}function L({status:e}){return(0,A.jsx)(O,{color:F(e),label:I(e)})}function R({status:e}){let t=C(),n=`h-3.5 w-3.5 shrink-0`,r;return r=e===`running`?(0,A.jsx)(w,{className:`shrink-0`,dotSize:4,gap:2}):e===`completed`?(0,A.jsx)(f,{className:n,style:{color:`var(--system-positive-strong)`}}):e===`failed`?(0,A.jsx)(m,{className:n,style:{color:`var(--system-negative-strong)`}}):(0,A.jsx)(u,{className:n,style:{color:`var(--content-secondary)`},role:`img`,"aria-label":`Cancelled`}),(0,A.jsx)(S,{mode:`wait`,initial:!1,children:(0,A.jsx)(x.span,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:t?{duration:0}:{duration:.15,ease:[.16,1,.3,1]},className:`flex shrink-0 items-center`,children:r},e)})}function z({runId:e,leaf:t,components:n,onSelect:r}){let a=t.label??`Subagent ${t.seq}`,o=t.promptSummary,s=D(`${e}:${t.seq}`);return(0,A.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Open ${a} details`,className:`flex w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] px-2 py-1.5 text-left transition-colors hover:bg-[var(--surface-overlay)]`,children:(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,A.jsx)(R,{status:t.status}),n?(0,A.jsx)(T,{components:n,bodyShapeId:s.bodyShape,eyeStyleId:s.eyeStyle,colorId:s.color,size:16}):(0,A.jsx)(`div`,{style:{width:16,height:16,flexShrink:0},"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-medium-default`,title:a,className:`max-w-[60%] shrink-0 truncate text-[var(--content-default)]`,children:a}),o&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:`shrink-0 text-[var(--content-tertiary)] opacity-10`,children:`|`}),(0,A.jsx)(i,{variant:`body-medium-lighter`,title:o,className:`min-w-0 truncate text-[var(--content-tertiary)]`,children:o})]})]})})}function B({entry:e,onClose:t,onStop:r,onRequestJournal:u}){let f=b(e.status),p=C(),m=e.label??e.runId,v=e.agentsSpawned||e.leaves.size,y=E(),S=[...e.leaves.values()].sort((e,t)=>e.seq-t.seq),[w,O]=(0,k.useState)(null),[M,F]=(0,k.useState)(e.runId);M!==e.runId&&(F(e.runId),O(null));let I=w==null?void 0:e.leaves.get(w),R=I?D(`${e.runId}:${I.seq}`):void 0,B=(0,k.useCallback)(()=>O(null),[]),V=I?I.label??`Subagent ${I.seq}`:``,H=I?V:m,U=f?`live`:`final`;return(0,k.useEffect)(()=>{u?.(e.runId)},[e.runId,U,u]),(0,A.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden rounded-xl bg-[var(--surface-lift)]`,children:[I&&(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--border-hover)] px-5 py-3`,children:[(0,A.jsx)(`button`,{type:`button`,onClick:B,title:m,className:`min-w-0 shrink cursor-pointer truncate text-left text-[var(--content-default)] hover:underline`,children:(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,children:m})}),(0,A.jsx)(d,{className:`h-2.5 w-2.5 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,title:V,className:`min-w-0 shrink truncate text-[var(--content-secondary)]`,children:V})]}),(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-hover)] px-5 py-4`,children:[I&&(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(o,{}),onClick:B,"aria-label":`Back to subagents`,tooltip:`Back`,className:`shrink-0 rounded-lg`}),I?y&&R?(0,A.jsx)(T,{components:y,bodyShapeId:R.bodyShape,eyeStyleId:R.eyeStyle,colorId:R.color,size:32}):(0,A.jsx)(`div`,{style:{width:32,height:32,flexShrink:0},"aria-hidden":!0}):(0,A.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-[6px] bg-[var(--surface-overlay)]`,children:(0,A.jsx)(g,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,A.jsx)(i,{variant:`title-medium`,title:H,className:`min-w-0 shrink truncate text-[var(--content-default)]`,children:H}),I?(0,A.jsx)(L,{status:I.status}):(0,A.jsx)(P,{status:e.status}),(0,A.jsx)(`span`,{className:`flex-1`}),f&&r&&(0,A.jsx)(j,{onClick:()=>r(e.runId),ariaLabel:`Stop workflow`}),(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(_,{}),onClick:t,"aria-label":`Close workflow detail`,tooltip:`Close`,className:`shrink-0 rounded-lg`})]}),(0,A.jsx)(`div`,{className:`flex-1 overflow-y-auto px-5 py-5`,children:(0,A.jsx)(x.div,{initial:{opacity:0},animate:{opacity:1},transition:p?{duration:0}:{duration:.18,ease:[.16,1,.3,1]},children:I?(0,A.jsx)(N,{leaf:I}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-3 gap-3`,children:[(0,A.jsx)(l,{icon:(0,A.jsx)(a,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens,format:e=>s(Math.round(e)),label:`Input`}),(0,A.jsx)(l,{icon:(0,A.jsx)(c,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens,format:e=>s(Math.round(e)),label:`Output`}),(0,A.jsx)(l,{icon:(0,A.jsx)(h,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:v,format:e=>s(Math.round(e)),label:`Agents`})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-4 text-[var(--content-emphasised)]`,children:`Subagents`}),S.length===0?(0,A.jsx)(i,{variant:`body-small-default`,className:`py-4 text-center text-[var(--content-tertiary)]`,children:`No subagents yet`}):(0,A.jsx)(`div`,{className:`flex flex-col gap-1`,children:S.map(t=>(0,A.jsx)(z,{runId:e.runId,leaf:t,components:y,onSelect:()=>O(t.seq)},t.seq))})]})]})},I?String(I.seq):`list`)})]})}export{B as WorkflowDetailPanel};
@@ -1 +1 @@
1
- import{t as e}from"./capture-error-Bj8_eutd.js";import{n as t,t as n}from"./create-selectors-Qo7kcikX.js";import{p as r}from"./api-C3QSs67k.js";import{n as i}from"./resolved-assistants-store-Dw5UuGyB.js";import{Fr as a,Nr as o,Pr as s}from"./sdk.gen-BHZ0fJla.js";import{t as c}from"./by-tool-use-id-index-M50wYE1f.js";import{t as l}from"./workflow-status-HyIIhMBP.js";async function u(t,n){try{let{data:i,response:o}=await a({path:{assistant_id:t,id:n},throwOnError:!1});if(!o||!o.ok||!i)return null;let s=r.safeParse(i);return s.success?s.data:(e(s.error,{context:`fetchWorkflowJournal`}),null)}catch(t){return e(t,{context:`fetchWorkflowJournal`}),null}}async function d(t,n){try{let{data:e,response:r}=await s({path:{assistant_id:t,id:n},throwOnError:!1});return r?.ok&&e?e:r?.status===404?`not_found`:null}catch(t){return e(t,{context:`fetchWorkflowRun`}),null}}var f={byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:0};function p(e,t){return{runId:e,status:`running`,agentsSpawned:0,inputTokens:0,outputTokens:0,startedAt:t,leaves:new Map}}function m(e){let t=e;for(let[n,r]of e)r.status===`running`&&(t===e&&(t=new Map(e)),t.set(n,{...r,status:`cancelled`}));return t}function h(e,t){return`${t}:${l(e)?`live`:`final`}`}function g(e){return e===`failed`?`failed`:e===`running`?`running`:`completed`}function _(e){return e===`interrupted`?`running`:e}var v=n(t()((e,t)=>({...f,startRun:n=>{let{byId:r,orderedIds:i,byToolUseId:a}=t(),o=r[n.runId];if(o){let t=o.label??n.label,i=o.toolUseId??n.toolUseId,s=t!==o.label,l=i!==o.toolUseId;if(!s&&!l)return;let u={...o,label:t,toolUseId:i},d=l?c(a,n.toolUseId,n.runId):a;e({byId:{...r,[n.runId]:u},byToolUseId:d});return}let s={...p(n.runId,n.timestamp),label:n.label,toolUseId:n.toolUseId},l=c(a,n.toolUseId,n.runId);e({byId:{...r,[n.runId]:s},orderedIds:[...i,n.runId],byToolUseId:l})},applyProgress:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s={...o,status:_(o.status),phase:n.phase??o.phase,message:n.message??o.message,agentsSpawned:n.agentsSpawned??o.agentsSpawned,label:o.label??n.label};e({byId:{...r,[n.runId]:s},orderedIds:a?i:[...i,n.runId]})},leafStarted:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=_(o.status),c=o.leaves.get(n.seq);if(c&&c.status!==`running`){s!==o.status&&e({byId:{...r,[n.runId]:{...o,status:s}}});return}let l={seq:n.seq,status:`running`,label:n.label??c?.label,promptSummary:n.promptSummary??c?.promptSummary},u=new Map(o.leaves).set(n.seq,l),d=Math.max(o.agentsSpawned,u.size);e({byId:{...r,[n.runId]:{...o,status:s,agentsSpawned:d,leaves:u}},orderedIds:a?i:[...i,n.runId]})},leafFinished:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=o.leaves.get(n.seq),c={seq:n.seq,status:n.status,label:n.label??s?.label,promptSummary:s?.promptSummary,inputTokens:n.inputTokens??s?.inputTokens,outputTokens:n.outputTokens??s?.outputTokens,resultSummary:n.resultSummary??s?.resultSummary};if(s&&s.status===c.status&&s.label===c.label&&s.inputTokens===c.inputTokens&&s.outputTokens===c.outputTokens&&s.resultSummary===c.resultSummary)return;let l=new Map(o.leaves).set(n.seq,c),u=0,d=0;for(let e of l.values())u+=e.inputTokens??0,d+=e.outputTokens??0;e({byId:{...r,[n.runId]:{...o,inputTokens:Math.max(o.inputTokens,u),outputTokens:Math.max(o.outputTokens,d),leaves:l}},orderedIds:a?i:[...i,n.runId]})},completeRun:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=l(n.status)?o.leaves:m(o.leaves),c={...o,status:n.status,agentsSpawned:n.agentsSpawned,inputTokens:n.inputTokens,outputTokens:n.outputTokens,summary:n.summary??o.summary,leaves:s};e({byId:{...r,[n.runId]:c},orderedIds:a?i:[...i,n.runId]})},backfillFromJournal:(n,r)=>{let{byId:i,orderedIds:a}=t(),o=i[n],s=o??p(n,Date.now()),c=!1,u=s.leaves;for(let e of r.leaves){let t=s.leaves.get(e.seq),n=g(e.status);if(!t){c||=(u=new Map(s.leaves),!0),u.set(e.seq,{seq:e.seq,status:n,label:e.label,promptSummary:e.promptSummary,resultSummary:e.resultSummary,inputTokens:e.inputTokens,outputTokens:e.outputTokens});continue}(t.status===`running`||t.status===`cancelled`)&&n!==`running`&&(c||=(u=new Map(s.leaves),!0),u.set(e.seq,{...t,status:n,label:t.label??e.label,promptSummary:t.promptSummary??e.promptSummary,resultSummary:t.resultSummary??e.resultSummary,inputTokens:t.inputTokens??e.inputTokens,outputTokens:t.outputTokens??e.outputTokens}))}let d=l(s.status)?r.status??s.status:s.status,f=l(s.status)&&!l(d)?m(u):u,h={...s,status:d,agentsSpawned:Math.max(s.agentsSpawned,r.agentsSpawned??s.agentsSpawned),inputTokens:Math.max(s.inputTokens,r.inputTokens??s.inputTokens),outputTokens:Math.max(s.outputTokens,r.outputTokens??s.outputTokens),phase:r.phase??s.phase,leaves:f};e({byId:{...i,[n]:h},orderedIds:o?a:[...a,n]})},fetchJournalIfNeeded:async(n,r)=>{let{byId:i,fetchedAt:a}=t(),o=i[r];if(!o)return;let s=h(o.status,r),c=a.get(s);if(c!==void 0&&c>=o.startedAt)return;let l=new Map(a);l.set(s,o.startedAt),e({fetchedAt:l});let d=t().generation,f=await u(n,r);if(!f){let n=new Map(t().fetchedAt);n.delete(s),e({fetchedAt:n});return}t().generation===d&&t().backfillFromJournal(r,f)},hydrateRunIfNeeded:async(n,r)=>{let{byId:i,hydratedRunIds:a}=t();if(i[r]||a.has(r))return;e({hydratedRunIds:new Set(a).add(r)});let o=t().generation,s=await d(n,r);if(t().generation===o){if(s===`not_found`){e({notFoundRunIds:new Set(t().notFoundRunIds).add(r)});return}if(s===null){let n=new Set(t().hydratedRunIds);n.delete(r),e({hydratedRunIds:n,hydrationFailedRunIds:new Set(t().hydrationFailedRunIds).add(r)});return}t().startRun({runId:r,label:s.name??void 0,timestamp:Date.now()}),l(s.status)?t().applyProgress({runId:r,agentsSpawned:s.agentsSpawned}):t().completeRun({runId:r,status:s.status,agentsSpawned:s.agentsSpawned,inputTokens:s.inputTokens,outputTokens:s.outputTokens}),await t().fetchJournalIfNeeded(n,r)}},abortRun:async e=>{let t=i.getState().activeAssistantId;if(t)try{await o({path:{assistant_id:t,id:e},throwOnError:!0})}catch{}},reset:()=>e({byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:t().generation+1})})));export{v as t};
1
+ import{t as e}from"./capture-error-Dj49ma74.js";import{n as t,t as n}from"./create-selectors-B41BzcFF.js";import{p as r}from"./api-BpGogBsg.js";import{n as i}from"./resolved-assistants-store-FEmi1gGu.js";import{Fr as a,Nr as o,Pr as s}from"./sdk.gen-DeyOX3Kb.js";import{t as c}from"./by-tool-use-id-index-DcsiqOhc.js";import{t as l}from"./workflow-status-CgrMMiJT.js";async function u(t,n){try{let{data:i,response:o}=await a({path:{assistant_id:t,id:n},throwOnError:!1});if(!o||!o.ok||!i)return null;let s=r.safeParse(i);return s.success?s.data:(e(s.error,{context:`fetchWorkflowJournal`}),null)}catch(t){return e(t,{context:`fetchWorkflowJournal`}),null}}async function d(t,n){try{let{data:e,response:r}=await s({path:{assistant_id:t,id:n},throwOnError:!1});return r?.ok&&e?e:r?.status===404?`not_found`:null}catch(t){return e(t,{context:`fetchWorkflowRun`}),null}}var f={byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:0};function p(e,t){return{runId:e,status:`running`,agentsSpawned:0,inputTokens:0,outputTokens:0,startedAt:t,leaves:new Map}}function m(e){let t=e;for(let[n,r]of e)r.status===`running`&&(t===e&&(t=new Map(e)),t.set(n,{...r,status:`cancelled`}));return t}function h(e,t){return`${t}:${l(e)?`live`:`final`}`}function g(e){return e===`failed`?`failed`:e===`running`?`running`:`completed`}function _(e){return e===`interrupted`?`running`:e}var v=n(t()((e,t)=>({...f,startRun:n=>{let{byId:r,orderedIds:i,byToolUseId:a}=t(),o=r[n.runId];if(o){let t=o.label??n.label,i=o.toolUseId??n.toolUseId,s=t!==o.label,l=i!==o.toolUseId;if(!s&&!l)return;let u={...o,label:t,toolUseId:i},d=l?c(a,n.toolUseId,n.runId):a;e({byId:{...r,[n.runId]:u},byToolUseId:d});return}let s={...p(n.runId,n.timestamp),label:n.label,toolUseId:n.toolUseId},l=c(a,n.toolUseId,n.runId);e({byId:{...r,[n.runId]:s},orderedIds:[...i,n.runId],byToolUseId:l})},applyProgress:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s={...o,status:_(o.status),phase:n.phase??o.phase,message:n.message??o.message,agentsSpawned:n.agentsSpawned??o.agentsSpawned,label:o.label??n.label};e({byId:{...r,[n.runId]:s},orderedIds:a?i:[...i,n.runId]})},leafStarted:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=_(o.status),c=o.leaves.get(n.seq);if(c&&c.status!==`running`){s!==o.status&&e({byId:{...r,[n.runId]:{...o,status:s}}});return}let l={seq:n.seq,status:`running`,label:n.label??c?.label,promptSummary:n.promptSummary??c?.promptSummary},u=new Map(o.leaves).set(n.seq,l),d=Math.max(o.agentsSpawned,u.size);e({byId:{...r,[n.runId]:{...o,status:s,agentsSpawned:d,leaves:u}},orderedIds:a?i:[...i,n.runId]})},leafFinished:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=o.leaves.get(n.seq),c={seq:n.seq,status:n.status,label:n.label??s?.label,promptSummary:s?.promptSummary,inputTokens:n.inputTokens??s?.inputTokens,outputTokens:n.outputTokens??s?.outputTokens,resultSummary:n.resultSummary??s?.resultSummary};if(s&&s.status===c.status&&s.label===c.label&&s.inputTokens===c.inputTokens&&s.outputTokens===c.outputTokens&&s.resultSummary===c.resultSummary)return;let l=new Map(o.leaves).set(n.seq,c),u=0,d=0;for(let e of l.values())u+=e.inputTokens??0,d+=e.outputTokens??0;e({byId:{...r,[n.runId]:{...o,inputTokens:Math.max(o.inputTokens,u),outputTokens:Math.max(o.outputTokens,d),leaves:l}},orderedIds:a?i:[...i,n.runId]})},completeRun:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=l(n.status)?o.leaves:m(o.leaves),c={...o,status:n.status,agentsSpawned:n.agentsSpawned,inputTokens:n.inputTokens,outputTokens:n.outputTokens,summary:n.summary??o.summary,leaves:s};e({byId:{...r,[n.runId]:c},orderedIds:a?i:[...i,n.runId]})},backfillFromJournal:(n,r)=>{let{byId:i,orderedIds:a}=t(),o=i[n],s=o??p(n,Date.now()),c=!1,u=s.leaves;for(let e of r.leaves){let t=s.leaves.get(e.seq),n=g(e.status);if(!t){c||=(u=new Map(s.leaves),!0),u.set(e.seq,{seq:e.seq,status:n,label:e.label,promptSummary:e.promptSummary,resultSummary:e.resultSummary,inputTokens:e.inputTokens,outputTokens:e.outputTokens});continue}(t.status===`running`||t.status===`cancelled`)&&n!==`running`&&(c||=(u=new Map(s.leaves),!0),u.set(e.seq,{...t,status:n,label:t.label??e.label,promptSummary:t.promptSummary??e.promptSummary,resultSummary:t.resultSummary??e.resultSummary,inputTokens:t.inputTokens??e.inputTokens,outputTokens:t.outputTokens??e.outputTokens}))}let d=l(s.status)?r.status??s.status:s.status,f=l(s.status)&&!l(d)?m(u):u,h={...s,status:d,agentsSpawned:Math.max(s.agentsSpawned,r.agentsSpawned??s.agentsSpawned),inputTokens:Math.max(s.inputTokens,r.inputTokens??s.inputTokens),outputTokens:Math.max(s.outputTokens,r.outputTokens??s.outputTokens),phase:r.phase??s.phase,leaves:f};e({byId:{...i,[n]:h},orderedIds:o?a:[...a,n]})},fetchJournalIfNeeded:async(n,r)=>{let{byId:i,fetchedAt:a}=t(),o=i[r];if(!o)return;let s=h(o.status,r),c=a.get(s);if(c!==void 0&&c>=o.startedAt)return;let l=new Map(a);l.set(s,o.startedAt),e({fetchedAt:l});let d=t().generation,f=await u(n,r);if(!f){let n=new Map(t().fetchedAt);n.delete(s),e({fetchedAt:n});return}t().generation===d&&t().backfillFromJournal(r,f)},hydrateRunIfNeeded:async(n,r)=>{let{byId:i,hydratedRunIds:a}=t();if(i[r]||a.has(r))return;e({hydratedRunIds:new Set(a).add(r)});let o=t().generation,s=await d(n,r);if(t().generation===o){if(s===`not_found`){e({notFoundRunIds:new Set(t().notFoundRunIds).add(r)});return}if(s===null){let n=new Set(t().hydratedRunIds);n.delete(r),e({hydratedRunIds:n,hydrationFailedRunIds:new Set(t().hydrationFailedRunIds).add(r)});return}t().startRun({runId:r,label:s.name??void 0,timestamp:Date.now()}),l(s.status)?t().applyProgress({runId:r,agentsSpawned:s.agentsSpawned}):t().completeRun({runId:r,status:s.status,agentsSpawned:s.agentsSpawned,inputTokens:s.inputTokens,outputTokens:s.outputTokens}),await t().fetchJournalIfNeeded(n,r)}},abortRun:async e=>{let t=i.getState().activeAssistantId;if(t)try{await o({path:{assistant_id:t,id:e},throwOnError:!0})}catch{}},reset:()=>e({byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:t().generation+1})})));export{v as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{m as r}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./useMutation-CXGTrp4W.js";import{t as s}from"./jsx-runtime-D3ZM-ToX.js";import{t as c}from"./queryOptions-CMSBCFOf.js";import{t as l}from"./createLucideIcon-CAM1RhH8.js";import{t as u}from"./chevron-down-B5A-0g8A.js";import{t as d}from"./chevron-right-HU6H84S0.js";import{t as f}from"./menu-BvjhxZo7.js";import{t as p}from"./download-CywcQLB2.js";import{t as m}from"./eye-off-Jdx8qkOK.js";import{t as h}from"./eye-BMVGQXHT.js";import{t as g}from"./file-plus-C3SBA8ll.js";import{t as _}from"./file-text-Br730Q4B.js";import{n as v,r as y,t as b}from"./workspace-tree-query-B1A-efgV.js";import{t as x}from"./folder-open-Nlg0OphT.js";import{t as S}from"./folder-DF8nFp7N.js";import{n as C,t as w}from"./video-BcgduiJ6.js";import{t as T}from"./loader-circle-XREx3i4W.js";import{t as E}from"./pencil-D38YNe2r.js";import{t as D}from"./plus-jH3kAliM.js";import{t as O}from"./search-BVW-n8to.js";import{t as k}from"./trash-2-L5LNgw9o.js";import{t as A}from"./x-JBAsSOmg.js";import{k as j}from"./src-te3YTBG-.js";import{t as M}from"./input-hw3el2GJ.js";import{t as N}from"./modal-BR4CUFBd.js";import{n as P,t as F}from"./panel-item-CrtoJCrd.js";import{t as ee}from"./confirm-dialog-UYFm4osC.js";import{n as I,t as L}from"./file-markdown-DaflJFk7.js";import{Br as te,Hr as R,Ir as ne,Lr as z,Rr as B,Ur as re,zr as ie}from"./sdk.gen-BHZ0fJla.js";import{n as V}from"./use-is-mobile-BlQuzI5Z.js";import{n as H}from"./native-file-ySSv1sQ7.js";import{t as U}from"./use-active-assistant-id-CldxA_-M.js";import{n as W,t as ae}from"./mobile-sidebar-drawer-DtKU2vlu.js";import{i as G,n as oe,r as K,t as q}from"./file-editor-phorJEVv.js";import{t as J}from"./format-file-size-BgMTiWPt.js";var se=l(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ce=l(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),Y=l(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),X=e(t(),1);async function le(e){let{data:t,error:n}=await z({path:{assistant_id:e.assistantId},query:{path:e.path,...e.showHidden?{showHidden:`true`}:{}},parseAs:`blob`,throwOnError:!1});if(n||!(t instanceof Blob))throw Error(`Failed to download file`);await H(t,e.filename)}function ue(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function de(e,t){return ue(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function fe(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function pe(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Z=s();function me(e){let{assistantId:t,path:n,name:r,showHidden:i}=e,[a,o]=(0,X.useState)(!1),[s,c]=(0,X.useState)(!1);return{isDownloading:a,error:s,download:(0,X.useCallback)(async()=>{c(!1),o(!0);try{await le({assistantId:t,path:n,filename:r,showHidden:i})}catch{c(!0)}finally{o(!1)}},[t,n,r,i])}}function he({assistantId:e,path:t,name:r,showHidden:i}){let{isDownloading:a,error:o,download:s}=me({assistantId:e,path:t,name:r,showHidden:i});return(0,Z.jsx)(n,{variant:`ghost`,size:`regular`,iconOnly:a?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(p,{"aria-hidden":!0}),onClick:()=>void s(),disabled:a,"aria-label":`Download ${r}`,tooltip:o?`Download failed. Try again.`:`Download`})}function ge(e){return c({queryFn:async()=>{let{data:t,error:n}=await B({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function _e({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=_;return n.startsWith(`image/`)?r=C:n.startsWith(`video/`)?r=w:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=y),(0,Z.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,Z.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function ve({viewMode:e,onChange:t}){return(0,Z.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,Z.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(_e,{mimeType:t}),(0,Z.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:J(n)})]}),r]})}function ye({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await z({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,X.useState)(null);return(0,X.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function be({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let{isDownloading:c,error:l,download:u}=me({assistantId:e,path:t,name:r,showHidden:s});return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:r,mimeType:i,size:a}),(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Z.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,Z.jsx)(y,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Z.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,Z.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:J(a,`Unknown size`)}),o&&(0,Z.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(o).toLocaleString()]})]}),(0,Z.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:c?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(p,{"aria-hidden":!0}),onClick:u,disabled:c,"aria-label":`Download ${r}`,className:`mt-4`,children:c?`Downloading…`:`Download`}),l&&(0,Z.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:`Download failed. Try again.`})]})})]})}function xe({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...ge({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,g]=(0,X.useState)(null),[_,v]=(0,X.useState)(null);(0,X.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;g(e=>e==null?e:n(e)),v(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,X.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);g(e=>e!=null&&t(e)?null:e),v(e=>e!=null&&t(e.path)?null:e)},[d]);let y=h!=null&&h===t,b=p?.content??``,S=_?.path===t?_.content:b,C=()=>{g(null),v(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await re({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{g(e=>e===t.path?null:e),v(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),E=S!==b,D=(0,X.useCallback)(()=>{t&&E&&!w.isPending&&w.mutate({path:t,content:S})},[t,E,w,S]);if(!t)return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,Z.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Z.jsx)(x,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let O=p.mimeType??`application/octet-stream`,k=p.name??t.split(`/`).pop()??t,A=I(k,O),j=de(k,O),M=p.content!=null&&!A&&!j,N=t?pe(t):!0,P=y&&(0,Z.jsx)(oe,{isDirty:E,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:D,onDiscard:C});if(A&&p.content!=null){let e=y?S:p.content;return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(ve,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,Z.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Z.jsx)(L,{content:e})}):y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}if(j&&p.content!=null){let e=y?S:p.content,n=fe(e);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(ve,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:s===`preview`?n:e,downloadContent:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,Z.jsx)(G,{content:n,readOnly:!0,whiteSpace:`pre`}):y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}return M?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:y?S:p.content??``,fileName:k,mimeType:O,showEdit:!N,isEditing:y,onToggleEdit:()=>y?C():g(t)}),y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content??``,readOnly:N,onStartEdit:()=>g(t)})]}),P]}):O.startsWith(`image/`)||O.startsWith(`video/`)?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size,rightContent:(0,Z.jsx)(he,{assistantId:e,path:t,name:k,showHidden:r})}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Z.jsx)(ye,{assistantId:e,path:t,mimeType:O,showHidden:r})})]}):(0,Z.jsx)(be,{assistantId:e,path:t,name:k,mimeType:O,size:p.size,modifiedAt:p.modifiedAt,showHidden:r})}function Se(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}async function Ce(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await R({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function we({entry:e}){return e.type===`directory`?(0,Z.jsx)(S,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Z.jsx)(C,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Z.jsx)(w,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(_,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function Te({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h}){let _=e.path??``,y=e.name??``,b=e.type===`directory`,x=n.has(_),S=r===_,C=y.startsWith(`.`),w=!pe(_),T=b&&(x||s.length>0),{data:D}=a({...v({assistantId:t,path:_,showHidden:i,includeDirSizes:o===`size`}),enabled:b&&T}),O=(0,X.useMemo)(()=>Se(D?.entries??[],o),[D?.entries,o]),A=s===``||y.toLowerCase().includes(s);if(s!==``&&!b&&!A)return null;let M=(0,Z.jsxs)(`button`,{onClick:()=>{b?c(_):l(_)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${h*14+8}px`,paddingRight:`8px`,color:S?`var(--content-default)`:C?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:S?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:C&&!S?.7:1},children:[b?T?(0,Z.jsx)(u,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(d,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Z.jsx)(we,{entry:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:y}),e.size!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:J(e.size)})]});return(0,Z.jsxs)(`div`,{children:[w?(0,Z.jsxs)(j.Root,{children:[(0,Z.jsx)(j.Trigger,{children:M}),(0,Z.jsxs)(j.Content,{children:[b&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(g,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`file`,parentPath:_}),children:`New File`}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`folder`,parentPath:_}),children:`New Folder`}),(0,Z.jsx)(j.Separator,{})]}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(k,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:_,name:y,isDirectory:b}),children:`Delete`}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(E,{className:`h-3.5 w-3.5`}),onSelect:()=>p({path:_,name:y,isDirectory:b}),children:`Rename`})]})]}):M,b&&T&&O.length>0&&(0,Z.jsx)(`div`,{children:O.map(e=>(0,Z.jsx)(Te,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h+1},e.path))})]})}function Ee({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,X.useRef)(null),[d,f]=(0,X.useState)(a??``),p=d.trim(),m=p.length>0&&(/[/\\]/.test(p)||p===`.`||p===`..`),h=p.length>0&&!m&&!c;return(0,Z.jsx)(N.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Z.jsx)(N.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),h&&s(p)},children:[(0,Z.jsx)(N.Header,{children:(0,Z.jsx)(N.Title,{children:e})}),(0,Z.jsx)(N.Body,{children:(0,Z.jsx)(M,{ref:u,label:`Name`,value:d,onChange:e=>f(e.target.value),placeholder:t,errorText:l??(m?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Z.jsxs)(N.Footer,{children:[(0,Z.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,disabled:!h,children:c?i:r})]})]})})})}function $({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:g,onPathRenamed:_}){let y=i(),[x,S]=(0,X.useState)(``),C=x.trim().toLowerCase(),[w,T]=(0,X.useState)(!1),[E,D]=(0,X.useState)(null),[k,j]=(0,X.useState)(null),N=(0,X.useCallback)(()=>{D(null),j(null)},[]),{data:P,isLoading:F}=a(v({assistantId:e,showHidden:s,includeDirSizes:c===`size`})),I=(0,X.useMemo)(()=>Se(P?.entries??[],c),[P?.entries,c]),L=(0,X.useCallback)(()=>{for(let e of[b,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])y.invalidateQueries({queryKey:[e]})},[y]),R=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await Ce(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await re({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await ie({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{N(),L(),e.parentPath&&u(e.parentPath),e.kind===`file`?d(e.path):u(e.path)},onError:e=>{j(e instanceof Error?e.message:`Failed to create.`)}}),z=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await Ce(e,r,t.newName,i);let{error:o,response:s}=await te({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{N(),L(),_(e,t)},onError:e=>{j(e instanceof Error?e.message:`Failed to rename.`)}}),B=(0,X.useCallback)(e=>{j(null),D({type:`create`,...e})},[]),V=(0,X.useCallback)(e=>{j(null),D({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,X.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await ne({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{U(null),L(),g(e.path)}}),ae=(0,X.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Z.jsx)(ce,{"aria-hidden":!0}):(0,Z.jsx)(se,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Z.jsx)(h,{"aria-hidden":!0}):(0,Z.jsx)(m,{"aria-hidden":!0}),onClick:f,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(De,{open:w,onOpenChange:T,onSelectKind:e=>{T(!1),B({kind:e,parentPath:``})}})]})]}),(0,Z.jsx)(`div`,{className:`px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(M,{type:`text`,value:x,onChange:e=>S(e.target.value),placeholder:`Search files`,leftIcon:(0,Z.jsx)(O,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),x&&(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(A,{"aria-hidden":!0}),onClick:()=>S(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:F?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):I.length?I.map(n=>(0,Z.jsx)(Te,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:C,onToggleExpand:l,onSelectPath:d,onRequestDelete:ae,onRequestRename:V,onRequestCreate:B,depth:0},n.path)):(0,Z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),E?.type===`create`&&(0,Z.jsx)(Ee,{title:E.kind===`file`?`New File`:`New Folder`,placeholder:E.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:N,onConfirm:e=>{j(null),R.mutate({kind:E.kind,parentPath:E.parentPath,name:e})},pending:R.isPending,error:k},`create-${E.kind}-${E.parentPath}`),E?.type===`rename`&&(0,Z.jsx)(Ee,{title:`Rename`,placeholder:E.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:E.name,onCancel:N,onConfirm:e=>{if(e===E.name){N();return}j(null),z.mutate({oldPath:E.path,newName:e})},pending:z.isPending,error:k},`rename-${E.path}`),(0,Z.jsx)(ee,{open:H!==null,title:H?.isDirectory?`Delete Folder`:`Delete File`,message:(0,Z.jsxs)(Z.Fragment,{children:[`Are you sure you want to delete`,` `,(0,Z.jsx)(`span`,{style:{color:`var(--content-default)`},children:H?.name}),H?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,W.error&&(0,Z.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function De({open:e,onOpenChange:t,onSelectKind:r}){return V()?(0,Z.jsxs)(P.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(P.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(D,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(P.Content,{children:[(0,Z.jsx)(P.Header,{className:`sr-only`,children:(0,Z.jsx)(P.Title,{children:`Create new`})}),(0,Z.jsxs)(P.Body,{className:`pt-0`,children:[(0,Z.jsx)(F,{icon:g,label:`New File`,onSelect:()=>r(`file`)}),(0,Z.jsx)(F,{icon:Y,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,Z.jsxs)(f.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(f.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(D,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(f.Content,{align:`end`,sideOffset:4,children:[(0,Z.jsx)(f.Item,{leftIcon:(0,Z.jsx)(g,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,Z.jsx)(f.Item,{leftIcon:(0,Z.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function Oe(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function ke({assistantId:e}){let[t,n]=r(),[i,a]=(0,X.useState)(()=>{let e=t.get(`file`);return e?Oe(e):new Set}),[o,s]=(0,X.useState)(()=>t.get(`file`)),[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,X.useState)(`preview`);(0,X.useEffect)(()=>{let e=t.get(`file`);e&&(s(e),a(t=>{let n=new Set(t);for(let t of Oe(e))n.add(t);return n.size===t.size?t:n}),n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0}))},[t,n]);let m=(0,X.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,X.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,X.useState)(!1),v=(0,X.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,X.useState)(null),x=(0,X.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,X.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,X.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,Z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,Z.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,Z.jsx)(W,{onClick:()=>_(!0)})}),(0,Z.jsx)(ae,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,Z.jsx)($,{...w})}),(0,Z.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,Z.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)($,{...w})}),(0,Z.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)(xe,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function Ae(){return(0,Z.jsx)(ke,{assistantId:U()})}export{Ae as WorkspacePage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{m as r}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./useMutation-CXGTrp4W.js";import{t as s}from"./jsx-runtime-D3ZM-ToX.js";import{t as c}from"./queryOptions-CMSBCFOf.js";import{t as l}from"./createLucideIcon-CAM1RhH8.js";import{t as u}from"./chevron-down-B5A-0g8A.js";import{t as d}from"./chevron-right-HU6H84S0.js";import{t as f}from"./menu-BKrcAFYk.js";import{t as p}from"./download-CywcQLB2.js";import{t as m}from"./eye-off-Jdx8qkOK.js";import{t as h}from"./eye-BMVGQXHT.js";import{t as g}from"./file-plus-C3SBA8ll.js";import{t as _}from"./file-text-Br730Q4B.js";import{n as v,r as y,t as b}from"./workspace-tree-query-D9VBUg-W.js";import{t as x}from"./folder-open-Nlg0OphT.js";import{t as S}from"./folder-DF8nFp7N.js";import{n as C,t as w}from"./video-BcgduiJ6.js";import{t as T}from"./loader-circle-XREx3i4W.js";import{t as E}from"./pencil-D38YNe2r.js";import{t as D}from"./plus-jH3kAliM.js";import{t as O}from"./search-BVW-n8to.js";import{t as k}from"./trash-2-BF5y4UkY.js";import{t as A}from"./x-BGag7vwj.js";import{k as j}from"./src-CnF7WXNj.js";import{t as M}from"./input-F_x2LXmm.js";import{t as N}from"./modal-CoOkN7c0.js";import{n as P,t as F}from"./panel-item-CQt19wOM.js";import{t as ee}from"./confirm-dialog-D-Yjf2uS.js";import{n as I,t as L}from"./file-markdown-B0zje_y3.js";import{Br as te,Hr as R,Ir as ne,Lr as z,Rr as B,Ur as re,zr as ie}from"./sdk.gen-DeyOX3Kb.js";import{n as V}from"./use-is-mobile-Cx2xnNUx.js";import{n as H}from"./native-file-CfGNNXKe.js";import{t as U}from"./use-active-assistant-id-CUKao_nq.js";import{n as W,t as ae}from"./mobile-sidebar-drawer-BLGt_R0d.js";import{i as G,n as oe,r as K,t as q}from"./file-editor-plAxQBKk.js";import{t as J}from"./format-file-size-BtDHBEb-.js";var se=l(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ce=l(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),Y=l(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),X=e(t(),1);async function le(e){let{data:t,error:n}=await z({path:{assistant_id:e.assistantId},query:{path:e.path,...e.showHidden?{showHidden:`true`}:{}},parseAs:`blob`,throwOnError:!1});if(n||!(t instanceof Blob))throw Error(`Failed to download file`);await H(t,e.filename)}function ue(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function de(e,t){return ue(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function fe(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function pe(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Z=s();function me(e){let{assistantId:t,path:n,name:r,showHidden:i}=e,[a,o]=(0,X.useState)(!1),[s,c]=(0,X.useState)(!1);return{isDownloading:a,error:s,download:(0,X.useCallback)(async()=>{c(!1),o(!0);try{await le({assistantId:t,path:n,filename:r,showHidden:i})}catch{c(!0)}finally{o(!1)}},[t,n,r,i])}}function he({assistantId:e,path:t,name:r,showHidden:i}){let{isDownloading:a,error:o,download:s}=me({assistantId:e,path:t,name:r,showHidden:i});return(0,Z.jsx)(n,{variant:`ghost`,size:`regular`,iconOnly:a?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(p,{"aria-hidden":!0}),onClick:()=>void s(),disabled:a,"aria-label":`Download ${r}`,tooltip:o?`Download failed. Try again.`:`Download`})}function ge(e){return c({queryFn:async()=>{let{data:t,error:n}=await B({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function _e({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=_;return n.startsWith(`image/`)?r=C:n.startsWith(`video/`)?r=w:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=y),(0,Z.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,Z.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function ve({viewMode:e,onChange:t}){return(0,Z.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,Z.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(_e,{mimeType:t}),(0,Z.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:J(n)})]}),r]})}function ye({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await z({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,X.useState)(null);return(0,X.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function be({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let{isDownloading:c,error:l,download:u}=me({assistantId:e,path:t,name:r,showHidden:s});return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:r,mimeType:i,size:a}),(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Z.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,Z.jsx)(y,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Z.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,Z.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:J(a,`Unknown size`)}),o&&(0,Z.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(o).toLocaleString()]})]}),(0,Z.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:c?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(p,{"aria-hidden":!0}),onClick:u,disabled:c,"aria-label":`Download ${r}`,className:`mt-4`,children:c?`Downloading…`:`Download`}),l&&(0,Z.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:`Download failed. Try again.`})]})})]})}function xe({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...ge({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,g]=(0,X.useState)(null),[_,v]=(0,X.useState)(null);(0,X.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;g(e=>e==null?e:n(e)),v(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,X.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);g(e=>e!=null&&t(e)?null:e),v(e=>e!=null&&t(e.path)?null:e)},[d]);let y=h!=null&&h===t,b=p?.content??``,S=_?.path===t?_.content:b,C=()=>{g(null),v(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await re({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{g(e=>e===t.path?null:e),v(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),E=S!==b,D=(0,X.useCallback)(()=>{t&&E&&!w.isPending&&w.mutate({path:t,content:S})},[t,E,w,S]);if(!t)return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,Z.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Z.jsx)(x,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let O=p.mimeType??`application/octet-stream`,k=p.name??t.split(`/`).pop()??t,A=I(k,O),j=de(k,O),M=p.content!=null&&!A&&!j,N=t?pe(t):!0,P=y&&(0,Z.jsx)(oe,{isDirty:E,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:D,onDiscard:C});if(A&&p.content!=null){let e=y?S:p.content;return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(ve,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,Z.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Z.jsx)(L,{content:e})}):y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}if(j&&p.content!=null){let e=y?S:p.content,n=fe(e);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(ve,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:s===`preview`?n:e,downloadContent:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,Z.jsx)(G,{content:n,readOnly:!0,whiteSpace:`pre`}):y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}return M?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:y?S:p.content??``,fileName:k,mimeType:O,showEdit:!N,isEditing:y,onToggleEdit:()=>y?C():g(t)}),y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content??``,readOnly:N,onStartEdit:()=>g(t)})]}),P]}):O.startsWith(`image/`)||O.startsWith(`video/`)?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size,rightContent:(0,Z.jsx)(he,{assistantId:e,path:t,name:k,showHidden:r})}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Z.jsx)(ye,{assistantId:e,path:t,mimeType:O,showHidden:r})})]}):(0,Z.jsx)(be,{assistantId:e,path:t,name:k,mimeType:O,size:p.size,modifiedAt:p.modifiedAt,showHidden:r})}function Se(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}async function Ce(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await R({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function we({entry:e}){return e.type===`directory`?(0,Z.jsx)(S,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Z.jsx)(C,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Z.jsx)(w,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(_,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function Te({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h}){let _=e.path??``,y=e.name??``,b=e.type===`directory`,x=n.has(_),S=r===_,C=y.startsWith(`.`),w=!pe(_),T=b&&(x||s.length>0),{data:D}=a({...v({assistantId:t,path:_,showHidden:i,includeDirSizes:o===`size`}),enabled:b&&T}),O=(0,X.useMemo)(()=>Se(D?.entries??[],o),[D?.entries,o]),A=s===``||y.toLowerCase().includes(s);if(s!==``&&!b&&!A)return null;let M=(0,Z.jsxs)(`button`,{onClick:()=>{b?c(_):l(_)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${h*14+8}px`,paddingRight:`8px`,color:S?`var(--content-default)`:C?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:S?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:C&&!S?.7:1},children:[b?T?(0,Z.jsx)(u,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(d,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Z.jsx)(we,{entry:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:y}),e.size!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:J(e.size)})]});return(0,Z.jsxs)(`div`,{children:[w?(0,Z.jsxs)(j.Root,{children:[(0,Z.jsx)(j.Trigger,{children:M}),(0,Z.jsxs)(j.Content,{children:[b&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(g,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`file`,parentPath:_}),children:`New File`}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`folder`,parentPath:_}),children:`New Folder`}),(0,Z.jsx)(j.Separator,{})]}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(k,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:_,name:y,isDirectory:b}),children:`Delete`}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(E,{className:`h-3.5 w-3.5`}),onSelect:()=>p({path:_,name:y,isDirectory:b}),children:`Rename`})]})]}):M,b&&T&&O.length>0&&(0,Z.jsx)(`div`,{children:O.map(e=>(0,Z.jsx)(Te,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h+1},e.path))})]})}function Ee({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,X.useRef)(null),[d,f]=(0,X.useState)(a??``),p=d.trim(),m=p.length>0&&(/[/\\]/.test(p)||p===`.`||p===`..`),h=p.length>0&&!m&&!c;return(0,Z.jsx)(N.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Z.jsx)(N.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),h&&s(p)},children:[(0,Z.jsx)(N.Header,{children:(0,Z.jsx)(N.Title,{children:e})}),(0,Z.jsx)(N.Body,{children:(0,Z.jsx)(M,{ref:u,label:`Name`,value:d,onChange:e=>f(e.target.value),placeholder:t,errorText:l??(m?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Z.jsxs)(N.Footer,{children:[(0,Z.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,disabled:!h,children:c?i:r})]})]})})})}function $({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:g,onPathRenamed:_}){let y=i(),[x,S]=(0,X.useState)(``),C=x.trim().toLowerCase(),[w,T]=(0,X.useState)(!1),[E,D]=(0,X.useState)(null),[k,j]=(0,X.useState)(null),N=(0,X.useCallback)(()=>{D(null),j(null)},[]),{data:P,isLoading:F}=a(v({assistantId:e,showHidden:s,includeDirSizes:c===`size`})),I=(0,X.useMemo)(()=>Se(P?.entries??[],c),[P?.entries,c]),L=(0,X.useCallback)(()=>{for(let e of[b,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])y.invalidateQueries({queryKey:[e]})},[y]),R=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await Ce(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await re({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await ie({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{N(),L(),e.parentPath&&u(e.parentPath),e.kind===`file`?d(e.path):u(e.path)},onError:e=>{j(e instanceof Error?e.message:`Failed to create.`)}}),z=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await Ce(e,r,t.newName,i);let{error:o,response:s}=await te({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{N(),L(),_(e,t)},onError:e=>{j(e instanceof Error?e.message:`Failed to rename.`)}}),B=(0,X.useCallback)(e=>{j(null),D({type:`create`,...e})},[]),V=(0,X.useCallback)(e=>{j(null),D({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,X.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await ne({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{U(null),L(),g(e.path)}}),ae=(0,X.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Z.jsx)(ce,{"aria-hidden":!0}):(0,Z.jsx)(se,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Z.jsx)(h,{"aria-hidden":!0}):(0,Z.jsx)(m,{"aria-hidden":!0}),onClick:f,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(De,{open:w,onOpenChange:T,onSelectKind:e=>{T(!1),B({kind:e,parentPath:``})}})]})]}),(0,Z.jsx)(`div`,{className:`px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(M,{type:`text`,value:x,onChange:e=>S(e.target.value),placeholder:`Search files`,leftIcon:(0,Z.jsx)(O,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),x&&(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(A,{"aria-hidden":!0}),onClick:()=>S(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:F?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):I.length?I.map(n=>(0,Z.jsx)(Te,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:C,onToggleExpand:l,onSelectPath:d,onRequestDelete:ae,onRequestRename:V,onRequestCreate:B,depth:0},n.path)):(0,Z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),E?.type===`create`&&(0,Z.jsx)(Ee,{title:E.kind===`file`?`New File`:`New Folder`,placeholder:E.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:N,onConfirm:e=>{j(null),R.mutate({kind:E.kind,parentPath:E.parentPath,name:e})},pending:R.isPending,error:k},`create-${E.kind}-${E.parentPath}`),E?.type===`rename`&&(0,Z.jsx)(Ee,{title:`Rename`,placeholder:E.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:E.name,onCancel:N,onConfirm:e=>{if(e===E.name){N();return}j(null),z.mutate({oldPath:E.path,newName:e})},pending:z.isPending,error:k},`rename-${E.path}`),(0,Z.jsx)(ee,{open:H!==null,title:H?.isDirectory?`Delete Folder`:`Delete File`,message:(0,Z.jsxs)(Z.Fragment,{children:[`Are you sure you want to delete`,` `,(0,Z.jsx)(`span`,{style:{color:`var(--content-default)`},children:H?.name}),H?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,W.error&&(0,Z.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function De({open:e,onOpenChange:t,onSelectKind:r}){return V()?(0,Z.jsxs)(P.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(P.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(D,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(P.Content,{children:[(0,Z.jsx)(P.Header,{className:`sr-only`,children:(0,Z.jsx)(P.Title,{children:`Create new`})}),(0,Z.jsxs)(P.Body,{className:`pt-0`,children:[(0,Z.jsx)(F,{icon:g,label:`New File`,onSelect:()=>r(`file`)}),(0,Z.jsx)(F,{icon:Y,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,Z.jsxs)(f.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(f.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(D,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(f.Content,{align:`end`,sideOffset:4,children:[(0,Z.jsx)(f.Item,{leftIcon:(0,Z.jsx)(g,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,Z.jsx)(f.Item,{leftIcon:(0,Z.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function Oe(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function ke({assistantId:e}){let[t,n]=r(),[i,a]=(0,X.useState)(()=>{let e=t.get(`file`);return e?Oe(e):new Set}),[o,s]=(0,X.useState)(()=>t.get(`file`)),[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,X.useState)(`preview`);(0,X.useEffect)(()=>{let e=t.get(`file`);e&&(s(e),a(t=>{let n=new Set(t);for(let t of Oe(e))n.add(t);return n.size===t.size?t:n}),n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0}))},[t,n]);let m=(0,X.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,X.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,X.useState)(!1),v=(0,X.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,X.useState)(null),x=(0,X.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,X.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,X.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,Z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,Z.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,Z.jsx)(W,{onClick:()=>_(!0)})}),(0,Z.jsx)(ae,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,Z.jsx)($,{...w})}),(0,Z.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,Z.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)($,{...w})}),(0,Z.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)(xe,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function Ae(){return(0,Z.jsx)(ke,{assistantId:U()})}export{Ae as WorkspacePage};
@@ -1 +1 @@
1
- import{t as e}from"./queryOptions-CMSBCFOf.js";import{t}from"./createLucideIcon-CAM1RhH8.js";import{Hr as n}from"./sdk.gen-BHZ0fJla.js";var r=t(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),i=`assistantsWorkspaceTreeRetrieve`;function a({assistantId:t,path:r=``,showHidden:a=!1,includeDirSizes:o=!1}){return e({queryKey:[i,t,{path:r,showHidden:a,includeDirSizes:o}],queryFn:async()=>{let e={};r&&(e.path=r),a&&(e.showHidden=`true`),o&&(e.includeDirSizes=`true`);let{data:i,error:s}=await n({path:{assistant_id:t},query:e});if(s)throw s;if(!i)throw Error(`Failed to load workspace tree`);return i}})}export{a as n,r,i as t};
1
+ import{t as e}from"./queryOptions-CMSBCFOf.js";import{t}from"./createLucideIcon-CAM1RhH8.js";import{Hr as n}from"./sdk.gen-DeyOX3Kb.js";var r=t(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),i=`assistantsWorkspaceTreeRetrieve`;function a({assistantId:t,path:r=``,showHidden:a=!1,includeDirSizes:o=!1}){return e({queryKey:[i,t,{path:r,showHidden:a,includeDirSizes:o}],queryFn:async()=>{let e={};r&&(e.path=r),a&&(e.showHidden=`true`),o&&(e.includeDirSizes=`true`);let{data:i,error:s}=await n({path:{assistant_id:t},query:e});if(s)throw s;if(!i)throw Error(`Failed to load workspace tree`);return i}})}export{a as n,r,i as t};