@vellumai/web 0.10.7 → 0.10.8-dev.202607102228.5945895

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/dist/assets/{AnimatePresence-Oxz4BTMX.js → AnimatePresence-s1Z1HHWx.js} +1 -1
  2. package/dist/assets/{BundleConfirmPage-CASo0dJB.js → BundleConfirmPage-C6bP7QB3.js} +1 -1
  3. package/dist/assets/{Combination-BG46kjfK.js → Combination-Cd_aWAsj.js} +1 -1
  4. package/dist/assets/{a2a-invite-CQMqpPDZ.js → a2a-invite-B9cylfIO.js} +1 -1
  5. package/dist/assets/{about-page-m20KWWnD.js → about-page-XGv9RAQu.js} +1 -1
  6. package/dist/assets/{account-page-s8JvT8Ly.js → account-page-BIf1VgXI.js} +1 -1
  7. package/dist/assets/{account-shell-BSwEFNTM.js → account-shell-DtCF7xdZ.js} +1 -1
  8. package/dist/assets/{acp-run-detail-panel-7SM2s3JT.js → acp-run-detail-panel-B4hgMVrG.js} +4 -4
  9. package/dist/assets/activity-steps-panel-C1yQ2L2r.js +1 -0
  10. package/dist/assets/{add-credits-modal-wQTjoJNa.js → add-credits-modal-B2NNTrN3.js} +1 -1
  11. package/dist/assets/{advanced-page-Ct7QbjS_.js → advanced-page-BwGOw8_x.js} +1 -1
  12. package/dist/assets/ai-page-BrigF9S7.js +1 -0
  13. package/dist/assets/animated-avatar-Cqpzb8O4.js +1 -0
  14. package/dist/assets/api-DHuLwcqq.js +1 -0
  15. package/dist/assets/{api-DXLi4DU7.js → api-Y8JHO-Hz.js} +1 -1
  16. package/dist/assets/{api-key-screen-DCT4UgG9.js → api-key-screen-g8n_qvMv.js} +1 -1
  17. package/dist/assets/{app-info-BNPvryVV.js → app-info-Clwt3pCt.js} +1 -1
  18. package/dist/assets/{archive-page-Ct96gKer.js → archive-page-BsrdafLF.js} +1 -1
  19. package/dist/assets/{assistant-feature-flag-store-BRGydSRn.js → assistant-feature-flag-store-DRERrNOn.js} +1 -1
  20. package/dist/assets/assistant-identity-store-CX03CK8q.js +1 -0
  21. package/dist/assets/{assistant-status-panel-boGM54mS.js → assistant-status-panel-zU13Q_Xu.js} +1 -1
  22. package/dist/assets/auth-store-CRgW9dVz.js +2 -0
  23. package/dist/assets/avatar-bundled-components--1Wyhs4r.js +1 -0
  24. package/dist/assets/background-task-detail-panel-zgQoO82i.js +1 -0
  25. package/dist/assets/billing-page-DEl2nu5I.js +3 -0
  26. package/dist/assets/bookmarks-page-C32OmhV9.js +1 -0
  27. package/dist/assets/browser-BcxhPHJY.js +2 -0
  28. package/dist/assets/browser-timezone-2SnmKDjM.js +1 -0
  29. package/dist/assets/build-state-BMsdXtAG.js +1 -0
  30. package/dist/assets/button-amTXFI-2.js +1 -0
  31. package/dist/assets/{capture-error-CmeVLfq0.js → capture-error-Dhiismgm.js} +1 -1
  32. package/dist/assets/channels-page-route-DCJaRu9K.js +9 -0
  33. package/dist/assets/chat-markdown-message-a1td8Ual.js +2 -0
  34. package/dist/assets/{checkbox-Dy4hoNDa.js → checkbox-EdyezNqo.js} +1 -1
  35. package/dist/assets/{client-feature-flag-store-C0Tjm-Hl.js → client-feature-flag-store-Dwtv7Vxd.js} +1 -1
  36. package/dist/assets/{client-identity-jhypHe7Y.js → client-identity-Dt1fkB-d.js} +1 -1
  37. package/dist/assets/clipboard-copy-DF6K1xc6.js +1 -0
  38. package/dist/assets/command-palette-DuCamEfT.js +1 -0
  39. package/dist/assets/{command-palette-window-page-DBnL5TIj.js → command-palette-window-page-DTbWLtIo.js} +1 -1
  40. package/dist/assets/community-page-CLGoMvV2.js +1 -0
  41. package/dist/assets/{confirm-dialog-DW84Cxfq.js → confirm-dialog-CSkhRFRk.js} +1 -1
  42. package/dist/assets/{connect-page-By7gD4Gi.js → connect-page-B0gbTndx.js} +1 -1
  43. package/dist/assets/{consent-controls-J9UujLtO.js → consent-controls-Cnr1DzCr.js} +1 -1
  44. package/dist/assets/contacts-gateway-CW5CipBv.js +1 -0
  45. package/dist/assets/contacts-page-route-C0ELB5tV.js +1 -0
  46. package/dist/assets/{conversation-list-fetchers-ogeilsCp.js → conversation-list-fetchers-DS9vmqfD.js} +1 -1
  47. package/dist/assets/{conversation-store-COUX81g-.js → conversation-store-BljZWolF.js} +1 -1
  48. package/dist/assets/credential-entry-page-DUQnPan9.js +1 -0
  49. package/dist/assets/credentials-page-Bmbk_m7r.js +1 -0
  50. package/dist/assets/{danger-zone-redirect-page-RdZGvrN7.js → danger-zone-redirect-page-BWg7rn8D.js} +1 -1
  51. package/dist/assets/debug-page-DEIR36y-.js +4 -0
  52. package/dist/assets/definitions-DScTW2c-.js +1 -0
  53. package/dist/assets/{deploy-dialogs-C5LDby59.js → deploy-dialogs-hO4uNCg-.js} +1 -1
  54. package/dist/assets/{detail-card-CnahmiAd.js → detail-card-BAbE5QFz.js} +1 -1
  55. package/dist/assets/{detail-panel-stop-button-BGbnqhbl.js → detail-panel-stop-button-DuIg1ANM.js} +1 -1
  56. package/dist/assets/{developer-page-Bgo4T1LR.js → developer-page-l4Uyz0TA.js} +1 -1
  57. package/dist/assets/devices-page-BPUVvxip.js +1 -0
  58. package/dist/assets/{diagnostics-BUlVBxem.js → diagnostics-DANnV3Z3.js} +1 -1
  59. package/dist/assets/{dictation-overlay-page-DVlL606t.js → dictation-overlay-page-DQtALeh1.js} +1 -1
  60. package/dist/assets/{dist-DSnPnoEz.js → dist-BItmZQO6.js} +1 -1
  61. package/dist/assets/{dist-CAIL9R6N.js → dist-CxHeCOEv.js} +1 -1
  62. package/dist/assets/{dist-DcPLFkll.js → dist-DqmYHxdg.js} +1 -1
  63. package/dist/assets/{dist-CXAvuqD6.js → dist-HJ505Xnn.js} +1 -1
  64. package/dist/assets/document-viewer-page-BH8lwUNW.js +1 -0
  65. package/dist/assets/domains-D3QF404Q.js +1 -0
  66. package/dist/assets/download-CAuK-nZ6.js +1 -0
  67. package/dist/assets/{dropdown-BsftIzw-.js → dropdown-ByHOpeOU.js} +1 -1
  68. package/dist/assets/{earn-credits-modal-5kY_ZmHS.js → earn-credits-modal-CCscmJRu.js} +1 -1
  69. package/dist/assets/edge-swipe-arbiter-store-BeOhrE7M.js +1 -0
  70. package/dist/assets/effective-timezone-Kj8F3iMS.js +1 -0
  71. package/dist/assets/{emails-page-BSlc4IyH.js → emails-page-BrbbtgEY.js} +1 -1
  72. package/dist/assets/{environment-store-B29S7tiK.js → environment-store-C0f32873.js} +1 -1
  73. package/dist/assets/esm-B54gzHCZ.js +1 -0
  74. package/dist/assets/esm-Bzs_witt.js +2 -0
  75. package/dist/assets/esm-C5J59K0j.js +2 -0
  76. package/dist/assets/{esm-DnCc4uNb.js → esm-CT8NUp3h.js} +2 -2
  77. package/dist/assets/esm-DEu9JbAE.js +2 -0
  78. package/dist/assets/esm-DZkj1VLJ.js +2 -0
  79. package/dist/assets/esm-DtJz1M8R.js +2 -0
  80. package/dist/assets/feature-flag-catalog-DA0vSGLe.js +1 -0
  81. package/dist/assets/file-DsyJLS2u.js +1 -0
  82. package/dist/assets/file-editor-sT7eHxsw.js +1 -0
  83. package/dist/assets/file-markdown-ZKvQUuGy.js +2 -0
  84. package/dist/assets/general-page-DpoputcO.js +1 -0
  85. package/dist/assets/haptics-Dgv6PU7K.js +2 -0
  86. package/dist/assets/hatching-screen-BEIywvij.js +1 -0
  87. package/dist/assets/home-page-route-DuTK1_El.js +1 -0
  88. package/dist/assets/{hosting-screen-BQCZiStC.js → hosting-screen-C9JhiTE2.js} +1 -1
  89. package/dist/assets/identity-page-route-zAL_IXBX.js +1 -0
  90. package/dist/assets/index-Cd6Xm6j5.js +151 -0
  91. package/dist/assets/index-DdJ6GEnl.css +2 -0
  92. package/dist/assets/{input-DR1eB4a1.js → input-CoUmPnRU.js} +1 -1
  93. package/dist/assets/{inspect-page-CKGEq0sL.js → inspect-page-BBObEk29.js} +6 -6
  94. package/dist/assets/integrations-page-BHMuUW9o.js +1 -0
  95. package/dist/assets/intelligence-layout-B89S015i.js +1 -0
  96. package/dist/assets/{log-out-CCanFuT_.js → key-round-CD3JWrs1.js} +1 -1
  97. package/dist/assets/{keyboard-shortcuts-page-CONirTbD.js → keyboard-shortcuts-page-DGwzOEcj.js} +1 -1
  98. package/dist/assets/library-detail-page-DqM_wmB4.js +1 -0
  99. package/dist/assets/library-page-CrgVsD84.js +1 -0
  100. package/dist/assets/{list-row-YOzkXNjq.js → list-row-D5MFdbkH.js} +1 -1
  101. package/dist/assets/{local-mode-YoUYEn7C.js → local-mode-Bskd5bsT.js} +2 -2
  102. package/dist/assets/{login-flow-CFhW2AHB.js → login-flow-BbLSXmEe.js} +1 -1
  103. package/dist/assets/login-page-GfRvCQ29.js +1 -0
  104. package/dist/assets/logout-page-Dg1wgnDr.js +1 -0
  105. package/dist/assets/logs-layout-CXAlJ7LX.js +1 -0
  106. package/dist/assets/{memory-router-playground-page-CP8awc0-.js → memory-router-playground-page-dtviLwvO.js} +1 -1
  107. package/dist/assets/{menu-Bjq0lFxx.js → menu-Dy5QbnTj.js} +1 -1
  108. package/dist/assets/messages-49pNL2E1.js +13 -0
  109. package/dist/assets/{metric-card-DQKsGfEB.js → metric-card-DreSiKBJ.js} +1 -1
  110. package/dist/assets/middleware-pbPQ0upo.js +1 -0
  111. package/dist/assets/{mobile-sidebar-drawer-qLk01r-p.js → mobile-sidebar-drawer-CEz_u6L2.js} +1 -1
  112. package/dist/assets/{modal-cdtdc8dA.js → modal-D5nLWNN9.js} +1 -1
  113. package/dist/assets/mutation-error-DYv0eJ_i.js +1 -0
  114. package/dist/assets/native-biometric-8C66CwyW.js +6 -0
  115. package/dist/assets/native-deep-link-CJGNy9bj.js +1 -0
  116. package/dist/assets/{native-file-B1HraJR0.js → native-file-DI99Emal.js} +2 -2
  117. package/dist/assets/{notice-Dh3mnM_U.js → notice-DkcNAP8O.js} +1 -1
  118. package/dist/assets/notifications-page-B_sN7yho.js +1 -0
  119. package/dist/assets/{oauth-complete-page-DLsLw4Ai.js → oauth-complete-page-CuybfFpw.js} +1 -1
  120. package/dist/assets/{oauth-popup-complete-page-Bzch_dtU.js → oauth-popup-complete-page-DSZxA1d6.js} +1 -1
  121. package/dist/assets/optimistic-lifecycle-BvfDBY8o.js +1 -0
  122. package/dist/assets/{page-shell-CejvYP6I.js → page-shell-DhRqqQYA.js} +1 -1
  123. package/dist/assets/{pairing-page-Chm98xKO.js → pairing-page-DzAmAv0h.js} +1 -1
  124. package/dist/assets/panel-item-CouW2A55.js +1 -0
  125. package/dist/assets/{password-reset-page-BJtjGZ_1.js → password-reset-page-BCk9Si73.js} +1 -1
  126. package/dist/assets/platform-detection-BrzZ9nIv.js +1 -0
  127. package/dist/assets/platform-loopback-page-Dka8sBVb.js +1 -0
  128. package/dist/assets/plugin-detail-page-Byuqbr1N.js +1 -0
  129. package/dist/assets/plugins-page-DIye0I83.js +1 -0
  130. package/dist/assets/plugins-surface-z3RTZS4H.js +1 -0
  131. package/dist/assets/plus-DItfr5ux.js +1 -0
  132. package/dist/assets/pointer-Cdz7NGHe.js +1 -0
  133. package/dist/assets/{popover-DKvyZMoc.js → popover-CFL4WZTr.js} +1 -1
  134. package/dist/assets/prechat-route-DOXwrVAo.js +1 -0
  135. package/dist/assets/prefs-Cv7dVfD-.js +1 -0
  136. package/dist/assets/privacy-page-u6xy7Q8z.js +1 -0
  137. package/dist/assets/privacy-screen-CjN05DC6.js +1 -0
  138. package/dist/assets/provider-callback-page-CL5ZVZ_W.js +1 -0
  139. package/dist/assets/provider-key-3AHnKoz9.js +1 -0
  140. package/dist/assets/provider-signup-page-Eizzv0xD.js +1 -0
  141. package/dist/assets/quick-input-page-J80B2lqk.js +1 -0
  142. package/dist/assets/react-query.gen-C6wVk6Rw.js +1 -0
  143. package/dist/assets/{react-query.gen-DVZyPw6H.js → react-query.gen-DPzPS206.js} +1 -1
  144. package/dist/assets/remote-gateway-session-CKCwbah-.js +1 -0
  145. package/dist/assets/research-mock-page-CoybPf50.js +1 -0
  146. package/dist/assets/{research-onboarding-persistence-DBhBmIGA.js → research-onboarding-persistence-DnuHyFyB.js} +1 -1
  147. package/dist/assets/research-onboarding-route-B5_eJwJw.js +63 -0
  148. package/dist/assets/{resize-errors-DQaZhn9s.js → resize-errors-DqIkO0UI.js} +1 -1
  149. package/dist/assets/{resolved-assistants-store-DccydJ5N.js → resolved-assistants-store-DAzPZ1eV.js} +1 -1
  150. package/dist/assets/return-to-BwxkOGDI.js +1 -0
  151. package/dist/assets/review-terms-screen-BWVXGdnG.js +1 -0
  152. package/dist/assets/risk-t10VBZTf.js +3 -0
  153. package/dist/assets/routes-BbeIx_F9.js +1 -0
  154. package/dist/assets/{schedules-D7EefqdS.js → schedules-BfKi12EZ.js} +1 -1
  155. package/dist/assets/{sdk.gen-YX4BQpM7.js → sdk.gen-BhtkuoSl.js} +1 -1
  156. package/dist/assets/sdk.gen-BwnFjFcp.js +6 -0
  157. package/dist/assets/{sdk.gen-B3bmXhSv.js → sdk.gen-CmKfVpgB.js} +1 -1
  158. package/dist/assets/{security-page-Cp2s0T8l.js → security-page-Bqpm9CRl.js} +1 -1
  159. package/dist/assets/select-assistant-screen-DuY4fs2R.js +1 -0
  160. package/dist/assets/{setting-row-D9Jbc5pM.js → setting-row-CUka7_L9.js} +1 -1
  161. package/dist/assets/settings-layout-BjCfuXEr.js +1 -0
  162. package/dist/assets/share-feedback-modal-E8Fvm4e9.js +1 -0
  163. package/dist/assets/sidebar-tree-Bf3uooyL.js +1 -0
  164. package/dist/assets/signup-page-ChGv8LrT.js +1 -0
  165. package/dist/assets/{signup-shell-C9HJHs_-.js → signup-shell-DufHA5do.js} +1 -1
  166. package/dist/assets/site-favicon-OrfXRQVO.js +1 -0
  167. package/dist/assets/skill-detail-page-BVbMXZJX.js +1 -0
  168. package/dist/assets/skill-detail-panel-D7rCFgn6.js +1 -0
  169. package/dist/assets/skill-icon-cNkD2w1X.js +1 -0
  170. package/dist/assets/skills-BNOqjTQz.js +1 -0
  171. package/dist/assets/skills-page-D6eXxIrR.js +1 -0
  172. package/dist/assets/{sound-manager-CX_nIxe3.js → sound-manager-6UbdgQrj.js} +1 -1
  173. package/dist/assets/{sounds-page-1emqNnJy.js → sounds-page-oCrKag0t.js} +1 -1
  174. package/dist/assets/{src-4xooMXeT.js → src-DZbMXyC2.js} +39 -39
  175. package/dist/assets/stat-square-CTHnQ1jc.js +1 -0
  176. package/dist/assets/subagent-detail-panel-D8Vym0hK.js +4 -0
  177. package/dist/assets/{subagent-store-DjUgx1D2.js → subagent-store-BHsYfTME.js} +1 -1
  178. package/dist/assets/{system-events-page-ww0hAGYR.js → system-events-page-CmP_mG_E.js} +1 -1
  179. package/dist/assets/{system-events-redirect-page-aRRRoLJI.js → system-events-redirect-page-DbaFKRXH.js} +1 -1
  180. package/dist/assets/tag-CV4v7fRF.js +1 -0
  181. package/dist/assets/three-dot-indicator-DNuHHwtA.js +1 -0
  182. package/dist/assets/{tiptap-document-editor-EQIK5AAg.js → tiptap-document-editor-aLok6H82.js} +2 -2
  183. package/dist/assets/toast-xTp-xwYL.js +1 -0
  184. package/dist/assets/tool-detail-panel-BxZmdI-Q.js +2 -0
  185. package/dist/assets/{upgrade-cancel-page-BJH7716k.js → upgrade-cancel-page-DQ2t1atD.js} +1 -1
  186. package/dist/assets/{upgrade-success-page-1PlVik4u.js → upgrade-success-page-qHyDiSFk.js} +1 -1
  187. package/dist/assets/{usage-page-jkBMfAr8.js → usage-page-Cvi3-b-0.js} +1 -1
  188. package/dist/assets/{use-active-assistant-id-BBHOMQFe.js → use-active-assistant-id-xuY3XyDA.js} +1 -1
  189. package/dist/assets/{use-bus-subscription-YZjoe_RT.js → use-bus-subscription-C3H3CmM_.js} +1 -1
  190. package/dist/assets/use-copy-to-clipboard-BCTXSMa-.js +1 -0
  191. package/dist/assets/use-edge-swipe-back-gBVYQBH0.js +1 -0
  192. package/dist/assets/use-invite-link-dialog-sBfH06UB.js +1 -0
  193. package/dist/assets/use-is-org-ready-CjILVAUZ.js +1 -0
  194. package/dist/assets/use-onboarding-login-Chcj53mF.js +1 -0
  195. package/dist/assets/{use-reduced-motion-DUPDDLHh.js → use-reduced-motion-Cj0Z8KSf.js} +1 -1
  196. package/dist/assets/use-skill-actions-DZARQDwC.js +1 -0
  197. package/dist/assets/{use-skill-categories-q-Ih2uSR.js → use-skill-categories-Dg0zxtfv.js} +1 -1
  198. package/dist/assets/use-skill-detail-files-BneiGfwy.js +1 -0
  199. package/dist/assets/{utils-Cv6Fontd.js → utils-xg2dl_KJ.js} +1 -1
  200. package/dist/assets/viewer-store-B8-Qnbx9.js +1 -0
  201. package/dist/assets/voice-page-Dzku566m.js +1 -0
  202. package/dist/assets/{weather-forecast-display-CJ_ZT_-B.js → weather-forecast-display-33DfC7gA.js} +1 -1
  203. package/dist/assets/{web-CCRYoYsf.js → web-BD2N6zhd.js} +1 -1
  204. package/dist/assets/{web-CAGeGBel.js → web-BaubW4Pp.js} +1 -1
  205. package/dist/assets/{web-C_gIgYOE.js → web-C1L-cpPj.js} +1 -1
  206. package/dist/assets/{web-Bifc0CyQ.js → web-CJiP8Lg6.js} +1 -1
  207. package/dist/assets/{web-D-9O_l_z.js → web-D8PpvYf_.js} +1 -1
  208. package/dist/assets/{web-DKKX1zUX.js → web-Duw5A2aP.js} +1 -1
  209. package/dist/assets/{web-C6JBS2jv.js → web-O1LOb-o9.js} +1 -1
  210. package/dist/assets/web-RhBklijR.js +1 -0
  211. package/dist/assets/{welcome-screen-C_JlT5id.js → welcome-screen-_mzcPEui.js} +1 -1
  212. package/dist/assets/workflow-detail-panel-DqBjO6c3.js +1 -0
  213. package/dist/assets/workflow-store-DACyavns.js +1 -0
  214. package/dist/assets/workspace-page-qq2UZFY3.js +1 -0
  215. package/dist/index.html +131 -121
  216. package/package.json +1 -1
  217. package/dist/assets/ai-page-BcgdcD4e.js +0 -1
  218. package/dist/assets/animated-avatar-KEsxQUWX.js +0 -1
  219. package/dist/assets/api-bHQ_ZhgO.js +0 -1
  220. package/dist/assets/arrow-up-BxoccrRI.js +0 -1
  221. package/dist/assets/assistant-identity-store-Cp3CD7d1.js +0 -1
  222. package/dist/assets/auth-store-CI4EhvE5.js +0 -2
  223. package/dist/assets/avatar-bundled-components-DQodAnJD.js +0 -1
  224. package/dist/assets/background-task-detail-panel-CfEFRK9m.js +0 -1
  225. package/dist/assets/billing-page-7z-qyk7R.js +0 -3
  226. package/dist/assets/bookmarks-page-BPDCi7Fj.js +0 -1
  227. package/dist/assets/browser-CP3oEvln.js +0 -2
  228. package/dist/assets/build-state-D96tiPPg.js +0 -1
  229. package/dist/assets/button-D1p5nVKJ.js +0 -1
  230. package/dist/assets/channels-page-route-CpAKC7Ny.js +0 -1
  231. package/dist/assets/client.gen-V_HNquaL.js +0 -6
  232. package/dist/assets/command-palette-DzGSKQit.js +0 -1
  233. package/dist/assets/community-page-pr5Nq-N8.js +0 -1
  234. package/dist/assets/contacts-gateway-jQhZqbXH.js +0 -1
  235. package/dist/assets/contacts-page-route-CRf2kU0k.js +0 -1
  236. package/dist/assets/debug-page-CAXWUmxw.js +0 -4
  237. package/dist/assets/detail-shell-q6GjKJ6F.js +0 -4
  238. package/dist/assets/device-settings-BBwtGKJb.js +0 -1
  239. package/dist/assets/devices-page-CsqBToSK.js +0 -1
  240. package/dist/assets/document-viewer-page-BaGYg7Jy.js +0 -1
  241. package/dist/assets/edit-chat-session-phEigSQo.js +0 -1
  242. package/dist/assets/effective-timezone-DAkNzd21.js +0 -1
  243. package/dist/assets/esm-BZAWL4X4.js +0 -2
  244. package/dist/assets/esm-CuAK_cYT.js +0 -2
  245. package/dist/assets/esm-_LZD1lMg.js +0 -2
  246. package/dist/assets/esm-fycmFY2i.js +0 -2
  247. package/dist/assets/esm-hkF3aX28.js +0 -1
  248. package/dist/assets/feature-flag-catalog-Ca2Lo1Sx.js +0 -1
  249. package/dist/assets/file-editor-CiduanJg.js +0 -1
  250. package/dist/assets/general-page-Cx_BeDy7.js +0 -1
  251. package/dist/assets/haptics-CABfN3Hg.js +0 -1
  252. package/dist/assets/hatching-screen-DGWclpGa.js +0 -1
  253. package/dist/assets/home-page-route-B6axS8Xb.js +0 -1
  254. package/dist/assets/identity-page-route-Ck6yFc4b.js +0 -1
  255. package/dist/assets/index-BkM0WTPC.css +0 -2
  256. package/dist/assets/index-CoobbyzR.js +0 -114
  257. package/dist/assets/install-BfTQMx11.js +0 -1
  258. package/dist/assets/integrations-page-vewUMHCO.js +0 -1
  259. package/dist/assets/intelligence-layout-Y0MnzPhq.js +0 -1
  260. package/dist/assets/library-detail-page-nV2EKiXc.js +0 -1
  261. package/dist/assets/library-page-B9_dVu66.js +0 -1
  262. package/dist/assets/lock-ChQK4VKH.js +0 -1
  263. package/dist/assets/login-page-DVozReou.js +0 -1
  264. package/dist/assets/logout-page-CD2DJ8cb.js +0 -1
  265. package/dist/assets/logs-layout-Cp0hu2KO.js +0 -1
  266. package/dist/assets/messages-3teOY9CI.js +0 -13
  267. package/dist/assets/mutation-error-DITUXbSQ.js +0 -1
  268. package/dist/assets/native-biometric-uwPAd9lh.js +0 -6
  269. package/dist/assets/native-deep-link-C13QIbW2.js +0 -1
  270. package/dist/assets/notifications-page-C32A7t8f.js +0 -1
  271. package/dist/assets/panel-item-vXPWJAXs.js +0 -1
  272. package/dist/assets/platform-detection-CY-O-Rjc.js +0 -1
  273. package/dist/assets/platform-loopback-page-BwMcw0M2.js +0 -1
  274. package/dist/assets/plugin-detail-page-BCbgwXnr.js +0 -1
  275. package/dist/assets/plugins-page-_hVmUOdU.js +0 -1
  276. package/dist/assets/plugins-surface-DYk9FmM2.js +0 -1
  277. package/dist/assets/prechat-route-FwhIKBwh.js +0 -1
  278. package/dist/assets/prefs-Bo9fZ56w.js +0 -1
  279. package/dist/assets/privacy-page-Dgk9eUIc.js +0 -1
  280. package/dist/assets/privacy-screen-BWMJTqw0.js +0 -1
  281. package/dist/assets/provider-callback-page-DrIkf6Qx.js +0 -1
  282. package/dist/assets/provider-key-CVj0dGLW.js +0 -1
  283. package/dist/assets/provider-signup-page-CLgombsV.js +0 -1
  284. package/dist/assets/quick-input-page-DAoWLetZ.js +0 -1
  285. package/dist/assets/react-query.gen-D8YgmevH.js +0 -1
  286. package/dist/assets/remote-gateway-session-uLbl0yn7.js +0 -1
  287. package/dist/assets/research-mock-page-pa9X5DVr.js +0 -1
  288. package/dist/assets/research-onboarding-route-DMNYFP95.js +0 -61
  289. package/dist/assets/return-to-BbdJZupb.js +0 -1
  290. package/dist/assets/review-terms-screen-Dhzjmovc.js +0 -1
  291. package/dist/assets/routes-iUGoIqW2.js +0 -1
  292. package/dist/assets/sdk.gen-Bz2u5Wv3.js +0 -1
  293. package/dist/assets/select-assistant-screen-BznHV3KW.js +0 -1
  294. package/dist/assets/settings-layout-u1k_Rsdf.js +0 -1
  295. package/dist/assets/share-feedback-modal-D1-RcW6F.js +0 -1
  296. package/dist/assets/shield-check-DFzO4cEd.js +0 -1
  297. package/dist/assets/sidebar-tree-CMREzbfC.js +0 -1
  298. package/dist/assets/signup-page-DdEr8yFN.js +0 -1
  299. package/dist/assets/skills-page-DEyycwld.js +0 -1
  300. package/dist/assets/stat-square-CDBisfqE.js +0 -1
  301. package/dist/assets/subagent-detail-panel-Akqnt7ec.js +0 -4
  302. package/dist/assets/tag-BizaosUX.js +0 -1
  303. package/dist/assets/toast-DowcpN7g.js +0 -1
  304. package/dist/assets/tool-detail-panel-C_g0wGNh.js +0 -2
  305. package/dist/assets/use-is-mobile-DJUk0lC8.js +0 -1
  306. package/dist/assets/use-is-org-ready-Dtge_dC5.js +0 -1
  307. package/dist/assets/use-onboarding-login-9378MpEq.js +0 -1
  308. package/dist/assets/use-setup-channel-param-CRMdNnM_.js +0 -9
  309. package/dist/assets/viewer-store-C8L5A-BB.js +0 -1
  310. package/dist/assets/voice-page-DIpdPRDT.js +0 -1
  311. package/dist/assets/workflow-detail-panel-BIZ8culE.js +0 -1
  312. package/dist/assets/workspace-page-8DC4PiAA.js +0 -1
  313. /package/dist/assets/{api-errors-DZ6ckXtC.js → api-errors-CrWDzVca.js} +0 -0
  314. /package/dist/assets/{avatar-svg-compositor-BnVOXsYU.js → avatar-svg-compositor-CnDf9Ibf.js} +0 -0
  315. /package/dist/assets/{build.umd-C5MOmzrf.js → build.umd-CxdKgGWo.js} +0 -0
  316. /package/dist/assets/{by-tool-use-id-index-h0TggD-a.js → by-tool-use-id-index-BokzI3ZP.js} +0 -0
  317. /package/dist/assets/{chat-Bn41Y5yM.js → chat-B8mgARYR.js} +0 -0
  318. /package/dist/assets/{client.gen-AQhSugfA.js → client.gen-DVfIRXUZ.js} +0 -0
  319. /package/dist/assets/{cloud-off-CysJvmWr.js → cloud-off-Db1nySkc.js} +0 -0
  320. /package/dist/assets/{code-DsR1Npcp.js → code-Czx7d7SK.js} +0 -0
  321. /package/dist/assets/{composer-focus-BBTBdAab.js → composer-focus-BZr63Cvs.js} +0 -0
  322. /package/dist/assets/{conversation-selection-oLES1vkM.js → conversation-selection-BBHkzcfy.js} +0 -0
  323. /package/dist/assets/{copy-CytZjq76.js → copy-Cn1FKrEp.js} +0 -0
  324. /package/dist/assets/{cpu-C6_Tjhkh.js → cpu-BJuB2Khn.js} +0 -0
  325. /package/dist/assets/{create-selectors-DxrPZQND.js → create-selectors-8NePGNlX.js} +0 -0
  326. /package/dist/assets/{credit-card-s3I7DYkY.js → credit-card-BuyWdO9t.js} +0 -0
  327. /package/dist/assets/{definitions-CJ7YHLIq.js → definitions-CaYcW4Yq.js} +0 -0
  328. /package/dist/assets/{dist-C3LFhPgk2.js → dist-DS5iJwBJ2.js} +0 -0
  329. /package/dist/assets/{domain-field-6GHeeXa3.js → domain-field-C5a2iMot.js} +0 -0
  330. /package/dist/assets/{emoji-catalog-data-hHp74TCA.js → emoji-catalog-data-D8lRMt3A.js} +0 -0
  331. /package/dist/assets/{event-bus-BXKLAX-e.js → event-bus-BNx4a0Ds.js} +0 -0
  332. /package/dist/assets/{external-link-DJ0A4ezO.js → external-link-Dqpx9nRm.js} +0 -0
  333. /package/dist/assets/{file-text-Cw--uc4C.js → file-text-CYJz-GvF.js} +0 -0
  334. /package/dist/assets/{format-date-CLlHK5gl.js → format-date-CghpPTDc.js} +0 -0
  335. /package/dist/assets/{format-file-size-BfZOpPdu.js → format-file-size-DzVEncaw.js} +0 -0
  336. /package/dist/assets/{globe-DgulNfxa.js → globe-4qSOWE2N.js} +0 -0
  337. /package/dist/assets/{hard-drive-CUjwJ5MQ.js → hard-drive-rDxhoRUm.js} +0 -0
  338. /package/dist/assets/{impersonate-version-flag-DudbyPBi.js → impersonate-version-flag-BhxfH6iZ.js} +0 -0
  339. /package/dist/assets/{info-BaizXivv.js → info-DsOyuMO9.js} +0 -0
  340. /package/dist/assets/{is-electron-LEymSS4C.js → is-electron-y5bNUVyG.js} +0 -0
  341. /package/dist/assets/{link-2-C4ZDIIu1.js → link-2-4bMylQ5v.js} +0 -0
  342. /package/dist/assets/{llm-dimension-CgXjHNj6.js → llm-dimension-DyYwG3mU.js} +0 -0
  343. /package/dist/assets/{loader-circle-D1pLQlMh.js → loader-circle-Cz7opInR.js} +0 -0
  344. /package/dist/assets/{log-in-BQonRVoo.js → log-in--aqELu3z.js} +0 -0
  345. /package/dist/assets/{minimize-2-BusmaFRB.js → minimize-2-Clnet2W7.js} +0 -0
  346. /package/dist/assets/{misc-CfQwP_zq.js → misc-BYQPh7vS.js} +0 -0
  347. /package/dist/assets/{monitor-CWNmhnli.js → monitor-DfbL8_59.js} +0 -0
  348. /package/dist/assets/{moon-Br0t6dvo.js → moon-B8qiwjrW.js} +0 -0
  349. /package/dist/assets/{onboarding-step-layout-QhoZ4RKu.js → onboarding-step-layout-2XcmxqFN.js} +0 -0
  350. /package/dist/assets/{pdf-DGDlrU1i.js → pdf-C3Qukw-J.js} +0 -0
  351. /package/dist/assets/{pencil-rKUVpppO.js → pencil-CUIr0IFo.js} +0 -0
  352. /package/dist/assets/{prechat-UQXfXf5i.js → prechat-P1y7ZM6C.js} +0 -0
  353. /package/dist/assets/{prechat-names-BX9ToPj8.js → prechat-names-clVy5Mee.js} +0 -0
  354. /package/dist/assets/{progress-bar-q6qGo2Sp.js → progress-bar-Ca8gmE3B.js} +0 -0
  355. /package/dist/assets/{proxy-CheNMUr6.js → proxy-o6cPThl2.js} +0 -0
  356. /package/dist/assets/{public-asset-BpAVsx77.js → public-asset-GKv5zCfZ.js} +0 -0
  357. /package/dist/assets/{refresh-cw-BmNgSiel.js → refresh-cw-DevIHL7J.js} +0 -0
  358. /package/dist/assets/{repeat-Bms5wrYv.js → repeat-C8Im6j--.js} +0 -0
  359. /package/dist/assets/{save-BZ19CVY3.js → save-aD5JFIZf.js} +0 -0
  360. /package/dist/assets/{semver-DLY9hF7h.js → semver-DIkpaM51.js} +0 -0
  361. /package/dist/assets/{shortcut-keys-DKqAVRjB.js → shortcut-keys-B2EE-634.js} +0 -0
  362. /package/dist/assets/{sparkles-3RJkeWa7.js → sparkles-PGiR5v1g.js} +0 -0
  363. /package/dist/assets/{status-badge-pill-DUcVAyfr.js → status-badge-pill-0N6rTEBg.js} +0 -0
  364. /package/dist/assets/{step-indicator-dots-DzT4WVOT.js → step-indicator-dots-D03TmFKG.js} +0 -0
  365. /package/dist/assets/{toggle-D7S110RM.js → toggle-CDfguvUz.js} +0 -0
  366. /package/dist/assets/{triangle-alert-CuLBwl1x.js → triangle-alert-Z0Gq0IuB.js} +0 -0
  367. /package/dist/assets/{typed-storage-T9jtK5c0.js → typed-storage-5IU6qVWg.js} +0 -0
  368. /package/dist/assets/{usage-window-wP92lK6k.js → usage-window-C6gWu5Qu.js} +0 -0
  369. /package/dist/assets/{user-plus-CBZUdRuz.js → user-plus-DMh4_UTz.js} +0 -0
  370. /package/dist/assets/{workflow-status-CHd73wxx.js → workflow-status-ZrbiLW5D.js} +0 -0
  371. /package/dist/assets/{x-CwzRJv9J.js → x-CkSVp1Ok.js} +0 -0
  372. /package/dist/assets/{xterm-ClHs86Ut.js → xterm-CBmd_y-b.js} +0 -0
  373. /package/dist/assets/{xterm-addon-fit-B-HVOsbO.js → xterm-addon-fit-THPW0uy0.js} +0 -0
