@vellumai/web 0.11.0-staging.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/dist/assets/{AnimatePresence-DPfyu3ET.js → AnimatePresence-xdH2KLtr.js} +1 -1
  2. package/dist/assets/{BundleConfirmPage-CChUOtcg.js → BundleConfirmPage-4StSZy-f.js} +1 -1
  3. package/dist/assets/{a2a-invite-pyBtaaeG.js → a2a-invite-C1xJNSGF.js} +1 -1
  4. package/dist/assets/{about-page-DGUK5p8j.js → about-page-C3tJLjvD.js} +1 -1
  5. package/dist/assets/access-B_b48snn.js +1 -0
  6. package/dist/assets/{account-page-D3ERiewh.js → account-page-BvXVc1IK.js} +1 -1
  7. package/dist/assets/{account-shell-Dk4aC-Ls.js → account-shell-D6aWpePp.js} +1 -1
  8. package/dist/assets/{acp-run-actions-BH8wuBAL.js → acp-run-actions-8ioRAI8C.js} +1 -1
  9. package/dist/assets/{acp-run-detail-panel-dqVK6rPq.js → acp-run-detail-panel-B8ULpnis.js} +1 -1
  10. package/dist/assets/{acp-run-store-B_eDLRwl.js → acp-run-store-CpH4OeOS.js} +1 -1
  11. package/dist/assets/{activity-steps-panel-xxl2hu3E.js → activity-steps-panel-D8fAVo9_.js} +1 -1
  12. package/dist/assets/{add-credential-modal-CY_--m8L.js → add-credential-modal-Cu6aAlhm.js} +1 -1
  13. package/dist/assets/{add-credits-modal-fT_gTTP5.js → add-credits-modal-BelWmezc.js} +1 -1
  14. package/dist/assets/{ai-page-B02NwVRu.js → ai-page-Dd-qECGn.js} +1 -1
  15. package/dist/assets/{animated-avatar-BcgncPkc.js → animated-avatar-DknFwi9-.js} +1 -1
  16. package/dist/assets/{api-C3QSs67k.js → api-BpGogBsg.js} +1 -1
  17. package/dist/assets/{api-LG8zI3nK.js → api-Coj5enET.js} +1 -1
  18. package/dist/assets/{api-key-screen-CvBdN6Ae.js → api-key-screen-BhynbUuC.js} +1 -1
  19. package/dist/assets/{app-card-CAaFL1oB.js → app-card-BF2l9ot8.js} +1 -1
  20. package/dist/assets/{app-info-DefDjPEl.js → app-info-fS0zIUcN.js} +1 -1
  21. package/dist/assets/{archive-redirect-page-BH7h0Lk7.js → archive-redirect-page-DOF2veAy.js} +1 -1
  22. package/dist/assets/{assistant-feature-flag-store-CAdgpPiS.js → assistant-feature-flag-store-B00tpY5e.js} +1 -1
  23. package/dist/assets/assistant-identity-store-6On4WZ62.js +1 -0
  24. package/dist/assets/{assistant-status-panel-BTnD-jhG.js → assistant-status-panel-D2PXdHw0.js} +1 -1
  25. package/dist/assets/{auth-store-5qq59BAN.js → auth-store-EmLZOAkN.js} +2 -2
  26. package/dist/assets/{avatar-random-BMSYTcJK.js → avatar-random-DjmD5llT.js} +1 -1
  27. package/dist/assets/{avatar-renderer-ClUVcQmf.js → avatar-renderer-BrNjnimz.js} +1 -1
  28. package/dist/assets/{background-task-actions-DmP5s0oO.js → background-task-actions-B1bLmbnw.js} +1 -1
  29. package/dist/assets/{background-task-detail-panel-BCYAElGc.js → background-task-detail-panel-56ZpprL7.js} +1 -1
  30. package/dist/assets/{background-task-store-DMP8ByUq.js → background-task-store-C5J8CFan.js} +1 -1
  31. package/dist/assets/billing-page-CbelI-Ui.js +3 -0
  32. package/dist/assets/billing-redirect-page-BIfv18MY.js +1 -0
  33. package/dist/assets/{bookmarks-page-D_Jr-a4Q.js → bookmarks-page-BOhi-7gN.js} +1 -1
  34. package/dist/assets/{browser-CTZVDjOL.js → browser-DvKwnK9l.js} +2 -2
  35. package/dist/assets/{build-state-m0LQ5Iis.js → build-state-C_Hy9WqC.js} +1 -1
  36. package/dist/assets/calendar-RYdAv74D.js +1 -0
  37. package/dist/assets/{capture-error-Bj8_eutd.js → capture-error-Dj49ma74.js} +1 -1
  38. package/dist/assets/channels-page-route-CiOtL1JY.js +9 -0
  39. package/dist/assets/{chat-avatar-CvEA6z0H.js → chat-avatar-C9l3drVu.js} +1 -1
  40. package/dist/assets/{chat-layout-slots-store-BJfYGnd7.js → chat-layout-slots-store-KQz1WMKU.js} +1 -1
  41. package/dist/assets/{chat-markdown-message-rxPKNeTx.js → chat-markdown-message-9ogr9-mn.js} +2 -2
  42. package/dist/assets/{checkbox-CRmgkYah.js → checkbox-D7Eg2K35.js} +1 -1
  43. package/dist/assets/checkout-continuation-DmIXoV4L.js +1 -0
  44. package/dist/assets/checkout-page-2Xr9vx27.js +1 -0
  45. package/dist/assets/checkout-return-target-DQBOhh64.js +1 -0
  46. package/dist/assets/{client-feature-flag-store-CMncoan8.js → client-feature-flag-store-BdNCabm_.js} +1 -1
  47. package/dist/assets/{client-identity-DhkdvP5w.js → client-identity-yPmEu-I1.js} +1 -1
  48. package/dist/assets/{command-palette-BTaT__fo.js → command-palette-CzbYrcNM.js} +1 -1
  49. package/dist/assets/{command-palette-window-page-gq0zowBe.js → command-palette-window-page-CHQdRfhu.js} +1 -1
  50. package/dist/assets/{community-page-CsEKt9wX.js → community-page-_nhJqpCD.js} +1 -1
  51. package/dist/assets/{confirm-dialog-UYFm4osC.js → confirm-dialog-D-Yjf2uS.js} +1 -1
  52. package/dist/assets/{connect-page-B4aTS7Yj.js → connect-page-DS-7aFqU.js} +1 -1
  53. package/dist/assets/consent-c8EJ3D2A.js +1 -0
  54. package/dist/assets/{consent-controls-OcgxuxS0.js → consent-controls-DVeAjj2Z.js} +1 -1
  55. package/dist/assets/{contacts-gateway-B6OrAmU3.js → contacts-gateway-BlLLBft6.js} +1 -1
  56. package/dist/assets/{contacts-page-route-DNoCUXE7.js → contacts-page-route-eTUOUhJL.js} +1 -1
  57. package/dist/assets/{conversation-cache-DKvwwWNo.js → conversation-cache-CqrrtLGM.js} +1 -1
  58. package/dist/assets/{conversation-list-fetchers-DM-Y61u5.js → conversation-list-fetchers-CavIngGf.js} +1 -1
  59. package/dist/assets/{conversation-navigation-DsN0hcpL.js → conversation-navigation-D8y9l5qL.js} +1 -1
  60. package/dist/assets/{conversation-queries-CWvK6RLK.js → conversation-queries-688XB7Bh.js} +1 -1
  61. package/dist/assets/{conversation-store-C--wWMNW.js → conversation-store-D_eevw7L.js} +1 -1
  62. package/dist/assets/{credential-entry-page-CHinHO85.js → credential-entry-page-C22Mw_ea.js} +1 -1
  63. package/dist/assets/{credentials-page-BsJFuOc9.js → credentials-page-da3G5EjN.js} +1 -1
  64. package/dist/assets/{danger-zone-redirect-page-SU45WI74.js → danger-zone-redirect-page-QELjAt0B.js} +1 -1
  65. package/dist/assets/{debug-page-BziypDgA.js → debug-page-BElAND4u.js} +2 -2
  66. package/dist/assets/{deploy-dialogs-DZSd5o9b.js → deploy-dialogs-DcxJ8zmL.js} +1 -1
  67. package/dist/assets/{deploy-store-D6snB1j5.js → deploy-store-Dxp-S0Jo.js} +1 -1
  68. package/dist/assets/{detail-card-Du8OuE3q.js → detail-card-BiNdiBiS.js} +1 -1
  69. package/dist/assets/{detail-panel-stop-button-BNuh6N0s.js → detail-panel-stop-button-CZuQfGZs.js} +1 -1
  70. package/dist/assets/{detail-shell-Cyqr5FXJ.js → detail-shell-DB1cQBnE.js} +1 -1
  71. package/dist/assets/{developer-page-QMFEIyBS.js → developer-page-Ck66ks9T.js} +1 -1
  72. package/dist/assets/{devices-redirect-page-B14wK98N.js → devices-redirect-page-B3KUr7o2.js} +1 -1
  73. package/dist/assets/{diagnostics-T_96Uyh5.js → diagnostics-9AhdBjYA.js} +1 -1
  74. package/dist/assets/{dictation-overlay-pePw7mLd.js → dictation-overlay-CRLGSCST.js} +1 -1
  75. package/dist/assets/{dictation-overlay-page-DtgaXzdF.js → dictation-overlay-page-DHI92ftK.js} +1 -1
  76. package/dist/assets/{dist-oCfq2a_n.js → dist-CXcArvGs.js} +1 -1
  77. package/dist/assets/{dist-DC9QooLF.js → dist-Ckcpfjj7.js} +1 -1
  78. package/dist/assets/{doctor-handoff-store-CYjL1S0n.js → doctor-handoff-store-DPviL0wb.js} +1 -1
  79. package/dist/assets/{document-viewer-container-B7TEDeV0.js → document-viewer-container-Dxc95Z_9.js} +2 -2
  80. package/dist/assets/{document-viewer-page-3Eq8L562.js → document-viewer-page-ClsAgnVX.js} +1 -1
  81. package/dist/assets/{edge-swipe-arbiter-store-CQnDi2yf.js → edge-swipe-arbiter-store-QUBer3EI.js} +1 -1
  82. package/dist/assets/effective-timezone-CnKC3vj0.js +1 -0
  83. package/dist/assets/emails-page-D1eq8Mcq.js +1 -0
  84. package/dist/assets/{environment-store-Bft0lpgv.js → environment-store-nuDZk7wN.js} +1 -1
  85. package/dist/assets/esm-0ejhUWK7.js +2 -0
  86. package/dist/assets/esm-BPFGl7Zp.js +2 -0
  87. package/dist/assets/esm-C2uShH10.js +2 -0
  88. package/dist/assets/esm-CAByj-hK.js +2 -0
  89. package/dist/assets/esm-Cn1fOTtj.js +2 -0
  90. package/dist/assets/esm-Df-J9imF.js +1 -0
  91. package/dist/assets/{esm-Dk6A-sQ0.js → esm-t0mP3xUe.js} +2 -2
  92. package/dist/assets/{eye-bbox-C_V87iLg.js → eye-bbox-u0VzlPuw.js} +1 -1
  93. package/dist/assets/{file-editor-phorJEVv.js → file-editor-plAxQBKk.js} +1 -1
  94. package/dist/assets/{file-markdown-DaflJFk7.js → file-markdown-B0zje_y3.js} +1 -1
  95. package/dist/assets/first-run-scope-Br96Z0Ol.js +1 -0
  96. package/dist/assets/{funnel-events-n2IVlwTo.js → funnel-events-BqvFi8Sp.js} +1 -1
  97. package/dist/assets/{general-page-lbkufqHg.js → general-page-mGY10EuY.js} +1 -1
  98. package/dist/assets/get-memory-stats-CdA2IhkV.js +1 -0
  99. package/dist/assets/{haptics-DvWjk9Fg.js → haptics-BTcSZuHP.js} +2 -2
  100. package/dist/assets/{hatching-screen-D81diZoa.js → hatching-screen-DwNw31vj.js} +1 -1
  101. package/dist/assets/{home-page-route-CHe8eoLz.js → home-page-route-B2ScoHEE.js} +1 -1
  102. package/dist/assets/{hosting-screen-D9atAksQ.js → hosting-screen-DKijoYxW.js} +1 -1
  103. package/dist/assets/identity-page-route-DD_U3Te5.js +7 -0
  104. package/dist/assets/{index-0f48hi7h.js → index-BEpJ8S2b.js} +3 -3
  105. package/dist/assets/{ingest-BizI657K.js → ingest-D3dRmJA9.js} +1 -1
  106. package/dist/assets/{inspect-page-COwvbHtX.js → inspect-page-DVgajY0Q.js} +3 -3
  107. package/dist/assets/{installed-plugins-query-Cgek0q7G.js → installed-plugins-query-s6Kf3pL8.js} +1 -1
  108. package/dist/assets/{integration-icon-dv-9Zzx3.js → integration-icon-CmjrEk0J.js} +1 -1
  109. package/dist/assets/{integrations-page-CJOBwxXp.js → integrations-page-BnPiOw9v.js} +1 -1
  110. package/dist/assets/intelligence-layout-DfdvpHl4.js +1 -0
  111. package/dist/assets/invalidate-memory-queries-D8VNhm2x.js +1 -0
  112. package/dist/assets/{invalidate-plugin-queries-C3NTXkCX.js → invalidate-plugin-queries-v7687-U8.js} +1 -1
  113. package/dist/assets/{keyboard-shortcuts-redirect-page-CBI_mZIL.js → keyboard-shortcuts-redirect-page-DMytLINR.js} +1 -1
  114. package/dist/assets/{latest-assistant-text-DOepZ_Io.js → latest-assistant-text-BIlBGS_i.js} +1 -1
  115. package/dist/assets/library-detail-page-BzvbB9Ud.js +1 -0
  116. package/dist/assets/{library-page-CNA794WY.js → library-page-DK2Dx8vo.js} +1 -1
  117. package/dist/assets/{list-row-B1wPb2Au.js → list-row-BOvxGO5h.js} +1 -1
  118. package/dist/assets/{local-mode-BTovbt13.js → local-mode-BKousn41.js} +1 -1
  119. package/dist/assets/{local-runtime-upgrade-Bqn3d7Q7.js → local-runtime-upgrade-COcJaRWH.js} +1 -1
  120. package/dist/assets/login-flow-BVUkpWP_.js +1 -0
  121. package/dist/assets/login-page-BR42WUVt.js +1 -0
  122. package/dist/assets/{logout-page-CpFeuLA_.js → logout-page-B8EOSvAV.js} +1 -1
  123. package/dist/assets/{logs-layout-BUiPeZ4I.js → logs-layout-DK6gVU21.js} +1 -1
  124. package/dist/assets/memory-page-route-CW1Fgh6X.js +2 -0
  125. package/dist/assets/{memory-router-playground-page-D4UIq8mw.js → memory-router-playground-page-B-6Yt7rp.js} +1 -1
  126. package/dist/assets/{menu-BvjhxZo7.js → menu-BKrcAFYk.js} +1 -1
  127. package/dist/assets/{messages-CFcAW4iz.js → messages-BuqyOjvT.js} +1 -1
  128. package/dist/assets/{metric-card-05a5slPx.js → metric-card-j9s-2nkl.js} +1 -1
  129. package/dist/assets/{mobile-sidebar-drawer-DtKU2vlu.js → mobile-sidebar-drawer-BLGt_R0d.js} +1 -1
  130. package/dist/assets/{modal-BR4CUFBd.js → modal-CoOkN7c0.js} +1 -1
  131. package/dist/assets/mutation-error-DoEwwcm3.js +1 -0
  132. package/dist/assets/native-anchor-BeAcmUWk.js +1 -0
  133. package/dist/assets/{native-biometric-BAMIyaSS.js → native-biometric-DUHF57O_.js} +1 -1
  134. package/dist/assets/{native-file-ySSv1sQ7.js → native-file-CfGNNXKe.js} +2 -2
  135. package/dist/assets/navigation-resolver-BIPJSTY5.js +1 -0
  136. package/dist/assets/{not-found-OqaWNmdx.js → not-found-Dh7Vxgjl.js} +1 -1
  137. package/dist/assets/{notice-BMK7xqUw.js → notice-B6naz_-V.js} +1 -1
  138. package/dist/assets/{notifications-page-ClfcJeLf.js → notifications-page-BB5kRj1s.js} +1 -1
  139. package/dist/assets/{oauth-complete-page-rVmA2Cl8.js → oauth-complete-page-01jk0-Xz.js} +1 -1
  140. package/dist/assets/{oauth-connection-utils-CWPUW4MK.js → oauth-connection-utils-DhmVsbum.js} +1 -1
  141. package/dist/assets/{oauth-popup-complete-page-DBsOvLES.js → oauth-popup-complete-page-DdR3sLCH.js} +1 -1
  142. package/dist/assets/{onboarding-layout-DLs1hfp_.js → onboarding-layout-CYU5QNQ5.js} +1 -1
  143. package/dist/assets/{onboarding-store-bZ2qYISk.js → onboarding-store-CHsGFmyD.js} +1 -1
  144. package/dist/assets/open-workspace-file-AUDky4i4.js +2 -0
  145. package/dist/assets/{page-empty-state-DT-tC1u6.js → page-empty-state-DTRXFoHj.js} +1 -1
  146. package/dist/assets/{page-shell-C7SUgga9.js → page-shell-Ns8K4aqQ.js} +1 -1
  147. package/dist/assets/{pairing-page-ZkFipOSH.js → pairing-page-COqX_5vT.js} +1 -1
  148. package/dist/assets/{panel-item-CrtoJCrd.js → panel-item-CQt19wOM.js} +1 -1
  149. package/dist/assets/{password-reset-page-iASQZawH.js → password-reset-page-Ck1m9qRW.js} +1 -1
  150. package/dist/assets/{personality-page-BJpW3UXD.js → personality-page-B0GpJMv5.js} +1 -1
  151. package/dist/assets/plans-page-GiIsWq7v.js +1 -0
  152. package/dist/assets/{platform-detection-XEAAu4c-.js → platform-detection-D1fBX4KG.js} +1 -1
  153. package/dist/assets/{platform-login-notice-CdYiKsE8.js → platform-login-notice-D_-ZVyk8.js} +1 -1
  154. package/dist/assets/platform-loopback-page-B68rydoU.js +1 -0
  155. package/dist/assets/{plugin-detail-page-Bx2wzKEf.js → plugin-detail-page-DGzmeb3j.js} +1 -1
  156. package/dist/assets/plugins-page-C7Xd3LTL.js +1 -0
  157. package/dist/assets/plugins-surface-BGSKlIwH.js +1 -0
  158. package/dist/assets/{popover-BRpYVASI.js → popover-CDZiHp1D.js} +1 -1
  159. package/dist/assets/{prefs-bw85lYLp.js → prefs-BplCYXxl.js} +1 -1
  160. package/dist/assets/{privacy-page-B0QN4qZO.js → privacy-page-NhPZ8klL.js} +1 -1
  161. package/dist/assets/{privacy-screen-vp4uUpm6.js → privacy-screen-hSx7ZwqA.js} +1 -1
  162. package/dist/assets/{provider-callback-page-BH6DES7c.js → provider-callback-page-Dkxi-_kI.js} +1 -1
  163. package/dist/assets/{provider-key-D2Nsf9zh.js → provider-key-B07UMm1T.js} +1 -1
  164. package/dist/assets/provider-signup-page-BapnHqaW.js +1 -0
  165. package/dist/assets/{provisioning-targets-BTjyR9nk.js → provisioning-targets-epeYMPhZ.js} +1 -1
  166. package/dist/assets/{quick-input-page-Dq-0BGrJ.js → quick-input-page-DnjOMI1n.js} +1 -1
  167. package/dist/assets/{react-query.gen-BC3STDmV.js → react-query.gen-9VRdubOj.js} +1 -1
  168. package/dist/assets/{react-query.gen-C5c1Acuq.js → react-query.gen-BeiAUt-2.js} +1 -1
  169. package/dist/assets/{remote-gateway-session-yRYdsfDx.js → remote-gateway-session-DJ1rzXEw.js} +1 -1
  170. package/dist/assets/{research-facts-B7Ev1zv0.js → research-facts-B5ItKoAK.js} +1 -1
  171. package/dist/assets/{research-mock-page-BJEpxdMv.js → research-mock-page-gbOSvFQL.js} +1 -1
  172. package/dist/assets/{research-onboarding-persistence-51lJoYJ2.js → research-onboarding-persistence-CgJDwdl9.js} +1 -1
  173. package/dist/assets/{research-onboarding-route-CFL3q__m.js → research-onboarding-route-DpgbtSS0.js} +1 -1
  174. package/dist/assets/{research-results-view-C4sIw2gK.js → research-results-view-WQsLxBlE.js} +1 -1
  175. package/dist/assets/{resolved-assistants-store-Dw5UuGyB.js → resolved-assistants-store-FEmi1gGu.js} +1 -1
  176. package/dist/assets/{retire-confirm-dialog-CsSY2-T8.js → retire-confirm-dialog-CFJqb_EM.js} +1 -1
  177. package/dist/assets/review-terms-screen-c4Vt5WqP.js +1 -0
  178. package/dist/assets/{risk-CdT92Vqr.js → risk-RmzL2Rk_.js} +2 -2
  179. package/dist/assets/routes-CsoiCk2y.js +1 -0
  180. package/dist/assets/routes-NQmj27cY.js +23 -0
  181. package/dist/assets/{runtime-upgrade-banner-DPqzKtZU.js → runtime-upgrade-banner-BM2b81eK.js} +2 -2
  182. package/dist/assets/{schedules-6hzhR_C_.js → schedules-BMEs36wC.js} +1 -1
  183. package/dist/assets/schedules-page-BkOE2joT.js +1 -0
  184. package/dist/assets/{sdk.gen-BIu1DgTs.js → sdk.gen-DHJ7Pbqq.js} +1 -1
  185. package/dist/assets/{security-redirect-page-4DKqyPsf.js → security-redirect-page-CMMujz_x.js} +1 -1
  186. package/dist/assets/{select-assistant-screen-CVV3iqMy.js → select-assistant-screen-S526udI9.js} +1 -1
  187. package/dist/assets/{setting-row-BwXKepmJ.js → setting-row-D10FtQcP.js} +1 -1
  188. package/dist/assets/{settings-CfuLzwIw.js → settings-PGZ9c_uo.js} +1 -1
  189. package/dist/assets/{settings-divider-Ro7lPCkV.js → settings-divider-CItcvksF.js} +1 -1
  190. package/dist/assets/settings-layout-DKr7K-B6.js +1 -0
  191. package/dist/assets/{settings-navigation-CSG7jiyJ.js → settings-navigation-ji_jJYq2.js} +1 -1
  192. package/dist/assets/{share-feedback-modal-BoWCg4KH.js → share-feedback-modal-GLBRzcZa.js} +1 -1
  193. package/dist/assets/{sidebar-tree-C_PPNHe5.js → sidebar-tree-CEPitR5K.js} +1 -1
  194. package/dist/assets/signup-page-C0y2CTKm.js +1 -0
  195. package/dist/assets/{signup-shell-CMsBZ8vG.js → signup-shell-DxP2zqed.js} +1 -1
  196. package/dist/assets/{site-favicon-BB1pYWLF.js → site-favicon-Dx98M-cB.js} +1 -1
  197. package/dist/assets/{skill-detail-page-CTobyK6L.js → skill-detail-page-o3EhI_Q2.js} +1 -1
  198. package/dist/assets/{skill-detail-panel-CNzionF7.js → skill-detail-panel-DdQL6oky.js} +1 -1
  199. package/dist/assets/{skills-Cum1XWT2.js → skills-DT9YkYm6.js} +1 -1
  200. package/dist/assets/{skills-page-DZVxAbua.js → skills-page-BtFhw8jF.js} +1 -1
  201. package/dist/assets/{slack-setup-wizard-DK2F8LXc.js → slack-setup-wizard-C6ALDSEa.js} +1 -1
  202. package/dist/assets/{sound-manager-Bx-OcMAz.js → sound-manager-Dy2ohKg4.js} +1 -1
  203. package/dist/assets/{sounds-page-C45-RF4i.js → sounds-page-D4kMljoY.js} +1 -1
  204. package/dist/assets/{src-te3YTBG-.js → src-CnF7WXNj.js} +1 -1
  205. package/dist/assets/{start-screen-CkJiCl9b.js → start-screen-BiV4V5J1.js} +1 -1
  206. package/dist/assets/{subagent-detail-panel-DyyMdaNO.js → subagent-detail-panel-Cvmfu7Ym.js} +1 -1
  207. package/dist/assets/{subagent-store-MDi6lBXs.js → subagent-store-B2Uhma4F.js} +1 -1
  208. package/dist/assets/superpowers-page-CPBz-c5i.js +1 -0
  209. package/dist/assets/{system-events-page-DXAU01ZO.js → system-events-page-CpUI1rsZ.js} +1 -1
  210. package/dist/assets/{system-events-redirect-page-Bm9bipNo.js → system-events-redirect-page-BQrnMF4i.js} +1 -1
  211. package/dist/assets/{tag-NXcyiTkK.js → tag-Dn1d6hKF.js} +1 -1
  212. package/dist/assets/{theme-stage-page-BDTCmutO.js → theme-stage-page-CW3erTQ4.js} +1 -1
  213. package/dist/assets/{threshold-presets-BdTTHCnm.js → threshold-presets-ByKylDXk.js} +1 -1
  214. package/dist/assets/{tiptap-document-editor-CHn2wCDv.js → tiptap-document-editor-CbPrzkBM.js} +1 -1
  215. package/dist/assets/{toast-LgLp4obE.js → toast-BcMdOTp1.js} +1 -1
  216. package/dist/assets/{tool-detail-panel-DFrWEWKG.js → tool-detail-panel-DyfiRoE5.js} +1 -1
  217. package/dist/assets/{transcript-message-body-shared-D9_d2c2X.js → transcript-message-body-shared-Cb89j7p1.js} +1 -1
  218. package/dist/assets/{trust-rules-api-B5lfygCA.js → trust-rules-api-CVYU31TU.js} +1 -1
  219. package/dist/assets/upgrade-cancel-page-BSAoMrm5.js +1 -0
  220. package/dist/assets/{upgrade-success-page-Cb1Gl4MM.js → upgrade-success-page-CooDWnEr.js} +1 -1
  221. package/dist/assets/{usage-redirect-page-BOfJ7uot.js → usage-redirect-page-DtwSt4vM.js} +1 -1
  222. package/dist/assets/{use-active-assistant-id-CldxA_-M.js → use-active-assistant-id-CUKao_nq.js} +1 -1
  223. package/dist/assets/{use-app-theme-Dg8A6vPA.js → use-app-theme-BhnyqHgJ.js} +1 -1
  224. package/dist/assets/{use-assistant-avatar-bwLHcMz4.js → use-assistant-avatar-BcObK2L0.js} +1 -1
  225. package/dist/assets/{use-assistant-capability-CDS7GbSO.js → use-assistant-capability-BdWmg2Vg.js} +1 -1
  226. package/dist/assets/{use-assistant-identity-details-9JRWxXTQ.js → use-assistant-identity-details-BdFppz9B.js} +1 -1
  227. package/dist/assets/{use-avatar-accent-var-vpakP1ce.js → use-avatar-accent-var-rnSeYvBI.js} +1 -1
  228. package/dist/assets/{use-bookmarks-CK-nOiT-.js → use-bookmarks-DtteniG3.js} +1 -1
  229. package/dist/assets/{use-bundled-avatar-components-Bbs4vCnX.js → use-bundled-avatar-components-B1ARUeam.js} +2 -2
  230. package/dist/assets/{use-bus-subscription-nUrbz9Mu.js → use-bus-subscription-NoXmdzgx.js} +1 -1
  231. package/dist/assets/{use-checkout-dismiss-refresh-CqGR_OsB.js → use-checkout-dismiss-refresh-wRSmB_TU.js} +1 -1
  232. package/dist/assets/use-command-palette-sections-GAugkmjU.js +1 -0
  233. package/dist/assets/{use-discord-nudge-C_QdHIeX.js → use-discord-nudge-h0WPtIp6.js} +1 -1
  234. package/dist/assets/{use-edge-swipe-Wm9pU2HX.js → use-edge-swipe-DDntz5ZJ.js} +1 -1
  235. package/dist/assets/{use-edge-swipe-back-BcSHNCwS.js → use-edge-swipe-back-Rp4TEihl.js} +1 -1
  236. package/dist/assets/{use-edit-app-B_Nequzs.js → use-edit-app-BSbRuVnn.js} +1 -1
  237. package/dist/assets/{use-effective-timezone-Dqs8OaXJ.js → use-effective-timezone-Om_EkJxK.js} +1 -1
  238. package/dist/assets/{use-invite-link-dialog-CPPOduk8.js → use-invite-link-dialog-yw1dtYd_.js} +1 -1
  239. package/dist/assets/{use-ios-app-nudge-B-ojl-b1.js → use-ios-app-nudge-CeOXecJj.js} +1 -1
  240. package/dist/assets/{use-is-org-ready-C5xlYywh.js → use-is-org-ready-BrKAc9Df.js} +1 -1
  241. package/dist/assets/{use-onboarding-login-DI5gvqEG.js → use-onboarding-login-DsCjVy0U.js} +1 -1
  242. package/dist/assets/{use-platform-assistant-id-DOsSt6k1.js → use-platform-assistant-id-DSR1LFZF.js} +1 -1
  243. package/dist/assets/{use-platform-gate-C65D14xY.js → use-platform-gate-Cv2oOK8C.js} +1 -1
  244. package/dist/assets/{use-reduced-motion-W1fCe3vS.js → use-reduced-motion-D0Rb5Fd_.js} +1 -1
  245. package/dist/assets/use-return-to-short-circuit-DEKlWitV.js +1 -0
  246. package/dist/assets/{use-save-twilio-credentials-c9xG9RPK.js → use-save-twilio-credentials-CecOWIyh.js} +1 -1
  247. package/dist/assets/{use-skill-actions-BAAx1Eia.js → use-skill-actions-DTznrJR1.js} +1 -1
  248. package/dist/assets/{use-skill-detail-files-BvOKvY0-.js → use-skill-detail-files-CKgT7qkY.js} +1 -1
  249. package/dist/assets/{use-sticky-profiles-CdWX0mgI.js → use-sticky-profiles-CdiEmubF.js} +1 -1
  250. package/dist/assets/{use-subagent-card-data-DHuNtSy9.js → use-subagent-card-data-DJujXR76.js} +1 -1
  251. package/dist/assets/{use-supports-bookmarks-C3J7FtDn.js → use-supports-bookmarks-D4_-FkJA.js} +1 -1
  252. package/dist/assets/use-supports-credentials-settings-CGDLraXI.js +1 -0
  253. package/dist/assets/{use-swipe-engine-6PcZZMVD.js → use-swipe-engine-ehsGV4fb.js} +1 -1
  254. package/dist/assets/{utils-B0rBxtYP.js → utils-CP1NAeej.js} +1 -1
  255. package/dist/assets/{utils-CnB60ZJN.js → utils-D8KOSvh3.js} +1 -1
  256. package/dist/assets/{viewer-store-DLk-jp8U.js → viewer-store-BVsBGqdn.js} +1 -1
  257. package/dist/assets/{voice-list-CW8mzaHU.js → voice-list-DeqvOR_J.js} +1 -1
  258. package/dist/assets/{voice-page-0zsCIOdT.js → voice-page-Cas-WIf4.js} +1 -1
  259. package/dist/assets/voice-picker-modal-D0K6miA1.js +1 -0
  260. package/dist/assets/{weather-forecast-display-BAAnrNdd.js → weather-forecast-display-JW8ecLNy.js} +1 -1
  261. package/dist/assets/{web-9Cwi5jnT.js → web-BTtRunTK.js} +1 -1
  262. package/dist/assets/{web-Bi-BvsRt.js → web-Bd-5Eyoa.js} +1 -1
  263. package/dist/assets/{web-D486_dlv.js → web-ByAAA1Mb.js} +1 -1
  264. package/dist/assets/{web-sr1ba6fP.js → web-DFbI_g4o.js} +1 -1
  265. package/dist/assets/{web-BlvxItuO.js → web-DIn7jUpJ.js} +1 -1
  266. package/dist/assets/{web-l9DWMZeA.js → web-DYQ0KCC4.js} +1 -1
  267. package/dist/assets/{web-DUb4LJ2M.js → web-Db-2E0qX.js} +1 -1
  268. package/dist/assets/{web-B3Q8ntoM.js → web-PfT3uNnR.js} +1 -1
  269. package/dist/assets/{welcome-screen-DwOAZpZS.js → welcome-screen-D_DTupb3.js} +1 -1
  270. package/dist/assets/{workflow-detail-panel-DGL2BZSr.js → workflow-detail-panel-DAVe3vEm.js} +1 -1
  271. package/dist/assets/{workflow-store-lM7yKbUo.js → workflow-store-C3g-qg1u.js} +1 -1
  272. package/dist/assets/{workspace-page-D4NvhCv1.js → workspace-page-Dq0z3-Rs.js} +1 -1
  273. package/dist/assets/{workspace-tree-query-B1A-efgV.js → workspace-tree-query-D9VBUg-W.js} +1 -1
  274. package/dist/index.html +197 -194
  275. package/package.json +1 -1
  276. package/dist/assets/access-DS79PSR3.js +0 -1
  277. package/dist/assets/assistant-identity-store-DIyVo8LV.js +0 -1
  278. package/dist/assets/billing-page-B5j5TW_S.js +0 -3
  279. package/dist/assets/billing-redirect-page-B1o1rsQZ.js +0 -1
  280. package/dist/assets/channels-page-route-BYP9SOw5.js +0 -9
  281. package/dist/assets/checkout-continuation-U3Pd2nxi.js +0 -1
  282. package/dist/assets/checkout-page-C5_9GbP-.js +0 -1
  283. package/dist/assets/checkout-return-target-DI6Hb-9L.js +0 -1
  284. package/dist/assets/consent-hzYg-zbh.js +0 -1
  285. package/dist/assets/effective-timezone-CmcoXrio.js +0 -1
  286. package/dist/assets/emails-page-Wr4wPSYl.js +0 -1
  287. package/dist/assets/esm-BKewCp71.js +0 -2
  288. package/dist/assets/esm-DNvorKcw.js +0 -1
  289. package/dist/assets/esm-Deuay4YU.js +0 -2
  290. package/dist/assets/esm-IoT87yZe.js +0 -2
  291. package/dist/assets/esm-PYpy75OW.js +0 -2
  292. package/dist/assets/esm-xItcektK.js +0 -2
  293. package/dist/assets/first-run-scope-CL5YbC3b.js +0 -1
  294. package/dist/assets/get-memory-stats-BCYSpBF6.js +0 -1
  295. package/dist/assets/identity-page-route-CK3YsXCN.js +0 -7
  296. package/dist/assets/intelligence-layout-MNoGhi-l.js +0 -1
  297. package/dist/assets/library-detail-page-DVwI94NZ.js +0 -1
  298. package/dist/assets/login-flow-CD9tyuFG.js +0 -1
  299. package/dist/assets/login-page-BNStrcnU.js +0 -1
  300. package/dist/assets/memory-page-route-C0cBV7HD.js +0 -2
  301. package/dist/assets/mutation-error-DEknRDAQ.js +0 -1
  302. package/dist/assets/native-anchor-CeekjwVy.js +0 -1
  303. package/dist/assets/navigation-resolver-DPJxzx0h.js +0 -1
  304. package/dist/assets/open-workspace-file-DtK3a84K.js +0 -2
  305. package/dist/assets/plans-page-BDKqdYNM.js +0 -1
  306. package/dist/assets/platform-loopback-page-D0gXCm2S.js +0 -1
  307. package/dist/assets/plugins-page-B2zQ2iGh.js +0 -1
  308. package/dist/assets/plugins-surface-B43Op43l.js +0 -1
  309. package/dist/assets/provider-signup-page-BAPcG_iJ.js +0 -1
  310. package/dist/assets/review-terms-screen-BhyRQBjl.js +0 -1
  311. package/dist/assets/routes-CaP5Tqj7.js +0 -23
  312. package/dist/assets/routes-D9sNqB_o.js +0 -1
  313. package/dist/assets/schedules-page-DVnUeaoB.js +0 -1
  314. package/dist/assets/settings-layout-B_4PKJr9.js +0 -1
  315. package/dist/assets/signup-page-D0S_8XYw.js +0 -1
  316. package/dist/assets/superpowers-page-CaLzK5D-.js +0 -1
  317. package/dist/assets/upgrade-cancel-page-eiJEAvFz.js +0 -1
  318. package/dist/assets/use-command-palette-sections-CkpUaAKs.js +0 -1
  319. package/dist/assets/use-supports-credentials-settings-BbfghcWq.js +0 -1
  320. package/dist/assets/voice-picker-modal-PdsZwrsV.js +0 -1
  321. /package/dist/assets/{Combination-CkAMwkbS.js → Combination-BRDRMC4m.js} +0 -0
  322. /package/dist/assets/{api-errors-CFiCT7Ap.js → api-errors-DHvv5HEN.js} +0 -0
  323. /package/dist/assets/{app-types-DSkgEmV3.js → app-types-BnzWLsk5.js} +0 -0
  324. /package/dist/assets/{apple-logo--8ZT6Umn.js → apple-logo-C3XrRC_i.js} +0 -0
  325. /package/dist/assets/{avatar-bundled-components-DPqbVXi9.js → avatar-bundled-components-yyfTpx_l.js} +0 -0
  326. /package/dist/assets/{avatar-subagent-CRA2B82x.js → avatar-subagent-Bpy9-0YN.js} +0 -0
  327. /package/dist/assets/{avatar-svg-compositor-Dl-ckXRE.js → avatar-svg-compositor-DeuQqt-f.js} +0 -0
  328. /package/dist/assets/{avatar-tone-BKwvoDSj.js → avatar-tone-BBZKSrBa.js} +0 -0
  329. /package/dist/assets/{browser-timezone-CGwaX5Uv.js → browser-timezone-DGz-HvxU.js} +0 -0
  330. /package/dist/assets/{build.umd-Bixyt_xE.js → build.umd-CpQXlBwc.js} +0 -0
  331. /package/dist/assets/{by-tool-use-id-index-M50wYE1f.js → by-tool-use-id-index-DcsiqOhc.js} +0 -0
  332. /package/dist/assets/{chat-CDFCY8f0.js → chat-B9S7HTkM.js} +0 -0
  333. /package/dist/assets/{client.gen-CV05d-kw.js → client.gen-DPP573hb.js} +0 -0
  334. /package/dist/assets/{conversation-selection-oJy8Oht3.js → conversation-selection-Cx6Axfzb.js} +0 -0
  335. /package/dist/assets/{create-selectors-Qo7kcikX.js → create-selectors-B41BzcFF.js} +0 -0
  336. /package/dist/assets/{definitions-JF3PcEff.js → definitions-B2pe1hr8.js} +0 -0
  337. /package/dist/assets/{definitions-D_AmTPWg.js → definitions-B6TMLvuT.js} +0 -0
  338. /package/dist/assets/{dist-jXSU-ejH.js → dist-BbzsnMsY.js} +0 -0
  339. /package/dist/assets/{dist-CaYJ736y.js → dist-BxvMAFS8.js} +0 -0
  340. /package/dist/assets/{dist-BwAT3VYQ.js → dist-CCFYMOVM.js} +0 -0
  341. /package/dist/assets/{domains-DWRzNRJy.js → domains-BLQZqRIT.js} +0 -0
  342. /package/dist/assets/{dropdown-BCfnSdIZ.js → dropdown-BtWhNXSV.js} +0 -0
  343. /package/dist/assets/{edit-chat-session-D37Qx6ol.js → edit-chat-session-DDnAzqkB.js} +0 -0
  344. /package/dist/assets/{emoji-catalog-data-BCc1YNMR.js → emoji-catalog-data-DvjqmdH4.js} +0 -0
  345. /package/dist/assets/{event-bus-DSxmBYhD.js → event-bus-DYZhc6yM.js} +0 -0
  346. /package/dist/assets/{external-urls-_vjsdj2L.js → external-urls-DIbR-npW.js} +0 -0
  347. /package/dist/assets/{feature-flag-catalog-I9-eJQP_.js → feature-flag-catalog-CWB-r-Pj.js} +0 -0
  348. /package/dist/assets/{format-date-BGnM4mqL.js → format-date-BEAiOK8n.js} +0 -0
  349. /package/dist/assets/{format-file-size-BgMTiWPt.js → format-file-size-BtDHBEb-.js} +0 -0
  350. /package/dist/assets/{hard-navigate-DyUrcxe0.js → hard-navigate-V2EFapkk.js} +0 -0
  351. /package/dist/assets/{impersonate-version-flag-4Ki_3iKD.js → impersonate-version-flag-Cad5-ZZv.js} +0 -0
  352. /package/dist/assets/{input-hw3el2GJ.js → input-F_x2LXmm.js} +0 -0
  353. /package/dist/assets/{is-electron-m5eeGBnd.js → is-electron-D-TCQRcE.js} +0 -0
  354. /package/dist/assets/{link-click-DLYgWZdo.js → link-click-BIvzZsRn.js} +0 -0
  355. /package/dist/assets/{machine-sizes-DO8duvpy.js → machine-sizes-CT-fSRKD.js} +0 -0
  356. /package/dist/assets/{misc-CuYswARt.js → misc-CXDB4i-X.js} +0 -0
  357. /package/dist/assets/{native-deep-link-DCBJ-Rw0.js → native-deep-link-D4jZANvf.js} +0 -0
  358. /package/dist/assets/{oauth-popup-OhSYYlQF.js → oauth-popup-BsYPnBq7.js} +0 -0
  359. /package/dist/assets/{onboarding-step-layout-D9rghAjS.js → onboarding-step-layout-Do2o16kf.js} +0 -0
  360. /package/dist/assets/{optimistic-lifecycle-BINTsVFx.js → optimistic-lifecycle-Dxhc3mFf.js} +0 -0
  361. /package/dist/assets/{pdf-BlwLcQAc.js → pdf-CRRXY5Nb.js} +0 -0
  362. /package/dist/assets/{plugin-attribution-DrwveSW_.js → plugin-attribution-ug-jMTXi.js} +0 -0
  363. /package/dist/assets/{pointer-BbPfN86L.js → pointer-DAyn_9jY.js} +0 -0
  364. /package/dist/assets/{prechat-CeL4a_1i.js → prechat-EVefdGcO.js} +0 -0
  365. /package/dist/assets/{profile-metadata-BhqRdqUJ.js → profile-metadata-EGAGq_rk.js} +0 -0
  366. /package/dist/assets/{progress-bar-C_T5_pf2.js → progress-bar-B64ghmWk.js} +0 -0
  367. /package/dist/assets/{proxy-D7UPVac3.js → proxy-lxbolTGx.js} +0 -0
  368. /package/dist/assets/{public-asset-BBVUuTT_.js → public-asset-BoN50HP_.js} +0 -0
  369. /package/dist/assets/{sandbox-bridge-BxW8HZq_.js → sandbox-bridge-CjHMJYTZ.js} +0 -0
  370. /package/dist/assets/{sdk.gen-B5ygTzyg.js → sdk.gen-CtusrdLv.js} +0 -0
  371. /package/dist/assets/{sdk.gen-BHZ0fJla.js → sdk.gen-DeyOX3Kb.js} +0 -0
  372. /package/dist/assets/{semver-BpijV4FQ.js → semver-Ok0Hi8v9.js} +0 -0
  373. /package/dist/assets/{shield-fzs_emVe.js → shield-B69p45Kq.js} +0 -0
  374. /package/dist/assets/{shield-check-22NwY9JM.js → shield-check-C7I-REGg.js} +0 -0
  375. /package/dist/assets/{smartphone-mDNwm_ss.js → smartphone-zTfpbpuH.js} +0 -0
  376. /package/dist/assets/{sparkles-Ccrj7hxd.js → sparkles-nPSxUfsO.js} +0 -0
  377. /package/dist/assets/{square-D_e8nR-F.js → square-CRVB76KQ.js} +0 -0
  378. /package/dist/assets/{status-badge-pill-wJPMXQk1.js → status-badge-pill-CGODAHVT.js} +0 -0
  379. /package/dist/assets/{sun-Dw0t1n1O.js → sun-DXlsFvWD.js} +0 -0
  380. /package/dist/assets/{terminal-CdCI6wMV.js → terminal-BvDcWAOW.js} +0 -0
  381. /package/dist/assets/{theme-preferences-Bb2pPRXa.js → theme-preferences-LQuLaIA6.js} +0 -0
  382. /package/dist/assets/{three-dot-indicator-BMvKQ_On.js → three-dot-indicator-B_GPAioB.js} +0 -0
  383. /package/dist/assets/{toggle-lfnhEAcN.js → toggle-B4nIp0sf.js} +0 -0
  384. /package/dist/assets/{trash-2-L5LNgw9o.js → trash-2-BF5y4UkY.js} +0 -0
  385. /package/dist/assets/{triangle-alert-CQfiAg_t.js → triangle-alert-Dq3v0coH.js} +0 -0
  386. /package/dist/assets/{typed-storage-9Sn8tkE7.js → typed-storage-CcMT-hWr.js} +0 -0
  387. /package/dist/assets/{use-copy-to-clipboard-cF7ZSilD.js → use-copy-to-clipboard-VK_922zc.js} +0 -0
  388. /package/dist/assets/{use-is-mobile-BlQuzI5Z.js → use-is-mobile-Cx2xnNUx.js} +0 -0
  389. /package/dist/assets/{user-_zNqL48O.js → user-KBQkOaB5.js} +0 -0
  390. /package/dist/assets/{user-plus-oiIr9ey8.js → user-plus-CsHAo9W6.js} +0 -0
  391. /package/dist/assets/{users-iLvfYFOP.js → users-C0mu7-R4.js} +0 -0
  392. /package/dist/assets/{volume-2-CvT-JEIl.js → volume-2-DnyXryvu.js} +0 -0
  393. /package/dist/assets/{workflow-cWWiPi3K.js → workflow-CN4xwQpa.js} +0 -0
  394. /package/dist/assets/{workflow-status-HyIIhMBP.js → workflow-status-CgrMMiJT.js} +0 -0
  395. /package/dist/assets/{workspace-theme-tokens-DNNwX-XS.js → workspace-theme-tokens-D8TTf-DX.js} +0 -0
  396. /package/dist/assets/{wrench-0WW0zkkG.js → wrench-DDDwrNwL.js} +0 -0
  397. /package/dist/assets/{x-JBAsSOmg.js → x-BGag7vwj.js} +0 -0
  398. /package/dist/assets/{xterm-addon-fit-BVObYBMM.js → xterm-addon-fit-B1qPIPGd.js} +0 -0
  399. /package/dist/assets/{xterm-DgGqTfet.js → xterm-coCKWVob.js} +0 -0
  400. /package/dist/assets/{zoom-in-CaLYwni-.js → zoom-in-C96B1CNL.js} +0 -0
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-CAM1RhH8.js";import{Un as t}from"./sdk.gen-BHZ0fJla.js";import{st as n}from"./react-query.gen-C5c1Acuq.js";var r=e(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),i=300*1e3;function a(e){return{queryKey:n({path:{assistant_id:e},query:{q:void 0}}),queryFn:async({signal:n})=>{let r=await t({path:{assistant_id:e},query:{q:void 0},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:[]}},staleTime:i}}export{r as n,a as t};
1
+ import{t as e}from"./createLucideIcon-CAM1RhH8.js";import{Un as t}from"./sdk.gen-DeyOX3Kb.js";import{st as n}from"./react-query.gen-BeiAUt-2.js";var r=e(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),i=300*1e3;function a(e){return{queryKey:n({path:{assistant_id:e},query:{q:void 0}}),queryFn:async({signal:n})=>{let r=await t({path:{assistant_id:e},query:{q:void 0},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:[]}},staleTime:i}}export{r as n,a as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{t as r}from"./createLucideIcon-CAM1RhH8.js";import{t as i}from"./public-asset-BBVUuTT_.js";var a=r(`power`,[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]),o=e(t(),1),s=n();function c({size:e=24,className:t,style:n}){return(0,s.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 48 48`,width:e,height:e,className:t,style:n,"aria-hidden":!0,children:[(0,s.jsx)(`path`,{fill:`#EA4335`,d:`M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z`}),(0,s.jsx)(`path`,{fill:`#4285F4`,d:`M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z`}),(0,s.jsx)(`path`,{fill:`#FBBC05`,d:`M10.53 28.59a14.5 14.5 0 0 1 0-9.18l-7.97-6.19A23.99 23.99 0 0 0 0 24c0 3.77.9 7.35 2.56 10.78l7.97-6.19z`}),(0,s.jsx)(`path`,{fill:`#34A853`,d:`M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z`})]})}var l={github:i(`/images/integrations/github.svg`),linear:i(`/images/integrations/linear-light-logo.svg`),notion:i(`/images/integrations/notion.svg`),outlook:i(`/images/integrations/outlook.png`),slack:i(`/images/integrations/slack.svg`)},u=[`bg-sky-500`,`bg-violet-500`,`bg-fuchsia-500`,`bg-teal-500`,`bg-orange-500`,`bg-amber-500`,`bg-rose-500`,`bg-indigo-500`];function d(e){let t=0;for(let n=0;n<e.length;n+=1)t=(t+e.charCodeAt(n))%(2**53-1);return u[t%u.length]??u[0]}function f({providerKey:e,displayName:t,logoUrl:n,size:r=32}){let[i,a]=(0,o.useState)(!1),u=e.toLowerCase(),f=n??l[u],p=(t??e).slice(0,2).toUpperCase(),m=d(e);return u===`google`?(0,s.jsx)(c,{size:r,className:`shrink-0 rounded-md object-contain`,style:{width:r,height:r}}):f&&!i?(0,s.jsx)(`img`,{src:f,alt:``,width:r,height:r,style:{width:r,height:r},className:`shrink-0 rounded-md object-contain`,onError:()=>a(!0)}):(0,s.jsx)(`div`,{style:{width:r,height:r,fontSize:r*.4},className:`flex shrink-0 items-center justify-center rounded-full font-semibold text-white ${m}`,"aria-hidden":`true`,children:p})}export{a as n,f as t};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{t as r}from"./createLucideIcon-CAM1RhH8.js";import{t as i}from"./public-asset-BoN50HP_.js";var a=r(`power`,[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]),o=e(t(),1),s=n();function c({size:e=24,className:t,style:n}){return(0,s.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 48 48`,width:e,height:e,className:t,style:n,"aria-hidden":!0,children:[(0,s.jsx)(`path`,{fill:`#EA4335`,d:`M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z`}),(0,s.jsx)(`path`,{fill:`#4285F4`,d:`M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z`}),(0,s.jsx)(`path`,{fill:`#FBBC05`,d:`M10.53 28.59a14.5 14.5 0 0 1 0-9.18l-7.97-6.19A23.99 23.99 0 0 0 0 24c0 3.77.9 7.35 2.56 10.78l7.97-6.19z`}),(0,s.jsx)(`path`,{fill:`#34A853`,d:`M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z`})]})}var l={github:i(`/images/integrations/github.svg`),linear:i(`/images/integrations/linear-light-logo.svg`),notion:i(`/images/integrations/notion.svg`),outlook:i(`/images/integrations/outlook.png`),slack:i(`/images/integrations/slack.svg`)},u=[`bg-sky-500`,`bg-violet-500`,`bg-fuchsia-500`,`bg-teal-500`,`bg-orange-500`,`bg-amber-500`,`bg-rose-500`,`bg-indigo-500`];function d(e){let t=0;for(let n=0;n<e.length;n+=1)t=(t+e.charCodeAt(n))%(2**53-1);return u[t%u.length]??u[0]}function f({providerKey:e,displayName:t,logoUrl:n,size:r=32}){let[i,a]=(0,o.useState)(!1),u=e.toLowerCase(),f=n??l[u],p=(t??e).slice(0,2).toUpperCase(),m=d(e);return u===`google`?(0,s.jsx)(c,{size:r,className:`shrink-0 rounded-md object-contain`,style:{width:r,height:r}}):f&&!i?(0,s.jsx)(`img`,{src:f,alt:``,width:r,height:r,style:{width:r,height:r},className:`shrink-0 rounded-md object-contain`,onError:()=>a(!0)}):(0,s.jsx)(`div`,{style:{width:r,height:r,fontSize:r*.4},className:`flex shrink-0 items-center justify-center rounded-full font-semibold text-white ${m}`,"aria-hidden":`true`,children:p})}export{a as n,f as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{c as t,i as n}from"./local-settings-C-dW2vkq.js";import{t as r}from"./capture-error-Bj8_eutd.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-Dy5001j6.js";import{m as o,u as s}from"./chunk-5KNZJZUH-Bsoom5--.js";import{N as c,O as l,S as u,T as d,c as f,n as p}from"./QueryClientProvider-CMu7CkQU.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-Bz-fbQ-m.js";import{t as w}from"./jsx-runtime-D3ZM-ToX.js";import{t as T}from"./card-DRIctGVs.js";import{t as E}from"./createLucideIcon-CAM1RhH8.js";import{t as D}from"./check-sC49_hjU.js";import{t as O}from"./chevron-down-B5A-0g8A.js";import{t as k}from"./chevron-right-HU6H84S0.js";import{t as A}from"./circle-alert-DVCpoZrc.js";import{t as j}from"./circle-check-CjGnAahM.js";import{t as M}from"./circle-x-17dBxF06.js";import{n as N,o as P,t as F}from"./list-row-B1wPb2Au.js";import{t as I}from"./external-link-CS0aVYGt.js";import{t as L}from"./key-round-0Zop_GsZ.js";import{t as R}from"./loader-circle-XREx3i4W.js";import{t as z}from"./log-in-CqVJRYe-.js";import{t as ee}from"./log-out-B4hsBWnk.js";import{t as B}from"./pencil-D38YNe2r.js";import{t as V}from"./plus-jH3kAliM.js";import{n as te,t as H}from"./integration-icon-dv-9Zzx3.js";import{t as ne}from"./refresh-cw-DzPnoeCh.js";import{t as re}from"./search-BVW-n8to.js";import{t as ie}from"./sparkles-Ccrj7hxd.js";import{t as U}from"./trash-2-L5LNgw9o.js";import{t as ae}from"./x-JBAsSOmg.js";import{t as oe}from"./notice-BMK7xqUw.js";import{t as W}from"./popover-BRpYVASI.js";import{t as G}from"./input-hw3el2GJ.js";import{t as se}from"./toggle-lfnhEAcN.js";import{t as K}from"./modal-BR4CUFBd.js";import{n as q,t as ce}from"./panel-item-CrtoJCrd.js";import{n as J}from"./toast-LgLp4obE.js";import{t as Y}from"./confirm-dialog-UYFm4osC.js";import{Wr as X}from"./sdk.gen-BHZ0fJla.js";import{$ as le,$t as ue,Q as de,Z as fe,en as pe,et as me,nn as he,nt as ge,tn as _e,tt as ve}from"./react-query.gen-C5c1Acuq.js";import{r as ye}from"./api-errors-CFiCT7Ap.js";import{C as be}from"./auth-store-5qq59BAN.js";import{r as xe}from"./api-LG8zI3nK.js";import{m as Se}from"./native-biometric-BAMIyaSS.js";import{u as Ce}from"./routes-D9sNqB_o.js";import{i as we,t as Te}from"./use-platform-gate-C65D14xY.js";import{n as Ee,r as De}from"./browser-CTZVDjOL.js";import{n as Oe}from"./conversation-navigation-DsN0hcpL.js";import{n as ke}from"./use-is-mobile-BlQuzI5Z.js";import{Dt as Ae,Ot as je,S as Me,b as Z,x as Ne}from"./react-query.gen-BC3STDmV.js";import{t as Pe}from"./assistant-feature-flag-store-CAdgpPiS.js";import{a as Fe,i as Ie,n as Le,r as Re}from"./oauth-connection-utils-CWPUW4MK.js";import{a as ze,i as Be,n as Ve,t as He}from"./oauth-popup-OhSYYlQF.js";import{t as Ue}from"./platform-login-notice-CdYiKsE8.js";import{t as We}from"./use-active-assistant-id-CldxA_-M.js";import{t as Ge}from"./use-platform-assistant-id-DOsSt6k1.js";function Ke(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}function qe(e,t,n){let r=e.slice(0);return r[t]=n,r}var Je=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&&(Ke(e,n).forEach(e=>{e.destroy()}),Ke(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=qe(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 Ye({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 Je(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 Xe=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`}]]),Ze=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 Qe({assistantId:e,providerKey:t,displayName:n,managedAvailable:r,connectionsQueryKey:i,allConnections:a}){let o=p(),s=Se(),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`)J.success(`${n} account connected.`),o.invalidateQueries({queryKey:i});else{let e=r?`Error: ${r}`:`Authorization failed`;J.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 Ie(750);try{if(o.invalidateQueries({queryKey:i}),Re(await o.fetchQuery({...Z({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=He(e,window.location.origin,t.requestId);n&&_(n)},t=e=>{let t=l.current;if(!t)return;let n=Ve(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)}},[_]),Fe((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)(()=>De(()=>{let e=l.current;e&&(async()=>{let t=await v(e.platformAssistantId,e.baselineConnectionSignatures);l.current&&(h(),t&&J.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=je();return{handleConnect:(i=[])=>{if(!r)return;let f=crypto.randomUUID();m(!0);let p=async r=>{let c;try{c=await be(e)}catch(e){g(),h(),J.error(e instanceof Error?e.message:`Failed to start ${n} authorization.`);return}let u=Le(await o.fetchQuery({...Z({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:`${Ce.account.oauth.popupComplete}?requestId=${f}${s?`&native=1`:``}`}},{onSuccess(e){if(s){Ee(e.connect_url);return}r&&!r.closed?r.location.href=e.connect_url:l.current&&(g(),h(),J.error(`${n} connection failed: popup closed.`))},onError(e){g(),h();let t=ye(e,void 0,`Failed to start ${n} authorization.`);J.error(t)}})};if(s){p(null);return}let b=window.open(``,`_blank`,`width=500,height=600`);if(b===null){h(),J.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=ze(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(),J.success(`${n} account connected.`);return}g(),h(),J.error(`${n} connection failed: authorization popup closed.`)}},1e3))},100),p(b)},oauthInProgress:f,startOAuthPending:y.isPending}}var $=w();function $e({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)(R,{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)(H,{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)(R,{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)(H,{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)(V,{}),onClick:()=>l(),disabled:f,children:`Connect Account`}),d.map(e=>(0,$.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,$.jsx)(Ze,{}),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)(H,{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)(R,{className:`animate-spin`}):(0,$.jsx)(U,{}),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)(R,{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)(I,{}),onClick:()=>l(),disabled:f,children:`Connect account`}),d.map(e=>(0,$.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,$.jsx)(Ze,{}),onClick:()=>l(e.scopes),disabled:f,children:e.label},e.id))]})})]})}function et(e){return e.length>16?`${e.slice(0,12)}…${e.slice(-4)}`:e.length>8?`${e.slice(0,8)}…`:e}function tt(e){try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function nt({assistantId:e,providerKey:t,displayName:n,logoUrl:r}){let i=p(),o=S({...le({path:{assistant_id:e},query:{provider_key:t}}),select:e=>e.apps}),s=S({...ve({path:{assistant_id:e,providerKey:t}}),select:e=>e.oauth_callback_url}),c=o.data??[],l=s.data??null,u=Ye({queries:c.map(t=>({...fe({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=_e({onSuccess:()=>{i.invalidateQueries({queryKey:f}),x(``),w(``),y(!1),J.success(`${n} OAuth app added.`)},onError:e=>{J.error(e.message||`Failed to create OAuth app`)}}),h=pe({onSuccess:()=>{i.invalidateQueries({queryKey:f}),J.success(`OAuth app deleted.`)},onError:e=>{J.error(e.message||`Failed to delete OAuth app`)}}),g=ue({onSuccess:e=>{`auth_url`in e&&(window.location.href=e.auth_url)},onError:e=>{J.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,M]=(0,Q.useState)(null),N=m.isPending,F=h.isPending?h.variables?.path?.id??null:null,L=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}})},B=()=>{let t=k;A(null),t&&h.mutate({path:{assistant_id:e,id:t.id}})},te=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)(R,{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)(G,{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),J.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)(P,{"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)(G,{label:`Client ID`,type:`text`,value:b,onChange:e=>x(e.target.value),placeholder:`Enter your client ID`,fullWidth:!0}),(0,$.jsx)(G,{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:N,children:`Cancel`}):null,(0,$.jsx)(a,{type:`button`,size:`compact`,onClick:ee,disabled:N||!b.trim()||!C.trim(),leftIcon:N?(0,$.jsx)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(V,{"aria-hidden":!0}),children:`Add App`})]})]})}):null,c.map(e=>{let i=d[e.id]??[],o=F===e.id,s=L===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:et(e.client_id)}),(0,$.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Added `,tt(e.created_at)]})]}),(0,$.jsx)(a,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>A(e),disabled:o,"aria-label":`Delete OAuth app ${et(e.client_id)}`,iconOnly:o?(0,$.jsx)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(U,{"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)(H,{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:()=>M({appId:e.id,connection:i}),disabled:o,"aria-label":`Disconnect ${i.account_info??`${n} account`}`,iconOnly:o?(0,$.jsx)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(U,{"aria-hidden":!0})})]},i.id)})}):null,(0,$.jsx)(a,{type:`button`,size:`compact`,onClick:()=>te(e),disabled:s,className:`w-full`,leftIcon:s?(0,$.jsx)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(I,{"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)(V,{"aria-hidden":!0}),children:`Add Another App`}):null,(0,$.jsx)(Y,{open:k!==null,title:`Delete OAuth app`,message:k?`Delete OAuth app '${et(k.client_id)}'? This will disconnect all linked accounts.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:B,onCancel:()=>A(null)}),(0,$.jsx)(Y,{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;M(null),t&&_.mutate({path:{assistant_id:e,id:t.connection.id}},{onSuccess:()=>{let r=de({path:{assistant_id:e,appId:t.appId}});i.invalidateQueries({queryKey:r}),i.invalidateQueries({queryKey:f}),J.success(`${n} account disconnected.`)},onError:e=>{J.error(e.message||`Failed to disconnect account`)}})},onCancel:()=>M(null)})]})}var rt={};function it(e){return rt[e]??[]}function at({assistantId:e,platformAssistantId:t,providerKey:n,displayName:r,description:i,logoUrl:o,platformGate:s,onClose:c}){let l=p(),u=s===`full`,d=!Te(),[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=Ne({path:{assistant_id:t}}),{data:b,isLoading:x}=S({...Z({path:{assistant_id:t}}),enabled:u}),C=(b??[]).filter(e=>e.provider===n&&e.connected),{handleConnect:w,oauthInProgress:T,startOAuthPending:E}=Qe({assistantId:e,providerKey:n,displayName:r,managedAvailable:u,connectionsQueryKey:y,allConnections:b}),D={path:{assistant_id:t}},O=Ae({onSuccess(e,t){J.success(`${r} account disconnected.`);let n=t.path.connection_id;Me(l,D,e=>e?.filter(e=>e.id!==n)),l.invalidateQueries({queryKey:y}),g(null)},onError(e){let t=ye(e,void 0,`Failed to disconnect ${r} account.`);J.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)(H,{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)(ae,{}),"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)(ot,{active:f===`managed`,onClick:()=>m(`managed`),children:`Managed`}),(0,$.jsx)(ot,{active:f===`your-own`,onClick:()=>m(`your-own`),children:`Your Own`})]}),f===`managed`&&s!==`gated`?s===`disabled`?(0,$.jsx)(Ue,{children:`Log in to the Vellum platform to manage OAuth connections.`}):(0,$.jsx)($e,{displayName:r,providerKey:n,logoUrl:o,connections:C,connectionsLoading:x,startPending:E,oauthInProgress:T,disconnectingId:O.isPending?h:null,onConnect:w,onDisconnect:k,connectPresets:it(n)}):d?(0,$.jsx)(nt,{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)(Y,{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 ot({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 st({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=ke(),_=Ne({path:{assistant_id:e}}),v={path:{assistant_id:e}},y=Ae({onSuccess(e,t){J.success(`${n} account disconnected.`);let r=t.path.connection_id;Me(l,v,e=>e?.filter(e=>e.id!==r)),l.invalidateQueries({queryKey:_})},onError(e){let t=ye(e,void 0,`Failed to disconnect ${n} account.`);J.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)(H,{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)(ct,{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)(Y,{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 ct({displayName:e,open:t,onOpenChange:n,onEditConnections:r,onDisable:i,disablePending:o,isMobile:s}){return s?(0,$.jsxs)(q.Root,{open:t,onOpenChange:n,children:[(0,$.jsx)(q.Trigger,{asChild:!0,children:(0,$.jsx)(a,{variant:`outlined`,rightIcon:(0,$.jsx)(O,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,$.jsxs)(q.Content,{children:[(0,$.jsx)(q.Header,{children:(0,$.jsx)(q.Title,{children:e})}),(0,$.jsxs)(q.Body,{children:[(0,$.jsx)(ce,{icon:B,label:`Edit connections`,onSelect:r}),(0,$.jsx)(ce,{icon:o?R:M,label:`Disable`,onSelect:()=>{o||i()}})]})]})]}):(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,{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)(B,{"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)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(M,{"aria-hidden":!0}),children:`Disable`})]})]})}var lt=[{value:`none`,label:`None`},{value:`oauth`,label:`OAuth`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],ut=[{value:`sse`,label:`SSE`},{value:`streamable-http`,label:`Streamable HTTP`},{value:`stdio`,label:`Stdio (command)`}];function dt({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)(K.Root,{open:e,onOpenChange:e=>{e||w()},children:(0,$.jsxs)(K.Content,{size:`md`,children:[(0,$.jsxs)(K.Header,{children:[(0,$.jsx)(K.Title,{icon:Xe,children:`Add MCP Server`}),(0,$.jsx)(K.Description,{children:`Connect to a Model Context Protocol server to extend available tools.`})]}),(0,$.jsx)(K.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)(G,{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:ut.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)(G,{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)(G,{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)(G,{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:lt.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)(G,{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)(G,{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)(G,{id:`mcp-apikey-value`,type:`password`,value:x,onChange:e=>S(e.target.value),placeholder:`sk_...`,fullWidth:!0})]})]}):null]})]})}),(0,$.jsxs)(K.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 ft(e){let{data:t,response:n}=await X.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 pt(e){let{data:t,response:n}=await X.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 mt(e,t){let{response:n}=await X.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 ht(e,t){let{response:n}=await X.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 gt(e,t){let{response:n}=await X.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 _t(e,t){let{data:n,response:r}=await X.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 vt(e,t){let{data:n,response:r}=await X.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 yt(e,t){let{response:n}=await X.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 bt(e){let{response:t}=await X.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 xt={connected:{icon:j,label:`Connected`,className:`text-[var(--system-positive-strong)]`},"needs-auth":{icon:L,label:`Needs Auth`,className:`text-[var(--system-warning-strong)]`},disabled:{icon:te,label:`Disabled`,className:`text-[var(--content-tertiary)]`}},St={icon:A,label:`Error`,className:`text-[var(--system-negative-strong)]`};function Ct({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=xt[e.status]??St,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)(R,{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)(z,{}),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)(ne,{}),onClick:v,disabled:l,tooltip:`Re-authenticate OAuth`,children:`Re-auth`}),(0,$.jsx)(a,{variant:`dangerGhost`,size:`compact`,leftIcon:(0,$.jsx)(ee,{}),onClick:y,disabled:u,tooltip:`Revoke OAuth credentials`,children:u?`Revoking...`:`Revoke`})]}):null,(0,$.jsx)(se,{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)(U,{}),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)(F,{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 wt=[{value:`none`,label:`None`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],Tt=[`low`,`medium`,`high`];function Et({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)(K.Root,{open:!!e,onOpenChange:e=>{e||_()},children:(0,$.jsxs)(K.Content,{size:`lg`,children:[(0,$.jsxs)(K.Header,{children:[(0,$.jsx)(K.Title,{icon:Xe,children:e.id}),(0,$.jsxs)(K.Description,{children:[e.transport.type,` transport · `,e.status]})]}),(0,$.jsx)(K.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:Tt.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:wt.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)(G,{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)(G,{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)(G,{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)(K.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 Dt=`mcp-servers`,Ot=`mcp-tools-summary`,kt=`Help me set up an MCP server to extend you with external tools.`;function At(){let e=We(),t=p(),n=s(),r=Pe.use.mcpAddServer(),i=Pe.use.hasHydrated(),[o,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:[Dt,e],queryFn:()=>ft(e)}),{data:M}=S({queryKey:[Ot,e],queryFn:()=>pt(e)}),N=(0,Q.useCallback)(()=>{t.invalidateQueries({queryKey:[Dt,e]}),t.invalidateQueries({queryKey:[Ot,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]),I=(0,Q.useCallback)(async(t,n)=>{h(e=>new Set(e).add(t));try{await mt(e,{name:t,enabled:n}),N()}catch{J.error(`Failed to ${n?`enable`:`disable`} ${t}`)}finally{h(e=>{let n=new Set(e);return n.delete(t),n})}},[e,N]),L=(0,Q.useCallback)(async()=>{if(d){y(!0);try{await gt(e,d),N(),J.success(`Removed ${d}`),f(null)}catch{J.error(`Failed to remove ${d}`)}finally{y(!1)}}},[d,e,N]),z=(0,Q.useCallback)(async t=>{E(t);let n;try{n=await _t(e,t)}catch{J.error(`Failed to start authentication for ${t}`),E(null);return}try{if(n.already_authenticated){J.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 vt(e,t);if(n.status===`complete`){J.success(`${t} authenticated successfully`),N();return}if(n.status===`error`){J.error(n.error??`Authentication failed for ${t}`);return}}J.error(`Authentication timed out for ${t}`)}catch{J.error(`Authentication polling failed for ${t}`)}finally{E(null),N()}},[e,N]),ee=(0,Q.useCallback)(async t=>{O(t);try{await yt(e,t),N(),J.success(`OAuth credentials revoked for ${t}`)}catch{J.error(`Failed to revoke OAuth for ${t}`)}finally{O(null)}},[e,N]),B=(0,Q.useCallback)(async t=>{let n=t.autoAuth?window.open(`about:blank`,`_blank`,`noopener`):null;_(!0);try{await ht(e,t),N(),J.success(`Added ${t.name}`),c(!1)}catch{J.error(`Failed to add ${t.name}`),n?.close(),_(!1);return}if(_(!1),t.autoAuth){E(t.name);try{let r=await _t(e,t.name);if(r.already_authenticated){n?.close(),J.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 vt(e,t.name);if(n.status===`complete`){J.success(`${t.name} authenticated successfully`),N();return}if(n.status===`error`){J.error(n.error??`Authentication failed for ${t.name}`);return}}J.error(`Authentication timed out for ${t.name}`)}catch{n?.close(),J.error(`Failed to start authentication for ${t.name}`)}finally{E(null),N()}}},[e,N]),te=(0,Q.useCallback)(async(t,n)=>{x(!0);try{await mt(e,n),N(),J.success(`Updated ${t}`),u(null)}catch{J.error(`Failed to update ${t}`)}finally{x(!1)}},[e,N]),H=(0,Q.useCallback)(async()=>{w(!0);try{await bt(e),N(),J.success(`MCP servers reloaded`)}catch{J.error(`Failed to reload MCP servers`)}finally{w(!1)}},[e,N]),re=(0,Q.useCallback)(()=>{r?c(!0):Oe(n,{prompt:kt})},[r,n]),ie=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)(ne,{className:C?`animate-spin`:``}),onClick:H,disabled:C,tooltip:`Reload all servers`,"aria-label":`Reload MCP servers`}),r?(0,$.jsx)(a,{variant:`primary`,size:`compact`,leftIcon:(0,$.jsx)(V,{}),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)(R,{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.`}):ie.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)(Xe,{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:ie.map(e=>(0,$.jsx)(Ct,{server:e,toolsSummary:P.get(e.id),onToggleEnabled:I,onRemove:f,onConfigure:u,onAuthenticate:z,onRevokeOAuth:ee,isUpdating:m.has(e.id),isAuthenticating:T===e.id,isRevoking:D===e.id},e.id))}),r?(0,$.jsx)(dt,{open:o,onClose:()=>c(!1),onAdd:B,isPending:g}):null,(0,$.jsx)(Et,{server:F,toolsSummary:l?P.get(l):void 0,onClose:()=>u(null),onSave:te,isPending:b}),(0,$.jsx)(Y,{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:L,onCancel:()=>f(null)})]})}function jt(){return(0,$.jsx)(At,{})}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]=o(),i=s(),a=we(),[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(n(Mt,`false`)===`true`)},[]);let C=()=>{y(!0),t(Mt,`true`)};(0,Q.useEffect)(()=>{let e=!0;return(async()=>{try{let t=await xe();e&&t.ok&&l(t.data)}catch(e){r(e,{context:`integrations.getAssistant`})}finally{e&&d(!1)}})(),()=>{e=!1}},[]);let{platformAssistantId:w,isLoading:T}=Ge(c?.id,a===`full`),{data:E,isLoading:D,isError:k}=S({...ge({path:{assistant_id:c?.id??``}}),select:e=>e.providers,enabled:!!c}),{data:A,isLoading:j}=S({...Z({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`)J.success(r?`${r} account connected successfully.`:`Account connected successfully.`);else if(t===`error`){let t=e.get(`oauth_code`)??`unknown`;J.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(Ce.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`,I=(()=>{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`}})(),L=(()=>{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)(oe,{tone:`info`,icon:(0,$.jsx)(ie,{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)(G,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`Search Integrations`,"aria-label":`Search integrations`,leftIcon:(0,$.jsx)(re,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,wrapperClassName:`flex-1`}),(0,$.jsxs)(W.Root,{open:g,onOpenChange:_,children:[(0,$.jsx)(W.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)(W.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)(R,{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)(re,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:I}),(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:L})]}):(0,$.jsx)(`div`,{className:`space-y-2`,children:N.map(e=>(0,$.jsx)(st,{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)(at,{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]=o(),n=Ft(e.get(`tab`));return(0,$.jsx)(`div`,{className:`space-y-6`,children:(0,$.jsxs)(N.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)(N.List,{children:[(0,$.jsx)(N.Trigger,{value:`oauth`,children:`OAuth`}),(0,$.jsx)(N.Trigger,{value:`mcp`,children:`MCP`})]}),(0,$.jsx)(N.Panel,{value:`oauth`,className:`pt-4`,children:(0,$.jsx)(Q.Suspense,{children:(0,$.jsx)(It,{})})}),(0,$.jsx)(N.Panel,{value:`mcp`,className:`pt-4`,children:(0,$.jsx)(jt,{})})]})})}export{Lt as IntegrationsPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{c as t,i as n}from"./local-settings-C-dW2vkq.js";import{t as r}from"./capture-error-Dj49ma74.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-Dy5001j6.js";import{m as o,u as s}from"./chunk-5KNZJZUH-Bsoom5--.js";import{N as c,O as l,S as u,T as d,c as f,n as p}from"./QueryClientProvider-CMu7CkQU.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-Bz-fbQ-m.js";import{t as w}from"./jsx-runtime-D3ZM-ToX.js";import{t as T}from"./card-DRIctGVs.js";import{t as E}from"./createLucideIcon-CAM1RhH8.js";import{t as D}from"./check-sC49_hjU.js";import{t as O}from"./chevron-down-B5A-0g8A.js";import{t as k}from"./chevron-right-HU6H84S0.js";import{t as A}from"./circle-alert-DVCpoZrc.js";import{t as j}from"./circle-check-CjGnAahM.js";import{t as M}from"./circle-x-17dBxF06.js";import{n as N,o as P,t as F}from"./list-row-BOvxGO5h.js";import{t as I}from"./external-link-CS0aVYGt.js";import{t as L}from"./key-round-0Zop_GsZ.js";import{t as R}from"./loader-circle-XREx3i4W.js";import{t as z}from"./log-in-CqVJRYe-.js";import{t as ee}from"./log-out-B4hsBWnk.js";import{t as B}from"./pencil-D38YNe2r.js";import{t as V}from"./plus-jH3kAliM.js";import{n as te,t as H}from"./integration-icon-CmjrEk0J.js";import{t as ne}from"./refresh-cw-DzPnoeCh.js";import{t as re}from"./search-BVW-n8to.js";import{t as ie}from"./sparkles-nPSxUfsO.js";import{t as U}from"./trash-2-BF5y4UkY.js";import{t as ae}from"./x-BGag7vwj.js";import{t as oe}from"./notice-B6naz_-V.js";import{t as W}from"./popover-CDZiHp1D.js";import{t as G}from"./input-F_x2LXmm.js";import{t as se}from"./toggle-B4nIp0sf.js";import{t as K}from"./modal-CoOkN7c0.js";import{n as q,t as ce}from"./panel-item-CQt19wOM.js";import{n as J}from"./toast-BcMdOTp1.js";import{t as Y}from"./confirm-dialog-D-Yjf2uS.js";import{Wr as X}from"./sdk.gen-DeyOX3Kb.js";import{$ as le,$t as ue,Q as de,Z as fe,en as pe,et as me,nn as he,nt as ge,tn as _e,tt as ve}from"./react-query.gen-BeiAUt-2.js";import{r as ye}from"./api-errors-DHvv5HEN.js";import{C as be}from"./auth-store-EmLZOAkN.js";import{r as xe}from"./api-Coj5enET.js";import{m as Se}from"./native-biometric-DUHF57O_.js";import{d as Ce}from"./routes-CsoiCk2y.js";import{i as we,t as Te}from"./use-platform-gate-Cv2oOK8C.js";import{n as Ee,r as De}from"./browser-DvKwnK9l.js";import{n as Oe}from"./conversation-navigation-D8y9l5qL.js";import{n as ke}from"./use-is-mobile-Cx2xnNUx.js";import{Dt as Ae,Ot as je,S as Me,b as Z,x as Ne}from"./react-query.gen-9VRdubOj.js";import{t as Pe}from"./assistant-feature-flag-store-B00tpY5e.js";import{a as Fe,i as Ie,n as Le,r as Re}from"./oauth-connection-utils-DhmVsbum.js";import{a as ze,i as Be,n as Ve,t as He}from"./oauth-popup-BsYPnBq7.js";import{t as Ue}from"./platform-login-notice-D_-ZVyk8.js";import{t as We}from"./use-active-assistant-id-CUKao_nq.js";import{t as Ge}from"./use-platform-assistant-id-DSR1LFZF.js";function Ke(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}function qe(e,t,n){let r=e.slice(0);return r[t]=n,r}var Je=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&&(Ke(e,n).forEach(e=>{e.destroy()}),Ke(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=qe(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 Ye({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 Je(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 Xe=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`}]]),Ze=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 Qe({assistantId:e,providerKey:t,displayName:n,managedAvailable:r,connectionsQueryKey:i,allConnections:a}){let o=p(),s=Se(),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`)J.success(`${n} account connected.`),o.invalidateQueries({queryKey:i});else{let e=r?`Error: ${r}`:`Authorization failed`;J.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 Ie(750);try{if(o.invalidateQueries({queryKey:i}),Re(await o.fetchQuery({...Z({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=He(e,window.location.origin,t.requestId);n&&_(n)},t=e=>{let t=l.current;if(!t)return;let n=Ve(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)}},[_]),Fe((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)(()=>De(()=>{let e=l.current;e&&(async()=>{let t=await v(e.platformAssistantId,e.baselineConnectionSignatures);l.current&&(h(),t&&J.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=je();return{handleConnect:(i=[])=>{if(!r)return;let f=crypto.randomUUID();m(!0);let p=async r=>{let c;try{c=await be(e)}catch(e){g(),h(),J.error(e instanceof Error?e.message:`Failed to start ${n} authorization.`);return}let u=Le(await o.fetchQuery({...Z({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:`${Ce.account.oauth.popupComplete}?requestId=${f}${s?`&native=1`:``}`}},{onSuccess(e){if(s){Ee(e.connect_url);return}r&&!r.closed?r.location.href=e.connect_url:l.current&&(g(),h(),J.error(`${n} connection failed: popup closed.`))},onError(e){g(),h();let t=ye(e,void 0,`Failed to start ${n} authorization.`);J.error(t)}})};if(s){p(null);return}let b=window.open(``,`_blank`,`width=500,height=600`);if(b===null){h(),J.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=ze(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(),J.success(`${n} account connected.`);return}g(),h(),J.error(`${n} connection failed: authorization popup closed.`)}},1e3))},100),p(b)},oauthInProgress:f,startOAuthPending:y.isPending}}var $=w();function $e({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)(R,{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)(H,{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)(R,{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)(H,{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)(V,{}),onClick:()=>l(),disabled:f,children:`Connect Account`}),d.map(e=>(0,$.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,$.jsx)(Ze,{}),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)(H,{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)(R,{className:`animate-spin`}):(0,$.jsx)(U,{}),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)(R,{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)(I,{}),onClick:()=>l(),disabled:f,children:`Connect account`}),d.map(e=>(0,$.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,$.jsx)(Ze,{}),onClick:()=>l(e.scopes),disabled:f,children:e.label},e.id))]})})]})}function et(e){return e.length>16?`${e.slice(0,12)}…${e.slice(-4)}`:e.length>8?`${e.slice(0,8)}…`:e}function tt(e){try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function nt({assistantId:e,providerKey:t,displayName:n,logoUrl:r}){let i=p(),o=S({...le({path:{assistant_id:e},query:{provider_key:t}}),select:e=>e.apps}),s=S({...ve({path:{assistant_id:e,providerKey:t}}),select:e=>e.oauth_callback_url}),c=o.data??[],l=s.data??null,u=Ye({queries:c.map(t=>({...fe({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=_e({onSuccess:()=>{i.invalidateQueries({queryKey:f}),x(``),w(``),y(!1),J.success(`${n} OAuth app added.`)},onError:e=>{J.error(e.message||`Failed to create OAuth app`)}}),h=pe({onSuccess:()=>{i.invalidateQueries({queryKey:f}),J.success(`OAuth app deleted.`)},onError:e=>{J.error(e.message||`Failed to delete OAuth app`)}}),g=ue({onSuccess:e=>{`auth_url`in e&&(window.location.href=e.auth_url)},onError:e=>{J.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,M]=(0,Q.useState)(null),N=m.isPending,F=h.isPending?h.variables?.path?.id??null:null,L=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}})},B=()=>{let t=k;A(null),t&&h.mutate({path:{assistant_id:e,id:t.id}})},te=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)(R,{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)(G,{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),J.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)(P,{"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)(G,{label:`Client ID`,type:`text`,value:b,onChange:e=>x(e.target.value),placeholder:`Enter your client ID`,fullWidth:!0}),(0,$.jsx)(G,{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:N,children:`Cancel`}):null,(0,$.jsx)(a,{type:`button`,size:`compact`,onClick:ee,disabled:N||!b.trim()||!C.trim(),leftIcon:N?(0,$.jsx)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(V,{"aria-hidden":!0}),children:`Add App`})]})]})}):null,c.map(e=>{let i=d[e.id]??[],o=F===e.id,s=L===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:et(e.client_id)}),(0,$.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Added `,tt(e.created_at)]})]}),(0,$.jsx)(a,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>A(e),disabled:o,"aria-label":`Delete OAuth app ${et(e.client_id)}`,iconOnly:o?(0,$.jsx)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(U,{"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)(H,{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:()=>M({appId:e.id,connection:i}),disabled:o,"aria-label":`Disconnect ${i.account_info??`${n} account`}`,iconOnly:o?(0,$.jsx)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(U,{"aria-hidden":!0})})]},i.id)})}):null,(0,$.jsx)(a,{type:`button`,size:`compact`,onClick:()=>te(e),disabled:s,className:`w-full`,leftIcon:s?(0,$.jsx)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(I,{"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)(V,{"aria-hidden":!0}),children:`Add Another App`}):null,(0,$.jsx)(Y,{open:k!==null,title:`Delete OAuth app`,message:k?`Delete OAuth app '${et(k.client_id)}'? This will disconnect all linked accounts.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:B,onCancel:()=>A(null)}),(0,$.jsx)(Y,{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;M(null),t&&_.mutate({path:{assistant_id:e,id:t.connection.id}},{onSuccess:()=>{let r=de({path:{assistant_id:e,appId:t.appId}});i.invalidateQueries({queryKey:r}),i.invalidateQueries({queryKey:f}),J.success(`${n} account disconnected.`)},onError:e=>{J.error(e.message||`Failed to disconnect account`)}})},onCancel:()=>M(null)})]})}var rt={};function it(e){return rt[e]??[]}function at({assistantId:e,platformAssistantId:t,providerKey:n,displayName:r,description:i,logoUrl:o,platformGate:s,onClose:c}){let l=p(),u=s===`full`,d=!Te(),[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=Ne({path:{assistant_id:t}}),{data:b,isLoading:x}=S({...Z({path:{assistant_id:t}}),enabled:u}),C=(b??[]).filter(e=>e.provider===n&&e.connected),{handleConnect:w,oauthInProgress:T,startOAuthPending:E}=Qe({assistantId:e,providerKey:n,displayName:r,managedAvailable:u,connectionsQueryKey:y,allConnections:b}),D={path:{assistant_id:t}},O=Ae({onSuccess(e,t){J.success(`${r} account disconnected.`);let n=t.path.connection_id;Me(l,D,e=>e?.filter(e=>e.id!==n)),l.invalidateQueries({queryKey:y}),g(null)},onError(e){let t=ye(e,void 0,`Failed to disconnect ${r} account.`);J.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)(H,{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)(ae,{}),"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)(ot,{active:f===`managed`,onClick:()=>m(`managed`),children:`Managed`}),(0,$.jsx)(ot,{active:f===`your-own`,onClick:()=>m(`your-own`),children:`Your Own`})]}),f===`managed`&&s!==`gated`?s===`disabled`?(0,$.jsx)(Ue,{children:`Log in to the Vellum platform to manage OAuth connections.`}):(0,$.jsx)($e,{displayName:r,providerKey:n,logoUrl:o,connections:C,connectionsLoading:x,startPending:E,oauthInProgress:T,disconnectingId:O.isPending?h:null,onConnect:w,onDisconnect:k,connectPresets:it(n)}):d?(0,$.jsx)(nt,{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)(Y,{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 ot({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 st({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=ke(),_=Ne({path:{assistant_id:e}}),v={path:{assistant_id:e}},y=Ae({onSuccess(e,t){J.success(`${n} account disconnected.`);let r=t.path.connection_id;Me(l,v,e=>e?.filter(e=>e.id!==r)),l.invalidateQueries({queryKey:_})},onError(e){let t=ye(e,void 0,`Failed to disconnect ${n} account.`);J.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)(H,{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)(ct,{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)(Y,{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 ct({displayName:e,open:t,onOpenChange:n,onEditConnections:r,onDisable:i,disablePending:o,isMobile:s}){return s?(0,$.jsxs)(q.Root,{open:t,onOpenChange:n,children:[(0,$.jsx)(q.Trigger,{asChild:!0,children:(0,$.jsx)(a,{variant:`outlined`,rightIcon:(0,$.jsx)(O,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,$.jsxs)(q.Content,{children:[(0,$.jsx)(q.Header,{children:(0,$.jsx)(q.Title,{children:e})}),(0,$.jsxs)(q.Body,{children:[(0,$.jsx)(ce,{icon:B,label:`Edit connections`,onSelect:r}),(0,$.jsx)(ce,{icon:o?R:M,label:`Disable`,onSelect:()=>{o||i()}})]})]})]}):(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,{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)(B,{"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)(R,{className:`animate-spin`,"aria-hidden":!0}):(0,$.jsx)(M,{"aria-hidden":!0}),children:`Disable`})]})]})}var lt=[{value:`none`,label:`None`},{value:`oauth`,label:`OAuth`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],ut=[{value:`sse`,label:`SSE`},{value:`streamable-http`,label:`Streamable HTTP`},{value:`stdio`,label:`Stdio (command)`}];function dt({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)(K.Root,{open:e,onOpenChange:e=>{e||w()},children:(0,$.jsxs)(K.Content,{size:`md`,children:[(0,$.jsxs)(K.Header,{children:[(0,$.jsx)(K.Title,{icon:Xe,children:`Add MCP Server`}),(0,$.jsx)(K.Description,{children:`Connect to a Model Context Protocol server to extend available tools.`})]}),(0,$.jsx)(K.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)(G,{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:ut.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)(G,{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)(G,{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)(G,{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:lt.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)(G,{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)(G,{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)(G,{id:`mcp-apikey-value`,type:`password`,value:x,onChange:e=>S(e.target.value),placeholder:`sk_...`,fullWidth:!0})]})]}):null]})]})}),(0,$.jsxs)(K.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 ft(e){let{data:t,response:n}=await X.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 pt(e){let{data:t,response:n}=await X.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 mt(e,t){let{response:n}=await X.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 ht(e,t){let{response:n}=await X.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 gt(e,t){let{response:n}=await X.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 _t(e,t){let{data:n,response:r}=await X.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 vt(e,t){let{data:n,response:r}=await X.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 yt(e,t){let{response:n}=await X.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 bt(e){let{response:t}=await X.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 xt={connected:{icon:j,label:`Connected`,className:`text-[var(--system-positive-strong)]`},"needs-auth":{icon:L,label:`Needs Auth`,className:`text-[var(--system-warning-strong)]`},disabled:{icon:te,label:`Disabled`,className:`text-[var(--content-tertiary)]`}},St={icon:A,label:`Error`,className:`text-[var(--system-negative-strong)]`};function Ct({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=xt[e.status]??St,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)(R,{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)(z,{}),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)(ne,{}),onClick:v,disabled:l,tooltip:`Re-authenticate OAuth`,children:`Re-auth`}),(0,$.jsx)(a,{variant:`dangerGhost`,size:`compact`,leftIcon:(0,$.jsx)(ee,{}),onClick:y,disabled:u,tooltip:`Revoke OAuth credentials`,children:u?`Revoking...`:`Revoke`})]}):null,(0,$.jsx)(se,{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)(U,{}),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)(F,{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 wt=[{value:`none`,label:`None`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],Tt=[`low`,`medium`,`high`];function Et({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)(K.Root,{open:!!e,onOpenChange:e=>{e||_()},children:(0,$.jsxs)(K.Content,{size:`lg`,children:[(0,$.jsxs)(K.Header,{children:[(0,$.jsx)(K.Title,{icon:Xe,children:e.id}),(0,$.jsxs)(K.Description,{children:[e.transport.type,` transport · `,e.status]})]}),(0,$.jsx)(K.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:Tt.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:wt.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)(G,{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)(G,{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)(G,{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)(K.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 Dt=`mcp-servers`,Ot=`mcp-tools-summary`,kt=`Help me set up an MCP server to extend you with external tools.`;function At(){let e=We(),t=p(),n=s(),r=Pe.use.mcpAddServer(),i=Pe.use.hasHydrated(),[o,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:[Dt,e],queryFn:()=>ft(e)}),{data:M}=S({queryKey:[Ot,e],queryFn:()=>pt(e)}),N=(0,Q.useCallback)(()=>{t.invalidateQueries({queryKey:[Dt,e]}),t.invalidateQueries({queryKey:[Ot,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]),I=(0,Q.useCallback)(async(t,n)=>{h(e=>new Set(e).add(t));try{await mt(e,{name:t,enabled:n}),N()}catch{J.error(`Failed to ${n?`enable`:`disable`} ${t}`)}finally{h(e=>{let n=new Set(e);return n.delete(t),n})}},[e,N]),L=(0,Q.useCallback)(async()=>{if(d){y(!0);try{await gt(e,d),N(),J.success(`Removed ${d}`),f(null)}catch{J.error(`Failed to remove ${d}`)}finally{y(!1)}}},[d,e,N]),z=(0,Q.useCallback)(async t=>{E(t);let n;try{n=await _t(e,t)}catch{J.error(`Failed to start authentication for ${t}`),E(null);return}try{if(n.already_authenticated){J.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 vt(e,t);if(n.status===`complete`){J.success(`${t} authenticated successfully`),N();return}if(n.status===`error`){J.error(n.error??`Authentication failed for ${t}`);return}}J.error(`Authentication timed out for ${t}`)}catch{J.error(`Authentication polling failed for ${t}`)}finally{E(null),N()}},[e,N]),ee=(0,Q.useCallback)(async t=>{O(t);try{await yt(e,t),N(),J.success(`OAuth credentials revoked for ${t}`)}catch{J.error(`Failed to revoke OAuth for ${t}`)}finally{O(null)}},[e,N]),B=(0,Q.useCallback)(async t=>{let n=t.autoAuth?window.open(`about:blank`,`_blank`,`noopener`):null;_(!0);try{await ht(e,t),N(),J.success(`Added ${t.name}`),c(!1)}catch{J.error(`Failed to add ${t.name}`),n?.close(),_(!1);return}if(_(!1),t.autoAuth){E(t.name);try{let r=await _t(e,t.name);if(r.already_authenticated){n?.close(),J.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 vt(e,t.name);if(n.status===`complete`){J.success(`${t.name} authenticated successfully`),N();return}if(n.status===`error`){J.error(n.error??`Authentication failed for ${t.name}`);return}}J.error(`Authentication timed out for ${t.name}`)}catch{n?.close(),J.error(`Failed to start authentication for ${t.name}`)}finally{E(null),N()}}},[e,N]),te=(0,Q.useCallback)(async(t,n)=>{x(!0);try{await mt(e,n),N(),J.success(`Updated ${t}`),u(null)}catch{J.error(`Failed to update ${t}`)}finally{x(!1)}},[e,N]),H=(0,Q.useCallback)(async()=>{w(!0);try{await bt(e),N(),J.success(`MCP servers reloaded`)}catch{J.error(`Failed to reload MCP servers`)}finally{w(!1)}},[e,N]),re=(0,Q.useCallback)(()=>{r?c(!0):Oe(n,{prompt:kt})},[r,n]),ie=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)(ne,{className:C?`animate-spin`:``}),onClick:H,disabled:C,tooltip:`Reload all servers`,"aria-label":`Reload MCP servers`}),r?(0,$.jsx)(a,{variant:`primary`,size:`compact`,leftIcon:(0,$.jsx)(V,{}),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)(R,{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.`}):ie.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)(Xe,{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:ie.map(e=>(0,$.jsx)(Ct,{server:e,toolsSummary:P.get(e.id),onToggleEnabled:I,onRemove:f,onConfigure:u,onAuthenticate:z,onRevokeOAuth:ee,isUpdating:m.has(e.id),isAuthenticating:T===e.id,isRevoking:D===e.id},e.id))}),r?(0,$.jsx)(dt,{open:o,onClose:()=>c(!1),onAdd:B,isPending:g}):null,(0,$.jsx)(Et,{server:F,toolsSummary:l?P.get(l):void 0,onClose:()=>u(null),onSave:te,isPending:b}),(0,$.jsx)(Y,{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:L,onCancel:()=>f(null)})]})}function jt(){return(0,$.jsx)(At,{})}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]=o(),i=s(),a=we(),[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(n(Mt,`false`)===`true`)},[]);let C=()=>{y(!0),t(Mt,`true`)};(0,Q.useEffect)(()=>{let e=!0;return(async()=>{try{let t=await xe();e&&t.ok&&l(t.data)}catch(e){r(e,{context:`integrations.getAssistant`})}finally{e&&d(!1)}})(),()=>{e=!1}},[]);let{platformAssistantId:w,isLoading:T}=Ge(c?.id,a===`full`),{data:E,isLoading:D,isError:k}=S({...ge({path:{assistant_id:c?.id??``}}),select:e=>e.providers,enabled:!!c}),{data:A,isLoading:j}=S({...Z({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`)J.success(r?`${r} account connected successfully.`:`Account connected successfully.`);else if(t===`error`){let t=e.get(`oauth_code`)??`unknown`;J.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(Ce.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`,I=(()=>{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`}})(),L=(()=>{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)(oe,{tone:`info`,icon:(0,$.jsx)(ie,{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)(G,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`Search Integrations`,"aria-label":`Search integrations`,leftIcon:(0,$.jsx)(re,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,wrapperClassName:`flex-1`}),(0,$.jsxs)(W.Root,{open:g,onOpenChange:_,children:[(0,$.jsx)(W.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)(W.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)(R,{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)(re,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:I}),(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:L})]}):(0,$.jsx)(`div`,{className:`space-y-2`,children:N.map(e=>(0,$.jsx)(st,{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)(at,{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]=o(),n=Ft(e.get(`tab`));return(0,$.jsx)(`div`,{className:`space-y-6`,children:(0,$.jsxs)(N.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)(N.List,{children:[(0,$.jsx)(N.Trigger,{value:`oauth`,children:`OAuth`}),(0,$.jsx)(N.Trigger,{value:`mcp`,children:`MCP`})]}),(0,$.jsx)(N.Panel,{value:`oauth`,className:`pt-4`,children:(0,$.jsx)(Q.Suspense,{children:(0,$.jsx)(It,{})})}),(0,$.jsx)(N.Panel,{value:`mcp`,className:`pt-4`,children:(0,$.jsx)(jt,{})})]})})}export{Lt as IntegrationsPage};
@@ -0,0 +1 @@
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{l as n,r,t as i}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as a}from"./jsx-runtime-D3ZM-ToX.js";import{t as o}from"./typography-DEI9Ra9z.js";import{t as s}from"./chevron-left-CytMddTB.js";import"./src-CnF7WXNj.js";import{t as c}from"./assistant-identity-store-6On4WZ62.js";import{d as l,i as u}from"./routes-CsoiCk2y.js";import{n as d}from"./use-is-mobile-Cx2xnNUx.js";import{t as f}from"./chat-layout-slots-store-KQz1WMKU.js";import{t as p}from"./page-shell-Ns8K4aqQ.js";var m=e(t(),1),h=a();function g(){let e=c.use.name(),{pathname:t}=n(),a=d(),g=f.use.setTopBarCenter(),_=u(t),v=_?.label??null;return(0,m.useEffect)(()=>(g(a&&v?(0,h.jsx)(o,{variant:`body-medium-default`,className:`truncate text-[var(--content-secondary)]`,children:v}):null),()=>{g(null)}),[a,v,g]),_?(0,h.jsxs)(p,{children:[(0,h.jsxs)(`div`,{className:`mb-4 flex shrink-0 items-center gap-1.5`,children:[(0,h.jsx)(i,{to:l.identity,className:`-ml-2 flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-[var(--content-secondary)] transition-colors outline-none hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)] focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,"aria-label":`Back to ${e||`Assistant`}`,title:`Back to ${e||`Assistant`}`,children:(0,h.jsx)(s,{className:`h-5 w-5`,"aria-hidden":!0})}),(0,h.jsx)(`h1`,{className:`text-title-large text-[var(--content-default)] max-md:hidden`,children:_.label})]}),(0,h.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:(0,h.jsx)(r,{})})]}):(0,h.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,h.jsx)(r,{})})}export{g as IntelligenceLayout};
@@ -0,0 +1 @@
1
+ import{t as e}from"./queryOptions-CMSBCFOf.js";import{_n as t}from"./sdk.gen-DeyOX3Kb.js";import{n,r,t as i}from"./api-errors-DHvv5HEN.js";import{n as a}from"./get-memory-stats-CdA2IhkV.js";var o=`Failed to load the memory graph.`;function s(a){return e({queryKey:[`memory-graph`,a],staleTime:5*6e4,queryFn:async()=>{let{data:e,error:s,response:c}=await t({path:{assistant_id:a},throwOnError:!1});if(n(c,s,o),c.status===404)return{kind:`unsupported`};if(!c.ok)throw new i(c.status,r(s,c,o));return!e||e.supported===!1?{kind:`unsupported`}:{kind:`ready`,graph:e}}})}function c(e,t){e.invalidateQueries({queryKey:s(t).queryKey}),e.invalidateQueries({queryKey:a(t).queryKey})}export{s as n,c as t};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-CAM1RhH8.js";import{it as t,lt as n,ot as r,st as i}from"./react-query.gen-C5c1Acuq.js";var a=e(`circle-arrow-up`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 12-4-4-4 4`,key:`177agl`}],[`path`,{d:`M12 16V8`,key:`1sbj14`}]]),o=e(`shopping-cart`,[[`circle`,{cx:`8`,cy:`21`,r:`1`,key:`jimo8o`}],[`circle`,{cx:`19`,cy:`21`,r:`1`,key:`13723u`}],[`path`,{d:`M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12`,key:`9zh506`}]]);function s(e,a,o){if(e.invalidateQueries({queryKey:i({path:{assistant_id:a}})}),e.invalidateQueries({queryKey:n({path:{assistant_id:a}})}),o){e.invalidateQueries({queryKey:t({path:{assistant_id:a,name:o}})}),e.invalidateQueries({queryKey:r({path:{assistant_id:a,name:o}})});return}e.invalidateQueries({queryKey:[{_id:`pluginsByNameGet`,path:{assistant_id:a}}]}),e.invalidateQueries({queryKey:[{_id:`pluginsByNameInspectGet`,path:{assistant_id:a}}]})}export{o as n,a as r,s as t};
1
+ import{t as e}from"./createLucideIcon-CAM1RhH8.js";import{it as t,lt as n,ot as r,st as i}from"./react-query.gen-BeiAUt-2.js";var a=e(`circle-arrow-up`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 12-4-4-4 4`,key:`177agl`}],[`path`,{d:`M12 16V8`,key:`1sbj14`}]]),o=e(`shopping-cart`,[[`circle`,{cx:`8`,cy:`21`,r:`1`,key:`jimo8o`}],[`circle`,{cx:`19`,cy:`21`,r:`1`,key:`13723u`}],[`path`,{d:`M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12`,key:`9zh506`}]]);function s(e,a,o){if(e.invalidateQueries({queryKey:i({path:{assistant_id:a}})}),e.invalidateQueries({queryKey:n({path:{assistant_id:a}})}),o){e.invalidateQueries({queryKey:t({path:{assistant_id:a,name:o}})}),e.invalidateQueries({queryKey:r({path:{assistant_id:a,name:o}})});return}e.invalidateQueries({queryKey:[{_id:`pluginsByNameGet`,path:{assistant_id:a}}]}),e.invalidateQueries({queryKey:[{_id:`pluginsByNameInspectGet`,path:{assistant_id:a}}]})}export{o as n,a as r,s as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{u as n}from"./chunk-5KNZJZUH-Bsoom5--.js";import{u as r}from"./routes-D9sNqB_o.js";var i=e(t(),1);function a(){let e=n();return(0,i.useEffect)(()=>{e(`${r.settings.general}?preferences=open`,{replace:!0})},[e]),null}export{a as KeyboardShortcutsRedirectPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{u as n}from"./chunk-5KNZJZUH-Bsoom5--.js";import{d as r}from"./routes-CsoiCk2y.js";var i=e(t(),1);function a(){let e=n();return(0,i.useEffect)(()=>{e(`${r.settings.general}?preferences=open`,{replace:!0})},[e]),null}export{a as KeyboardShortcutsRedirectPage};
@@ -1,4 +1,4 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{Rr as n,Ur as r}from"./sdk.gen-BHZ0fJla.js";import{n as i}from"./api-errors-CFiCT7Ap.js";var a={companionCoworker:`companion-coworker`,genzBoomer:`genz-boomer`,executeCollaborate:`execute-collaborate`,playfulSerious:`playful-serious`,politeUnfiltered:`polite-unfiltered`},o=2;function s({processing:e,sawProcessing:t,hasReply:n,stableReads:r}){return e===void 0?n&&r>=o:!e&&(n||t)}var c=e=>Math.max(0,Math.min(100,Math.round(e)));function l(e,t,n){let r=t=>c(e[t]??50),i=r(a.companionCoworker),o=r(a.executeCollaborate),s=r(a.playfulSerious),l=r(a.politeUnfiltered),u=t?.trim()||`The user`,d=n?.trim(),f=d?`Your name is ${d}. Write exactly \`- **Name:** ${d}\` in IDENTITY.md — do not rename yourself or invent a different name, even if the file currently shows a placeholder or a different name. This changes your personality, not who you are.`:"Keep your existing name exactly as it is — this changes your personality, not who you are. Do not rename yourself, and if your name is already set, carry it through verbatim (don't treat it as a placeholder to fill). Whatever the name ends up being, keep it on IDENTITY.md's `- **Name:** …` line.";return`<system-message>
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{Rr as n,Ur as r}from"./sdk.gen-DeyOX3Kb.js";import{n as i}from"./api-errors-DHvv5HEN.js";var a={companionCoworker:`companion-coworker`,genzBoomer:`genz-boomer`,executeCollaborate:`execute-collaborate`,playfulSerious:`playful-serious`,politeUnfiltered:`polite-unfiltered`},o=2;function s({processing:e,sawProcessing:t,hasReply:n,stableReads:r}){return e===void 0?n&&r>=o:!e&&(n||t)}var c=e=>Math.max(0,Math.min(100,Math.round(e)));function l(e,t,n){let r=t=>c(e[t]??50),i=r(a.companionCoworker),o=r(a.executeCollaborate),s=r(a.playfulSerious),l=r(a.politeUnfiltered),u=t?.trim()||`The user`,d=n?.trim(),f=d?`Your name is ${d}. Write exactly \`- **Name:** ${d}\` in IDENTITY.md — do not rename yourself or invent a different name, even if the file currently shows a placeholder or a different name. This changes your personality, not who you are.`:"Keep your existing name exactly as it is — this changes your personality, not who you are. Do not rename yourself, and if your name is already set, carry it through verbatim (don't treat it as a placeholder to fill). Whatever the name ends up being, keep it on IDENTITY.md's `- **Name:** …` line.";return`<system-message>
2
2
  ${u} wants to customize your personality.
3
3
  This is what they want you to be:
4
4
  Companion (0-100): ${100-i}
@@ -0,0 +1 @@
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{f as n,l as r,u as i}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as a}from"./jsx-runtime-D3ZM-ToX.js";import{t as o}from"./loader-circle-XREx3i4W.js";import{n as s,t as c}from"./use-edit-app-BSbRuVnn.js";import"./src-CnF7WXNj.js";import{n as l}from"./toast-BcMdOTp1.js";import{n as u}from"./sdk.gen-DeyOX3Kb.js";import{d}from"./routes-CsoiCk2y.js";import{o as f}from"./viewer-store-BVsBGqdn.js";import{n as p}from"./conversation-navigation-D8y9l5qL.js";import{n as m}from"./use-is-mobile-Cx2xnNUx.js";import"./use-edge-swipe-DDntz5ZJ.js";import{n as h,t as g}from"./deploy-store-Dxp-S0Jo.js";import{t as _}from"./use-active-assistant-id-CUKao_nq.js";import{t as v}from"./deploy-dialogs-DcxJ8zmL.js";import{t as y}from"./use-edge-swipe-back-Rp4TEihl.js";import{t as b}from"./app-types-BnzWLsk5.js";var x=e(t(),1),S=a();function C({enabled:e}){return e?(0,S.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-y-0 left-0 z-10`,style:{width:20}}):null}function w(){let{appId:e}=n(),t=_(),a=i(),{pathname:w}=r(),T=m(),E=g.use.isDeploying(),D=(0,x.useRef)(null),[O,k]=(0,x.useState)(null),[A,j]=(0,x.useState)(null),[M,N]=(0,x.useState)(!1),P=(0,x.useRef)(null);(0,x.useEffect)(()=>{if(e)return P.current=e,k(null),j(null),u({path:{assistant_id:t,id:e},throwOnError:!0}).then(({data:n})=>{P.current===e&&(f(t,n.appId,n.html),k({appId:n.appId,dirName:n.dirName,name:n.name,html:n.html,origin:n.origin}))}).catch(t=>{P.current===e&&j(t instanceof Error?t.message:`Failed to open app`)}),()=>{P.current=null}},[t,e]);let F=(0,x.useCallback)(()=>{a(d.library.root)},[a]);y({containerRef:D,onBack:F,enabled:T,navKey:w});let I=c(),L=(0,x.useCallback)(()=>{O&&I(O)},[O,I]),R=(0,x.useCallback)(async()=>{if(!(!O||M)){N(!0);try{await h(t,O.appId,O.name),l.success(`App exported`,{description:`${O.name}.vellum`})}catch(e){l.error(`Failed to share app`,{description:e instanceof Error?e.message:void 0})}finally{N(!1)}}},[t,O,M]),z=(0,x.useCallback)(()=>{O&&g.getState().deployApp(t,O.appId,O.name,O.html)},[t,O]),B=(0,x.useCallback)(e=>{p(a,{prompt:e})},[a]);return e?A?(0,S.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4`,children:[(0,S.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:A}),(0,S.jsx)(`button`,{type:`button`,onClick:F,className:`text-body-medium-default text-[var(--primary-base)] underline`,children:`Back to Library`})]}):O?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{ref:D,className:`relative flex min-h-0 flex-1 flex-col`,children:[(0,S.jsx)(C,{enabled:T}),(0,S.jsx)(s,{appId:O.appId,appName:O.name,html:O.html,assistantId:t,onClose:F,...b(O.origin)?{}:{onEdit:L,onShare:R,isSharing:M,onDeploy:z,isDeploying:E},enableFullscreen:!0})]}),(0,S.jsx)(v,{assistantId:t,onStartConversation:B})]}):(0,S.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,S.jsx)(o,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}):null}export{w as LibraryDetailPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{u as r}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./jsx-runtime-D3ZM-ToX.js";import{t as s}from"./arrow-up-BNd4Gpy7.js";import{t as c}from"./menu-BvjhxZo7.js";import{t as l}from"./download-CywcQLB2.js";import{t as u}from"./ellipsis-DnoqTkj4.js";import{t as d}from"./file-text-Br730Q4B.js";import{t as f}from"./globe-CMtjL_s_.js";import{t as p}from"./layout-grid-DA_CfD6d.js";import{a as m,c as h,i as g,n as _,o as v,r as y,s as b}from"./app-card-CAaFL1oB.js";import{t as x}from"./search-BVW-n8to.js";import{t as S}from"./trash-2-L5LNgw9o.js";import"./src-te3YTBG-.js";import{t as C}from"./input-hw3el2GJ.js";import{n as w,t as T}from"./panel-item-CrtoJCrd.js";import{n as E}from"./toast-LgLp4obE.js";import{s as D}from"./sdk.gen-BHZ0fJla.js";import{E as O,n as k,t as A}from"./react-query.gen-C5c1Acuq.js";import{u as j}from"./routes-D9sNqB_o.js";import{a as M}from"./viewer-store-DLk-jp8U.js";import{n as N}from"./conversation-navigation-DsN0hcpL.js";import{n as P}from"./use-is-mobile-BlQuzI5Z.js";import{t as F}from"./pointer-BbPfN86L.js";import{t as I}from"./misc-CuYswARt.js";import{n as L,t as R}from"./deploy-store-D6snB1j5.js";import{t as z}from"./use-active-assistant-id-CldxA_-M.js";import{t as B}from"./format-date-BGnM4mqL.js";import{t as V}from"./deploy-dialogs-DZSd5o9b.js";import{t as H}from"./app-types-DSkgEmV3.js";var U=e(t(),1),W=o();function G(e){return e===1?`1 word`:`${e} words`}function K({document:e,onOpen:t}){return(0,W.jsxs)(`div`,{className:`group relative flex flex-col gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>t(e.surfaceId),className:I(`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,W.jsx)(d,{size:34,className:`text-[var(--content-tertiary)]`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:G(e.wordCount)})]}),(0,W.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,W.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.title}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:B(new Date(e.updatedAt))})]})]})}function q({accept:e,fileInputRef:t,isImporting:r,onImportBundle:i,onNewConversation:a}){return(0,W.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4 py-24`,children:[(0,W.jsx)(`input`,{ref:t,type:`file`,accept:e,className:`hidden`,onChange:i}),(0,W.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--surface-base)]`,children:(0,W.jsx)(p,{size:32,className:`text-[var(--content-tertiary)]`})}),(0,W.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Your library is empty`}),(0,W.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,W.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[a?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,onClick:a,children:`New Conversation`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:`or`})]}):null,(0,W.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>t.current?.click(),disabled:r,children:[r?(0,W.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,W.jsx)(l,{size:14}),(0,W.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,U.useState)(!1),d=H(e.origin),f=d?void 0:a,p=d?void 0:o,m=(0,U.useCallback)(()=>M(t,e.id),[t,e.id]),g=(0,U.useCallback)(async()=>{if(!l){u(!0);try{await L(t,e.id,e.name),E.success(`App exported`,{description:`${e.name}.vellum`})}catch(e){E.error(`Failed to share app`,{description:e instanceof Error?e.message:void 0})}finally{u(!1)}}},[t,e.id,e.name,l]),[y,x]=(0,U.useState)(!1),C=P();return(0,W.jsx)(v,{trailingActions:F()?[{id:`pin`,label:n?`Unpin`:`Pin`,icon:n?h:b,onSelect:()=>i(e)},...f?[{id:`delete`,label:`Delete`,icon:S,variant:`destructive`,onSelect:()=>f(e)}]:[]]:[],className:`rounded-xl`,children:(0,W.jsxs)(`div`,{className:I(`group relative flex flex-col gap-2`,s&&`animate-[card-entrance_400ms_ease-out]`),onAnimationEnd:s?c:void 0,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),className:I(`relative w-full cursor-pointer overflow-hidden rounded-xl`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`),children:(0,W.jsx)(_,{name:e.name,icon:e.icon,loadHtml:m})}),(0,W.jsx)(`div`,{className:I(`absolute right-2 top-2 z-20 transition-opacity`,`max-md:opacity-100`,`md:group-hover:opacity-100 md:group-focus-within:opacity-100`,y?`opacity-100`:`md:opacity-0`),children:(0,W.jsx)(Y,{appName:e.name,isPinned:n,open:y,onOpenChange:x,onPin:()=>i(e),onDelete:f?()=>f(e):void 0,onShare:d?void 0:g,onDeploy:p,isMobile:C})}),(0,W.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,W.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.name}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:B(new Date(e.createdAt))})]})]})})}function Y({appName:e,isPinned:t,open:r,onOpenChange:i,onPin:a,onDelete:o,onShare:l,onDeploy:d,isMobile:p}){return p?(0,W.jsxs)(w.Root,{open:r,onOpenChange:i,children:[(0,W.jsx)(w.Trigger,{asChild:!0,children:(0,W.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,W.jsx)(u,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,W.jsxs)(w.Content,{children:[(0,W.jsx)(w.Header,{className:`sr-only`,children:(0,W.jsx)(w.Title,{children:e})}),(0,W.jsxs)(w.Body,{className:`pt-0`,children:[(0,W.jsx)(T,{icon:t?h:b,label:t?`Unpin`:`Pin`,onSelect:()=>{i(!1),a()}}),l?(0,W.jsx)(T,{icon:s,label:(0,W.jsxs)(`span`,{className:`flex flex-col gap-0.5 overflow-visible whitespace-normal`,children:[(0,W.jsx)(`span`,{children:`Share`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Export as .vellum file`})]}),onSelect:()=>{i(!1),l()}}):null,d?(0,W.jsx)(T,{icon:f,label:(0,W.jsxs)(`span`,{className:`flex flex-col gap-0.5 overflow-visible whitespace-normal`,children:[(0,W.jsx)(`span`,{children:`Deploy to Vercel`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Publish as a static page`})]}),onSelect:()=>{i(!1),d()}}):null,o?(0,W.jsx)(T,{icon:S,label:`Delete`,onSelect:()=>{i(!1),o()}}):null]})]})]}):(0,W.jsxs)(c.Root,{open:r,onOpenChange:i,children:[(0,W.jsx)(c.Trigger,{asChild:!0,children:(0,W.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,W.jsx)(u,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,W.jsxs)(c.Content,{align:`end`,sideOffset:4,children:[(0,W.jsx)(c.Item,{leftIcon:t?(0,W.jsx)(h,{size:14}):(0,W.jsx)(b,{size:14}),onSelect:()=>a(),className:`whitespace-nowrap`,children:t?`Unpin`:`Pin`}),l?(0,W.jsx)(c.Item,{leftIcon:(0,W.jsx)(s,{size:14}),onSelect:()=>l(),className:`whitespace-nowrap`,children:`Share`}):null,d?(0,W.jsx)(c.Item,{leftIcon:(0,W.jsx)(f,{size:14}),onSelect:()=>d(),className:`whitespace-nowrap`,children:`Deploy to Vercel`}):null,o?(0,W.jsx)(c.Item,{leftIcon:(0,W.jsx)(S,{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,W.jsxs)(`section`,{children:[(0,W.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:e}),(0,W.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:t.map(e=>(0,W.jsx)(J,{app:e,assistantId:n,isPinned:r.has(e.id),onOpen:a,onPin:o,onDelete:s,justImported:e.id===i,onAnimationEnd:l,onDeploy:c?()=>c(e.id):void 0},e.id))})]})}var Z=(e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt;function Q(e){let t=m.use.pinnedAppIds(),{data:n=[],isLoading:r,error:i}=a({...A({path:{assistant_id:e}}),select:e=>e.apps}),{data:o=[],isLoading:s,error:c}=a({...O({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,U.useState)(``),p=(0,U.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,U.useMemo)(()=>p.filter(e=>t.has(e.id)).sort(Z),[p,t]),recentApps:(0,U.useMemo)(()=>p.filter(e=>!t.has(e.id)).sort(Z),[p,t]),filteredDocuments:(0,U.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 D({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,onNewConversation:r,onOpenDocument:a,onOpenApp:o}){let s=i(),c=m.use.togglePin(),u=m.use.pinnedAppIds(),d=R.use.isDeploying(),{apps:f,documents:p,filteredApps:h,pinnedApps:_,recentApps:v,filteredDocuments:b,searchText:S,setSearchText:w,loading:T,error:D}=Q(e),{pendingDelete:O,isDeleting:A,requestDelete:j,confirmDelete:N,cancelDelete:P}=y(e),[I]=(0,U.useState)(()=>F()?void 0:`.vellum`),L=(0,U.useRef)(null),[z,B]=(0,U.useState)(!1),H=(0,U.useCallback)(async t=>{let n=t.target.files?.[0];if(!(!n||z)){B(!0);try{let t=await $(e,n);await s.invalidateQueries({queryKey:k({path:{assistant_id:e}})}),E.success(t.name+` imported`),o(t.appId)}catch(e){E.error(e instanceof Error?e.message:`Failed to import app`)}finally{B(!1),L.current&&(L.current.value=``)}}},[e,z,s,o]),G=(0,U.useCallback)(async t=>{if(d)return;let n=f.find(e=>e.id===t)?.name??`this app`;try{let r=await M(e,t);R.getState().deployApp(e,t,n,r)}catch{R.getState().deployApp(e,t,n,``)}},[e,d,f]),J=(0,U.useCallback)(e=>c(e),[c]);return T?(0,W.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,W.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-base)] border-t-[var(--primary-base)]`,role:`status`,"aria-label":`Loading apps`})}):D?(0,W.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4`,children:[(0,W.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:D}),(0,W.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`})]}):f.length===0&&p.length===0?(0,W.jsx)(q,{accept:I,fileInputRef:L,isImporting:z,onImportBundle:H,onNewConversation:r?()=>r():void 0}):(0,W.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[(0,W.jsx)(`div`,{className:`mb-4 flex shrink-0 items-center justify-end gap-4`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`input`,{ref:L,type:`file`,accept:I,className:`hidden`,onChange:H}),(0,W.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>L.current?.click(),disabled:z,children:[z?(0,W.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,W.jsx)(l,{size:14}),(0,W.jsx)(`span`,{className:`ml-1.5`,children:`Import`})]})]})}),(0,W.jsx)(`div`,{className:`mb-6 shrink-0`,children:(0,W.jsx)(C,{fullWidth:!0,type:`text`,placeholder:`Search your library`,value:S,onChange:e=>w(e.target.value),leftIcon:(0,W.jsx)(x,{size:16})})}),(0,W.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:h.length===0&&b.length===0?(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16`,children:[(0,W.jsx)(x,{size:32,className:`mb-4 text-[var(--content-tertiary)]`}),(0,W.jsxs)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No apps or documents matched “`,S,`”`]})]}):(0,W.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,W.jsx)(X,{title:`Pinned`,apps:_,assistantId:e,pinnedAppIds:u,onOpen:o,onPin:J,onDelete:j,onDeploy:G}),(0,W.jsx)(X,{title:`Recents`,apps:v,assistantId:e,pinnedAppIds:u,onOpen:o,onPin:J,onDelete:j,onDeploy:G}),b.length>0?(0,W.jsxs)(`section`,{children:[(0,W.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:`Documents`}),(0,W.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:b.map(e=>(0,W.jsx)(K,{document:e,onOpen:e=>{a&&a(e)}},e.surfaceId))})]}):null]})}),(0,W.jsx)(V,{assistantId:e,assistantName:t,onStartConversation:r}),(0,W.jsx)(g,{app:O,isDeleting:A,onConfirm:N,onCancel:P})]})}function te(){let e=z(),t=r();return(0,W.jsx)(ee,{assistantId:e,onNewConversation:(0,U.useCallback)(e=>{N(t,{prompt:e})},[t]),onOpenDocument:(0,U.useCallback)(e=>{t(j.document(e))},[t]),onOpenApp:(0,U.useCallback)(e=>{t(j.library.app(e))},[t])})}export{te as LibraryPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{u as r}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./jsx-runtime-D3ZM-ToX.js";import{t as s}from"./arrow-up-BNd4Gpy7.js";import{t as c}from"./menu-BKrcAFYk.js";import{t as l}from"./download-CywcQLB2.js";import{t as u}from"./ellipsis-DnoqTkj4.js";import{t as d}from"./file-text-Br730Q4B.js";import{t as f}from"./globe-CMtjL_s_.js";import{t as p}from"./layout-grid-DA_CfD6d.js";import{a as m,c as h,i as g,n as _,o as v,r as y,s as b}from"./app-card-BF2l9ot8.js";import{t as x}from"./search-BVW-n8to.js";import{t as S}from"./trash-2-BF5y4UkY.js";import"./src-CnF7WXNj.js";import{t as C}from"./input-F_x2LXmm.js";import{n as w,t as T}from"./panel-item-CQt19wOM.js";import{n as E}from"./toast-BcMdOTp1.js";import{s as D}from"./sdk.gen-DeyOX3Kb.js";import{E as O,n as k,t as A}from"./react-query.gen-BeiAUt-2.js";import{d as j}from"./routes-CsoiCk2y.js";import{a as M}from"./viewer-store-BVsBGqdn.js";import{n as N}from"./conversation-navigation-D8y9l5qL.js";import{n as P}from"./use-is-mobile-Cx2xnNUx.js";import{t as F}from"./pointer-DAyn_9jY.js";import{t as I}from"./misc-CXDB4i-X.js";import{n as L,t as R}from"./deploy-store-Dxp-S0Jo.js";import{t as z}from"./use-active-assistant-id-CUKao_nq.js";import{t as B}from"./format-date-BEAiOK8n.js";import{t as V}from"./deploy-dialogs-DcxJ8zmL.js";import{t as H}from"./app-types-BnzWLsk5.js";var U=e(t(),1),W=o();function G(e){return e===1?`1 word`:`${e} words`}function K({document:e,onOpen:t}){return(0,W.jsxs)(`div`,{className:`group relative flex flex-col gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>t(e.surfaceId),className:I(`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,W.jsx)(d,{size:34,className:`text-[var(--content-tertiary)]`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:G(e.wordCount)})]}),(0,W.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,W.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.title}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:B(new Date(e.updatedAt))})]})]})}function q({accept:e,fileInputRef:t,isImporting:r,onImportBundle:i,onNewConversation:a}){return(0,W.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4 py-24`,children:[(0,W.jsx)(`input`,{ref:t,type:`file`,accept:e,className:`hidden`,onChange:i}),(0,W.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--surface-base)]`,children:(0,W.jsx)(p,{size:32,className:`text-[var(--content-tertiary)]`})}),(0,W.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Your library is empty`}),(0,W.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,W.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[a?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(n,{variant:`primary`,size:`regular`,onClick:a,children:`New Conversation`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:`or`})]}):null,(0,W.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>t.current?.click(),disabled:r,children:[r?(0,W.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,W.jsx)(l,{size:14}),(0,W.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,U.useState)(!1),d=H(e.origin),f=d?void 0:a,p=d?void 0:o,m=(0,U.useCallback)(()=>M(t,e.id),[t,e.id]),g=(0,U.useCallback)(async()=>{if(!l){u(!0);try{await L(t,e.id,e.name),E.success(`App exported`,{description:`${e.name}.vellum`})}catch(e){E.error(`Failed to share app`,{description:e instanceof Error?e.message:void 0})}finally{u(!1)}}},[t,e.id,e.name,l]),[y,x]=(0,U.useState)(!1),C=P();return(0,W.jsx)(v,{trailingActions:F()?[{id:`pin`,label:n?`Unpin`:`Pin`,icon:n?h:b,onSelect:()=>i(e)},...f?[{id:`delete`,label:`Delete`,icon:S,variant:`destructive`,onSelect:()=>f(e)}]:[]]:[],className:`rounded-xl`,children:(0,W.jsxs)(`div`,{className:I(`group relative flex flex-col gap-2`,s&&`animate-[card-entrance_400ms_ease-out]`),onAnimationEnd:s?c:void 0,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),className:I(`relative w-full cursor-pointer overflow-hidden rounded-xl`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`),children:(0,W.jsx)(_,{name:e.name,icon:e.icon,loadHtml:m})}),(0,W.jsx)(`div`,{className:I(`absolute right-2 top-2 z-20 transition-opacity`,`max-md:opacity-100`,`md:group-hover:opacity-100 md:group-focus-within:opacity-100`,y?`opacity-100`:`md:opacity-0`),children:(0,W.jsx)(Y,{appName:e.name,isPinned:n,open:y,onOpenChange:x,onPin:()=>i(e),onDelete:f?()=>f(e):void 0,onShare:d?void 0:g,onDeploy:p,isMobile:C})}),(0,W.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,W.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.name}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:B(new Date(e.createdAt))})]})]})})}function Y({appName:e,isPinned:t,open:r,onOpenChange:i,onPin:a,onDelete:o,onShare:l,onDeploy:d,isMobile:p}){return p?(0,W.jsxs)(w.Root,{open:r,onOpenChange:i,children:[(0,W.jsx)(w.Trigger,{asChild:!0,children:(0,W.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,W.jsx)(u,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,W.jsxs)(w.Content,{children:[(0,W.jsx)(w.Header,{className:`sr-only`,children:(0,W.jsx)(w.Title,{children:e})}),(0,W.jsxs)(w.Body,{className:`pt-0`,children:[(0,W.jsx)(T,{icon:t?h:b,label:t?`Unpin`:`Pin`,onSelect:()=>{i(!1),a()}}),l?(0,W.jsx)(T,{icon:s,label:(0,W.jsxs)(`span`,{className:`flex flex-col gap-0.5 overflow-visible whitespace-normal`,children:[(0,W.jsx)(`span`,{children:`Share`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Export as .vellum file`})]}),onSelect:()=>{i(!1),l()}}):null,d?(0,W.jsx)(T,{icon:f,label:(0,W.jsxs)(`span`,{className:`flex flex-col gap-0.5 overflow-visible whitespace-normal`,children:[(0,W.jsx)(`span`,{children:`Deploy to Vercel`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Publish as a static page`})]}),onSelect:()=>{i(!1),d()}}):null,o?(0,W.jsx)(T,{icon:S,label:`Delete`,onSelect:()=>{i(!1),o()}}):null]})]})]}):(0,W.jsxs)(c.Root,{open:r,onOpenChange:i,children:[(0,W.jsx)(c.Trigger,{asChild:!0,children:(0,W.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,W.jsx)(u,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,W.jsxs)(c.Content,{align:`end`,sideOffset:4,children:[(0,W.jsx)(c.Item,{leftIcon:t?(0,W.jsx)(h,{size:14}):(0,W.jsx)(b,{size:14}),onSelect:()=>a(),className:`whitespace-nowrap`,children:t?`Unpin`:`Pin`}),l?(0,W.jsx)(c.Item,{leftIcon:(0,W.jsx)(s,{size:14}),onSelect:()=>l(),className:`whitespace-nowrap`,children:`Share`}):null,d?(0,W.jsx)(c.Item,{leftIcon:(0,W.jsx)(f,{size:14}),onSelect:()=>d(),className:`whitespace-nowrap`,children:`Deploy to Vercel`}):null,o?(0,W.jsx)(c.Item,{leftIcon:(0,W.jsx)(S,{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,W.jsxs)(`section`,{children:[(0,W.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:e}),(0,W.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:t.map(e=>(0,W.jsx)(J,{app:e,assistantId:n,isPinned:r.has(e.id),onOpen:a,onPin:o,onDelete:s,justImported:e.id===i,onAnimationEnd:l,onDeploy:c?()=>c(e.id):void 0},e.id))})]})}var Z=(e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt;function Q(e){let t=m.use.pinnedAppIds(),{data:n=[],isLoading:r,error:i}=a({...A({path:{assistant_id:e}}),select:e=>e.apps}),{data:o=[],isLoading:s,error:c}=a({...O({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,U.useState)(``),p=(0,U.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,U.useMemo)(()=>p.filter(e=>t.has(e.id)).sort(Z),[p,t]),recentApps:(0,U.useMemo)(()=>p.filter(e=>!t.has(e.id)).sort(Z),[p,t]),filteredDocuments:(0,U.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 D({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,onNewConversation:r,onOpenDocument:a,onOpenApp:o}){let s=i(),c=m.use.togglePin(),u=m.use.pinnedAppIds(),d=R.use.isDeploying(),{apps:f,documents:p,filteredApps:h,pinnedApps:_,recentApps:v,filteredDocuments:b,searchText:S,setSearchText:w,loading:T,error:D}=Q(e),{pendingDelete:O,isDeleting:A,requestDelete:j,confirmDelete:N,cancelDelete:P}=y(e),[I]=(0,U.useState)(()=>F()?void 0:`.vellum`),L=(0,U.useRef)(null),[z,B]=(0,U.useState)(!1),H=(0,U.useCallback)(async t=>{let n=t.target.files?.[0];if(!(!n||z)){B(!0);try{let t=await $(e,n);await s.invalidateQueries({queryKey:k({path:{assistant_id:e}})}),E.success(t.name+` imported`),o(t.appId)}catch(e){E.error(e instanceof Error?e.message:`Failed to import app`)}finally{B(!1),L.current&&(L.current.value=``)}}},[e,z,s,o]),G=(0,U.useCallback)(async t=>{if(d)return;let n=f.find(e=>e.id===t)?.name??`this app`;try{let r=await M(e,t);R.getState().deployApp(e,t,n,r)}catch{R.getState().deployApp(e,t,n,``)}},[e,d,f]),J=(0,U.useCallback)(e=>c(e),[c]);return T?(0,W.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,W.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-base)] border-t-[var(--primary-base)]`,role:`status`,"aria-label":`Loading apps`})}):D?(0,W.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4`,children:[(0,W.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:D}),(0,W.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`})]}):f.length===0&&p.length===0?(0,W.jsx)(q,{accept:I,fileInputRef:L,isImporting:z,onImportBundle:H,onNewConversation:r?()=>r():void 0}):(0,W.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[(0,W.jsx)(`div`,{className:`mb-4 flex shrink-0 items-center justify-end gap-4`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`input`,{ref:L,type:`file`,accept:I,className:`hidden`,onChange:H}),(0,W.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>L.current?.click(),disabled:z,children:[z?(0,W.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,W.jsx)(l,{size:14}),(0,W.jsx)(`span`,{className:`ml-1.5`,children:`Import`})]})]})}),(0,W.jsx)(`div`,{className:`mb-6 shrink-0`,children:(0,W.jsx)(C,{fullWidth:!0,type:`text`,placeholder:`Search your library`,value:S,onChange:e=>w(e.target.value),leftIcon:(0,W.jsx)(x,{size:16})})}),(0,W.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:h.length===0&&b.length===0?(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16`,children:[(0,W.jsx)(x,{size:32,className:`mb-4 text-[var(--content-tertiary)]`}),(0,W.jsxs)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No apps or documents matched “`,S,`”`]})]}):(0,W.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,W.jsx)(X,{title:`Pinned`,apps:_,assistantId:e,pinnedAppIds:u,onOpen:o,onPin:J,onDelete:j,onDeploy:G}),(0,W.jsx)(X,{title:`Recents`,apps:v,assistantId:e,pinnedAppIds:u,onOpen:o,onPin:J,onDelete:j,onDeploy:G}),b.length>0?(0,W.jsxs)(`section`,{children:[(0,W.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:`Documents`}),(0,W.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:b.map(e=>(0,W.jsx)(K,{document:e,onOpen:e=>{a&&a(e)}},e.surfaceId))})]}):null]})}),(0,W.jsx)(V,{assistantId:e,assistantName:t,onStartConversation:r}),(0,W.jsx)(g,{app:O,isDeleting:A,onConfirm:N,onCancel:P})]})}function te(){let e=z(),t=r();return(0,W.jsx)(ee,{assistantId:e,onNewConversation:(0,U.useCallback)(e=>{N(t,{prompt:e})},[t]),onOpenDocument:(0,U.useCallback)(e=>{t(j.document(e))},[t]),onOpenApp:(0,U.useCallback)(e=>{t(j.library.app(e))},[t])})}export{te as LibraryPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{a as r,t as i}from"./cn-CJf7MmLX.js";import{t as a}from"./createLucideIcon-CAM1RhH8.js";import{t as o}from"./chevron-right-HU6H84S0.js";import{a as s,i as c,n as l,o as u,r as d,s as f,t as p}from"./dist-jXSU-ejH.js";var m=a(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),h=e(t(),1),g=n();function _(e){let t=e+`CollectionProvider`,[n,i]=f(t),[a,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:n}=e,r=h.useRef(null),i=h.useRef(new Map).current;return(0,g.jsx)(a,{scope:t,itemMap:i,collectionRef:r,children:n})};s.displayName=t;let c=e+`CollectionSlot`,u=l(c),d=h.forwardRef((e,t)=>{let{scope:n,children:i}=e;return(0,g.jsx)(u,{ref:r(t,o(c,n).collectionRef),children:i})});d.displayName=c;let p=e+`CollectionItemSlot`,m=`data-radix-collection-item`,_=l(p),v=h.forwardRef((e,t)=>{let{scope:n,children:i,...a}=e,s=h.useRef(null),c=r(t,s),l=o(p,n);return h.useEffect(()=>(l.itemMap.set(s,{ref:s,...a}),()=>void l.itemMap.delete(s))),(0,g.jsx)(_,{[m]:``,ref:c,children:i})});v.displayName=p;function y(t){let n=o(e+`CollectionConsumer`,t);return h.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${m}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:s,Slot:d,ItemSlot:v},y,i]}var v=h.useId||(()=>void 0),y=0;function b(e){let[t,n]=h.useState(v());return s(()=>{e||n(e=>e??String(y++))},[e]),e||(t?`radix-${t}`:``)}function ee(e){let t=h.useRef(e);return h.useEffect(()=>{t.current=e}),h.useMemo(()=>(...e)=>t.current?.(...e),[])}var x=h.createContext(void 0);function S(e){let t=h.useContext(x);return e||t||`ltr`}var C=`rovingFocusGroup.onEntryFocus`,te={bubbles:!1,cancelable:!0},w=`RovingFocusGroup`,[T,E,D]=_(w),[O,k]=f(w,[D]),[A,j]=O(w),M=h.forwardRef((e,t)=>(0,g.jsx)(T.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,g.jsx)(T.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,g.jsx)(N,{...e,ref:t})})}));M.displayName=w;var N=h.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:i,loop:a=!1,dir:o,currentTabStopId:s,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:d,onEntryFocus:f,preventScrollOnEntryFocus:m=!1,..._}=e,v=h.useRef(null),y=r(t,v),b=S(o),[x,T]=c({prop:s,defaultProp:l??null,onChange:d,caller:w}),[D,O]=h.useState(!1),k=ee(f),j=E(n),M=h.useRef(!1),[N,P]=h.useState(0);return h.useEffect(()=>{let e=v.current;if(e)return e.addEventListener(C,k),()=>e.removeEventListener(C,k)},[k]),(0,g.jsx)(A,{scope:n,orientation:i,dir:b,loop:a,currentTabStopId:x,onItemFocus:h.useCallback(e=>T(e),[T]),onItemShiftTab:h.useCallback(()=>O(!0),[]),onFocusableItemAdd:h.useCallback(()=>P(e=>e+1),[]),onFocusableItemRemove:h.useCallback(()=>P(e=>e-1),[]),children:(0,g.jsx)(p.div,{tabIndex:D||N===0?-1:0,"data-orientation":i,..._,ref:y,style:{outline:`none`,...e.style},onMouseDown:u(e.onMouseDown,()=>{M.current=!0}),onFocus:u(e.onFocus,e=>{let t=!M.current;if(e.target===e.currentTarget&&t&&!D){let t=new CustomEvent(C,te);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=j().filter(e=>e.focusable);z([e.find(e=>e.active),e.find(e=>e.id===x),...e].filter(Boolean).map(e=>e.ref.current),m)}}M.current=!1}),onBlur:u(e.onBlur,()=>O(!1))})})}),P=`RovingFocusGroupItem`,F=h.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...s}=e,c=b(),l=a||c,d=j(P,n),f=d.currentTabStopId===l,m=E(n),{onFocusableItemAdd:_,onFocusableItemRemove:v,currentTabStopId:y}=d;return h.useEffect(()=>{if(r)return _(),()=>v()},[r,_,v]),(0,g.jsx)(T.ItemSlot,{scope:n,id:l,focusable:r,active:i,children:(0,g.jsx)(p.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...s,ref:t,onMouseDown:u(e.onMouseDown,e=>{r?d.onItemFocus(l):e.preventDefault()}),onFocus:u(e.onFocus,()=>d.onItemFocus(l)),onKeyDown:u(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=R(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=m().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?ne(n,r+1):n.slice(r+1)}setTimeout(()=>z(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:y!=null}):o})})});F.displayName=P;var I={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function L(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function R(e,t,n){let r=L(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return I[r]}function z(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function ne(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var re=M,ie=F,B=`Tabs`,[ae,oe]=f(B,[k]),V=k(),[H,U]=ae(B),W=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:l=`automatic`,...u}=e,d=S(s),[f,m]=c({prop:r,onChange:i,defaultProp:a??``,caller:B});return(0,g.jsx)(H,{scope:n,baseId:b(),value:f,onValueChange:m,orientation:o,dir:d,activationMode:l,children:(0,g.jsx)(p.div,{dir:d,"data-orientation":o,...u,ref:t})})});W.displayName=B;var G=`TabsList`,K=h.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=U(G,n),o=V(n);return(0,g.jsx)(re,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,g.jsx)(p.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});K.displayName=G;var q=`TabsTrigger`,J=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=U(q,n),s=V(n),c=Z(o.baseId,r),l=Q(o.baseId,r),d=r===o.value;return(0,g.jsx)(ie,{asChild:!0,...s,focusable:!i,active:d,children:(0,g.jsx)(p.button,{type:`button`,role:`tab`,"aria-selected":d,"aria-controls":l,"data-state":d?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:u(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:u(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:u(e.onFocus,()=>{let e=o.activationMode!==`manual`;!d&&!i&&e&&o.onValueChange(r)})})})});J.displayName=q;var Y=`TabsContent`,X=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=U(Y,n),c=Z(s.baseId,r),l=Q(s.baseId,r),u=r===s.value,f=h.useRef(u);return h.useEffect(()=>{let e=requestAnimationFrame(()=>f.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,g.jsx)(d,{present:i||u,children:({present:n})=>(0,g.jsx)(p.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:f.current?`0s`:void 0},children:n&&a})})});X.displayName=Y;function Z(e,t){return`${e}-trigger-${t}`}function Q(e,t){return`${e}-content-${t}`}var se=W,ce=K,le=J,$=X;function ue({className:e,ref:t,...n}){return(0,g.jsx)(se,{ref:t,"data-slot":`tabs`,className:e,...n})}function de({className:e,ref:t,...n}){return(0,g.jsx)(ce,{ref:t,"data-slot":`tabs-list`,className:i(`flex items-center border-b border-[var(--border-base)]`,e),...n})}function fe({className:e,ref:t,...n}){return(0,g.jsx)(le,{ref:t,"data-slot":`tabs-trigger`,className:i(`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-tertiary)] transition-colors`,`outline-none keyboard-focus:ring-2 keyboard-focus:ring-[var(--ring)] keyboard-focus:ring-offset-0`,`hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,`data-[state=active]:border-[var(--primary-base)] data-[state=active]:text-[var(--content-default)]`,`data-[state=active]:hover:bg-transparent`,`disabled:cursor-not-allowed disabled:text-[var(--content-disabled)]`,`disabled:hover:bg-transparent disabled:hover:text-[var(--content-disabled)]`,e),...n})}function pe({className:e,ref:t,...n}){return(0,g.jsx)($,{ref:t,"data-slot":`tabs-panel`,className:i(`outline-none keyboard-focus:ring-2 keyboard-focus:ring-[var(--ring)] keyboard-focus:ring-offset-0`,e),...n})}var me={Root:ue,List:de,Trigger:fe,Panel:pe};function he({leading:e,title:t,subtitle:n,trailing:r,showChevron:a,selected:s,disabled:c,onClick:l,href:u,contentAriaLabel:d,className:f,ref:p,...m}){let h=!!(l||u),_=a??h,v=(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,g.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:t}),n==null?null:(0,g.jsx)(`span`,{className:`min-w-0 text-label-small-default text-[var(--content-tertiary)]`,children:n})]}),r!=null||_?(0,g.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[r,_?(0,g.jsx)(o,{className:`h-4 w-4 text-[var(--content-tertiary)]`}):null]}):null]}),y=`flex min-w-0 flex-1 items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,b;return b=u&&!c?(0,g.jsx)(`a`,{href:u,"aria-label":d,className:i(y,`cursor-pointer`),children:v}):l?(0,g.jsx)(`button`,{type:`button`,onClick:l,disabled:c,"aria-label":d,className:i(y,`cursor-pointer disabled:cursor-not-allowed`),children:v}):(0,g.jsx)(`div`,{className:y,children:v}),(0,g.jsxs)(`div`,{...m,ref:p,"data-slot":`list-row`,className:i(`flex items-center gap-3 rounded-md px-2 py-3 transition-colors`,`[&+&]:border-t [&+&]:border-[var(--border-base)]`,h&&!s&&!c&&`hover:bg-[var(--surface-hover)]`,s&&`bg-[var(--surface-active)]`,c&&`opacity-60`,f),children:[e,b]})}export{_ as a,b as i,me as n,m as o,S as r,he as t};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{a as r,t as i}from"./cn-CJf7MmLX.js";import{t as a}from"./createLucideIcon-CAM1RhH8.js";import{t as o}from"./chevron-right-HU6H84S0.js";import{a as s,i as c,n as l,o as u,r as d,s as f,t as p}from"./dist-BbzsnMsY.js";var m=a(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),h=e(t(),1),g=n();function _(e){let t=e+`CollectionProvider`,[n,i]=f(t),[a,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:n}=e,r=h.useRef(null),i=h.useRef(new Map).current;return(0,g.jsx)(a,{scope:t,itemMap:i,collectionRef:r,children:n})};s.displayName=t;let c=e+`CollectionSlot`,u=l(c),d=h.forwardRef((e,t)=>{let{scope:n,children:i}=e;return(0,g.jsx)(u,{ref:r(t,o(c,n).collectionRef),children:i})});d.displayName=c;let p=e+`CollectionItemSlot`,m=`data-radix-collection-item`,_=l(p),v=h.forwardRef((e,t)=>{let{scope:n,children:i,...a}=e,s=h.useRef(null),c=r(t,s),l=o(p,n);return h.useEffect(()=>(l.itemMap.set(s,{ref:s,...a}),()=>void l.itemMap.delete(s))),(0,g.jsx)(_,{[m]:``,ref:c,children:i})});v.displayName=p;function y(t){let n=o(e+`CollectionConsumer`,t);return h.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${m}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:s,Slot:d,ItemSlot:v},y,i]}var v=h.useId||(()=>void 0),y=0;function b(e){let[t,n]=h.useState(v());return s(()=>{e||n(e=>e??String(y++))},[e]),e||(t?`radix-${t}`:``)}function ee(e){let t=h.useRef(e);return h.useEffect(()=>{t.current=e}),h.useMemo(()=>(...e)=>t.current?.(...e),[])}var x=h.createContext(void 0);function S(e){let t=h.useContext(x);return e||t||`ltr`}var C=`rovingFocusGroup.onEntryFocus`,te={bubbles:!1,cancelable:!0},w=`RovingFocusGroup`,[T,E,D]=_(w),[O,k]=f(w,[D]),[A,j]=O(w),M=h.forwardRef((e,t)=>(0,g.jsx)(T.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,g.jsx)(T.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,g.jsx)(N,{...e,ref:t})})}));M.displayName=w;var N=h.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:i,loop:a=!1,dir:o,currentTabStopId:s,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:d,onEntryFocus:f,preventScrollOnEntryFocus:m=!1,..._}=e,v=h.useRef(null),y=r(t,v),b=S(o),[x,T]=c({prop:s,defaultProp:l??null,onChange:d,caller:w}),[D,O]=h.useState(!1),k=ee(f),j=E(n),M=h.useRef(!1),[N,P]=h.useState(0);return h.useEffect(()=>{let e=v.current;if(e)return e.addEventListener(C,k),()=>e.removeEventListener(C,k)},[k]),(0,g.jsx)(A,{scope:n,orientation:i,dir:b,loop:a,currentTabStopId:x,onItemFocus:h.useCallback(e=>T(e),[T]),onItemShiftTab:h.useCallback(()=>O(!0),[]),onFocusableItemAdd:h.useCallback(()=>P(e=>e+1),[]),onFocusableItemRemove:h.useCallback(()=>P(e=>e-1),[]),children:(0,g.jsx)(p.div,{tabIndex:D||N===0?-1:0,"data-orientation":i,..._,ref:y,style:{outline:`none`,...e.style},onMouseDown:u(e.onMouseDown,()=>{M.current=!0}),onFocus:u(e.onFocus,e=>{let t=!M.current;if(e.target===e.currentTarget&&t&&!D){let t=new CustomEvent(C,te);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=j().filter(e=>e.focusable);z([e.find(e=>e.active),e.find(e=>e.id===x),...e].filter(Boolean).map(e=>e.ref.current),m)}}M.current=!1}),onBlur:u(e.onBlur,()=>O(!1))})})}),P=`RovingFocusGroupItem`,F=h.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...s}=e,c=b(),l=a||c,d=j(P,n),f=d.currentTabStopId===l,m=E(n),{onFocusableItemAdd:_,onFocusableItemRemove:v,currentTabStopId:y}=d;return h.useEffect(()=>{if(r)return _(),()=>v()},[r,_,v]),(0,g.jsx)(T.ItemSlot,{scope:n,id:l,focusable:r,active:i,children:(0,g.jsx)(p.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...s,ref:t,onMouseDown:u(e.onMouseDown,e=>{r?d.onItemFocus(l):e.preventDefault()}),onFocus:u(e.onFocus,()=>d.onItemFocus(l)),onKeyDown:u(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=R(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=m().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?ne(n,r+1):n.slice(r+1)}setTimeout(()=>z(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:y!=null}):o})})});F.displayName=P;var I={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function L(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function R(e,t,n){let r=L(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return I[r]}function z(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function ne(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var re=M,ie=F,B=`Tabs`,[ae,oe]=f(B,[k]),V=k(),[H,U]=ae(B),W=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:l=`automatic`,...u}=e,d=S(s),[f,m]=c({prop:r,onChange:i,defaultProp:a??``,caller:B});return(0,g.jsx)(H,{scope:n,baseId:b(),value:f,onValueChange:m,orientation:o,dir:d,activationMode:l,children:(0,g.jsx)(p.div,{dir:d,"data-orientation":o,...u,ref:t})})});W.displayName=B;var G=`TabsList`,K=h.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=U(G,n),o=V(n);return(0,g.jsx)(re,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,g.jsx)(p.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});K.displayName=G;var q=`TabsTrigger`,J=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=U(q,n),s=V(n),c=Z(o.baseId,r),l=Q(o.baseId,r),d=r===o.value;return(0,g.jsx)(ie,{asChild:!0,...s,focusable:!i,active:d,children:(0,g.jsx)(p.button,{type:`button`,role:`tab`,"aria-selected":d,"aria-controls":l,"data-state":d?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:u(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:u(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:u(e.onFocus,()=>{let e=o.activationMode!==`manual`;!d&&!i&&e&&o.onValueChange(r)})})})});J.displayName=q;var Y=`TabsContent`,X=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=U(Y,n),c=Z(s.baseId,r),l=Q(s.baseId,r),u=r===s.value,f=h.useRef(u);return h.useEffect(()=>{let e=requestAnimationFrame(()=>f.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,g.jsx)(d,{present:i||u,children:({present:n})=>(0,g.jsx)(p.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:f.current?`0s`:void 0},children:n&&a})})});X.displayName=Y;function Z(e,t){return`${e}-trigger-${t}`}function Q(e,t){return`${e}-content-${t}`}var se=W,ce=K,le=J,$=X;function ue({className:e,ref:t,...n}){return(0,g.jsx)(se,{ref:t,"data-slot":`tabs`,className:e,...n})}function de({className:e,ref:t,...n}){return(0,g.jsx)(ce,{ref:t,"data-slot":`tabs-list`,className:i(`flex items-center border-b border-[var(--border-base)]`,e),...n})}function fe({className:e,ref:t,...n}){return(0,g.jsx)(le,{ref:t,"data-slot":`tabs-trigger`,className:i(`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-tertiary)] transition-colors`,`outline-none keyboard-focus:ring-2 keyboard-focus:ring-[var(--ring)] keyboard-focus:ring-offset-0`,`hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,`data-[state=active]:border-[var(--primary-base)] data-[state=active]:text-[var(--content-default)]`,`data-[state=active]:hover:bg-transparent`,`disabled:cursor-not-allowed disabled:text-[var(--content-disabled)]`,`disabled:hover:bg-transparent disabled:hover:text-[var(--content-disabled)]`,e),...n})}function pe({className:e,ref:t,...n}){return(0,g.jsx)($,{ref:t,"data-slot":`tabs-panel`,className:i(`outline-none keyboard-focus:ring-2 keyboard-focus:ring-[var(--ring)] keyboard-focus:ring-offset-0`,e),...n})}var me={Root:ue,List:de,Trigger:fe,Panel:pe};function he({leading:e,title:t,subtitle:n,trailing:r,showChevron:a,selected:s,disabled:c,onClick:l,href:u,contentAriaLabel:d,className:f,ref:p,...m}){let h=!!(l||u),_=a??h,v=(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,g.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:t}),n==null?null:(0,g.jsx)(`span`,{className:`min-w-0 text-label-small-default text-[var(--content-tertiary)]`,children:n})]}),r!=null||_?(0,g.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[r,_?(0,g.jsx)(o,{className:`h-4 w-4 text-[var(--content-tertiary)]`}):null]}):null]}),y=`flex min-w-0 flex-1 items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,b;return b=u&&!c?(0,g.jsx)(`a`,{href:u,"aria-label":d,className:i(y,`cursor-pointer`),children:v}):l?(0,g.jsx)(`button`,{type:`button`,onClick:l,disabled:c,"aria-label":d,className:i(y,`cursor-pointer disabled:cursor-not-allowed`),children:v}):(0,g.jsx)(`div`,{className:y,children:v}),(0,g.jsxs)(`div`,{...m,ref:p,"data-slot":`list-row`,className:i(`flex items-center gap-3 rounded-md px-2 py-3 transition-colors`,`[&+&]:border-t [&+&]:border-[var(--border-base)]`,h&&!s&&!c&&`hover:bg-[var(--surface-hover)]`,s&&`bg-[var(--surface-active)]`,c&&`opacity-60`,f),children:[e,b]})}export{_ as a,b as i,me as n,m as o,S as r,he as t};