@vellumai/web 0.11.4-staging.3 → 0.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{Trans-BUsRawhS.js → Trans-FBE1EuwL.js} +1 -1
- package/dist/assets/{access-Cngxal_O.js → access-D0krXly2.js} +1 -1
- package/dist/assets/account-DEWe1CJv.js +1 -0
- package/dist/assets/{account-page-IVZcGHZy.js → account-page-Df1VB34_.js} +1 -1
- package/dist/assets/{account-shell-DdH2Ze4T.js → account-shell-Dk4m-iaE.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-UjpE_MSy.js → acp-run-detail-panel-DsqMAPE4.js} +1 -1
- package/dist/assets/{activity-steps-panel-ChM6OAY8.js → activity-steps-panel-C9z9FMmK.js} +1 -1
- package/dist/assets/{add-credits-modal-ByR0kDly.js → add-credits-modal-RIAYgbOT.js} +1 -1
- package/dist/assets/{ai-page-BmOCqfyq.js → ai-page-CI4LZXTY.js} +1 -1
- package/dist/assets/api-BjYAXdCk.js +1 -0
- package/dist/assets/{api-CQ3nejmH.js → api-Cx3i50oG.js} +1 -1
- package/dist/assets/{api-key-screen-BnQoBDlm.js → api-key-screen-BKFAcyqU.js} +1 -1
- package/dist/assets/{app-card--MsNli_3.js → app-card-CjRGDYCX.js} +1 -1
- package/dist/assets/{assistant-status-panel-BkuUZfnZ.js → assistant-status-panel-BkLYzQAL.js} +1 -1
- package/dist/assets/{auth-store-DDMY1UvK.js → auth-store-CVtcHK0b.js} +2 -2
- package/dist/assets/auth-welcome-screen-Pw3qXxi5.js +1 -0
- package/dist/assets/{avatar-random-D1LU-C7V.js → avatar-random-B5F8Cp2E.js} +1 -1
- package/dist/assets/{background-task-detail-panel-DQeMsdpK.js → background-task-detail-panel-DtJ1ZolD.js} +1 -1
- package/dist/assets/{billing-page-BU6n42tO.js → billing-page-CmVjD4bw.js} +3 -3
- package/dist/assets/{bookmarks-page-DIzvqlcG.js → bookmarks-page-DUbnEAgS.js} +1 -1
- package/dist/assets/{browser-Nd92UvKg.js → browser-Ca2R8csw.js} +2 -2
- package/dist/assets/{build-state-BZ5ujToI.js → build-state-laR44jYU.js} +1 -1
- package/dist/assets/channels-page-route-sLLh-p2k.js +9 -0
- package/dist/assets/{chat-C0-tqEYA.js → chat-1xy90pMn.js} +1 -1
- package/dist/assets/{chat-BWQujip4.js → chat-CHVUM3s0.js} +1 -1
- package/dist/assets/{chat-markdown-message-mIiMHNFn.js → chat-markdown-message-CtLdsT2K.js} +1 -1
- package/dist/assets/{checkout-continuation-UVo_MUjH.js → checkout-continuation-BvY4Kjz7.js} +1 -1
- package/dist/assets/{checkout-page-C1hWo56h.js → checkout-page-CWRkiEj1.js} +1 -1
- package/dist/assets/checkout-return-target-_Y86sfo0.js +1 -0
- package/dist/assets/{client-perf-DHnnpVkx.js → client-perf-BZu5XQCP.js} +1 -1
- package/dist/assets/{command-palette-C6fyPEFS.js → command-palette-B6PZe9A0.js} +1 -1
- package/dist/assets/command-palette-window-page-BYkkAV88.js +1 -0
- package/dist/assets/{community-page-DK1RRzQb.js → community-page-Dd84pjdI.js} +1 -1
- package/dist/assets/companion-surface-CZHv2avR.js +1 -0
- package/dist/assets/companion-surface-page-BvDSOFVH.js +1 -0
- package/dist/assets/{composer-settings-Bs2Ux46E.js → composer-settings-DBAb6W2i.js} +1 -1
- package/dist/assets/{connect-page-DcyvGKph.js → connect-page-DiO1EqEC.js} +1 -1
- package/dist/assets/{consent-controls-BqSz1Rrx.js → consent-controls-B_zCicqo.js} +1 -1
- package/dist/assets/{contacts-page-route--H1bhesC.js → contacts-page-route-fUfbhwZ5.js} +1 -1
- package/dist/assets/{conversation-cache-C3KMXxZQ.js → conversation-cache-qk0nNm6Q.js} +1 -1
- package/dist/assets/{conversation-navigation-DQEOhOXf.js → conversation-navigation-B_4jZ9Z2.js} +1 -1
- package/dist/assets/{conversation-queries-Crrs0Ih6.js → conversation-queries-M4Inozp_.js} +1 -1
- package/dist/assets/{conversation-selection-BFTHfyYb.js → conversation-selection-4ubh2ui-.js} +1 -1
- package/dist/assets/{credential-entry-page-DNW0ZIUD.js → credential-entry-page--HYBfvoW.js} +1 -1
- package/dist/assets/{credentials-page-BUxLoFkv.js → credentials-page-C-e4DqWt.js} +1 -1
- package/dist/assets/{csv-preview-FnIpBtF1.js → csv-preview-T_KT_vef.js} +1 -1
- package/dist/assets/{debug-page-01b8L6vC.js → debug-page-Be5Y5TVM.js} +2 -2
- package/dist/assets/{deploy-dialogs-I_QAK81w.js → deploy-dialogs-CgicOESj.js} +1 -1
- package/dist/assets/{deploy-store-C-WH19q9.js → deploy-store-dyN183E8.js} +1 -1
- package/dist/assets/{desktop-voice-activity-CPOU-25i.js → desktop-voice-activity-D1BSf0I-.js} +1 -1
- package/dist/assets/{detail-card-BzCuPjtL.js → detail-card-Bqnvs6YE.js} +1 -1
- package/dist/assets/{detail-drawer-CYUmZIyK.js → detail-drawer-j2jaITAL.js} +1 -1
- package/dist/assets/{detail-shell-B1BZYIqh.js → detail-shell-D1UEZCzz.js} +1 -1
- package/dist/assets/{developer-page-DshJ0gl6.js → developer-page-DD8xa8mQ.js} +1 -1
- package/dist/assets/{diagnostics-BrWbafo7.js → diagnostics-CwFqcLv_.js} +1 -1
- package/dist/assets/{doctor-handoff-store-CX39mMuw.js → doctor-handoff-store-Cy96Na-O.js} +1 -1
- package/dist/assets/{document-viewer-container-Bb7omFZS.js → document-viewer-container-BMmSidmj.js} +2 -2
- package/dist/assets/{document-viewer-page-Cyul2rIj.js → document-viewer-page-tTTco75r.js} +1 -1
- package/dist/assets/{emails-page-CArz1548.js → emails-page-CJM4OS94.js} +1 -1
- package/dist/assets/{esm-DYyr0ITx.js → esm-BD6nxr-q.js} +2 -2
- package/dist/assets/{esm-DjphWBuP.js → esm-BaEdQNCe.js} +2 -2
- package/dist/assets/esm-CtKndoc9.js +2 -0
- package/dist/assets/{esm-CfdMbmKl.js → esm-DTIJZw37.js} +2 -2
- package/dist/assets/{esm-tSqvpvZa.js → esm-FpGTFn5W.js} +2 -2
- package/dist/assets/{esm-L7cqLUll.js → esm-kYXyJ2zw.js} +2 -2
- package/dist/assets/{esm-DbEwZ3Za.js → esm-nl105Ya0.js} +2 -2
- package/dist/assets/{external-anchor-DQhNmTOb.js → external-anchor-CLy6d_za.js} +1 -1
- package/dist/assets/feed-item-status-actions--CCeCtuw.js +1 -0
- package/dist/assets/file-markdown-C1rEGVrN.js +2 -0
- package/dist/assets/first-run-scope-DdSaiULx.js +1 -0
- package/dist/assets/format-usd-tespTIex.js +1 -0
- package/dist/assets/{funnel-events-BfR30ND5.js → funnel-events-BP3XPaB5.js} +1 -1
- package/dist/assets/general-page-Bi87XguF.js +1 -0
- package/dist/assets/{haptics-Sti0ZroX.js → haptics-D3hzTCtH.js} +2 -2
- package/dist/assets/{hatching-screen-DUCKM3qi.js → hatching-screen-DA0yyXD1.js} +1 -1
- package/dist/assets/home-page-route-BSoWksW0.js +1 -0
- package/dist/assets/{hosting-screen-By2Dt_ov.js → hosting-screen-cfhZ-ct7.js} +1 -1
- package/dist/assets/{i18n--HmJLuhM.js → i18n-C9hRT4Lf.js} +3 -3
- package/dist/assets/{identity-page-route-4IEB7D_s.js → identity-page-route-BjSsi8PM.js} +1 -1
- package/dist/assets/index-BmDctEOW.css +2 -0
- package/dist/assets/{index-CflMsKlP.js → index-I9kwAKzY.js} +3 -3
- package/dist/assets/{ingest-C3QOaKA5.js → ingest-DXklElaR.js} +1 -1
- package/dist/assets/{inspect-page-D3vuZY29.js → inspect-page-naqIziez.js} +3 -3
- package/dist/assets/{integrations-page-Ck4sUGfr.js → integrations-page-zrUmh2xn.js} +1 -1
- package/dist/assets/{intelligence-layout-2iu6OgCh.js → intelligence-layout-CXzIl0Vl.js} +1 -1
- package/dist/assets/{invalidate-memory-queries-CSQ9nfIN.js → invalidate-memory-queries-C4-KSsdB.js} +1 -1
- package/dist/assets/{latest-assistant-text-hKWwKxXi.js → latest-assistant-text-JCjtByys.js} +1 -1
- package/dist/assets/{library-detail-page-DcRn2wsJ.js → library-detail-page-CyWiXwb9.js} +1 -1
- package/dist/assets/{library-page-Db5Pstgx.js → library-page-CzcvMljL.js} +1 -1
- package/dist/assets/{local-runtime-upgrade-T5WFNI2L.js → local-runtime-upgrade-BkoG5uVr.js} +1 -1
- package/dist/assets/{login-flow-Bprf1KQp.js → login-flow-D6ivg6PM.js} +1 -1
- package/dist/assets/login-page-Dmpz0GgT.js +1 -0
- package/dist/assets/{logout-page-HF_SMBkj.js → logout-page-CI3LDcqG.js} +1 -1
- package/dist/assets/{logs-layout-CNyrG8d2.js → logs-layout-BHP-ADUq.js} +1 -1
- package/dist/assets/{markdown-preview-CYSaj1MV.js → markdown-preview-Dx8E021p.js} +1 -1
- package/dist/assets/{memory-page-route-DDdpEiCD.js → memory-page-route-qvBEERTa.js} +1 -1
- package/dist/assets/memory-router-playground-page-Bnxf4hzQ.js +1 -0
- package/dist/assets/{message-files-panel-25T5M1Ct.js → message-files-panel-ZPa7eZHc.js} +1 -1
- package/dist/assets/{messages-DJ6wO978.js → messages-CPTfRZA4.js} +1 -1
- package/dist/assets/{metric-card-Bg72JUq3.js → metric-card-bXd-f58c.js} +1 -1
- package/dist/assets/multi-activity-group-AECQlBbV.js +1 -0
- package/dist/assets/native-anchor-Bn22ZLay.js +1 -0
- package/dist/assets/{native-biometric-BxYhgb-X.js → native-biometric-D9IxNvJM.js} +1 -1
- package/dist/assets/{native-deep-link-C-s7GeV-.js → native-deep-link-IwasVyFQ.js} +2 -2
- package/dist/assets/{native-file-B3U837ed.js → native-file-BpFW1c_c.js} +2 -2
- package/dist/assets/{navigation-resolver-D4kCxpGf.js → navigation-resolver-jIQ5B6JB.js} +1 -1
- package/dist/assets/{not-found-DlCb1TjZ.js → not-found-ui-gcXqK.js} +1 -1
- package/dist/assets/{notifications-CZJragaI.js → notifications-DK6b8YVI.js} +1 -1
- package/dist/assets/{notifications-page-D7nqzDdY.js → notifications-page-GRXZE_lL.js} +1 -1
- package/dist/assets/{oauth-complete-page-4tmCqzLC.js → oauth-complete-page-7NZZRVcj.js} +1 -1
- package/dist/assets/{oauth-connection-utils-DmZFWfiy.js → oauth-connection-utils-19Tfw-lp.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-CjVEoYgl.js → oauth-popup-complete-page-Ci39YXpe.js} +1 -1
- package/dist/assets/{onboarding-step-layout-BfHbyjc0.js → onboarding-step-layout-2G2ptxpI.js} +1 -1
- package/dist/assets/open-workspace-file-CYf_Tqw3.js +2 -0
- package/dist/assets/{operational-status-T7FDD0t5.js → operational-status-CMN32PL8.js} +1 -1
- package/dist/assets/page-shell-C3ZmdIop.js +1 -0
- package/dist/assets/page-surface-store-DJLLsNFC.js +1 -0
- package/dist/assets/{pairing-page-CweLlHZS.js → pairing-page-YPN7ISIr.js} +1 -1
- package/dist/assets/{pdf-file-preview-6vptz6t6.js → pdf-file-preview-udA0Apx_.js} +1 -1
- package/dist/assets/{pdf-preview-sG04pSiE.js → pdf-preview-6Xfl1tO1.js} +2 -2
- package/dist/assets/{personality-page-DV3W2t42.js → personality-page-CLsRq5L2.js} +1 -1
- package/dist/assets/{plans-page-D-z14zHg.js → plans-page-DkVXE0Jv.js} +1 -1
- package/dist/assets/{platform-detection-Dt0-jSAU.js → platform-detection-zth6eCY8.js} +1 -1
- package/dist/assets/{platform-login-notice-jeJJGuqn.js → platform-login-notice-CvFpWLJY.js} +1 -1
- package/dist/assets/{platform-loopback-page-y_4YDCry.js → platform-loopback-page-B8cGk07e.js} +1 -1
- package/dist/assets/{preview-error-BkNW-Vj0.js → preview-error-gCViZZRw.js} +1 -1
- package/dist/assets/{privacy-page-BXSqDC_-.js → privacy-page-BxJ2Cuev.js} +1 -1
- package/dist/assets/{privacy-screen-BkGGAYzN.js → privacy-screen-DlSj_9FT.js} +1 -1
- package/dist/assets/{provider-callback-page-C-bl_GDk.js → provider-callback-page-BPp1TM7J.js} +1 -1
- package/dist/assets/{provider-signup-page-PSLa_T38.js → provider-signup-page-Cv9_b_58.js} +1 -1
- package/dist/assets/{provisioning-targets-QWEnNCue.js → provisioning-targets-DDUZDQ_a.js} +1 -1
- package/dist/assets/{push-registration-BMwgTQHf.js → push-registration-CH_t0mI8.js} +2 -2
- package/dist/assets/{remove-from-device-dialog-BDRSkSad.js → remove-from-device-dialog-DeJ_gAmf.js} +1 -1
- package/dist/assets/{research-facts-_ZlA6tzF.js → research-facts-C2cY_gU2.js} +1 -1
- package/dist/assets/{research-mock-page-PPKtT6UI.js → research-mock-page-CB1_bEoa.js} +1 -1
- package/dist/assets/research-onboarding-route-BY3X_d2-.js +50 -0
- package/dist/assets/{research-results-view-BFBI--6l.js → research-results-view-BcQs2Zh9.js} +1 -1
- package/dist/assets/{retire-confirm-dialog-DPyqO3ao.js → retire-confirm-dialog-f-A5OVYj.js} +1 -1
- package/dist/assets/{review-terms-screen-Cba1alNi.js → review-terms-screen-CI_29cnc.js} +1 -1
- package/dist/assets/routes-OwGjl0BS.js +24 -0
- package/dist/assets/{runtime-upgrade-banner-BrXnDFJZ.js → runtime-upgrade-banner-Cj9E7kWP.js} +2 -2
- package/dist/assets/{sandbox-bridge-CXqBkVsW.js → sandbox-bridge-Dj1pIOXJ.js} +1 -1
- package/dist/assets/{schedules-page-D81oQFHC.js → schedules-page-0V6ECw0t.js} +1 -1
- package/dist/assets/{section-membership-B23vBXXp.js → section-membership-vg-XaMPS.js} +1 -1
- package/dist/assets/{select-assistant-screen-Bpp_Fhfx.js → select-assistant-screen-BZxPQqe4.js} +1 -1
- package/dist/assets/{self-hosted-servers-DYKQjALI.js → self-hosted-servers-BviPyNnl.js} +1 -1
- package/dist/assets/settings-CEQzAg2m.js +1 -0
- package/dist/assets/{settings-divider-DGdHGRSV.js → settings-divider-C0NZsB-L.js} +1 -1
- package/dist/assets/{settings-layout-Vv6ixknD.js → settings-layout-DgNBNUT7.js} +1 -1
- package/dist/assets/settings-navigation-CVw10LL_.js +1 -0
- package/dist/assets/{share-feedback-modal-BIIdahKH.js → share-feedback-modal-PlN6X3Pm.js} +2 -2
- package/dist/assets/{sidebar-tree-BNzVigoN.js → sidebar-tree-Bp0eeKf2.js} +1 -1
- package/dist/assets/{signup-page-DwghsKON.js → signup-page-gqz5_wG1.js} +1 -1
- package/dist/assets/{site-favicon-D5oxJG4i.js → site-favicon-Cu07pwc9.js} +1 -1
- package/dist/assets/{skill-detail-page-DrVoo07c.js → skill-detail-page-c0s3w3K3.js} +1 -1
- package/dist/assets/{skill-detail-panel-Co6OpnMY.js → skill-detail-panel-NYXq557_.js} +1 -1
- package/dist/assets/{skills-CAAcLlNJ.js → skills-5MnTu98B.js} +1 -1
- package/dist/assets/{src-qDZBwoEm.js → src-CImIAPTd.js} +1 -1
- package/dist/assets/{start-screen-CO55WEqw.js → start-screen-CHO19RCi.js} +1 -1
- package/dist/assets/{status-badge-pill-CoGc_Kjf.js → status-badge-pill-D8m98tJa.js} +1 -1
- package/dist/assets/{stt-language-picker-modal-7-gnUFiL.js → stt-language-picker-modal-BXLEBM7b.js} +1 -1
- package/dist/assets/{subagent-detail-panel-B7yd49jl.js → subagent-detail-panel-CrbpQRzW.js} +1 -1
- package/dist/assets/{subagent-store-D79M-K__.js → subagent-store-DqKEBlAM.js} +1 -1
- package/dist/assets/{superpowers-page-B0zX5FZy.js → superpowers-page-B5WGXphq.js} +1 -1
- package/dist/assets/{swipe-action-reveal-Ctx7MIFN.js → swipe-action-reveal-Ai9lRgUU.js} +1 -1
- package/dist/assets/{system-events-page-7z3m1kM5.js → system-events-page-_aap_0av.js} +1 -1
- package/dist/assets/{telegram-setup-wizard-DhIkHgMe.js → telegram-setup-wizard-BENKNAuh.js} +1 -1
- package/dist/assets/{text-preview-DFo5f2uH.js → text-preview-DUlKYC4u.js} +1 -1
- package/dist/assets/{theme-stage-page-CmF6f7RN.js → theme-stage-page-CbGuxQ23.js} +1 -1
- package/dist/assets/{tiptap-document-editor-DDfxW_SE.js → tiptap-document-editor-0vqw7hch.js} +1 -1
- package/dist/assets/{tool-detail-panel-Zx64Drl4.js → tool-detail-panel-C2wUYsf2.js} +1 -1
- package/dist/assets/{trust-rules-api-BtUxkSk-.js → trust-rules-api-DRJ1qP-y.js} +1 -1
- package/dist/assets/{upgrade-cancel-page-H2SezHRI.js → upgrade-cancel-page-Dbd3VJdm.js} +1 -1
- package/dist/assets/{upgrade-success-page-DoM6CoFp.js → upgrade-success-page-CHbEmpjg.js} +1 -1
- package/dist/assets/{use-assistant-capability-CmwC8eoT.js → use-assistant-capability-C-yHcMH4.js} +1 -1
- package/dist/assets/{use-assistant-identity-details-DqD-wXki.js → use-assistant-identity-details-u9sG9ip2.js} +1 -1
- package/dist/assets/{use-attachment-preview-BfZe160h.js → use-attachment-preview-Cq_IWTdT.js} +2 -2
- package/dist/assets/{use-attachment-squares-jfCXyibr.js → use-attachment-squares-BKi30wmg.js} +1 -1
- package/dist/assets/{use-bookmarks-Dg-dtmf5.js → use-bookmarks-Bl4tx8xK.js} +1 -1
- package/dist/assets/{use-checkout-dismiss-refresh-lXbrGudW.js → use-checkout-dismiss-refresh-BHuxVDUc.js} +1 -1
- package/dist/assets/use-command-palette-sections-CvNjev8s.js +1 -0
- package/dist/assets/{use-edge-swipe-CJ8niuZL.js → use-edge-swipe-C4IrskOL.js} +1 -1
- package/dist/assets/use-edge-swipe-back-CiO9raEw.js +2 -0
- package/dist/assets/{use-edit-app-CAyA09nW.js → use-edit-app-ByAfCYIL.js} +1 -1
- package/dist/assets/{use-is-org-ready-BYJTuCXo.js → use-is-org-ready-GDBxqujc.js} +1 -1
- package/dist/assets/use-onboarding-login-BdVTfZ3o.js +1 -0
- package/dist/assets/{use-platform-assistant-id-CuqHJket.js → use-platform-assistant-id-B7TrEBmf.js} +1 -1
- package/dist/assets/{use-platform-gate-DJ7NtOkG.js → use-platform-gate-DG9Xg3Hs.js} +1 -1
- package/dist/assets/{use-return-to-short-circuit-CXFMS-0F.js → use-return-to-short-circuit-EtY8cSC7.js} +1 -1
- package/dist/assets/{use-side-list-room-DtmLatRX.js → use-side-list-room-CUXPQyjw.js} +1 -1
- package/dist/assets/{use-skill-actions-DjwFUePB.js → use-skill-actions-CdbZjq6a.js} +1 -1
- package/dist/assets/{use-sticky-profiles-BYBk-2VZ.js → use-sticky-profiles-vQLFyEh0.js} +1 -1
- package/dist/assets/{use-stt-language-selection-82DrT6kd.js → use-stt-language-selection-CK6bUfVS.js} +1 -1
- package/dist/assets/{use-subagent-card-data-CTkK6bHj.js → use-subagent-card-data-DlVOBxXw.js} +1 -1
- package/dist/assets/use-transcript-message-by-id-FmIIrRsf.js +1 -0
- package/dist/assets/{use-transcript-messages-BvoNGyuA.js → use-transcript-messages-Q1PBxvSF.js} +1 -1
- package/dist/assets/{use-voice-sample-preview-BHCiYpHq.js → use-voice-sample-preview-CZoWWEeH.js} +1 -1
- package/dist/assets/useTranslation-D9pPv-bA.js +1 -0
- package/dist/assets/{voice-page-CqgBuO-G.js → voice-page-B1mJ2hkc.js} +1 -1
- package/dist/assets/{voice-providers-note-DmCKsoh8.js → voice-providers-note-TDQxSwUj.js} +1 -1
- package/dist/assets/{web-C6ruWL7-.js → web-CxX3pST-.js} +1 -1
- package/dist/assets/{web-ByBZa2-p.js → web-D1mJSG8v.js} +1 -1
- package/dist/assets/welcome-screen-DPXQU47t.js +1 -0
- package/dist/assets/{workflow-detail-panel-CXQymzrA.js → workflow-detail-panel-C0kN-iH3.js} +1 -1
- package/dist/assets/{workflow-store-DMcem5b6.js → workflow-store-BXqyb8CL.js} +1 -1
- package/dist/assets/{workspace-page-CHN0AzFJ.js → workspace-page-Mj_A1eeR.js} +1 -1
- package/dist/assets/{workspace-tree-query-BmugmuTC.js → workspace-tree-query-Dyls8wmV.js} +1 -1
- package/dist/index.html +93 -93
- package/package.json +1 -1
- package/dist/assets/account-C-_tLpl9.js +0 -1
- package/dist/assets/api-Cet3wU2m.js +0 -1
- package/dist/assets/channels-page-route-BVzZL9QF.js +0 -9
- package/dist/assets/checkout-return-target-Bj6qL3Z7.js +0 -1
- package/dist/assets/command-palette-window-page-nIdxmxPV.js +0 -1
- package/dist/assets/companion-surface-page-BZHSeP1U.js +0 -1
- package/dist/assets/esm-B8RIzuiy.js +0 -2
- package/dist/assets/file-markdown-Br-X9E8g.js +0 -2
- package/dist/assets/first-run-scope-CGwas_dv.js +0 -1
- package/dist/assets/format-usd-BSn1PAt3.js +0 -1
- package/dist/assets/general-page-DqxymzlR.js +0 -1
- package/dist/assets/home-page-route--ZWIkqRA.js +0 -1
- package/dist/assets/home-tool-permission-card-BGkMa_5c.js +0 -1
- package/dist/assets/index-yCM21OWQ.css +0 -2
- package/dist/assets/login-page-DsrM-8gG.js +0 -1
- package/dist/assets/memory-router-playground-page-Bvv1GiG1.js +0 -1
- package/dist/assets/multi-activity-group-CvLkSXkq.js +0 -1
- package/dist/assets/native-anchor-WUfwamgX.js +0 -1
- package/dist/assets/native-auth-error-B4gY5JEl.js +0 -1
- package/dist/assets/open-workspace-file-CDO9erng.js +0 -2
- package/dist/assets/page-shell-3Yi5Ezsv.js +0 -1
- package/dist/assets/page-surface-store-d61YqYCV.js +0 -1
- package/dist/assets/research-onboarding-route-Cv91i-43.js +0 -50
- package/dist/assets/routes-Cu81Z_6p.js +0 -24
- package/dist/assets/settings-DWADkKSC.js +0 -1
- package/dist/assets/settings-navigation-Dt128ttq.js +0 -1
- package/dist/assets/use-command-palette-sections-D3ZIddUs.js +0 -1
- package/dist/assets/use-edge-swipe-back-Dl-lRTON.js +0 -2
- package/dist/assets/use-onboarding-login-BosEuDpc.js +0 -1
- package/dist/assets/use-transcript-message-by-id-DTaTEqgT.js +0 -1
- package/dist/assets/useTranslation-DdVCKPgw.js +0 -1
- package/dist/assets/welcome-screen-Cghao5xK.js +0 -1
- /package/dist/assets/{app-types-DhugcUAb.js → app-types-DET4dder.js} +0 -0
- /package/dist/assets/{archive-redirect-page-DddErONf.js → archive-redirect-page-LFqfq3Zx.js} +0 -0
- /package/dist/assets/{billing-redirect-page-CaXtswvd.js → billing-redirect-page-B6zuKMxb.js} +0 -0
- /package/dist/assets/{build.umd-Bnx74y6d.js → build.umd-CwkQd6wk.js} +0 -0
- /package/dist/assets/{channels-BdtsaKuZ.js → channels-CXuBInAc.js} +0 -0
- /package/dist/assets/{common-CYa3Lx5T.js → common-EmSgsWNa.js} +0 -0
- /package/dist/assets/{contacts-Adtv7fIG.js → contacts-BRU7ohw2.js} +0 -0
- /package/dist/assets/{credential-requests-BjLAoauv.js → credential-requests-BbBZKJHx.js} +0 -0
- /package/dist/assets/{danger-zone-redirect-page-C45lMfXW.js → danger-zone-redirect-page-BuIG9f9S.js} +0 -0
- /package/dist/assets/{definitions-BvE4YCqW.js → definitions-Co0yLSy_.js} +0 -0
- /package/dist/assets/{definitions-BOuhvvgh.js → definitions-Yz8Uao4u.js} +0 -0
- /package/dist/assets/{devices-redirect-page-CTLNcuXg.js → devices-redirect-page-BoKYF1E9.js} +0 -0
- /package/dist/assets/{diff-rows-CMQi83GC.js → diff-rows-BrFK496i.js} +0 -0
- /package/dist/assets/{emoji-catalog-data-zwouAP3d.js → emoji-catalog-data-BIIBfSqk.js} +0 -0
- /package/dist/assets/{environment-store-CgcCuCfv.js → environment-store-C4So_j-o.js} +0 -0
- /package/dist/assets/{esm-B3RQnhQB.js → esm-BJhqsukI.js} +0 -0
- /package/dist/assets/{esm-U4mAZE_5.js → esm-CPFvOH-c.js} +0 -0
- /package/dist/assets/{external-urls-B0QJBkzP.js → external-urls-Bg18AU4S.js} +0 -0
- /package/dist/assets/{file-editor-C2Qy2Ujg.js → file-editor-BwdObVSu.js} +0 -0
- /package/dist/assets/{home-DaG8KIqs.js → home-BwSxL4rM.js} +0 -0
- /package/dist/assets/{intelligence-B920vsi4.js → intelligence-DXpXyKbw.js} +0 -0
- /package/dist/assets/{keyboard-shortcuts-redirect-page-DSUfuOqd.js → keyboard-shortcuts-redirect-page-DSnux9sJ.js} +0 -0
- /package/dist/assets/{library-DqQriY4U.js → library-CuKVNDEp.js} +0 -0
- /package/dist/assets/{link-click-3KBltS8g.js → link-click-BsxbQxDe.js} +0 -0
- /package/dist/assets/{logs-s74ABgur.js → logs-Blq4k473.js} +0 -0
- /package/dist/assets/{machine-sizes-BEgYDPIN.js → machine-sizes-DzJ0TVYS.js} +0 -0
- /package/dist/assets/{media-preview-C0jyQw5_.js → media-preview-HgLvcAQ9.js} +0 -0
- /package/dist/assets/{onboarding-orcvuvpJ.js → onboarding-DK0I_g8T.js} +0 -0
- /package/dist/assets/{page-empty-state-BG1VeXc8.js → page-empty-state-CzHxZkBR.js} +0 -0
- /package/dist/assets/{password-reset-page-D4zTOGaM.js → password-reset-page-D8ONrPU-.js} +0 -0
- /package/dist/assets/{pdf-CjG-njep.js → pdf-UON6A_nT.js} +0 -0
- /package/dist/assets/{plugin-attribution-CcHpmela.js → plugin-attribution-C0u-eDRH.js} +0 -0
- /package/dist/assets/{plugin-detail-page-DWr7S8VR.js → plugin-detail-page--CvX0OXv.js} +0 -0
- /package/dist/assets/{plugins-page-BZLdfa7d.js → plugins-page-CZ16U_6n.js} +0 -0
- /package/dist/assets/{profile-metadata-CsakJtzD.js → profile-metadata-D9zzZn4_.js} +0 -0
- /package/dist/assets/{provider-key-CsMdPcM5.js → provider-key-DpdSx5gG.js} +0 -0
- /package/dist/assets/{radio-card-nav-D_-kt3tm.js → radio-card-nav-CrM7VJUk.js} +0 -0
- /package/dist/assets/{remote-web-DxCgPeJc.js → remote-web-DBCYTF2P.js} +0 -0
- /package/dist/assets/{schedules-D3oXqJMY.js → schedules-C3wE8OML.js} +0 -0
- /package/dist/assets/{schedules-rtwsTU7E.js → schedules-Co4-ymK5.js} +0 -0
- /package/dist/assets/{security-redirect-page-DbXxE5Ym.js → security-redirect-page-D6x3MANY.js} +0 -0
- /package/dist/assets/{setting-row-C0mDhzZy.js → setting-row-BvQpFvtr.js} +0 -0
- /package/dist/assets/{signup-shell-DnLhiMGV.js → signup-shell-DW976E_0.js} +0 -0
- /package/dist/assets/{skill-icon-sj-wJGzd.js → skill-icon-yVnZg-J1.js} +0 -0
- /package/dist/assets/{skills-page-yj4WNgG3.js → skills-page-B_VTCiN2.js} +0 -0
- /package/dist/assets/{sounds-page-Co2G6n-5.js → sounds-page-BdSO1UIf.js} +0 -0
- /package/dist/assets/{system-events-redirect-page-Dbxsscgn.js → system-events-redirect-page-DbyqOqe_.js} +0 -0
- /package/dist/assets/{terminal-og9TTXfZ.js → terminal-_tzbWcM4.js} +0 -0
- /package/dist/assets/{usage-redirect-page-NZfMbBv6.js → usage-redirect-page-DyTnwv4x.js} +0 -0
- /package/dist/assets/{use-skill-detail-files-DNaNHaP0.js → use-skill-detail-files-Bg4G44J3.js} +0 -0
- /package/dist/assets/{use-supports-credentials-settings-BCD9S39r.js → use-supports-credentials-settings-Cj-Py42f.js} +0 -0
- /package/dist/assets/{use-truncated-blob-text-CHF4X4vL.js → use-truncated-blob-text-BYAPiP8I.js} +0 -0
- /package/dist/assets/{weather-forecast-display-8i3-jfUZ.js → weather-forecast-display-D3IBgGHv.js} +0 -0
- /package/dist/assets/{web-DXzSQlx4.js → web-B60tNeyj.js} +0 -0
- /package/dist/assets/{web-Crg_ekZH.js → web-BSizndvP.js} +0 -0
- /package/dist/assets/{web-to2ecOqW.js → web-CXad-fWd.js} +0 -0
- /package/dist/assets/{web-xhYMQG7j.js → web-Cpz2h_dP.js} +0 -0
- /package/dist/assets/{web-eg_n1fSm.js → web-Cr238HhI.js} +0 -0
- /package/dist/assets/{web-B5o07_c8.js → web-Nd-L7NoL.js} +0 -0
- /package/dist/assets/{web-Ctf28EEk.js → web-W2HEHjFb.js} +0 -0
- /package/dist/assets/{workspace-BBqltPoi.js → workspace-BFa6JWKe.js} +0 -0
- /package/dist/assets/{xterm-DJn4nvHR.js → xterm-DFQikp5h.js} +0 -0
- /package/dist/assets/{xterm-addon-fit-DEYHenuA.js → xterm-addon-fit-B04vX_IV.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,l as n,o as r}from"./local-settings-Bx7FsNo5.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-VkxVX0DM.js";import{h as o,n as s,t as c}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as l}from"./jsx-runtime-BJ8jcmzB.js";import{o as u}from"./list-row-CDwzGT9g.js";import{r as d}from"./middleware-DbQtrfxY.js";import{t as f}from"./info-Bn2hbIVl.js";import{L as p}from"./src-qDZBwoEm.js";import{t as m}from"./toggle-0qt1e_3r.js";import{t as h}from"./modal-UYNawsIu.js";import{t as g}from"./select-BKyejRky.js";import{t as _}from"./assistant-identity-store-DhAqaifK.js";import{d as v}from"./routes-B7wRw3UT.js";import{C as y,S as b,T as x,a as S,b as ee,c as te,f as ne,g as C,h as w,m as T,n as E,p as D,s as O,t as re,w as k,x as A}from"./voice-providers-note-DmCKsoh8.js";import{a as ie,l as j,o as ae,r as oe,s as se,t as M}from"./use-stt-language-selection-82DrT6kd.js";import{t as N}from"./use-active-assistant-id-BADYKVyx.js";import{t as P}from"./detail-card-BzCuPjtL.js";import{t as F}from"./stt-language-picker-modal-7-gnUFiL.js";var I=e(i(),1),L=l();function R(){let{available:e,currentCode:t,configuredProviderId:n,selectLanguage:r,selecting:i}=M(N()),[o,s]=(0,I.useState)(!1);return e?(0,L.jsxs)(P,{title:`Listening language`,subtitle:`The language you speak to your assistant. Applies from your next spoken turn.`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(`span`,{className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`,children:oe(t,n)}),(0,L.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,L.jsx)(F,{open:o,onOpenChange:s,title:`Listening language`,currentCode:t,configuredProviderId:n,selectLanguage:r,selecting:i})]}):null}function z({assistantId:e,open:t,onOpenChange:n}){return(0,L.jsx)(h.Root,{open:t,onOpenChange:n,children:(0,L.jsx)(h.Content,{size:`md`,children:(0,L.jsx)(B,{assistantId:e,onDone:()=>n(!1)})})})}function B({assistantId:e,onDone:t}){let{available:n,currentModel:r,selectModel:i,selecting:o}=j(e);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(h.Header,{children:[(0,L.jsx)(h.Title,{children:`Voices`}),n&&(0,L.jsx)(h.Description,{children:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`})]}),(0,L.jsx)(h.Body,{children:(0,L.jsx)(ae,{assistantId:e,filterBySource:!0,value:r,onChange:i,autoScrollToSelected:!0})}),(0,L.jsxs)(h.Footer,{className:`items-center justify-between gap-3`,children:[(0,L.jsx)(re,{}),(0,L.jsx)(a,{variant:`primary`,onClick:t,disabled:o,className:`shrink-0`,children:`Done`})]})]})}function V(){let e=N(),{available:t,voices:n,currentModel:r}=j(e),i=n.find(e=>e.model===r)??n[0],[o,s]=(0,I.useState)(!1),c=_.use.name(),l=c?`${c}’s Voice`:`Voice`;return t&&i?(0,L.jsxs)(P,{title:l,subtitle:se,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(ie,{description:i.description,className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`}),(0,L.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,L.jsx)(z,{assistantId:e,open:o,onOpenChange:s})]}):(0,L.jsx)(P,{title:l,children:(0,L.jsx)(E,{})})}var H=[{prefKey:`showUserTranscript`,label:`Show the words you say`,description:`Live transcription while you speak.`},{prefKey:`showAssistantTranscript`,label:`Show the words the assistant says`,description:`Text alongside the spoken response.`}],U=`We recommend keeping both off to start. It feels more like a real conversation.`;function W(){return(0,L.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Recommended off`})}function G({label:e,description:t,showBadge:n,checked:r,onChange:i}){return(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-1`,children:[(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`truncate text-body-medium-lighter text-[var(--content-default)]`,children:e}),n?(0,L.jsx)(W,{}):null]}),t?(0,L.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:t}):null]}),(0,L.jsx)(m,{checked:r,onChange:i,"aria-label":e})]})}function ce({showDescription:e=!1,showRecommendedBadge:t=!1}){let n=O.use.showUserTranscript(),r=O.use.showAssistantTranscript(),i=O.use.setShowUserTranscript(),a=O.use.setShowAssistantTranscript(),o={showUserTranscript:{checked:n,onChange:i},showAssistantTranscript:{checked:r,onChange:a}};return(0,L.jsx)(L.Fragment,{children:H.map(n=>{let r=o[n.prefKey];return(0,L.jsx)(G,{label:n.label,description:e?n.description:void 0,showBadge:t,checked:r.checked,onChange:r.onChange},n.prefKey)})})}var K=[{label:`Ctrl`,activator:{kind:`modifierOnly`,modifiers:[`control`]}},{label:`Alt`,activator:{kind:`modifierOnly`,modifiers:[`option`]}},{label:`Ctrl+Shift`,activator:{kind:`modifierOnly`,modifiers:[`control`,`shift`]}}],q={label:`Fn`,activator:D},J=`text-body-small-default text-[var(--content-tertiary)]`;function le(){let[e]=o(),t=e.get(`tab`);return t===`sounds`?(0,L.jsx)(s,{replace:!0,to:v.settings.sounds}):t===`services`?(0,L.jsx)(s,{replace:!0,to:v.settings.ai}):(0,L.jsx)(ue,{})}function ue(){return(0,L.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,L.jsxs)(X,{heading:`Output`,description:`How your assistant sounds.`,children:[(0,L.jsx)(V,{}),(0,L.jsx)(Y,{})]}),(0,L.jsxs)(X,{heading:`Input`,description:`How you talk to your assistant.`,children:[(0,L.jsx)(fe,{}),(0,L.jsx)(R,{}),(0,L.jsx)(pe,{}),(0,L.jsx)(he,{})]}),(0,L.jsx)(X,{heading:`Captions`,children:(0,L.jsx)(de,{})})]})}function Y(){let{available:e}=j(N());return e?(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,L.jsx)(f,{className:`h-3.5 w-3.5 shrink-0 text-[var(--content-quiet)]`}),(0,L.jsx)(`span`,{children:`Want to use your own API key for STT or TTS, or set a custom voice?`}),(0,L.jsxs)(c,{to:`${v.settings.ai}#text-to-speech`,className:`inline-flex items-center gap-1 text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:[`Set it up in Models & Services`,(0,L.jsx)(d,{className:`h-3 w-3`})]})]}):null}function X({heading:e,description:t,children:n}){return(0,L.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,L.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wide text-[var(--content-tertiary)]`,children:e}),t&&(0,L.jsx)(`p`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:t})]}),n]})}function de(){return(0,L.jsx)(P,{title:`Captions`,subtitle:`Show live text of what you and the assistant say during a voice conversation.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsx)(ce,{showDescription:!0}),(0,L.jsx)(`p`,{className:`${J} pt-1`,children:U})]})})}var Z=``;function fe(){let[e,t]=(0,I.useState)([]),[i,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(!1),[l,u]=(0,I.useState)(()=>x()),d=(0,I.useCallback)(async()=>{if(navigator.mediaDevices?.enumerateDevices)try{let e=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`);o(e.length>0&&e.every(e=>!e.label)),t(e.filter(e=>e.deviceId!==``&&e.deviceId!==`default`&&e.deviceId!==`communications`)),c(e.length===0||e.some(e=>!!e.label))}catch{t([]),o(!1),c(!1)}},[]),f=(0,I.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});for(let t of e.getTracks())t.stop()}catch{}d()},[d]);(0,I.useEffect)(()=>{d();let e=navigator.mediaDevices;if(!e?.addEventListener)return;let t=()=>void d();return e.addEventListener(`devicechange`,t),()=>e.removeEventListener(`devicechange`,t)},[d]);let p=(0,I.useMemo)(()=>{let t=e.map((e,t)=>({value:e.deviceId,label:e.label||`Microphone ${t+1}`})),n=l!==Z&&!t.some(e=>e.value===l);return[{value:null,label:`System Default`},...t,...n?[{value:l,label:s?`Saved microphone (not connected)`:`Saved microphone`}]:[]]},[e,l,s]),m=(0,I.useCallback)(e=>{u(e),e===Z?r(k):n(k,e)},[]);return(0,L.jsx)(P,{title:`Microphone`,subtitle:`Which input device is used for dictation and voice conversations.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(g,{options:p,value:l===Z?null:l,onChange:m,onSelectNone:()=>m(Z),"aria-label":`Microphone`})}),i&&(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,L.jsx)(a,{variant:`outlined`,onClick:f,children:`Allow Microphone Access`}),(0,L.jsx)(`span`,{className:J,children:`Grant microphone access to list your available input devices.`})]})]})})}function pe(){let e=te(),[r,i]=(0,I.useState)(()=>{let n=t(T,``);return n?A(n,{preserveFunction:e}):e?q.activator:{kind:`off`}}),[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)([]),l=(0,I.useRef)(null),u=(0,I.useRef)(!1),d=(0,I.useMemo)(()=>e?[q,...K]:K,[e]),p=r.kind!==`off`,h=p&&!e,g=(0,I.useCallback)(e=>{i(e),n(T,b(e)),o(!1),c([])},[]),_=(0,I.useCallback)(()=>{o(!0),c([]),u.current=!1,requestAnimationFrame(()=>{l.current?.focus()})},[]),v=(0,I.useCallback)(()=>{o(!1),c([]),u.current=!1},[]),x=(0,I.useCallback)(t=>{let n=[];return e&&t.getModifierState(`Fn`)&&n.push(`function`),t.ctrlKey&&n.push(`control`),t.altKey&&n.push(`option`),t.shiftKey&&n.push(`shift`),t.metaKey&&n.push(`command`),n},[e]),S=(0,I.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`){v();return}let t=x(e),n=e.key;if(n===`Control`||n===`Alt`||n===`Shift`||n===`Meta`||n===`Fn`){c(t.includes(`function`)?D.modifiers:y(t));return}if(t.includes(`function`)){g(D);return}u.current=!0,g({kind:`key`,label:n.length===1?n.toUpperCase():n,modifiers:t})},[v,x,g]),E=(0,I.useCallback)(e=>{if(!a)return;e.preventDefault(),e.stopPropagation();let t=e.key;if(t===`Control`||t===`Alt`||t===`Shift`||t===`Meta`||t===`Fn`){if(u.current){u.current=!1,c([]);return}x(e).length===0&&s.length>0&&g({kind:`modifierOnly`,modifiers:s})}},[x,a,s,g]);(0,I.useEffect)(()=>{if(!a)return;let e=e=>{l.current&&!l.current.contains(e.target)&&v()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[v,a]);let O=p&&!d.some(e=>C(e.activator,r));return(0,L.jsx)(P,{title:`Push to Talk`,subtitle:`Hold the activation key to dictate text or start a voice conversation.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,L.jsx)(m,{checked:p,onChange:t=>{t?r.kind===`off`&&g(e?q.activator:ne):g({kind:`off`})},label:`Enable Push to Talk`}),p&&(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsx)(`span`,{className:J,children:`Activation Key:`}),(0,L.jsxs)(`div`,{ref:l,tabIndex:a?0:-1,onKeyDown:a?S:void 0,onKeyUp:a?E:void 0,className:`flex flex-wrap items-center gap-2 focus:outline-none`,children:[d.map(e=>{let t=C(e.activator,r);return(0,L.jsx)(Q,{label:e.label,selected:t,onClick:()=>g(e.activator)},e.label)}),a?(0,L.jsx)(Q,{label:s.length>0?ee(s):`Press any key…`,selected:!0,recording:!0,onClick:v}):(0,L.jsx)(Q,{label:O?w(r):`Custom`,selected:O,onClick:_})]}),h&&(0,L.jsxs)(`div`,{className:`flex items-start gap-1 pt-1 text-body-small-default text-[var(--content-quiet)]`,children:[(0,L.jsx)(f,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,L.jsx)(`span`,{children:`Push-to-Talk only works while this tab is focused, and browsers may intercept some shortcuts (e.g. Ctrl+T) before the page can see them. For always-on PTT, use the Vellum desktop app.`})]})]})]})})}function Q({label:e,selected:t,recording:n=!1,onClick:r}){return(0,L.jsxs)(`button`,{type:`button`,onClick:r,className:[`inline-flex items-center gap-2 rounded-lg border px-3 py-1.5 text-body-medium-lighter transition-colors`,`border-[var(--border-subtle)]`,t?`bg-[var(--surface-active)]`:`bg-[var(--surface-lift)] hover:bg-[var(--surface-hover)]`,n?`animate-pulse`:``].filter(Boolean).join(` `),children:[(0,L.jsx)(`span`,{className:[`inline-block h-2.5 w-2.5 rounded-full border`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)]`].join(` `)}),(0,L.jsx)(`span`,{className:`text-[var(--content-default)]`,children:e})]})}var me=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}];function he(){let e=O.use.pauseBeforeReplyMs(),t=O.use.setPauseBeforeReplyMs(),n=O.use.interruptSensitivity(),r=O.use.setInterruptSensitivity(),i=e!==null||n!==null;return(0,L.jsx)(P,{title:`Turn taking`,subtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations — under push to talk, the key decides.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,L.jsx)($,{label:`Pause before reply`,description:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,isDefault:e===null,children:(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(p,{value:(e??1200)/1e3,onValueChange:e=>{typeof e==`number`&&t(Math.round(e*1e3))},min:500/1e3,max:S/1e3,step:.1,showValue:!0,formatValue:e=>`${(typeof e==`number`?e:e[0]).toFixed(1)}s`,"aria-label":`Pause before reply`})})}),(0,L.jsx)($,{label:`Interrupt sensitivity`,description:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,isDefault:n===null,children:(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(u,{items:me,value:n??`medium`,onChange:r,ariaLabel:`Interrupt sensitivity`})})}),i&&(0,L.jsx)(`div`,{children:(0,L.jsx)(a,{variant:`outlined`,onClick:()=>{t(null),r(null)},children:`Reset to defaults`})})]})})}function $({label:e,description:t,isDefault:n,children:r}){return(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:e}),n&&(0,L.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Default`})]}),(0,L.jsx)(`p`,{className:J,children:t}),r]})}export{le as VoicePage};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,l as n,o as r}from"./local-settings-Bx7FsNo5.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-VkxVX0DM.js";import{h as o,n as s,t as c}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as l}from"./jsx-runtime-BJ8jcmzB.js";import{o as u}from"./list-row-CDwzGT9g.js";import{r as d}from"./middleware-DbQtrfxY.js";import{t as f}from"./info-Bn2hbIVl.js";import{R as p}from"./src-CImIAPTd.js";import{t as m}from"./toggle-0qt1e_3r.js";import{t as h}from"./modal-UYNawsIu.js";import{t as g}from"./select-BKyejRky.js";import{t as _}from"./assistant-identity-store-DhAqaifK.js";import{d as v}from"./routes-B7wRw3UT.js";import{C as y,S as b,T as x,a as S,b as ee,c as te,f as ne,g as C,h as w,m as T,n as E,p as D,s as O,t as re,w as k,x as A}from"./voice-providers-note-TDQxSwUj.js";import{a as ie,l as j,o as ae,r as oe,s as se,t as M}from"./use-stt-language-selection-CK6bUfVS.js";import{t as N}from"./use-active-assistant-id-BADYKVyx.js";import{t as P}from"./detail-card-Bqnvs6YE.js";import{t as F}from"./stt-language-picker-modal-BXLEBM7b.js";var I=e(i(),1),L=l();function R(){let{available:e,currentCode:t,configuredProviderId:n,selectLanguage:r,selecting:i}=M(N()),[o,s]=(0,I.useState)(!1);return e?(0,L.jsxs)(P,{title:`Listening language`,subtitle:`The language you speak to your assistant. Applies from your next spoken turn.`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(`span`,{className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`,children:oe(t,n)}),(0,L.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,L.jsx)(F,{open:o,onOpenChange:s,title:`Listening language`,currentCode:t,configuredProviderId:n,selectLanguage:r,selecting:i})]}):null}function z({assistantId:e,open:t,onOpenChange:n}){return(0,L.jsx)(h.Root,{open:t,onOpenChange:n,children:(0,L.jsx)(h.Content,{size:`md`,children:(0,L.jsx)(B,{assistantId:e,onDone:()=>n(!1)})})})}function B({assistantId:e,onDone:t}){let{available:n,currentModel:r,selectModel:i,selecting:o}=j(e);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(h.Header,{children:[(0,L.jsx)(h.Title,{children:`Voices`}),n&&(0,L.jsx)(h.Description,{children:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`})]}),(0,L.jsx)(h.Body,{children:(0,L.jsx)(ae,{assistantId:e,filterBySource:!0,value:r,onChange:i,autoScrollToSelected:!0})}),(0,L.jsxs)(h.Footer,{className:`items-center justify-between gap-3`,children:[(0,L.jsx)(re,{}),(0,L.jsx)(a,{variant:`primary`,onClick:t,disabled:o,className:`shrink-0`,children:`Done`})]})]})}function V(){let e=N(),{available:t,voices:n,currentModel:r}=j(e),i=n.find(e=>e.model===r)??n[0],[o,s]=(0,I.useState)(!1),c=_.use.name(),l=c?`${c}’s Voice`:`Voice`;return t&&i?(0,L.jsxs)(P,{title:l,subtitle:se,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(ie,{description:i.description,className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`}),(0,L.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,L.jsx)(z,{assistantId:e,open:o,onOpenChange:s})]}):(0,L.jsx)(P,{title:l,children:(0,L.jsx)(E,{})})}var H=[{prefKey:`showUserTranscript`,label:`Show the words you say`,description:`Live transcription while you speak.`},{prefKey:`showAssistantTranscript`,label:`Show the words the assistant says`,description:`Text alongside the spoken response.`}],U=`We recommend keeping both off to start. It feels more like a real conversation.`;function W(){return(0,L.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Recommended off`})}function G({label:e,description:t,showBadge:n,checked:r,onChange:i}){return(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-1`,children:[(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`truncate text-body-medium-lighter text-[var(--content-default)]`,children:e}),n?(0,L.jsx)(W,{}):null]}),t?(0,L.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:t}):null]}),(0,L.jsx)(m,{checked:r,onChange:i,"aria-label":e})]})}function ce({showDescription:e=!1,showRecommendedBadge:t=!1}){let n=O.use.showUserTranscript(),r=O.use.showAssistantTranscript(),i=O.use.setShowUserTranscript(),a=O.use.setShowAssistantTranscript(),o={showUserTranscript:{checked:n,onChange:i},showAssistantTranscript:{checked:r,onChange:a}};return(0,L.jsx)(L.Fragment,{children:H.map(n=>{let r=o[n.prefKey];return(0,L.jsx)(G,{label:n.label,description:e?n.description:void 0,showBadge:t,checked:r.checked,onChange:r.onChange},n.prefKey)})})}var K=[{label:`Ctrl`,activator:{kind:`modifierOnly`,modifiers:[`control`]}},{label:`Alt`,activator:{kind:`modifierOnly`,modifiers:[`option`]}},{label:`Ctrl+Shift`,activator:{kind:`modifierOnly`,modifiers:[`control`,`shift`]}}],q={label:`Fn`,activator:D},J=`text-body-small-default text-[var(--content-tertiary)]`;function le(){let[e]=o(),t=e.get(`tab`);return t===`sounds`?(0,L.jsx)(s,{replace:!0,to:v.settings.sounds}):t===`services`?(0,L.jsx)(s,{replace:!0,to:v.settings.ai}):(0,L.jsx)(ue,{})}function ue(){return(0,L.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,L.jsxs)(X,{heading:`Output`,description:`How your assistant sounds.`,children:[(0,L.jsx)(V,{}),(0,L.jsx)(Y,{})]}),(0,L.jsxs)(X,{heading:`Input`,description:`How you talk to your assistant.`,children:[(0,L.jsx)(fe,{}),(0,L.jsx)(R,{}),(0,L.jsx)(pe,{}),(0,L.jsx)(he,{})]}),(0,L.jsx)(X,{heading:`Captions`,children:(0,L.jsx)(de,{})})]})}function Y(){let{available:e}=j(N());return e?(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,L.jsx)(f,{className:`h-3.5 w-3.5 shrink-0 text-[var(--content-quiet)]`}),(0,L.jsx)(`span`,{children:`Want to use your own API key for STT or TTS, or set a custom voice?`}),(0,L.jsxs)(c,{to:`${v.settings.ai}#text-to-speech`,className:`inline-flex items-center gap-1 text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:[`Set it up in Models & Services`,(0,L.jsx)(d,{className:`h-3 w-3`})]})]}):null}function X({heading:e,description:t,children:n}){return(0,L.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,L.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wide text-[var(--content-tertiary)]`,children:e}),t&&(0,L.jsx)(`p`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:t})]}),n]})}function de(){return(0,L.jsx)(P,{title:`Captions`,subtitle:`Show live text of what you and the assistant say during a voice conversation.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsx)(ce,{showDescription:!0}),(0,L.jsx)(`p`,{className:`${J} pt-1`,children:U})]})})}var Z=``;function fe(){let[e,t]=(0,I.useState)([]),[i,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(!1),[l,u]=(0,I.useState)(()=>x()),d=(0,I.useCallback)(async()=>{if(navigator.mediaDevices?.enumerateDevices)try{let e=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`);o(e.length>0&&e.every(e=>!e.label)),t(e.filter(e=>e.deviceId!==``&&e.deviceId!==`default`&&e.deviceId!==`communications`)),c(e.length===0||e.some(e=>!!e.label))}catch{t([]),o(!1),c(!1)}},[]),f=(0,I.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});for(let t of e.getTracks())t.stop()}catch{}d()},[d]);(0,I.useEffect)(()=>{d();let e=navigator.mediaDevices;if(!e?.addEventListener)return;let t=()=>void d();return e.addEventListener(`devicechange`,t),()=>e.removeEventListener(`devicechange`,t)},[d]);let p=(0,I.useMemo)(()=>{let t=e.map((e,t)=>({value:e.deviceId,label:e.label||`Microphone ${t+1}`})),n=l!==Z&&!t.some(e=>e.value===l);return[{value:null,label:`System Default`},...t,...n?[{value:l,label:s?`Saved microphone (not connected)`:`Saved microphone`}]:[]]},[e,l,s]),m=(0,I.useCallback)(e=>{u(e),e===Z?r(k):n(k,e)},[]);return(0,L.jsx)(P,{title:`Microphone`,subtitle:`Which input device is used for dictation and voice conversations.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(g,{options:p,value:l===Z?null:l,onChange:m,onSelectNone:()=>m(Z),"aria-label":`Microphone`})}),i&&(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,L.jsx)(a,{variant:`outlined`,onClick:f,children:`Allow Microphone Access`}),(0,L.jsx)(`span`,{className:J,children:`Grant microphone access to list your available input devices.`})]})]})})}function pe(){let e=te(),[r,i]=(0,I.useState)(()=>{let n=t(T,``);return n?A(n,{preserveFunction:e}):e?q.activator:{kind:`off`}}),[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)([]),l=(0,I.useRef)(null),u=(0,I.useRef)(!1),d=(0,I.useMemo)(()=>e?[q,...K]:K,[e]),p=r.kind!==`off`,h=p&&!e,g=(0,I.useCallback)(e=>{i(e),n(T,b(e)),o(!1),c([])},[]),_=(0,I.useCallback)(()=>{o(!0),c([]),u.current=!1,requestAnimationFrame(()=>{l.current?.focus()})},[]),v=(0,I.useCallback)(()=>{o(!1),c([]),u.current=!1},[]),x=(0,I.useCallback)(t=>{let n=[];return e&&t.getModifierState(`Fn`)&&n.push(`function`),t.ctrlKey&&n.push(`control`),t.altKey&&n.push(`option`),t.shiftKey&&n.push(`shift`),t.metaKey&&n.push(`command`),n},[e]),S=(0,I.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`){v();return}let t=x(e),n=e.key;if(n===`Control`||n===`Alt`||n===`Shift`||n===`Meta`||n===`Fn`){c(t.includes(`function`)?D.modifiers:y(t));return}if(t.includes(`function`)){g(D);return}u.current=!0,g({kind:`key`,label:n.length===1?n.toUpperCase():n,modifiers:t})},[v,x,g]),E=(0,I.useCallback)(e=>{if(!a)return;e.preventDefault(),e.stopPropagation();let t=e.key;if(t===`Control`||t===`Alt`||t===`Shift`||t===`Meta`||t===`Fn`){if(u.current){u.current=!1,c([]);return}x(e).length===0&&s.length>0&&g({kind:`modifierOnly`,modifiers:s})}},[x,a,s,g]);(0,I.useEffect)(()=>{if(!a)return;let e=e=>{l.current&&!l.current.contains(e.target)&&v()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[v,a]);let O=p&&!d.some(e=>C(e.activator,r));return(0,L.jsx)(P,{title:`Push to Talk`,subtitle:`Hold the activation key to dictate text or start a voice conversation.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,L.jsx)(m,{checked:p,onChange:t=>{t?r.kind===`off`&&g(e?q.activator:ne):g({kind:`off`})},label:`Enable Push to Talk`}),p&&(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsx)(`span`,{className:J,children:`Activation Key:`}),(0,L.jsxs)(`div`,{ref:l,tabIndex:a?0:-1,onKeyDown:a?S:void 0,onKeyUp:a?E:void 0,className:`flex flex-wrap items-center gap-2 focus:outline-none`,children:[d.map(e=>{let t=C(e.activator,r);return(0,L.jsx)(Q,{label:e.label,selected:t,onClick:()=>g(e.activator)},e.label)}),a?(0,L.jsx)(Q,{label:s.length>0?ee(s):`Press any key…`,selected:!0,recording:!0,onClick:v}):(0,L.jsx)(Q,{label:O?w(r):`Custom`,selected:O,onClick:_})]}),h&&(0,L.jsxs)(`div`,{className:`flex items-start gap-1 pt-1 text-body-small-default text-[var(--content-quiet)]`,children:[(0,L.jsx)(f,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,L.jsx)(`span`,{children:`Push-to-Talk only works while this tab is focused, and browsers may intercept some shortcuts (e.g. Ctrl+T) before the page can see them. For always-on PTT, use the Vellum desktop app.`})]})]})]})})}function Q({label:e,selected:t,recording:n=!1,onClick:r}){return(0,L.jsxs)(`button`,{type:`button`,onClick:r,className:[`inline-flex items-center gap-2 rounded-lg border px-3 py-1.5 text-body-medium-lighter transition-colors`,`border-[var(--border-subtle)]`,t?`bg-[var(--surface-active)]`:`bg-[var(--surface-lift)] hover:bg-[var(--surface-hover)]`,n?`animate-pulse`:``].filter(Boolean).join(` `),children:[(0,L.jsx)(`span`,{className:[`inline-block h-2.5 w-2.5 rounded-full border`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)]`].join(` `)}),(0,L.jsx)(`span`,{className:`text-[var(--content-default)]`,children:e})]})}var me=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}];function he(){let e=O.use.pauseBeforeReplyMs(),t=O.use.setPauseBeforeReplyMs(),n=O.use.interruptSensitivity(),r=O.use.setInterruptSensitivity(),i=e!==null||n!==null;return(0,L.jsx)(P,{title:`Turn taking`,subtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations — under push to talk, the key decides.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,L.jsx)($,{label:`Pause before reply`,description:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,isDefault:e===null,children:(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(p,{value:(e??1200)/1e3,onValueChange:e=>{typeof e==`number`&&t(Math.round(e*1e3))},min:500/1e3,max:S/1e3,step:.1,showValue:!0,formatValue:e=>`${(typeof e==`number`?e:e[0]).toFixed(1)}s`,"aria-label":`Pause before reply`})})}),(0,L.jsx)($,{label:`Interrupt sensitivity`,description:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,isDefault:n===null,children:(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(u,{items:me,value:n??`medium`,onChange:r,ariaLabel:`Interrupt sensitivity`})})}),i&&(0,L.jsx)(`div`,{children:(0,L.jsx)(a,{variant:`outlined`,onClick:()=>{t(null),r(null)},children:`Reset to defaults`})})]})})}function $({label:e,description:t,isDefault:n,children:r}){return(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:e}),n&&(0,L.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Default`})]}),(0,L.jsx)(`p`,{className:J,children:t}),r]})}export{le as VoicePage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./local-settings-Bx7FsNo5.js";import{t}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as n}from"./jsx-runtime-BJ8jcmzB.js";import{t as r}from"./cn-Cf8SmgbR.js";import{n as i,t as a}from"./middleware-DbQtrfxY.js";import"./src-
|
|
1
|
+
import{i as e}from"./local-settings-Bx7FsNo5.js";import{t}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as n}from"./jsx-runtime-BJ8jcmzB.js";import{t as r}from"./cn-Cf8SmgbR.js";import{n as i,t as a}from"./middleware-DbQtrfxY.js";import"./src-CImIAPTd.js";import{n as o,t as s}from"./create-selectors-CmDroXTn.js";import{t as c}from"./is-electron-wgAC5Mzb.js";import{d as l}from"./routes-B7wRw3UT.js";var u=`vellum:voice:inputDeviceId`;function d(){return e(u,``)}function f(){let e=d();return{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,...e?{deviceId:{exact:e}}:{}}}async function p(){let e=f();try{return await navigator.mediaDevices.getUserMedia({audio:e})}catch(t){if(e.deviceId&&t instanceof DOMException&&t.name===`OverconstrainedError`){let{deviceId:t,...n}=e;return navigator.mediaDevices.getUserMedia({audio:n})}throw t}}var m=`vellum:voice:activationKey`,h={kind:`modifierOnly`,modifiers:[`control`]},g={kind:`modifierOnly`,modifiers:[`function`]},_=[`function`,`control`,`option`,`shift`,`command`],v={function:`Fn`,control:`Ctrl`,option:`Alt`,shift:`Shift`,command:`Cmd`};function y(e){return Array.from(new Set(e)).sort((e,t)=>_.indexOf(e)-_.indexOf(t))}function b(e){return y(e).map(e=>v[e]).join(`+`)}function x(e){if(e.kind===`off`)return`Off`;if(e.kind===`modifierOnly`)return b(e.modifiers);let t=b(e.modifiers);return t?`${t}+${e.label}`:e.label}function S(e,t){if(e.kind!==t.kind)return!1;if(e.kind===`off`||t.kind===`off`)return!0;let n=y(e.modifiers),r=y(t.modifiers);return n.length!==r.length||n.some((e,t)=>e!==r[t])?!1:e.kind===`key`&&t.kind===`key`?e.label===t.label:!0}function C(e){return JSON.stringify(e)}function w(e){return e.kind===`modifierOnly`&&e.modifiers.length===1&&e.modifiers[0]===`function`}function T(e){return typeof e==`string`&&_.includes(e)}function E(e,t){let n=e.filter(T);return t.preserveFunction&&n.includes(`function`)?g.modifiers:y(t.preserveFunction?n:n.filter(e=>e!==`function`))}function D(e,t={}){if(!e)return h;if(e===`fn`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?g.modifiers:h.modifiers};if(e===`ctrl`)return h;if(e===`fn_shift`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?g.modifiers:[`shift`]};if(e===`off`)return{kind:`off`};try{let n=JSON.parse(e);if(n.kind===`off`)return{kind:`off`};if(n.kind===`modifierOnly`&&Array.isArray(n.modifiers)){let e=E(n.modifiers,t);return e.length===0?h:{kind:`modifierOnly`,modifiers:e}}if(n.kind===`key`&&typeof n.label==`string`&&Array.isArray(n.modifiers))return{kind:`key`,label:n.label,modifiers:E(n.modifiers,t)}}catch{}return h}function O(e){let t=[];return e.ctrlKey&&t.push(`control`),e.altKey&&t.push(`option`),e.shiftKey&&t.push(`shift`),e.metaKey&&t.push(`command`),t}function k(e){return e===`Control`||e===`Alt`||e===`Shift`||e===`Meta`||e===`Fn`}function A(e,t){if(e.length!==t.length)return!1;let n=y(e),r=y(t);return n.every((e,t)=>e===r[t])}function j(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=O(e),r=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?k(e.key)?A(n,r):!1:(e.key.length===1?e.key.toUpperCase():e.key)===t.label?A(n,r):!1}function M(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?!!(e.key===`Control`&&n.includes(`control`)||e.key===`Alt`&&n.includes(`option`)||e.key===`Shift`&&n.includes(`shift`)||e.key===`Meta`&&n.includes(`command`)):(e.key.length===1?e.key.toUpperCase():e.key)===t.label}function N(){return c()}function P(){return c()&&typeof window.vellum?.helper?.hotkey?.fnPushToTalk==`function`&&typeof window.vellum?.helper?.hotkey?.onEvent==`function`}async function F(e){if(!P())return!1;try{return(await window.vellum.helper.hotkey.fnPushToTalk(e)).ok}catch{return!1}}function I(e){return P()?window.vellum.helper.hotkey.onEvent(e):()=>void 0}var L=1200,R=3e3,z=`medium`,B={high:100,medium:250,low:600};function V(e){return B[e]}function H(e){return Number.isFinite(e)?Math.round(Math.min(R,Math.max(500,e))):L}var U={showUserTranscript:!1,showAssistantTranscript:!1,firstRunSeen:!1,pauseBeforeReplyMs:null,interruptSensitivity:null},W=`vellum:voice-prefs`,G=o()(i((e,t)=>({...U,setShowUserTranscript:t=>e({showUserTranscript:t}),setShowAssistantTranscript:t=>e({showAssistantTranscript:t}),markFirstRunSeen:()=>{t().firstRunSeen||e({firstRunSeen:!0})},setPauseBeforeReplyMs:t=>e({pauseBeforeReplyMs:t===null?null:H(t)}),setInterruptSensitivity:t=>e({interruptSensitivity:t})}),{name:W,storage:a(()=>localStorage),partialize:e=>({showUserTranscript:e.showUserTranscript,showAssistantTranscript:e.showAssistantTranscript,firstRunSeen:e.firstRunSeen,pauseBeforeReplyMs:e.pauseBeforeReplyMs,interruptSensitivity:e.interruptSensitivity})})),K=s(G);typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===W&&G.persist.rehydrate()});var q=n();function J(){return(0,q.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Your assistant speaks through a provider you configured yourself. Set its voice on`,` `,(0,q.jsx)(t,{to:`${l.settings.ai}#text-to-speech`,className:`text-[var(--primary-base)] hover:underline`,children:`Models & Services`}),`.`]})}function Y({className:e}){return(0,q.jsxs)(`p`,{className:r(`text-label-small-default text-[var(--content-tertiary)]`,e),children:[`Speech providers, transcription, and API keys live in`,` `,(0,q.jsx)(t,{to:`${l.settings.ai}#text-to-speech`,className:`text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:`Models & Services`}),`.`]})}export{y as C,p as E,C as S,d as T,j as _,R as a,b,N as c,P as d,h as f,S as g,x as h,L as i,F as l,m,J as n,V as o,g as p,z as r,K as s,Y as t,I as u,M as v,u as w,D as x,w as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./dist-D7UWVopK.js";import{n as t,t as n}from"./definitions-
|
|
1
|
+
import{n as e}from"./dist-D7UWVopK.js";import{n as t,t as n}from"./definitions-Co0yLSy_.js";var r=class extends e{constructor(){super(...arguments),this.selectionStarted=!1}async impact(e){let t=this.patternForImpact(e?.style);this.vibrateWithPattern(t)}async notification(e){let t=this.patternForNotification(e?.type);this.vibrateWithPattern(t)}async vibrate(e){let t=e?.duration||300;this.vibrateWithPattern([t])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(e=n.Heavy){return e===n.Medium?[43]:e===n.Light?[20]:[61]}patternForNotification(e=t.Success){return e===t.Warning?[30,40,30,50,60]:e===t.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(e){if(navigator.vibrate)navigator.vibrate(e);else throw this.unavailable(`Browser does not support the vibrate API`)}};export{r as HapticsWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t}from"./dist-D7UWVopK.js";import{n}from"./definitions-
|
|
1
|
+
import{n as e,r as t}from"./dist-D7UWVopK.js";import{n}from"./definitions-Yz8Uao4u.js";function r(e){let t=e.split(`/`).filter(e=>e!==`.`),n=[];return t.forEach(e=>{e===`..`&&n.length>0&&n[n.length-1]!==`..`?n.pop():n.push(e)}),n.join(`/`)}function i(e,t){e=r(e),t=r(t);let n=e.split(`/`),i=t.split(`/`);return e!==t&&n.every((e,t)=>e===i[t])}var a=class r extends e{constructor(){super(...arguments),this.DB_VERSION=1,this.DB_NAME=`Disc`,this._writeCmds=[`add`,`put`,`delete`],this.downloadFile=async e=>{let n=t(e,e.webFetchExtra),r=await fetch(e.url,n),i;if(!e.progress)i=await r.blob();else if(!r?.body)i=new Blob;else{let t=r.body.getReader(),n=0,a=[],o=r.headers.get(`content-type`),s=parseInt(r.headers.get(`content-length`)||`0`,10);for(;;){let{done:r,value:i}=await t.read();if(r)break;a.push(i),n+=i?.length||0;let o={url:e.url,bytes:n,contentLength:s};this.notifyListeners(`progress`,o)}let c=new Uint8Array(n),l=0;for(let e of a)e!==void 0&&(c.set(e,l),l+=e.length);i=new Blob([c.buffer],{type:o||void 0})}return{path:(await this.writeFile({path:e.path,directory:e.directory??void 0,recursive:e.recursive??!1,data:i})).uri,blob:i}}}readFileInChunks(e,t){throw this.unavailable(`Method not implemented.`)}async initDb(){if(this._db!==void 0)return this._db;if(!(`indexedDB`in window))throw this.unavailable(`This browser doesn't support IndexedDB`);return new Promise((e,t)=>{let n=indexedDB.open(this.DB_NAME,this.DB_VERSION);n.onupgradeneeded=r.doUpgrade,n.onsuccess=()=>{this._db=n.result,e(n.result)},n.onerror=()=>t(n.error),n.onblocked=()=>{console.warn(`db blocked`)}})}static doUpgrade(e){let t=e.target.result;switch(e.oldVersion){default:t.objectStoreNames.contains(`FileStorage`)&&t.deleteObjectStore(`FileStorage`),t.createObjectStore(`FileStorage`,{keyPath:`path`}).createIndex(`by_folder`,`folder`)}}async dbRequest(e,t){let n=this._writeCmds.indexOf(e)===-1?`readonly`:`readwrite`;return this.initDb().then(r=>new Promise((i,a)=>{let o=r.transaction([`FileStorage`],n).objectStore(`FileStorage`)[e](...t);o.onsuccess=()=>i(o.result),o.onerror=()=>a(o.error)}))}async dbIndexRequest(e,t,n){let r=this._writeCmds.indexOf(t)===-1?`readonly`:`readwrite`;return this.initDb().then(i=>new Promise((a,o)=>{let s=i.transaction([`FileStorage`],r).objectStore(`FileStorage`).index(e)[t](...n);s.onsuccess=()=>a(s.result),s.onerror=()=>o(s.error)}))}getPath(e,t){let n=t===void 0?``:t.replace(/^[/]+|[/]+$/g,``),r=``;return e!==void 0&&(r+=`/`+e),t!==``&&(r+=`/`+n),r}async clear(){(await this.initDb()).transaction([`FileStorage`],`readwrite`).objectStore(`FileStorage`).clear()}async readFile(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(n===void 0)throw Error(`File does not exist.`);return{data:n.content?n.content:``}}async writeFile(e){let t=this.getPath(e.directory,e.path),n=e.data,r=e.encoding,i=e.recursive,a=await this.dbRequest(`get`,[t]);if(a&&a.type===`directory`)throw Error(`The supplied path is a directory.`);let o=t.substr(0,t.lastIndexOf(`/`));if(await this.dbRequest(`get`,[o])===void 0){let t=o.indexOf(`/`,1);if(t!==-1){let n=o.substr(t);await this.mkdir({path:n,directory:e.directory,recursive:i})}}if(!r&&!(n instanceof Blob)&&(n=n.indexOf(`,`)>=0?n.split(`,`)[1]:n,!this.isBase64String(n)))throw Error(`The supplied data is not valid base64 content.`);let s=Date.now(),c={path:t,folder:o,type:`file`,size:n instanceof Blob?n.size:n.length,ctime:s,mtime:s,content:n};return await this.dbRequest(`put`,[c]),{uri:c.path}}async appendFile(e){let t=this.getPath(e.directory,e.path),n=e.data,r=e.encoding,i=t.substr(0,t.lastIndexOf(`/`)),a=Date.now(),o=a,s=await this.dbRequest(`get`,[t]);if(s&&s.type===`directory`)throw Error(`The supplied path is a directory.`);if(await this.dbRequest(`get`,[i])===void 0){let t=i.indexOf(`/`,1);if(t!==-1){let n=i.substr(t);await this.mkdir({path:n,directory:e.directory,recursive:!0})}}if(!r&&!this.isBase64String(n))throw Error(`The supplied data is not valid base64 content.`);if(s!==void 0){if(s.content instanceof Blob)throw Error(`The occupied entry contains a Blob object which cannot be appended to.`);n=s.content!==void 0&&!r?btoa(atob(s.content)+atob(n)):s.content+n,o=s.ctime}let c={path:t,folder:i,type:`file`,size:n.length,ctime:o,mtime:a,content:n};await this.dbRequest(`put`,[c])}async deleteFile(e){let t=this.getPath(e.directory,e.path);if(await this.dbRequest(`get`,[t])===void 0)throw Error(`File does not exist.`);if((await this.dbIndexRequest(`by_folder`,`getAllKeys`,[IDBKeyRange.only(t)])).length!==0)throw Error(`Folder is not empty.`);await this.dbRequest(`delete`,[t])}async mkdir(e){let t=this.getPath(e.directory,e.path),n=e.recursive,r=t.substr(0,t.lastIndexOf(`/`)),i=(t.match(/\//g)||[]).length,a=await this.dbRequest(`get`,[r]),o=await this.dbRequest(`get`,[t]);if(i===1)throw Error(`Cannot create Root directory`);if(o!==void 0)throw Error(`Current directory does already exist.`);if(!n&&i!==2&&a===void 0)throw Error(`Parent directory must exist`);if(n&&i!==2&&a===void 0){let t=r.substr(r.indexOf(`/`,1));await this.mkdir({path:t,directory:e.directory,recursive:n})}let s=Date.now(),c={path:t,folder:r,type:`directory`,size:0,ctime:s,mtime:s};await this.dbRequest(`put`,[c])}async rmdir(e){let{path:t,directory:n,recursive:r}=e,i=this.getPath(n,t),a=await this.dbRequest(`get`,[i]);if(a===void 0)throw Error(`Folder does not exist.`);if(a.type!==`directory`)throw Error(`Requested path is not a directory`);let o=await this.readdir({path:t,directory:n});if(o.files.length!==0&&!r)throw Error(`Folder is not empty`);for(let e of o.files){let i=`${t}/${e.name}`;(await this.stat({path:i,directory:n})).type===`file`?await this.deleteFile({path:i,directory:n}):await this.rmdir({path:i,directory:n,recursive:r})}await this.dbRequest(`delete`,[i])}async readdir(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(e.path!==``&&n===void 0)throw Error(`Folder does not exist.`);let r=await this.dbIndexRequest(`by_folder`,`getAllKeys`,[IDBKeyRange.only(t)]);return{files:await Promise.all(r.map(async e=>{let n=await this.dbRequest(`get`,[e]);return n===void 0&&(n=await this.dbRequest(`get`,[e+`/`])),{name:e.substring(t.length+1),type:n.type,size:n.size,ctime:n.ctime,mtime:n.mtime,uri:n.path}}))}}async getUri(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);return n===void 0&&(n=await this.dbRequest(`get`,[t+`/`])),{uri:n?.path||t}}async stat(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(n===void 0&&(n=await this.dbRequest(`get`,[t+`/`])),n===void 0)throw Error(`Entry does not exist.`);return{name:n.path.substring(t.length+1),type:n.type,size:n.size,ctime:n.ctime,mtime:n.mtime,uri:n.path}}async rename(e){await this._copy(e,!0)}async copy(e){return this._copy(e,!1)}async requestPermissions(){return{publicStorage:`granted`}}async checkPermissions(){return{publicStorage:`granted`}}async _copy(e,t=!1){let{toDirectory:r}=e,{to:a,from:o,directory:s}=e;if(!a||!o)throw Error(`Both to and from must be provided`);r||=s;let c=this.getPath(s,o),l=this.getPath(r,a);if(c===l)return{uri:l};if(i(c,l))throw Error(`To path cannot contain the from path`);let u;try{u=await this.stat({path:a,directory:r})}catch{let e=a.split(`/`);e.pop();let t=e.join(`/`);if(e.length>0&&(await this.stat({path:t,directory:r})).type!==`directory`)throw Error(`Parent directory of the to path is a file`)}if(u&&u.type===`directory`)throw Error(`Cannot overwrite a directory with a file`);let d=await this.stat({path:o,directory:s}),f=async(e,t,n)=>{let i=this.getPath(r,e),a=await this.dbRequest(`get`,[i]);a.ctime=t,a.mtime=n,await this.dbRequest(`put`,[a])},p=d.ctime?d.ctime:Date.now();switch(d.type){case`file`:{let e=await this.readFile({path:o,directory:s});t&&await this.deleteFile({path:o,directory:s});let i;!(e.data instanceof Blob)&&!this.isBase64String(e.data)&&(i=n.UTF8);let c=await this.writeFile({path:a,directory:r,data:e.data,encoding:i});return t&&await f(a,p,d.mtime),c}case`directory`:{if(u)throw Error(`Cannot move a directory over an existing object`);try{await this.mkdir({path:a,directory:r,recursive:!1}),t&&await f(a,p,d.mtime)}catch{}let e=(await this.readdir({path:o,directory:s})).files;for(let n of e)await this._copy({from:`${o}/${n.name}`,to:`${a}/${n.name}`,directory:s,toDirectory:r},t);t&&await this.rmdir({path:o,directory:s})}}return{uri:l}}isBase64String(e){try{return btoa(atob(e))==e}catch{return!1}}};a._debug=!0;export{a as FilesystemWeb};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as e}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t}from"./jsx-runtime-BJ8jcmzB.js";import{m as n}from"./local-mode-BNr2MrWI.js";import"./i18n-C9hRT4Lf.js";import{t as r}from"./useTranslation-D9pPv-bA.js";import{d as i}from"./routes-B7wRw3UT.js";import{t as a}from"./onboarding-navigation-C-Kk3_ll.js";import{t as o}from"./auth-welcome-screen-Pw3qXxi5.js";var s=t();function c(){let{t}=r(`onboarding`),c=e();return(0,s.jsx)(o,{secondary:{label:t(`welcome.continueWithoutAccount`),onSelect:()=>{n()?c(i.selectAssistant,a):c(i.onboarding.hosting,a)}}})}export{c as WelcomeScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{t as r}from"./jsx-runtime-BJ8jcmzB.js";import{t as i}from"./typography-DekrYXvs.js";import{t as a}from"./arrow-down-to-line-BuKRLRZS.js";import{n as o,r as s,t as c}from"./metric-card-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{t as r}from"./jsx-runtime-BJ8jcmzB.js";import{t as i}from"./typography-DekrYXvs.js";import{t as a}from"./arrow-down-to-line-BuKRLRZS.js";import{n as o,r as s,t as c}from"./metric-card-bXd-f58c.js";import{t as l}from"./ban-DgvZiMvk.js";import{t as u}from"./chevron-left-02Er54z-.js";import{t as d}from"./chevron-right-Dwr_Sx98.js";import{t as f}from"./circle-check-BlOeCme9.js";import{t as p}from"./triangle-alert-43gIbLca.js";import{t as m}from"./users-BHqL5Ion.js";import{t as h}from"./workflow-DFnHtuMG.js";import"./src-CImIAPTd.js";import{n as g,r as _,t as v}from"./workflow-status-CGIYm2p7.js";import{t as y}from"./proxy-CT_qJI1K.js";import{t as b}from"./AnimatePresence-CxaKvfs9.js";import{t as x}from"./use-reduced-motion-CU3dPXKf.js";import{n as S}from"./use-bundled-avatar-components-C_6xUsW1.js";import{t as C}from"./three-dot-indicator-CYYJ1RDJ.js";import{t as w}from"./avatar-renderer-DSa5eaH2.js";import{t as T}from"./avatar-subagent-BnaYyPQQ.js";import{t as E}from"./detail-shell-D1UEZCzz.js";import{n as D,t as O}from"./status-badge-pill-D8m98tJa.js";var k=e(t(),1),A=r();function j({title:e,body:t,emptyText:n}){return(0,A.jsxs)(`div`,{className:`mb-5`,children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-2 text-[var(--content-emphasised)]`,children:e}),t?(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`whitespace-pre-wrap break-words leading-relaxed text-[var(--content-default)]`,children:t}):(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`text-[var(--content-tertiary)]`,children:n})]})}function M({leaf:e}){let t=e.status===`running`?`Running…`:`No result summary`;return(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-2 gap-3`,children:[(0,A.jsx)(c,{icon:(0,A.jsx)(a,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens??0,format:e=>o(Math.round(e)),label:`Input`}),(0,A.jsx)(c,{icon:(0,A.jsx)(s,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens??0,format:e=>o(Math.round(e)),label:`Output`})]}),(0,A.jsx)(j,{title:`Prompt`,body:e.promptSummary,emptyText:`No prompt summary`}),(0,A.jsx)(j,{title:`Result`,body:e.resultSummary,emptyText:t})]})}function N({status:e}){return(0,A.jsx)(O,{color:g(e),label:_(e)})}function P(e){switch(e){case`completed`:return`var(--system-positive-strong)`;case`failed`:return`var(--system-negative-strong)`;case`cancelled`:return`var(--content-secondary)`;default:return`var(--primary-base)`}}function F(e){switch(e){case`completed`:return`Completed`;case`failed`:return`Failed`;case`cancelled`:return`Cancelled`;default:return`Running`}}function I({status:e}){return(0,A.jsx)(O,{color:P(e),label:F(e)})}function L({status:e}){let t=x(),n=`h-3.5 w-3.5 shrink-0`,r;return r=e===`running`?(0,A.jsx)(C,{className:`shrink-0`,dotSize:4,gap:2}):e===`completed`?(0,A.jsx)(f,{className:n,style:{color:`var(--system-positive-strong)`}}):e===`failed`?(0,A.jsx)(p,{className:n,style:{color:`var(--system-negative-strong)`}}):(0,A.jsx)(l,{className:n,style:{color:`var(--content-secondary)`},role:`img`,"aria-label":`Cancelled`}),(0,A.jsx)(b,{mode:`wait`,initial:!1,children:(0,A.jsx)(y.span,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:t?{duration:0}:{duration:.15,ease:[.16,1,.3,1]},className:`flex shrink-0 items-center`,children:r},e)})}function R({runId:e,leaf:t,components:n,onSelect:r}){let a=t.label??`Subagent ${t.seq}`,o=t.promptSummary,s=T(`${e}:${t.seq}`);return(0,A.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Open ${a} details`,className:`flex w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] px-2 py-1.5 text-left transition-colors hover:bg-[var(--surface-overlay)]`,children:(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,A.jsx)(L,{status:t.status}),n?(0,A.jsx)(w,{components:n,bodyShapeId:s.bodyShape,eyeStyleId:s.eyeStyle,colorId:s.color,size:16}):(0,A.jsx)(`div`,{style:{width:16,height:16,flexShrink:0},"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-medium-default`,title:a,className:`max-w-[60%] shrink-0 truncate text-[var(--content-default)]`,children:a}),o&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:`shrink-0 text-[var(--content-tertiary)] opacity-10`,children:`|`}),(0,A.jsx)(i,{variant:`body-medium-lighter`,title:o,className:`min-w-0 truncate text-[var(--content-tertiary)]`,children:o})]})]})})}function z({entry:e,onClose:t,onStop:r,onRequestJournal:l}){let f=v(e.status),p=x(),g=e.label??e.runId,_=e.agentsSpawned||e.leaves.size,b=S(),C=[...e.leaves.values()].sort((e,t)=>e.seq-t.seq),[O,j]=(0,k.useState)(null),[P,F]=(0,k.useState)(e.runId);P!==e.runId&&(F(e.runId),j(null));let L=O==null?void 0:e.leaves.get(O),z=L?T(`${e.runId}:${L.seq}`):void 0,B=(0,k.useCallback)(()=>j(null),[]),V=L?L.label??`Subagent ${L.seq}`:``,H=L?V:g,U=f?`live`:`final`;return(0,k.useEffect)(()=>{l?.(e.runId)},[e.runId,U,l]),(0,A.jsx)(E,{headerAbove:L&&(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--border-hover)] px-5 py-3`,children:[(0,A.jsx)(`button`,{type:`button`,onClick:B,title:g,className:`min-w-0 shrink cursor-pointer truncate text-left text-[var(--content-default)] hover:underline`,children:(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,children:g})}),(0,A.jsx)(d,{className:`h-2.5 w-2.5 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,title:V,className:`min-w-0 shrink truncate text-[var(--content-secondary)]`,children:V})]}),icon:(0,A.jsxs)(A.Fragment,{children:[L&&(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(u,{}),onClick:B,"aria-label":`Back to subagents`,tooltip:`Back`,className:`shrink-0`}),L?b&&z?(0,A.jsx)(w,{components:b,bodyShapeId:z.bodyShape,eyeStyleId:z.eyeStyle,colorId:z.color,size:32}):(0,A.jsx)(`div`,{style:{width:32,height:32,flexShrink:0},"aria-hidden":!0}):(0,A.jsx)(h,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0})]}),title:H,headerTrailing:L?(0,A.jsx)(I,{status:L.status}):(0,A.jsx)(N,{status:e.status}),headerActions:f&&r?(0,A.jsx)(D,{onStop:()=>r(e.runId),ariaLabel:`Stop workflow`}):void 0,closeLabel:`Close workflow detail`,onClose:t,children:(0,A.jsx)(y.div,{initial:{opacity:0},animate:{opacity:1},transition:p?{duration:0}:{duration:.18,ease:[.16,1,.3,1]},children:L?(0,A.jsx)(M,{leaf:L}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-3 gap-3`,children:[(0,A.jsx)(c,{icon:(0,A.jsx)(a,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens,format:e=>o(Math.round(e)),label:`Input`}),(0,A.jsx)(c,{icon:(0,A.jsx)(s,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens,format:e=>o(Math.round(e)),label:`Output`}),(0,A.jsx)(c,{icon:(0,A.jsx)(m,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:_,format:e=>o(Math.round(e)),label:`Agents`})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-4 text-[var(--content-emphasised)]`,children:`Subagents`}),C.length===0?(0,A.jsx)(i,{variant:`body-small-default`,className:`py-4 text-center text-[var(--content-tertiary)]`,children:`No subagents yet`}):(0,A.jsx)(`div`,{className:`flex flex-col gap-1`,children:C.map(t=>(0,A.jsx)(R,{runId:e.runId,leaf:t,components:b,onSelect:()=>j(t.seq)},t.seq))})]})]})},L?String(L.seq):`list`)})}export{z as WorkflowDetailPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./capture-error-DiNp24s6.js";import{n as t,t as n}from"./create-selectors-CmDroXTn.js";import{m as r}from"./api-
|
|
1
|
+
import{t as e}from"./capture-error-DiNp24s6.js";import{n as t,t as n}from"./create-selectors-CmDroXTn.js";import{m as r}from"./api-BjYAXdCk.js";import{r as i}from"./resolved-assistants-store-BNadgXqb.js";import{Hr as a,Ur as o,Vr as s}from"./sdk.gen-CiE6cMi0.js";import{t as c}from"./by-tool-use-id-index-C1T3QA5-.js";import{t as l}from"./workflow-status-CGIYm2p7.js";async function u(t,n){try{let{data:i,response:a}=await o({path:{assistant_id:t,id:n},throwOnError:!1});if(!a||!a.ok||!i)return null;let s=r.safeParse(i);return s.success?s.data:(e(s.error,{context:`fetchWorkflowJournal`}),null)}catch(t){return e(t,{context:`fetchWorkflowJournal`}),null}}async function d(t,n){try{let{data:e,response:r}=await a({path:{assistant_id:t,id:n},throwOnError:!1});return r?.ok&&e?e:r?.status===404?`not_found`:null}catch(t){return e(t,{context:`fetchWorkflowRun`}),null}}var f={byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:0};function p(e,t){return{runId:e,status:`running`,agentsSpawned:0,inputTokens:0,outputTokens:0,startedAt:t,leaves:new Map}}function m(e){let t=e;for(let[n,r]of e)r.status===`running`&&(t===e&&(t=new Map(e)),t.set(n,{...r,status:`cancelled`}));return t}function h(e,t){return`${t}:${l(e)?`live`:`final`}`}function g(e){return e===`failed`?`failed`:e===`running`?`running`:`completed`}function _(e){return e===`interrupted`?`running`:e}var v=n(t()((e,t)=>({...f,startRun:n=>{let{byId:r,orderedIds:i,byToolUseId:a}=t(),o=r[n.runId];if(o){let t=o.label??n.label,i=o.toolUseId??n.toolUseId,s=t!==o.label,l=i!==o.toolUseId;if(!s&&!l)return;let u={...o,label:t,toolUseId:i},d=l?c(a,n.toolUseId,n.runId):a;e({byId:{...r,[n.runId]:u},byToolUseId:d});return}let s={...p(n.runId,n.timestamp),label:n.label,toolUseId:n.toolUseId},l=c(a,n.toolUseId,n.runId);e({byId:{...r,[n.runId]:s},orderedIds:[...i,n.runId],byToolUseId:l})},applyProgress:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s={...o,status:_(o.status),phase:n.phase??o.phase,message:n.message??o.message,agentsSpawned:n.agentsSpawned??o.agentsSpawned,label:o.label??n.label};e({byId:{...r,[n.runId]:s},orderedIds:a?i:[...i,n.runId]})},leafStarted:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=_(o.status),c=o.leaves.get(n.seq);if(c&&c.status!==`running`){s!==o.status&&e({byId:{...r,[n.runId]:{...o,status:s}}});return}let l={seq:n.seq,status:`running`,label:n.label??c?.label,promptSummary:n.promptSummary??c?.promptSummary},u=new Map(o.leaves).set(n.seq,l),d=Math.max(o.agentsSpawned,u.size);e({byId:{...r,[n.runId]:{...o,status:s,agentsSpawned:d,leaves:u}},orderedIds:a?i:[...i,n.runId]})},leafFinished:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=o.leaves.get(n.seq),c={seq:n.seq,status:n.status,label:n.label??s?.label,promptSummary:s?.promptSummary,inputTokens:n.inputTokens??s?.inputTokens,outputTokens:n.outputTokens??s?.outputTokens,resultSummary:n.resultSummary??s?.resultSummary};if(s&&s.status===c.status&&s.label===c.label&&s.inputTokens===c.inputTokens&&s.outputTokens===c.outputTokens&&s.resultSummary===c.resultSummary)return;let l=new Map(o.leaves).set(n.seq,c),u=0,d=0;for(let e of l.values())u+=e.inputTokens??0,d+=e.outputTokens??0;e({byId:{...r,[n.runId]:{...o,inputTokens:Math.max(o.inputTokens,u),outputTokens:Math.max(o.outputTokens,d),leaves:l}},orderedIds:a?i:[...i,n.runId]})},completeRun:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=l(n.status)?o.leaves:m(o.leaves),c={...o,status:n.status,agentsSpawned:n.agentsSpawned,inputTokens:n.inputTokens,outputTokens:n.outputTokens,summary:n.summary??o.summary,leaves:s};e({byId:{...r,[n.runId]:c},orderedIds:a?i:[...i,n.runId]})},backfillFromJournal:(n,r)=>{let{byId:i,orderedIds:a}=t(),o=i[n],s=o??p(n,Date.now()),c=!1,u=s.leaves;for(let e of r.leaves){let t=s.leaves.get(e.seq),n=g(e.status);if(!t){c||=(u=new Map(s.leaves),!0),u.set(e.seq,{seq:e.seq,status:n,label:e.label,promptSummary:e.promptSummary,resultSummary:e.resultSummary,inputTokens:e.inputTokens,outputTokens:e.outputTokens});continue}(t.status===`running`||t.status===`cancelled`)&&n!==`running`&&(c||=(u=new Map(s.leaves),!0),u.set(e.seq,{...t,status:n,label:t.label??e.label,promptSummary:t.promptSummary??e.promptSummary,resultSummary:t.resultSummary??e.resultSummary,inputTokens:t.inputTokens??e.inputTokens,outputTokens:t.outputTokens??e.outputTokens}))}let d=l(s.status)?r.status??s.status:s.status,f=l(s.status)&&!l(d)?m(u):u,h={...s,status:d,agentsSpawned:Math.max(s.agentsSpawned,r.agentsSpawned??s.agentsSpawned),inputTokens:Math.max(s.inputTokens,r.inputTokens??s.inputTokens),outputTokens:Math.max(s.outputTokens,r.outputTokens??s.outputTokens),phase:r.phase??s.phase,leaves:f};e({byId:{...i,[n]:h},orderedIds:o?a:[...a,n]})},fetchJournalIfNeeded:async(n,r)=>{let{byId:i,fetchedAt:a}=t(),o=i[r];if(!o)return;let s=h(o.status,r),c=a.get(s);if(c!==void 0&&c>=o.startedAt)return;let l=new Map(a);l.set(s,o.startedAt),e({fetchedAt:l});let d=t().generation,f=await u(n,r);if(!f){let n=new Map(t().fetchedAt);n.delete(s),e({fetchedAt:n});return}t().generation===d&&t().backfillFromJournal(r,f)},hydrateRunIfNeeded:async(n,r)=>{let{byId:i,hydratedRunIds:a}=t();if(i[r]||a.has(r))return;e({hydratedRunIds:new Set(a).add(r)});let o=t().generation,s=await d(n,r);if(t().generation===o){if(s===`not_found`){e({notFoundRunIds:new Set(t().notFoundRunIds).add(r)});return}if(s===null){let n=new Set(t().hydratedRunIds);n.delete(r),e({hydratedRunIds:n,hydrationFailedRunIds:new Set(t().hydrationFailedRunIds).add(r)});return}t().startRun({runId:r,label:s.name??void 0,timestamp:Date.now()}),l(s.status)?t().applyProgress({runId:r,agentsSpawned:s.agentsSpawned}):t().completeRun({runId:r,status:s.status,agentsSpawned:s.agentsSpawned,inputTokens:s.inputTokens,outputTokens:s.outputTokens}),await t().fetchJournalIfNeeded(n,r)}},abortRun:async e=>{let t=i.getState().activeAssistantId;if(t)try{await s({path:{assistant_id:t,id:e},throwOnError:!0})}catch{}},reset:()=>e({byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:t().generation+1})})));export{v as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{h as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./useMutation-D2YPyfEH.js";import{t as s}from"./jsx-runtime-BJ8jcmzB.js";import{t as c}from"./queryOptions-DbnOXI51.js";import{a as l,n as u}from"./list-row-CDwzGT9g.js";import{t as d}from"./createLucideIcon-B-ZPaMbU.js";import{t as f}from"./chevron-down-CmQCCo_x.js";import{t as p}from"./chevron-right-Dwr_Sx98.js";import{t as m}from"./menu-ubIBmfUh.js";import{t as h}from"./download-DnnvWjPo.js";import{t as g}from"./eye-off-0lRvXR9p.js";import{t as _}from"./eye-CHlTF_ct.js";import{t as v}from"./file-plus-C_Iw4p49.js";import{t as y}from"./file-text-DpdlyCly.js";import{t as b}from"./file-DVQXh8CW.js";import{t as x}from"./folder-open-BU6EPS8G.js";import{n as S,t as C}from"./image-DsrjUDQh.js";import{t as w}from"./folder-B0UQA6jd.js";import{t as T}from"./loader-circle-DYe85z3g.js";import{n as E}from"./use-swipe-engine-b1fkDAV8.js";import{t as D}from"./pencil-Ba0D7tjH.js";import{t as O}from"./plus-CWkbiq1y.js";import{t as k}from"./search-D_t5oHhF.js";import{t as A}from"./trash-2-V2WT_DbX.js";import{t as j}from"./x-zfSDUG5z.js";import{F as M}from"./src-qDZBwoEm.js";import{t as N}from"./input-DkgpMeG9.js";import{t as P}from"./modal-UYNawsIu.js";import{t as F}from"./confirm-dialog-Drw1adml.js";import{n as I,t as L}from"./file-markdown-Br-X9E8g.js";import"./i18n--HmJLuhM.js";import{t as ee}from"./Trans-BUsRawhS.js";import{t as R}from"./useTranslation-DdVCKPgw.js";import{Gr as z,Jr as te,Kr as B,Wr as ne,Xr as V,Zr as re,qr as ie}from"./sdk.gen-CiE6cMi0.js";import{t as ae}from"./use-touch-mobile-CnqGLpCj.js";import{n as oe,r as H,t as se}from"./workspace-tree-query-BmugmuTC.js";import{t as U}from"./use-active-assistant-id-BADYKVyx.js";import{n as W,r as ce,t as le}from"./use-side-list-room-DtmLatRX.js";import{t as G}from"./format-file-size-ByNX0dQR.js";import{i as K,n as ue,r as q,t as J}from"./file-editor-C2Qy2Ujg.js";var de=d(`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`}]]),fe=d(`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`}]]),Y=e(t(),1);function pe(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function me(e,t){return pe(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function he(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function X(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Z=s();function ge(e){let{assistantId:t,path:n,name:r,showHidden:i}=e,[a,o]=(0,Y.useState)(!1),[s,c]=(0,Y.useState)(!1);return{isDownloading:a,error:s,download:(0,Y.useCallback)(async()=>{c(!1),o(!0);try{await H({assistantId:t,path:n,filename:r,showHidden:i})}catch{c(!0)}finally{o(!1)}},[t,n,r,i])}}function _e({assistantId:e,path:t,name:r,showHidden:i}){let{t:a}=R(`workspace`),{isDownloading:o,error:s,download:c}=ge({assistantId:e,path:t,name:r,showHidden:i});return(0,Z.jsx)(n,{variant:`ghost`,size:`regular`,iconOnly:o?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(h,{"aria-hidden":!0}),onClick:()=>void c(),disabled:o,"aria-label":a(`workspaceFileViewer.downloadAria`,{name:r}),tooltip:a(s?`workspaceFileViewer.downloadFailed`:`workspaceFileViewer.download`)})}function ve(e){return c({queryFn:async()=>{let{data:t,error:n}=await B({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function ye({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=y;return n.startsWith(`image/`)?r=C:n.startsWith(`video/`)?r=E:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=b),(0,Z.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,Z.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function be({viewMode:e,onChange:t}){let{t:r}=R(`workspace`);return(0,Z.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(i=>{let a=e===i;return(0,Z.jsx)(n,{variant:`ghost`,onClick:()=>t(i),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:a?`var(--surface-lift)`:`transparent`,color:a?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:a?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r(i===`preview`?`workspaceFileViewer.preview`:`workspaceFileViewer.source`)},i)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(ye,{mimeType:t}),(0,Z.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:G(n)})]}),r]})}function xe({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await z({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,Y.useState)(null);return(0,Y.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function Se({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let{t:c}=R(`workspace`),{isDownloading:l,error:u,download:d}=ge({assistantId:e,path:t,name:r,showHidden:s});return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:r,mimeType:i,size:a}),(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Z.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,Z.jsx)(b,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Z.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,Z.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:G(a,`Unknown size`)}),o&&(0,Z.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[c(`workspaceFileViewer.modifiedLabel`),` `,new Date(o).toLocaleString()]})]}),(0,Z.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:l?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(h,{"aria-hidden":!0}),onClick:d,disabled:l,"aria-label":c(`workspaceFileViewer.downloadAria`,{name:r}),className:`mt-4`,children:c(l?`workspaceFileViewer.downloading`:`workspaceFileViewer.download`)}),u&&(0,Z.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:c(`workspaceFileViewer.downloadFailed`)})]})})]})}function Ce({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let{t:f}=R(`workspace`),p=i(),{data:m,isLoading:h}=a({...ve({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[g,_]=(0,Y.useState)(null),[v,y]=(0,Y.useState)(null);(0,Y.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,Y.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=g!=null&&g===t,S=m?.content??``,C=v?.path===t?v.content:S,w=()=>{_(null),y(null)},E=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await re({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),p.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),D=C!==S,O=(0,Y.useCallback)(()=>{t&&D&&!E.isPending&&E.mutate({path:t,content:C})},[t,D,E,C]);if(!t)return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:f(`workspaceFileViewer.selectAFile`)}),l&&(0,Z.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Z.jsx)(x,{"aria-hidden":!0}),children:f(`workspaceFileViewer.browseFiles`)})]});if(h)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!m)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:f(`workspaceFileViewer.fileNotFound`)})});let k=m.mimeType??`application/octet-stream`,A=m.name??t.split(`/`).pop()??t,j=I(A,k),M=me(A,k),N=m.content!=null&&!j&&!M,P=t?X(t):!0,F=b&&(0,Z.jsx)(ue,{isDirty:D,isSaving:E.isPending,error:E.isError?f(`workspaceFileViewer.saveFailed`):null,onSave:O,onDiscard:w});if(j&&m.content!=null){let e=b?C:m.content;return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:A,mimeType:k,rightContent:(0,Z.jsx)(be,{viewMode:s,onChange:e=>{b&&w(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(J,{content:e,fileName:A,mimeType:k,showEdit:!P&&s===`source`,isEditing:b,onToggleEdit:()=>b?w():_(t)}),s===`preview`?(0,Z.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Z.jsx)(L,{content:e})}):b?(0,Z.jsx)(q,{value:C,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(K,{content:m.content,readOnly:P,onStartEdit:()=>_(t)})]}),F]})}if(M&&m.content!=null){let e=b?C:m.content,n=he(e);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:A,mimeType:k,rightContent:(0,Z.jsx)(be,{viewMode:s,onChange:e=>{b&&w(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(J,{content:s===`preview`?n:e,downloadContent:e,fileName:A,mimeType:k,showEdit:!P&&s===`source`,isEditing:b,onToggleEdit:()=>b?w():_(t)}),s===`preview`?(0,Z.jsx)(K,{content:n,readOnly:!0,whiteSpace:`pre`}):b?(0,Z.jsx)(q,{value:C,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(K,{content:m.content,readOnly:P,onStartEdit:()=>_(t)})]}),F]})}return N?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:A,mimeType:k,size:m.size}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(J,{content:b?C:m.content??``,fileName:A,mimeType:k,showEdit:!P,isEditing:b,onToggleEdit:()=>b?w():_(t)}),b?(0,Z.jsx)(q,{value:C,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(K,{content:m.content??``,readOnly:P,onStartEdit:()=>_(t)})]}),F]}):k.startsWith(`image/`)||k.startsWith(`video/`)?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:A,mimeType:k,size:m.size,rightContent:(0,Z.jsx)(_e,{assistantId:e,path:t,name:A,showHidden:r})}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Z.jsx)(xe,{assistantId:e,path:t,mimeType:k,showHidden:r})})]}):(0,Z.jsx)(Se,{assistantId:e,path:t,name:A,mimeType:k,size:m.size,modifiedAt:m.modifiedAt,showHidden:r})}function we(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}async function Te(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await V({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 Ee({entry:e}){return e.type===`directory`?(0,Z.jsx)(w,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Z.jsx)(C,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Z.jsx)(E,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(y,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function De({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:u,onRequestRename:d,onRequestCreate:m,depth:h}){let{t:g}=R(`workspace`),_=e.path??``,y=e.name??``,b=e.type===`directory`,x=n.has(_),C=r===_,w=y.startsWith(`.`),T=!X(_),E=b&&(x||s.length>0),{data:O}=a({...oe({assistantId:t,path:_,showHidden:i,includeDirSizes:o===`size`}),enabled:b&&E}),k=(0,Y.useMemo)(()=>we(O?.entries??[],o),[O?.entries,o]),j=s===``||y.toLowerCase().includes(s);if(s!==``&&!b&&!j)return null;let N=(0,Z.jsxs)(`button`,{onClick:()=>{b?c(_):l(_)},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:C?`var(--content-default)`:w?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:C?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:w&&!C?.7:1},children:[b?E?(0,Z.jsx)(f,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(p,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Z.jsx)(Ee,{entry:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:y}),e.size!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:G(e.size)})]});return(0,Z.jsxs)(`div`,{children:[T?(0,Z.jsxs)(M.Root,{children:[(0,Z.jsx)(M.Trigger,{children:N}),(0,Z.jsxs)(M.Content,{children:[b&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(M.Item,{leftIcon:(0,Z.jsx)(v,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`file`,parentPath:_}),children:g(`workspaceTree.newFile`)}),(0,Z.jsx)(M.Item,{leftIcon:(0,Z.jsx)(S,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`folder`,parentPath:_}),children:g(`workspaceTree.newFolder`)}),(0,Z.jsx)(M.Separator,{})]}),(0,Z.jsx)(M.Item,{leftIcon:(0,Z.jsx)(A,{className:`h-3.5 w-3.5`}),onSelect:()=>u({path:_,name:y,isDirectory:b}),children:g(`workspaceTree.delete`)}),(0,Z.jsx)(M.Item,{leftIcon:(0,Z.jsx)(D,{className:`h-3.5 w-3.5`}),onSelect:()=>d({path:_,name:y,isDirectory:b}),children:g(`workspaceTree.rename`)})]})]}):N,b&&E&&k.length>0&&(0,Z.jsx)(`div`,{children:k.map(e=>(0,Z.jsx)(De,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:u,onRequestRename:d,onRequestCreate:m,depth:h+1},e.path))})]})}function Oe({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let{t:u}=R(`workspace`),d=(0,Y.useRef)(null),[f,p]=(0,Y.useState)(a??``),m=f.trim(),h=m.length>0&&(/[/\\]/.test(m)||m===`.`||m===`..`),g=m.length>0&&!h&&!c;return(0,Z.jsx)(P.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Z.jsx)(P.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=d.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),g&&s(m)},children:[(0,Z.jsx)(P.Header,{children:(0,Z.jsx)(P.Title,{children:e})}),(0,Z.jsx)(P.Body,{children:(0,Z.jsx)(N,{ref:d,label:u(`workspaceTree.nameLabel`),value:f,onChange:e=>p(e.target.value),placeholder:t,errorText:l??(h?u(`workspaceTree.nameError`):void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Z.jsxs)(P.Footer,{children:[(0,Z.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:u(`workspaceTree.cancel`)}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,disabled:!g,children:c?i:r})]})]})})})}function ke({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:m,onPathRenamed:h,search:v,onSearchChange:y}){let{t:b}=R(`workspace`),x=i(),S=v.trim().toLowerCase(),[C,w]=(0,Y.useState)(!1),[T,E]=(0,Y.useState)(null),[D,O]=(0,Y.useState)(null),A=(0,Y.useCallback)(()=>{E(null),O(null)},[]),{data:M,isLoading:P}=a(oe({assistantId:e,showHidden:s,includeDirSizes:c===`size`})),I=(0,Y.useMemo)(()=>we(M?.entries??[],c),[M?.entries,c]),L=(0,Y.useCallback)(()=>{for(let e of[se,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])x.invalidateQueries({queryKey:[e]})},[x]),z=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await Te(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await re({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await ie({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=>{A(),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.`)}}),B=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 Te(e,r,t.newName,i);let{error:o,response:s}=await te({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})=>{A(),L(),h(e,t)},onError:e=>{O(e instanceof Error?e.message:`Failed to rename.`)}}),V=(0,Y.useCallback)(e=>{O(null),E({type:`create`,...e})},[]),ae=(0,Y.useCallback)(e=>{O(null),E({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,Y.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await ne({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)}}),ce=(0,Y.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:b(`workspaceTree.heading`)}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Z.jsx)(fe,{"aria-hidden":!0}):(0,Z.jsx)(de,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":b(c===`size`?`workspaceTree.sortByNameAria`:`workspaceTree.sortBySizeAria`),title:b(c===`size`?`workspaceTree.sortedBySizeTitle`:`workspaceTree.sortedByNameTitle`),tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Z.jsx)(_,{"aria-hidden":!0}):(0,Z.jsx)(g,{"aria-hidden":!0}),onClick:f,"aria-label":b(s?`workspaceTree.hideHiddenAria`:`workspaceTree.showHiddenAria`),title:b(s?`workspaceTree.hideHiddenAria`:`workspaceTree.showHiddenAria`),tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(Ae,{open:C,onOpenChange:w,onSelectKind:e=>{w(!1),V({kind:e,parentPath:``})}})]})]}),(0,Z.jsx)(`div`,{className:`px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(N,{type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:b(`workspaceTree.searchPlaceholder`),leftIcon:(0,Z.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),v&&(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(j,{"aria-hidden":!0}),onClick:()=>y(``),"aria-label":b(`workspaceTree.clearSearchAria`),className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:P?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.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,Z.jsx)(De,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:S,onToggleExpand:l,onSelectPath:d,onRequestDelete:ce,onRequestRename:ae,onRequestCreate:V,depth:0},n.path)):(0,Z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:b(`workspaceTree.noFilesFound`)})}),T?.type===`create`&&(0,Z.jsx)(Oe,{title:T.kind===`file`?b(`workspaceTree.newFile`):b(`workspaceTree.newFolder`),placeholder:T.kind===`file`?`filename.md`:`folder-name`,confirmLabel:b(`workspaceTree.create`),pendingLabel:b(`workspaceTree.creating`),onCancel:A,onConfirm:e=>{O(null),z.mutate({kind:T.kind,parentPath:T.parentPath,name:e})},pending:z.isPending,error:D},`create-${T.kind}-${T.parentPath}`),T?.type===`rename`&&(0,Z.jsx)(Oe,{title:b(`workspaceTree.rename`),placeholder:T.name,confirmLabel:b(`workspaceTree.rename`),pendingLabel:b(`workspaceTree.renaming`),initialName:T.name,onCancel:A,onConfirm:e=>{if(e===T.name){A();return}O(null),B.mutate({oldPath:T.path,newName:e})},pending:B.isPending,error:D},`rename-${T.path}`),(0,Z.jsx)(F,{open:H!==null,title:H?.isDirectory?b(`workspaceTree.deleteFolderTitle`):b(`workspaceTree.deleteFileTitle`),message:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ee,{i18nKey:H?.isDirectory?`workspaceTree.deleteFolderMessage`:`workspaceTree.deleteFileMessage`,ns:`workspace`,values:{name:H?.name??``},components:{name:(0,Z.jsx)(`span`,{style:{color:`var(--content-default)`}})}}),W.error&&(0,Z.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?b(`workspaceTree.deleting`):b(`workspaceTree.delete`),destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function Ae({open:e,onOpenChange:t,onSelectKind:r}){let{t:i}=R(`workspace`);return ae()?(0,Z.jsxs)(l.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(l.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(O,{"aria-hidden":!0}),"aria-label":i(`workspaceTree.createTriggerAria`),title:i(`workspaceTree.createTriggerTitle`),tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(l.Content,{children:[(0,Z.jsx)(l.Header,{className:`sr-only`,children:(0,Z.jsx)(l.Title,{children:i(`workspaceTree.creatingHeading`)})}),(0,Z.jsxs)(l.Body,{className:`pt-0`,children:[(0,Z.jsx)(u,{icon:v,label:i(`workspaceTree.newFile`),onSelect:()=>r(`file`)}),(0,Z.jsx)(u,{icon:S,label:i(`workspaceTree.newFolder`),onSelect:()=>r(`folder`)})]})]})]}):(0,Z.jsxs)(m.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(m.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(O,{"aria-hidden":!0}),"aria-label":i(`workspaceTree.createTriggerAria`),title:i(`workspaceTree.createTriggerTitle`),tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(m.Content,{align:`end`,sideOffset:4,children:[(0,Z.jsx)(m.Item,{leftIcon:(0,Z.jsx)(v,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:i(`workspaceTree.newFile`)}),(0,Z.jsx)(m.Item,{leftIcon:(0,Z.jsx)(S,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:i(`workspaceTree.newFolder`)})]})]})}function $(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 je({assistantId:e}){let{t}=R(`workspace`),[n,i]=r(),[a,o]=(0,Y.useState)(()=>{let e=n.get(`file`);return e?$(e):new Set}),[s,c]=(0,Y.useState)(()=>n.get(`file`)),[l,u]=(0,Y.useState)(!1),[d,f]=(0,Y.useState)(()=>n.get(`sort`)===`size`?`size`:`name`),[p,m]=(0,Y.useState)(`preview`);(0,Y.useEffect)(()=>{let e=n.get(`file`);e&&(c(e),o(t=>{let n=new Set(t);for(let t of $(e))n.add(t);return n.size===t.size?t:n}),i(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0}))},[n,i]);let h=(0,Y.useCallback)(e=>{o(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),g=(0,Y.useCallback)(e=>{o(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),{paneRef:_,hasRoomForList:v,drawerOpen:y,openDrawer:b,closeDrawer:x}=le(),[S,C]=(0,Y.useState)(``),w=(0,Y.useCallback)(e=>{c(e),x()},[x]),[T,E]=(0,Y.useState)(null),D=(0,Y.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);c(e=>e!==null&&t(e)?null:e),o(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),E({path:e})},[]),[O,k]=(0,Y.useState)(null),A={assistantId:e,expandedPaths:a,selectedPath:s,showHidden:l,sortMode:d,onToggleExpand:h,onExpandPath:g,onSelectPath:w,onToggleShowHidden:()=>u(e=>!e),onChangeSortMode:f,onPathDeleted:D,onPathRenamed:(0,Y.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;c(e=>e===null?e:n(e)),o(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}),k({from:e,to:t})},[]),search:S,onSearchChange:C};return(0,Z.jsxs)(`div`,{ref:_,className:`flex h-full min-h-0 flex-col gap-4`,children:[v?null:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`flex items-center`,children:(0,Z.jsx)(ce,{onClick:b})}),(0,Z.jsx)(W,{open:y,onClose:x,title:t(`workspaceBrowser.drawerTitle`),children:(0,Z.jsx)(ke,{...A})})]}),(0,Z.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-4 ${v?`grid-cols-[320px_1fr]`:`grid-cols-1`}`,children:[v?(0,Z.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,Z.jsx)(ke,{...A})}):null,(0,Z.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,Z.jsx)(Ce,{assistantId:e,selectedPath:s,showHidden:l,viewMode:p,onChangeViewMode:m,onBrowse:v?void 0:b,pathRename:O,pathDelete:T})})]})]})}function Me(){return(0,Z.jsx)(je,{assistantId:U()})}export{Me as WorkspacePage};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{h as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./useMutation-D2YPyfEH.js";import{t as s}from"./jsx-runtime-BJ8jcmzB.js";import{t as c}from"./queryOptions-DbnOXI51.js";import{a as l,n as u}from"./list-row-CDwzGT9g.js";import{t as d}from"./createLucideIcon-B-ZPaMbU.js";import{t as f}from"./chevron-down-CmQCCo_x.js";import{t as p}from"./chevron-right-Dwr_Sx98.js";import{t as m}from"./menu-ubIBmfUh.js";import{t as h}from"./download-DnnvWjPo.js";import{t as g}from"./eye-off-0lRvXR9p.js";import{t as _}from"./eye-CHlTF_ct.js";import{t as v}from"./file-plus-C_Iw4p49.js";import{t as y}from"./file-text-DpdlyCly.js";import{t as b}from"./file-DVQXh8CW.js";import{t as x}from"./folder-open-BU6EPS8G.js";import{n as S,t as C}from"./image-DsrjUDQh.js";import{t as w}from"./folder-B0UQA6jd.js";import{t as T}from"./loader-circle-DYe85z3g.js";import{n as E}from"./use-swipe-engine-b1fkDAV8.js";import{t as D}from"./pencil-Ba0D7tjH.js";import{t as O}from"./plus-CWkbiq1y.js";import{t as k}from"./search-D_t5oHhF.js";import{t as A}from"./trash-2-V2WT_DbX.js";import{t as j}from"./x-zfSDUG5z.js";import{I as M}from"./src-CImIAPTd.js";import{t as N}from"./input-DkgpMeG9.js";import{t as P}from"./modal-UYNawsIu.js";import{t as F}from"./confirm-dialog-Drw1adml.js";import{n as I,t as L}from"./file-markdown-C1rEGVrN.js";import"./i18n-C9hRT4Lf.js";import{t as ee}from"./Trans-FBE1EuwL.js";import{t as R}from"./useTranslation-D9pPv-bA.js";import{Gr as z,Jr as te,Kr as B,Wr as ne,Xr as V,Zr as re,qr as ie}from"./sdk.gen-CiE6cMi0.js";import{t as ae}from"./use-touch-mobile-CnqGLpCj.js";import{n as oe,r as H,t as se}from"./workspace-tree-query-Dyls8wmV.js";import{t as U}from"./use-active-assistant-id-BADYKVyx.js";import{n as W,r as ce,t as le}from"./use-side-list-room-CUXPQyjw.js";import{t as G}from"./format-file-size-ByNX0dQR.js";import{i as K,n as ue,r as q,t as J}from"./file-editor-BwdObVSu.js";var de=d(`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`}]]),fe=d(`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`}]]),Y=e(t(),1);function pe(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function me(e,t){return pe(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function he(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function X(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Z=s();function ge(e){let{assistantId:t,path:n,name:r,showHidden:i}=e,[a,o]=(0,Y.useState)(!1),[s,c]=(0,Y.useState)(!1);return{isDownloading:a,error:s,download:(0,Y.useCallback)(async()=>{c(!1),o(!0);try{await H({assistantId:t,path:n,filename:r,showHidden:i})}catch{c(!0)}finally{o(!1)}},[t,n,r,i])}}function _e({assistantId:e,path:t,name:r,showHidden:i}){let{t:a}=R(`workspace`),{isDownloading:o,error:s,download:c}=ge({assistantId:e,path:t,name:r,showHidden:i});return(0,Z.jsx)(n,{variant:`ghost`,size:`regular`,iconOnly:o?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(h,{"aria-hidden":!0}),onClick:()=>void c(),disabled:o,"aria-label":a(`workspaceFileViewer.downloadAria`,{name:r}),tooltip:a(s?`workspaceFileViewer.downloadFailed`:`workspaceFileViewer.download`)})}function ve(e){return c({queryFn:async()=>{let{data:t,error:n}=await B({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function ye({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=y;return n.startsWith(`image/`)?r=C:n.startsWith(`video/`)?r=E:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=b),(0,Z.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,Z.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function be({viewMode:e,onChange:t}){let{t:r}=R(`workspace`);return(0,Z.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(i=>{let a=e===i;return(0,Z.jsx)(n,{variant:`ghost`,onClick:()=>t(i),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:a?`var(--surface-lift)`:`transparent`,color:a?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:a?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r(i===`preview`?`workspaceFileViewer.preview`:`workspaceFileViewer.source`)},i)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(ye,{mimeType:t}),(0,Z.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:G(n)})]}),r]})}function xe({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await z({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,Y.useState)(null);return(0,Y.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function Se({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let{t:c}=R(`workspace`),{isDownloading:l,error:u,download:d}=ge({assistantId:e,path:t,name:r,showHidden:s});return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:r,mimeType:i,size:a}),(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Z.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,Z.jsx)(b,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Z.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,Z.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:G(a,`Unknown size`)}),o&&(0,Z.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[c(`workspaceFileViewer.modifiedLabel`),` `,new Date(o).toLocaleString()]})]}),(0,Z.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:l?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(h,{"aria-hidden":!0}),onClick:d,disabled:l,"aria-label":c(`workspaceFileViewer.downloadAria`,{name:r}),className:`mt-4`,children:c(l?`workspaceFileViewer.downloading`:`workspaceFileViewer.download`)}),u&&(0,Z.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:c(`workspaceFileViewer.downloadFailed`)})]})})]})}function Ce({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let{t:f}=R(`workspace`),p=i(),{data:m,isLoading:h}=a({...ve({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[g,_]=(0,Y.useState)(null),[v,y]=(0,Y.useState)(null);(0,Y.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,Y.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=g!=null&&g===t,S=m?.content??``,C=v?.path===t?v.content:S,w=()=>{_(null),y(null)},E=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await re({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),p.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),D=C!==S,O=(0,Y.useCallback)(()=>{t&&D&&!E.isPending&&E.mutate({path:t,content:C})},[t,D,E,C]);if(!t)return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:f(`workspaceFileViewer.selectAFile`)}),l&&(0,Z.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Z.jsx)(x,{"aria-hidden":!0}),children:f(`workspaceFileViewer.browseFiles`)})]});if(h)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!m)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:f(`workspaceFileViewer.fileNotFound`)})});let k=m.mimeType??`application/octet-stream`,A=m.name??t.split(`/`).pop()??t,j=I(A,k),M=me(A,k),N=m.content!=null&&!j&&!M,P=t?X(t):!0,F=b&&(0,Z.jsx)(ue,{isDirty:D,isSaving:E.isPending,error:E.isError?f(`workspaceFileViewer.saveFailed`):null,onSave:O,onDiscard:w});if(j&&m.content!=null){let e=b?C:m.content;return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:A,mimeType:k,rightContent:(0,Z.jsx)(be,{viewMode:s,onChange:e=>{b&&w(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(J,{content:e,fileName:A,mimeType:k,showEdit:!P&&s===`source`,isEditing:b,onToggleEdit:()=>b?w():_(t)}),s===`preview`?(0,Z.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Z.jsx)(L,{content:e})}):b?(0,Z.jsx)(q,{value:C,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(K,{content:m.content,readOnly:P,onStartEdit:()=>_(t)})]}),F]})}if(M&&m.content!=null){let e=b?C:m.content,n=he(e);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:A,mimeType:k,rightContent:(0,Z.jsx)(be,{viewMode:s,onChange:e=>{b&&w(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(J,{content:s===`preview`?n:e,downloadContent:e,fileName:A,mimeType:k,showEdit:!P&&s===`source`,isEditing:b,onToggleEdit:()=>b?w():_(t)}),s===`preview`?(0,Z.jsx)(K,{content:n,readOnly:!0,whiteSpace:`pre`}):b?(0,Z.jsx)(q,{value:C,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(K,{content:m.content,readOnly:P,onStartEdit:()=>_(t)})]}),F]})}return N?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:A,mimeType:k,size:m.size}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(J,{content:b?C:m.content??``,fileName:A,mimeType:k,showEdit:!P,isEditing:b,onToggleEdit:()=>b?w():_(t)}),b?(0,Z.jsx)(q,{value:C,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(K,{content:m.content??``,readOnly:P,onStartEdit:()=>_(t)})]}),F]}):k.startsWith(`image/`)||k.startsWith(`video/`)?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:A,mimeType:k,size:m.size,rightContent:(0,Z.jsx)(_e,{assistantId:e,path:t,name:A,showHidden:r})}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Z.jsx)(xe,{assistantId:e,path:t,mimeType:k,showHidden:r})})]}):(0,Z.jsx)(Se,{assistantId:e,path:t,name:A,mimeType:k,size:m.size,modifiedAt:m.modifiedAt,showHidden:r})}function we(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}async function Te(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await V({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 Ee({entry:e}){return e.type===`directory`?(0,Z.jsx)(w,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Z.jsx)(C,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Z.jsx)(E,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(y,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function De({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:u,onRequestRename:d,onRequestCreate:m,depth:h}){let{t:g}=R(`workspace`),_=e.path??``,y=e.name??``,b=e.type===`directory`,x=n.has(_),C=r===_,w=y.startsWith(`.`),T=!X(_),E=b&&(x||s.length>0),{data:O}=a({...oe({assistantId:t,path:_,showHidden:i,includeDirSizes:o===`size`}),enabled:b&&E}),k=(0,Y.useMemo)(()=>we(O?.entries??[],o),[O?.entries,o]),j=s===``||y.toLowerCase().includes(s);if(s!==``&&!b&&!j)return null;let N=(0,Z.jsxs)(`button`,{onClick:()=>{b?c(_):l(_)},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:C?`var(--content-default)`:w?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:C?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:w&&!C?.7:1},children:[b?E?(0,Z.jsx)(f,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(p,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Z.jsx)(Ee,{entry:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:y}),e.size!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:G(e.size)})]});return(0,Z.jsxs)(`div`,{children:[T?(0,Z.jsxs)(M.Root,{children:[(0,Z.jsx)(M.Trigger,{children:N}),(0,Z.jsxs)(M.Content,{children:[b&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(M.Item,{leftIcon:(0,Z.jsx)(v,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`file`,parentPath:_}),children:g(`workspaceTree.newFile`)}),(0,Z.jsx)(M.Item,{leftIcon:(0,Z.jsx)(S,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`folder`,parentPath:_}),children:g(`workspaceTree.newFolder`)}),(0,Z.jsx)(M.Separator,{})]}),(0,Z.jsx)(M.Item,{leftIcon:(0,Z.jsx)(A,{className:`h-3.5 w-3.5`}),onSelect:()=>u({path:_,name:y,isDirectory:b}),children:g(`workspaceTree.delete`)}),(0,Z.jsx)(M.Item,{leftIcon:(0,Z.jsx)(D,{className:`h-3.5 w-3.5`}),onSelect:()=>d({path:_,name:y,isDirectory:b}),children:g(`workspaceTree.rename`)})]})]}):N,b&&E&&k.length>0&&(0,Z.jsx)(`div`,{children:k.map(e=>(0,Z.jsx)(De,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:u,onRequestRename:d,onRequestCreate:m,depth:h+1},e.path))})]})}function Oe({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let{t:u}=R(`workspace`),d=(0,Y.useRef)(null),[f,p]=(0,Y.useState)(a??``),m=f.trim(),h=m.length>0&&(/[/\\]/.test(m)||m===`.`||m===`..`),g=m.length>0&&!h&&!c;return(0,Z.jsx)(P.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Z.jsx)(P.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=d.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),g&&s(m)},children:[(0,Z.jsx)(P.Header,{children:(0,Z.jsx)(P.Title,{children:e})}),(0,Z.jsx)(P.Body,{children:(0,Z.jsx)(N,{ref:d,label:u(`workspaceTree.nameLabel`),value:f,onChange:e=>p(e.target.value),placeholder:t,errorText:l??(h?u(`workspaceTree.nameError`):void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Z.jsxs)(P.Footer,{children:[(0,Z.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:u(`workspaceTree.cancel`)}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,disabled:!g,children:c?i:r})]})]})})})}function ke({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:m,onPathRenamed:h,search:v,onSearchChange:y}){let{t:b}=R(`workspace`),x=i(),S=v.trim().toLowerCase(),[C,w]=(0,Y.useState)(!1),[T,E]=(0,Y.useState)(null),[D,O]=(0,Y.useState)(null),A=(0,Y.useCallback)(()=>{E(null),O(null)},[]),{data:M,isLoading:P}=a(oe({assistantId:e,showHidden:s,includeDirSizes:c===`size`})),I=(0,Y.useMemo)(()=>we(M?.entries??[],c),[M?.entries,c]),L=(0,Y.useCallback)(()=>{for(let e of[se,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])x.invalidateQueries({queryKey:[e]})},[x]),z=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await Te(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await re({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await ie({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=>{A(),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.`)}}),B=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 Te(e,r,t.newName,i);let{error:o,response:s}=await te({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})=>{A(),L(),h(e,t)},onError:e=>{O(e instanceof Error?e.message:`Failed to rename.`)}}),V=(0,Y.useCallback)(e=>{O(null),E({type:`create`,...e})},[]),ae=(0,Y.useCallback)(e=>{O(null),E({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,Y.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await ne({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)}}),ce=(0,Y.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:b(`workspaceTree.heading`)}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Z.jsx)(fe,{"aria-hidden":!0}):(0,Z.jsx)(de,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":b(c===`size`?`workspaceTree.sortByNameAria`:`workspaceTree.sortBySizeAria`),title:b(c===`size`?`workspaceTree.sortedBySizeTitle`:`workspaceTree.sortedByNameTitle`),tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Z.jsx)(_,{"aria-hidden":!0}):(0,Z.jsx)(g,{"aria-hidden":!0}),onClick:f,"aria-label":b(s?`workspaceTree.hideHiddenAria`:`workspaceTree.showHiddenAria`),title:b(s?`workspaceTree.hideHiddenAria`:`workspaceTree.showHiddenAria`),tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(Ae,{open:C,onOpenChange:w,onSelectKind:e=>{w(!1),V({kind:e,parentPath:``})}})]})]}),(0,Z.jsx)(`div`,{className:`px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(N,{type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:b(`workspaceTree.searchPlaceholder`),leftIcon:(0,Z.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),v&&(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(j,{"aria-hidden":!0}),onClick:()=>y(``),"aria-label":b(`workspaceTree.clearSearchAria`),className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:P?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.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,Z.jsx)(De,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:S,onToggleExpand:l,onSelectPath:d,onRequestDelete:ce,onRequestRename:ae,onRequestCreate:V,depth:0},n.path)):(0,Z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:b(`workspaceTree.noFilesFound`)})}),T?.type===`create`&&(0,Z.jsx)(Oe,{title:T.kind===`file`?b(`workspaceTree.newFile`):b(`workspaceTree.newFolder`),placeholder:T.kind===`file`?`filename.md`:`folder-name`,confirmLabel:b(`workspaceTree.create`),pendingLabel:b(`workspaceTree.creating`),onCancel:A,onConfirm:e=>{O(null),z.mutate({kind:T.kind,parentPath:T.parentPath,name:e})},pending:z.isPending,error:D},`create-${T.kind}-${T.parentPath}`),T?.type===`rename`&&(0,Z.jsx)(Oe,{title:b(`workspaceTree.rename`),placeholder:T.name,confirmLabel:b(`workspaceTree.rename`),pendingLabel:b(`workspaceTree.renaming`),initialName:T.name,onCancel:A,onConfirm:e=>{if(e===T.name){A();return}O(null),B.mutate({oldPath:T.path,newName:e})},pending:B.isPending,error:D},`rename-${T.path}`),(0,Z.jsx)(F,{open:H!==null,title:H?.isDirectory?b(`workspaceTree.deleteFolderTitle`):b(`workspaceTree.deleteFileTitle`),message:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ee,{i18nKey:H?.isDirectory?`workspaceTree.deleteFolderMessage`:`workspaceTree.deleteFileMessage`,ns:`workspace`,values:{name:H?.name??``},components:{name:(0,Z.jsx)(`span`,{style:{color:`var(--content-default)`}})}}),W.error&&(0,Z.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?b(`workspaceTree.deleting`):b(`workspaceTree.delete`),destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function Ae({open:e,onOpenChange:t,onSelectKind:r}){let{t:i}=R(`workspace`);return ae()?(0,Z.jsxs)(l.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(l.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(O,{"aria-hidden":!0}),"aria-label":i(`workspaceTree.createTriggerAria`),title:i(`workspaceTree.createTriggerTitle`),tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(l.Content,{children:[(0,Z.jsx)(l.Header,{className:`sr-only`,children:(0,Z.jsx)(l.Title,{children:i(`workspaceTree.creatingHeading`)})}),(0,Z.jsxs)(l.Body,{className:`pt-0`,children:[(0,Z.jsx)(u,{icon:v,label:i(`workspaceTree.newFile`),onSelect:()=>r(`file`)}),(0,Z.jsx)(u,{icon:S,label:i(`workspaceTree.newFolder`),onSelect:()=>r(`folder`)})]})]})]}):(0,Z.jsxs)(m.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(m.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(O,{"aria-hidden":!0}),"aria-label":i(`workspaceTree.createTriggerAria`),title:i(`workspaceTree.createTriggerTitle`),tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(m.Content,{align:`end`,sideOffset:4,children:[(0,Z.jsx)(m.Item,{leftIcon:(0,Z.jsx)(v,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:i(`workspaceTree.newFile`)}),(0,Z.jsx)(m.Item,{leftIcon:(0,Z.jsx)(S,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:i(`workspaceTree.newFolder`)})]})]})}function $(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 je({assistantId:e}){let{t}=R(`workspace`),[n,i]=r(),[a,o]=(0,Y.useState)(()=>{let e=n.get(`file`);return e?$(e):new Set}),[s,c]=(0,Y.useState)(()=>n.get(`file`)),[l,u]=(0,Y.useState)(!1),[d,f]=(0,Y.useState)(()=>n.get(`sort`)===`size`?`size`:`name`),[p,m]=(0,Y.useState)(`preview`);(0,Y.useEffect)(()=>{let e=n.get(`file`);e&&(c(e),o(t=>{let n=new Set(t);for(let t of $(e))n.add(t);return n.size===t.size?t:n}),i(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0}))},[n,i]);let h=(0,Y.useCallback)(e=>{o(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),g=(0,Y.useCallback)(e=>{o(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),{paneRef:_,hasRoomForList:v,drawerOpen:y,openDrawer:b,closeDrawer:x}=le(),[S,C]=(0,Y.useState)(``),w=(0,Y.useCallback)(e=>{c(e),x()},[x]),[T,E]=(0,Y.useState)(null),D=(0,Y.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);c(e=>e!==null&&t(e)?null:e),o(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),E({path:e})},[]),[O,k]=(0,Y.useState)(null),A={assistantId:e,expandedPaths:a,selectedPath:s,showHidden:l,sortMode:d,onToggleExpand:h,onExpandPath:g,onSelectPath:w,onToggleShowHidden:()=>u(e=>!e),onChangeSortMode:f,onPathDeleted:D,onPathRenamed:(0,Y.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;c(e=>e===null?e:n(e)),o(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}),k({from:e,to:t})},[]),search:S,onSearchChange:C};return(0,Z.jsxs)(`div`,{ref:_,className:`flex h-full min-h-0 flex-col gap-4`,children:[v?null:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`flex items-center`,children:(0,Z.jsx)(ce,{onClick:b})}),(0,Z.jsx)(W,{open:y,onClose:x,title:t(`workspaceBrowser.drawerTitle`),children:(0,Z.jsx)(ke,{...A})})]}),(0,Z.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-4 ${v?`grid-cols-[320px_1fr]`:`grid-cols-1`}`,children:[v?(0,Z.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,Z.jsx)(ke,{...A})}):null,(0,Z.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,Z.jsx)(Ce,{assistantId:e,selectedPath:s,showHidden:l,viewMode:p,onChangeViewMode:m,onBrowse:v?void 0:b,pathRename:O,pathDelete:T})})]})]})}function Me(){return(0,Z.jsx)(je,{assistantId:U()})}export{Me as WorkspacePage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./queryOptions-DbnOXI51.js";import{Gr as t,Xr as n}from"./sdk.gen-CiE6cMi0.js";import{n as r}from"./native-file-
|
|
1
|
+
import{t as e}from"./queryOptions-DbnOXI51.js";import{Gr as t,Xr as n}from"./sdk.gen-CiE6cMi0.js";import{n as r}from"./native-file-BpFW1c_c.js";async function i(e){let{data:n,error:i}=await t({path:{assistant_id:e.assistantId},query:{path:e.path,...e.showHidden?{showHidden:`true`}:{}},parseAs:`blob`,throwOnError:!1});if(i||!(n instanceof Blob))throw Error(`Failed to download file`);await r(n,e.filename)}var a=`assistantsWorkspaceTreeRetrieve`;function o({assistantId:t,path:r=``,showHidden:i=!1,includeDirSizes:o=!1}){return e({queryKey:[a,t,{path:r,showHidden:i,includeDirSizes:o}],queryFn:async()=>{let e={};r&&(e.path=r),i&&(e.showHidden=`true`),o&&(e.includeDirSizes=`true`);let{data:a,error:s}=await n({path:{assistant_id:t},query:e});if(s)throw s;if(!a)throw Error(`Failed to load workspace tree`);return a}})}export{o as n,i as r,a as t};
|