@vellumai/web 0.11.4-staging.3 → 0.11.4

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 (304) hide show
  1. package/dist/assets/{Trans-BUsRawhS.js → Trans-FBE1EuwL.js} +1 -1
  2. package/dist/assets/{access-Cngxal_O.js → access-D0krXly2.js} +1 -1
  3. package/dist/assets/account-DEWe1CJv.js +1 -0
  4. package/dist/assets/{account-page-IVZcGHZy.js → account-page-Df1VB34_.js} +1 -1
  5. package/dist/assets/{account-shell-DdH2Ze4T.js → account-shell-Dk4m-iaE.js} +1 -1
  6. package/dist/assets/{acp-run-detail-panel-UjpE_MSy.js → acp-run-detail-panel-DsqMAPE4.js} +1 -1
  7. package/dist/assets/{activity-steps-panel-ChM6OAY8.js → activity-steps-panel-C9z9FMmK.js} +1 -1
  8. package/dist/assets/{add-credits-modal-ByR0kDly.js → add-credits-modal-RIAYgbOT.js} +1 -1
  9. package/dist/assets/{ai-page-BmOCqfyq.js → ai-page-CI4LZXTY.js} +1 -1
  10. package/dist/assets/api-BjYAXdCk.js +1 -0
  11. package/dist/assets/{api-CQ3nejmH.js → api-Cx3i50oG.js} +1 -1
  12. package/dist/assets/{api-key-screen-BnQoBDlm.js → api-key-screen-BKFAcyqU.js} +1 -1
  13. package/dist/assets/{app-card--MsNli_3.js → app-card-CjRGDYCX.js} +1 -1
  14. package/dist/assets/{assistant-status-panel-BkuUZfnZ.js → assistant-status-panel-BkLYzQAL.js} +1 -1
  15. package/dist/assets/{auth-store-DDMY1UvK.js → auth-store-CVtcHK0b.js} +2 -2
  16. package/dist/assets/auth-welcome-screen-Pw3qXxi5.js +1 -0
  17. package/dist/assets/{avatar-random-D1LU-C7V.js → avatar-random-B5F8Cp2E.js} +1 -1
  18. package/dist/assets/{background-task-detail-panel-DQeMsdpK.js → background-task-detail-panel-DtJ1ZolD.js} +1 -1
  19. package/dist/assets/{billing-page-BU6n42tO.js → billing-page-CmVjD4bw.js} +3 -3
  20. package/dist/assets/{bookmarks-page-DIzvqlcG.js → bookmarks-page-DUbnEAgS.js} +1 -1
  21. package/dist/assets/{browser-Nd92UvKg.js → browser-Ca2R8csw.js} +2 -2
  22. package/dist/assets/{build-state-BZ5ujToI.js → build-state-laR44jYU.js} +1 -1
  23. package/dist/assets/channels-page-route-sLLh-p2k.js +9 -0
  24. package/dist/assets/{chat-C0-tqEYA.js → chat-1xy90pMn.js} +1 -1
  25. package/dist/assets/{chat-BWQujip4.js → chat-CHVUM3s0.js} +1 -1
  26. package/dist/assets/{chat-markdown-message-mIiMHNFn.js → chat-markdown-message-CtLdsT2K.js} +1 -1
  27. package/dist/assets/{checkout-continuation-UVo_MUjH.js → checkout-continuation-BvY4Kjz7.js} +1 -1
  28. package/dist/assets/{checkout-page-C1hWo56h.js → checkout-page-CWRkiEj1.js} +1 -1
  29. package/dist/assets/checkout-return-target-_Y86sfo0.js +1 -0
  30. package/dist/assets/{client-perf-DHnnpVkx.js → client-perf-BZu5XQCP.js} +1 -1
  31. package/dist/assets/{command-palette-C6fyPEFS.js → command-palette-B6PZe9A0.js} +1 -1
  32. package/dist/assets/command-palette-window-page-BYkkAV88.js +1 -0
  33. package/dist/assets/{community-page-DK1RRzQb.js → community-page-Dd84pjdI.js} +1 -1
  34. package/dist/assets/companion-surface-CZHv2avR.js +1 -0
  35. package/dist/assets/companion-surface-page-BvDSOFVH.js +1 -0
  36. package/dist/assets/{composer-settings-Bs2Ux46E.js → composer-settings-DBAb6W2i.js} +1 -1
  37. package/dist/assets/{connect-page-DcyvGKph.js → connect-page-DiO1EqEC.js} +1 -1
  38. package/dist/assets/{consent-controls-BqSz1Rrx.js → consent-controls-B_zCicqo.js} +1 -1
  39. package/dist/assets/{contacts-page-route--H1bhesC.js → contacts-page-route-fUfbhwZ5.js} +1 -1
  40. package/dist/assets/{conversation-cache-C3KMXxZQ.js → conversation-cache-qk0nNm6Q.js} +1 -1
  41. package/dist/assets/{conversation-navigation-DQEOhOXf.js → conversation-navigation-B_4jZ9Z2.js} +1 -1
  42. package/dist/assets/{conversation-queries-Crrs0Ih6.js → conversation-queries-M4Inozp_.js} +1 -1
  43. package/dist/assets/{conversation-selection-BFTHfyYb.js → conversation-selection-4ubh2ui-.js} +1 -1
  44. package/dist/assets/{credential-entry-page-DNW0ZIUD.js → credential-entry-page--HYBfvoW.js} +1 -1
  45. package/dist/assets/{credentials-page-BUxLoFkv.js → credentials-page-C-e4DqWt.js} +1 -1
  46. package/dist/assets/{csv-preview-FnIpBtF1.js → csv-preview-T_KT_vef.js} +1 -1
  47. package/dist/assets/{debug-page-01b8L6vC.js → debug-page-Be5Y5TVM.js} +2 -2
  48. package/dist/assets/{deploy-dialogs-I_QAK81w.js → deploy-dialogs-CgicOESj.js} +1 -1
  49. package/dist/assets/{deploy-store-C-WH19q9.js → deploy-store-dyN183E8.js} +1 -1
  50. package/dist/assets/{desktop-voice-activity-CPOU-25i.js → desktop-voice-activity-D1BSf0I-.js} +1 -1
  51. package/dist/assets/{detail-card-BzCuPjtL.js → detail-card-Bqnvs6YE.js} +1 -1
  52. package/dist/assets/{detail-drawer-CYUmZIyK.js → detail-drawer-j2jaITAL.js} +1 -1
  53. package/dist/assets/{detail-shell-B1BZYIqh.js → detail-shell-D1UEZCzz.js} +1 -1
  54. package/dist/assets/{developer-page-DshJ0gl6.js → developer-page-DD8xa8mQ.js} +1 -1
  55. package/dist/assets/{diagnostics-BrWbafo7.js → diagnostics-CwFqcLv_.js} +1 -1
  56. package/dist/assets/{doctor-handoff-store-CX39mMuw.js → doctor-handoff-store-Cy96Na-O.js} +1 -1
  57. package/dist/assets/{document-viewer-container-Bb7omFZS.js → document-viewer-container-BMmSidmj.js} +2 -2
  58. package/dist/assets/{document-viewer-page-Cyul2rIj.js → document-viewer-page-tTTco75r.js} +1 -1
  59. package/dist/assets/{emails-page-CArz1548.js → emails-page-CJM4OS94.js} +1 -1
  60. package/dist/assets/{esm-DYyr0ITx.js → esm-BD6nxr-q.js} +2 -2
  61. package/dist/assets/{esm-DjphWBuP.js → esm-BaEdQNCe.js} +2 -2
  62. package/dist/assets/esm-CtKndoc9.js +2 -0
  63. package/dist/assets/{esm-CfdMbmKl.js → esm-DTIJZw37.js} +2 -2
  64. package/dist/assets/{esm-tSqvpvZa.js → esm-FpGTFn5W.js} +2 -2
  65. package/dist/assets/{esm-L7cqLUll.js → esm-kYXyJ2zw.js} +2 -2
  66. package/dist/assets/{esm-DbEwZ3Za.js → esm-nl105Ya0.js} +2 -2
  67. package/dist/assets/{external-anchor-DQhNmTOb.js → external-anchor-CLy6d_za.js} +1 -1
  68. package/dist/assets/feed-item-status-actions--CCeCtuw.js +1 -0
  69. package/dist/assets/file-markdown-C1rEGVrN.js +2 -0
  70. package/dist/assets/first-run-scope-DdSaiULx.js +1 -0
  71. package/dist/assets/format-usd-tespTIex.js +1 -0
  72. package/dist/assets/{funnel-events-BfR30ND5.js → funnel-events-BP3XPaB5.js} +1 -1
  73. package/dist/assets/general-page-Bi87XguF.js +1 -0
  74. package/dist/assets/{haptics-Sti0ZroX.js → haptics-D3hzTCtH.js} +2 -2
  75. package/dist/assets/{hatching-screen-DUCKM3qi.js → hatching-screen-DA0yyXD1.js} +1 -1
  76. package/dist/assets/home-page-route-BSoWksW0.js +1 -0
  77. package/dist/assets/{hosting-screen-By2Dt_ov.js → hosting-screen-cfhZ-ct7.js} +1 -1
  78. package/dist/assets/{i18n--HmJLuhM.js → i18n-C9hRT4Lf.js} +3 -3
  79. package/dist/assets/{identity-page-route-4IEB7D_s.js → identity-page-route-BjSsi8PM.js} +1 -1
  80. package/dist/assets/index-BmDctEOW.css +2 -0
  81. package/dist/assets/{index-CflMsKlP.js → index-I9kwAKzY.js} +3 -3
  82. package/dist/assets/{ingest-C3QOaKA5.js → ingest-DXklElaR.js} +1 -1
  83. package/dist/assets/{inspect-page-D3vuZY29.js → inspect-page-naqIziez.js} +3 -3
  84. package/dist/assets/{integrations-page-Ck4sUGfr.js → integrations-page-zrUmh2xn.js} +1 -1
  85. package/dist/assets/{intelligence-layout-2iu6OgCh.js → intelligence-layout-CXzIl0Vl.js} +1 -1
  86. package/dist/assets/{invalidate-memory-queries-CSQ9nfIN.js → invalidate-memory-queries-C4-KSsdB.js} +1 -1
  87. package/dist/assets/{latest-assistant-text-hKWwKxXi.js → latest-assistant-text-JCjtByys.js} +1 -1
  88. package/dist/assets/{library-detail-page-DcRn2wsJ.js → library-detail-page-CyWiXwb9.js} +1 -1
  89. package/dist/assets/{library-page-Db5Pstgx.js → library-page-CzcvMljL.js} +1 -1
  90. package/dist/assets/{local-runtime-upgrade-T5WFNI2L.js → local-runtime-upgrade-BkoG5uVr.js} +1 -1
  91. package/dist/assets/{login-flow-Bprf1KQp.js → login-flow-D6ivg6PM.js} +1 -1
  92. package/dist/assets/login-page-Dmpz0GgT.js +1 -0
  93. package/dist/assets/{logout-page-HF_SMBkj.js → logout-page-CI3LDcqG.js} +1 -1
  94. package/dist/assets/{logs-layout-CNyrG8d2.js → logs-layout-BHP-ADUq.js} +1 -1
  95. package/dist/assets/{markdown-preview-CYSaj1MV.js → markdown-preview-Dx8E021p.js} +1 -1
  96. package/dist/assets/{memory-page-route-DDdpEiCD.js → memory-page-route-qvBEERTa.js} +1 -1
  97. package/dist/assets/memory-router-playground-page-Bnxf4hzQ.js +1 -0
  98. package/dist/assets/{message-files-panel-25T5M1Ct.js → message-files-panel-ZPa7eZHc.js} +1 -1
  99. package/dist/assets/{messages-DJ6wO978.js → messages-CPTfRZA4.js} +1 -1
  100. package/dist/assets/{metric-card-Bg72JUq3.js → metric-card-bXd-f58c.js} +1 -1
  101. package/dist/assets/multi-activity-group-AECQlBbV.js +1 -0
  102. package/dist/assets/native-anchor-Bn22ZLay.js +1 -0
  103. package/dist/assets/{native-biometric-BxYhgb-X.js → native-biometric-D9IxNvJM.js} +1 -1
  104. package/dist/assets/{native-deep-link-C-s7GeV-.js → native-deep-link-IwasVyFQ.js} +2 -2
  105. package/dist/assets/{native-file-B3U837ed.js → native-file-BpFW1c_c.js} +2 -2
  106. package/dist/assets/{navigation-resolver-D4kCxpGf.js → navigation-resolver-jIQ5B6JB.js} +1 -1
  107. package/dist/assets/{not-found-DlCb1TjZ.js → not-found-ui-gcXqK.js} +1 -1
  108. package/dist/assets/{notifications-CZJragaI.js → notifications-DK6b8YVI.js} +1 -1
  109. package/dist/assets/{notifications-page-D7nqzDdY.js → notifications-page-GRXZE_lL.js} +1 -1
  110. package/dist/assets/{oauth-complete-page-4tmCqzLC.js → oauth-complete-page-7NZZRVcj.js} +1 -1
  111. package/dist/assets/{oauth-connection-utils-DmZFWfiy.js → oauth-connection-utils-19Tfw-lp.js} +1 -1
  112. package/dist/assets/{oauth-popup-complete-page-CjVEoYgl.js → oauth-popup-complete-page-Ci39YXpe.js} +1 -1
  113. package/dist/assets/{onboarding-step-layout-BfHbyjc0.js → onboarding-step-layout-2G2ptxpI.js} +1 -1
  114. package/dist/assets/open-workspace-file-CYf_Tqw3.js +2 -0
  115. package/dist/assets/{operational-status-T7FDD0t5.js → operational-status-CMN32PL8.js} +1 -1
  116. package/dist/assets/page-shell-C3ZmdIop.js +1 -0
  117. package/dist/assets/page-surface-store-DJLLsNFC.js +1 -0
  118. package/dist/assets/{pairing-page-CweLlHZS.js → pairing-page-YPN7ISIr.js} +1 -1
  119. package/dist/assets/{pdf-file-preview-6vptz6t6.js → pdf-file-preview-udA0Apx_.js} +1 -1
  120. package/dist/assets/{pdf-preview-sG04pSiE.js → pdf-preview-6Xfl1tO1.js} +2 -2
  121. package/dist/assets/{personality-page-DV3W2t42.js → personality-page-CLsRq5L2.js} +1 -1
  122. package/dist/assets/{plans-page-D-z14zHg.js → plans-page-DkVXE0Jv.js} +1 -1
  123. package/dist/assets/{platform-detection-Dt0-jSAU.js → platform-detection-zth6eCY8.js} +1 -1
  124. package/dist/assets/{platform-login-notice-jeJJGuqn.js → platform-login-notice-CvFpWLJY.js} +1 -1
  125. package/dist/assets/{platform-loopback-page-y_4YDCry.js → platform-loopback-page-B8cGk07e.js} +1 -1
  126. package/dist/assets/{preview-error-BkNW-Vj0.js → preview-error-gCViZZRw.js} +1 -1
  127. package/dist/assets/{privacy-page-BXSqDC_-.js → privacy-page-BxJ2Cuev.js} +1 -1
  128. package/dist/assets/{privacy-screen-BkGGAYzN.js → privacy-screen-DlSj_9FT.js} +1 -1
  129. package/dist/assets/{provider-callback-page-C-bl_GDk.js → provider-callback-page-BPp1TM7J.js} +1 -1
  130. package/dist/assets/{provider-signup-page-PSLa_T38.js → provider-signup-page-Cv9_b_58.js} +1 -1
  131. package/dist/assets/{provisioning-targets-QWEnNCue.js → provisioning-targets-DDUZDQ_a.js} +1 -1
  132. package/dist/assets/{push-registration-BMwgTQHf.js → push-registration-CH_t0mI8.js} +2 -2
  133. package/dist/assets/{remove-from-device-dialog-BDRSkSad.js → remove-from-device-dialog-DeJ_gAmf.js} +1 -1
  134. package/dist/assets/{research-facts-_ZlA6tzF.js → research-facts-C2cY_gU2.js} +1 -1
  135. package/dist/assets/{research-mock-page-PPKtT6UI.js → research-mock-page-CB1_bEoa.js} +1 -1
  136. package/dist/assets/research-onboarding-route-BY3X_d2-.js +50 -0
  137. package/dist/assets/{research-results-view-BFBI--6l.js → research-results-view-BcQs2Zh9.js} +1 -1
  138. package/dist/assets/{retire-confirm-dialog-DPyqO3ao.js → retire-confirm-dialog-f-A5OVYj.js} +1 -1
  139. package/dist/assets/{review-terms-screen-Cba1alNi.js → review-terms-screen-CI_29cnc.js} +1 -1
  140. package/dist/assets/routes-OwGjl0BS.js +24 -0
  141. package/dist/assets/{runtime-upgrade-banner-BrXnDFJZ.js → runtime-upgrade-banner-Cj9E7kWP.js} +2 -2
  142. package/dist/assets/{sandbox-bridge-CXqBkVsW.js → sandbox-bridge-Dj1pIOXJ.js} +1 -1
  143. package/dist/assets/{schedules-page-D81oQFHC.js → schedules-page-0V6ECw0t.js} +1 -1
  144. package/dist/assets/{section-membership-B23vBXXp.js → section-membership-vg-XaMPS.js} +1 -1
  145. package/dist/assets/{select-assistant-screen-Bpp_Fhfx.js → select-assistant-screen-BZxPQqe4.js} +1 -1
  146. package/dist/assets/{self-hosted-servers-DYKQjALI.js → self-hosted-servers-BviPyNnl.js} +1 -1
  147. package/dist/assets/settings-CEQzAg2m.js +1 -0
  148. package/dist/assets/{settings-divider-DGdHGRSV.js → settings-divider-C0NZsB-L.js} +1 -1
  149. package/dist/assets/{settings-layout-Vv6ixknD.js → settings-layout-DgNBNUT7.js} +1 -1
  150. package/dist/assets/settings-navigation-CVw10LL_.js +1 -0
  151. package/dist/assets/{share-feedback-modal-BIIdahKH.js → share-feedback-modal-PlN6X3Pm.js} +2 -2
  152. package/dist/assets/{sidebar-tree-BNzVigoN.js → sidebar-tree-Bp0eeKf2.js} +1 -1
  153. package/dist/assets/{signup-page-DwghsKON.js → signup-page-gqz5_wG1.js} +1 -1
  154. package/dist/assets/{site-favicon-D5oxJG4i.js → site-favicon-Cu07pwc9.js} +1 -1
  155. package/dist/assets/{skill-detail-page-DrVoo07c.js → skill-detail-page-c0s3w3K3.js} +1 -1
  156. package/dist/assets/{skill-detail-panel-Co6OpnMY.js → skill-detail-panel-NYXq557_.js} +1 -1
  157. package/dist/assets/{skills-CAAcLlNJ.js → skills-5MnTu98B.js} +1 -1
  158. package/dist/assets/{src-qDZBwoEm.js → src-CImIAPTd.js} +1 -1
  159. package/dist/assets/{start-screen-CO55WEqw.js → start-screen-CHO19RCi.js} +1 -1
  160. package/dist/assets/{status-badge-pill-CoGc_Kjf.js → status-badge-pill-D8m98tJa.js} +1 -1
  161. package/dist/assets/{stt-language-picker-modal-7-gnUFiL.js → stt-language-picker-modal-BXLEBM7b.js} +1 -1
  162. package/dist/assets/{subagent-detail-panel-B7yd49jl.js → subagent-detail-panel-CrbpQRzW.js} +1 -1
  163. package/dist/assets/{subagent-store-D79M-K__.js → subagent-store-DqKEBlAM.js} +1 -1
  164. package/dist/assets/{superpowers-page-B0zX5FZy.js → superpowers-page-B5WGXphq.js} +1 -1
  165. package/dist/assets/{swipe-action-reveal-Ctx7MIFN.js → swipe-action-reveal-Ai9lRgUU.js} +1 -1
  166. package/dist/assets/{system-events-page-7z3m1kM5.js → system-events-page-_aap_0av.js} +1 -1
  167. package/dist/assets/{telegram-setup-wizard-DhIkHgMe.js → telegram-setup-wizard-BENKNAuh.js} +1 -1
  168. package/dist/assets/{text-preview-DFo5f2uH.js → text-preview-DUlKYC4u.js} +1 -1
  169. package/dist/assets/{theme-stage-page-CmF6f7RN.js → theme-stage-page-CbGuxQ23.js} +1 -1
  170. package/dist/assets/{tiptap-document-editor-DDfxW_SE.js → tiptap-document-editor-0vqw7hch.js} +1 -1
  171. package/dist/assets/{tool-detail-panel-Zx64Drl4.js → tool-detail-panel-C2wUYsf2.js} +1 -1
  172. package/dist/assets/{trust-rules-api-BtUxkSk-.js → trust-rules-api-DRJ1qP-y.js} +1 -1
  173. package/dist/assets/{upgrade-cancel-page-H2SezHRI.js → upgrade-cancel-page-Dbd3VJdm.js} +1 -1
  174. package/dist/assets/{upgrade-success-page-DoM6CoFp.js → upgrade-success-page-CHbEmpjg.js} +1 -1
  175. package/dist/assets/{use-assistant-capability-CmwC8eoT.js → use-assistant-capability-C-yHcMH4.js} +1 -1
  176. package/dist/assets/{use-assistant-identity-details-DqD-wXki.js → use-assistant-identity-details-u9sG9ip2.js} +1 -1
  177. package/dist/assets/{use-attachment-preview-BfZe160h.js → use-attachment-preview-Cq_IWTdT.js} +2 -2
  178. package/dist/assets/{use-attachment-squares-jfCXyibr.js → use-attachment-squares-BKi30wmg.js} +1 -1
  179. package/dist/assets/{use-bookmarks-Dg-dtmf5.js → use-bookmarks-Bl4tx8xK.js} +1 -1
  180. package/dist/assets/{use-checkout-dismiss-refresh-lXbrGudW.js → use-checkout-dismiss-refresh-BHuxVDUc.js} +1 -1
  181. package/dist/assets/use-command-palette-sections-CvNjev8s.js +1 -0
  182. package/dist/assets/{use-edge-swipe-CJ8niuZL.js → use-edge-swipe-C4IrskOL.js} +1 -1
  183. package/dist/assets/use-edge-swipe-back-CiO9raEw.js +2 -0
  184. package/dist/assets/{use-edit-app-CAyA09nW.js → use-edit-app-ByAfCYIL.js} +1 -1
  185. package/dist/assets/{use-is-org-ready-BYJTuCXo.js → use-is-org-ready-GDBxqujc.js} +1 -1
  186. package/dist/assets/use-onboarding-login-BdVTfZ3o.js +1 -0
  187. package/dist/assets/{use-platform-assistant-id-CuqHJket.js → use-platform-assistant-id-B7TrEBmf.js} +1 -1
  188. package/dist/assets/{use-platform-gate-DJ7NtOkG.js → use-platform-gate-DG9Xg3Hs.js} +1 -1
  189. package/dist/assets/{use-return-to-short-circuit-CXFMS-0F.js → use-return-to-short-circuit-EtY8cSC7.js} +1 -1
  190. package/dist/assets/{use-side-list-room-DtmLatRX.js → use-side-list-room-CUXPQyjw.js} +1 -1
  191. package/dist/assets/{use-skill-actions-DjwFUePB.js → use-skill-actions-CdbZjq6a.js} +1 -1
  192. package/dist/assets/{use-sticky-profiles-BYBk-2VZ.js → use-sticky-profiles-vQLFyEh0.js} +1 -1
  193. package/dist/assets/{use-stt-language-selection-82DrT6kd.js → use-stt-language-selection-CK6bUfVS.js} +1 -1
  194. package/dist/assets/{use-subagent-card-data-CTkK6bHj.js → use-subagent-card-data-DlVOBxXw.js} +1 -1
  195. package/dist/assets/use-transcript-message-by-id-FmIIrRsf.js +1 -0
  196. package/dist/assets/{use-transcript-messages-BvoNGyuA.js → use-transcript-messages-Q1PBxvSF.js} +1 -1
  197. package/dist/assets/{use-voice-sample-preview-BHCiYpHq.js → use-voice-sample-preview-CZoWWEeH.js} +1 -1
  198. package/dist/assets/useTranslation-D9pPv-bA.js +1 -0
  199. package/dist/assets/{voice-page-CqgBuO-G.js → voice-page-B1mJ2hkc.js} +1 -1
  200. package/dist/assets/{voice-providers-note-DmCKsoh8.js → voice-providers-note-TDQxSwUj.js} +1 -1
  201. package/dist/assets/{web-C6ruWL7-.js → web-CxX3pST-.js} +1 -1
  202. package/dist/assets/{web-ByBZa2-p.js → web-D1mJSG8v.js} +1 -1
  203. package/dist/assets/welcome-screen-DPXQU47t.js +1 -0
  204. package/dist/assets/{workflow-detail-panel-CXQymzrA.js → workflow-detail-panel-C0kN-iH3.js} +1 -1
  205. package/dist/assets/{workflow-store-DMcem5b6.js → workflow-store-BXqyb8CL.js} +1 -1
  206. package/dist/assets/{workspace-page-CHN0AzFJ.js → workspace-page-Mj_A1eeR.js} +1 -1
  207. package/dist/assets/{workspace-tree-query-BmugmuTC.js → workspace-tree-query-Dyls8wmV.js} +1 -1
  208. package/dist/index.html +93 -93
  209. package/package.json +1 -1
  210. package/dist/assets/account-C-_tLpl9.js +0 -1
  211. package/dist/assets/api-Cet3wU2m.js +0 -1
  212. package/dist/assets/channels-page-route-BVzZL9QF.js +0 -9
  213. package/dist/assets/checkout-return-target-Bj6qL3Z7.js +0 -1
  214. package/dist/assets/command-palette-window-page-nIdxmxPV.js +0 -1
  215. package/dist/assets/companion-surface-page-BZHSeP1U.js +0 -1
  216. package/dist/assets/esm-B8RIzuiy.js +0 -2
  217. package/dist/assets/file-markdown-Br-X9E8g.js +0 -2
  218. package/dist/assets/first-run-scope-CGwas_dv.js +0 -1
  219. package/dist/assets/format-usd-BSn1PAt3.js +0 -1
  220. package/dist/assets/general-page-DqxymzlR.js +0 -1
  221. package/dist/assets/home-page-route--ZWIkqRA.js +0 -1
  222. package/dist/assets/home-tool-permission-card-BGkMa_5c.js +0 -1
  223. package/dist/assets/index-yCM21OWQ.css +0 -2
  224. package/dist/assets/login-page-DsrM-8gG.js +0 -1
  225. package/dist/assets/memory-router-playground-page-Bvv1GiG1.js +0 -1
  226. package/dist/assets/multi-activity-group-CvLkSXkq.js +0 -1
  227. package/dist/assets/native-anchor-WUfwamgX.js +0 -1
  228. package/dist/assets/native-auth-error-B4gY5JEl.js +0 -1
  229. package/dist/assets/open-workspace-file-CDO9erng.js +0 -2
  230. package/dist/assets/page-shell-3Yi5Ezsv.js +0 -1
  231. package/dist/assets/page-surface-store-d61YqYCV.js +0 -1
  232. package/dist/assets/research-onboarding-route-Cv91i-43.js +0 -50
  233. package/dist/assets/routes-Cu81Z_6p.js +0 -24
  234. package/dist/assets/settings-DWADkKSC.js +0 -1
  235. package/dist/assets/settings-navigation-Dt128ttq.js +0 -1
  236. package/dist/assets/use-command-palette-sections-D3ZIddUs.js +0 -1
  237. package/dist/assets/use-edge-swipe-back-Dl-lRTON.js +0 -2
  238. package/dist/assets/use-onboarding-login-BosEuDpc.js +0 -1
  239. package/dist/assets/use-transcript-message-by-id-DTaTEqgT.js +0 -1
  240. package/dist/assets/useTranslation-DdVCKPgw.js +0 -1
  241. package/dist/assets/welcome-screen-Cghao5xK.js +0 -1
  242. /package/dist/assets/{app-types-DhugcUAb.js → app-types-DET4dder.js} +0 -0
  243. /package/dist/assets/{archive-redirect-page-DddErONf.js → archive-redirect-page-LFqfq3Zx.js} +0 -0
  244. /package/dist/assets/{billing-redirect-page-CaXtswvd.js → billing-redirect-page-B6zuKMxb.js} +0 -0
  245. /package/dist/assets/{build.umd-Bnx74y6d.js → build.umd-CwkQd6wk.js} +0 -0
  246. /package/dist/assets/{channels-BdtsaKuZ.js → channels-CXuBInAc.js} +0 -0
  247. /package/dist/assets/{common-CYa3Lx5T.js → common-EmSgsWNa.js} +0 -0
  248. /package/dist/assets/{contacts-Adtv7fIG.js → contacts-BRU7ohw2.js} +0 -0
  249. /package/dist/assets/{credential-requests-BjLAoauv.js → credential-requests-BbBZKJHx.js} +0 -0
  250. /package/dist/assets/{danger-zone-redirect-page-C45lMfXW.js → danger-zone-redirect-page-BuIG9f9S.js} +0 -0
  251. /package/dist/assets/{definitions-BvE4YCqW.js → definitions-Co0yLSy_.js} +0 -0
  252. /package/dist/assets/{definitions-BOuhvvgh.js → definitions-Yz8Uao4u.js} +0 -0
  253. /package/dist/assets/{devices-redirect-page-CTLNcuXg.js → devices-redirect-page-BoKYF1E9.js} +0 -0
  254. /package/dist/assets/{diff-rows-CMQi83GC.js → diff-rows-BrFK496i.js} +0 -0
  255. /package/dist/assets/{emoji-catalog-data-zwouAP3d.js → emoji-catalog-data-BIIBfSqk.js} +0 -0
  256. /package/dist/assets/{environment-store-CgcCuCfv.js → environment-store-C4So_j-o.js} +0 -0
  257. /package/dist/assets/{esm-B3RQnhQB.js → esm-BJhqsukI.js} +0 -0
  258. /package/dist/assets/{esm-U4mAZE_5.js → esm-CPFvOH-c.js} +0 -0
  259. /package/dist/assets/{external-urls-B0QJBkzP.js → external-urls-Bg18AU4S.js} +0 -0
  260. /package/dist/assets/{file-editor-C2Qy2Ujg.js → file-editor-BwdObVSu.js} +0 -0
  261. /package/dist/assets/{home-DaG8KIqs.js → home-BwSxL4rM.js} +0 -0
  262. /package/dist/assets/{intelligence-B920vsi4.js → intelligence-DXpXyKbw.js} +0 -0
  263. /package/dist/assets/{keyboard-shortcuts-redirect-page-DSUfuOqd.js → keyboard-shortcuts-redirect-page-DSnux9sJ.js} +0 -0
  264. /package/dist/assets/{library-DqQriY4U.js → library-CuKVNDEp.js} +0 -0
  265. /package/dist/assets/{link-click-3KBltS8g.js → link-click-BsxbQxDe.js} +0 -0
  266. /package/dist/assets/{logs-s74ABgur.js → logs-Blq4k473.js} +0 -0
  267. /package/dist/assets/{machine-sizes-BEgYDPIN.js → machine-sizes-DzJ0TVYS.js} +0 -0
  268. /package/dist/assets/{media-preview-C0jyQw5_.js → media-preview-HgLvcAQ9.js} +0 -0
  269. /package/dist/assets/{onboarding-orcvuvpJ.js → onboarding-DK0I_g8T.js} +0 -0
  270. /package/dist/assets/{page-empty-state-BG1VeXc8.js → page-empty-state-CzHxZkBR.js} +0 -0
  271. /package/dist/assets/{password-reset-page-D4zTOGaM.js → password-reset-page-D8ONrPU-.js} +0 -0
  272. /package/dist/assets/{pdf-CjG-njep.js → pdf-UON6A_nT.js} +0 -0
  273. /package/dist/assets/{plugin-attribution-CcHpmela.js → plugin-attribution-C0u-eDRH.js} +0 -0
  274. /package/dist/assets/{plugin-detail-page-DWr7S8VR.js → plugin-detail-page--CvX0OXv.js} +0 -0
  275. /package/dist/assets/{plugins-page-BZLdfa7d.js → plugins-page-CZ16U_6n.js} +0 -0
  276. /package/dist/assets/{profile-metadata-CsakJtzD.js → profile-metadata-D9zzZn4_.js} +0 -0
  277. /package/dist/assets/{provider-key-CsMdPcM5.js → provider-key-DpdSx5gG.js} +0 -0
  278. /package/dist/assets/{radio-card-nav-D_-kt3tm.js → radio-card-nav-CrM7VJUk.js} +0 -0
  279. /package/dist/assets/{remote-web-DxCgPeJc.js → remote-web-DBCYTF2P.js} +0 -0
  280. /package/dist/assets/{schedules-D3oXqJMY.js → schedules-C3wE8OML.js} +0 -0
  281. /package/dist/assets/{schedules-rtwsTU7E.js → schedules-Co4-ymK5.js} +0 -0
  282. /package/dist/assets/{security-redirect-page-DbXxE5Ym.js → security-redirect-page-D6x3MANY.js} +0 -0
  283. /package/dist/assets/{setting-row-C0mDhzZy.js → setting-row-BvQpFvtr.js} +0 -0
  284. /package/dist/assets/{signup-shell-DnLhiMGV.js → signup-shell-DW976E_0.js} +0 -0
  285. /package/dist/assets/{skill-icon-sj-wJGzd.js → skill-icon-yVnZg-J1.js} +0 -0
  286. /package/dist/assets/{skills-page-yj4WNgG3.js → skills-page-B_VTCiN2.js} +0 -0
  287. /package/dist/assets/{sounds-page-Co2G6n-5.js → sounds-page-BdSO1UIf.js} +0 -0
  288. /package/dist/assets/{system-events-redirect-page-Dbxsscgn.js → system-events-redirect-page-DbyqOqe_.js} +0 -0
  289. /package/dist/assets/{terminal-og9TTXfZ.js → terminal-_tzbWcM4.js} +0 -0
  290. /package/dist/assets/{usage-redirect-page-NZfMbBv6.js → usage-redirect-page-DyTnwv4x.js} +0 -0
  291. /package/dist/assets/{use-skill-detail-files-DNaNHaP0.js → use-skill-detail-files-Bg4G44J3.js} +0 -0
  292. /package/dist/assets/{use-supports-credentials-settings-BCD9S39r.js → use-supports-credentials-settings-Cj-Py42f.js} +0 -0
  293. /package/dist/assets/{use-truncated-blob-text-CHF4X4vL.js → use-truncated-blob-text-BYAPiP8I.js} +0 -0
  294. /package/dist/assets/{weather-forecast-display-8i3-jfUZ.js → weather-forecast-display-D3IBgGHv.js} +0 -0
  295. /package/dist/assets/{web-DXzSQlx4.js → web-B60tNeyj.js} +0 -0
  296. /package/dist/assets/{web-Crg_ekZH.js → web-BSizndvP.js} +0 -0
  297. /package/dist/assets/{web-to2ecOqW.js → web-CXad-fWd.js} +0 -0
  298. /package/dist/assets/{web-xhYMQG7j.js → web-Cpz2h_dP.js} +0 -0
  299. /package/dist/assets/{web-eg_n1fSm.js → web-Cr238HhI.js} +0 -0
  300. /package/dist/assets/{web-B5o07_c8.js → web-Nd-L7NoL.js} +0 -0
  301. /package/dist/assets/{web-Ctf28EEk.js → web-W2HEHjFb.js} +0 -0
  302. /package/dist/assets/{workspace-BBqltPoi.js → workspace-BFa6JWKe.js} +0 -0
  303. /package/dist/assets/{xterm-DJn4nvHR.js → xterm-DFQikp5h.js} +0 -0
  304. /package/dist/assets/{xterm-addon-fit-DEYHenuA.js → xterm-addon-fit-B04vX_IV.js} +0 -0
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,l as n}from"./local-settings-Bx7FsNo5.js";import{t as r}from"./capture-error-DiNp24s6.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-VkxVX0DM.js";import{d as o,h as s}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as c}from"./QueryClientProvider-EuRl-wrW.js";import{t as l}from"./useQuery-CTSuec5b.js";import{t as u}from"./useQueries-Bimdc7uA.js";import{t as d}from"./jsx-runtime-BJ8jcmzB.js";import{t as f}from"./card-DUsAeHUS.js";import{a as p,d as m,n as h,o as g,s as _,t as v}from"./list-row-CDwzGT9g.js";import{t as y}from"./createLucideIcon-B-ZPaMbU.js";import{t as b}from"./check-pgeLaeXx.js";import{t as x}from"./chevron-down-CmQCCo_x.js";import{t as S}from"./chevron-right-Dwr_Sx98.js";import{t as C}from"./circle-alert-DvkPmyIg.js";import{t as w}from"./circle-check-BlOeCme9.js";import{t as T}from"./circle-x-CEXUbdoO.js";import{t as E}from"./external-link-B-pfCiUo.js";import{t as D}from"./key-round-C51ZTEMu.js";import{t as O}from"./loader-circle-DYe85z3g.js";import{t as k}from"./log-in-BsEhSW6v.js";import{t as A}from"./log-out-Dvz6dWwJ.js";import{t as j}from"./pencil-Ba0D7tjH.js";import{t as M}from"./plus-CWkbiq1y.js";import{n as N,t as P}from"./integration-icon-DbmKvxqf.js";import{t as F}from"./refresh-cw-p138DTtp.js";import{t as I}from"./search-D_t5oHhF.js";import{t as L}from"./sparkles-Bhr0JiLM.js";import{t as R}from"./trash-2-V2WT_DbX.js";import{t as z}from"./x-zfSDUG5z.js";import{t as B}from"./notice-BlYF-xU3.js";import{t as V}from"./popover-D3A6cIyW.js";import{t as H}from"./input-DkgpMeG9.js";import{t as U}from"./toggle-0qt1e_3r.js";import{t as W}from"./modal-UYNawsIu.js";import{n as G}from"./toast-DqqWkjsh.js";import{t as K}from"./confirm-dialog-Drw1adml.js";import{t as ee}from"./select-BKyejRky.js";import"./i18n--HmJLuhM.js";import{t as q}from"./useTranslation-DdVCKPgw.js";import{i as J}from"./api-errors-CASENJGT.js";import{J as te}from"./auth-store-DDMY1UvK.js";import{Qr as Y}from"./sdk.gen-CiE6cMi0.js";import{r as ne}from"./api-CQ3nejmH.js";import{m as re}from"./native-biometric-BxYhgb-X.js";import{d as ie}from"./routes-B7wRw3UT.js";import{i as ae,t as oe}from"./use-platform-gate-DJ7NtOkG.js";import{ct as se,dt as ce,fn as le,hn as ue,lt as de,mn as fe,ot as pe,pn as me,st as he,ut as ge}from"./react-query.gen-Bbh5MII3.js";import{n as _e,r as ve}from"./browser-Nd92UvKg.js";import{Dt as ye,Et as be,S as xe,b as X,x as Se}from"./react-query.gen-CwRPAiHT.js";import{r as Ce}from"./conversation-navigation-DQEOhOXf.js";import{t as we}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as Te}from"./use-body-scroll-lock-DmT5-Tka.js";import{t as Ee}from"./use-touch-mobile-CnqGLpCj.js";import{t as De}from"./copy-to-clipboard-D76_3Coc.js";import{a as Oe,i as ke,n as Ae,r as je}from"./oauth-connection-utils-DmZFWfiy.js";import{a as Me,i as Ne,n as Pe,t as Fe}from"./oauth-popup-CrXEFWPi.js";import{t as Ie}from"./platform-login-notice-jeJJGuqn.js";import{t as Le}from"./use-active-assistant-id-BADYKVyx.js";import{t as Re}from"./use-platform-assistant-id-CuqHJket.js";var ze=y(`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`}]]),Be=y(`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`}]]),Z=e(i(),1);function Ve({assistantId:e,providerKey:t,displayName:n,managedAvailable:r,connectionsQueryKey:i,allConnections:a}){let o=c(),s=re(),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),[p,m]=(0,Z.useState)(!1),h=()=>{u.current=null,m(!1)},g=()=>{l.current&&!l.current.closed&&l.current.close(),l.current=null,d.current&&=(clearInterval(d.current),null),f.current&&=(clearTimeout(f.current),null)},_=(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(),h(),t===`connected`)G.success(`${n} account connected.`),o.invalidateQueries({queryKey:i});else{let e=r?`Error: ${r}`:`Authorization failed`;G.error(`${n} ${e}`)}},[i,n,o]),v=(0,Z.useCallback)(async(e,n)=>{if(!r)return!1;for(let r=0;r<8;r+=1){r>0&&await ke(750);try{if(o.invalidateQueries({queryKey:i}),je(await o.fetchQuery({...X({path:{assistant_id:e}}),staleTime:0}),t,n))return!0}catch{}}return!1},[i,r,t,o]);(0,Z.useEffect)(()=>{let e=e=>{let t=u.current;if(!t)return;let n=Fe(e,window.location.origin,t.requestId);n&&_(n)},t=e=>{let t=u.current;if(!t)return;let n=Pe(e,t.requestId);n&&(_(n),window.localStorage.removeItem(Ne(t.requestId)))};return window.addEventListener(`message`,e),window.addEventListener(`storage`,t),()=>{window.removeEventListener(`message`,e),window.removeEventListener(`storage`,t)}},[_]),Oe((0,Z.useCallback)(e=>{let t=u.current;t&&e.requestId===t.requestId&&_({type:`vellum:oauth-complete`,requestId:e.requestId,oauthStatus:e.oauthStatus,oauthProvider:e.oauthProvider,oauthCode:e.oauthCode})},[_])),(0,Z.useEffect)(()=>ve(()=>{let e=u.current;e&&(async()=>{let t=await v(e.platformAssistantId,e.baselineConnectionSignatures);u.current&&(h(),t&&G.success(`${n} account connected.`))})()}),[v,n]),(0,Z.useEffect)(()=>()=>{d.current&&clearInterval(d.current),f.current&&clearTimeout(f.current),l.current&&!l.current.closed&&l.current.close()},[]);let y=ye();return{handleConnect:(i=[])=>{if(!r)return;let c=crypto.randomUUID();m(!0);let p=async r=>{let l;try{l=await te(e)}catch(e){g(),h(),G.error(e instanceof Error?e.message:`Failed to start ${n} authorization.`);return}let d=Ae(await o.fetchQuery({...X({path:{assistant_id:l}}),staleTime:0}).catch(()=>l===e?a??[]:[]),t);u.current={requestId:c,provider:t,platformAssistantId:l,baselineConnectionSignatures:d},y.mutate({path:{assistant_id:l,provider:t},body:{requested_scopes:i,redirect_after_connect:`${ie.account.oauth.popupComplete}?requestId=${c}${s?`&native=1`:``}`}},{onSuccess(e){if(s){_e(e.connect_url);return}r&&!r.closed?r.location.href=e.connect_url:u.current&&(g(),h(),G.error(`${n} connection failed: popup closed.`))},onError(e){g(),h();let t=J(e,void 0,`Failed to start ${n} authorization.`);G.error(t)}})};if(s){p(null);return}let b=window.open(``,`_blank`,`width=500,height=600`);if(b===null){h(),G.error(`Popup blocked. Please enable popups and try again.`);return}l.current=b,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(Ne(e.requestId));if(t){let n=Me(t);if(n&&n.requestId===e.requestId){_(n),window.localStorage.removeItem(Ne(e.requestId));return}}let r=await v(e.platformAssistantId,e.baselineConnectionSignatures);if(u.current){if(r){g(),h(),G.success(`${n} account connected.`);return}g(),h(),G.error(`${n} connection failed: authorization popup closed.`)}},1e3))},100),p(b)},oauthInProgress:p,startOAuthPending:y.isPending}}var Q=d();function He({displayName:e,providerKey:t,logoUrl:n,connections:r,connectionsLoading:i,startPending:o,oauthInProgress:s,disconnectingId:c,onConnect:l,onDisconnect:u,connectPresets:d=[]}){let f=o||s;return i?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,Q.jsx)(O,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})}):r.length===0?o||s?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-10`,children:[(0,Q.jsx)(P,{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)(O,{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)(P,{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)(a,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(M,{}),onClick:()=>l(),disabled:f,children:`Connect Account`}),d.map(e=>(0,Q.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,Q.jsx)(Be,{}),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)(P,{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)(a,{variant:`dangerOutline`,size:`compact`,iconOnly:i?(0,Q.jsx)(O,{className:`animate-spin`}):(0,Q.jsx)(R,{}),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)(O,{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)(a,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(E,{}),onClick:()=>l(),disabled:f,children:`Connect account`}),d.map(e=>(0,Q.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,Q.jsx)(Be,{}),onClick:()=>l(e.scopes),disabled:f,children:e.label},e.id))]})})]})}function Ue(e){return e.length>16?`${e.slice(0,12)}…${e.slice(-4)}`:e.length>8?`${e.slice(0,8)}…`:e}function We(e){try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function Ge({assistantId:e,providerKey:t,displayName:n,logoUrl:r}){let i=c(),o=l({...se({path:{assistant_id:e},query:{provider_key:t}}),select:e=>e.apps}),s=l({...ge({path:{assistant_id:e,providerKey:t}}),select:e=>e.oauth_callback_url}),d=o.data??[],p=s.data??null,h=u({queries:d.map(t=>({...pe({path:{assistant_id:e,appId:t.id}}),select:e=>e.connections}))}),g={};d.forEach((e,t)=>{g[e.id]=h[t]?.data??[]});let _=de({path:{assistant_id:e},query:{provider_key:t}}),v=fe({onSuccess:()=>{i.invalidateQueries({queryKey:_}),D(``),A(``),w(!1),G.success(`${n} OAuth app added.`)},onError:e=>{G.error(e.message||`Failed to create OAuth app`)}}),y=me({onSuccess:()=>{i.invalidateQueries({queryKey:_}),G.success(`OAuth app deleted.`)},onError:e=>{G.error(e.message||`Failed to delete OAuth app`)}}),x=le({onSuccess:e=>{`auth_url`in e&&(window.location.href=e.auth_url)},onError:e=>{G.error(e.message||`Failed to start OAuth flow`)}}),S=ue(),[C,w]=(0,Z.useState)(!1),[T,D]=(0,Z.useState)(``),[k,A]=(0,Z.useState)(``),[j,N]=(0,Z.useState)(!1),[F,I]=(0,Z.useState)(null),[L,z]=(0,Z.useState)(null),B=v.isPending,V=y.isPending?y.variables?.path?.id??null:null,U=x.isPending?x.variables?.path?.appId??null:null,W=S.isPending?S.variables?.path?.id??null:null,ee=()=>{let n=T.trim(),r=k.trim();!n||!r||v.mutate({path:{assistant_id:e},body:{provider_key:t,client_id:n,client_secret:r}})},q=()=>{let t=F;I(null),t&&y.mutate({path:{assistant_id:e,id:t.id}})},J=t=>{x.mutate({path:{assistant_id:e,appId:t.id},body:{callback_transport:`gateway`,scopes:[]}})};return o.isLoading?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,Q.jsx)(O,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[d.length===0||C?(0,Q.jsx)(f.Root,{children:(0,Q.jsxs)(f.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:d.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.`})]}),p?(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)(H,{type:`text`,value:p,readOnly:!0,fullWidth:!0}),(0,Q.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>{De(p,{successMessage:`Copied to clipboard!`,errorMessage:`Couldn't copy the redirect URL.`,onCopied:()=>{N(!0),setTimeout(()=>N(!1),2e3)}})},"aria-label":j?`Copied`:`Copy redirect URL`,iconOnly:j?(0,Q.jsx)(b,{"aria-hidden":!0}):(0,Q.jsx)(m,{"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)(H,{label:`Client ID`,type:`text`,value:T,onChange:e=>D(e.target.value),placeholder:`Enter your client ID`,fullWidth:!0}),(0,Q.jsx)(H,{label:`Client Secret`,type:`password`,value:k,onChange:e=>A(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:[d.length>0?(0,Q.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>{w(!1),D(``),A(``)},disabled:B,children:`Cancel`}):null,(0,Q.jsx)(a,{type:`button`,size:`compact`,onClick:ee,disabled:B||!T.trim()||!k.trim(),leftIcon:B?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(M,{"aria-hidden":!0}),children:`Add App`})]})]})}):null,d.map(e=>{let i=g[e.id]??[],o=V===e.id,s=U===e.id;return(0,Q.jsx)(f.Root,{children:(0,Q.jsxs)(f.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:Ue(e.client_id)}),(0,Q.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Added `,We(e.created_at)]})]}),(0,Q.jsx)(a,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>I(e),disabled:o,"aria-label":`Delete OAuth app ${Ue(e.client_id)}`,iconOnly:o?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(R,{"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 o=W===i.id;return(0,Q.jsxs)(`li`,{className:`flex items-center gap-3 px-3 py-2`,children:[(0,Q.jsx)(P,{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)(a,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>z({appId:e.id,connection:i}),disabled:o,"aria-label":`Disconnect ${i.account_info??`${n} account`}`,iconOnly:o?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(R,{"aria-hidden":!0})})]},i.id)})}):null,(0,Q.jsx)(a,{type:`button`,size:`compact`,onClick:()=>J(e),disabled:s,className:`w-full`,leftIcon:s?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(E,{"aria-hidden":!0}),children:s?`Waiting for authorization...`:`Connect account`})]})},e.id)}),d.length>0&&!C?(0,Q.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>w(!0),className:`w-full border-dashed`,leftIcon:(0,Q.jsx)(M,{"aria-hidden":!0}),children:`Add Another App`}):null,(0,Q.jsx)(K,{open:F!==null,title:`Delete OAuth app`,message:F?`Delete OAuth app '${Ue(F.client_id)}'? This will disconnect all linked accounts.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:q,onCancel:()=>I(null)}),(0,Q.jsx)(K,{open:L!==null,title:`Disconnect ${n}?`,message:L?`Disconnect ${L.connection.account_info??`${n} Account`}? You can reconnect later.`:``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{let t=L;z(null),t&&S.mutate({path:{assistant_id:e,id:t.connection.id}},{onSuccess:()=>{let r=he({path:{assistant_id:e,appId:t.appId}});i.invalidateQueries({queryKey:r}),i.invalidateQueries({queryKey:_}),G.success(`${n} account disconnected.`)},onError:e=>{G.error(e.message||`Failed to disconnect account`)}})},onCancel:()=>z(null)})]})}var Ke={};function qe(e){return Ke[e]??[]}var Je=[{value:`managed`,label:`Managed`},{value:`your-own`,label:`Your Own`}];function Ye({assistantId:e,platformAssistantId:t,providerKey:n,displayName:r,description:i,logoUrl:o,platformGate:s,onClose:u}){let d=c(),f=s===`full`,p=!oe(),[m,h]=(0,Z.useState)(s===`gated`&&p?`your-own`:`managed`);(0,Z.useEffect)(()=>{!p&&m===`your-own`&&h(`managed`)},[p,m]);let[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),x=Se({path:{assistant_id:t}}),{data:S,isLoading:C}=l({...X({path:{assistant_id:t}}),enabled:f}),w=(S??[]).filter(e=>e.provider===n&&e.connected),{handleConnect:T,oauthInProgress:E,startOAuthPending:D}=Ve({assistantId:e,providerKey:n,displayName:r,managedAvailable:f,connectionsQueryKey:x,allConnections:S}),O={path:{assistant_id:t}},k=be({onSuccess(e,t){G.success(`${r} account disconnected.`);let n=t.path.connection_id;xe(d,O,e=>e?.filter(e=>e.id!==n)),d.invalidateQueries({queryKey:x}),v(null)},onError(e){let t=J(e,void 0,`Failed to disconnect ${r} account.`);G.error(t),v(null)}});Te(),(0,Z.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),u())};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[u]);let A=e=>{b(e)},j=()=>{let e=y;b(null),e&&(v(e.id),k.mutate({path:{assistant_id:t,connection_id:e.id}}))},M=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)(P,{providerKey:n,displayName:r,logoUrl:o,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:M})]})]}),(0,Q.jsx)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(z,{}),"aria-label":`Close`,onClick:u})]}),(0,Q.jsxs)(`div`,{className:`space-y-4 px-5 py-4`,children:[s!==`gated`&&p&&(0,Q.jsx)(g,{ariaLabel:`OAuth mode`,items:Je,value:m,onChange:h}),m===`managed`&&s!==`gated`?s===`disabled`?(0,Q.jsx)(Ie,{children:`Log in to the Vellum platform to manage OAuth connections.`}):(0,Q.jsx)(He,{displayName:r,providerKey:n,logoUrl:o,connections:w,connectionsLoading:C,startPending:D,oauthInProgress:E,disconnectingId:k.isPending?_:null,onConnect:T,onDisconnect:A,connectPresets:qe(n)}):p?(0,Q.jsx)(Ge,{assistantId:e,providerKey:n,displayName:r,logoUrl:o}):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)(a,{variant:`outlined`,size:`compact`,onClick:u,children:`Confirm`})})]}),(0,Q.jsx)(K,{open:y!==null,title:`Disconnect ${r}?`,message:y?`Disconnect ${y.account_label??`${r} Account`}? You can reconnect later.`:``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:j,onCancel:()=>b(null)})]})}function Xe({platformAssistantId:e,providerKey:t,displayName:n,description:r,logoUrl:i,connection:o,platformGate:s,onConfigure:l}){let u=c(),d=!!o?.connected,[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(!1),_=Se({path:{assistant_id:e}}),v={path:{assistant_id:e}},y=be({onSuccess(e,t){G.success(`${n} account disconnected.`);let r=t.path.connection_id;xe(u,v,e=>e?.filter(e=>e.id!==r)),u.invalidateQueries({queryKey:_})},onError(e){let t=J(e,void 0,`Failed to disconnect ${n} account.`);G.error(t)}}),b=()=>{o?.id&&g(!0)};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(f.Root,{children:(0,Q.jsxs)(f.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,Q.jsx)(P,{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})]}),d&&s===`full`?(0,Q.jsx)(`div`,{className:`shrink-0`,children:(0,Q.jsx)(Ze,{displayName:n,open:p,onOpenChange:m,onEditConnections:()=>{m(!1),l()},onDisable:()=>{m(!1),b()},disablePending:y.isPending})}):(0,Q.jsx)(a,{variant:`primary`,onClick:l,className:`shrink-0`,children:`Enable`})]})}),(0,Q.jsx)(K,{open:h,title:`Disconnect ${n}?`,message:`Disconnect your ${n} account? You can reconnect it later.`,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{g(!1),o?.id&&y.mutate({path:{assistant_id:e,connection_id:o.id}})},onCancel:()=>g(!1)})]})}function Ze({displayName:e,open:t,onOpenChange:n,onEditConnections:r,onDisable:i,disablePending:o}){return Ee()?(0,Q.jsxs)(p.Root,{open:t,onOpenChange:n,children:[(0,Q.jsx)(p.Trigger,{asChild:!0,children:(0,Q.jsx)(a,{variant:`outlined`,rightIcon:(0,Q.jsx)(x,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,Q.jsxs)(p.Content,{children:[(0,Q.jsx)(p.Header,{children:(0,Q.jsx)(p.Title,{children:e})}),(0,Q.jsxs)(p.Body,{children:[(0,Q.jsx)(h,{icon:j,label:`Edit connections`,onSelect:r}),(0,Q.jsx)(h,{icon:o?O:T,label:`Disable`,onSelect:()=>{o||i()}})]})]})]}):(0,Q.jsxs)(V.Root,{open:t,onOpenChange:n,children:[(0,Q.jsx)(V.Trigger,{asChild:!0,children:(0,Q.jsx)(a,{variant:`outlined`,rightIcon:(0,Q.jsx)(x,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,Q.jsxs)(V.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,Q.jsx)(a,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:r,className:`w-full justify-start rounded-none`,leftIcon:(0,Q.jsx)(j,{"aria-hidden":!0}),children:`Edit connections`}),(0,Q.jsx)(a,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:i,disabled:o,className:`w-full justify-start rounded-none`,leftIcon:o?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(T,{"aria-hidden":!0}),children:`Disable`})]})]})}var Qe=[{value:`none`,label:`None`},{value:`oauth`,label:`OAuth`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],$e=[{value:`sse`,label:`SSE`},{value:`streamable-http`,label:`Streamable HTTP`},{value:`stdio`,label:`Stdio (command)`}];function et({open:e,onClose:t,onAdd:n,isPending:r}){let[i,o]=(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)(()=>{o(``),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)(W.Root,{open:e,onOpenChange:e=>{e||w()},children:(0,Q.jsxs)(W.Content,{size:`md`,children:[(0,Q.jsxs)(W.Header,{icon:ze,children:[(0,Q.jsx)(W.Title,{children:`Add MCP Server`}),(0,Q.jsx)(W.Description,{children:`Connect to a Model Context Protocol server to extend available tools.`})]}),(0,Q.jsx)(W.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)(H,{id:`mcp-name`,type:`text`,value:i,onChange:e=>o(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:$e.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)(H,{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)(H,{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)(H,{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:Qe.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)(H,{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)(H,{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)(H,{id:`mcp-apikey-value`,type:`password`,value:x,onChange:e=>S(e.target.value),placeholder:`sk_...`,fullWidth:!0})]})]}):null]})]})}),(0,Q.jsxs)(W.Footer,{children:[(0,Q.jsx)(a,{variant:`ghost`,onClick:w,disabled:r,children:`Cancel`}),(0,Q.jsx)(a,{variant:`primary`,onClick:T,disabled:!D||r,children:r?`Adding...`:`Add Server`})]})]})})}async function tt(e){let{data:t,response:n}=await Y.get({url:`/v1/assistants/{assistant_id}/internal/mcp/list`,path:{assistant_id:e}});if(!n?.ok)throw Error(`Failed to fetch MCP servers: ${n?.status}`);return t}async function nt(e){let{data:t,response:n}=await Y.get({url:`/v1/assistants/{assistant_id}/internal/mcp/tools-summary`,path:{assistant_id:e}});if(!n?.ok)throw Error(`Failed to fetch MCP tools summary: ${n?.status}`);return t}async function rt(e,t){let{response:n}=await Y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/update`,path:{assistant_id:e},body:t});if(!n?.ok)throw Error(`Failed to update MCP server: ${n?.status}`)}async function it(e,t){let{response:n}=await Y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/add`,path:{assistant_id:e},body:t});if(!n?.ok)throw Error(`Failed to add MCP server: ${n?.status}`)}async function at(e,t){let{response:n}=await Y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/remove`,path:{assistant_id:e},body:{name:t}});if(!n?.ok)throw Error(`Failed to remove MCP server: ${n?.status}`)}async function ot(e,t){let{data:n,response:r}=await Y.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 st(e,t){let{data:n,response:r}=await Y.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 ct(e,t){let{response:n}=await Y.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 lt(e){let{response:t}=await Y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/reload`,path:{assistant_id:e},body:{}});if(!t?.ok)throw Error(`Failed to reload MCP servers: ${t?.status}`)}var ut={connected:{icon:w,label:`Connected`,className:`text-[var(--system-positive-strong)]`},"needs-auth":{icon:D,label:`Needs Auth`,className:`text-[var(--system-warning-strong)]`},disabled:{icon:N,label:`Disabled`,className:`text-[var(--content-tertiary)]`}},dt={icon:C,label:`Error`,className:`text-[var(--system-negative-strong)]`};function ft({server:e,toolsSummary:t,onToggleEnabled:n,onRemove:r,onConfigure:i,onAuthenticate:o,onRevokeOAuth:s,isUpdating:c,isAuthenticating:l,isRevoking:u}){let[d,p]=(0,Z.useState)(!1),m=ut[e.status]??dt,h=m.icon,g=(0,Z.useCallback)(t=>n(e.id,t),[n,e.id]),_=(0,Z.useCallback)(()=>r(e.id),[r,e.id]),y=(0,Z.useCallback)(()=>i(e.id),[i,e.id]),b=(0,Z.useCallback)(()=>o(e.id),[o,e.id]),C=(0,Z.useCallback)(()=>s(e.id),[s,e.id]),w=(0,Z.useCallback)(()=>p(e=>!e),[]);return(0,Q.jsx)(f.Root,{children:(0,Q.jsxs)(f.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 ${m.className}`,children:[(0,Q.jsx)(h,{className:`h-3.5 w-3.5`}),m.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)(O,{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)(a,{variant:`ghost`,size:`compact`,leftIcon:(0,Q.jsx)(k,{}),onClick:b,disabled:l,children:l?`Authenticating...`:`Authenticate`}):null,e.hasOAuth?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(a,{variant:`ghost`,size:`compact`,leftIcon:(0,Q.jsx)(F,{}),onClick:b,disabled:l,tooltip:`Re-authenticate OAuth`,children:`Re-auth`}),(0,Q.jsx)(a,{variant:`dangerGhost`,size:`compact`,leftIcon:(0,Q.jsx)(A,{}),onClick:C,disabled:u,tooltip:`Revoke OAuth credentials`,children:u?`Revoking...`:`Revoke`})]}):null,(0,Q.jsx)(U,{checked:e.enabled,onChange:g,disabled:c,"aria-label":`${e.enabled?`Disable`:`Enable`} ${e.id}`}),(0,Q.jsx)(a,{variant:`ghost`,size:`compact`,onClick:y,tooltip:`Configure`,children:`Configure`}),(0,Q.jsx)(a,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(R,{}),onClick:_,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:w,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)(x,{className:`h-3.5 w-3.5`}):(0,Q.jsx)(S,{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)(v,{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 pt=[{value:`none`,label:`None`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],mt=[`low`,`medium`,`high`];function ht({server:e,toolsSummary:t,onClose:n,onSave:r,isPending:i}){let[o,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()!==``,a=t||n||i,s;s=a?c===`none`?null:c===`bearer`&&u.trim()?{Authorization:`Bearer ${u.trim()}`}:c===`api-key`&&f.trim()&&m.trim()?{[f.trim()]:m.trim()}:void 0:void 0,r(e.id,{name:e.id,defaultRiskLevel:o,...s===void 0?{}:{headers:s}})},[e,o,c,u,f,m,r]),_=(0,Z.useCallback)(()=>{i||n()},[i,n]);return e?(0,Q.jsx)(W.Root,{open:!!e,onOpenChange:e=>{e||_()},children:(0,Q.jsxs)(W.Content,{size:`lg`,children:[(0,Q.jsxs)(W.Header,{icon:ze,children:[(0,Q.jsx)(W.Title,{children:e.id}),(0,Q.jsxs)(W.Description,{children:[e.transport.type,` transport · `,e.status]})]}),(0,Q.jsx)(W.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:o,onChange:e=>s(e.target.value),className:`w-full rounded-md border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-1.5 text-body-medium-default text-[var(--content-default)] outline-none focus:ring-2 focus:ring-[var(--ring)]`,children:mt.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:pt.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)(H,{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)(H,{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)(H,{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)(W.Footer,{children:[(0,Q.jsx)(a,{variant:`ghost`,onClick:_,disabled:i,children:`Cancel`}),(0,Q.jsx)(a,{variant:`primary`,onClick:g,disabled:i,children:i?`Saving...`:`Save`})]})]})}):null}var gt=`mcp-servers`,_t=`mcp-tools-summary`,vt=`Help me set up an MCP server to extend you with external tools.`;function yt(){let e=Le(),t=c(),n=o(),r=we.use.mcpAddServer(),i=we.use.hasHydrated(),[s,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(new Set),[_,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(!1),[C,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(null),[D,k]=(0,Z.useState)(null),{data:A,isLoading:j,isError:N}=l({queryKey:[gt,e],queryFn:()=>tt(e)}),{data:P}=l({queryKey:[_t,e],queryFn:()=>nt(e)}),I=(0,Z.useCallback)(()=>{t.invalidateQueries({queryKey:[gt,e]}),t.invalidateQueries({queryKey:[_t,e]})},[t,e]),L=(0,Z.useMemo)(()=>{let e=new Map;if(P)for(let t of P.servers)e.set(t.serverId,t);return e},[P]),R=(0,Z.useMemo)(()=>!d||!A?null:A.servers.find(e=>e.id===d)??null,[d,A]),z=(0,Z.useCallback)(async(t,n)=>{g(e=>new Set(e).add(t));try{await rt(e,{name:t,enabled:n}),I()}catch{G.error(`Failed to ${n?`enable`:`disable`} ${t}`)}finally{g(e=>{let n=new Set(e);return n.delete(t),n})}},[e,I]),B=(0,Z.useCallback)(async()=>{if(p){b(!0);try{await at(e,p),I(),G.success(`Removed ${p}`),m(null)}catch{G.error(`Failed to remove ${p}`)}finally{b(!1)}}},[p,e,I]),V=(0,Z.useCallback)(async t=>{E(t);let n;try{n=await ot(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`),I();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 st(e,t);if(n.status===`complete`){G.success(`${t} authenticated successfully`),I();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),I()}},[e,I]),H=(0,Z.useCallback)(async t=>{k(t);try{await ct(e,t),I(),G.success(`OAuth credentials revoked for ${t}`)}catch{G.error(`Failed to revoke OAuth for ${t}`)}finally{k(null)}},[e,I]),U=(0,Z.useCallback)(async t=>{let n=t.autoAuth?window.open(`about:blank`,`_blank`,`noopener`):null;v(!0);try{await it(e,t),I(),G.success(`Added ${t.name}`),u(!1)}catch{G.error(`Failed to add ${t.name}`),n?.close(),v(!1);return}if(v(!1),t.autoAuth){E(t.name);try{let r=await ot(e,t.name);if(r.already_authenticated){n?.close(),G.success(`${t.name} is already authenticated`),I();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 st(e,t.name);if(n.status===`complete`){G.success(`${t.name} authenticated successfully`),I();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),I()}}},[e,I]),W=(0,Z.useCallback)(async(t,n)=>{S(!0);try{await rt(e,n),I(),G.success(`Updated ${t}`),f(null)}catch{G.error(`Failed to update ${t}`)}finally{S(!1)}},[e,I]),ee=(0,Z.useCallback)(async()=>{w(!0);try{await lt(e),I(),G.success(`MCP servers reloaded`)}catch{G.error(`Failed to reload MCP servers`)}finally{w(!1)}},[e,I]),q=(0,Z.useCallback)(()=>{r?u(!0):Ce(n,{prompt:vt})},[r,n]),J=A?.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)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(F,{className:C?`animate-spin`:``}),onClick:ee,disabled:C,tooltip:`Reload all servers`,"aria-label":`Reload MCP servers`}),r?(0,Q.jsx)(a,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(M,{}),onClick:()=>u(!0),children:`Add Server`}):null]})]}),P?(0,Q.jsxs)(`div`,{className:`flex gap-4 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsxs)(`span`,{children:[P.totalToolCount,` total`,` `,P.totalToolCount===1?`tool`:`tools`]}),(0,Q.jsxs)(`span`,{children:[`~`,P.totalEstimatedTokens.toLocaleString(),` total tokens`]})]}):null,j?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(O,{className:`h-4 w-4 animate-spin`}),(0,Q.jsx)(`span`,{children:`Loading MCP servers...`})]}):N?(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.`}):J.length===0?(0,Q.jsxs)(`button`,{type:`button`,onClick:q,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)(ze,{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:J.map(e=>(0,Q.jsx)(ft,{server:e,toolsSummary:L.get(e.id),onToggleEnabled:z,onRemove:m,onConfigure:f,onAuthenticate:V,onRevokeOAuth:H,isUpdating:h.has(e.id),isAuthenticating:T===e.id,isRevoking:D===e.id},e.id))}),r?(0,Q.jsx)(et,{open:s,onClose:()=>u(!1),onAdd:U,isPending:_}):null,(0,Q.jsx)(ht,{server:R,toolsSummary:d?L.get(d):void 0,onClose:()=>f(null),onSave:W,isPending:x}),(0,Q.jsx)(K,{open:!!p,title:`Remove MCP Server`,message:`Are you sure you want to remove "${p}"? This will disconnect all tools provided by this server.`,confirmLabel:`Remove`,destructive:!0,isPending:y,onConfirm:B,onCancel:()=>m(null)})]})}function bt(){return(0,Q.jsx)(yt,{})}var xt=`vellum:integrations:bannerDismissed`,St=[{value:`all`,labelKey:`integrationsPage.filterAll`},{value:`enabled`,labelKey:`integrationsPage.filterEnabled`},{value:`not-enabled`,labelKey:`integrationsPage.filterNotEnabled`}];function $(e,t){return e?.find(e=>e.provider===t)??null}function Ct(e){return e===`mcp`?`mcp`:`oauth`}function wt(){let{t:e}=q(`settings`),[i]=s(),a=o(),c=ae(),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(!0),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(`all`),[v,y]=(0,Z.useState)(!0),[b,x]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{y(t(xt,`false`)===`true`)},[]);let S=()=>{y(!0),n(xt,`true`)};(0,Z.useEffect)(()=>{let e=!0;return(async()=>{try{let t=await ne();e&&t.ok&&d(t.data)}catch(e){r(e,{context:`integrations.getAssistant`})}finally{e&&p(!1)}})(),()=>{e=!1}},[]);let{platformAssistantId:C,isLoading:w}=Re(u?.id,c===`full`),{data:T,isLoading:E,isError:D}=l({...ce({path:{assistant_id:u?.id??``}}),select:e=>e.providers,enabled:!!u}),{data:k,isLoading:A}=l({...X({path:{assistant_id:C??``}}),enabled:!!C&&c===`full`});(0,Z.useEffect)(()=>{let e=i.get(`oauth_status`);if(!e)return;let t=i.get(`oauth_provider`),n=t?t.charAt(0).toUpperCase()+t.slice(1):null;if(e===`connected`)G.success(n?`${n} account connected successfully.`:`Account connected successfully.`);else if(e===`error`){let e=i.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.`}[e]??(n?`Failed to connect ${n}.`:`Failed to connect. Please try again.`))}a(ie.settings.integrations,{replace:!0})},[i,a]);let j=(0,Z.useMemo)(()=>T?.filter(e=>e.supports_managed_mode)??[],[T]),M=(0,Z.useMemo)(()=>{let e=m.trim().toLowerCase(),t=j.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 g!==`all`&&(t=t.filter(e=>{let t=!!$(k,e.provider_key)?.connected;return g===`enabled`?t:!t})),[...t].sort((e,t)=>{let n=!!$(k,e.provider_key)?.connected;if(n!==!!$(k,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)})},[j,k,m,g]),N=f||E||A||w,P=(()=>{if(m.trim())return`No integrations matched`;switch(g){case`enabled`:return`No Enabled Integrations`;case`not-enabled`:return`All Integrations Are Enabled`;default:return`No Integrations Available`}})(),F=(()=>{if(m.trim())return`No integrations matched "${m.trim()}"`;switch(g){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.`}})(),R=(0,Z.useMemo)(()=>b?j.find(e=>e.provider_key===b)??null:null,[j,b]),z=St.map(({value:t,labelKey:n})=>({value:t,label:e(n)}));return(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[!v&&(0,Q.jsxs)(B,{tone:`info`,icon:(0,Q.jsx)(L,{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)(H,{type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`Search Integrations`,"aria-label":`Search integrations`,leftIcon:(0,Q.jsx)(I,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,wrapperClassName:`flex-1`}),(0,Q.jsx)(ee,{options:z,value:g,onChange:_,"aria-label":e(`integrationsPage.filterAriaLabel`),menuAlign:`end`,className:`w-36 shrink-0`})]}),(0,Q.jsx)(`div`,{children:N?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(O,{className:`h-4 w-4 animate-spin`}),(0,Q.jsx)(`span`,{children:`Loading...`})]}):D?(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Failed to load integrations. Please try again.`}):u?M.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)(I,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,Q.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:P}),(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:F})]}):(0,Q.jsx)(`div`,{className:`space-y-2`,children:M.map(e=>(0,Q.jsx)(Xe,{platformAssistantId:C??u.id,providerKey:e.provider_key,displayName:e.display_name??e.provider_key,description:e.description,logoUrl:e.logo_url,connection:$(k,e.provider_key),platformGate:c,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.`})}),R&&u&&(0,Q.jsx)(Ye,{assistantId:u.id,platformAssistantId:C??u.id,providerKey:R.provider_key,displayName:R.display_name??R.provider_key,description:R.description,logoUrl:R.logo_url,platformGate:c,onClose:()=>x(null)})]})}function Tt(){let[e,t]=s(),n=Ct(e.get(`tab`));return(0,Q.jsx)(`div`,{className:`space-y-6`,children:(0,Q.jsxs)(_.Root,{value:n,onValueChange:n=>{let r=Ct(n),i=new URLSearchParams(e);r===`mcp`?i.set(`tab`,`mcp`):i.delete(`tab`),t(i,{replace:!0})},children:[(0,Q.jsxs)(_.List,{children:[(0,Q.jsx)(_.Trigger,{value:`oauth`,children:`OAuth`}),(0,Q.jsx)(_.Trigger,{value:`mcp`,children:`MCP`})]}),(0,Q.jsx)(_.Panel,{value:`oauth`,className:`pt-4`,children:(0,Q.jsx)(Z.Suspense,{children:(0,Q.jsx)(wt,{})})}),(0,Q.jsx)(_.Panel,{value:`mcp`,className:`pt-4`,children:(0,Q.jsx)(bt,{})})]})})}export{Tt as IntegrationsPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,l as n}from"./local-settings-Bx7FsNo5.js";import{t as r}from"./capture-error-DiNp24s6.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-VkxVX0DM.js";import{d as o,h as s}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as c}from"./QueryClientProvider-EuRl-wrW.js";import{t as l}from"./useQuery-CTSuec5b.js";import{t as u}from"./useQueries-Bimdc7uA.js";import{t as d}from"./jsx-runtime-BJ8jcmzB.js";import{t as f}from"./card-DUsAeHUS.js";import{a as p,d as m,n as h,o as g,s as _,t as v}from"./list-row-CDwzGT9g.js";import{t as y}from"./createLucideIcon-B-ZPaMbU.js";import{t as b}from"./check-pgeLaeXx.js";import{t as x}from"./chevron-down-CmQCCo_x.js";import{t as S}from"./chevron-right-Dwr_Sx98.js";import{t as C}from"./circle-alert-DvkPmyIg.js";import{t as w}from"./circle-check-BlOeCme9.js";import{t as T}from"./circle-x-CEXUbdoO.js";import{t as E}from"./external-link-B-pfCiUo.js";import{t as D}from"./key-round-C51ZTEMu.js";import{t as O}from"./loader-circle-DYe85z3g.js";import{t as k}from"./log-in-BsEhSW6v.js";import{t as A}from"./log-out-Dvz6dWwJ.js";import{t as j}from"./pencil-Ba0D7tjH.js";import{t as M}from"./plus-CWkbiq1y.js";import{n as N,t as P}from"./integration-icon-DbmKvxqf.js";import{t as F}from"./refresh-cw-p138DTtp.js";import{t as I}from"./search-D_t5oHhF.js";import{t as L}from"./sparkles-Bhr0JiLM.js";import{t as R}from"./trash-2-V2WT_DbX.js";import{t as z}from"./x-zfSDUG5z.js";import{t as B}from"./notice-BlYF-xU3.js";import{t as V}from"./popover-D3A6cIyW.js";import{t as H}from"./input-DkgpMeG9.js";import{t as U}from"./toggle-0qt1e_3r.js";import{t as W}from"./modal-UYNawsIu.js";import{n as G}from"./toast-DqqWkjsh.js";import{t as K}from"./confirm-dialog-Drw1adml.js";import{t as ee}from"./select-BKyejRky.js";import"./i18n-C9hRT4Lf.js";import{t as q}from"./useTranslation-D9pPv-bA.js";import{i as J}from"./api-errors-CASENJGT.js";import{J as te}from"./auth-store-CVtcHK0b.js";import{Qr as Y}from"./sdk.gen-CiE6cMi0.js";import{r as ne}from"./api-Cx3i50oG.js";import{m as re}from"./native-biometric-D9IxNvJM.js";import{d as ie}from"./routes-B7wRw3UT.js";import{i as ae,t as oe}from"./use-platform-gate-DG9Xg3Hs.js";import{ct as se,dt as ce,fn as le,hn as ue,lt as de,mn as fe,ot as pe,pn as me,st as he,ut as ge}from"./react-query.gen-Bbh5MII3.js";import{n as _e,r as ve}from"./browser-Ca2R8csw.js";import{Dt as ye,Et as be,S as xe,b as X,x as Se}from"./react-query.gen-CwRPAiHT.js";import{r as Ce}from"./conversation-navigation-B_4jZ9Z2.js";import{t as we}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as Te}from"./use-body-scroll-lock-DmT5-Tka.js";import{t as Ee}from"./use-touch-mobile-CnqGLpCj.js";import{t as De}from"./copy-to-clipboard-D76_3Coc.js";import{a as Oe,i as ke,n as Ae,r as je}from"./oauth-connection-utils-19Tfw-lp.js";import{a as Me,i as Ne,n as Pe,t as Fe}from"./oauth-popup-CrXEFWPi.js";import{t as Ie}from"./platform-login-notice-CvFpWLJY.js";import{t as Le}from"./use-active-assistant-id-BADYKVyx.js";import{t as Re}from"./use-platform-assistant-id-B7TrEBmf.js";var ze=y(`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`}]]),Be=y(`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`}]]),Z=e(i(),1);function Ve({assistantId:e,providerKey:t,displayName:n,managedAvailable:r,connectionsQueryKey:i,allConnections:a}){let o=c(),s=re(),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),[p,m]=(0,Z.useState)(!1),h=()=>{u.current=null,m(!1)},g=()=>{l.current&&!l.current.closed&&l.current.close(),l.current=null,d.current&&=(clearInterval(d.current),null),f.current&&=(clearTimeout(f.current),null)},_=(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(),h(),t===`connected`)G.success(`${n} account connected.`),o.invalidateQueries({queryKey:i});else{let e=r?`Error: ${r}`:`Authorization failed`;G.error(`${n} ${e}`)}},[i,n,o]),v=(0,Z.useCallback)(async(e,n)=>{if(!r)return!1;for(let r=0;r<8;r+=1){r>0&&await ke(750);try{if(o.invalidateQueries({queryKey:i}),je(await o.fetchQuery({...X({path:{assistant_id:e}}),staleTime:0}),t,n))return!0}catch{}}return!1},[i,r,t,o]);(0,Z.useEffect)(()=>{let e=e=>{let t=u.current;if(!t)return;let n=Fe(e,window.location.origin,t.requestId);n&&_(n)},t=e=>{let t=u.current;if(!t)return;let n=Pe(e,t.requestId);n&&(_(n),window.localStorage.removeItem(Ne(t.requestId)))};return window.addEventListener(`message`,e),window.addEventListener(`storage`,t),()=>{window.removeEventListener(`message`,e),window.removeEventListener(`storage`,t)}},[_]),Oe((0,Z.useCallback)(e=>{let t=u.current;t&&e.requestId===t.requestId&&_({type:`vellum:oauth-complete`,requestId:e.requestId,oauthStatus:e.oauthStatus,oauthProvider:e.oauthProvider,oauthCode:e.oauthCode})},[_])),(0,Z.useEffect)(()=>ve(()=>{let e=u.current;e&&(async()=>{let t=await v(e.platformAssistantId,e.baselineConnectionSignatures);u.current&&(h(),t&&G.success(`${n} account connected.`))})()}),[v,n]),(0,Z.useEffect)(()=>()=>{d.current&&clearInterval(d.current),f.current&&clearTimeout(f.current),l.current&&!l.current.closed&&l.current.close()},[]);let y=ye();return{handleConnect:(i=[])=>{if(!r)return;let c=crypto.randomUUID();m(!0);let p=async r=>{let l;try{l=await te(e)}catch(e){g(),h(),G.error(e instanceof Error?e.message:`Failed to start ${n} authorization.`);return}let d=Ae(await o.fetchQuery({...X({path:{assistant_id:l}}),staleTime:0}).catch(()=>l===e?a??[]:[]),t);u.current={requestId:c,provider:t,platformAssistantId:l,baselineConnectionSignatures:d},y.mutate({path:{assistant_id:l,provider:t},body:{requested_scopes:i,redirect_after_connect:`${ie.account.oauth.popupComplete}?requestId=${c}${s?`&native=1`:``}`}},{onSuccess(e){if(s){_e(e.connect_url);return}r&&!r.closed?r.location.href=e.connect_url:u.current&&(g(),h(),G.error(`${n} connection failed: popup closed.`))},onError(e){g(),h();let t=J(e,void 0,`Failed to start ${n} authorization.`);G.error(t)}})};if(s){p(null);return}let b=window.open(``,`_blank`,`width=500,height=600`);if(b===null){h(),G.error(`Popup blocked. Please enable popups and try again.`);return}l.current=b,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(Ne(e.requestId));if(t){let n=Me(t);if(n&&n.requestId===e.requestId){_(n),window.localStorage.removeItem(Ne(e.requestId));return}}let r=await v(e.platformAssistantId,e.baselineConnectionSignatures);if(u.current){if(r){g(),h(),G.success(`${n} account connected.`);return}g(),h(),G.error(`${n} connection failed: authorization popup closed.`)}},1e3))},100),p(b)},oauthInProgress:p,startOAuthPending:y.isPending}}var Q=d();function He({displayName:e,providerKey:t,logoUrl:n,connections:r,connectionsLoading:i,startPending:o,oauthInProgress:s,disconnectingId:c,onConnect:l,onDisconnect:u,connectPresets:d=[]}){let f=o||s;return i?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,Q.jsx)(O,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})}):r.length===0?o||s?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-10`,children:[(0,Q.jsx)(P,{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)(O,{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)(P,{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)(a,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(M,{}),onClick:()=>l(),disabled:f,children:`Connect Account`}),d.map(e=>(0,Q.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,Q.jsx)(Be,{}),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)(P,{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)(a,{variant:`dangerOutline`,size:`compact`,iconOnly:i?(0,Q.jsx)(O,{className:`animate-spin`}):(0,Q.jsx)(R,{}),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)(O,{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)(a,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(E,{}),onClick:()=>l(),disabled:f,children:`Connect account`}),d.map(e=>(0,Q.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,Q.jsx)(Be,{}),onClick:()=>l(e.scopes),disabled:f,children:e.label},e.id))]})})]})}function Ue(e){return e.length>16?`${e.slice(0,12)}…${e.slice(-4)}`:e.length>8?`${e.slice(0,8)}…`:e}function We(e){try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function Ge({assistantId:e,providerKey:t,displayName:n,logoUrl:r}){let i=c(),o=l({...se({path:{assistant_id:e},query:{provider_key:t}}),select:e=>e.apps}),s=l({...ge({path:{assistant_id:e,providerKey:t}}),select:e=>e.oauth_callback_url}),d=o.data??[],p=s.data??null,h=u({queries:d.map(t=>({...pe({path:{assistant_id:e,appId:t.id}}),select:e=>e.connections}))}),g={};d.forEach((e,t)=>{g[e.id]=h[t]?.data??[]});let _=de({path:{assistant_id:e},query:{provider_key:t}}),v=fe({onSuccess:()=>{i.invalidateQueries({queryKey:_}),D(``),A(``),w(!1),G.success(`${n} OAuth app added.`)},onError:e=>{G.error(e.message||`Failed to create OAuth app`)}}),y=me({onSuccess:()=>{i.invalidateQueries({queryKey:_}),G.success(`OAuth app deleted.`)},onError:e=>{G.error(e.message||`Failed to delete OAuth app`)}}),x=le({onSuccess:e=>{`auth_url`in e&&(window.location.href=e.auth_url)},onError:e=>{G.error(e.message||`Failed to start OAuth flow`)}}),S=ue(),[C,w]=(0,Z.useState)(!1),[T,D]=(0,Z.useState)(``),[k,A]=(0,Z.useState)(``),[j,N]=(0,Z.useState)(!1),[F,I]=(0,Z.useState)(null),[L,z]=(0,Z.useState)(null),B=v.isPending,V=y.isPending?y.variables?.path?.id??null:null,U=x.isPending?x.variables?.path?.appId??null:null,W=S.isPending?S.variables?.path?.id??null:null,ee=()=>{let n=T.trim(),r=k.trim();!n||!r||v.mutate({path:{assistant_id:e},body:{provider_key:t,client_id:n,client_secret:r}})},q=()=>{let t=F;I(null),t&&y.mutate({path:{assistant_id:e,id:t.id}})},J=t=>{x.mutate({path:{assistant_id:e,appId:t.id},body:{callback_transport:`gateway`,scopes:[]}})};return o.isLoading?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,Q.jsx)(O,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[d.length===0||C?(0,Q.jsx)(f.Root,{children:(0,Q.jsxs)(f.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:d.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.`})]}),p?(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)(H,{type:`text`,value:p,readOnly:!0,fullWidth:!0}),(0,Q.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>{De(p,{successMessage:`Copied to clipboard!`,errorMessage:`Couldn't copy the redirect URL.`,onCopied:()=>{N(!0),setTimeout(()=>N(!1),2e3)}})},"aria-label":j?`Copied`:`Copy redirect URL`,iconOnly:j?(0,Q.jsx)(b,{"aria-hidden":!0}):(0,Q.jsx)(m,{"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)(H,{label:`Client ID`,type:`text`,value:T,onChange:e=>D(e.target.value),placeholder:`Enter your client ID`,fullWidth:!0}),(0,Q.jsx)(H,{label:`Client Secret`,type:`password`,value:k,onChange:e=>A(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:[d.length>0?(0,Q.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>{w(!1),D(``),A(``)},disabled:B,children:`Cancel`}):null,(0,Q.jsx)(a,{type:`button`,size:`compact`,onClick:ee,disabled:B||!T.trim()||!k.trim(),leftIcon:B?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(M,{"aria-hidden":!0}),children:`Add App`})]})]})}):null,d.map(e=>{let i=g[e.id]??[],o=V===e.id,s=U===e.id;return(0,Q.jsx)(f.Root,{children:(0,Q.jsxs)(f.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:Ue(e.client_id)}),(0,Q.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Added `,We(e.created_at)]})]}),(0,Q.jsx)(a,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>I(e),disabled:o,"aria-label":`Delete OAuth app ${Ue(e.client_id)}`,iconOnly:o?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(R,{"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 o=W===i.id;return(0,Q.jsxs)(`li`,{className:`flex items-center gap-3 px-3 py-2`,children:[(0,Q.jsx)(P,{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)(a,{type:`button`,variant:`dangerOutline`,size:`compact`,onClick:()=>z({appId:e.id,connection:i}),disabled:o,"aria-label":`Disconnect ${i.account_info??`${n} account`}`,iconOnly:o?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(R,{"aria-hidden":!0})})]},i.id)})}):null,(0,Q.jsx)(a,{type:`button`,size:`compact`,onClick:()=>J(e),disabled:s,className:`w-full`,leftIcon:s?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(E,{"aria-hidden":!0}),children:s?`Waiting for authorization...`:`Connect account`})]})},e.id)}),d.length>0&&!C?(0,Q.jsx)(a,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>w(!0),className:`w-full border-dashed`,leftIcon:(0,Q.jsx)(M,{"aria-hidden":!0}),children:`Add Another App`}):null,(0,Q.jsx)(K,{open:F!==null,title:`Delete OAuth app`,message:F?`Delete OAuth app '${Ue(F.client_id)}'? This will disconnect all linked accounts.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:q,onCancel:()=>I(null)}),(0,Q.jsx)(K,{open:L!==null,title:`Disconnect ${n}?`,message:L?`Disconnect ${L.connection.account_info??`${n} Account`}? You can reconnect later.`:``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{let t=L;z(null),t&&S.mutate({path:{assistant_id:e,id:t.connection.id}},{onSuccess:()=>{let r=he({path:{assistant_id:e,appId:t.appId}});i.invalidateQueries({queryKey:r}),i.invalidateQueries({queryKey:_}),G.success(`${n} account disconnected.`)},onError:e=>{G.error(e.message||`Failed to disconnect account`)}})},onCancel:()=>z(null)})]})}var Ke={};function qe(e){return Ke[e]??[]}var Je=[{value:`managed`,label:`Managed`},{value:`your-own`,label:`Your Own`}];function Ye({assistantId:e,platformAssistantId:t,providerKey:n,displayName:r,description:i,logoUrl:o,platformGate:s,onClose:u}){let d=c(),f=s===`full`,p=!oe(),[m,h]=(0,Z.useState)(s===`gated`&&p?`your-own`:`managed`);(0,Z.useEffect)(()=>{!p&&m===`your-own`&&h(`managed`)},[p,m]);let[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),x=Se({path:{assistant_id:t}}),{data:S,isLoading:C}=l({...X({path:{assistant_id:t}}),enabled:f}),w=(S??[]).filter(e=>e.provider===n&&e.connected),{handleConnect:T,oauthInProgress:E,startOAuthPending:D}=Ve({assistantId:e,providerKey:n,displayName:r,managedAvailable:f,connectionsQueryKey:x,allConnections:S}),O={path:{assistant_id:t}},k=be({onSuccess(e,t){G.success(`${r} account disconnected.`);let n=t.path.connection_id;xe(d,O,e=>e?.filter(e=>e.id!==n)),d.invalidateQueries({queryKey:x}),v(null)},onError(e){let t=J(e,void 0,`Failed to disconnect ${r} account.`);G.error(t),v(null)}});Te(),(0,Z.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),u())};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[u]);let A=e=>{b(e)},j=()=>{let e=y;b(null),e&&(v(e.id),k.mutate({path:{assistant_id:t,connection_id:e.id}}))},M=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)(P,{providerKey:n,displayName:r,logoUrl:o,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:M})]})]}),(0,Q.jsx)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(z,{}),"aria-label":`Close`,onClick:u})]}),(0,Q.jsxs)(`div`,{className:`space-y-4 px-5 py-4`,children:[s!==`gated`&&p&&(0,Q.jsx)(g,{ariaLabel:`OAuth mode`,items:Je,value:m,onChange:h}),m===`managed`&&s!==`gated`?s===`disabled`?(0,Q.jsx)(Ie,{children:`Log in to the Vellum platform to manage OAuth connections.`}):(0,Q.jsx)(He,{displayName:r,providerKey:n,logoUrl:o,connections:w,connectionsLoading:C,startPending:D,oauthInProgress:E,disconnectingId:k.isPending?_:null,onConnect:T,onDisconnect:A,connectPresets:qe(n)}):p?(0,Q.jsx)(Ge,{assistantId:e,providerKey:n,displayName:r,logoUrl:o}):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)(a,{variant:`outlined`,size:`compact`,onClick:u,children:`Confirm`})})]}),(0,Q.jsx)(K,{open:y!==null,title:`Disconnect ${r}?`,message:y?`Disconnect ${y.account_label??`${r} Account`}? You can reconnect later.`:``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:j,onCancel:()=>b(null)})]})}function Xe({platformAssistantId:e,providerKey:t,displayName:n,description:r,logoUrl:i,connection:o,platformGate:s,onConfigure:l}){let u=c(),d=!!o?.connected,[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(!1),_=Se({path:{assistant_id:e}}),v={path:{assistant_id:e}},y=be({onSuccess(e,t){G.success(`${n} account disconnected.`);let r=t.path.connection_id;xe(u,v,e=>e?.filter(e=>e.id!==r)),u.invalidateQueries({queryKey:_})},onError(e){let t=J(e,void 0,`Failed to disconnect ${n} account.`);G.error(t)}}),b=()=>{o?.id&&g(!0)};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(f.Root,{children:(0,Q.jsxs)(f.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,Q.jsx)(P,{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})]}),d&&s===`full`?(0,Q.jsx)(`div`,{className:`shrink-0`,children:(0,Q.jsx)(Ze,{displayName:n,open:p,onOpenChange:m,onEditConnections:()=>{m(!1),l()},onDisable:()=>{m(!1),b()},disablePending:y.isPending})}):(0,Q.jsx)(a,{variant:`primary`,onClick:l,className:`shrink-0`,children:`Enable`})]})}),(0,Q.jsx)(K,{open:h,title:`Disconnect ${n}?`,message:`Disconnect your ${n} account? You can reconnect it later.`,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{g(!1),o?.id&&y.mutate({path:{assistant_id:e,connection_id:o.id}})},onCancel:()=>g(!1)})]})}function Ze({displayName:e,open:t,onOpenChange:n,onEditConnections:r,onDisable:i,disablePending:o}){return Ee()?(0,Q.jsxs)(p.Root,{open:t,onOpenChange:n,children:[(0,Q.jsx)(p.Trigger,{asChild:!0,children:(0,Q.jsx)(a,{variant:`outlined`,rightIcon:(0,Q.jsx)(x,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,Q.jsxs)(p.Content,{children:[(0,Q.jsx)(p.Header,{children:(0,Q.jsx)(p.Title,{children:e})}),(0,Q.jsxs)(p.Body,{children:[(0,Q.jsx)(h,{icon:j,label:`Edit connections`,onSelect:r}),(0,Q.jsx)(h,{icon:o?O:T,label:`Disable`,onSelect:()=>{o||i()}})]})]})]}):(0,Q.jsxs)(V.Root,{open:t,onOpenChange:n,children:[(0,Q.jsx)(V.Trigger,{asChild:!0,children:(0,Q.jsx)(a,{variant:`outlined`,rightIcon:(0,Q.jsx)(x,{}),"aria-haspopup":`menu`,"aria-expanded":t,children:`Configure`})}),(0,Q.jsxs)(V.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,Q.jsx)(a,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:r,className:`w-full justify-start rounded-none`,leftIcon:(0,Q.jsx)(j,{"aria-hidden":!0}),children:`Edit connections`}),(0,Q.jsx)(a,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:i,disabled:o,className:`w-full justify-start rounded-none`,leftIcon:o?(0,Q.jsx)(O,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(T,{"aria-hidden":!0}),children:`Disable`})]})]})}var Qe=[{value:`none`,label:`None`},{value:`oauth`,label:`OAuth`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],$e=[{value:`sse`,label:`SSE`},{value:`streamable-http`,label:`Streamable HTTP`},{value:`stdio`,label:`Stdio (command)`}];function et({open:e,onClose:t,onAdd:n,isPending:r}){let[i,o]=(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)(()=>{o(``),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)(W.Root,{open:e,onOpenChange:e=>{e||w()},children:(0,Q.jsxs)(W.Content,{size:`md`,children:[(0,Q.jsxs)(W.Header,{icon:ze,children:[(0,Q.jsx)(W.Title,{children:`Add MCP Server`}),(0,Q.jsx)(W.Description,{children:`Connect to a Model Context Protocol server to extend available tools.`})]}),(0,Q.jsx)(W.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)(H,{id:`mcp-name`,type:`text`,value:i,onChange:e=>o(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:$e.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)(H,{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)(H,{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)(H,{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:Qe.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)(H,{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)(H,{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)(H,{id:`mcp-apikey-value`,type:`password`,value:x,onChange:e=>S(e.target.value),placeholder:`sk_...`,fullWidth:!0})]})]}):null]})]})}),(0,Q.jsxs)(W.Footer,{children:[(0,Q.jsx)(a,{variant:`ghost`,onClick:w,disabled:r,children:`Cancel`}),(0,Q.jsx)(a,{variant:`primary`,onClick:T,disabled:!D||r,children:r?`Adding...`:`Add Server`})]})]})})}async function tt(e){let{data:t,response:n}=await Y.get({url:`/v1/assistants/{assistant_id}/internal/mcp/list`,path:{assistant_id:e}});if(!n?.ok)throw Error(`Failed to fetch MCP servers: ${n?.status}`);return t}async function nt(e){let{data:t,response:n}=await Y.get({url:`/v1/assistants/{assistant_id}/internal/mcp/tools-summary`,path:{assistant_id:e}});if(!n?.ok)throw Error(`Failed to fetch MCP tools summary: ${n?.status}`);return t}async function rt(e,t){let{response:n}=await Y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/update`,path:{assistant_id:e},body:t});if(!n?.ok)throw Error(`Failed to update MCP server: ${n?.status}`)}async function it(e,t){let{response:n}=await Y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/add`,path:{assistant_id:e},body:t});if(!n?.ok)throw Error(`Failed to add MCP server: ${n?.status}`)}async function at(e,t){let{response:n}=await Y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/remove`,path:{assistant_id:e},body:{name:t}});if(!n?.ok)throw Error(`Failed to remove MCP server: ${n?.status}`)}async function ot(e,t){let{data:n,response:r}=await Y.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 st(e,t){let{data:n,response:r}=await Y.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 ct(e,t){let{response:n}=await Y.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 lt(e){let{response:t}=await Y.post({url:`/v1/assistants/{assistant_id}/internal/mcp/reload`,path:{assistant_id:e},body:{}});if(!t?.ok)throw Error(`Failed to reload MCP servers: ${t?.status}`)}var ut={connected:{icon:w,label:`Connected`,className:`text-[var(--system-positive-strong)]`},"needs-auth":{icon:D,label:`Needs Auth`,className:`text-[var(--system-warning-strong)]`},disabled:{icon:N,label:`Disabled`,className:`text-[var(--content-tertiary)]`}},dt={icon:C,label:`Error`,className:`text-[var(--system-negative-strong)]`};function ft({server:e,toolsSummary:t,onToggleEnabled:n,onRemove:r,onConfigure:i,onAuthenticate:o,onRevokeOAuth:s,isUpdating:c,isAuthenticating:l,isRevoking:u}){let[d,p]=(0,Z.useState)(!1),m=ut[e.status]??dt,h=m.icon,g=(0,Z.useCallback)(t=>n(e.id,t),[n,e.id]),_=(0,Z.useCallback)(()=>r(e.id),[r,e.id]),y=(0,Z.useCallback)(()=>i(e.id),[i,e.id]),b=(0,Z.useCallback)(()=>o(e.id),[o,e.id]),C=(0,Z.useCallback)(()=>s(e.id),[s,e.id]),w=(0,Z.useCallback)(()=>p(e=>!e),[]);return(0,Q.jsx)(f.Root,{children:(0,Q.jsxs)(f.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 ${m.className}`,children:[(0,Q.jsx)(h,{className:`h-3.5 w-3.5`}),m.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)(O,{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)(a,{variant:`ghost`,size:`compact`,leftIcon:(0,Q.jsx)(k,{}),onClick:b,disabled:l,children:l?`Authenticating...`:`Authenticate`}):null,e.hasOAuth?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(a,{variant:`ghost`,size:`compact`,leftIcon:(0,Q.jsx)(F,{}),onClick:b,disabled:l,tooltip:`Re-authenticate OAuth`,children:`Re-auth`}),(0,Q.jsx)(a,{variant:`dangerGhost`,size:`compact`,leftIcon:(0,Q.jsx)(A,{}),onClick:C,disabled:u,tooltip:`Revoke OAuth credentials`,children:u?`Revoking...`:`Revoke`})]}):null,(0,Q.jsx)(U,{checked:e.enabled,onChange:g,disabled:c,"aria-label":`${e.enabled?`Disable`:`Enable`} ${e.id}`}),(0,Q.jsx)(a,{variant:`ghost`,size:`compact`,onClick:y,tooltip:`Configure`,children:`Configure`}),(0,Q.jsx)(a,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(R,{}),onClick:_,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:w,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)(x,{className:`h-3.5 w-3.5`}):(0,Q.jsx)(S,{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)(v,{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 pt=[{value:`none`,label:`None`},{value:`bearer`,label:`Bearer Token`},{value:`api-key`,label:`API Key`}],mt=[`low`,`medium`,`high`];function ht({server:e,toolsSummary:t,onClose:n,onSave:r,isPending:i}){let[o,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()!==``,a=t||n||i,s;s=a?c===`none`?null:c===`bearer`&&u.trim()?{Authorization:`Bearer ${u.trim()}`}:c===`api-key`&&f.trim()&&m.trim()?{[f.trim()]:m.trim()}:void 0:void 0,r(e.id,{name:e.id,defaultRiskLevel:o,...s===void 0?{}:{headers:s}})},[e,o,c,u,f,m,r]),_=(0,Z.useCallback)(()=>{i||n()},[i,n]);return e?(0,Q.jsx)(W.Root,{open:!!e,onOpenChange:e=>{e||_()},children:(0,Q.jsxs)(W.Content,{size:`lg`,children:[(0,Q.jsxs)(W.Header,{icon:ze,children:[(0,Q.jsx)(W.Title,{children:e.id}),(0,Q.jsxs)(W.Description,{children:[e.transport.type,` transport · `,e.status]})]}),(0,Q.jsx)(W.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:o,onChange:e=>s(e.target.value),className:`w-full rounded-md border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-1.5 text-body-medium-default text-[var(--content-default)] outline-none focus:ring-2 focus:ring-[var(--ring)]`,children:mt.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:pt.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)(H,{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)(H,{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)(H,{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)(W.Footer,{children:[(0,Q.jsx)(a,{variant:`ghost`,onClick:_,disabled:i,children:`Cancel`}),(0,Q.jsx)(a,{variant:`primary`,onClick:g,disabled:i,children:i?`Saving...`:`Save`})]})]})}):null}var gt=`mcp-servers`,_t=`mcp-tools-summary`,vt=`Help me set up an MCP server to extend you with external tools.`;function yt(){let e=Le(),t=c(),n=o(),r=we.use.mcpAddServer(),i=we.use.hasHydrated(),[s,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(new Set),[_,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(!1),[C,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(null),[D,k]=(0,Z.useState)(null),{data:A,isLoading:j,isError:N}=l({queryKey:[gt,e],queryFn:()=>tt(e)}),{data:P}=l({queryKey:[_t,e],queryFn:()=>nt(e)}),I=(0,Z.useCallback)(()=>{t.invalidateQueries({queryKey:[gt,e]}),t.invalidateQueries({queryKey:[_t,e]})},[t,e]),L=(0,Z.useMemo)(()=>{let e=new Map;if(P)for(let t of P.servers)e.set(t.serverId,t);return e},[P]),R=(0,Z.useMemo)(()=>!d||!A?null:A.servers.find(e=>e.id===d)??null,[d,A]),z=(0,Z.useCallback)(async(t,n)=>{g(e=>new Set(e).add(t));try{await rt(e,{name:t,enabled:n}),I()}catch{G.error(`Failed to ${n?`enable`:`disable`} ${t}`)}finally{g(e=>{let n=new Set(e);return n.delete(t),n})}},[e,I]),B=(0,Z.useCallback)(async()=>{if(p){b(!0);try{await at(e,p),I(),G.success(`Removed ${p}`),m(null)}catch{G.error(`Failed to remove ${p}`)}finally{b(!1)}}},[p,e,I]),V=(0,Z.useCallback)(async t=>{E(t);let n;try{n=await ot(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`),I();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 st(e,t);if(n.status===`complete`){G.success(`${t} authenticated successfully`),I();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),I()}},[e,I]),H=(0,Z.useCallback)(async t=>{k(t);try{await ct(e,t),I(),G.success(`OAuth credentials revoked for ${t}`)}catch{G.error(`Failed to revoke OAuth for ${t}`)}finally{k(null)}},[e,I]),U=(0,Z.useCallback)(async t=>{let n=t.autoAuth?window.open(`about:blank`,`_blank`,`noopener`):null;v(!0);try{await it(e,t),I(),G.success(`Added ${t.name}`),u(!1)}catch{G.error(`Failed to add ${t.name}`),n?.close(),v(!1);return}if(v(!1),t.autoAuth){E(t.name);try{let r=await ot(e,t.name);if(r.already_authenticated){n?.close(),G.success(`${t.name} is already authenticated`),I();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 st(e,t.name);if(n.status===`complete`){G.success(`${t.name} authenticated successfully`),I();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),I()}}},[e,I]),W=(0,Z.useCallback)(async(t,n)=>{S(!0);try{await rt(e,n),I(),G.success(`Updated ${t}`),f(null)}catch{G.error(`Failed to update ${t}`)}finally{S(!1)}},[e,I]),ee=(0,Z.useCallback)(async()=>{w(!0);try{await lt(e),I(),G.success(`MCP servers reloaded`)}catch{G.error(`Failed to reload MCP servers`)}finally{w(!1)}},[e,I]),q=(0,Z.useCallback)(()=>{r?u(!0):Ce(n,{prompt:vt})},[r,n]),J=A?.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)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(F,{className:C?`animate-spin`:``}),onClick:ee,disabled:C,tooltip:`Reload all servers`,"aria-label":`Reload MCP servers`}),r?(0,Q.jsx)(a,{variant:`primary`,size:`compact`,leftIcon:(0,Q.jsx)(M,{}),onClick:()=>u(!0),children:`Add Server`}):null]})]}),P?(0,Q.jsxs)(`div`,{className:`flex gap-4 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsxs)(`span`,{children:[P.totalToolCount,` total`,` `,P.totalToolCount===1?`tool`:`tools`]}),(0,Q.jsxs)(`span`,{children:[`~`,P.totalEstimatedTokens.toLocaleString(),` total tokens`]})]}):null,j?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(O,{className:`h-4 w-4 animate-spin`}),(0,Q.jsx)(`span`,{children:`Loading MCP servers...`})]}):N?(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.`}):J.length===0?(0,Q.jsxs)(`button`,{type:`button`,onClick:q,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)(ze,{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:J.map(e=>(0,Q.jsx)(ft,{server:e,toolsSummary:L.get(e.id),onToggleEnabled:z,onRemove:m,onConfigure:f,onAuthenticate:V,onRevokeOAuth:H,isUpdating:h.has(e.id),isAuthenticating:T===e.id,isRevoking:D===e.id},e.id))}),r?(0,Q.jsx)(et,{open:s,onClose:()=>u(!1),onAdd:U,isPending:_}):null,(0,Q.jsx)(ht,{server:R,toolsSummary:d?L.get(d):void 0,onClose:()=>f(null),onSave:W,isPending:x}),(0,Q.jsx)(K,{open:!!p,title:`Remove MCP Server`,message:`Are you sure you want to remove "${p}"? This will disconnect all tools provided by this server.`,confirmLabel:`Remove`,destructive:!0,isPending:y,onConfirm:B,onCancel:()=>m(null)})]})}function bt(){return(0,Q.jsx)(yt,{})}var xt=`vellum:integrations:bannerDismissed`,St=[{value:`all`,labelKey:`integrationsPage.filterAll`},{value:`enabled`,labelKey:`integrationsPage.filterEnabled`},{value:`not-enabled`,labelKey:`integrationsPage.filterNotEnabled`}];function $(e,t){return e?.find(e=>e.provider===t)??null}function Ct(e){return e===`mcp`?`mcp`:`oauth`}function wt(){let{t:e}=q(`settings`),[i]=s(),a=o(),c=ae(),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(!0),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(`all`),[v,y]=(0,Z.useState)(!0),[b,x]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{y(t(xt,`false`)===`true`)},[]);let S=()=>{y(!0),n(xt,`true`)};(0,Z.useEffect)(()=>{let e=!0;return(async()=>{try{let t=await ne();e&&t.ok&&d(t.data)}catch(e){r(e,{context:`integrations.getAssistant`})}finally{e&&p(!1)}})(),()=>{e=!1}},[]);let{platformAssistantId:C,isLoading:w}=Re(u?.id,c===`full`),{data:T,isLoading:E,isError:D}=l({...ce({path:{assistant_id:u?.id??``}}),select:e=>e.providers,enabled:!!u}),{data:k,isLoading:A}=l({...X({path:{assistant_id:C??``}}),enabled:!!C&&c===`full`});(0,Z.useEffect)(()=>{let e=i.get(`oauth_status`);if(!e)return;let t=i.get(`oauth_provider`),n=t?t.charAt(0).toUpperCase()+t.slice(1):null;if(e===`connected`)G.success(n?`${n} account connected successfully.`:`Account connected successfully.`);else if(e===`error`){let e=i.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.`}[e]??(n?`Failed to connect ${n}.`:`Failed to connect. Please try again.`))}a(ie.settings.integrations,{replace:!0})},[i,a]);let j=(0,Z.useMemo)(()=>T?.filter(e=>e.supports_managed_mode)??[],[T]),M=(0,Z.useMemo)(()=>{let e=m.trim().toLowerCase(),t=j.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 g!==`all`&&(t=t.filter(e=>{let t=!!$(k,e.provider_key)?.connected;return g===`enabled`?t:!t})),[...t].sort((e,t)=>{let n=!!$(k,e.provider_key)?.connected;if(n!==!!$(k,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)})},[j,k,m,g]),N=f||E||A||w,P=(()=>{if(m.trim())return`No integrations matched`;switch(g){case`enabled`:return`No Enabled Integrations`;case`not-enabled`:return`All Integrations Are Enabled`;default:return`No Integrations Available`}})(),F=(()=>{if(m.trim())return`No integrations matched "${m.trim()}"`;switch(g){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.`}})(),R=(0,Z.useMemo)(()=>b?j.find(e=>e.provider_key===b)??null:null,[j,b]),z=St.map(({value:t,labelKey:n})=>({value:t,label:e(n)}));return(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[!v&&(0,Q.jsxs)(B,{tone:`info`,icon:(0,Q.jsx)(L,{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)(H,{type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`Search Integrations`,"aria-label":`Search integrations`,leftIcon:(0,Q.jsx)(I,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,wrapperClassName:`flex-1`}),(0,Q.jsx)(ee,{options:z,value:g,onChange:_,"aria-label":e(`integrationsPage.filterAriaLabel`),menuAlign:`end`,className:`w-36 shrink-0`})]}),(0,Q.jsx)(`div`,{children:N?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(O,{className:`h-4 w-4 animate-spin`}),(0,Q.jsx)(`span`,{children:`Loading...`})]}):D?(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Failed to load integrations. Please try again.`}):u?M.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)(I,{className:`h-6 w-6 text-[var(--content-disabled)]`}),(0,Q.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:P}),(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:F})]}):(0,Q.jsx)(`div`,{className:`space-y-2`,children:M.map(e=>(0,Q.jsx)(Xe,{platformAssistantId:C??u.id,providerKey:e.provider_key,displayName:e.display_name??e.provider_key,description:e.description,logoUrl:e.logo_url,connection:$(k,e.provider_key),platformGate:c,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.`})}),R&&u&&(0,Q.jsx)(Ye,{assistantId:u.id,platformAssistantId:C??u.id,providerKey:R.provider_key,displayName:R.display_name??R.provider_key,description:R.description,logoUrl:R.logo_url,platformGate:c,onClose:()=>x(null)})]})}function Tt(){let[e,t]=s(),n=Ct(e.get(`tab`));return(0,Q.jsx)(`div`,{className:`space-y-6`,children:(0,Q.jsxs)(_.Root,{value:n,onValueChange:n=>{let r=Ct(n),i=new URLSearchParams(e);r===`mcp`?i.set(`tab`,`mcp`):i.delete(`tab`),t(i,{replace:!0})},children:[(0,Q.jsxs)(_.List,{children:[(0,Q.jsx)(_.Trigger,{value:`oauth`,children:`OAuth`}),(0,Q.jsx)(_.Trigger,{value:`mcp`,children:`MCP`})]}),(0,Q.jsx)(_.Panel,{value:`oauth`,className:`pt-4`,children:(0,Q.jsx)(Z.Suspense,{children:(0,Q.jsx)(wt,{})})}),(0,Q.jsx)(_.Panel,{value:`mcp`,className:`pt-4`,children:(0,Q.jsx)(bt,{})})]})})}export{Tt as IntegrationsPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{r as n,t as r,u as i}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as a}from"./jsx-runtime-BJ8jcmzB.js";import{t as o}from"./typography-DekrYXvs.js";import{t as s}from"./chevron-left-02Er54z-.js";import"./src-qDZBwoEm.js";import{t as c}from"./assistant-identity-store-DhAqaifK.js";import"./i18n--HmJLuhM.js";import{t as l}from"./useTranslation-DdVCKPgw.js";import{d as u,i as d}from"./routes-B7wRw3UT.js";import{n as f}from"./use-is-mobile-q9Lr7beO.js";import{t as p}from"./chat-layout-slots-store-CE2p0OE9.js";import{t as m}from"./page-shell-3Yi5Ezsv.js";var h=e(t(),1),g=a(),_={schedules:`sections.schedules`,superpowers:`sections.superpowers`,plugins:`sections.superpowers`,skills:`sections.superpowers`,memory:`sections.memory`,library:`sections.library`,workspace:`sections.workspace`,contacts:`sections.contacts`,channels:`sections.channels`};function v(){let{t:e}=l(`intelligence`),t=c.use.name(),{pathname:a}=i(),v=f(),y=p.use.setTopBarCenter(),b=d(a),x=b?e(_[b.key]):null;return(0,h.useEffect)(()=>(y(v&&x?(0,g.jsx)(o,{variant:`body-medium-default`,className:`truncate text-[var(--content-secondary)]`,children:x}):null),()=>{y(null)}),[v,x,y]),b?(0,g.jsxs)(m,{children:[(0,g.jsxs)(`div`,{className:`mb-4 flex shrink-0 items-center gap-1.5`,children:[(0,g.jsx)(r,{to:u.identity,className:`-ml-2 flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-[var(--content-secondary)] transition-colors outline-none hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)] focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,"aria-label":e(`intelligenceLayout.backToAriaLabel`,{name:t||e(`identityOverview.defaultAssistantName`)}),title:e(`intelligenceLayout.backToTitle`,{name:t||e(`identityOverview.defaultAssistantName`)}),children:(0,g.jsx)(s,{className:`h-5 w-5`,"aria-hidden":!0})}),(0,g.jsx)(`h1`,{className:`text-title-large text-[var(--content-default)] max-md:hidden`,children:x})]}),(0,g.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:(0,g.jsx)(n,{})})]}):(0,g.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,g.jsx)(n,{})})}export{v as IntelligenceLayout};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{r as n,t as r,u as i}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as a}from"./jsx-runtime-BJ8jcmzB.js";import{t as o}from"./typography-DekrYXvs.js";import{t as s}from"./chevron-left-02Er54z-.js";import"./src-CImIAPTd.js";import{t as c}from"./assistant-identity-store-DhAqaifK.js";import"./i18n-C9hRT4Lf.js";import{t as l}from"./useTranslation-D9pPv-bA.js";import{d as u,i as d}from"./routes-B7wRw3UT.js";import{n as f}from"./use-is-mobile-q9Lr7beO.js";import{t as p}from"./chat-layout-slots-store-CE2p0OE9.js";import{t as m}from"./page-shell-C3ZmdIop.js";var h=e(t(),1),g=a(),_={schedules:`sections.schedules`,superpowers:`sections.superpowers`,plugins:`sections.superpowers`,skills:`sections.superpowers`,memory:`sections.memory`,library:`sections.library`,workspace:`sections.workspace`,contacts:`sections.contacts`,channels:`sections.channels`};function v(){let{t:e}=l(`intelligence`),t=c.use.name(),{pathname:a}=i(),v=f(),y=p.use.setTopBarCenter(),b=d(a),x=b?e(_[b.key]):null;return(0,h.useEffect)(()=>(y(v&&x?(0,g.jsx)(o,{variant:`body-medium-default`,className:`truncate text-[var(--content-secondary)]`,children:x}):null),()=>{y(null)}),[v,x,y]),b?(0,g.jsxs)(m,{children:[(0,g.jsxs)(`div`,{className:`mb-4 flex shrink-0 items-center gap-1.5`,children:[(0,g.jsx)(r,{to:u.identity,className:`-ml-2 flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-[var(--content-secondary)] transition-colors outline-none hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)] focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,"aria-label":e(`intelligenceLayout.backToAriaLabel`,{name:t||e(`identityOverview.defaultAssistantName`)}),title:e(`intelligenceLayout.backToTitle`,{name:t||e(`identityOverview.defaultAssistantName`)}),children:(0,g.jsx)(s,{className:`h-5 w-5`,"aria-hidden":!0})}),(0,g.jsx)(`h1`,{className:`text-title-large text-[var(--content-default)] max-md:hidden`,children:x})]}),(0,g.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:(0,g.jsx)(n,{})})]}):(0,g.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,g.jsx)(n,{})})}export{v as IntelligenceLayout};
@@ -1 +1 @@
1
- import{t as e}from"./queryOptions-DbnOXI51.js";import{t}from"./createLucideIcon-B-ZPaMbU.js";import{o as n}from"./i18n--HmJLuhM.js";import{i as r,n as i,t as a}from"./api-errors-CASENJGT.js";import{xn as o}from"./sdk.gen-CiE6cMi0.js";import{n as s}from"./get-memory-stats-SquVhZnd.js";var c=t(`zoom-out`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`line`,{x1:`21`,x2:`16.65`,y1:`21`,y2:`16.65`,key:`13gj7c`}],[`line`,{x1:`8`,x2:`14`,y1:`11`,y2:`11`,key:`durymu`}]]),l=t(`zoom-in`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`line`,{x1:`21`,x2:`16.65`,y1:`21`,y2:`16.65`,key:`13gj7c`}],[`line`,{x1:`11`,x2:`11`,y1:`8`,y2:`14`,key:`1vmskp`}],[`line`,{x1:`8`,x2:`14`,y1:`11`,y2:`11`,key:`durymu`}]]);function u(){return n(`getMemoryGraph.failureMessage`,{ns:`intelligence`})}function d(t){return e({queryKey:[`memory-graph`,t],staleTime:5*6e4,queryFn:async()=>{let{data:e,error:n,response:s}=await o({path:{assistant_id:t},throwOnError:!1});if(i(s,n,u()),s.status===404)return{kind:`unsupported`};if(!s.ok)throw new a(s.status,r(n,s,u()));return!e||e.supported===!1?{kind:`unsupported`}:{kind:`ready`,graph:e}}})}function f(e,t,n=`active`){e.invalidateQueries({queryKey:d(t).queryKey,refetchType:n}),e.invalidateQueries({queryKey:s(t).queryKey,refetchType:n})}export{c as i,d as n,l as r,f as t};
1
+ import{t as e}from"./queryOptions-DbnOXI51.js";import{t}from"./createLucideIcon-B-ZPaMbU.js";import{s as n}from"./i18n-C9hRT4Lf.js";import{i as r,n as i,t as a}from"./api-errors-CASENJGT.js";import{xn as o}from"./sdk.gen-CiE6cMi0.js";import{n as s}from"./get-memory-stats-SquVhZnd.js";var c=t(`zoom-out`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`line`,{x1:`21`,x2:`16.65`,y1:`21`,y2:`16.65`,key:`13gj7c`}],[`line`,{x1:`8`,x2:`14`,y1:`11`,y2:`11`,key:`durymu`}]]),l=t(`zoom-in`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`line`,{x1:`21`,x2:`16.65`,y1:`21`,y2:`16.65`,key:`13gj7c`}],[`line`,{x1:`11`,x2:`11`,y1:`8`,y2:`14`,key:`1vmskp`}],[`line`,{x1:`8`,x2:`14`,y1:`11`,y2:`11`,key:`durymu`}]]);function u(){return n(`getMemoryGraph.failureMessage`,{ns:`intelligence`})}function d(t){return e({queryKey:[`memory-graph`,t],staleTime:5*6e4,queryFn:async()=>{let{data:e,error:n,response:s}=await o({path:{assistant_id:t},throwOnError:!1});if(i(s,n,u()),s.status===404)return{kind:`unsupported`};if(!s.ok)throw new a(s.status,r(n,s,u()));return!e||e.supported===!1?{kind:`unsupported`}:{kind:`ready`,graph:e}}})}function f(e,t,n=`active`){e.invalidateQueries({queryKey:d(t).queryKey,refetchType:n}),e.invalidateQueries({queryKey:s(t).queryKey,refetchType:n})}export{c as i,d as n,l as r,f as t};
@@ -1,4 +1,4 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-BJ8jcmzB.js";import{n as r}from"./api-errors-CASENJGT.js";import{Kr as i,Zr as a}from"./sdk.gen-CiE6cMi0.js";import{n as o}from"./platform-detection-Dt0-jSAU.js";import{t as s}from"./proxy-CT_qJI1K.js";import{t as c}from"./use-reduced-motion-CU3dPXKf.js";import{r as l}from"./eye-bbox-DoGcAx4c.js";var u={companionCoworker:`companion-coworker`,genzBoomer:`genz-boomer`,executeCollaborate:`execute-collaborate`,playfulSerious:`playful-serious`,politeUnfiltered:`polite-unfiltered`},d=2;function f({processing:e,sawProcessing:t,hasReply:n,stableReads:r}){return e===void 0?n&&r>=d:!e&&(n||t)}var p=e=>Math.max(0,Math.min(100,Math.round(e)));function m(e,t,n){let r=t=>p(e[t]??50),i=r(u.companionCoworker),a=r(u.executeCollaborate),o=r(u.playfulSerious),s=r(u.politeUnfiltered),c=t?.trim()||`The user`,l=n?.trim(),d=l?`Your name is ${l}. Write exactly \`- **Name:** ${l}\` in IDENTITY.md — do not rename yourself or invent a different name, even if the file currently shows a placeholder or a different name. This changes your personality, not who you are.`:"Keep your existing name exactly as it is — this changes your personality, not who you are. Do not rename yourself, and if your name is already set, carry it through verbatim (don't treat it as a placeholder to fill). Whatever the name ends up being, keep it on IDENTITY.md's `- **Name:** …` line.";return`<system-message>
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-BJ8jcmzB.js";import{n as r}from"./api-errors-CASENJGT.js";import{Kr as i,Zr as a}from"./sdk.gen-CiE6cMi0.js";import{n as o}from"./platform-detection-zth6eCY8.js";import{t as s}from"./proxy-CT_qJI1K.js";import{t as c}from"./use-reduced-motion-CU3dPXKf.js";import{r as l}from"./eye-bbox-DoGcAx4c.js";var u={companionCoworker:`companion-coworker`,genzBoomer:`genz-boomer`,executeCollaborate:`execute-collaborate`,playfulSerious:`playful-serious`,politeUnfiltered:`polite-unfiltered`},d=2;function f({processing:e,sawProcessing:t,hasReply:n,stableReads:r}){return e===void 0?n&&r>=d:!e&&(n||t)}var p=e=>Math.max(0,Math.min(100,Math.round(e)));function m(e,t,n){let r=t=>p(e[t]??50),i=r(u.companionCoworker),a=r(u.executeCollaborate),o=r(u.playfulSerious),s=r(u.politeUnfiltered),c=t?.trim()||`The user`,l=n?.trim(),d=l?`Your name is ${l}. Write exactly \`- **Name:** ${l}\` in IDENTITY.md — do not rename yourself or invent a different name, even if the file currently shows a placeholder or a different name. This changes your personality, not who you are.`:"Keep your existing name exactly as it is — this changes your personality, not who you are. Do not rename yourself, and if your name is already set, carry it through verbatim (don't treat it as a placeholder to fill). Whatever the name ends up being, keep it on IDENTITY.md's `- **Name:** …` line.";return`<system-message>
2
2
  ${c} wants to customize your personality.
3
3
  This is what they want you to be:
4
4
  Companion (0-100): ${100-i}
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{d as n,p as r,u as i}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as a}from"./jsx-runtime-BJ8jcmzB.js";import{n as o,t as s}from"./use-edit-app-CAyA09nW.js";import{t as c}from"./loader-circle-DYe85z3g.js";import"./src-qDZBwoEm.js";import{n as l}from"./toast-DqqWkjsh.js";import"./i18n--HmJLuhM.js";import{t as u}from"./useTranslation-DdVCKPgw.js";import{n as d}from"./sdk.gen-CiE6cMi0.js";import{d as f}from"./routes-B7wRw3UT.js";import{r as p}from"./conversation-navigation-DQEOhOXf.js";import{l as m}from"./viewer-store-CwlLnf-k.js";import{n as h}from"./use-is-mobile-q9Lr7beO.js";import"./use-edge-swipe-CJ8niuZL.js";import{n as g,t as _}from"./deploy-store-C-WH19q9.js";import{t as v}from"./use-active-assistant-id-BADYKVyx.js";import{t as y}from"./deploy-dialogs-I_QAK81w.js";import{t as b}from"./use-edge-swipe-back-Dl-lRTON.js";import{t as x}from"./app-types-DhugcUAb.js";var S=e(t(),1),C=a();function w({enabled:e}){return e?(0,C.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-y-0 left-0 z-10`,style:{width:20}}):null}function T(){let{t:e}=u(`library`),{appId:t}=r(),a=v(),T=n(),{pathname:E}=i(),D=h(),O=_.use.isDeploying(),k=(0,S.useRef)(null),[A,j]=(0,S.useState)(null),[M,N]=(0,S.useState)(null),[P,F]=(0,S.useState)(!1),I=(0,S.useRef)(null);(0,S.useEffect)(()=>{if(t)return I.current=t,j(null),N(null),d({path:{assistant_id:a,id:t},throwOnError:!0}).then(({data:e})=>{I.current===t&&(m(a,e.appId,e.html),j({appId:e.appId,dirName:e.dirName,name:e.name,html:e.html,origin:e.origin}))}).catch(e=>{I.current===t&&N(e instanceof Error?e.message:`Failed to open app`)}),()=>{I.current=null}},[a,t]);let L=(0,S.useCallback)(()=>{T(f.library.root)},[T]);b({containerRef:k,onBack:L,enabled:D,navKey:E,prefetchHref:f.library.root});let R=s(),z=(0,S.useCallback)(()=>{A&&R(A)},[A,R]),B=(0,S.useCallback)(async()=>{if(!(!A||P)){F(!0);try{await g(a,A.appId,A.name),l.success(e(`libraryAppCard.exported`),{description:`${A.name}.vellum`})}catch(t){l.error(e(`libraryAppCard.shareFailed`),{description:t instanceof Error?t.message:void 0})}finally{F(!1)}}},[a,A,P,e]),V=(0,S.useCallback)(()=>{A&&_.getState().deployApp(a,A.appId,A.name,A.html)},[a,A]),H=(0,S.useCallback)(e=>{p(T,{prompt:e})},[T]);return t?M?(0,C.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4`,children:[(0,C.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:M}),(0,C.jsx)(`button`,{type:`button`,onClick:L,className:`text-body-medium-default text-[var(--primary-base)] underline`,children:e(`libraryDetailPage.backToLibrary`)})]}):A?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{ref:k,className:`relative flex min-h-0 flex-1 flex-col`,children:[(0,C.jsx)(w,{enabled:D}),(0,C.jsx)(o,{appId:A.appId,appName:A.name,html:A.html,assistantId:a,onClose:L,...x(A.origin)?{}:{onEdit:z,onShare:B,isSharing:P,onDeploy:V,isDeploying:O},enableFullscreen:!0})]}),(0,C.jsx)(y,{assistantId:a,onStartConversation:H})]}):(0,C.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,C.jsx)(c,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}):null}export{T as LibraryDetailPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{d as n,p as r,u as i}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as a}from"./jsx-runtime-BJ8jcmzB.js";import{n as o,t as s}from"./use-edit-app-ByAfCYIL.js";import{t as c}from"./loader-circle-DYe85z3g.js";import"./src-CImIAPTd.js";import{n as l}from"./toast-DqqWkjsh.js";import"./i18n-C9hRT4Lf.js";import{t as u}from"./useTranslation-D9pPv-bA.js";import{n as d}from"./sdk.gen-CiE6cMi0.js";import{d as f}from"./routes-B7wRw3UT.js";import{r as p}from"./conversation-navigation-B_4jZ9Z2.js";import{l as m}from"./viewer-store-CwlLnf-k.js";import{n as h}from"./use-is-mobile-q9Lr7beO.js";import"./use-edge-swipe-C4IrskOL.js";import{n as g,t as _}from"./deploy-store-dyN183E8.js";import{t as v}from"./use-active-assistant-id-BADYKVyx.js";import{t as y}from"./deploy-dialogs-CgicOESj.js";import{t as b}from"./use-edge-swipe-back-CiO9raEw.js";import{t as x}from"./app-types-DET4dder.js";var S=e(t(),1),C=a();function w({enabled:e}){return e?(0,C.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-y-0 left-0 z-10`,style:{width:20}}):null}function T(){let{t:e}=u(`library`),{appId:t}=r(),a=v(),T=n(),{pathname:E}=i(),D=h(),O=_.use.isDeploying(),k=(0,S.useRef)(null),[A,j]=(0,S.useState)(null),[M,N]=(0,S.useState)(null),[P,F]=(0,S.useState)(!1),I=(0,S.useRef)(null);(0,S.useEffect)(()=>{if(t)return I.current=t,j(null),N(null),d({path:{assistant_id:a,id:t},throwOnError:!0}).then(({data:e})=>{I.current===t&&(m(a,e.appId,e.html),j({appId:e.appId,dirName:e.dirName,name:e.name,html:e.html,origin:e.origin}))}).catch(e=>{I.current===t&&N(e instanceof Error?e.message:`Failed to open app`)}),()=>{I.current=null}},[a,t]);let L=(0,S.useCallback)(()=>{T(f.library.root)},[T]);b({containerRef:k,onBack:L,enabled:D,navKey:E,prefetchHref:f.library.root});let R=s(),z=(0,S.useCallback)(()=>{A&&R(A)},[A,R]),B=(0,S.useCallback)(async()=>{if(!(!A||P)){F(!0);try{await g(a,A.appId,A.name),l.success(e(`libraryAppCard.exported`),{description:`${A.name}.vellum`})}catch(t){l.error(e(`libraryAppCard.shareFailed`),{description:t instanceof Error?t.message:void 0})}finally{F(!1)}}},[a,A,P,e]),V=(0,S.useCallback)(()=>{A&&_.getState().deployApp(a,A.appId,A.name,A.html)},[a,A]),H=(0,S.useCallback)(e=>{p(T,{prompt:e})},[T]);return t?M?(0,C.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4`,children:[(0,C.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:M}),(0,C.jsx)(`button`,{type:`button`,onClick:L,className:`text-body-medium-default text-[var(--primary-base)] underline`,children:e(`libraryDetailPage.backToLibrary`)})]}):A?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{ref:k,className:`relative flex min-h-0 flex-1 flex-col`,children:[(0,C.jsx)(w,{enabled:D}),(0,C.jsx)(o,{appId:A.appId,appName:A.name,html:A.html,assistantId:a,onClose:L,...x(A.origin)?{}:{onEdit:z,onShare:B,isSharing:P,onDeploy:V,isDeploying:O},enableFullscreen:!0})]}),(0,C.jsx)(y,{assistantId:a,onStartConversation:H})]}):(0,C.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,C.jsx)(c,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}):null}export{T as LibraryDetailPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{d as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./jsx-runtime-BJ8jcmzB.js";import{t as s}from"./arrow-up-BiLIdQeR.js";import{t as c}from"./download-DnnvWjPo.js";import{t as l}from"./ellipsis-4L6z7PhT.js";import{t as u}from"./file-text-DpdlyCly.js";import{t as d}from"./globe-COrlg99x.js";import{t as f}from"./layout-grid-lHmG2izK.js";import{t as p}from"./link-2-BBS4SmE3.js";import{a as m,i as h,n as g,o as _,r as v,s as y}from"./app-card--MsNli_3.js";import{t as b}from"./refresh-cw-p138DTtp.js";import{t as x}from"./search-D_t5oHhF.js";import{t as S}from"./trash-2-V2WT_DbX.js";import{I as C}from"./src-qDZBwoEm.js";import{t as w}from"./input-DkgpMeG9.js";import{n as T}from"./toast-DqqWkjsh.js";import"./i18n--HmJLuhM.js";import{t as E}from"./useTranslation-DdVCKPgw.js";import{s as D}from"./sdk.gen-CiE6cMi0.js";import{d as O}from"./routes-B7wRw3UT.js";import{N as k,i as A,r as j}from"./react-query.gen-Bbh5MII3.js";import{r as M}from"./conversation-navigation-DQEOhOXf.js";import{c as N}from"./viewer-store-CwlLnf-k.js";import{t as P}from"./pointer-BMK9brNn.js";import{t as F}from"./misc-B24X-saO.js";import{t as I}from"./swipe-action-reveal-Ctx7MIFN.js";import{n as L,t as R}from"./deploy-store-C-WH19q9.js";import{o as z,s as B}from"./sandbox-bridge-CXqBkVsW.js";import{t as V}from"./use-active-assistant-id-BADYKVyx.js";import{n as H}from"./format-date-B_oQDqU9.js";import{t as U}from"./deploy-dialogs-I_QAK81w.js";import{t as W}from"./app-types-DhugcUAb.js";var G=e(t(),1),K=o();function q(e){return e===1?`1 word`:`${e} words`}function J({document:e,onOpen:t}){return(0,K.jsxs)(`div`,{className:`group relative flex flex-col gap-2`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>t(e.surfaceId),className:F(`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,K.jsx)(u,{size:34,className:`text-[var(--content-tertiary)]`}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:q(e.wordCount)})]}),(0,K.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,K.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.title}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:H(new Date(e.updatedAt))})]})]})}function Y({accept:e,fileInputRef:t,isImporting:r,onImportBundle:i,onNewConversation:a}){let{t:o}=E(`library`);return(0,K.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4 py-24`,children:[(0,K.jsx)(`input`,{ref:t,type:`file`,accept:e,className:`hidden`,onChange:i}),(0,K.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--surface-base)]`,children:(0,K.jsx)(f,{size:32,className:`text-[var(--content-tertiary)]`})}),(0,K.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:o(`libraryEmptyState.heading`)}),(0,K.jsx)(`p`,{className:`max-w-md text-center text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:o(`libraryEmptyState.body`)}),(0,K.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[a?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(n,{variant:`primary`,size:`regular`,onClick:a,children:o(`libraryEmptyState.newConversation`)}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:o(`libraryEmptyState.separator`)})]}):null,(0,K.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>t.current?.click(),disabled:r,children:[r?(0,K.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,K.jsx)(c,{size:14}),(0,K.jsx)(`span`,{className:`ml-1.5`,children:o(`libraryEmptyState.importFile`)})]})]})]})}function X({app:e,assistantId:t,isPinned:n,onOpen:r,onPin:i,onDelete:a,onDeploy:o,justImported:s,onAnimationEnd:c}){let{t:l}=E(`library`),[u,d]=(0,G.useState)(!1),f=W(e.origin),p=f?void 0:a,m=f?void 0:o,h=(0,G.useCallback)(()=>N(t,e.id),[t,e.id]),v=(0,G.useCallback)(async()=>{if(!u){d(!0);try{await L(t,e.id,e.name),T.success(l(`libraryAppCard.exported`),{description:`${e.name}.vellum`})}catch(e){T.error(l(`libraryAppCard.shareFailed`),{description:e instanceof Error?e.message:void 0})}finally{d(!1)}}},[t,e.id,e.name,u,l]),[b,x]=(0,G.useState)(!1),[C,w]=(0,G.useState)(!1),D=(0,G.useCallback)(()=>w(!0),[]),{deployedUrl:O}=B(t,e.id,{enabled:C&&m!=null}),k=(0,G.useCallback)(()=>{O!=null&&z(O)},[O]);return(0,K.jsx)(I,{trailingActions:[{id:`pin`,label:n?`Unpin`:`Pin`,icon:n?y:_,onSelect:()=>i(e)},...p?[{id:`delete`,label:`Delete`,icon:S,variant:`destructive`,onSelect:()=>p(e)}]:[]],className:`rounded-xl`,children:(0,K.jsxs)(`div`,{"data-reveal-row":``,className:F(`relative flex flex-col gap-2`,s&&`animate-[card-entrance_400ms_ease-out]`),onAnimationEnd:s?c:void 0,onPointerEnter:D,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),className:F(`relative w-full cursor-pointer overflow-hidden rounded-xl`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`),children:(0,K.jsx)(g,{name:e.name,icon:e.icon,loadHtml:h})}),(0,K.jsx)(`div`,{"data-reveal":``,className:`absolute right-2 top-2 z-20`,children:(0,K.jsx)(Z,{appName:e.name,isPinned:n,open:b,onOpenChange:e=>{e&&D(),x(e)},onPin:()=>i(e),onDelete:p?()=>p(e):void 0,onShare:f?void 0:v,onDeploy:m,deployedUrl:O,onCopyDeployedLink:k})}),(0,K.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,K.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.name}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:H(new Date(e.createdAt))})]})]})})}function Z({appName:e,isPinned:t,open:r,onOpenChange:i,onPin:a,onDelete:o,onShare:c,onDeploy:u,deployedUrl:f,onCopyDeployedLink:m}){let{t:h}=E(`library`),g=f!=null&&f!==``&&m!=null,v=h(`libraryAppCard.actionsTitle`,{appName:e});return(0,K.jsxs)(C.Root,{open:r,onOpenChange:i,children:[(0,K.jsx)(C.Trigger,{asChild:!0,children:(0,K.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,K.jsx)(l,{}),"aria-label":v,onClick:e=>e.stopPropagation()})}),(0,K.jsxs)(C.Content,{title:v,children:[(0,K.jsx)(C.Item,{icon:t?y:_,label:h(t?`libraryAppCard.unpin`:`libraryAppCard.pin`),onSelect:a}),c?(0,K.jsx)(C.Item,{icon:s,label:h(`libraryAppCard.share`),description:h(`libraryAppCard.shareSub`),onSelect:c}):null,u&&g?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(C.Item,{icon:p,label:h(`libraryAppCard.deployed`),description:(0,K.jsx)(`span`,{className:`break-all`,children:f}),shortcut:h(`libraryAppCard.copyLink`),onSelect:()=>m?.()}),(0,K.jsx)(C.Item,{icon:b,label:h(`libraryAppCard.redeploy`),description:h(`libraryAppCard.redeploySub`),onSelect:u})]}):u?(0,K.jsx)(C.Item,{icon:d,label:h(`libraryAppCard.deploy`),description:h(`libraryAppCard.deploySub`),onSelect:u}):null,o?(0,K.jsx)(C.Item,{icon:S,label:h(`libraryAppCard.delete`),tone:`destructive`,onSelect:o}):null]})]})}function Q({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,K.jsxs)(`section`,{children:[(0,K.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:e}),(0,K.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:t.map(e=>(0,K.jsx)(X,{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 $=(e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt;function ee(e){let t=m.use.pinnedAppIds(),{data:n=[],isLoading:r,error:i}=a({...j({path:{assistant_id:e}}),select:e=>e.apps}),{data:o=[],isLoading:s,error:c}=a({...k({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,G.useState)(``),p=(0,G.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,G.useMemo)(()=>p.filter(e=>t.has(e.id)).sort($),[p,t]),recentApps:(0,G.useMemo)(()=>p.filter(e=>!t.has(e.id)).sort($),[p,t]),filteredDocuments:(0,G.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 te(e,t){let{data:n,error:r,response:i}=await D({path:{assistant_id:e},body:t,bodySerializer:e=>e,headers:{"Content-Type":`application/octet-stream`},throwOnError:!1});if(!i||!i.ok){let e=(r&&typeof r==`object`&&`message`in r?r.message:null)??`Failed to import app.`;throw Error(e)}return n}function ne({assistantId:e,assistantName:t,onNewConversation:r,onOpenDocument:a,onOpenApp:o}){let{t:s}=E(`library`),l=i(),u=m.use.togglePin(),d=m.use.pinnedAppIds(),f=R.use.isDeploying(),{apps:p,documents:g,filteredApps:_,pinnedApps:y,recentApps:b,filteredDocuments:S,searchText:C,setSearchText:D,loading:O,error:k}=ee(e),{pendingDelete:j,isDeleting:M,requestDelete:F,confirmDelete:I,cancelDelete:L}=v(e),[z]=(0,G.useState)(()=>P()?void 0:`.vellum`),B=(0,G.useRef)(null),[V,H]=(0,G.useState)(!1),W=(0,G.useCallback)(async t=>{let n=t.target.files?.[0];if(!(!n||V)){H(!0);try{let t=await te(e,n);await l.invalidateQueries({queryKey:A({path:{assistant_id:e}})}),T.success(t.name+` imported`),o(t.appId)}catch(e){T.error(e instanceof Error?e.message:s(`libraryView.importFailed`))}finally{H(!1),B.current&&(B.current.value=``)}}},[e,V,l,o,s]),q=(0,G.useCallback)(async t=>{if(f)return;let n=p.find(e=>e.id===t)?.name??`this app`;try{let r=await N(e,t);R.getState().deployApp(e,t,n,r)}catch{R.getState().deployApp(e,t,n,``)}},[e,f,p]),X=(0,G.useCallback)(e=>u(e),[u]);return O?(0,K.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,K.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":s(`libraryView.loadingAria`)})}):k?(0,K.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4`,children:[(0,K.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:k}),(0,K.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:s(`libraryView.retry`)})]}):p.length===0&&g.length===0?(0,K.jsx)(Y,{accept:z,fileInputRef:B,isImporting:V,onImportBundle:W,onNewConversation:r?()=>r():void 0}):(0,K.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[(0,K.jsx)(`div`,{className:`mb-4 flex shrink-0 items-center justify-end gap-4`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`input`,{ref:B,type:`file`,accept:z,className:`hidden`,onChange:W}),(0,K.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>B.current?.click(),disabled:V,children:[V?(0,K.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,K.jsx)(c,{size:14}),(0,K.jsx)(`span`,{className:`ml-1.5`,children:s(`libraryView.import`)})]})]})}),(0,K.jsx)(`div`,{className:`mb-6 shrink-0`,children:(0,K.jsx)(w,{fullWidth:!0,type:`text`,placeholder:s(`libraryView.searchPlaceholder`),value:C,onChange:e=>D(e.target.value),leftIcon:(0,K.jsx)(x,{size:16})})}),(0,K.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:_.length===0&&S.length===0?(0,K.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16`,children:[(0,K.jsx)(x,{size:32,className:`mb-4 text-[var(--content-tertiary)]`}),(0,K.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:s(`libraryView.noMatches`,{query:C})})]}):(0,K.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,K.jsx)(Q,{title:s(`libraryView.pinned`),apps:y,assistantId:e,pinnedAppIds:d,onOpen:o,onPin:X,onDelete:F,onDeploy:q}),(0,K.jsx)(Q,{title:s(`libraryView.recents`),apps:b,assistantId:e,pinnedAppIds:d,onOpen:o,onPin:X,onDelete:F,onDeploy:q}),S.length>0?(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:s(`libraryView.documents`)}),(0,K.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:S.map(e=>(0,K.jsx)(J,{document:e,onOpen:e=>{a&&a(e)}},e.surfaceId))})]}):null]})}),(0,K.jsx)(U,{assistantId:e,assistantName:t,onStartConversation:r}),(0,K.jsx)(h,{app:j,isDeleting:M,onConfirm:I,onCancel:L})]})}function re(){let e=V(),t=r();return(0,K.jsx)(ne,{assistantId:e,onNewConversation:(0,G.useCallback)(e=>{M(t,{prompt:e})},[t]),onOpenDocument:(0,G.useCallback)(e=>{t(O.document(e))},[t]),onOpenApp:(0,G.useCallback)(e=>{t(O.library.app(e))},[t])})}export{re as LibraryPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{d as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./jsx-runtime-BJ8jcmzB.js";import{t as s}from"./arrow-up-BiLIdQeR.js";import{t as c}from"./download-DnnvWjPo.js";import{t as l}from"./ellipsis-4L6z7PhT.js";import{t as u}from"./file-text-DpdlyCly.js";import{t as d}from"./globe-COrlg99x.js";import{t as f}from"./layout-grid-lHmG2izK.js";import{t as p}from"./link-2-BBS4SmE3.js";import{a as m,i as h,n as g,o as _,r as v,s as y}from"./app-card-CjRGDYCX.js";import{t as b}from"./refresh-cw-p138DTtp.js";import{t as x}from"./search-D_t5oHhF.js";import{t as S}from"./trash-2-V2WT_DbX.js";import{L as C}from"./src-CImIAPTd.js";import{t as w}from"./input-DkgpMeG9.js";import{n as T}from"./toast-DqqWkjsh.js";import"./i18n-C9hRT4Lf.js";import{t as E}from"./useTranslation-D9pPv-bA.js";import{s as D}from"./sdk.gen-CiE6cMi0.js";import{d as O}from"./routes-B7wRw3UT.js";import{N as k,i as A,r as j}from"./react-query.gen-Bbh5MII3.js";import{r as M}from"./conversation-navigation-B_4jZ9Z2.js";import{c as N}from"./viewer-store-CwlLnf-k.js";import{t as P}from"./pointer-BMK9brNn.js";import{t as F}from"./misc-B24X-saO.js";import{t as I}from"./swipe-action-reveal-Ai9lRgUU.js";import{n as L,t as R}from"./deploy-store-dyN183E8.js";import{o as z,s as B}from"./sandbox-bridge-Dj1pIOXJ.js";import{t as V}from"./use-active-assistant-id-BADYKVyx.js";import{n as H}from"./format-date-B_oQDqU9.js";import{t as U}from"./deploy-dialogs-CgicOESj.js";import{t as W}from"./app-types-DET4dder.js";var G=e(t(),1),K=o();function q(e){return e===1?`1 word`:`${e} words`}function J({document:e,onOpen:t}){return(0,K.jsxs)(`div`,{className:`group relative flex flex-col gap-2`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>t(e.surfaceId),className:F(`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,K.jsx)(u,{size:34,className:`text-[var(--content-tertiary)]`}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:q(e.wordCount)})]}),(0,K.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,K.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.title}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:H(new Date(e.updatedAt))})]})]})}function Y({accept:e,fileInputRef:t,isImporting:r,onImportBundle:i,onNewConversation:a}){let{t:o}=E(`library`);return(0,K.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4 py-24`,children:[(0,K.jsx)(`input`,{ref:t,type:`file`,accept:e,className:`hidden`,onChange:i}),(0,K.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--surface-base)]`,children:(0,K.jsx)(f,{size:32,className:`text-[var(--content-tertiary)]`})}),(0,K.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:o(`libraryEmptyState.heading`)}),(0,K.jsx)(`p`,{className:`max-w-md text-center text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:o(`libraryEmptyState.body`)}),(0,K.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[a?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(n,{variant:`primary`,size:`regular`,onClick:a,children:o(`libraryEmptyState.newConversation`)}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:o(`libraryEmptyState.separator`)})]}):null,(0,K.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>t.current?.click(),disabled:r,children:[r?(0,K.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,K.jsx)(c,{size:14}),(0,K.jsx)(`span`,{className:`ml-1.5`,children:o(`libraryEmptyState.importFile`)})]})]})]})}function X({app:e,assistantId:t,isPinned:n,onOpen:r,onPin:i,onDelete:a,onDeploy:o,justImported:s,onAnimationEnd:c}){let{t:l}=E(`library`),[u,d]=(0,G.useState)(!1),f=W(e.origin),p=f?void 0:a,m=f?void 0:o,h=(0,G.useCallback)(()=>N(t,e.id),[t,e.id]),v=(0,G.useCallback)(async()=>{if(!u){d(!0);try{await L(t,e.id,e.name),T.success(l(`libraryAppCard.exported`),{description:`${e.name}.vellum`})}catch(e){T.error(l(`libraryAppCard.shareFailed`),{description:e instanceof Error?e.message:void 0})}finally{d(!1)}}},[t,e.id,e.name,u,l]),[b,x]=(0,G.useState)(!1),[C,w]=(0,G.useState)(!1),D=(0,G.useCallback)(()=>w(!0),[]),{deployedUrl:O}=B(t,e.id,{enabled:C&&m!=null}),k=(0,G.useCallback)(()=>{O!=null&&z(O)},[O]);return(0,K.jsx)(I,{trailingActions:[{id:`pin`,label:n?`Unpin`:`Pin`,icon:n?y:_,onSelect:()=>i(e)},...p?[{id:`delete`,label:`Delete`,icon:S,variant:`destructive`,onSelect:()=>p(e)}]:[]],className:`rounded-xl`,children:(0,K.jsxs)(`div`,{"data-reveal-row":``,className:F(`relative flex flex-col gap-2`,s&&`animate-[card-entrance_400ms_ease-out]`),onAnimationEnd:s?c:void 0,onPointerEnter:D,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),className:F(`relative w-full cursor-pointer overflow-hidden rounded-xl`,`outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`),children:(0,K.jsx)(g,{name:e.name,icon:e.icon,loadHtml:h})}),(0,K.jsx)(`div`,{"data-reveal":``,className:`absolute right-2 top-2 z-20`,children:(0,K.jsx)(Z,{appName:e.name,isPinned:n,open:b,onOpenChange:e=>{e&&D(),x(e)},onPin:()=>i(e),onDelete:p?()=>p(e):void 0,onShare:f?void 0:v,onDeploy:m,deployedUrl:O,onCopyDeployedLink:k})}),(0,K.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,K.jsx)(`span`,{className:`truncate text-body-large-default text-[color:var(--content-emphasised)]`,children:e.name}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:H(new Date(e.createdAt))})]})]})})}function Z({appName:e,isPinned:t,open:r,onOpenChange:i,onPin:a,onDelete:o,onShare:c,onDeploy:u,deployedUrl:f,onCopyDeployedLink:m}){let{t:h}=E(`library`),g=f!=null&&f!==``&&m!=null,v=h(`libraryAppCard.actionsTitle`,{appName:e});return(0,K.jsxs)(C.Root,{open:r,onOpenChange:i,children:[(0,K.jsx)(C.Trigger,{asChild:!0,children:(0,K.jsx)(n,{variant:`primary`,size:`compact`,iconOnly:(0,K.jsx)(l,{}),"aria-label":v,onClick:e=>e.stopPropagation()})}),(0,K.jsxs)(C.Content,{title:v,children:[(0,K.jsx)(C.Item,{icon:t?y:_,label:h(t?`libraryAppCard.unpin`:`libraryAppCard.pin`),onSelect:a}),c?(0,K.jsx)(C.Item,{icon:s,label:h(`libraryAppCard.share`),description:h(`libraryAppCard.shareSub`),onSelect:c}):null,u&&g?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(C.Item,{icon:p,label:h(`libraryAppCard.deployed`),description:(0,K.jsx)(`span`,{className:`break-all`,children:f}),shortcut:h(`libraryAppCard.copyLink`),onSelect:()=>m?.()}),(0,K.jsx)(C.Item,{icon:b,label:h(`libraryAppCard.redeploy`),description:h(`libraryAppCard.redeploySub`),onSelect:u})]}):u?(0,K.jsx)(C.Item,{icon:d,label:h(`libraryAppCard.deploy`),description:h(`libraryAppCard.deploySub`),onSelect:u}):null,o?(0,K.jsx)(C.Item,{icon:S,label:h(`libraryAppCard.delete`),tone:`destructive`,onSelect:o}):null]})]})}function Q({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,K.jsxs)(`section`,{children:[(0,K.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:e}),(0,K.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:t.map(e=>(0,K.jsx)(X,{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 $=(e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt;function ee(e){let t=m.use.pinnedAppIds(),{data:n=[],isLoading:r,error:i}=a({...j({path:{assistant_id:e}}),select:e=>e.apps}),{data:o=[],isLoading:s,error:c}=a({...k({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,G.useState)(``),p=(0,G.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,G.useMemo)(()=>p.filter(e=>t.has(e.id)).sort($),[p,t]),recentApps:(0,G.useMemo)(()=>p.filter(e=>!t.has(e.id)).sort($),[p,t]),filteredDocuments:(0,G.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 te(e,t){let{data:n,error:r,response:i}=await D({path:{assistant_id:e},body:t,bodySerializer:e=>e,headers:{"Content-Type":`application/octet-stream`},throwOnError:!1});if(!i||!i.ok){let e=(r&&typeof r==`object`&&`message`in r?r.message:null)??`Failed to import app.`;throw Error(e)}return n}function ne({assistantId:e,assistantName:t,onNewConversation:r,onOpenDocument:a,onOpenApp:o}){let{t:s}=E(`library`),l=i(),u=m.use.togglePin(),d=m.use.pinnedAppIds(),f=R.use.isDeploying(),{apps:p,documents:g,filteredApps:_,pinnedApps:y,recentApps:b,filteredDocuments:S,searchText:C,setSearchText:D,loading:O,error:k}=ee(e),{pendingDelete:j,isDeleting:M,requestDelete:F,confirmDelete:I,cancelDelete:L}=v(e),[z]=(0,G.useState)(()=>P()?void 0:`.vellum`),B=(0,G.useRef)(null),[V,H]=(0,G.useState)(!1),W=(0,G.useCallback)(async t=>{let n=t.target.files?.[0];if(!(!n||V)){H(!0);try{let t=await te(e,n);await l.invalidateQueries({queryKey:A({path:{assistant_id:e}})}),T.success(t.name+` imported`),o(t.appId)}catch(e){T.error(e instanceof Error?e.message:s(`libraryView.importFailed`))}finally{H(!1),B.current&&(B.current.value=``)}}},[e,V,l,o,s]),q=(0,G.useCallback)(async t=>{if(f)return;let n=p.find(e=>e.id===t)?.name??`this app`;try{let r=await N(e,t);R.getState().deployApp(e,t,n,r)}catch{R.getState().deployApp(e,t,n,``)}},[e,f,p]),X=(0,G.useCallback)(e=>u(e),[u]);return O?(0,K.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,K.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":s(`libraryView.loadingAria`)})}):k?(0,K.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-4 px-4`,children:[(0,K.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:k}),(0,K.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:s(`libraryView.retry`)})]}):p.length===0&&g.length===0?(0,K.jsx)(Y,{accept:z,fileInputRef:B,isImporting:V,onImportBundle:W,onNewConversation:r?()=>r():void 0}):(0,K.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[(0,K.jsx)(`div`,{className:`mb-4 flex shrink-0 items-center justify-end gap-4`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`input`,{ref:B,type:`file`,accept:z,className:`hidden`,onChange:W}),(0,K.jsxs)(n,{variant:`outlined`,size:`regular`,onClick:()=>B.current?.click(),disabled:V,children:[V?(0,K.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}):(0,K.jsx)(c,{size:14}),(0,K.jsx)(`span`,{className:`ml-1.5`,children:s(`libraryView.import`)})]})]})}),(0,K.jsx)(`div`,{className:`mb-6 shrink-0`,children:(0,K.jsx)(w,{fullWidth:!0,type:`text`,placeholder:s(`libraryView.searchPlaceholder`),value:C,onChange:e=>D(e.target.value),leftIcon:(0,K.jsx)(x,{size:16})})}),(0,K.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:_.length===0&&S.length===0?(0,K.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16`,children:[(0,K.jsx)(x,{size:32,className:`mb-4 text-[var(--content-tertiary)]`}),(0,K.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:s(`libraryView.noMatches`,{query:C})})]}):(0,K.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,K.jsx)(Q,{title:s(`libraryView.pinned`),apps:y,assistantId:e,pinnedAppIds:d,onOpen:o,onPin:X,onDelete:F,onDeploy:q}),(0,K.jsx)(Q,{title:s(`libraryView.recents`),apps:b,assistantId:e,pinnedAppIds:d,onOpen:o,onPin:X,onDelete:F,onDeploy:q}),S.length>0?(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`h2`,{className:`mb-4 text-body-small-emphasised text-[color:var(--content-secondary)]`,children:s(`libraryView.documents`)}),(0,K.jsx)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(max(220px,calc((100%-6rem)/5)),1fr))] gap-6`,children:S.map(e=>(0,K.jsx)(J,{document:e,onOpen:e=>{a&&a(e)}},e.surfaceId))})]}):null]})}),(0,K.jsx)(U,{assistantId:e,assistantName:t,onStartConversation:r}),(0,K.jsx)(h,{app:j,isDeleting:M,onConfirm:I,onCancel:L})]})}function re(){let e=V(),t=r();return(0,K.jsx)(ne,{assistantId:e,onNewConversation:(0,G.useCallback)(e=>{M(t,{prompt:e})},[t]),onOpenDocument:(0,G.useCallback)(e=>{t(O.document(e))},[t]),onOpenApp:(0,G.useCallback)(e=>{t(O.library.app(e))},[t])})}export{re as LibraryPage};
@@ -1 +1 @@
1
- import{i as e,l as t}from"./local-settings-Bx7FsNo5.js";import{t as n}from"./useMutation-D2YPyfEH.js";import{C as r,K as i,X as a}from"./local-mode-BNr2MrWI.js";import{r as o,t as s}from"./semver-C2-EZfiR.js";import{n as c,rt as l}from"./auth-store-DDMY1UvK.js";function u({assistantId:e,targetVersion:t}){let o=n({mutationFn:async()=>{if(!e)throw Error(`No local assistant is active.`);l.setLocalAssistantUpgradeInProgress(e,!0);try{let n=await i(e,{...t?{version:t}:{latest:!0}});if(!n.ok)throw Error(n.error??`Failed to trigger update.`);return n}finally{l.setLocalAssistantUpgradeInProgress(e,!1)}}});return{...o,upgrade:async()=>{if(!e)throw Error(`No local assistant is active.`);let t=await o.mutateAsync();return await r(),a(),await c.getState().connectLocalAssistant(e),t}}}var d=1200*1e3,f=`vellum:runtimeUpgradeDismissed`,p=`vellum:localRuntimeUpgradeDismissed`;function m(e){return(e?o(e):null)?.pre?.split(`.`)[0]===`local`}function h(e){let t=e?.filter(e=>!m(e.version))??[];return t.find(e=>e.is_stable!==!1)??t[0]}function g(e,t){if(!e||!t)return!1;let n=o(t),r=o(e);return!n||!r?t!==e:s(n,r)>0}function _(e,t){return t&&e===`preview`?`preview`:`stable`}function v(e,t,n){return`${e}:${t}:${n}`}function y(t,n){return e(v(f,t,n),``)===`true`||e(v(p,t,n),``)===`true`}function b(e,n){t(v(f,e,n),`true`)}export{g as a,_ as i,b as n,y as o,h as r,u as s,d as t};
1
+ import{i as e,l as t}from"./local-settings-Bx7FsNo5.js";import{t as n}from"./useMutation-D2YPyfEH.js";import{C as r,K as i,X as a}from"./local-mode-BNr2MrWI.js";import{r as o,t as s}from"./semver-C2-EZfiR.js";import{n as c,rt as l}from"./auth-store-CVtcHK0b.js";function u({assistantId:e,targetVersion:t}){let o=n({mutationFn:async()=>{if(!e)throw Error(`No local assistant is active.`);l.setLocalAssistantUpgradeInProgress(e,!0);try{let n=await i(e,{...t?{version:t}:{latest:!0}});if(!n.ok)throw Error(n.error??`Failed to trigger update.`);return n}finally{l.setLocalAssistantUpgradeInProgress(e,!1)}}});return{...o,upgrade:async()=>{if(!e)throw Error(`No local assistant is active.`);let t=await o.mutateAsync();return await r(),a(),await c.getState().connectLocalAssistant(e),t}}}var d=1200*1e3,f=`vellum:runtimeUpgradeDismissed`,p=`vellum:localRuntimeUpgradeDismissed`;function m(e){return(e?o(e):null)?.pre?.split(`.`)[0]===`local`}function h(e){let t=e?.filter(e=>!m(e.version))??[];return t.find(e=>e.is_stable!==!1)??t[0]}function g(e,t){if(!e||!t)return!1;let n=o(t),r=o(e);return!n||!r?t!==e:s(n,r)>0}function _(e,t){return t&&e===`preview`?`preview`:`stable`}function v(e,t,n){return`${e}:${t}:${n}`}function y(t,n){return e(v(f,t,n),``)===`true`||e(v(p,t,n),``)===`true`}function b(e,n){t(v(f,e,n),`true`)}export{g as a,_ as i,b as n,y as o,h as r,u as s,d as t};
@@ -1 +1 @@
1
- import{d as e}from"./routes-B7wRw3UT.js";import{a as t,n,r}from"./navigation-resolver-D4kCxpGf.js";import{t as i}from"./build-state-BZ5ujToI.js";var a=`workos`,o=e.account.providerCallback,s=`authIntent`;function c(e,t={}){let n=new URLSearchParams;e&&n.set(`returnTo`,e),t.authIntent&&n.set(s,t.authIntent);let r=n.toString();return r?`${o}?${r}`:o}function l(e){return e.get(s)===`signup`?`signup`:`login`}function u(e){return e.startsWith(`http`)||e.startsWith(`/accounts/`)||e.startsWith(`/v1/`)||e.startsWith(`/_allauth/`)||e.startsWith(`/import`)}var d=[e.checkout,e.plans,`${e.settings.root}/billing`,e.account.root];function f(e){if(u(e))return!0;let t=e.split(/[?#]/)[0]??e;return d.some(e=>t===e||t.startsWith(`${e}/`))||r(e)!==null?!0:n(e)}function p(e,t){return m({returnTo:e,fallback:t,authIntent:`login`})}function m({returnTo:e,fallback:n,authIntent:r}){let a=t(i(),{kind:`post-auth`,authIntent:r,returnTo:e,fallback:n}),o=a.action===`redirect`?a.to:n;return{destination:o,requiresFullPageNavigation:u(o)}}export{u as a,p as c,l as i,a as n,f as o,c as r,m as s,o as t};
1
+ import{d as e}from"./routes-B7wRw3UT.js";import{a as t,n,r}from"./navigation-resolver-jIQ5B6JB.js";import{t as i}from"./build-state-laR44jYU.js";var a=`workos`,o=e.account.providerCallback,s=`authIntent`;function c(e,t={}){let n=new URLSearchParams;e&&n.set(`returnTo`,e),t.authIntent&&n.set(s,t.authIntent);let r=n.toString();return r?`${o}?${r}`:o}function l(e){return e.get(s)===`signup`?`signup`:`login`}function u(e){return e.startsWith(`http`)||e.startsWith(`/accounts/`)||e.startsWith(`/v1/`)||e.startsWith(`/_allauth/`)||e.startsWith(`/import`)}var d=[e.checkout,e.plans,`${e.settings.root}/billing`,e.account.root];function f(e){if(u(e))return!0;let t=e.split(/[?#]/)[0]??e;return d.some(e=>t===e||t.startsWith(`${e}/`))||r(e)!==null?!0:n(e)}function p(e,t){return m({returnTo:e,fallback:t,authIntent:`login`})}function m({returnTo:e,fallback:n,authIntent:r}){let a=t(i(),{kind:`post-auth`,authIntent:r,returnTo:e,fallback:n}),o=a.action===`redirect`?a.to:n;return{destination:o,requiresFullPageNavigation:u(o)}}export{u as a,p as c,l as i,a as n,f as o,c as r,m as s,o as t};
@@ -0,0 +1 @@
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-DiNp24s6.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-VkxVX0DM.js";import{u as i}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as a}from"./jsx-runtime-BJ8jcmzB.js";import{t as o}from"./cn-Cf8SmgbR.js";import"./src-CImIAPTd.js";import"./i18n-C9hRT4Lf.js";import{t as s}from"./useTranslation-D9pPv-bA.js";import{D as c,m as l,p as u}from"./native-biometric-D9IxNvJM.js";import{d}from"./routes-B7wRw3UT.js";import{a as f,i as p,n as m,r as h}from"./use-onboarding-login-BdVTfZ3o.js";import{t as g}from"./public-asset-CNgVJ7i4.js";import{n as _,t as v}from"./auth-welcome-screen-Pw3qXxi5.js";import{n as y,t as b}from"./use-return-to-short-circuit-EtY8cSC7.js";var x=e(n(),1),S=a();function C({children:e}){return(0,S.jsxs)(`div`,{className:`fixed inset-0 z-50 flex flex-col items-center justify-center bg-[var(--surface-base)] text-[var(--content-default)]`,children:[(0,S.jsx)(`img`,{src:g(`/vellum-logo.svg`),alt:`Vellum`,width:220,height:66,className:`block dark:hidden`}),(0,S.jsx)(`img`,{src:g(`/vellum-logo-white.svg`),alt:`Vellum`,width:220,height:66,className:`hidden dark:block`}),e,(0,S.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute left-1/2 w-full max-w-[900px] -translate-x-1/2`,style:{bottom:0},children:(0,S.jsx)(`img`,{src:g(`/login-background-characters.svg`),alt:``,width:880,height:182,className:`h-auto w-full`})})]})}function w({children:e,className:t}){return(0,S.jsx)(`p`,{className:o(`text-body-small-default text-center text-[var(--system-negative-strong)]`,t),children:e})}function T({returnTo:e}){let{t:n}=s(`account`),[i,a]=(0,x.useState)(null),[o,c]=(0,x.useState)(!1),l=async()=>{a(null),c(!0);try{await u({returnTo:e??null})}catch(e){if(h(e)){c(!1);return}t(e,{context:`native_login`,tags:{authError:p(e)??`unclassified`}}),a(n(f(e),{community:m})),c(!1)}};return(0,S.jsx)(C,{children:(0,S.jsxs)(`div`,{className:`z-10 mt-8 flex w-full max-w-[320px] flex-col items-center gap-3`,children:[i&&(0,S.jsx)(w,{className:`max-w-[280px]`,children:i}),(0,S.jsx)(r,{type:`button`,variant:`primary`,fullWidth:!0,onClick:()=>{l()},disabled:o,className:`max-w-[300px]`,children:n(`loginPage.signIn`)})]})})}function E({returnTo:e}){let{t}=s(`account`),{search:n}=i(),r=c(e?`${d.account.signup}?returnTo=${encodeURIComponent(e)}`:d.account.signup,n);return(0,S.jsx)(v,{returnTo:e,errorContext:`web_login`,fillsViewport:!0,secondary:{label:t(`loginPage.signUp`),href:r}})}function D(){let e=l(),t=b();return t.kind===`wait`?e?(0,S.jsx)(C,{}):(0,S.jsx)(_,{fillsViewport:!0,children:(0,S.jsx)(y,{})}):t.kind===`redirect`?t.node:e?(0,S.jsx)(T,{returnTo:t.returnTo}):(0,S.jsx)(E,{returnTo:t.returnTo})}export{D as LoginPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{h as n}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as r}from"./jsx-runtime-BJ8jcmzB.js";import"./i18n--HmJLuhM.js";import{t as i}from"./useTranslation-DdVCKPgw.js";import{n as a}from"./auth-store-DDMY1UvK.js";import{w as o}from"./native-biometric-BxYhgb-X.js";import{d as s}from"./routes-B7wRw3UT.js";import{t as c}from"./hard-navigate-CNxvVrtC.js";import{r as l,t as u}from"./account-shell-DdH2Ze4T.js";var d=e(t(),1),f=r();function p(){let{t:e}=i(`account`),[t]=n(),r=a.use.logout(),p=(0,d.useRef)(!1);return(0,d.useEffect)(()=>{if(p.current)return;p.current=!0;let e=o(t.get(`returnTo`),s.account.login),n=e.startsWith(`http`)||e===s.account.login?e:`${s.account.login}?returnTo=${encodeURIComponent(e)}`,i=!1;return r().then(()=>{i||c(n)},()=>{i||c(n)}),()=>{i=!0}},[r,t]),(0,f.jsx)(u,{children:(0,f.jsx)(l,{title:e(`logoutPage.title`)})})}export{p as LogoutPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{h as n}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as r}from"./jsx-runtime-BJ8jcmzB.js";import"./i18n-C9hRT4Lf.js";import{t as i}from"./useTranslation-D9pPv-bA.js";import{n as a}from"./auth-store-CVtcHK0b.js";import{w as o}from"./native-biometric-D9IxNvJM.js";import{d as s}from"./routes-B7wRw3UT.js";import{t as c}from"./hard-navigate-CNxvVrtC.js";import{r as l,t as u}from"./account-shell-Dk4m-iaE.js";var d=e(t(),1),f=r();function p(){let{t:e}=i(`account`),[t]=n(),r=a.use.logout(),p=(0,d.useRef)(!1);return(0,d.useEffect)(()=>{if(p.current)return;p.current=!0;let e=o(t.get(`returnTo`),s.account.login),n=e.startsWith(`http`)||e===s.account.login?e:`${s.account.login}?returnTo=${encodeURIComponent(e)}`,i=!1;return r().then(()=>{i||c(n)},()=>{i||c(n)}),()=>{i=!0}},[r,t]),(0,f.jsx)(u,{children:(0,f.jsx)(l,{title:e(`logoutPage.title`)})})}export{p as LogoutPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{r as n,u as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as i}from"./jsx-runtime-BJ8jcmzB.js";import{t as a}from"./createLucideIcon-B-ZPaMbU.js";import{t as o}from"./mail-9qQtaWSe.js";import{d as s}from"./routes-B7wRw3UT.js";import{i as c}from"./use-platform-gate-DJ7NtOkG.js";import{n as l,t as u}from"./sidebar-tree-BNzVigoN.js";var d=a(`monitor-cog`,[[`path`,{d:`M12 17v4`,key:`1riwvh`}],[`path`,{d:`m14.305 7.53.923-.382`,key:`1mlnsw`}],[`path`,{d:`m15.228 4.852-.923-.383`,key:`82mpwg`}],[`path`,{d:`m16.852 3.228-.383-.924`,key:`ln4sir`}],[`path`,{d:`m16.852 8.772-.383.923`,key:`1dejw0`}],[`path`,{d:`m19.148 3.228.383-.924`,key:`192kgf`}],[`path`,{d:`m19.53 9.696-.382-.924`,key:`fiavlr`}],[`path`,{d:`m20.772 4.852.924-.383`,key:`1j8mgp`}],[`path`,{d:`m20.772 7.148.924.383`,key:`zix9be`}],[`path`,{d:`M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7`,key:`1tnzv8`}],[`path`,{d:`M8 21h8`,key:`1ev6f3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}]]),f=e(t(),1),p=[{id:`emails`,label:`Emails`,href:s.logs.emails,icon:o},{id:`system-events`,label:`System Events`,href:s.logs.systemEvents,icon:d}],m=i();function h(){let e=c({platformHostedOnly:!0}),t=c(),{pathname:i}=r(),a=(0,f.useMemo)(()=>p.filter(n=>!(n.id===`system-events`&&e===`gated`||n.id===`emails`&&t===`gated`)),[e,t]),o=(0,f.useMemo)(()=>{let e=p.find(e=>i===e.href||i.startsWith(e.href+`/`));return e?e.label:i===s.logs.root?p[0]?.label??`Logs & Usage`:`Logs & Usage`},[i]);return(0,m.jsx)(l,{backHref:s.assistant,sidebar:(0,m.jsx)(u,{items:a,indexPath:s.logs.root}),title:o,menuRoute:s.logs.root,children:(0,m.jsx)(n,{})})}export{h as LogsLayout};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{r as n,u as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as i}from"./jsx-runtime-BJ8jcmzB.js";import{t as a}from"./createLucideIcon-B-ZPaMbU.js";import{t as o}from"./mail-9qQtaWSe.js";import{d as s}from"./routes-B7wRw3UT.js";import{i as c}from"./use-platform-gate-DG9Xg3Hs.js";import{n as l,t as u}from"./sidebar-tree-Bp0eeKf2.js";var d=a(`monitor-cog`,[[`path`,{d:`M12 17v4`,key:`1riwvh`}],[`path`,{d:`m14.305 7.53.923-.382`,key:`1mlnsw`}],[`path`,{d:`m15.228 4.852-.923-.383`,key:`82mpwg`}],[`path`,{d:`m16.852 3.228-.383-.924`,key:`ln4sir`}],[`path`,{d:`m16.852 8.772-.383.923`,key:`1dejw0`}],[`path`,{d:`m19.148 3.228.383-.924`,key:`192kgf`}],[`path`,{d:`m19.53 9.696-.382-.924`,key:`fiavlr`}],[`path`,{d:`m20.772 4.852.924-.383`,key:`1j8mgp`}],[`path`,{d:`m20.772 7.148.924.383`,key:`zix9be`}],[`path`,{d:`M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7`,key:`1tnzv8`}],[`path`,{d:`M8 21h8`,key:`1ev6f3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}]]),f=e(t(),1),p=[{id:`emails`,label:`Emails`,href:s.logs.emails,icon:o},{id:`system-events`,label:`System Events`,href:s.logs.systemEvents,icon:d}],m=i();function h(){let e=c({platformHostedOnly:!0}),t=c(),{pathname:i}=r(),a=(0,f.useMemo)(()=>p.filter(n=>!(n.id===`system-events`&&e===`gated`||n.id===`emails`&&t===`gated`)),[e,t]),o=(0,f.useMemo)(()=>{let e=p.find(e=>i===e.href||i.startsWith(e.href+`/`));return e?e.label:i===s.logs.root?p[0]?.label??`Logs & Usage`:`Logs & Usage`},[i]);return(0,m.jsx)(l,{backHref:s.assistant,sidebar:(0,m.jsx)(u,{items:a,indexPath:s.logs.root}),title:o,menuRoute:s.logs.root,children:(0,m.jsx)(n,{})})}export{h as LogsLayout};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-BJ8jcmzB.js";import{t}from"./typography-DekrYXvs.js";import{t as n}from"./preview-error-BkNW-Vj0.js";import"./src-qDZBwoEm.js";import{t as r}from"./file-markdown-Br-X9E8g.js";import{t as i}from"./preview-skeleton-Be9eHMn9.js";import{t as a}from"./use-truncated-blob-text-CHF4X4vL.js";var o=e(),s=512*1024,c=`Showing the first 512 KB`;function l({blob:e,filename:l}){let{text:u,truncated:d,decodeFailed:f}=a(e,s);return f?(0,o.jsx)(n,{filename:l}):u===null?(0,o.jsx)(i,{}):(0,o.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-2`,children:[(0,o.jsx)(r,{content:u}),d&&(0,o.jsx)(t,{as:`p`,variant:`label-small-default`,className:`border-t border-[var(--border-element)] pt-2 text-[var(--content-tertiary)]`,children:c})]})}export{l as MarkdownPreview};
1
+ import{t as e}from"./jsx-runtime-BJ8jcmzB.js";import{t}from"./typography-DekrYXvs.js";import{t as n}from"./preview-error-gCViZZRw.js";import"./src-CImIAPTd.js";import{t as r}from"./file-markdown-C1rEGVrN.js";import{t as i}from"./preview-skeleton-Be9eHMn9.js";import{t as a}from"./use-truncated-blob-text-BYAPiP8I.js";var o=e(),s=512*1024,c=`Showing the first 512 KB`;function l({blob:e,filename:l}){let{text:u,truncated:d,decodeFailed:f}=a(e,s);return f?(0,o.jsx)(n,{filename:l}):u===null?(0,o.jsx)(i,{}):(0,o.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-2`,children:[(0,o.jsx)(r,{content:u}),d&&(0,o.jsx)(t,{as:`p`,variant:`label-small-default`,className:`border-t border-[var(--border-element)] pt-2 text-[var(--content-tertiary)]`,children:c})]})}export{l as MarkdownPreview};
@@ -1,2 +1,2 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{d as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./jsx-runtime-BJ8jcmzB.js";import{t as s}from"./queryOptions-DbnOXI51.js";import{t as c}from"./typography-DekrYXvs.js";import{o as l}from"./list-row-CDwzGT9g.js";import{t as u}from"./chevron-down-CmQCCo_x.js";import{t as d}from"./chevron-left-02Er54z-.js";import{t as f}from"./chevron-up-DHhqG14M.js";import{t as p}from"./loader-circle-DYe85z3g.js";import{n as m,t as h}from"./minimize-2-dhLse52Y.js";import{t as g}from"./message-circle-CQpMnPIR.js";import{t as _}from"./plus-CWkbiq1y.js";import{t as v}from"./refresh-cw-p138DTtp.js";import{t as y}from"./rotate-ccw-Cs7aCSL9.js";import{t as b}from"./search-D_t5oHhF.js";import{t as x}from"./settings-B-74NxzZ.js";import{t as S}from"./sparkles-Bhr0JiLM.js";import{t as C}from"./x-zfSDUG5z.js";import{i as ee,n as w,r as te,t as T}from"./invalidate-memory-queries-CSQ9nfIN.js";import"./src-qDZBwoEm.js";import{n as ne}from"./input-DkgpMeG9.js";import{t as E}from"./modal-UYNawsIu.js";import{n as D}from"./toast-DqqWkjsh.js";import{t as re}from"./file-markdown-Br-X9E8g.js";import{o as O}from"./i18n--HmJLuhM.js";import{t as k}from"./useTranslation-DdVCKPgw.js";import{i as A,n as ie,t as ae}from"./api-errors-CASENJGT.js";import{Sn as oe,fn as j}from"./sdk.gen-CiE6cMi0.js";import{d as M}from"./routes-B7wRw3UT.js";import{t as N}from"./consent-mbj_kMXO.js";import{t as P}from"./ingest-C3QOaKA5.js";import{r as F}from"./conversation-navigation-DQEOhOXf.js";import{n as I}from"./get-memory-stats-SquVhZnd.js";import{t as L}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as R}from"./use-assistant-capability-CmwC8eoT.js";import{t as z}from"./use-active-assistant-id-BADYKVyx.js";var B=e(t(),1),V={x:600,y:450},se=`memory_tab_v1`,ce=crypto.randomUUID();function H(e){typeof window>`u`||N()&&P([{type:`onboarding`,daemon_event_id:crypto.randomUUID(),recorded_at:Date.now(),screen:`memory`,session_id:ce,step_name:e,funnel_version:se}])}var U=Math.PI*(3-Math.sqrt(5)),W=7,G=2.4,K=34,le=10;function ue(e){return Math.min(K,W+G*Math.sqrt(e))}function de(e){return e===`concept`||e===`skill`||e===`capability`||e===`pending`?e:`other`}function q(e){return e===`link`||e===`learned`?e:`other`}function fe(e,t={}){let n=t.center??V,r=e.nodes,i=r.length;if(i===0)return{nodes:[],edges:[]};let a=new Map;r.forEach((e,t)=>a.set(e.id,t));let o=e.edges.filter(e=>e.source!==e.target&&a.has(e.source)&&a.has(e.target)),s=Array(i).fill(0),c=[];for(let e of o){let t=a.get(e.source),n=a.get(e.target);s[t]++,s[n]++,c.push([t,n])}let l=r.map((e,t)=>ue(s[t])),u=70+26*Math.sqrt(i),d=r.map((e,t)=>{let r=(t+.5)/i,a=Math.acos(1-2*r),o=t*U,s=u*Math.cbrt(r),c=Math.sin(a);return{x:n.x+s*c*Math.cos(o),y:n.y+s*c*Math.sin(o),z:s*Math.cos(a),vx:0,vy:0,vz:0}}),f=t.iterations??Math.max(90,Math.min(340,Math.round(46e3/i))),p=.011,m=.82,h=.5,g=1,_=1-.001**(1/f);for(let e=0;e<f;e++){for(let e=0;e<i;e++){let t=d[e];for(let n=e+1;n<i;n++){let r=d[n],i=t.x-r.x,a=t.y-r.y,o=t.z-r.z,s=i*i+a*a+o*o;s<.01&&(i=(e-n)*.1+.1,a=.1,o=.05,s=i*i+a*a+o*o);let c=Math.sqrt(s),l=6400/s,u=i/c*l,f=a/c*l,p=o/c*l;t.vx+=u,t.vy+=f,t.vz+=p,r.vx-=u,r.vy-=f,r.vz-=p}}for(let[e,t]of c){let n=d[e],r=d[t],i=r.x-n.x,a=r.y-n.y,o=r.z-n.z,s=Math.sqrt(i*i+a*a+o*o)||.01,c=.05*(s-140),l=i/s*c,u=a/s*c,f=o/s*c;n.vx+=l,n.vy+=u,n.vz+=f,r.vx-=l,r.vy-=u,r.vz-=f}for(let e=0;e<i;e++){let t=d[e];t.vx+=(n.x-t.x)*p,t.vy+=(n.y-t.y)*p,t.vz+=(0-t.z)*p,t.x+=t.vx*g*h,t.y+=t.vy*g*h,t.z+=t.vz*g*h,t.vx*=m,t.vy*=m,t.vz*=m}g*=1-_}for(let e=0;e<10;e++){let e=!1;for(let t=0;t<i;t++){let n=d[t];for(let r=t+1;r<i;r++){let i=d[r],a=i.x-n.x,o=i.y-n.y,s=i.z-n.z,c=Math.sqrt(a*a+o*o+s*s),u=l[t]+l[r]+le;if(c>=u)continue;c<.01&&(a=(r-t)*.1+.1,o=.1,s=.05,c=Math.sqrt(a*a+o*o+s*s));let f=(u-c)/2,p=a/c*f,m=o/c*f,h=s/c*f;n.x-=p,n.y-=m,n.z-=h,i.x+=p,i.y+=m,i.z+=h,e=!0}}if(!e)break}return{nodes:r.map((e,t)=>{let n={id:e.id,x:d[t].x,y:d[t].y,z:d[t].z,radius:l[t],label:e.label,kind:de(e.kind),degree:s[t]};return e.summary&&(n.summary=e.summary),e.updatedAtMs!==void 0&&(n.updatedAtMs=e.updatedAtMs),n}),edges:o.map((e,t)=>{let n={id:`${e.source}__${e.target}__${t}`,fromId:e.source,toId:e.target,kind:q(e.kind),directed:e.directed??!1};return e.description&&(n.description=e.description),n})}}var J=o();function pe({title:e,detail:t,action:n}){return(0,J.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-2 px-6 text-center`,children:[(0,J.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),t?(0,J.jsx)(`p`,{className:`max-w-sm text-body-small-default`,style:{color:`var(--content-tertiary)`},children:t}):null,n?(0,J.jsx)(`div`,{className:`mt-2`,children:n}):null]})}function me(){return O(`getMemoryGraphNode.failureMessage`,{ns:`intelligence`})}function he(e,t){return s({queryKey:[`memory-graph-node`,e,t],enabled:!!(e&&t),queryFn:async()=>{let{data:n,error:r,response:i}=await oe({path:{assistant_id:e},query:{id:t??``},throwOnError:!1});if(ie(i,r,me()),!i.ok)throw new ae(i.status,A(r,i,me()));return n??{found:!1}}})}var ge={concept:`#467CC8`,skill:`#DB4B77`,capability:`#0E9B8B`,pending:`#F1B21E`,other:`#8D99A5`},_e=[`#467CC8`,`#E86B40`,`#7A5AF5`,`#22B8CF`,`#3DB85E`,`#E9C91A`,`#E83F5B`,`#6ECF87`,`#F39B74`,`#F5C94E`],Y={concept:`conceptGraphConstants.nodeKind.concept`,skill:`conceptGraphConstants.nodeKind.skill`,capability:`conceptGraphConstants.nodeKind.capability`,pending:`conceptGraphConstants.nodeKind.pending`,other:`conceptGraphConstants.nodeKind.other`};function ve(e){return O(Y[e],{ns:`intelligence`})}var ye=`#F1B21E`;function be(e){if(e.length<=4)return e.map((e,t)=>({node:e,index:t}));let t=e.slice(-3).map((t,n)=>({node:t,index:e.length-3+n}));return[{node:e[0],index:0},`ellipsis`,...t]}function xe(e){return e?new Date(e).toLocaleDateString(`en-GB`,{day:`numeric`,month:`short`,year:`numeric`}):null}var X=600;function Se(e){let t=e.slice(0,X),n=t.lastIndexOf(`
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{d as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./jsx-runtime-BJ8jcmzB.js";import{t as s}from"./queryOptions-DbnOXI51.js";import{t as c}from"./typography-DekrYXvs.js";import{o as l}from"./list-row-CDwzGT9g.js";import{t as u}from"./chevron-down-CmQCCo_x.js";import{t as d}from"./chevron-left-02Er54z-.js";import{t as f}from"./chevron-up-DHhqG14M.js";import{t as p}from"./loader-circle-DYe85z3g.js";import{n as m,t as h}from"./minimize-2-dhLse52Y.js";import{t as g}from"./message-circle-CQpMnPIR.js";import{t as _}from"./plus-CWkbiq1y.js";import{t as v}from"./refresh-cw-p138DTtp.js";import{t as y}from"./rotate-ccw-Cs7aCSL9.js";import{t as b}from"./search-D_t5oHhF.js";import{t as x}from"./settings-B-74NxzZ.js";import{t as S}from"./sparkles-Bhr0JiLM.js";import{t as C}from"./x-zfSDUG5z.js";import{i as ee,n as w,r as te,t as T}from"./invalidate-memory-queries-C4-KSsdB.js";import"./src-CImIAPTd.js";import{n as ne}from"./input-DkgpMeG9.js";import{t as E}from"./modal-UYNawsIu.js";import{n as D}from"./toast-DqqWkjsh.js";import{t as re}from"./file-markdown-C1rEGVrN.js";import{s as O}from"./i18n-C9hRT4Lf.js";import{t as k}from"./useTranslation-D9pPv-bA.js";import{i as A,n as ie,t as ae}from"./api-errors-CASENJGT.js";import{Sn as oe,fn as j}from"./sdk.gen-CiE6cMi0.js";import{d as M}from"./routes-B7wRw3UT.js";import{t as N}from"./consent-mbj_kMXO.js";import{t as P}from"./ingest-DXklElaR.js";import{r as F}from"./conversation-navigation-B_4jZ9Z2.js";import{n as I}from"./get-memory-stats-SquVhZnd.js";import{t as L}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as R}from"./use-assistant-capability-C-yHcMH4.js";import{t as z}from"./use-active-assistant-id-BADYKVyx.js";var B=e(t(),1),V={x:600,y:450},se=`memory_tab_v1`,ce=crypto.randomUUID();function H(e){typeof window>`u`||N()&&P([{type:`onboarding`,daemon_event_id:crypto.randomUUID(),recorded_at:Date.now(),screen:`memory`,session_id:ce,step_name:e,funnel_version:se}])}var U=Math.PI*(3-Math.sqrt(5)),W=7,G=2.4,K=34,le=10;function ue(e){return Math.min(K,W+G*Math.sqrt(e))}function de(e){return e===`concept`||e===`skill`||e===`capability`||e===`pending`?e:`other`}function q(e){return e===`link`||e===`learned`?e:`other`}function fe(e,t={}){let n=t.center??V,r=e.nodes,i=r.length;if(i===0)return{nodes:[],edges:[]};let a=new Map;r.forEach((e,t)=>a.set(e.id,t));let o=e.edges.filter(e=>e.source!==e.target&&a.has(e.source)&&a.has(e.target)),s=Array(i).fill(0),c=[];for(let e of o){let t=a.get(e.source),n=a.get(e.target);s[t]++,s[n]++,c.push([t,n])}let l=r.map((e,t)=>ue(s[t])),u=70+26*Math.sqrt(i),d=r.map((e,t)=>{let r=(t+.5)/i,a=Math.acos(1-2*r),o=t*U,s=u*Math.cbrt(r),c=Math.sin(a);return{x:n.x+s*c*Math.cos(o),y:n.y+s*c*Math.sin(o),z:s*Math.cos(a),vx:0,vy:0,vz:0}}),f=t.iterations??Math.max(90,Math.min(340,Math.round(46e3/i))),p=.011,m=.82,h=.5,g=1,_=1-.001**(1/f);for(let e=0;e<f;e++){for(let e=0;e<i;e++){let t=d[e];for(let n=e+1;n<i;n++){let r=d[n],i=t.x-r.x,a=t.y-r.y,o=t.z-r.z,s=i*i+a*a+o*o;s<.01&&(i=(e-n)*.1+.1,a=.1,o=.05,s=i*i+a*a+o*o);let c=Math.sqrt(s),l=6400/s,u=i/c*l,f=a/c*l,p=o/c*l;t.vx+=u,t.vy+=f,t.vz+=p,r.vx-=u,r.vy-=f,r.vz-=p}}for(let[e,t]of c){let n=d[e],r=d[t],i=r.x-n.x,a=r.y-n.y,o=r.z-n.z,s=Math.sqrt(i*i+a*a+o*o)||.01,c=.05*(s-140),l=i/s*c,u=a/s*c,f=o/s*c;n.vx+=l,n.vy+=u,n.vz+=f,r.vx-=l,r.vy-=u,r.vz-=f}for(let e=0;e<i;e++){let t=d[e];t.vx+=(n.x-t.x)*p,t.vy+=(n.y-t.y)*p,t.vz+=(0-t.z)*p,t.x+=t.vx*g*h,t.y+=t.vy*g*h,t.z+=t.vz*g*h,t.vx*=m,t.vy*=m,t.vz*=m}g*=1-_}for(let e=0;e<10;e++){let e=!1;for(let t=0;t<i;t++){let n=d[t];for(let r=t+1;r<i;r++){let i=d[r],a=i.x-n.x,o=i.y-n.y,s=i.z-n.z,c=Math.sqrt(a*a+o*o+s*s),u=l[t]+l[r]+le;if(c>=u)continue;c<.01&&(a=(r-t)*.1+.1,o=.1,s=.05,c=Math.sqrt(a*a+o*o+s*s));let f=(u-c)/2,p=a/c*f,m=o/c*f,h=s/c*f;n.x-=p,n.y-=m,n.z-=h,i.x+=p,i.y+=m,i.z+=h,e=!0}}if(!e)break}return{nodes:r.map((e,t)=>{let n={id:e.id,x:d[t].x,y:d[t].y,z:d[t].z,radius:l[t],label:e.label,kind:de(e.kind),degree:s[t]};return e.summary&&(n.summary=e.summary),e.updatedAtMs!==void 0&&(n.updatedAtMs=e.updatedAtMs),n}),edges:o.map((e,t)=>{let n={id:`${e.source}__${e.target}__${t}`,fromId:e.source,toId:e.target,kind:q(e.kind),directed:e.directed??!1};return e.description&&(n.description=e.description),n})}}var J=o();function pe({title:e,detail:t,action:n}){return(0,J.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-2 px-6 text-center`,children:[(0,J.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),t?(0,J.jsx)(`p`,{className:`max-w-sm text-body-small-default`,style:{color:`var(--content-tertiary)`},children:t}):null,n?(0,J.jsx)(`div`,{className:`mt-2`,children:n}):null]})}function me(){return O(`getMemoryGraphNode.failureMessage`,{ns:`intelligence`})}function he(e,t){return s({queryKey:[`memory-graph-node`,e,t],enabled:!!(e&&t),queryFn:async()=>{let{data:n,error:r,response:i}=await oe({path:{assistant_id:e},query:{id:t??``},throwOnError:!1});if(ie(i,r,me()),!i.ok)throw new ae(i.status,A(r,i,me()));return n??{found:!1}}})}var ge={concept:`#467CC8`,skill:`#DB4B77`,capability:`#0E9B8B`,pending:`#F1B21E`,other:`#8D99A5`},_e=[`#467CC8`,`#E86B40`,`#7A5AF5`,`#22B8CF`,`#3DB85E`,`#E9C91A`,`#E83F5B`,`#6ECF87`,`#F39B74`,`#F5C94E`],Y={concept:`conceptGraphConstants.nodeKind.concept`,skill:`conceptGraphConstants.nodeKind.skill`,capability:`conceptGraphConstants.nodeKind.capability`,pending:`conceptGraphConstants.nodeKind.pending`,other:`conceptGraphConstants.nodeKind.other`};function ve(e){return O(Y[e],{ns:`intelligence`})}var ye=`#F1B21E`;function be(e){if(e.length<=4)return e.map((e,t)=>({node:e,index:t}));let t=e.slice(-3).map((t,n)=>({node:t,index:e.length-3+n}));return[{node:e[0],index:0},`ellipsis`,...t]}function xe(e){return e?new Date(e).toLocaleDateString(`en-GB`,{day:`numeric`,month:`short`,year:`numeric`}):null}var X=600;function Se(e){let t=e.slice(0,X),n=t.lastIndexOf(`
2
2
  `);return n>X/2?e.slice(0,n):t}function Ce({content:e}){let[t,r]=(0,B.useState)(!1),{t:i}=k(`intelligence`);return e.length<=X?(0,J.jsx)(re,{content:e}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(re,{content:t?e:Se(e)}),(0,J.jsx)(n,{variant:`ghost`,size:`compact`,className:`-ml-2 mt-1`,onClick:()=>r(e=>!e),rightIcon:t?(0,J.jsx)(f,{size:16,"aria-hidden":!0}):(0,J.jsx)(u,{size:16,"aria-hidden":!0}),children:i(t?`conceptDetailPanel.showLess`:`conceptDetailPanel.readFullNote`)})]})}function we({assistantId:e,node:t,trail:r,neighbors:i,onTravel:o,onCrumb:s,onClose:c,onOpenThread:l}){let{t:u}=k(`intelligence`),f=a(he(e,t.id)),p=f.data,m=xe(t.updatedAtMs),h=p?.title??t.label,_=be(r);return(0,B.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),c())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[c]),(0,J.jsxs)(`div`,{"data-graph-panel":!0,className:`absolute inset-0 z-20 flex justify-end`,onPointerDown:e=>e.stopPropagation(),onPointerMove:e=>e.stopPropagation(),onPointerUp:e=>e.stopPropagation(),children:[(0,J.jsx)(`div`,{className:`absolute inset-0`,style:{backgroundColor:`color-mix(in srgb, var(--surface-base) 16%, transparent)`},onClick:c}),(0,J.jsxs)(`aside`,{className:`relative flex h-full min-h-0 w-full max-w-md flex-col overflow-hidden`,style:{backgroundColor:`var(--surface-lift)`,borderLeft:`1px solid var(--border-base)`},children:[r.length>1?(0,J.jsxs)(`nav`,{"aria-label":u(`conceptDetailPanel.trailAriaLabel`),className:`flex shrink-0 items-center gap-1 overflow-hidden border-b px-5 py-2 text-body-small-default`,style:{borderColor:`var(--border-base)`,color:`var(--content-tertiary)`},children:[(0,J.jsx)(`button`,{type:`button`,onClick:()=>s(r.length-2),"aria-label":u(`conceptDetailPanel.backAriaLabel`),className:`-ml-1 mr-0.5 flex shrink-0 items-center rounded p-0.5 hover:bg-[color-mix(in_srgb,var(--content-tertiary)_14%,transparent)]`,style:{color:`var(--content-tertiary)`},children:(0,J.jsx)(d,{size:16,"aria-hidden":!0})}),_.map((e,t)=>(0,J.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1`,children:[t>0?(0,J.jsx)(`span`,{"aria-hidden":!0,children:`›`}):null,e===`ellipsis`?(0,J.jsx)(`span`,{"aria-hidden":!0,children:`…`}):e.index===r.length-1?(0,J.jsx)(`span`,{"aria-current":`page`,className:`max-w-[9rem] truncate`,style:{color:`var(--content-default)`},children:e.node.label}):(0,J.jsx)(`button`,{type:`button`,onClick:()=>s(e.index),className:`max-w-[8rem] truncate rounded hover:underline`,style:{color:`var(--content-tertiary)`},children:e.node.label})]},e===`ellipsis`?`ellipsis`:e.index))]}):null,(0,J.jsxs)(`header`,{className:`flex shrink-0 items-start justify-between gap-3 border-b px-5 py-4`,style:{borderColor:`var(--border-base)`},children:[(0,J.jsxs)(`div`,{className:`min-w-0`,children:[(0,J.jsx)(`h2`,{className:`truncate text-title-small`,style:{color:`var(--content-default)`},title:p?.title??t.label,children:p?.title??t.label}),m?(0,J.jsx)(`p`,{className:`mt-0.5 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:u(`conceptDetailPanel.updated`,{date:m})}):null]}),(0,J.jsx)(n,{variant:`ghost`,iconOnly:(0,J.jsx)(C,{"aria-hidden":!0}),onClick:c,"aria-label":u(`conceptDetailPanel.closeAriaLabel`),tintColor:`var(--content-tertiary)`})]}),(0,J.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-5 py-4`,style:{touchAction:`pan-y`},children:[f.isLoading?(0,J.jsx)(`div`,{className:`flex justify-center py-8`,children:(0,J.jsx)(`div`,{className:`h-5 w-5 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})}):f.isError?(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:u(`conceptDetailPanel.loadError`)}):p?.found&&p.content?.trim()?(0,J.jsx)(Ce,{content:p.content},t.id):(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:u(`conceptDetailPanel.emptyContent`)}),i.length>0?(0,J.jsxs)(`section`,{className:`mt-6 border-t pt-4`,style:{borderColor:`var(--border-base)`},children:[(0,J.jsxs)(`div`,{className:`mb-2 flex items-baseline justify-between gap-2`,children:[(0,J.jsx)(`h3`,{className:`text-body-small-default uppercase tracking-wide`,style:{color:`var(--content-tertiary)`},children:u(`conceptDetailPanel.wiredTo`)}),(0,J.jsx)(`span`,{className:`text-body-small-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:u(`conceptDetailPanel.connectionCount`,{count:i.length})})]}),(0,J.jsx)(`ul`,{className:`flex list-none flex-col gap-0.5`,children:i.map(e=>(0,J.jsx)(`li`,{children:(0,J.jsxs)(`button`,{type:`button`,onClick:()=>o({id:e.id,label:e.label}),className:`flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left text-body-medium-default hover:bg-[color-mix(in_srgb,var(--content-tertiary)_12%,transparent)]`,style:{color:`var(--content-default)`},children:[(0,J.jsx)(`span`,{"aria-hidden":!0,className:`h-1.5 w-1.5 shrink-0 rounded-full`,style:{backgroundColor:e.kind===`learned`?ye:`var(--content-tertiary)`}}),(0,J.jsx)(`span`,{className:`truncate`,children:e.label})]})},e.id))})]}):null]}),l?(0,J.jsxs)(`footer`,{className:`flex shrink-0 gap-2 border-t px-5 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,J.jsx)(n,{variant:`outlined`,size:`regular`,className:`flex-1`,leftIcon:(0,J.jsx)(g,{size:16,"aria-hidden":!0}),onClick:()=>l(u(`conceptDetailPanel.askPrompt`,{title:h})),children:u(`conceptDetailPanel.askAboutThis`)}),(0,J.jsx)(n,{variant:`primary`,size:`regular`,className:`flex-1`,leftIcon:(0,J.jsx)(S,{size:16,"aria-hidden":!0}),onClick:()=>l(u(`conceptDetailPanel.refinePrompt`,{title:h})),children:u(`conceptDetailPanel.refine`)})]}):null]})]})}function Te({onDismiss:e}){let{t}=k(`intelligence`);return(0,J.jsxs)(`div`,{"data-graph-control":!0,className:`pointer-events-auto absolute left-1/2 top-4 z-10 flex w-[min(30rem,calc(100%-6rem))] -translate-x-1/2 items-start gap-3 rounded-xl px-4 py-3`,style:{backgroundColor:`var(--surface-lift)`,border:`1px solid var(--border-base)`,boxShadow:`0 4px 12px rgba(0, 0, 0, 0.25)`},children:[(0,J.jsx)(`span`,{className:`mt-0.5 shrink-0`,style:{color:`var(--primary-base)`},"aria-hidden":!0,children:(0,J.jsx)(S,{size:18})}),(0,J.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,J.jsx)(`p`,{className:`text-body-medium-emphasised`,style:{color:`var(--content-default)`},children:t(`conceptGraphIntroBanner.title`)}),(0,J.jsx)(`p`,{className:`mt-0.5 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:t(`conceptGraphIntroBanner.description`)})]}),(0,J.jsx)(n,{variant:`ghost`,iconOnly:(0,J.jsx)(C,{"aria-hidden":!0}),onClick:e,"aria-label":t(`conceptGraphIntroBanner.dismissAriaLabel`),tintColor:`var(--content-tertiary)`})]})}var Ee=8;function De({nodeKinds:e,coloredByTheme:t,themes:n,hasLinks:r,hasLearned:i,onToggleLink:a,onToggleLearned:o,linkActive:s,learnedActive:c}){let{t:l}=k(`intelligence`);return(0,J.jsxs)(`div`,{"data-graph-control":!0,className:`pointer-events-none absolute bottom-4 left-4 flex flex-col gap-1.5 rounded-lg px-3 py-2`,style:{backgroundColor:`color-mix(in srgb, var(--surface-base) 78%, transparent)`,border:`1px solid var(--border-base)`},children:[e.map(e=>(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`span`,{className:`inline-block h-2.5 w-2.5 rounded-full`,style:{backgroundColor:ge[e]}}),(0,J.jsx)(`span`,{className:`text-[11px]`,style:{color:`var(--content-tertiary)`},children:ve(e)})]},e)),t&&(n&&n.length>0?(0,J.jsxs)(J.Fragment,{children:[n.slice(0,Ee).map((e,t)=>(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`span`,{className:`inline-block h-2.5 w-2.5 shrink-0 rounded-full`,style:{backgroundColor:e.color}}),(0,J.jsx)(`span`,{className:`max-w-[9rem] truncate text-[11px]`,style:{color:`var(--content-tertiary)`},title:e.concepts?.join(` · `)??e.name,children:e.name})]},t)),n.length>Ee&&(0,J.jsx)(`span`,{className:`text-[11px]`,style:{color:`var(--content-tertiary)`},children:l(`conceptGraphLegend.moreThemes`,{count:n.length-Ee})})]}):(0,J.jsx)(`span`,{className:`text-[11px]`,style:{color:`var(--content-tertiary)`},children:l(`conceptGraphLegend.coloredByTheme`)})),(e.length>0||t)&&(r||i)&&(0,J.jsx)(`div`,{className:`mt-0.5 border-t pt-1.5`,style:{borderColor:`var(--border-base)`}}),r&&(0,J.jsx)(Oe,{swatchStyle:{borderTop:`2px solid var(--content-tertiary)`},label:l(`conceptGraphLegend.link`),onToggle:a,active:s}),i&&(0,J.jsx)(Oe,{swatchStyle:{borderTop:`2px dashed #F1B21E`},label:l(`conceptGraphLegend.learned`),onToggle:o,active:c})]})}function Oe({swatchStyle:e,label:t,onToggle:n,active:r}){let i=(0,J.jsx)(`span`,{className:`inline-block h-0 w-4`,style:e}),a=(0,J.jsx)(`span`,{className:`text-[11px]`,style:{color:`var(--content-tertiary)`},children:t});return n?(0,J.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":r,className:`pointer-events-auto flex cursor-pointer items-center gap-2 border-0 bg-transparent p-0 transition-opacity`,style:{opacity:r===!1?.4:1},children:[i,a]}):(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[i,a]})}var Z=8;function ke(e,t){let n=e.length;if(n===0)return new Map;let r=new Map;e.forEach((e,t)=>r.set(e.id,t));let i=e.map(()=>[]);for(let e of t){let t=r.get(e.fromId),n=r.get(e.toId);t===void 0||n===void 0||t===n||(i[t].push(n),i[n].push(t))}let a=e.map((e,t)=>t);for(let e=0;e<Z;e++)for(let e=0;e<n;e++){let t=i[e];if(t.length===0)continue;let n=new Map;for(let e of t)n.set(a[e],(n.get(a[e])??0)+1);let r=a[e],o=-1;for(let[e,t]of n)(t>o||t===o&&e<r)&&(r=e,o=t);a[e]=r}let o=new Map,s=new Map;return e.forEach((e,t)=>{let n=a[t],r=o.get(n);r===void 0&&(r=o.size,o.set(n,r)),s.set(e.id,r)}),s}function Q(){return O(`memoryUnavailable.prompts.v2`,{ns:`intelligence`})}function Ae(){return O(`memoryUnavailable.prompts.v1`,{ns:`intelligence`})}function je(){return O(`memoryUnavailable.prompts.enable`,{ns:`intelligence`})}function Me(){return{title:O(`memoryUnavailable.statusError.title`,{ns:`intelligence`}),detail:O(`memoryUnavailable.statusError.detail`,{ns:`intelligence`}),action:`retry`}}function Ne(e){return e===`off`?{title:O(`memoryUnavailable.off.title`,{ns:`intelligence`}),detail:O(`memoryUnavailable.off.detail`,{ns:`intelligence`}),action:`settings`,prompt:je()}:e===`v1`||e===`v2`?{title:O(`memoryUnavailable.legacy.title`,{ns:`intelligence`}),detail:O(`memoryUnavailable.legacy.detail`,{ns:`intelligence`}),action:`upgrade`,prompt:e===`v1`?Ae():Q()}:{title:O(`memoryUnavailable.unknown.title`,{ns:`intelligence`}),detail:O(`memoryUnavailable.unknown.detail`,{ns:`intelligence`}),action:`none`}}function Pe({assistantId:e,onOpenThread:t}){let{t:o}=k(`intelligence`),s=r(),c=i(),l=a(I(e));(0,B.useEffect)(()=>{T(c,e)},[c,e]);let u=R(`memoryOptOut`),d=L.use.settingsDeveloperNav(),f=u&&d===!0;if(l.isLoading)return null;let p=l.data?.kind===`ready`?l.data.tier:void 0,m=l.isError?Me():Ne(p),h=m.prompt,g=null;return m.action===`upgrade`&&t&&h?g=(0,J.jsx)(n,{variant:`primary`,size:`compact`,leftIcon:(0,J.jsx)(S,{}),onClick:()=>{H(`upgrade_v3_clicked`),t(h)},children:o(`memoryUpgradePrompt.upgradeMemory`)}):m.action===`retry`?g=(0,J.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:(0,J.jsx)(v,{}),onClick:()=>{l.refetch()},children:o(`memoryUpgradePrompt.tryAgain`)}):m.action===`settings`&&f?g=(0,J.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:(0,J.jsx)(x,{}),onClick:()=>s(`${M.settings.developer}?tab=memory`),children:o(`memoryUpgradePrompt.memorySettings`)}):m.action===`settings`&&t&&h&&(g=(0,J.jsx)(n,{variant:`primary`,size:`compact`,leftIcon:(0,J.jsx)(S,{}),onClick:()=>{H(`enable_memory_clicked`),t(h)},children:o(`memoryUpgradePrompt.turnMemoryOn`)})),(0,J.jsx)(pe,{title:m.title,detail:m.detail,action:g})}function Fe({value:e,onChange:t}){let{t:n}=k(`intelligence`),r=[{value:`all`,label:n(`recencyLens.all`)},{value:`month`,label:n(`recencyLens.month`)},{value:`week`,label:n(`recencyLens.week`)}];return(0,J.jsx)(l,{ariaLabel:n(`recencyLens.ariaLabel`),items:r,value:e,onChange:t,className:`!w-auto [&>*]:!flex-none`})}var Ie=`vellum:memoryGraph:introDismissed:`;function Le(e){return`${Ie}${e}`}function $(e){if(!e)return!0;try{return window.localStorage.getItem(Le(e))===`1`}catch{return!0}}function Re(e){let[t,n]=(0,B.useState)(()=>$(e));return(0,B.useEffect)(()=>{n($(e))},[e]),[t,(0,B.useCallback)(()=>{n(!0);try{window.localStorage.setItem(Le(e),`1`)}catch{}},[e])]}var ze=[`concept`,`skill`,`capability`,`pending`,`other`],Be=.13,Ve=2600,He=.006,Ue=1.15,We=3,Ge=.32,Ke=.45,qe=3,Je=4,Ye=1440*60*1e3,Xe=14*Ye,Ze=12,Qe=2*Ye,$e=80,et=340,tt=.12,nt=.05,rt=.03,it=12,at=2600;function ot(e){let t=getComputedStyle(e);return{content:t.getPropertyValue(`--content-default`).trim()||`#e5e7eb`,tertiary:t.getPropertyValue(`--content-tertiary`).trim()||`#8792a0`}}function st(e){return e.kind===`learned`?`Learned association`:e.description??`Linked concepts`}function ct(e,t,n){return t==null?!1:e==null||n-e>t}function lt(e,t){let n=t?e.get(t):void 0;return e=>t!=null&&(e===t||(n?.has(e)??!1))}function ut({assistantId:e,className:t,isFullscreen:r,onToggleFullscreen:i,onOpenThread:o,headerAction:s,handleRef:c}){let{t:l}=k(`intelligence`),u=(0,B.useRef)(null),d=(0,B.useRef)(null),f=a(w(e)),p=f.data?.kind===`ready`?f.data.graph:null,g=(0,B.useMemo)(()=>p?fe(p):{nodes:[],edges:[]},[p]),_=f.data?.kind===`ready`&&g.nodes.length>0,v=(0,B.useMemo)(()=>ke(g.nodes,g.edges),[g.nodes,g.edges]),x=(0,B.useMemo)(()=>{let e=new Map;for(let t of g.nodes){let n=v.get(t.id);if(n==null||t.degree===0)continue;let r=e.get(n);r?r.push(t):e.set(n,[t])}return[...e.entries()].map(([e,t])=>{let n=[...t].sort((e,t)=>t.degree-e.degree||(e.id<t.id?-1:1)).slice(0,3);return{hubId:n[0].id,color:_e[e%_e.length],name:n[0].label,concepts:n.map(e=>e.label),size:t.length}}).sort((e,t)=>t.size-e.size)},[v,g.nodes]),S=(0,B.useMemo)(()=>new Set(x.map(e=>e.hubId)),[x]),T=(0,B.useMemo)(()=>{let e=new Map,t=(t,n)=>{let r=e.get(t);r||(r=new Set,e.set(t,r)),r.add(n)};for(let e of g.edges)t(e.fromId,e.toId),t(e.toId,e.fromId);return e},[g.edges]),ne=(0,B.useMemo)(()=>{if(g.nodes.length===0)return 1;let e=g.nodes.map(e=>{let t=e.x-V.x,n=e.y-V.y;return Math.sqrt(t*t+n*n+e.z*e.z)+e.radius}).sort((e,t)=>e-t),t=Math.min(e.length-1,Math.floor(e.length*.92));return Math.max(1,e[t])},[g.nodes]),E=(0,B.useRef)({yaw:.5,pitch:.32,zoom:1,hoveredId:null,dragging:!1,moved:!1,lastX:0,lastY:0,lastInteractAt:-1/0,dirty:!0}),D=(0,B.useRef)([]),re=(0,B.useRef)([]),O=(0,B.useRef)({content:`#e5e7eb`,tertiary:`#8792a0`}),A=(0,B.useRef)(null),ie=(0,B.useRef)(!1),ae=(0,B.useRef)(null),oe=(0,B.useRef)(null),[j,M]=(0,B.useState)(null),[N,P]=(0,B.useState)(null),[F,I]=(0,B.useState)([]),L=F.at(-1)??null,R=(0,B.useCallback)(e=>{H(`node_opened`),I(t=>[...t,e])},[]),z=(0,B.useRef)(null);(0,B.useEffect)(()=>{z.current=L?.id??null,E.current.dirty=!0},[L?.id]);let[se,ce]=Re(e),[U,W]=(0,B.useState)(``),[G,K]=(0,B.useState)(!1),le=(0,B.useRef)(null);(0,B.useEffect)(()=>{G&&le.current?.focus()},[G]);let ue=(0,B.useRef)(!1),de=U.trim().toLowerCase(),q=(0,B.useMemo)(()=>{if(!de)return null;let e=new Set;for(let t of g.nodes)t.label.toLowerCase().includes(de)&&e.add(t.id);return e},[de,g.nodes]),me=(0,B.useRef)({active:!1,matches:null});(0,B.useEffect)(()=>{me.current={active:!!q,matches:q},E.current.dirty=!0},[q]),(0,B.useEffect)(()=>{U.trim()||(ue.current=!1)},[U]);let he=(0,B.useMemo)(()=>!q||q.size===0?[]:g.nodes.filter(e=>q.has(e.id)).sort((e,t)=>t.degree-e.degree).slice(0,8),[q,g.nodes]),[Y,ve]=(0,B.useState)(`all`),be=(0,B.useRef)(null);(0,B.useEffect)(()=>{be.current=Y===`week`?7*Ye:Y===`month`?30*Ye:null,E.current.dirty=!0},[Y]);let xe=(0,B.useMemo)(()=>g.nodes.some(e=>e.updatedAtMs!=null),[g.nodes]);(0,B.useEffect)(()=>{!xe&&Y!==`all`&&ve(`all`)},[xe,Y]);let[X,Se]=(0,B.useState)({link:!0,learned:!0}),Ce=(0,B.useRef)(X);(0,B.useEffect)(()=>{Ce.current=X,E.current.dirty=!0},[X]),(0,B.useEffect)(()=>{W(``),ve(`all`),Se({link:!0,learned:!0}),I([]),ue.current=!1},[e]);let Ee=(0,B.useCallback)(()=>{let e=E.current;e.yaw=.5,e.pitch=.32,e.zoom=1,e.lastInteractAt=-1/0,e.dirty=!0,M(null)},[]),Oe=(0,B.useCallback)(e=>{let t=E.current;t.zoom=Math.max(Ke,Math.min(qe,t.zoom*e)),t.lastInteractAt=performance.now(),t.dirty=!0},[]),Z=(0,B.useCallback)(e=>{A.current=e,E.current.lastInteractAt=performance.now(),E.current.dirty=!0},[]),Q=(0,B.useCallback)(e=>{R(e),Z(e.id)},[R,Z]),Ae=(0,B.useCallback)(e=>{ae.current={id:e,start:performance.now()},Z(e),window.setTimeout(()=>{E.current.dirty=!0},at+60)},[Z]),je=(0,B.useCallback)(e=>{g.nodes.some(t=>t.id===e)?Ae(e):oe.current=e},[g.nodes,Ae]);(0,B.useEffect)(()=>{let e=oe.current;e&&g.nodes.some(t=>t.id===e)&&(oe.current=null,Ae(e))},[g.nodes,Ae]),(0,B.useImperativeHandle)(c,()=>({focusNode:je}),[je]);let Me=(0,B.useCallback)(()=>{I([]),W(``),M(null),A.current=null,ie.current=!0},[]),Ne=(0,B.useCallback)(e=>{W(``);let t=F.slice(0,e+1);I(t);let n=t.at(-1);n?Z(n.id):M(null)},[F,Z]),Ie=(0,B.useCallback)(e=>{W(``),Q(e)},[Q]),Le=(0,B.useMemo)(()=>{let e=L?.id;if(!e)return[];let t=T.get(e);if(!t||t.size===0)return[];let n=new Map(g.nodes.map(e=>[e.id,e.label])),r=new Map;for(let t of g.edges)t.fromId===e?r.set(t.toId,t.kind):t.toId===e&&r.set(t.fromId,t.kind);let i=[];for(let e of t){let t=n.get(e);t!=null&&i.push({id:e,label:t,kind:r.get(e)})}return i.sort((e,t)=>e.label.localeCompare(t.label)),i},[L?.id,T,g.nodes,g.edges]);(0,B.useEffect)(()=>{if(!_)return;let e=d.current,t=u.current;if(!e||!t)return;let n=e.getContext(`2d`);if(!n)return;let r=g.nodes,i=g.edges,a=v,o=S,s=T,c=new Set(r.map(e=>e.id)),l=ne,f=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;O.current=ot(t);let p=Math.min(window.devicePixelRatio||1,2),m=0,h=0,y=()=>{let n=t.getBoundingClientRect();m=n.width,h=n.height,p=Math.min(window.devicePixelRatio||1,2),e.width=Math.max(1,Math.round(m*p)),e.height=Math.max(1,Math.round(h*p)),e.style.width=`${m}px`,e.style.height=`${h}px`,O.current=ot(t),E.current.dirty=!0};y();let b=new ResizeObserver(y);b.observe(t);let x=new MutationObserver(()=>{O.current=ot(t),E.current.dirty=!0});x.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-theme`,`class`,`style`]});let C=0,ee=0,w=e=>{let t=ee?Math.min(.05,(e-ee)/1e3):0;ee=e;let u=E.current,d=O.current,g=Date.now(),_=A.current;if(!u.dragging&&e-u.lastInteractAt>Ve&&!f&&!_&&(u.yaw+=Be*t),_){let e=r.find(e=>e.id===_);if(!e)A.current=null;else{let t=e.x-V.x,n=e.y-V.y,r=e.z,i=-Math.atan2(t,r),a=Math.hypot(t,r),o=Math.max(-Ue,Math.min(Ue,Math.atan2(n,a))),s=Math.min(qe,1.6),c=f?1:.15,l=i-u.yaw;l=Math.atan2(Math.sin(l),Math.cos(l)),u.yaw+=l*c,u.pitch+=(o-u.pitch)*c,u.zoom+=(s-u.zoom)*c,u.dirty=!0,Math.abs(l)<.01&&Math.abs(o-u.pitch)<.01&&Math.abs(s-u.zoom)<.02&&(A.current=null)}}if(ie.current&&!u.dragging){let e=f?1:.15;u.pitch+=(.32-u.pitch)*e,u.zoom+=(1-u.zoom)*e,u.dirty=!0,Math.abs(.32-u.pitch)<.01&&Math.abs(1-u.zoom)<.02&&(ie.current=!1)}if(f&&!u.dirty){C=requestAnimationFrame(w);return}u.dirty=!1;let v=Math.cos(u.yaw),y=Math.sin(u.yaw),b=Math.cos(u.pitch),x=Math.sin(u.pitch),S=We*l,te=Math.min(m,h)*.88/(2*l)*u.zoom,T=m/2,ne=h/2;n.setTransform(p,0,0,p,0,0),n.clearRect(0,0,m,h);let k=u.hoveredId,oe=k?s.get(k):void 0,j=e=>!k||e===k||(oe?.has(e)??!1),M=me.current,N=M.active,P=e=>!N||(M.matches?.has(e)??!1),F=be.current,I=e=>ct(e.updatedAtMs,F,g),L=Ce.current,R=z.current,B=R!=null&&c.has(R),se=lt(s,B?R:null),ce=r.length<=$e?1:Math.max(tt,1-(r.length-$e)/(et-$e)*(1-tt)),H=Array(r.length);for(let e=0;e<r.length;e++){let t=r[e],n=t.x-V.x,i=t.y-V.y,a=t.z,o=n*v+a*y,s=-n*y+a*v,c=i*b-s*x,u=i*x+s*b,d=S/(S-u);H[e]={node:t,sx:T+o*te*d,sy:ne+c*te*d,sr:Math.max(1.2,t.radius*te*d),depth:Math.max(0,Math.min(1,(u+l)/(2*l)))}}let U=H.map((e,t)=>t).sort((e,t)=>H[e].depth-H[t].depth),W=new Map;for(let e of H)W.set(e.node.id,e);let G=[];n.lineCap=`round`;for(let e of i){let t=W.get(e.fromId),r=W.get(e.toId);if(!t||!r)continue;let i=e.kind===`learned`,a=R!=null&&(e.fromId===R||e.toId===R);if(!a&&(i?!L.learned:!L.link))continue;let o=N&&(!P(e.fromId)||!P(e.toId))||!a&&(I(t.node)||I(r.node)),s=k!=null&&(e.fromId===k||e.toId===k),c=(t.depth+r.depth)/2;!o&&(!B||a)&&G.push({ax:t.sx,ay:t.sy,bx:r.sx,by:r.sy,kind:e.kind,description:e.description,depth:c});let l=(i?.34:.28)*(.4+.6*c),u=i?l*ce:l,f;f=o?.03:B?a?.9:rt:k==null?u:s?.9:j(e.fromId)&&j(e.toId)?l:.05,n.globalAlpha=f,n.strokeStyle=i?ye:d.tertiary,n.lineWidth=(s||B&&a?2:1)*(.6+.6*c),n.setLineDash(i?[4,4]:[]),n.beginPath(),n.moveTo(t.sx,t.sy),n.lineTo(r.sx,r.sy),n.stroke()}n.setLineDash([]);for(let t of U){let r=H[t],i=r.node,o=i.kind===`concept`?_e[(a.get(i.id)??0)%_e.length]:ge[i.kind],s=N&&!P(i.id),c=se(i.id),l=s||I(i)&&!c,u=B?c&&!l:!l&&j(i.id),d=i.id===k,p=Ge+(1-Ge)*r.depth,m=B&&!c?p*nt:l?p*.08:u?p:p*.18,h=(d?16:i.degree>=Je?8:4)*r.depth,_=i.updatedAtMs;if(_){let n=g-_,i=Math.max(0,1-n/Xe);if(i>0){let a=i*Ze;!f&&n<Qe&&(a*=.55+.45*Math.sin(e/420+t*1.7)),h+=a*r.depth}}n.shadowColor=o,n.shadowBlur=u?h:0;let v=i.kind===`pending`;n.globalAlpha=m*(v?.3:.55),n.fillStyle=o,n.beginPath(),n.arc(r.sx,r.sy,r.sr,0,Math.PI*2),n.fill(),n.shadowBlur=0,n.globalAlpha=m,n.lineWidth=d?2.5:1.4,n.strokeStyle=o,n.setLineDash(v?[3,3]:[]),n.stroke(),n.setLineDash([]);let y=ae.current;if(y&&y.id===i.id){let t=e-y.start;if(t>at)ae.current=null;else if(f)n.globalAlpha=.7,n.lineWidth=1.5,n.beginPath(),n.arc(r.sx,r.sy,r.sr+7,0,Math.PI*2),n.stroke();else for(let e=0;e<3;e++){let i=(t-e*320)/1100;i<=0||i>=1||(n.globalAlpha=(1-i)*.8,n.lineWidth=1.5,n.beginPath(),n.arc(r.sx,r.sy,r.sr+i*46*r.depth,0,Math.PI*2),n.stroke())}}}n.shadowBlur=0,n.textAlign=`center`,n.textBaseline=`top`,n.font=`11px ui-sans-serif, system-ui, sans-serif`;for(let e of U){let t=H[e],r=t.node,i=se(r.id);if(N&&!P(r.id)||I(r)&&!i||!(B?i:N?t.depth>.3:k==null?o.has(r.id)||r.degree>=Je&&t.depth>.55:j(r.id)))continue;n.globalAlpha=(r.id===k||r.id===R?1:.85)*(.4+.6*t.depth),n.fillStyle=d.content;let a=r.label.length>22?`${r.label.slice(0,21)}…`:r.label;n.fillText(a,t.sx,t.sy+t.sr+3)}n.globalAlpha=1,D.current=H.map(e=>({id:e.node.id,sx:e.sx,sy:e.sy,sr:e.sr,depth:e.depth,updatedAtMs:e.node.updatedAtMs})),re.current=G,C=requestAnimationFrame(w)};return C=requestAnimationFrame(w),()=>{cancelAnimationFrame(C),b.disconnect(),x.disconnect()}},[_,g,T,ne,v,S]);let $=(0,B.useCallback)((e,t)=>{let n=me.current,r=be.current,i=lt(T,z.current),a=Date.now(),o=null,s=-1;for(let c of D.current){if(n.active&&!(n.matches?.has(c.id)??!1)||!i(c.id)&&ct(c.updatedAtMs,r,a))continue;let l=e-c.sx,u=t-c.sy;l*l+u*u<=(c.sr+5)*(c.sr+5)&&c.depth>s&&(o=c.id,s=c.depth)}return o},[T]),ut=(0,B.useCallback)((e,t)=>{let n=null,r=1/0,i=-1;for(let a of re.current){let o=a.bx-a.ax,s=a.by-a.ay,c=o*o+s*s,l=0;c>0&&(l=((e-a.ax)*o+(t-a.ay)*s)/c,l=Math.max(0,Math.min(1,l)));let u=e-(a.ax+l*o),d=t-(a.ay+l*s),f=Math.sqrt(u*u+d*d);f>5||(f<r||f===r&&a.depth>i)&&(n={kind:a.kind,description:a.description},r=f,i=a.depth)}return n},[]),dt=e=>{let t=u.current.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},ft=(0,B.useCallback)(e=>{if(e.button!==0||e.target.closest(`[data-graph-control]`))return;let t=E.current;A.current=null,t.dragging=!0,t.moved=!1,t.lastX=e.clientX,t.lastY=e.clientY,t.lastInteractAt=performance.now(),e.currentTarget.setPointerCapture(e.pointerId)},[]),pt=(0,B.useCallback)(e=>{let t=E.current;if(t.dragging){let n=e.clientX-t.lastX,r=e.clientY-t.lastY;(Math.abs(n)>2||Math.abs(r)>2)&&(t.moved=!0),t.yaw+=n*He,t.pitch=Math.max(-Ue,Math.min(Ue,t.pitch+r*He)),t.lastX=e.clientX,t.lastY=e.clientY,t.lastInteractAt=performance.now(),t.dirty=!0;return}let{x:n,y:r}=dt(e),i=$(n,r);if(i!==t.hoveredId&&(t.hoveredId=i,t.dirty=!0),i)P(null);else{let e=ut(n,r);P(e?st(e):null)}},[$,ut]),mt=(0,B.useCallback)(e=>{let t=E.current;if(!t.dragging)return;t.dragging=!1,t.lastInteractAt=performance.now(),t.dirty=!0;let n=e.currentTarget;if(n.hasPointerCapture(e.pointerId)&&n.releasePointerCapture(e.pointerId),!t.moved){let{x:t,y:n}=dt(e),r=$(t,n);if(r){let e=g.nodes.find(e=>e.id===r);e&&Q({id:e.id,label:e.label,updatedAtMs:e.updatedAtMs})}else M(null)}},[$,g.nodes,Q]),ht=(0,B.useCallback)(()=>{let e=E.current;P(null),!(e.dragging||e.hoveredId==null)&&(e.hoveredId=null,e.dirty=!0,M(null))},[]);(0,B.useEffect)(()=>{let e=u.current;if(!e||!_)return;let t=e=>{if(e.target.closest?.(`[data-graph-panel]`))return;e.preventDefault();let t=E.current;t.zoom=Math.max(Ke,Math.min(qe,t.zoom*(1-e.deltaY/500))),t.lastInteractAt=performance.now(),t.dirty=!0};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[_]);let gt=(0,B.useMemo)(()=>{let e=new Set(g.nodes.map(e=>e.kind));return ze.filter(t=>e.has(t))},[g.nodes]),_t=(0,B.useMemo)(()=>g.edges.some(e=>e.kind===`learned`),[g.edges]),vt=(0,B.useMemo)(()=>g.edges.some(e=>e.kind!==`learned`),[g.edges]);(0,B.useEffect)(()=>{!(vt&&_t)&&(!X.link||!X.learned)&&Se({link:!0,learned:!0})},[vt,_t,X]);let yt=f.data?.kind===`ready`&&!se,bt=g.nodes.length,xt=g.edges.length,St=new Set(v.values()).size,Ct=(e,t)=>`${e} ${t}${e===1?``:`s`}`,wt=yt?null:j??N,Tt=_&&(g.nodes.length>it||!!U),Et=!!(i||s)||_,Dt;return Dt=f.isLoading?(0,J.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,J.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})}):f.isError?(0,J.jsx)(pe,{title:l(`conceptGraphView.loadErrorTitle`),detail:l(`conceptGraphView.loadErrorDetail`)}):f.data?.kind===`unsupported`?(0,J.jsx)(Pe,{assistantId:e,onOpenThread:o}):_?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`canvas`,{ref:d,className:`absolute inset-0 h-full w-full`}),(g.nodes.length>it||Y!==`all`)&&xe?(0,J.jsx)(`div`,{"data-graph-control":!0,className:`absolute left-4 top-4 z-10`,children:(0,J.jsx)(Fe,{value:Y,onChange:ve})}):null,(0,J.jsx)(De,{nodeKinds:gt.filter(e=>e!==`concept`),coloredByTheme:gt.includes(`concept`),themes:x,hasLinks:vt,hasLearned:_t,...vt&&_t?{onToggleLink:()=>Se(e=>({...e,link:!e.link})),onToggleLearned:()=>Se(e=>({...e,learned:!e.learned})),linkActive:X.link,learnedActive:X.learned}:{}}),(0,J.jsx)(`div`,{className:`pointer-events-none absolute bottom-4 right-4 text-[11px]`,style:{color:`var(--content-tertiary)`},children:l(`conceptGraphView.dragToRotateHint`)}),p?.truncated?(0,J.jsx)(`div`,{className:`pointer-events-none absolute bottom-4 left-1/2 -translate-x-1/2 rounded-full px-3 py-1 text-[11px]`,style:{backgroundColor:`color-mix(in srgb, var(--surface-base) 82%, transparent)`,border:`1px solid var(--border-base)`,color:`var(--content-tertiary)`},children:l(`conceptGraphView.truncatedNotice`,{count:g.nodes.length})}):null,(0,J.jsxs)(`div`,{"data-graph-control":!0,className:`absolute right-4 top-4 flex flex-col gap-1`,children:[(0,J.jsx)(n,{variant:`ghost`,iconOnly:(0,J.jsx)(te,{}),onClick:()=>Oe(1.25),"aria-label":l(`conceptGraphView.zoomInAriaLabel`),tooltip:l(`conceptGraphView.zoomInAriaLabel`)}),(0,J.jsx)(n,{variant:`ghost`,iconOnly:(0,J.jsx)(ee,{}),onClick:()=>Oe(.8),"aria-label":l(`conceptGraphView.zoomOutAriaLabel`),tooltip:l(`conceptGraphView.zoomOutAriaLabel`)}),(0,J.jsx)(n,{variant:`ghost`,iconOnly:(0,J.jsx)(y,{}),onClick:Ee,"aria-label":l(`conceptGraphView.resetViewAriaLabel`),tooltip:l(`conceptGraphView.resetViewAriaLabel`)})]})]}):(0,J.jsx)(pe,{title:l(`conceptGraphView.emptyTitle`),detail:l(`conceptGraphView.emptyDetail`)}),(0,J.jsxs)(`div`,{className:`@container flex select-none flex-col overflow-hidden rounded-xl ${t??``}`,style:{backgroundColor:`var(--surface-base)`},children:[Et?(0,J.jsxs)(`div`,{className:`flex h-12 flex-none items-center gap-2 px-3`,style:{borderBottom:`1px solid var(--border-base)`},children:[i?(0,J.jsx)(n,{variant:`ghost`,iconOnly:r?(0,J.jsx)(h,{}):(0,J.jsx)(m,{}),onClick:i,"aria-label":l(r?`conceptGraphView.exitFullscreenAriaLabel`:`conceptGraphView.enterFullscreenAriaLabel`),tooltip:l(r?`conceptGraphView.exitFullscreenAriaLabel`:`conceptGraphView.enterFullscreenAriaLabel`)}):null,Tt?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(n,{variant:`ghost`,iconOnly:(0,J.jsx)(b,{}),onClick:()=>K(!0),"aria-label":l(`conceptGraphView.searchConceptsAriaLabel`),tooltip:l(`conceptGraphView.searchConceptsAriaLabel`),className:G?`hidden`:`@2xl:hidden`}),(0,J.jsxs)(`div`,{className:`relative ${G?``:`hidden @2xl:block`}`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-full px-2.5 py-1`,style:{backgroundColor:`color-mix(in srgb, var(--surface-base) 82%, transparent)`,border:`1px solid var(--border-base)`},children:[(0,J.jsx)(b,{size:14,"aria-hidden":!0,style:{color:`var(--content-tertiary)`}}),(0,J.jsx)(`input`,{ref:le,type:`text`,value:U,onChange:e=>{let t=e.target.value;t.trim()&&!ue.current&&(H(`search`),ue.current=!0),W(t)},onKeyDown:e=>{e.key===`Escape`?(U||G)&&(e.preventDefault(),e.stopPropagation(),W(``),K(!1)):e.key===`Enter`&&he.length>0&&(e.preventDefault(),Z(he[0].id))},placeholder:l(`conceptGraphView.searchConceptsPlaceholder`),"aria-label":l(`conceptGraphView.searchConceptsAriaLabel`),className:`w-36 bg-transparent text-[12px] outline-none placeholder:text-[var(--content-tertiary)]`,style:{color:`var(--content-default)`}}),U?(0,J.jsx)(`span`,{className:`text-[11px] tabular-nums`,style:{color:`var(--content-tertiary)`},children:q?.size??0}):null,U||G?(0,J.jsx)(`button`,{type:`button`,onClick:()=>{W(``),K(!1)},"aria-label":l(`conceptGraphView.clearSearchAriaLabel`),className:`flex items-center`,style:{color:`var(--content-tertiary)`},children:(0,J.jsx)(C,{size:13})}):null]}),U&&he.length>0?(0,J.jsx)(`ul`,{className:`absolute left-0 top-full z-30 mt-1.5 flex max-h-56 w-52 list-none flex-col overflow-y-auto rounded-xl py-1`,style:{backgroundColor:`color-mix(in srgb, var(--surface-base) 92%, transparent)`,border:`1px solid var(--border-base)`},children:he.map(e=>(0,J.jsx)(`li`,{children:(0,J.jsx)(`button`,{type:`button`,onClick:()=>{Q({id:e.id,label:e.label,updatedAtMs:e.updatedAtMs}),W(``),K(!1)},className:`block w-full truncate px-3 py-1 text-left text-[12px] hover:bg-[color-mix(in_srgb,var(--content-tertiary)_14%,transparent)]`,style:{color:`var(--content-default)`},children:e.label})},e.id))}):null]})]}):null,(0,J.jsx)(`div`,{className:`pointer-events-none mx-auto min-w-0`,children:wt?(0,J.jsx)(`div`,{className:`truncate rounded-full px-3 py-1 text-[12px]`,style:{backgroundColor:`color-mix(in srgb, var(--surface-base) 82%, transparent)`,border:`1px solid var(--border-base)`,color:`var(--content-default)`},children:wt}):_&&!yt&&!G?(0,J.jsxs)(`div`,{className:`rounded-full px-3 py-1 text-[11px] tabular-nums`,style:{backgroundColor:`color-mix(in srgb, var(--surface-base) 82%, transparent)`,border:`1px solid var(--border-base)`,color:`var(--content-tertiary)`},children:[(0,J.jsxs)(`span`,{className:`@max-md:hidden`,children:[Ct(bt,`neuron`),` · `,Ct(xt,`synapse`),` ·`,` `,Ct(St,`lobe`)]}),(0,J.jsxs)(`span`,{className:`hidden @max-md:inline`,children:[bt,` · `,xt,` · `,St]})]}):null}),s?(0,J.jsx)(`div`,{className:`flex-none`,children:s}):null]}):null,(0,J.jsxs)(`div`,{ref:u,className:`relative min-h-0 flex-1`,style:{backgroundImage:`radial-gradient(circle at center, color-mix(in srgb, var(--content-tertiary) 8%, transparent), transparent 62%)`,touchAction:`none`,cursor:_?`grab`:`default`},onPointerDown:_?ft:void 0,onPointerMove:_?pt:void 0,onPointerUp:_?mt:void 0,onPointerCancel:_?mt:void 0,onPointerLeave:_?ht:void 0,children:[yt?(0,J.jsx)(Te,{onDismiss:ce}):null,Dt,_&&L?(0,J.jsx)(we,{assistantId:e,node:L,trail:F,neighbors:Le,onTravel:Ie,onCrumb:Ne,onClose:Me,onOpenThread:o}):null]})]})}async function dt(e,t){let{data:n}=await j({path:{assistant_id:e},body:{content:t},throwOnError:!0});return n}function ft({open:e,onOpenChange:t,assistantId:r,onCreated:a}){let{t:o}=k(`intelligence`),s=i(),[l,u]=(0,B.useState)(``),[d,f]=(0,B.useState)(!1),m=(0,B.useCallback)(async()=>{let e=l.trim();if(e){f(!0);try{let n=await dt(r,e);if(!n.success){D.error(n.message||o(`createMemoryModal.saveError`));return}D.success(n.pendingNodeId?o(`createMemoryModal.savedFoundToast`):o(`createMemoryModal.savedPendingToast`)),u(``),t(!1),a?.(n.pendingNodeId),await Promise.all([s.invalidateQueries({queryKey:w(r).queryKey}),s.invalidateQueries({queryKey:I(r).queryKey})])}catch(e){let t=e instanceof Error?e.message:o(`createMemoryModal.createError`);D.error(t)}finally{f(!1)}}},[r,l,t,a,s,o]);return(0,J.jsx)(E.Root,{open:e,onOpenChange:t,children:(0,J.jsxs)(E.Content,{size:`sm`,children:[(0,J.jsx)(E.Header,{children:(0,J.jsx)(E.Title,{children:o(`createMemoryModal.title`)})}),(0,J.jsx)(E.Body,{children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(ne,{label:o(`createMemoryModal.contentLabel`),placeholder:o(`createMemoryModal.contentPlaceholder`),value:l,onChange:e=>u(e.target.value),disabled:d,rows:3,fullWidth:!0}),(0,J.jsx)(c,{as:`p`,variant:`body-medium-lighter`,className:`text-(--content-secondary)`,children:o(`createMemoryModal.helperText`)})]})}),(0,J.jsxs)(E.Footer,{children:[(0,J.jsx)(E.Close,{asChild:!0,children:(0,J.jsx)(n,{variant:`outlined`,disabled:d,children:o(`createMemoryModal.cancel`)})}),(0,J.jsx)(n,{variant:`primary`,onClick:m,disabled:d||!l.trim(),leftIcon:d?(0,J.jsx)(p,{className:`animate-spin`}):void 0,children:o(d?`createMemoryModal.creating`:`createMemoryModal.create`)})]})]})})}function pt({onOpenThread:e}){let{t}=k(`intelligence`),r=z(),[i,o]=(0,B.useState)(!1),s=(0,B.useRef)(null),c=a(w(r)),l=a(I(r)),u=c.data?.kind===`ready`&&l.data?.kind===`ready`,d=(0,B.useRef)(!1);return(0,B.useEffect)(()=>{d.current||(d.current=!0,H(`opened`))},[]),(0,J.jsxs)(`div`,{className:`relative flex h-full min-h-0 flex-col`,children:[(0,J.jsx)(ut,{assistantId:r,className:`h-full w-full`,onOpenThread:e,handleRef:s,headerAction:u?(0,J.jsx)(n,{variant:`primary`,size:`compact`,leftIcon:(0,J.jsx)(_,{}),onClick:()=>o(!0),children:t(`memoryPage.createMemory`)}):void 0}),u?(0,J.jsx)(ft,{open:i,onOpenChange:o,assistantId:r,onCreated:e=>{e&&s.current?.focusNode(e)}}):null]})}function mt(){let e=r();return(0,J.jsx)(pt,{onOpenThread:t=>{H(`chat_from_node`),F(e,{prompt:t})}},z())}export{mt as MemoryPageRoute};