@vellumai/web 0.10.7 → 0.10.8-dev.202607102228.5945895

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 (373) hide show
  1. package/dist/assets/{AnimatePresence-Oxz4BTMX.js → AnimatePresence-s1Z1HHWx.js} +1 -1
  2. package/dist/assets/{BundleConfirmPage-CASo0dJB.js → BundleConfirmPage-C6bP7QB3.js} +1 -1
  3. package/dist/assets/{Combination-BG46kjfK.js → Combination-Cd_aWAsj.js} +1 -1
  4. package/dist/assets/{a2a-invite-CQMqpPDZ.js → a2a-invite-B9cylfIO.js} +1 -1
  5. package/dist/assets/{about-page-m20KWWnD.js → about-page-XGv9RAQu.js} +1 -1
  6. package/dist/assets/{account-page-s8JvT8Ly.js → account-page-BIf1VgXI.js} +1 -1
  7. package/dist/assets/{account-shell-BSwEFNTM.js → account-shell-DtCF7xdZ.js} +1 -1
  8. package/dist/assets/{acp-run-detail-panel-7SM2s3JT.js → acp-run-detail-panel-B4hgMVrG.js} +4 -4
  9. package/dist/assets/activity-steps-panel-C1yQ2L2r.js +1 -0
  10. package/dist/assets/{add-credits-modal-wQTjoJNa.js → add-credits-modal-B2NNTrN3.js} +1 -1
  11. package/dist/assets/{advanced-page-Ct7QbjS_.js → advanced-page-BwGOw8_x.js} +1 -1
  12. package/dist/assets/ai-page-BrigF9S7.js +1 -0
  13. package/dist/assets/animated-avatar-Cqpzb8O4.js +1 -0
  14. package/dist/assets/api-DHuLwcqq.js +1 -0
  15. package/dist/assets/{api-DXLi4DU7.js → api-Y8JHO-Hz.js} +1 -1
  16. package/dist/assets/{api-key-screen-DCT4UgG9.js → api-key-screen-g8n_qvMv.js} +1 -1
  17. package/dist/assets/{app-info-BNPvryVV.js → app-info-Clwt3pCt.js} +1 -1
  18. package/dist/assets/{archive-page-Ct96gKer.js → archive-page-BsrdafLF.js} +1 -1
  19. package/dist/assets/{assistant-feature-flag-store-BRGydSRn.js → assistant-feature-flag-store-DRERrNOn.js} +1 -1
  20. package/dist/assets/assistant-identity-store-CX03CK8q.js +1 -0
  21. package/dist/assets/{assistant-status-panel-boGM54mS.js → assistant-status-panel-zU13Q_Xu.js} +1 -1
  22. package/dist/assets/auth-store-CRgW9dVz.js +2 -0
  23. package/dist/assets/avatar-bundled-components--1Wyhs4r.js +1 -0
  24. package/dist/assets/background-task-detail-panel-zgQoO82i.js +1 -0
  25. package/dist/assets/billing-page-DEl2nu5I.js +3 -0
  26. package/dist/assets/bookmarks-page-C32OmhV9.js +1 -0
  27. package/dist/assets/browser-BcxhPHJY.js +2 -0
  28. package/dist/assets/browser-timezone-2SnmKDjM.js +1 -0
  29. package/dist/assets/build-state-BMsdXtAG.js +1 -0
  30. package/dist/assets/button-amTXFI-2.js +1 -0
  31. package/dist/assets/{capture-error-CmeVLfq0.js → capture-error-Dhiismgm.js} +1 -1
  32. package/dist/assets/channels-page-route-DCJaRu9K.js +9 -0
  33. package/dist/assets/chat-markdown-message-a1td8Ual.js +2 -0
  34. package/dist/assets/{checkbox-Dy4hoNDa.js → checkbox-EdyezNqo.js} +1 -1
  35. package/dist/assets/{client-feature-flag-store-C0Tjm-Hl.js → client-feature-flag-store-Dwtv7Vxd.js} +1 -1
  36. package/dist/assets/{client-identity-jhypHe7Y.js → client-identity-Dt1fkB-d.js} +1 -1
  37. package/dist/assets/clipboard-copy-DF6K1xc6.js +1 -0
  38. package/dist/assets/command-palette-DuCamEfT.js +1 -0
  39. package/dist/assets/{command-palette-window-page-DBnL5TIj.js → command-palette-window-page-DTbWLtIo.js} +1 -1
  40. package/dist/assets/community-page-CLGoMvV2.js +1 -0
  41. package/dist/assets/{confirm-dialog-DW84Cxfq.js → confirm-dialog-CSkhRFRk.js} +1 -1
  42. package/dist/assets/{connect-page-By7gD4Gi.js → connect-page-B0gbTndx.js} +1 -1
  43. package/dist/assets/{consent-controls-J9UujLtO.js → consent-controls-Cnr1DzCr.js} +1 -1
  44. package/dist/assets/contacts-gateway-CW5CipBv.js +1 -0
  45. package/dist/assets/contacts-page-route-C0ELB5tV.js +1 -0
  46. package/dist/assets/{conversation-list-fetchers-ogeilsCp.js → conversation-list-fetchers-DS9vmqfD.js} +1 -1
  47. package/dist/assets/{conversation-store-COUX81g-.js → conversation-store-BljZWolF.js} +1 -1
  48. package/dist/assets/credential-entry-page-DUQnPan9.js +1 -0
  49. package/dist/assets/credentials-page-Bmbk_m7r.js +1 -0
  50. package/dist/assets/{danger-zone-redirect-page-RdZGvrN7.js → danger-zone-redirect-page-BWg7rn8D.js} +1 -1
  51. package/dist/assets/debug-page-DEIR36y-.js +4 -0
  52. package/dist/assets/definitions-DScTW2c-.js +1 -0
  53. package/dist/assets/{deploy-dialogs-C5LDby59.js → deploy-dialogs-hO4uNCg-.js} +1 -1
  54. package/dist/assets/{detail-card-CnahmiAd.js → detail-card-BAbE5QFz.js} +1 -1
  55. package/dist/assets/{detail-panel-stop-button-BGbnqhbl.js → detail-panel-stop-button-DuIg1ANM.js} +1 -1
  56. package/dist/assets/{developer-page-Bgo4T1LR.js → developer-page-l4Uyz0TA.js} +1 -1
  57. package/dist/assets/devices-page-BPUVvxip.js +1 -0
  58. package/dist/assets/{diagnostics-BUlVBxem.js → diagnostics-DANnV3Z3.js} +1 -1
  59. package/dist/assets/{dictation-overlay-page-DVlL606t.js → dictation-overlay-page-DQtALeh1.js} +1 -1
  60. package/dist/assets/{dist-DSnPnoEz.js → dist-BItmZQO6.js} +1 -1
  61. package/dist/assets/{dist-CAIL9R6N.js → dist-CxHeCOEv.js} +1 -1
  62. package/dist/assets/{dist-DcPLFkll.js → dist-DqmYHxdg.js} +1 -1
  63. package/dist/assets/{dist-CXAvuqD6.js → dist-HJ505Xnn.js} +1 -1
  64. package/dist/assets/document-viewer-page-BH8lwUNW.js +1 -0
  65. package/dist/assets/domains-D3QF404Q.js +1 -0
  66. package/dist/assets/download-CAuK-nZ6.js +1 -0
  67. package/dist/assets/{dropdown-BsftIzw-.js → dropdown-ByHOpeOU.js} +1 -1
  68. package/dist/assets/{earn-credits-modal-5kY_ZmHS.js → earn-credits-modal-CCscmJRu.js} +1 -1
  69. package/dist/assets/edge-swipe-arbiter-store-BeOhrE7M.js +1 -0
  70. package/dist/assets/effective-timezone-Kj8F3iMS.js +1 -0
  71. package/dist/assets/{emails-page-BSlc4IyH.js → emails-page-BrbbtgEY.js} +1 -1
  72. package/dist/assets/{environment-store-B29S7tiK.js → environment-store-C0f32873.js} +1 -1
  73. package/dist/assets/esm-B54gzHCZ.js +1 -0
  74. package/dist/assets/esm-Bzs_witt.js +2 -0
  75. package/dist/assets/esm-C5J59K0j.js +2 -0
  76. package/dist/assets/{esm-DnCc4uNb.js → esm-CT8NUp3h.js} +2 -2
  77. package/dist/assets/esm-DEu9JbAE.js +2 -0
  78. package/dist/assets/esm-DZkj1VLJ.js +2 -0
  79. package/dist/assets/esm-DtJz1M8R.js +2 -0
  80. package/dist/assets/feature-flag-catalog-DA0vSGLe.js +1 -0
  81. package/dist/assets/file-DsyJLS2u.js +1 -0
  82. package/dist/assets/file-editor-sT7eHxsw.js +1 -0
  83. package/dist/assets/file-markdown-ZKvQUuGy.js +2 -0
  84. package/dist/assets/general-page-DpoputcO.js +1 -0
  85. package/dist/assets/haptics-Dgv6PU7K.js +2 -0
  86. package/dist/assets/hatching-screen-BEIywvij.js +1 -0
  87. package/dist/assets/home-page-route-DuTK1_El.js +1 -0
  88. package/dist/assets/{hosting-screen-BQCZiStC.js → hosting-screen-C9JhiTE2.js} +1 -1
  89. package/dist/assets/identity-page-route-zAL_IXBX.js +1 -0
  90. package/dist/assets/index-Cd6Xm6j5.js +151 -0
  91. package/dist/assets/index-DdJ6GEnl.css +2 -0
  92. package/dist/assets/{input-DR1eB4a1.js → input-CoUmPnRU.js} +1 -1
  93. package/dist/assets/{inspect-page-CKGEq0sL.js → inspect-page-BBObEk29.js} +6 -6
  94. package/dist/assets/integrations-page-BHMuUW9o.js +1 -0
  95. package/dist/assets/intelligence-layout-B89S015i.js +1 -0
  96. package/dist/assets/{log-out-CCanFuT_.js → key-round-CD3JWrs1.js} +1 -1
  97. package/dist/assets/{keyboard-shortcuts-page-CONirTbD.js → keyboard-shortcuts-page-DGwzOEcj.js} +1 -1
  98. package/dist/assets/library-detail-page-DqM_wmB4.js +1 -0
  99. package/dist/assets/library-page-CrgVsD84.js +1 -0
  100. package/dist/assets/{list-row-YOzkXNjq.js → list-row-D5MFdbkH.js} +1 -1
  101. package/dist/assets/{local-mode-YoUYEn7C.js → local-mode-Bskd5bsT.js} +2 -2
  102. package/dist/assets/{login-flow-CFhW2AHB.js → login-flow-BbLSXmEe.js} +1 -1
  103. package/dist/assets/login-page-GfRvCQ29.js +1 -0
  104. package/dist/assets/logout-page-Dg1wgnDr.js +1 -0
  105. package/dist/assets/logs-layout-CXAlJ7LX.js +1 -0
  106. package/dist/assets/{memory-router-playground-page-CP8awc0-.js → memory-router-playground-page-dtviLwvO.js} +1 -1
  107. package/dist/assets/{menu-Bjq0lFxx.js → menu-Dy5QbnTj.js} +1 -1
  108. package/dist/assets/messages-49pNL2E1.js +13 -0
  109. package/dist/assets/{metric-card-DQKsGfEB.js → metric-card-DreSiKBJ.js} +1 -1
  110. package/dist/assets/middleware-pbPQ0upo.js +1 -0
  111. package/dist/assets/{mobile-sidebar-drawer-qLk01r-p.js → mobile-sidebar-drawer-CEz_u6L2.js} +1 -1
  112. package/dist/assets/{modal-cdtdc8dA.js → modal-D5nLWNN9.js} +1 -1
  113. package/dist/assets/mutation-error-DYv0eJ_i.js +1 -0
  114. package/dist/assets/native-biometric-8C66CwyW.js +6 -0
  115. package/dist/assets/native-deep-link-CJGNy9bj.js +1 -0
  116. package/dist/assets/{native-file-B1HraJR0.js → native-file-DI99Emal.js} +2 -2
  117. package/dist/assets/{notice-Dh3mnM_U.js → notice-DkcNAP8O.js} +1 -1
  118. package/dist/assets/notifications-page-B_sN7yho.js +1 -0
  119. package/dist/assets/{oauth-complete-page-DLsLw4Ai.js → oauth-complete-page-CuybfFpw.js} +1 -1
  120. package/dist/assets/{oauth-popup-complete-page-Bzch_dtU.js → oauth-popup-complete-page-DSZxA1d6.js} +1 -1
  121. package/dist/assets/optimistic-lifecycle-BvfDBY8o.js +1 -0
  122. package/dist/assets/{page-shell-CejvYP6I.js → page-shell-DhRqqQYA.js} +1 -1
  123. package/dist/assets/{pairing-page-Chm98xKO.js → pairing-page-DzAmAv0h.js} +1 -1
  124. package/dist/assets/panel-item-CouW2A55.js +1 -0
  125. package/dist/assets/{password-reset-page-BJtjGZ_1.js → password-reset-page-BCk9Si73.js} +1 -1
  126. package/dist/assets/platform-detection-BrzZ9nIv.js +1 -0
  127. package/dist/assets/platform-loopback-page-Dka8sBVb.js +1 -0
  128. package/dist/assets/plugin-detail-page-Byuqbr1N.js +1 -0
  129. package/dist/assets/plugins-page-DIye0I83.js +1 -0
  130. package/dist/assets/plugins-surface-z3RTZS4H.js +1 -0
  131. package/dist/assets/plus-DItfr5ux.js +1 -0
  132. package/dist/assets/pointer-Cdz7NGHe.js +1 -0
  133. package/dist/assets/{popover-DKvyZMoc.js → popover-CFL4WZTr.js} +1 -1
  134. package/dist/assets/prechat-route-DOXwrVAo.js +1 -0
  135. package/dist/assets/prefs-Cv7dVfD-.js +1 -0
  136. package/dist/assets/privacy-page-u6xy7Q8z.js +1 -0
  137. package/dist/assets/privacy-screen-CjN05DC6.js +1 -0
  138. package/dist/assets/provider-callback-page-CL5ZVZ_W.js +1 -0
  139. package/dist/assets/provider-key-3AHnKoz9.js +1 -0
  140. package/dist/assets/provider-signup-page-Eizzv0xD.js +1 -0
  141. package/dist/assets/quick-input-page-J80B2lqk.js +1 -0
  142. package/dist/assets/react-query.gen-C6wVk6Rw.js +1 -0
  143. package/dist/assets/{react-query.gen-DVZyPw6H.js → react-query.gen-DPzPS206.js} +1 -1
  144. package/dist/assets/remote-gateway-session-CKCwbah-.js +1 -0
  145. package/dist/assets/research-mock-page-CoybPf50.js +1 -0
  146. package/dist/assets/{research-onboarding-persistence-DBhBmIGA.js → research-onboarding-persistence-DnuHyFyB.js} +1 -1
  147. package/dist/assets/research-onboarding-route-B5_eJwJw.js +63 -0
  148. package/dist/assets/{resize-errors-DQaZhn9s.js → resize-errors-DqIkO0UI.js} +1 -1
  149. package/dist/assets/{resolved-assistants-store-DccydJ5N.js → resolved-assistants-store-DAzPZ1eV.js} +1 -1
  150. package/dist/assets/return-to-BwxkOGDI.js +1 -0
  151. package/dist/assets/review-terms-screen-BWVXGdnG.js +1 -0
  152. package/dist/assets/risk-t10VBZTf.js +3 -0
  153. package/dist/assets/routes-BbeIx_F9.js +1 -0
  154. package/dist/assets/{schedules-D7EefqdS.js → schedules-BfKi12EZ.js} +1 -1
  155. package/dist/assets/{sdk.gen-YX4BQpM7.js → sdk.gen-BhtkuoSl.js} +1 -1
  156. package/dist/assets/sdk.gen-BwnFjFcp.js +6 -0
  157. package/dist/assets/{sdk.gen-B3bmXhSv.js → sdk.gen-CmKfVpgB.js} +1 -1
  158. package/dist/assets/{security-page-Cp2s0T8l.js → security-page-Bqpm9CRl.js} +1 -1
  159. package/dist/assets/select-assistant-screen-DuY4fs2R.js +1 -0
  160. package/dist/assets/{setting-row-D9Jbc5pM.js → setting-row-CUka7_L9.js} +1 -1
  161. package/dist/assets/settings-layout-BjCfuXEr.js +1 -0
  162. package/dist/assets/share-feedback-modal-E8Fvm4e9.js +1 -0
  163. package/dist/assets/sidebar-tree-Bf3uooyL.js +1 -0
  164. package/dist/assets/signup-page-ChGv8LrT.js +1 -0
  165. package/dist/assets/{signup-shell-C9HJHs_-.js → signup-shell-DufHA5do.js} +1 -1
  166. package/dist/assets/site-favicon-OrfXRQVO.js +1 -0
  167. package/dist/assets/skill-detail-page-BVbMXZJX.js +1 -0
  168. package/dist/assets/skill-detail-panel-D7rCFgn6.js +1 -0
  169. package/dist/assets/skill-icon-cNkD2w1X.js +1 -0
  170. package/dist/assets/skills-BNOqjTQz.js +1 -0
  171. package/dist/assets/skills-page-D6eXxIrR.js +1 -0
  172. package/dist/assets/{sound-manager-CX_nIxe3.js → sound-manager-6UbdgQrj.js} +1 -1
  173. package/dist/assets/{sounds-page-1emqNnJy.js → sounds-page-oCrKag0t.js} +1 -1
  174. package/dist/assets/{src-4xooMXeT.js → src-DZbMXyC2.js} +39 -39
  175. package/dist/assets/stat-square-CTHnQ1jc.js +1 -0
  176. package/dist/assets/subagent-detail-panel-D8Vym0hK.js +4 -0
  177. package/dist/assets/{subagent-store-DjUgx1D2.js → subagent-store-BHsYfTME.js} +1 -1
  178. package/dist/assets/{system-events-page-ww0hAGYR.js → system-events-page-CmP_mG_E.js} +1 -1
  179. package/dist/assets/{system-events-redirect-page-aRRRoLJI.js → system-events-redirect-page-DbaFKRXH.js} +1 -1
  180. package/dist/assets/tag-CV4v7fRF.js +1 -0
  181. package/dist/assets/three-dot-indicator-DNuHHwtA.js +1 -0
  182. package/dist/assets/{tiptap-document-editor-EQIK5AAg.js → tiptap-document-editor-aLok6H82.js} +2 -2
  183. package/dist/assets/toast-xTp-xwYL.js +1 -0
  184. package/dist/assets/tool-detail-panel-BxZmdI-Q.js +2 -0
  185. package/dist/assets/{upgrade-cancel-page-BJH7716k.js → upgrade-cancel-page-DQ2t1atD.js} +1 -1
  186. package/dist/assets/{upgrade-success-page-1PlVik4u.js → upgrade-success-page-qHyDiSFk.js} +1 -1
  187. package/dist/assets/{usage-page-jkBMfAr8.js → usage-page-Cvi3-b-0.js} +1 -1
  188. package/dist/assets/{use-active-assistant-id-BBHOMQFe.js → use-active-assistant-id-xuY3XyDA.js} +1 -1
  189. package/dist/assets/{use-bus-subscription-YZjoe_RT.js → use-bus-subscription-C3H3CmM_.js} +1 -1
  190. package/dist/assets/use-copy-to-clipboard-BCTXSMa-.js +1 -0
  191. package/dist/assets/use-edge-swipe-back-gBVYQBH0.js +1 -0
  192. package/dist/assets/use-invite-link-dialog-sBfH06UB.js +1 -0
  193. package/dist/assets/use-is-org-ready-CjILVAUZ.js +1 -0
  194. package/dist/assets/use-onboarding-login-Chcj53mF.js +1 -0
  195. package/dist/assets/{use-reduced-motion-DUPDDLHh.js → use-reduced-motion-Cj0Z8KSf.js} +1 -1
  196. package/dist/assets/use-skill-actions-DZARQDwC.js +1 -0
  197. package/dist/assets/{use-skill-categories-q-Ih2uSR.js → use-skill-categories-Dg0zxtfv.js} +1 -1
  198. package/dist/assets/use-skill-detail-files-BneiGfwy.js +1 -0
  199. package/dist/assets/{utils-Cv6Fontd.js → utils-xg2dl_KJ.js} +1 -1
  200. package/dist/assets/viewer-store-B8-Qnbx9.js +1 -0
  201. package/dist/assets/voice-page-Dzku566m.js +1 -0
  202. package/dist/assets/{weather-forecast-display-CJ_ZT_-B.js → weather-forecast-display-33DfC7gA.js} +1 -1
  203. package/dist/assets/{web-CCRYoYsf.js → web-BD2N6zhd.js} +1 -1
  204. package/dist/assets/{web-CAGeGBel.js → web-BaubW4Pp.js} +1 -1
  205. package/dist/assets/{web-C_gIgYOE.js → web-C1L-cpPj.js} +1 -1
  206. package/dist/assets/{web-Bifc0CyQ.js → web-CJiP8Lg6.js} +1 -1
  207. package/dist/assets/{web-D-9O_l_z.js → web-D8PpvYf_.js} +1 -1
  208. package/dist/assets/{web-DKKX1zUX.js → web-Duw5A2aP.js} +1 -1
  209. package/dist/assets/{web-C6JBS2jv.js → web-O1LOb-o9.js} +1 -1
  210. package/dist/assets/web-RhBklijR.js +1 -0
  211. package/dist/assets/{welcome-screen-C_JlT5id.js → welcome-screen-_mzcPEui.js} +1 -1
  212. package/dist/assets/workflow-detail-panel-DqBjO6c3.js +1 -0
  213. package/dist/assets/workflow-store-DACyavns.js +1 -0
  214. package/dist/assets/workspace-page-qq2UZFY3.js +1 -0
  215. package/dist/index.html +131 -121
  216. package/package.json +1 -1
  217. package/dist/assets/ai-page-BcgdcD4e.js +0 -1
  218. package/dist/assets/animated-avatar-KEsxQUWX.js +0 -1
  219. package/dist/assets/api-bHQ_ZhgO.js +0 -1
  220. package/dist/assets/arrow-up-BxoccrRI.js +0 -1
  221. package/dist/assets/assistant-identity-store-Cp3CD7d1.js +0 -1
  222. package/dist/assets/auth-store-CI4EhvE5.js +0 -2
  223. package/dist/assets/avatar-bundled-components-DQodAnJD.js +0 -1
  224. package/dist/assets/background-task-detail-panel-CfEFRK9m.js +0 -1
  225. package/dist/assets/billing-page-7z-qyk7R.js +0 -3
  226. package/dist/assets/bookmarks-page-BPDCi7Fj.js +0 -1
  227. package/dist/assets/browser-CP3oEvln.js +0 -2
  228. package/dist/assets/build-state-D96tiPPg.js +0 -1
  229. package/dist/assets/button-D1p5nVKJ.js +0 -1
  230. package/dist/assets/channels-page-route-CpAKC7Ny.js +0 -1
  231. package/dist/assets/client.gen-V_HNquaL.js +0 -6
  232. package/dist/assets/command-palette-DzGSKQit.js +0 -1
  233. package/dist/assets/community-page-pr5Nq-N8.js +0 -1
  234. package/dist/assets/contacts-gateway-jQhZqbXH.js +0 -1
  235. package/dist/assets/contacts-page-route-CRf2kU0k.js +0 -1
  236. package/dist/assets/debug-page-CAXWUmxw.js +0 -4
  237. package/dist/assets/detail-shell-q6GjKJ6F.js +0 -4
  238. package/dist/assets/device-settings-BBwtGKJb.js +0 -1
  239. package/dist/assets/devices-page-CsqBToSK.js +0 -1
  240. package/dist/assets/document-viewer-page-BaGYg7Jy.js +0 -1
  241. package/dist/assets/edit-chat-session-phEigSQo.js +0 -1
  242. package/dist/assets/effective-timezone-DAkNzd21.js +0 -1
  243. package/dist/assets/esm-BZAWL4X4.js +0 -2
  244. package/dist/assets/esm-CuAK_cYT.js +0 -2
  245. package/dist/assets/esm-_LZD1lMg.js +0 -2
  246. package/dist/assets/esm-fycmFY2i.js +0 -2
  247. package/dist/assets/esm-hkF3aX28.js +0 -1
  248. package/dist/assets/feature-flag-catalog-Ca2Lo1Sx.js +0 -1
  249. package/dist/assets/file-editor-CiduanJg.js +0 -1
  250. package/dist/assets/general-page-Cx_BeDy7.js +0 -1
  251. package/dist/assets/haptics-CABfN3Hg.js +0 -1
  252. package/dist/assets/hatching-screen-DGWclpGa.js +0 -1
  253. package/dist/assets/home-page-route-B6axS8Xb.js +0 -1
  254. package/dist/assets/identity-page-route-Ck6yFc4b.js +0 -1
  255. package/dist/assets/index-BkM0WTPC.css +0 -2
  256. package/dist/assets/index-CoobbyzR.js +0 -114
  257. package/dist/assets/install-BfTQMx11.js +0 -1
  258. package/dist/assets/integrations-page-vewUMHCO.js +0 -1
  259. package/dist/assets/intelligence-layout-Y0MnzPhq.js +0 -1
  260. package/dist/assets/library-detail-page-nV2EKiXc.js +0 -1
  261. package/dist/assets/library-page-B9_dVu66.js +0 -1
  262. package/dist/assets/lock-ChQK4VKH.js +0 -1
  263. package/dist/assets/login-page-DVozReou.js +0 -1
  264. package/dist/assets/logout-page-CD2DJ8cb.js +0 -1
  265. package/dist/assets/logs-layout-Cp0hu2KO.js +0 -1
  266. package/dist/assets/messages-3teOY9CI.js +0 -13
  267. package/dist/assets/mutation-error-DITUXbSQ.js +0 -1
  268. package/dist/assets/native-biometric-uwPAd9lh.js +0 -6
  269. package/dist/assets/native-deep-link-C13QIbW2.js +0 -1
  270. package/dist/assets/notifications-page-C32A7t8f.js +0 -1
  271. package/dist/assets/panel-item-vXPWJAXs.js +0 -1
  272. package/dist/assets/platform-detection-CY-O-Rjc.js +0 -1
  273. package/dist/assets/platform-loopback-page-BwMcw0M2.js +0 -1
  274. package/dist/assets/plugin-detail-page-BCbgwXnr.js +0 -1
  275. package/dist/assets/plugins-page-_hVmUOdU.js +0 -1
  276. package/dist/assets/plugins-surface-DYk9FmM2.js +0 -1
  277. package/dist/assets/prechat-route-FwhIKBwh.js +0 -1
  278. package/dist/assets/prefs-Bo9fZ56w.js +0 -1
  279. package/dist/assets/privacy-page-Dgk9eUIc.js +0 -1
  280. package/dist/assets/privacy-screen-BWMJTqw0.js +0 -1
  281. package/dist/assets/provider-callback-page-DrIkf6Qx.js +0 -1
  282. package/dist/assets/provider-key-CVj0dGLW.js +0 -1
  283. package/dist/assets/provider-signup-page-CLgombsV.js +0 -1
  284. package/dist/assets/quick-input-page-DAoWLetZ.js +0 -1
  285. package/dist/assets/react-query.gen-D8YgmevH.js +0 -1
  286. package/dist/assets/remote-gateway-session-uLbl0yn7.js +0 -1
  287. package/dist/assets/research-mock-page-pa9X5DVr.js +0 -1
  288. package/dist/assets/research-onboarding-route-DMNYFP95.js +0 -61
  289. package/dist/assets/return-to-BbdJZupb.js +0 -1
  290. package/dist/assets/review-terms-screen-Dhzjmovc.js +0 -1
  291. package/dist/assets/routes-iUGoIqW2.js +0 -1
  292. package/dist/assets/sdk.gen-Bz2u5Wv3.js +0 -1
  293. package/dist/assets/select-assistant-screen-BznHV3KW.js +0 -1
  294. package/dist/assets/settings-layout-u1k_Rsdf.js +0 -1
  295. package/dist/assets/share-feedback-modal-D1-RcW6F.js +0 -1
  296. package/dist/assets/shield-check-DFzO4cEd.js +0 -1
  297. package/dist/assets/sidebar-tree-CMREzbfC.js +0 -1
  298. package/dist/assets/signup-page-DdEr8yFN.js +0 -1
  299. package/dist/assets/skills-page-DEyycwld.js +0 -1
  300. package/dist/assets/stat-square-CDBisfqE.js +0 -1
  301. package/dist/assets/subagent-detail-panel-Akqnt7ec.js +0 -4
  302. package/dist/assets/tag-BizaosUX.js +0 -1
  303. package/dist/assets/toast-DowcpN7g.js +0 -1
  304. package/dist/assets/tool-detail-panel-C_g0wGNh.js +0 -2
  305. package/dist/assets/use-is-mobile-DJUk0lC8.js +0 -1
  306. package/dist/assets/use-is-org-ready-Dtge_dC5.js +0 -1
  307. package/dist/assets/use-onboarding-login-9378MpEq.js +0 -1
  308. package/dist/assets/use-setup-channel-param-CRMdNnM_.js +0 -9
  309. package/dist/assets/viewer-store-C8L5A-BB.js +0 -1
  310. package/dist/assets/voice-page-DIpdPRDT.js +0 -1
  311. package/dist/assets/workflow-detail-panel-BIZ8culE.js +0 -1
  312. package/dist/assets/workspace-page-8DC4PiAA.js +0 -1
  313. /package/dist/assets/{api-errors-DZ6ckXtC.js → api-errors-CrWDzVca.js} +0 -0
  314. /package/dist/assets/{avatar-svg-compositor-BnVOXsYU.js → avatar-svg-compositor-CnDf9Ibf.js} +0 -0
  315. /package/dist/assets/{build.umd-C5MOmzrf.js → build.umd-CxdKgGWo.js} +0 -0
  316. /package/dist/assets/{by-tool-use-id-index-h0TggD-a.js → by-tool-use-id-index-BokzI3ZP.js} +0 -0
  317. /package/dist/assets/{chat-Bn41Y5yM.js → chat-B8mgARYR.js} +0 -0
  318. /package/dist/assets/{client.gen-AQhSugfA.js → client.gen-DVfIRXUZ.js} +0 -0
  319. /package/dist/assets/{cloud-off-CysJvmWr.js → cloud-off-Db1nySkc.js} +0 -0
  320. /package/dist/assets/{code-DsR1Npcp.js → code-Czx7d7SK.js} +0 -0
  321. /package/dist/assets/{composer-focus-BBTBdAab.js → composer-focus-BZr63Cvs.js} +0 -0
  322. /package/dist/assets/{conversation-selection-oLES1vkM.js → conversation-selection-BBHkzcfy.js} +0 -0
  323. /package/dist/assets/{copy-CytZjq76.js → copy-Cn1FKrEp.js} +0 -0
  324. /package/dist/assets/{cpu-C6_Tjhkh.js → cpu-BJuB2Khn.js} +0 -0
  325. /package/dist/assets/{create-selectors-DxrPZQND.js → create-selectors-8NePGNlX.js} +0 -0
  326. /package/dist/assets/{credit-card-s3I7DYkY.js → credit-card-BuyWdO9t.js} +0 -0
  327. /package/dist/assets/{definitions-CJ7YHLIq.js → definitions-CaYcW4Yq.js} +0 -0
  328. /package/dist/assets/{dist-C3LFhPgk2.js → dist-DS5iJwBJ2.js} +0 -0
  329. /package/dist/assets/{domain-field-6GHeeXa3.js → domain-field-C5a2iMot.js} +0 -0
  330. /package/dist/assets/{emoji-catalog-data-hHp74TCA.js → emoji-catalog-data-D8lRMt3A.js} +0 -0
  331. /package/dist/assets/{event-bus-BXKLAX-e.js → event-bus-BNx4a0Ds.js} +0 -0
  332. /package/dist/assets/{external-link-DJ0A4ezO.js → external-link-Dqpx9nRm.js} +0 -0
  333. /package/dist/assets/{file-text-Cw--uc4C.js → file-text-CYJz-GvF.js} +0 -0
  334. /package/dist/assets/{format-date-CLlHK5gl.js → format-date-CghpPTDc.js} +0 -0
  335. /package/dist/assets/{format-file-size-BfZOpPdu.js → format-file-size-DzVEncaw.js} +0 -0
  336. /package/dist/assets/{globe-DgulNfxa.js → globe-4qSOWE2N.js} +0 -0
  337. /package/dist/assets/{hard-drive-CUjwJ5MQ.js → hard-drive-rDxhoRUm.js} +0 -0
  338. /package/dist/assets/{impersonate-version-flag-DudbyPBi.js → impersonate-version-flag-BhxfH6iZ.js} +0 -0
  339. /package/dist/assets/{info-BaizXivv.js → info-DsOyuMO9.js} +0 -0
  340. /package/dist/assets/{is-electron-LEymSS4C.js → is-electron-y5bNUVyG.js} +0 -0
  341. /package/dist/assets/{link-2-C4ZDIIu1.js → link-2-4bMylQ5v.js} +0 -0
  342. /package/dist/assets/{llm-dimension-CgXjHNj6.js → llm-dimension-DyYwG3mU.js} +0 -0
  343. /package/dist/assets/{loader-circle-D1pLQlMh.js → loader-circle-Cz7opInR.js} +0 -0
  344. /package/dist/assets/{log-in-BQonRVoo.js → log-in--aqELu3z.js} +0 -0
  345. /package/dist/assets/{minimize-2-BusmaFRB.js → minimize-2-Clnet2W7.js} +0 -0
  346. /package/dist/assets/{misc-CfQwP_zq.js → misc-BYQPh7vS.js} +0 -0
  347. /package/dist/assets/{monitor-CWNmhnli.js → monitor-DfbL8_59.js} +0 -0
  348. /package/dist/assets/{moon-Br0t6dvo.js → moon-B8qiwjrW.js} +0 -0
  349. /package/dist/assets/{onboarding-step-layout-QhoZ4RKu.js → onboarding-step-layout-2XcmxqFN.js} +0 -0
  350. /package/dist/assets/{pdf-DGDlrU1i.js → pdf-C3Qukw-J.js} +0 -0
  351. /package/dist/assets/{pencil-rKUVpppO.js → pencil-CUIr0IFo.js} +0 -0
  352. /package/dist/assets/{prechat-UQXfXf5i.js → prechat-P1y7ZM6C.js} +0 -0
  353. /package/dist/assets/{prechat-names-BX9ToPj8.js → prechat-names-clVy5Mee.js} +0 -0
  354. /package/dist/assets/{progress-bar-q6qGo2Sp.js → progress-bar-Ca8gmE3B.js} +0 -0
  355. /package/dist/assets/{proxy-CheNMUr6.js → proxy-o6cPThl2.js} +0 -0
  356. /package/dist/assets/{public-asset-BpAVsx77.js → public-asset-GKv5zCfZ.js} +0 -0
  357. /package/dist/assets/{refresh-cw-BmNgSiel.js → refresh-cw-DevIHL7J.js} +0 -0
  358. /package/dist/assets/{repeat-Bms5wrYv.js → repeat-C8Im6j--.js} +0 -0
  359. /package/dist/assets/{save-BZ19CVY3.js → save-aD5JFIZf.js} +0 -0
  360. /package/dist/assets/{semver-DLY9hF7h.js → semver-DIkpaM51.js} +0 -0
  361. /package/dist/assets/{shortcut-keys-DKqAVRjB.js → shortcut-keys-B2EE-634.js} +0 -0
  362. /package/dist/assets/{sparkles-3RJkeWa7.js → sparkles-PGiR5v1g.js} +0 -0
  363. /package/dist/assets/{status-badge-pill-DUcVAyfr.js → status-badge-pill-0N6rTEBg.js} +0 -0
  364. /package/dist/assets/{step-indicator-dots-DzT4WVOT.js → step-indicator-dots-D03TmFKG.js} +0 -0
  365. /package/dist/assets/{toggle-D7S110RM.js → toggle-CDfguvUz.js} +0 -0
  366. /package/dist/assets/{triangle-alert-CuLBwl1x.js → triangle-alert-Z0Gq0IuB.js} +0 -0
  367. /package/dist/assets/{typed-storage-T9jtK5c0.js → typed-storage-5IU6qVWg.js} +0 -0
  368. /package/dist/assets/{usage-window-wP92lK6k.js → usage-window-C6gWu5Qu.js} +0 -0
  369. /package/dist/assets/{user-plus-CBZUdRuz.js → user-plus-DMh4_UTz.js} +0 -0
  370. /package/dist/assets/{workflow-status-CHd73wxx.js → workflow-status-ZrbiLW5D.js} +0 -0
  371. /package/dist/assets/{x-CwzRJv9J.js → x-CkSVp1Ok.js} +0 -0
  372. /package/dist/assets/{xterm-ClHs86Ut.js → xterm-CBmd_y-b.js} +0 -0
  373. /package/dist/assets/{xterm-addon-fit-B-HVOsbO.js → xterm-addon-fit-THPW0uy0.js} +0 -0
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-CmeVLfq0.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-D1p5nVKJ.js";import{d 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-Bv5O5juh.js";import{t as l}from"./createLucideIcon-IRfcSUxS.js";import{t as u}from"./arrow-left-DI9551VI.js";import{t as d}from"./brain-BLDXGaUy.js";import{t as f}from"./external-link-DJ0A4ezO.js";import{t as p}from"./file-text-Cw--uc4C.js";import{t as m}from"./globe-DgulNfxa.js";import{t as h}from"./loader-circle-D1pLQlMh.js";import"./src-4xooMXeT.js";import{t as g}from"./tag-BizaosUX.js";import{Qn as _}from"./sdk.gen-Bz2u5Wv3.js";import{Qt as v,gt as y,ht as b}from"./react-query.gen-D8YgmevH.js";import{n as x,r as S,t as C}from"./api-errors-DZ6ckXtC.js";import{o as w}from"./routes-iUGoIqW2.js";import{H as T,V as E,fi as D,hi as O,ka as k,ki as A,mi as j,ta as M}from"./index-CoobbyzR.js";import{i as N,n as P,r as F,t as I}from"./file-editor-CiduanJg.js";var L=l(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),R=e(n(),1),z=s();function B({skill:e,className:t,fallback:n=`🧩`}){let[r,i]=(0,R.useState)(!1);return e.icon&&!r?(0,z.jsx)(`img`,{src:`/assistant/skills/${e.id}/${e.icon}`,alt:``,className:`${t} object-contain`,onError:()=>i(!0)}):(0,z.jsx)(`span`,{className:t,children:e.emoji??n})}var V={vellum:{label:`Vellum`,icon:L},clawhub:{label:`Clawhub`,icon:m},skillssh:{label:`skills.sh`,icon:O},custom:{label:`Custom`,icon:D},"assistant-memory":{label:`Assistant's Memory`,icon:d}};function H({origin:e}){let t=e in V?V[e]:{label:e.replace(/-/g,` `),icon:A};return(0,z.jsx)(g,{tone:`neutral`,leftIcon:(0,R.createElement)(t.icon),className:`capitalize`,children:t.label})}function U(e){return e.kind===`installed`||e.kind===`bundled`}function W(e){return e.kind===`catalog`}function G(e){return e.kind===`installed`}function K({assistantId:e,skill:t,onBack:n,onInstall:i,onRemove:a,isInstalling:s=!1,isRemoving:l=!1}){let[d,f]=(0,R.useState)(null),m=W(t),g=G(t),_=o({...y({path:{assistant_id:e,id:t.id}}),select:e=>e??null}),v=(0,R.useMemo)(()=>_.data?.files??[],[_.data]),x=(0,R.useMemo)(()=>v.find(e=>e.name===`SKILL.md`),[v]),S=d??x?.path??null,C=o({...b({path:{assistant_id:e,id:t.id},query:{path:S??``}}),select:e=>e??null,enabled:!!S}),w=v.find(e=>e.path===S);return(0,z.jsxs)(`div`,{className:`flex h-[calc(100vh-14rem)] flex-col`,children:[(0,z.jsxs)(`div`,{className:`mb-4 flex items-start gap-3`,children:[(0,z.jsx)(r,{type:`button`,variant:`ghost`,iconOnly:(0,z.jsx)(u,{"aria-hidden":!0}),"aria-label":`Back to skills`,onClick:n}),(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-3 sm:flex-row sm:items-center`,children:[(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,z.jsx)(B,{skill:t,className:`h-8 w-8 text-3xl`}),(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,z.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:t.name}),(0,z.jsx)(H,{origin:t.origin})]}),(0,z.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-body-medium-lighter`,style:{color:`var(--content-secondary)`},children:t.description})]})]}),m?s?(0,z.jsx)(`div`,{className:`flex h-9 items-center px-3`,children:(0,z.jsx)(h,{className:`h-4 w-4 animate-spin`,style:{color:`var(--content-tertiary)`}})}):(0,z.jsx)(r,{type:`button`,onClick:i,disabled:!i,leftIcon:(0,z.jsx)(k,{"aria-hidden":!0}),children:`Install`}):(0,z.jsx)(r,{type:`button`,variant:g?`dangerOutline`:`outlined`,onClick:a,disabled:!g||l||!a,leftIcon:l?(0,z.jsx)(h,{className:`animate-spin`,"aria-hidden":!0}):(0,z.jsx)(j,{"aria-hidden":!0}),children:`Remove`})]})]}),(0,z.jsx)(c.Root,{asChild:!0,noPadding:!0,children:(0,z.jsxs)(`div`,{className:`flex flex-1 flex-col overflow-hidden sm:grid`,style:{gridTemplateColumns:`240px 1fr`},children:[(0,z.jsx)(`div`,{className:`max-h-40 shrink-0 overflow-y-auto border-b p-2 sm:max-h-none sm:border-b-0 sm:border-r`,style:{borderColor:`var(--border-base)`},children:_.isLoading?(0,z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,z.jsx)(h,{className:`h-4 w-4 animate-spin`,style:{color:`var(--content-tertiary)`}})}):v.length===0?(0,z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files available.`}):v.map(e=>{let t=S===e.path,n=(e.mimeType??``).endsWith(`/directory`);return(0,z.jsxs)(`button`,{type:`button`,onClick:()=>f(e.path),className:`flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{color:t?`var(--primary-base)`:`var(--content-default)`,backgroundColor:t?`color-mix(in oklab, var(--primary-base) 10%, transparent)`:void 0},children:[n?(0,z.jsx)(M,{className:`h-4 w-4 shrink-0`,style:{color:`var(--system-mid-strong)`}}):(0,z.jsx)(p,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,z.jsx)(`span`,{className:`truncate`,children:e.name})]},e.path)})}),(0,z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:C.isLoading?(0,z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,z.jsx)(h,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):w?(0,z.jsx)(q,{assistantId:e,skillId:t.id,fileName:w.name,filePath:w.path,content:C.data?.content??null,isBinary:!!C.data?.isBinary,editable:t.kind===`installed`},`${t.id}/${w.path}`):(0,z.jsx)(`p`,{className:`flex h-full items-center justify-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view its contents.`})})]})})]})}function q({assistantId:e,skillId:n,fileName:o,filePath:s,content:c,isBinary:l,editable:u}){let d=i(),p=a(),[m,h]=(0,R.useState)(!1),[g,_]=(0,R.useState)(``),y=`skills/${n}/${s}`,b=v({onSuccess:()=>{h(!1),_(``),p.invalidateQueries({queryKey:[{_id:`skillsByIdFilesContentGet`}]}),p.invalidateQueries({queryKey:[{_id:`skillsByIdFilesGet`}]}),s===`SKILL.md`&&p.invalidateQueries({queryKey:[{_id:`skillsGet`}]})},onError:e=>{t(e,{context:`skill-file-save`,bestEffort:!0})}}),x=m&&g!==(c??``),S=(0,R.useCallback)(()=>{!x||b.isPending||b.mutate({path:{assistant_id:e},body:{path:y,content:g,encoding:`utf8`}})},[x,b,e,y,g]),C=(0,R.useCallback)(()=>{h(!0),_(c??``),b.reset()},[c,b]),D=(0,R.useCallback)(()=>{h(!1),_(``),b.reset()},[b]);if(l)return(0,z.jsx)(`p`,{className:`flex h-full items-center justify-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Binary file — no preview available.`});if(c===null)return(0,z.jsxs)(`p`,{className:`flex h-full items-center justify-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:[`No preview available for `,o,`.`]});let O=u?(0,z.jsx)(r,{variant:`ghost`,size:`regular`,iconOnly:(0,z.jsx)(f,{"aria-hidden":!0}),onClick:()=>d(`${w.workspace}?file=${encodeURIComponent(y)}`),"aria-label":`Open in Workspace`,className:`hover:bg-[var(--surface-base)]`}):void 0;return T(o,void 0)&&!m?(0,z.jsx)(`div`,{className:`relative flex h-full flex-col`,children:(0,z.jsxs)(`div`,{className:`relative flex-1 overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:[(0,z.jsx)(I,{content:c,fileName:o,showEdit:u,isEditing:!1,onToggleEdit:C,extraActions:O}),(0,z.jsx)(E,{content:c})]})}):(0,z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,z.jsx)(I,{content:m?g:c,fileName:o,showEdit:u,isEditing:m,onToggleEdit:()=>m?D():C(),extraActions:O}),m?(0,z.jsx)(F,{value:g,onChange:_,onSave:S}):(0,z.jsx)(N,{content:c,readOnly:!u,onStartEdit:C})]}),m&&(0,z.jsx)(P,{isDirty:x,isSaving:b.isPending,error:b.isError?`Save failed`:null,onSave:S,onDiscard:D})]})}async function J(e,t,n){let{data:r,error:i,response:a}=await _({path:{assistant_id:e},body:n?{slug:t,version:n}:{slug:t},throwOnError:!1});if(x(a,i,`Failed to install skill.`),!a.ok)throw new C(a.status,S(i,a,`Failed to install skill.`));return r??{ok:!0}}export{G as a,L as c,U as i,K as n,H as o,W as r,B as s,J as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{r as t,s as n}from"./local-settings-lVNyIOJ_.js";import{t as r}from"./capture-error-CmeVLfq0.js";import{t as i}from"./react-DJZBPgpf.js";import{t as a}from"./button-D1p5nVKJ.js";import{d as o,h as s}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{N as c,O as l,S as u,T as d,c as f,n as p}from"./QueryClientProvider-DKhXIxGb.js";import{a as m,c as h,d as g,i as _,l as v,o as y,r as b,s as x,t as S,u as C}from"./useQuery-B45lW1Kk.js";import{t as w}from"./jsx-runtime-CVSDxk6A.js";import{t as T}from"./card-Bv5O5juh.js";import{t as E}from"./createLucideIcon-IRfcSUxS.js";import{t as D}from"./check-DFNrQERi.js";import{t as O}from"./chevron-down-qD-re7AW.js";import{t as k}from"./chevron-right-DqqmezXC.js";import{t as A}from"./circle-alert-zOqdmf25.js";import{t as j}from"./circle-check-VSiny8yl.js";import{t as M}from"./copy-CytZjq76.js";import{t as N}from"./external-link-DJ0A4ezO.js";import{n as P,t as F}from"./log-out-CCanFuT_.js";import{t as I}from"./loader-circle-D1pLQlMh.js";import{t as L}from"./log-in-BQonRVoo.js";import{t as R}from"./pencil-rKUVpppO.js";import{t as z}from"./refresh-cw-BmNgSiel.js";import{t as ee}from"./sparkles-3RJkeWa7.js";import{t as te}from"./x-CwzRJv9J.js";import{t as ne}from"./notice-Dh3mnM_U.js";import{t as B}from"./popover-DKvyZMoc.js";import{t as V}from"./input-DR1eB4a1.js";import{t as re}from"./toggle-D7S110RM.js";import{n as H,t as ie}from"./list-row-YOzkXNjq.js";import{t as U}from"./modal-cdtdc8dA.js";import{n as W,t as ae}from"./panel-item-vXPWJAXs.js";import{n as G}from"./toast-DowcpN7g.js";import{t as K}from"./confirm-dialog-DW84Cxfq.js";import{t as q}from"./client.gen-V_HNquaL.js";import{$ as oe,Gt as se,J as ce,Kt as le,Q as ue,Wt as de,X as fe,Y as pe,Z as me,qt as he}from"./react-query.gen-D8YgmevH.js";import{r as ge}from"./api-errors-DZ6ckXtC.js";import{C as _e}from"./auth-store-CI4EhvE5.js";import{r as ve}from"./api-DXLi4DU7.js";import{m as ye}from"./native-biometric-uwPAd9lh.js";import{o as be}from"./routes-iUGoIqW2.js";import{n as xe,t as Se}from"./browser-CP3oEvln.js";import{n as Ce}from"./use-is-mobile-DJUk0lC8.js";import{Ct as we,S as Te,St as Ee,b as J,x as De}from"./react-query.gen-DVZyPw6H.js";import{t as Oe}from"./assistant-feature-flag-store-BRGydSRn.js";import{$t as ke,Ai as Ae,Lr as je,Q as Y,Qt as Me,T as Ne,Ti as Pe,Xt as Fe,Yt as Ie,Zt as Le,ji as X,mi as Z,nn as Re,rn as ze,tn as Be,ya as Ve,yn as He,zr as Ue}from"./index-CoobbyzR.js";import{t as We}from"./use-active-assistant-id-BBHOMQFe.js";function Ge(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}function Ke(e,t,n){let r=e.slice(0);return r[t]=n,r}var qe=class extends c{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#p(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,f.batch(()=>{let e=this.#i,t=this.#f(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!l(e,n)});!o&&!s||(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&(Ge(e,n).forEach(e=>{e.destroy()}),Ge(n,e).forEach(e=>{e.subscribe(t=>{this.#p(e,t)})})),this.#m()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#f(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){return t.map((n,r)=>{let i=e[r];return n.defaultedQueryOptions.notifyOnChangeProps?i:n.observer.trackResult(i,e=>{t.forEach(t=>{t.observer.trackProp(e)})})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(!this.#a||this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=d(this.#a,t(e))),this.#a}return e}#f(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let n=[];return e.forEach(e=>{let r=this.#e.defaultQueryOptions(e),i=t.get(r.queryHash)?.shift()??new g(this.#e,r);n.push({defaultedQueryOptions:r,observer:i})}),n}#p(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=Ke(this.#t,n,t),this.#m())}#m(){if(this.hasListeners()){let e=this.#a,t=this.#u(this.#t,this.#l);e!==this.#d(t,this.#r?.combine)&&f.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},Q=e(i(),1);function Je({queries:e,...t},n){let r=p(n),i=C(),a=v(),o=Q.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=i?`isRestoring`:`optimistic`,t}),[e,r,i]);o.forEach(e=>{b(e),y(e,a,r.getQueryCache().get(e.queryHash))}),h(a);let[s]=Q.useState(()=>new qe(r,o,t)),[c,l,d]=s.getOptimisticResult(o,t.combine),S=!i&&t.subscribed!==!1;Q.useSyncExternalStore(Q.useCallback(e=>S?s.subscribe(f.batchCalls(e)):u,[s,S]),()=>s.getCurrentResult(),()=>s.getCurrentResult()),Q.useEffect(()=>{s.setQueries(o,t)},[o,t,s]);let w=c.some((e,t)=>m(o[t],e))?c.flatMap((e,t)=>{let n=o[t];return n&&m(n,e)?_(n,new g(r,n),a):[]}):[];if(w.length>0)throw Promise.all(w);let T=c.find((e,t)=>{let n=o[t];return n&&x({result:e,errorResetBoundary:a,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(T?.error)throw T.error;return l(d())}var Ye=E(`cable`,[[`path`,{d:`M17 19a1 1 0 0 1-1-1v-2a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2a1 1 0 0 1-1 1z`,key:`trhst0`}],[`path`,{d:`M17 21v-2`,key:`ds4u3f`}],[`path`,{d:`M19 14V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V10`,key:`1mo9zo`}],[`path`,{d:`M21 21v-2`,key:`eo0ou`}],[`path`,{d:`M3 5V3`,key:`1k5hjh`}],[`path`,{d:`M4 10a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2a2 2 0 0 1-2 2z`,key:`1dd30t`}],[`path`,{d:`M7 5V3`,key:`1t1388`}]]),Xe=E(`calendar-plus`,[[`path`,{d:`M16 19h6`,key:`xwg31i`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`path`,{d:`M19 16v6`,key:`tddt3s`}],[`path`,{d:`M21 12.598V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8.5`,key:`1glfrc`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 2v4`,key:`1cmpym`}]]);function Ze({assistantId:e,providerKey:t,displayName:n,managedAvailable:r,connectionsQueryKey:i,allConnections:a}){let o=p(),s=ye(),c=(0,Q.useRef)(null),l=(0,Q.useRef)(null),u=(0,Q.useRef)(null),d=(0,Q.useRef)(null),[f,m]=(0,Q.useState)(!1),h=()=>{l.current=null,m(!1)},g=()=>{c.current&&!c.current.closed&&c.current.close(),c.current=null,u.current&&=(clearInterval(u.current),null),d.current&&=(clearTimeout(d.current),null)},_=(0,Q.useCallback)(e=>{if(e.type!==`vellum:oauth-complete`||!l.current||e.requestId!==l.current.requestId)return;let{oauthStatus:t,oauthCode:r}=e;if(g(),h(),t===`connected`)G.success(`${n} account connected.`),o.invalidateQueries({queryKey:i});else{let e=r?`Error: ${r}`:`Authorization failed`;G.error(`${n} ${e}`)}},[i,n,o]),v=(0,Q.useCallback)(async(e,n)=>{if(!r)return!1;for(let r=0;r<8;r+=1){r>0&&await Le(750);try{if(o.invalidateQueries({queryKey:i}),Fe(await o.fetchQuery({...J({path:{assistant_id:e}}),staleTime:0}),t,n))return!0}catch{}}return!1},[i,r,t,o]);(0,Q.useEffect)(()=>{let e=e=>{let t=l.current;if(!t)return;let n=Me(e,window.location.origin,t.requestId);n&&_(n)},t=e=>{let t=l.current;if(!t)return;let n=ke(e,t.requestId);n&&(_(n),window.localStorage.removeItem(Be(t.requestId)))};return window.addEventListener(`message`,e),window.addEventListener(`storage`,t),()=>{window.removeEventListener(`message`,e),window.removeEventListener(`storage`,t)}},[_]),ze((0,Q.useCallback)(e=>{let t=l.current;t&&e.requestId===t.requestId&&_({type:`vellum:oauth-complete`,requestId:e.requestId,oauthStatus:e.oauthStatus,oauthProvider:e.oauthProvider,oauthCode:e.oauthCode})},[_])),(0,Q.useEffect)(()=>xe(()=>{let e=l.current;e&&(async()=>{let t=await v(e.platformAssistantId,e.baselineConnectionSignatures);l.current&&(h(),t&&G.success(`${n} account connected.`))})()}),[v,n]),(0,Q.useEffect)(()=>()=>{u.current&&clearInterval(u.current),d.current&&clearTimeout(d.current),c.current&&!c.current.closed&&c.current.close()},[]);let y=we();return{handleConnect:(i=[])=>{if(!r)return;let f=crypto.randomUUID();m(!0);let p=async r=>{let c;try{c=await _e(e)}catch(e){g(),h(),G.error(e instanceof Error?e.message:`Failed to start ${n} authorization.`);return}let u=Ie(await o.fetchQuery({...J({path:{assistant_id:c}}),staleTime:0}).catch(()=>c===e?a??[]:[]),t);l.current={requestId:f,provider:t,platformAssistantId:c,baselineConnectionSignatures:u},y.mutate({path:{assistant_id:c,provider:t},body:{requested_scopes:i,redirect_after_connect:`${be.account.oauth.popupComplete}?requestId=${f}${s?`&native=1`:``}`}},{onSuccess(e){if(s){Se(e.connect_url);return}r&&!r.closed?r.location.href=e.connect_url:l.current&&(g(),h(),G.error(`${n} connection failed: popup closed.`))},onError(e){g(),h();let t=ge(e,void 0,`Failed to start ${n} authorization.`);G.error(t)}})};if(s){p(null);return}let b=window.open(``,`_blank`,`width=500,height=600`);if(b===null){h(),G.error(`Popup blocked. Please enable popups and try again.`);return}c.current=b,u.current=setInterval(()=>{c.current&&c.current.closed&&l.current&&!d.current&&(d.current=setTimeout(async()=>{d.current=null;let e=l.current;if(!e)return;let t=window.localStorage.getItem(Be(e.requestId));if(t){let n=Re(t);if(n&&n.requestId===e.requestId){_(n),window.localStorage.removeItem(Be(e.requestId));return}}let r=await v(e.platformAssistantId,e.baselineConnectionSignatures);if(l.current){if(r){g(),h(),G.success(`${n} account connected.`);return}g(),h(),G.error(`${n} connection failed: authorization popup closed.`)}},1e3))},100),p(b)},oauthInProgress:f,startOAuthPending:y.isPending}}var $=w();function Qe({displayName:e,providerKey:t,logoUrl:n,connections:r,connectionsLoading:i,startPending:o,oauthInProgress:s,disconnectingId:c,onConnect:l,onDisconnect:u,connectPresets:d=[]}){let f=o||s;return i?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,$.jsx)(I,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})}):r.length===0?o||s?(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-10`,children:[(0,$.jsx)(Y,{providerKey:t,displayName:e,logoUrl:n,size:48}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,$.jsx)(I,{className:`h-3.5 w-3.5 animate-spin`}),`Waiting for authorization...`]})]}):(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-10`,children:[(0,$.jsx)(Y,{providerKey:t,displayName:e,logoUrl:n,size:48}),(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`Connect Account to continue`}),(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,$.jsx)(a,{variant:`primary`,size:`compact`,leftIcon:(0,$.jsx)(X,{}),onClick:()=>l(),disabled:f,children:`Connect Account`}),d.map(e=>(0,$.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,$.jsx)(Xe,{}),onClick:()=>l(e.scopes),disabled:f,children:e.label},e.id))]})]}):(0,$.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)]`,children:[(0,$.jsx)(`ul`,{className:`divide-y divide-[var(--border-base)]`,children:r.map(r=>{let i=c===r.id;return(0,$.jsxs)(`li`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,$.jsx)(Y,{providerKey:t,displayName:e,logoUrl:n,size:20}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default text-[var(--content-default)]`,children:r.account_label??`${e} Account`}),(0,$.jsx)(a,{variant:`dangerOutline`,size:`compact`,iconOnly:i?(0,$.jsx)(I,{className:`animate-spin`}):(0,$.jsx)(Z,{}),onClick:()=>u(r),disabled:i,"aria-label":`Disconnect ${r.account_label??`${e} account`}`})]},r.id)})}),(0,$.jsx)(`div`,{className:`border-t border-[var(--border-base)] px-4 py-3 dark:border-[var(--border-base)]`,children:f?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,$.jsx)(I,{className:`h-3.5 w-3.5 animate-spin`}),`Waiting for authorization...`]}):(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,$.jsx)(a,{variant:`primary`,size:`compact`,leftIcon:(0,$.jsx)(N,{}),onClick:()=>l(),disabled:f,children:`Connect account`}),d.map(e=>(0,$.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,$.jsx)(Xe,{}),onClick:()=>l(e.scopes),disabled:f,children:e.label},e.id))]})})]})}function $e(e){return e.length>16?`${e.slice(0,12)}…${e.slice(-4)}`:e.length>8?`${e.slice(0,8)}…`:e}function et(e){try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function tt({assistantId:e,providerKey:t,displayName:n,logoUrl:r}){let i=p(),o=S({...fe({path:{assistant_id:e},query:{provider_key:t}}),select:e=>e.apps}),s=S({...ue({path:{assistant_id:e,providerKey:t}}),select:e=>e.oauth_callback_url}),c=o.data??[],l=s.data??null,u=Je({queries:c.map(t=>({...ce({path:{assistant_id:e,appId:t.id}}),select:e=>e.connections}))}),d={};c.forEach((e,t)=>{d[e.id]=u[t]?.data??[]});let f=me({path:{assistant_id:e},query:{provider_key:t}}),m=le({onSuccess:()=>{i.invalidateQueries({queryKey:f}),x(``),w(``),y(!1),G.success(`${n} OAuth app added.`)},onError:e=>{G.error(e.message||`Failed to create OAuth app`)}}),h=se({onSuccess:()=>{i.invalidateQueries({queryKey:f}),G.success(`OAuth app deleted.`)},onError:e=>{G.error(e.message||`Failed to delete OAuth app`)}}),g=de({onSuccess:e=>{`auth_url`in e&&(window.location.href=e.auth_url)},onError:e=>{G.error(e.message||`Failed to start OAuth flow`)}}),_=he(),[v,y]=(0,Q.useState)(!1),[b,x]=(0,Q.useState)(``),[C,w]=(0,Q.useState)(``),[E,O]=(0,Q.useState)(!1),[k,A]=(0,Q.useState)(null),[j,P]=(0,Q.useState)(null),F=m.isPending,L=h.isPending?h.variables?.path?.id??null:null,R=g.isPending?g.variables?.path?.appId??null:null,z=_.isPending?_.variables?.path?.id??null:null,ee=()=>{let n=b.trim(),r=C.trim();!n||!r||m.mutate({path:{assistant_id:e},body:{provider_key:t,client_id:n,client_secret:r}})},te=()=>{let t=k;A(null),t&&h.mutate({path:{assistant_id:e,id:t.id}})},ne=t=>{g.mutate({path:{assistant_id:e,appId:t.id},body:{callback_transport:`gateway`,scopes:[]}})};return o.isLoading?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,$.jsx)(I,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})}):(0,$.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[c.length===0||v?(0,$.jsx)(T.Root,{children:(0,$.jsxs)(T.Body,{className:`flex flex-col gap-3`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:c.length===0?`Add your own ${n} OAuth app`:`Add another ${n} OAuth app`}),(0,$.jsx)(`p`,{className:`text-body-small-default leading-relaxed text-[var(--content-tertiary)]`,children:`Credentials are stored encrypted on the assistant and are never sent to Vellum.`})]}),l?(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Redirect URL`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(V,{type:`text`,value:l,readOnly:!0,fullWidth:!0}),(0,$.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>{navigator.clipboard.writeText(l).then(()=>{O(!0),G.success(`Copied to clipboard!`),setTimeout(()=>O(!1),2e3)})},"aria-label":E?`Copied`:`Copy redirect URL`,iconOnly:E?(0,$.jsx)(D,{"aria-hidden":!0}):(0,$.jsx)(M,{"aria-hidden":!0})})]}),(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Add this URL to your OAuth app's redirect settings.`})]}):null,(0,$.jsx)(V,{label:`Client ID`,type:`text`,value:b,onChange:e=>x(e.target.value),placeholder:`Enter your client ID`,fullWidth:!0}),(0,$.jsx)(V,{label:`Client Secret`,type:`password`,value:C,onChange:e=>w(e.target.value),placeholder:`Enter your client secret`,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-1`,children:[c.length>0?(0,$.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>{y(!1),x(``),w(``)},disabled:F,children:`Cancel`}):null,(0,$.jsx)(a,{type:`button`,size:`compact`,onClick:ee,disabled:F||!b.trim()||!C.trim(),leftIcon:F?(0,$.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(X,{"aria-hidden":!0}),children:`Add App`})]})]})}):null,c.map(e=>{let i=d[e.id]??[],o=L===e.id,s=R===e.id;return(0,$.jsx)(T.Root,{children:(0,$.jsxs)(T.Body,{className:`flex flex-col gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 space-y-0.5`,children:[(0,$.jsx)(`p`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:$e(e.client_id)}),(0,$.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Added `,et(e.created_at)]})]}),(0,$.jsx)(a,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>A(e),disabled:o,"aria-label":`Delete OAuth app ${$e(e.client_id)}`,iconOnly:o?(0,$.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(Z,{"aria-hidden":!0})})]}),i.length>0?(0,$.jsx)(`ul`,{className:`divide-y divide-[var(--border-base)] overflow-hidden rounded-md border border-[var(--border-base)] dark:divide-[var(--border-base)] dark:border-[var(--border-base)]`,children:i.map(i=>{let o=z===i.id;return(0,$.jsxs)(`li`,{className:`flex items-center gap-3 px-3 py-2`,children:[(0,$.jsx)(Y,{providerKey:t,displayName:n,logoUrl:r,size:18}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-lighter text-[var(--content-default)]`,children:i.account_info??`${n} Account`}),(0,$.jsx)(a,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>P({appId:e.id,connection:i}),disabled:o,"aria-label":`Disconnect ${i.account_info??`${n} account`}`,iconOnly:o?(0,$.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(Z,{"aria-hidden":!0})})]},i.id)})}):null,(0,$.jsx)(a,{type:`button`,size:`compact`,onClick:()=>ne(e),disabled:s,className:`w-full`,leftIcon:s?(0,$.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(N,{"aria-hidden":!0}),children:s?`Waiting for authorization...`:`Connect account`})]})},e.id)}),c.length>0&&!v?(0,$.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>y(!0),className:`w-full border-dashed`,leftIcon:(0,$.jsx)(X,{"aria-hidden":!0}),children:`Add Another App`}):null,(0,$.jsx)(K,{open:k!==null,title:`Delete OAuth app`,message:k?`Delete OAuth app '${$e(k.client_id)}'? This will disconnect all linked accounts.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:te,onCancel:()=>A(null)}),(0,$.jsx)(K,{open:j!==null,title:`Disconnect ${n}?`,message:j?`Disconnect ${j.connection.account_info??`${n} Account`}? You can reconnect later.`:``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{let t=j;P(null),t&&_.mutate({path:{assistant_id:e,id:t.connection.id}},{onSuccess:()=>{let r=pe({path:{assistant_id:e,appId:t.appId}});i.invalidateQueries({queryKey:r}),i.invalidateQueries({queryKey:f}),G.success(`${n} account disconnected.`)},onError:e=>{G.error(e.message||`Failed to disconnect account`)}})},onCancel:()=>P(null)})]})}var nt={};function rt(e){return nt[e]??[]}function it({assistantId:e,platformAssistantId:t,providerKey:n,displayName:r,description:i,logoUrl:o,platformGate:s,onClose:c}){let l=p(),u=s===`full`,d=!je(),[f,m]=(0,Q.useState)(s===`gated`&&d?`your-own`:`managed`);(0,Q.useEffect)(()=>{!d&&f===`your-own`&&m(`managed`)},[d,f]);let[h,g]=(0,Q.useState)(null),[_,v]=(0,Q.useState)(null),y=De({path:{assistant_id:t}}),{data:b,isLoading:x}=S({...J({path:{assistant_id:t}}),enabled:u}),C=(b??[]).filter(e=>e.provider===n&&e.connected),{handleConnect:w,oauthInProgress:T,startOAuthPending:E}=Ze({assistantId:e,providerKey:n,displayName:r,managedAvailable:u,connectionsQueryKey:y,allConnections:b}),D={path:{assistant_id:t}},O=Ee({onSuccess(e,t){G.success(`${r} account disconnected.`);let n=t.path.connection_id;Te(l,D,e=>e?.filter(e=>e.id!==n)),l.invalidateQueries({queryKey:y}),g(null)},onError(e){let t=ge(e,void 0,`Failed to disconnect ${r} account.`);G.error(t),g(null)}});(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&c()};document.addEventListener(`keydown`,e);let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.removeEventListener(`keydown`,e),document.body.style.overflow=t}},[c]);let k=e=>{v(e)},A=()=>{let e=_;v(null),e&&(g(e.id),O.mutate({path:{assistant_id:t,connection_id:e.id}}))},j=i?`Configure ${r} OAuth for ${i}`:`Configure ${r} OAuth`;return(0,$.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4`,children:[(0,$.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`integration-modal-title`,className:`flex w-full max-w-[520px] flex-col overflow-hidden rounded-xl bg-white shadow-xl dark:bg-[var(--surface-lift)]`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-3 border-b border-[var(--border-base)] px-5 py-4 dark:border-[var(--border-base)]`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(Y,{providerKey:n,displayName:r,logoUrl:o,size:32}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`h2`,{id:`integration-modal-title`,className:`text-title-small text-[var(--content-default)]`,children:[r,` OAuth`]}),(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:j})]})]}),(0,$.jsx)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(te,{}),"aria-label":`Close`,onClick:c})]}),(0,$.jsxs)(`div`,{className:`space-y-4 px-5 py-4`,children:[s!==`gated`&&d&&(0,$.jsxs)(`div`,{role:`tablist`,"aria-label":`OAuth mode`,className:`flex w-full rounded-md border border-[var(--border-base)] bg-[var(--surface-base)] p-0.5 dark:border-[var(--border-base)] dark:bg-[var(--surface-base)]/40`,children:[(0,$.jsx)(at,{active:f===`managed`,onClick:()=>m(`managed`),children:`Managed`}),(0,$.jsx)(at,{active:f===`your-own`,onClick:()=>m(`your-own`),children:`Your Own`})]}),f===`managed`&&s!==`gated`?s===`disabled`?(0,$.jsx)(Ne,{children:`Log in to the Vellum platform to manage OAuth connections.`}):(0,$.jsx)(Qe,{displayName:r,providerKey:n,logoUrl:o,connections:C,connectionsLoading:x,startPending:E,oauthInProgress:T,disconnectingId:O.isPending?h:null,onConnect:w,onDisconnect:k,connectPresets:rt(n)}):d?(0,$.jsx)(tt,{assistantId:e,providerKey:n,displayName:r,logoUrl:o}):null]}),(0,$.jsx)(`div`,{className:`flex justify-end border-t border-[var(--border-base)] px-5 py-3 dark:border-[var(--border-base)]`,children:(0,$.jsx)(a,{variant:`outlined`,size:`compact`,onClick:c,children:`Confirm`})})]}),(0,$.jsx)(K,{open:_!==null,title:`Disconnect ${r}?`,message:_?`Disconnect ${_.account_label??`${r} Account`}? You can reconnect later.`:``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:A,onCancel:()=>v(null)})]})}function at({active:e,onClick:t,children:n}){return(0,$.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":e,onClick:t,className:`flex-1 cursor-pointer rounded-[5px] px-3 py-1.5 text-body-medium-default transition-colors ${e?`bg-white text-[var(--content-default)] shadow-sm dark:bg-[var(--surface-lift)] dark:text-[var(--content-default)]`:`text-[var(--content-secondary)] hover:text-[var(--content-default)] dark:text-[var(--content-disabled)] dark:hover:text-[var(--content-default)]`}`,children:n})}function ot({platformAssistantId:e,providerKey:t,displayName:n,description:r,logoUrl:i,connection:o,platformGate:s,onConfigure:c}){let l=p(),u=!!o?.connected,[d,f]=(0,Q.useState)(!1),[m,h]=(0,Q.useState)(!1),g=Ce(),_=De({path:{assistant_id:e}}),v={path:{assistant_id:e}},y=Ee({onSuccess(e,t){G.success(`${n} account disconnected.`);let r=t.path.connection_id;Te(l,v,e=>e?.filter(e=>e.id!==r)),l.invalidateQueries({queryKey:_})},onError(e){let t=ge(e,void 0,`Failed to disconnect ${n} account.`);G.error(t)}}),b=()=>{o?.id&&h(!0)};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(T.Root,{children:(0,$.jsxs)(T.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,$.jsx)(Y,{providerKey:t,displayName:n,logoUrl:i,size:32}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:n}),r&&(0,$.jsx)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:r})]}),u&&s===`full`?(0,$.jsx)(`div`,{className:`shrink-0`,children:(0,$.jsx)(st,{displayName:n,open:d,onOpenChange:f,onEditConnections:()=>{f(!1),c()},onDisable:()=>{f(!1),b()},disablePending:y.isPending,isMobile:g})}):(0,$.jsx)(a,{variant:`primary`,onClick:c,className:`shrink-0`,children:`Enable`})]})}),(0,$.jsx)(K,{open:m,title:`Disconnect ${n}?`,message:`Disconnect your ${n} account? You can reconnect it later.`,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{h(!1),o?.id&&y.mutate({path:{assistant_id:e,connection_id:o.id}})},onCancel:()=>h(!1)})]})}function st({displayName:e,open:t,onOpenChange:n,onEditConnections:r,onDisable:i,disablePending:o,isMobile:s}){return s?(0,$.jsxs)(W.Root,{open:t,onOpenChange:n,children:[(0,$.jsx)(W.Trigger,{asChild:!0,children:(0,$.jsx)(a,{variant:`outlined`,rightIcon:(0,$.jsx)(O,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,$.jsxs)(W.Content,{children:[(0,$.jsx)(W.Header,{children:(0,$.jsx)(W.Title,{children:e})}),(0,$.jsxs)(W.Body,{children:[(0,$.jsx)(ae,{icon:R,label:`Edit connections`,onSelect:r}),(0,$.jsx)(ae,{icon:o?I:Ve,label:`Disable`,onSelect:()=>{o||i()}})]})]})]}):(0,$.jsxs)(B.Root,{open:t,onOpenChange:n,children:[(0,$.jsx)(B.Trigger,{asChild:!0,children:(0,$.jsx)(a,{variant:`outlined`,rightIcon:(0,$.jsx)(O,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,$.jsxs)(B.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,$.jsx)(a,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:r,className:`w-full justify-start rounded-none`,leftIcon:(0,$.jsx)(R,{"aria-hidden":!0}),children:`Edit connections`}),(0,$.jsx)(a,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:i,disabled:o,className:`w-full justify-start rounded-none`,leftIcon:o?(0,$.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(Ve,{"aria-hidden":!0}),children:`Disable`})]})]})}var ct=[{value:`none`,label:`None`},{value:`oauth`,label:`OAuth`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],lt=[{value:`sse`,label:`SSE`},{value:`streamable-http`,label:`Streamable HTTP`},{value:`stdio`,label:`Stdio (command)`}];function ut({open:e,onClose:t,onAdd:n,isPending:r}){let[i,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(`sse`),[l,u]=(0,Q.useState)(``),[d,f]=(0,Q.useState)(``),[p,m]=(0,Q.useState)(``),[h,g]=(0,Q.useState)(`none`),[_,v]=(0,Q.useState)(``),[y,b]=(0,Q.useState)(`X-API-Key`),[x,S]=(0,Q.useState)(``),C=(0,Q.useCallback)(()=>{o(``),c(`sse`),u(``),f(``),m(``),g(`none`),v(``),b(`X-API-Key`),S(``)},[]),w=(0,Q.useCallback)(()=>{r||(C(),t())},[r,C,t]),T=(0,Q.useCallback)(()=>{let e=i.trim();if(!e)return;let t={name:e,transportType:s};if(s===`stdio`){let e=d.trim();if(!e)return;t.command=e;let n=p.trim();n&&(t.args=n.split(/\s+/))}else{let e=l.trim();if(!e)return;t.url=e,h===`bearer`&&_.trim()?t.headers={Authorization:`Bearer ${_.trim()}`}:h===`api-key`&&y.trim()&&x.trim()?t.headers={[y.trim()]:x.trim()}:h===`oauth`&&(t.autoAuth=!0)}n(t)},[i,s,l,d,p,h,_,y,x,n]),E=s===`stdio`,D=i.trim()&&(E?d.trim():l.trim());return(0,$.jsx)(U.Root,{open:e,onOpenChange:e=>{e||w()},children:(0,$.jsxs)(U.Content,{size:`md`,children:[(0,$.jsxs)(U.Header,{children:[(0,$.jsx)(U.Title,{icon:Ye,children:`Add MCP Server`}),(0,$.jsx)(U.Description,{children:`Connect to a Model Context Protocol server to extend available tools.`})]}),(0,$.jsx)(U.Body,{children:(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-name`,children:`Server name`}),(0,$.jsx)(V,{id:`mcp-name`,type:`text`,value:i,onChange:e=>o(e.target.value),placeholder:`my-server`,fullWidth:!0,autoFocus:!0})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-transport`,children:`Transport`}),(0,$.jsx)(`select`,{id:`mcp-transport`,value:s,onChange:e=>c(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:lt.map(e=>(0,$.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),E?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-command`,children:`Command`}),(0,$.jsx)(V,{id:`mcp-command`,type:`text`,value:d,onChange:e=>f(e.target.value),placeholder:`npx -y @modelcontextprotocol/server-example`,fullWidth:!0})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-args`,children:`Arguments (space-separated)`}),(0,$.jsx)(V,{id:`mcp-args`,type:`text`,value:p,onChange:e=>m(e.target.value),placeholder:`--port 3000`,fullWidth:!0})]})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-url`,children:`Server URL`}),(0,$.jsx)(V,{id:`mcp-url`,type:`url`,value:l,onChange:e=>u(e.target.value),placeholder:`https://example.com/mcp`,fullWidth:!0})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-auth`,children:`Authentication`}),(0,$.jsx)(`select`,{id:`mcp-auth`,value:h,onChange:e=>g(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:ct.map(e=>(0,$.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),h===`oauth`?(0,$.jsx)(`p`,{className:`rounded-md border border-[var(--border-element)] bg-[var(--surface-base)] px-3 py-2 text-body-small-default text-[var(--content-tertiary)]`,children:`OAuth credentials will be configured through a browser-based authorization flow after the server is added.`}):null,h===`bearer`?(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-bearer`,children:`Bearer token`}),(0,$.jsx)(V,{id:`mcp-bearer`,type:`password`,value:_,onChange:e=>v(e.target.value),placeholder:`tok_...`,fullWidth:!0})]}):null,h===`api-key`?(0,$.jsxs)(`div`,{className:`flex gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-apikey-header`,children:`Header name`}),(0,$.jsx)(V,{id:`mcp-apikey-header`,type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`X-API-Key`,fullWidth:!0})]}),(0,$.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-apikey-value`,children:`API key`}),(0,$.jsx)(V,{id:`mcp-apikey-value`,type:`password`,value:x,onChange:e=>S(e.target.value),placeholder:`sk_...`,fullWidth:!0})]})]}):null]})]})}),(0,$.jsxs)(U.Footer,{children:[(0,$.jsx)(a,{variant:`ghost`,onClick:w,disabled:r,children:`Cancel`}),(0,$.jsx)(a,{variant:`primary`,onClick:T,disabled:!D||r,children:r?`Adding...`:`Add Server`})]})]})})}async function dt(e){let{data:t,response:n}=await q.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 ft(e){let{data:t,response:n}=await q.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 pt(e,t){let{response:n}=await q.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 mt(e,t){let{response:n}=await q.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 ht(e,t){let{response:n}=await q.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 gt(e,t){let{data:n,response:r}=await q.post({url:`/v1/assistants/{assistant_id}/internal/mcp/auth/start`,path:{assistant_id:e},body:{serverId:t}});if(!r?.ok)throw Error(`Failed to start MCP auth: ${r?.status}`);return n}async function _t(e,t){let{data:n,response:r}=await q.get({url:`/v1/assistants/{assistant_id}/internal/mcp/auth/status/${encodeURIComponent(t)}`,path:{assistant_id:e}});if(!r?.ok)throw Error(`Failed to poll MCP auth status: ${r?.status}`);return n}async function vt(e,t){let{response:n}=await q.post({url:`/v1/assistants/{assistant_id}/internal/mcp/auth/revoke`,path:{assistant_id:e},body:{serverId:t}});if(!n?.ok)throw Error(`Failed to revoke OAuth for ${t}: ${n?.status}`)}async function yt(e){let{response:t}=await q.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 bt={connected:{icon:j,label:`Connected`,className:`text-[var(--system-positive-strong)]`},"needs-auth":{icon:P,label:`Needs Auth`,className:`text-[var(--system-warning-strong)]`},disabled:{icon:Ae,label:`Disabled`,className:`text-[var(--content-tertiary)]`}},xt={icon:A,label:`Error`,className:`text-[var(--system-negative-strong)]`};function St({server:e,toolsSummary:t,onToggleEnabled:n,onRemove:r,onConfigure:i,onAuthenticate:o,onRevokeOAuth:s,isUpdating:c,isAuthenticating:l,isRevoking:u}){let[d,f]=(0,Q.useState)(!1),p=bt[e.status]??xt,m=p.icon,h=(0,Q.useCallback)(t=>n(e.id,t),[n,e.id]),g=(0,Q.useCallback)(()=>r(e.id),[r,e.id]),_=(0,Q.useCallback)(()=>i(e.id),[i,e.id]),v=(0,Q.useCallback)(()=>o(e.id),[o,e.id]),y=(0,Q.useCallback)(()=>s(e.id),[s,e.id]),b=(0,Q.useCallback)(()=>f(e=>!e),[]);return(0,$.jsx)(T.Root,{children:(0,$.jsxs)(T.Body,{children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsx)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e.id}),(0,$.jsxs)(`span`,{className:`flex items-center gap-1 text-label-medium-default ${p.className}`,children:[(0,$.jsx)(m,{className:`h-3.5 w-3.5`}),p.label]}),e.hasOAuth?(0,$.jsx)(`span`,{className:`rounded-full bg-[var(--surface-lift)] px-2 py-0.5 text-label-small-default text-[var(--content-secondary)]`,children:`OAuth`}):null]}),(0,$.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(`span`,{children:e.transport.type}),t?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,$.jsxs)(`span`,{children:[t.toolCount,` `,t.toolCount===1?`tool`:`tools`]}),(0,$.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,$.jsxs)(`span`,{children:[`~`,t.estimatedTokens.toLocaleString(),` tokens`]})]}):null]})]})}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c||l?(0,$.jsx)(I,{className:`h-4 w-4 animate-spin text-[var(--content-tertiary)]`}):null,e.status===`needs-auth`&&e.transport.type!==`stdio`&&!e.hasOAuth?(0,$.jsx)(a,{variant:`ghost`,size:`compact`,leftIcon:(0,$.jsx)(L,{}),onClick:v,disabled:l,children:l?`Authenticating...`:`Authenticate`}):null,e.hasOAuth?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(a,{variant:`ghost`,size:`compact`,leftIcon:(0,$.jsx)(z,{}),onClick:v,disabled:l,tooltip:`Re-authenticate OAuth`,children:`Re-auth`}),(0,$.jsx)(a,{variant:`dangerGhost`,size:`compact`,leftIcon:(0,$.jsx)(F,{}),onClick:y,disabled:u,tooltip:`Revoke OAuth credentials`,children:u?`Revoking...`:`Revoke`})]}):null,(0,$.jsx)(re,{checked:e.enabled,onChange:h,disabled:c,"aria-label":`${e.enabled?`Disable`:`Enable`} ${e.id}`}),(0,$.jsx)(a,{variant:`ghost`,size:`compact`,onClick:_,tooltip:`Configure`,children:`Configure`}),(0,$.jsx)(a,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(Z,{}),onClick:g,tooltip:`Remove server`,"aria-label":`Remove ${e.id}`})]})]}),t&&t.tools.length>0?(0,$.jsxs)(`div`,{className:`mt-3 border-t border-[var(--border-base)] pt-2`,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:b,className:`flex w-full cursor-pointer items-center gap-1 text-body-small-default text-[var(--content-secondary)] hover:text-[var(--content-default)]`,children:[d?(0,$.jsx)(O,{className:`h-3.5 w-3.5`}):(0,$.jsx)(k,{className:`h-3.5 w-3.5`}),t.toolCount,` registered `,t.toolCount===1?`tool`:`tools`]}),d?(0,$.jsx)(`div`,{className:`mt-2 max-h-60 overflow-y-auto`,children:t.tools.map(e=>(0,$.jsx)(ie,{title:e.name,subtitle:e.description||void 0,trailing:(0,$.jsxs)(`span`,{className:`whitespace-nowrap text-body-small-default text-[var(--content-secondary)]`,children:[`~`,e.estimatedTokens.toLocaleString(),` tok`]})},e.name))}):null]}):null]})})}var Ct=[{value:`none`,label:`None`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],wt=[`low`,`medium`,`high`];function Tt({server:e,toolsSummary:t,onClose:n,onSave:r,isPending:i}){let[o,s]=(0,Q.useState)(`medium`),[c,l]=(0,Q.useState)(`none`),[u,d]=(0,Q.useState)(``),[f,p]=(0,Q.useState)(`X-API-Key`),[m,h]=(0,Q.useState)(``);(0,Q.useEffect)(()=>{e&&(s(e.defaultRiskLevel),l(e.authType),d(``),p(e.authHeaderName??`X-API-Key`),h(``))},[e]);let g=(0,Q.useCallback)(()=>{if(!e)return;let t=c!==e.authType,n=c===`bearer`&&u.trim()!==``,i=c===`api-key`&&f.trim()!==``&&m.trim()!==``,a=t||n||i,s;s=a?c===`none`?null:c===`bearer`&&u.trim()?{Authorization:`Bearer ${u.trim()}`}:c===`api-key`&&f.trim()&&m.trim()?{[f.trim()]:m.trim()}:void 0:void 0,r(e.id,{name:e.id,defaultRiskLevel:o,...s===void 0?{}:{headers:s}})},[e,o,c,u,f,m,r]),_=(0,Q.useCallback)(()=>{i||n()},[i,n]);return e?(0,$.jsx)(U.Root,{open:!!e,onOpenChange:e=>{e||_()},children:(0,$.jsxs)(U.Content,{size:`lg`,children:[(0,$.jsxs)(U.Header,{children:[(0,$.jsx)(U.Title,{icon:Ye,children:e.id}),(0,$.jsxs)(U.Description,{children:[e.transport.type,` transport · `,e.status]})]}),(0,$.jsx)(U.Body,{children:(0,$.jsxs)(`div`,{className:`space-y-5`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-risk`,children:`Default risk level`}),(0,$.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:wt.map(e=>(0,$.jsx)(`option`,{value:e,children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]}),e.transport.type===`stdio`?null:(0,$.jsxs)($.Fragment,{children:[e.hasOAuth?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-[var(--border-element)] bg-[var(--surface-base)] px-3 py-2`,children:[(0,$.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Authentication`}),(0,$.jsx)(`span`,{className:`rounded-full bg-[var(--surface-lift)] px-2 py-0.5 text-label-small-default text-[var(--content-default)]`,children:`OAuth`}),(0,$.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`— managed via OAuth flow`})]}):null,e.hasOAuth?null:(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-detail-auth`,children:`Authentication`}),(0,$.jsx)(`select`,{id:`mcp-detail-auth`,value:c,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:Ct.map(e=>(0,$.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),c===`bearer`&&!e.hasOAuth?(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-detail-bearer`,children:`Bearer token`}),(0,$.jsx)(V,{id:`mcp-detail-bearer`,type:`password`,value:u,onChange:e=>d(e.target.value),placeholder:e.hasStaticAuth&&e.authType===`bearer`?`•••••••• (leave blank to keep current)`:`tok_...`,fullWidth:!0})]}):null,c===`api-key`&&!e.hasOAuth?(0,$.jsxs)(`div`,{className:`flex gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-detail-apikey-header`,children:`Header name`}),(0,$.jsx)(V,{id:`mcp-detail-apikey-header`,type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`X-API-Key`,fullWidth:!0})]}),(0,$.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-detail-apikey-value`,children:`API key`}),(0,$.jsx)(V,{id:`mcp-detail-apikey-value`,type:`password`,value:m,onChange:e=>h(e.target.value),placeholder:e.hasStaticAuth&&e.authType===`api-key`?`•••••••• (leave blank to keep current)`:`sk_...`,fullWidth:!0})]})]}):null]}),t&&t.tools.length>0?(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`h3`,{className:`text-body-medium-default text-[var(--content-default)]`,children:[`Registered tools (`,t.toolCount,`)`]}),(0,$.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Total estimated token overhead: ~`,t.estimatedTokens.toLocaleString(),` tokens`]}),(0,$.jsx)(`div`,{className:`max-h-64 overflow-y-auto rounded-lg border border-[var(--border-base)]`,children:(0,$.jsxs)(`table`,{className:`w-full text-body-small-default`,children:[(0,$.jsx)(`thead`,{children:(0,$.jsxs)(`tr`,{className:`border-b border-[var(--border-base)] bg-[var(--surface-base)]`,children:[(0,$.jsx)(`th`,{className:`px-3 py-2 text-left font-medium text-[var(--content-secondary)]`,children:`Tool`}),(0,$.jsx)(`th`,{className:`px-3 py-2 text-left font-medium text-[var(--content-secondary)]`,children:`Description`}),(0,$.jsx)(`th`,{className:`px-3 py-2 text-right font-medium text-[var(--content-secondary)]`,children:`Tokens`})]})}),(0,$.jsx)(`tbody`,{children:t.tools.map(e=>(0,$.jsxs)(`tr`,{className:`border-b border-[var(--border-base)] last:border-b-0`,children:[(0,$.jsx)(`td`,{className:`px-3 py-2 font-medium text-[var(--content-default)]`,children:e.name}),(0,$.jsx)(`td`,{className:`max-w-xs truncate px-3 py-2 text-[var(--content-tertiary)]`,children:e.description||`—`}),(0,$.jsxs)(`td`,{className:`px-3 py-2 text-right text-[var(--content-tertiary)]`,children:[`~`,e.estimatedTokens.toLocaleString()]})]},e.name))})]})})]}):null]})}),(0,$.jsxs)(U.Footer,{children:[(0,$.jsx)(a,{variant:`ghost`,onClick:_,disabled:i,children:`Cancel`}),(0,$.jsx)(a,{variant:`primary`,onClick:g,disabled:i,children:i?`Saving...`:`Save`})]})]})}):null}var Et=`mcp-servers`,Dt=`mcp-tools-summary`,Ot=`Help me set up an MCP server to extend you with external tools.`;function kt(){let e=We(),t=p(),n=o(),r=Oe.use.mcpAddServer(),i=Oe.use.hasHydrated(),[s,c]=(0,Q.useState)(!1),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(null),[m,h]=(0,Q.useState)(new Set),[g,_]=(0,Q.useState)(!1),[v,y]=(0,Q.useState)(!1),[b,x]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(!1),[T,E]=(0,Q.useState)(null),[D,O]=(0,Q.useState)(null),{data:k,isLoading:A,isError:j}=S({queryKey:[Et,e],queryFn:()=>dt(e)}),{data:M}=S({queryKey:[Dt,e],queryFn:()=>ft(e)}),N=(0,Q.useCallback)(()=>{t.invalidateQueries({queryKey:[Et,e]}),t.invalidateQueries({queryKey:[Dt,e]})},[t,e]),P=(0,Q.useMemo)(()=>{let e=new Map;if(M)for(let t of M.servers)e.set(t.serverId,t);return e},[M]),F=(0,Q.useMemo)(()=>!l||!k?null:k.servers.find(e=>e.id===l)??null,[l,k]),L=(0,Q.useCallback)(async(t,n)=>{h(e=>new Set(e).add(t));try{await pt(e,{name:t,enabled:n}),N()}catch{G.error(`Failed to ${n?`enable`:`disable`} ${t}`)}finally{h(e=>{let n=new Set(e);return n.delete(t),n})}},[e,N]),R=(0,Q.useCallback)(async()=>{if(d){y(!0);try{await ht(e,d),N(),G.success(`Removed ${d}`),f(null)}catch{G.error(`Failed to remove ${d}`)}finally{y(!1)}}},[d,e,N]),ee=(0,Q.useCallback)(async t=>{E(t);let n;try{n=await gt(e,t)}catch{G.error(`Failed to start authentication for ${t}`),E(null);return}try{if(n.already_authenticated){G.success(`${t} is already authenticated`),N();return}window.open(n.auth_url,`_blank`,`noopener,noreferrer`);for(let n=0;n<60;n++){await new Promise(e=>setTimeout(e,3e3));let n=await _t(e,t);if(n.status===`complete`){G.success(`${t} authenticated successfully`),N();return}if(n.status===`error`){G.error(n.error??`Authentication failed for ${t}`);return}}G.error(`Authentication timed out for ${t}`)}catch{G.error(`Authentication polling failed for ${t}`)}finally{E(null),N()}},[e,N]),te=(0,Q.useCallback)(async t=>{O(t);try{await vt(e,t),N(),G.success(`OAuth credentials revoked for ${t}`)}catch{G.error(`Failed to revoke OAuth for ${t}`)}finally{O(null)}},[e,N]),ne=(0,Q.useCallback)(async t=>{let n=t.autoAuth?window.open(`about:blank`,`_blank`,`noopener`):null;_(!0);try{await mt(e,t),N(),G.success(`Added ${t.name}`),c(!1)}catch{G.error(`Failed to add ${t.name}`),n?.close(),_(!1);return}if(_(!1),t.autoAuth){E(t.name);try{let r=await gt(e,t.name);if(r.already_authenticated){n?.close(),G.success(`${t.name} is already authenticated`),N();return}n?n.location.href=r.auth_url:window.open(r.auth_url,`_blank`,`noopener,noreferrer`);for(let n=0;n<60;n++){await new Promise(e=>setTimeout(e,3e3));let n=await _t(e,t.name);if(n.status===`complete`){G.success(`${t.name} authenticated successfully`),N();return}if(n.status===`error`){G.error(n.error??`Authentication failed for ${t.name}`);return}}G.error(`Authentication timed out for ${t.name}`)}catch{n?.close(),G.error(`Failed to start authentication for ${t.name}`)}finally{E(null),N()}}},[e,N]),B=(0,Q.useCallback)(async(t,n)=>{x(!0);try{await pt(e,n),N(),G.success(`Updated ${t}`),u(null)}catch{G.error(`Failed to update ${t}`)}finally{x(!1)}},[e,N]),V=(0,Q.useCallback)(async()=>{w(!0);try{await yt(e),N(),G.success(`MCP servers reloaded`)}catch{G.error(`Failed to reload MCP servers`)}finally{w(!1)}},[e,N]),re=(0,Q.useCallback)(()=>{r?c(!0):He(n,{prompt:Ot})},[r,n]),H=k?.servers??[];return(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h2`,{className:`text-title-small text-[var(--content-default)]`,children:`MCP Servers`}),(0,$.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,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(z,{className:C?`animate-spin`:``}),onClick:V,disabled:C,tooltip:`Reload all servers`,"aria-label":`Reload MCP servers`}),r?(0,$.jsx)(a,{variant:`primary`,size:`compact`,leftIcon:(0,$.jsx)(X,{}),onClick:()=>c(!0),children:`Add Server`}):null]})]}),M?(0,$.jsxs)(`div`,{className:`flex gap-4 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsxs)(`span`,{children:[M.totalToolCount,` total `,M.totalToolCount===1?`tool`:`tools`]}),(0,$.jsxs)(`span`,{children:[`~`,M.totalEstimatedTokens.toLocaleString(),` total tokens`]})]}):null,A?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,$.jsx)(I,{className:`h-4 w-4 animate-spin`}),(0,$.jsx)(`span`,{children:`Loading MCP servers...`})]}):j?(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Failed to load MCP servers. Check that an assistant is running.`}):H.length===0?(0,$.jsxs)(`button`,{type:`button`,onClick:re,disabled:!i,className:`flex w-full flex-col items-center gap-2 rounded-lg border border-dashed border-[var(--border-element)] px-4 py-12 text-center transition-colors hover:border-[var(--border-active)] hover:bg-[var(--surface-hover)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:pointer-events-none`,children:[(0,$.jsx)(Ye,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`No MCP Servers`}),(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:r?`Add an MCP server to extend your assistant with external tools.`:`Chat with your assistant to set up an MCP server.`})]}):(0,$.jsx)(`div`,{className:`space-y-2`,children:H.map(e=>(0,$.jsx)(St,{server:e,toolsSummary:P.get(e.id),onToggleEnabled:L,onRemove:f,onConfigure:u,onAuthenticate:ee,onRevokeOAuth:te,isUpdating:m.has(e.id),isAuthenticating:T===e.id,isRevoking:D===e.id},e.id))}),r?(0,$.jsx)(ut,{open:s,onClose:()=>c(!1),onAdd:ne,isPending:g}):null,(0,$.jsx)(Tt,{server:F,toolsSummary:l?P.get(l):void 0,onClose:()=>u(null),onSave:B,isPending:b}),(0,$.jsx)(K,{open:!!d,title:`Remove MCP Server`,message:`Are you sure you want to remove "${d}"? This will disconnect all tools provided by this server.`,confirmLabel:`Remove`,destructive:!0,isPending:v,onConfirm:R,onCancel:()=>f(null)})]})}function At(){return(0,$.jsx)(kt,{})}function jt(e,t){let[n,r]=(0,Q.useState)({platformAssistantId:null,isLoading:!1,error:null});return(0,Q.useEffect)(()=>{if(!t||!e){r({platformAssistantId:null,isLoading:!1,error:null});return}let n=!0;return r({platformAssistantId:null,isLoading:!0,error:null}),_e(e).then(e=>{n&&r({platformAssistantId:e,isLoading:!1,error:null})}).catch(e=>{n&&r({platformAssistantId:null,isLoading:!1,error:e instanceof Error?e:Error(String(e))})}),()=>{n=!1}},[e,t]),n}var Mt=`vellum:integrations:bannerDismissed`,Nt=[{value:`all`,label:`All`},{value:`enabled`,label:`Enabled`},{value:`not-enabled`,label:`Not Enabled`}];function Pt(e,t){return e?.find(e=>e.provider===t)??null}function Ft(e){return e===`mcp`?`mcp`:`oauth`}function It(){let[e]=s(),i=o(),a=Ue(),[c,l]=(0,Q.useState)(null),[u,d]=(0,Q.useState)(!0),[f,p]=(0,Q.useState)(``),[m,h]=(0,Q.useState)(`all`),[g,_]=(0,Q.useState)(!1),[v,y]=(0,Q.useState)(!0),[b,x]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{y(t(Mt,`false`)===`true`)},[]);let C=()=>{y(!0),n(Mt,`true`)};(0,Q.useEffect)(()=>{let e=!0;return(async()=>{try{let t=await ve();e&&t.ok&&l(t.data)}catch(e){r(e,{context:`integrations.getAssistant`})}finally{e&&d(!1)}})(),()=>{e=!1}},[]);let{platformAssistantId:w,isLoading:T}=jt(c?.id,a===`full`),{data:E,isLoading:D,isError:k}=S({...oe({path:{assistant_id:c?.id??``}}),select:e=>e.providers,enabled:!!c}),{data:A,isLoading:j}=S({...J({path:{assistant_id:w??``}}),enabled:!!w&&a===`full`});(0,Q.useEffect)(()=>{let t=e.get(`oauth_status`);if(!t)return;let n=e.get(`oauth_provider`),r=n?n.charAt(0).toUpperCase()+n.slice(1):null;if(t===`connected`)G.success(r?`${r} account connected successfully.`:`Account connected successfully.`);else if(t===`error`){let t=e.get(`oauth_code`)??`unknown`;G.error({denied:`Authorization was denied. Please try again.`,state_invalid:`Authorization state was invalid. Please try again.`,state_expired:`Authorization expired. Please try again.`,exchange_failed:`Failed to complete authorization. Please try again.`,identity_failed:`Failed to verify account identity. Please try again.`}[t]??(r?`Failed to connect ${r}.`:`Failed to connect. Please try again.`))}i(be.settings.integrations,{replace:!0})},[e,i]);let M=(0,Q.useMemo)(()=>E?.filter(e=>e.supports_managed_mode)??[],[E]),N=(0,Q.useMemo)(()=>{let e=f.trim().toLowerCase(),t=M.filter(t=>{if(t.provider_key===`slack`)return!1;if(!e)return!0;let n=(t.display_name??t.provider_key).toLowerCase(),r=(t.description??``).toLowerCase();return n.includes(e)||r.includes(e)});return m!==`all`&&(t=t.filter(e=>{let t=!!Pt(A,e.provider_key)?.connected;return m===`enabled`?t:!t})),[...t].sort((e,t)=>{let n=!!Pt(A,e.provider_key)?.connected;if(n!==!!Pt(A,t.provider_key)?.connected)return n?-1:1;let r=(e.display_name??e.provider_key).toLowerCase(),i=(t.display_name??t.provider_key).toLowerCase();return r.localeCompare(i)})},[M,A,f,m]),P=u||D||j||T,F=Nt.find(e=>e.value===m)?.label??`All`,L=(()=>{if(f.trim())return`No integrations matched`;switch(m){case`enabled`:return`No Enabled Integrations`;case`not-enabled`:return`All Integrations Are Enabled`;default:return`No Integrations Available`}})(),R=(()=>{if(f.trim())return`No integrations matched "${f.trim()}"`;switch(m){case`enabled`:return`Connect an integration to get started.`;case`not-enabled`:return`All available integrations have been connected.`;default:return`Check your connection and try again.`}})(),z=(0,Q.useMemo)(()=>b?M.find(e=>e.provider_key===b)??null:null,[M,b]);return(0,$.jsxs)(`div`,{className:`space-y-4`,children:[!v&&(0,$.jsxs)(ne,{tone:`info`,icon:(0,$.jsx)(ee,{className:`h-3.5 w-3.5`}),onDismiss:C,children:[(0,$.jsx)(`span`,{className:`text-body-medium-default`,children:`Tip:`}),` You can enable integrations by mentioning them in chat.`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(V,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`Search Integrations`,"aria-label":`Search integrations`,leftIcon:(0,$.jsx)(Pe,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,wrapperClassName:`flex-1`}),(0,$.jsxs)(B.Root,{open:g,onOpenChange:_,children:[(0,$.jsx)(B.Trigger,{asChild:!0,children:(0,$.jsxs)(`button`,{type:`button`,"aria-haspopup":`listbox`,"aria-expanded":g,className:`flex w-36 cursor-pointer items-center justify-between gap-2 rounded-md border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-1.5 text-body-medium-lighter text-[var(--content-default)] transition-colors hover:bg-[var(--ghost-hover)]`,children:[(0,$.jsx)(`span`,{children:F}),(0,$.jsx)(O,{className:`h-3.5 w-3.5`})]})}),(0,$.jsx)(B.Content,{align:`end`,sideOffset:4,className:`w-36 overflow-hidden p-0`,children:(0,$.jsx)(`div`,{role:`listbox`,children:Nt.map(e=>{let t=e.value===m;return(0,$.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":t,onClick:()=>{h(e.value),_(!1)},className:`flex w-full cursor-pointer items-center px-3 py-1.5 text-left hover:bg-[var(--ghost-hover)] ${t?`text-body-medium-default text-[var(--content-default)]`:`text-body-medium-lighter text-[var(--content-default)]`}`,children:e.label},e.value)})})})]})]}),(0,$.jsx)(`div`,{children:P?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,$.jsx)(I,{className:`h-4 w-4 animate-spin`}),(0,$.jsx)(`span`,{children:`Loading...`})]}):k?(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Failed to load integrations. Please try again.`}):c?N.length===0?(0,$.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,$.jsx)(Pe,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:L}),(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:R})]}):(0,$.jsx)(`div`,{className:`space-y-2`,children:N.map(e=>(0,$.jsx)(ot,{platformAssistantId:w??c.id,providerKey:e.provider_key,displayName:e.display_name??e.provider_key,description:e.description,logoUrl:e.logo_url,connection:Pt(A,e.provider_key),platformGate:a,onConfigure:()=>x(e.provider_key)},e.provider_key))}):(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No assistant found. Hatch an assistant to connect integrations.`})}),z&&c&&(0,$.jsx)(it,{assistantId:c.id,platformAssistantId:w??c.id,providerKey:z.provider_key,displayName:z.display_name??z.provider_key,description:z.description,logoUrl:z.logo_url,platformGate:a,onClose:()=>x(null)})]})}function Lt(){let[e,t]=s(),n=Ft(e.get(`tab`));return(0,$.jsx)(`div`,{className:`space-y-6`,children:(0,$.jsxs)(H.Root,{value:n,onValueChange:n=>{let r=Ft(n),i=new URLSearchParams(e);r===`mcp`?i.set(`tab`,`mcp`):i.delete(`tab`),t(i,{replace:!0})},children:[(0,$.jsxs)(H.List,{children:[(0,$.jsx)(H.Trigger,{value:`oauth`,children:`OAuth`}),(0,$.jsx)(H.Trigger,{value:`mcp`,children:`MCP`})]}),(0,$.jsx)(H.Panel,{value:`oauth`,className:`pt-4`,children:(0,$.jsx)(Q.Suspense,{children:(0,$.jsx)(It,{})})}),(0,$.jsx)(H.Panel,{value:`mcp`,className:`pt-4`,children:(0,$.jsx)(At,{})})]})})}export{Lt as IntegrationsPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{i as n,n as r,u as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./cn-C36Yvcac.js";import{t as s}from"./typography-D5f7kt80.js";import"./src-4xooMXeT.js";import{o as c}from"./routes-iUGoIqW2.js";import{n as l}from"./use-is-mobile-DJUk0lC8.js";import{t as u}from"./assistant-identity-store-Cp3CD7d1.js";import{t as d}from"./assistant-feature-flag-store-BRGydSRn.js";import{kn as f}from"./index-CoobbyzR.js";import{t as p}from"./page-shell-CejvYP6I.js";import{t as m}from"./plugins-surface-DYk9FmM2.js";var h=e(t(),1),g=a(),_=[{label:`Identity`,to:c.identity},{label:`Skills`,to:c.skills},{label:`Workspace`,to:c.workspace},{label:`Contacts`,to:c.contacts.root}],v={label:`Plugins`,to:c.plugins},y={label:`Channels`,to:c.channels};function b(){let e=u.use.name(),t=m(),a=d.use.channelTrustFloors(),{pathname:c}=i(),b=l(),x=f.use.setTopBarCenter(),S=t?[_[0],v,..._.slice(1)]:_,C=a?[...S,y]:S;return(0,h.useEffect)(()=>(x(b?(0,g.jsxs)(s,{variant:`body-medium-default`,className:`truncate text-[var(--content-secondary)]`,children:[`About `,e||`Assistant`]}):null),()=>{x(null)}),[b,e,x]),(0,g.jsxs)(p,{children:[(0,g.jsxs)(`h1`,{className:`mb-4 shrink-0 text-title-large text-[var(--content-default)] max-md:hidden`,children:[`About `,e||`Assistant`]}),(0,g.jsx)(`nav`,{className:`mb-4 flex shrink-0 items-center overflow-x-auto border-b border-[var(--border-base)]`,style:{scrollbarWidth:`none`,WebkitOverflowScrolling:`touch`},"aria-label":`About assistant sections`,children:C.map(({label:e,to:t})=>{let n=c===t||c.startsWith(t+`/`);return(0,g.jsx)(r,{to:t,className:o(`relative -mb-px inline-flex cursor-pointer items-center gap-1.5 border-b-2 border-transparent bg-transparent px-2.5 py-[7px]`,`text-body-medium-default whitespace-nowrap`,`text-[var(--content-secondary)] transition-colors`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-0`,`hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,n&&`border-[var(--border-active)] text-[var(--primary-active)]`,n&&`hover:bg-transparent`),children:e},t)})}),(0,g.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:(0,g.jsx)(n,{})})]})}export{b as IntelligenceLayout};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{d as n,p as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{t as a}from"./loader-circle-D1pLQlMh.js";import"./src-4xooMXeT.js";import{n as o}from"./toast-DowcpN7g.js";import{n as s}from"./sdk.gen-Bz2u5Wv3.js";import{o as c}from"./routes-iUGoIqW2.js";import{a as l}from"./viewer-store-C8L5A-BB.js";import{Gt as u,Kt as d,jt as f,r as p,yn as m}from"./index-CoobbyzR.js";import{t as h}from"./use-active-assistant-id-BBHOMQFe.js";import{t as g}from"./deploy-dialogs-C5LDby59.js";var _=e(t(),1),v=i();function y(){let{appId:e}=r(),t=h(),i=n(),y=u.use.isDeploying(),[b,x]=(0,_.useState)(null),[S,C]=(0,_.useState)(null),[w,T]=(0,_.useState)(!1),E=(0,_.useRef)(null);(0,_.useEffect)(()=>{if(e)return E.current=e,x(null),C(null),s({path:{assistant_id:t,id:e},throwOnError:!0}).then(({data:n})=>{E.current===e&&(l(t,n.appId,n.html),x({appId:n.appId,dirName:n.dirName,name:n.name,html:n.html}))}).catch(t=>{E.current===e&&C(t instanceof Error?t.message:`Failed to open app`)}),()=>{E.current=null}},[t,e]);let D=(0,_.useCallback)(()=>{i(c.library.root)},[i]),O=p(),k=(0,_.useCallback)(()=>{b&&O(b)},[b,O]),A=(0,_.useCallback)(async()=>{if(!(!b||w)){T(!0);try{await d(t,b.appId,b.name),o.success(`App exported`,{description:`${b.name}.vellum`})}catch(e){o.error(`Failed to share app`,{description:e instanceof Error?e.message:void 0})}finally{T(!1)}}},[t,b,w]),j=(0,_.useCallback)(()=>{b&&u.getState().deployApp(t,b.appId,b.name,b.html)},[t,b]),M=(0,_.useCallback)(e=>{m(i,{prompt:e})},[i]);return e?S?(0,v.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4`,children:[(0,v.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:S}),(0,v.jsx)(`button`,{type:`button`,onClick:D,className:`text-body-medium-default text-[var(--primary-base)] underline`,children:`Back to Library`})]}):b?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(f,{appId:b.appId,appName:b.name,html:b.html,assistantId:t,onClose:D,onEdit:k,onShare:A,isSharing:w,onDeploy:j,isDeploying:y,enableFullscreen:!0}),(0,v.jsx)(g,{assistantId:t,onStartConversation:M})]}):(0,v.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,v.jsx)(a,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}):null}export{y as LibraryDetailPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D1p5nVKJ.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"./arrow-up-BxoccrRI.js";import{t as c}from"./menu-Bjq0lFxx.js";import{t as l}from"./file-text-Cw--uc4C.js";import{t as u}from"./globe-DgulNfxa.js";import"./src-4xooMXeT.js";import{t as d}from"./input-DR1eB4a1.js";import{n as f,t as p}from"./panel-item-vXPWJAXs.js";import{n as m}from"./toast-DowcpN7g.js";import{t as h}from"./confirm-dialog-DW84Cxfq.js";import{s as g,t as _}from"./sdk.gen-Bz2u5Wv3.js";import{C as v,n as y,t as b}from"./react-query.gen-D8YgmevH.js";import{o as x}from"./routes-iUGoIqW2.js";import{n as S}from"./use-is-mobile-DJUk0lC8.js";import{i as C,r as w}from"./viewer-store-C8L5A-BB.js";import{t as T}from"./misc-CfQwP_zq.js";import{$ as E,Gt as D,Ji as O,Kt as k,Ni as A,Pi as j,Ti as M,fn as N,mi as P,pi as F,sa as I,yn as L}from"./index-CoobbyzR.js";import{t as R}from"./use-active-assistant-id-BBHOMQFe.js";import{t as z}from"./deploy-dialogs-C5LDby59.js";import{t as B}from"./page-shell-CejvYP6I.js";import{t as V}from"./format-date-CLlHK5gl.js";var H=e(t(),1),U=o();function W({app:e,isDeleting:t,onConfirm:n,onCancel:r}){return(0,U.jsx)(h,{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:T(`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)(l,{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)(O,{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)(F,{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)(()=>C(t,e.id),[t,e.id]),f=(0,H.useCallback)(async()=>{if(!l){u(!0);try{await k(t,e.id,e.name),m.success(`App exported`,{description:`${e.name}.vellum`})}catch(e){m.error(`Failed to share app`,{description:e instanceof Error?e.message:void 0})}finally{u(!1)}}},[t,e.id,e.name,l]),[p,h]=(0,H.useState)(!1),g=S();return(0,U.jsxs)(`div`,{className:T(`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:T(`relative w-full cursor-pointer overflow-hidden rounded-xl`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`),children:(0,U.jsx)(E,{name:e.name,icon:e.icon,loadHtml:d})}),(0,U.jsx)(`div`,{className:T(`absolute right-2 top-2 z-20 transition-opacity`,`max-md:opacity-100`,`md:group-hover:opacity-100 md:group-focus-within:opacity-100`,p?`opacity-100`:`md:opacity-0`),children:(0,U.jsx)(Y,{appName:e.name,isPinned:n,open:p,onOpenChange:h,onPin:()=>i(e),onDelete:a?()=>a(e):void 0,onShare:f,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:l,onDeploy:d,isMobile:m}){return m?(0,U.jsxs)(f.Root,{open:r,onOpenChange:i,children:[(0,U.jsx)(f.Trigger,{asChild:!0,children:(0,U.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,U.jsx)(I,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,U.jsxs)(f.Content,{children:[(0,U.jsx)(f.Header,{className:`sr-only`,children:(0,U.jsx)(f.Title,{children:e})}),(0,U.jsxs)(f.Body,{className:`pt-0`,children:[(0,U.jsx)(p,{icon:t?j:A,label:t?`Unpin`:`Pin`,onSelect:()=>{i(!1),a()}}),l?(0,U.jsx)(p,{icon:s,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),l()}}):null,d?(0,U.jsx)(p,{icon:u,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),d()}}):null,o?(0,U.jsx)(p,{icon:P,label:`Delete`,onSelect:()=>{i(!1),o()}}):null]})]})]}):(0,U.jsxs)(c.Root,{open:r,onOpenChange:i,children:[(0,U.jsx)(c.Trigger,{asChild:!0,children:(0,U.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,U.jsx)(I,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,U.jsxs)(c.Content,{align:`end`,sideOffset:4,children:[(0,U.jsx)(c.Item,{leftIcon:t?(0,U.jsx)(j,{size:14}):(0,U.jsx)(A,{size:14}),onSelect:()=>a(),className:`whitespace-nowrap`,children:t?`Unpin`:`Pin`}),l?(0,U.jsx)(c.Item,{leftIcon:(0,U.jsx)(s,{size:14}),onSelect:()=>l(),className:`whitespace-nowrap`,children:`Share`}):null,d?(0,U.jsx)(c.Item,{leftIcon:(0,U.jsx)(u,{size:14}),onSelect:()=>d(),className:`whitespace-nowrap`,children:`Deploy to Vercel`}):null,o?(0,U.jsx)(c.Item,{leftIcon:(0,U.jsx)(P,{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=N.use.pinnedAppIds(),{data:n=[],isLoading:r,error:i}=a({...b({path:{assistant_id:e}}),select:e=>e.apps}),{data:o=[],isLoading:s,error:c}=a({...v({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 g({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(),l=N.use.togglePin(),u=N.use.pinnedAppIds(),f=D.use.isDeploying(),{apps:p,documents:h,filteredApps:g,pinnedApps:v,recentApps:b,filteredDocuments:x,searchText:S,setSearchText:T,loading:E,error:O}=Q(e),[k,A]=(0,H.useState)(null),[j,P]=(0,H.useState)(!1),I=(0,H.useCallback)(async()=>{let t=k;if(!(!t||j)){P(!0);try{await _({path:{assistant_id:e,id:t.id},throwOnError:!0}),w(e,t.id),c.invalidateQueries({queryKey:y({path:{assistant_id:e}})}),u.has(t.id)&&l(t),A(null)}catch(e){m.error(e instanceof Error?e.message:`Failed to delete app`)}finally{P(!1)}}},[k,j,e,u,l,c]),L=(0,H.useCallback)(()=>{j||A(null)},[j]),R=(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:y({path:{assistant_id:e}})}),m.success(t.name+` imported`),s(t.appId)}catch(e){m.error(e instanceof Error?e.message:`Failed to import app`)}finally{V(!1),R.current&&(R.current.value=``)}}},[e,B,c,s]),J=(0,H.useCallback)(async t=>{if(f)return;let n=p.find(e=>e.id===t)?.name??`this app`;try{let r=await C(e,t);D.getState().deployApp(e,t,n,r)}catch{D.getState().deployApp(e,t,n,``)}},[e,f,p]),Y=(0,H.useCallback)(e=>l(e),[l]);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`})}):O?(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:O}),(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`})]}):p.length===0&&h.length===0?(0,U.jsx)(q,{fileInputRef:R,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:R,type:`file`,accept:`.vellum`,className:`hidden`,onChange:G}),(0,U.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>R.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)(F,{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)(d,{fullWidth:!0,type:`text`,placeholder:`Search your library`,value:S,onChange:e=>T(e.target.value),leftIcon:(0,U.jsx)(M,{size:16})})}),(0,U.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:g.length===0&&x.length===0?(0,U.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16`,children:[(0,U.jsx)(M,{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 “`,S,`”`]})]}):(0,U.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,U.jsx)(X,{title:`Pinned`,apps:v,assistantId:e,pinnedAppIds:u,onOpen:s,onPin:Y,onDelete:A,onDeploy:J}),(0,U.jsx)(X,{title:`Recents`,apps:b,assistantId:e,pinnedAppIds:u,onOpen:s,onPin:Y,onDelete:A,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)(z,{assistantId:e,assistantName:t,onStartConversation:a}),(0,U.jsx)(W,{app:k,isDeleting:j,onConfirm:I,onCancel:L})]})}function te(){let e=R(),t=r();return(0,U.jsx)(B,{children:(0,U.jsx)(ee,{assistantId:e,title:`Library`,onNewConversation:(0,H.useCallback)(e=>{L(t,{prompt:e})},[t]),onOpenDocument:(0,H.useCallback)(e=>{t(x.document(e))},[t]),onOpenApp:(0,H.useCallback)(e=>{t(x.library.app(e))},[t])})})}export{te as LibraryPage};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-IRfcSUxS.js";var t=e(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]);export{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-D1p5nVKJ.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-C36Yvcac.js";import"./src-4xooMXeT.js";import{f as s,m as c,p as l}from"./native-biometric-uwPAd9lh.js";import{o as u}from"./routes-iUGoIqW2.js";import{n as d,r as f}from"./login-flow-CFhW2AHB.js";import{t as p}from"./public-asset-BpAVsx77.js";var m=e(t(),1),h=a();function g({children:e}){return(0,h.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,h.jsx)(`img`,{src:p(`/vellum-logo.svg`),alt:`Vellum`,width:220,height:66,className:`block dark:hidden`}),(0,h.jsx)(`img`,{src:p(`/vellum-logo-white.svg`),alt:`Vellum`,width:220,height:66,className:`hidden dark:block`}),e,(0,h.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,h.jsx)(`img`,{src:p(`/login-background-characters.svg`),alt:``,width:880,height:182,className:`h-auto w-full`})})]})}function _(){return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{className:`pointer-events-none absolute top-[120px] left-1/2 z-0 -translate-x-1/2`,children:(0,h.jsx)(`img`,{src:p(`/vellum-logo-white.svg`),alt:`Vellum`,width:92,height:28})}),(0,h.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,h.jsx)(`img`,{src:p(`/login-background-characters.svg`),alt:``,width:880,height:182,className:`h-auto w-full`})})]})}var v=`flex w-full max-w-[448px] flex-col gap-6 rounded-lg border border-[var(--border-disabled)] bg-[var(--surface-lift)] p-6`;function y({children:e}){return(0,h.jsx)(`div`,{className:v,children:e})}function b({children:e}){return(0,h.jsx)(`h1`,{className:`text-title-large text-center text-[var(--content-emphasised)]`,children:e})}function x({children:e,className:t}){return(0,h.jsx)(`p`,{className:o(`text-body-small-default text-center text-[var(--system-negative-strong)]`,t),children:e})}function S({children:e}){return(0,h.jsx)(`div`,{className:`dark`,children:(0,h.jsxs)(`div`,{className:`relative min-h-screen overflow-x-hidden bg-[var(--surface-base)] text-[var(--content-default)]`,children:[(0,h.jsx)(_,{}),(0,h.jsx)(`div`,{className:`relative z-10 flex min-h-screen flex-col items-center justify-center px-4`,children:e})]})})}var C={signup_closed:`Sign-ups are currently closed. Visit vellum.ai/community to request access.`};function w({returnTo:e}){let[t,r]=(0,m.useState)(null),[i,a]=(0,m.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&&C[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,h.jsx)(g,{children:(0,h.jsxs)(`div`,{className:`z-10 mt-8 flex w-full max-w-[320px] flex-col items-center gap-3`,children:[t&&(0,h.jsx)(x,{className:`max-w-[280px]`,children:t}),(0,h.jsx)(n,{type:`button`,variant:`primary`,fullWidth:!0,onClick:()=>{o()},disabled:i,className:`max-w-[300px]`,children:`Sign in`})]})})}function T({returnTo:e}){let[t,r]=(0,m.useState)(null),[a,o]=(0,m.useState)(!1),c=f(e),l=e?`${u.account.signup}?returnTo=${encodeURIComponent(e)}`:u.account.signup,p=async()=>{r(null),o(!0);try{await s(d,c,{returnTo:e})}catch(e){console.error(`[web-login] auth flow failed:`,e),r(`Something went wrong. Please try again.`),o(!1)}};return(0,h.jsx)(S,{children:(0,h.jsxs)(y,{children:[(0,h.jsx)(b,{children:`Sign in to Vellum`}),t&&(0,h.jsx)(x,{children:t}),(0,h.jsx)(`div`,{className:`flex flex-col items-center gap-3`,children:(0,h.jsx)(n,{type:`button`,variant:`primary`,fullWidth:!0,onClick:()=>void p(),disabled:a,className:`max-w-[300px]`,children:`Continue`})}),(0,h.jsxs)(`p`,{className:`text-body-small-default flex justify-center gap-1`,children:[(0,h.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Don't have an account?`}),(0,h.jsx)(i,{to:l,className:`font-medium text-[var(--content-emphasised)] hover:underline`,children:`Sign up`})]})]})})}function E(){let[e]=r(),t=c(),n=e.get(`returnTo`);return t?(0,h.jsx)(w,{returnTo:n}):(0,h.jsx)(T,{returnTo:n})}export{E as LoginPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{h as n}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{n as i}from"./auth-store-CI4EhvE5.js";import{t as a}from"./return-to-BbdJZupb.js";import{o}from"./routes-iUGoIqW2.js";import{pr as s}from"./index-CoobbyzR.js";import{r as c,t as l}from"./account-shell-BSwEFNTM.js";var u=e(t(),1),d=r();function f(){let[e]=n(),t=i.use.logout(),r=(0,u.useRef)(!1);return(0,u.useEffect)(()=>{if(r.current)return;r.current=!0;let n=a(e.get(`returnTo`),o.account.login),i=n.startsWith(`http`)||n===o.account.login?n:`${o.account.login}?returnTo=${encodeURIComponent(n)}`,c=!1;return t().then(()=>{c||s(i)},()=>{c||s(i)}),()=>{c=!0}},[t,e]),(0,d.jsx)(l,{children:(0,d.jsx)(c,{title:`Signing out...`})})}export{f as LogoutPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{i as n,u as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{t as a}from"./createLucideIcon-IRfcSUxS.js";import{o}from"./routes-iUGoIqW2.js";import{Ui as s,wa as c,zr as l}from"./index-CoobbyzR.js";import{n as u,t as d}from"./sidebar-tree-CMREzbfC.js";var f=a(`monitor-cog`,[[`path`,{d:`M12 17v4`,key:`1riwvh`}],[`path`,{d:`m14.305 7.53.923-.382`,key:`1mlnsw`}],[`path`,{d:`m15.228 4.852-.923-.383`,key:`82mpwg`}],[`path`,{d:`m16.852 3.228-.383-.924`,key:`ln4sir`}],[`path`,{d:`m16.852 8.772-.383.923`,key:`1dejw0`}],[`path`,{d:`m19.148 3.228.383-.924`,key:`192kgf`}],[`path`,{d:`m19.53 9.696-.382-.924`,key:`fiavlr`}],[`path`,{d:`m20.772 4.852.924-.383`,key:`1j8mgp`}],[`path`,{d:`m20.772 7.148.924.383`,key:`zix9be`}],[`path`,{d:`M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7`,key:`1tnzv8`}],[`path`,{d:`M8 21h8`,key:`1ev6f3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}]]),p=e(t(),1),m=[{id:`usage`,label:`Usage`,href:o.logs.usage,icon:c},{id:`emails`,label:`Emails`,href:o.logs.emails,icon:s},{id:`system-events`,label:`System Events`,href:o.logs.systemEvents,icon:f}],h=i();function g(){let e=l({platformHostedOnly:!0}),t=l(),{pathname:i}=r(),a=(0,p.useMemo)(()=>m.filter(n=>!(n.id===`system-events`&&e===`gated`||n.id===`emails`&&t===`gated`)),[e,t]),s=(0,p.useMemo)(()=>{let e=m.find(e=>i===e.href||i.startsWith(e.href+`/`));return e?e.label:i===o.logs.root?m[0]?.label??`Logs & Usage`:`Logs & Usage`},[i]);return(0,h.jsx)(u,{backHref:o.assistant,sidebar:(0,h.jsx)(d,{items:a,indexPath:o.logs.root}),title:s,menuRoute:o.logs.root,children:(0,h.jsx)(n,{})})}export{g as LogsLayout};
@@ -1,13 +0,0 @@
1
- import{t as e}from"./capture-error-CmeVLfq0.js";import{Cr as t,cn as n,ln as r,sn as i,u as a,un as o,yr as s}from"./sdk.gen-Bz2u5Wv3.js";import{n as c,r as l}from"./api-errors-DZ6ckXtC.js";import{n as u}from"./platform-detection-CY-O-Rjc.js";import{a as d,s as f}from"./prechat-UQXfXf5i.js";import{t as p}from"./assistant-identity-store-Cp3CD7d1.js";import{r as m,t as h}from"./semver-DLY9hF7h.js";import{t as g}from"./effective-timezone-DAkNzd21.js";var _=/^\[File attachment\] (.+?), type=([^,\n]+?)(?:, size=([^\n]+))?$/,v=/^([\d.]+)\s*(B|KB|MB|GB)$/;function y(e){let t=v.exec(e.trim());if(!t)return 0;let n=Number.parseFloat(t[1]);if(!Number.isFinite(n))return 0;switch(t[2]){case`B`:return Math.round(n);case`KB`:return Math.round(n*1024);case`MB`:return Math.round(n*1024*1024);case`GB`:return Math.round(n*1024*1024*1024);default:return 0}}function b(e){let t=e.indexOf(`[File attachment] `);if(t<0||!(t===0||e[t-1]===`
2
- `))return{cleanedContent:e,attachments:void 0};let n=t>0&&e[t-1]===`
3
- `?e.slice(0,t-1):e.slice(0,t),r=[];for(let n of e.slice(t).split(`
4
- `)){let e=_.exec(n);if(!e)continue;let[,t,i,a]=e;r.push({id:`rehydrated:${r.length}`,filename:t,mimeType:i,sizeBytes:a?y(a):0,previewUrl:null})}return{cleanedContent:n,attachments:r.length>0?r:void 0}}var x=[`users/guardian.md`,`users/default.md`],S=`## Onboarding Context`;function C(e){let t=[S,``];return e.preferredName&&t.push(`- **Preferred name:** ${e.preferredName}`),e.occupation&&t.push(`- **Role:** ${e.occupation}`),e.commonWork.length>0&&t.push(`- **Common work:** ${e.commonWork.join(`; `)}`),e.dailyTools.length>0&&t.push(`- **Daily tools:** ${e.dailyTools.join(`, `)}`),t.push(``),t.join(`
5
- `)}function w(e,t){let n=e??`# User Profile
6
-
7
- `,r=n.indexOf(S);if(r!==-1){let e=n.indexOf(`
8
- `,r),i=e===-1?``:n.slice(e+1),a=i.match(/^## /m),o=n.slice(0,r),s=a?i.slice(a.index):``;return o+t+s}return n.endsWith(`
9
- `)||(n+=`
10
- `),n.endsWith(`
11
-
12
- `)||(n+=`
13
- `),n+t}async function T(e,t){let{data:n,error:r,response:i}=await s({path:{assistant_id:e},query:{path:t},throwOnError:!1});if(c(i,r,`Failed to fetch onboarding profile file`),i.status===404)return null;if(!i.ok)throw Error(`Failed to fetch onboarding profile file (${i.status})`);if(n?.isBinary)throw Error(`Onboarding profile file is binary`);return typeof n?.content==`string`?n.content:null}async function E(e,n,r){let{error:i,response:a}=await t({path:{assistant_id:e},body:{path:n,content:r},throwOnError:!1});if(c(a,i,`Failed to write onboarding profile file`),!a.ok)throw Error(`Failed to write onboarding profile file (${a.status})`)}async function D(e,t,n){await E(e,t,w(await T(e,t),n))}async function O(e,t){let n=C(f(t));await Promise.allSettled(x.map(t=>D(e,t,n)))}function k(e){return e.map(e=>{let t=null;return e.data?t=`data:${e.mimeType};base64,${e.data}`:e.thumbnailData&&(t=`data:image/jpeg;base64,${e.thumbnailData}`),{id:e.id,filename:e.filename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,previewUrl:t}})}function A(e){return e===`inline`||e===`panel`?e:void 0}function j(e){return{surfaceId:e.surfaceId,surfaceType:e.surfaceType,title:e.title,data:e.data,actions:e.actions,display:A(e.display),completed:e.completed,completionSummary:e.completionSummary,toolCallId:e.toolCallId}}function M(e){return e.map(j)}function N(e){if(typeof e==`number`)return e;if(typeof e==`string`){let t=new Date(e).getTime();return Number.isFinite(t)?t:void 0}}function P(e){if(!e||e.length===0)return{segments:void 0,attachments:void 0};let t=[];return{segments:e.map(e=>{let{cleanedContent:n,attachments:r}=b(e);return r&&t.push(...r),n}),attachments:t.length>0?t.map((e,t)=>({...e,id:`rehydrated:${t}`})):void 0}}function F(e){let{segments:t,attachments:n}=P(e.textSegments&&e.textSegments.length>0?e.textSegments:void 0),r=e.attachments&&e.attachments.length>0?k(e.attachments):void 0,i=W(e.contentOrder),a=G(e),o=e.toolCalls&&e.toolCalls.length>0?H(e.toolCalls,e.id):void 0,s=N(e.timestamp),c=e.thinkingSegments&&e.thinkingSegments.length>0?e.thinkingSegments:void 0,l={id:e.id,role:e.role};e.mergedMessageIds?.length&&(l.mergedMessageIds=e.mergedMessageIds),e.clientMessageId&&(l.clientMessageId=e.clientMessageId),e.surfaces&&(l.surfaces=M(e.surfaces)),a&&(l.contentBlocks=a),t&&(l.textSegments=t),i&&(l.contentOrder=i),c&&(l.thinkingSegments=c),e.subagentNotification&&(l.isSubagentNotification=!0),e.acpNotification&&(l.isAcpNotification=!0),e.backgroundEventNotification&&(l.isBackgroundEventNotification=!0),e.slackMessage&&(l.slackMessage=e.slackMessage),o&&(l.toolCalls=o),s!=null&&(l.timestamp=s);let u=r??n;return u&&(l.attachments=u),l}var I=`0.8.6`;function L(){let e=p.getState().version;if(!e)return`conversationKey`;let t=m(e),n=m(I);return!t||!n?`conversationKey`:h({...t,pre:null},n)>=0?`conversationId`:`conversationKey`}var R=1e3,z=12e4;function B(e){return{id:e.id,toolName:e.toolName,conversationId:e.conversationId,command:e.command,startedAt:e.startedAt,status:e.status,exitCode:e.exitCode,output:e.output,completedAt:e.completedAt}}async function V(e,t,n){let r=Date.now()+z;for(;Date.now()<r;){let{data:r,error:a,response:o}=await i({path:{assistant_id:e},query:{conversationId:n},throwOnError:!1});if(c(o,a,`Failed to poll for messages`),!o.ok){let e=l(a,o,`Failed to poll for messages`);throw Error(e)}let s=r?.messages??[],u=s.findIndex(e=>e.id===t);if(u>=0){let e=s.slice(u+1).find(e=>e.role===`assistant`);if(e)return e}await new Promise(e=>setTimeout(e,R))}return null}function H(e,t){return e.map((e,n)=>{let{confirmationDecision:r,...i}=e;return{...i,id:e.id??`tool-history-${t}-${n}`,...r===void 0?{}:{confirmationDecision:r}}})}function U(e){if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e;if(typeof t.type==`string`&&typeof t.id==`string`)return{type:t.type,id:t.id}}if(typeof e==`string`){let t=e.indexOf(`:`);if(t>0)return{type:e.slice(0,t),id:e.slice(t+1)}}return null}function W(e){if(!e||e.length===0)return;let t=[];for(let n of e){let e=U(n);e&&t.push(e)}return t.length>0?t:void 0}function G(e){if(e.contentBlocks!==void 0)return e.contentBlocks;let t=W(e.contentOrder);if(!t)return;let n=[];for(let{type:r,id:i}of t){let t=Number.parseInt(i,10);if(!Number.isNaN(t))switch(r){case`text`:{let r=e.textSegments?.[t];if(r==null)break;let{cleanedContent:i}=b(r);i.trim().length>0&&n.push({type:`text`,text:i});break}case`thinking`:{let r=e.thinkingSegments?.[t];r!=null&&n.push({type:`thinking`,thinking:r});break}case`tool`:case`toolCall`:{let r=e.toolCalls?.[t];r&&n.push({type:`tool_use`,toolCall:{...r,id:r.id??`tool-history-${e.id}-${t}`}});break}case`surface`:{let r=e.surfaces?.[t];r&&n.push({type:`surface`,surface:r});break}case`attachment`:{let r=e.attachments[t];r&&n.push({type:`attachment`,attachment:r});break}}}return n.length>0?n:void 0}async function K(e,t,n){let r=n?.latestPageLimit==null?{conversationId:t}:{conversationId:t,page:`latest`,limit:n.latestPageLimit},{data:a,error:o,response:s}=await i({path:{assistant_id:e},query:r,throwOnError:!1});if(c(s,o,`Failed to fetch conversation messages`),!s.ok)throw Error(`Failed to fetch conversation messages (HTTP ${s.status})`);return a}async function q(e,t){let n=t.name||`attachment`,r=t.type||`application/octet-stream`,{data:i,error:o,response:s}=await a({path:{assistant_id:e},body:{file:t,filename:n,mimeType:r},throwOnError:!1});if(c(s,o,`Failed to upload attachment`),!s.ok){let e=o&&typeof o==`object`&&!Array.isArray(o)?o:{},t=(typeof e.detail==`string`?e.detail:void 0)??(typeof e.error==`string`?e.error:void 0)??`HTTP ${s.status}`;return{ok:!1,status:s.status,error:{detail:t}}}let l=i?.id;return l?{ok:!0,id:l,...typeof i.filename==`string`?{filename:i.filename}:{},...typeof i.mimeType==`string`?{mimeType:i.mimeType}:{},...typeof i.sizeBytes==`number`?{sizeBytes:i.sizeBytes}:{}}:{ok:!1,status:422,error:{detail:`Upload response did not include an attachment id.`}}}async function J(t,r,i,a={}){let{attachmentIds:o=[],onboarding:s,clientMessageId:l,inferenceProfile:f,enabledPlugins:p,hidden:m}=a,h={content:i,sourceChannel:`vellum`,interface:`web`,clientOs:u()},_=g();_&&(h.clientTimezone=_);let v=L();(r!==null||v!==`conversationId`)&&(h[v]=r),o.length>0&&(h.attachmentIds=o),l&&(h.clientMessageId=l),f&&(h.inferenceProfile=f),p!=null&&(h.enabledPlugins=p),m&&(h.hidden=!0);let y=s?d(s):void 0;if(y){let e={tools:y.tools,tasks:y.tasks,tone:y.tone};y.userName!==void 0&&(e.userName=y.userName),y.occupation!==void 0&&(e.occupation=y.occupation),y.assistantName!==void 0&&(e.assistantName=y.assistantName),y.googleConnected!==void 0&&(e.googleConnected=y.googleConnected),y.googleScopes!==void 0&&(e.googleScopes=y.googleScopes),y.priorAssistants!==void 0&&(e.priorAssistants=y.priorAssistants),y.cohort!==void 0&&(e.cohort=y.cohort),y.bootstrapTemplate!==void 0&&(e.bootstrapTemplate=y.bootstrapTemplate),y.initialMessage!==void 0&&y.initialMessage.trim().toLowerCase().replace(/[.!?]+$/,``)!==`wake up, my friend`&&(e.initialMessage=y.initialMessage),y.skills!==void 0&&(e.skills=y.skills),y.title!==void 0&&(e.title=y.title),h.onboarding=e}y&&O(t,y).catch(t=>e(t,{context:`persistPreChatOnboardingProfile`}));let{data:b,error:x,response:S}=await n({path:{assistant_id:t},body:h,throwOnError:!1});if(c(S,x,`Failed to send chat message`),!S.ok){let e=x&&typeof x==`object`&&!Array.isArray(x)?x:{},t=e.error&&typeof e.error==`object`&&!Array.isArray(e.error)?e.error:{};return{ok:!1,status:S.status,error:{code:typeof e.code==`string`?e.code:typeof t.code==`string`?t.code:typeof e.error==`string`?e.error:void 0,detail:(typeof e.detail==`string`?e.detail:void 0)??(typeof e.message==`string`?e.message:void 0)??(typeof t.message==`string`?t.message:void 0)??`HTTP ${S.status}`}}}let C=b;if(!C?.accepted)return{ok:!1,status:422,error:{detail:`Message was not accepted by the assistant.`}};let w=typeof C.conversationId==`string`?C.conversationId:void 0;return w===void 0?{ok:!1,status:422,error:{detail:`Assistant accepted the message but did not return a conversation id.`}}:C.queued?{ok:!0,queued:!0,assistantId:t,conversationId:w,requestId:typeof C.requestId==`string`?C.requestId:void 0}:typeof C.messageId==`string`?{ok:!0,assistantId:t,conversationId:w,messageId:C.messageId}:{ok:!1,status:422,error:{detail:`Message was not accepted by the assistant.`}}}async function Y(e,t,n){try{let{response:r}=await o({path:{assistant_id:e,id:n},query:{conversationId:t},throwOnError:!1});return r?.ok??!1}catch{return!1}}async function X(e,t,n){try{let{response:i}=await r({path:{assistant_id:e,id:n},query:{conversationId:t},throwOnError:!1});return i?.ok??!1}catch{return!1}}export{J as a,q as c,V as i,F as l,K as n,Y as o,G as r,B as s,X as t,j as u};
@@ -1 +0,0 @@
1
- import{n as e}from"./toast-DowcpN7g.js";function t(t){return n=>{e.error(n instanceof Error?n.message:t)}}export{t};
@@ -1,6 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,n}from"./device-settings-BBwtGKJb.js";import{t as r}from"./react-DJZBPgpf.js";import{ct as i,p as a}from"./local-mode-YoUYEn7C.js";import{t as o}from"./is-electron-LEymSS4C.js";import{i as s,t as c}from"./dist-C3LFhPgk2.js";import{t as l}from"./return-to-BbdJZupb.js";import{o as u}from"./routes-iUGoIqW2.js";var d={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)};Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`});function f({onRequest:e,onSseError:t,onSseEvent:n,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:a,sseMaxRetryAttempts:o,sseMaxRetryDelay:s,sseSleepFn:c,url:l,...u}){let d,f=c??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let c=a??3e3,p=0,m=u.signal??new AbortController().signal;for(;!m.aborted;){p++;let a=u.headers instanceof Headers?u.headers:new Headers(u.headers);d!==void 0&&a.set(`Last-Event-ID`,d);try{let t={redirect:`follow`,...u,body:u.serializedBody,headers:a,signal:m},o=new Request(l,t);e&&(o=await e(l,t));let s=await(u.fetch??globalThis.fetch)(o);if(!s.ok)throw Error(`SSE failed: ${s.status} ${s.statusText}`);if(!s.body)throw Error(`No body in SSE response`);let f=s.body.pipeThrough(new TextDecoderStream).getReader(),p=``,h=()=>{try{f.cancel()}catch{}};m.addEventListener(`abort`,h);try{for(;;){let{done:e,value:t}=await f.read();if(e)break;p+=t,p=p.replace(/\r\n?/g,`
2
- `);let a=p.split(`
3
-
4
- `);p=a.pop()??``;for(let e of a){let t=e.split(`
5
- `),a=[],o;for(let e of t)if(e.startsWith(`data:`))a.push(e.replace(/^data:\s*/,``));else if(e.startsWith(`event:`))o=e.replace(/^event:\s*/,``);else if(e.startsWith(`id:`))d=e.replace(/^id:\s*/,``);else if(e.startsWith(`retry:`)){let t=Number.parseInt(e.replace(/^retry:\s*/,``),10);Number.isNaN(t)||(c=t)}let s,l=!1;if(a.length){let e=a.join(`
6
- `);try{s=JSON.parse(e),l=!0}catch{s=e}}l&&(i&&await i(s),r&&(s=await r(s))),n?.({data:s,event:o,id:d,retry:c}),a.length&&(yield s)}}}finally{m.removeEventListener(`abort`,h),f.releaseLock()}break}catch(e){if(t?.(e),o!==void 0&&p>=o)break;await f(Math.min(c*2**(p-1),s??3e4))}}}()}}var p=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},m=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},h=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},g=({allowReserved:e,explode:t,name:n,style:r,value:i})=>{if(!t){let t=(e?i:i.map(e=>encodeURIComponent(e))).join(m(r));switch(r){case`label`:return`.${t}`;case`matrix`:return`;${n}=${t}`;case`simple`:return t;default:return`${n}=${t}`}}let a=p(r),o=i.map(t=>r===`label`||r===`simple`?e?t:encodeURIComponent(t):_({allowReserved:e,name:n,value:t})).join(a);return r===`label`||r===`matrix`?a+o:o},_=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},v=({allowReserved:e,explode:t,name:n,style:r,value:i,valueOnly:a})=>{if(i instanceof Date)return a?i.toISOString():`${n}=${i.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(i).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let a=t.join(`,`);switch(r){case`form`:return`${n}=${a}`;case`label`:return`.${a}`;case`matrix`:return`;${n}=${a}`;default:return a}}let o=h(r),s=Object.entries(i).map(([t,i])=>_({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(o);return r===`label`||r===`matrix`?o+s:s},ee=/\{[^{}]+\}/g,te=({path:e,url:t})=>{let n=t,r=t.match(ee);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),a=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),a=`label`):i.startsWith(`;`)&&(i=i.substring(1),a=`matrix`);let o=e[i];if(o==null)continue;if(Array.isArray(o)){n=n.replace(t,g({explode:r,name:i,style:a,value:o}));continue}if(typeof o==`object`){n=n.replace(t,v({explode:r,name:i,style:a,value:o,valueOnly:!0}));continue}if(a===`matrix`){n=n.replace(t,`;${_({name:i,value:o})}`);continue}let s=encodeURIComponent(a===`label`?`.${o}`:o);n=n.replace(t,s)}return n},ne=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=te({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o};function y(e){let t=e.body!==void 0;if(t&&e.bodySerializer)return`serializedBody`in e?e.serializedBody!==void 0&&e.serializedBody!==``?e.serializedBody:null:e.body===``?null:e.body;if(t)return e.body}var b=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},x=({parameters:e={},...t}={})=>n=>{let r=[];if(n&&typeof n==`object`)for(let i in n){let a=n[i];if(a==null)continue;let o=e[i]||t;if(Array.isArray(a)){let e=g({allowReserved:o.allowReserved,explode:!0,name:i,style:`form`,value:a,...o.array});e&&r.push(e)}else if(typeof a==`object`){let e=v({allowReserved:o.allowReserved,explode:!0,name:i,style:`deepObject`,value:a,...o.object});e&&r.push(e)}else{let e=_({allowReserved:o.allowReserved,name:i,value:a});e&&r.push(e)}}return r.join(`&`)},re=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},ie=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1,ae=async({security:e,...t})=>{for(let n of e){if(ie(t,n.name))continue;let e=await b(n,t.auth);if(!e)continue;let r=n.name??`Authorization`;switch(n.in){case`query`:t.query||={},t.query[r]=e;break;case`cookie`:t.headers.append(`Cookie`,`${r}=${e}`);break;default:t.headers.set(r,e);break}}},S=e=>ne({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:x(e.querySerializer),url:e.url}),C=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=w(e.headers,t.headers),n},oe=e=>{let t=[];return e.forEach((e,n)=>{t.push([n,e])}),t},w=(...e)=>{let t=new Headers;for(let n of e){if(!n)continue;let e=n instanceof Headers?oe(n):Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t},T=class{fns=[];clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e==`number`?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let n=this.getInterceptorIndex(e);return this.fns[n]?(this.fns[n]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}},se=()=>({error:new T,request:new T,response:new T}),E=x({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),ce={"Content-Type":`application/json`},D=(e={})=>({...d,headers:ce,parseAs:`auto`,querySerializer:E,...e}),O=((e={})=>{let t=C(D(),e),n=()=>({...t}),r=e=>(t=C(t,e),n()),i=se(),a=async e=>{let n={...t,...e,fetch:e.fetch??t.fetch??globalThis.fetch,headers:w(t.headers,e.headers),serializedBody:void 0};n.security&&await ae({...n,security:n.security}),n.requestValidator&&await n.requestValidator(n),n.body!==void 0&&n.bodySerializer&&(n.serializedBody=n.bodySerializer(n.body)),(n.body===void 0||n.serializedBody===``)&&n.headers.delete(`Content-Type`);let r=n;return{opts:r,url:S(r)}},o=async e=>{let n=e.throwOnError??t.throwOnError,r=e.responseStyle??t.responseStyle,o,s;try{let{opts:t,url:n}=await a(e),r={redirect:`follow`,...t,body:y(t)};o=new Request(n,r);for(let e of i.request.fns)e&&(o=await e(o,t));let c=t.fetch;s=await c(o);for(let e of i.response.fns)e&&(s=await e(s,o,t));let l={request:o,response:s};if(s.ok){let e=(t.parseAs===`auto`?re(s.headers.get(`Content-Type`)):t.parseAs)??`json`;if(s.status===204||s.headers.get(`Content-Length`)===`0`){let n;switch(e){case`arrayBuffer`:case`blob`:case`text`:n=await s[e]();break;case`formData`:n=new FormData;break;case`stream`:n=s.body;break;default:n={};break}return t.responseStyle===`data`?n:{data:n,...l}}let n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`text`:n=await s[e]();break;case`json`:{let e=await s.text();n=e?JSON.parse(e):{};break}case`stream`:return t.responseStyle===`data`?s.body:{data:s.body,...l}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...l}}let u=await s.text(),d;try{d=JSON.parse(u)}catch{}throw d??u}catch(t){let a=t;for(let t of i.error.fns)t&&(a=await t(a,s,o,e));if(a||={},n)throw a;return r===`data`?void 0:{error:a,request:o,response:s}}},s=e=>t=>o({...t,method:e}),c=e=>async t=>{let{opts:n,url:r}=await a(t);return f({...n,body:n.body,method:e,onRequest:async(e,t)=>{let r=new Request(e,t);for(let e of i.request.fns)e&&(r=await e(r,n));return r},serializedBody:y(n),url:r})};return{buildUrl:e=>S({...t,...e}),connect:s(`CONNECT`),delete:s(`DELETE`),get:s(`GET`),getConfig:n,head:s(`HEAD`),interceptors:i,options:s(`OPTIONS`),patch:s(`PATCH`),post:s(`POST`),put:s(`PUT`),request:o,setConfig:r,sse:{connect:c(`CONNECT`),delete:c(`DELETE`),get:c(`GET`),head:c(`HEAD`),options:c(`OPTIONS`),patch:c(`PATCH`),post:c(`POST`),put:c(`PUT`),trace:c(`TRACE`)},trace:s(`TRACE`)}})(D()),le=e=>(e.client??O).get({url:`/_allauth/{client}/v1/auth/provider/signup`,...e}),ue=e=>(e.client??O).post({url:`/_allauth/{client}/v1/auth/provider/signup`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),de=e=>(e.client??O).delete({url:`/_allauth/{client}/v1/auth/session`,...e}),k=e=>(e.client??O).get({url:`/_allauth/{client}/v1/auth/session`,...e}),A=()=>o()?`app`:`browser`;function fe(e){return!e.ok&&e.status===409}function j(e,t){let n=e;if(n&&Array.isArray(n.errors))return{ok:!1,status:t,errors:n.errors};let r=n?.data;return r&&Array.isArray(r.flows)?{ok:!1,status:t,errors:[],flows:r.flows}:{ok:!1,status:t,errors:[]}}async function M(){let{data:e,error:t,response:n}=await k({path:{client:A()}});return e?{ok:!0,data:e.data}:j(t,n?.status)}async function pe(){let{data:e,error:t,response:n}=await de({path:{client:A()}});return e?{ok:!0,data:e}:n?.status===401?{ok:!0,data:{}}:j(t,n?.status)}async function me(){let{data:e,error:t,response:n}=await le({path:{client:A()}});return e?{ok:!0,data:e.data}:j(t,n?.status)}async function he({email:e,username:t}){let{data:n,error:r,response:i}=await ue({path:{client:A()},body:{email:e,username:t}});return n?{ok:!0,data:n.data}:j(r,i?.status)}var N;function ge(){return o()?(N===void 0&&(N=window.vellum?.auth?.getSessionToken?.()??null),N):null}function _e(e){N=e}var P=`__Secure-csrftoken`;function F(){return document.cookie.split(`; `).findLast(e=>e.startsWith(`${P}=`))?.split(`=`).slice(1).join(`=`)}function I(){document.cookie.split(`; `).filter(e=>e.startsWith(`${P}=`)).length>1&&(document.cookie=`${P}=; path=/; max-age=0; secure`)}var L=null;async function R(){o()||i()||(I(),!F()&&(L||=(async()=>{for(let e=0;e<2;e++)try{if(await k({path:{client:`browser`}}),F())return}catch{console.warn(`CSRF cookie bootstrap failed (attempt ${e+1}/2)`),e===0&&await new Promise(e=>setTimeout(e,500))}})().finally(()=>{L=null}),await L))}var ve=`/_allauth/browser/v1/auth/provider/redirect`;function ye(e,t,n,r={}){let i={provider:e,callback_url:new URL(t,n).href,process:`login`};return r.intent&&(i.intent=r.intent),r.loginHint&&(i.login_hint=r.loginHint),i}function be(e){if(!e)throw Error(`Unable to start provider redirect: CSRF token is missing. The session may not be initialized. Please refresh the page and try again.`)}async function xe(e,t,n={}){await R();let r=F();be(r);let i=window.location.origin,a=document.createElement(`form`);a.method=`POST`,a.action=`${i}${ve}`;let o=ye(e,t,i,n);o.csrfmiddlewaretoken=r;for(let[e,t]of Object.entries(o)){let n=document.createElement(`input`);n.type=`hidden`,n.name=e,n.value=t,a.appendChild(n)}document.body.appendChild(a),a.submit()}function Se(e,t){return e?{kind:`authenticated`}:t.some(e=>e.id===`provider_signup`&&e.is_pending)?{kind:`provider_signup`}:{kind:`error`,message:`Unexpected authentication state.`}}var Ce=`https://www.vellum.ai`,we=`vellum:loopback:state`,Te=`vellum:loopback:returnTo`;function z(){let e=window.__VELLUM_CONFIG__;return e?.webUrl?{webUrl:e.webUrl}:{webUrl:Ce}}function Ee(){let e=new Uint8Array(32);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function De(){return z().webUrl===window.location.origin}async function Oe(e,t){let{webUrl:n}=z(),r=Ee(),i=window.location.port||`3000`;sessionStorage.setItem(we,r),e&&sessionStorage.setItem(Te,e);let a=`/accounts/cli/callback?port=${i}&state=${r}`,o=`${n}/account/${t?.intent===`signup`?`signup`:`login`}?returnTo=${encodeURIComponent(a)}`;window.location.href=o}async function B(e){o()&&await window.vellum?.menu.setPlatformSession(e)}var V=e(r(),1),ke=s(`NativeAuth`),H=u.assistant,U=!1;function Ae(){return U}function je(){return`${window.location.protocol}//${window.location.host}`}function W(){return typeof window<`u`&&c.isNativePlatform()}var Me=()=>()=>{};function Ne(){return(0,V.useSyncExternalStore)(Me,W,()=>!1)}async function G(e){let t=e?.baseURL??je(),{sessionToken:n}=await ke.startAuth({baseURL:t,...e?.loginHint?{loginHint:e.loginHint}:{},...e?.intent?{intent:e.intent}:{}});q(n),W()&&await K(),$()&&await Z(n);let r=l(e?.returnTo??null,H);window.location.href=r}async function K(){for(let e=0;e<6;e++){try{let e=await M();if(e.ok&&e.data.user)return}catch{}await new Promise(t=>setTimeout(t,50*(e+1)))}}function q(e){let t=`path=/; domain=.vellum.ai; secure; samesite=lax; max-age=1209600`;document.cookie=`sessionid=${e}; ${t}`,document.cookie=`__Secure-sessionid=${e}; ${t}`}function Pe(){if(typeof document>`u`)return null;let e=document.cookie.split(`; `);for(let t of[`__Secure-sessionid`,`sessionid`]){let n=e.find(e=>e.startsWith(`${t}=`));if(n){let e=n.slice(t.length+1);if(e)return e}}return null}async function Fe(e,t,n={}){if(W()){try{await G({returnTo:n.intent===`signup`?u.onboarding.privacy:n.returnTo??null,loginHint:n.loginHint,intent:n.intent})}catch(e){if(e?.code===`USER_CANCELLED`)return;throw e}return}if(o()&&window.vellum?.auth?.startOAuth){U=!0;try{let e=await window.vellum.auth.startOAuth({loginHint:n.loginHint,intent:n.intent});if(e?.sessionToken){_e(e.sessionToken),await B(!0);let t=l(n.intent===`signup`?u.onboarding.privacy:n.returnTo??null,H);window.location.href=t}}finally{U=!1}return}if(a()&&!De()){await Oe(n.returnTo??void 0,{intent:n.intent});return}await xe(e,t,n)}var J=s(`NativeBiometric`),Y=`vellum.ai`;async function X(){if(!W())return!1;try{let{available:e}=await J.isAvailable();return e}catch{return!1}}async function Z(e){if(!await X())return!1;try{return await J.storeToken({token:e,server:Y}),!0}catch(e){return console.error(`[native-biometric] failed to store token:`,e),!1}}var Q=null;async function Ie(){return W()?Q||(Q=(async()=>{try{let{token:e}=await J.retrieveToken({server:Y,reason:`Sign in to Vellum`});return e}catch{return null}finally{Q=null}})(),Q):null}async function Le(){if(W())try{await J.deleteToken({server:Y})}catch{}}function $(){return n(`biometricEnabled`,!0)}function Re(e){t(`biometricEnabled`,e)}async function ze(){if(!W())return`Biometrics`;try{let{biometryType:e}=await J.isAvailable();switch(e){case`faceId`:return`Face ID`;case`touchId`:return`Touch ID`;case`opticId`:return`Optic ID`;default:return`Biometrics`}}catch{return`Biometrics`}}export{fe as C,O as E,M as S,he as T,Se as _,Ie as a,ge as b,Pe as c,Ae as d,Fe as f,B as g,K as h,$ as i,q as l,Ne as m,ze as n,Re as o,G as p,X as r,Z as s,Le as t,W as u,R as v,pe as w,me as x,F as y};
@@ -1 +0,0 @@
1
- var e=`vellum:oauth-complete-deeplink`,t=`oauth-complete`,n={"www.vellum.ai":`vellum-assistant`,"vellum.ai":`vellum-assistant`,"staging-assistant.vellum.ai":`vellum-assistant-staging`,"dev-assistant.vellum.ai":`vellum-assistant-dev`};new Set(Object.values(n).map(e=>`${e}:`));function r(e){return n[e]??null}function i(e,n){let r=new URLSearchParams;return r.set(`requestId`,n.requestId),n.oauthStatus!==null&&r.set(`oauth_status`,n.oauthStatus),n.oauthProvider!==null&&r.set(`oauth_provider`,n.oauthProvider),n.oauthCode!==null&&r.set(`oauth_code`,n.oauthCode),`${e}://${t}?${r.toString()}`}export{i as n,r,e as 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"./createLucideIcon-IRfcSUxS.js";import{t as c}from"./bell-BQLonLMp.js";import{t as l}from"./check-DFNrQERi.js";import{t as u}from"./menu-Bjq0lFxx.js";import{t as d}from"./loader-circle-D1pLQlMh.js";import{t as f}from"./moon-Br0t6dvo.js";import{t as p}from"./triangle-alert-CuLBwl1x.js";import{t as m}from"./notice-Dh3mnM_U.js";import{t as h}from"./popover-DKvyZMoc.js";import{t as g}from"./input-DR1eB4a1.js";import{n as _,t as v}from"./panel-item-vXPWJAXs.js";import{n as y}from"./toast-DowcpN7g.js";import{o as b}from"./routes-iUGoIqW2.js";import{n as x}from"./use-is-mobile-DJUk0lC8.js";import{_t as S,ft as C,gt as w,ht as T,mt as E,pt as D,vt as O}from"./react-query.gen-DVZyPw6H.js";import{Lr as k,Rr as A,T as j,zr as M}from"./index-CoobbyzR.js";import{t as N}from"./mutation-error-DITUXbSQ.js";import{r as P}from"./format-date-CLlHK5gl.js";var F=s(`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=s(`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:E()}),e.invalidateQueries({queryKey:O()})}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(S()),s=x(),[c,l]=(0,L.useState)(!1),d=()=>R(i),f=t=>{let n=new Date(new Date().getTime()+t*60*60*1e3).toISOString();o.mutate({path:{id:e},body:{snoozed_until:n}},{onSuccess:d,onError:N(`Failed to snooze notification`)})},p=()=>{o.mutate({path:{id:e},body:{snoozed_until:null}},{onSuccess:d,onError:N(`Failed to clear snooze`)})};return s?(0,V.jsxs)(_.Root,{open:c,onOpenChange:l,children:[(0,V.jsx)(_.Trigger,{asChild:!0,children:n}),(0,V.jsxs)(_.Content,{children:[(0,V.jsx)(_.Header,{children:(0,V.jsx)(_.Title,{children:`Snooze until…`})}),(0,V.jsxs)(_.Body,{children:[B.map(({label:e,hours:t})=>(0,V.jsx)(v,{label:e,onSelect:()=>{o.isPending||(l(!1),f(t))}},e)),t&&(0,V.jsx)(v,{label:`Clear snooze`,onSelect:()=>{o.isPending||(l(!1),p())}})]})]})]}):(0,V.jsxs)(u.Root,{open:c,onOpenChange:l,children:[(0,V.jsx)(u.Trigger,{children:n}),(0,V.jsxs)(u.Content,{align:`start`,className:`min-w-[12rem]`,children:[(0,V.jsx)(u.Label,{children:`Snooze until…`}),B.map(({label:e,hours:t})=>(0,V.jsx)(u.Item,{disabled:o.isPending,onSelect:()=>f(t),children:e},e)),t&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(u.Separator,{}),(0,V.jsx)(u.Item,{disabled:o.isPending,onSelect:()=>p(),children:`Clear snooze`})]})]})]})}function U({existingRules:e,onClose:t,onPauseCreated:n,onPauseDeleted:i,hideTitle:o=!1}){let s=r(),c=a(T()),l=a(w()),[u,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:u.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)(g,{type:`text`,value:u,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)(d,{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)(p,{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)(f,{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)(l,{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)(d,{className:`h-3 w-3 animate-spin`}):(0,V.jsx)(l,{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)(f,{className:`h-3 w-3`}),i?`Change snooze`:`Snooze`]})})]})]})}function G(){let e=M({platformHostedOnly:!0}),t=k(),o=A(),s=r(),l=x(),[u,f]=(0,L.useState)(`open`),[p,g]=(0,L.useState)(!1),[v,S]=(0,L.useState)([]),{data:w,isLoading:T,isError:E,refetch:O}=i({...D({query:{status:u}}),enabled:e===`full`&&t}),N=e===`full`&&o||(t?T:!1);(0,L.useEffect)(()=>{!t&&p&&g(!1)},[t,p]);let P=t?E:!1,z=t?w?.results??[]:[],B=z.filter(e=>!e.is_read&&!e.is_resolved),H=a(C()),[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){y.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:v,onClose:()=>g(!1),onPauseCreated:e=>S(t=>[...t,e]),onPauseDeleted:e=>S(t=>t.filter(t=>t.id!==e))});return e===`gated`?(0,V.jsx)(n,{replace:!0,to:b.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)(c,{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)(j,{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)(c,{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&&(l?(0,V.jsxs)(_.Root,{open:p,onOpenChange:g,children:[(0,V.jsx)(_.Trigger,{asChild:!0,children:Q}),(0,V.jsxs)(_.Content,{children:[(0,V.jsx)(_.Header,{children:(0,V.jsx)(_.Title,{children:`Pause alerts`})}),(0,V.jsx)(_.Body,{children:(0,V.jsx)(U,{existingRules:v,onClose:()=>g(!1),onPauseCreated:e=>S(t=>[...t,e]),onPauseDeleted:e=>S(t=>t.filter(t=>t.id!==e)),hideTitle:!0})})]})]}):(0,V.jsxs)(h.Root,{open:p,onOpenChange:g,children:[(0,V.jsx)(h.Trigger,{asChild:!0,children:Q}),(0,V.jsx)(h.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=u===e;return(0,V.jsx)(`button`,{type:`button`,onClick:()=>f(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)})}),u===`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)(d,{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)(d,{className:`h-4 w-4 animate-spin`}),`Loading notifications…`]}):P?(0,V.jsxs)(m,{tone:`error`,children:[`Failed to load notifications.`,` `,(0,V.jsx)(`button`,{type:`button`,onClick:()=>void O(),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)(c,{className:`h-5 w-5 text-[var(--content-secondary)]`})}),(0,V.jsxs)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:[`No `,u,` notifications`]}),(0,V.jsx)(`p`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:u===`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-D1p5nVKJ.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{n as i,t as a}from"./cn-C36Yvcac.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-DcPLFkll.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)(p,{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 c=n(),{onOpenChange:l}=(0,m.useContext)(g);return(0,h.jsxs)(u,{container:c??void 0,children:[(0,h.jsx)(o,{"data-slot":`bottom-sheet-overlay`,className:a(`fixed inset-0 z-50 bg-black/50`,e),onClick:()=>l?.(!1)}),(0,h.jsx)(d,{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)(c,{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)(l,{"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"./is-electron-LEymSS4C.js";import{u as r}from"./native-biometric-uwPAd9lh.js";import{t as i}from"./dist-C3LFhPgk2.js";var a=e(t(),1);function o(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent;if(/iPhone|iPod/.test(e)||/iPad/.test(e))return!0;let t=navigator.userAgentData;return(t?.platform?t.platform.toLowerCase().includes(`mac`):navigator.platform.toLowerCase().includes(`mac`))&&navigator.maxTouchPoints>1}function s(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent;return/Safari/.test(e)&&!/CriOS|FxiOS|EdgiOS|OPiOS|Chrome|Chromium/.test(e)}function c(){if(typeof navigator>`u`||o())return!1;let e=navigator.userAgentData;return e?.platform?e.platform.toLowerCase().includes(`mac`):navigator.platform.toLowerCase().includes(`mac`)}function l(){return typeof navigator>`u`?!1:/Android/i.test(navigator.userAgent)}function u(){return n()?`macos`:r()?i.getPlatform()===`android`?`android`:`ios`:o()?`ios`:l()?`android`:`web`}function d(e){if(!e||e.length===0)return null;for(let{family:t,pattern:n}of[{family:`edge`,pattern:/microsoft edge/i},{family:`chrome`,pattern:/google chrome|chromium/i}]){let r=e.find(e=>n.test(e.brand));if(r){let e=r.version.match(/^\d+/)?.[0];return{family:t,...e?{version:e}:{}}}}return null}function f(e){for(let{family:t,pattern:n}of[{family:`edge`,pattern:/(?:Edg|EdgiOS|EdgA)\/(\d+)/},{family:`chrome`,pattern:/(?:Chrome|CriOS|Chromium)\/(\d+)/},{family:`firefox`,pattern:/(?:Firefox|FxiOS)\/(\d+)/},{family:`safari`,pattern:/Version\/(\d+).*Safari\//}]){let r=e.match(n);if(r)return{family:t,version:r[1]}}return null}function p(){if(typeof navigator>`u`)return{};let e=navigator.userAgentData;return d(e?.brands)??f(navigator.userAgent)??{}}var m=()=>()=>{};function h(){return(0,a.useSyncExternalStore)(m,()=>o()&&!r()&&!s(),()=>!1)}function g(){return(0,a.useSyncExternalStore)(m,()=>c()&&!r()&&!n(),()=>!1)}export{g as a,h as i,u as n,c as r,p as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{d as n,h as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{j as a,w as o}from"./local-mode-YoUYEn7C.js";import{D as s,n as c}from"./auth-store-CI4EhvE5.js";import{c as l}from"./api-DXLi4DU7.js";import{g as u}from"./native-biometric-uwPAd9lh.js";import{o as d}from"./routes-iUGoIqW2.js";var f=e(t(),1),p=i(),m=`vellum:loopback:state`,h=`vellum:loopback:returnTo`;function g(){let[e]=r(),t=n(),[i,g]=(0,f.useState)(null);return(0,f.useEffect)(()=>{let n=e.get(`state`),r=e.get(`session_token`),i=sessionStorage.getItem(m),f=sessionStorage.getItem(h)||d.assistant;if(sessionStorage.removeItem(m),sessionStorage.removeItem(h),!n||n!==i){g(`Login failed: state mismatch. Please try again.`);return}if(!r){g(`Login failed: no session token received. Please try again.`);return}if(!/^[a-zA-Z0-9]+$/.test(r)){g(`Login failed: invalid session token.`);return}(async()=>{if(!await a(r)){g(`Login failed: couldn't reach the local Vellum server to store the session. Please try again.`);return}await c.getState().initSession(),await u(!0);try{let e=await l();if(e.ok&&e.data.length>0){await o(e.data,s.getState().currentOrganizationId??void 0),t(d.assistant,{replace:!0});return}}catch{}t(f,{replace:!0})})()},[e,t]),i?(0,p.jsx)(`div`,{className:`flex min-h-screen items-center justify-center bg-[var(--surface-base)] text-[var(--content-default)]`,children:(0,p.jsxs)(`div`,{className:`max-w-md text-center`,children:[(0,p.jsx)(`p`,{className:`text-body-medium-default`,children:i}),(0,p.jsx)(`button`,{type:`button`,className:`mt-4 rounded-lg border border-[var(--border-disabled)] px-4 py-2 text-sm hover:bg-[var(--surface-lift)]`,onClick:()=>void t(d.welcome),children:`Back to Welcome`})]})}):(0,p.jsx)(`div`,{className:`flex min-h-screen items-center justify-center bg-[var(--surface-base)] text-[var(--content-default)]`,children:(0,p.jsx)(`p`,{className:`text-body-medium-default`,children:`Completing login...`})})}export{g as PlatformLoopbackPage};
@@ -1 +0,0 @@
1
- import{p as e,r as t}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{o as r}from"./routes-iUGoIqW2.js";import{t as i}from"./assistant-identity-store-Cp3CD7d1.js";import{t as a}from"./plugins-surface-DYk9FmM2.js";var o=n();function s(){let n=i.use.version(),s=a(),{name:c}=e();return n===null?null:s?c?(0,o.jsx)(t,{to:`${r.plugins}?plugin=${encodeURIComponent(c)}`,replace:!0}):(0,o.jsx)(t,{to:r.plugins,replace:!0}):(0,o.jsx)(t,{to:r.identity,replace:!0})}export{s as PluginDetailPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,t as n}from"./local-settings-lVNyIOJ_.js";import{t as r}from"./react-DJZBPgpf.js";import{F as i,t as a}from"./button-D1p5nVKJ.js";import{h as o,r as s}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as c}from"./QueryClientProvider-DKhXIxGb.js";import{t as l}from"./useQuery-B45lW1Kk.js";import{t as u}from"./useMutation-Lj4VunQV.js";import{t as d}from"./jsx-runtime-CVSDxk6A.js";import{t as f}from"./card-Bv5O5juh.js";import{t as p}from"./createLucideIcon-IRfcSUxS.js";import{t as m}from"./arrow-left-DI9551VI.js";import{t as h}from"./check-DFNrQERi.js";import{t as g}from"./cloud-off-CysJvmWr.js";import{t as _}from"./external-link-DJ0A4ezO.js";import{i as v,n as y,r as b,t as x}from"./use-skill-categories-q-Ih2uSR.js";import{t as S}from"./globe-DgulNfxa.js";import{t as C}from"./hard-drive-CUjwJ5MQ.js";import{t as w}from"./loader-circle-D1pLQlMh.js";import{t as T}from"./sparkles-3RJkeWa7.js";import{t as E}from"./triangle-alert-CuLBwl1x.js";import{t as D}from"./x-CwzRJv9J.js";import"./src-4xooMXeT.js";import{t as O}from"./tag-BizaosUX.js";import{t as k}from"./popover-DKvyZMoc.js";import{t as A}from"./input-DR1eB4a1.js";import{t as ee}from"./toggle-D7S110RM.js";import{n as j,t as M}from"./panel-item-vXPWJAXs.js";import{n as N}from"./toast-DowcpN7g.js";import{t as P}from"./confirm-dialog-DW84Cxfq.js";import{Tn as F,kn as I,wn as te}from"./sdk.gen-Bz2u5Wv3.js";import{Jt as ne,Xt as re,Yt as ie,at as ae,et as oe,it as L,nt as se}from"./react-query.gen-D8YgmevH.js";import{o as ce}from"./routes-iUGoIqW2.js";import{n as le}from"./use-is-mobile-DJUk0lC8.js";import{t as ue}from"./assistant-identity-store-Cp3CD7d1.js";import{t as R}from"./misc-CfQwP_zq.js";import{Ai as de,Ca as z,Ji as B,Sa as V,Ti as fe,V as H,ka as U,ki as W,kt as pe,la as me,mi as G,ur as he}from"./index-CoobbyzR.js";import{t as ge}from"./use-active-assistant-id-BBHOMQFe.js";import{t as _e}from"./plugins-surface-DYk9FmM2.js";var ve=p(`power-off`,[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`,key:`dxknvb`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`,key:`1x7qb5`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),K=e(r(),1),q=d(),ye={sm:`h-7 w-7`,md:`h-8 w-8 text-3xl`};function J({external:e=!1,size:t=`sm`,className:n}){let r=e?`📦`:`🧩`;return(0,q.jsx)(`span`,{className:R(`flex shrink-0 items-center justify-center`,ye[t],n),children:r})}var be=e=>`Remove "${e}" from this assistant?`,xe=e=>`"${e}" has local edits that will be overwritten by the upgrade. Continue?`,Se=`Upgrade anyway`,Ce=`Failed to install plugin. Please try again.`,we=`Failed to remove plugin. Please try again.`,Te=`Failed to upgrade plugin. Please try again.`,Ee=`Failed to update plugin. Please try again.`;function De(e,t){let n=e.map(e=>({name:e.name,description:e.description??void 0,status:`installed`,external:void 0,version:e.version??void 0,path:e.path,issues:e.issues,enabled:e.enabled})),r=new Set(n.map(e=>e.name)),i=t.filter(e=>!r.has(e.name)).map(e=>({name:e.name,description:e.description,status:`available`,external:!0,path:e.path}));return[...n,...i]}function Oe(e,t){let n=t.trim().toLowerCase();return n?[e.name,e.description].some(e=>e?.toLowerCase().includes(n)):!0}function ke(e){return[...e].sort((e,t)=>{let n=e.status===`installed`;return n===(t.status===`installed`)?e.name.localeCompare(t.name,void 0,{sensitivity:`base`}):n?-1:1})}function Ae(e,t){switch(t){case`all`:return e;case`available`:return e.filter(e=>e.status===`available`);case`installed`:return e.filter(e=>e.status===`installed`);case`active`:return e.filter(e=>e.status===`installed`&&e.enabled!==!1);case`off`:return e.filter(e=>e.status===`installed`&&e.enabled===!1)}}function Y(e){return e?e.slice(0,7):`unknown`}function X({plugin:e,surfaces:t=null,className:n}){let r=[{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&&r.push({label:`Homepage`,value:e.homepage,href:e.homepage}),e.license&&r.push({label:`License`,value:e.license}),t&&(t.skills.length>0&&r.push({label:`Skills`,value:String(t.skills.length)}),t.hooks.length>0&&r.push({label:`Hooks`,value:String(t.hooks.length)}),t.tools.length>0&&r.push({label:`Tools`,value:String(t.tools.length)})),(0,q.jsx)(`dl`,{className:R(`mb-5 grid gap-x-6 gap-y-2 border-b pb-5 sm:grid-cols-[max-content_1fr]`,n),style:{borderColor:`var(--border-base)`},children:r.map(e=>(0,q.jsxs)(`div`,{className:`contents`,children:[(0,q.jsx)(`dt`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:e.label}),(0,q.jsx)(`dd`,{className:`min-w-0 truncate text-body-small-default`,style:{color:`var(--content-secondary)`},children:e.href?(0,q.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,q.jsx)(_,{className:`h-3 w-3`,"aria-hidden":!0})]}):e.value})]},e.label))})}function je({plugin:e,drift:t,onInstall:n,onRemove:r,onUpgrade:i,isInstalling:o,isRemoving:s,isUpgrading:c,hasLocalEdits:l,enabled:u,onToggle:d,isToggling:f}){let[p,m]=(0,K.useState)(!1),[h,g]=(0,K.useState)(!1),_=e.installed??!1,v=e.artifact??null,y=t?.status===`update-available`,b=y?`Upgrade ${Y(t?.local?.commit??null)} → ${Y(t?.remote?.commit??null)}`:void 0;return(0,q.jsxs)(q.Fragment,{children:[_?(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 md:flex-nowrap md:shrink-0`,children:[u!==void 0&&d?(0,q.jsx)(ee,{label:`Auto-include in chat`,checked:u,onChange:()=>d(),disabled:f}):null,v?(0,q.jsx)(a,{asChild:!0,leftIcon:(0,q.jsx)(me,{"aria-hidden":!0}),children:(0,q.jsx)(`a`,{href:v.url,download:!0,children:v.label??`Download`})}):null,y?(0,q.jsx)(a,{type:`button`,onClick:()=>{if(l){g(!0);return}i()},disabled:c,title:b,leftIcon:c?(0,q.jsx)(w,{className:`animate-spin`,"aria-hidden":!0}):(0,q.jsx)(z,{"aria-hidden":!0}),children:`Upgrade`}):null,(0,q.jsx)(a,{type:`button`,variant:`dangerOutline`,onClick:()=>m(!0),disabled:s,leftIcon:s?(0,q.jsx)(w,{className:`animate-spin`,"aria-hidden":!0}):(0,q.jsx)(G,{"aria-hidden":!0}),children:`Remove`})]}):(0,q.jsx)(a,{type:`button`,onClick:n,disabled:o,leftIcon:o?(0,q.jsx)(w,{className:`animate-spin`,"aria-hidden":!0}):(0,q.jsx)(U,{"aria-hidden":!0}),children:`Install`}),(0,q.jsx)(P,{open:p,title:`Remove plugin`,message:be(e.name),confirmLabel:`Remove`,destructive:!0,onConfirm:()=>{m(!1),r()},onCancel:()=>m(!1)}),(0,q.jsx)(P,{open:h,title:`Upgrade plugin`,message:xe(e.name),confirmLabel:Se,destructive:!0,onConfirm:()=>{g(!1),i()},onCancel:()=>g(!1)})]})}function Z(){return(0,q.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,q.jsx)(w,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})})}function Q(){return(0,q.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 py-12 text-center`,style:{color:`var(--content-tertiary)`},children:[(0,q.jsx)(E,{className:`h-6 w-6`,"aria-hidden":!0}),(0,q.jsx)(`p`,{className:`text-body-medium-default`,children:`We couldn't load this plugin.`}),(0,q.jsx)(`p`,{className:`text-body-small-default`,children:`It may not exist, or your assistant may be on an older build.`})]})}function Me({isInstallError:e,isRemoveError:t,isUpgradeError:n}){let r=e?Ce:t?we:n?Te:null;return r?(0,q.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,q.jsx)(E,{className:`h-4 w-4 shrink-0`,"aria-hidden":!0}),r]}):null}function Ne({external:e,className:t}){let n=e?{label:`External`,icon:S}:{label:`Local`,icon:C};return(0,q.jsx)(O,{tone:`neutral`,leftIcon:(0,K.createElement)(n.icon),className:t,children:n.label})}function Pe({onClick:e,isUpgrading:t=!1}={}){let n=(0,q.jsx)(O,{tone:`warning`,leftIcon:(0,K.createElement)(t?w:z,{className:t?`animate-spin`:void 0}),className:`shrink-0`,children:`Update available`});return e?(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),e()},disabled:t,"aria-label":`Upgrade plugin`,className:`shrink-0 rounded-[6px] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:cursor-not-allowed`,children:n}):n}var Fe=300*1e3;function Ie({assistantId:e,name:t,enabled:n=!0}){return l({...se({path:{assistant_id:e,name:t}}),enabled:!!e&&!!t&&n,staleTime:Fe,retry:!1})}function Le(e){let t=e?.local?.localChanges;return!!t&&t?.clean===!1}function Re(e,t,n){let r=c(),i=n?.onRemoved,a=l({...oe({path:{assistant_id:e,name:t}}),enabled:!!e&&!!t}),o=Ie({assistantId:e,name:t,enabled:a.data?.installed??!1}).data,s=(0,K.useCallback)(()=>he(r,e,t),[e,t,r]),u=re({onSuccess:()=>{s(),N.success(`Installed ${t||`plugin`}`)}}),d=ne({onSuccess:()=>{s(),i?.()}}),f=ie({onSuccess:e=>{s(),N.success(e.outcome===`already-up-to-date`?`${t||`Plugin`} is already up to date`:`Upgraded ${t||`plugin`} to ${Y(e.toCommit)}`)}});return{plugin:a.data??null,drift:o,isLoading:a.isLoading,isError:a.isError,install:()=>{u.mutate({path:{assistant_id:e},body:{name:t}})},remove:()=>{d.mutate({path:{assistant_id:e,name:t}})},upgrade:()=>{f.mutate({path:{assistant_id:e,name:t},body:{}})},isInstalling:u.isPending,isRemoving:d.isPending,isUpgrading:f.isPending,isInstallError:u.isError,isRemoveError:d.isError,isUpgradeError:f.isError,hasLocalEdits:Le(o)}}function ze(e){let t=c(),n={queryKey:L({path:{assistant_id:e}})},r=(e,r)=>{t.setQueriesData(n,t=>t&&{...t,plugins:t.plugins.map(t=>t.name===e?{...t,enabled:r}:t)})},i=u({mutationFn:async({name:t,nextEnabled:n})=>{let r=await(n?F({path:{assistant_id:e,name:t},throwOnError:!1}):te({path:{assistant_id:e,name:t},throwOnError:!1})),i=r.response?.status;if(r.response?.ok||i===409)return r;throw Error(`Plugin toggle failed (${i??`network error`})`)},onMutate:async({name:e,nextEnabled:i})=>{await t.cancelQueries(n),r(e,i)},onError:(e,{name:t,nextEnabled:n})=>{r(t,!n),N.error(Ee)},onSettled:(n,r,i)=>{he(t,e,i.name)}});return{toggle:(e,t)=>{i.mutate({name:e,nextEnabled:t})},togglingName:i.isPending?i.variables?.name??null:null}}function Be({assistantId:e,name:t,onBack:n,externalHint:r,enabled:i}){let{plugin:o,drift:s,isLoading:c,isError:l,install:u,remove:d,upgrade:p,isInstalling:h,isRemoving:g,isUpgrading:_,isInstallError:v,isRemoveError:y,isUpgradeError:b,hasLocalEdits:x}=Re(e,t,{onRemoved:n}),{toggle:S,togglingName:C}=ze(e);return(0,q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col`,children:[(0,q.jsxs)(`div`,{className:`mb-4 flex items-start gap-3`,children:[(0,q.jsx)(a,{type:`button`,variant:`ghost`,iconOnly:(0,q.jsx)(m,{"aria-hidden":!0}),"aria-label":`Back to plugins`,onClick:n}),(0,q.jsx)(Ve,{name:t,plugin:o,externalHint:r,drift:s,onInstall:u,onRemove:d,onUpgrade:p,isInstalling:h,isRemoving:g,isUpgrading:_,hasLocalEdits:x,enabled:i,onToggle:()=>S(t,!i),isToggling:C===t})]}),(v||y||b)&&(0,q.jsx)(Me,{isInstallError:v,isRemoveError:y,isUpgradeError:b}),(0,q.jsx)(f.Root,{asChild:!0,children:(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-5`,children:c?(0,q.jsx)(Z,{}):l||!o?(0,q.jsx)(Q,{}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(X,{plugin:o,surfaces:s?.surfaces??null}),o.readme?(0,q.jsx)(H,{content:o.readme}):(0,q.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`This plugin doesn't ship a README.`})]})})})]})}function Ve({name:e,plugin:t,externalHint:n,drift:r,onInstall:i,onRemove:a,onUpgrade:o,isInstalling:s,isRemoving:c,isUpgrading:l,hasLocalEdits:u,enabled:d,onToggle:f,isToggling:p}){let m=t?.source?.kind===`github`,h=t?m:n,g=r?.status===`update-available`;return(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-3 sm:flex-row sm:items-center`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3`,children:[h===void 0?(0,q.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0`}):(0,q.jsx)(J,{external:h,size:`md`}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,q.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:t?.name??e}),t?.version?(0,q.jsxs)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:[`v`,t.version]}):null,t?(0,q.jsx)(Ne,{external:m}):null,g?(0,q.jsx)(Pe,{}):null]}),t?.description?(0,q.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-body-medium-lighter`,style:{color:`var(--content-secondary)`},children:t.description}):null]})]}),t?(0,q.jsx)(je,{plugin:t,drift:r,onInstall:i,onRemove:a,onUpgrade:o,isInstalling:s,isRemoving:c,isUpgrading:l,hasLocalEdits:u,enabled:d,onToggle:f,isToggling:p}):null]})}var He=e(i(),1);function Ue({assistantId:e,name:t,onBack:n,externalHint:r,enabled:i}){let{plugin:o,drift:s,isLoading:c,isError:l,install:u,remove:d,upgrade:p,isInstalling:h,isRemoving:g,isUpgrading:_,isInstallError:v,isRemoveError:y,isUpgradeError:b,hasLocalEdits:x}=Re(e,t,{onRemoved:n}),{toggle:S,togglingName:C}=ze(e),[w,T]=(0,K.useState)(null);(0,K.useEffect)(()=>{T(document.getElementById(`viewport-overlays`))},[]);let E=o?.source?.kind===`github`,D=o?E:r,O=s?.status===`update-available`,k=o?.name??t,A=(0,q.jsxs)(`div`,{className:`fixed inset-0 z-40 flex flex-col overflow-hidden bg-[var(--surface-overlay)]`,style:{paddingTop:`calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px)))`,paddingBottom:`calc(8px + var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)))`,paddingLeft:`calc(12px + var(--safe-area-inset-left, env(safe-area-inset-left, 0px)))`,paddingRight:`calc(12px + var(--safe-area-inset-right, env(safe-area-inset-right, 0px)))`},children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,q.jsx)(a,{variant:`ghost`,iconOnly:(0,q.jsx)(m,{"aria-hidden":!0}),expandOnMobile:!0,"aria-label":`Back to plugins`,onClick:n,className:`max-md:bg-[var(--surface-active)]`}),(0,q.jsx)(`span`,{className:`min-w-0 flex-1 truncate px-2 text-center text-body-medium-default`,style:{color:`var(--content-secondary)`},children:k}),(0,q.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0 touch-mobile:h-10 touch-mobile:w-10`})]}),(0,q.jsxs)(`div`,{className:`mt-4 flex flex-col gap-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[D===void 0?(0,q.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0`}):(0,q.jsx)(J,{external:D,size:`md`}),(0,q.jsx)(`h2`,{className:`min-w-0 truncate text-title-medium`,style:{color:`var(--content-emphasised)`},children:k})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[O?(0,q.jsx)(Pe,{}):null,o?(0,q.jsx)(Ne,{external:E}):null]})]}),o?.description?(0,q.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:o.description}):null]}),o?(0,q.jsx)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:(0,q.jsx)(je,{plugin:o,drift:s,enabled:i,onToggle:()=>S(t,!i),isToggling:C===t,onInstall:u,onRemove:d,onUpgrade:p,isInstalling:h,isRemoving:g,isUpgrading:_,hasLocalEdits:x})}):null,(v||y||b)&&(0,q.jsx)(`div`,{className:`mt-3`,children:(0,q.jsx)(Me,{isInstallError:v,isRemoveError:y,isUpgradeError:b})}),(0,q.jsx)(f.Root,{asChild:!0,noPadding:!0,children:(0,q.jsx)(`div`,{className:`mt-6 flex min-h-0 flex-1 flex-col overflow-hidden rounded-2xl border bg-[var(--surface-lift)]`,style:{borderColor:`var(--border-hover)`},children:(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4`,children:c?(0,q.jsx)(Z,{}):l||!o?(0,q.jsx)(Q,{}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(X,{plugin:o,surfaces:s?.surfaces??null}),o.readme?(0,q.jsx)(H,{content:o.readme}):(0,q.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`This plugin doesn't ship a README.`})]})})})})]});return w?(0,He.createPortal)(A,w):A}var We={value:`all`,label:`All`,icon:B},Ge={value:`available`,label:`Available`,icon:U};function Ke(e){return e?[We,{value:`active`,label:`Active`,icon:de},{value:`off`,label:`Off`,icon:ve},Ge]:[We,{value:`installed`,label:`Installed`,icon:V},Ge]}function qe({search:e,onSearchChange:t,filter:n,onFilterChange:r,isSearching:i=!1,categories:a,category:o,onCategoryChange:s,counts:c,totalCount:l,showCounts:u,pluginToggleSupported:d}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(A,{type:`search`,value:e,onChange:e=>{t(e.target.value)},placeholder:`Search plugins`,"aria-label":`Search plugins`,leftIcon:(0,q.jsx)(fe,{className:`h-4 w-4`,"aria-hidden":!0}),rightIcon:i?(0,q.jsx)(w,{className:`h-4 w-4 animate-spin`,"aria-hidden":!0}):void 0,fullWidth:!0,wrapperClassName:`flex-1`}),(0,q.jsx)(Je,{filter:n,onFilterChange:r,categories:a,category:o,onCategoryChange:s,counts:c,totalCount:l,showCounts:u,pluginToggleSupported:d})]})}function Je(e){let t=le(),[n,r]=(0,K.useState)(!1),i=(0,q.jsx)(a,{type:`button`,variant:`outlined`,iconOnly:(0,q.jsx)(v,{"aria-hidden":!0}),"aria-label":`Filter plugins`,"aria-haspopup":t?`dialog`:`listbox`,"aria-expanded":n,tintColor:`var(--primary-base)`});return t?(0,q.jsx)(Ye,{...e,open:n,onOpenChange:r,trigger:i}):(0,q.jsxs)(k.Root,{open:n,onOpenChange:r,children:[(0,q.jsx)(k.Trigger,{asChild:!0,children:i}),(0,q.jsx)(k.Content,{align:`end`,sideOffset:4,className:`w-44 overflow-hidden p-0`,children:(0,q.jsx)(`ul`,{role:`listbox`,children:(0,q.jsx)(Qe,{label:`Status`,options:Ke(e.pluginToggleSupported),selected:e.filter,onSelect:t=>{e.onFilterChange(t),r(!1)}})})})]})}function Ye({filter:e,onFilterChange:t,categories:n,category:r,onCategoryChange:i,counts:o,totalCount:s,showCounts:c,pluginToggleSupported:l,open:u,onOpenChange:d,trigger:f}){let p=[...n].sort((e,t)=>e.label.localeCompare(t.label));return(0,q.jsxs)(j.Root,{open:u,onOpenChange:d,children:[(0,q.jsx)(j.Trigger,{asChild:!0,children:f}),(0,q.jsxs)(j.Content,{className:`max-h-[85dvh]`,"aria-describedby":void 0,children:[(0,q.jsx)(`div`,{"aria-hidden":!0,className:`mx-auto mb-3 h-1 w-9 shrink-0 rounded-full bg-[var(--border-element)]`}),(0,q.jsx)(j.Header,{children:(0,q.jsx)(j.Title,{children:`Filters`})}),(0,q.jsxs)(j.Body,{className:`flex flex-col gap-3 pt-2`,children:[(0,q.jsx)(Xe,{label:`Status`,children:Ke(l).map(n=>(0,q.jsx)(Ze,{icon:n.icon,label:n.label,active:e===n.value,onSelect:()=>t(n.value)},n.value))}),n.length>0&&(0,q.jsxs)(Xe,{label:`Categories`,children:[(0,q.jsx)(Ze,{icon:B,label:`All`,active:r===null,badge:c?s:void 0,onSelect:()=>i(null)}),p.map(e=>(0,q.jsx)(Ze,{icon:b(e.icon)??B,label:e.label,active:r===e.slug,badge:c?o[e.slug]??0:void 0,onSelect:()=>i(e.slug)},e.slug))]})]}),(0,q.jsx)(j.Footer,{children:(0,q.jsx)(a,{type:`button`,variant:`primary`,fullWidth:!0,onClick:()=>d(!1),children:`Done`})})]})]})}function Xe({label:e,children:t}){return(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`px-2 pb-1 text-body-small-default uppercase tracking-wide`,style:{color:`var(--content-tertiary)`},children:e}),t]})}function Ze({icon:e,label:t,active:n,badge:r,onSelect:i}){return(0,q.jsx)(M,{icon:e,label:t,active:n,activeVariant:`branded`,badge:r,trailingAction:n&&r==null?(0,q.jsx)(h,{className:`h-4 w-4 text-[var(--primary-base)]`,"aria-hidden":!0}):void 0,onSelect:i})}function Qe({label:e,options:t,selected:n,onSelect:r}){return(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`div`,{className:`px-3 pb-1 pt-2 text-body-small-default uppercase tracking-wide`,style:{color:`var(--content-tertiary)`},children:e}),(0,q.jsx)(`ul`,{children:t.map(e=>{let t=e.icon,i=n===e.value;return(0,q.jsx)(`li`,{children:(0,q.jsxs)(`button`,{type:`button`,onClick:()=>r(e.value),role:`option`,"aria-selected":i,className:`flex w-full items-center gap-2 px-3 py-1.5 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{color:i?`var(--primary-base)`:`var(--content-default)`},children:[(0,q.jsx)(t,{className:`h-4 w-4`,"aria-hidden":!0}),(0,q.jsx)(`span`,{className:`flex-1`,children:e.label}),i&&(0,q.jsx)(V,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]})},e.value)})})]})}function $e({item:e,drift:t,onSelect:n,onInstall:r,onRemove:i,onUpgrade:o,isInstalling:s=!1,isRemoving:c=!1,isUpgrading:l=!1}){let u=e.status===`available`,d=t?.status===`update-available`,p=e.enabled!==void 0,m=e.enabled===!1;return(0,q.jsx)(f.Root,{asChild:!0,children:(0,q.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:n,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())},className:`flex cursor-pointer items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-[var(--surface-hover)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,q.jsx)(J,{size:`sm`,external:e.external,className:m?`opacity-50`:void 0}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:m?`var(--content-tertiary)`:`var(--content-emphasised)`},children:e.name}),e.version?(0,q.jsxs)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:[`v`,e.version]}):null,d?(0,q.jsx)(Pe,{onClick:o,isUpgrading:l}):null]}),(0,q.jsx)(`p`,{className:`mt-1 truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.description??`No description provided.`}),e.issues&&e.issues.length>0?(0,q.jsxs)(`p`,{className:`mt-1 truncate text-body-small-default`,style:{color:`var(--content-warning, var(--content-tertiary))`},title:e.issues.join(`; `),children:[e.issues[0],e.issues.length>1?` (+${e.issues.length-1} more)`:``]}):null]}),u?s?(0,q.jsx)(a,{type:`button`,iconOnly:(0,q.jsx)(w,{className:`animate-spin`,"aria-hidden":!0}),disabled:!0,"aria-label":`Installing`,expandOnMobile:!1}):(0,q.jsx)(a,{type:`button`,iconOnly:(0,q.jsx)(U,{"aria-hidden":!0}),onClick:e=>{e.stopPropagation(),r?.()},disabled:!r,"aria-label":`Install plugin`,expandOnMobile:!1}):(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[p?(0,q.jsx)(O,{tone:e.enabled?`positive`:`neutral`,children:e.enabled?`Enabled`:`Disabled`}):null,(0,q.jsx)(a,{type:`button`,variant:`dangerOutline`,iconOnly:c?(0,q.jsx)(w,{className:`animate-spin`,"aria-hidden":!0}):(0,q.jsx)(G,{"aria-hidden":!0}),onClick:e=>{e.stopPropagation(),i?.()},disabled:c||l||!i,"aria-label":`Remove plugin`,expandOnMobile:!1})]})]})})}var et=300*1e3,$=[],tt=[];async function nt(e,t,n){let r=await I({path:{assistant_id:e},query:{q:void 0,category:t},signal:n,throwOnError:!1});if(r.response?.status===404)return{plugins:[]};if(!r.response?.ok)throw Error(`Failed to load plugins`);return r.data??{plugins:[]}}function rt(e,t){let[n,r]=(0,K.useState)({assistantId:e,latched:!1}),i=n.assistantId===e?n.latched:!1;return n.assistantId!==e&&r({assistantId:e,latched:!1}),(0,K.useEffect)(()=>{t&&r(t=>t.assistantId===e&&t.latched?t:{assistantId:e,latched:!0})},[e,t]),i||t}function it(e,t=null){let n=t??void 0,r=l({queryKey:L({path:{assistant_id:e},query:{q:void 0,category:n}}),queryFn:({signal:t})=>nt(e,n,t),enabled:!!e,staleTime:et}),i=l({...pe(e),enabled:!!e&&t!==null}),a=l({...ae({path:{assistant_id:e},query:{q:void 0}}),enabled:!!e,staleTime:et}),o=(0,K.useMemo)(()=>{let e=t===null?r.data?.plugins:i.data?.plugins??r.data?.plugins;return new Set((e??$).map(e=>e.name))},[t,i.data?.plugins,r.data?.plugins]),s=(0,K.useMemo)(()=>{let e=r.data?.plugins??$,n=a.data?.matches??tt;return ke(De(e,(t===null?n:n.filter(e=>(e.category??`system`)===t)).filter(e=>!o.has(e.name))))},[r.data?.plugins,a.data?.matches,t,o]),u=t===null?r.data:i.data,d=rt(e,u?.categoryCounts!==void 0),f=rt(e,(u?.plugins??$).some(e=>e.enabled!==void 0)),p=c(),m=(0,K.useRef)(null);return(0,K.useEffect)(()=>{if(m.current===e||!a.isSuccess)return;let t=u?.plugins;if(!t?.length)return;let n=new Map((a.data?.matches??tt).map(e=>[e.name,e.category]));t.some(e=>{let t=n.get(e.name);return t!=null&&t!==`system`&&(e.category??`system`)===`system`})&&(m.current=e,p.invalidateQueries({queryKey:L({path:{assistant_id:e},query:{q:void 0}})}))},[e,a.isSuccess,a.data?.matches,u?.plugins,p]),{items:s,isLoading:r.isLoading,catalogLoading:a.isLoading,isError:r.isError,isFetching:r.isFetching||a.isFetching,catalogError:a.isError,categorySupported:d,pluginToggleSupported:f,installedCategoryCounts:u?.categoryCounts,installedPlugins:u?.plugins??$,installedTotal:u?.totalCount,catalogMatches:a.data?.matches??tt,unfilteredInstalledNames:o}}var at=`vellum:plugins:tipDismissed`;function ot({assistantId:e}){let r=c(),i=le(),[a,s]=o(),l=a.get(`plugin`),[u,d]=(0,K.useState)(``),[f,p]=(0,K.useState)(`all`),[m,h]=(0,K.useState)(null),[g,_]=(0,K.useState)(null),[v,b]=(0,K.useState)(null),[S,C]=(0,K.useState)(null),[w,T]=(0,K.useState)(null),[E,D]=(0,K.useState)(null),[O,k]=(0,K.useState)(()=>n(at,!1)),[A,ee]=(0,K.useState)(e);e!==A&&(ee(e),h(null));let j=e===A?m:null,{data:M=[]}=x(e),{items:F,isLoading:I,catalogLoading:te,isError:ae,isFetching:oe,catalogError:L,categorySupported:se,pluginToggleSupported:ce,installedCategoryCounts:ue,installedPlugins:R,installedTotal:de,catalogMatches:z,unfilteredInstalledNames:B}=it(e,j),V=(ce?[`all`,`active`,`off`,`available`]:[`all`,`installed`,`available`]).includes(f)?f:`all`,{counts:fe,totalCount:H}=st(ue,R,de,z,B,V),U=se&&M.length>0,W=(0,K.useCallback)(t=>he(r,e,t),[e,r]),pe=re({onMutate:e=>_(e.body.name),onSuccess:(e,t)=>N.success(`Installed ${t.body.name}`),onError:()=>N.error(Ce),onSettled:(e,t,n)=>{_(null),W(n.body.name)}}),me=ne({onMutate:e=>b(e.path.name),onSuccess:(e,t)=>N.success(`Removed ${t.path.name}`),onError:()=>N.error(we),onSettled:(e,t,n)=>{b(null),W(n.path.name)}}),G=ie({onMutate:e=>C(e.path.name),onSuccess:(e,t)=>N.success(e.outcome===`already-up-to-date`?`${t.path.name} is already up to date`:`Upgraded ${t.path.name} to ${Y(e.toCommit)}`),onError:()=>N.error(Te),onSettled:(e,t,n)=>{C(null),W(n.path.name)}}),ge=(0,K.useCallback)(e=>s(t=>{let n=new URLSearchParams(t);return n.set(`plugin`,e.name),n}),[s]),_e=(0,K.useCallback)(()=>s(e=>{let t=new URLSearchParams(e);return t.delete(`plugin`),t},{replace:!0}),[s]),ve=(0,K.useCallback)(t=>{pe.mutate({path:{assistant_id:e},body:{name:t.name}})},[e,pe]),ye=(0,K.useCallback)(()=>{w&&(me.mutate({path:{assistant_id:e,name:w.name}}),T(null))},[e,w,me]),J=(0,K.useCallback)(t=>{G.mutate({path:{assistant_id:e,name:t},body:{}})},[e,G]),Ee=(0,K.useCallback)(()=>{E&&(J(E.name),D(null))},[E,J]),De=(0,K.useCallback)((e,t)=>{if(Le(t)){D(e);return}J(e.name)},[J]),ke=(0,K.useCallback)(()=>{k(!0),t(at,!0)},[]),X=(0,K.useMemo)(()=>Ae(F,V).filter(e=>Oe(e,u)),[F,V,u]),je=oe&&!I,Z=u.trim().length>0;if(l){let t=F.find(e=>e.name===l),n={assistantId:e,name:l,externalHint:t?.external,enabled:t?.enabled,onBack:_e};return i?(0,q.jsx)(Ue,{...n}):(0,q.jsx)(Be,{...n})}let Q=(0,q.jsx)(`div`,{className:`min-w-0 flex-1 overflow-y-auto`,children:I?(0,q.jsx)(dt,{}):ae?(0,q.jsx)(ft,{}):X.length===0?te&&(V===`all`||V===`available`)?(0,q.jsx)(dt,{}):(0,q.jsx)(pt,{filter:V,category:j}):(0,q.jsx)(`ul`,{className:`flex flex-col gap-2`,children:X.map(t=>(0,q.jsx)(`li`,{children:t.status===`installed`?(0,q.jsx)(ct,{assistantId:e,item:t,onSelect:()=>ge(t),onRemove:()=>T(t),onUpgrade:e=>De(t,e),isRemoving:v===t.name,isUpgrading:S===t.name}):(0,q.jsx)($e,{item:t,onSelect:()=>ge(t),onInstall:()=>ve(t),isInstalling:g===t.name})},t.name))})});return(0,q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col gap-4`,children:[!O&&(0,q.jsx)(lt,{onDismiss:ke}),(0,q.jsx)(qe,{search:u,onSearchChange:d,filter:V,onFilterChange:p,isSearching:je,categories:U?M:[],category:j,onCategoryChange:h,counts:fe,totalCount:H,showCounts:!Z,pluginToggleSupported:ce}),L&&!I&&!ae?(0,q.jsx)(ut,{}):null,U?(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 gap-6`,children:[(0,q.jsx)(`aside`,{className:`hidden w-56 shrink-0 overflow-y-auto md:block`,children:(0,q.jsx)(y,{ariaLabel:`Plugin categories`,selected:j,onSelect:h,counts:fe,totalCount:H,showCounts:!Z,categories:M})}),Q]}):Q,(0,q.jsx)(P,{open:w!==null,title:`Remove plugin`,message:w?be(w.name):``,confirmLabel:`Remove`,destructive:!0,onConfirm:ye,onCancel:()=>T(null)}),(0,q.jsx)(P,{open:E!==null,title:`Upgrade plugin`,message:E?xe(E.name):``,confirmLabel:Se,destructive:!0,onConfirm:Ee,onCancel:()=>D(null)})]})}function st(e,t,n,r,i,a){return(0,K.useMemo)(()=>{let o={},s=a!==`available`,c=a===`all`||a===`available`,l=a===`active`||a===`off`,u=l?t.filter(e=>a===`off`?e.enabled===!1:e.enabled!==!1):t;if(s)if(!l&&e&&Object.keys(e).length>0)Object.assign(o,e);else for(let e of u){let t=e.category??`system`;o[t]=(o[t]??0)+1}let d=0;if(c)for(let e of r){if(i.has(e.name))continue;let t=e.category??`system`;o[t]=(o[t]??0)+1,d+=1}let f=l?u.length:n??t.length;return{counts:o,totalCount:(s?f:0)+d}},[e,t,n,r,i,a])}function ct({assistantId:e,item:t,onSelect:n,onRemove:r,onUpgrade:i,isRemoving:a,isUpgrading:o}){let s=Ie({assistantId:e,name:t.name}).data;return(0,q.jsx)($e,{item:t,drift:s,onSelect:n,onRemove:r,onUpgrade:()=>i(s),isRemoving:a,isUpgrading:o})}function lt({onDismiss:e}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-body-small-default`,style:{backgroundColor:`var(--surface-base)`,color:`var(--content-secondary)`},children:[(0,q.jsx)(T,{className:`h-4 w-4 shrink-0`,style:{color:`var(--primary-base)`}}),(0,q.jsx)(`p`,{className:`flex-1`,children:`Browse the catalog below to install plugins that extend your assistant.`}),(0,q.jsx)(a,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,q.jsx)(D,{"aria-hidden":!0}),onClick:e,"aria-label":`Dismiss tip`,tintColor:`var(--content-tertiary)`,expandOnMobile:!1})]})}function ut(){return(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-body-small-default`,style:{backgroundColor:`var(--surface-base)`,color:`var(--content-secondary)`},children:[(0,q.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`},"aria-hidden":!0}),(0,q.jsx)(`p`,{className:`flex-1`,children:`Catalog browsing is temporarily unavailable. Installed plugins are still listed below.`})]})}function dt(){return(0,q.jsx)(`div`,{className:`flex items-center justify-center py-16`,children:(0,q.jsx)(w,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})})}function ft(){return(0,q.jsx)(f.Root,{children:(0,q.jsxs)(f.Body,{className:`flex flex-col items-center justify-center py-16 text-center`,children:[(0,q.jsx)(E,{className:`mb-3 h-8 w-8`,style:{color:`var(--system-danger)`},"aria-hidden":!0}),(0,q.jsx)(`h3`,{className:`text-title-small`,style:{color:`var(--content-default)`},children:`Failed to load plugins`}),(0,q.jsx)(`p`,{className:`mt-1 max-w-sm text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Something went wrong. Try refreshing the page.`})]})})}function pt({filter:e,category:t}){let{title:n,subtitle:r,Icon:i}=mt(e,t);return(0,q.jsx)(f.Root,{children:(0,q.jsxs)(f.Body,{className:`flex flex-col items-center justify-center py-16 text-center`,children:[(0,q.jsx)(i,{className:`mb-3 h-8 w-8`,style:{color:`var(--content-tertiary)`},"aria-hidden":!0}),(0,q.jsx)(`h3`,{className:`text-title-small`,style:{color:`var(--content-default)`},children:n}),(0,q.jsx)(`p`,{className:`mt-1 max-w-sm text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:r})]})})}function mt(e,t){if(t)return{title:`No plugins in this category`,subtitle:`Try selecting a different category or clearing the filter.`,Icon:B};switch(e){case`installed`:return{title:`No Plugins Installed`,subtitle:`Browse the catalog to install plugins that extend your assistant.`,Icon:W};case`active`:return{title:`No Active Plugins`,subtitle:`Install a plugin from the catalog, or turn on an installed one.`,Icon:W};case`off`:return{title:`No Plugins Turned Off`,subtitle:`Installed plugins you turn off will appear here.`,Icon:W};case`available`:return{title:`No Plugins Available`,subtitle:`Every catalog plugin is already installed.`,Icon:V};default:return{title:`No Plugins Found`,subtitle:`Browse the catalog to install plugins that extend your assistant.`,Icon:W}}}function ht(){let e=ue.use.version(),t=_e(),n=ge();return e===null?null:t?(0,q.jsx)(ot,{assistantId:n}):(0,q.jsx)(s,{to:ce.identity,replace:!0})}export{ht as PluginsPage};
@@ -1 +0,0 @@
1
- import{n as e}from"./utils-Cv6Fontd.js";var t=`0.10.3`;function n(){return e(t)}export{n as t};