@@ -0,0 +1 @@
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{r as t,s as n}from"./local-settings-lVNyIOJ_.js";import{m as r}from"./native-biometric-8C66CwyW.js";import{t as i}from"./capture-error-Dhiismgm.js";import{t as a}from"./react-DJZBPgpf.js";import{t as o}from"./button-amTXFI-2.js";import{d as s,h as c}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{N as l,O as u,S as d,T as f,c as p,n as m}from"./QueryClientProvider-DKhXIxGb.js";import{a as h,c as g,d as _,i as v,l as y,o as b,r as x,s as S,t as C,u as w}from"./useQuery-B45lW1Kk.js";import{t as T}from"./jsx-runtime-CVSDxk6A.js";import{t as E}from"./card-Bv5O5juh.js";import{t as D}from"./createLucideIcon-IRfcSUxS.js";import{t as O}from"./check-DFNrQERi.js";import{t as k}from"./chevron-down-qD-re7AW.js";import{t as A}from"./chevron-right-DqqmezXC.js";import{t as j}from"./circle-alert-zOqdmf25.js";import{t as M}from"./circle-check-VSiny8yl.js";import{t as N}from"./copy-Cn1FKrEp.js";import{t as P}from"./external-link-Dqpx9nRm.js";import{t as F}from"./key-round-CD3JWrs1.js";import{t as I}from"./loader-circle-Cz7opInR.js";import{t as L}from"./log-in--aqELu3z.js";import{t as R}from"./pencil-CUIr0IFo.js";import{t as z}from"./plus-DItfr5ux.js";import{t as ee}from"./refresh-cw-DevIHL7J.js";import{t as te}from"./sparkles-PGiR5v1g.js";import{t as ne}from"./x-CkSVp1Ok.js";import{t as re}from"./notice-DkcNAP8O.js";import{t as B}from"./popover-CFL4WZTr.js";import{t as V}from"./input-CoUmPnRU.js";import{t as ie}from"./toggle-CDfguvUz.js";import{n as H,t as ae}from"./list-row-D5MFdbkH.js";import{t as U}from"./modal-D5nLWNN9.js";import{n as W,t as oe}from"./panel-item-CouW2A55.js";import{n as G}from"./toast-xTp-xwYL.js";import{t as K}from"./confirm-dialog-CSkhRFRk.js";import{Ir as q}from"./sdk.gen-BwnFjFcp.js";import{$ as se,$t as ce,Q as le,Qt as ue,Z as de,en as fe,et as pe,nt as me,tn as he,tt as ge}from"./react-query.gen-C6wVk6Rw.js";import{r as _e}from"./api-errors-CrWDzVca.js";import{C as ve}from"./auth-store-CRgW9dVz.js";import{r as ye}from"./api-Y8JHO-Hz.js";import{c as be}from"./routes-BbeIx_F9.js";import{n as xe,t as Se}from"./browser-BcxhPHJY.js";import{Ct as Ce,S as we,St as Te,b as J,x as Ee}from"./react-query.gen-DPzPS206.js";import{t as De}from"./assistant-feature-flag-store-DRERrNOn.js";import{Ai as Oe,D as ke,Fi as Ae,Ji as je,Jt as Me,Qt as Ne,Sa as Pe,Ur as Fe,Vr as Ie,Xt as Le,Y,Yt as Re,Zt as ze,_r as Be,en as Ve,nn as He,tn as Ue,vi as X,vr as We}from"./index-Cd6Xm6j5.js";import{t as Ge}from"./use-active-assistant-id-xuY3XyDA.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 l{#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,p.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||!u(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=f(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 _(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)&&p.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},Z=e(a(),1);function Ye({queries:e,...t},n){let r=m(n),i=w(),a=y(),o=Z.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=i?`isRestoring`:`optimistic`,t}),[e,r,i]);o.forEach(e=>{x(e),b(e,a,r.getQueryCache().get(e.queryHash))}),g(a);let[s]=Z.useState(()=>new Je(r,o,t)),[c,l,u]=s.getOptimisticResult(o,t.combine),f=!i&&t.subscribed!==!1;Z.useSyncExternalStore(Z.useCallback(e=>f?s.subscribe(p.batchCalls(e)):d,[s,f]),()=>s.getCurrentResult(),()=>s.getCurrentResult()),Z.useEffect(()=>{s.setQueries(o,t)},[o,t,s]);let C=c.some((e,t)=>h(o[t],e))?c.flatMap((e,t)=>{let n=o[t];return n&&h(n,e)?v(n,new _(r,n),a):[]}):[];if(C.length>0)throw Promise.all(C);let T=c.find((e,t)=>{let n=o[t];return n&&S({result:e,errorResetBoundary:a,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(T?.error)throw T.error;return l(u())}var Xe=D(`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=D(`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:i,connectionsQueryKey:a,allConnections:o}){let s=m(),c=r(),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),[p,h]=(0,Z.useState)(!1),g=()=>{u.current=null,h(!1)},_=()=>{l.current&&!l.current.closed&&l.current.close(),l.current=null,d.current&&=(clearInterval(d.current),null),f.current&&=(clearTimeout(f.current),null)},v=(0,Z.useCallback)(e=>{if(e.type!==`vellum:oauth-complete`||!u.current||e.requestId!==u.current.requestId)return;let{oauthStatus:t,oauthCode:r}=e;if(_(),g(),t===`connected`)G.success(`${n} account connected.`),s.invalidateQueries({queryKey:a});else{let e=r?`Error: ${r}`:`Authorization failed`;G.error(`${n} ${e}`)}},[a,n,s]),y=(0,Z.useCallback)(async(e,n)=>{if(!i)return!1;for(let r=0;r<8;r+=1){r>0&&await Le(750);try{if(s.invalidateQueries({queryKey:a}),Re(await s.fetchQuery({...J({path:{assistant_id:e}}),staleTime:0}),t,n))return!0}catch{}}return!1},[a,i,t,s]);(0,Z.useEffect)(()=>{let e=e=>{let t=u.current;if(!t)return;let n=ze(e,window.location.origin,t.requestId);n&&v(n)},t=e=>{let t=u.current;if(!t)return;let n=Ne(e,t.requestId);n&&(v(n),window.localStorage.removeItem(Ve(t.requestId)))};return window.addEventListener(`message`,e),window.addEventListener(`storage`,t),()=>{window.removeEventListener(`message`,e),window.removeEventListener(`storage`,t)}},[v]),He((0,Z.useCallback)(e=>{let t=u.current;t&&e.requestId===t.requestId&&v({type:`vellum:oauth-complete`,requestId:e.requestId,oauthStatus:e.oauthStatus,oauthProvider:e.oauthProvider,oauthCode:e.oauthCode})},[v])),(0,Z.useEffect)(()=>xe(()=>{let e=u.current;e&&(async()=>{let t=await y(e.platformAssistantId,e.baselineConnectionSignatures);u.current&&(g(),t&&G.success(`${n} account connected.`))})()}),[y,n]),(0,Z.useEffect)(()=>()=>{d.current&&clearInterval(d.current),f.current&&clearTimeout(f.current),l.current&&!l.current.closed&&l.current.close()},[]);let b=Ce();return{handleConnect:(r=[])=>{if(!i)return;let a=crypto.randomUUID();h(!0);let p=async i=>{let l;try{l=await ve(e)}catch(e){_(),g(),G.error(e instanceof Error?e.message:`Failed to start ${n} authorization.`);return}let d=Me(await s.fetchQuery({...J({path:{assistant_id:l}}),staleTime:0}).catch(()=>l===e?o??[]:[]),t);u.current={requestId:a,provider:t,platformAssistantId:l,baselineConnectionSignatures:d},b.mutate({path:{assistant_id:l,provider:t},body:{requested_scopes:r,redirect_after_connect:`${be.account.oauth.popupComplete}?requestId=${a}${c?`&native=1`:``}`}},{onSuccess(e){if(c){Se(e.connect_url);return}i&&!i.closed?i.location.href=e.connect_url:u.current&&(_(),g(),G.error(`${n} connection failed: popup closed.`))},onError(e){_(),g();let t=_e(e,void 0,`Failed to start ${n} authorization.`);G.error(t)}})};if(c){p(null);return}let m=window.open(``,`_blank`,`width=500,height=600`);if(m===null){g(),G.error(`Popup blocked. Please enable popups and try again.`);return}l.current=m,d.current=setInterval(()=>{l.current&&l.current.closed&&u.current&&!f.current&&(f.current=setTimeout(async()=>{f.current=null;let e=u.current;if(!e)return;let t=window.localStorage.getItem(Ve(e.requestId));if(t){let n=Ue(t);if(n&&n.requestId===e.requestId){v(n),window.localStorage.removeItem(Ve(e.requestId));return}}let r=await y(e.platformAssistantId,e.baselineConnectionSignatures);if(u.current){if(r){_(),g(),G.success(`${n} account connected.`);return}_(),g(),G.error(`${n} connection failed: authorization popup closed.`)}},1e3))},100),p(m)},oauthInProgress:p,startOAuthPending:b.isPending}}var Q=T();function $e({displayName:e,providerKey:t,logoUrl:n,connections:r,connectionsLoading:i,startPending:a,oauthInProgress:s,disconnectingId:c,onConnect:l,onDisconnect:u,connectPresets:d=[]}){let f=a||s;return i?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,Q.jsx)(I,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})}):r.length===0?a||s?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-10`,children:[(0,Q.jsx)(Y,{providerKey:t,displayName:e,logoUrl:n,size:48}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(I,{className:`h-3.5 w-3.5 animate-spin`}),`Waiting for authorization...`]})]}):(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-10`,children:[(0,Q.jsx)(Y,{providerKey:t,displayName:e,logoUrl:n,size:48}),(0,Q.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`Connect Account to continue`}),(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,Q.jsx)(o,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(z,{}),onClick:()=>l(),disabled:f,children:`Connect Account`}),d.map(e=>(0,Q.jsx)(o,{variant:`outlined`,size:`compact`,leftIcon:(0,Q.jsx)(Ze,{}),onClick:()=>l(e.scopes),disabled:f,children:e.label},e.id))]})]}):(0,Q.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)]`,children:[(0,Q.jsx)(`ul`,{className:`divide-y divide-[var(--border-base)]`,children:r.map(r=>{let i=c===r.id;return(0,Q.jsxs)(`li`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,Q.jsx)(Y,{providerKey:t,displayName:e,logoUrl:n,size:20}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default text-[var(--content-default)]`,children:r.account_label??`${e} Account`}),(0,Q.jsx)(o,{variant:`dangerOutline`,size:`compact`,iconOnly:i?(0,Q.jsx)(I,{className:`animate-spin`}):(0,Q.jsx)(X,{}),onClick:()=>u(r),disabled:i,"aria-label":`Disconnect ${r.account_label??`${e} account`}`})]},r.id)})}),(0,Q.jsx)(`div`,{className:`border-t border-[var(--border-base)] px-4 py-3 dark:border-[var(--border-base)]`,children:f?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(I,{className:`h-3.5 w-3.5 animate-spin`}),`Waiting for authorization...`]}):(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Q.jsx)(o,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(P,{}),onClick:()=>l(),disabled:f,children:`Connect account`}),d.map(e=>(0,Q.jsx)(o,{variant:`outlined`,size:`compact`,leftIcon:(0,Q.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=m(),a=C({...se({path:{assistant_id:e},query:{provider_key:t}}),select:e=>e.apps}),s=C({...ge({path:{assistant_id:e,providerKey:t}}),select:e=>e.oauth_callback_url}),c=a.data??[],l=s.data??null,u=Ye({queries:c.map(t=>({...de({path:{assistant_id:e,appId:t.id}}),select:e=>e.connections}))}),d={};c.forEach((e,t)=>{d[e.id]=u[t]?.data??[]});let f=pe({path:{assistant_id:e},query:{provider_key:t}}),p=fe({onSuccess:()=>{i.invalidateQueries({queryKey:f}),x(``),w(``),y(!1),G.success(`${n} OAuth app added.`)},onError:e=>{G.error(e.message||`Failed to create OAuth app`)}}),h=ce({onSuccess:()=>{i.invalidateQueries({queryKey:f}),G.success(`OAuth app deleted.`)},onError:e=>{G.error(e.message||`Failed to delete OAuth app`)}}),g=ue({onSuccess:e=>{`auth_url`in e&&(window.location.href=e.auth_url)},onError:e=>{G.error(e.message||`Failed to start OAuth flow`)}}),_=he(),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(``),[S,w]=(0,Z.useState)(``),[T,D]=(0,Z.useState)(!1),[k,A]=(0,Z.useState)(null),[j,M]=(0,Z.useState)(null),F=p.isPending,L=h.isPending?h.variables?.path?.id??null:null,R=g.isPending?g.variables?.path?.appId??null:null,ee=_.isPending?_.variables?.path?.id??null:null,te=()=>{let n=b.trim(),r=S.trim();!n||!r||p.mutate({path:{assistant_id:e},body:{provider_key:t,client_id:n,client_secret:r}})},ne=()=>{let t=k;A(null),t&&h.mutate({path:{assistant_id:e,id:t.id}})},re=t=>{g.mutate({path:{assistant_id:e,appId:t.id},body:{callback_transport:`gateway`,scopes:[]}})};return a.isLoading?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,Q.jsx)(I,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[c.length===0||v?(0,Q.jsx)(E.Root,{children:(0,Q.jsxs)(E.Body,{className:`flex flex-col gap-3`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.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,Q.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,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Redirect URL`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(V,{type:`text`,value:l,readOnly:!0,fullWidth:!0}),(0,Q.jsx)(o,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>{navigator.clipboard.writeText(l).then(()=>{D(!0),G.success(`Copied to clipboard!`),setTimeout(()=>D(!1),2e3)})},"aria-label":T?`Copied`:`Copy redirect URL`,iconOnly:T?(0,Q.jsx)(O,{"aria-hidden":!0}):(0,Q.jsx)(N,{"aria-hidden":!0})})]}),(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Add this URL to your OAuth app's redirect settings.`})]}):null,(0,Q.jsx)(V,{label:`Client ID`,type:`text`,value:b,onChange:e=>x(e.target.value),placeholder:`Enter your client ID`,fullWidth:!0}),(0,Q.jsx)(V,{label:`Client Secret`,type:`password`,value:S,onChange:e=>w(e.target.value),placeholder:`Enter your client secret`,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-1`,children:[c.length>0?(0,Q.jsx)(o,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>{y(!1),x(``),w(``)},disabled:F,children:`Cancel`}):null,(0,Q.jsx)(o,{type:`button`,size:`compact`,onClick:te,disabled:F||!b.trim()||!S.trim(),leftIcon:F?(0,Q.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(z,{"aria-hidden":!0}),children:`Add App`})]})]})}):null,c.map(e=>{let i=d[e.id]??[],a=L===e.id,s=R===e.id;return(0,Q.jsx)(E.Root,{children:(0,Q.jsxs)(E.Body,{className:`flex flex-col gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 space-y-0.5`,children:[(0,Q.jsx)(`p`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:et(e.client_id)}),(0,Q.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Added `,tt(e.created_at)]})]}),(0,Q.jsx)(o,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>A(e),disabled:a,"aria-label":`Delete OAuth app ${et(e.client_id)}`,iconOnly:a?(0,Q.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(X,{"aria-hidden":!0})})]}),i.length>0?(0,Q.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 a=ee===i.id;return(0,Q.jsxs)(`li`,{className:`flex items-center gap-3 px-3 py-2`,children:[(0,Q.jsx)(Y,{providerKey:t,displayName:n,logoUrl:r,size:18}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-lighter text-[var(--content-default)]`,children:i.account_info??`${n} Account`}),(0,Q.jsx)(o,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>M({appId:e.id,connection:i}),disabled:a,"aria-label":`Disconnect ${i.account_info??`${n} account`}`,iconOnly:a?(0,Q.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(X,{"aria-hidden":!0})})]},i.id)})}):null,(0,Q.jsx)(o,{type:`button`,size:`compact`,onClick:()=>re(e),disabled:s,className:`w-full`,leftIcon:s?(0,Q.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(P,{"aria-hidden":!0}),children:s?`Waiting for authorization...`:`Connect account`})]})},e.id)}),c.length>0&&!v?(0,Q.jsx)(o,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>y(!0),className:`w-full border-dashed`,leftIcon:(0,Q.jsx)(z,{"aria-hidden":!0}),children:`Add Another App`}):null,(0,Q.jsx)(K,{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:ne,onCancel:()=>A(null)}),(0,Q.jsx)(K,{open:j!==null,title:`Disconnect ${n}?`,message:j?`Disconnect ${j.connection.account_info??`${n} Account`}? You can reconnect later.`:``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{let t=j;M(null),t&&_.mutate({path:{assistant_id:e,id:t.connection.id}},{onSuccess:()=>{let r=le({path:{assistant_id:e,appId:t.appId}});i.invalidateQueries({queryKey:r}),i.invalidateQueries({queryKey:f}),G.success(`${n} account disconnected.`)},onError:e=>{G.error(e.message||`Failed to disconnect account`)}})},onCancel:()=>M(null)})]})}var rt={};function it(e){return rt[e]??[]}function at({assistantId:e,platformAssistantId:t,providerKey:n,displayName:r,description:i,logoUrl:a,platformGate:s,onClose:c}){let l=m(),u=s===`full`,d=!Ie(),[f,p]=(0,Z.useState)(s===`gated`&&d?`your-own`:`managed`);(0,Z.useEffect)(()=>{!d&&f===`your-own`&&p(`managed`)},[d,f]);let[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(null),y=Ee({path:{assistant_id:t}}),{data:b,isLoading:x}=C({...J({path:{assistant_id:t}}),enabled:u}),S=(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=Te({onSuccess(e,t){G.success(`${r} account disconnected.`);let n=t.path.connection_id;we(l,D,e=>e?.filter(e=>e.id!==n)),l.invalidateQueries({queryKey:y}),g(null)},onError(e){let t=_e(e,void 0,`Failed to disconnect ${r} account.`);G.error(t),g(null)}});(0,Z.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,Q.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4`,children:[(0,Q.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,Q.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,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(Y,{providerKey:n,displayName:r,logoUrl:a,size:32}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`h2`,{id:`integration-modal-title`,className:`text-title-small text-[var(--content-default)]`,children:[r,` OAuth`]}),(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:j})]})]}),(0,Q.jsx)(o,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(ne,{}),"aria-label":`Close`,onClick:c})]}),(0,Q.jsxs)(`div`,{className:`space-y-4 px-5 py-4`,children:[s!==`gated`&&d&&(0,Q.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,Q.jsx)(ot,{active:f===`managed`,onClick:()=>p(`managed`),children:`Managed`}),(0,Q.jsx)(ot,{active:f===`your-own`,onClick:()=>p(`your-own`),children:`Your Own`})]}),f===`managed`&&s!==`gated`?s===`disabled`?(0,Q.jsx)(ke,{children:`Log in to the Vellum platform to manage OAuth connections.`}):(0,Q.jsx)($e,{displayName:r,providerKey:n,logoUrl:a,connections:S,connectionsLoading:x,startPending:E,oauthInProgress:T,disconnectingId:O.isPending?h:null,onConnect:w,onDisconnect:k,connectPresets:it(n)}):d?(0,Q.jsx)(nt,{assistantId:e,providerKey:n,displayName:r,logoUrl:a}):null]}),(0,Q.jsx)(`div`,{className:`flex justify-end border-t border-[var(--border-base)] px-5 py-3 dark:border-[var(--border-base)]`,children:(0,Q.jsx)(o,{variant:`outlined`,size:`compact`,onClick:c,children:`Confirm`})})]}),(0,Q.jsx)(K,{open:_!==null,title:`Disconnect ${r}?`,message:_?`Disconnect ${_.account_label??`${r} Account`}? You can reconnect later.`:``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:A,onCancel:()=>v(null)})]})}function ot({active:e,onClick:t,children:n}){return(0,Q.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:a,platformGate:s,onConfigure:c}){let l=m(),u=!!a?.connected,[d,f]=(0,Z.useState)(!1),[p,h]=(0,Z.useState)(!1),g=Be(),_=Ee({path:{assistant_id:e}}),v={path:{assistant_id:e}},y=Te({onSuccess(e,t){G.success(`${n} account disconnected.`);let r=t.path.connection_id;we(l,v,e=>e?.filter(e=>e.id!==r)),l.invalidateQueries({queryKey:_})},onError(e){let t=_e(e,void 0,`Failed to disconnect ${n} account.`);G.error(t)}}),b=()=>{a?.id&&h(!0)};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(E.Root,{children:(0,Q.jsxs)(E.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,Q.jsx)(Y,{providerKey:t,displayName:n,logoUrl:i,size:32}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:n}),r&&(0,Q.jsx)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:r})]}),u&&s===`full`?(0,Q.jsx)(`div`,{className:`shrink-0`,children:(0,Q.jsx)(ct,{displayName:n,open:d,onOpenChange:f,onEditConnections:()=>{f(!1),c()},onDisable:()=>{f(!1),b()},disablePending:y.isPending,isMobile:g})}):(0,Q.jsx)(o,{variant:`primary`,onClick:c,className:`shrink-0`,children:`Enable`})]})}),(0,Q.jsx)(K,{open:p,title:`Disconnect ${n}?`,message:`Disconnect your ${n} account? You can reconnect it later.`,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{h(!1),a?.id&&y.mutate({path:{assistant_id:e,connection_id:a.id}})},onCancel:()=>h(!1)})]})}function ct({displayName:e,open:t,onOpenChange:n,onEditConnections:r,onDisable:i,disablePending:a,isMobile:s}){return s?(0,Q.jsxs)(W.Root,{open:t,onOpenChange:n,children:[(0,Q.jsx)(W.Trigger,{asChild:!0,children:(0,Q.jsx)(o,{variant:`outlined`,rightIcon:(0,Q.jsx)(k,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,Q.jsxs)(W.Content,{children:[(0,Q.jsx)(W.Header,{children:(0,Q.jsx)(W.Title,{children:e})}),(0,Q.jsxs)(W.Body,{children:[(0,Q.jsx)(oe,{icon:R,label:`Edit connections`,onSelect:r}),(0,Q.jsx)(oe,{icon:a?I:Pe,label:`Disable`,onSelect:()=>{a||i()}})]})]})]}):(0,Q.jsxs)(B.Root,{open:t,onOpenChange:n,children:[(0,Q.jsx)(B.Trigger,{asChild:!0,children:(0,Q.jsx)(o,{variant:`outlined`,rightIcon:(0,Q.jsx)(k,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,Q.jsxs)(B.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,Q.jsx)(o,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:r,className:`w-full justify-start rounded-none`,leftIcon:(0,Q.jsx)(R,{"aria-hidden":!0}),children:`Edit connections`}),(0,Q.jsx)(o,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:i,disabled:a,className:`w-full justify-start rounded-none`,leftIcon:a?(0,Q.jsx)(I,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(Pe,{"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,a]=(0,Z.useState)(``),[s,c]=(0,Z.useState)(`sse`),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(``),[h,g]=(0,Z.useState)(`none`),[_,v]=(0,Z.useState)(``),[y,b]=(0,Z.useState)(`X-API-Key`),[x,S]=(0,Z.useState)(``),C=(0,Z.useCallback)(()=>{a(``),c(`sse`),u(``),f(``),m(``),g(`none`),v(``),b(`X-API-Key`),S(``)},[]),w=(0,Z.useCallback)(()=>{r||(C(),t())},[r,C,t]),T=(0,Z.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,Q.jsx)(U.Root,{open:e,onOpenChange:e=>{e||w()},children:(0,Q.jsxs)(U.Content,{size:`md`,children:[(0,Q.jsxs)(U.Header,{children:[(0,Q.jsx)(U.Title,{icon:Xe,children:`Add MCP Server`}),(0,Q.jsx)(U.Description,{children:`Connect to a Model Context Protocol server to extend available tools.`})]}),(0,Q.jsx)(U.Body,{children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-name`,children:`Server name`}),(0,Q.jsx)(V,{id:`mcp-name`,type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:`my-server`,fullWidth:!0,autoFocus:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-transport`,children:`Transport`}),(0,Q.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,Q.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),E?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-command`,children:`Command`}),(0,Q.jsx)(V,{id:`mcp-command`,type:`text`,value:d,onChange:e=>f(e.target.value),placeholder:`npx -y @modelcontextprotocol/server-example`,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-args`,children:`Arguments (space-separated)`}),(0,Q.jsx)(V,{id:`mcp-args`,type:`text`,value:p,onChange:e=>m(e.target.value),placeholder:`--port 3000`,fullWidth:!0})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-url`,children:`Server URL`}),(0,Q.jsx)(V,{id:`mcp-url`,type:`url`,value:l,onChange:e=>u(e.target.value),placeholder:`https://example.com/mcp`,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-auth`,children:`Authentication`}),(0,Q.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,Q.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),h===`oauth`?(0,Q.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,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-bearer`,children:`Bearer token`}),(0,Q.jsx)(V,{id:`mcp-bearer`,type:`password`,value:_,onChange:e=>v(e.target.value),placeholder:`tok_...`,fullWidth:!0})]}):null,h===`api-key`?(0,Q.jsxs)(`div`,{className:`flex gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-apikey-header`,children:`Header name`}),(0,Q.jsx)(V,{id:`mcp-apikey-header`,type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`X-API-Key`,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-apikey-value`,children:`API key`}),(0,Q.jsx)(V,{id:`mcp-apikey-value`,type:`password`,value:x,onChange:e=>S(e.target.value),placeholder:`sk_...`,fullWidth:!0})]})]}):null]})]})}),(0,Q.jsxs)(U.Footer,{children:[(0,Q.jsx)(o,{variant:`ghost`,onClick:w,disabled:r,children:`Cancel`}),(0,Q.jsx)(o,{variant:`primary`,onClick:T,disabled:!D||r,children:r?`Adding...`:`Add Server`})]})]})})}async function ft(e){let{data:t,response:n}=await q.get({url:`/v1/assistants/{assistant_id}/internal/mcp/list`,path:{assistant_id:e}});if(!n?.ok)throw Error(`Failed to fetch MCP servers: ${n?.status}`);return t}async function pt(e){let{data:t,response:n}=await q.get({url:`/v1/assistants/{assistant_id}/internal/mcp/tools-summary`,path:{assistant_id:e}});if(!n?.ok)throw Error(`Failed to fetch MCP tools summary: ${n?.status}`);return t}async function mt(e,t){let{response:n}=await q.post({url:`/v1/assistants/{assistant_id}/internal/mcp/update`,path:{assistant_id:e},body:t});if(!n?.ok)throw Error(`Failed to update MCP server: ${n?.status}`)}async function ht(e,t){let{response:n}=await q.post({url:`/v1/assistants/{assistant_id}/internal/mcp/add`,path:{assistant_id:e},body:t});if(!n?.ok)throw Error(`Failed to add MCP server: ${n?.status}`)}async function gt(e,t){let{response:n}=await q.post({url:`/v1/assistants/{assistant_id}/internal/mcp/remove`,path:{assistant_id:e},body:{name:t}});if(!n?.ok)throw Error(`Failed to remove MCP server: ${n?.status}`)}async function _t(e,t){let{data:n,response:r}=await q.post({url:`/v1/assistants/{assistant_id}/internal/mcp/auth/start`,path:{assistant_id:e},body:{serverId:t}});if(!r?.ok)throw Error(`Failed to start MCP auth: ${r?.status}`);return n}async function vt(e,t){let{data:n,response:r}=await q.get({url:`/v1/assistants/{assistant_id}/internal/mcp/auth/status/${encodeURIComponent(t)}`,path:{assistant_id:e}});if(!r?.ok)throw Error(`Failed to poll MCP auth status: ${r?.status}`);return n}async function yt(e,t){let{response:n}=await q.post({url:`/v1/assistants/{assistant_id}/internal/mcp/auth/revoke`,path:{assistant_id:e},body:{serverId:t}});if(!n?.ok)throw Error(`Failed to revoke OAuth for ${t}: ${n?.status}`)}async function bt(e){let{response:t}=await q.post({url:`/v1/assistants/{assistant_id}/internal/mcp/reload`,path:{assistant_id:e},body:{}});if(!t?.ok)throw Error(`Failed to reload MCP servers: ${t?.status}`)}var xt={connected:{icon:M,label:`Connected`,className:`text-[var(--system-positive-strong)]`},"needs-auth":{icon:F,label:`Needs Auth`,className:`text-[var(--system-warning-strong)]`},disabled:{icon:Ae,label:`Disabled`,className:`text-[var(--content-tertiary)]`}},St={icon:j,label:`Error`,className:`text-[var(--system-negative-strong)]`};function Ct({server:e,toolsSummary:t,onToggleEnabled:n,onRemove:r,onConfigure:i,onAuthenticate:a,onRevokeOAuth:s,isUpdating:c,isAuthenticating:l,isRevoking:u}){let[d,f]=(0,Z.useState)(!1),p=xt[e.status]??St,m=p.icon,h=(0,Z.useCallback)(t=>n(e.id,t),[n,e.id]),g=(0,Z.useCallback)(()=>r(e.id),[r,e.id]),_=(0,Z.useCallback)(()=>i(e.id),[i,e.id]),v=(0,Z.useCallback)(()=>a(e.id),[a,e.id]),y=(0,Z.useCallback)(()=>s(e.id),[s,e.id]),b=(0,Z.useCallback)(()=>f(e=>!e),[]);return(0,Q.jsx)(E.Root,{children:(0,Q.jsxs)(E.Body,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Q.jsx)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e.id}),(0,Q.jsxs)(`span`,{className:`flex items-center gap-1 text-label-medium-default ${p.className}`,children:[(0,Q.jsx)(m,{className:`h-3.5 w-3.5`}),p.label]}),e.hasOAuth?(0,Q.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,Q.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(`span`,{children:e.transport.type}),t?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Q.jsxs)(`span`,{children:[t.toolCount,` `,t.toolCount===1?`tool`:`tools`]}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Q.jsxs)(`span`,{children:[`~`,t.estimatedTokens.toLocaleString(),` tokens`]})]}):null]})]})}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c||l?(0,Q.jsx)(I,{className:`h-4 w-4 animate-spin text-[var(--content-tertiary)]`}):null,e.status===`needs-auth`&&e.transport.type!==`stdio`&&!e.hasOAuth?(0,Q.jsx)(o,{variant:`ghost`,size:`compact`,leftIcon:(0,Q.jsx)(L,{}),onClick:v,disabled:l,children:l?`Authenticating...`:`Authenticate`}):null,e.hasOAuth?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(o,{variant:`ghost`,size:`compact`,leftIcon:(0,Q.jsx)(ee,{}),onClick:v,disabled:l,tooltip:`Re-authenticate OAuth`,children:`Re-auth`}),(0,Q.jsx)(o,{variant:`dangerGhost`,size:`compact`,leftIcon:(0,Q.jsx)(je,{}),onClick:y,disabled:u,tooltip:`Revoke OAuth credentials`,children:u?`Revoking...`:`Revoke`})]}):null,(0,Q.jsx)(ie,{checked:e.enabled,onChange:h,disabled:c,"aria-label":`${e.enabled?`Disable`:`Enable`} ${e.id}`}),(0,Q.jsx)(o,{variant:`ghost`,size:`compact`,onClick:_,tooltip:`Configure`,children:`Configure`}),(0,Q.jsx)(o,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(X,{}),onClick:g,tooltip:`Remove server`,"aria-label":`Remove ${e.id}`})]})]}),t&&t.tools.length>0?(0,Q.jsxs)(`div`,{className:`mt-3 border-t border-[var(--border-base)] pt-2`,children:[(0,Q.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,Q.jsx)(k,{className:`h-3.5 w-3.5`}):(0,Q.jsx)(A,{className:`h-3.5 w-3.5`}),t.toolCount,` registered `,t.toolCount===1?`tool`:`tools`]}),d?(0,Q.jsx)(`div`,{className:`mt-2 max-h-60 overflow-y-auto`,children:t.tools.map(e=>(0,Q.jsx)(ae,{title:e.name,subtitle:e.description||void 0,trailing:(0,Q.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[a,s]=(0,Z.useState)(`medium`),[c,l]=(0,Z.useState)(`none`),[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(`X-API-Key`),[m,h]=(0,Z.useState)(``);(0,Z.useEffect)(()=>{e&&(s(e.defaultRiskLevel),l(e.authType),d(``),p(e.authHeaderName??`X-API-Key`),h(``))},[e]);let g=(0,Z.useCallback)(()=>{if(!e)return;let t=c!==e.authType,n=c===`bearer`&&u.trim()!==``,i=c===`api-key`&&f.trim()!==``&&m.trim()!==``,o=t||n||i,s;s=o?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:a,...s===void 0?{}:{headers:s}})},[e,a,c,u,f,m,r]),_=(0,Z.useCallback)(()=>{i||n()},[i,n]);return e?(0,Q.jsx)(U.Root,{open:!!e,onOpenChange:e=>{e||_()},children:(0,Q.jsxs)(U.Content,{size:`lg`,children:[(0,Q.jsxs)(U.Header,{children:[(0,Q.jsx)(U.Title,{icon:Xe,children:e.id}),(0,Q.jsxs)(U.Description,{children:[e.transport.type,` transport · `,e.status]})]}),(0,Q.jsx)(U.Body,{children:(0,Q.jsxs)(`div`,{className:`space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-risk`,children:`Default risk level`}),(0,Q.jsx)(`select`,{id:`mcp-risk`,value:a,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,Q.jsx)(`option`,{value:e,children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]}),e.transport.type===`stdio`?null:(0,Q.jsxs)(Q.Fragment,{children:[e.hasOAuth?(0,Q.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,Q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Authentication`}),(0,Q.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,Q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`— managed via OAuth flow`})]}):null,e.hasOAuth?null:(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-detail-auth`,children:`Authentication`}),(0,Q.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,Q.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),c===`bearer`&&!e.hasOAuth?(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-detail-bearer`,children:`Bearer token`}),(0,Q.jsx)(V,{id:`mcp-detail-bearer`,type:`password`,value:u,onChange:e=>d(e.target.value),placeholder:e.hasStaticAuth&&e.authType===`bearer`?`•••••••• (leave blank to keep current)`:`tok_...`,fullWidth:!0})]}):null,c===`api-key`&&!e.hasOAuth?(0,Q.jsxs)(`div`,{className:`flex gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-detail-apikey-header`,children:`Header name`}),(0,Q.jsx)(V,{id:`mcp-detail-apikey-header`,type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`X-API-Key`,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`mcp-detail-apikey-value`,children:`API key`}),(0,Q.jsx)(V,{id:`mcp-detail-apikey-value`,type:`password`,value:m,onChange:e=>h(e.target.value),placeholder:e.hasStaticAuth&&e.authType===`api-key`?`•••••••• (leave blank to keep current)`:`sk_...`,fullWidth:!0})]})]}):null]}),t&&t.tools.length>0?(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsxs)(`h3`,{className:`text-body-medium-default text-[var(--content-default)]`,children:[`Registered tools (`,t.toolCount,`)`]}),(0,Q.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Total estimated token overhead: ~`,t.estimatedTokens.toLocaleString(),` tokens`]}),(0,Q.jsx)(`div`,{className:`max-h-64 overflow-y-auto rounded-lg border border-[var(--border-base)]`,children:(0,Q.jsxs)(`table`,{className:`w-full text-body-small-default`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{className:`border-b border-[var(--border-base)] bg-[var(--surface-base)]`,children:[(0,Q.jsx)(`th`,{className:`px-3 py-2 text-left font-medium text-[var(--content-secondary)]`,children:`Tool`}),(0,Q.jsx)(`th`,{className:`px-3 py-2 text-left font-medium text-[var(--content-secondary)]`,children:`Description`}),(0,Q.jsx)(`th`,{className:`px-3 py-2 text-right font-medium text-[var(--content-secondary)]`,children:`Tokens`})]})}),(0,Q.jsx)(`tbody`,{children:t.tools.map(e=>(0,Q.jsxs)(`tr`,{className:`border-b border-[var(--border-base)] last:border-b-0`,children:[(0,Q.jsx)(`td`,{className:`px-3 py-2 font-medium text-[var(--content-default)]`,children:e.name}),(0,Q.jsx)(`td`,{className:`max-w-xs truncate px-3 py-2 text-[var(--content-tertiary)]`,children:e.description||`—`}),(0,Q.jsxs)(`td`,{className:`px-3 py-2 text-right text-[var(--content-tertiary)]`,children:[`~`,e.estimatedTokens.toLocaleString()]})]},e.name))})]})})]}):null]})}),(0,Q.jsxs)(U.Footer,{children:[(0,Q.jsx)(o,{variant:`ghost`,onClick:_,disabled:i,children:`Cancel`}),(0,Q.jsx)(o,{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=Ge(),t=m(),n=s(),r=De.use.mcpAddServer(),i=De.use.hasHydrated(),[a,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),[p,h]=(0,Z.useState)(new Set),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(!1),[S,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(null),{data:k,isLoading:A,isError:j}=C({queryKey:[Dt,e],queryFn:()=>ft(e)}),{data:M}=C({queryKey:[Ot,e],queryFn:()=>pt(e)}),N=(0,Z.useCallback)(()=>{t.invalidateQueries({queryKey:[Dt,e]}),t.invalidateQueries({queryKey:[Ot,e]})},[t,e]),P=(0,Z.useMemo)(()=>{let e=new Map;if(M)for(let t of M.servers)e.set(t.serverId,t);return e},[M]),F=(0,Z.useMemo)(()=>!l||!k?null:k.servers.find(e=>e.id===l)??null,[l,k]),L=(0,Z.useCallback)(async(t,n)=>{h(e=>new Set(e).add(t));try{await mt(e,{name:t,enabled:n}),N()}catch{G.error(`Failed to ${n?`enable`:`disable`} ${t}`)}finally{h(e=>{let n=new Set(e);return n.delete(t),n})}},[e,N]),R=(0,Z.useCallback)(async()=>{if(d){y(!0);try{await gt(e,d),N(),G.success(`Removed ${d}`),f(null)}catch{G.error(`Failed to remove ${d}`)}finally{y(!1)}}},[d,e,N]),te=(0,Z.useCallback)(async t=>{E(t);let n;try{n=await _t(e,t)}catch{G.error(`Failed to start authentication for ${t}`),E(null);return}try{if(n.already_authenticated){G.success(`${t} is already authenticated`),N();return}window.open(n.auth_url,`_blank`,`noopener,noreferrer`);for(let n=0;n<60;n++){await new Promise(e=>setTimeout(e,3e3));let n=await vt(e,t);if(n.status===`complete`){G.success(`${t} authenticated successfully`),N();return}if(n.status===`error`){G.error(n.error??`Authentication failed for ${t}`);return}}G.error(`Authentication timed out for ${t}`)}catch{G.error(`Authentication polling failed for ${t}`)}finally{E(null),N()}},[e,N]),ne=(0,Z.useCallback)(async t=>{O(t);try{await yt(e,t),N(),G.success(`OAuth credentials revoked for ${t}`)}catch{G.error(`Failed to revoke OAuth for ${t}`)}finally{O(null)}},[e,N]),re=(0,Z.useCallback)(async t=>{let n=t.autoAuth?window.open(`about:blank`,`_blank`,`noopener`):null;_(!0);try{await ht(e,t),N(),G.success(`Added ${t.name}`),c(!1)}catch{G.error(`Failed to add ${t.name}`),n?.close(),_(!1);return}if(_(!1),t.autoAuth){E(t.name);try{let r=await _t(e,t.name);if(r.already_authenticated){n?.close(),G.success(`${t.name} is already authenticated`),N();return}n?n.location.href=r.auth_url:window.open(r.auth_url,`_blank`,`noopener,noreferrer`);for(let n=0;n<60;n++){await new Promise(e=>setTimeout(e,3e3));let n=await vt(e,t.name);if(n.status===`complete`){G.success(`${t.name} authenticated successfully`),N();return}if(n.status===`error`){G.error(n.error??`Authentication failed for ${t.name}`);return}}G.error(`Authentication timed out for ${t.name}`)}catch{n?.close(),G.error(`Failed to start authentication for ${t.name}`)}finally{E(null),N()}}},[e,N]),B=(0,Z.useCallback)(async(t,n)=>{x(!0);try{await mt(e,n),N(),G.success(`Updated ${t}`),u(null)}catch{G.error(`Failed to update ${t}`)}finally{x(!1)}},[e,N]),V=(0,Z.useCallback)(async()=>{w(!0);try{await bt(e),N(),G.success(`MCP servers reloaded`)}catch{G.error(`Failed to reload MCP servers`)}finally{w(!1)}},[e,N]),ie=(0,Z.useCallback)(()=>{r?c(!0):We(n,{prompt:kt})},[r,n]),H=k?.servers??[];return(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`text-title-small text-[var(--content-default)]`,children:`MCP Servers`}),(0,Q.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,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(o,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(ee,{className:S?`animate-spin`:``}),onClick:V,disabled:S,tooltip:`Reload all servers`,"aria-label":`Reload MCP servers`}),r?(0,Q.jsx)(o,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(z,{}),onClick:()=>c(!0),children:`Add Server`}):null]})]}),M?(0,Q.jsxs)(`div`,{className:`flex gap-4 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsxs)(`span`,{children:[M.totalToolCount,` total `,M.totalToolCount===1?`tool`:`tools`]}),(0,Q.jsxs)(`span`,{children:[`~`,M.totalEstimatedTokens.toLocaleString(),` total tokens`]})]}):null,A?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(I,{className:`h-4 w-4 animate-spin`}),(0,Q.jsx)(`span`,{children:`Loading MCP servers...`})]}):j?(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Failed to load MCP servers. Check that an assistant is running.`}):H.length===0?(0,Q.jsxs)(`button`,{type:`button`,onClick:ie,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,Q.jsx)(Xe,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,Q.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`No MCP Servers`}),(0,Q.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,Q.jsx)(`div`,{className:`space-y-2`,children:H.map(e=>(0,Q.jsx)(Ct,{server:e,toolsSummary:P.get(e.id),onToggleEnabled:L,onRemove:f,onConfigure:u,onAuthenticate:te,onRevokeOAuth:ne,isUpdating:p.has(e.id),isAuthenticating:T===e.id,isRevoking:D===e.id},e.id))}),r?(0,Q.jsx)(dt,{open:a,onClose:()=>c(!1),onAdd:re,isPending:g}):null,(0,Q.jsx)(Et,{server:F,toolsSummary:l?P.get(l):void 0,onClose:()=>u(null),onSave:B,isPending:b}),(0,Q.jsx)(K,{open:!!d,title:`Remove MCP Server`,message:`Are you sure you want to remove "${d}"? This will disconnect all tools provided by this server.`,confirmLabel:`Remove`,destructive:!0,isPending:v,onConfirm:R,onCancel:()=>f(null)})]})}function jt(){return(0,Q.jsx)(At,{})}function Mt(e,t){let[n,r]=(0,Z.useState)({platformAssistantId:null,isLoading:!1,error:null});return(0,Z.useEffect)(()=>{if(!t||!e){r({platformAssistantId:null,isLoading:!1,error:null});return}let n=!0;return r({platformAssistantId:null,isLoading:!0,error:null}),ve(e).then(e=>{n&&r({platformAssistantId:e,isLoading:!1,error:null})}).catch(e=>{n&&r({platformAssistantId:null,isLoading:!1,error:e instanceof Error?e:Error(String(e))})}),()=>{n=!1}},[e,t]),n}var Nt=`vellum:integrations:bannerDismissed`,Pt=[{value:`all`,label:`All`},{value:`enabled`,label:`Enabled`},{value:`not-enabled`,label:`Not Enabled`}];function $(e,t){return e?.find(e=>e.provider===t)??null}function Ft(e){return e===`mcp`?`mcp`:`oauth`}function It(){let[e]=c(),r=s(),a=Fe(),[o,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(!0),[f,p]=(0,Z.useState)(``),[m,h]=(0,Z.useState)(`all`),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(!0),[b,x]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{y(t(Nt,`false`)===`true`)},[]);let S=()=>{y(!0),n(Nt,`true`)};(0,Z.useEffect)(()=>{let e=!0;return(async()=>{try{let t=await ye();e&&t.ok&&l(t.data)}catch(e){i(e,{context:`integrations.getAssistant`})}finally{e&&d(!1)}})(),()=>{e=!1}},[]);let{platformAssistantId:w,isLoading:T}=Mt(o?.id,a===`full`),{data:E,isLoading:D,isError:O}=C({...me({path:{assistant_id:o?.id??``}}),select:e=>e.providers,enabled:!!o}),{data:A,isLoading:j}=C({...J({path:{assistant_id:w??``}}),enabled:!!w&&a===`full`});(0,Z.useEffect)(()=>{let t=e.get(`oauth_status`);if(!t)return;let n=e.get(`oauth_provider`),i=n?n.charAt(0).toUpperCase()+n.slice(1):null;if(t===`connected`)G.success(i?`${i} account connected successfully.`:`Account connected successfully.`);else if(t===`error`){let t=e.get(`oauth_code`)??`unknown`;G.error({denied:`Authorization was denied. Please try again.`,state_invalid:`Authorization state was invalid. Please try again.`,state_expired:`Authorization expired. Please try again.`,exchange_failed:`Failed to complete authorization. Please try again.`,identity_failed:`Failed to verify account identity. Please try again.`}[t]??(i?`Failed to connect ${i}.`:`Failed to connect. Please try again.`))}r(be.settings.integrations,{replace:!0})},[e,r]);let M=(0,Z.useMemo)(()=>E?.filter(e=>e.supports_managed_mode)??[],[E]),N=(0,Z.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=!!$(A,e.provider_key)?.connected;return m===`enabled`?t:!t})),[...t].sort((e,t)=>{let n=!!$(A,e.provider_key)?.connected;if(n!==!!$(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=Pt.find(e=>e.value===m)?.label??`All`,L=(()=>{if(f.trim())return`No integrations matched`;switch(m){case`enabled`:return`No Enabled Integrations`;case`not-enabled`:return`All Integrations Are Enabled`;default:return`No Integrations Available`}})(),R=(()=>{if(f.trim())return`No integrations matched "${f.trim()}"`;switch(m){case`enabled`:return`Connect an integration to get started.`;case`not-enabled`:return`All available integrations have been connected.`;default:return`Check your connection and try again.`}})(),z=(0,Z.useMemo)(()=>b?M.find(e=>e.provider_key===b)??null:null,[M,b]);return(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[!v&&(0,Q.jsxs)(re,{tone:`info`,icon:(0,Q.jsx)(te,{className:`h-3.5 w-3.5`}),onDismiss:S,children:[(0,Q.jsx)(`span`,{className:`text-body-medium-default`,children:`Tip:`}),` You can enable integrations by mentioning them in chat.`]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(V,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`Search Integrations`,"aria-label":`Search integrations`,leftIcon:(0,Q.jsx)(Oe,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,wrapperClassName:`flex-1`}),(0,Q.jsxs)(B.Root,{open:g,onOpenChange:_,children:[(0,Q.jsx)(B.Trigger,{asChild:!0,children:(0,Q.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,Q.jsx)(`span`,{children:F}),(0,Q.jsx)(k,{className:`h-3.5 w-3.5`})]})}),(0,Q.jsx)(B.Content,{align:`end`,sideOffset:4,className:`w-36 overflow-hidden p-0`,children:(0,Q.jsx)(`div`,{role:`listbox`,children:Pt.map(e=>{let t=e.value===m;return(0,Q.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,Q.jsx)(`div`,{children:P?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(I,{className:`h-4 w-4 animate-spin`}),(0,Q.jsx)(`span`,{children:`Loading...`})]}):O?(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Failed to load integrations. Please try again.`}):o?N.length===0?(0,Q.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,Q.jsx)(Oe,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,Q.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:L}),(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:R})]}):(0,Q.jsx)(`div`,{className:`space-y-2`,children:N.map(e=>(0,Q.jsx)(st,{platformAssistantId:w??o.id,providerKey:e.provider_key,displayName:e.display_name??e.provider_key,description:e.description,logoUrl:e.logo_url,connection:$(A,e.provider_key),platformGate:a,onConfigure:()=>x(e.provider_key)},e.provider_key))}):(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No assistant found. Hatch an assistant to connect integrations.`})}),z&&o&&(0,Q.jsx)(at,{assistantId:o.id,platformAssistantId:w??o.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]=c(),n=Ft(e.get(`tab`));return(0,Q.jsx)(`div`,{className:`space-y-6`,children:(0,Q.jsxs)(H.Root,{value:n,onValueChange:n=>{let r=Ft(n),i=new URLSearchParams(e);r===`mcp`?i.set(`tab`,`mcp`):i.delete(`tab`),t(i,{replace:!0})},children:[(0,Q.jsxs)(H.List,{children:[(0,Q.jsx)(H.Trigger,{value:`oauth`,children:`OAuth`}),(0,Q.jsx)(H.Trigger,{value:`mcp`,children:`MCP`})]}),(0,Q.jsx)(H.Panel,{value:`oauth`,className:`pt-4`,children:(0,Q.jsx)(Z.Suspense,{children:(0,Q.jsx)(It,{})})}),(0,Q.jsx)(H.Panel,{value:`mcp`,className:`pt-4`,children:(0,Q.jsx)(jt,{})})]})})}export{Lt as IntegrationsPage};
@@ -0,0 +1 @@
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{i as n,n as r,u as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./cn-C36Yvcac.js";import{t as s}from"./typography-D5f7kt80.js";import"./src-DZbMXyC2.js";import{t as c}from"./assistant-identity-store-CX03CK8q.js";import{c as l}from"./routes-BbeIx_F9.js";import{t as u}from"./assistant-feature-flag-store-DRERrNOn.js";import{_r as d,kn as f}from"./index-Cd6Xm6j5.js";import{t as p}from"./page-shell-DhRqqQYA.js";import{t as m}from"./plugins-surface-z3RTZS4H.js";var h=e(t(),1),g=a(),_=[{label:`Identity`,to:l.identity},{label:`Skills`,to:l.skills.root},{label:`Workspace`,to:l.workspace},{label:`Contacts`,to:l.contacts.root}],v={label:`Plugins`,to:l.plugins},y={label:`Channels`,to:l.channels};function b(){let e=c.use.name(),t=m(),a=u.use.channelTrustFloors(),{pathname:l}=i(),b=d(),x=f.use.setTopBarCenter(),S=t?[_[0],v,..._.slice(1)]:_,C=a?[...S,y]:S;return(0,h.useEffect)(()=>(x(b?(0,g.jsxs)(s,{variant:`body-medium-default`,className:`truncate text-[var(--content-secondary)]`,children:[`About `,e||`Assistant`]}):null),()=>{x(null)}),[b,e,x]),(0,g.jsxs)(p,{children:[(0,g.jsxs)(`h1`,{className:`mb-4 shrink-0 text-title-large text-[var(--content-default)] max-md:hidden`,children:[`About `,e||`Assistant`]}),(0,g.jsx)(`nav`,{className:`mb-4 flex shrink-0 items-center overflow-x-auto border-b border-[var(--border-base)]`,style:{scrollbarWidth:`none`,WebkitOverflowScrolling:`touch`},"aria-label":`About assistant sections`,children:C.map(({label:e,to:t})=>{let n=l===t||l.startsWith(t+`/`);return(0,g.jsx)(r,{to:t,className:o(`relative -mb-px inline-flex cursor-pointer items-center gap-1.5 border-b-2 border-transparent bg-transparent px-2.5 py-[7px]`,`text-body-medium-default whitespace-nowrap`,`text-[var(--content-secondary)] transition-colors`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-0`,`hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,n&&`border-[var(--border-active)] text-[var(--primary-active)]`,n&&`hover:bg-transparent`),children:e},t)})}),(0,g.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:(0,g.jsx)(n,{})})]})}export{b as IntelligenceLayout};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-IRfcSUxS.js";var t=e(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),n=e(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]);export{t as n,n as t};
1
+ import{t as e}from"./createLucideIcon-IRfcSUxS.js";var t=e(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]);export{t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D1p5nVKJ.js";import{r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{t as a}from"./card-Bv5O5juh.js";import{t as o}from"./x-CwzRJv9J.js";import{t as s}from"./notice-Dh3mnM_U.js";import{t as c}from"./shortcut-keys-DKqAVRjB.js";import{t as l}from"./is-electron-LEymSS4C.js";import{o as u}from"./routes-iUGoIqW2.js";import{Di as d}from"./index-CoobbyzR.js";var f=e(t(),1);async function p(){if(!l())return[];let e=window.vellum;return e?.hotkeys?e.hotkeys.get():[]}async function m(e,t){if(!l())return;let n=window.vellum;n?.hotkeys&&await n.hotkeys.set(e,t)}function h(e){if(!l())return()=>{};let t=window.vellum;return t?.hotkeys?t.hotkeys.onChange(e):()=>{}}var g={ArrowUp:`Up`,ArrowDown:`Down`,ArrowLeft:`Left`,ArrowRight:`Right`,Enter:`Return`,NumpadEnter:`Return`,Space:`Space`,Tab:`Tab`,Escape:`Escape`,Backspace:`Backspace`,Delete:`Delete`,Insert:`Insert`,Home:`Home`,End:`End`,PageUp:`PageUp`,PageDown:`PageDown`,Minus:`-`,Equal:`=`,BracketLeft:`[`,BracketRight:`]`,Backslash:`\\`,Semicolon:`;`,Quote:`'`,Backquote:"`",Comma:`,`,Period:`.`,Slash:`/`},_=new Set([`MetaLeft`,`MetaRight`,`ControlLeft`,`ControlRight`,`AltLeft`,`AltRight`,`ShiftLeft`,`ShiftRight`]),v=e=>{let t=e.code;return _.has(t)?null:/^Key[A-Z]$/.test(t)?t.slice(3):/^Digit[0-9]$/.test(t)?t.slice(5):/^Numpad[0-9]$/.test(t)?`num${t.slice(6)}`:/^F[0-9]{1,2}$/.test(t)?t:g[t]??null},y=e=>{let t=v(e);if(t===null)return null;let n=[];return e.metaKey&&n.push(`CmdOrCtrl`),e.ctrlKey&&n.push(`Control`),e.altKey&&n.push(`Alt`),e.shiftKey&&n.push(`Shift`),[...n,t].join(`+`)},b=(e,t,n)=>n===``?null:e.find(e=>e.key!==t&&e.accelerator===n)??null,x=i(),S=[{scope:`global`,title:`Global shortcuts`,description:`Work anywhere, even when Vellum is in the background.`},{scope:`menu`,title:`App shortcuts`,description:`Work while a Vellum window is focused.`}];function C({hotkey:e,recording:t,conflictLabel:r,onStartRecording:i,onCancelRecording:a,onReset:s,onRemove:l}){let u=e.accelerator===``,f=e.override!==null;return(0,x.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-2`,children:[(0,x.jsxs)(`div`,{className:`min-w-0`,children:[(0,x.jsx)(`div`,{className:`truncate text-body-medium-lighter text-[var(--content-default)]`,children:e.label}),r!==null&&(0,x.jsxs)(`div`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:[`Already used by `,r]})]}),(0,x.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[t?(0,x.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Recording… press a shortcut, or Esc to cancel`}):u?(0,x.jsx)(`span`,{className:`text-body-small-default italic text-[var(--content-disabled)]`,children:`Disabled`}):(0,x.jsx)(c,{accelerator:e.accelerator}),t?(0,x.jsx)(n,{variant:`ghost`,size:`compact`,onClick:a,children:`Cancel`}):(0,x.jsx)(n,{variant:`outlined`,size:`compact`,onClick:i,"aria-label":`Record shortcut for ${e.label}`,children:`Record`}),(0,x.jsx)(n,{variant:`ghost`,size:`compact`,disabled:!f,leftIcon:(0,x.jsx)(d,{className:`h-3.5 w-3.5`}),onClick:s,"aria-label":`Reset ${e.label} to default`}),(0,x.jsx)(n,{variant:`ghost`,size:`compact`,disabled:u,leftIcon:(0,x.jsx)(o,{className:`h-3.5 w-3.5`}),onClick:l,"aria-label":`Remove ${e.label} binding`})]})]})}function w(){let[e,t]=(0,f.useState)([]),[n,i]=(0,f.useState)(null),[o,c]=(0,f.useState)(null),d=(0,f.useCallback)(()=>{p().then(t)},[]);(0,f.useEffect)(()=>(d(),h(t)),[d]);let g=(0,f.useCallback)(()=>{i(null),c(null)},[]);(0,f.useEffect)(()=>{if(n===null)return;let t=t=>{if(t.preventDefault(),t.stopPropagation(),t.code===`Escape`){g();return}let r=y(t);if(r===null)return;let i=b(e,n,r);if(i!==null){c({key:n,label:i.label});return}m(n,r).then(d),g()};return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[n,e,d,g]);let _=(0,f.useCallback)(e=>{c(null),i(e)},[]),v=(0,f.useCallback)(t=>{let n=b(e,t,e.find(e=>e.key===t)?.defaultAccelerator??``);if(n!==null){i(null),c({key:t,label:n.label});return}g(),m(t,null).then(d)},[e,d,g]),w=(0,f.useCallback)(e=>{g(),m(e,``).then(d)},[d,g]),T=(0,f.useMemo)(()=>S.map(t=>({...t,commands:e.filter(e=>e.rebindable&&e.scope===t.scope)})).filter(e=>e.commands.length>0),[e]);return l()?(0,x.jsxs)(`div`,{className:`space-y-4`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Keyboard Shortcuts`}),(0,x.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:`Customize the shortcuts for Vellum's commands.`})]}),o!==null&&(0,x.jsxs)(s,{tone:`warning`,children:[`That shortcut is already used by `,o.label,`.`,` `,n===null?`Remove or change that binding before resetting.`:`Pick a different combination, or press Esc to cancel.`]}),T.map(e=>(0,x.jsxs)(a,{bordered:!0,children:[(0,x.jsxs)(`div`,{className:`mb-2`,children:[(0,x.jsx)(`div`,{className:`text-body-medium-emphasised text-[var(--content-default)]`,children:e.title}),(0,x.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:e.description})]}),(0,x.jsx)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:e.commands.map(e=>(0,x.jsx)(C,{hotkey:e,recording:n===e.key,conflictLabel:o!==null&&o.key===e.key?o.label:null,onStartRecording:()=>_(e.key),onCancelRecording:g,onReset:()=>v(e.key),onRemove:()=>w(e.key)},e.key))})]},e.scope))]}):(0,x.jsx)(r,{replace:!0,to:u.settings.general})}export{w as KeyboardShortcutsPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{t as a}from"./card-Bv5O5juh.js";import{t as o}from"./x-CkSVp1Ok.js";import{t as s}from"./notice-DkcNAP8O.js";import{t as c}from"./shortcut-keys-B2EE-634.js";import{t as l}from"./is-electron-y5bNUVyG.js";import{c as u}from"./routes-BbeIx_F9.js";import{Mi as d}from"./index-Cd6Xm6j5.js";var f=e(t(),1);async function p(){if(!l())return[];let e=window.vellum;return e?.hotkeys?e.hotkeys.get():[]}async function m(e,t){if(!l())return;let n=window.vellum;n?.hotkeys&&await n.hotkeys.set(e,t)}function h(e){if(!l())return()=>{};let t=window.vellum;return t?.hotkeys?t.hotkeys.onChange(e):()=>{}}var g={ArrowUp:`Up`,ArrowDown:`Down`,ArrowLeft:`Left`,ArrowRight:`Right`,Enter:`Return`,NumpadEnter:`Return`,Space:`Space`,Tab:`Tab`,Escape:`Escape`,Backspace:`Backspace`,Delete:`Delete`,Insert:`Insert`,Home:`Home`,End:`End`,PageUp:`PageUp`,PageDown:`PageDown`,Minus:`-`,Equal:`=`,BracketLeft:`[`,BracketRight:`]`,Backslash:`\\`,Semicolon:`;`,Quote:`'`,Backquote:"`",Comma:`,`,Period:`.`,Slash:`/`},_=new Set([`MetaLeft`,`MetaRight`,`ControlLeft`,`ControlRight`,`AltLeft`,`AltRight`,`ShiftLeft`,`ShiftRight`]),v=e=>{let t=e.code;return _.has(t)?null:/^Key[A-Z]$/.test(t)?t.slice(3):/^Digit[0-9]$/.test(t)?t.slice(5):/^Numpad[0-9]$/.test(t)?`num${t.slice(6)}`:/^F[0-9]{1,2}$/.test(t)?t:g[t]??null},y=e=>{let t=v(e);if(t===null)return null;let n=[];return e.metaKey&&n.push(`CmdOrCtrl`),e.ctrlKey&&n.push(`Control`),e.altKey&&n.push(`Alt`),e.shiftKey&&n.push(`Shift`),[...n,t].join(`+`)},b=(e,t,n)=>n===``?null:e.find(e=>e.key!==t&&e.accelerator===n)??null,x=i(),S=[{scope:`global`,title:`Global shortcuts`,description:`Work anywhere, even when Vellum is in the background.`},{scope:`menu`,title:`App shortcuts`,description:`Work while a Vellum window is focused.`}];function C({hotkey:e,recording:t,conflictLabel:r,onStartRecording:i,onCancelRecording:a,onReset:s,onRemove:l}){let u=e.accelerator===``,f=e.override!==null;return(0,x.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-2`,children:[(0,x.jsxs)(`div`,{className:`min-w-0`,children:[(0,x.jsx)(`div`,{className:`truncate text-body-medium-lighter text-[var(--content-default)]`,children:e.label}),r!==null&&(0,x.jsxs)(`div`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:[`Already used by `,r]})]}),(0,x.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[t?(0,x.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Recording… press a shortcut, or Esc to cancel`}):u?(0,x.jsx)(`span`,{className:`text-body-small-default italic text-[var(--content-disabled)]`,children:`Disabled`}):(0,x.jsx)(c,{accelerator:e.accelerator}),t?(0,x.jsx)(n,{variant:`ghost`,size:`compact`,onClick:a,children:`Cancel`}):(0,x.jsx)(n,{variant:`outlined`,size:`compact`,onClick:i,"aria-label":`Record shortcut for ${e.label}`,children:`Record`}),(0,x.jsx)(n,{variant:`ghost`,size:`compact`,disabled:!f,leftIcon:(0,x.jsx)(d,{className:`h-3.5 w-3.5`}),onClick:s,"aria-label":`Reset ${e.label} to default`}),(0,x.jsx)(n,{variant:`ghost`,size:`compact`,disabled:u,leftIcon:(0,x.jsx)(o,{className:`h-3.5 w-3.5`}),onClick:l,"aria-label":`Remove ${e.label} binding`})]})]})}function w(){let[e,t]=(0,f.useState)([]),[n,i]=(0,f.useState)(null),[o,c]=(0,f.useState)(null),d=(0,f.useCallback)(()=>{p().then(t)},[]);(0,f.useEffect)(()=>(d(),h(t)),[d]);let g=(0,f.useCallback)(()=>{i(null),c(null)},[]);(0,f.useEffect)(()=>{if(n===null)return;let t=t=>{if(t.preventDefault(),t.stopPropagation(),t.code===`Escape`){g();return}let r=y(t);if(r===null)return;let i=b(e,n,r);if(i!==null){c({key:n,label:i.label});return}m(n,r).then(d),g()};return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[n,e,d,g]);let _=(0,f.useCallback)(e=>{c(null),i(e)},[]),v=(0,f.useCallback)(t=>{let n=b(e,t,e.find(e=>e.key===t)?.defaultAccelerator??``);if(n!==null){i(null),c({key:t,label:n.label});return}g(),m(t,null).then(d)},[e,d,g]),w=(0,f.useCallback)(e=>{g(),m(e,``).then(d)},[d,g]),T=(0,f.useMemo)(()=>S.map(t=>({...t,commands:e.filter(e=>e.rebindable&&e.scope===t.scope)})).filter(e=>e.commands.length>0),[e]);return l()?(0,x.jsxs)(`div`,{className:`space-y-4`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Keyboard Shortcuts`}),(0,x.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:`Customize the shortcuts for Vellum's commands.`})]}),o!==null&&(0,x.jsxs)(s,{tone:`warning`,children:[`That shortcut is already used by `,o.label,`.`,` `,n===null?`Remove or change that binding before resetting.`:`Pick a different combination, or press Esc to cancel.`]}),T.map(e=>(0,x.jsxs)(a,{bordered:!0,children:[(0,x.jsxs)(`div`,{className:`mb-2`,children:[(0,x.jsx)(`div`,{className:`text-body-medium-emphasised text-[var(--content-default)]`,children:e.title}),(0,x.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:e.description})]}),(0,x.jsx)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:e.commands.map(e=>(0,x.jsx)(C,{hotkey:e,recording:n===e.key,conflictLabel:o!==null&&o.key===e.key?o.label:null,onStartRecording:()=>_(e.key),onCancelRecording:g,onReset:()=>v(e.key),onRemove:()=>w(e.key)},e.key))})]},e.scope))]}):(0,x.jsx)(r,{replace:!0,to:u.settings.general})}export{w as KeyboardShortcutsPage};
@@ -0,0 +1 @@
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{d as n,p as r,u as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./loader-circle-Cz7opInR.js";import"./src-DZbMXyC2.js";import{n as s}from"./toast-xTp-xwYL.js";import{n as c}from"./sdk.gen-BwnFjFcp.js";import{c as l}from"./routes-BbeIx_F9.js";import{o as u}from"./viewer-store-B8-Qnbx9.js";import{Et as d,Ut as f,Wt as p,_r as m,r as h,vr as g}from"./index-Cd6Xm6j5.js";import{t as _}from"./use-active-assistant-id-xuY3XyDA.js";import{t as v}from"./deploy-dialogs-hO4uNCg-.js";import{t as y}from"./use-edge-swipe-back-gBVYQBH0.js";var b=e(t(),1),x=a();function S({enabled:e}){return e?(0,x.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-y-0 left-0 z-10`,style:{width:20}}):null}function C(){let{appId:e}=r(),t=_(),a=n(),{pathname:C}=i(),w=m(),T=f.use.isDeploying(),E=(0,b.useRef)(null),[D,O]=(0,b.useState)(null),[k,A]=(0,b.useState)(null),[j,M]=(0,b.useState)(!1),N=(0,b.useRef)(null);(0,b.useEffect)(()=>{if(e)return N.current=e,O(null),A(null),c({path:{assistant_id:t,id:e},throwOnError:!0}).then(({data:n})=>{N.current===e&&(u(t,n.appId,n.html),O({appId:n.appId,dirName:n.dirName,name:n.name,html:n.html}))}).catch(t=>{N.current===e&&A(t instanceof Error?t.message:`Failed to open app`)}),()=>{N.current=null}},[t,e]);let P=(0,b.useCallback)(()=>{a(l.library.root)},[a]);y({containerRef:E,onBack:P,enabled:w,navKey:C});let F=h(),I=(0,b.useCallback)(()=>{D&&F(D)},[D,F]),L=(0,b.useCallback)(async()=>{if(!(!D||j)){M(!0);try{await p(t,D.appId,D.name),s.success(`App exported`,{description:`${D.name}.vellum`})}catch(e){s.error(`Failed to share app`,{description:e instanceof Error?e.message:void 0})}finally{M(!1)}}},[t,D,j]),R=(0,b.useCallback)(()=>{D&&f.getState().deployApp(t,D.appId,D.name,D.html)},[t,D]),z=(0,b.useCallback)(e=>{g(a,{prompt:e})},[a]);return e?k?(0,x.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4`,children:[(0,x.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:k}),(0,x.jsx)(`button`,{type:`button`,onClick:P,className:`text-body-medium-default text-[var(--primary-base)] underline`,children:`Back to Library`})]}):D?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{ref:E,className:`relative flex min-h-0 flex-1 flex-col`,children:[(0,x.jsx)(S,{enabled:w}),(0,x.jsx)(d,{appId:D.appId,appName:D.name,html:D.html,assistantId:t,onClose:P,onEdit:I,onShare:L,isSharing:j,onDeploy:R,isDeploying:T,enableFullscreen:!0})]}),(0,x.jsx)(v,{assistantId:t,onStartConversation:z})]}):(0,x.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,x.jsx)(o,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}):null}export{C as LibraryDetailPage};
@@ -0,0 +1 @@
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{d as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./jsx-runtime-CVSDxk6A.js";import{t as s}from"./menu-Dy5QbnTj.js";import{t as c}from"./file-text-CYJz-GvF.js";import{t as l}from"./globe-4qSOWE2N.js";import"./src-DZbMXyC2.js";import{t as u}from"./input-CoUmPnRU.js";import{n as d,t as f}from"./panel-item-CouW2A55.js";import{n as p}from"./toast-xTp-xwYL.js";import{s as m}from"./sdk.gen-BwnFjFcp.js";import{E as h,n as g,t as _}from"./react-query.gen-C6wVk6Rw.js";import{c as v}from"./routes-BbeIx_F9.js";import{a as y}from"./viewer-store-B8-Qnbx9.js";import{t as b}from"./misc-BYQPh7vS.js";import{Ai as x,Ct as S,Li as C,Ri as w,St as T,Ut as E,Wt as D,X as O,_i as k,_r as A,dn as j,ea as M,fa as N,ka as P,vi as F,vr as I}from"./index-Cd6Xm6j5.js";import{t as L}from"./use-active-assistant-id-xuY3XyDA.js";import{t as R}from"./deploy-dialogs-hO4uNCg-.js";import{t as z}from"./page-shell-DhRqqQYA.js";import{t as B}from"./format-date-CghpPTDc.js";var V=e(t(),1),H=o();function U(e){return e===1?`1 word`:`${e} words`}function W({document:e,onOpen:t}){return(0,H.jsxs)(`div`,{className:`group relative flex flex-col gap-2`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>t(e.surfaceId),className:b(`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,H.jsx)(c,{size:34,className:`text-[var(--content-tertiary)]`}),(0,H.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:U(e.wordCount)})]}),(0,H.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,H.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.title}),(0,H.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:B(new Date(e.updatedAt))})]})]})}function G({fileInputRef:e,isImporting:t,onImportBundle:r,onNewConversation:i}){return(0,H.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4 py-24`,children:[(0,H.jsx)(`input`,{ref:e,type:`file`,accept:`.vellum`,className:`hidden`,onChange:r}),(0,H.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--surface-base)]`,children:(0,H.jsx)(M,{size:32,className:`text-[var(--content-tertiary)]`})}),(0,H.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:`Your library is empty`}),(0,H.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,H.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[i?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(n,{variant:`primary`,size:`regular`,onClick:i,children:`New Conversation`}),(0,H.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:`or`})]}):null,(0,H.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>e.current?.click(),disabled:t,children:[t?(0,H.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,H.jsx)(k,{size:14}),(0,H.jsx)(`span`,{className:`ml-1.5`,children:`Import .vellum File`})]})]})]})}function K({app:e,assistantId:t,isPinned:n,onOpen:r,onPin:i,onDelete:a,onDeploy:o,justImported:s,onAnimationEnd:c}){let[l,u]=(0,V.useState)(!1),d=(0,V.useCallback)(()=>y(t,e.id),[t,e.id]),f=(0,V.useCallback)(async()=>{if(!l){u(!0);try{await D(t,e.id,e.name),p.success(`App exported`,{description:`${e.name}.vellum`})}catch(e){p.error(`Failed to share app`,{description:e instanceof Error?e.message:void 0})}finally{u(!1)}}},[t,e.id,e.name,l]),[m,h]=(0,V.useState)(!1),g=A();return(0,H.jsxs)(`div`,{className:b(`group relative flex flex-col gap-2`,s&&`animate-[card-entrance_400ms_ease-out]`),onAnimationEnd:s?c:void 0,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),className:b(`relative w-full cursor-pointer overflow-hidden rounded-xl`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`),children:(0,H.jsx)(O,{name:e.name,icon:e.icon,loadHtml:d})}),(0,H.jsx)(`div`,{className:b(`absolute right-2 top-2 z-20 transition-opacity`,`max-md:opacity-100`,`md:group-hover:opacity-100 md:group-focus-within:opacity-100`,m?`opacity-100`:`md:opacity-0`),children:(0,H.jsx)(q,{appName:e.name,isPinned:n,open:m,onOpenChange:h,onPin:()=>i(e),onDelete:a?()=>a(e):void 0,onShare:f,onDeploy:o,isMobile:g})}),(0,H.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,H.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.name}),(0,H.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:B(new Date(e.createdAt))})]})]})}function q({appName:e,isPinned:t,open:r,onOpenChange:i,onPin:a,onDelete:o,onShare:c,onDeploy:u,isMobile:p}){return p?(0,H.jsxs)(d.Root,{open:r,onOpenChange:i,children:[(0,H.jsx)(d.Trigger,{asChild:!0,children:(0,H.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,H.jsx)(N,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,H.jsxs)(d.Content,{children:[(0,H.jsx)(d.Header,{className:`sr-only`,children:(0,H.jsx)(d.Title,{children:e})}),(0,H.jsxs)(d.Body,{className:`pt-0`,children:[(0,H.jsx)(f,{icon:t?w:C,label:t?`Unpin`:`Pin`,onSelect:()=>{i(!1),a()}}),c?(0,H.jsx)(f,{icon:P,label:(0,H.jsxs)(`span`,{className:`flex flex-col gap-0.5 overflow-visible whitespace-normal`,children:[(0,H.jsx)(`span`,{children:`Share`}),(0,H.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Export as .vellum file`})]}),onSelect:()=>{i(!1),c()}}):null,u?(0,H.jsx)(f,{icon:l,label:(0,H.jsxs)(`span`,{className:`flex flex-col gap-0.5 overflow-visible whitespace-normal`,children:[(0,H.jsx)(`span`,{children:`Deploy to Vercel`}),(0,H.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Publish as a static page`})]}),onSelect:()=>{i(!1),u()}}):null,o?(0,H.jsx)(f,{icon:F,label:`Delete`,onSelect:()=>{i(!1),o()}}):null]})]})]}):(0,H.jsxs)(s.Root,{open:r,onOpenChange:i,children:[(0,H.jsx)(s.Trigger,{asChild:!0,children:(0,H.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,H.jsx)(N,{}),"aria-label":`App actions`,onClick:e=>e.stopPropagation()})}),(0,H.jsxs)(s.Content,{align:`end`,sideOffset:4,children:[(0,H.jsx)(s.Item,{leftIcon:t?(0,H.jsx)(w,{size:14}):(0,H.jsx)(C,{size:14}),onSelect:()=>a(),className:`whitespace-nowrap`,children:t?`Unpin`:`Pin`}),c?(0,H.jsx)(s.Item,{leftIcon:(0,H.jsx)(P,{size:14}),onSelect:()=>c(),className:`whitespace-nowrap`,children:`Share`}):null,u?(0,H.jsx)(s.Item,{leftIcon:(0,H.jsx)(l,{size:14}),onSelect:()=>u(),className:`whitespace-nowrap`,children:`Deploy to Vercel`}):null,o?(0,H.jsx)(s.Item,{leftIcon:(0,H.jsx)(F,{size:14,className:`text-red-600`}),onSelect:()=>o(),className:`whitespace-nowrap text-red-600 data-[highlighted]:text-red-700`,children:`Delete`}):null]})]})}function J({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,H.jsxs)(`section`,{children:[(0,H.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:e}),(0,H.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:t.map(e=>(0,H.jsx)(K,{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 Y=(e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt;function X(e){let t=j.use.pinnedAppIds(),{data:n=[],isLoading:r,error:i}=a({..._({path:{assistant_id:e}}),select:e=>e.apps}),{data:o=[],isLoading:s,error:c}=a({...h({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,V.useState)(``),p=(0,V.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,V.useMemo)(()=>p.filter(e=>t.has(e.id)).sort(Y),[p,t]),recentApps:(0,V.useMemo)(()=>p.filter(e=>!t.has(e.id)).sort(Y),[p,t]),filteredDocuments:(0,V.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 Z(e,t){let{data:n,error:r,response:i}=await m({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 Q({assistantId:e,assistantName:t,title:r,onNewConversation:a,onOpenDocument:o,onOpenApp:s}){let c=i(),l=j.use.togglePin(),d=j.use.pinnedAppIds(),f=E.use.isDeploying(),{apps:m,documents:h,filteredApps:_,pinnedApps:v,recentApps:b,filteredDocuments:C,searchText:w,setSearchText:D,loading:O,error:A}=X(e),{pendingDelete:M,isDeleting:N,requestDelete:P,confirmDelete:F,cancelDelete:I}=T(e),L=(0,V.useRef)(null),[z,B]=(0,V.useState)(!1),U=(0,V.useCallback)(async t=>{let n=t.target.files?.[0];if(!(!n||z)){B(!0);try{let t=await Z(e,n);await c.invalidateQueries({queryKey:g({path:{assistant_id:e}})}),p.success(t.name+` imported`),s(t.appId)}catch(e){p.error(e instanceof Error?e.message:`Failed to import app`)}finally{B(!1),L.current&&(L.current.value=``)}}},[e,z,c,s]),K=(0,V.useCallback)(async t=>{if(f)return;let n=m.find(e=>e.id===t)?.name??`this app`;try{let r=await y(e,t);E.getState().deployApp(e,t,n,r)}catch{E.getState().deployApp(e,t,n,``)}},[e,f,m]),q=(0,V.useCallback)(e=>l(e),[l]);return O?(0,H.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,H.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`})}):A?(0,H.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4`,children:[(0,H.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:A}),(0,H.jsx)(`button`,{type:`button`,className:`rounded-lg bg-[var(--primary-base)] px-4 py-2 text-body-medium-default text-[var(--content-inset)] transition-colors hover:bg-[var(--primary-hover)]`,onClick:()=>window.location.reload(),children:`Retry`})]}):m.length===0&&h.length===0?(0,H.jsx)(G,{fileInputRef:L,isImporting:z,onImportBundle:U,onNewConversation:a?()=>a():void 0}):(0,H.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`mb-4 flex shrink-0 items-center justify-between gap-4`,children:[r?(0,H.jsx)(`h1`,{className:`text-title-large text-[var(--content-default)]`,children:r}):(0,H.jsx)(`span`,{}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`input`,{ref:L,type:`file`,accept:`.vellum`,className:`hidden`,onChange:U}),(0,H.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>L.current?.click(),disabled:z,children:[z?(0,H.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,H.jsx)(k,{size:14}),(0,H.jsx)(`span`,{className:`ml-1.5`,children:`Import`})]})]})]}),(0,H.jsx)(`div`,{className:`mb-6 shrink-0`,children:(0,H.jsx)(u,{fullWidth:!0,type:`text`,placeholder:`Search your library`,value:w,onChange:e=>D(e.target.value),leftIcon:(0,H.jsx)(x,{size:16})})}),(0,H.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:_.length===0&&C.length===0?(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16`,children:[(0,H.jsx)(x,{size:32,className:`mb-4 text-[var(--content-tertiary)]`}),(0,H.jsxs)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No apps or documents matched “`,w,`”`]})]}):(0,H.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,H.jsx)(J,{title:`Pinned`,apps:v,assistantId:e,pinnedAppIds:d,onOpen:s,onPin:q,onDelete:P,onDeploy:K}),(0,H.jsx)(J,{title:`Recents`,apps:b,assistantId:e,pinnedAppIds:d,onOpen:s,onPin:q,onDelete:P,onDeploy:K}),C.length>0?(0,H.jsxs)(`section`,{children:[(0,H.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:`Documents`}),(0,H.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:C.map(e=>(0,H.jsx)(W,{document:e,onOpen:e=>{o&&o(e)}},e.surfaceId))})]}):null]})}),(0,H.jsx)(R,{assistantId:e,assistantName:t,onStartConversation:a}),(0,H.jsx)(S,{app:M,isDeleting:N,onConfirm:F,onCancel:I})]})}function $(){let e=L(),t=r();return(0,H.jsx)(z,{children:(0,H.jsx)(Q,{assistantId:e,title:`Library`,onNewConversation:(0,V.useCallback)(e=>{I(t,{prompt:e})},[t]),onOpenDocument:(0,V.useCallback)(e=>{t(v.document(e))},[t]),onOpenApp:(0,V.useCallback)(e=>{t(v.library.app(e))},[t])})})}export{$ as LibraryPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{a as r,t as i}from"./cn-C36Yvcac.js";import{t as a}from"./chevron-right-DqqmezXC.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./dist-DSnPnoEz.js";var p=e(t(),1),m=n();function h(e){let t=e+`CollectionProvider`,[n,i]=d(t),[a,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:n}=e,r=p.useRef(null),i=p.useRef(new Map).current;return(0,m.jsx)(a,{scope:t,itemMap:i,collectionRef:r,children:n})};s.displayName=t;let l=e+`CollectionSlot`,u=c(l),f=p.forwardRef((e,t)=>{let{scope:n,children:i}=e;return(0,m.jsx)(u,{ref:r(t,o(l,n).collectionRef),children:i})});f.displayName=l;let h=e+`CollectionItemSlot`,g=`data-radix-collection-item`,_=c(h),v=p.forwardRef((e,t)=>{let{scope:n,children:i,...a}=e,s=p.useRef(null),c=r(t,s),l=o(h,n);return p.useEffect(()=>(l.itemMap.set(s,{ref:s,...a}),()=>void l.itemMap.delete(s))),(0,m.jsx)(_,{[g]:``,ref:c,children:i})});v.displayName=h;function y(t){let n=o(e+`CollectionConsumer`,t);return p.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${g}]`));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:f,ItemSlot:v},y,i]}var g=p.useId||(()=>void 0),_=0;function v(e){let[t,n]=p.useState(g());return o(()=>{e||n(e=>e??String(_++))},[e]),e||(t?`radix-${t}`:``)}function y(e){let t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...e)=>t.current?.(...e),[])}var b=p.createContext(void 0);function x(e){let t=p.useContext(b);return e||t||`ltr`}var S=`rovingFocusGroup.onEntryFocus`,ee={bubbles:!1,cancelable:!0},C=`RovingFocusGroup`,[w,T,E]=h(C),[D,O]=d(C,[E]),[k,A]=D(C),j=p.forwardRef((e,t)=>(0,m.jsx)(w.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,m.jsx)(w.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,m.jsx)(M,{...e,ref:t})})}));j.displayName=C;var M=p.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:i,loop:a=!1,dir:o,currentTabStopId:c,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:d,onEntryFocus:h,preventScrollOnEntryFocus:g=!1,..._}=e,v=p.useRef(null),b=r(t,v),w=x(o),[E,D]=s({prop:c,defaultProp:u??null,onChange:d,caller:C}),[O,A]=p.useState(!1),j=y(h),M=T(n),N=p.useRef(!1),[P,F]=p.useState(0);return p.useEffect(()=>{let e=v.current;if(e)return e.addEventListener(S,j),()=>e.removeEventListener(S,j)},[j]),(0,m.jsx)(k,{scope:n,orientation:i,dir:w,loop:a,currentTabStopId:E,onItemFocus:p.useCallback(e=>D(e),[D]),onItemShiftTab:p.useCallback(()=>A(!0),[]),onFocusableItemAdd:p.useCallback(()=>F(e=>e+1),[]),onFocusableItemRemove:p.useCallback(()=>F(e=>e-1),[]),children:(0,m.jsx)(f.div,{tabIndex:O||P===0?-1:0,"data-orientation":i,..._,ref:b,style:{outline:`none`,...e.style},onMouseDown:l(e.onMouseDown,()=>{N.current=!0}),onFocus:l(e.onFocus,e=>{let t=!N.current;if(e.target===e.currentTarget&&t&&!O){let t=new CustomEvent(S,ee);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=M().filter(e=>e.focusable);I([e.find(e=>e.active),e.find(e=>e.id===E),...e].filter(Boolean).map(e=>e.ref.current),g)}}N.current=!1}),onBlur:l(e.onBlur,()=>A(!1))})})}),N=`RovingFocusGroupItem`,P=p.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...s}=e,c=v(),u=a||c,d=A(N,n),h=d.currentTabStopId===u,g=T(n),{onFocusableItemAdd:_,onFocusableItemRemove:y,currentTabStopId:b}=d;return p.useEffect(()=>{if(r)return _(),()=>y()},[r,_,y]),(0,m.jsx)(w.ItemSlot,{scope:n,id:u,focusable:r,active:i,children:(0,m.jsx)(f.span,{tabIndex:h?0:-1,"data-orientation":d.orientation,...s,ref:t,onMouseDown:l(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:l(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:l(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ne(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=g().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?L(n,r+1):n.slice(r+1)}setTimeout(()=>I(n))}}),children:typeof o==`function`?o({isCurrentTabStop:h,hasTabStop:b!=null}):o})})});P.displayName=N;var F={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function te(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function ne(e,t,n){let r=te(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return F[r]}function I(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function L(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var R=j,z=P,B=`Tabs`,[V,re]=d(B,[O]),H=O(),[ie,U]=V(B),W=p.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:c,activationMode:l=`automatic`,...u}=e,d=x(c),[p,h]=s({prop:r,onChange:i,defaultProp:a??``,caller:B});return(0,m.jsx)(ie,{scope:n,baseId:v(),value:p,onValueChange:h,orientation:o,dir:d,activationMode:l,children:(0,m.jsx)(f.div,{dir:d,"data-orientation":o,...u,ref:t})})});W.displayName=B;var G=`TabsList`,K=p.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=U(G,n),o=H(n);return(0,m.jsx)(R,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,m.jsx)(f.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});K.displayName=G;var q=`TabsTrigger`,J=p.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=U(q,n),s=H(n),c=Z(o.baseId,r),u=Q(o.baseId,r),d=r===o.value;return(0,m.jsx)(z,{asChild:!0,...s,focusable:!i,active:d,children:(0,m.jsx)(f.button,{type:`button`,role:`tab`,"aria-selected":d,"aria-controls":u,"data-state":d?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:l(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:l(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:l(e.onFocus,()=>{let e=o.activationMode!==`manual`;!d&&!i&&e&&o.onValueChange(r)})})})});J.displayName=q;var Y=`TabsContent`,X=p.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),d=r===s.value,h=p.useRef(d);return p.useEffect(()=>{let e=requestAnimationFrame(()=>h.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,m.jsx)(u,{present:i||d,children:({present:n})=>(0,m.jsx)(f.div,{"data-state":d?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:h.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 ae=W,oe=K,se=J,ce=X;function le({className:e,ref:t,...n}){return(0,m.jsx)(ae,{ref:t,"data-slot":`tabs`,className:e,...n})}function $({className:e,ref:t,...n}){return(0,m.jsx)(oe,{ref:t,"data-slot":`tabs-list`,className:i(`flex items-center border-b border-[var(--border-base)]`,e),...n})}function ue({className:e,ref:t,...n}){return(0,m.jsx)(se,{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 de({className:e,ref:t,...n}){return(0,m.jsx)(ce,{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 fe={Root:le,List:$,Trigger:ue,Panel:de};function pe({leading:e,title:t,subtitle:n,trailing:r,showChevron:o,selected:s,disabled:c,onClick:l,href:u,contentAriaLabel:d,className:f,ref:p,...h}){let g=!!(l||u),_=o??g,v=(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,m.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:t}),n==null?null:(0,m.jsx)(`span`,{className:`min-w-0 text-label-small-default text-[var(--content-tertiary)]`,children:n})]}),r!=null||_?(0,m.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[r,_?(0,m.jsx)(a,{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,m.jsx)(`a`,{href:u,"aria-label":d,className:i(y,`cursor-pointer`),children:v}):l?(0,m.jsx)(`button`,{type:`button`,onClick:l,disabled:c,"aria-label":d,className:i(y,`cursor-pointer disabled:cursor-not-allowed`),children:v}):(0,m.jsx)(`div`,{className:y,children:v}),(0,m.jsxs)(`div`,{...h,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)]`,g&&!s&&!c&&`hover:bg-[var(--surface-hover)]`,s&&`bg-[var(--surface-active)]`,c&&`opacity-60`,f),children:[e,b]})}export{h as a,v as i,fe as n,x as r,pe as t};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{a as r,t as i}from"./cn-C36Yvcac.js";import{t as a}from"./chevron-right-DqqmezXC.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./dist-BItmZQO6.js";var p=e(t(),1),m=n();function h(e){let t=e+`CollectionProvider`,[n,i]=d(t),[a,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:n}=e,r=p.useRef(null),i=p.useRef(new Map).current;return(0,m.jsx)(a,{scope:t,itemMap:i,collectionRef:r,children:n})};s.displayName=t;let l=e+`CollectionSlot`,u=c(l),f=p.forwardRef((e,t)=>{let{scope:n,children:i}=e;return(0,m.jsx)(u,{ref:r(t,o(l,n).collectionRef),children:i})});f.displayName=l;let h=e+`CollectionItemSlot`,g=`data-radix-collection-item`,_=c(h),v=p.forwardRef((e,t)=>{let{scope:n,children:i,...a}=e,s=p.useRef(null),c=r(t,s),l=o(h,n);return p.useEffect(()=>(l.itemMap.set(s,{ref:s,...a}),()=>void l.itemMap.delete(s))),(0,m.jsx)(_,{[g]:``,ref:c,children:i})});v.displayName=h;function y(t){let n=o(e+`CollectionConsumer`,t);return p.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${g}]`));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:f,ItemSlot:v},y,i]}var g=p.useId||(()=>void 0),_=0;function v(e){let[t,n]=p.useState(g());return o(()=>{e||n(e=>e??String(_++))},[e]),e||(t?`radix-${t}`:``)}function y(e){let t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...e)=>t.current?.(...e),[])}var b=p.createContext(void 0);function x(e){let t=p.useContext(b);return e||t||`ltr`}var S=`rovingFocusGroup.onEntryFocus`,ee={bubbles:!1,cancelable:!0},C=`RovingFocusGroup`,[w,T,E]=h(C),[D,O]=d(C,[E]),[k,A]=D(C),j=p.forwardRef((e,t)=>(0,m.jsx)(w.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,m.jsx)(w.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,m.jsx)(M,{...e,ref:t})})}));j.displayName=C;var M=p.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:i,loop:a=!1,dir:o,currentTabStopId:c,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:d,onEntryFocus:h,preventScrollOnEntryFocus:g=!1,..._}=e,v=p.useRef(null),b=r(t,v),w=x(o),[E,D]=s({prop:c,defaultProp:u??null,onChange:d,caller:C}),[O,A]=p.useState(!1),j=y(h),M=T(n),N=p.useRef(!1),[P,F]=p.useState(0);return p.useEffect(()=>{let e=v.current;if(e)return e.addEventListener(S,j),()=>e.removeEventListener(S,j)},[j]),(0,m.jsx)(k,{scope:n,orientation:i,dir:w,loop:a,currentTabStopId:E,onItemFocus:p.useCallback(e=>D(e),[D]),onItemShiftTab:p.useCallback(()=>A(!0),[]),onFocusableItemAdd:p.useCallback(()=>F(e=>e+1),[]),onFocusableItemRemove:p.useCallback(()=>F(e=>e-1),[]),children:(0,m.jsx)(f.div,{tabIndex:O||P===0?-1:0,"data-orientation":i,..._,ref:b,style:{outline:`none`,...e.style},onMouseDown:l(e.onMouseDown,()=>{N.current=!0}),onFocus:l(e.onFocus,e=>{let t=!N.current;if(e.target===e.currentTarget&&t&&!O){let t=new CustomEvent(S,ee);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=M().filter(e=>e.focusable);I([e.find(e=>e.active),e.find(e=>e.id===E),...e].filter(Boolean).map(e=>e.ref.current),g)}}N.current=!1}),onBlur:l(e.onBlur,()=>A(!1))})})}),N=`RovingFocusGroupItem`,P=p.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...s}=e,c=v(),u=a||c,d=A(N,n),h=d.currentTabStopId===u,g=T(n),{onFocusableItemAdd:_,onFocusableItemRemove:y,currentTabStopId:b}=d;return p.useEffect(()=>{if(r)return _(),()=>y()},[r,_,y]),(0,m.jsx)(w.ItemSlot,{scope:n,id:u,focusable:r,active:i,children:(0,m.jsx)(f.span,{tabIndex:h?0:-1,"data-orientation":d.orientation,...s,ref:t,onMouseDown:l(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:l(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:l(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ne(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=g().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?L(n,r+1):n.slice(r+1)}setTimeout(()=>I(n))}}),children:typeof o==`function`?o({isCurrentTabStop:h,hasTabStop:b!=null}):o})})});P.displayName=N;var F={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function te(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function ne(e,t,n){let r=te(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return F[r]}function I(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function L(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var R=j,z=P,B=`Tabs`,[V,re]=d(B,[O]),H=O(),[ie,U]=V(B),W=p.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:c,activationMode:l=`automatic`,...u}=e,d=x(c),[p,h]=s({prop:r,onChange:i,defaultProp:a??``,caller:B});return(0,m.jsx)(ie,{scope:n,baseId:v(),value:p,onValueChange:h,orientation:o,dir:d,activationMode:l,children:(0,m.jsx)(f.div,{dir:d,"data-orientation":o,...u,ref:t})})});W.displayName=B;var G=`TabsList`,K=p.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=U(G,n),o=H(n);return(0,m.jsx)(R,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,m.jsx)(f.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});K.displayName=G;var q=`TabsTrigger`,J=p.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=U(q,n),s=H(n),c=Z(o.baseId,r),u=Q(o.baseId,r),d=r===o.value;return(0,m.jsx)(z,{asChild:!0,...s,focusable:!i,active:d,children:(0,m.jsx)(f.button,{type:`button`,role:`tab`,"aria-selected":d,"aria-controls":u,"data-state":d?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:l(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:l(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:l(e.onFocus,()=>{let e=o.activationMode!==`manual`;!d&&!i&&e&&o.onValueChange(r)})})})});J.displayName=q;var Y=`TabsContent`,X=p.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),d=r===s.value,h=p.useRef(d);return p.useEffect(()=>{let e=requestAnimationFrame(()=>h.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,m.jsx)(u,{present:i||d,children:({present:n})=>(0,m.jsx)(f.div,{"data-state":d?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:h.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 ae=W,oe=K,se=J,ce=X;function le({className:e,ref:t,...n}){return(0,m.jsx)(ae,{ref:t,"data-slot":`tabs`,className:e,...n})}function $({className:e,ref:t,...n}){return(0,m.jsx)(oe,{ref:t,"data-slot":`tabs-list`,className:i(`flex items-center border-b border-[var(--border-base)]`,e),...n})}function ue({className:e,ref:t,...n}){return(0,m.jsx)(se,{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 de({className:e,ref:t,...n}){return(0,m.jsx)(ce,{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 fe={Root:le,List:$,Trigger:ue,Panel:de};function pe({leading:e,title:t,subtitle:n,trailing:r,showChevron:o,selected:s,disabled:c,onClick:l,href:u,contentAriaLabel:d,className:f,ref:p,...h}){let g=!!(l||u),_=o??g,v=(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,m.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:t}),n==null?null:(0,m.jsx)(`span`,{className:`min-w-0 text-label-small-default text-[var(--content-tertiary)]`,children:n})]}),r!=null||_?(0,m.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[r,_?(0,m.jsx)(a,{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,m.jsx)(`a`,{href:u,"aria-label":d,className:i(y,`cursor-pointer`),children:v}):l?(0,m.jsx)(`button`,{type:`button`,onClick:l,disabled:c,"aria-label":d,className:i(y,`cursor-pointer disabled:cursor-not-allowed`),children:v}):(0,m.jsx)(`div`,{className:y,children:v}),(0,m.jsxs)(`div`,{...h,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)]`,g&&!s&&!c&&`hover:bg-[var(--surface-hover)]`,s&&`bg-[var(--surface-active)]`,c&&`opacity-60`,f),children:[e,b]})}export{h as a,v as i,fe as n,x as r,pe as t};