@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.
- package/dist/assets/{AnimatePresence-C8APSgIu.js → AnimatePresence-s1Z1HHWx.js} +1 -1
- package/dist/assets/{BundleConfirmPage-M2tkzwiz.js → BundleConfirmPage-C6bP7QB3.js} +1 -1
- package/dist/assets/{about-page-C-kIVb7a.js → about-page-XGv9RAQu.js} +1 -1
- package/dist/assets/{account-page-DOSnPXjP.js → account-page-Dno1SeJN.js} +1 -1
- package/dist/assets/{account-shell-74OchOxg.js → account-shell-CdhP9l8T.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-DFoD_DVJ.js → acp-run-detail-panel-B1-zyOUe.js} +4 -4
- package/dist/assets/{activity-steps-panel-jztC4BRv.js → activity-steps-panel-BGyfMCXK.js} +1 -1
- package/dist/assets/{add-credits-modal-daNASKHJ.js → add-credits-modal-PP1PX8Qv.js} +1 -1
- package/dist/assets/{advanced-page-B8h5sAe5.js → advanced-page-vCbMVJsK.js} +1 -1
- package/dist/assets/{ai-page-BInYrZV7.js → ai-page-BIYybKux.js} +1 -1
- package/dist/assets/{animated-avatar-CrlodWQr.js → animated-avatar-Cqpzb8O4.js} +1 -1
- package/dist/assets/{api-key-screen-Cynx0r0g.js → api-key-screen-DTSP_-Da.js} +1 -1
- package/dist/assets/{archive-page-DqXRVFoF.js → archive-page-RZ2VP63A.js} +1 -1
- package/dist/assets/{assistant-feature-flag-store-CKUjJHuh.js → assistant-feature-flag-store-DA8Oj9Mf.js} +1 -1
- package/dist/assets/{assistant-status-panel-eNWJodpn.js → assistant-status-panel-BC0RTDls.js} +1 -1
- package/dist/assets/{auth-store-CD7PGb3q.js → auth-store-C09YAZEu.js} +2 -2
- package/dist/assets/{background-task-detail-panel-Bsi8IoaY.js → background-task-detail-panel-BfnsD-3B.js} +1 -1
- package/dist/assets/{billing-page-dpKYjJH3.js → billing-page-1z_L2m6q.js} +3 -3
- package/dist/assets/{bookmarks-page-BI92Y3eM.js → bookmarks-page-CjcavZv8.js} +1 -1
- package/dist/assets/{browser-BPZAXjRE.js → browser-C6a_nhhZ.js} +2 -2
- package/dist/assets/{build-state-DGsKGdpj.js → build-state-PUXrUU4W.js} +1 -1
- package/dist/assets/channels-page-route-WjNmd0sS.js +9 -0
- package/dist/assets/chat-markdown-message-BnX6bhgs.js +2 -0
- package/dist/assets/{client-feature-flag-store-C0g8zi1W.js → client-feature-flag-store-DkJl-g9A.js} +1 -1
- package/dist/assets/{command-palette-Dk6UsSlv.js → command-palette-6o4m7BM9.js} +1 -1
- package/dist/assets/{command-palette-window-page-zDow8o4K.js → command-palette-window-page-BsJlr5bh.js} +1 -1
- package/dist/assets/community-page-CJA4JfuC.js +1 -0
- package/dist/assets/{connect-page-BXTqYbdY.js → connect-page-DZgU3jCf.js} +1 -1
- package/dist/assets/{consent-controls-BZMxm0n3.js → consent-controls-Cnr1DzCr.js} +1 -1
- package/dist/assets/contacts-page-route-P0neH-PV.js +1 -0
- package/dist/assets/{credentials-page-0S5ifTFC.js → credentials-page-MkKE_19-.js} +1 -1
- package/dist/assets/debug-page-B88f4aDU.js +4 -0
- package/dist/assets/{deploy-dialogs-BBHNKgDi.js → deploy-dialogs-paL_zcvG.js} +1 -1
- package/dist/assets/{detail-card-RGTjHkZ8.js → detail-card-xKZlkbz5.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-oIDUq-kJ.js → detail-panel-stop-button-y7O3HqJj.js} +1 -1
- package/dist/assets/{developer-page-Djolz4Fg.js → developer-page-BFMS6pwU.js} +1 -1
- package/dist/assets/{devices-page-XJJSA97y.js → devices-page-B3D5iLhD.js} +1 -1
- package/dist/assets/{dictation-overlay-page-cqsEjyx_.js → dictation-overlay-page-BkEBWrWm.js} +1 -1
- package/dist/assets/{document-viewer-page-jInmb33M.js → document-viewer-page-B631L6-3.js} +1 -1
- package/dist/assets/{earn-credits-modal-C_jhLLw5.js → earn-credits-modal-CFla-iKl.js} +1 -1
- package/dist/assets/edge-swipe-arbiter-store-BeOhrE7M.js +1 -0
- package/dist/assets/{emails-page-fov7ihfj.js → emails-page-7c9kVi_k.js} +1 -1
- package/dist/assets/{esm-Ddmch1KU.js → esm-Bzs_witt.js} +2 -2
- package/dist/assets/{esm-CYMQv-VS.js → esm-C5J59K0j.js} +2 -2
- package/dist/assets/{esm-CTXnt94k.js → esm-CT8NUp3h.js} +2 -2
- package/dist/assets/esm-DEu9JbAE.js +2 -0
- package/dist/assets/{esm-BciT3LGF.js → esm-DZkj1VLJ.js} +2 -2
- package/dist/assets/{esm-CvWQdH3L.js → esm-DtJz1M8R.js} +2 -2
- package/dist/assets/{feature-flag-catalog-CHuc71P8.js → feature-flag-catalog-GgSNKkqP.js} +1 -1
- package/dist/assets/{file-markdown-BXUvAQ24.js → file-markdown-Bq97tNxs.js} +1 -1
- package/dist/assets/{general-page-gojItIOd.js → general-page-D-Gr2lkW.js} +1 -1
- package/dist/assets/{haptics-DKVhthJo.js → haptics-lMERs7us.js} +2 -2
- package/dist/assets/hatching-screen-BlwicgIz.js +1 -0
- package/dist/assets/home-page-route-D24x4A0S.js +1 -0
- package/dist/assets/{hosting-screen-BTLHWS2M.js → hosting-screen-BZLZular.js} +1 -1
- package/dist/assets/identity-page-route-BwOJeenx.js +1 -0
- package/dist/assets/{index-BjtwYdrT.css → index-C9GrLGul.css} +1 -1
- package/dist/assets/{index-CSefSVJO.js → index-yu6nDHvG.js} +21 -21
- package/dist/assets/{inspect-page-CT8NspqC.js → inspect-page-1RejwSP_.js} +4 -4
- package/dist/assets/{integrations-page-DtClqS91.js → integrations-page-BV5BiHPD.js} +1 -1
- package/dist/assets/{intelligence-layout-D9ReVcK0.js → intelligence-layout-iQFO8in_.js} +1 -1
- package/dist/assets/{keyboard-shortcuts-page-CovdLPhh.js → keyboard-shortcuts-page-jt13JtxS.js} +1 -1
- package/dist/assets/{library-detail-page-MAsxHH08.js → library-detail-page-BAGWt1Lw.js} +1 -1
- package/dist/assets/{library-page-CYuSc92M.js → library-page-CqeoBhDY.js} +1 -1
- package/dist/assets/{login-flow-CHNlba5i.js → login-flow-B6q00uIW.js} +1 -1
- package/dist/assets/{login-page-CK1TxruP.js → login-page-BQVTWuQc.js} +1 -1
- package/dist/assets/{logout-page-W3gl_1Ax.js → logout-page-BV0URcAd.js} +1 -1
- package/dist/assets/{logs-layout-CR7u05YO.js → logs-layout-DO3yfZqD.js} +1 -1
- package/dist/assets/{memory-router-playground-page-eDjKwsbG.js → memory-router-playground-page-CQxX6mCn.js} +1 -1
- package/dist/assets/{metric-card-BN23geOu.js → metric-card-DvXjHVCV.js} +1 -1
- package/dist/assets/{mobile-sidebar-drawer-3LqMCZgK.js → mobile-sidebar-drawer-Epbt6p-k.js} +1 -1
- package/dist/assets/{native-file-Cn3RbQbT.js → native-file-DI99Emal.js} +2 -2
- package/dist/assets/{notifications-page-CtyUuC15.js → notifications-page-CXaZpD3s.js} +1 -1
- package/dist/assets/{oauth-complete-page-3DcY6Or3.js → oauth-complete-page-BlJm9tRJ.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-Cn-1bOwa.js → oauth-popup-complete-page-BqUopTat.js} +1 -1
- package/dist/assets/{page-shell-C2TBO8M8.js → page-shell-BUGBKCmv.js} +1 -1
- package/dist/assets/{pairing-page-Bb-_q_zP.js → pairing-page-B5GrCx4C.js} +1 -1
- package/dist/assets/{platform-loopback-page-Dfl_gjZm.js → platform-loopback-page-MZdCPXRI.js} +1 -1
- package/dist/assets/{plugin-detail-page-C_vv0F7O.js → plugin-detail-page-Byuqbr1N.js} +1 -1
- package/dist/assets/plugins-page-Ci0CoSAN.js +1 -0
- package/dist/assets/{prechat-route-CgCradwf.js → prechat-route-9JFn-w_1.js} +1 -1
- package/dist/assets/{prefs-DYaOj-dg.js → prefs-B1Y3q3c8.js} +1 -1
- package/dist/assets/{privacy-page-BqYdFos7.js → privacy-page-BTpvj9ZP.js} +1 -1
- package/dist/assets/{privacy-screen-DBMkRqiF.js → privacy-screen-CUbVcDf_.js} +1 -1
- package/dist/assets/{provider-callback-page-B-aDgII8.js → provider-callback-page-fB2tIyqL.js} +1 -1
- package/dist/assets/{provider-signup-page-CYK4VNf0.js → provider-signup-page-C4Dn-wtJ.js} +1 -1
- package/dist/assets/{quick-input-page-oif3WEFT.js → quick-input-page-Cv_CzapK.js} +1 -1
- package/dist/assets/{research-mock-page-CooZPqtv.js → research-mock-page-1T92rXz3.js} +1 -1
- package/dist/assets/{research-onboarding-route-BJqAsTdE.js → research-onboarding-route-CmWgwOFk.js} +3 -3
- package/dist/assets/{review-terms-screen-CVRYEl6e.js → review-terms-screen-DrD4vywk.js} +1 -1
- package/dist/assets/{risk-Dsj4oM8c.js → risk-Dopd25rc.js} +1 -1
- package/dist/assets/{security-page-DN5BI6Ag.js → security-page-BYI7twYM.js} +1 -1
- package/dist/assets/select-assistant-screen-Br-PNDO1.js +1 -0
- package/dist/assets/{settings-layout-BNwCqvBi.js → settings-layout-lddMUg7A.js} +1 -1
- package/dist/assets/share-feedback-modal-DSwfhMsV.js +1 -0
- package/dist/assets/{sidebar-tree-Bh-tcSsp.js → sidebar-tree-C1_LiBB9.js} +1 -1
- package/dist/assets/{signup-page-D6cMhBxv.js → signup-page-D6hAK-Us.js} +1 -1
- package/dist/assets/{signup-shell-D4Afeijm.js → signup-shell-DufHA5do.js} +1 -1
- package/dist/assets/{site-favicon-DSzk4cg0.js → site-favicon-fQHLTT6F.js} +1 -1
- package/dist/assets/{skill-detail-page-Jisds_Gs.js → skill-detail-page-BlfgTyFC.js} +1 -1
- package/dist/assets/{skill-detail-panel-BEJqfJig.js → skill-detail-panel-BGoRUWNU.js} +1 -1
- package/dist/assets/{skills-CSlvOB79.js → skills-AtSQBwXr.js} +1 -1
- package/dist/assets/{skills-page-Cs1EG4X5.js → skills-page-DeIiyhVc.js} +1 -1
- package/dist/assets/{sounds-page-ChFJ0OPm.js → sounds-page-BgLLJ-o9.js} +1 -1
- package/dist/assets/{src-B2IjVySQ.js → src-zsLiFPw3.js} +1 -1
- package/dist/assets/{subagent-detail-panel-ACj_B6Id.js → subagent-detail-panel-BGuVa8-m.js} +1 -1
- package/dist/assets/{system-events-page-JhzC5xhW.js → system-events-page-C1hXOYmg.js} +1 -1
- package/dist/assets/{tiptap-document-editor-DSny-IjF.js → tiptap-document-editor-C-eOEBR_.js} +1 -1
- package/dist/assets/tool-detail-panel-wAuQ7gi8.js +2 -0
- package/dist/assets/{upgrade-cancel-page-D_YziHQs.js → upgrade-cancel-page-BGgPmDmT.js} +1 -1
- package/dist/assets/{upgrade-success-page-Cg7IIDei.js → upgrade-success-page-TJBopZ0Z.js} +1 -1
- package/dist/assets/{usage-page-DB3LFuYw.js → usage-page-DLWFk2P0.js} +1 -1
- package/dist/assets/use-edge-swipe-back-B4XlZ1Iu.js +1 -0
- package/dist/assets/use-invite-link-dialog-BdnW1BHj.js +1 -0
- package/dist/assets/use-is-org-ready-jhEM-4rY.js +1 -0
- package/dist/assets/{use-onboarding-login-Bo_t51AV.js → use-onboarding-login-B-1jrjFL.js} +1 -1
- package/dist/assets/{use-reduced-motion-CcGT6CHV.js → use-reduced-motion-Cj0Z8KSf.js} +1 -1
- package/dist/assets/{use-skill-actions-e6TfdF23.js → use-skill-actions-BpVxiQZY.js} +1 -1
- package/dist/assets/{use-skill-categories-i_9x26zg.js → use-skill-categories-CCxtjMC_.js} +1 -1
- package/dist/assets/{use-skill-detail-files-Cu4nrHPA.js → use-skill-detail-files-Dpp521cY.js} +1 -1
- package/dist/assets/{voice-page-wTcwV9j9.js → voice-page-BoCTB8Jx.js} +1 -1
- package/dist/assets/{weather-forecast-display-C_3DSHxa.js → weather-forecast-display-Bix8rpji.js} +1 -1
- package/dist/assets/{web-DlbBHOna.js → web-C1L-cpPj.js} +1 -1
- package/dist/assets/{web-BpBQ3Cf2.js → web-RhBklijR.js} +1 -1
- package/dist/assets/{welcome-screen-BF3r_rfT.js → welcome-screen-CVI4Hjnt.js} +1 -1
- package/dist/assets/{workflow-detail-panel-DzvDXyoD.js → workflow-detail-panel-CwZH3tDl.js} +1 -1
- package/dist/assets/workspace-page-CwIsXk1j.js +1 -0
- package/dist/index.html +28 -27
- package/package.json +1 -1
- package/dist/assets/channels-page-route-6cT6U3pZ.js +0 -9
- package/dist/assets/chat-markdown-message-CItp7csw.js +0 -2
- package/dist/assets/community-page-BVJxxP10.js +0 -1
- package/dist/assets/contacts-page-route-WXG6_xo2.js +0 -1
- package/dist/assets/debug-page-C-HWHD-3.js +0 -4
- package/dist/assets/esm-DsIXwGm7.js +0 -2
- package/dist/assets/hatching-screen-C0MNyetb.js +0 -1
- package/dist/assets/home-page-route-X4KYSdMI.js +0 -1
- package/dist/assets/identity-page-route-D5xzlpim.js +0 -1
- package/dist/assets/plugins-page-Cv0FXn1j.js +0 -1
- package/dist/assets/select-assistant-screen-B63mlflD.js +0 -1
- package/dist/assets/share-feedback-modal-BloP-1QE.js +0 -1
- package/dist/assets/tool-detail-panel-z5iYNIYq.js +0 -2
- package/dist/assets/use-edge-swipe-back-AcKDuMrX.js +0 -1
- package/dist/assets/use-invite-link-dialog-CExxDwnZ.js +0 -1
- package/dist/assets/use-is-org-ready-BtwH2--_.js +0 -1
- package/dist/assets/workspace-page-DCcsRyQz.js +0 -1
- /package/dist/assets/{a2a-invite-BriFFHnO.js → a2a-invite-B9cylfIO.js} +0 -0
- /package/dist/assets/{app-info-LSjlWG3w.js → app-info-Clwt3pCt.js} +0 -0
- /package/dist/assets/{build.umd-wlq6sZjw.js → build.umd-CxdKgGWo.js} +0 -0
- /package/dist/assets/{contacts-gateway-CNqVHBQ3.js → contacts-gateway-CW5CipBv.js} +0 -0
- /package/dist/assets/{credential-entry-page-jJzKVnQk.js → credential-entry-page-9H2HOu88.js} +0 -0
- /package/dist/assets/{danger-zone-redirect-page-DL5S8CAN.js → danger-zone-redirect-page-BWg7rn8D.js} +0 -0
- /package/dist/assets/{definitions-alqf_FBK.js → definitions-CaYcW4Yq.js} +0 -0
- /package/dist/assets/{definitions-B1DK4OsQ.js → definitions-DScTW2c-.js} +0 -0
- /package/dist/assets/{emoji-catalog-data-D_xqkMQV.js → emoji-catalog-data-D8lRMt3A.js} +0 -0
- /package/dist/assets/{environment-store-fb1I8_0E.js → environment-store-C0f32873.js} +0 -0
- /package/dist/assets/{esm-DwTCNETa.js → esm-B54gzHCZ.js} +0 -0
- /package/dist/assets/{file-editor-BbrbkQCm.js → file-editor-sT7eHxsw.js} +0 -0
- /package/dist/assets/{format-date-BczUbfC1.js → format-date-CghpPTDc.js} +0 -0
- /package/dist/assets/{format-file-size-D7iZejgy.js → format-file-size-DzVEncaw.js} +0 -0
- /package/dist/assets/{llm-dimension-Bu_nHMF_.js → llm-dimension-DyYwG3mU.js} +0 -0
- /package/dist/assets/{mutation-error-CrhKyTkx.js → mutation-error-DYv0eJ_i.js} +0 -0
- /package/dist/assets/{onboarding-step-layout-zvLUIT7j.js → onboarding-step-layout-2XcmxqFN.js} +0 -0
- /package/dist/assets/{optimistic-lifecycle-DTggtDfs.js → optimistic-lifecycle-BvfDBY8o.js} +0 -0
- /package/dist/assets/{password-reset-page-DVIt7mWy.js → password-reset-page-BCk9Si73.js} +0 -0
- /package/dist/assets/{pdf-CuY9CA7Q.js → pdf-C3Qukw-J.js} +0 -0
- /package/dist/assets/{plugins-surface-C7NU-_rg.js → plugins-surface-z3RTZS4H.js} +0 -0
- /package/dist/assets/{prechat-names-b5RkG_F-.js → prechat-names-clVy5Mee.js} +0 -0
- /package/dist/assets/{provider-key-DBiHV_K5.js → provider-key-3AHnKoz9.js} +0 -0
- /package/dist/assets/{proxy-BzlH_XAe.js → proxy-o6cPThl2.js} +0 -0
- /package/dist/assets/{public-asset-Di3QykUd.js → public-asset-GKv5zCfZ.js} +0 -0
- /package/dist/assets/{schedules-Dj3YQqG5.js → schedules-BfKi12EZ.js} +0 -0
- /package/dist/assets/{setting-row-QKgqbQ4U.js → setting-row-CUka7_L9.js} +0 -0
- /package/dist/assets/{skill-icon-CEEEqpSq.js → skill-icon-cNkD2w1X.js} +0 -0
- /package/dist/assets/{status-badge-pill-BopXdkRS.js → status-badge-pill-0N6rTEBg.js} +0 -0
- /package/dist/assets/{step-indicator-dots-Cou0-IgA.js → step-indicator-dots-D03TmFKG.js} +0 -0
- /package/dist/assets/{system-events-redirect-page-D5EfWOEK.js → system-events-redirect-page-DbaFKRXH.js} +0 -0
- /package/dist/assets/{three-dot-indicator-BVtP8eei.js → three-dot-indicator-DNuHHwtA.js} +0 -0
- /package/dist/assets/{usage-window-Btqj3Jpn.js → usage-window-C6gWu5Qu.js} +0 -0
- /package/dist/assets/{use-active-assistant-id-BNRMo_Mi.js → use-active-assistant-id-BWXi63qg.js} +0 -0
- /package/dist/assets/{use-copy-to-clipboard-tXJpCn2M.js → use-copy-to-clipboard-BCTXSMa-.js} +0 -0
- /package/dist/assets/{web-CsaTwTXy.js → web-BD2N6zhd.js} +0 -0
- /package/dist/assets/{web-Xex3K4gk.js → web-BaubW4Pp.js} +0 -0
- /package/dist/assets/{web-U-rR-rZR.js → web-CJiP8Lg6.js} +0 -0
- /package/dist/assets/{web-D5_lKOWn.js → web-D8PpvYf_.js} +0 -0
- /package/dist/assets/{web-B9ZvD-Tt.js → web-Duw5A2aP.js} +0 -0
- /package/dist/assets/{web-Bi2V5gD3.js → web-O1LOb-o9.js} +0 -0
- /package/dist/assets/{xterm-D9pOJCAq.js → xterm-CBmd_y-b.js} +0 -0
- /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};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/assets/{credential-entry-page-jJzKVnQk.js → credential-entry-page-9H2HOu88.js}
RENAMED
|
File without changes
|
/package/dist/assets/{danger-zone-redirect-page-DL5S8CAN.js → danger-zone-redirect-page-BWg7rn8D.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/assets/{onboarding-step-layout-zvLUIT7j.js → onboarding-step-layout-2XcmxqFN.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/assets/{use-active-assistant-id-BNRMo_Mi.js → use-active-assistant-id-BWXi63qg.js}
RENAMED
|
File without changes
|
/package/dist/assets/{use-copy-to-clipboard-tXJpCn2M.js → use-copy-to-clipboard-BCTXSMa-.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|