@vellumai/web 0.10.2 → 0.10.3-dev.202606252046.9075fd5

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 (311) hide show
  1. package/dist/assets/AnimatePresence-CLUzO79c.js +9 -0
  2. package/dist/assets/{BundleConfirmPage-B1RL5CT5.js → BundleConfirmPage-DpfvIcwl.js} +1 -1
  3. package/dist/assets/{Combination-CDqVzelh.js → Combination-4Qc3vrtW.js} +1 -1
  4. package/dist/assets/about-page-TvZeB1h8.js +1 -0
  5. package/dist/assets/{account-page-CHiDb1yX.js → account-page-B9-nXeIt.js} +1 -1
  6. package/dist/assets/{account-shell-BBL0HqTX.js → account-shell-DwNlgySJ.js} +1 -1
  7. package/dist/assets/{add-credits-modal-GSsxaybq.js → add-credits-modal-JV9bRykb.js} +1 -1
  8. package/dist/assets/{advanced-page-9dJbjOiT.js → advanced-page-CumCyGWm.js} +1 -1
  9. package/dist/assets/ai-page-CBKFUYW7.js +1 -0
  10. package/dist/assets/{api-CjVG_nMi.js → api-2kc3MHRz.js} +1 -1
  11. package/dist/assets/{api-key-screen-BBajxzG8.js → api-key-screen-CRx6w8CW.js} +1 -1
  12. package/dist/assets/app-info-DENEBxVU.js +1 -0
  13. package/dist/assets/archive-page-BRwnijFf.js +1 -0
  14. package/dist/assets/assistant-api-DROTS3Y9.js +1 -0
  15. package/dist/assets/{assistant-feature-flag-store-BD9zTDcP.js → assistant-feature-flag-store-Dl92XRsM.js} +1 -1
  16. package/dist/assets/{assistant-identity-store-DaDnhbxy.js → assistant-identity-store-CKjnoLSp.js} +1 -1
  17. package/dist/assets/{assistant-status-panel-CFhkAfJY.js → assistant-status-panel-CDbekzi5.js} +1 -1
  18. package/dist/assets/auth-store-ChW9SzI9.js +7 -0
  19. package/dist/assets/billing-page-DHqXm_8g.js +3 -0
  20. package/dist/assets/{bookmarks-page-DyjSZPPW.js → bookmarks-page-BZGCN6hi.js} +1 -1
  21. package/dist/assets/brain-Bs6LnfHO.js +1 -0
  22. package/dist/assets/browser-CcFF_rkO.js +2 -0
  23. package/dist/assets/build-state-D0kdTS6F.js +1 -0
  24. package/dist/assets/{capture-error-AoUURkgi.js → capture-error-Hr1Yo2kx.js} +1 -1
  25. package/dist/assets/check-D6WkI0gF.js +1 -0
  26. package/dist/assets/{checkbox-ChtGq7OI.js → checkbox-BqCzUvXM.js} +1 -1
  27. package/dist/assets/{client-feature-flag-store-DjN8fxHA.js → client-feature-flag-store-C1kdd1EO.js} +1 -1
  28. package/dist/assets/{command-palette-DJgHXop1.js → command-palette-3tkJdNTe.js} +1 -1
  29. package/dist/assets/command-palette-window-page-WE3wTFlP.js +1 -0
  30. package/dist/assets/community-page-Fi2VKtgf.js +1 -0
  31. package/dist/assets/{confirm-dialog-SpCsmAdG.js → confirm-dialog-CfOXCE1N.js} +1 -1
  32. package/dist/assets/{connect-page-B0Pym3dJ.js → connect-page-BQzNnPDo.js} +1 -1
  33. package/dist/assets/{consent-controls-o06cSwWt.js → consent-controls-BSZV4rW3.js} +1 -1
  34. package/dist/assets/{contacts-gateway-11r4y5pQ.js → contacts-gateway-BUGZkpwV.js} +1 -1
  35. package/dist/assets/contacts-page-route-DFt7nKh0.js +9 -0
  36. package/dist/assets/conversation-list-fetchers-UPVZq_6O.js +1 -0
  37. package/dist/assets/{danger-zone-redirect-page-iCmRnyei.js → danger-zone-redirect-page-CjqUKhk9.js} +1 -1
  38. package/dist/assets/debug-page-hdqp_HRW.js +4 -0
  39. package/dist/assets/{deploy-dialogs-DygUf1og.js → deploy-dialogs-Brotm8L5.js} +1 -1
  40. package/dist/assets/{detail-card-QPVpO5cj.js → detail-card-C5Y8BJ-M.js} +1 -1
  41. package/dist/assets/{developer-page-C5desNav.js → developer-page-CuPxQV4l.js} +1 -1
  42. package/dist/assets/devices-page-CZH4QM_k.js +1 -0
  43. package/dist/assets/diagnostics-BEB4VPwC.js +1 -0
  44. package/dist/assets/dictation-overlay-page-Cqxeh6r7.js +1 -0
  45. package/dist/assets/{dist-cZPU9ZZL.js → dist-B0Gf-knw.js} +1 -1
  46. package/dist/assets/document-viewer-page-USfZvtF6.js +1 -0
  47. package/dist/assets/dropdown-CL8VmqrY.js +1 -0
  48. package/dist/assets/earn-credits-modal-CBXXAMnn.js +1 -0
  49. package/dist/assets/{emails-page-Duy9jhr6.js → emails-page-DbEpgXB8.js} +1 -1
  50. package/dist/assets/esm-5gU3bjzq.js +2 -0
  51. package/dist/assets/esm-BCyLKT7G.js +2 -0
  52. package/dist/assets/{esm-B9FuN3Io.js → esm-DLfKHBEV.js} +2 -2
  53. package/dist/assets/esm-DjoRMdid.js +2 -0
  54. package/dist/assets/esm-THPAbEDt.js +1 -0
  55. package/dist/assets/esm-hCttZxWP.js +2 -0
  56. package/dist/assets/feature-flag-catalog-RK3_Ckyw.js +1 -0
  57. package/dist/assets/file-editor-or8tUWGd.js +1 -0
  58. package/dist/assets/file-text-CmK9LY1p.js +1 -0
  59. package/dist/assets/funnel-events-B3MqPADI.js +1 -0
  60. package/dist/assets/general-page-DLmd1Eub.js +1 -0
  61. package/dist/assets/hatching-screen-D47G1NSW.js +1 -0
  62. package/dist/assets/home-page-route-zUu-DbI-.js +1 -0
  63. package/dist/assets/hosting-screen-XRkAMN5n.js +1 -0
  64. package/dist/assets/identity-page-route-3nEt039g.js +1 -0
  65. package/dist/assets/index-ClC1ULPL.js +132 -0
  66. package/dist/assets/index-Hcyzmz_5.css +2 -0
  67. package/dist/assets/inspect-page-BMr0kyir.js +7 -0
  68. package/dist/assets/install-CbYtzbY3.js +1 -0
  69. package/dist/assets/integrations-page-BIPflp2l.js +1 -0
  70. package/dist/assets/{intelligence-layout-DgkmPrJl.js → intelligence-layout-Da9BJaKI.js} +1 -1
  71. package/dist/assets/{keyboard-shortcuts-page-waVolRQN.js → keyboard-shortcuts-page-QI7OycIm.js} +1 -1
  72. package/dist/assets/{library-detail-page-eMzOqx_B.js → library-detail-page-hPfYHjCC.js} +1 -1
  73. package/dist/assets/library-page-DXMbjNma.js +1 -0
  74. package/dist/assets/list-row-Cw9JYESP.js +1 -0
  75. package/dist/assets/{local-mode-BD2zqd9I.js → local-mode-CvrNMtPF.js} +3 -3
  76. package/dist/assets/{login-flow-DVsR7fEC.js → login-flow-bkSOloXg.js} +1 -1
  77. package/dist/assets/login-page-Bja2DzZh.js +1 -0
  78. package/dist/assets/{logout-page-DRRS14hP.js → logout-page-7Oe3wbP9.js} +1 -1
  79. package/dist/assets/{logs-layout-CSvew4_d.js → logs-layout-CCfnXujW.js} +1 -1
  80. package/dist/assets/{memory-router-playground-page-A2zlGskJ.js → memory-router-playground-page-DjnFCorF.js} +1 -1
  81. package/dist/assets/menu-C_97pis4.js +1 -0
  82. package/dist/assets/messages-DHDZ32NT.js +13 -0
  83. package/dist/assets/{mobile-sidebar-drawer-R6nyuXZ1.js → mobile-sidebar-drawer-CnBiKIXv.js} +1 -1
  84. package/dist/assets/{modal-CHuPOsJJ.js → modal-D0Q3UWD0.js} +1 -1
  85. package/dist/assets/monitor-D2okHi8o.js +1 -0
  86. package/dist/assets/mutation-error-CAcai9_z.js +1 -0
  87. package/dist/assets/{native-file-LJQTmnKy.js → native-file-CiaHiLEO.js} +2 -2
  88. package/dist/assets/{notice-CynJKEow.js → notice-CqRgVmeL.js} +1 -1
  89. package/dist/assets/notifications-page-DTCOKVj_.js +1 -0
  90. package/dist/assets/{oauth-complete-page-BJudfLeY.js → oauth-complete-page-DvU0o29v.js} +1 -1
  91. package/dist/assets/{oauth-popup-complete-page-HRhzTWe_.js → oauth-popup-complete-page-CsrAizjT.js} +1 -1
  92. package/dist/assets/{page-shell-W5IMIXQq.js → page-shell-Cjnz9wcY.js} +1 -1
  93. package/dist/assets/{pairing-page-DS3k_UyF.js → pairing-page-CZpUmntV.js} +1 -1
  94. package/dist/assets/panel-item-nGTDevWP.js +1 -0
  95. package/dist/assets/{password-reset-page-CDvLTa8S.js → password-reset-page-0JJf9uQW.js} +1 -1
  96. package/dist/assets/{platform-loopback-page-CKI-92-q.js → platform-loopback-page-D8RQIDDa.js} +1 -1
  97. package/dist/assets/plugin-detail-page-C_oRG3pL.js +1 -0
  98. package/dist/assets/{plugins-page-BxfKs2Np.js → plugins-page-Cr6ZpnWa.js} +1 -1
  99. package/dist/assets/{popover-BsF65jZY.js → popover-CL-JL6vG.js} +1 -1
  100. package/dist/assets/prechat-B28Vzu55.js +1 -0
  101. package/dist/assets/prechat-route-3Qvt2hhO.js +1 -0
  102. package/dist/assets/{prefs-DP4g-Qgi.js → prefs-CQMgJd_q.js} +1 -1
  103. package/dist/assets/privacy-page-BPFyA8iz.js +1 -0
  104. package/dist/assets/privacy-screen-CgqEActd.js +1 -0
  105. package/dist/assets/{provider-callback-page-tWLMyImI.js → provider-callback-page-BOAni8yJ.js} +1 -1
  106. package/dist/assets/{provider-key-g87caUSW.js → provider-key-CQHnRygW.js} +1 -1
  107. package/dist/assets/{provider-signup-page-CBPV-1Ih.js → provider-signup-page-CWMhVP8s.js} +1 -1
  108. package/dist/assets/proxy-BigbiDP1.js +1 -0
  109. package/dist/assets/{quick-input-page-CEPPTVs7.js → quick-input-page-DM-2Bywe.js} +1 -1
  110. package/dist/assets/react-query.gen-CQLyoqYk.js +1 -0
  111. package/dist/assets/{react-query.gen-CRARj4mG.js → react-query.gen-rp6Krcco.js} +1 -1
  112. package/dist/assets/{research-mock-page-Dln6TeKV.js → research-mock-page-CnWnfAmD.js} +1 -1
  113. package/dist/assets/research-onboarding-route-Mqg1RKEf.js +35 -0
  114. package/dist/assets/{resize-errors-CXz-pd2h.js → resize-errors-DnJEbHn4.js} +1 -1
  115. package/dist/assets/{resolved-assistants-store-DLNFVaZL.js → resolved-assistants-store-Cp4J43BK.js} +1 -1
  116. package/dist/assets/return-to-ByvaXBKr.js +1 -0
  117. package/dist/assets/{review-terms-screen-DuORfqOE.js → review-terms-screen-CZAs4_M8.js} +1 -1
  118. package/dist/assets/risk-badge-6lK01djG.js +1 -0
  119. package/dist/assets/{schedules-MF0cMAPX.js → schedules-BrM_F49t.js} +1 -1
  120. package/dist/assets/sdk.gen-1aYqVbMj.js +6 -0
  121. package/dist/assets/{sdk.gen-0RzHFsEa.js → sdk.gen-D-_js_oC.js} +1 -1
  122. package/dist/assets/select-assistant-screen-op6EkLQj.js +1 -0
  123. package/dist/assets/{setting-row-BHlMSre_.js → setting-row-o44aWwYt.js} +1 -1
  124. package/dist/assets/settings-layout-bfcLNyf6.js +1 -0
  125. package/dist/assets/share-feedback-modal-DpMFG9Pb.js +1 -0
  126. package/dist/assets/{sidebar-tree-D0lNnpA6.js → sidebar-tree-B7wZynGE.js} +1 -1
  127. package/dist/assets/signup-page-Czj1OK4W.js +1 -0
  128. package/dist/assets/{signup-shell-CEJE1QSw.js → signup-shell-BsVVoj4U.js} +1 -1
  129. package/dist/assets/skills-page-D9bLw9fM.js +1 -0
  130. package/dist/assets/{sound-manager-RQj5g2kL.js → sound-manager-CzslfzDO.js} +1 -1
  131. package/dist/assets/{sounds-page-DFXhvf_o.js → sounds-page-BKGTyNWW.js} +1 -1
  132. package/dist/assets/{src-BJj2O5XB.js → src-CK6bncSg.js} +39 -39
  133. package/dist/assets/{metric-card-CgO1F06f.js → status-badge-pill-DbFy7rqp.js} +1 -1
  134. package/dist/assets/step-indicator-dots-CHroyD_f.js +1 -0
  135. package/dist/assets/subagent-detail-panel-B6sagWSD.js +4 -0
  136. package/dist/assets/subagent-store-BLHGkTJR.js +3 -0
  137. package/dist/assets/{system-events-page-BJJteZri.js → system-events-page-DI9o7xCI.js} +1 -1
  138. package/dist/assets/{system-events-redirect-page-CheSz42h.js → system-events-redirect-page-C1hGE6n5.js} +1 -1
  139. package/dist/assets/{tag-CE_o2aao.js → tag-B_-QAvJF.js} +1 -1
  140. package/dist/assets/three-dot-indicator-DMSk1hLX.js +1 -0
  141. package/dist/assets/{tiptap-document-editor-C8FlNAsc.js → tiptap-document-editor-dGIhjBeA.js} +2 -2
  142. package/dist/assets/{toast-CxaZ5f1d.js → toast-2TW5tj1Y.js} +1 -1
  143. package/dist/assets/tool-call-status-DTV5jmaU.js +1 -0
  144. package/dist/assets/tool-detail-panel-DCNeyuSR.js +2 -0
  145. package/dist/assets/trace-page-BlzzMfhB.js +1 -0
  146. package/dist/assets/{upgrade-cancel-page-BQJOrigy.js → upgrade-cancel-page-aPRq6Aok.js} +1 -1
  147. package/dist/assets/{upgrade-success-page-BPRZMLDu.js → upgrade-success-page-BIT_ilWx.js} +1 -1
  148. package/dist/assets/{usage-page-DU36h2RZ.js → usage-page-DyxmY3TL.js} +1 -1
  149. package/dist/assets/{use-active-assistant-id-BlwRimQH.js → use-active-assistant-id-Dyfjqq4l.js} +1 -1
  150. package/dist/assets/{use-bus-subscription-D-1qIPnj.js → use-bus-subscription-BbiZXm1u.js} +1 -1
  151. package/dist/assets/use-is-org-ready-nrr2EQDs.js +1 -0
  152. package/dist/assets/{use-onboarding-login-BZ4ismb6.js → use-onboarding-login-CSv0w3ZW.js} +1 -1
  153. package/dist/assets/{use-plugin-drift-C3gz_rng.js → use-plugin-drift-BozvaLNX.js} +1 -1
  154. package/dist/assets/use-reduced-motion-D-u6Drm_.js +1 -0
  155. package/dist/assets/user-plus-C0OyQU83.js +1 -0
  156. package/dist/assets/{utils-DugRzWBW.js → utils-IBnUZTqY.js} +1 -1
  157. package/dist/assets/{viewer-store-9Ag85lFC.js → viewer-store-Dead64xY.js} +1 -1
  158. package/dist/assets/{voice-page-DB2h9uqJ.js → voice-page-K-y3hK_F.js} +1 -1
  159. package/dist/assets/{weather-forecast-display-DoCG5fqI.js → weather-forecast-display-Dm8dLY4b.js} +1 -1
  160. package/dist/assets/{web-DTFLfPeG.js → web-DU1iYtUx.js} +1 -1
  161. package/dist/assets/{web-CUTiBnsF.js → web-DbJBgRfO.js} +1 -1
  162. package/dist/assets/{web-B4ULoQq5.js → web-Dd6cS3PL.js} +1 -1
  163. package/dist/assets/{web-ByMNu3A_.js → web-DfbsgY66.js} +1 -1
  164. package/dist/assets/{web-DuA0h7oK.js → web-Drsd2-VM.js} +1 -1
  165. package/dist/assets/{web-CvCsdCeT.js → web-Dy2Asku5.js} +1 -1
  166. package/dist/assets/{web-CyTCBnAZ.js → web-vUgUvidH.js} +1 -1
  167. package/dist/assets/{welcome-screen-z3RULgvo.js → welcome-screen-CQKiJNkD.js} +1 -1
  168. package/dist/assets/workflow-detail-panel-uq9qYtn1.js +1 -0
  169. package/dist/assets/workflow-status-DmbjJPT4.js +1 -0
  170. package/dist/assets/workspace-page-CgSrCIQ7.js +1 -0
  171. package/dist/index.html +112 -102
  172. package/package.json +1 -1
  173. package/dist/assets/about-page-B-yNJBih.js +0 -1
  174. package/dist/assets/ai-page-Du6k7XV_.js +0 -1
  175. package/dist/assets/archive-page-DDar_tND.js +0 -1
  176. package/dist/assets/assistant-api-BX_B1xSC.js +0 -1
  177. package/dist/assets/auth-store-CbVvQiBR.js +0 -7
  178. package/dist/assets/billing-page-BByuYpJa.js +0 -3
  179. package/dist/assets/build-state-CMpEWWjf.js +0 -1
  180. package/dist/assets/cable-C0pEWbc5.js +0 -1
  181. package/dist/assets/client.gen-0CkwJ2Ya.js +0 -6
  182. package/dist/assets/command-palette-window-page-CSaRzD87.js +0 -1
  183. package/dist/assets/community-page-BuuYKT7i.js +0 -1
  184. package/dist/assets/contacts-page-route-YQf7Dxxo.js +0 -1
  185. package/dist/assets/conversation-queries-DF1Lujnm.js +0 -1
  186. package/dist/assets/debug-page-CXi6rNhS.js +0 -2
  187. package/dist/assets/devices-page-mF5RECdQ.js +0 -1
  188. package/dist/assets/dictation-overlay-page-DL5K7HYW.js +0 -1
  189. package/dist/assets/document-viewer-page-C2oFS1wI.js +0 -1
  190. package/dist/assets/dollar-sign-D_XmiHA-.js +0 -1
  191. package/dist/assets/dropdown-yOV5eJnU.js +0 -1
  192. package/dist/assets/earn-credits-modal-DsuqrJTY.js +0 -1
  193. package/dist/assets/esm-BIUrrGWd.js +0 -2
  194. package/dist/assets/esm-BT7uz_mC.js +0 -2
  195. package/dist/assets/esm-BU45yXtJ.js +0 -2
  196. package/dist/assets/esm-D51SsTmc.js +0 -2
  197. package/dist/assets/esm-KT7CwnAY.js +0 -1
  198. package/dist/assets/feature-flag-catalog-RZLmDa1F.js +0 -1
  199. package/dist/assets/file-editor-n2sYGdD-.js +0 -1
  200. package/dist/assets/general-page-BSdbq26O.js +0 -1
  201. package/dist/assets/google-logo-DNkI-jCf.js +0 -1
  202. package/dist/assets/hatching-screen-BRgjqSLd.js +0 -1
  203. package/dist/assets/home-page-route-CV_mh2wJ.js +0 -1
  204. package/dist/assets/hosting-screen--kBc2JgZ.js +0 -1
  205. package/dist/assets/identity-page-route-CDcFNfWw.js +0 -1
  206. package/dist/assets/index-BvIwFdLE.css +0 -2
  207. package/dist/assets/index-Cx6vyW7T.js +0 -155
  208. package/dist/assets/inspect-page-D03CXXMs.js +0 -7
  209. package/dist/assets/install-JGbHHiCV.js +0 -1
  210. package/dist/assets/integrations-page-BFPmyQdR.js +0 -1
  211. package/dist/assets/library-page-BwoQ9K34.js +0 -1
  212. package/dist/assets/login-page-DYLjbG5w.js +0 -1
  213. package/dist/assets/mcp-page-CUehr_wQ.js +0 -1
  214. package/dist/assets/menu-CdoNX1qx.js +0 -1
  215. package/dist/assets/mutation-error-BjiE6W0q.js +0 -1
  216. package/dist/assets/notifications-page-DcIQm_jh.js +0 -1
  217. package/dist/assets/panel-item-BLQE_l-g.js +0 -1
  218. package/dist/assets/plugin-detail-page-THfWbuJx.js +0 -1
  219. package/dist/assets/prechat-route-uavNUOzg.js +0 -1
  220. package/dist/assets/privacy-page-Vq50i0Wv.js +0 -1
  221. package/dist/assets/privacy-screen-1ITDKJ6D.js +0 -1
  222. package/dist/assets/proxy-l3iqYpig.js +0 -1
  223. package/dist/assets/react-query.gen-4ZMhZ-fj.js +0 -1
  224. package/dist/assets/reduced-motion-8QnGN6lg.js +0 -1
  225. package/dist/assets/research-onboarding-route-HWXEnr-H.js +0 -30
  226. package/dist/assets/return-to-DxTXKF-C.js +0 -1
  227. package/dist/assets/sdk.gen-DtKkd6hs.js +0 -1
  228. package/dist/assets/select-assistant-screen-C2pCQCeh.js +0 -1
  229. package/dist/assets/settings-layout-Co57Zw8f.js +0 -1
  230. package/dist/assets/share-feedback-modal-C4yo471J.js +0 -1
  231. package/dist/assets/signup-page-P4juei29.js +0 -1
  232. package/dist/assets/skill-row-DDoJmniT.js +0 -1
  233. package/dist/assets/skills-page-KI_k-igb.js +0 -1
  234. package/dist/assets/step-indicator-dots-Bx_0xTIr.js +0 -1
  235. package/dist/assets/subagent-detail-panel-eXMmoVu4.js +0 -4
  236. package/dist/assets/subagent-status-DOJQZKTk.js +0 -1
  237. package/dist/assets/tool-detail-panel-DgVn-kKw.js +0 -2
  238. package/dist/assets/trace-page-CZICq31J.js +0 -1
  239. package/dist/assets/use-is-org-ready-CRkh60tU.js +0 -1
  240. package/dist/assets/use-reduced-motion-DgX4o6QR.js +0 -1
  241. package/dist/assets/workflow-detail-panel-uiydoHie.js +0 -1
  242. package/dist/assets/workspace-page-9B98Z90n.js +0 -1
  243. /package/dist/assets/{api-errors-D3EsNrwn.js → api-errors-CveHbhgb.js} +0 -0
  244. /package/dist/assets/{avatar-bundled-components-f4-fradg.js → avatar-bundled-components-DQodAnJD.js} +0 -0
  245. /package/dist/assets/{avatar-svg-compositor-DMT4wmUm.js → avatar-svg-compositor-CEmN7KGI.js} +0 -0
  246. /package/dist/assets/{bookmark-C8arQ3wm.js → bookmark-C3S-p0MQ.js} +0 -0
  247. /package/dist/assets/{bug-BuL3O3_2.js → bug-DDcuQ3au.js} +0 -0
  248. /package/dist/assets/{build.umd-CPG-O6Se.js → build.umd-BrOC7S1V.js} +0 -0
  249. /package/dist/assets/{calendar-BCNBN7PC.js → calendar-CpgH8CqM.js} +0 -0
  250. /package/dist/assets/{chevron-left-o_oJAd6A.js → chevron-left-DghyKSEE.js} +0 -0
  251. /package/dist/assets/{chevron-right-BNHlGCTg.js → chevron-right-B6vEpVY0.js} +0 -0
  252. /package/dist/assets/{chevron-up-BnW-hcOL.js → chevron-up-BRZN6p_l.js} +0 -0
  253. /package/dist/assets/{circle-alert-bz1ccYRI.js → circle-alert-DvNg50UK.js} +0 -0
  254. /package/dist/assets/{circle-check-DBzb54Kz.js → circle-check-DzlJxj_M.js} +0 -0
  255. /package/dist/assets/{client.gen-DzaL5PKF.js → client.gen-Cs6pCK0s.js} +0 -0
  256. /package/dist/assets/{cloud-off-BWmMU3G-.js → cloud-off-rAv4OHmv.js} +0 -0
  257. /package/dist/assets/{code-Bju_p7d-.js → code-aMX9iMYa.js} +0 -0
  258. /package/dist/assets/{composer-focus-D-P0cGAF.js → composer-focus-Bp1AiP29.js} +0 -0
  259. /package/dist/assets/{conversation-selection-CrdMTnwx.js → conversation-selection-CtKjA5Ni.js} +0 -0
  260. /package/dist/assets/{conversation-store-I2d3A6Tv.js → conversation-store-DK-7gFAt.js} +0 -0
  261. /package/dist/assets/{cpu-DpzMm9_m.js → cpu-CiHv3fhs.js} +0 -0
  262. /package/dist/assets/{credit-card-CN7yFHhB.js → credit-card-BKRB1ZIi.js} +0 -0
  263. /package/dist/assets/{definitions-B4RRVbRh.js → definitions-BVEXXekp.js} +0 -0
  264. /package/dist/assets/{dist-3i_EPbLt.js → dist-BTp54SIT.js} +0 -0
  265. /package/dist/assets/{dist-BQHdyjQ3.js → dist-cApvLul2.js} +0 -0
  266. /package/dist/assets/{domain-field-ChoXVdlk.js → domain-field-DYwuCpup.js} +0 -0
  267. /package/dist/assets/{edit-chat-session-DXSCprPw.js → edit-chat-session-DJpqkkos.js} +0 -0
  268. /package/dist/assets/{effective-timezone-DBaPUyaX.js → effective-timezone-DrYGH2Lb.js} +0 -0
  269. /package/dist/assets/{emoji-catalog-data-C0EjtsOi.js → emoji-catalog-data-D9cXGKYH.js} +0 -0
  270. /package/dist/assets/{environment-store-DoO5ZqXZ.js → environment-store-CvH3J6fT.js} +0 -0
  271. /package/dist/assets/{event-bus-CFhOgvB8.js → event-bus-Dl7-I4aL.js} +0 -0
  272. /package/dist/assets/{external-link-DAovIsxF.js → external-link-DPAtkBJ2.js} +0 -0
  273. /package/dist/assets/{format-B2A6k4bb.js → format-0qTDTDhA.js} +0 -0
  274. /package/dist/assets/{format-date-Cx9GZ7-D.js → format-date-C-eCaBOj.js} +0 -0
  275. /package/dist/assets/{format-file-size-Br1LCKQi.js → format-file-size-BfZOpPdu.js} +0 -0
  276. /package/dist/assets/{globe-CfKniRIP.js → globe-DYF_lSGm.js} +0 -0
  277. /package/dist/assets/{haptics-BCTVEX6s.js → haptics-CXHZxyAg.js} +0 -0
  278. /package/dist/assets/{hard-drive-DggmyfjR.js → hard-drive-D7_5VMhi.js} +0 -0
  279. /package/dist/assets/{impersonate-version-flag-BksY65Mo.js → impersonate-version-flag-n-4oNLiO.js} +0 -0
  280. /package/dist/assets/{info-DXbzDupm.js → info-_OtUK1cX.js} +0 -0
  281. /package/dist/assets/{input-Ch7OC6ME.js → input-C8kfrq9r.js} +0 -0
  282. /package/dist/assets/{lib-BVvJNDCQ.js → lib-CqoczjxJ.js} +0 -0
  283. /package/dist/assets/{link-2-Dmka5LJV.js → link-2-CaszbD7P.js} +0 -0
  284. /package/dist/assets/{llm-dimension-ovOt_D6t.js → llm-dimension-Db-cwepb.js} +0 -0
  285. /package/dist/assets/{loader-circle-Cw1KvvLK.js → loader-circle-IIzBGiwm.js} +0 -0
  286. /package/dist/assets/{log-in-CUDpYpYW.js → log-in-2iOsufxq.js} +0 -0
  287. /package/dist/assets/{minimize-2-CPmn1RIm.js → minimize-2-JE_UHZlJ.js} +0 -0
  288. /package/dist/assets/{misc-Dm72afTZ.js → misc-BN2o2MEB.js} +0 -0
  289. /package/dist/assets/{moon-Be4Pgk5X.js → moon-CK8MXzOo.js} +0 -0
  290. /package/dist/assets/{native-deep-link-CYaeyOfj.js → native-deep-link-BYNI6pkW.js} +0 -0
  291. /package/dist/assets/{pdf-DhvXjkis.js → pdf-BJGZkYgE.js} +0 -0
  292. /package/dist/assets/{pencil-Dm2eFMe3.js → pencil-DbB9rxpY.js} +0 -0
  293. /package/dist/assets/{prechat-names-CkLrL-Jh.js → prechat-names-De-dVGbT.js} +0 -0
  294. /package/dist/assets/{progress-bar-DFH5aT1D.js → progress-bar-DIFlWPPg.js} +0 -0
  295. /package/dist/assets/{public-asset-CH9GPeL_.js → public-asset-Fx_laYnf.js} +0 -0
  296. /package/dist/assets/{refresh-cw-YXbpNg95.js → refresh-cw-Bf6LV0kG.js} +0 -0
  297. /package/dist/assets/{routes-B9xcBuuC.js → routes-DVqkwUEe.js} +0 -0
  298. /package/dist/assets/{save-CQ2-kSlv.js → save-DEBQ_gbb.js} +0 -0
  299. /package/dist/assets/{semver-aan9RUyA.js → semver-yC_Iq9co.js} +0 -0
  300. /package/dist/assets/{sparkles-C8hCShdb.js → sparkles-BICoewVE.js} +0 -0
  301. /package/dist/assets/{stat-square-CraPxMcl.js → stat-square-B0S3fO7O.js} +0 -0
  302. /package/dist/assets/{toggle-95p73HGd.js → toggle-X_kQW5my.js} +0 -0
  303. /package/dist/assets/{triangle-alert-DnZC45c-.js → triangle-alert-Bz1PpciW.js} +0 -0
  304. /package/dist/assets/{triangle-alert-AqQQTwUZ.js → triangle-alert-DKOyShqD.js} +0 -0
  305. /package/dist/assets/{typed-storage-qVehRaS3.js → typed-storage-Dctd_K9F.js} +0 -0
  306. /package/dist/assets/{usage-window-DbWHZkbr.js → usage-window-FKG0JDAT.js} +0 -0
  307. /package/dist/assets/{use-is-mobile-D_0cze0t.js → use-is-mobile-Cy10kl9u.js} +0 -0
  308. /package/dist/assets/{x-DE8JhiDZ.js → x-C8bCmIhD.js} +0 -0
  309. /package/dist/assets/{x-BeVbiDS2.js → x-KVxA2ZL0.js} +0 -0
  310. /package/dist/assets/{xterm-B74sC241.js → xterm-7Iq3jX3h.js} +0 -0
  311. /package/dist/assets/{xterm-addon-fit-By7PlC-c.js → xterm-addon-fit-XFgHFTPw.js} +0 -0
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{d as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./jsx-runtime-CVSDxk6A.js";import{t as s}from"./menu-CdoNX1qx.js";import"./src-BJj2O5XB.js";import{t as c}from"./confirm-dialog-SpCsmAdG.js";import{t as l}from"./input-Ch7OC6ME.js";import{n as u,t as d}from"./panel-item-BLQE_l-g.js";import{n as f}from"./toast-CxaZ5f1d.js";import{t as p}from"./arrow-up-nBfZxfhi.js";import{t as m}from"./globe-CfKniRIP.js";import{s as h,t as g}from"./sdk.gen-DtKkd6hs.js";import{C as _,n as v,t as y}from"./react-query.gen-4ZMhZ-fj.js";import{a as b}from"./routes-B9xcBuuC.js";import{n as x}from"./use-is-mobile-D_0cze0t.js";import{i as S,r as C}from"./viewer-store-9Ag85lFC.js";import{t as w}from"./misc-Dm72afTZ.js";import{Ai as T,Fi as E,G as D,Kr as O,Mr as k,Mt as A,Nr as j,Tt as M,at as N,bi as P,ni as F,ot as I,ri as L}from"./index-Cx6vyW7T.js";import{t as R}from"./deploy-dialogs-DygUf1og.js";import{t as z}from"./use-active-assistant-id-BlwRimQH.js";import{t as B}from"./page-shell-W5IMIXQq.js";import{t as V}from"./format-date-Cx9GZ7-D.js";var H=e(t(),1),U=o();function W({app:e,isDeleting:t,onConfirm:n,onCancel:r}){return(0,U.jsx)(c,{open:e!==null,title:`Delete app`,message:e?`"${e.name}" will be permanently removed.`:``,confirmLabel:t?`Deleting…`:`Delete`,destructive:!0,onConfirm:n,onCancel:r})}function G(e){return e===1?`1 word`:`${e} words`}function K({document:e,onOpen:t}){return(0,U.jsxs)(`div`,{className:`group relative flex flex-col gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>t(e.surfaceId),className:w(`relative flex w-full cursor-pointer flex-col items-center justify-center gap-2 overflow-hidden rounded-xl border border-[var(--border-base)] bg-[var(--surface-base)]`,`aspect-[16/10]`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`),children:[(0,U.jsx)(T,{size:34,className:`text-[var(--content-tertiary)]`}),(0,U.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:G(e.wordCount)})]}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>t(e.surfaceId),className:`flex cursor-pointer flex-col gap-0.5 px-0.5 text-left outline-none`,children:[(0,U.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.title}),(0,U.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:V(new Date(e.updatedAt))})]})]})}function q({fileInputRef:e,isImporting:t,onImportBundle:r,onNewConversation:i}){return(0,U.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4 py-24`,children:[(0,U.jsx)(`input`,{ref:e,type:`file`,accept:`.vellum`,className:`hidden`,onChange:r}),(0,U.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--surface-base)]`,children:(0,U.jsx)(P,{size:32,className:`text-[var(--content-tertiary)]`})}),(0,U.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Your library is empty`}),(0,U.jsx)(`p`,{className:`max-w-md text-center text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:`Ask your assistant to build something, or import a shared app`}),(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[i?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(n,{variant:`primary`,size:`regular`,onClick:i,children:`New Conversation`}),(0,U.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:`or`})]}):null,(0,U.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>e.current?.click(),disabled:t,children:[t?(0,U.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,U.jsx)(k,{size:14}),(0,U.jsx)(`span`,{className:`ml-1.5`,children:`Import .vellum File`})]})]})]})}function J({app:e,assistantId:t,isPinned:n,onOpen:r,onPin:i,onDelete:a,onDeploy:o,justImported:s,onAnimationEnd:c}){let[l,u]=(0,H.useState)(!1),d=(0,H.useCallback)(()=>S(t,e.id),[t,e.id]),p=(0,H.useCallback)(async()=>{if(!l){u(!0);try{await I(t,e.id,e.name),f.success(`App exported`,{description:`${e.name}.vellum`})}catch(e){f.error(`Failed to share app`,{description:e instanceof Error?e.message:void 0})}finally{u(!1)}}},[t,e.id,e.name,l]),[m,h]=(0,H.useState)(!1),g=x();return(0,U.jsxs)(`div`,{className:w(`group relative flex flex-col gap-2`,s&&`animate-[card-entrance_400ms_ease-out]`),onAnimationEnd:s?c:void 0,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),className:w(`relative w-full cursor-pointer overflow-hidden rounded-xl`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`),children:(0,U.jsx)(D,{name:e.name,icon:e.icon,loadHtml:d})}),(0,U.jsx)(`div`,{className:w(`absolute right-2 top-2 z-20 transition-opacity`,`max-md:opacity-100`,`md:group-hover:opacity-100 md:group-focus-within:opacity-100`,m?`opacity-100`:`md:opacity-0`),children:(0,U.jsx)(Y,{appName:e.name,isPinned:n,open:m,onOpenChange:h,onPin:()=>i(e),onDelete:a?()=>a(e):void 0,onShare:p,onDeploy:o,isMobile:g})}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>r(e.id),className:`flex cursor-pointer flex-col gap-0.5 px-0.5 text-left outline-none`,children:[(0,U.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.name}),(0,U.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:V(new Date(e.createdAt))})]})]})}function Y({appName:e,isPinned:t,open:r,onOpenChange:i,onPin:a,onDelete:o,onShare:c,onDeploy:l,isMobile:f}){return f?(0,U.jsxs)(u.Root,{open:r,onOpenChange:i,children:[(0,U.jsx)(u.Trigger,{asChild:!0,children:(0,U.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,U.jsx)(E,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,U.jsxs)(u.Content,{children:[(0,U.jsx)(u.Header,{className:`sr-only`,children:(0,U.jsx)(u.Title,{children:e})}),(0,U.jsxs)(u.Body,{className:`pt-0`,children:[(0,U.jsx)(d,{icon:t?L:F,label:t?`Unpin`:`Pin`,onSelect:()=>{i(!1),a()}}),c?(0,U.jsx)(d,{icon:p,label:(0,U.jsxs)(`span`,{className:`flex flex-col gap-0.5 overflow-visible whitespace-normal`,children:[(0,U.jsx)(`span`,{children:`Share`}),(0,U.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Export as .vellum file`})]}),onSelect:()=>{i(!1),c()}}):null,l?(0,U.jsx)(d,{icon:m,label:(0,U.jsxs)(`span`,{className:`flex flex-col gap-0.5 overflow-visible whitespace-normal`,children:[(0,U.jsx)(`span`,{children:`Deploy to Vercel`}),(0,U.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Publish as a static page`})]}),onSelect:()=>{i(!1),l()}}):null,o?(0,U.jsx)(d,{icon:j,label:`Delete`,onSelect:()=>{i(!1),o()}}):null]})]})]}):(0,U.jsxs)(s.Root,{open:r,onOpenChange:i,children:[(0,U.jsx)(s.Trigger,{asChild:!0,children:(0,U.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,U.jsx)(E,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,U.jsxs)(s.Content,{align:`end`,sideOffset:4,children:[(0,U.jsx)(s.Item,{leftIcon:t?(0,U.jsx)(L,{size:14}):(0,U.jsx)(F,{size:14}),onSelect:()=>a(),className:`whitespace-nowrap`,children:t?`Unpin`:`Pin`}),c?(0,U.jsx)(s.Item,{leftIcon:(0,U.jsx)(p,{size:14}),onSelect:()=>c(),className:`whitespace-nowrap`,children:`Share`}):null,l?(0,U.jsx)(s.Item,{leftIcon:(0,U.jsx)(m,{size:14}),onSelect:()=>l(),className:`whitespace-nowrap`,children:`Deploy to Vercel`}):null,o?(0,U.jsx)(s.Item,{leftIcon:(0,U.jsx)(j,{size:14,className:`text-red-600`}),onSelect:()=>o(),className:`whitespace-nowrap text-red-600 data-[highlighted]:text-red-700`,children:`Delete`}):null]})]})}function X({title:e,apps:t,assistantId:n,pinnedAppIds:r,lastImportedAppId:i,onOpen:a,onPin:o,onDelete:s,onDeploy:c,onAnimationEnd:l}){return t.length===0?null:(0,U.jsxs)(`section`,{children:[(0,U.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:e}),(0,U.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:t.map(e=>(0,U.jsx)(J,{app:e,assistantId:n,isPinned:r.has(e.id),onOpen:a,onPin:o,onDelete:s,justImported:e.id===i,onAnimationEnd:l,onDeploy:c?()=>c(e.id):void 0},e.id))})]})}var Z=(e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt;function Q(e){let t=M.use.pinnedAppIds(),{data:n=[],isLoading:r,error:i}=a({...y({path:{assistant_id:e}}),select:e=>e.apps}),{data:o=[],isLoading:s,error:c}=a({..._({path:{assistant_id:e}}),select:e=>e.documents}),l=r||s,u=i&&c?i instanceof Error?i.message:`Failed to load library`:null,[d,f]=(0,H.useState)(``),p=(0,H.useMemo)(()=>{if(!d.trim())return n;let e=d.toLowerCase();return n.filter(t=>t.name.toLowerCase().includes(e)||t.description?.toLowerCase().includes(e))},[n,d]);return{apps:n,documents:o,filteredApps:p,pinnedApps:(0,H.useMemo)(()=>p.filter(e=>t.has(e.id)).sort(Z),[p,t]),recentApps:(0,H.useMemo)(()=>p.filter(e=>!t.has(e.id)).sort(Z),[p,t]),filteredDocuments:(0,H.useMemo)(()=>{if(!d.trim())return o;let e=d.toLowerCase();return o.filter(t=>t.title.toLowerCase().includes(e))},[o,d]),searchText:d,setSearchText:f,loading:l,error:u}}async function $(e,t){let{data:n,error:r,response:i}=await h({path:{assistant_id:e},body:t,bodySerializer:e=>e,headers:{"Content-Type":`application/octet-stream`},throwOnError:!1});if(!i||!i.ok){let e=(r&&typeof r==`object`&&`message`in r?r.message:null)??`Failed to import app.`;throw Error(e)}return n}function ee({assistantId:e,assistantName:t,title:r,onNewConversation:a,onOpenDocument:o,onOpenApp:s}){let c=i(),u=M.use.togglePin(),d=M.use.pinnedAppIds(),p=N.use.isDeploying(),{apps:m,documents:h,filteredApps:_,pinnedApps:y,recentApps:b,filteredDocuments:x,searchText:w,setSearchText:T,loading:E,error:D}=Q(e),[A,j]=(0,H.useState)(null),[P,F]=(0,H.useState)(!1),I=(0,H.useCallback)(async()=>{let t=A;if(!(!t||P)){F(!0);try{await g({path:{assistant_id:e,id:t.id},throwOnError:!0}),C(e,t.id),c.invalidateQueries({queryKey:v({path:{assistant_id:e}})}),d.has(t.id)&&u(t),j(null)}catch(e){f.error(e instanceof Error?e.message:`Failed to delete app`)}finally{F(!1)}}},[A,P,e,d,u,c]),L=(0,H.useCallback)(()=>{P||j(null)},[P]),z=(0,H.useRef)(null),[B,V]=(0,H.useState)(!1),G=(0,H.useCallback)(async t=>{let n=t.target.files?.[0];if(!(!n||B)){V(!0);try{let t=await $(e,n);await c.invalidateQueries({queryKey:v({path:{assistant_id:e}})}),f.success(t.name+` imported`),s(t.appId)}catch(e){f.error(e instanceof Error?e.message:`Failed to import app`)}finally{V(!1),z.current&&(z.current.value=``)}}},[e,B,c,s]),J=(0,H.useCallback)(async t=>{if(p)return;let n=m.find(e=>e.id===t)?.name??`this app`;try{let r=await S(e,t);N.getState().deployApp(e,t,n,r)}catch{N.getState().deployApp(e,t,n,``)}},[e,p,m]),Y=(0,H.useCallback)(e=>u(e),[u]);return E?(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,U.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-base)] border-t-[var(--primary-base)]`,role:`status`,"aria-label":`Loading apps`})}):D?(0,U.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4`,children:[(0,U.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:D}),(0,U.jsx)(`button`,{type:`button`,className:`rounded-lg bg-[var(--primary-base)] px-4 py-2 text-body-medium-default text-[var(--content-inset)] transition-colors hover:bg-[var(--primary-hover)]`,onClick:()=>window.location.reload(),children:`Retry`})]}):m.length===0&&h.length===0?(0,U.jsx)(q,{fileInputRef:z,isImporting:B,onImportBundle:G,onNewConversation:a?()=>a():void 0}):(0,U.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[(0,U.jsxs)(`div`,{className:`mb-4 flex shrink-0 items-center justify-between gap-4`,children:[r?(0,U.jsx)(`h1`,{className:`text-title-large text-[var(--content-default)]`,children:r}):(0,U.jsx)(`span`,{}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{ref:z,type:`file`,accept:`.vellum`,className:`hidden`,onChange:G}),(0,U.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>z.current?.click(),disabled:B,children:[B?(0,U.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,U.jsx)(k,{size:14}),(0,U.jsx)(`span`,{className:`ml-1.5`,children:`Import`})]})]})]}),(0,U.jsx)(`div`,{className:`mb-6 shrink-0`,children:(0,U.jsx)(l,{fullWidth:!0,type:`text`,placeholder:`Search your library`,value:w,onChange:e=>T(e.target.value),leftIcon:(0,U.jsx)(O,{size:16})})}),(0,U.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:_.length===0&&x.length===0?(0,U.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16`,children:[(0,U.jsx)(O,{size:32,className:`mb-4 text-[var(--content-tertiary)]`}),(0,U.jsxs)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No apps or documents matched “`,w,`”`]})]}):(0,U.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,U.jsx)(X,{title:`Pinned`,apps:y,assistantId:e,pinnedAppIds:d,onOpen:s,onPin:Y,onDelete:j,onDeploy:J}),(0,U.jsx)(X,{title:`Recents`,apps:b,assistantId:e,pinnedAppIds:d,onOpen:s,onPin:Y,onDelete:j,onDeploy:J}),x.length>0?(0,U.jsxs)(`section`,{children:[(0,U.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:`Documents`}),(0,U.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:x.map(e=>(0,U.jsx)(K,{document:e,onOpen:e=>{o&&o(e)}},e.surfaceId))})]}):null]})}),(0,U.jsx)(R,{assistantId:e,assistantName:t,onStartConversation:a}),(0,U.jsx)(W,{app:A,isDeleting:P,onConfirm:I,onCancel:L})]})}function te(){let e=z(),t=r();return(0,U.jsx)(B,{children:(0,U.jsx)(ee,{assistantId:e,title:`Library`,onNewConversation:(0,H.useCallback)(e=>{A(t,{prompt:e})},[t]),onOpenDocument:(0,H.useCallback)(e=>{t(b.document(e))},[t]),onOpenApp:(0,H.useCallback)(e=>{t(b.library.app(e))},[t])})})}export{te as LibraryPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{h as r,t as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./cn-DvW5mxZR.js";import"./src-BJj2O5XB.js";import{F as s,N as c,P as l}from"./auth-store-CbVvQiBR.js";import{a as u}from"./routes-B9xcBuuC.js";import{n as d,r as f}from"./login-flow-DVsR7fEC.js";import{t as p}from"./public-asset-CH9GPeL_.js";import{t as m}from"./google-logo-DNkI-jCf.js";import{mi as h,q as g}from"./index-Cx6vyW7T.js";var _=e(t(),1),v=a();function y({children:e}){return(0,v.jsxs)(`div`,{className:`fixed inset-0 z-50 flex flex-col items-center justify-center bg-[var(--surface-base)] text-[var(--content-default)]`,children:[(0,v.jsx)(`img`,{src:p(`/vellum-logo.svg`),alt:`Vellum`,width:220,height:66,className:`block dark:hidden`}),(0,v.jsx)(`img`,{src:p(`/vellum-logo-white.svg`),alt:`Vellum`,width:220,height:66,className:`hidden dark:block`}),e,(0,v.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute left-1/2 w-full max-w-[900px] -translate-x-1/2`,style:{bottom:0},children:(0,v.jsx)(`img`,{src:p(`/login-background-characters.svg`),alt:``,width:880,height:182,className:`h-auto w-full`})})]})}function b(){return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{className:`pointer-events-none absolute top-[120px] left-1/2 z-0 -translate-x-1/2`,children:(0,v.jsx)(`img`,{src:p(`/vellum-logo-white.svg`),alt:`Vellum`,width:92,height:28})}),(0,v.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute right-0 bottom-0 left-1/2 z-0 w-full max-w-[1100px] -translate-x-1/2`,children:(0,v.jsx)(`img`,{src:p(`/login-background-characters.svg`),alt:``,width:880,height:182,className:`h-auto w-full`})})]})}var x=`flex w-full max-w-[448px] flex-col gap-6 rounded-lg border border-[var(--border-disabled)] bg-[var(--surface-lift)] p-6`;function S({children:e}){return(0,v.jsx)(`div`,{className:x,children:e})}function C({children:e}){return(0,v.jsx)(`h1`,{className:`text-title-large text-center text-[var(--content-emphasised)]`,children:e})}function w({children:e,className:t}){return(0,v.jsx)(`p`,{className:o(`text-body-small-default text-center text-[var(--system-negative-strong)]`,t),children:e})}function T({children:e}){return(0,v.jsx)(`div`,{className:`dark`,children:(0,v.jsxs)(`div`,{className:`relative min-h-screen overflow-x-hidden bg-[var(--surface-base)] text-[var(--content-default)]`,children:[(0,v.jsx)(b,{}),(0,v.jsx)(`div`,{className:`relative z-10 flex min-h-screen flex-col items-center justify-center px-4`,children:e})]})})}function E({signUpHref:e}){return(0,v.jsxs)(`p`,{className:`text-body-small-default flex justify-center gap-1`,children:[(0,v.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Don't have an account?`}),(0,v.jsx)(i,{to:e,className:`font-medium text-[var(--content-emphasised)] hover:underline`,children:`Sign up`})]})}function D({returnTo:e,loading:t,errorMessage:r,onProviderClick:i}){let a=e?`${u.account.signup}?returnTo=${encodeURIComponent(e)}`:u.account.signup;return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(C,{children:`Sign in to Vellum`}),r&&(0,v.jsx)(w,{children:r}),(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,v.jsx)(n,{type:`button`,variant:`outlined`,fullWidth:!0,onClick:()=>i(`AppleOAuth`),disabled:t,leftIcon:(0,v.jsx)(g,{}),className:`max-w-[300px] gap-3`,children:`Continue with Apple`}),(0,v.jsx)(n,{type:`button`,variant:`outlined`,fullWidth:!0,onClick:()=>i(`GoogleOAuth`),disabled:t,leftIcon:(0,v.jsx)(m,{}),className:`max-w-[300px] gap-3`,children:`Continue with Google`}),(0,v.jsx)(n,{type:`button`,variant:`outlined`,fullWidth:!0,onClick:()=>i(),disabled:t,leftIcon:(0,v.jsx)(h,{}),className:`max-w-[300px] gap-3`,children:`Continue with Email`})]}),(0,v.jsx)(E,{signUpHref:a})]})}var O={signup_closed:`Sign-ups are currently closed. Visit vellum.ai/community to request access.`};function k({returnTo:e}){let[t,r]=(0,_.useState)(null),[i,a]=(0,_.useState)(!1),o=async()=>{r(null),a(!0);try{await l({returnTo:e??null})}catch(e){let t=e&&typeof e==`object`&&`code`in e?e.code:void 0;if(t===`USER_CANCELLED`){a(!1);return}if(t===`AUTH_ERROR`){let t=e&&typeof e==`object`&&`data`in e&&e.data&&typeof e.data==`object`&&`authError`in e.data&&typeof e.data.authError==`string`?e.data.authError:void 0;r((t&&O[t])??`Something went wrong. Please try again.`)}else console.error(`[native-auth] auth flow failed:`,e),r(`Something went wrong. Please try again.`);a(!1)}};return(0,v.jsx)(y,{children:(0,v.jsxs)(`div`,{className:`z-10 mt-8 flex w-full max-w-[320px] flex-col items-center gap-3`,children:[t&&(0,v.jsx)(w,{className:`max-w-[280px]`,children:t}),(0,v.jsx)(n,{type:`button`,variant:`primary`,fullWidth:!0,onClick:()=>{o()},disabled:i,className:`max-w-[300px]`,children:`Sign in`})]})})}function A({returnTo:e}){let[t,n]=(0,_.useState)(null),[r,i]=(0,_.useState)(!1),a=f(e),o=async t=>{n(null),i(!0);try{await c(d,a,{...t?{providerHint:t}:{},returnTo:e})}catch(e){console.error(`[web-login] auth flow failed:`,e),n(`Something went wrong. Please try again.`),i(!1)}};return(0,v.jsx)(T,{children:(0,v.jsx)(S,{children:(0,v.jsx)(D,{returnTo:e,loading:r,errorMessage:t,onProviderClick:e=>{o(e)}})})})}function j(){let[e]=r(),t=s(),n=e.get(`returnTo`);return t?(0,v.jsx)(k,{returnTo:n}):(0,v.jsx)(A,{returnTo:n})}export{j as LoginPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{n as r}from"./QueryClientProvider-DKhXIxGb.js";import{t as i}from"./useQuery-B45lW1Kk.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./card-BibIM9x3.js";import{t as s}from"./confirm-dialog-SpCsmAdG.js";import{t as c}from"./input-Ch7OC6ME.js";import{t as l}from"./toggle-95p73HGd.js";import{t as u}from"./modal-CHuPOsJJ.js";import{n as d}from"./toast-CxaZ5f1d.js";import{t as f}from"./skill-row-DDoJmniT.js";import{t as p}from"./cable-C0pEWbc5.js";import{t as m}from"./chevron-right-BNHlGCTg.js";import{t as h}from"./circle-alert-bz1ccYRI.js";import{t as g}from"./circle-check-DBzb54Kz.js";import{t as _}from"./loader-circle-Cw1KvvLK.js";import{t as v}from"./refresh-cw-YXbpNg95.js";import{t as y}from"./client.gen-0CkwJ2Ya.js";import{$r as b,Nr as x,Qr as S,Si as C,ta as w}from"./index-Cx6vyW7T.js";import{t as T}from"./use-active-assistant-id-BlwRimQH.js";var E=e(t(),1),D=a(),O=[{value:`sse`,label:`SSE`},{value:`streamable-http`,label:`Streamable HTTP`},{value:`stdio`,label:`Stdio (command)`}];function k({open:e,onClose:t,onAdd:r,isPending:i}){let[a,o]=(0,E.useState)(``),[s,l]=(0,E.useState)(`sse`),[d,f]=(0,E.useState)(``),[m,h]=(0,E.useState)(``),[g,_]=(0,E.useState)(``),v=(0,E.useCallback)(()=>{o(``),l(`sse`),f(``),h(``),_(``)},[]),y=(0,E.useCallback)(()=>{i||(v(),t())},[i,v,t]),b=(0,E.useCallback)(()=>{let e=a.trim();if(!e)return;let t={name:e,transportType:s};if(s===`stdio`){let e=m.trim();if(!e)return;t.command=e;let n=g.trim();n&&(t.args=n.split(/\s+/))}else{let e=d.trim();if(!e)return;t.url=e}r(t)},[a,s,d,m,g,r]),x=s===`stdio`,S=a.trim()&&(x?m.trim():d.trim());return(0,D.jsx)(u.Root,{open:e,onOpenChange:e=>{e||y()},children:(0,D.jsxs)(u.Content,{size:`md`,children:[(0,D.jsxs)(u.Header,{children:[(0,D.jsx)(u.Title,{icon:p,children:`Add MCP Server`}),(0,D.jsx)(u.Description,{children:`Connect to a Model Context Protocol server to extend available tools.`})]}),(0,D.jsx)(u.Body,{children:(0,D.jsxs)(`div`,{className:`space-y-4`,children:[(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-name`,children:`Server name`}),(0,D.jsx)(c,{id:`mcp-name`,type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`my-server`,fullWidth:!0,autoFocus:!0})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-transport`,children:`Transport`}),(0,D.jsx)(`select`,{id:`mcp-transport`,value:s,onChange:e=>l(e.target.value),className:`w-full rounded-md border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-1.5 text-body-medium-default text-[var(--content-default)] outline-none focus:ring-2 focus:ring-[var(--ring)]`,children:O.map(e=>(0,D.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),x?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-command`,children:`Command`}),(0,D.jsx)(c,{id:`mcp-command`,type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`npx -y @modelcontextprotocol/server-example`,fullWidth:!0})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-args`,children:`Arguments (space-separated)`}),(0,D.jsx)(c,{id:`mcp-args`,type:`text`,value:g,onChange:e=>_(e.target.value),placeholder:`--port 3000`,fullWidth:!0})]})]}):(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-url`,children:`Server URL`}),(0,D.jsx)(c,{id:`mcp-url`,type:`url`,value:d,onChange:e=>f(e.target.value),placeholder:`https://example.com/mcp`,fullWidth:!0})]})]})}),(0,D.jsxs)(u.Footer,{children:[(0,D.jsx)(n,{variant:`ghost`,onClick:y,disabled:i,children:`Cancel`}),(0,D.jsx)(n,{variant:`primary`,onClick:b,disabled:!S||i,children:i?`Adding...`:`Add Server`})]})]})})}async function A(e){let{data:t,response:n}=await y.get({url:`/v1/assistants/{assistant_id}/internal/mcp/list`,path:{assistant_id:e}});if(!n?.ok)throw Error(`Failed to fetch MCP servers: ${n?.status}`);return t}async function j(e){let{data:t,response:n}=await y.get({url:`/v1/assistants/{assistant_id}/internal/mcp/tools-summary`,path:{assistant_id:e}});if(!n?.ok)throw Error(`Failed to fetch MCP tools summary: ${n?.status}`);return t}async function M(e,t){let{response:n}=await y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/update`,path:{assistant_id:e},body:t});if(!n?.ok)throw Error(`Failed to update MCP server: ${n?.status}`)}async function N(e,t){let{response:n}=await y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/add`,path:{assistant_id:e},body:t});if(!n?.ok)throw Error(`Failed to add MCP server: ${n?.status}`)}async function P(e,t){let{response:n}=await y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/remove`,path:{assistant_id:e},body:{name:t}});if(!n?.ok)throw Error(`Failed to remove MCP server: ${n?.status}`)}async function F(e){let{response:t}=await y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/reload`,path:{assistant_id:e},body:{}});if(!t?.ok)throw Error(`Failed to reload MCP servers: ${t?.status}`)}var I={connected:{icon:g,label:`Connected`,className:`text-[var(--system-positive-strong)]`},"needs-auth":{icon:C,label:`Needs Auth`,className:`text-[var(--system-warning-strong)]`},disabled:{icon:S,label:`Disabled`,className:`text-[var(--content-tertiary)]`}},L={icon:h,label:`Error`,className:`text-[var(--system-negative-strong)]`};function R({server:e,toolsSummary:t,onToggleEnabled:r,onRemove:i,onConfigure:a,isUpdating:s}){let[c,u]=(0,E.useState)(!1),d=I[e.status]??L,p=d.icon,h=(0,E.useCallback)(t=>r(e.id,t),[r,e.id]),g=(0,E.useCallback)(()=>i(e.id),[i,e.id]),v=(0,E.useCallback)(()=>a(e.id),[a,e.id]),y=(0,E.useCallback)(()=>u(e=>!e),[]);return(0,D.jsx)(o.Root,{children:(0,D.jsxs)(o.Body,{children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,D.jsx)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:(0,D.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e.id}),(0,D.jsxs)(`span`,{className:`flex items-center gap-1 text-label-medium-default ${d.className}`,children:[(0,D.jsx)(p,{className:`h-3.5 w-3.5`}),d.label]})]}),(0,D.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,D.jsx)(`span`,{children:e.transport.type}),t?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,D.jsxs)(`span`,{children:[t.toolCount,` `,t.toolCount===1?`tool`:`tools`]}),(0,D.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,D.jsxs)(`span`,{children:[`~`,t.estimatedTokens.toLocaleString(),` tokens`]})]}):null]})]})}),(0,D.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[s?(0,D.jsx)(_,{className:`h-4 w-4 animate-spin text-[var(--content-tertiary)]`}):null,(0,D.jsx)(l,{checked:e.enabled,onChange:h,disabled:s,"aria-label":`${e.enabled?`Disable`:`Enable`} ${e.id}`}),(0,D.jsx)(n,{variant:`ghost`,size:`compact`,onClick:v,tooltip:`Configure`,children:`Configure`}),(0,D.jsx)(n,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,D.jsx)(x,{}),onClick:g,tooltip:`Remove server`,"aria-label":`Remove ${e.id}`})]})]}),t&&t.tools.length>0?(0,D.jsxs)(`div`,{className:`mt-3 border-t border-[var(--border-base)] pt-2`,children:[(0,D.jsxs)(`button`,{type:`button`,onClick:y,className:`flex w-full cursor-pointer items-center gap-1 text-body-small-default text-[var(--content-secondary)] hover:text-[var(--content-default)]`,children:[c?(0,D.jsx)(w,{className:`h-3.5 w-3.5`}):(0,D.jsx)(m,{className:`h-3.5 w-3.5`}),t.toolCount,` registered `,t.toolCount===1?`tool`:`tools`]}),c?(0,D.jsx)(`div`,{className:`mt-2 max-h-60 space-y-1 overflow-y-auto`,children:t.tools.map(e=>(0,D.jsx)(f,{title:(0,D.jsx)(`span`,{className:`font-medium text-[var(--content-default)]`,children:e.name}),subtitle:e.description||void 0,action:(0,D.jsxs)(`span`,{className:`whitespace-nowrap text-body-small-default text-[var(--content-tertiary)]`,children:[`~`,e.estimatedTokens.toLocaleString(),` tok`]})},e.name))}):null]}):null]})})}var z=[`low`,`medium`,`high`];function B({server:e,toolsSummary:t,onClose:r,onSave:i,isPending:a}){let[o,s]=(0,E.useState)(`medium`);(0,E.useEffect)(()=>{e&&s(e.defaultRiskLevel)},[e]);let c=(0,E.useCallback)(()=>{e&&i(e.id,{name:e.id,defaultRiskLevel:o})},[e,o,i]),l=(0,E.useCallback)(()=>{a||r()},[a,r]);return e?(0,D.jsx)(u.Root,{open:!!e,onOpenChange:e=>{e||l()},children:(0,D.jsxs)(u.Content,{size:`lg`,children:[(0,D.jsxs)(u.Header,{children:[(0,D.jsx)(u.Title,{icon:p,children:e.id}),(0,D.jsxs)(u.Description,{children:[e.transport.type,` transport · `,e.status]})]}),(0,D.jsx)(u.Body,{children:(0,D.jsxs)(`div`,{className:`space-y-5`,children:[(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-risk`,children:`Default risk level`}),(0,D.jsx)(`select`,{id:`mcp-risk`,value:o,onChange:e=>s(e.target.value),className:`w-full rounded-md border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-1.5 text-body-medium-default text-[var(--content-default)] outline-none focus:ring-2 focus:ring-[var(--ring)]`,children:z.map(e=>(0,D.jsx)(`option`,{value:e,children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]}),t&&t.tools.length>0?(0,D.jsxs)(`div`,{className:`space-y-2`,children:[(0,D.jsxs)(`h3`,{className:`text-body-medium-default text-[var(--content-default)]`,children:[`Registered tools (`,t.toolCount,`)`]}),(0,D.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Total estimated token overhead: ~`,t.estimatedTokens.toLocaleString(),` tokens`]}),(0,D.jsx)(`div`,{className:`max-h-64 overflow-y-auto rounded-lg border border-[var(--border-base)]`,children:(0,D.jsxs)(`table`,{className:`w-full text-body-small-default`,children:[(0,D.jsx)(`thead`,{children:(0,D.jsxs)(`tr`,{className:`border-b border-[var(--border-base)] bg-[var(--surface-base)]`,children:[(0,D.jsx)(`th`,{className:`px-3 py-2 text-left font-medium text-[var(--content-secondary)]`,children:`Tool`}),(0,D.jsx)(`th`,{className:`px-3 py-2 text-left font-medium text-[var(--content-secondary)]`,children:`Description`}),(0,D.jsx)(`th`,{className:`px-3 py-2 text-right font-medium text-[var(--content-secondary)]`,children:`Tokens`})]})}),(0,D.jsx)(`tbody`,{children:t.tools.map(e=>(0,D.jsxs)(`tr`,{className:`border-b border-[var(--border-base)] last:border-b-0`,children:[(0,D.jsx)(`td`,{className:`px-3 py-2 font-medium text-[var(--content-default)]`,children:e.name}),(0,D.jsx)(`td`,{className:`max-w-xs truncate px-3 py-2 text-[var(--content-tertiary)]`,children:e.description||`—`}),(0,D.jsxs)(`td`,{className:`px-3 py-2 text-right text-[var(--content-tertiary)]`,children:[`~`,e.estimatedTokens.toLocaleString()]})]},e.name))})]})})]}):null]})}),(0,D.jsxs)(u.Footer,{children:[(0,D.jsx)(n,{variant:`ghost`,onClick:l,disabled:a,children:`Cancel`}),(0,D.jsx)(n,{variant:`primary`,onClick:c,disabled:a,children:a?`Saving...`:`Save`})]})]})}):null}var V=`mcp-servers`,H=`mcp-tools-summary`;function U(){let e=T(),t=r(),[a,o]=(0,E.useState)(!1),[c,l]=(0,E.useState)(null),[u,f]=(0,E.useState)(null),[m,h]=(0,E.useState)(new Set),[g,y]=(0,E.useState)(!1),[x,S]=(0,E.useState)(!1),[C,w]=(0,E.useState)(!1),[O,I]=(0,E.useState)(!1),{data:L,isLoading:z,isError:U}=i({queryKey:[V,e],queryFn:()=>A(e)}),{data:W}=i({queryKey:[H,e],queryFn:()=>j(e)}),G=(0,E.useCallback)(()=>{t.invalidateQueries({queryKey:[V,e]}),t.invalidateQueries({queryKey:[H,e]})},[t,e]),K=(0,E.useMemo)(()=>{let e=new Map;if(W)for(let t of W.servers)e.set(t.serverId,t);return e},[W]),q=(0,E.useMemo)(()=>!c||!L?null:L.servers.find(e=>e.id===c)??null,[c,L]),J=(0,E.useCallback)(async(t,n)=>{h(e=>new Set(e).add(t));try{await M(e,{name:t,enabled:n}),G()}catch{d.error(`Failed to ${n?`enable`:`disable`} ${t}`)}finally{h(e=>{let n=new Set(e);return n.delete(t),n})}},[e,G]),Y=(0,E.useCallback)(async()=>{if(u){S(!0);try{await P(e,u),G(),d.success(`Removed ${u}`),f(null)}catch{d.error(`Failed to remove ${u}`)}finally{S(!1)}}},[u,e,G]),X=(0,E.useCallback)(async t=>{y(!0);try{await N(e,t),G(),d.success(`Added ${t.name}`),o(!1)}catch{d.error(`Failed to add ${t.name}`)}finally{y(!1)}},[e,G]),Z=(0,E.useCallback)(async(t,n)=>{w(!0);try{await M(e,n),G(),d.success(`Updated ${t}`),l(null)}catch{d.error(`Failed to update ${t}`)}finally{w(!1)}},[e,G]),Q=(0,E.useCallback)(async()=>{I(!0);try{await F(e),G(),d.success(`MCP servers reloaded`)}catch{d.error(`Failed to reload MCP servers`)}finally{I(!1)}},[e,G]),$=L?.servers??[];return(0,D.jsxs)(`div`,{className:`space-y-4`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h2`,{className:`text-title-small text-[var(--content-default)]`,children:`MCP Servers`}),(0,D.jsx)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Manage Model Context Protocol server connections and their registered tools.`})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(n,{variant:`ghost`,size:`compact`,iconOnly:(0,D.jsx)(v,{className:O?`animate-spin`:``}),onClick:Q,disabled:O,tooltip:`Reload all servers`,"aria-label":`Reload MCP servers`}),(0,D.jsx)(n,{variant:`primary`,size:`compact`,leftIcon:(0,D.jsx)(b,{}),onClick:()=>o(!0),children:`Add Server`})]})]}),W?(0,D.jsxs)(`div`,{className:`flex gap-4 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,D.jsxs)(`span`,{children:[W.totalToolCount,` total `,W.totalToolCount===1?`tool`:`tools`]}),(0,D.jsxs)(`span`,{children:[`~`,W.totalEstimatedTokens.toLocaleString(),` total tokens`]})]}):null,z?(0,D.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,D.jsx)(_,{className:`h-4 w-4 animate-spin`}),(0,D.jsx)(`span`,{children:`Loading MCP servers...`})]}):U?(0,D.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Failed to load MCP servers. Check that an assistant is running.`}):$.length===0?(0,D.jsxs)(`div`,{className:`flex flex-col items-center gap-2 rounded-lg border border-dashed border-[var(--border-element)] px-4 py-12 text-center`,children:[(0,D.jsx)(p,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,D.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`No MCP Servers`}),(0,D.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Add an MCP server to extend your assistant with external tools.`})]}):(0,D.jsx)(`div`,{className:`space-y-2`,children:$.map(e=>(0,D.jsx)(R,{server:e,toolsSummary:K.get(e.id),onToggleEnabled:J,onRemove:f,onConfigure:l,isUpdating:m.has(e.id)},e.id))}),(0,D.jsx)(k,{open:a,onClose:()=>o(!1),onAdd:X,isPending:g}),(0,D.jsx)(B,{server:q,toolsSummary:c?K.get(c):void 0,onClose:()=>l(null),onSave:Z,isPending:C}),(0,D.jsx)(s,{open:!!u,title:`Remove MCP Server`,message:`Are you sure you want to remove "${u}"? This will disconnect all tools provided by this server.`,confirmLabel:`Remove`,destructive:!0,isPending:x,onConfirm:Y,onCancel:()=>f(null)})]})}function W(){return(0,D.jsx)(U,{})}export{W as McpPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{C as n,E as r,S as i,a,o,s,w as c,y as l}from"./button-D7s2Q_uG.js";import{t as u}from"./jsx-runtime-CVSDxk6A.js";import{a as d,o as f,t as p}from"./cn-DvW5mxZR.js";import{t as m}from"./createLucideIcon-Bjb-Kuq7.js";import{t as h}from"./check-CW0KmV0o.js";import{n as g,t as _}from"./dist-BQHdyjQ3.js";import{a as v,i as ee,n as y,r as te,t as ne}from"./Combination-CDqVzelh.js";import{a as b,i as x,n as re,o as S,r as C}from"./popover-BsF65jZY.js";var w=m(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),T=m(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),E=e(t(),1),D=u();function O(e){let t=ie(e),n=E.forwardRef((e,n)=>{let{children:r,...i}=e,a=E.Children.toArray(r),o=a.find(A);if(o){let e=o.props.children,r=a.map(t=>t===o?E.Children.count(e)>1?E.Children.only(null):E.isValidElement(e)?e.props.children:null:t);return(0,D.jsx)(t,{...i,ref:n,children:E.isValidElement(e)?E.cloneElement(e,void 0,r):null})}return(0,D.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function ie(e){let t=E.forwardRef((e,t)=>{let{children:n,...r}=e;if(E.isValidElement(n)){let e=j(n),i=ae(r,n.props);return n.type!==E.Fragment&&(i.ref=t?d(t,e):e),E.cloneElement(n,i)}return E.Children.count(n)>1?E.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var k=Symbol(`radix.slottable`);function A(e){return E.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===k}function ae(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function j(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function M(e){let t=e+`CollectionProvider`,[n,i]=r(t),[a,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:n}=e,r=E.useRef(null),i=E.useRef(new Map).current;return(0,D.jsx)(a,{scope:t,itemMap:i,collectionRef:r,children:n})};s.displayName=t;let c=e+`CollectionSlot`,l=O(c),u=E.forwardRef((e,t)=>{let{scope:n,children:r}=e;return(0,D.jsx)(l,{ref:f(t,o(c,n).collectionRef),children:r})});u.displayName=c;let d=e+`CollectionItemSlot`,p=`data-radix-collection-item`,m=O(d),h=E.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,a=E.useRef(null),s=f(t,a),c=o(d,n);return E.useEffect(()=>(c.itemMap.set(a,{ref:a,...i}),()=>void c.itemMap.delete(a))),(0,D.jsx)(m,{[p]:``,ref:s,children:r})});h.displayName=d;function g(t){let n=o(e+`CollectionConsumer`,t);return E.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${p}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:s,Slot:u,ItemSlot:h},g,i]}var N=E.createContext(void 0);function P(e){let t=E.useContext(N);return e||t||`ltr`}var F=`rovingFocusGroup.onEntryFocus`,oe={bubbles:!1,cancelable:!0},I=`RovingFocusGroup`,[se,ce,le]=M(I),[ue,de]=r(I,[le]),[fe,pe]=ue(I),me=E.forwardRef((e,t)=>(0,D.jsx)(se.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,D.jsx)(se.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,D.jsx)(he,{...e,ref:t})})}));me.displayName=I;var he=E.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:a,loop:s=!1,dir:c,currentTabStopId:l,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:d,onEntryFocus:p,preventScrollOnEntryFocus:m=!1,...h}=e,_=E.useRef(null),v=f(t,_),ee=P(c),[y,te]=o({prop:l,defaultProp:u??null,onChange:d,caller:I}),[ne,b]=E.useState(!1),x=i(p),re=ce(r),S=E.useRef(!1),[C,w]=E.useState(0);return E.useEffect(()=>{let e=_.current;if(e)return e.addEventListener(F,x),()=>e.removeEventListener(F,x)},[x]),(0,D.jsx)(fe,{scope:r,orientation:a,dir:ee,loop:s,currentTabStopId:y,onItemFocus:E.useCallback(e=>te(e),[te]),onItemShiftTab:E.useCallback(()=>b(!0),[]),onFocusableItemAdd:E.useCallback(()=>w(e=>e+1),[]),onFocusableItemRemove:E.useCallback(()=>w(e=>e-1),[]),children:(0,D.jsx)(n.div,{tabIndex:ne||C===0?-1:0,"data-orientation":a,...h,ref:v,style:{outline:`none`,...e.style},onMouseDown:g(e.onMouseDown,()=>{S.current=!0}),onFocus:g(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!ne){let t=new CustomEvent(F,oe);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=re().filter(e=>e.focusable);xe([e.find(e=>e.active),e.find(e=>e.id===y),...e].filter(Boolean).map(e=>e.ref.current),m)}}S.current=!1}),onBlur:g(e.onBlur,()=>b(!1))})})}),ge=`RovingFocusGroupItem`,_e=E.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:i=!0,active:a=!1,tabStopId:o,children:s,...c}=e,u=l(),d=o||u,f=pe(ge,r),p=f.currentTabStopId===d,m=ce(r),{onFocusableItemAdd:h,onFocusableItemRemove:_,currentTabStopId:v}=f;return E.useEffect(()=>{if(i)return h(),()=>_()},[i,h,_]),(0,D.jsx)(se.ItemSlot,{scope:r,id:d,focusable:i,active:a,children:(0,D.jsx)(n.span,{tabIndex:p?0:-1,"data-orientation":f.orientation,...c,ref:t,onMouseDown:g(e.onMouseDown,e=>{i?f.onItemFocus(d):e.preventDefault()}),onFocus:g(e.onFocus,()=>f.onItemFocus(d)),onKeyDown:g(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){f.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=be(e,f.orientation,f.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=m().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=f.loop?Se(n,r+1):n.slice(r+1)}setTimeout(()=>xe(n))}}),children:typeof s==`function`?s({isCurrentTabStop:p,hasTabStop:v!=null}):s})})});_e.displayName=ge;var ve={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function ye(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function be(e,t,n){let r=ye(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return ve[r]}function xe(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function Se(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Ce=me,we=_e;function Te(e){let t=Ee(e),n=E.forwardRef((e,n)=>{let{children:r,...i}=e,a=E.Children.toArray(r),o=a.find(Oe);if(o){let e=o.props.children,r=a.map(t=>t===o?E.Children.count(e)>1?E.Children.only(null):E.isValidElement(e)?e.props.children:null:t);return(0,D.jsx)(t,{...i,ref:n,children:E.isValidElement(e)?E.cloneElement(e,void 0,r):null})}return(0,D.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function Ee(e){let t=E.forwardRef((e,t)=>{let{children:n,...r}=e;if(E.isValidElement(n)){let e=Ae(n),i=ke(r,n.props);return n.type!==E.Fragment&&(i.ref=t?d(t,e):e),E.cloneElement(n,i)}return E.Children.count(n)>1?E.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var De=Symbol(`radix.slottable`);function Oe(e){return E.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===De}function ke(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Ae(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var je=[`Enter`,` `],Me=[`ArrowDown`,`PageUp`,`Home`],Ne=[`ArrowUp`,`PageDown`,`End`],Pe=[...Me,...Ne],Fe={ltr:[...je,`ArrowRight`],rtl:[...je,`ArrowLeft`]},Ie={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},L=`Menu`,[R,Le,Re]=M(L),[z,B]=r(L,[Re,S,de]),V=S(),ze=de(),[Be,H]=z(L),[Ve,U]=z(L),He=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:a,onOpenChange:o,modal:s=!0}=e,c=V(t),[l,u]=E.useState(null),d=E.useRef(!1),f=i(o),p=P(a);return E.useEffect(()=>{let e=()=>{d.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},t=()=>d.current=!1;return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),(0,D.jsx)(b,{...c,children:(0,D.jsx)(Be,{scope:t,open:n,onOpenChange:f,content:l,onContentChange:u,children:(0,D.jsx)(Ve,{scope:t,onClose:E.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:d,dir:p,modal:s,children:r})})})};He.displayName=L;var Ue=`MenuAnchor`,We=E.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=V(n);return(0,D.jsx)(re,{...i,...r,ref:t})});We.displayName=Ue;var Ge=`MenuPortal`,[Ke,qe]=z(Ge,{forceMount:void 0}),Je=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=H(Ge,t);return(0,D.jsx)(Ke,{scope:t,forceMount:n,children:(0,D.jsx)(_,{present:n||a.open,children:(0,D.jsx)(s,{asChild:!0,container:i,children:r})})})};Je.displayName=Ge;var W=`MenuContent`,[Ye,Xe]=z(W),Ze=E.forwardRef((e,t)=>{let n=qe(W,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=H(W,e.__scopeMenu),o=U(W,e.__scopeMenu);return(0,D.jsx)(R.Provider,{scope:e.__scopeMenu,children:(0,D.jsx)(_,{present:r||a.open,children:(0,D.jsx)(R.Slot,{scope:e.__scopeMenu,children:o.modal?(0,D.jsx)(Qe,{...i,ref:t}):(0,D.jsx)($e,{...i,ref:t})})})})}),Qe=E.forwardRef((e,t)=>{let n=H(W,e.__scopeMenu),r=E.useRef(null),i=f(t,r);return E.useEffect(()=>{let e=r.current;if(e)return y(e)},[]),(0,D.jsx)(G,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:g(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),$e=E.forwardRef((e,t)=>{let n=H(W,e.__scopeMenu);return(0,D.jsx)(G,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),et=Te(`MenuContent.ScrollLock`),G=E.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEntryFocus:c,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:p,onDismiss:m,disableOutsideScroll:h,..._}=e,y=H(W,n),b=U(W,n),re=V(n),S=ze(n),C=Le(n),[w,T]=E.useState(null),O=E.useRef(null),ie=f(t,O,y.onContentChange),k=E.useRef(0),A=E.useRef(``),ae=E.useRef(0),j=E.useRef(null),M=E.useRef(`right`),N=E.useRef(0),P=h?ne:E.Fragment,F=h?{as:et,allowPinchZoom:!0}:void 0,oe=e=>{let t=A.current+e,n=C().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=Pt(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){A.current=t,window.clearTimeout(k.current),t!==``&&(k.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};E.useEffect(()=>()=>window.clearTimeout(k.current),[]),ee();let I=E.useCallback(e=>M.current===j.current?.side&&It(e,j.current?.area),[]);return(0,D.jsx)(Ye,{scope:n,searchRef:A,onItemEnter:E.useCallback(e=>{I(e)&&e.preventDefault()},[I]),onItemLeave:E.useCallback(e=>{I(e)||(O.current?.focus(),T(null))},[I]),onTriggerLeave:E.useCallback(e=>{I(e)&&e.preventDefault()},[I]),pointerGraceTimerRef:ae,onPointerGraceIntentChange:E.useCallback(e=>{j.current=e},[]),children:(0,D.jsx)(P,{...F,children:(0,D.jsx)(te,{asChild:!0,trapped:i,onMountAutoFocus:g(a,e=>{e.preventDefault(),O.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,D.jsx)(v,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:p,onDismiss:m,children:(0,D.jsx)(Ce,{asChild:!0,...S,dir:b.dir,orientation:`vertical`,loop:r,currentTabStopId:w,onCurrentTabStopIdChange:T,onEntryFocus:g(c,e=>{b.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,D.jsx)(x,{role:`menu`,"aria-orientation":`vertical`,"data-state":At(y.open),"data-radix-menu-content":``,dir:b.dir,...re,..._,ref:ie,style:{outline:`none`,..._.style},onKeyDown:g(_.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&oe(e.key));let i=O.current;if(e.target!==i||!Pe.includes(e.key))return;e.preventDefault();let a=C().filter(e=>!e.disabled).map(e=>e.ref.current);Ne.includes(e.key)&&a.reverse(),Mt(a)}),onBlur:g(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(k.current),A.current=``)}),onPointerMove:g(e.onPointerMove,X(e=>{let t=e.target,n=N.current!==e.clientX;e.currentTarget.contains(t)&&n&&(M.current=e.clientX>N.current?`right`:`left`,N.current=e.clientX)}))})})})})})})});Ze.displayName=W;var tt=`MenuGroup`,nt=E.forwardRef((e,t)=>{let{__scopeMenu:r,...i}=e;return(0,D.jsx)(n.div,{role:`group`,...i,ref:t})});nt.displayName=tt;var rt=`MenuLabel`,it=E.forwardRef((e,t)=>{let{__scopeMenu:r,...i}=e;return(0,D.jsx)(n.div,{...i,ref:t})});it.displayName=rt;var K=`MenuItem`,at=`menu.itemSelect`,q=E.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=E.useRef(null),o=U(K,e.__scopeMenu),s=Xe(K,e.__scopeMenu),l=f(t,a),u=E.useRef(!1),d=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(at,{bubbles:!0,cancelable:!0});e.addEventListener(at,e=>r?.(e),{once:!0}),c(e,t),t.defaultPrevented?u.current=!1:o.onClose()}};return(0,D.jsx)(ot,{...i,ref:l,disabled:n,onClick:g(e.onClick,d),onPointerDown:t=>{e.onPointerDown?.(t),u.current=!0},onPointerUp:g(e.onPointerUp,e=>{u.current||e.currentTarget?.click()}),onKeyDown:g(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||je.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});q.displayName=K;var ot=E.forwardRef((e,t)=>{let{__scopeMenu:r,disabled:i=!1,textValue:a,...o}=e,s=Xe(K,r),c=ze(r),l=E.useRef(null),u=f(t,l),[d,p]=E.useState(!1),[m,h]=E.useState(``);return E.useEffect(()=>{let e=l.current;e&&h((e.textContent??``).trim())},[o.children]),(0,D.jsx)(R.ItemSlot,{scope:r,disabled:i,textValue:a??m,children:(0,D.jsx)(we,{asChild:!0,...c,focusable:!i,children:(0,D.jsx)(n.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,...o,ref:u,onPointerMove:g(e.onPointerMove,X(e=>{i?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:g(e.onPointerLeave,X(e=>s.onItemLeave(e))),onFocus:g(e.onFocus,()=>p(!0)),onBlur:g(e.onBlur,()=>p(!1))})})})}),st=`MenuCheckboxItem`,ct=E.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,D.jsx)(gt,{scope:e.__scopeMenu,checked:n,children:(0,D.jsx)(q,{role:`menuitemcheckbox`,"aria-checked":Y(n)?`mixed`:n,...i,ref:t,"data-state":jt(n),onSelect:g(i.onSelect,()=>r?.(Y(n)?!0:!n),{checkForDefaultPrevented:!1})})})});ct.displayName=st;var lt=`MenuRadioGroup`,[ut,dt]=z(lt,{value:void 0,onValueChange:()=>{}}),ft=E.forwardRef((e,t)=>{let{value:n,onValueChange:r,...a}=e,o=i(r);return(0,D.jsx)(ut,{scope:e.__scopeMenu,value:n,onValueChange:o,children:(0,D.jsx)(nt,{...a,ref:t})})});ft.displayName=lt;var pt=`MenuRadioItem`,mt=E.forwardRef((e,t)=>{let{value:n,...r}=e,i=dt(pt,e.__scopeMenu),a=n===i.value;return(0,D.jsx)(gt,{scope:e.__scopeMenu,checked:a,children:(0,D.jsx)(q,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":jt(a),onSelect:g(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});mt.displayName=pt;var ht=`MenuItemIndicator`,[gt,_t]=z(ht,{checked:!1}),vt=E.forwardRef((e,t)=>{let{__scopeMenu:r,forceMount:i,...a}=e,o=_t(ht,r);return(0,D.jsx)(_,{present:i||Y(o.checked)||o.checked===!0,children:(0,D.jsx)(n.span,{...a,ref:t,"data-state":jt(o.checked)})})});vt.displayName=ht;var yt=`MenuSeparator`,bt=E.forwardRef((e,t)=>{let{__scopeMenu:r,...i}=e;return(0,D.jsx)(n.div,{role:`separator`,"aria-orientation":`horizontal`,...i,ref:t})});bt.displayName=yt;var xt=`MenuArrow`,St=E.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=V(n);return(0,D.jsx)(C,{...i,...r,ref:t})});St.displayName=xt;var Ct=`MenuSub`,[wt,Tt]=z(Ct),Et=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:a}=e,o=H(Ct,t),s=V(t),[c,u]=E.useState(null),[d,f]=E.useState(null),p=i(a);return E.useEffect(()=>(o.open===!1&&p(!1),()=>p(!1)),[o.open,p]),(0,D.jsx)(b,{...s,children:(0,D.jsx)(Be,{scope:t,open:r,onOpenChange:p,content:d,onContentChange:f,children:(0,D.jsx)(wt,{scope:t,contentId:l(),triggerId:l(),trigger:c,onTriggerChange:u,children:n})})})};Et.displayName=Ct;var J=`MenuSubTrigger`,Dt=E.forwardRef((e,t)=>{let n=H(J,e.__scopeMenu),r=U(J,e.__scopeMenu),i=Tt(J,e.__scopeMenu),a=Xe(J,e.__scopeMenu),o=E.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:c}=a,l={__scopeMenu:e.__scopeMenu},u=E.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return E.useEffect(()=>u,[u]),E.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),c(null)}},[s,c]),(0,D.jsx)(We,{asChild:!0,...l,children:(0,D.jsx)(ot,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":At(n.open),...e,ref:d(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:g(e.onPointerMove,X(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:g(e.onPointerLeave,X(e=>{u();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,c=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:c,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:c,y:t.bottom}],side:r}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:g(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||Fe[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});Dt.displayName=J;var Ot=`MenuSubContent`,kt=E.forwardRef((e,t)=>{let n=qe(W,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=H(W,e.__scopeMenu),o=U(W,e.__scopeMenu),s=Tt(Ot,e.__scopeMenu),c=E.useRef(null),l=f(t,c);return(0,D.jsx)(R.Provider,{scope:e.__scopeMenu,children:(0,D.jsx)(_,{present:r||a.open,children:(0,D.jsx)(R.Slot,{scope:e.__scopeMenu,children:(0,D.jsx)(G,{id:s.contentId,"aria-labelledby":s.triggerId,...i,ref:l,align:`start`,side:o.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{o.isUsingKeyboardRef.current&&c.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:g(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:g(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:g(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=Ie[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});kt.displayName=Ot;function At(e){return e?`open`:`closed`}function Y(e){return e===`indeterminate`}function jt(e){return Y(e)?`indeterminate`:e?`checked`:`unchecked`}function Mt(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Nt(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Pt(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Nt(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Ft(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function It(e,t){return t?Ft({x:e.clientX,y:e.clientY},t):!1}function X(e){return t=>t.pointerType===`mouse`?e(t):void 0}var Lt=He,Rt=We,zt=Je,Bt=Ze,Vt=nt,Ht=it,Ut=q,Wt=ct,Gt=ft,Kt=mt,qt=vt,Jt=bt,Yt=St,Xt=Et,Zt=Dt,Qt=kt,Z=`DropdownMenu`,[$t,en]=r(Z,[B]),Q=B(),[tn,nn]=$t(Z),rn=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:s,modal:c=!0}=e,u=Q(t),d=E.useRef(null),[f,p]=o({prop:i,defaultProp:a??!1,onChange:s,caller:Z});return(0,D.jsx)(tn,{scope:t,triggerId:l(),triggerRef:d,contentId:l(),open:f,onOpenChange:p,onOpenToggle:E.useCallback(()=>p(e=>!e),[p]),modal:c,children:(0,D.jsx)(Lt,{...u,open:f,onOpenChange:p,dir:r,modal:c,children:n})})};rn.displayName=Z;var an=`DropdownMenuTrigger`,on=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,disabled:i=!1,...a}=e,o=nn(an,r),s=Q(r);return(0,D.jsx)(Rt,{asChild:!0,...s,children:(0,D.jsx)(n.button,{type:`button`,id:o.triggerId,"aria-haspopup":`menu`,"aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?`open`:`closed`,"data-disabled":i?``:void 0,disabled:i,...a,ref:d(t,o.triggerRef),onPointerDown:g(e.onPointerDown,e=>{!i&&e.button===0&&e.ctrlKey===!1&&(o.onOpenToggle(),o.open||e.preventDefault())}),onKeyDown:g(e.onKeyDown,e=>{i||([`Enter`,` `].includes(e.key)&&o.onOpenToggle(),e.key===`ArrowDown`&&o.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});on.displayName=an;var sn=`DropdownMenuPortal`,cn=e=>{let{__scopeDropdownMenu:t,...n}=e,r=Q(t);return(0,D.jsx)(zt,{...r,...n})};cn.displayName=sn;var ln=`DropdownMenuContent`,un=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=nn(ln,n),a=Q(n),o=E.useRef(!1);return(0,D.jsx)(Bt,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:g(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:g(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});un.displayName=ln;var dn=`DropdownMenuGroup`,fn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Vt,{...i,...r,ref:t})});fn.displayName=dn;var pn=`DropdownMenuLabel`,mn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Ht,{...i,...r,ref:t})});mn.displayName=pn;var hn=`DropdownMenuItem`,gn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Ut,{...i,...r,ref:t})});gn.displayName=hn;var _n=`DropdownMenuCheckboxItem`,vn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Wt,{...i,...r,ref:t})});vn.displayName=_n;var yn=`DropdownMenuRadioGroup`,bn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Gt,{...i,...r,ref:t})});bn.displayName=yn;var xn=`DropdownMenuRadioItem`,Sn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Kt,{...i,...r,ref:t})});Sn.displayName=xn;var Cn=`DropdownMenuItemIndicator`,wn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(qt,{...i,...r,ref:t})});wn.displayName=Cn;var Tn=`DropdownMenuSeparator`,En=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Jt,{...i,...r,ref:t})});En.displayName=Tn;var Dn=`DropdownMenuArrow`,On=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Yt,{...i,...r,ref:t})});On.displayName=Dn;var kn=e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,s=Q(t),[c,l]=o({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,D.jsx)(Xt,{...s,open:c,onOpenChange:l,children:n})},An=`DropdownMenuSubTrigger`,jn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Zt,{...i,...r,ref:t})});jn.displayName=An;var Mn=`DropdownMenuSubContent`,Nn=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Q(n);return(0,D.jsx)(Qt,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});Nn.displayName=Mn;var Pn=rn,Fn=on,In=cn,Ln=un,Rn=mn,zn=gn,Bn=vn,Vn=bn,Hn=Sn,Un=wn,Wn=En,Gn=kn,Kn=jn,qn=Nn,$=[`relative flex cursor-pointer select-none items-center gap-2`,`rounded-md px-2 py-1.5 text-body-medium-default outline-none`,`text-[var(--content-secondary)]`,`data-[highlighted]:bg-[var(--surface-hover)]`,`data-[highlighted]:text-[var(--content-emphasised)]`,`data-[disabled]:cursor-not-allowed data-[disabled]:text-[var(--content-disabled)]`,`data-[disabled]:data-[highlighted]:bg-transparent`,`transition-colors`].join(` `),Jn=[`z-50 min-w-[10rem] overflow-hidden rounded-lg bg-[var(--surface-lift)] p-2 shadow-[var(--shadow-popover)]`,`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,`data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`].join(` `),Yn=Pn;function Xn({asChild:e=!0,...t}){return(0,D.jsx)(Fn,{"data-slot":`menu-trigger`,asChild:e,...t})}function Zn({className:e,sideOffset:t=6,collisionPadding:n=8,onPointerDownOutside:r,onCloseAutoFocus:i,ref:o,...s}){let c=a(),l=(0,E.useRef)(!1);return(0,D.jsx)(In,{container:c??void 0,children:(0,D.jsx)(Ln,{ref:o,"data-slot":`menu-content`,sideOffset:t,collisionPadding:n,onPointerDownOutside:e=>{l.current=!0,r?.(e)},onCloseAutoFocus:e=>{l.current&&=(e.preventDefault(),!1),i?.(e)},className:p(Jn,e),...s})})}function Qn({className:e,children:t,leftIcon:n,shortcut:r,ref:i,...a}){return(0,D.jsxs)(zn,{ref:i,"data-slot":`menu-item`,className:p($,e),...a,children:[n?(0,D.jsx)(`span`,{className:`flex h-4 w-4 shrink-0 items-center justify-center text-[var(--content-tertiary)]`,"aria-hidden":!0,children:n}):null,(0,D.jsx)(`span`,{className:`flex-1 truncate`,children:t}),r?(0,D.jsx)(`span`,{className:`ml-auto pl-4 text-body-small-default tracking-wide text-[var(--content-tertiary)]`,children:r}):null]})}function $n({className:e,children:t,checked:n,shortcut:r,ref:i,...a}){return(0,D.jsxs)(Bn,{ref:i,checked:n,"data-slot":`menu-checkbox-item`,className:p($,`pl-7`,e),...a,children:[(0,D.jsx)(`span`,{className:`absolute left-1.5 flex h-4 w-4 items-center justify-center`,children:(0,D.jsx)(Un,{children:(0,D.jsx)(h,{className:`h-3.5 w-3.5 text-[var(--content-default)]`,"aria-hidden":!0})})}),(0,D.jsx)(`span`,{className:`flex-1 truncate`,children:t}),r?(0,D.jsx)(`span`,{className:`ml-auto pl-4 text-body-small-default tracking-wide text-[var(--content-tertiary)]`,children:r}):null]})}function er({ref:e,...t}){return(0,D.jsx)(Vn,{ref:e,"data-slot":`menu-radio-group`,...t})}function tr({className:e,children:t,shortcut:n,ref:r,...i}){return(0,D.jsxs)(Hn,{ref:r,"data-slot":`menu-radio-item`,className:p($,`pl-7`,e),...i,children:[(0,D.jsx)(`span`,{className:`absolute left-1.5 flex h-4 w-4 items-center justify-center`,children:(0,D.jsx)(Un,{children:(0,D.jsx)(T,{className:`h-2 w-2 fill-current text-[var(--content-default)]`,"aria-hidden":!0})})}),(0,D.jsx)(`span`,{className:`flex-1 truncate`,children:t}),n?(0,D.jsx)(`span`,{className:`ml-auto pl-4 text-body-small-default tracking-wide text-[var(--content-tertiary)]`,children:n}):null]})}function nr({className:e,ref:t,...n}){return(0,D.jsx)(Wn,{ref:t,"data-slot":`menu-separator`,className:p(`my-1 h-px bg-[var(--border-base)]`,e),...n})}function rr({className:e,ref:t,...n}){return(0,D.jsx)(Rn,{ref:t,"data-slot":`menu-label`,className:p(`px-2 py-1.5 text-body-small-default uppercase tracking-wide`,`text-[var(--content-tertiary)]`,e),...n})}var ir=Gn;function ar({className:e,children:t,leftIcon:n,ref:r,...i}){return(0,D.jsxs)(Kn,{ref:r,"data-slot":`menu-sub-trigger`,className:p($,`data-[state=open]:bg-[var(--surface-hover)]`,`data-[state=open]:text-[var(--content-emphasised)]`,e),...i,children:[n?(0,D.jsx)(`span`,{className:`flex h-4 w-4 shrink-0 items-center justify-center text-[var(--content-tertiary)]`,"aria-hidden":!0,children:n}):null,(0,D.jsx)(`span`,{className:`flex-1 truncate`,children:t}),(0,D.jsx)(w,{className:`ml-auto h-3.5 w-3.5 text-[var(--content-tertiary)]`,"aria-hidden":!0})]})}function or({className:e,ref:t,...n}){let r=a();return(0,D.jsx)(In,{container:r??void 0,children:(0,D.jsx)(qn,{ref:t,"data-slot":`menu-sub-content`,className:p(Jn,e),...n})})}var sr={Root:Yn,Trigger:Xn,Content:Zn,Item:Qn,CheckboxItem:$n,RadioGroup:er,RadioItem:tr,Separator:nr,Label:rr,Sub:ir,SubTrigger:ar,SubContent:or};export{de as C,w as D,T as E,Ce as S,M as T,Xt as _,Yt as a,B as b,Vt as c,Ht as d,zt as f,Jt as g,Lt as h,Rt as i,Ut as l,Kt as m,Jn as n,Wt as o,Gt as p,$ as r,Bt as s,sr as t,qt as u,Qt as v,P as w,we as x,Zt as y};
@@ -1 +0,0 @@
1
- import{n as e}from"./toast-CxaZ5f1d.js";function t(t){return n=>{e.error(n instanceof Error?n.message:t)}}export{t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{r as n}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as r}from"./QueryClientProvider-DKhXIxGb.js";import{t as i}from"./useQuery-B45lW1Kk.js";import{t as a}from"./useMutation-Lj4VunQV.js";import{t as o}from"./jsx-runtime-CVSDxk6A.js";import{t as s}from"./menu-CdoNX1qx.js";import{t as c}from"./notice-CynJKEow.js";import{t as l}from"./popover-BsF65jZY.js";import{t as u}from"./input-Ch7OC6ME.js";import{n as d,t as f}from"./panel-item-BLQE_l-g.js";import{n as p}from"./toast-CxaZ5f1d.js";import{t as m}from"./createLucideIcon-BlMXrA59.js";import{t as h}from"./bell-DB1SrBre.js";import{t as g}from"./loader-circle-Cw1KvvLK.js";import{t as _}from"./moon-Be4Pgk5X.js";import{t as v}from"./triangle-alert-AqQQTwUZ.js";import{a as y}from"./routes-B9xcBuuC.js";import{n as b}from"./use-is-mobile-D_0cze0t.js";import{ct as x,dt as S,ft as C,lt as w,mt as T,pt as E,ut as D}from"./react-query.gen-CRARj4mG.js";import{Jt as O,Kt as k,na as A,qt as j,x as M}from"./index-Cx6vyW7T.js";import{t as N}from"./mutation-error-BjiE6W0q.js";import{r as P}from"./format-date-Cx9GZ7-D.js";var F=m(`bell-off`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742`,key:`178tsu`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05`,key:`1hqiys`}]]),I=m(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),L=e(t(),1);function R(e){e.invalidateQueries({queryKey:D()}),e.invalidateQueries({queryKey:T()})}function z(e){return e.snoozed_until?new Date(e.snoozed_until)>new Date:!1}var B=[{label:`1 hour`,hours:1},{label:`4 hours`,hours:4},{label:`24 hours`,hours:24},{label:`1 week`,hours:168}],V=o();function H({notificationId:e,currentlySnoozed:t,children:n}){let i=r(),o=a(E()),c=b(),[l,u]=(0,L.useState)(!1),p=()=>R(i),m=t=>{let n=new Date(new Date().getTime()+t*60*60*1e3).toISOString();o.mutate({path:{id:e},body:{snoozed_until:n}},{onSuccess:p,onError:N(`Failed to snooze notification`)})},h=()=>{o.mutate({path:{id:e},body:{snoozed_until:null}},{onSuccess:p,onError:N(`Failed to clear snooze`)})};return c?(0,V.jsxs)(d.Root,{open:l,onOpenChange:u,children:[(0,V.jsx)(d.Trigger,{asChild:!0,children:n}),(0,V.jsxs)(d.Content,{children:[(0,V.jsx)(d.Header,{children:(0,V.jsx)(d.Title,{children:`Snooze until…`})}),(0,V.jsxs)(d.Body,{children:[B.map(({label:e,hours:t})=>(0,V.jsx)(f,{label:e,onSelect:()=>{o.isPending||(u(!1),m(t))}},e)),t&&(0,V.jsx)(f,{label:`Clear snooze`,onSelect:()=>{o.isPending||(u(!1),h())}})]})]})]}):(0,V.jsxs)(s.Root,{open:l,onOpenChange:u,children:[(0,V.jsx)(s.Trigger,{children:n}),(0,V.jsxs)(s.Content,{align:`start`,className:`min-w-[12rem]`,children:[(0,V.jsx)(s.Label,{children:`Snooze until…`}),B.map(({label:e,hours:t})=>(0,V.jsx)(s.Item,{disabled:o.isPending,onSelect:()=>m(t),children:e},e)),t&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(s.Separator,{}),(0,V.jsx)(s.Item,{disabled:o.isPending,onSelect:()=>h(),children:`Clear snooze`})]})]})]})}function U({existingRules:e,onClose:t,onPauseCreated:n,onPauseDeleted:i,hideTitle:o=!1}){let s=r(),c=a(S()),l=a(C()),[d,f]=(0,L.useState)(``),p=()=>R(s),m=()=>{let e=new Date(new Date().getTime()+365*24*60*60*1e3).toISOString();c.mutate({body:{notification_type:`alert`,dedupe_key_prefix:``,reason:d.trim()||`User requested pause`,expires_at:e}},{onSuccess:e=>{n(e),p(),t()},onError:N(`Failed to pause alerts`)})},h=e=>{l.mutate({path:{rule_id:e}},{onSuccess:()=>{i(e),p(),t()},onError:N(`Failed to resume alerts`)})},_=c.isPending||l.isPending;return(0,V.jsxs)(`div`,{children:[!o&&(0,V.jsx)(`p`,{className:`mb-2 text-body-medium-default text-[var(--content-default)]`,children:`Pause alerts`}),e.length>0?(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(`p`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Active pause rules:`}),e.map(e=>(0,V.jsxs)(`div`,{className:`flex items-center justify-between rounded-md border border-[var(--border-base)] bg-[var(--surface-base)] px-2 py-2`,children:[(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsx)(`p`,{className:`truncate text-body-small-default text-[var(--content-default)]`,children:e.reason||`All alerts paused`}),e.expires_at&&(0,V.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:[`Expires `,P(e.expires_at)]})]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>h(e.id),disabled:_,className:`ml-2 shrink-0 cursor-pointer rounded px-2 py-1 text-body-small-default text-[var(--system-negative-strong)] transition-opacity hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50`,children:`Resume`})]},e.id))]}):(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(`p`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Temporarily mute all alert notifications.`}),(0,V.jsx)(u,{type:`text`,value:d,onChange:e=>f(e.target.value),placeholder:`Reason (optional)`}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>m(),disabled:_,className:`w-full cursor-pointer rounded-md bg-[var(--primary-base)] px-3 py-1.5 text-body-medium-default text-[var(--content-inset)] transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50`,children:c.isPending?(0,V.jsxs)(`span`,{className:`flex items-center justify-center gap-2`,children:[(0,V.jsx)(g,{className:`h-3 w-3 animate-spin`}),`Pausing…`]}):`Pause all alerts`})]})]})}function W({notification:e,onAck:t,isAcking:n}){let r=e.notification_type===`alert`,i=z(e),a=!e.is_read;return(0,V.jsxs)(`div`,{className:`relative rounded-lg border border-[var(--border-base)] p-4`,style:{background:e.is_resolved?`var(--surface-base)`:`var(--surface-lift)`,opacity:e.is_resolved?.75:1},children:[(0,V.jsx)(`div`,{className:`flex items-start gap-3`,children:(0,V.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col items-start gap-1`,children:[(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[a&&!e.is_resolved&&(0,V.jsx)(`span`,{"aria-hidden":!0,className:`h-2 w-2 shrink-0 rounded-full bg-[var(--primary-base)]`}),r&&(0,V.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[color-mix(in_oklab,var(--system-negative-strong)_14%,transparent)] px-2 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,children:[(0,V.jsx)(v,{className:`h-3 w-3`}),`Alert`]}),i&&(0,V.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--surface-base)] px-2 py-0.5 text-body-small-default text-[var(--content-secondary)]`,children:[(0,V.jsx)(_,{className:`h-3 w-3`}),`Snoozed`]}),e.is_resolved&&(0,V.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[color-mix(in_oklab,var(--system-positive-strong)_14%,transparent)] px-2 py-0.5 text-body-small-default text-[var(--system-positive-strong)]`,children:[(0,V.jsx)(A,{className:`h-3 w-3`}),`Resolved`]})]}),(0,V.jsx)(`h3`,{className:`text-body-medium-default leading-tight`,style:{color:e.is_resolved?`var(--content-secondary)`:`var(--content-default)`},children:e.title}),e.body&&(0,V.jsx)(`p`,{className:`text-body-small-default leading-relaxed text-[var(--content-secondary)]`,children:e.body})]})}),(0,V.jsxs)(`div`,{className:`mt-3 flex items-center gap-3 text-body-small-default text-[var(--content-secondary)]`,children:[(0,V.jsxs)(`span`,{children:[`Last seen `,P(e.last_seen_at)]}),e.occurrence_count>1&&(0,V.jsxs)(`span`,{children:[`· `,e.occurrence_count,`× occurrences`]})]}),!e.is_resolved&&(0,V.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 border-t border-[var(--border-base)] pt-3`,children:[(0,V.jsxs)(`button`,{type:`button`,onClick:()=>t(e.id,a),disabled:n,className:`flex cursor-pointer items-center gap-1.5 rounded-md px-3 py-1.5 text-body-small-default transition-opacity hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50`,style:{background:a?`var(--primary-base)`:`var(--surface-base)`,color:a?`var(--content-inset)`:`var(--content-secondary)`},children:[n?(0,V.jsx)(g,{className:`h-3 w-3 animate-spin`}):(0,V.jsx)(A,{className:`h-3 w-3`}),a?`Mark as read`:`Mark as unread`]}),(0,V.jsx)(H,{notificationId:e.id,currentlySnoozed:i,children:(0,V.jsxs)(`button`,{type:`button`,className:`flex cursor-pointer items-center gap-1.5 rounded-md border border-[var(--border-base)] bg-[var(--surface-base)] px-3 py-1.5 text-body-small-default text-[var(--content-secondary)] transition-opacity hover:opacity-80`,children:[(0,V.jsx)(_,{className:`h-3 w-3`}),i?`Change snooze`:`Snooze`]})})]})]})}function G(){let e=O({platformHostedOnly:!0}),t=k(),o=j(),s=r(),u=b(),[f,m]=(0,L.useState)(`open`),[_,v]=(0,L.useState)(!1),[S,C]=(0,L.useState)([]),{data:T,isLoading:E,isError:D,refetch:A}=i({...w({query:{status:f}}),enabled:e===`full`&&t}),N=e===`full`&&o||(t?E:!1);(0,L.useEffect)(()=>{!t&&_&&v(!1)},[t,_]);let P=t?D:!1,z=t?T?.results??[]:[],B=z.filter(e=>!e.is_read&&!e.is_resolved),H=a(x()),[G,K]=(0,L.useState)(new Set),[q,J]=(0,L.useState)(!1),Y=(0,L.useCallback)(()=>R(s),[s]),X=async(e,t)=>{K(t=>new Set(t).add(e));try{await H.mutateAsync({path:{id:e},body:{acknowledged:t}}),Y()}catch(e){p.error(e instanceof Error?e.message:`Failed to update notification`)}finally{K(t=>{let n=new Set(t);return n.delete(e),n})}},Z=async()=>{if(!(B.length===0||q)){J(!0);try{await Promise.allSettled(B.map(e=>H.mutateAsync({path:{id:e.id},body:{acknowledged:!0}})))}finally{Y(),J(!1)}}},Q=(0,V.jsxs)(`button`,{type:`button`,className:`flex cursor-pointer items-center gap-1.5 rounded-md border border-[var(--border-base)] bg-[var(--surface-base)] px-3 py-1.5 text-body-small-default text-[var(--content-secondary)] transition-opacity hover:opacity-80`,title:`Pause alerts`,children:[(0,V.jsx)(F,{className:`h-3.5 w-3.5`}),`Pause alerts`]}),$=(0,V.jsx)(U,{existingRules:S,onClose:()=>v(!1),onPauseCreated:e=>C(t=>[...t,e]),onPauseDeleted:e=>C(t=>t.filter(t=>t.id!==e))});return e===`gated`?(0,V.jsx)(n,{replace:!0,to:y.settings.general}):e===`disabled`?(0,V.jsxs)(`div`,{className:`space-y-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,V.jsx)(h,{className:`h-5 w-5 text-[var(--content-secondary)]`}),(0,V.jsxs)(`div`,{className:`flex-1`,children:[(0,V.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Notifications`}),(0,V.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:`Platform alerts and status notifications`})]})]}),(0,V.jsx)(M,{children:`Log in to the Vellum platform to view notifications.`})]}):(0,V.jsxs)(`div`,{className:`space-y-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,V.jsx)(h,{className:`h-5 w-5 text-[var(--content-secondary)]`}),(0,V.jsxs)(`div`,{className:`flex-1`,children:[(0,V.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Notifications`}),(0,V.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:`Platform alerts and status notifications`})]}),t&&(u?(0,V.jsxs)(d.Root,{open:_,onOpenChange:v,children:[(0,V.jsx)(d.Trigger,{asChild:!0,children:Q}),(0,V.jsxs)(d.Content,{children:[(0,V.jsx)(d.Header,{children:(0,V.jsx)(d.Title,{children:`Pause alerts`})}),(0,V.jsx)(d.Body,{children:(0,V.jsx)(U,{existingRules:S,onClose:()=>v(!1),onPauseCreated:e=>C(t=>[...t,e]),onPauseDeleted:e=>C(t=>t.filter(t=>t.id!==e)),hideTitle:!0})})]})]}):(0,V.jsxs)(l.Root,{open:_,onOpenChange:v,children:[(0,V.jsx)(l.Trigger,{asChild:!0,children:Q}),(0,V.jsx)(l.Content,{align:`end`,className:`w-72`,children:$})]}))]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`div`,{className:`flex gap-1 rounded-md border border-[var(--border-base)] bg-[var(--surface-base)] p-1`,children:[`open`,`resolved`].map(e=>{let t=f===e;return(0,V.jsx)(`button`,{type:`button`,onClick:()=>m(e),className:`cursor-pointer rounded px-3 py-1 text-body-small-default capitalize transition-colors`,style:{background:t?`var(--surface-lift)`:`transparent`,color:t?`var(--content-default)`:`var(--content-secondary)`,boxShadow:t?`0 1px 2px rgba(0,0,0,0.08)`:void 0},children:e},e)})}),f===`open`&&B.length>1&&(0,V.jsxs)(`button`,{type:`button`,onClick:()=>void Z(),disabled:q,className:`ml-auto flex cursor-pointer items-center gap-1.5 rounded-md border border-[var(--border-base)] bg-transparent px-3 py-1.5 text-body-small-default text-[var(--content-secondary)] transition-opacity hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50`,children:[q?(0,V.jsx)(g,{className:`h-3 w-3 animate-spin`}):(0,V.jsx)(I,{className:`h-3 w-3`}),`Mark all as read (`,B.length,`)`]})]}),N?(0,V.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-secondary)]`,children:[(0,V.jsx)(g,{className:`h-4 w-4 animate-spin`}),`Loading notifications…`]}):P?(0,V.jsxs)(c,{tone:`error`,children:[`Failed to load notifications.`,` `,(0,V.jsx)(`button`,{type:`button`,onClick:()=>void A(),className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]}):z.length===0?(0,V.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 py-12 text-center`,children:[(0,V.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,V.jsx)(h,{className:`h-5 w-5 text-[var(--content-secondary)]`})}),(0,V.jsxs)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:[`No `,f,` notifications`]}),(0,V.jsx)(`p`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:f===`open`?`You're all caught up!`:`Nothing to show here.`})]}):(0,V.jsx)(`div`,{className:`space-y-3`,children:z.map(e=>(0,V.jsx)(W,{notification:e,onAck:(e,t)=>void X(e,t),isAcking:G.has(e.id)},e.id))})]})}export{G as NotificationsPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{a as n}from"./button-D7s2Q_uG.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{r as i,t as a}from"./cn-DvW5mxZR.js";import{a as o,c as s,i as c,n as l,o as u,r as d,s as f,t as p}from"./dist-cZPU9ZZL.js";var m=e(t(),1),h=r(),g=(0,m.createContext)({});function _({onOpenChange:e,...t}){return(0,h.jsx)(g,{value:{onOpenChange:e},children:(0,h.jsx)(u,{onOpenChange:e,...t})})}function v(e){return(0,h.jsx)(s,{"data-slot":`bottom-sheet-trigger`,...e})}function y({overlayClassName:e,className:t,children:r,ref:i,...s}){let u=n(),{onOpenChange:d}=(0,m.useContext)(g);return(0,h.jsxs)(o,{container:u??void 0,children:[(0,h.jsx)(c,{"data-slot":`bottom-sheet-overlay`,className:a(`fixed inset-0 z-50 bg-black/50`,e),onClick:()=>d?.(!1)}),(0,h.jsx)(l,{ref:i,"data-slot":`bottom-sheet-content`,className:a(`fixed inset-x-0 bottom-0 z-50 flex w-full flex-col rounded-t-[24px] border-t bg-[var(--surface-lift)] border-[var(--border-base)] shadow-xl focus:outline-none`,`max-h-[50dvh]`,`data-[state=open]:animate-[bottomSheetIn_180ms_ease-out]`,t),...s,children:(0,h.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-4 pt-4 pb-[calc(16px+var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)))]`,children:r})})]})}function b({icon:e,className:t,children:n,ref:r,...i}){return(0,h.jsxs)(f,{ref:r,"data-slot":`bottom-sheet-title`,className:a(`flex items-center gap-3 text-title-medium text-[var(--content-default)]`,t),...i,children:[e?(0,h.jsx)(`span`,{"aria-hidden":`true`,className:`flex h-10 w-10 shrink-0 items-center justify-center rounded-full`,style:{backgroundColor:`color-mix(in oklab, var(--primary-base) 16%, transparent)`},children:(0,h.jsx)(e,{className:`h-5 w-5 text-[var(--primary-base)]`})}):null,(0,h.jsx)(`span`,{className:`min-w-0 truncate`,children:n})]})}function x({className:e,children:t,ref:n,...r}){return(0,h.jsx)(d,{ref:n,"data-slot":`bottom-sheet-description`,className:a(`mt-1 whitespace-pre-line text-body-medium-lighter text-[var(--content-secondary)]`,e),...r,children:t})}function S(e){return(0,h.jsx)(p,{"data-slot":`bottom-sheet-close`,...e})}function C({className:e,children:t,...n}){return(0,h.jsx)(`div`,{"data-slot":`bottom-sheet-header`,className:a(`flex flex-col gap-1`,e),...n,children:t})}function w({className:e,children:t,...n}){return(0,h.jsx)(`div`,{"data-slot":`bottom-sheet-body`,className:a(`flex-1 overflow-y-auto pt-4 text-[var(--content-default)]`,e),...n,children:t})}function T({className:e,children:t,...n}){return(0,h.jsx)(`div`,{"data-slot":`bottom-sheet-footer`,className:a(`flex justify-end gap-2 pt-4`,e),...n,children:t})}var E={Root:_,Trigger:v,Content:y,Title:b,Description:x,Close:S,Header:C,Body:w,Footer:T},D=50,O=2e3,k=.8;function A({children:e,className:t}){let n=(0,m.useRef)(null),r=(0,m.useRef)(null),[i,o]=(0,m.useState)(0);(0,m.useEffect)(()=>{let e=n.current,t=r.current;if(!e||!t)return;let i=()=>{let n=t.scrollWidth-e.clientWidth;o(n>0?n:0)};i();let a=new ResizeObserver(i);return a.observe(e),a.observe(t),()=>a.disconnect()},[e]);let s=i>0,c=Math.max(O,Math.round(i*2/D*1e3)),l=Math.round(c/k);return(0,h.jsxs)(`span`,{"data-slot":`marquee-text`,ref:n,className:a(`relative min-w-0 flex-1 overflow-hidden`,t),children:[(0,h.jsx)(`span`,{className:`block truncate motion-safe:group-hover:invisible`,children:e}),(0,h.jsx)(`span`,{ref:r,"aria-hidden":!0,className:a(`absolute top-0 left-0 invisible block whitespace-nowrap`,`motion-safe:group-hover:visible`,s&&`motion-safe:group-hover:animate-panelitem-marquee`),style:s?{"--panelitem-marquee-distance":`${i}px`,"--panelitem-marquee-duration":`${l}ms`}:void 0,children:e})]})}var j=[`group relative`,`flex h-8 max-md:h-auto w-full items-center justify-between`,`rounded-[6px] p-[8px] max-md:py-3 gap-[4px]`,`text-left text-body-medium-lighter max-md:text-body-large-default`,`transition-colors`,`bg-transparent`,`text-[var(--content-secondary)]`,`outline-none`].join(` `),M=[`hover:bg-[var(--surface-hover)]`,`keyboard-focus:ring-2 keyboard-focus:ring-[var(--ring)]`,`cursor-pointer select-none`].join(` `),N=[`aria-[current=page]:bg-[var(--surface-active)]`,`aria-[current=page]:text-[var(--content-emphasised)]`].join(` `),P=[`aria-[current=page]:bg-[color-mix(in_oklab,var(--primary-base)_10%,transparent)]`,`aria-[current=page]:text-[var(--primary-base)]`,`aria-[current=page]:font-medium`].join(` `),F=`flex min-w-0 flex-1 items-center gap-[8px]`,I=[`shrink-0`,`text-[var(--content-tertiary)]`,`group-hover:text-[var(--content-secondary)]`].join(` `),L=`group-aria-[current=page]:text-[var(--content-default)]`,R=`group-aria-[current=page]:text-[var(--primary-base)]`,z=`min-w-0 flex-1 truncate`,B=`shrink-0 text-[var(--content-tertiary)]`,V=`flex items-center gap-2 shrink-0`,H=[`inline-flex items-center justify-center shrink-0`,`text-label-small-default leading-none`,`text-[var(--content-tertiary)]`,`rounded-[4px] bg-[var(--surface-base)] px-[4px] py-[2px]`,`group-hover:bg-transparent group-hover:rounded-none`,`group-hover:px-0 group-hover:py-0`,`group-aria-[current=page]:bg-transparent group-aria-[current=page]:rounded-none`,`group-aria-[current=page]:px-0 group-aria-[current=page]:py-0`].join(` `),U=[`flex items-center shrink-0`,`opacity-0 transition-opacity`,`group-hover:opacity-100`,`group-aria-[current=page]:opacity-100`].join(` `);function W({icon:e,leadingSlot:t,label:n,expandChevron:r,badge:o,trailingAction:s,active:c=!1,activeVariant:l=`default`,disabled:u=!1,onSelect:d,href:f,marqueeOnHover:p=!1,className:m,"aria-label":g,asChild:_=!1,children:v,ref:y,...b}){let x=c?`page`:void 0,S=g??(typeof n==`string`?n:void 0),C=(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`span`,{className:F,children:[t===void 0?e?(0,h.jsx)(e,{size:14,"aria-hidden":!0,className:a(`max-md:size-4`,I,l===`branded`?R:L)}):null:t,p?(0,h.jsx)(A,{children:n}):(0,h.jsx)(`span`,{className:z,children:n}),r?(0,h.jsx)(r,{size:12,"aria-hidden":!0,className:B}):null]}),(0,h.jsxs)(`span`,{className:V,children:[o==null?null:(0,h.jsx)(`span`,{className:H,children:o}),s?(0,h.jsx)(`span`,{className:U,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:s}):null]})]}),w=a(j,(_||!!f||!!d)&&M,l===`branded`?P:N,m);if(_)return(0,h.jsx)(i,{"data-slot":`panel-item`,ref:y,className:w,"aria-current":x,"aria-label":S,...b,children:v});if(f){let{onClick:e,...t}=b;return(0,h.jsx)(`a`,{...t,"data-slot":`panel-item`,ref:y,href:f,className:w,"aria-current":x,"aria-label":S,onClick:t=>{e?.(t),t.defaultPrevented||d?.()},children:C})}if(d){let{onClick:e,onKeyDown:t,...n}=b,r=t=>{if(u){t.preventDefault();return}e?.(t),t.defaultPrevented||d()},i=e=>{u||(t?.(e),!e.defaultPrevented&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),d()))};return(0,h.jsx)(`div`,{...n,"data-slot":`panel-item`,ref:y,role:`button`,tabIndex:u?-1:0,"aria-disabled":u||void 0,className:w,"aria-current":x,"aria-label":S,onClick:r,onKeyDown:i,children:C})}return(0,h.jsx)(`div`,{"data-slot":`panel-item`,ref:y,className:w,"aria-current":x,"aria-label":S,...b,children:C})}export{E as n,W as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{d as r,p as i,r as a,t as o}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as s}from"./QueryClientProvider-DKhXIxGb.js";import{t as c}from"./useQuery-B45lW1Kk.js";import{t as l}from"./jsx-runtime-CVSDxk6A.js";import{t as u}from"./card-BibIM9x3.js";import"./src-BJj2O5XB.js";import{t as d}from"./confirm-dialog-SpCsmAdG.js";import{n as f}from"./toast-CxaZ5f1d.js";import{t as p}from"./arrow-left-CP-EhDNF.js";import{t as m}from"./external-link-DAovIsxF.js";import{t as h}from"./loader-circle-Cw1KvvLK.js";import{t as g}from"./triangle-alert-AqQQTwUZ.js";import{$ as _,Ht as v,Q as y,Ut as b,Wt as x,it as S,nt as C,tt as w}from"./react-query.gen-4ZMhZ-fj.js";import{a as T}from"./routes-B9xcBuuC.js";import{t as E}from"./assistant-feature-flag-store-BD9zTDcP.js";import{Li as D,Nr as O,ca as k,ea as A,j}from"./index-Cx6vyW7T.js";import{t as M}from"./use-active-assistant-id-BlwRimQH.js";import{n as N,r as P,t as F}from"./use-plugin-drift-C3gz_rng.js";var I=e(t(),1),L=l();function R(e){return e?e.slice(0,7):`unknown`}function z(){let e=E.use.hasHydrated(),t=E.use.externalPlugins(),l=M(),{name:m}=i(),h=r(),g=s(),[D,O]=(0,I.useState)(!1),[k,A]=(0,I.useState)(!1),P=c({...y({path:{assistant_id:l,name:m??``}}),enabled:!!l&&!!m}),z=P.data?.installed??!1,G=N({assistantId:l,name:m??``,enabled:z}).data,K=(0,I.useCallback)(()=>{g.invalidateQueries({queryKey:C({path:{assistant_id:l}})}),g.invalidateQueries({queryKey:S({path:{assistant_id:l}})}),m&&(g.invalidateQueries({queryKey:_({path:{assistant_id:l,name:m}})}),g.invalidateQueries({queryKey:w({path:{assistant_id:l,name:m}})}))},[l,m,g]),q=x({onSuccess:()=>{K(),f.success(`Installed ${m??`plugin`}`)}}),J=v({onSuccess:()=>{K(),h(T.plugins)}}),Y=b({onSuccess:e=>{K(),f.success(e.outcome===`already-up-to-date`?`${m??`Plugin`} is already up to date`:`Upgraded ${m??`plugin`} to ${R(e.toCommit)}`)}});if(!e)return null;if(!t)return(0,L.jsx)(a,{to:T.identity,replace:!0});if(!m)return(0,L.jsx)(a,{to:T.plugins,replace:!0});let X=()=>{q.mutate({path:{assistant_id:l},body:{name:m}})},Z=()=>{O(!1),J.mutate({path:{assistant_id:l,name:m}})},Q=()=>{Y.mutate({path:{assistant_id:l,name:m},body:{}})},ee=()=>{if(F(G)){A(!0);return}Q()},te=()=>{A(!1),Q()},$=P.data??null;return(0,L.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col`,children:[(0,L.jsxs)(`div`,{className:`mb-4 flex items-start gap-3`,children:[(0,L.jsx)(n,{asChild:!0,variant:`ghost`,children:(0,L.jsx)(o,{to:T.plugins,"aria-label":`Back to plugins`,children:(0,L.jsx)(p,{"aria-hidden":!0})})}),(0,L.jsx)(B,{name:m,plugin:$,drift:G,onInstall:X,onRemove:()=>O(!0),onUpgrade:ee,isInstalling:q.isPending,isRemoving:J.isPending,isUpgrading:Y.isPending})]}),(q.isError||J.isError||Y.isError)&&(0,L.jsx)(W,{message:q.isError?`Failed to install plugin. Please try again.`:J.isError?`Failed to remove plugin. Please try again.`:`Failed to upgrade plugin. Please try again.`}),(0,L.jsx)(u.Root,{asChild:!0,children:(0,L.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-5`,children:P.isLoading?(0,L.jsx)(H,{}):P.isError||!$?(0,L.jsx)(U,{}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(V,{plugin:$}),$.readme?(0,L.jsx)(j,{content:$.readme}):(0,L.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`This plugin doesn't ship a README.`})]})})}),(0,L.jsx)(d,{open:D,title:`Remove plugin`,message:`Remove "${$?.name??m}" from this assistant?`,confirmLabel:`Remove`,destructive:!0,onConfirm:Z,onCancel:()=>O(!1)}),(0,L.jsx)(d,{open:k,title:`Upgrade plugin`,message:`"${$?.name??m}" has local edits that will be overwritten by the upgrade. Continue?`,confirmLabel:`Upgrade anyway`,destructive:!0,onConfirm:te,onCancel:()=>A(!1)})]})}function B({name:e,plugin:t,drift:r,onInstall:i,onRemove:a,onUpgrade:o,isInstalling:s,isRemoving:c,isUpgrading:l}){let u=t?.installed??!1,d=t?.source?.kind===`github`,f=t?.artifact??null,p=r?.status===`update-available`,m=p?`Upgrade ${R(r?.local?.commit??null)} \u2192 ${R(r?.remote?.commit??null)}`:void 0;return(0,L.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-3 sm:flex-row sm:items-center`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,L.jsx)(`div`,{className:`flex h-10 w-10 shrink-0 items-center justify-center text-2xl`,children:d?`📦`:`🧩`}),(0,L.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,L.jsx)(`h2`,{className:`truncate text-title-medium`,style:{color:`var(--content-default)`},children:t?.name??e}),t?.version?(0,L.jsxs)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:[`v`,t.version]}):null,d?(0,L.jsx)(`span`,{className:`shrink-0 rounded px-1.5 py-0.5 text-body-small-default`,style:{backgroundColor:`var(--surface-secondary)`,color:`var(--content-tertiary)`},children:`external`}):null,p?(0,L.jsx)(P,{}):null]}),t?.description?(0,L.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-body-medium-lighter`,style:{color:`var(--content-secondary)`},children:t.description}):null]})]}),t?u?(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[f?(0,L.jsx)(n,{asChild:!0,leftIcon:(0,L.jsx)(D,{"aria-hidden":!0}),children:(0,L.jsx)(`a`,{href:f.url,download:!0,children:f.label??`Download`})}):null,p?(0,L.jsx)(n,{type:`button`,onClick:o,disabled:l,title:m,leftIcon:l?(0,L.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):(0,L.jsx)(A,{"aria-hidden":!0}),children:`Upgrade`}):null,(0,L.jsx)(n,{type:`button`,variant:`dangerOutline`,onClick:a,disabled:c,leftIcon:c?(0,L.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):(0,L.jsx)(O,{"aria-hidden":!0}),children:`Remove`})]}):(0,L.jsx)(n,{type:`button`,onClick:i,disabled:s,leftIcon:s?(0,L.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):(0,L.jsx)(k,{"aria-hidden":!0}),children:`Install`}):null]})}function V({plugin:e}){let t=[{label:`Source`,value:e.source?.kind===`github`?e.source.repo:`Local`,href:(e.source?.kind===`github`?`https://github.com/${e.source.repo}`:null)??void 0}];return e.homepage&&t.push({label:`Homepage`,value:e.homepage,href:e.homepage}),e.license&&t.push({label:`License`,value:e.license}),(0,L.jsx)(`dl`,{className:`mb-5 grid gap-x-6 gap-y-2 border-b pb-5 sm:grid-cols-[max-content_1fr]`,style:{borderColor:`var(--border-base)`},children:t.map(e=>(0,L.jsxs)(`div`,{className:`contents`,children:[(0,L.jsx)(`dt`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:e.label}),(0,L.jsx)(`dd`,{className:`min-w-0 truncate text-body-small-default`,style:{color:`var(--content-secondary)`},children:e.href?(0,L.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 underline`,style:{color:`var(--primary-base, #60a5fa)`},children:[e.value,(0,L.jsx)(m,{className:`h-3 w-3`,"aria-hidden":!0})]}):e.value})]},e.label))})}function H(){return(0,L.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,L.jsx)(h,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})})}function U(){return(0,L.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 py-12 text-center`,style:{color:`var(--content-tertiary)`},children:[(0,L.jsx)(g,{className:`h-6 w-6`,"aria-hidden":!0}),(0,L.jsx)(`p`,{className:`text-body-medium-default`,children:`We couldn't load this plugin.`}),(0,L.jsx)(`p`,{className:`text-body-small-default`,children:`It may not exist, or your assistant may be on an older build.`})]})}function W({message:e}){return(0,L.jsxs)(`div`,{className:`mb-3 flex items-center gap-2 rounded px-3 py-2 text-body-small-default`,style:{backgroundColor:`var(--surface-secondary)`,color:`var(--content-warning, var(--content-tertiary))`},role:`alert`,children:[(0,L.jsx)(g,{className:`h-4 w-4 shrink-0`,"aria-hidden":!0}),e]})}export{z as PluginDetailPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as a}from"./QueryClientProvider-DKhXIxGb.js";import{t as o}from"./useQuery-B45lW1Kk.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./card-BibIM9x3.js";import{t as l}from"./input-Ch7OC6ME.js";import{c as u,f as d,o as f}from"./local-mode-BD2zqd9I.js";import{t as p}from"./is-electron-C_ZTVhv8.js";import{n as m}from"./resolved-assistants-store-DLNFVaZL.js";import{t as h}from"./chevron-left-o_oJAd6A.js";import{t as g}from"./loader-circle-Cw1KvvLK.js";import{t as _}from"./pencil-Dm2eFMe3.js";import{t as v}from"./x-BeVbiDS2.js";import{F as y,X as b,Y as x,a as S,n as C,o as w}from"./auth-store-CbVvQiBR.js";import{t as T}from"./client.gen-DzaL5PKF.js";import{a as E}from"./routes-B9xcBuuC.js";import{o as D,r as O}from"./prefs-DP4g-Qgi.js";import{t as k}from"./client-feature-flag-store-DjN8fxHA.js";import{b as ee,r as A,yt as te}from"./react-query.gen-CRARj4mG.js";import{t as j}from"./public-asset-CH9GPeL_.js";import{Ct as ne,Fi as M,H as N,U as re,V as P,_n as F,_t as I,c as ie,d as ae,dt as oe,ft as L,gn as se,gt as ce,l as le,mt as R,na as z,pt as B,s as ue,vn as de,wt as fe,yn as pe}from"./index-Cx6vyW7T.js";import{c as me,i as he,n as V,o as ge,r as _e,s as ve,t as H}from"./step-indicator-dots-Bx_0xTIr.js";import{n as ye,r as be}from"./prechat-names-CkLrL-Jh.js";var U=e(t(),1);async function xe(){try{let{data:e,response:t}=await T.get({url:`/v1/onboarding/recipe/`,throwOnError:!1});if(!t?.ok||!e)return null;let n=e;return typeof n.cohort!=`string`||!Array.isArray(n.tasks)||typeof n.tone!=`string`||typeof n.bootstrap_template!=`string`||typeof n.initial_message!=`string`||!Array.isArray(n.skills)||typeof n.skip_prechat!=`boolean`?null:{cohort:n.cohort,tasks:n.tasks,tone:n.tone,bootstrapTemplate:n.bootstrap_template,initialMessage:n.initial_message,skills:n.skills,skipPrechat:n.skip_prechat}}catch{return null}}var W=s(),Se=[{label:`Push notifications`,detail:`stay in the loop even when the browser is closed`},{label:`Biometric login`,detail:`Face ID & Touch ID for instant, secure access`},{label:`Native haptics`,detail:`tactile feedback that feels part of the device`},{label:`Home screen access`,detail:`launch your assistant with a single tap`}];function Ce({onComplete:e}){function t(){le(),ue(),e()}return(0,W.jsx)(I,{showCreatureFooter:!1,children:(0,W.jsxs)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-md flex-col items-center justify-center px-6 pb-40 text-center`,children:[(0,W.jsx)(`div`,{className:`mb-8 flex size-16 items-center justify-center rounded-2xl border`,style:{background:`var(--surface-overlay)`,borderColor:`var(--border-element)`,boxShadow:`0 1px 3px rgba(0,0,0,0.06), 0 4px 12px rgba(0,0,0,0.04)`,animation:`fadeInUp 0.3s ease-out both`},children:(0,W.jsxs)(`svg`,{width:`28`,height:`28`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{color:`var(--content-default)`},"aria-hidden":!0,children:[(0,W.jsx)(`rect`,{x:`5`,y:`2`,width:`14`,height:`20`,rx:`3`}),(0,W.jsx)(`line`,{x1:`12`,y1:`18`,x2:`12`,y2:`18.01`})]})}),(0,W.jsx)(`p`,{className:`text-label-small-default mb-3 uppercase tracking-[0.2em]`,style:{color:`var(--content-tertiary)`,animation:`fadeInUp 0.3s ease-out 0.05s both`},children:`One more thing`}),(0,W.jsx)(`h1`,{className:`mb-3 text-3xl font-semibold tracking-tight`,style:{color:`var(--content-default)`,animation:`fadeInUp 0.3s ease-out 0.1s both`},children:`Your assistant, in your pocket.`}),(0,W.jsx)(`p`,{className:`text-body-medium-lighter mb-10 max-w-sm`,style:{color:`var(--content-secondary)`,animation:`fadeInUp 0.3s ease-out 0.15s both`},children:`The iOS app keeps your assistant a tap away — with push notifications, biometric login, and native haptics.`}),(0,W.jsx)(`div`,{className:`mb-10 w-full rounded-xl border px-5 py-4`,style:{background:`var(--surface-overlay)`,borderColor:`var(--border-element)`,animation:`fadeInUp 0.3s ease-out 0.2s both`},children:(0,W.jsx)(`ul`,{className:`space-y-4`,children:Se.map((e,t)=>(0,W.jsxs)(`li`,{className:`flex items-start gap-3`,style:{animation:`fadeInUp 0.3s ease-out ${.25+t*.05}s both`},children:[(0,W.jsx)(`span`,{className:`mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full`,style:{background:`var(--system-positive-weak)`},children:(0,W.jsx)(z,{size:12,style:{color:`var(--system-positive-strong)`}})}),(0,W.jsxs)(`span`,{className:`text-left`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),(0,W.jsxs)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:[` — `,e.detail]})]})]},e.label))})}),(0,W.jsxs)(`div`,{className:`flex w-full flex-col gap-2`,style:{animation:`fadeInUp 0.3s ease-out 0.45s both`},children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,onClick:t,className:`h-11 text-base`,children:`Download on the App Store`}),(0,W.jsx)(n,{variant:`ghost`,size:`regular`,fullWidth:!0,onClick:e,className:`h-11 text-base`,children:`Continue in browser`})]})]})})}var G=`google`,we=[{id:`gmail`,label:`Gmail`,logoSrc:j(`/images/integrations/gmail.svg`)},{id:`google-calendar`,label:`Google Calendar`,logoSrc:j(`/images/integrations/google-calendar.svg`)},{id:`google-drive`,label:`Google Drive`,logoSrc:j(`/images/integrations/google-drive.svg`)}];function Te({assistantId:e,assistantName:t,onConnect:r,onSkip:i,onBack:o}){let s=p(),c=a(),l=y(),u=(0,U.useRef)(null),d=(0,U.useRef)(null),f=(0,U.useRef)(null),m=(0,U.useRef)(null),_=(0,U.useRef)(null),v=(0,U.useRef)(null),b=(0,U.useRef)(null),[x,S]=(0,U.useState)(!1),C=(0,U.useCallback)(()=>{d.current=null,S(!1)},[]),w=(0,U.useCallback)(()=>{_.current&&=(window.removeEventListener(`message`,_.current),null),v.current&&=(window.removeEventListener(`storage`,v.current),null)},[]),T=(0,U.useCallback)(()=>{u.current&&!u.current.closed&&u.current.close(),u.current=null,f.current&&=(clearInterval(f.current),null),m.current&&=(clearTimeout(m.current),null)},[]),D=te();(0,U.useEffect)(()=>()=>{f.current&&clearInterval(f.current),m.current&&clearTimeout(m.current),u.current&&!u.current.closed&&u.current.close(),_.current&&window.removeEventListener(`message`,_.current),v.current&&window.removeEventListener(`storage`,v.current),b.current&&=(b.current(),null)},[]);let O=(0,U.useCallback)(async e=>{try{return(await c.fetchQuery({...ee({path:{assistant_id:e}}),staleTime:0})).find(e=>e.provider===G&&e.connected)??null}catch{return null}},[c]),k=(0,U.useCallback)(async()=>{let e=d.current?.platformAssistantId;T(),C(),r((e?await O(e):null)?.scopes_granted??[])},[C,T,O,r]),A=(0,U.useCallback)(e=>{e.type===`vellum:oauth-complete`&&(!d.current||e.requestId!==d.current.requestId||(e.oauthStatus===`connected`?k():(T(),C())))},[C,T,k]),j=(0,U.useCallback)(e=>{let t=d.current;if(!t)return;let n=oe(e,window.location.origin,t.requestId);n&&A(n)},[A]),M=(0,U.useCallback)(e=>{let t=d.current;if(!t)return;let n=L(e,t.requestId);n&&(A(n),window.localStorage.removeItem(R(t.requestId)))},[A]);ce((0,U.useCallback)(e=>{let t=d.current;t&&e.requestId===t.requestId&&A({type:`vellum:oauth-complete`,requestId:e.requestId,oauthStatus:e.oauthStatus,oauthProvider:e.oauthProvider,oauthCode:e.oauthCode})},[A]));let N=(0,U.useCallback)(()=>{let t=crypto.randomUUID();if(w(),_.current=j,v.current=M,l){S(!0),(async()=>{let n;try{n=await re(e)}catch{C();return}d.current={requestId:t,platformAssistantId:n},D.mutate({path:{assistant_id:n,provider:G},body:{requested_scopes:[],redirect_after_connect:`${E.account.oauth.popupComplete}?requestId=${t}&native=1`}},{onSuccess(e){ne(e.connect_url)},onError(){C()}})})(),window.addEventListener(`message`,j),window.addEventListener(`storage`,M),b.current&&b.current();let n=fe(()=>{let e=d.current;if(!e){n(),b.current=null;return}(async()=>{let t=await O(e.platformAssistantId);d.current&&(t?await k():C(),w(),n(),b.current=null)})()});b.current=n;return}let n=window.open(``,`_blank`,`width=500,height=600`);if(n===null){w();return}u.current=n,S(!0),window.addEventListener(`message`,j),window.addEventListener(`storage`,M),f.current=setInterval(()=>{u.current&&u.current.closed&&d.current&&!m.current&&(m.current=setTimeout(async()=>{m.current=null;let e=d.current;if(!e)return;let t=window.localStorage.getItem(R(e.requestId));if(t)try{let n=JSON.parse(t);if(B(n,e.requestId)){A(n),window.localStorage.removeItem(R(e.requestId)),w();return}}catch{}let n=await O(e.platformAssistantId);d.current&&(n?await k():(T(),C()),w())},1e3))},100),(async()=>{let n;try{n=await re(e)}catch{T(),C(),w();return}d.current={requestId:t,platformAssistantId:n},D.mutate({path:{assistant_id:n,provider:G},body:{requested_scopes:[],redirect_after_connect:`${E.account.oauth.popupComplete}?requestId=${t}`}},{onSuccess(e){u.current&&!u.current.closed?u.current.location.href=e.connect_url:d.current&&(T(),C(),w())},onError(){T(),C(),w()}})})()},[e,C,T,O,A,j,M,k,l,w,D]),P=t||`your assistant`,F=t||`Your assistant`;return(0,W.jsx)(I,{showCreatureFooter:!1,children:(0,W.jsxs)(`div`,{className:`mx-auto flex w-full max-w-md flex-col items-center ${s?`min-h-full px-8 pt-11 pb-8 electron-prechat-type`:`px-6 pt-12 pb-40`} text-[var(--content-default)]`,children:[(0,W.jsxs)(`div`,{className:`grid w-full grid-cols-[auto_1fr_auto] items-center`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:[(0,W.jsx)(`button`,{type:`button`,onClick:o,"aria-label":`Back`,className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-[var(--content-secondary)] transition-colors hover:bg-[var(--surface-base)]`,children:(0,W.jsx)(h,{className:`h-4 w-4`})}),(0,W.jsx)(`h1`,{className:`text-center ${s?`text-title-large`:`text-3xl font-semibold tracking-tight`}`,children:`Connect Google`}),(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-8 w-8`})]}),(0,W.jsx)(`p`,{className:`mt-4 text-center text-body-medium-lighter text-[var(--content-secondary)]`,style:{animation:`fadeInUp 0.3s ease-out 0.15s both`},children:`If you use Google, ${P} can use Gmail, Calendar, and Drive with your permission.`}),(0,W.jsx)(`div`,{className:`mt-6 flex items-stretch justify-center gap-3`,style:{animation:`fadeInUp 0.3s ease-out 0.2s both`},children:we.map(e=>(0,W.jsxs)(`div`,{className:`flex w-24 flex-col items-center gap-2.5 rounded-2xl bg-[var(--surface-lift)] px-3 pb-3 pt-4`,children:[(0,W.jsx)(`img`,{src:e.logoSrc,alt:``,width:28,height:28,className:`h-7 w-7 object-contain`,loading:`eager`}),(0,W.jsx)(`span`,{className:`text-center text-xs leading-tight text-[var(--content-tertiary)]`,children:e.label})]},e.id))}),(0,W.jsx)(`p`,{className:`mt-8 text-center text-body-medium-lighter text-[var(--content-secondary)]`,style:{animation:`fadeInUp 0.3s ease-out 0.25s both`},children:`${F} will never send email, change calendar events, or edit files without your permission. You can disconnect at any time.`}),(0,W.jsxs)(`div`,{className:`${s?`mt-auto`:`mt-8`} flex w-full flex-col gap-2`,style:{animation:`fadeInUp 0.3s ease-out 0.35s both`},children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,onClick:N,disabled:x||D.isPending,className:`${s?`h-9`:`h-11 text-base`}`,children:x||D.isPending?(0,W.jsxs)(`span`,{className:`flex items-center justify-center gap-2`,children:[(0,W.jsx)(g,{className:`h-4 w-4 animate-spin`,"aria-hidden":!0}),`Waiting for authorization...`]}):`Connect Google`}),(0,W.jsx)(n,{variant:`ghost`,size:`regular`,fullWidth:!0,onClick:i,disabled:x||D.isPending,className:`${s?`h-9`:`h-11 text-base`}`,children:`Skip for now`})]})]})})}function Ee({userName:e,assistantName:t,selectedGroupId:r,displayedAssistantNames:i,onUserNameChange:a,onAssistantNameChange:o,onGroupChange:s,onBack:c,onComplete:u,onSkip:d}){let f=p();return(0,W.jsx)(I,{showCreatureFooter:!1,children:(0,W.jsxs)(`div`,{className:`mx-auto flex w-full max-w-md flex-col items-center ${f?`min-h-full px-8 pt-11 pb-8 electron-prechat-type`:`px-6 pt-12 pb-40`} text-[var(--content-default)]`,children:[(0,W.jsxs)(`div`,{className:`grid w-full items-center ${c?`grid-cols-[auto_1fr_auto]`:``}`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:[c?(0,W.jsx)(`button`,{type:`button`,onClick:c,"aria-label":`Back`,className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-[var(--content-secondary)] transition-colors hover:bg-[var(--surface-base)]`,children:(0,W.jsx)(h,{className:`h-4 w-4`})}):null,(0,W.jsx)(`h1`,{className:`text-center ${f?`text-title-large`:`text-3xl font-semibold tracking-tight`}`,children:`Let's get to know each other.`}),c?(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-8 w-8`}):null]}),(0,W.jsx)(`p`,{className:`mt-2 text-center text-body-medium-lighter text-[var(--content-secondary)]`,style:{animation:`fadeInUp 0.3s ease-out 0.15s both`},children:`You can change these any time.`}),(0,W.jsxs)(`div`,{className:`${f?`mt-6`:`mt-8`} flex w-full flex-col ${f?`gap-4`:`gap-6`}`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:[(0,W.jsx)(l,{label:`Your name`,placeholder:`Your name`,value:e,onChange:e=>a(e.target.value),fullWidth:!0}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(l,{label:`What should I go by?`,placeholder:`Assistant name`,value:t,onChange:e=>o(e.target.value),fullWidth:!0}),(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`A few to try`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:i.map(e=>{let n=e===t;return(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e),"aria-pressed":n,className:`cursor-pointer rounded-full border px-3 py-1 text-label-small-default transition-colors ${n?`border-[var(--primary-base)] bg-[var(--primary-base)] text-[var(--content-inset)]`:`border-[var(--border-element)] bg-[var(--surface-lift)] text-[var(--content-secondary)] hover:bg-[var(--surface-base)]`}`,children:e},e)})})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Pick a vibe`}),(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:ye.map(e=>(0,W.jsx)(De,{group:e,isActive:r===e.id,onToggle:()=>s(r===e.id?null:e.id)},e.id))})]})]}),(0,W.jsxs)(`div`,{className:`${f?`mt-auto`:`mt-8`} flex w-full flex-col gap-2`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,onClick:u,className:`${f?`h-9`:`h-11 text-base`}`,children:`Let's go`}),(0,W.jsx)(n,{variant:`ghost`,size:`regular`,fullWidth:!0,onClick:d,className:`${f?`h-9`:`h-11 text-base`}`,children:`Skip`})]})]})})}function De({group:e,isActive:t,onToggle:n}){return(0,W.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":t,"aria-label":`${e.label}, ${e.descriptor}`,className:`flex cursor-pointer flex-col items-start gap-0.5 rounded-lg border p-3 text-left transition-colors ${t?`border-[var(--primary-base)] bg-[var(--primary-base)] text-[var(--content-inset)]`:`border-[var(--border-element)] bg-[var(--surface-lift)] hover:bg-[var(--surface-base)]`}`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-default ${t?`text-[var(--content-inset)]`:`text-[var(--content-default)]`}`,children:e.descriptor}),(0,W.jsx)(`span`,{className:`text-body-small-default ${t?`text-[var(--content-inset)] opacity-60`:`text-[var(--content-tertiary)]`}`,children:e.tagline})]})}function Oe({userName:e,assistantName:t,displayedAssistantNames:r,onUserNameChange:i,onAssistantNameChange:a,onBack:o,onContinue:s,onSkip:c,currentStep:u,totalSteps:d}){return(0,W.jsx)(I,{showCreatureFooter:!1,children:(0,W.jsxs)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-md flex-col px-6 pb-40 text-[var(--content-default)]`,children:[(0,W.jsxs)(`div`,{className:`grid w-full grid-cols-[auto_1fr_auto] items-center pb-4`,style:{paddingTop:`calc(var(--safe-area-inset-top, env(safe-area-inset-top, 0px)) + 1rem)`,animation:`fadeInUp 0.3s ease-out 0.1s both`},children:[o?(0,W.jsx)(n,{variant:`ghost`,size:`compact`,iconOnly:(0,W.jsx)(h,{}),onClick:o,"aria-label":`Back`}):(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-8 w-8`}),(0,W.jsx)(`div`,{className:`flex justify-center`,children:(0,W.jsx)(H,{current:u,total:d})}),(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-8 w-8`})]}),(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col items-center pt-4`,children:[(0,W.jsx)(`h1`,{className:`text-center text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:`Let's get to know each other.`}),(0,W.jsx)(`p`,{className:`mt-2 text-center text-body-medium-lighter text-[var(--content-secondary)]`,style:{animation:`fadeInUp 0.3s ease-out 0.15s both`},children:`You can change these any time.`}),(0,W.jsxs)(`div`,{className:`mt-8 flex w-full flex-col gap-6`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:[(0,W.jsx)(l,{label:`Your name`,placeholder:`Your name`,value:e,onChange:e=>i(e.target.value),fullWidth:!0}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(l,{label:`What should I go by?`,placeholder:`Assistant name`,value:t,onChange:e=>a(e.target.value),fullWidth:!0}),(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`A few to try`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:r.map(e=>{let n=e===t;return(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(e),"aria-pressed":n,className:`cursor-pointer rounded-full border px-3 py-1 text-label-small-default transition-colors ${n?`border-[var(--primary-base)] bg-[var(--primary-base)] text-[var(--content-inset)]`:`border-[var(--border-element)] bg-[var(--surface-lift)] text-[var(--content-secondary)] hover:bg-[var(--surface-base)]`}`,children:e},e)})})]})]})]}),(0,W.jsxs)(`div`,{className:`flex w-full flex-col gap-2 pb-4`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,onClick:s,className:`h-11 text-base`,children:`Continue`}),(0,W.jsx)(n,{variant:`ghost`,size:`regular`,fullWidth:!0,onClick:c,className:`h-11 text-base`,children:`Skip`})]})]})})}var ke=[{id:`chatgpt`,label:`ChatGPT`,logoSrc:j(`/images/prior-assistants/chatgpt.svg`)},{id:`claude`,label:`Claude`,logoSrc:j(`/images/prior-assistants/claude.svg`)},{id:`openclaw`,label:`OpenClaw`,logoSrc:j(`/images/prior-assistants/openclaw.png`)},{id:`hermes`,label:`Hermes`,logoSrc:j(`/images/prior-assistants/hermes.png`)},{id:`manus`,label:`Manus`,logoSrc:j(`/images/prior-assistants/manus.svg`)},{id:`gemini`,label:`Gemini`,logoSrc:j(`/images/prior-assistants/gemini.svg`)},{id:`copilot`,label:`Copilot`,logoSrc:j(`/images/prior-assistants/copilot.svg`)}];function Ae({selectedAssistants:e,onChange:t,onBack:r,onContinue:i,onSkip:a}){let o=p(),[s,u]=(0,U.useState)(()=>K(e)),[d,f]=(0,U.useState)(()=>s.length>0),m=(0,U.useRef)(q(e));(0,U.useEffect)(()=>{let t=q(e);if(t===m.current)return;let n=K(e);u(n),f(e=>e||n.length>0),m.current=t},[e]),(0,U.useEffect)(()=>{let n=new Set([...e].filter(e=>!e.startsWith(`other:`))),r=new Set;for(let e of s.split(`,`)){let t=e.trim();t&&(r.has(t)||(r.add(t),n.add(`other:${t}`)))}je(n,e)||(m.current=q(n),t(n))},[s]);let g=n=>{let r=new Set(e);r.has(n)?r.delete(n):r.add(n),t(r)},y=(0,U.useMemo)(()=>{let e=new Set;return s.split(`,`).map(e=>e.trim()).filter(t=>!t||e.has(t)?!1:(e.add(t),!0))},[s]),b=e.size===0?`Continue`:`Continue · ${e.size} selected`;return(0,W.jsx)(I,{showCreatureFooter:!1,children:(0,W.jsxs)(`div`,{className:`mx-auto flex w-full max-w-2xl flex-col items-center ${o?`min-h-full px-8 pt-11 pb-8 electron-prechat-type`:`px-6 pt-12 pb-40`} text-[var(--content-default)]`,children:[(0,W.jsxs)(`div`,{className:`grid w-full items-center grid-cols-[auto_1fr_auto]`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:[(0,W.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Back`,className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-[var(--content-secondary)] transition-colors hover:bg-[var(--surface-base)]`,children:(0,W.jsx)(h,{className:`h-4 w-4`})}),(0,W.jsx)(`h1`,{className:`text-center ${o?`text-title-large`:`text-3xl font-semibold tracking-tight`}`,children:`Have you used any of these?`}),(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-8 w-8`})]}),(0,W.jsx)(`p`,{className:`${o?`mt-3`:`mt-4`} text-center text-body-medium-lighter text-[var(--content-${o?`secondary`:`tertiary`})]`,style:{animation:`fadeInUp 0.3s ease-out 0.15s both`},children:`If you've built anything with another assistant, I can help you bring it over.`}),(0,W.jsxs)(`div`,{className:`${o?`mt-4`:`mt-8`} grid w-full grid-cols-2 gap-2 sm:grid-cols-3 md:grid-cols-4`,style:{animation:`fadeInUp 0.3s ease-out 0.2s both`},children:[ke.map(t=>(0,W.jsx)(Me,{assistant:t,selected:e.has(t.id),onToggle:()=>g(t.id)},t.id)),d?null:(0,W.jsx)(Ne,{onClick:()=>f(!0)})]}),d?(0,W.jsx)(c,{padding:`md`,className:`mt-3 w-full border-[var(--primary-base)] bg-[color-mix(in_srgb,var(--primary-base)_8%,transparent)]`,children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(_,{className:`h-3.5 w-3.5 text-[var(--content-secondary)]`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`text-body-medium-default prechat-md-regular text-[var(--content-default)]`,children:`Something else`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{f(!1),u(``)},"aria-label":`Dismiss custom assistants`,className:`ml-auto inline-flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-[var(--content-tertiary)] hover:bg-[var(--surface-base)]`,children:(0,W.jsx)(v,{className:`h-3 w-3`,"aria-hidden":`true`})})]}),(0,W.jsx)(l,{"aria-label":`Other assistants`,placeholder:`e.g. Perplexity, Poe, Character.AI...`,value:s,onChange:e=>u(e.target.value),helperText:`Separate multiple assistants with commas`,fullWidth:!0}),y.length>0?(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:y.map(e=>(0,W.jsx)(`span`,{className:`rounded-full bg-[var(--primary-base)] px-3 py-1 text-label-small-default text-[var(--content-inset)]`,children:e},e))}):null]})}):null,(0,W.jsxs)(`div`,{className:`${o?`mt-auto`:`mt-8`} flex w-full flex-col gap-2`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,disabled:e.size===0,onClick:i,className:`${o?`h-9`:`h-11 text-base`}`,children:b}),(0,W.jsx)(n,{variant:`ghost`,size:`regular`,fullWidth:!0,onClick:a,className:`${o?`h-9`:`h-11 text-base`}`,children:`I haven't used any`})]})]})})}function je(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function K(e){return[...e].filter(e=>e.startsWith(`other:`)).map(e=>e.slice(6)).sort().join(`, `)}function q(e){return[...e].filter(e=>e.startsWith(`other:`)).sort().join(`|`)}function Me({assistant:e,selected:t,onToggle:n}){return(0,W.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":t,"aria-label":e.label,className:`relative flex h-[88px] w-full cursor-pointer flex-col items-center justify-center gap-1.5 rounded-lg border p-2 transition-colors ${t?`border-[var(--primary-base)] bg-[color-mix(in_srgb,var(--primary-base)_10%,transparent)]`:`border-[var(--border-element)] bg-[var(--surface-lift)] hover:bg-[var(--surface-base)]`}`,children:[(0,W.jsx)(Pe,{assistant:e,size:32}),(0,W.jsx)(`span`,{className:`line-clamp-2 text-center text-label-medium-default text-[var(--content-default)]`,children:e.label}),t?(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`absolute right-2 top-2 flex h-4 w-4 items-center justify-center rounded-full bg-[var(--primary-base)]`,children:(0,W.jsx)(z,{className:`h-2.5 w-2.5 text-[var(--content-inset)]`,"aria-hidden":`true`})}):null]})}function Ne({onClick:e}){return(0,W.jsxs)(`button`,{type:`button`,onClick:e,"aria-label":`Something else`,className:`flex h-[88px] w-full cursor-pointer flex-col items-center justify-center gap-1.5 rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] p-2 transition-colors hover:bg-[var(--surface-base)]`,children:[(0,W.jsx)(`span`,{className:`flex h-8 w-8 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,W.jsx)(M,{className:`h-4 w-4 text-[var(--content-secondary)]`,"aria-hidden":`true`})}),(0,W.jsx)(`span`,{className:`line-clamp-2 text-center text-label-medium-default text-[var(--content-default)]`,children:`Something else`})]})}function Pe({assistant:e,size:t}){if(e.logoSrc)return e.logoSrcDark?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`flex items-center justify-center dark:hidden`,style:{width:t,height:t},"aria-hidden":`true`,children:(0,W.jsx)(`img`,{src:e.logoSrc,alt:``,width:t,height:t,className:`max-h-full max-w-full object-contain`,loading:`eager`})}),(0,W.jsx)(`span`,{className:`hidden items-center justify-center dark:flex`,style:{width:t,height:t},"aria-hidden":`true`,children:(0,W.jsx)(`img`,{src:e.logoSrcDark,alt:``,width:t,height:t,className:`max-h-full max-w-full object-contain`,loading:`eager`})})]}):(0,W.jsx)(`span`,{className:`flex items-center justify-center`,style:{width:t,height:t},children:(0,W.jsx)(`img`,{src:e.logoSrc,alt:``,width:t,height:t,className:`max-h-full max-w-full object-contain`,loading:`eager`})});let n=e.label.slice(0,2).toUpperCase();return(0,W.jsx)(`span`,{className:`flex items-center justify-center rounded-full bg-[var(--surface-base)] text-label-small-default text-[var(--content-default)]`,style:{width:t,height:t},"aria-hidden":`true`,children:n})}function Fe({selectedTasks:e,onChange:t,onBack:r,onContinue:i,onSkip:a}){let o=p(),s=n=>{let r=new Set(e);r.has(n)?r.delete(n):r.add(n),t(r)};return(0,W.jsx)(I,{showCreatureFooter:!1,children:(0,W.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${o?`min-h-full px-8 pt-11 pb-8 electron-prechat-type`:`px-6 pt-12 pb-40`} text-[var(--content-default)]`,children:[(0,W.jsxs)(`div`,{className:`grid w-full grid-cols-[auto_1fr_auto] items-center`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:[(0,W.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Back`,className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-[var(--content-secondary)] transition-colors hover:bg-[var(--surface-base)]`,children:(0,W.jsx)(h,{className:`h-4 w-4`})}),(0,W.jsx)(`h1`,{className:`text-center ${o?`text-title-large`:`text-3xl font-semibold tracking-tight`}`,children:`What are you working on?`}),(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-8 w-8`})]}),(0,W.jsx)(`p`,{className:`${o?`mt-2`:`mt-4`} text-center text-body-medium-lighter text-[var(--content-${o?`secondary`:`tertiary`})]`,style:{animation:`fadeInUp 0.3s ease-out 0.15s both`},children:`Pick the one or two you do most — you can select more if it really is all of it.`}),(0,W.jsx)(`div`,{className:`${o?`mt-6`:`mt-8`} flex w-full flex-col ${o?`gap-1`:`gap-2`}`,style:{animation:`fadeInUp 0.3s ease-out 0.2s both`},children:P.map(t=>{let n=N[t.iconKey],r=e.has(t.id);return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>s(t.id),"aria-pressed":r,className:`group flex w-full cursor-pointer items-center ${o?`gap-2 p-3`:`gap-3 px-4 py-3`} rounded-lg border text-left transition-colors ${r?`border-[var(--primary-base)] bg-[var(--primary-base)]/10`:`border-[var(--border-element)] bg-[var(--surface-lift)] hover:bg-[var(--surface-base)]`}`,children:[(0,W.jsx)(`div`,{className:`flex w-6 shrink-0 items-center justify-center text-[var(--content-secondary)]`,children:n?(0,W.jsx)(n,{className:`h-4 w-4`}):null}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`text-body-medium-default prechat-md-regular text-[var(--content-default)]`,children:t.label}),(0,W.jsx)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:t.sublabel})]}),(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`flex h-5 w-5 shrink-0 items-center justify-center rounded-md ${r?`bg-[var(--primary-base)]`:`border-[1.5px] border-[var(--border-element)]`}`,children:r?(0,W.jsx)(z,{className:`h-3 w-3 text-[var(--content-inset)]`}):null})]},t.id)})}),(0,W.jsxs)(`div`,{className:`${o?`mt-auto`:`mt-8`} flex w-full flex-col gap-2`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,disabled:e.size===0,onClick:i,className:`${o?`h-9`:`h-11 text-base`}`,children:`Continue`}),(0,W.jsx)(n,{variant:`ghost`,size:`regular`,fullWidth:!0,onClick:a,className:`${o?`h-9`:`h-11 text-base`}`,children:`I'll set this up later`})]})]})})}var Ie=new Set([`gmail`,`google-calendar`,`google-drive`]),Le=[{id:`gmail`,label:`Gmail`,logoSrc:j(`/images/integrations/gmail.svg`)},{id:`outlook`,label:`Outlook`,logoSrc:j(`/images/integrations/outlook.png`)},{id:`google-calendar`,label:`Google Calendar`,logoSrc:j(`/images/integrations/google-calendar.svg`)},{id:`slack`,label:`Slack`,logoSrc:j(`/images/integrations/slack.svg`)},{id:`notion`,label:`Notion`,logoSrc:j(`/images/integrations/notion.svg`)},{id:`linear`,label:`Linear`,logoSrc:j(`/images/integrations/linear-light-logo.svg`)},{id:`jira`,label:`Jira`,logoSrc:j(`/images/integrations/jira.svg`)},{id:`github`,label:`GitHub`,logoSrc:j(`/images/integrations/github.svg`),logoSrcDark:j(`/images/integrations/github-dark.svg`)},{id:`figma`,label:`Figma`,logoSrc:j(`/images/integrations/figma.svg`)},{id:`google-drive`,label:`Google Drive`,logoSrc:j(`/images/integrations/google-drive.svg`)},{id:`excel`,label:`Excel`,logoSrc:j(`/images/integrations/excel.svg`)},{id:`apple-notes`,label:`Apple Notes`,logoSrc:j(`/images/integrations/apple-notes.svg`)}];function J(e){let t=e.map(e=>e.startsWith(`other:`)?e.slice(6):e);return Array.from(new Set(t)).sort()}function Re({selectedTools:e,onChange:t,onBack:r,onContinue:i,onSkip:a}){let o=p(),[s,u]=(0,U.useState)(()=>Y(e)),[d,f]=(0,U.useState)(()=>s.length>0),m=(0,U.useRef)(X(e));(0,U.useEffect)(()=>{let t=X(e);if(t===m.current)return;let n=Y(e);u(n),f(e=>e||n.length>0),m.current=t},[e]),(0,U.useEffect)(()=>{let n=new Set([...e].filter(e=>!e.startsWith(`other:`))),r=new Set;for(let e of s.split(`,`)){let t=e.trim();t&&(r.has(t)||(r.add(t),n.add(`other:${t}`)))}ze(n,e)||(m.current=X(n),t(n))},[s]);let g=n=>{let r=new Set(e);r.has(n)?r.delete(n):r.add(n),t(r)},y=(0,U.useMemo)(()=>{let e=new Set;return s.split(`,`).map(e=>e.trim()).filter(t=>!t||e.has(t)?!1:(e.add(t),!0))},[s]),b=e.size===0?`Continue`:`Continue · ${e.size} selected`;return(0,W.jsx)(I,{showCreatureFooter:!1,children:(0,W.jsxs)(`div`,{className:`mx-auto flex w-full max-w-2xl flex-col items-center ${o?`min-h-full px-8 pt-11 pb-8 electron-prechat-type`:`px-6 pt-12 pb-40`} text-[var(--content-default)]`,children:[(0,W.jsxs)(`div`,{className:`grid w-full items-center ${r?`grid-cols-[auto_1fr_auto]`:``}`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:[r?(0,W.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Back`,className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-[var(--content-secondary)] transition-colors hover:bg-[var(--surface-base)]`,children:(0,W.jsx)(h,{className:`h-4 w-4`})}):null,(0,W.jsx)(`h1`,{className:`text-center ${o?`text-title-large`:`text-3xl font-semibold tracking-tight`}`,children:`What do you use?`}),r?(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-8 w-8`}):null]}),(0,W.jsx)(`p`,{className:`${o?`mt-3`:`mt-4`} text-center text-body-medium-lighter text-[var(--content-${o?`secondary`:`tertiary`})]`,style:{animation:`fadeInUp 0.3s ease-out 0.15s both`},children:`This helps me tailor how I assist you. No connections needed — you can set those up later.`}),(0,W.jsxs)(`div`,{className:`grid w-full gap-2 ${o?`mt-4 grid-cols-4`:`mt-8 grid-cols-2 sm:grid-cols-3 md:grid-cols-4`}`,style:{animation:`fadeInUp 0.3s ease-out 0.2s both`},children:[Le.map(t=>(0,W.jsx)(Z,{tool:t,selected:e.has(t.id),onToggle:()=>g(t.id),electron:o},t.id)),d?null:(0,W.jsx)(Q,{onClick:()=>f(!0),electron:o})]}),d?(0,W.jsx)(c,{padding:o?`sm`:`md`,className:`mt-3 w-full border-[var(--primary-base)] bg-[color-mix(in_srgb,var(--primary-base)_8%,transparent)]`,children:(0,W.jsxs)(`div`,{className:`flex flex-col ${o?`gap-2`:`gap-3`}`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(_,{className:`h-3.5 w-3.5 text-[var(--content-secondary)]`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`text-body-medium-default prechat-md-regular text-[var(--content-default)]`,children:`Something else`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{f(!1),u(``)},"aria-label":`Dismiss custom tools`,className:`ml-auto inline-flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-[var(--content-tertiary)] hover:bg-[var(--surface-base)]`,children:(0,W.jsx)(v,{className:`h-3 w-3`,"aria-hidden":`true`})})]}),(0,W.jsx)(l,{"aria-label":`Other tools`,placeholder:`e.g. Trello, Basecamp, Asana...`,value:s,onChange:e=>u(e.target.value),helperText:`Separate multiple tools with commas`,fullWidth:!0}),y.length>0?(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:y.map(e=>(0,W.jsx)(`span`,{className:`rounded-full bg-[var(--primary-base)] px-3 py-1 text-label-small-default text-[var(--content-inset)]`,children:e},e))}):null]})}):null,(0,W.jsxs)(`div`,{className:`${o?`mt-auto`:`mt-8`} flex w-full flex-col gap-2`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,disabled:e.size===0,onClick:i,className:`${o?`h-9`:`h-11 text-base`}`,children:b}),(0,W.jsx)(n,{variant:`ghost`,size:`regular`,fullWidth:!0,onClick:a,className:`${o?`h-9`:`h-11 text-base`}`,children:`I'll set this up later`})]})]})})}function ze(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Y(e){return[...e].filter(e=>e.startsWith(`other:`)).map(e=>e.slice(6)).sort().join(`, `)}function X(e){return[...e].filter(e=>e.startsWith(`other:`)).sort().join(`|`)}function Z({tool:e,selected:t,onToggle:n,electron:r}){return(0,W.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":t,"aria-label":e.label,className:`relative flex ${r?`h-[72px]`:`h-[88px]`} w-full cursor-pointer flex-col items-center justify-center gap-1.5 rounded-lg border p-2 transition-colors ${t?`border-[var(--primary-base)] bg-[color-mix(in_srgb,var(--primary-base)_10%,transparent)]`:`border-[var(--border-element)] bg-[var(--surface-lift)] hover:bg-[var(--surface-base)]`}`,children:[(0,W.jsx)($,{tool:e,size:32}),(0,W.jsx)(`span`,{className:`${r?`w-full truncate`:`line-clamp-2`} text-center text-label-medium-default text-[var(--content-default)]`,children:e.label}),t?(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`absolute right-2 top-2 flex h-4 w-4 items-center justify-center rounded-full bg-[var(--primary-base)]`,children:(0,W.jsx)(z,{className:`h-2.5 w-2.5 text-[var(--content-inset)]`,"aria-hidden":`true`})}):null]})}function Q({onClick:e,electron:t}){return(0,W.jsxs)(`button`,{type:`button`,onClick:e,"aria-label":`Something else`,className:`flex ${t?`min-h-[72px]`:`h-[88px]`} w-full cursor-pointer flex-col items-center justify-center gap-1.5 rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] p-2 transition-colors hover:bg-[var(--surface-base)]`,children:[(0,W.jsx)(`span`,{className:`flex h-8 w-8 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,W.jsx)(M,{className:`h-4 w-4 text-[var(--content-secondary)]`,"aria-hidden":`true`})}),(0,W.jsx)(`span`,{className:`line-clamp-2 text-center text-label-medium-default text-[var(--content-default)]`,children:`Something else`})]})}function $({tool:e,size:t}){if(e.logoSrc)return e.logoSrcDark?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`flex items-center justify-center dark:hidden`,style:{width:t,height:t},"aria-hidden":`true`,children:(0,W.jsx)(`img`,{src:e.logoSrc,alt:``,width:t,height:t,className:`max-h-full max-w-full object-contain`,loading:`eager`})}),(0,W.jsx)(`span`,{className:`hidden items-center justify-center dark:flex`,style:{width:t,height:t},"aria-hidden":`true`,children:(0,W.jsx)(`img`,{src:e.logoSrcDark,alt:``,width:t,height:t,className:`max-h-full max-w-full object-contain`,loading:`eager`})})]}):(0,W.jsx)(`span`,{className:`flex items-center justify-center`,style:{width:t,height:t},children:(0,W.jsx)(`img`,{src:e.logoSrc,alt:``,width:t,height:t,className:`max-h-full max-w-full object-contain`,loading:`eager`})});let n=e.label.slice(0,2).toUpperCase();return(0,W.jsx)(`span`,{className:`flex items-center justify-center rounded-full bg-[var(--surface-base)] text-label-small-default text-[var(--content-default)]`,style:{width:t,height:t},"aria-hidden":`true`,children:n})}function Be({selectedGroupId:e,onGroupChange:t,onBack:r,onContinue:i,onSkip:a,currentStep:o,totalSteps:s}){return(0,W.jsx)(I,{showCreatureFooter:!1,children:(0,W.jsxs)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-md flex-col px-6 pb-40 text-[var(--content-default)]`,children:[(0,W.jsxs)(`div`,{className:`grid w-full grid-cols-[auto_1fr_auto] items-center pb-4`,style:{paddingTop:`calc(var(--safe-area-inset-top, env(safe-area-inset-top, 0px)) + 1rem)`,animation:`fadeInUp 0.3s ease-out 0.1s both`},children:[(0,W.jsx)(n,{variant:`ghost`,size:`compact`,iconOnly:(0,W.jsx)(h,{}),onClick:r,"aria-label":`Back`}),(0,W.jsx)(`div`,{className:`flex justify-center`,children:(0,W.jsx)(H,{current:o,total:s})}),(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-8 w-8`})]}),(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col items-center pt-4`,children:[(0,W.jsx)(`h1`,{className:`w-full text-left text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:`What's my vibe?`}),(0,W.jsx)(`p`,{className:`mt-2 w-full text-left text-body-medium-lighter text-[var(--content-secondary)]`,style:{animation:`fadeInUp 0.3s ease-out 0.15s both`},children:`You can change this any time.`}),(0,W.jsx)(`div`,{className:`mt-8 flex w-full flex-col gap-3`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:ye.map(n=>{let r=e===n.id;return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>t(r?null:n.id),"aria-pressed":r,className:`flex cursor-pointer items-center justify-between rounded-xl border px-4 py-4 text-left transition-colors ${r?`border-[var(--content-default)] bg-[var(--surface-lift)]`:`border-[var(--border-element)] bg-[var(--surface-lift)] hover:bg-[var(--surface-base)]`}`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-default)]`,children:n.descriptor}),(0,W.jsx)(`span`,{className:`flex h-5 w-5 items-center justify-center rounded-full border-2 transition-colors ${r?`border-[var(--content-default)]`:`border-[var(--content-disabled)]`}`,children:r&&(0,W.jsx)(`span`,{className:`h-2.5 w-2.5 rounded-full bg-[var(--content-default)]`})})]},n.id)})})]}),(0,W.jsxs)(`div`,{className:`flex w-full flex-col gap-2 pb-4`,style:{animation:`fadeInUp 0.3s ease-out 0.3s both`},children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,onClick:i,className:`h-11 text-base`,children:`Continue`}),(0,W.jsx)(n,{variant:`ghost`,size:`regular`,fullWidth:!0,onClick:a,className:`h-11 text-base`,children:`Skip`})]})]})})}function Ve(e){let[t,n]=(0,U.useState)(()=>(e??``).trim()),r=(0,U.useRef)(!1);return(0,U.useEffect)(()=>{if(r.current)return;let t=(e??``).trim();t&&n(e=>e||t)},[e]),{value:t,onChange:(0,U.useCallback)(e=>{r.current=!0,n(e)},[])}}var He=[`gmail`,`google-calendar`,`google-drive`],Ue=`experiment-activation-flow-2026-06-03`,We=`BOOTSTRAP-ACTIVATION-RAIL.md`;function Ge(e,t,n){return t?.initialMessage?t.initialMessage:n?F(e):se}function Ke(e){let{mode:t,recipe:n}=e,r=e.connectedScopes!==void 0,i;i=t===`native`?{tools:[],tasks:[],tone:e.tone,googleConnected:!1}:t===`paredDown`?{tools:r?[...He]:[],tasks:n?.tasks??[],tone:e.tone,googleConnected:r}:{tools:J([...e.selectedTools]),tasks:[...e.selectedTasks].sort(),tone:e.tone},n&&(i.cohort=n.cohort,i.bootstrapTemplate=n.bootstrapTemplate,i.skills=n.skills),e.activationFlowEnabled&&(i.cohort=Ue,i.bootstrapTemplate=We);let a=e.userName.trim();a&&(i.userName=a);let o=e.occupation?.trim();o&&(i.occupation=o);let s=e.assistantName.trim();return s&&(i.assistantName=s),t===`paredDown`?r&&(i.googleScopes=e.connectedScopes):t===`control`&&(r?(i.googleConnected=!0,i.googleScopes=e.connectedScopes):e.googleConnected?(i.googleConnected=!0,i.googleScopes=e.googleScopes):i.googleConnected=!1),t===`control`&&e.selectedPriorAssistants.size>0&&(i.priorAssistants=J([...e.selectedPriorAssistants])),i.initialMessage=Ge(i,e.activationFlowEnabled?null:n,e.selfIntroGreetingEnabled),i}function qe(e){return!e.localMode||e.platformSession===`present`?!0:e.platformSession===`unknown`&&e.hasCachedPlatformAssistant}function Je(e){let{paredDown:t}=e;return[{id:`name`,funnelStep:V.nameVibe,enabled:!0},{id:`taskTone`,funnelStep:V.controlWorkType,enabled:!t},{id:`tools`,funnelStep:V.controlTools,enabled:!t},{id:`priorAssistants`,funnelStep:V.controlPriorAssistants,enabled:!t&&e.canOfferPriorAssistants},{id:`google`,funnelStep:t?V.gmailConnect:V.controlGmailConnect,enabled:e.canOfferGoogleStep&&(t||e.hasGoogleTool)},{id:`iosApp`,funnelStep:V.controlGetApp,enabled:!t&&e.showIOSAppStep}].filter(e=>e.enabled).map(({enabled:e,...t})=>t)}function Ye(){return[{id:`nativeName`,funnelStep:null},{id:`nativeVibe`,funnelStep:null}]}var Xe=`1`;function Ze(e){return e===`nativeVibe`||e===Xe?`nativeVibe`:null}function Qe(e,t){let n=e.findIndex(e=>e.id===t);return n<0?null:e[n+1]?.id??null}function $e(e,t){let n=e.findIndex(e=>e.id===t);return n<=0?null:e[n-1]?.id??null}function et(){let e=r(),t=y(),n=D()&&O();return(0,U.useEffect)(()=>{!n&&!t&&e(E.onboarding.privacy,{replace:!0})},[n,t,e]),t||n}function tt(e,t){let n=e?`prechat_native_screen:${e}`:null,[r,i]=(0,U.useState)(()=>t?`nativeName`:`name`),a=(0,U.useCallback)(e=>{if(n)try{e===null?sessionStorage.removeItem(n):sessionStorage.setItem(n,e)}catch{}},[n]);return(0,U.useLayoutEffect)(()=>{if(n)try{let e=Ze(sessionStorage.getItem(n));e&&i(e)}catch{}},[n]),(0,U.useEffect)(()=>{t&&a(r===`nativeVibe`?`nativeVibe`:null)},[t,r,a]),{currentStep:r,setCurrentStep:i,clearPersistedStep:(0,U.useCallback)(()=>{a(null)},[a])}}var nt=3;function rt(){let e=u();return e?.cloud===`vellum`?e.assistantId:f()[0]?.assistantId??null}function it(){let e=r(),[t]=i(),n=t.get(`preview`)===`true`,a=C.use.user(),s=S(),c=w(),l=a?.id??null,u=a?.firstName??``,f=a?.lastName??``,p=y(),h=m.use.activeAssistantId(),g=d(),_=ae()&&!ie(),v=k.use.stringFlags().preChatOnboardingExperiment20260606??`control`,T=(k.use.stringFlags().experimentActivationFlow20260603??`control`)===`variant-a`,D=k.use.selfIntroGreeting(),O=ge(v),ee=ve()??O,te=ee===_e.paredDown,j=g?rt():null,ne=et(),{currentStep:M,setCurrentStep:N,clearPersistedStep:re}=tt(l,p),P=C.use.platformSession(),F=b(P),[I,oe]=(0,U.useState)(()=>new Set),[L,se]=(0,U.useState)(()=>new Set),[ce,le]=(0,U.useState)(()=>new Set),{value:R,onChange:z}=Ve(g&&!F?``:u||f),[B,ue]=(0,U.useState)(null),[fe]=(0,U.useState)(()=>be()),[V,H]=(0,U.useState)(``),[ye,Se]=(0,U.useState)(!1),[G,we]=(0,U.useState)([]),{data:De}=o({...A(),enabled:!c&&s&&(!g||F)}),{data:ke,isLoading:je}=o({queryKey:[`onboarding-recipe`,l],queryFn:xe,enabled:!c&&s&&!p&&!g,staleTime:1/0}),K=ke??null,q=De?.id??h??j,Me=qe({localMode:g,platformSession:P,hasCachedPlatformAssistant:j!==null}),Ne=Me,Pe=Me,Le=async()=>{await x.checkAssistant(),e(`${E.assistant}?onboarding=1`,{replace:!0})};function J(e,t=ee){n||he(e,{userId:l,variant:me(t)})}let ze=[...I].some(e=>Ie.has(e)),Y=p?Ye():Je({paredDown:te,canOfferPriorAssistants:Pe,canOfferGoogleStep:n?!1:Ne,hasGoogleTool:ze,showIOSAppStep:_});function X(t){if(n){e(-1);return}pe(Ke({mode:p?`native`:te?`paredDown`:`control`,recipe:p?null:K,selectedTools:I,selectedTasks:L,selectedPriorAssistants:t?.selectedPriorAssistants??ce,tone:B??K?.tone??`grounded`,userName:R,assistantName:V,selfIntroGreetingEnabled:D,activationFlowEnabled:p?void 0:T,googleConnected:ye,googleScopes:G,connectedScopes:t?.connectedScopes}));let r=V.trim();r&&de(r),p?(re(),e(E.onboarding.privacy)):(x.markExpectingFirstMessage(),Le())}let Z=(e,t)=>{e.funnelStep&&J(e.funnelStep);let n=Qe(Y,e.id);n?N(n):X(t)},Q=e=>{let t=$e(Y,e.id);t&&N(t)};if(!ne||je)return null;let $=Y.find(e=>e.id===M)??Y[0];return $?$.id===`nativeName`?(0,W.jsx)(Oe,{userName:R,assistantName:V,displayedAssistantNames:fe,onUserNameChange:z,onAssistantNameChange:H,onContinue:()=>Z($),onSkip:()=>Z($),currentStep:0,totalSteps:nt}):$.id===`nativeVibe`?(0,W.jsx)(Be,{selectedGroupId:B,onGroupChange:ue,onBack:()=>Q($),onContinue:()=>Z($),onSkip:()=>Z($),currentStep:1,totalSteps:nt}):$.id===`name`?(0,W.jsx)(Ee,{userName:R,assistantName:V,selectedGroupId:B,displayedAssistantNames:fe,onUserNameChange:z,onAssistantNameChange:H,onGroupChange:ue,onComplete:()=>Z($),onSkip:()=>Z($)}):$.id===`taskTone`?(0,W.jsx)(Fe,{selectedTasks:L,onChange:se,onBack:()=>Q($),onContinue:()=>Z($),onSkip:()=>Z($)}):$.id===`tools`?(0,W.jsx)(Re,{selectedTools:I,onChange:oe,onBack:()=>Q($),onContinue:()=>Z($),onSkip:()=>Z($)}):$.id===`priorAssistants`?(0,W.jsx)(Ae,{selectedAssistants:ce,onChange:le,onBack:()=>Q($),onContinue:()=>Z($),onSkip:()=>{let e=new Set;le(e),Z($,{selectedPriorAssistants:e})}}):$.id===`google`?q?(0,W.jsx)(Te,{assistantId:q,assistantName:V,onConnect:e=>{Se(!0),we(e),Z($,{connectedScopes:e})},onSkip:()=>Z($),onBack:()=>Q($)}):null:$.id===`iosApp`?(0,W.jsx)(Ce,{onComplete:()=>Z($)}):null:null}function at(){return(0,W.jsx)(it,{})}export{at as PreChatRoute};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,n,o as r,r as i,s as a}from"./device-settings-BBwtGKJb.js";import{t as o}from"./react-DJZBPgpf.js";import{O as s,t as c}from"./button-D7s2Q_uG.js";import{n as l}from"./QueryClientProvider-DKhXIxGb.js";import{t as u}from"./useQuery-B45lW1Kk.js";import{t as d}from"./useMutation-Lj4VunQV.js";import{t as f}from"./jsx-runtime-CVSDxk6A.js";import{t as p}from"./cn-DvW5mxZR.js";import{t as m}from"./card-BibIM9x3.js";import{t as h}from"./dropdown-yOV5eJnU.js";import"./src-BJj2O5XB.js";import{t as g}from"./confirm-dialog-SpCsmAdG.js";import{t as _}from"./notice-CynJKEow.js";import{t as v}from"./tag-CE_o2aao.js";import{t as y}from"./input-Ch7OC6ME.js";import{t as b}from"./toggle-95p73HGd.js";import{n as x}from"./toast-CxaZ5f1d.js";import{t as S}from"./chevron-right-BNHlGCTg.js";import{t as C}from"./loader-circle-Cw1KvvLK.js";import{t as w}from"./pencil-Dm2eFMe3.js";import{t as T}from"./x-BeVbiDS2.js";import{n as E,r as D,t as O}from"./api-errors-D3EsNrwn.js";import{A as k,D as A,E as ee,F as te,O as ne,T as re,h as j,j as ie,k as M,n as ae,r as oe}from"./auth-store-CbVvQiBR.js";import{t as N}from"./client.gen-DzaL5PKF.js";import{t as se}from"./sdk.gen-0RzHFsEa.js";import{a as ce,i as le}from"./routes-B9xcBuuC.js";import{t as ue}from"./assistant-feature-flag-store-BD9zTDcP.js";import{n as de,t as fe}from"./react-query.gen-CRARj4mG.js";import{Bt as pe,F as P,Hr as F,I as me,Jt as I,Kt as he,Nr as ge,P as _e,Qt as ve,Ur as ye,Xt as be,Zt as xe,g as Se,h as Ce,m as L,p as R,qt as we,ta as Te,x as Ee}from"./index-Cx6vyW7T.js";import{t as z}from"./use-active-assistant-id-BlwRimQH.js";import{t as B}from"./detail-card-QPVpO5cj.js";import{t as V}from"./setting-row-BHlMSre_.js";var H=e(o(),1),U=[`no_one`,`guardian_only`,`trusted_contacts`,`any_contact`,`strangers`],De=new Set([`platform`,`a2a`]),Oe=new Set([`vellum`,`whatsapp`]);function ke(e){return Oe.has(e)}var Ae={no_one:`No one (kill switch)`,guardian_only:`Guardian only`,trusted_contacts:`Trusted contacts`,any_contact:`Any contact`,strangers:`Strangers`},je={no_one:`Hard-deny every inbound message on this channel.`,guardian_only:`Only messages from the guardian are admitted.`,trusted_contacts:`Admit verified contacts and the guardian; deny everyone else.`,any_contact:`Admit any matched contact (verified or pending) and the guardian.`,strangers:`Admit everyone, including unrecognised senders.`};function Me(e){return typeof e==`string`&&U.includes(e)}function W(e){return De.has(e)}async function Ne(e){let{data:t,error:n,response:r}=await N.get({url:`/v1/assistants/{assistant_id}/channel-admission-policy/`,path:{assistant_id:e},throwOnError:!1});if(E(r,n,`Failed to load channel policies.`),!r.ok)throw new O(r.status,D(n,r,`Failed to load channel policies.`));return(t?.policies??[]).filter(e=>!W(e.channelType)&&!ke(e.channelType)).map(e=>({...e,policy:Me(e.policy)?e.policy:`trusted_contacts`}))}async function Pe(e,t,n,r){if(W(t))throw new O(403,`Channel "${t}" is internal and is not user-configurable.`);let{data:i,error:a,response:o}=await N.put({url:`/v1/assistants/{assistant_id}/channel-admission-policy/{channel_type}`,path:{assistant_id:e,channel_type:t},body:{policy:n,note:r??null},headers:{"Content-Type":`application/json`},throwOnError:!1});if(E(o,a,`Failed to save channel policy.`),!o.ok)throw new O(o.status,D(a,o,`Failed to save channel policy.`));if(!i?.policy)throw new O(500,`Gateway returned no policy in response.`);return i.policy}var G=f(),Fe=U.map(e=>({value:e,label:Ae[e]}));function K(e){return{telegram:`Telegram`,phone:`Phone`,whatsapp:`WhatsApp`,slack:`Slack`,email:`Email`}[e]??e.charAt(0).toUpperCase()+e.slice(1)}function Ie(){let e=z(),[t,n]=(0,H.useState)(null),[r,i]=(0,H.useState)(!0),[a,o]=(0,H.useState)(null),[s,c]=(0,H.useState)(null),[l,u]=(0,H.useState)(null),d=(0,H.useCallback)(async()=>{i(!0),o(null);try{n(await Ne(e))}catch(e){o(e instanceof O?e.message:`Failed to load channel policies.`)}finally{i(!1)}},[e]);(0,H.useEffect)(()=>{d()},[d]);let f=(0,H.useCallback)(async(t,r)=>{c(t),o(null),n(e=>e&&e.map(e=>e.channelType===t?{...e,policy:r}:e));try{let i=await Pe(e,t,r);n(e=>e&&e.map(e=>e.channelType===t?i:e))}catch(e){o(e instanceof O?e.message:`Failed to save channel policy.`),await d()}finally{c(null)}},[e,d]),p=(0,H.useCallback)((e,t)=>{if(t===`no_one`){u({channelType:e,label:K(e)});return}f(e,t)},[f]),_=(0,H.useCallback)(()=>{if(!l)return;let{channelType:e}=l;u(null),f(e,`no_one`)},[l,f]),v=(0,H.useCallback)(()=>{u(null)},[]),y=(0,H.useMemo)(()=>t??[],[t]);return(0,G.jsxs)(m,{children:[(0,G.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,G.jsx)(ye,{className:`mt-0.5 h-5 w-5 shrink-0 text-[var(--content-secondary)]`}),(0,G.jsxs)(`div`,{className:`flex-1`,children:[(0,G.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Channel Trust Floors`}),(0,G.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Choose who can reach the assistant on each channel. Internal channels are managed automatically and not shown here.`})]})]}),a&&(0,G.jsx)(`div`,{role:`alert`,className:`mt-4 rounded-md border border-[var(--border-negative)] bg-[var(--surface-negative-subtle)] px-3 py-2 text-body-small-default text-[var(--content-negative)]`,children:a}),(0,G.jsxs)(`div`,{className:`mt-4 space-y-3`,"data-testid":`channel-policy-list`,children:[r&&!t&&(0,G.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Loading…`}),!r&&y.length===0&&(0,G.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`No client-controllable channels found.`}),y.map(e=>(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,"data-testid":`channel-policy-row-${e.channelType}`,children:[(0,G.jsxs)(`div`,{className:`flex-1`,children:[(0,G.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-default)]`,children:K(e.channelType)}),(0,G.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:je[e.policy]})]}),(0,G.jsx)(`div`,{style:{minWidth:220},children:(0,G.jsx)(h,{value:e.policy,onChange:t=>p(e.channelType,t),options:Fe,disabled:s===e.channelType,"aria-label":`Floor for ${K(e.channelType)}`,"data-testid":`channel-policy-dropdown-${e.channelType}`})})]},e.channelType))]}),(0,G.jsx)(g,{open:l!==null,title:`Block all inbound messages?`,message:l?`Setting ${l.label} to "No one" will hard-deny every inbound message on this channel. You can reverse this at any time.`:``,confirmLabel:`Block all`,destructive:!0,onConfirm:_,onCancel:v})]})}var q=[{id:`accessibility`,type:`system`,sourceKind:`accessibility`,label:`Accessibility`,description:`Allows your assistant to click, type, and control apps on your behalf.`},{id:`screen`,type:`system`,sourceKind:`screen`,label:`Screen Recording`,description:`Allows your assistant to capture screen context during computer-use tasks.`},{id:`microphone`,type:`system`,sourceKind:`microphone`,label:`Microphone`,description:`Allows your assistant to capture audio for voice input and recordings.`},{id:`speechRecognition`,type:`system`,sourceKind:`speechRecognition`,label:`Speech Recognition`,description:`Allows your assistant to transcribe your speech into text on-device.`},{id:`notifications`,type:`system`,sourceKind:`notifications`,label:`Notifications`,description:`Allows your assistant to send macOS alerts for approvals, messages, and task updates.`}],Le=[{id:`notificationBadges`,type:`local`,label:`Notification Badges`,description:`Allows your assistant to show unseen conversation counts on the Dock icon.`}];function Re(){let[e,t]=(0,H.useState)(null);return{pendingKind:e,run:async(e,n)=>{t(e);try{await n()}catch{}finally{t(t=>t===e?null:t)}}}}function ze(){let[e,r]=(0,H.useState)(()=>n(`dockBadgesEnabled`,!0));return(0,H.useEffect)(()=>a(`dockBadgesEnabled`,()=>{r(n(`dockBadgesEnabled`,!0))}),[]),[e,e=>{r(e),t(`dockBadgesEnabled`,e),e||pe(0)}]}function Be({row:e,onToggle:t}){return(0,G.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,G.jsx)(b,{checked:e.checked,disabled:e.disabled,"aria-label":e.label,onChange:()=>t(e.id)}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`button`,{type:`button`,disabled:e.disabled,onClick:()=>t(e.id),className:p(`block w-full text-left`,e.disabled?`cursor-not-allowed`:`cursor-pointer`),children:[(0,G.jsx)(`span`,{className:`block text-[14px] font-semibold leading-[18px] text-[var(--content-emphasised)]`,children:e.label}),(0,G.jsx)(`span`,{className:`mt-1 block text-[13px] font-medium leading-[18px] text-[var(--content-tertiary)]`,children:e.description})]}),e.error&&(0,G.jsx)(`p`,{className:`mt-1 text-body-small-default text-[var(--system-negative-strong)]`,children:e.error})]})]})}function Ve(){return(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`h-4 w-4 animate-spin rounded-full border-2 border-[var(--border-base)] border-t-[var(--content-tertiary)]`})}function He({compact:e=!1}){let{state:t,loading:n,error:r,supported:i,refresh:a}=ve(),{pendingKind:o,run:s}=Re(),[c,l]=ze(),u=(0,H.useMemo)(()=>{let e=new Map;if(!t)return e;for(let n of q){let r=t[n.sourceKind];r&&e.set(n.id,{meta:n,item:r})}return e},[t]),d=(0,H.useMemo)(()=>{let e=q.map(e=>{let t=u.get(e.id)?.item;return t?{id:e.id,label:e.label,description:e.description,checked:t.status===`granted`,disabled:o===e.id||t.status===`restricted`,...t.error?{error:t.error}:{}}:null}).filter(Boolean),t=Le.map(e=>({id:e.id,label:e.label,description:e.description,checked:c,disabled:o===e.id}));return[...e,...t]},[c,o,u]);if(!i)return null;let f=async(e,t)=>{t.status===`granted`||t.status===`denied`||!t.canRequest?await be(e.sourceKind):await xe(e.sourceKind),await a()},p=e=>{let t=u.get(e);if(t){s(e,()=>f(t.meta,t.item));return}e===`notificationBadges`&&s(e,async()=>{l(!c)})};return(0,G.jsxs)(`section`,{className:`w-full rounded-[20px] border border-[var(--border-hover)] bg-[var(--surface-lift)] px-4 pb-3 pt-5`,children:[(0,G.jsx)(`h2`,{className:`text-[18px] font-semibold leading-[22px] text-[var(--content-emphasised)]`,children:`System Permissions`}),n&&d.length===0?(0,G.jsxs)(`div`,{className:`mt-6 flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,G.jsx)(Ve,{}),`Checking permissions...`]}):(0,G.jsx)(`div`,{className:`mt-3 space-y-2`,children:d.map(e=>(0,G.jsx)(Be,{row:e,onToggle:p},e.id))}),r&&(0,G.jsx)(`div`,{role:`alert`,className:`mt-6 rounded-lg border border-[color-mix(in_srgb,var(--system-negative-strong)_25%,transparent)] bg-[var(--system-negative-weak)] p-3 text-body-medium-lighter text-[var(--content-secondary)]`,children:r})]})}function Ue(){let e=I({platformHostedOnly:!0}),t=he(),n=we(),r=l(),{data:i,isLoading:a,isError:o}=u({...fe(),enabled:e===`full`&&t}),s=d({mutationFn:async e=>{let{data:t}=await se({body:{access_consented:e},throwOnError:!0});return t},onSuccess:e=>{de(r,void 0,e),x.success(e?.access_consented?`Admin data access enabled.`:`Admin data access disabled.`)},onError:()=>{x.error(`Failed to update log access consent.`)}});if(e===`gated`)return null;let c=e===`full`&&n,f=i?.access_consented??!1,p=e!==`full`||!t||a||o||s.isPending;return(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,G.jsxs)(`div`,{className:`flex-1`,children:[(0,G.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Allow admin access to assistant data`}),(0,G.jsxs)(`p`,{className:`mt-1 text-body-small-default text-[var(--content-tertiary)]`,children:[`Lets Vellum administrators reach privileged data on your assistant pod for debugging — today this means tailing the daily assistant log at`,` `,(0,G.jsx)(`code`,{className:`rounded bg-[var(--surface-base)] px-1.5 font-mono text-[var(--content-secondary)] dark:bg-[var(--surface-lift)] dark:text-[var(--content-default)]`,children:`/workspace/data/logs/assistant-YYYY-MM-DD.log`}),`. Off by default. Turn on temporarily when asking support to investigate an issue, then turn off when you're done.`]}),e===`full`&&o&&(0,G.jsx)(`p`,{className:`mt-1 text-body-small-default text-[var(--system-negative-strong)]`,children:`Failed to load consent setting.`})]}),(0,G.jsx)(`div`,{className:`flex items-center gap-2`,children:e===`disabled`?null:(0,G.jsxs)(G.Fragment,{children:[(s.isPending||c)&&(0,G.jsx)(C,{className:`h-4 w-4 animate-spin text-[var(--content-tertiary)]`}),(0,G.jsx)(b,{checked:f,disabled:p,onChange:()=>s.mutate(!f)})]})})]}),e===`disabled`&&(0,G.jsx)(Ee,{className:`mt-3`,children:`Log in to the Vellum platform to manage admin data access.`})]})}function We(){let e=te(),[t,n]=(0,H.useState)(()=>ne()),[r,i]=(0,H.useState)(!1),[a,o]=(0,H.useState)(`Face ID`),[s,c]=(0,H.useState)(!1);if((0,H.useEffect)(()=>{e&&(A().then(i),ee().then(o))},[e]),!e||!r)return null;let l=async()=>{c(!0);try{if(t)M(!1),await re(),n(!1);else{let e=ie();e&&await k(e),M(!0),n(!0)}}finally{c(!1)}};return(0,G.jsx)(B,{title:`Security`,children:(0,G.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,G.jsxs)(`div`,{className:`flex-1`,children:[(0,G.jsxs)(`div`,{className:`text-body-medium-default text-[var(--content-default)]`,children:[`Use `,a,` for sign-in`]}),(0,G.jsxs)(`p`,{className:`mt-1 text-body-small-default text-[var(--content-tertiary)]`,children:[`When your session expires, verify with `,a,` or your device passcode instead of signing in again.`]})]}),(0,G.jsx)(b,{checked:t,onChange:()=>void l(),disabled:s})]})})}function J(){return(0,G.jsx)(`div`,{className:`h-px bg-[var(--surface-active)] dark:bg-[var(--surface-lift)]`})}var Y=R.map(e=>({value:e.id,label:e.label,icon:(0,G.jsx)(e.icon,{className:`h-3.5 w-3.5`})}));function X(){let e=z(),t=l(),{data:n,isError:r}=u({queryKey:[`thresholds`,e],queryFn:()=>Ce(e),staleTime:3e4}),[i,a]=(0,H.useState)(`relaxed`),[o,s]=(0,H.useState)(`conservative`),[c,d]=(0,H.useState)(`strict`),[f,p]=(0,H.useState)(!1),g=(0,H.useRef)(!1),[_,v]=(0,H.useState)(!1),y=(0,H.useRef)(null),b=(0,H.useRef)(null);(0,H.useEffect)(()=>{!n||g.current||(a(L(n.interactive).id),s(L(n.autonomous).id),d(L(n.headless).id),v(!0))},[n]),(0,H.useEffect)(()=>()=>{y.current!==null&&(clearTimeout(y.current),y.current=null,b.current?.(),b.current=null)},[]);let x=(0,H.useCallback)((n,r,i)=>{if(!e||!_)return;let a=R.find(e=>e.id===n)?.riskThreshold,o=R.find(e=>e.id===r)?.riskThreshold,s=R.find(e=>e.id===i)?.riskThreshold;!a||!o||!s||Se(e,{interactive:a,autonomous:o,headless:s}).then(()=>{t.invalidateQueries({queryKey:[`thresholds`,e]})}).catch(()=>{})},[e,_,t]),C=(0,H.useCallback)((e,t,n)=>{y.current!==null&&clearTimeout(y.current),b.current=()=>x(e,t,n),y.current=setTimeout(()=>{b.current?.(),y.current=null,b.current=null},500)},[x]),w=(0,H.useCallback)(e=>{g.current=!0,a(e),C(e,o,c)},[o,c,C]),T=(0,H.useCallback)(e=>{g.current=!0,s(e),C(i,e,c)},[i,c,C]),E=(0,H.useCallback)(e=>{g.current=!0,d(e),C(i,o,e)},[i,o,C]),D=R.find(e=>e.id===i),O=R.find(e=>e.id===o),k=R.find(e=>e.id===c),A=!e||!_;return(0,G.jsxs)(m,{children:[(0,G.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Risk Tolerance`}),(0,G.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Control which actions your assistant can take without asking first. Each action is classified by risk level — your tolerance determines which levels auto-approve.`}),r&&(0,G.jsx)(`p`,{className:`mt-2 text-body-small-default text-[var(--system-negative-strong)]`,children:`Could not load threshold settings. Check your connection and reload.`}),(0,G.jsxs)(`div`,{className:`mt-4 space-y-4`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Conversations`}),(0,G.jsx)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`When you're chatting with your assistant directly.`}),(0,G.jsx)(`div`,{className:`mt-2`,style:{maxWidth:280},children:(0,G.jsx)(h,{value:i,onChange:w,options:Y,disabled:A})}),D&&(0,G.jsx)(`p`,{className:`mt-2 text-body-small-default text-[var(--content-tertiary)]`,children:D.description})]}),(0,G.jsx)(J,{}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`button`,{type:`button`,onClick:()=>p(e=>!e),className:`flex items-center gap-1 text-[var(--content-secondary)] hover:text-[var(--content-default)] transition-colors`,"aria-expanded":f,children:[f?(0,G.jsx)(Te,{className:`h-4 w-4`}):(0,G.jsx)(S,{className:`h-4 w-4`}),(0,G.jsx)(`span`,{className:`text-body-medium-default`,children:`Advanced`})]}),(0,G.jsxs)(`div`,{className:f?`mt-4 space-y-4`:`hidden`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Background`}),(0,G.jsx)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`When your assistant acts without you — scheduled tasks, background jobs, and external triggers.`}),(0,G.jsx)(`div`,{className:`mt-2`,style:{maxWidth:280},children:(0,G.jsx)(h,{value:o,onChange:T,options:Y,disabled:A})}),O&&(0,G.jsx)(`p`,{className:`mt-2 text-body-small-default text-[var(--content-tertiary)]`,children:O.description})]}),(0,G.jsx)(J,{}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Headless`}),(0,G.jsx)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`When triggered externally with no interactive client.`}),(0,G.jsx)(`div`,{className:`mt-2`,style:{maxWidth:280},children:(0,G.jsx)(h,{value:c,onChange:E,options:Y,disabled:A})}),k&&(0,G.jsx)(`p`,{className:`mt-2 text-body-small-default text-[var(--content-tertiary)]`,children:k.description})]})]})]})]})]})}var Z=e(s(),1),Ge=[`bash`,`file_read`,`file_write`,`file_edit`,`web_fetch`,`skill_load`],Ke=[{value:`low`,label:`Low`,description:`Auto-approve without prompting`},{value:`medium`,label:`Medium`,description:`Prompt before executing`},{value:`high`,label:`High`,description:`Always require explicit approval`}];function qe({assistantId:e,existingRule:t,onClose:n,onSaved:r}){let i=(0,H.useRef)(null),[a,o]=(0,H.useState)(t.tool),[s,c]=(0,H.useState)(t.pattern),[l,u]=(0,H.useState)(t.risk),[d,f]=(0,H.useState)(t.description??``),[p,m]=(0,H.useState)(!1),[g,v]=(0,H.useState)(null),b=s.trim(),x=b.length>0&&!p,S=(0,H.useCallback)(async n=>{if(n.preventDefault(),!x)return;let i=d.trim()||`${a} — ${b}`;m(!0),v(null);try{await me(e,t.id,{risk:l,description:i}),r()}catch(e){v(e instanceof Error?e.message:`Failed to save trust rule.`)}finally{m(!1)}},[e,x,d,t,r,l,a,b]);return(0,Z.createPortal)((0,G.jsx)(`div`,{ref:i,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`trust-rule-form-title`,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:(0,H.useCallback)(e=>{e.key===`Escape`&&n()},[n]),onClick:(0,H.useCallback)(e=>{e.target===i.current&&n()},[n]),children:(0,G.jsxs)(`div`,{className:`mx-4 flex max-h-[calc(100vh-2rem)] w-full max-w-md flex-col rounded-xl border border-[var(--border-base)] bg-[var(--surface-lift)] shadow-xl`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-[var(--border-base)] px-6 py-4`,children:[(0,G.jsx)(`h2`,{id:`trust-rule-form-title`,className:`text-title-medium text-[var(--content-default)]`,children:`Edit Trust Rule`}),(0,G.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`Close`,className:`rounded-lg p-1.5 text-[var(--content-tertiary)] transition-colors hover:bg-[var(--surface-base)] hover:text-[var(--content-default)]`,children:(0,G.jsx)(T,{className:`h-4 w-4`})})]}),(0,G.jsxs)(`form`,{onSubmit:e=>void S(e),className:`min-h-0 flex-1 space-y-4 overflow-y-auto px-6 py-4`,children:[g&&(0,G.jsx)(_,{tone:`error`,children:g}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{htmlFor:`trust-rule-tool`,className:`block text-body-medium-default text-[var(--content-default)]`,children:`Tool`}),(0,G.jsx)(`div`,{className:`mt-1`,children:(0,G.jsx)(h,{value:a,onChange:o,disabled:!0,options:Ge.map(e=>({value:e,label:e}))})})]}),(0,G.jsx)(y,{label:`Pattern`,type:`text`,value:s,onChange:e=>c(e.target.value),placeholder:`e.g., git *`,disabled:!0}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`block text-body-medium-default text-[var(--content-default)]`,children:`Risk Level`}),(0,G.jsx)(`div`,{className:`mt-2 flex gap-2`,children:Ke.map(e=>(0,G.jsxs)(`button`,{type:`button`,onClick:()=>u(e.value),className:`flex-1 rounded-lg border px-3 py-2 text-left text-body-small-default transition-colors ${l===e.value?e.value===`low`?`border-[var(--system-positive-strong)] bg-[var(--system-positive-weak)] text-[var(--system-positive-strong)]`:e.value===`medium`?`border-[var(--system-warning-strong)] bg-[var(--system-warning-weak)] text-[var(--system-warning-strong)]`:`border-[var(--system-negative-strong)] bg-[var(--system-negative-weak)] text-[var(--system-negative-strong)]`:`border-[var(--border-element)] text-[var(--content-default)] hover:bg-[var(--surface-base)]`}`,children:[(0,G.jsx)(`div`,{children:e.label}),(0,G.jsx)(`div`,{className:`mt-0.5 text-label-medium-default leading-tight opacity-70`,children:e.description})]},e.value))})]}),(0,G.jsx)(y,{label:`Description (optional)`,type:`text`,value:d,onChange:e=>f(e.target.value),placeholder:`${a} — ${b||`pattern`}`}),(0,G.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2`,children:[(0,G.jsx)(`button`,{type:`button`,onClick:n,className:`rounded-lg border border-[var(--border-element)] bg-white px-4 py-2 text-body-medium-default text-[var(--content-default)] transition-colors hover:bg-[var(--surface-base)] dark:border-[var(--border-base)] dark:bg-[var(--surface-lift)] dark:hover:bg-[var(--ghost-hover)]`,children:`Cancel`}),(0,G.jsx)(`button`,{type:`submit`,disabled:!x,className:`rounded-lg bg-[var(--system-positive-strong)] px-4 py-2 text-body-medium-default text-white transition-colors hover:bg-[var(--system-positive-strong)] disabled:cursor-not-allowed disabled:opacity-50`,children:p?`Saving…`:`Save`})]})]})]})}),document.body)}function Je(e){return e.origin===`default`&&!e.userModified}function Ye(e,t){let n=new Set,r=[];for(let t of e)n.has(t.id)||(n.add(t.id),r.push(t));for(let e of t)n.has(e.id)||(n.add(e.id),r.push(e));return r.sort((e,t)=>e.tool===t.tool?e.description.localeCompare(t.description):e.tool.localeCompare(t.tool))}function Xe(e){switch(e){case`low`:return`positive`;case`medium`:return`warning`;case`high`:return`negative`}}function Q(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Ze({assistantId:e,onClose:t}){let n=(0,H.useRef)(null),[r,i]=(0,H.useState)([]),[a,o]=(0,H.useState)(!0),[s,l]=(0,H.useState)(null),[u,d]=(0,H.useState)(null),[f,p]=(0,H.useState)(null),[m,h]=(0,H.useState)(!1),y=(0,H.useCallback)(async t=>{if(t){let[t,n]=await Promise.all([P(e),P(e,{origin:`default`})]);return Ye(t,n)}return P(e)},[e]),x=(0,H.useCallback)(async()=>{o(!0);try{i(await y(m)),l(null)}catch(e){l(e instanceof Error?e.message:`Failed to load trust rules.`)}finally{o(!1)}},[y,m]);(0,H.useEffect)(()=>{let e=!1;return(async()=>{o(!0);try{let t=await y(m);e||(i(t),l(null))}catch(t){e||l(t instanceof Error?t.message:`Failed to load trust rules.`)}finally{e||o(!1)}})(),()=>{e=!0}},[y,m]);let S=(0,H.useCallback)(async()=>{if(f)try{await _e(e,f.id),x()}catch(e){l(e instanceof Error?e.message:`Failed to delete trust rule.`)}finally{p(null)}},[e,f,x]);return(0,Z.createPortal)((0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{ref:n,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`trust-rules-title`,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:(0,H.useCallback)(e=>{e.key===`Escape`&&t()},[t]),onClick:(0,H.useCallback)(e=>{e.target===n.current&&t()},[t]),children:(0,G.jsxs)(`div`,{className:`mx-4 flex max-h-[80vh] w-full max-w-2xl flex-col rounded-xl border border-[var(--border-base)] bg-[var(--surface-lift)] shadow-xl`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-[var(--border-base)] px-6 py-4`,children:[(0,G.jsx)(`h2`,{id:`trust-rules-title`,className:`text-title-medium text-[var(--content-default)]`,children:`Trust Rules`}),(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(b,{checked:m,onChange:h,label:`Show all defaults`}),(0,G.jsx)(c,{variant:`outlined`,onClick:t,children:`Done`})]})]}),(0,G.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-6 py-4`,children:[s&&(0,G.jsx)(`div`,{className:`mb-3`,children:(0,G.jsx)(_,{tone:`error`,children:s})}),a?(0,G.jsx)(`div`,{className:`flex h-48 items-center justify-center text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Loading…`}):r.length===0?(0,G.jsxs)(`div`,{className:`flex h-48 flex-col items-center justify-center gap-2 px-6 text-[var(--content-tertiary)]`,children:[(0,G.jsx)(F,{className:`h-8 w-8`}),(0,G.jsx)(`p`,{className:`max-w-xs text-center text-body-medium-lighter`,children:`No trust rules yet. Rules are created when you classify actions from permission prompts.`})]}):(0,G.jsx)(`ul`,{className:`divide-y divide-[var(--border-base)]`,children:r.map(e=>{let t=Je(e);return(0,G.jsxs)(`li`,{className:`flex items-start gap-3 py-3`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-default)]`,children:e.tool}),(0,G.jsx)(v,{tone:Xe(e.risk),children:Q(e.risk)}),e.origin===`default`&&(0,G.jsx)(v,{tone:`neutral`,children:`Default`}),e.userModified&&(0,G.jsx)(v,{tone:`warning`,children:`Modified`})]}),(0,G.jsx)(`div`,{className:`mt-1 truncate font-mono text-body-small-default text-[var(--content-secondary)]`,children:e.pattern}),e.description&&(0,G.jsx)(`div`,{className:`mt-0.5 truncate text-body-small-default text-[var(--content-tertiary)]`,children:e.description})]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,G.jsx)(`button`,{type:`button`,"aria-label":`Edit ${e.tool} rule`,onClick:()=>d(e),className:`rounded-lg p-1.5 text-[var(--content-tertiary)] transition-colors hover:bg-[var(--surface-base)] hover:text-[var(--content-default)]`,children:(0,G.jsx)(w,{className:`h-4 w-4`})}),(!t||e.userModified)&&(0,G.jsx)(`button`,{type:`button`,"aria-label":`Delete ${e.tool} rule`,onClick:()=>p(e),className:`rounded-lg p-1.5 text-[var(--system-negative-strong)] transition-colors hover:bg-[var(--system-negative-weak)]`,children:(0,G.jsx)(ge,{className:`h-4 w-4`})})]})]},e.id)})})]})]})}),u&&(0,G.jsx)(qe,{assistantId:e,existingRule:u,onClose:()=>d(null),onSaved:()=>{d(null),x()}}),(0,G.jsx)(g,{open:f!==null,title:`Delete Trust Rule?`,message:f?`Remove the ${Q(f.risk).toLowerCase()}-risk rule for ${f.tool} matching "${f.pattern}"?`:``,confirmLabel:`Delete`,cancelLabel:`Cancel`,destructive:!0,onConfirm:()=>void S(),onCancel:()=>p(null)})]}),document.body)}function Qe(){let e=z(),[t,n]=(0,H.useState)(!1);return(0,G.jsxs)(m,{children:[(0,G.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,G.jsx)(F,{className:`mt-0.5 h-5 w-5 shrink-0 text-[var(--content-secondary)]`}),(0,G.jsxs)(`div`,{className:`flex-1`,children:[(0,G.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Trust Rules`}),(0,G.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Manage per-tool rules that control which actions auto-approve and which require your explicit permission.`})]}),(0,G.jsx)(c,{variant:`outlined`,onClick:()=>n(!0),children:`Manage`})]}),t&&(0,G.jsx)(Ze,{assistantId:e,onClose:()=>n(!1)})]})}var $e=[{value:`dontRetain`,label:`Don't retain`},{value:`oneHour`,label:`1 hour`},{value:`oneDay`,label:`1 day`},{value:`sevenDays`,label:`7 days`},{value:`thirtyDays`,label:`30 days`},{value:`ninetyDays`,label:`90 days`},{value:`keepForever`,label:`Keep forever`}],et=`thirtyDays`;function $(){return(0,G.jsx)(`div`,{className:`h-px bg-[var(--surface-active)] dark:bg-[var(--surface-lift)]`})}function tt(){let e=I({platformHostedOnly:!0}),t=ue.use.channelTrustFloors(),a=oe(),o=a,s=ae.use.user()?.id??null,[c,l]=(0,H.useState)(()=>n(`shareAnalytics`,!0)),[u,d]=(0,H.useState)(()=>n(`shareDiagnostics`,!0)),[f,p]=(0,H.useState)(()=>i(`llmLogRetention`,et));return(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(We,{}),(0,G.jsx)(He,{}),(0,G.jsx)(Qe,{}),t&&(0,G.jsx)(Ie,{}),(0,G.jsx)(X,{}),(0,G.jsx)(B,{title:`Privacy`,subtitle:a?(0,G.jsxs)(G.Fragment,{children:[`View details about what data we collect and how it's used in our`,` `,(0,G.jsx)(`a`,{href:le(ce.docs.legal.privacyPolicy),target:`_blank`,rel:`noreferrer`,className:`underline`,children:`privacy policy`}),`.`]}):void 0,children:(0,G.jsxs)(`div`,{className:`space-y-4`,children:[o&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(V,{label:`Share Analytics`,helperText:`Send aggregated product usage data`,checked:c,onChange:()=>{let e=!c;l(e),j(`share_analytics`,e,{userId:s,hasPlatformSession:a})},variant:`toggle-trailing`}),(0,G.jsx)($,{}),(0,G.jsx)(V,{label:`Share Diagnostics`,helperText:`Send crash reports, conversation traces, and session replay data`,checked:u,onChange:()=>{let e=!u;d(e),j(`share_diagnostics`,e,{userId:s,hasPlatformSession:a})},variant:`toggle-trailing`}),(0,G.jsx)($,{})]}),(0,G.jsx)(Ue,{}),e!==`gated`&&(0,G.jsx)($,{}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{htmlFor:`llm-log-retention`,className:`block text-body-medium-default text-[var(--content-default)]`,children:`LLM Request Log Retention`}),(0,G.jsx)(`div`,{className:`mt-2`,style:{maxWidth:280},children:(0,G.jsx)(h,{value:f,onChange:e=>{p(e),r(`llmLogRetention`,e)},options:$e})}),(0,G.jsx)(`p`,{className:`mt-2 text-body-small-default text-[var(--content-tertiary)]`,children:`How long to keep LLM request and response logs on this device. These logs record the prompts and completions sent to model providers and are used for debugging. Shorter retention improves privacy; longer retention helps troubleshoot issues.`})]})]})})]})}export{tt as PrivacyPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./is-electron-C_ZTVhv8.js";import{F as s,i as c,m as l,n as u}from"./auth-store-CbVvQiBR.js";import{a as d}from"./routes-B9xcBuuC.js";import{d as f,f as p,l as m,u as h}from"./prefs-DP4g-Qgi.js";import{t as g}from"./client-feature-flag-store-DjN8fxHA.js";import{_t as _}from"./index-Cx6vyW7T.js";import{a as v,c as y,i as b,n as x,o as S,t as C}from"./step-indicator-dots-Bx_0xTIr.js";import{n as w,t as T}from"./consent-controls-o06cSwWt.js";var E=e(t(),1),D=a();function O(){let e=r(),[t]=i(),a=u.use.user()?.id??null,O=o(),k=s(),A=S(g.use.stringFlags().preChatOnboardingExperiment20260606??`control`),[j,M]=h(),[N,P]=f(),[F,I]=p(),[L,R]=m(),z=c();(0,E.useEffect)(()=>{k||v()},[k]);let B=t.get(`preview`)===`true`,V=(0,E.useCallback)(e=>{},[]),H=B?V:M,U=B?V:P,W=B?V:I,G=B?V:R,K=(0,E.useCallback)(()=>{if(B){e(`${d.onboarding.prechat}?preview=true`);return}if(l({userId:a,tos:F,privacy:L,shareAnalytics:j,shareDiagnostics:N,hasPlatformSession:z}),!k){let e=y(A);b(x.privacyTos,{userId:a,variant:e})}let n=t.get(`hosting`),r=new URLSearchParams;n&&r.set(`hosting`,n);let i=r.toString();e(`${d.onboarding.hatching}${i?`?${i}`:``}`)},[L,z,k,B,e,A,t,j,N,F,a]);return(0,D.jsx)(_,{children:(0,D.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${O?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`px-6 py-16`} text-[var(--content-default)]`,children:[k&&(0,D.jsx)(`div`,{className:`mb-8 flex w-full justify-center`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:(0,D.jsx)(C,{current:2,total:3})}),(0,D.jsx)(`h1`,{className:O?`text-title-large`:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Before You Start`}),(0,D.jsx)(`p`,{className:`text-center text-body-medium-lighter text-[var(--content-tertiary)] ${O?`mt-3.5`:`mt-4`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Choose your privacy preferences. You can update these anytime in the Settings.`}),(0,D.jsx)(w,{electron:O,shareAnalytics:j,shareDiagnostics:N,onShareAnalyticsChange:H,onShareDiagnosticsChange:U,className:`mt-8 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`}}),(0,D.jsx)(T,{electron:O,privacyConsent:L,tosAccepted:F,onPrivacyChange:G,onTosChange:W,className:`mt-6 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`}}),(0,D.jsxs)(`div`,{className:`mt-8 flex w-full flex-col ${O?`gap-2.5`:`gap-2`}`,style:{animation:`fadeInUp 0.5s ease-out 0.55s both`},children:[(0,D.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,disabled:!F||!L,onClick:K,className:O?void 0:`h-11 text-base`,children:`Start`}),(0,D.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,onClick:()=>e(-1),className:O?void 0:`h-11 text-base`,children:`Back`})]})]})})}export{O as PrivacyScreen};