@vellumai/web 0.10.8-staging.1 → 0.10.8-staging.2

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 (189) hide show
  1. package/dist/assets/{AnimatePresence-C8APSgIu.js → AnimatePresence-s1Z1HHWx.js} +1 -1
  2. package/dist/assets/{BundleConfirmPage-M2tkzwiz.js → BundleConfirmPage-C6bP7QB3.js} +1 -1
  3. package/dist/assets/{about-page-C-kIVb7a.js → about-page-XGv9RAQu.js} +1 -1
  4. package/dist/assets/{account-page-DOSnPXjP.js → account-page-Dno1SeJN.js} +1 -1
  5. package/dist/assets/{account-shell-74OchOxg.js → account-shell-CdhP9l8T.js} +1 -1
  6. package/dist/assets/{acp-run-detail-panel-DFoD_DVJ.js → acp-run-detail-panel-B1-zyOUe.js} +4 -4
  7. package/dist/assets/{activity-steps-panel-jztC4BRv.js → activity-steps-panel-BGyfMCXK.js} +1 -1
  8. package/dist/assets/{add-credits-modal-daNASKHJ.js → add-credits-modal-PP1PX8Qv.js} +1 -1
  9. package/dist/assets/{advanced-page-B8h5sAe5.js → advanced-page-vCbMVJsK.js} +1 -1
  10. package/dist/assets/{ai-page-BInYrZV7.js → ai-page-BIYybKux.js} +1 -1
  11. package/dist/assets/{animated-avatar-CrlodWQr.js → animated-avatar-Cqpzb8O4.js} +1 -1
  12. package/dist/assets/{api-key-screen-Cynx0r0g.js → api-key-screen-DTSP_-Da.js} +1 -1
  13. package/dist/assets/{archive-page-DqXRVFoF.js → archive-page-RZ2VP63A.js} +1 -1
  14. package/dist/assets/{assistant-feature-flag-store-CKUjJHuh.js → assistant-feature-flag-store-DA8Oj9Mf.js} +1 -1
  15. package/dist/assets/{assistant-status-panel-eNWJodpn.js → assistant-status-panel-BC0RTDls.js} +1 -1
  16. package/dist/assets/{auth-store-CD7PGb3q.js → auth-store-C09YAZEu.js} +2 -2
  17. package/dist/assets/{background-task-detail-panel-Bsi8IoaY.js → background-task-detail-panel-BfnsD-3B.js} +1 -1
  18. package/dist/assets/{billing-page-dpKYjJH3.js → billing-page-1z_L2m6q.js} +3 -3
  19. package/dist/assets/{bookmarks-page-BI92Y3eM.js → bookmarks-page-CjcavZv8.js} +1 -1
  20. package/dist/assets/{browser-BPZAXjRE.js → browser-C6a_nhhZ.js} +2 -2
  21. package/dist/assets/{build-state-DGsKGdpj.js → build-state-PUXrUU4W.js} +1 -1
  22. package/dist/assets/channels-page-route-WjNmd0sS.js +9 -0
  23. package/dist/assets/chat-markdown-message-BnX6bhgs.js +2 -0
  24. package/dist/assets/{client-feature-flag-store-C0g8zi1W.js → client-feature-flag-store-DkJl-g9A.js} +1 -1
  25. package/dist/assets/{command-palette-Dk6UsSlv.js → command-palette-6o4m7BM9.js} +1 -1
  26. package/dist/assets/{command-palette-window-page-zDow8o4K.js → command-palette-window-page-BsJlr5bh.js} +1 -1
  27. package/dist/assets/community-page-CJA4JfuC.js +1 -0
  28. package/dist/assets/{connect-page-BXTqYbdY.js → connect-page-DZgU3jCf.js} +1 -1
  29. package/dist/assets/{consent-controls-BZMxm0n3.js → consent-controls-Cnr1DzCr.js} +1 -1
  30. package/dist/assets/contacts-page-route-P0neH-PV.js +1 -0
  31. package/dist/assets/{credentials-page-0S5ifTFC.js → credentials-page-MkKE_19-.js} +1 -1
  32. package/dist/assets/debug-page-B88f4aDU.js +4 -0
  33. package/dist/assets/{deploy-dialogs-BBHNKgDi.js → deploy-dialogs-paL_zcvG.js} +1 -1
  34. package/dist/assets/{detail-card-RGTjHkZ8.js → detail-card-xKZlkbz5.js} +1 -1
  35. package/dist/assets/{detail-panel-stop-button-oIDUq-kJ.js → detail-panel-stop-button-y7O3HqJj.js} +1 -1
  36. package/dist/assets/{developer-page-Djolz4Fg.js → developer-page-BFMS6pwU.js} +1 -1
  37. package/dist/assets/{devices-page-XJJSA97y.js → devices-page-B3D5iLhD.js} +1 -1
  38. package/dist/assets/{dictation-overlay-page-cqsEjyx_.js → dictation-overlay-page-BkEBWrWm.js} +1 -1
  39. package/dist/assets/{document-viewer-page-jInmb33M.js → document-viewer-page-B631L6-3.js} +1 -1
  40. package/dist/assets/{earn-credits-modal-C_jhLLw5.js → earn-credits-modal-CFla-iKl.js} +1 -1
  41. package/dist/assets/edge-swipe-arbiter-store-BeOhrE7M.js +1 -0
  42. package/dist/assets/{emails-page-fov7ihfj.js → emails-page-7c9kVi_k.js} +1 -1
  43. package/dist/assets/{esm-Ddmch1KU.js → esm-Bzs_witt.js} +2 -2
  44. package/dist/assets/{esm-CYMQv-VS.js → esm-C5J59K0j.js} +2 -2
  45. package/dist/assets/{esm-CTXnt94k.js → esm-CT8NUp3h.js} +2 -2
  46. package/dist/assets/esm-DEu9JbAE.js +2 -0
  47. package/dist/assets/{esm-BciT3LGF.js → esm-DZkj1VLJ.js} +2 -2
  48. package/dist/assets/{esm-CvWQdH3L.js → esm-DtJz1M8R.js} +2 -2
  49. package/dist/assets/{feature-flag-catalog-CHuc71P8.js → feature-flag-catalog-GgSNKkqP.js} +1 -1
  50. package/dist/assets/{file-markdown-BXUvAQ24.js → file-markdown-Bq97tNxs.js} +1 -1
  51. package/dist/assets/{general-page-gojItIOd.js → general-page-D-Gr2lkW.js} +1 -1
  52. package/dist/assets/{haptics-DKVhthJo.js → haptics-lMERs7us.js} +2 -2
  53. package/dist/assets/hatching-screen-BlwicgIz.js +1 -0
  54. package/dist/assets/home-page-route-D24x4A0S.js +1 -0
  55. package/dist/assets/{hosting-screen-BTLHWS2M.js → hosting-screen-BZLZular.js} +1 -1
  56. package/dist/assets/identity-page-route-BwOJeenx.js +1 -0
  57. package/dist/assets/{index-BjtwYdrT.css → index-C9GrLGul.css} +1 -1
  58. package/dist/assets/{index-CSefSVJO.js → index-yu6nDHvG.js} +21 -21
  59. package/dist/assets/{inspect-page-CT8NspqC.js → inspect-page-1RejwSP_.js} +4 -4
  60. package/dist/assets/{integrations-page-DtClqS91.js → integrations-page-BV5BiHPD.js} +1 -1
  61. package/dist/assets/{intelligence-layout-D9ReVcK0.js → intelligence-layout-iQFO8in_.js} +1 -1
  62. package/dist/assets/{keyboard-shortcuts-page-CovdLPhh.js → keyboard-shortcuts-page-jt13JtxS.js} +1 -1
  63. package/dist/assets/{library-detail-page-MAsxHH08.js → library-detail-page-BAGWt1Lw.js} +1 -1
  64. package/dist/assets/{library-page-CYuSc92M.js → library-page-CqeoBhDY.js} +1 -1
  65. package/dist/assets/{login-flow-CHNlba5i.js → login-flow-B6q00uIW.js} +1 -1
  66. package/dist/assets/{login-page-CK1TxruP.js → login-page-BQVTWuQc.js} +1 -1
  67. package/dist/assets/{logout-page-W3gl_1Ax.js → logout-page-BV0URcAd.js} +1 -1
  68. package/dist/assets/{logs-layout-CR7u05YO.js → logs-layout-DO3yfZqD.js} +1 -1
  69. package/dist/assets/{memory-router-playground-page-eDjKwsbG.js → memory-router-playground-page-CQxX6mCn.js} +1 -1
  70. package/dist/assets/{metric-card-BN23geOu.js → metric-card-DvXjHVCV.js} +1 -1
  71. package/dist/assets/{mobile-sidebar-drawer-3LqMCZgK.js → mobile-sidebar-drawer-Epbt6p-k.js} +1 -1
  72. package/dist/assets/{native-file-Cn3RbQbT.js → native-file-DI99Emal.js} +2 -2
  73. package/dist/assets/{notifications-page-CtyUuC15.js → notifications-page-CXaZpD3s.js} +1 -1
  74. package/dist/assets/{oauth-complete-page-3DcY6Or3.js → oauth-complete-page-BlJm9tRJ.js} +1 -1
  75. package/dist/assets/{oauth-popup-complete-page-Cn-1bOwa.js → oauth-popup-complete-page-BqUopTat.js} +1 -1
  76. package/dist/assets/{page-shell-C2TBO8M8.js → page-shell-BUGBKCmv.js} +1 -1
  77. package/dist/assets/{pairing-page-Bb-_q_zP.js → pairing-page-B5GrCx4C.js} +1 -1
  78. package/dist/assets/{platform-loopback-page-Dfl_gjZm.js → platform-loopback-page-MZdCPXRI.js} +1 -1
  79. package/dist/assets/{plugin-detail-page-C_vv0F7O.js → plugin-detail-page-Byuqbr1N.js} +1 -1
  80. package/dist/assets/plugins-page-Ci0CoSAN.js +1 -0
  81. package/dist/assets/{prechat-route-CgCradwf.js → prechat-route-9JFn-w_1.js} +1 -1
  82. package/dist/assets/{prefs-DYaOj-dg.js → prefs-B1Y3q3c8.js} +1 -1
  83. package/dist/assets/{privacy-page-BqYdFos7.js → privacy-page-BTpvj9ZP.js} +1 -1
  84. package/dist/assets/{privacy-screen-DBMkRqiF.js → privacy-screen-CUbVcDf_.js} +1 -1
  85. package/dist/assets/{provider-callback-page-B-aDgII8.js → provider-callback-page-fB2tIyqL.js} +1 -1
  86. package/dist/assets/{provider-signup-page-CYK4VNf0.js → provider-signup-page-C4Dn-wtJ.js} +1 -1
  87. package/dist/assets/{quick-input-page-oif3WEFT.js → quick-input-page-Cv_CzapK.js} +1 -1
  88. package/dist/assets/{research-mock-page-CooZPqtv.js → research-mock-page-1T92rXz3.js} +1 -1
  89. package/dist/assets/{research-onboarding-route-BJqAsTdE.js → research-onboarding-route-CmWgwOFk.js} +3 -3
  90. package/dist/assets/{review-terms-screen-CVRYEl6e.js → review-terms-screen-DrD4vywk.js} +1 -1
  91. package/dist/assets/{risk-Dsj4oM8c.js → risk-Dopd25rc.js} +1 -1
  92. package/dist/assets/{security-page-DN5BI6Ag.js → security-page-BYI7twYM.js} +1 -1
  93. package/dist/assets/select-assistant-screen-Br-PNDO1.js +1 -0
  94. package/dist/assets/{settings-layout-BNwCqvBi.js → settings-layout-lddMUg7A.js} +1 -1
  95. package/dist/assets/share-feedback-modal-DSwfhMsV.js +1 -0
  96. package/dist/assets/{sidebar-tree-Bh-tcSsp.js → sidebar-tree-C1_LiBB9.js} +1 -1
  97. package/dist/assets/{signup-page-D6cMhBxv.js → signup-page-D6hAK-Us.js} +1 -1
  98. package/dist/assets/{signup-shell-D4Afeijm.js → signup-shell-DufHA5do.js} +1 -1
  99. package/dist/assets/{site-favicon-DSzk4cg0.js → site-favicon-fQHLTT6F.js} +1 -1
  100. package/dist/assets/{skill-detail-page-Jisds_Gs.js → skill-detail-page-BlfgTyFC.js} +1 -1
  101. package/dist/assets/{skill-detail-panel-BEJqfJig.js → skill-detail-panel-BGoRUWNU.js} +1 -1
  102. package/dist/assets/{skills-CSlvOB79.js → skills-AtSQBwXr.js} +1 -1
  103. package/dist/assets/{skills-page-Cs1EG4X5.js → skills-page-DeIiyhVc.js} +1 -1
  104. package/dist/assets/{sounds-page-ChFJ0OPm.js → sounds-page-BgLLJ-o9.js} +1 -1
  105. package/dist/assets/{src-B2IjVySQ.js → src-zsLiFPw3.js} +1 -1
  106. package/dist/assets/{subagent-detail-panel-ACj_B6Id.js → subagent-detail-panel-BGuVa8-m.js} +1 -1
  107. package/dist/assets/{system-events-page-JhzC5xhW.js → system-events-page-C1hXOYmg.js} +1 -1
  108. package/dist/assets/{tiptap-document-editor-DSny-IjF.js → tiptap-document-editor-C-eOEBR_.js} +1 -1
  109. package/dist/assets/tool-detail-panel-wAuQ7gi8.js +2 -0
  110. package/dist/assets/{upgrade-cancel-page-D_YziHQs.js → upgrade-cancel-page-BGgPmDmT.js} +1 -1
  111. package/dist/assets/{upgrade-success-page-Cg7IIDei.js → upgrade-success-page-TJBopZ0Z.js} +1 -1
  112. package/dist/assets/{usage-page-DB3LFuYw.js → usage-page-DLWFk2P0.js} +1 -1
  113. package/dist/assets/use-edge-swipe-back-B4XlZ1Iu.js +1 -0
  114. package/dist/assets/use-invite-link-dialog-BdnW1BHj.js +1 -0
  115. package/dist/assets/use-is-org-ready-jhEM-4rY.js +1 -0
  116. package/dist/assets/{use-onboarding-login-Bo_t51AV.js → use-onboarding-login-B-1jrjFL.js} +1 -1
  117. package/dist/assets/{use-reduced-motion-CcGT6CHV.js → use-reduced-motion-Cj0Z8KSf.js} +1 -1
  118. package/dist/assets/{use-skill-actions-e6TfdF23.js → use-skill-actions-BpVxiQZY.js} +1 -1
  119. package/dist/assets/{use-skill-categories-i_9x26zg.js → use-skill-categories-CCxtjMC_.js} +1 -1
  120. package/dist/assets/{use-skill-detail-files-Cu4nrHPA.js → use-skill-detail-files-Dpp521cY.js} +1 -1
  121. package/dist/assets/{voice-page-wTcwV9j9.js → voice-page-BoCTB8Jx.js} +1 -1
  122. package/dist/assets/{weather-forecast-display-C_3DSHxa.js → weather-forecast-display-Bix8rpji.js} +1 -1
  123. package/dist/assets/{web-DlbBHOna.js → web-C1L-cpPj.js} +1 -1
  124. package/dist/assets/{web-BpBQ3Cf2.js → web-RhBklijR.js} +1 -1
  125. package/dist/assets/{welcome-screen-BF3r_rfT.js → welcome-screen-CVI4Hjnt.js} +1 -1
  126. package/dist/assets/{workflow-detail-panel-DzvDXyoD.js → workflow-detail-panel-CwZH3tDl.js} +1 -1
  127. package/dist/assets/workspace-page-CwIsXk1j.js +1 -0
  128. package/dist/index.html +28 -27
  129. package/package.json +1 -1
  130. package/dist/assets/channels-page-route-6cT6U3pZ.js +0 -9
  131. package/dist/assets/chat-markdown-message-CItp7csw.js +0 -2
  132. package/dist/assets/community-page-BVJxxP10.js +0 -1
  133. package/dist/assets/contacts-page-route-WXG6_xo2.js +0 -1
  134. package/dist/assets/debug-page-C-HWHD-3.js +0 -4
  135. package/dist/assets/esm-DsIXwGm7.js +0 -2
  136. package/dist/assets/hatching-screen-C0MNyetb.js +0 -1
  137. package/dist/assets/home-page-route-X4KYSdMI.js +0 -1
  138. package/dist/assets/identity-page-route-D5xzlpim.js +0 -1
  139. package/dist/assets/plugins-page-Cv0FXn1j.js +0 -1
  140. package/dist/assets/select-assistant-screen-B63mlflD.js +0 -1
  141. package/dist/assets/share-feedback-modal-BloP-1QE.js +0 -1
  142. package/dist/assets/tool-detail-panel-z5iYNIYq.js +0 -2
  143. package/dist/assets/use-edge-swipe-back-AcKDuMrX.js +0 -1
  144. package/dist/assets/use-invite-link-dialog-CExxDwnZ.js +0 -1
  145. package/dist/assets/use-is-org-ready-BtwH2--_.js +0 -1
  146. package/dist/assets/workspace-page-DCcsRyQz.js +0 -1
  147. /package/dist/assets/{a2a-invite-BriFFHnO.js → a2a-invite-B9cylfIO.js} +0 -0
  148. /package/dist/assets/{app-info-LSjlWG3w.js → app-info-Clwt3pCt.js} +0 -0
  149. /package/dist/assets/{build.umd-wlq6sZjw.js → build.umd-CxdKgGWo.js} +0 -0
  150. /package/dist/assets/{contacts-gateway-CNqVHBQ3.js → contacts-gateway-CW5CipBv.js} +0 -0
  151. /package/dist/assets/{credential-entry-page-jJzKVnQk.js → credential-entry-page-9H2HOu88.js} +0 -0
  152. /package/dist/assets/{danger-zone-redirect-page-DL5S8CAN.js → danger-zone-redirect-page-BWg7rn8D.js} +0 -0
  153. /package/dist/assets/{definitions-alqf_FBK.js → definitions-CaYcW4Yq.js} +0 -0
  154. /package/dist/assets/{definitions-B1DK4OsQ.js → definitions-DScTW2c-.js} +0 -0
  155. /package/dist/assets/{emoji-catalog-data-D_xqkMQV.js → emoji-catalog-data-D8lRMt3A.js} +0 -0
  156. /package/dist/assets/{environment-store-fb1I8_0E.js → environment-store-C0f32873.js} +0 -0
  157. /package/dist/assets/{esm-DwTCNETa.js → esm-B54gzHCZ.js} +0 -0
  158. /package/dist/assets/{file-editor-BbrbkQCm.js → file-editor-sT7eHxsw.js} +0 -0
  159. /package/dist/assets/{format-date-BczUbfC1.js → format-date-CghpPTDc.js} +0 -0
  160. /package/dist/assets/{format-file-size-D7iZejgy.js → format-file-size-DzVEncaw.js} +0 -0
  161. /package/dist/assets/{llm-dimension-Bu_nHMF_.js → llm-dimension-DyYwG3mU.js} +0 -0
  162. /package/dist/assets/{mutation-error-CrhKyTkx.js → mutation-error-DYv0eJ_i.js} +0 -0
  163. /package/dist/assets/{onboarding-step-layout-zvLUIT7j.js → onboarding-step-layout-2XcmxqFN.js} +0 -0
  164. /package/dist/assets/{optimistic-lifecycle-DTggtDfs.js → optimistic-lifecycle-BvfDBY8o.js} +0 -0
  165. /package/dist/assets/{password-reset-page-DVIt7mWy.js → password-reset-page-BCk9Si73.js} +0 -0
  166. /package/dist/assets/{pdf-CuY9CA7Q.js → pdf-C3Qukw-J.js} +0 -0
  167. /package/dist/assets/{plugins-surface-C7NU-_rg.js → plugins-surface-z3RTZS4H.js} +0 -0
  168. /package/dist/assets/{prechat-names-b5RkG_F-.js → prechat-names-clVy5Mee.js} +0 -0
  169. /package/dist/assets/{provider-key-DBiHV_K5.js → provider-key-3AHnKoz9.js} +0 -0
  170. /package/dist/assets/{proxy-BzlH_XAe.js → proxy-o6cPThl2.js} +0 -0
  171. /package/dist/assets/{public-asset-Di3QykUd.js → public-asset-GKv5zCfZ.js} +0 -0
  172. /package/dist/assets/{schedules-Dj3YQqG5.js → schedules-BfKi12EZ.js} +0 -0
  173. /package/dist/assets/{setting-row-QKgqbQ4U.js → setting-row-CUka7_L9.js} +0 -0
  174. /package/dist/assets/{skill-icon-CEEEqpSq.js → skill-icon-cNkD2w1X.js} +0 -0
  175. /package/dist/assets/{status-badge-pill-BopXdkRS.js → status-badge-pill-0N6rTEBg.js} +0 -0
  176. /package/dist/assets/{step-indicator-dots-Cou0-IgA.js → step-indicator-dots-D03TmFKG.js} +0 -0
  177. /package/dist/assets/{system-events-redirect-page-D5EfWOEK.js → system-events-redirect-page-DbaFKRXH.js} +0 -0
  178. /package/dist/assets/{three-dot-indicator-BVtP8eei.js → three-dot-indicator-DNuHHwtA.js} +0 -0
  179. /package/dist/assets/{usage-window-Btqj3Jpn.js → usage-window-C6gWu5Qu.js} +0 -0
  180. /package/dist/assets/{use-active-assistant-id-BNRMo_Mi.js → use-active-assistant-id-BWXi63qg.js} +0 -0
  181. /package/dist/assets/{use-copy-to-clipboard-tXJpCn2M.js → use-copy-to-clipboard-BCTXSMa-.js} +0 -0
  182. /package/dist/assets/{web-CsaTwTXy.js → web-BD2N6zhd.js} +0 -0
  183. /package/dist/assets/{web-Xex3K4gk.js → web-BaubW4Pp.js} +0 -0
  184. /package/dist/assets/{web-U-rR-rZR.js → web-CJiP8Lg6.js} +0 -0
  185. /package/dist/assets/{web-D5_lKOWn.js → web-D8PpvYf_.js} +0 -0
  186. /package/dist/assets/{web-B9ZvD-Tt.js → web-Duw5A2aP.js} +0 -0
  187. /package/dist/assets/{web-Bi2V5gD3.js → web-O1LOb-o9.js} +0 -0
  188. /package/dist/assets/{xterm-D9pOJCAq.js → xterm-CBmd_y-b.js} +0 -0
  189. /package/dist/assets/{xterm-addon-fit-BTV6oL76.js → xterm-addon-fit-THPW0uy0.js} +0 -0
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Dhiismgm.js";import{t as n}from"./react-DJZBPgpf.js";import{F as r,t as i}from"./button-amTXFI-2.js";import{d as a}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as o}from"./useQuery-B45lW1Kk.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./queryOptions-BtNi-_9H.js";import{t as l}from"./card-Bv5O5juh.js";import{t as u}from"./chevron-left-BMF1xNfR.js";import{t as d}from"./chevron-right-DqqmezXC.js";import{n as f,r as p}from"./animated-avatar-CrlodWQr.js";import{t as m}from"./file-text-CYJz-GvF.js";import{n as h,t as g}from"./minimize-2-Clnet2W7.js";import{t as _}from"./pencil-CUIr0IFo.js";import{t as v}from"./save-aD5JFIZf.js";import{t as y}from"./sparkles-PGiR5v1g.js";import{t as b}from"./x-CkSVp1Ok.js";import"./src-B2IjVySQ.js";import{t as x}from"./file-markdown-BXUvAQ24.js";import{fn as S,pn as C}from"./sdk.gen-BwnFjFcp.js";import{St as w}from"./react-query.gen-C6wVk6Rw.js";import{n as T,r as E,t as D}from"./api-errors-CrWDzVca.js";import{r as O}from"./api-_7pKLlYA.js";import{c as k}from"./routes-BbeIx_F9.js";import{t as A}from"./conversation-store-BljZWolF.js";import{r as j}from"./viewer-store-B8-Qnbx9.js";import{t as M}from"./conversation-selection-BBHkzcfy.js";import{t as N}from"./misc-BYQPh7vS.js";import{t as P}from"./proxy-BzlH_XAe.js";import{t as F}from"./AnimatePresence-C8APSgIu.js";import{Gt as I,Mi as ee,Ni as te,di as ne,fi as re,fr as ie,ia as ae,li as oe,lr as se,pr as ce,rt as le,ui as ue,ur as de}from"./index-CSefSVJO.js";import{t as fe}from"./use-active-assistant-id-BNRMo_Mi.js";import{t as L}from"./skill-icon-CEEEqpSq.js";var pe=e(r(),1),R=e(n(),1),z=s();function B(e,t,n){return n===`forward`?(e+1)%t:(e-1+t)%t}function me({assistantId:e,initialTraits:t,onSave:n,onCancel:r}){let[i,a]=(0,R.useState)(null),[o,s]=(0,R.useState)(!0),[c,l]=(0,R.useState)(!1),u=(0,R.useRef)(null),[d,f]=(0,R.useState)(0),[m,h]=(0,R.useState)(0),[g,_]=(0,R.useState)(0);(0,R.useEffect)(()=>{if(u.current===e)return;let n=!1;return de(e).then(r=>{if(!n&&(u.current=e,a(r),s(!1),r&&t)){let e=r.bodyShapes.findIndex(e=>e.id===t.bodyShape),n=r.eyeStyles.findIndex(e=>e.id===t.eyeStyle),i=r.colors.findIndex(e=>e.id===t.color);e>=0&&f(e),n>=0&&h(n),i>=0&&_(i)}}),()=>{n=!0}},[e,t]);let y=(0,R.useCallback)(()=>{i&&(f(Math.floor(Math.random()*i.bodyShapes.length)),h(Math.floor(Math.random()*i.eyeStyles.length)),_(Math.floor(Math.random()*i.colors.length)))},[i]),x=(0,R.useCallback)(async()=>{if(!i)return;let t={bodyShape:i.bodyShapes[d].id,eyeStyle:i.eyeStyles[m].id,color:i.colors[g].id};l(!0);try{await ie(e,t),n?.(t)}finally{l(!1)}},[i,d,m,g,e,n]);if(o)return(0,z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,z.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-tertiary)]`})});if(!i)return(0,z.jsx)(`div`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-quiet)]`,children:`Unable to load avatar components. Make sure your assistant is running.`});let S=i.bodyShapes[d],C=i.eyeStyles[m],w=i.colors[g];return(0,z.jsxs)(`div`,{className:`space-y-6`,children:[(0,z.jsx)(`div`,{className:`flex justify-center`,children:(0,z.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,z.jsx)(le,{components:i,bodyShapeId:S.id,eyeStyleId:C.id,colorId:w.id,size:160})})}),(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsx)(V,{label:`Body`,value:S.id,onPrev:()=>f(B(d,i.bodyShapes.length,`backward`)),onNext:()=>f(B(d,i.bodyShapes.length,`forward`))}),(0,z.jsx)(V,{label:`Eyes`,value:C.id,onPrev:()=>h(B(m,i.eyeStyles.length,`backward`)),onNext:()=>h(B(m,i.eyeStyles.length,`forward`))}),(0,z.jsx)(V,{label:`Color`,value:w.id,colorHex:w.hex,onPrev:()=>_(B(g,i.colors.length,`backward`)),onNext:()=>_(B(g,i.colors.length,`forward`))})]}),(0,z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:y,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:[(0,z.jsx)(p,{className:`h-4 w-4`}),`Randomize`]}),(0,z.jsxs)(`button`,{type:`button`,onClick:x,disabled:c,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--system-positive-strong)] bg-[var(--system-positive-weak)] px-3 py-2 text-body-medium-default text-[var(--system-positive-strong)] transition-colors hover:opacity-90 disabled:opacity-50`,children:[(0,z.jsx)(v,{className:`h-4 w-4`}),c?`Saving...`:`Save Avatar`]}),r&&(0,z.jsx)(`button`,{type:`button`,onClick:r,className:`flex cursor-pointer items-center justify-center rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:(0,z.jsx)(b,{className:`h-4 w-4`})})]})]})}function V({label:e,value:t,colorHex:n,onPrev:r,onNext:i}){return(0,z.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,z.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:e}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`button`,{type:`button`,onClick:r,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,z.jsx)(u,{className:`h-4 w-4`})}),(0,z.jsxs)(`div`,{className:`flex min-w-[80px] items-center justify-center gap-2`,children:[n&&(0,z.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-[var(--border-element)]`,style:{backgroundColor:n}}),(0,z.jsx)(`span`,{className:`text-body-medium-default capitalize text-[var(--content-strong)]`,children:t})]}),(0,z.jsx)(`button`,{type:`button`,onClick:i,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,z.jsx)(d,{className:`h-4 w-4`})})]})]})}function he({open:e,onClose:t,assistantId:n,components:r,traits:i,customImageUrl:a,onSaveCharacter:o,onUploadImage:s,onGenerateWithAI:c}){let l=(0,R.useId)(),f=(0,R.useRef)(null),p=(0,R.useRef)(null),m=(0,R.useRef)(null),[h,g]=(0,R.useState)(`actions`),[_,v]=(0,R.useState)(!1);(0,R.useEffect)(()=>{e&&p.current?.focus()},[e]),(0,R.useEffect)(()=>{if(e){let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}},[e]);let x=(0,R.useCallback)(()=>{g(`actions`),t()},[t]),S=(0,R.useCallback)(e=>{e.key===`Escape`&&(h===`character-builder`?g(`actions`):x())},[x,h]),C=(0,R.useCallback)(e=>{e.target===f.current&&x()},[x]),w=(0,R.useCallback)(()=>{g(`actions`)},[]),T=(0,R.useCallback)(()=>{g(`character-builder`)},[]),E=(0,R.useCallback)(async e=>{let t=e.target.files?.[0];if(!t)return;v(!0);let r=await ce(n,t);v(!1),r&&(s(),x()),m.current&&(m.current.value=``)},[n,s,x]),D=(0,R.useCallback)(()=>{m.current?.click()},[]),O=(0,R.useCallback)(()=>{x(),c?.()},[x,c]),k=(0,R.useCallback)(e=>{o(e),x()},[o,x]);return e?(0,pe.createPortal)((0,z.jsxs)(`div`,{ref:f,role:`dialog`,"aria-modal":`true`,"aria-labelledby":l,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:S,onClick:C,children:[(0,z.jsxs)(`div`,{className:`mx-4 flex w-full max-w-md flex-col rounded-xl border shadow-xl`,style:{backgroundColor:`var(--surface-lift)`,borderColor:`var(--border-base)`,maxHeight:`85vh`},children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-6 py-4`,style:{borderColor:`var(--border-base)`},children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[h===`character-builder`&&(0,z.jsx)(`button`,{type:`button`,onClick:w,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Back`,children:(0,z.jsx)(u,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,z.jsx)(`h2`,{id:l,className:`text-title-small`,style:{color:`var(--content-default)`},children:h===`character-builder`?`Build a Character`:`Update Avatar`})]}),(0,z.jsx)(`button`,{ref:p,type:`button`,onClick:x,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Close`,children:(0,z.jsx)(b,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})})]}),(0,z.jsx)(`div`,{className:`overflow-y-auto p-6`,children:h===`actions`?(0,z.jsxs)(`div`,{className:`flex flex-col items-center gap-6`,children:[(0,z.jsx)(I,{components:r,traits:i,customImageUrl:a,size:120,interactive:!0}),(0,z.jsxs)(`div`,{className:`w-full space-y-2`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:T,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,z.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,z.jsx)(re,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,z.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,z.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Build a Character`}),(0,z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Build your own character`})]}),(0,z.jsx)(d,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),(0,z.jsxs)(`button`,{type:`button`,onClick:D,disabled:_,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,z.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,z.jsx)(ae,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,z.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,z.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:_?`Uploading...`:`Upload Image`}),(0,z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Choose an image from your computer`})]}),(0,z.jsx)(d,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),c&&(0,z.jsxs)(`button`,{type:`button`,onClick:O,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,z.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,z.jsx)(y,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,z.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,z.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Generate with AI`}),(0,z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Create an avatar through chat`})]}),(0,z.jsx)(d,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]})]})]}):(0,z.jsx)(me,{assistantId:n,initialTraits:i,onSave:k,onCancel:w})})]}),(0,z.jsx)(`input`,{ref:m,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif`,className:`hidden`,onChange:E})]}),document.body):null}var ge={displayName:`Other`,color:`#888`,emoji:`?`},_e={email:{displayName:`Email`,color:`#A665C9`,emoji:`📧`},calendar:{displayName:`Calendar`,color:`#0E9B8B`,emoji:`📅`},messaging:{displayName:`Messaging`,color:`#6B8AE0`,emoji:`💬`},browsing:{displayName:`Browsing`,color:`#E9642F`,emoji:`🌐`},productivity:{displayName:`Productivity`,color:`#0E9B8B`,emoji:`📋`},development:{displayName:`Development`,color:`#EF4400`,emoji:`🔨`},voice:{displayName:`Voice`,color:`#DB4B77`,emoji:`🎤`},commerce:{displayName:`Commerce`,color:`#E9C91A`,emoji:`🛒`},content:{displayName:`Content`,color:`#DB4B77`,emoji:`🎨`},health:{displayName:`Health`,color:`#4C9B50`,emoji:`❤️`},system:{displayName:`System`,color:`#8D99A5`,emoji:`⚙️`},integrations:{displayName:`Integrations`,color:`#8D99A5`,emoji:`🔗`}};function H(e){return _e[e]??ge}var U=[`email`,`calendar`,`messaging`,`browsing`,`productivity`,`development`,`voice`,`commerce`,`content`,`health`,`system`,`integrations`],ve={email:[{label:`Sending`,emoji:`📨`,skillIds:new Set([`agentmail`,`email-setup`])},{label:`Reading`,emoji:`📬`,skillIds:new Set([`email-channel`,`gmail`])}],messaging:[{label:`Chat`,emoji:`💬`,skillIds:new Set([`messaging`,`slack`,`telegram`])},{label:`Notifications`,emoji:`🔔`,skillIds:new Set([`notifications`])},{label:`People`,emoji:`👥`,skillIds:new Set([`contacts`,`followups`])}],development:[{label:`Coding`,emoji:`💻`,skillIds:new Set([`typescript-eval`,`frontend-design`])},{label:`Dev Tools`,emoji:`🔧`,skillIds:new Set([`api-mapping`,`cli-discover`,`subagent`,`app-builder`])}],browsing:[{label:`Control`,emoji:`🎮`,skillIds:new Set([`computer-use`,`macos-automation`,`browser`])},{label:`Triggers`,emoji:`⏰`,skillIds:new Set([`watcher`,`time-based-actions`])}],commerce:[{label:`Shopping`,emoji:`🛒`,skillIds:new Set([`amazon`,`doordash`,`restaurant-reservation`])}],system:[{label:`Core`,emoji:`🧠`,skillIds:new Set([`knowledge-graph`,`skills-catalog`,`self-upgrade`])},{label:`Daily`,emoji:`☀️`,skillIds:new Set([`start-the-day`,`weather`])}]},ye=14,be=10,xe=6;function W(e){switch(e.kind.type){case`center`:return{shape:`circle`,size:90,cornerRadius:0};case`category`:return{shape:`roundedRect`,size:80,cornerRadius:ye};case`subCategory`:return{shape:`roundedRect`,size:56,cornerRadius:be};case`skill`:return{shape:`diamond`,size:64,cornerRadius:xe}}}function Se(e,t,n,r){let i=Math.min(Math.max(0,t),e),a=Math.abs(n),o=Math.abs(r);if(a<1e-6&&o<1e-6)return e;let s=e/Math.max(a,o),c=s*n,l=s*r;if(!(Math.abs(c)>e-i&&Math.abs(l)>e-i))return s;let u=Math.sign(c)*(e-i),d=Math.sign(l)*(e-i),f=n*u+r*d,p=u*u+d*d-i*i,m=f*f-p;return m<0?s:f+Math.sqrt(m)}function G(e,t,n){switch(e.shape){case`circle`:return e.size/2;case`roundedRect`:return Se(e.size/2,e.cornerRadius,t,n);case`diamond`:{let r=(t+n)*Math.SQRT1_2,i=(-t+n)*Math.SQRT1_2;return Se(e.size/2,e.cornerRadius,r,i)}}}function Ce(e,t){let n=t.x-e.x,r=t.y-e.y,i=Math.sqrt(n*n+r*r);if(i<1e-6)return{x1:e.x,y1:e.y,x2:t.x,y2:t.y};let a=n/i,o=r/i,s=Math.max(0,G(W(e),a,o)-3),c=Math.max(0,G(W(t),-a,-o)-3);if(s+c>=i){let n=(e.x+t.x)/2,r=(e.y+t.y)/2;return{x1:n,y1:r,x2:n,y2:r}}return{x1:e.x+a*s,y1:e.y+o*s,x2:t.x-a*c,y2:t.y-o*c}}var we=10,Te=200,Ee=160,K=160;function q(e,t,n,r){let i={x:e.x,y:e.y};for(let e=0;e<30;e++){let e=0,a=0,o=0;for(let s of n){let n=i.x-s.x,c=i.y-s.y,l=Math.sqrt(n*n+c*c),u=t+s.radius+r-l;u>e&&(e=u,l<.1?(a=u+1,o=0):(a=n/l*(u+1),o=c/l*(u+1)))}if(e<=0)break;i={x:i.x+a,y:i.y+o}}return i}function J(e,t,n,r,i,a,o,s,c,l,u,d){if(e.length===0)return;let f=a+o,p=Math.cos(r),m=Math.sin(r),h=-m,g=p,_=f*.88,v=H(c).color;e.forEach((r,c)=>{let y=Math.floor(c/3),b=c%3,x=Math.min(3,e.length-y*3),S=(b-(x-1)/2)*f,C=y%2==1&&x<3?f*.5:0,w=i+y*_,T=q({x:n.x+w*p+(S+C)*h,y:n.y+w*m+(S+C)*g},a/2,u,o);u.push({id:r.id,kind:{type:`skill`,item:r},parentId:t,depth:s,x:T.x,y:T.y,radius:a/2}),d.push({id:`edge-${l}-skill-${c}`,fromId:t,toId:r.id,color:v})})}function De(e,t,n=90){let r=[],i=[],a=we;if(r.push({id:`__center__`,kind:{type:`center`},parentId:null,depth:0,x:e.x,y:e.y,radius:n/2}),t.length===0)return{nodes:r,edges:i};let o=t.length,s=2*Math.PI/o;return t.forEach((t,n)=>{let o=-Math.PI/2+n*s,c=`cat-${t.category}`,l=H(t.category).color,u=q({x:e.x+Te*Math.cos(o),y:e.y+Te*Math.sin(o)},80/2,r,a);r.push({id:c,kind:{type:`category`,category:t.category},parentId:`__center__`,depth:1,x:u.x,y:u.y,radius:80/2}),i.push({id:`edge-center-${t.category}`,fromId:`__center__`,toId:c,color:l});let d=ve[t.category];if(d&&d.length>0){let e=[],n=new Set;for(let r of d){let i=t.items.filter(e=>r.skillIds.has(e.id));i.length>0&&(e.push({def:r,items:i}),i.forEach(e=>n.add(e.id)))}let f=t.items.filter(e=>!n.has(e.id));if(f.length>0){if(e.length===0){J(t.items,c,u,o,K,64,a,2,t.category,t.category,r,i);return}let n=e[e.length-1];n&&n.items.push(...f)}let p=e.length,m=s*.55,h=p<=1?0:Math.min(m,(p-1)*.35);e.forEach((e,n)=>{let s;s=p===1?o:o+(n/(p-1)-.5)*h*2;let d=`subcat-${t.category}-${n}`,f=q({x:u.x+Ee*Math.cos(s),y:u.y+Ee*Math.sin(s)},56/2,r,a);r.push({id:d,kind:{type:`subCategory`,label:e.def.label,emoji:e.def.emoji,category:t.category},parentId:c,depth:2,x:f.x,y:f.y,radius:56/2}),i.push({id:`edge-${t.category}-sub-${n}`,fromId:c,toId:d,color:l}),J(e.items,d,f,s,K,64,a,3,t.category,d,r,i)})}else J(t.items,c,u,o,K,64,a,2,t.category,t.category,r,i)}),{nodes:r,edges:i}}function Oe(e){let t=new Map;for(let n of e){let e=t.get(n.category);e?e.push(n):t.set(n.category,[n])}let n=[];for(let e of U){let r=t.get(e);r&&r.length>0&&n.push({category:e,items:r})}for(let[e,r]of t)!U.includes(e)&&r.length>0&&n.push({category:e,items:r});return n}function ke(e,t,n,r,i=120,a=.4,o=3){if(e.length===0)return{zoom:1,panX:0,panY:0};let s=1/0,c=-1/0,l=1/0,u=-1/0;for(let t of e)s=Math.min(s,t.x),c=Math.max(c,t.x),l=Math.min(l,t.y),u=Math.max(u,t.y);let d=c-s+i*2,f=u-l+i*2;if(d<=0||f<=0||n<=0||r<=0)return{zoom:1,panX:0,panY:0};let p=Math.min(n/d,r/f),m=Math.max(a,Math.min(o,p)),h=(s+c)/2-t.x,g=(l+u)/2-t.y;return{zoom:m,panX:-h*m,panY:-g*m}}var Ae=.4,je=.25,Y={x:600,y:450},X={type:`spring`,stiffness:180,damping:20},Me={category:{size:80,cornerRadius:14,dashed:!1,fillPct:14,fillHoverPct:25,strokePct:55,strokeHoverPct:85,strokeWidth:2,strokeHoverWidth:2.5},subcategory:{size:56,cornerRadius:10,dashed:!0,fillPct:10,fillHoverPct:20,strokePct:40,strokeHoverPct:70,strokeWidth:1.5,strokeHoverWidth:2}},Ne={category:`rounded-[3px]`,subcategory:`rounded-[3px] border-dashed`,skill:`rotate-45`,workspace:`rounded-full`},Pe=`Failed to load the memory graph.`;function Fe(e){return c({queryKey:[`memory-graph`,e],staleTime:5*6e4,queryFn:async()=>{let{data:t,error:n,response:r}=await S({path:{assistant_id:e},throwOnError:!1});if(T(r,n,Pe),!r.ok)throw new D(r.status,E(n,r,Pe));return!t||t.supported===!1?{kind:`unsupported`}:{kind:`ready`,graph:t}}})}var Ie=Math.PI*(3-Math.sqrt(5)),Le=7,Re=2.4,ze=34,Be=10;function Ve(e){return Math.min(ze,Le+Re*Math.sqrt(e))}function He(e){return e===`concept`||e===`skill`||e===`capability`?e:`other`}function Ue(e){return e===`link`||e===`learned`?e:`other`}function We(e,t={}){let n=t.center??Y,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)=>Ve(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*Ie,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]+Be;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:He(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:Ue(e.kind),directed:e.directed??!1};return e.description&&(n.description=e.description),n})}}var Ge=`Failed to load this concept.`;function Ke(e,t){return c({queryKey:[`memory-graph-node`,e,t],enabled:!!(e&&t),queryFn:async()=>{let{data:n,error:r,response:i}=await C({path:{assistant_id:e},query:{id:t??``},throwOnError:!1});if(T(i,r,Ge),!i.ok)throw new D(i.status,E(r,i,Ge));return n??{found:!1}}})}function qe(e){return e?new Date(e).toLocaleDateString(`en-GB`,{day:`numeric`,month:`short`,year:`numeric`}):null}function Je({assistantId:e,node:t,onClose:n}){let r=o(Ke(e,t.id)),a=r.data,s=qe(t.updatedAtMs);return(0,R.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,z.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,z.jsx)(`div`,{className:`absolute inset-0`,style:{backgroundColor:`color-mix(in srgb, var(--surface-base) 55%, transparent)`},onClick:n}),(0,z.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:[(0,z.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,z.jsxs)(`div`,{className:`min-w-0`,children:[(0,z.jsx)(`h2`,{className:`truncate text-title-small`,style:{color:`var(--content-default)`},title:a?.title??t.label,children:a?.title??t.label}),s?(0,z.jsxs)(`p`,{className:`mt-0.5 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:[`Updated `,s]}):null]}),(0,z.jsx)(i,{variant:`ghost`,iconOnly:(0,z.jsx)(b,{"aria-hidden":!0}),onClick:n,"aria-label":`Close`,tintColor:`var(--content-tertiary)`})]}),(0,z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-5 py-4`,style:{touchAction:`pan-y`},children:r.isLoading?(0,z.jsx)(`div`,{className:`flex justify-center py-8`,children:(0,z.jsx)(`div`,{className:`h-5 w-5 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})}):r.isError?(0,z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Couldn't load this concept. Try again in a moment.`}):a?.found&&a.content?.trim()?(0,z.jsx)(x,{content:a.content}):(0,z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`This concept doesn't have written content yet — it exists as a link in the graph, but its page is empty.`})})]})]})}var Ye={concept:`#5B8DEF`,skill:`#A665C9`,capability:`#0E9B8B`,other:`#8D99A5`},Xe={concept:`Concept`,skill:`Skill`,capability:`Capability`,other:`Other`},Ze=`#E9A23B`;function Qe({nodeKinds:e,hasLinks:t,hasLearned:n}){return(0,z.jsxs)(`div`,{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,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`span`,{className:`inline-block h-2.5 w-2.5 rounded-full`,style:{backgroundColor:Ye[e]}}),(0,z.jsx)(`span`,{className:`text-[11px]`,style:{color:`var(--content-tertiary)`},children:Xe[e]})]},e)),e.length>0&&(t||n)&&(0,z.jsx)(`div`,{className:`mt-0.5 border-t pt-1.5`,style:{borderColor:`var(--border-base)`}}),t&&(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`span`,{className:`inline-block h-0 w-4`,style:{borderTop:`2px solid var(--content-tertiary)`}}),(0,z.jsx)(`span`,{className:`text-[11px]`,style:{color:`var(--content-tertiary)`},children:`Link`})]}),n&&(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`span`,{className:`inline-block h-0 w-4`,style:{borderTop:`2px dashed #E9A23B`}}),(0,z.jsx)(`span`,{className:`text-[11px]`,style:{color:`var(--content-tertiary)`},children:`Learned`})]})]})}var $e=[`concept`,`skill`,`capability`,`other`],et=.13,tt=2600,nt=.006,rt=1.15,it=3,at=.32,ot=.45,st=3,ct=4;function lt(e){let t=getComputedStyle(e);return{content:t.getPropertyValue(`--content-default`).trim()||`#e5e7eb`,tertiary:t.getPropertyValue(`--content-tertiary`).trim()||`#8792a0`}}function Z({title:e,detail:t}){return(0,z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-2 px-6 text-center`,children:[(0,z.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),t?(0,z.jsx)(`p`,{className:`max-w-sm text-body-small-default`,style:{color:`var(--content-tertiary)`},children:t}):null]})}function ut({assistantId:e,className:t,isFullscreen:n,onToggleFullscreen:r}){let a=(0,R.useRef)(null),s=(0,R.useRef)(null),c=o(Fe(e)),l=c.data?.kind===`ready`?c.data.graph:null,u=(0,R.useMemo)(()=>l?We(l):{nodes:[],edges:[]},[l]),d=c.data?.kind===`ready`&&u.nodes.length>0,f=(0,R.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 u.edges)t(e.fromId,e.toId),t(e.toId,e.fromId);return e},[u.edges]),p=(0,R.useMemo)(()=>{if(u.nodes.length===0)return 1;let e=u.nodes.map(e=>{let t=e.x-Y.x,n=e.y-Y.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])},[u.nodes]),m=(0,R.useRef)({yaw:.5,pitch:.32,zoom:1,hoveredId:null,dragging:!1,moved:!1,lastX:0,lastY:0,lastInteractAt:-1/0,dirty:!0}),_=(0,R.useRef)([]),v=(0,R.useRef)({content:`#e5e7eb`,tertiary:`#8792a0`}),[y,b]=(0,R.useState)(null),[x,S]=(0,R.useState)(null),C=(0,R.useCallback)(e=>{if(!e)return null;let t=u.nodes.find(t=>t.id===e);return t?t.summary?`${t.label} — ${t.summary}`:t.label:null},[u.nodes]),w=(0,R.useCallback)(()=>{let e=m.current;e.yaw=.5,e.pitch=.32,e.zoom=1,e.lastInteractAt=-1/0,e.dirty=!0,b(null)},[]),T=(0,R.useCallback)(e=>{let t=m.current;t.zoom=Math.max(ot,Math.min(st,t.zoom*e)),t.lastInteractAt=performance.now(),t.dirty=!0},[]);(0,R.useEffect)(()=>{if(!d)return;let e=s.current,t=a.current;if(!e||!t)return;let n=e.getContext(`2d`);if(!n)return;let r=u.nodes,i=u.edges,o=f,c=p,l=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;v.current=lt(t);let h=Math.min(window.devicePixelRatio||1,2),g=0,y=0,b=()=>{let n=t.getBoundingClientRect();g=n.width,y=n.height,h=Math.min(window.devicePixelRatio||1,2),e.width=Math.max(1,Math.round(g*h)),e.height=Math.max(1,Math.round(y*h)),e.style.width=`${g}px`,e.style.height=`${y}px`,v.current=lt(t),m.current.dirty=!0};b();let x=new ResizeObserver(b);x.observe(t);let S=0,C=0,w=e=>{let t=C?Math.min(.05,(e-C)/1e3):0;C=e;let a=m.current,s=v.current;if(!a.dragging&&e-a.lastInteractAt>tt&&!l&&(a.yaw+=et*t),l&&!a.dirty){S=requestAnimationFrame(w);return}a.dirty=!1;let u=Math.cos(a.yaw),d=Math.sin(a.yaw),f=Math.cos(a.pitch),p=Math.sin(a.pitch),b=it*c,x=Math.min(g,y)*.88/(2*c)*a.zoom,T=g/2,E=y/2;n.setTransform(h,0,0,h,0,0),n.clearRect(0,0,g,y);let D=a.hoveredId,O=D?o.get(D):void 0,k=e=>!D||e===D||(O?.has(e)??!1),A=Array(r.length);for(let e=0;e<r.length;e++){let t=r[e],n=t.x-Y.x,i=t.y-Y.y,a=t.z,o=n*u+a*d,s=-n*d+a*u,l=i*f-s*p,m=i*p+s*f,h=b/(b-m);A[e]={node:t,sx:T+o*x*h,sy:E+l*x*h,sr:Math.max(1.2,t.radius*x*h),depth:Math.max(0,Math.min(1,(m+c)/(2*c)))}}let j=A.map((e,t)=>t).sort((e,t)=>A[e].depth-A[t].depth),M=new Map;for(let e of A)M.set(e.node.id,e);n.lineCap=`round`;for(let e of i){let t=M.get(e.fromId),r=M.get(e.toId);if(!t||!r)continue;let i=e.kind===`learned`,a=D!=null&&(e.fromId===D||e.toId===D),o=(t.depth+r.depth)/2,c=(i?.34:.28)*(.4+.6*o);D!=null&&(c=a?.9:k(e.fromId)&&k(e.toId)?c:.05),n.globalAlpha=c,n.strokeStyle=i?Ze:s.tertiary,n.lineWidth=(a?2:1)*(.6+.6*o),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 e of j){let t=A[e],r=t.node,i=Ye[r.kind],a=k(r.id),o=r.id===D,s=at+(1-at)*t.depth,c=a?s:s*.18,l=(o?16:r.degree>=ct?8:4)*t.depth;n.shadowColor=i,n.shadowBlur=a?l:0,n.globalAlpha=c*.55,n.fillStyle=i,n.beginPath(),n.arc(t.sx,t.sy,t.sr,0,Math.PI*2),n.fill(),n.shadowBlur=0,n.globalAlpha=c,n.lineWidth=o?2.5:1.4,n.strokeStyle=i,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 j){let t=A[e],r=t.node;if(!(D==null?r.degree>=ct&&t.depth>.55:k(r.id)))continue;n.globalAlpha=(r.id===D?1:.85)*(.4+.6*t.depth),n.fillStyle=s.content;let i=r.label.length>22?`${r.label.slice(0,21)}…`:r.label;n.fillText(i,t.sx,t.sy+t.sr+3)}n.globalAlpha=1,_.current=A.map(e=>({id:e.node.id,sx:e.sx,sy:e.sy,sr:e.sr,depth:e.depth})),S=requestAnimationFrame(w)};return S=requestAnimationFrame(w),()=>{cancelAnimationFrame(S),x.disconnect()}},[d,u,f,p]);let E=(0,R.useCallback)((e,t)=>{let n=null,r=-1;for(let i of _.current){let a=e-i.sx,o=t-i.sy;a*a+o*o<=(i.sr+5)*(i.sr+5)&&i.depth>r&&(n=i.id,r=i.depth)}return n},[]),D=e=>{let t=a.current.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},O=(0,R.useCallback)(e=>{if(e.button!==0||e.target.closest(`[data-graph-control]`))return;let t=m.current;t.dragging=!0,t.moved=!1,t.lastX=e.clientX,t.lastY=e.clientY,t.lastInteractAt=performance.now(),e.currentTarget.setPointerCapture(e.pointerId)},[]),k=(0,R.useCallback)(e=>{let t=m.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*nt,t.pitch=Math.max(-rt,Math.min(rt,t.pitch+r*nt)),t.lastX=e.clientX,t.lastY=e.clientY,t.lastInteractAt=performance.now(),t.dirty=!0;return}let{x:n,y:r}=D(e),i=E(n,r);i!==t.hoveredId&&(t.hoveredId=i,t.dirty=!0,b(C(i)))},[E,C]),A=(0,R.useCallback)(e=>{let t=m.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}=D(e),r=E(t,n);if(r){let e=u.nodes.find(e=>e.id===r);e&&S({id:e.id,label:e.label,updatedAtMs:e.updatedAtMs})}else b(null)}},[E,u.nodes]),j=(0,R.useCallback)(()=>{let e=m.current;e.dragging||e.hoveredId==null||(e.hoveredId=null,e.dirty=!0,b(null))},[]);(0,R.useEffect)(()=>{let e=a.current;if(!e||!d)return;let t=e=>{if(e.target.closest?.(`[data-graph-panel]`))return;e.preventDefault();let t=m.current;t.zoom=Math.max(ot,Math.min(st,t.zoom*(1-e.deltaY/500))),t.lastInteractAt=performance.now(),t.dirty=!0};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[d]);let M=(0,R.useMemo)(()=>{let e=new Set(u.nodes.map(e=>e.kind));return $e.filter(t=>e.has(t))},[u.nodes]),N=(0,R.useMemo)(()=>u.edges.some(e=>e.kind===`learned`),[u.edges]),P=(0,R.useMemo)(()=>u.edges.some(e=>e.kind!==`learned`),[u.edges]),F;return F=c.isLoading?(0,z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,z.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})}):c.isError?(0,z.jsx)(Z,{title:`Couldn't load the memory graph`,detail:`Something went wrong fetching your assistant's memory. Try again in a moment.`}):c.data?.kind===`unsupported`?(0,z.jsx)(Z,{title:`Memory graph isn't available`,detail:`The active memory backend doesn't expose a concept graph.`}):d?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`canvas`,{ref:s,className:`absolute inset-0 h-full w-full`}),(0,z.jsx)(Qe,{nodeKinds:M.length>1?M:[],hasLinks:P,hasLearned:N}),y?(0,z.jsx)(`div`,{className:`pointer-events-none absolute left-1/2 top-4 max-w-[80%] -translate-x-1/2 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:y}):null,(0,z.jsx)(`div`,{className:`pointer-events-none absolute bottom-4 right-4 text-[11px]`,style:{color:`var(--content-tertiary)`},children:`drag to rotate · scroll to zoom`}),(0,z.jsxs)(`div`,{"data-graph-control":!0,className:`absolute right-4 top-4 flex flex-col gap-1`,children:[(0,z.jsx)(i,{variant:`ghost`,iconOnly:(0,z.jsx)(oe,{}),onClick:()=>T(1.25),"aria-label":`Zoom in`,tooltip:`Zoom in`}),(0,z.jsx)(i,{variant:`ghost`,iconOnly:(0,z.jsx)(ue,{}),onClick:()=>T(.8),"aria-label":`Zoom out`,tooltip:`Zoom out`}),(0,z.jsx)(i,{variant:`ghost`,iconOnly:(0,z.jsx)(te,{}),onClick:w,"aria-label":`Reset view`,tooltip:`Reset view`})]})]}):(0,z.jsx)(Z,{title:`No concepts yet`,detail:`As your assistant learns and links ideas, they'll appear here as a living map of its memory.`}),(0,z.jsxs)(`div`,{ref:a,className:`relative select-none overflow-hidden rounded-xl ${t??``}`,style:{backgroundColor:`var(--surface-base)`,backgroundImage:`radial-gradient(circle at center, color-mix(in srgb, var(--content-tertiary) 8%, transparent), transparent 62%)`,touchAction:`none`,cursor:d?`grab`:`default`},onPointerDown:d?O:void 0,onPointerMove:d?k:void 0,onPointerUp:d?A:void 0,onPointerCancel:d?A:void 0,onPointerLeave:d?j:void 0,children:[r?(0,z.jsx)(`div`,{className:`absolute left-4 top-4 z-10`,"data-graph-control":!0,children:(0,z.jsx)(i,{variant:`ghost`,iconOnly:n?(0,z.jsx)(g,{}):(0,z.jsx)(h,{}),onClick:r,"aria-label":n?`Exit fullscreen`:`Enter fullscreen`,tooltip:n?`Exit fullscreen`:`Enter fullscreen`})}):null,F,d&&x?(0,z.jsx)(Je,{assistantId:e,node:x,onClose:()=>S(null)}):null]})}function dt({edges:e,nodeById:t,visible:n}){return(0,z.jsx)(`svg`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 h-full w-full overflow-visible`,children:e.map(e=>{let r=t.get(e.fromId),i=t.get(e.toId);if(!r||!i)return null;let{x1:a,y1:o,x2:s,y2:c}=Ce(r,i);return(0,z.jsx)(`line`,{x1:a,y1:o,x2:s,y2:c,stroke:e.color,strokeWidth:1.5,opacity:n?.45:0,style:{transition:`opacity 0.4s ease`}},e.id)})})}function Q({shape:e,label:t}){return(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:(0,z.jsx)(`span`,{className:N(`inline-block h-3 w-3 border-[1.5px] border-[var(--content-tertiary)]`,Ne[e])})}),(0,z.jsx)(`span`,{children:t})]})}function ft({visible:e}){return(0,z.jsx)(`div`,{"data-constellation-control":!0,className:`pointer-events-none absolute bottom-4 left-4 rounded-md px-3 py-2 text-body-small-default`,style:{backgroundColor:`color-mix(in srgb, var(--surface-overlay) 80%, transparent)`,border:`1px solid color-mix(in srgb, var(--content-tertiary) 20%, transparent)`,color:`var(--content-secondary)`,opacity:+!!e,transition:`opacity 0.35s ease`},children:(0,z.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,z.jsx)(Q,{shape:`category`,label:`Category`}),(0,z.jsx)(Q,{shape:`subcategory`,label:`Subcategory`}),(0,z.jsx)(Q,{shape:`skill`,label:`Skill`}),(0,z.jsx)(Q,{shape:`workspace`,label:`Workspace`})]})})}function pt({item:e,color:t,onViewDetails:n}){let r=e.kind===`skill`?`Skill`:`Workspace`,a=e.kind===`skill`?ne:m;return(0,z.jsxs)(l,{padding:`sm`,elevated:!0,className:`w-[260px] shadow-[var(--shadow-popover)]`,role:`dialog`,"aria-label":`${e.label} details`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md px-2 py-1 text-body-small-emphasised text-[var(--content-default)]`,style:{backgroundColor:`${t}33`},children:[(0,z.jsx)(a,{className:`h-3 w-3`,style:{color:t}}),r]}),n?(0,z.jsx)(i,{type:`button`,variant:`ghost`,size:`compact`,onClick:n,children:`View Details`}):null]}),(0,z.jsxs)(`div`,{className:`mt-2 flex items-start gap-2`,children:[e.icon||e.emoji?(0,z.jsx)(L,{skill:e,className:`h-5 w-5 shrink-0 text-[20px] leading-none`}):null,(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e.label}),e.description?(0,z.jsx)(`div`,{className:`mt-1 line-clamp-3 text-body-small-default text-[var(--content-secondary)]`,children:e.description}):null]})]})]})}function mt({onSingleClick:e,onDoubleClick:t,latency:n=200}){let r=(0,R.useRef)(null);return(0,R.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),(0,R.useCallback)(i=>{r.current&&=(clearTimeout(r.current),null),e&&i.detail===1&&(r.current=setTimeout(()=>{r.current=null,e()},n)),t&&i.detail>=2&&i.detail%2==0&&t()},[e,t,n])}function ht(e,t,n){let[r,i]=(0,R.useState)(!1),a=r||n===!0,o=mt({onSingleClick:e,onDoubleClick:t});return{active:a,onClick:(0,R.useCallback)(n=>{!e&&!t||(n.stopPropagation(),o(n))},[e,t,o]),onPointerDown:(0,R.useCallback)(n=>{!e&&!t||n.stopPropagation()},[e,t]),onMouseEnter:(0,R.useCallback)(()=>i(!0),[]),onMouseLeave:(0,R.useCallback)(()=>i(!1),[])}}function $(e,t){return`color-mix(in oklab, ${e} ${Math.max(0,Math.min(100,t))}%, var(--surface-base))`}function gt(e,t){switch(e.kind.type){case`center`:return{visible:t>=1};case`category`:return{visible:t>=2};case`subCategory`:return{visible:t>=3};case`skill`:return{visible:t>=4}}}function _t(e,t){switch(e.kind.type){case`center`:return .05;case`category`:return t*.04;case`subCategory`:return t*.03;case`skill`:return .08+t*.02}}function vt(e){switch(e.kind.type){case`skill`:return e.kind.item;case`category`:{let t=H(e.kind.category);return{id:e.id,label:t.displayName,emoji:t.emoji,category:e.kind.category,kind:`workspaceFile`}}case`subCategory`:return{id:e.id,label:e.kind.label,emoji:e.kind.emoji,category:e.kind.category,kind:`workspaceFile`};default:return}}function yt({variant:e,x:t,y:n,color:r,tooltip:i,visibility:a,delay:o,children:s,isSelected:c,onSingleClick:l,onDoubleClick:u}){let d=Me[e],{active:f,...p}=ht(l,u,c),m={left:t-d.size/2,top:n-d.size/2,width:d.size,height:d.size,borderRadius:d.cornerRadius,backgroundColor:$(r,f?d.fillHoverPct:d.fillPct),borderStyle:d.dashed?`dashed`:`solid`,borderColor:$(r,f?d.strokeHoverPct:d.strokePct),borderWidth:f?d.strokeHoverWidth:d.strokeWidth,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`,cursor:l||u?`pointer`:`default`};return(0,z.jsx)(P.div,{className:`pointer-events-auto absolute flex flex-col items-center justify-center`,"data-constellation-node":!0,style:m,initial:{opacity:0,scale:.3},animate:{opacity:+!!a.visible,scale:a.visible?1:.3},transition:{...X,delay:o},onMouseEnter:p.onMouseEnter,onMouseLeave:p.onMouseLeave,onPointerDown:p.onPointerDown,onClick:p.onClick,title:i,children:s})}function bt({x:e,y:t,item:n,color:r,fallbackEmoji:i,visibility:a,delay:o,isSelected:s,onSingleClick:c,onDoubleClick:l}){let{active:u,...d}=ht(c,l,s);return(0,z.jsxs)(P.div,{className:`pointer-events-auto absolute`,"data-constellation-node":!0,style:{left:e-64/2,top:t-64/2,width:64,height:64,cursor:c||l?`pointer`:`default`},initial:{opacity:0,scale:.4},animate:{opacity:+!!a.visible,scale:a.visible?1:.4},transition:{...X,delay:o},onMouseEnter:d.onMouseEnter,onMouseLeave:d.onMouseLeave,onPointerDown:d.onPointerDown,onClick:d.onClick,title:n.label,children:[(0,z.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 rounded-md`,style:{transform:`rotate(45deg)`,backgroundColor:$(r,u?20:10),border:`${u?2:1.5}px solid ${$(r,u?70:40)}`,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`}}),(0,z.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center`,children:[(0,z.jsx)(L,{skill:n,className:`h-4 w-4 text-[16px] leading-none`,fallback:i}),(0,z.jsx)(`span`,{className:`mt-0.5 max-w-[42px] truncate text-[9px] font-medium leading-tight text-[var(--content-default)]`,title:n.label,children:n.label})]})]})}function xt({node:e,index:t,phase:n,components:r,traits:i,customImageUrl:a,isSelected:o,onSingleClick:s,onDoubleClick:c}){let l=gt(e,n),u=_t(e,t);if(e.kind.type===`center`)return(0,z.jsx)(P.div,{className:`pointer-events-none absolute`,style:{left:e.x-90/2,top:e.y-90/2,width:90,height:90},initial:{opacity:0,scale:.6},animate:{opacity:+!!l.visible,scale:l.visible?1:.6},transition:{...X,delay:u},children:(0,z.jsx)(I,{components:r,traits:i,customImageUrl:a,size:90})});if(e.kind.type===`category`||e.kind.type===`subCategory`){let t=H(e.kind.category),n=e.kind.type===`category`?`category`:`subcategory`,r=e.kind.type===`category`?t.emoji:e.kind.emoji,i=e.kind.type===`category`?t.displayName:e.kind.label,a=n===`category`?`text-[20px]`:`text-[14px]`,d=n===`category`?`mt-1 max-w-[85%] truncate text-label-medium-default leading-tight text-[var(--content-default)]`:`mt-0.5 max-w-[85%] truncate text-[9.5px] font-medium leading-tight text-[var(--content-default)]`;return(0,z.jsxs)(yt,{variant:n,x:e.x,y:e.y,color:t.color,tooltip:i,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c,children:[(0,z.jsx)(`span`,{className:`${a} leading-none`,"aria-hidden":!0,children:r}),(0,z.jsx)(`span`,{className:d,title:i,children:i})]})}if(e.kind.type===`skill`){let t=e.kind.item,n=H(t.category);return(0,z.jsx)(bt,{x:e.x,y:e.y,item:t,color:n.color,fallbackEmoji:n.emoji,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c})}return null}function St(e,t,n,r){let[i,a]=(0,R.useState)({width:0,height:0}),[o,s]=(0,R.useState)(null),[c,l]=(0,R.useState)(null),[u,d]=(0,R.useState)(!1),[f,p]=(0,R.useState)(null),[m,h]=(0,R.useState)(!1),g=(0,R.useRef)(null),_=(0,R.useRef)(null);(0,R.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(e=>{for(let t of e){let{width:e,height:n}=t.contentRect;a({width:e,height:n})}});n.observe(t);let r=t.getBoundingClientRect();return a({width:r.width,height:r.height}),()=>n.disconnect()},[e]);let v=(0,R.useMemo)(()=>ke(t,Y,i.width,i.height),[t,i.width,i.height]),y=o??v.zoom,b=c??{x:v.panX,y:v.panY},x=(0,R.useCallback)(()=>{h(!0),g.current!=null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{h(!1),g.current=null},500)},[]);(0,R.useEffect)(()=>()=>{g.current!=null&&window.clearTimeout(g.current)},[]);let S=(0,R.useCallback)(()=>{s(null),l(null),p(null),x()},[x]),C=(0,R.useCallback)((e,t)=>{let n=Math.max(Ae,Math.min(3,e));if(n===y)return;let r=n/y;l({x:b.x*r,y:b.y*r}),s(n),p(null),t?.animate&&x()},[b.x,b.y,x,y]),w=(0,R.useCallback)(()=>{C(y+je,{animate:!0})},[C,y]),T=(0,R.useCallback)(()=>{C(y-je,{animate:!0})},[C,y]),E=(0,R.useCallback)(e=>{if(f===e){S();return}let t=n.get(e);if(!t)return;let r=1.8;s(r),l({x:(Y.x-t.x)*r,y:(Y.y-t.y)*r}),p(e),x()},[S,n,x,f]);return(0,R.useEffect)(()=>{let t=e.current;if(!t)return;let n=e=>{e.preventDefault();let t=e.ctrlKey||e.metaKey?150:400;C(y*(1+-e.deltaY/t))};return t.addEventListener(`wheel`,n,{passive:!1}),()=>t.removeEventListener(`wheel`,n)},[C,e,y]),{zoom:y,pan:b,isDragging:u,isAnimating:m,viewSize:i,zoomedNodeId:f,zoomIn:w,zoomOut:T,fitAll:S,zoomToNode:E,handlePointerDown:(0,R.useCallback)(e=>{if(e.button!==0)return;let t=e.target;t.closest(`[data-constellation-control]`)||(t.closest(`[data-constellation-node]`)||r?.(),_.current={startX:e.clientX,startY:e.clientY,panStartX:b.x,panStartY:b.y,pointerId:e.pointerId,moved:!1},d(!0),g.current!=null&&(window.clearTimeout(g.current),g.current=null),h(!1),e.currentTarget.setPointerCapture(e.pointerId))},[r,b.x,b.y]),handlePointerMove:(0,R.useCallback)(e=>{let t=_.current;if(!t||t.pointerId!==e.pointerId)return;let n=e.clientX-t.startX,r=e.clientY-t.startY;!t.moved&&(Math.abs(n)>3||Math.abs(r)>3)&&(t.moved=!0,p(null)),l({x:t.panStartX+n,y:t.panStartY+r})},[]),handlePointerUp:(0,R.useCallback)(e=>{let t=_.current;if(!(!t||t.pointerId!==e.pointerId)){_.current=null,d(!1);try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}}},[])}}function Ct({skills:e,components:t,traits:n,customImageUrl:r,className:a,isFullscreen:o,onToggleFullscreen:s,onSelectSkill:c}){let l=(0,R.useRef)(null),u=(0,R.useRef)(null),[d,f]=(0,R.useState)(0),[p,m]=(0,R.useState)(null),[_,v]=(0,R.useState)({width:240,height:120}),{nodes:y,edges:b}=(0,R.useMemo)(()=>De(Y,Oe(e.map(e=>({id:e.id,label:e.name,icon:e.icon,emoji:e.emoji,category:e.category??`system`,description:e.description,kind:`skill`}))),90),[e]),x=(0,R.useMemo)(()=>{let e=new Map;for(let t of y)e.set(t.id,t);return e},[y]),S=(0,R.useMemo)(()=>{if(p==null)return null;let e=x.get(p);return e?vt(e)??null:null},[p,x]),C=(0,R.useCallback)(()=>{m(null)},[]),w=St(l,y,x,C),T=e.length;(0,R.useEffect)(()=>{let e=!1,t=t=>{e||f(t)};t(0);let n=[setTimeout(()=>t(1),100),setTimeout(()=>t(2),300),setTimeout(()=>t(3),500),setTimeout(()=>t(4),700)];return()=>{e=!0,n.forEach(clearTimeout)}},[T]);let E=(0,R.useCallback)(e=>{m(t=>t===e?null:e)},[]),D=(0,R.useCallback)(()=>{!S||S.kind!==`skill`||(C(),c?.(S.id))},[C,c,S]);(0,R.useEffect)(()=>{if(p==null)return;let e=e=>{e.key===`Escape`&&C()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[C,p]),(0,R.useLayoutEffect)(()=>{if(S==null)return;let e=u.current;if(!e)return;let t=e.getBoundingClientRect();v({width:t.width,height:t.height})},[S]);let O={x:w.viewSize.width/2,y:w.viewSize.height/2},k=O.x-Y.x*w.zoom+w.pan.x,A=O.y-Y.y*w.zoom+w.pan.y,j=p==null?void 0:x.get(p),M=0,N=0;if(S!=null&&j){let e=k+j.x*w.zoom,t=A+j.y*w.zoom,n=e,r=t-60,i=_.width/2,a=_.height/2,o=i+8,s=Math.max(o,w.viewSize.width-i-8),c=a+8,l=Math.max(c,w.viewSize.height-a-8);M=Math.min(Math.max(n,o),s),N=Math.min(Math.max(r,c),l)}let I=(0,R.useCallback)(e=>{C(),w.zoomToNode(e)},[C,w]);return(0,z.jsxs)(`div`,{ref:l,className:`relative select-none overflow-hidden rounded-xl ${a??``}`,style:{backgroundColor:`var(--surface-base)`,backgroundImage:`radial-gradient(circle, color-mix(in srgb, var(--content-tertiary) 20%, transparent) 1px, transparent 1px)`,backgroundSize:`24px 24px`,backgroundPosition:`12px 12px`,touchAction:`none`,cursor:w.isDragging?`grabbing`:`grab`,userSelect:`none`,WebkitUserSelect:`none`},onPointerDown:w.handlePointerDown,onPointerMove:w.handlePointerMove,onPointerUp:w.handlePointerUp,onPointerCancel:w.handlePointerUp,children:[(0,z.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0`,style:{background:`radial-gradient(circle at center, color-mix(in srgb, var(--content-tertiary) 6%, transparent), transparent 60%)`}}),(0,z.jsxs)(`div`,{className:`absolute inset-0`,style:{transform:`translate(${k}px, ${A}px) scale(${w.zoom})`,transformOrigin:`0 0`,transition:w.isAnimating?`transform 0.4s cubic-bezier(0.22, 1, 0.36, 1)`:`none`},children:[(0,z.jsx)(dt,{edges:b,nodeById:x,visible:d>=2}),y.map((e,i)=>(0,z.jsx)(xt,{node:e,index:i,phase:d,components:t,traits:n,customImageUrl:r,isSelected:p===e.id||w.zoomedNodeId===e.id,onSingleClick:()=>E(e.id),onDoubleClick:()=>I(e.id)},e.id))]}),s&&(0,z.jsx)(`div`,{className:`absolute left-4 top-4`,"data-constellation-control":!0,children:(0,z.jsx)(i,{variant:`ghost`,iconOnly:o?(0,z.jsx)(g,{}):(0,z.jsx)(h,{}),onClick:s,"aria-label":o?`Exit fullscreen`:`Enter fullscreen`,tooltip:o?`Exit fullscreen`:`Enter fullscreen`})}),(0,z.jsx)(ft,{visible:d>=4}),(0,z.jsx)(F,{children:S==null?null:(0,z.jsx)(P.div,{ref:u,className:`pointer-events-auto absolute z-20`,"data-constellation-popover":!0,style:{left:M,top:N,transform:`translate(-50%, -50%)`},initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.15,ease:`easeOut`},onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,z.jsx)(pt,{item:S,color:H(S.category).color,onViewDetails:c&&S.kind===`skill`?D:void 0})},`constellation-popover`)}),(0,z.jsxs)(`div`,{"data-constellation-control":!0,className:`absolute bottom-4 right-4 flex items-center gap-1`,children:[(0,z.jsx)(i,{variant:`ghost`,iconOnly:(0,z.jsx)(oe,{}),onClick:w.zoomIn,"aria-label":`Zoom in`,tooltip:`Zoom in`}),(0,z.jsx)(i,{variant:`ghost`,iconOnly:(0,z.jsx)(ue,{}),onClick:w.zoomOut,"aria-label":`Zoom out`,tooltip:`Zoom out`}),(0,z.jsx)(i,{variant:`ghost`,iconOnly:(0,z.jsx)(ee,{}),onClick:w.fitAll,"aria-label":`Fit all`,tooltip:`Fit all`})]})]})}function wt({assistantName:e,assistantPersonality:t,assistantRole:n,hatchedDate:r,components:a,traits:o,customImageUrl:s,onOpenThread:c,onOpenModal:l}){return(0,z.jsxs)(`div`,{className:`w-full overflow-hidden rounded-xl`,style:{backgroundColor:`var(--surface-lift)`},children:[(0,z.jsxs)(`div`,{className:`relative p-6 pb-0`,children:[(0,z.jsx)(`div`,{className:`pr-8 text-center`,children:(0,z.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e})}),(0,z.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,z.jsx)(_,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your name`),disabled:!c,"aria-label":`Edit identity`,title:`Edit Name`,className:`absolute right-6 top-6`,tintColor:`var(--content-tertiary)`})]}),(0,z.jsx)(`div`,{className:`flex justify-center py-6`,children:(0,z.jsx)(I,{components:a,traits:o,customImageUrl:s,size:200,interactive:!0})}),(0,z.jsx)(`div`,{className:`flex justify-center pb-6`,children:(0,z.jsx)(i,{type:`button`,variant:`outlined`,size:`regular`,onClick:l,className:`!rounded-full`,children:`Update Avatar`})}),(0,z.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Role`}),(0,z.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:n})]}),(0,z.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,z.jsx)(_,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your role description`),disabled:!c,"aria-label":`Edit role`,title:`Edit Role`,tintColor:`var(--content-tertiary)`})]}),(0,z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Personality`}),(0,z.jsx)(`p`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},title:t||`Not set`,children:t||`Not set`})]}),(0,z.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,z.jsx)(_,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your personality`),disabled:!c,"aria-label":`Edit personality`,title:`Edit Personality`,tintColor:`var(--content-tertiary)`})]}),(0,z.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Hatched`}),(0,z.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:r})]})]})}function Tt({assistantId:e,onOpenThread:n}){let{components:r,traits:i,customImageUrl:a,isLoading:s,invalidate:c}=se(e),[l,u]=(0,R.useState)(null),[d,p]=(0,R.useState)(null),[m,h]=(0,R.useState)(null),[g,_]=(0,R.useState)(!1),[v,y]=(0,R.useState)(!1),b=o(Fe(e)),x=b.data?.kind===`unsupported`||b.isError,S=o({...w({path:{assistant_id:e},query:{kind:`installed`}}),select:e=>e.skills,enabled:!!e});(0,R.useEffect)(()=>{let n=!1;return Promise.all([f(e),O(e).catch(()=>({ok:!1,status:0,error:{}}))]).then(([t,r])=>{n||(u(t),r.ok?p(r.data.created):p(null),h(e))}).catch(e=>{n||t(e,{context:`identity_tab_load`})}),()=>{n=!0}},[e]);let C=m!==e||s,T=(0,R.useCallback)(()=>{c()},[c]),E=(0,R.useCallback)(()=>{_(!0)},[]),D=(0,R.useCallback)(()=>{_(!1)},[]),k=(0,R.useCallback)(()=>{n?.(`I'd like to create a custom AI-generated avatar.`)},[n]);if(C)return(0,z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,z.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})});let A=l?.name||`Assistant`,j=l?.personality||``,M=l?.role||`Not set`,N=d?new Date(d).toLocaleDateString(`en-GB`,{day:`numeric`,month:`short`,year:`numeric`}):`Unknown`;return(0,z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-6 lg:flex-row lg:items-stretch`,children:[(0,z.jsx)(`div`,{className:`mx-auto w-full max-w-md lg:mx-0 lg:h-full lg:shrink-0 lg:overflow-y-auto ${v?`hidden`:`flex`}`,children:(0,z.jsx)(wt,{assistantName:A,assistantPersonality:j,assistantRole:M,hatchedDate:N,components:r,traits:i,customImageUrl:a,onOpenThread:n,onOpenModal:E})}),(0,z.jsx)(`div`,{className:`min-h-[480px] min-w-0 flex-1 lg:min-h-0`,children:x?(0,z.jsx)(Ct,{skills:S.data??[],components:r,traits:i,customImageUrl:a,className:`h-full w-full`,isFullscreen:v,onToggleFullscreen:()=>y(e=>!e)}):(0,z.jsx)(ut,{assistantId:e,className:`h-full w-full`,isFullscreen:v,onToggleFullscreen:()=>y(e=>!e)})}),(0,z.jsx)(he,{open:g,onClose:D,assistantId:e,components:r,traits:i,customImageUrl:a,onSaveCharacter:T,onUploadImage:T,onGenerateWithAI:n?k:void 0})]})}function Et({onOpenThread:e}){return(0,z.jsx)(Tt,{assistantId:fe(),onOpenThread:e})}function Dt(){let e=a();return(0,z.jsx)(Et,{onOpenThread:t=>{j.getState().setMainView(`chat`);let n=M();A.getState().setActiveConversationId(n),e(`${k.conversation(n)}?prompt=${encodeURIComponent(t)}`)}},fe())}export{Dt as IdentityPageRoute};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,t as n}from"./local-settings-lVNyIOJ_.js";import{t as r}from"./react-DJZBPgpf.js";import{F as i,t as a}from"./button-amTXFI-2.js";import{h as o,r as s}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as c}from"./QueryClientProvider-DKhXIxGb.js";import{t as l}from"./useQuery-B45lW1Kk.js";import{t as u}from"./useMutation-Lj4VunQV.js";import{t as d}from"./jsx-runtime-CVSDxk6A.js";import{t as f}from"./card-Bv5O5juh.js";import{t as p}from"./createLucideIcon-IRfcSUxS.js";import{t as m}from"./arrow-left-DI9551VI.js";import{t as h}from"./check-DFNrQERi.js";import{t as g}from"./cloud-off-Db1nySkc.js";import{t as _}from"./download-CAuK-nZ6.js";import{t as v}from"./external-link-Dqpx9nRm.js";import{i as y,n as b,r as x,t as S}from"./use-skill-categories-i_9x26zg.js";import{t as C}from"./globe-4qSOWE2N.js";import{t as w}from"./hard-drive-rDxhoRUm.js";import{t as T}from"./loader-circle-Cz7opInR.js";import{t as E}from"./sparkles-PGiR5v1g.js";import{t as D}from"./triangle-alert-Z0Gq0IuB.js";import{t as ee}from"./x-CkSVp1Ok.js";import"./src-B2IjVySQ.js";import{t as O}from"./tag-CV4v7fRF.js";import{t as k}from"./popover-CFL4WZTr.js";import{t as A}from"./input-CoUmPnRU.js";import{t as j}from"./toggle-CDfguvUz.js";import{n as M,t as N}from"./panel-item-CouW2A55.js";import{n as P}from"./toast-xTp-xwYL.js";import{t as F}from"./confirm-dialog-CSkhRFRk.js";import{t as I}from"./file-markdown-BXUvAQ24.js";import{Fn as te,Mn as L,Nn as ne,Rn as re}from"./sdk.gen-BwnFjFcp.js";import{at as ie,ct as ae,in as oe,nn as se,rn as ce,rt as le,st as R}from"./react-query.gen-C6wVk6Rw.js";import{t as ue}from"./assistant-identity-store-CX03CK8q.js";import{n as de}from"./utils-xg2dl_KJ.js";import{c as fe}from"./routes-BbeIx_F9.js";import{t as z}from"./misc-BYQPh7vS.js";import{Da as B,Ea as V,Fi as H,Ii as U,Na as W,ji as pe,mr as me,ta as G,vr as he,xt as ge,yi as _e}from"./index-CSefSVJO.js";import{t as ve}from"./use-active-assistant-id-BNRMo_Mi.js";import{t as ye}from"./plugins-surface-C7NU-_rg.js";var K=p(`power-off`,[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`,key:`dxknvb`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`,key:`1x7qb5`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),q=e(r(),1),J=d(),be={sm:`h-7 w-7`,md:`h-8 w-8 text-3xl`};function Y({external:e=!1,icon:t,iconSrc:n,size:r=`sm`,className:i}){let[a,o]=(0,q.useState)(!1);(0,q.useEffect)(()=>{o(!1)},[n]);let s=t||(e?`📦`:`🧩`),c=!!n&&!a;return(0,J.jsx)(`span`,{className:z(`flex shrink-0 items-center justify-center`,be[r],i),children:c?(0,J.jsx)(`img`,{src:n,alt:``,"aria-hidden":!0,loading:`lazy`,className:`h-full w-full object-contain`,onError:()=>o(!0)}):s})}var xe=e=>`Remove "${e}" from this assistant?`,Se=e=>`"${e}" has local edits that will be overwritten by the upgrade. Continue?`,Ce=`Upgrade anyway`,we=`Failed to install plugin. Please try again.`,Te=`Failed to remove plugin. Please try again.`,Ee=`Failed to upgrade plugin. Please try again.`,De=`Failed to update plugin. Please try again.`;function Oe(e,t){let n=e.map(e=>({name:e.name,description:e.description??void 0,status:`installed`,external:void 0,version:e.version??void 0,path:e.path,issues:e.issues,enabled:e.enabled,icon:e.icon,hasIcon:e.hasIcon,iconVersion:e.iconVersion})),r=new Set(n.map(e=>e.name)),i=t.filter(e=>!r.has(e.name)).map(e=>({name:e.name,description:e.description,status:`available`,external:!0,path:e.path}));return[...n,...i]}function ke(e,t){let n=t.trim().toLowerCase();return n?[e.name,e.description].some(e=>e?.toLowerCase().includes(n)):!0}function Ae(e){return[...e].sort((e,t)=>{let n=e.status===`installed`;return n===(t.status===`installed`)?e.name.localeCompare(t.name,void 0,{sensitivity:`base`}):n?-1:1})}function je(e,t){switch(t){case`all`:return e;case`available`:return e.filter(e=>e.status===`available`);case`installed`:return e.filter(e=>e.status===`installed`);case`active`:return e.filter(e=>e.status===`installed`&&e.enabled!==!1);case`off`:return e.filter(e=>e.status===`installed`&&e.enabled===!1)}}function X(e){return e?e.slice(0,7):`unknown`}function Z({plugin:e,surfaces:t=null,className:n}){let r=[{label:`Source`,value:e.source?.kind===`github`?e.source.repo:`Local`,href:(e.source?.kind===`github`?`https://github.com/${e.source.repo}`:null)??void 0}];return e.homepage&&r.push({label:`Homepage`,value:e.homepage,href:e.homepage}),e.license&&r.push({label:`License`,value:e.license}),t&&(t.skills.length>0&&r.push({label:`Skills`,value:String(t.skills.length)}),t.hooks.length>0&&r.push({label:`Hooks`,value:String(t.hooks.length)}),t.tools.length>0&&r.push({label:`Tools`,value:String(t.tools.length)})),(0,J.jsx)(`dl`,{className:z(`mb-5 grid gap-x-6 gap-y-2 border-b pb-5 sm:grid-cols-[max-content_1fr]`,n),style:{borderColor:`var(--border-base)`},children:r.map(e=>(0,J.jsxs)(`div`,{className:`contents`,children:[(0,J.jsx)(`dt`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:e.label}),(0,J.jsx)(`dd`,{className:`min-w-0 truncate text-body-small-default`,style:{color:`var(--content-secondary)`},children:e.href?(0,J.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 underline`,style:{color:`var(--primary-base, #60a5fa)`},children:[e.value,(0,J.jsx)(v,{className:`h-3 w-3`,"aria-hidden":!0})]}):e.value})]},e.label))})}function Q({plugin:e,drift:t,onInstall:n,onRemove:r,onUpgrade:i,isInstalling:o,isRemoving:s,isUpgrading:c,hasLocalEdits:l,enabled:u,onToggle:d,isToggling:f}){let[p,m]=(0,q.useState)(!1),[h,g]=(0,q.useState)(!1),v=e.installed??!1,y=e.artifact??null,b=t?.status===`update-available`,x=b?`Upgrade ${X(t?.local?.commit??null)} → ${X(t?.remote?.commit??null)}`:void 0;return(0,J.jsxs)(J.Fragment,{children:[v?(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 md:flex-nowrap md:shrink-0`,children:[u!==void 0&&d?(0,J.jsx)(j,{label:`Auto-include in chat`,checked:u,onChange:()=>d(),disabled:f}):null,y?(0,J.jsx)(a,{asChild:!0,leftIcon:(0,J.jsx)(_,{"aria-hidden":!0}),children:(0,J.jsx)(`a`,{href:y.url,download:!0,children:y.label??`Download`})}):null,b?(0,J.jsx)(a,{type:`button`,onClick:()=>{if(l){g(!0);return}i()},disabled:c,title:x,leftIcon:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(B,{"aria-hidden":!0}),children:`Upgrade`}):null,(0,J.jsx)(a,{type:`button`,variant:`dangerOutline`,onClick:()=>m(!0),disabled:s,leftIcon:s?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(_e,{"aria-hidden":!0}),children:`Remove`})]}):(0,J.jsx)(a,{type:`button`,onClick:n,disabled:o,leftIcon:o?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(W,{"aria-hidden":!0}),children:`Install`}),(0,J.jsx)(F,{open:p,title:`Remove plugin`,message:xe(e.name),confirmLabel:`Remove`,destructive:!0,onConfirm:()=>{m(!1),r()},onCancel:()=>m(!1)}),(0,J.jsx)(F,{open:h,title:`Upgrade plugin`,message:Se(e.name),confirmLabel:Ce,destructive:!0,onConfirm:()=>{g(!1),i()},onCancel:()=>g(!1)})]})}function Me(){return(0,J.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,J.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})})}function Ne(){return(0,J.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 py-12 text-center`,style:{color:`var(--content-tertiary)`},children:[(0,J.jsx)(D,{className:`h-6 w-6`,"aria-hidden":!0}),(0,J.jsx)(`p`,{className:`text-body-medium-default`,children:`We couldn't load this plugin.`}),(0,J.jsx)(`p`,{className:`text-body-small-default`,children:`It may not exist, or your assistant may be on an older build.`})]})}function Pe({isInstallError:e,isRemoveError:t,isUpgradeError:n}){let r=e?we:t?Te:n?Ee:null;return r?(0,J.jsxs)(`div`,{className:`mb-3 flex items-center gap-2 rounded px-3 py-2 text-body-small-default`,style:{backgroundColor:`var(--surface-secondary)`,color:`var(--content-warning, var(--content-tertiary))`},role:`alert`,children:[(0,J.jsx)(D,{className:`h-4 w-4 shrink-0`,"aria-hidden":!0}),r]}):null}function Fe({external:e,className:t}){let n=e?{label:`External`,icon:C}:{label:`Local`,icon:w};return(0,J.jsx)(O,{tone:`neutral`,leftIcon:(0,q.createElement)(n.icon),className:t,children:n.label})}function Ie({onClick:e,isUpgrading:t=!1}={}){let n=(0,J.jsx)(O,{tone:`warning`,leftIcon:(0,q.createElement)(t?T:B,{className:t?`animate-spin`:void 0}),className:`shrink-0`,children:`Update available`});return e?(0,J.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),e()},disabled:t,"aria-label":`Upgrade plugin`,className:`shrink-0 rounded-[6px] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:cursor-not-allowed`,children:n}):n}var Le=300*1e3;function Re({assistantId:e,name:t,enabled:n=!0}){return l({...ie({path:{assistant_id:e,name:t}}),enabled:!!e&&!!t&&n,staleTime:Le,retry:!1})}function ze(e){let t=e?.local?.localChanges;return!!t&&t?.clean===!1}function Be(e,t,n){let r=c(),i=n?.onRemoved,a=l({...le({path:{assistant_id:e,name:t}}),enabled:!!e&&!!t}),o=Re({assistantId:e,name:t,enabled:a.data?.installed??!1}).data,s=(0,q.useCallback)(()=>me(r,e,t),[e,t,r]),u=oe({onSuccess:()=>{s(),P.success(`Installed ${t||`plugin`}`)}}),d=se({onSuccess:()=>{s(),i?.()}}),f=ce({onSuccess:e=>{s(),P.success(e.outcome===`already-up-to-date`?`${t||`Plugin`} is already up to date`:`Upgraded ${t||`plugin`} to ${X(e.toCommit)}`)}});return{plugin:a.data??null,drift:o,isLoading:a.isLoading,isError:a.isError,install:()=>{u.mutate({path:{assistant_id:e},body:{name:t}})},remove:()=>{d.mutate({path:{assistant_id:e,name:t}})},upgrade:()=>{f.mutate({path:{assistant_id:e,name:t},body:{}})},isInstalling:u.isPending,isRemoving:d.isPending,isUpgrading:f.isPending,isInstallError:u.isError,isRemoveError:d.isError,isUpgradeError:f.isError,hasLocalEdits:ze(o)}}var Ve=`0.10.5`;function He(){return de(Ve)}function Ue(e,t,n,r){let i=He(),{data:a}=l({queryKey:[`pluginIcon`,e,t,r],queryFn:async()=>{let{data:n,error:r}=await te({path:{assistant_id:e,name:t},parseAs:`blob`,throwOnError:!1});if(r||!(n instanceof Blob))throw Error(`Failed to load plugin icon`);return n},enabled:!!(i&&n&&r),staleTime:1/0,retry:!1}),[o,s]=(0,q.useState)(void 0);return(0,q.useEffect)(()=>{if(!a){s(void 0);return}let e=URL.createObjectURL(a);return s(e),()=>{URL.revokeObjectURL(e)}},[a]),o}function We(e){let t=c(),n={queryKey:R({path:{assistant_id:e}})},r=(e,r)=>{t.setQueriesData(n,t=>t&&{...t,plugins:t.plugins.map(t=>t.name===e?{...t,enabled:r}:t)})},i=u({mutationFn:async({name:t,nextEnabled:n})=>{let r=await(n?ne({path:{assistant_id:e,name:t},throwOnError:!1}):L({path:{assistant_id:e,name:t},throwOnError:!1})),i=r.response?.status;if(r.response?.ok||i===409)return r;throw Error(`Plugin toggle failed (${i??`network error`})`)},onMutate:async({name:e,nextEnabled:i})=>{await t.cancelQueries(n),r(e,i)},onError:(e,{name:t,nextEnabled:n})=>{r(t,!n),P.error(De)},onSettled:(n,r,i)=>{me(t,e,i.name)}});return{toggle:(e,t)=>{i.mutate({name:e,nextEnabled:t})},togglingName:i.isPending?i.variables?.name??null:null}}function Ge({assistantId:e,name:t,onBack:n,externalHint:r,enabled:i}){let{plugin:o,drift:s,isLoading:c,isError:l,install:u,remove:d,upgrade:p,isInstalling:h,isRemoving:g,isUpgrading:_,isInstallError:v,isRemoveError:y,isUpgradeError:b,hasLocalEdits:x}=Be(e,t,{onRemoved:n}),{toggle:S,togglingName:C}=We(e),w=Ue(e,t,o?.hasIcon,o?.iconVersion);return(0,J.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col`,children:[(0,J.jsxs)(`div`,{className:`mb-4 flex items-start gap-3`,children:[(0,J.jsx)(a,{type:`button`,variant:`ghost`,iconOnly:(0,J.jsx)(m,{"aria-hidden":!0}),"aria-label":`Back to plugins`,onClick:n}),(0,J.jsx)(Ke,{name:t,plugin:o,externalHint:r,iconSrc:w,drift:s,onInstall:u,onRemove:d,onUpgrade:p,isInstalling:h,isRemoving:g,isUpgrading:_,hasLocalEdits:x,enabled:i,onToggle:()=>S(t,!i),isToggling:C===t})]}),(v||y||b)&&(0,J.jsx)(Pe,{isInstallError:v,isRemoveError:y,isUpgradeError:b}),(0,J.jsx)(f.Root,{asChild:!0,children:(0,J.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-5`,children:c?(0,J.jsx)(Me,{}):l||!o?(0,J.jsx)(Ne,{}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Z,{plugin:o,surfaces:s?.surfaces??null}),o.readme?(0,J.jsx)(I,{content:o.readme}):(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`This plugin doesn't ship a README.`})]})})})]})}function Ke({name:e,plugin:t,externalHint:n,iconSrc:r,drift:i,onInstall:a,onRemove:o,onUpgrade:s,isInstalling:c,isRemoving:l,isUpgrading:u,hasLocalEdits:d,enabled:f,onToggle:p,isToggling:m}){let h=t?.source?.kind===`github`,g=t?h:n,_=i?.status===`update-available`;return(0,J.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-3 sm:flex-row sm:items-center`,children:[(0,J.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3`,children:[g===void 0?(0,J.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0`}):(0,J.jsx)(Y,{external:g,icon:t?.icon??void 0,iconSrc:r,size:`md`}),(0,J.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,J.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:t?.name??e}),t?.version?(0,J.jsxs)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:[`v`,t.version]}):null,t?(0,J.jsx)(Fe,{external:h}):null,_?(0,J.jsx)(Ie,{}):null]}),t?.description?(0,J.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-body-medium-lighter`,style:{color:`var(--content-secondary)`},children:t.description}):null]})]}),t?(0,J.jsx)(Q,{plugin:t,drift:i,onInstall:a,onRemove:o,onUpgrade:s,isInstalling:c,isRemoving:l,isUpgrading:u,hasLocalEdits:d,enabled:f,onToggle:p,isToggling:m}):null]})}var qe=e(i(),1);function Je({assistantId:e,name:t,onBack:n,externalHint:r,enabled:i}){let{plugin:o,drift:s,isLoading:c,isError:l,install:u,remove:d,upgrade:p,isInstalling:h,isRemoving:g,isUpgrading:_,isInstallError:v,isRemoveError:y,isUpgradeError:b,hasLocalEdits:x}=Be(e,t,{onRemoved:n}),{toggle:S,togglingName:C}=We(e),[w,T]=(0,q.useState)(null);(0,q.useEffect)(()=>{T(document.getElementById(`viewport-overlays`))},[]);let E=o?.source?.kind===`github`,D=o?E:r,ee=s?.status===`update-available`,O=o?.name??t,k=Ue(e,t,o?.hasIcon,o?.iconVersion),A=(0,J.jsxs)(`div`,{className:`fixed inset-0 z-40 flex flex-col overflow-hidden bg-[var(--surface-overlay)]`,style:{paddingTop:`calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px)))`,paddingBottom:`calc(8px + var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)))`,paddingLeft:`calc(12px + var(--safe-area-inset-left, env(safe-area-inset-left, 0px)))`,paddingRight:`calc(12px + var(--safe-area-inset-right, env(safe-area-inset-right, 0px)))`},children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(a,{variant:`ghost`,iconOnly:(0,J.jsx)(m,{"aria-hidden":!0}),expandOnMobile:!0,"aria-label":`Back to plugins`,onClick:n,className:`max-md:bg-[var(--surface-active)]`}),(0,J.jsx)(`span`,{className:`min-w-0 flex-1 truncate px-2 text-center text-body-medium-default`,style:{color:`var(--content-secondary)`},children:O}),(0,J.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0 touch-mobile:h-10 touch-mobile:w-10`})]}),(0,J.jsxs)(`div`,{className:`mt-4 flex flex-col gap-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,J.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[D===void 0?(0,J.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0`}):(0,J.jsx)(Y,{external:D,icon:o?.icon??void 0,iconSrc:k,size:`md`}),(0,J.jsx)(`h2`,{className:`min-w-0 truncate text-title-medium`,style:{color:`var(--content-emphasised)`},children:O})]}),(0,J.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[ee?(0,J.jsx)(Ie,{}):null,o?(0,J.jsx)(Fe,{external:E}):null]})]}),o?.description?(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:o.description}):null]}),o?(0,J.jsx)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:(0,J.jsx)(Q,{plugin:o,drift:s,enabled:i,onToggle:()=>S(t,!i),isToggling:C===t,onInstall:u,onRemove:d,onUpgrade:p,isInstalling:h,isRemoving:g,isUpgrading:_,hasLocalEdits:x})}):null,(v||y||b)&&(0,J.jsx)(`div`,{className:`mt-3`,children:(0,J.jsx)(Pe,{isInstallError:v,isRemoveError:y,isUpgradeError:b})}),(0,J.jsx)(f.Root,{asChild:!0,noPadding:!0,children:(0,J.jsx)(`div`,{className:`mt-6 flex min-h-0 flex-1 flex-col overflow-hidden rounded-2xl border bg-[var(--surface-lift)]`,style:{borderColor:`var(--border-hover)`},children:(0,J.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4`,children:c?(0,J.jsx)(Me,{}):l||!o?(0,J.jsx)(Ne,{}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Z,{plugin:o,surfaces:s?.surfaces??null}),o.readme?(0,J.jsx)(I,{content:o.readme}):(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`This plugin doesn't ship a README.`})]})})})})]});return w?(0,qe.createPortal)(A,w):A}var Ye={value:`all`,label:`All`,icon:G},Xe={value:`available`,label:`Available`,icon:W};function Ze(e){return e?[Ye,{value:`active`,label:`Active`,icon:U},{value:`off`,label:`Off`,icon:K},Xe]:[Ye,{value:`installed`,label:`Installed`,icon:V},Xe]}function Qe({search:e,onSearchChange:t,filter:n,onFilterChange:r,isSearching:i=!1,categories:a,category:o,onCategoryChange:s,counts:c,totalCount:l,showCounts:u,pluginToggleSupported:d}){return(0,J.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,J.jsx)(A,{type:`search`,value:e,onChange:e=>{t(e.target.value)},placeholder:`Search plugins`,"aria-label":`Search plugins`,leftIcon:(0,J.jsx)(pe,{className:`h-4 w-4`,"aria-hidden":!0}),rightIcon:i?(0,J.jsx)(T,{className:`h-4 w-4 animate-spin`,"aria-hidden":!0}):void 0,fullWidth:!0,wrapperClassName:`flex-1`}),(0,J.jsx)($e,{filter:n,onFilterChange:r,categories:a,category:o,onCategoryChange:s,counts:c,totalCount:l,showCounts:u,pluginToggleSupported:d})]})}function $e(e){let t=he(),[n,r]=(0,q.useState)(!1),i=(0,J.jsx)(a,{type:`button`,variant:`outlined`,iconOnly:(0,J.jsx)(y,{"aria-hidden":!0}),"aria-label":`Filter plugins`,"aria-haspopup":t?`dialog`:`listbox`,"aria-expanded":n,tintColor:`var(--primary-base)`});return t?(0,J.jsx)(et,{...e,open:n,onOpenChange:r,trigger:i}):(0,J.jsxs)(k.Root,{open:n,onOpenChange:r,children:[(0,J.jsx)(k.Trigger,{asChild:!0,children:i}),(0,J.jsx)(k.Content,{align:`end`,sideOffset:4,className:`w-44 overflow-hidden p-0`,children:(0,J.jsx)(`ul`,{role:`listbox`,children:(0,J.jsx)(rt,{label:`Status`,options:Ze(e.pluginToggleSupported),selected:e.filter,onSelect:t=>{e.onFilterChange(t),r(!1)}})})})]})}function et({filter:e,onFilterChange:t,categories:n,category:r,onCategoryChange:i,counts:o,totalCount:s,showCounts:c,pluginToggleSupported:l,open:u,onOpenChange:d,trigger:f}){let p=[...n].sort((e,t)=>e.label.localeCompare(t.label));return(0,J.jsxs)(M.Root,{open:u,onOpenChange:d,children:[(0,J.jsx)(M.Trigger,{asChild:!0,children:f}),(0,J.jsxs)(M.Content,{className:`max-h-[85dvh]`,"aria-describedby":void 0,children:[(0,J.jsx)(`div`,{"aria-hidden":!0,className:`mx-auto mb-3 h-1 w-9 shrink-0 rounded-full bg-[var(--border-element)]`}),(0,J.jsx)(M.Header,{children:(0,J.jsx)(M.Title,{children:`Filters`})}),(0,J.jsxs)(M.Body,{className:`flex flex-col gap-3 pt-2`,children:[(0,J.jsx)(tt,{label:`Status`,children:Ze(l).map(n=>(0,J.jsx)(nt,{icon:n.icon,label:n.label,active:e===n.value,onSelect:()=>t(n.value)},n.value))}),n.length>0&&(0,J.jsxs)(tt,{label:`Categories`,children:[(0,J.jsx)(nt,{icon:G,label:`All`,active:r===null,badge:c?s:void 0,onSelect:()=>i(null)}),p.map(e=>(0,J.jsx)(nt,{icon:x(e.icon)??G,label:e.label,active:r===e.slug,badge:c?o[e.slug]??0:void 0,onSelect:()=>i(e.slug)},e.slug))]})]}),(0,J.jsx)(M.Footer,{children:(0,J.jsx)(a,{type:`button`,variant:`primary`,fullWidth:!0,onClick:()=>d(!1),children:`Done`})})]})]})}function tt({label:e,children:t}){return(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`div`,{className:`px-2 pb-1 text-body-small-default uppercase tracking-wide`,style:{color:`var(--content-tertiary)`},children:e}),t]})}function nt({icon:e,label:t,active:n,badge:r,onSelect:i}){return(0,J.jsx)(N,{icon:e,label:t,active:n,activeVariant:`branded`,badge:r,trailingAction:n&&r==null?(0,J.jsx)(h,{className:`h-4 w-4 text-[var(--primary-base)]`,"aria-hidden":!0}):void 0,onSelect:i})}function rt({label:e,options:t,selected:n,onSelect:r}){return(0,J.jsxs)(`li`,{children:[(0,J.jsx)(`div`,{className:`px-3 pb-1 pt-2 text-body-small-default uppercase tracking-wide`,style:{color:`var(--content-tertiary)`},children:e}),(0,J.jsx)(`ul`,{children:t.map(e=>{let t=e.icon,i=n===e.value;return(0,J.jsx)(`li`,{children:(0,J.jsxs)(`button`,{type:`button`,onClick:()=>r(e.value),role:`option`,"aria-selected":i,className:`flex w-full items-center gap-2 px-3 py-1.5 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{color:i?`var(--primary-base)`:`var(--content-default)`},children:[(0,J.jsx)(t,{className:`h-4 w-4`,"aria-hidden":!0}),(0,J.jsx)(`span`,{className:`flex-1`,children:e.label}),i&&(0,J.jsx)(V,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]})},e.value)})})]})}function it({assistantId:e,item:t,drift:n,onSelect:r,onInstall:i,onRemove:o,onUpgrade:s,isInstalling:c=!1,isRemoving:l=!1,isUpgrading:u=!1}){let d=t.status===`available`,p=n?.status===`update-available`,m=t.enabled!==void 0,h=t.enabled===!1,g=Ue(e,t.name,t.hasIcon,t.iconVersion);return(0,J.jsx)(f.Root,{asChild:!0,children:(0,J.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:r,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),r())},className:`flex cursor-pointer items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-[var(--surface-hover)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,J.jsx)(Y,{size:`sm`,external:t.external,icon:t.icon,iconSrc:g,className:h?`opacity-50`:void 0}),(0,J.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:h?`var(--content-tertiary)`:`var(--content-emphasised)`},children:t.name}),t.version?(0,J.jsxs)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:[`v`,t.version]}):null,p?(0,J.jsx)(Ie,{onClick:s,isUpgrading:u}):null]}),(0,J.jsx)(`p`,{className:`mt-1 truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.description??`No description provided.`}),t.issues&&t.issues.length>0?(0,J.jsxs)(`p`,{className:`mt-1 truncate text-body-small-default`,style:{color:`var(--content-warning, var(--content-tertiary))`},title:t.issues.join(`; `),children:[t.issues[0],t.issues.length>1?` (+${t.issues.length-1} more)`:``]}):null]}),d?c?(0,J.jsx)(a,{type:`button`,iconOnly:(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}),disabled:!0,"aria-label":`Installing`,expandOnMobile:!1}):(0,J.jsx)(a,{type:`button`,iconOnly:(0,J.jsx)(W,{"aria-hidden":!0}),onClick:e=>{e.stopPropagation(),i?.()},disabled:!i,"aria-label":`Install plugin`,expandOnMobile:!1}):(0,J.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[m?(0,J.jsx)(O,{tone:t.enabled?`positive`:`neutral`,children:t.enabled?`Enabled`:`Disabled`}):null,(0,J.jsx)(a,{type:`button`,variant:`dangerOutline`,iconOnly:l?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(_e,{"aria-hidden":!0}),onClick:e=>{e.stopPropagation(),o?.()},disabled:l||u||!o,"aria-label":`Remove plugin`,expandOnMobile:!1})]})]})})}var at=300*1e3,$=[],ot=[];async function st(e,t,n){let r=await re({path:{assistant_id:e},query:{q:void 0,category:t},signal:n,throwOnError:!1});if(r.response?.status===404)return{plugins:[]};if(!r.response?.ok)throw Error(`Failed to load plugins`);return r.data??{plugins:[]}}function ct(e,t){let[n,r]=(0,q.useState)({assistantId:e,latched:!1}),i=n.assistantId===e?n.latched:!1;return n.assistantId!==e&&r({assistantId:e,latched:!1}),(0,q.useEffect)(()=>{t&&r(t=>t.assistantId===e&&t.latched?t:{assistantId:e,latched:!0})},[e,t]),i||t}function lt(e,t=null){let n=t??void 0,r=l({queryKey:R({path:{assistant_id:e},query:{q:void 0,category:n}}),queryFn:({signal:t})=>st(e,n,t),enabled:!!e,staleTime:at}),i=l({...ge(e),enabled:!!e&&t!==null}),a=l({...ae({path:{assistant_id:e},query:{q:void 0}}),enabled:!!e,staleTime:at}),o=(0,q.useMemo)(()=>{let e=t===null?r.data?.plugins:i.data?.plugins??r.data?.plugins;return new Set((e??$).map(e=>e.name))},[t,i.data?.plugins,r.data?.plugins]),s=(0,q.useMemo)(()=>{let e=r.data?.plugins??$,n=a.data?.matches??ot;return Ae(Oe(e,(t===null?n:n.filter(e=>(e.category??`system`)===t)).filter(e=>!o.has(e.name))))},[r.data?.plugins,a.data?.matches,t,o]),u=t===null?r.data:i.data,d=ct(e,u?.categoryCounts!==void 0),f=ct(e,(u?.plugins??$).some(e=>e.enabled!==void 0)),p=c(),m=(0,q.useRef)(null);return(0,q.useEffect)(()=>{if(m.current===e||!a.isSuccess)return;let t=u?.plugins;if(!t?.length)return;let n=new Map((a.data?.matches??ot).map(e=>[e.name,e.category]));t.some(e=>{let t=n.get(e.name);return t!=null&&t!==`system`&&(e.category??`system`)===`system`})&&(m.current=e,p.invalidateQueries({queryKey:R({path:{assistant_id:e},query:{q:void 0}})}))},[e,a.isSuccess,a.data?.matches,u?.plugins,p]),{items:s,isLoading:r.isLoading,catalogLoading:a.isLoading,isError:r.isError,isFetching:r.isFetching||a.isFetching,catalogError:a.isError,categorySupported:d,pluginToggleSupported:f,installedCategoryCounts:u?.categoryCounts,installedPlugins:u?.plugins??$,installedTotal:u?.totalCount,catalogMatches:a.data?.matches??ot,unfilteredInstalledNames:o}}var ut=`vellum:plugins:tipDismissed`;function dt({assistantId:e}){let r=c(),i=he(),[a,s]=o(),l=a.get(`plugin`),[u,d]=(0,q.useState)(``),[f,p]=(0,q.useState)(`all`),[m,h]=(0,q.useState)(null),[g,_]=(0,q.useState)(null),[v,y]=(0,q.useState)(null),[x,C]=(0,q.useState)(null),[w,T]=(0,q.useState)(null),[E,D]=(0,q.useState)(null),[ee,O]=(0,q.useState)(()=>n(ut,!1)),[k,A]=(0,q.useState)(e);e!==k&&(A(e),h(null));let j=e===k?m:null,{data:M=[]}=S(e),{items:N,isLoading:I,catalogLoading:te,isError:L,isFetching:ne,catalogError:re,categorySupported:ie,pluginToggleSupported:ae,installedCategoryCounts:le,installedPlugins:R,installedTotal:ue,catalogMatches:de,unfilteredInstalledNames:fe}=lt(e,j),z=(ae?[`all`,`active`,`off`,`available`]:[`all`,`installed`,`available`]).includes(f)?f:`all`,{counts:B,totalCount:V}=ft(le,R,ue,de,fe,z),H=ie&&M.length>0,U=(0,q.useCallback)(t=>me(r,e,t),[e,r]),W=oe({onMutate:e=>_(e.body.name),onSuccess:(e,t)=>P.success(`Installed ${t.body.name}`),onError:()=>P.error(we),onSettled:(e,t,n)=>{_(null),U(n.body.name)}}),pe=se({onMutate:e=>y(e.path.name),onSuccess:(e,t)=>P.success(`Removed ${t.path.name}`),onError:()=>P.error(Te),onSettled:(e,t,n)=>{y(null),U(n.path.name)}}),G=ce({onMutate:e=>C(e.path.name),onSuccess:(e,t)=>P.success(e.outcome===`already-up-to-date`?`${t.path.name} is already up to date`:`Upgraded ${t.path.name} to ${X(e.toCommit)}`),onError:()=>P.error(Ee),onSettled:(e,t,n)=>{C(null),U(n.path.name)}}),ge=(0,q.useCallback)(e=>s(t=>{let n=new URLSearchParams(t);return n.set(`plugin`,e.name),n}),[s]),_e=(0,q.useCallback)(()=>s(e=>{let t=new URLSearchParams(e);return t.delete(`plugin`),t},{replace:!0}),[s]),ve=(0,q.useCallback)(t=>{W.mutate({path:{assistant_id:e},body:{name:t.name}})},[e,W]),ye=(0,q.useCallback)(()=>{w&&(pe.mutate({path:{assistant_id:e,name:w.name}}),T(null))},[e,w,pe]),K=(0,q.useCallback)(t=>{G.mutate({path:{assistant_id:e,name:t},body:{}})},[e,G]),be=(0,q.useCallback)(()=>{E&&(K(E.name),D(null))},[E,K]),Y=(0,q.useCallback)((e,t)=>{if(ze(t)){D(e);return}K(e.name)},[K]),De=(0,q.useCallback)(()=>{O(!0),t(ut,!0)},[]),Oe=(0,q.useMemo)(()=>je(N,z).filter(e=>ke(e,u)),[N,z,u]),Ae=ne&&!I,Z=u.trim().length>0;if(l){let t=N.find(e=>e.name===l),n={assistantId:e,name:l,externalHint:t?.external,enabled:t?.enabled,onBack:_e};return i?(0,J.jsx)(Je,{...n}):(0,J.jsx)(Ge,{...n})}let Q=(0,J.jsx)(`div`,{className:`min-w-0 flex-1 overflow-y-auto`,children:I?(0,J.jsx)(gt,{}):L?(0,J.jsx)(_t,{}):Oe.length===0?te&&(z===`all`||z===`available`)?(0,J.jsx)(gt,{}):(0,J.jsx)(vt,{filter:z,category:j}):(0,J.jsx)(`ul`,{className:`flex flex-col gap-2`,children:Oe.map(t=>(0,J.jsx)(`li`,{children:t.status===`installed`?(0,J.jsx)(pt,{assistantId:e,item:t,onSelect:()=>ge(t),onRemove:()=>T(t),onUpgrade:e=>Y(t,e),isRemoving:v===t.name,isUpgrading:x===t.name}):(0,J.jsx)(it,{assistantId:e,item:t,onSelect:()=>ge(t),onInstall:()=>ve(t),isInstalling:g===t.name})},t.name))})});return(0,J.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col gap-4`,children:[!ee&&(0,J.jsx)(mt,{onDismiss:De}),(0,J.jsx)(Qe,{search:u,onSearchChange:d,filter:z,onFilterChange:p,isSearching:Ae,categories:H?M:[],category:j,onCategoryChange:h,counts:B,totalCount:V,showCounts:!Z,pluginToggleSupported:ae}),re&&!I&&!L?(0,J.jsx)(ht,{}):null,H?(0,J.jsxs)(`div`,{className:`flex min-h-0 flex-1 gap-6`,children:[(0,J.jsx)(`aside`,{className:`hidden w-56 shrink-0 overflow-y-auto md:block`,children:(0,J.jsx)(b,{ariaLabel:`Plugin categories`,selected:j,onSelect:h,counts:B,totalCount:V,showCounts:!Z,categories:M})}),Q]}):Q,(0,J.jsx)(F,{open:w!==null,title:`Remove plugin`,message:w?xe(w.name):``,confirmLabel:`Remove`,destructive:!0,onConfirm:ye,onCancel:()=>T(null)}),(0,J.jsx)(F,{open:E!==null,title:`Upgrade plugin`,message:E?Se(E.name):``,confirmLabel:Ce,destructive:!0,onConfirm:be,onCancel:()=>D(null)})]})}function ft(e,t,n,r,i,a){return(0,q.useMemo)(()=>{let o={},s=a!==`available`,c=a===`all`||a===`available`,l=a===`active`||a===`off`,u=l?t.filter(e=>a===`off`?e.enabled===!1:e.enabled!==!1):t;if(s)if(!l&&e&&Object.keys(e).length>0)Object.assign(o,e);else for(let e of u){let t=e.category??`system`;o[t]=(o[t]??0)+1}let d=0;if(c)for(let e of r){if(i.has(e.name))continue;let t=e.category??`system`;o[t]=(o[t]??0)+1,d+=1}let f=l?u.length:n??t.length;return{counts:o,totalCount:(s?f:0)+d}},[e,t,n,r,i,a])}function pt({assistantId:e,item:t,onSelect:n,onRemove:r,onUpgrade:i,isRemoving:a,isUpgrading:o}){let s=Re({assistantId:e,name:t.name}).data;return(0,J.jsx)(it,{assistantId:e,item:t,drift:s,onSelect:n,onRemove:r,onUpgrade:()=>i(s),isRemoving:a,isUpgrading:o})}function mt({onDismiss:e}){return(0,J.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-body-small-default`,style:{backgroundColor:`var(--surface-base)`,color:`var(--content-secondary)`},children:[(0,J.jsx)(E,{className:`h-4 w-4 shrink-0`,style:{color:`var(--primary-base)`}}),(0,J.jsx)(`p`,{className:`flex-1`,children:`Browse the catalog below to install plugins that extend your assistant.`}),(0,J.jsx)(a,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,J.jsx)(ee,{"aria-hidden":!0}),onClick:e,"aria-label":`Dismiss tip`,tintColor:`var(--content-tertiary)`,expandOnMobile:!1})]})}function ht(){return(0,J.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-body-small-default`,style:{backgroundColor:`var(--surface-base)`,color:`var(--content-secondary)`},children:[(0,J.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`},"aria-hidden":!0}),(0,J.jsx)(`p`,{className:`flex-1`,children:`Catalog browsing is temporarily unavailable. Installed plugins are still listed below.`})]})}function gt(){return(0,J.jsx)(`div`,{className:`flex items-center justify-center py-16`,children:(0,J.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})})}function _t(){return(0,J.jsx)(f.Root,{children:(0,J.jsxs)(f.Body,{className:`flex flex-col items-center justify-center py-16 text-center`,children:[(0,J.jsx)(D,{className:`mb-3 h-8 w-8`,style:{color:`var(--system-danger)`},"aria-hidden":!0}),(0,J.jsx)(`h3`,{className:`text-title-small`,style:{color:`var(--content-default)`},children:`Failed to load plugins`}),(0,J.jsx)(`p`,{className:`mt-1 max-w-sm text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Something went wrong. Try refreshing the page.`})]})})}function vt({filter:e,category:t}){let{title:n,subtitle:r,Icon:i}=yt(e,t);return(0,J.jsx)(f.Root,{children:(0,J.jsxs)(f.Body,{className:`flex flex-col items-center justify-center py-16 text-center`,children:[(0,J.jsx)(i,{className:`mb-3 h-8 w-8`,style:{color:`var(--content-tertiary)`},"aria-hidden":!0}),(0,J.jsx)(`h3`,{className:`text-title-small`,style:{color:`var(--content-default)`},children:n}),(0,J.jsx)(`p`,{className:`mt-1 max-w-sm text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:r})]})})}function yt(e,t){if(t)return{title:`No plugins in this category`,subtitle:`Try selecting a different category or clearing the filter.`,Icon:G};switch(e){case`installed`:return{title:`No Plugins Installed`,subtitle:`Browse the catalog to install plugins that extend your assistant.`,Icon:H};case`active`:return{title:`No Active Plugins`,subtitle:`Install a plugin from the catalog, or turn on an installed one.`,Icon:H};case`off`:return{title:`No Plugins Turned Off`,subtitle:`Installed plugins you turn off will appear here.`,Icon:H};case`available`:return{title:`No Plugins Available`,subtitle:`Every catalog plugin is already installed.`,Icon:V};default:return{title:`No Plugins Found`,subtitle:`Browse the catalog to install plugins that extend your assistant.`,Icon:H}}}function bt(){let e=ue.use.version(),t=ye(),n=ve();return e===null?null:t?(0,J.jsx)(dt,{assistantId:n}):(0,J.jsx)(s,{to:fe.identity,replace:!0})}export{bt as PluginsPage};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./check-DFNrQERi.js";import{t as s}from"./modal-D5nLWNN9.js";import{t as c}from"./confirm-dialog-CSkhRFRk.js";import{A as l,F as u,M as d,d as f,lt as ee,rt as te,t as ne}from"./local-mode-grqHUoNh.js";import{t as p}from"./is-electron-y5bNUVyG.js";import{n as m}from"./resolved-assistants-store-BSZbT8Ju.js";import{D as h,O as g,i as _,n as v}from"./auth-store-CD7PGb3q.js";import{c as y}from"./routes-BbeIx_F9.js";import{t as b}from"./use-onboarding-login-Bo_t51AV.js";import{Mn as x,ga as S,jn as C,na as w,rn as T}from"./index-CSefSVJO.js";import{r as E}from"./format-date-BczUbfC1.js";var D=e(t(),1),O=a();function k({open:e,assistantName:t,isPending:r,errorMessage:i,onCancel:a,onRepair:o,onRetire:l}){let[u,d]=(0,D.useState)(`menu`);(0,D.useEffect)(()=>{e&&d(`menu`)},[e]);let f=i?(0,O.jsx)(`span`,{className:`mt-3 block text-body-small-default text-[var(--system-negative-strong)]`,children:i}):null;return u===`confirm-repair`?(0,O.jsx)(c,{open:e,title:`Repair Assistant?`,message:(0,O.jsxs)(O.Fragment,{children:[`Repairing re-provisions this assistant’s authentication token. Any other devices or browser sessions connected to it will be signed out and need to reconnect.`,f]}),confirmLabel:`Repair`,isPending:r,onConfirm:o,onCancel:()=>d(`menu`)}):u===`confirm-retire`?(0,O.jsx)(C,{open:e,isPending:r,extraMessage:f,onConfirm:l,onCancel:()=>d(`menu`)}):(0,O.jsx)(s.Root,{open:e,onOpenChange:e=>{!e&&!r&&a()},children:(0,O.jsxs)(s.Content,{size:`sm`,hideCloseButton:!0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),r||a()},children:[(0,O.jsx)(s.Header,{children:(0,O.jsx)(s.Title,{children:`Can’t Authenticate Assistant`})}),(0,O.jsxs)(s.Body,{children:[(0,O.jsxs)(s.Description,{children:[`The authentication token for `,t,` is missing or can no longer be refreshed, so this assistant can’t be connected. You can repair it, retire it, or pick a different assistant.`]}),f,(0,O.jsxs)(`div`,{className:`mt-5 flex w-full flex-col gap-2`,children:[(0,O.jsx)(n,{variant:`primary`,fullWidth:!0,disabled:r,onClick:()=>d(`confirm-repair`),children:`Wake & Repair`}),(0,O.jsx)(n,{variant:`dangerOutline`,fullWidth:!0,disabled:r,onClick:()=>d(`confirm-retire`),children:`Retire Assistant`}),(0,O.jsx)(n,{variant:`outlined`,fullWidth:!0,disabled:r,onClick:a,children:`Cancel`})]})]})]})})}function A(e){return e.name?e.name:e.isLocal?`Local Assistant`:`Cloud Assistant`}function j(e){if(e.hatchedAt)return`Created ${E(e.hatchedAt)}`}function M(){let e=r(),[t]=i(),a=t.get(`fromLogin`)===`1`,o=t.get(`noAutoSkip`)===`1`,s=p(),c=_(),S=m.use.assistants(),C=h.use.currentOrganizationId(),{loading:w,error:E,login:j,cancel:M}=b(),P=e=>e.isLocal||c,F=S.filter(P),I=S.some(e=>e.isPlatformHosted)&&!c,[L,R]=(0,D.useState)(null),[z,B]=(0,D.useState)(!1),[V,H]=(0,D.useState)(!1),[U,W]=(0,D.useState)(null),[G,K]=(0,D.useState)(null),[q,J]=(0,D.useState)(!1),[Y,X]=(0,D.useState)(null);(0,D.useEffect)(()=>{if(L!=null||F.length===0)return;let e=g(C);R(F.find(t=>t.id===e)?.id??F[0].id)},[L,F,C]);let Z=async t=>{B(!0),W(null);try{t.isLocal?await v.getState().connectLocalAssistant(t.id):await v.getState().connectPlatformAssistant(t.id),e(y.assistant,{replace:!0})}catch(e){console.error(`selectAssistant.handleConnect failed`,e),t.isLocal&&l()&&(d(e)||ee(e)||e instanceof ne)&&f(t.id)?K(t):W(`Failed to connect. Please try again.`),B(!1)}},Q=()=>{K(null),J(!1),X(null),H(!1)},re=async()=>{if(!(!G||q)){J(!0),X(null);try{let e=await u(G.id,{repairGuardian:!0});if(e.ok){te(),Q(),Z(G);return}X(e.error||`Repair failed. Please try again.`)}catch(e){console.error(`selectAssistant.recoveryRepair failed`,e),X(`Repair failed. Please try again.`)}J(!1)}},ie=async()=>{if(!(!G||q)){J(!0),X(null);try{let t=await x(G.id);if(t.ok){Q(),e(t.nextRoute,{replace:!0});return}X(t.error)}catch(e){console.error(`selectAssistant.recoveryRetire failed`,e),X(`Failed to retire assistant. Please try again.`)}J(!1)}};(0,D.useEffect)(()=>{a||o||z||V||S.length!==0&&S.length===1&&F.length===1&&(H(!0),Z(F[0]))},[S.length,F.length]);let ae=()=>{let e=S.find(e=>e.id===L);e&&Z(e)},oe=()=>{e(y.welcome)},$=E??U;return V&&!$&&!G?(0,O.jsx)(T,{children:(0,O.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center justify-center px-6 text-[var(--content-default)]`,children:(0,O.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Connecting to your assistant…`})})}):(0,O.jsxs)(T,{children:[(0,O.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${s?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`min-h-screen px-6 pb-40 pt-16`} text-[var(--content-default)]`,children:[(0,O.jsx)(`h1`,{className:s?`text-title-large`:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Choose an Assistant`}),(0,O.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)] ${s?`mt-3.5`:`mt-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Select which assistant you’d like to use.`}),$&&(0,O.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:$}),(0,O.jsx)(`div`,{className:`flex w-full flex-col ${s?`mt-8 gap-2`:`mt-10 gap-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:S.map(e=>{let t=P(e);return(0,O.jsx)(N,{assistant:e,selected:L===e.id,disabled:!t,badge:!t&&e.isPlatformHosted?`Requires Account`:void 0,onSelect:()=>{t&&R(e.id)}},e.id)})}),(0,O.jsxs)(`div`,{className:`mt-8 flex w-full flex-col ${s?`gap-2.5`:`gap-2`}`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[F.length>0&&(0,O.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,className:s?void 0:`h-11 text-base`,onClick:ae,disabled:!L||z,children:z?`Connecting…`:`Continue`}),(0,O.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,className:s?void 0:`h-11 text-base`,onClick:()=>void e(`${y.onboarding.hosting}?from=select-assistant`),disabled:z||w,children:`Create New Assistant`}),I&&(0,O.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,className:s?void 0:`h-11 text-base`,onClick:w?M:()=>void j(),disabled:z,children:w?`Cancel`:`Log In`}),(0,O.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,className:s?void 0:`h-11 text-base`,onClick:oe,disabled:z||w,children:`Back`})]})]}),(0,O.jsx)(k,{open:G!=null,assistantName:G?A(G):``,isPending:q,errorMessage:Y??void 0,onCancel:Q,onRepair:()=>void re(),onRetire:()=>void ie()})]})}function N({assistant:e,selected:t,disabled:n,badge:r,onSelect:i}){let a=j(e),s=p();return(0,O.jsxs)(`button`,{type:`button`,onClick:i,disabled:n,className:[`group flex w-full items-center border text-left`,s?`gap-3 rounded-lg p-3`:`gap-4 rounded-2xl px-5 py-4`,`transition-all duration-200 ease-out`,n?`cursor-not-allowed opacity-50`:`cursor-pointer hover:bg-[var(--surface-secondary)]`,t&&!n?`border-[var(--primary-base)] bg-[var(--primary-base)]/[0.08] shadow-[inset_0_0_0_1px_var(--primary-base)]`:`border-[var(--border-element)] bg-transparent`].join(` `),children:[(0,O.jsx)(`div`,{className:[`flex shrink-0 items-center justify-center transition-colors duration-200`,s?`h-8 w-8 rounded-lg`:`h-10 w-10 rounded-xl`,t&&!n?`bg-[var(--primary-base)]/15 text-[var(--primary-base)]`:`bg-[var(--surface-tertiary)] text-[var(--content-secondary)]`].join(` `),children:e.isLocal?(0,O.jsx)(w,{className:`h-5 w-5`}):(0,O.jsx)(S,{className:`h-5 w-5`})}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-default)]`,children:A(e)}),r&&(0,O.jsx)(`span`,{className:`rounded-full bg-[var(--surface-tertiary)] px-2 py-0.5 text-[var(--content-tertiary)] ${s?`text-label-medium-default`:`text-body-small-default`}`,children:r})]}),a&&(0,O.jsx)(`span`,{className:`mt-0.5 block text-[var(--content-tertiary)] ${s?`text-label-medium-default`:`text-body-small-default`}`,children:a})]}),!n&&(0,O.jsx)(`div`,{className:[`flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-200`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)] group-hover:border-[var(--content-tertiary)]`].join(` `),children:t&&(0,O.jsx)(o,{className:`h-3 w-3 text-[var(--surface-base)]`,strokeWidth:3})})]})}export{M as SelectAssistantScreen};
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./chunk-jRWAZmH_.js";import{t as n}from"./react-DJZBPgpf.js";import{F as r,n as i,t as a}from"./button-amTXFI-2.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./bug-BsuQ5ciQ.js";import{t as l}from"./download-CAuK-nZ6.js";import{t as u}from"./info-DsOyuMO9.js";import{t as d}from"./loader-circle-Cz7opInR.js";import{t as f}from"./x-CkSVp1Ok.js";import{t as p}from"./notice-DkcNAP8O.js";import{n as ee,t as m}from"./input-CoUmPnRU.js";import{t as h}from"./toggle-CDfguvUz.js";import{t as g}from"./dropdown-ByHOpeOU.js";import{t as _}from"./is-electron-y5bNUVyG.js";import{in as v}from"./sdk.gen-BwnFjFcp.js";import{t as y}from"./impersonate-version-flag-BhxfH6iZ.js";import{n as te}from"./auth-store-CD7PGb3q.js";import{t as b}from"./dist-DS5iJwBJ2.js";import{n as x}from"./diagnostics-COsnZMe5.js";import{L as S}from"./react-query.gen-DPzPS206.js";import{Ai as ne,Ji as re,Ki as C,Vi as ie,ea as w}from"./index-CSefSVJO.js";var T=e(n(),1),ae=e(r(),1),E=`vellum:debug:`;function oe(){let e={};if(typeof window>`u`)return e;try{for(let t=0;t<window.localStorage.length;t++){let n=window.localStorage.key(t);if(n===null||!n.startsWith(E))continue;let r=window.localStorage.getItem(n);r!==null&&(e[n]=r)}}catch{}return e}function D(){return{collectedAt:new Date().toISOString(),resolved:{impersonateAssistantVersion:y()},overrides:oe()}}var O=t({ShareFeedbackModal:()=>z}),k=s(),A=[{value:`bug_report`,label:`Bug Report`,icon:c,includesLogsByDefault:!0},{value:`feature_request`,label:`Feature Request`,icon:w,includesLogsByDefault:!1},{value:`other`,label:`Other`,icon:C,includesLogsByDefault:!1}],j=[{value:`past_hour`,label:`Past hour`,cutoffMs:3600*1e3},{value:`past_24_hours`,label:`Past 24 hours`,cutoffMs:1440*60*1e3},{value:`all_time`,label:`All time`,cutoffMs:null}],se=j.map(e=>({value:e.value,label:e.label})),M=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`video/mp4`,`video/quicktime`,`video/webm`]),N=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`mp4`,`mov`,`webm`]),P=10,F=50*1024*1024,ce={bug_report:`bug_report`,feature_request:`feature_request`,other:`other`};function le(){return _()?`electron`:b.getPlatform()===`ios`?`ios`:`web`}function ue(e){if(e.size>F)return!1;if(e.type&&M.has(e.type))return!0;if(!e.type){let t=e.name.split(`.`).pop()?.toLowerCase();return t?N.has(t):!1}return!1}function I(e,t){let n=Math.ceil(t.length/512),r=new Uint8Array(512+n*512),i=new TextEncoder,a=(e,t,n)=>{let a=i.encode(e);r.set(a.slice(0,n),t)},o=(e,t,n)=>{a(e.toString(8).padStart(n-1,`0`)+`\0`,t,n)};a(e,0,100),o(420,100,8),o(0,108,8),o(0,116,8),o(t.length,124,12),o(Math.floor(Date.now()/1e3),136,12);for(let e=148;e<156;e++)r[e]=32;r[156]=48,a(`ustar\0`,257,6),a(`00`,263,2);let s=0;for(let e=0;e<512;e++)s+=r[e];return o(s,148,7),r[155]=32,r.set(t,512),r}async function L(e,t){try{let n={};t.window.startTime!=null&&(n.startTime=t.window.startTime,n.endTime=t.window.endTime),t.activeConversationId&&(n.conversationId=t.activeConversationId);let{data:r,error:i}=await v({path:{assistant_id:e},body:n,parseAs:`blob`,throwOnError:!1});if(i||!(r instanceof Blob))return null;let a=await r.arrayBuffer();return new Uint8Array(a)}catch{return null}}async function R(e,t,n,r={}){if(typeof CompressionStream>`u`)return null;let{diagnosticsProvider:i,doctorSessionId:a,extraLogFiles:o=[]}=r,s=new Date,c=j.find(t=>t.value===e),l=s.getTime(),u=c?.cutoffMs==null?null:l-c.cutoffMs,d=u==null?null:new Date(u).toISOString(),f=null;try{f=i?.()??null}catch{f=null}let p=x(f),ee={collected_at:s.toISOString(),time_range:e,cutoff:d,log_window:{start_time_ms:u,end_time_ms:l},assistant_id:t,active_conversation_id:n,doctor_session_id:a??null,user_agent:typeof navigator<`u`?navigator.userAgent:``,language:typeof navigator<`u`?navigator.language:``,platform:typeof navigator<`u`?navigator.platform:``,url:typeof window<`u`?window.location.href:``,viewport:typeof window<`u`?{width:window.innerWidth,height:window.innerHeight}:null,screen:typeof screen<`u`?{width:screen.width,height:screen.height}:null,connection:typeof navigator<`u`&&`connection`in navigator?{effectiveType:navigator.connection.effectiveType,downlink:navigator.connection.downlink,rtt:navigator.connection.rtt}:null,deviceMemory:typeof navigator<`u`&&`deviceMemory`in navigator?navigator.deviceMemory:null,hardwareConcurrency:typeof navigator<`u`?navigator.hardwareConcurrency:null},m=new TextEncoder,h=m.encode(JSON.stringify(ee,null,2)),g=m.encode(JSON.stringify(p,null,2)),v=[I(`web-client-context.json`,h),I(`web-chat-diagnostics.json`,g)],y=new TextEncoder().encode(JSON.stringify(D(),null,2));v.push(I(`web-debug-flags.json`,y));for(let e of o){let t=e.contents.trim();t&&v.push(I(e.filename,m.encode(t)))}try{let e=typeof window<`u`?window._vellumDebug?.chat:null;if(e){let t={clientMessages:e.getClientMessages?.()??null,transcriptItems:e.getTranscriptItems?.()??null,pendingInteractions:e.listPendingInteractions?.()??null,thinkingIndicator:e.thinkingIndicator?.()??null,streamingRing:e.streamingRing?.()??null,reconciliationDiagnostics:e.getReconciliationDiagnostics?.()??null},n=new TextEncoder().encode(JSON.stringify(t,null,2));v.push(I(`web-chat-debug-api-triage.json`,n))}}catch{}try{let e=typeof window<`u`?window._vellumDebug?.events:null;if(e){let t={focus:typeof document<`u`?{hasFocus:typeof document.hasFocus==`function`?document.hasFocus():null,visibilityState:document.visibilityState}:null,clients:e.getClients().map(({abortSignal:e,...t})=>({...t,aborted:e.aborted})),events:e.getEvents()},n=new TextEncoder().encode(JSON.stringify(t,null,2));v.push(I(`web-sse-liveness-triage.json`,n))}}catch{}if(_()&&window.vellum?.feedback){try{let e=await window.vellum.feedback.diagnostics(),t=new TextEncoder().encode(JSON.stringify(e,null,2));v.push(I(`electron-diagnostics.json`,t))}catch{}try{let e=await window.vellum.feedback.logs();if(e){let t=new TextEncoder().encode(e);v.push(I(`electron-main-logs.txt`,t))}}catch{}}if(t){let e=await L(t,{window:{startTime:u,endTime:l},activeConversationId:n});e&&v.push(I(`platform-logs.tar.gz`,e))}v.push(new Uint8Array(1024));let te=v.reduce((e,t)=>e+t.length,0),b=new Uint8Array(te),S=0;for(let e of v)b.set(e,S),S+=e.length;let ne=new Blob([b.buffer]),re=await new Response(ne.stream().pipeThrough(new CompressionStream(`gzip`))).blob();return new File([re],`web-client-logs-${s.getTime()}.tar.gz`,{type:`application/gzip`})}function z({open:e,onClose:t,initialReason:n,initialMessage:r,onSubmitted:s,assistantId:c,assistantVersion:v,activeConversationId:y,doctorSessionId:b,doctorSessionLog:x,getDiagnosticsSnapshot:C}){let w=te.use.user(),E=w?.email,oe=w?.isStaff??!1,D=(0,T.useId)(),O=(0,T.useRef)(null),j=(0,T.useRef)(null),M=(0,T.useRef)(null),N=(0,T.useRef)(null),[F,I]=(0,T.useState)(n??`bug_report`),[L,z]=(0,T.useState)(``),[B,pe]=(0,T.useState)(``),[V,H]=(0,T.useState)(A.find(e=>e.value===(n??`bug_report`))?.includesLogsByDefault??!0),[me,he]=(0,T.useState)(!1),[U,W]=(0,T.useState)(`past_hour`),[G,K]=(0,T.useState)([]),[ge,q]=(0,T.useState)(null),[_e,J]=(0,T.useState)(!1),[Y,ve]=(0,T.useState)(!1),[X,ye]=(0,T.useState)(!1),Z=o(S()),[be,Q]=(0,T.useState)(!1),$=Z.isPending||be,xe=!E,Se=(0,T.useMemo)(()=>L.trim().length>0&&B.trim().length>0,[L,B]);(0,T.useEffect)(()=>{if(!e)return;let t=n??`bug_report`;I(t),z(r??``),pe(E??``),H(A.find(e=>e.value===t)?.includesLogsByDefault??!0),he(!1),W(`past_hour`),K([]),ve(!1),ye(!1),q(null),Q(!1),Z.reset();let i=setTimeout(()=>{E?M.current?.focus():N.current?.focus()},50);return()=>clearTimeout(i)},[e]),(0,T.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=t}},[e]);let Ce=e=>{I(e),me||H(A.find(t=>t.value===e)?.includesLogsByDefault??!1)},we=()=>{H(e=>!e),he(!0)},Te=x?.trim()?[{filename:`doctor-session.txt`,contents:x}]:[],Ee=(0,T.useCallback)(e=>{e.key===`Escape`&&!$&&t()},[t,$]),De=(0,T.useCallback)(e=>{e.target===O.current&&!$&&t()},[t,$]),Oe=(0,T.useCallback)(e=>{K(t=>{let n=P-t.length;if(n<=0)return t;let r=new Set(t.map(e=>`${e.name}:${e.size}`)),i=[];for(let t of e){if(i.length>=n)break;if(!ue(t))continue;let e=`${t.name}:${t.size}`;r.has(e)||(r.add(e),i.push(t))}return i.length>0?[...t,...i]:t})},[]),ke=e=>{e.target.files&&Oe(Array.from(e.target.files)),e.target.value=``},Ae=e=>{e.preventDefault(),J(!1),e.dataTransfer.files?.length&&Oe(Array.from(e.dataTransfer.files))},je=e=>{e.preventDefault(),J(!0)},Me=e=>{e.preventDefault(),e.currentTarget===e.target&&J(!1)},Ne=e=>{K(t=>t.filter((t,n)=>n!==e))};return e?(0,ae.createPortal)((0,k.jsx)(`div`,{ref:O,role:`dialog`,"aria-modal":`true`,"aria-labelledby":D,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:Ee,onClick:De,onDrop:Ae,onDragOver:je,onDragLeave:Me,children:(0,k.jsxs)(`div`,{className:`mx-4 flex w-full max-w-lg flex-col rounded-xl border p-6 shadow-xl`,style:{backgroundColor:`var(--surface-lift)`,borderColor:`var(--border-base)`,maxHeight:`calc(100vh - 2rem)`},children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between border-b pb-4`,style:{borderColor:`var(--border-subtle)`},children:[(0,k.jsx)(`h2`,{id:D,className:`!m-0 text-title-small text-[var(--content-default)]`,children:`Share Feedback`}),(0,k.jsx)(a,{variant:`ghost`,iconOnly:(0,k.jsx)(f,{}),onClick:t,disabled:$,"aria-label":`Close`,tintColor:`var(--content-secondary)`})]}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-3.5 overflow-y-auto pt-4 ${$?`pointer-events-none opacity-60`:``}`,children:[oe&&(0,k.jsxs)(`div`,{className:`flex flex-col gap-1.5 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] px-3 py-2.5`,children:[(0,k.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-3`,children:[(0,k.jsx)(h,{checked:X,onChange:()=>ye(e=>!e),"aria-label":`Download diagnostics directly`}),(0,k.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:`Download diagnostics directly`})]}),(0,k.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Admin only — builds the diagnostics archive locally and downloads it instead of submitting feedback or notifying Slack.`})]}),X?(0,k.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,k.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:`Time range`}),(0,k.jsx)(g,{options:se,value:U,onChange:W,"aria-label":`Diagnostics time range`})]}):(0,k.jsxs)(k.Fragment,{children:[xe&&(0,k.jsx)(m,{id:`${D}-email`,ref:N,label:`Email`,type:`email`,placeholder:`you@example.com`,value:B,onChange:e=>pe(e.target.value),leftIcon:(0,k.jsx)(re,{className:`h-4 w-4`,"aria-hidden":!0}),fullWidth:!0}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,k.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Category`}),(0,k.jsx)(`div`,{className:`flex gap-2`,children:A.map(e=>(0,k.jsx)(de,{option:e,isSelected:F===e.value,onSelect:()=>Ce(e.value)},e.value))})]}),(0,k.jsx)(`hr`,{className:`border-[var(--border-subtle)]`}),F===`bug_report`&&(0,k.jsxs)(p,{tone:`info`,children:[`Tip: Get faster support by posting in our`,` `,(0,k.jsx)(`a`,{href:`https://vellum.ai/community`,target:`_blank`,rel:`noopener noreferrer`,className:`underline text-[var(--content-default)]`,children:`Discord community`})]}),F===`feature_request`&&(0,k.jsxs)(p,{tone:`info`,children:[`Tip: Vote on features on our`,` `,(0,k.jsx)(`a`,{href:`https://vellum.ai/roadmap`,target:`_blank`,rel:`noopener noreferrer`,className:`underline text-[var(--content-default)]`,children:`public roadmap`})]}),(0,k.jsx)(ee,{id:`${D}-message`,ref:M,label:F===`bug_report`?`What went wrong?`:F===`feature_request`?`Describe your idea`:`What's on your mind?`,rows:3,placeholder:F===`bug_report`?`What did you expect to happen, and what happened instead?`:F===`feature_request`?`What problem would this solve for you?`:`Share your thoughts...`,value:L,onChange:e=>z(e.target.value),fullWidth:!0}),F!==`feature_request`&&(0,k.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,k.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2.5`,children:[(0,k.jsx)(h,{checked:V,onChange:we,"aria-label":`Include browser diagnostics`}),(0,k.jsx)(`span`,{className:`text-body-medium-lighter leading-6 text-[var(--content-default)]`,children:`Include diagnostics`})]}),(0,k.jsx)(i,{content:`Diagnostics include browser context, assistant logs, and timestamps — never passwords or credentials.`,children:(0,k.jsx)(`button`,{type:`button`,"aria-label":`About diagnostics`,className:`inline-flex items-center justify-center text-[var(--content-tertiary)]`,children:(0,k.jsx)(u,{className:`h-3.5 w-3.5`})})})]}),V&&(0,k.jsx)(g,{options:se,value:U,onChange:W,"aria-label":`Diagnostics time range`})]}),_()&&y&&F!==`feature_request`&&(0,k.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2.5`,children:[(0,k.jsx)(h,{checked:Y,onChange:()=>ve(e=>!e),"aria-label":`Include the most recent conversation`}),(0,k.jsx)(`span`,{className:`text-body-medium-lighter leading-6 text-[var(--content-default)]`,children:`Include the most recent conversation`})]}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,k.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:[`Attachments`,G.length>0&&(0,k.jsxs)(`span`,{className:`text-[var(--content-tertiary)]`,children:[` · `,G.length,`/`,P]})]}),(0,k.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,k.jsx)(ie,{}),onClick:()=>j.current?.click(),disabled:G.length>=P,children:`Add files`}),(0,k.jsx)(`input`,{ref:j,type:`file`,multiple:!0,accept:`image/png,image/jpeg,image/gif,image/webp,video/mp4,video/quicktime,video/webm`,onChange:ke,className:`hidden`})]}),G.length>0&&(0,k.jsx)(`div`,{className:`flex gap-2 overflow-x-auto`,children:G.map((e,t)=>(0,k.jsx)(fe,{file:e,onRemove:()=>Ne(t)},`${e.name}-${t}`))}),_e&&(0,k.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Drop files to attach…`})]})]}),ge&&(0,k.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--system-negative-strong)]`,children:ge})]}),(0,k.jsx)(`div`,{className:`mt-4 flex items-center justify-end gap-2 border-t pt-4`,style:{borderColor:`var(--border-subtle)`},children:$?(0,k.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-body-medium-lighter text-[var(--content-secondary)]`,children:[(0,k.jsx)(d,{className:`h-4 w-4 animate-spin`}),X?`Preparing diagnostics…`:`Sending feedback…`]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(a,{variant:`ghost`,onClick:t,children:`Cancel`}),X?(0,k.jsx)(a,{variant:`primary`,leftIcon:(0,k.jsx)(l,{}),onClick:async()=>{if(!$){q(null),Q(!0);try{let e=await R(U,c??null,_()?Y?y??null:null:y??null,{diagnosticsProvider:C,doctorSessionId:b,extraLogFiles:Te});if(!e){q(`Diagnostics export isn't supported in this browser.`);return}let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=e.name,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),0),t()}catch(e){q(e instanceof Error?e.message:`Failed to build diagnostics. Please try again.`)}finally{Q(!1)}}},children:`Download diagnostics`}):(0,k.jsx)(a,{variant:`primary`,leftIcon:(0,k.jsx)(ne,{}),onClick:async()=>{if(!(!Se||$)){q(null),Q(!0);try{let e=V&&F!==`feature_request`?await R(U,c??null,_()?Y?y??null:null:y??null,{diagnosticsProvider:C,doctorSessionId:b,extraLogFiles:Te}):null;await Z.mutateAsync({headers:{"Content-Type":null},body:{message:L.trim(),classification:ce[F],email:B.trim(),client:le(),client_version:void 0,...c?{assistant_id:c}:{},...v?{assistant_version:v}:{},...b?{doctor_session_id:b}:{},...e?{logs_file:e}:{},...G.length?{attachments:G}:{}},bodySerializer:e=>{let t=new FormData;for(let[n,r]of Object.entries(e))if(r!=null){if(n===`attachments`&&Array.isArray(r)){for(let e of r)t.append(`attachments`,e);continue}r instanceof Blob?t.append(n,r):t.append(n,String(r))}return t}}),s?.(),t()}catch(e){q(e instanceof Error?e.message:`Failed to submit feedback. Please try again.`)}finally{Q(!1)}}},disabled:!Se,children:`Submit`})]})})]})}),document.body):null}function de({option:e,isSelected:t,onSelect:n}){let r=e.icon;return(0,k.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":t,className:`flex items-center gap-1.5 rounded-full border px-3 py-1.5 text-left transition-colors`,style:{borderColor:t?`var(--primary-base)`:`var(--border-base)`,backgroundColor:t?`color-mix(in oklab, var(--primary-base) 10%, transparent)`:`transparent`},children:[(0,k.jsx)(r,{className:`h-3.5 w-3.5 shrink-0`,style:{color:t?`var(--primary-base)`:`var(--content-secondary)`}}),(0,k.jsx)(`span`,{className:`text-body-small-default`,style:{color:t?`var(--primary-base)`:`var(--content-default)`},children:e.label})]})}function fe({file:e,onRemove:t}){let n=e.type.startsWith(`image/`),r=(0,T.useMemo)(()=>n?URL.createObjectURL(e):null,[e,n]);return(0,T.useEffect)(()=>{if(r)return()=>URL.revokeObjectURL(r)},[r]),(0,k.jsxs)(`div`,{className:`relative flex h-16 w-16 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)]`,title:e.name,children:[n&&r?(0,k.jsx)(`img`,{src:r,alt:e.name,className:`h-full w-full object-cover`}):(0,k.jsx)(ie,{className:`h-5 w-5 text-[var(--content-secondary)]`}),(0,k.jsx)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,k.jsx)(f,{}),onClick:t,"aria-label":`Remove ${e.name}`,className:`absolute top-0.5 right-0.5 h-4 w-4 rounded-full bg-black/60 text-white hover:bg-black/70`,tintColor:`#fff`})]})}export{O as n,z as t};
@@ -1,2 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-D5f7kt80.js";import{E as a,S as o,a as s,b as c,gt as l,h as u,ht as d,i as f,l as p,mt as m,pt as h}from"./risk-Dsj4oM8c.js";import{t as g}from"./brain-BLDXGaUy.js";import{t as _}from"./check-DFNrQERi.js";import{t as v}from"./code-Czx7d7SK.js";import{t as y}from"./copy-Cn1FKrEp.js";import{t as b}from"./file-text-CYJz-GvF.js";import{t as x}from"./globe-4qSOWE2N.js";import{t as S}from"./monitor-DfbL8_59.js";import{t as C}from"./sparkles-PGiR5v1g.js";import{t as w}from"./user-plus-DMh4_UTz.js";import"./src-B2IjVySQ.js";import{t as T}from"./chat-markdown-message-CItp7csw.js";import{r as E}from"./viewer-store-B8-Qnbx9.js";import{w as D}from"./chat-B8mgARYR.js";import{t as O}from"./misc-BYQPh7vS.js";import{u as k}from"./index-CSefSVJO.js";var A=e(t(),1),j=r();function M({level:e,className:t,onClick:n}){if(!e)return null;let{bg:r,text:a,label:o}=f(e),s=O(`inline-flex items-center justify-center rounded-[100px] px-[6px] pt-[2px] pb-[3px]`,r,t);return n?(0,j.jsx)(`button`,{type:`button`,"data-testid":`risk-badge`,"data-risk-level":e,className:O(s,`cursor-pointer hover:opacity-80`),onClick:e=>{e.stopPropagation(),n()},children:(0,j.jsx)(i,{variant:`label-medium-default`,className:a,children:o})}):(0,j.jsx)(`span`,{"data-testid":`risk-badge`,"data-risk-level":e,className:s,children:(0,j.jsx)(i,{variant:`label-medium-default`,className:a,children:o})})}function N(e,t,n){let r=o();return(0,A.useMemo)(()=>{if(!e||t==null)return null;let i=r.find(t=>a(t).includes(e));if(!i)return null;let o=p(i.contentBlocks??[],{splitInlineThinking:i.role!==`user`})[t];if(!o||o.type!==`activity`)return null;let s=o.items.flatMap(e=>e.type===`thinking`&&e.thinking?[e.thinking]:[]);return n==null?s.join(`
2
- `):s[n]??null},[r,e,t,n])}function P(e){let t=o();return(0,A.useMemo)(()=>{if(!e)return null;for(let n of t){let t=n.toolCalls?.find(t=>t.id===e);if(t)return t}return null},[t,e])}var F={code:v,terminal:h,file:b,globe:x,pen:d,monitor:S,plug:m,sparkle:C,"user-plus":w,bolt:l,brain:g},I=1500;function L({text:e}){let[t,n]=(0,A.useState)(!1),r=(0,A.useRef)(null);return(0,A.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),(0,j.jsxs)(`button`,{type:`button`,onClick:()=>{navigator.clipboard.writeText(e),n(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>n(!1),I)},"aria-label":t?`Copied`:`Copy`,className:`absolute right-2 top-2 flex items-center gap-1 rounded p-1 text-label-small-default text-[var(--content-tertiary)] transition-colors hover:bg-[var(--ghost-hover)] hover:text-[var(--content-default)]`,children:[t?(0,j.jsx)(_,{className:`h-3.5 w-3.5`}):(0,j.jsx)(y,{className:`h-3.5 w-3.5`}),t?`Copied`:null]})}function R({text:e}){return(0,j.jsxs)(`div`,{className:`relative`,children:[(0,j.jsx)(`pre`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)] p-3 font-mono text-xs whitespace-pre-wrap break-words text-[var(--content-default)]`,children:e}),(0,j.jsx)(L,{text:e})]})}function z({children:e,className:t=`mb-1.5`}){return(0,j.jsx)(i,{variant:`label-small-default`,as:`div`,className:`uppercase tracking-wider text-[var(--content-tertiary)] ${t}`,children:e})}function B({detail:e,onClose:t}){let n=N(e.messageId,e.thinkingGroupIndex,e.thinkingItemIndex);return(0,j.jsx)(k,{Glyph:g,title:e.title,closeLabel:`Close tool details`,onClose:t,children:(0,j.jsx)(T,{content:n??e.thinkingText??``,hardLineBreaks:!0})})}function V({detail:e}){let t=P(e.toolCallId),r=t?.result??e.result,a=t?.streamedOutput??e.streamedOutput,o=r!==void 0&&r!==``,l=t?D(t):e.status===`running`,u=!!a,d=JSON.stringify(e.input,null,2),f=t?.riskLevel??e.riskLevel,p=s(f);return(0,j.jsxs)(j.Fragment,{children:[f&&(0,j.jsxs)(`div`,{className:`mb-5`,children:[(0,j.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between gap-3`,children:[(0,j.jsx)(z,{className:`mb-0`,children:`Reasoning`}),t!=null&&(0,j.jsx)(n,{variant:`outlined`,size:`compact`,className:`shrink-0`,onClick:()=>E.getState().requestRuleEditor(e.toolCallId),children:`Create Trust Rule`})]}),(0,j.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)] p-3`,children:[(0,j.jsx)(M,{level:f}),p&&(0,j.jsx)(i,{variant:`body-small-default`,as:`p`,className:`mt-1.5 text-[var(--content-secondary)]`,children:p})]})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(i,{variant:`body-medium-default`,as:`div`,className:`text-[var(--content-default)]`,children:c(e.toolName)}),e.activity&&(0,j.jsx)(i,{variant:`body-small-default`,as:`p`,className:`mt-0.5 text-[var(--content-secondary)]`,children:e.activity}),(0,j.jsx)(`div`,{className:`mt-2`,children:(0,j.jsx)(R,{text:d})})]}),(o||l)&&(0,j.jsxs)(`div`,{className:`mt-5`,children:[(0,j.jsx)(z,{children:`Output`}),o?(0,j.jsx)(R,{text:r}):u?(0,j.jsx)(R,{text:a}):(0,j.jsx)(i,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:`Running…`})]})]})}function H({detail:e,onClose:t}){if(e.kind===`thinking`)return(0,j.jsx)(B,{detail:e,onClose:t});let{iconName:n}=u(e.toolName,e.input);return(0,j.jsx)(k,{Glyph:F[n]??l,title:e.activity||e.title,closeLabel:`Close tool details`,onClose:t,children:(0,j.jsx)(V,{detail:e})})}export{R as CodeBlock,z as SectionLabel,V as ToolDetailBody,H as ToolDetailPanel,N as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{Dn as n,En as r,Tn as i}from"./index-CSefSVJO.js";var a=e(t(),1),o=200,s=180,c=200,l=.25,u=50;function d(e){e.style.transition=``,e.style.transform=``,e.style.willChange=``,e.style.opacity=``}function f({containerRef:e,onBack:t,enabled:f,navKey:p}){let m=(0,a.useRef)(t);(0,a.useLayoutEffect)(()=>{m.current=t},[t]);let h=(0,a.useRef)(!1),g=(0,a.useRef)(new Set),_=(0,a.useRef)(!1),v=i.use.registerBackOwner(),y=i.use.unregisterBackOwner();(0,a.useEffect)(()=>{if(f)return v(),y},[f,v,y]),(0,a.useEffect)(()=>{_.current=!1;let t=g.current;return()=>{_.current=!0;for(let e of t)clearTimeout(e);t.clear();let n=e.current;n&&d(n)}},[e]);let b=(e,t)=>{let n=setTimeout(()=>{g.current.delete(n),_.current||e()},t);g.current.add(n)},x=(e,t)=>{e.style.transform=t===0?``:`translateX(${t}px)`},S=e=>{e.style.transition=`transform ${o}ms ease-out`,x(e,0);let t=()=>{e.removeEventListener(`transitionend`,t),d(e)};e.addEventListener(`transitionend`,t,{once:!0}),b(()=>d(e),o+u)},C=e=>{e.style.transition=`transform ${s}ms ease-in`,x(e,window.innerWidth);let t=!1,n=()=>{if(t||_.current)return;t=!0,e.removeEventListener(`transitionend`,n);let r=-(window.innerWidth*l);e.style.transition=`none`,e.style.transform=`translateX(${r}px)`,e.style.opacity=`0`,e.offsetWidth,h.current=!0,m.current(),b(()=>{h.current&&(h.current=!1,d(e))},c*2)};e.addEventListener(`transitionend`,n,{once:!0}),b(n,s+u)};n({enabled:f,onConfirm:()=>{let t=e.current;t&&(t.style.transition=`none`,t.style.willChange=`transform`)},onMove:(t,n)=>{let i=e.current;i&&x(i,r(t,n))},onCommit:()=>{let t=e.current;if(!t){m.current();return}C(t)},onCancel:t=>{let n=e.current;n&&(t?S(n):d(n))}}),(0,a.useLayoutEffect)(()=>{if(!h.current)return;h.current=!1;let t=e.current;if(!t)return;let n=!1,r=()=>{n||(n=!0,t.removeEventListener(`transitionend`,r),d(t))};t.style.transition=`transform ${c}ms ease-out, opacity ${c}ms ease-out`,t.style.transform=``,t.style.opacity=``,t.addEventListener(`transitionend`,r,{once:!0});let i=setTimeout(r,c+u);return()=>{clearTimeout(i),t.removeEventListener(`transitionend`,r),d(t)}},[p,e])}export{f as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{n as r}from"./QueryClientProvider-DKhXIxGb.js";import{t as i}from"./useQuery-B45lW1Kk.js";import{t as a}from"./useMutation-Lj4VunQV.js";import{t as o}from"./jsx-runtime-CVSDxk6A.js";import{t as s}from"./typography-D5f7kt80.js";import{t as c}from"./check-DFNrQERi.js";import{t as l}from"./copy-Cn1FKrEp.js";import{t as u}from"./link-2-4bMylQ5v.js";import{t as d}from"./loader-circle-Cz7opInR.js";import{t as f}from"./input-CoUmPnRU.js";import{t as p}from"./modal-D5nLWNN9.js";import{Kt as m,Qt as h,Xt as g}from"./sdk.gen-BwnFjFcp.js";import{G as _,K as v,U as y,W as b,o as x,s as S,x as C}from"./react-query.gen-C6wVk6Rw.js";import{n as w,r as T,t as E}from"./api-errors-CrWDzVca.js";import{n as D}from"./sdk.gen-BhtkuoSl.js";import{t as O}from"./assistant-feature-flag-store-CKUjJHuh.js";import{Mt as k,Nt as A,a as j,i as M,nr as N,o as P,rr as F,s as I}from"./index-CSefSVJO.js";import{t as L}from"./mutation-error-CrhKyTkx.js";import{t as R}from"./a2a-invite-BriFFHnO.js";function z(e){return e?.trim()||`your assistant`}var B=e(t(),1),V=o(),H=[`no_one`,`guardian_only`,`trusted_contacts`,`any_contact`,`strangers`],U=`trusted_contacts`,W=new Set([`platform`,`a2a`]),G=new Set([`vellum`,`whatsapp`]);function K(e){return G.has(e)}var q={no_one:`No one`,guardian_only:`Only you`,trusted_contacts:`Verified contacts`,any_contact:`Any contact`,strangers:`Strangers`};function J(e){return{no_one:`No one can message ${e} on this channel — every message is blocked, including yours.`,guardian_only:`Only you can message ${e}. Everyone else is turned away.`,trusted_contacts:`You and the people you’ve verified can message ${e}. Anyone else is asked to verify first, and you’re notified.`,any_contact:`You and any known contact can message ${e}, including contacts you haven’t verified yet. Strangers are asked to verify first.`,strangers:`Anyone can message ${e}, including complete strangers.`}}function Y(e){let t=e-Date.now();if(t<=0)return`Expired`;let n=Math.ceil(t/(1e3*60*60*24));return n===1?`Expires in 1 day`:`Expires in ${n} days`}function X({open:e,assistantId:t,onClose:r}){let[i,o]=(0,B.useState)(!1),u=(0,B.useRef)(null),m=(0,B.useRef)(!1),h=a({...y({path:{assistant_id:t}})}),g=(0,B.useRef)(h.mutate);(0,B.useLayoutEffect)(()=>{g.current=h.mutate});let _=(0,B.useRef)(h.reset);(0,B.useLayoutEffect)(()=>{_.current=h.reset}),(0,B.useEffect)(()=>{e&&!m.current&&g.current({path:{assistant_id:t}}),m.current=e},[e,t]),(0,B.useEffect)(()=>()=>{u.current&&clearTimeout(u.current)},[]);let v=(0,B.useCallback)(()=>{_.current(),o(!1),u.current&&=(clearTimeout(u.current),null),r()},[r]),b=(0,B.useCallback)(e=>{navigator.clipboard.writeText(e).then(()=>{o(!0),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>o(!1),2e3)})},[]),x=h.isSuccess&&h.data.token?R({senderAssistantId:t,token:h.data.token}):``;return(0,V.jsx)(p.Root,{open:e,onOpenChange:e=>{e||v()},children:(0,V.jsxs)(p.Content,{size:`sm`,children:[(0,V.jsx)(p.Header,{children:(0,V.jsx)(p.Title,{children:`Share Connection Link`})}),(0,V.jsx)(p.Body,{children:h.isPending?(0,V.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:[(0,V.jsx)(d,{className:`h-4 w-4 animate-spin`}),`Creating invite link…`]}):h.isError?(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(`p`,{role:`alert`,className:`!m-0 text-body-medium-lighter`,style:{color:`var(--system-negative-strong)`},children:`Failed to create invite link. Make sure A2A is enabled for your assistant.`}),(0,V.jsx)(n,{variant:`outlined`,onClick:()=>h.mutate({path:{assistant_id:t}}),children:`Try Again`})]}):h.isSuccess?(0,V.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,V.jsx)(s,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`Share this link with another assistant owner to establish a connection.`}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(f,{type:`text`,readOnly:!0,value:x,fullWidth:!0,wrapperClassName:`flex-1`,className:`font-mono`,onFocus:e=>e.currentTarget.select()}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>b(x),"aria-label":`Copy invite link`,className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-[var(--border-base)] hover:bg-[var(--surface-hover)]`,children:i?(0,V.jsx)(c,{className:`h-4 w-4`}):(0,V.jsx)(l,{className:`h-4 w-4`})})]}),h.data.expiresAt!=null&&(0,V.jsx)(s,{variant:`body-small-default`,style:{color:`var(--content-tertiary)`},children:Y(h.data.expiresAt)})]}):null}),(0,V.jsx)(p.Footer,{children:(0,V.jsx)(n,{variant:`outlined`,onClick:v,children:`Done`})})]})})}function Z({onClick:e}){return(0,V.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:(0,V.jsx)(u,{className:`h-3.5 w-3.5`}),onClick:e,children:`Share Connection Link`})}function ee(e){return typeof e==`string`&&H.includes(e)}function Q(e){return W.has(e)}function $(e){return(e?.policies??[]).filter(e=>!Q(e.channelType)&&!K(e.channelType)).map(e=>({...e,policy:ee(e.policy)?e.policy:`trusted_contacts`}))}async function te(e,t,n,r){if(Q(t))throw new E(403,`Channel "${t}" is internal and is not user-configurable.`);let{data:i,error:a,response:o}=await D({path:{assistant_id:e,channel_type:t},body:{policy:n,note:r??null},throwOnError:!1});if(w(o,a,`Failed to save channel policy.`),!o.ok)throw new E(o.status,T(a,o,`Failed to save channel policy.`));if(!i?.policy)throw new E(500,`Gateway returned no policy in response.`);return i.policy}function ne(e){let t=r(),n=O.use.channelTrustFloors(),o=(0,B.useMemo)(()=>({path:{assistant_id:e}}),[e]),s=(0,B.useMemo)(()=>F(o),[o]),c=i({...N(o),enabled:n,select:$}),l=(0,B.useMemo)(()=>{let e={};for(let t of c.data??[])A(t.channelType)&&(e[t.channelType]=t.policy);return e},[c.data]),u=a({mutationFn:({channelKey:t,policy:n})=>te(e,t,n),onSuccess:()=>t.invalidateQueries({queryKey:s}),onError:L(`Failed to save channel policy`)}),d=(0,B.useCallback)((e,t)=>{u.mutate({channelKey:e,policy:t})},[u]);return n?{policies:l,savingKey:u.isPending?u.variables?.channelKey??null:null,isLoading:c.isPending,isError:c.isError,onChange:d}:{policies:void 0,savingKey:null,isLoading:!1,isError:!1,onChange:void 0}}var re={slack:`I want to reach you on Slack. Let's set it up.`,telegram:`I want to reach you on Telegram. Let's set it up.`,phone:`I want to be able to call you. Let's set you up with a phone number.`},ie=15e3;function ae({assistantId:e,onStartSetupConversation:t}){let n=r(),o=(0,B.useMemo)(()=>({path:{assistant_id:e}}),[e]),s=(0,B.useMemo)(()=>S(o),[o]),c=i({...x(o),enabled:!!e,refetchInterval:ie,select:e=>e.snapshots}),l=(0,B.useMemo)(()=>oe(c.data??[]),[c.data]),u=l.some(e=>e.key===`slack`&&e.status===`ready`),d=i({...b(o),enabled:u,select:e=>e.threadMode}),f=ne(e),p=(0,B.useCallback)(()=>n.invalidateQueries({queryKey:s}),[n,s]),y=a({mutationFn:async t=>{let n={path:{assistant_id:e},throwOnError:!0};t===`slack`?await m(n):t===`telegram`?await g(n):t===`phone`&&await h(n)},onSettled:(t,r,i)=>{p(),i===`slack`&&I(n,e)}}),C=j({assistantId:e}),w=P({assistantId:e}),T=M({assistantId:e}),E=a({...v(),onSuccess:()=>{n.invalidateQueries({queryKey:_(o)})}}),D=C.mutateAsync,O=(0,B.useCallback)(async e=>{await D(e)},[D]),k=w.mutate,A=(0,B.useCallback)((e,t)=>{k({botToken:e,appToken:t})},[k]),N=E.mutate,F=(0,B.useCallback)(t=>{N({path:{assistant_id:e},body:{threadMode:t}})},[N,e]),L=T.mutateAsync,R=(0,B.useCallback)(async(e,t)=>{await L({accountSid:e,authToken:t})},[L]),z=(0,B.useCallback)(e=>{t&&t(re[e])},[t]),V=y.mutate,H=(0,B.useCallback)(e=>{V(e)},[V]);return{channels:l,pendingChannelKey:y.isPending?y.variables??null:null,slackThreadMode:d.data,slackThreadModePending:E.isPending,channelPolicies:f.policies,policySavingKey:f.savingKey,policiesLoading:f.isLoading,policiesError:f.isError,onChannelPolicyChange:f.onChange,onSetup:t?z:void 0,onDisconnect:H,onSaveTelegramToken:O,onSaveSlackConfig:A,slackSaveStatus:w.status,slackSaveError:w.error?.message??null,onSlackThreadModeChange:F,onSaveTwilioCredentials:R}}function oe(e){let t=new Map;for(let n of e)t.set(n.channel,n);return k.map(e=>{let n=t.get(e);return{key:e,status:se(n),address:n?.channelHandle??void 0}})}function se(e){return e?e.ready||e.setupStatus===`ready`?`ready`:e.setupStatus===`incomplete`?`incomplete`:`not_configured`:`not_configured`}function ce(e){let t=r(),[n,i]=(0,B.useState)(!1);return{isOpen:n,open:(0,B.useCallback)(()=>{i(!0)},[]),close:(0,B.useCallback)(()=>{i(!1),t.invalidateQueries({queryKey:C({path:{assistant_id:e}})})},[t,e])}}export{X as a,q as c,Z as i,J as l,ae as n,U as o,$ as r,H as s,ce as t,z as u};
@@ -1 +0,0 @@
1
- import{D as e,i as t}from"./auth-store-CD7PGb3q.js";function n(){let n=e.use.currentOrganizationId();return!t()||n!=null}export{n as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{h as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./queryOptions-BtNi-_9H.js";import{t as l}from"./createLucideIcon-IRfcSUxS.js";import{t as u}from"./chevron-down-qD-re7AW.js";import{t as d}from"./chevron-right-DqqmezXC.js";import{t as f}from"./menu-Dy5QbnTj.js";import{t as p}from"./download-CAuK-nZ6.js";import{t as m}from"./file-text-CYJz-GvF.js";import{t as h}from"./file-DsyJLS2u.js";import{t as g}from"./loader-circle-Cz7opInR.js";import{t as _}from"./pencil-CUIr0IFo.js";import{t as v}from"./plus-DItfr5ux.js";import{t as y}from"./x-CkSVp1Ok.js";import{E as b}from"./src-B2IjVySQ.js";import{t as x}from"./input-CoUmPnRU.js";import{t as S}from"./modal-D5nLWNN9.js";import{n as C,t as w}from"./panel-item-CouW2A55.js";import{t as T}from"./confirm-dialog-CSkhRFRk.js";import{n as E,t as D}from"./file-markdown-BXUvAQ24.js";import{Ar as O,Fr as k,Mr as A,Or as j,Pr as M,jr as N,kr as P}from"./sdk.gen-BwnFjFcp.js";import{n as F}from"./native-file-Cn3RbQbT.js";import{ca as I,da as ee,fa as te,hi as L,ia as R,ji as ne,la as z,vr as B,yi as V}from"./index-CSefSVJO.js";import{t as H}from"./use-active-assistant-id-BNRMo_Mi.js";import{n as U,t as W}from"./mobile-sidebar-drawer-3LqMCZgK.js";import{i as G,n as re,r as K,t as q}from"./file-editor-BbrbkQCm.js";import{t as J}from"./format-file-size-D7iZejgy.js";var ie=l(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ae=l(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),oe=l(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),Y=l(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),X=e(t(),1);async function se(e){let{data:t,error:n}=await P({path:{assistant_id:e.assistantId},query:{path:e.path,...e.showHidden?{showHidden:`true`}:{}},parseAs:`blob`,throwOnError:!1});if(n||!(t instanceof Blob))throw Error(`Failed to download file`);await F(t,e.filename)}function ce(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function le(e,t){return ce(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function ue(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function Z(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Q=s();function de(e){return c({queryFn:async()=>{let{data:t,error:n}=await O({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function fe({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=m;return n.startsWith(`image/`)?r=R:n.startsWith(`video/`)?r=L:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=h),(0,Q.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,Q.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function pe({viewMode:e,onChange:t}){return(0,Q.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,Q.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function $({name:e,mimeType:t,size:n,rightContent:r}){return(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Q.jsx)(fe,{mimeType:t}),(0,Q.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Q.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:J(n)})]}),r]})}function me({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await P({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,X.useState)(null);return(0,X.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Q.jsx)(g,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Q.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Q.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Q.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Q.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function he({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(!1),f=(0,X.useCallback)(async()=>{d(!1),l(!0);try{await se({assistantId:e,path:t,filename:r,showHidden:s})}catch{d(!0)}finally{l(!1)}},[e,t,r,s]);return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsx)($,{name:r,mimeType:i,size:a}),(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Q.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,Q.jsx)(h,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Q.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,Q.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Q.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,Q.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:J(a,`Unknown size`)}),o&&(0,Q.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(o).toLocaleString()]})]}),(0,Q.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:c?(0,Q.jsx)(g,{className:`animate-spin`,"aria-hidden":!0}):(0,Q.jsx)(p,{"aria-hidden":!0}),onClick:f,disabled:c,"aria-label":`Download ${r}`,className:`mt-4`,children:c?`Downloading…`:`Download`}),u&&(0,Q.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:`Download failed. Try again.`})]})})]})}function ge({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...de({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,_]=(0,X.useState)(null),[v,y]=(0,X.useState)(null);(0,X.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;_(e=>e==null?e:n(e)),y(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,X.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);_(e=>e!=null&&t(e)?null:e),y(e=>e!=null&&t(e.path)?null:e)},[d]);let b=h!=null&&h===t,x=p?.content??``,S=v?.path===t?v.content:x,C=()=>{_(null),y(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await k({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{_(e=>e===t.path?null:e),y(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),T=S!==x,O=(0,X.useCallback)(()=>{t&&T&&!w.isPending&&w.mutate({path:t,content:S})},[t,T,w,S]);if(!t)return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,Q.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Q.jsx)(oe,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,Q.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Q.jsx)(g,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,Q.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Q.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let A=p.mimeType??`application/octet-stream`,j=p.name??t.split(`/`).pop()??t,M=E(j,A),N=le(j,A),P=p.content!=null&&!M&&!N,F=t?Z(t):!0,I=b&&(0,Q.jsx)(re,{isDirty:T,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:O,onDiscard:C});if(M&&p.content!=null){let e=b?S:p.content;return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsx)($,{name:j,mimeType:A,rightContent:(0,Q.jsx)(pe,{viewMode:s,onChange:e=>{b&&C(),c(e)}})}),(0,Q.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Q.jsx)(q,{content:e,fileName:j,mimeType:A,showEdit:!F&&s===`source`,isEditing:b,onToggleEdit:()=>b?C():_(t)}),s===`preview`?(0,Q.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Q.jsx)(D,{content:e})}):b?(0,Q.jsx)(K,{value:S,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Q.jsx)(G,{content:p.content,readOnly:F,onStartEdit:()=>_(t)})]}),I]})}if(N&&p.content!=null){let e=b?S:p.content,n=ue(e);return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsx)($,{name:j,mimeType:A,rightContent:(0,Q.jsx)(pe,{viewMode:s,onChange:e=>{b&&C(),c(e)}})}),(0,Q.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Q.jsx)(q,{content:s===`preview`?n:e,downloadContent:e,fileName:j,mimeType:A,showEdit:!F&&s===`source`,isEditing:b,onToggleEdit:()=>b?C():_(t)}),s===`preview`?(0,Q.jsx)(G,{content:n,readOnly:!0,whiteSpace:`pre`}):b?(0,Q.jsx)(K,{value:S,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Q.jsx)(G,{content:p.content,readOnly:F,onStartEdit:()=>_(t)})]}),I]})}return P?(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsx)($,{name:j,mimeType:A,size:p.size}),(0,Q.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Q.jsx)(q,{content:b?S:p.content??``,fileName:j,mimeType:A,showEdit:!F,isEditing:b,onToggleEdit:()=>b?C():_(t)}),b?(0,Q.jsx)(K,{value:S,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Q.jsx)(G,{content:p.content??``,readOnly:F,onStartEdit:()=>_(t)})]}),I]}):A.startsWith(`image/`)||A.startsWith(`video/`)?(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsx)($,{name:j,mimeType:A,size:p.size}),(0,Q.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Q.jsx)(me,{assistantId:e,path:t,mimeType:A,showHidden:r})})]}):(0,Q.jsx)(he,{assistantId:e,path:t,name:j,mimeType:A,size:p.size,modifiedAt:p.modifiedAt,showHidden:r})}function _e(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}function ve(e){return c({queryFn:async()=>{let t={};e.query?.path&&(t.path=e.query.path),e.query?.showHidden&&(t.showHidden=`true`),e.query?.includeDirSizes&&(t.includeDirSizes=`true`);let{data:n,error:r}=await M({path:e.path,query:t});if(r)throw r;if(!n)throw Error(`Failed to load workspace tree`);return n},queryKey:[`assistantsWorkspaceTreeRetrieve`,e]})}async function ye(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await M({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function be({entry:e}){return e.type===`directory`?(0,Q.jsx)(I,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Q.jsx)(R,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Q.jsx)(L,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Q.jsx)(m,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function xe({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h}){let g=e.path??``,v=e.name??``,y=e.type===`directory`,x=n.has(g),S=r===g,C=v.startsWith(`.`),w=!Z(g),T=y&&(x||s.length>0),{data:E}=a({...ve({path:{assistant_id:t},query:{path:g,showHidden:i,includeDirSizes:o===`size`}}),enabled:y&&T}),D=(0,X.useMemo)(()=>_e(E?.entries??[],o),[E?.entries,o]),O=s===``||v.toLowerCase().includes(s);if(s!==``&&!y&&!O)return null;let k=(0,Q.jsxs)(`button`,{onClick:()=>{y?c(g):l(g)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${h*14+8}px`,paddingRight:`8px`,color:S?`var(--content-default)`:C?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:S?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:C&&!S?.7:1},children:[y?T?(0,Q.jsx)(u,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Q.jsx)(d,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Q.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Q.jsx)(be,{entry:e}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:v}),e.size!=null&&(0,Q.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:J(e.size)})]});return(0,Q.jsxs)(`div`,{children:[w?(0,Q.jsxs)(b.Root,{children:[(0,Q.jsx)(b.Trigger,{children:k}),(0,Q.jsxs)(b.Content,{children:[y&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(b.Item,{leftIcon:(0,Q.jsx)(z,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`file`,parentPath:g}),children:`New File`}),(0,Q.jsx)(b.Item,{leftIcon:(0,Q.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`folder`,parentPath:g}),children:`New Folder`}),(0,Q.jsx)(b.Separator,{})]}),(0,Q.jsx)(b.Item,{leftIcon:(0,Q.jsx)(V,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:g,name:v,isDirectory:y}),children:`Delete`}),(0,Q.jsx)(b.Item,{leftIcon:(0,Q.jsx)(_,{className:`h-3.5 w-3.5`}),onSelect:()=>p({path:g,name:v,isDirectory:y}),children:`Rename`})]})]}):k,y&&T&&D.length>0&&(0,Q.jsx)(`div`,{children:D.map(e=>(0,Q.jsx)(xe,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h+1},e.path))})]})}function Se({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,X.useRef)(null),[d,f]=(0,X.useState)(a??``),p=d.trim(),m=p.length>0&&(/[/\\]/.test(p)||p===`.`||p===`..`),h=p.length>0&&!m&&!c;return(0,Q.jsx)(S.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Q.jsx)(S.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Q.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),h&&s(p)},children:[(0,Q.jsx)(S.Header,{children:(0,Q.jsx)(S.Title,{children:e})}),(0,Q.jsx)(S.Body,{children:(0,Q.jsx)(x,{ref:u,label:`Name`,value:d,onChange:e=>f(e.target.value),placeholder:t,errorText:l??(m?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Q.jsxs)(S.Footer,{children:[(0,Q.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,Q.jsx)(n,{type:`submit`,variant:`primary`,disabled:!h,children:c?i:r})]})]})})})}function Ce({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:m,onPathRenamed:h}){let g=i(),[_,v]=(0,X.useState)(``),b=_.trim().toLowerCase(),[S,C]=(0,X.useState)(!1),[w,E]=(0,X.useState)(null),[D,O]=(0,X.useState)(null),M=(0,X.useCallback)(()=>{E(null),O(null)},[]),{data:P,isLoading:F}=a(ve({path:{assistant_id:e},query:{showHidden:s,includeDirSizes:c===`size`}})),I=(0,X.useMemo)(()=>_e(P?.entries??[],c),[P?.entries,c]),L=(0,X.useCallback)(()=>{for(let e of[`assistantsWorkspaceTreeRetrieve`,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])g.invalidateQueries({queryKey:[e]})},[g]),R=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await ye(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await k({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await N({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{M(),L(),e.parentPath&&u(e.parentPath),e.kind===`file`?d(e.path):u(e.path)},onError:e=>{O(e instanceof Error?e.message:`Failed to create.`)}}),z=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await ye(e,r,t.newName,i);let{error:o,response:s}=await A({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{M(),L(),h(e,t)},onError:e=>{O(e instanceof Error?e.message:`Failed to rename.`)}}),B=(0,X.useCallback)(e=>{O(null),E({type:`create`,...e})},[]),V=(0,X.useCallback)(e=>{O(null),E({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,X.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await j({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{U(null),L(),m(e.path)}}),G=(0,X.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Q.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Q.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Q.jsx)(ae,{"aria-hidden":!0}):(0,Q.jsx)(ie,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Q.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Q.jsx)(ee,{"aria-hidden":!0}):(0,Q.jsx)(te,{"aria-hidden":!0}),onClick:f,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Q.jsx)(we,{open:S,onOpenChange:C,onSelectKind:e=>{C(!1),B({kind:e,parentPath:``})}})]})]}),(0,Q.jsx)(`div`,{className:`px-3 py-2`,children:(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(x,{type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:`Search files`,leftIcon:(0,Q.jsx)(ne,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),_&&(0,Q.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(y,{"aria-hidden":!0}),onClick:()=>v(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:F?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Q.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):I.length?I.map(n=>(0,Q.jsx)(xe,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:b,onToggleExpand:l,onSelectPath:d,onRequestDelete:G,onRequestRename:V,onRequestCreate:B,depth:0},n.path)):(0,Q.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),w?.type===`create`&&(0,Q.jsx)(Se,{title:w.kind===`file`?`New File`:`New Folder`,placeholder:w.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:M,onConfirm:e=>{O(null),R.mutate({kind:w.kind,parentPath:w.parentPath,name:e})},pending:R.isPending,error:D},`create-${w.kind}-${w.parentPath}`),w?.type===`rename`&&(0,Q.jsx)(Se,{title:`Rename`,placeholder:w.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:w.name,onCancel:M,onConfirm:e=>{if(e===w.name){M();return}O(null),z.mutate({oldPath:w.path,newName:e})},pending:z.isPending,error:D},`rename-${w.path}`),(0,Q.jsx)(T,{open:H!==null,title:H?.isDirectory?`Delete Folder`:`Delete File`,message:(0,Q.jsxs)(Q.Fragment,{children:[`Are you sure you want to delete`,` `,(0,Q.jsx)(`span`,{style:{color:`var(--content-default)`},children:H?.name}),H?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,W.error&&(0,Q.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function we({open:e,onOpenChange:t,onSelectKind:r}){return B()?(0,Q.jsxs)(C.Root,{open:e,onOpenChange:t,children:[(0,Q.jsx)(C.Trigger,{asChild:!0,children:(0,Q.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(v,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Q.jsxs)(C.Content,{children:[(0,Q.jsx)(C.Header,{className:`sr-only`,children:(0,Q.jsx)(C.Title,{children:`Create new`})}),(0,Q.jsxs)(C.Body,{className:`pt-0`,children:[(0,Q.jsx)(w,{icon:z,label:`New File`,onSelect:()=>r(`file`)}),(0,Q.jsx)(w,{icon:Y,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,Q.jsxs)(f.Root,{open:e,onOpenChange:t,children:[(0,Q.jsx)(f.Trigger,{asChild:!0,children:(0,Q.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(v,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Q.jsxs)(f.Content,{align:`end`,sideOffset:4,children:[(0,Q.jsx)(f.Item,{leftIcon:(0,Q.jsx)(z,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,Q.jsx)(f.Item,{leftIcon:(0,Q.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function Te(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function Ee({assistantId:e}){let[t,n]=r(),[i,a]=(0,X.useState)(()=>{let e=t.get(`file`);return e?Te(e):new Set}),[o,s]=(0,X.useState)(()=>t.get(`file`)),[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,X.useState)(`preview`);(0,X.useEffect)(()=>{t.get(`file`)&&n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0})},[]);let m=(0,X.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,X.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,X.useState)(!1),v=(0,X.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,X.useState)(null),x=(0,X.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,X.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,X.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,Q.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,Q.jsx)(U,{onClick:()=>_(!0)})}),(0,Q.jsx)(W,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,Q.jsx)(Ce,{...w})}),(0,Q.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,Q.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Q.jsx)(Ce,{...w})}),(0,Q.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Q.jsx)(ge,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function De(){return(0,Q.jsx)(Ee,{assistantId:H()})}export{De as WorkspacePage};