@vellumai/web 0.11.4-staging.3 → 0.11.4-staging.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
package/dist/assets/{runtime-upgrade-banner-BrXnDFJZ.js → runtime-upgrade-banner-Cj9E7kWP.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-
|
|
2
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-DiNp24s6.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-VkxVX0DM.js";import{t as i}from"./preload-helper-Cv2QeVDK.js";import{t as a}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as o}from"./QueryClientProvider-EuRl-wrW.js";import{t as s}from"./useQuery-CTSuec5b.js";import{t as c}from"./useMutation-D2YPyfEH.js";import{t as l}from"./jsx-runtime-BJ8jcmzB.js";import{t as u}from"./createLucideIcon-B-ZPaMbU.js";import{t as d}from"./circle-alert-DvkPmyIg.js";import{t as f}from"./circle-check-BlOeCme9.js";import{t as ee}from"./cloud-off-CB9uhEDu.js";import{t as p}from"./info-Bn2hbIVl.js";import{t as m}from"./loader-circle-DYe85z3g.js";import{t as h}from"./moon-CZZGDGLY.js";import{t as g}from"./refresh-cw-p138DTtp.js";import{t as _}from"./triangle-alert-43gIbLca.js";import{t as v}from"./wrench-DEcKnUZl.js";import{n as y}from"./toast-DqqWkjsh.js";import{t as b}from"./confirm-dialog-Drw1adml.js";import{H as te,g as x,q as ne}from"./local-mode-BNr2MrWI.js";import{t as S}from"./assistant-identity-store-DhAqaifK.js";import{t as C}from"./is-electron-wgAC5Mzb.js";import{r as w,t as T}from"./resolved-assistants-store-BNadgXqb.js";import{_t as re,lt as ie,rt as E,tt as D}from"./auth-store-DDMY1UvK.js";import{Q as ae,k as oe}from"./sdk.gen-DWvuzSBW.js";import{n as O}from"./event-bus-B-wwSVzo.js";import{t as k}from"./client-feature-flag-store-CT2T_Fg7.js";import{m as se}from"./native-biometric-BxYhgb-X.js";import{i as A,t as j}from"./dist-D7UWVopK.js";import{d as M}from"./routes-B7wRw3UT.js";import{r as ce,t as N}from"./operational-status-T7FDD0t5.js";import{t as P}from"./use-bus-subscription-BuhDYgS1.js";import{O as F,k as I,wt as L}from"./react-query.gen-CwRPAiHT.js";import{t as R}from"./misc-B24X-saO.js";import{a as z,i as B,n as le,o as V,r as ue,s as de,t as fe}from"./local-runtime-upgrade-T5WFNI2L.js";var pe=u(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),H=e(n(),1);function U(e){return C()?window.vellum?.connectivity?.onState(e)??(()=>void 0):()=>void 0}function W(e){C()&&window.vellum?.connectivity?.setDevice(e)}async function G(e){if(!C())return null;try{return await e()??null}catch{return null}}function K(){return G(()=>window.vellum?.connectivity?.get())}function me(){return G(()=>window.vellum?.connectivity?.retry())}var q=2e3;function he(){let[e,t]=(0,H.useState)(`online`),n=(0,H.useRef)(null),r=(0,H.useCallback)(()=>{n.current&&=(clearTimeout(n.current),null)},[]),i=(0,H.useCallback)(e=>{e&&(r(),t(e))},[r]),a=(0,H.useCallback)(()=>{K().then(i)},[i]);return P(`app.resume`,a),(0,H.useEffect)(()=>{let e=U(e=>{if(e===`online`){if(n.current)return;n.current=setTimeout(()=>{n.current=null,t(`online`)},q)}else r(),t(e)});return window.addEventListener(`focus`,a),()=>{e(),window.removeEventListener(`focus`,a),r()}},[a,r]),{connectivityState:e,retryConnectivity:(0,H.useCallback)(()=>{me().then(i)},[i])}}var ge=A(`Network`,{web:()=>i(()=>import(`./web-eg_n1fSm.js`).then(e=>new e.NetworkWeb),__vite__mapDeps([0,1]))});function _e(){let[e,t]=(0,H.useState)(!0);return(0,H.useEffect)(()=>{if(!j.isNativePlatform())return;let e=!1;ge.getStatus().then(n=>{e||t(n.connected)}).catch(()=>{});let n=ge.addListener(`networkStatusChange`,n=>{e||t(n.connected)});return()=>{e=!0,n.then(e=>e.remove()).catch(()=>{})}},[]),e}var ve=15e3;function ye(){let[e,t]=(0,H.useState)(null);return P(`app.resume`,()=>{t(Date.now()+ve)}),(0,H.useEffect)(()=>{if(e===null)return;let n=e-Date.now();if(n<=0){t(null);return}let r=setTimeout(()=>{t(null)},n);return()=>clearTimeout(r)},[e]),e!==null}var J=l(),be=6e4,xe={info:{container:`bg-[var(--system-info-weak)]`,content:`text-[color:var(--system-info-strong)]`,icon:`text-[color:var(--system-info-strong)]`,action:`[--status-banner-action-color:var(--system-info-strong)]`,DefaultIcon:p},success:{container:`bg-[var(--system-positive-weak)]`,content:`text-[color:var(--system-positive-strong)]`,icon:`text-[color:var(--system-positive-strong)]`,action:`[--status-banner-action-color:var(--system-positive-strong)]`,DefaultIcon:f},warning:{container:`bg-[var(--system-mid-weak)]`,content:`text-[color:var(--system-mid-strong)]`,icon:`text-[color:var(--system-mid-strong)]`,action:`[--status-banner-action-color:var(--system-mid-strong)]`,DefaultIcon:d},error:{container:`bg-[var(--system-negative-weak)]`,content:`text-[color:var(--system-negative-strong)]`,icon:`text-[color:var(--system-negative-strong)]`,action:`[--status-banner-action-color:var(--system-negative-strong)]`,DefaultIcon:_},neutral:{container:`bg-[var(--surface-active)]`,content:`text-[color:var(--content-secondary)]`,icon:`text-[color:var(--content-secondary)]`,action:`[--status-banner-action-color:var(--content-secondary)]`,DefaultIcon:null}},Se={web:`min-h-10 rounded-none px-4 py-[10px]`,electron:`min-h-8 rounded-[6px] px-2 py-[7px]`};function Ce({tone:e,title:t,children:n,icon:r,actions:i,placement:a=`web`,className:o,ref:s,...c}){let l=xe[e],u=e===`error`?`alert`:`status`,d=a===`web`?`text-body-medium-default leading-5`:`text-body-small-default leading-[18px]`,f=r===void 0?l.DefaultIcon?(0,J.jsx)(l.DefaultIcon,{"aria-hidden":`true`}):null:r;return(0,J.jsxs)(`div`,{...c,ref:s,role:u,"data-slot":`status-banner-notice`,"data-placement":a,"data-tone":e,className:R(`flex w-full shrink-0 items-center justify-between gap-3 overflow-hidden`,`text-[color:var(--content-default)]`,Se[a],l.container,o),children:[(0,J.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[f?(0,J.jsx)(`span`,{className:R(`flex size-3.5 shrink-0 items-center justify-center [&_svg]:size-3.5`,l.icon),children:f}):null,(0,J.jsxs)(`div`,{className:`min-w-0`,children:[(0,J.jsx)(`div`,{className:R(`truncate`,l.content,d),children:t}),n?(0,J.jsx)(`div`,{className:`text-body-small-default leading-4 text-[color:var(--content-secondary)]`,children:n}):null]})]}),i?(0,J.jsx)(`div`,{className:R(`flex shrink-0 items-center border-l border-[color-mix(in_srgb,var(--status-banner-action-color)_22%,transparent)] text-label-medium-default`,`text-[color:var(--status-banner-action-color)]`,l.action,a===`web`?`gap-2 pl-4 leading-5`:`gap-1.5 pl-2 leading-[18px]`,`[&_[data-slot=button]]:h-auto [&_[data-slot=button]]:border-0 [&_[data-slot=button]]:bg-transparent`,`[&_[data-slot=button]]:-mx-1 [&_[data-slot=button]]:rounded-sm [&_[data-slot=button]]:px-1 [&_[data-slot=button]]:py-0`,`[&_[data-slot=button]]:text-body-small-default`,`[&_[data-slot=button]]:leading-[inherit] [&_[data-slot=button]]:shadow-none`,`[&_[data-slot=button]]:[--vbtn-fg:var(--status-banner-action-color)]`,`[&_[data-slot=button]]:hover:!bg-transparent [&_[data-slot=button]]:hover:!opacity-100`,`[&_[data-slot=button]]:hover:[--vbtn-fg:var(--status-banner-action-color)]`,`[&_[data-slot=button]]:focus-visible:ring-2 [&_[data-slot=button]]:focus-visible:ring-[var(--ring)] [&_[data-slot=button]]:focus-visible:ring-offset-0`),children:i}):null]})}var Y={initializing:`Assistant is initializing`,migrating:`Assistant is migrating`,provisioning:`Assistant is provisioning`,active:`Assistant is healthy`,sleeping:`Assistant is sleeping`,waking:`Assistant is waking`,restarting:`Assistant is restarting`,restoring_backup:`Assistant is restoring a backup`,upgrading_assistant_version:`Assistant is upgrading`,resizing_machine:`Assistant machine is resizing`,resizing_storage:`Assistant storage is resizing`,maintenance_mode:`Assistant is in maintenance mode`,crash_loop:`Assistant fatal error`,unreachable:`Assistant is unreachable`,not_found:`Assistant was not found`,retiring:`Assistant is retiring`},X={initializing:`Assistant failed to initialize`,migrating:`Assistant migration failed`,provisioning:`Assistant failed to provision`,waking:`Assistant failed to wake`,restarting:`Assistant restart failed`,restoring_backup:`Backup restore failed`,upgrading_assistant_version:`Assistant upgrade failed`,resizing_machine:`Machine resize failed`,resizing_storage:`Storage resize failed`,retiring:`Assistant failed to retire`};function we(){return{tone:`warning`,title:Y.maintenance_mode,icon:(0,J.jsx)(v,{className:`h-4 w-4`,"aria-hidden":`true`})}}function Z(){return(0,J.jsx)(m,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})}function Q(){return(0,J.jsx)(`span`,{className:`busy-indicator inline-block size-2 rounded-full bg-current`,"aria-hidden":`true`})}function Te(e,t){if(!(!e&&!t))return(0,J.jsxs)(J.Fragment,{children:[e?Oe():null,e&&t?(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px bg-[color-mix(in_srgb,var(--status-banner-action-color)_35%,transparent)]`}):null,t?(0,J.jsx)(r,{variant:`ghost`,size:`compact`,onClick:t,children:`Dismiss`}):null]})}function Ee(e,t,n){if(!e||N(e))return null;if(e.detail_state===`failed`){let r=X[e.state];if(r)return{tone:`error`,title:r,children:e.detail?.message??void 0,actions:Te(t,n)}}switch(e.state){case`crash_loop`:case`unreachable`:case`not_found`:return{tone:`error`,title:Y[e.state],actions:t?Oe():void 0};case`sleeping`:return{tone:`neutral`,title:Y[e.state],icon:(0,J.jsx)(h,{className:`h-4 w-4`,"aria-hidden":`true`})};case`maintenance_mode`:return we();case`upgrading_assistant_version`:case`resizing_machine`:case`resizing_storage`:case`initializing`:case`migrating`:case`provisioning`:return{tone:`info`,title:Y[e.state],icon:Z()};case`waking`:return{tone:`info`,title:Y[e.state],icon:Q()};case`restarting`:case`restoring_backup`:case`retiring`:return{tone:`warning`,title:Y[e.state],icon:Z()};default:return{tone:`warning`,title:Y[e.state],icon:Z()}}}function De(e,t,n,r){if(t&&(e===`sleeping`||e===`unreachable`))return{tone:`neutral`,title:`Your assistant can't be reached`,icon:(0,J.jsx)(ee,{className:`h-4 w-4`,"aria-hidden":`true`}),children:`The connection to the paired assistant's host is down. Check the host machine and its tunnel.`};switch(e){case`sleeping`:return{tone:r?`error`:`neutral`,title:`Your assistant is asleep`,children:r,icon:(0,J.jsx)(h,{className:`h-4 w-4`,"aria-hidden":`true`}),actions:n};case`starting`:return{tone:`info`,title:`Your assistant is waking up`,icon:Q()};case`upgrading`:return{tone:`warning`,title:`Assistant is upgrading`,icon:(0,J.jsx)(m,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})};case`migrating`:return{tone:`info`,title:`Assistant is migrating`,icon:(0,J.jsx)(m,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})};case`crashed`:return{tone:`error`,title:`Your assistant crashed`,children:r,actions:n};case`unreachable`:return{tone:r?`error`:`neutral`,title:`Your assistant is asleep`,icon:(0,J.jsx)(h,{className:`h-4 w-4`,"aria-hidden":`true`}),children:r,actions:n};case`unhealthy`:return{tone:`warning`,title:`Assistant is unhealthy`};default:return null}}function Oe(){return(0,J.jsx)(r,{asChild:!0,variant:`outlined`,size:`compact`,children:(0,J.jsx)(a,{to:`${M.settings.debug}?tab=doctor`,children:`Go to Doctor`})})}function $(e){return e===`sleeping`||e===`crashed`||e===`unreachable`}function ke({banner:e,className:t,placement:n}){return(0,J.jsx)(`div`,{className:R(n===`electron`?`px-4 pt-2`:`px-0 pt-0`,t),children:(0,J.jsx)(Ce,{tone:e.tone,title:e.title,icon:e.icon,actions:e.actions,placement:n,children:e.children})})}function Ae(){let e=C(),n=se(),{connectivityState:i,retryConnectivity:a}=he(),o=_e(),s=w.use.activeAssistantId(),c=w.use.selectedAssistantId(),l=w.use.assistants(),u=D.use.currentOrganizationId(),d=re.use.assistantState(),f=re.use.operationalStatusAssistantId(),p=(0,H.useMemo)(()=>{let e=T(l,u).filter(e=>e.isPlatformHosted===!0&&e.isLocal===!1);return e.find(e=>e.id===c)?.id??e[0]?.id??null},[l,u,c]),g=f??s??p,_=(0,H.useMemo)(()=>l.some(e=>e.id===s&&e.isPaired===!0),[l,s]),v=d.kind===`active`&&!d.isLocal&&!!s&&g===s,y=ce(g),b=ie(),{data:S,isError:ae,refetch:O}=y,[k,A]=(0,H.useState)(!1);(0,H.useEffect)(()=>{S?.state===`sleeping`?A(!0):(S?.state===`active`||S?.state===`crash_loop`||S?.state===`not_found`)&&A(!1)},[S?.state]),(0,H.useEffect)(()=>{if(!k||S?.state!==`unreachable`)return;let e=setTimeout(()=>{A(!1)},6e4);return()=>clearTimeout(e)},[k,S?.state]);let[j,M]=(0,H.useState)(!1);(0,H.useEffect)(()=>{S?.state===`active`?M(!0):(S?.state===`sleeping`||S?.state===`crash_loop`||S?.state===`not_found`)&&M(!1)},[S?.state]),(0,H.useEffect)(()=>{if(!j||S?.state!==`unreachable`)return;let e=setTimeout(()=>{M(!1)},15e3);return()=>clearTimeout(e)},[j,S?.state]);let P=ye(),[F,I]=(0,H.useState)(null);(0,H.useEffect)(()=>{g&&(S?.state===`restarting`?I(S.detail_state===`failed`?null:g):(S?.state===`active`||S?.state===`sleeping`||S?.state===`not_found`)&&I(null))},[g,S?.state,S?.detail_state]);let L=F!==null&&F===g;(0,H.useEffect)(()=>{if(!L||S?.state!==`crash_loop`)return;let e=setTimeout(()=>{I(null)},6e4);return()=>clearTimeout(e)},[L,S?.state]);let[R,z]=(0,H.useState)(null),B=(0,H.useRef)(S?.state);(0,H.useEffect)(()=>{let e=B.current;B.current=S?.state,S?.state!==e&&z(null)},[S?.state]);let le=(0,H.useCallback)(()=>{S?.state&&z(S.state)},[S?.state]),[V,ue]=(0,H.useState)(!1),[de,fe]=(0,H.useState)(null),[U,W]=(0,H.useState)(!1),[G,K]=(0,H.useState)(!1),[me,q]=(0,H.useState)(null);(0,H.useEffect)(()=>{if(!G)return;let e=setTimeout(()=>{K(!1)},be);return()=>clearTimeout(e)},[G]),(0,H.useEffect)(()=>{(b===`healthy`||b===`unhealthy`||b===`sleeping`)&&K(!1)},[b]),(0,H.useEffect)(()=>{K(!1)},[s]);let ge=(0,H.useCallback)(async()=>{if(!(!g||V)){ue(!0),fe(null);try{let{response:e}=await oe({path:{assistant_id:g},throwOnError:!1});if(!e?.ok)throw Error(`Exit maintenance mode returned non-ok response`);await Promise.allSettled([O(),E.checkAssistant()])}catch(e){t(e,{context:`exit_maintenance_mode_status_banner`}),fe(`Failed to exit maintenance mode. Please try again.`)}finally{ue(!1)}}},[g,V,O]),ve=(0,H.useCallback)(async()=>{if(!(!s||U)){W(!0),K(!0),q(null);try{let e=await ne(s);if(!e.ok){K(!1),q(e.error||`Wake failed. Try running vellum wake in your terminal.`);return}await Promise.allSettled([O(),a(),E.checkAssistant()]),E.triggerReachabilityProbe()}catch(e){K(!1),t(e,{context:`wake_local_assistant_status_banner`}),q(`Wake failed. Try running vellum wake in your terminal.`)}finally{W(!1)}}},[s,U,O,a]);if((0,H.useEffect)(()=>{$(b)||q(null)},[b]),e&&i===`device-offline`||!e&&n&&!o)return{tone:`error`,title:`You're offline`,icon:(0,J.jsx)(pe,{className:`h-4 w-4`,"aria-hidden":`true`})};if(!_&&!te()&&$(b))return{tone:`neutral`,title:`Your assistant runs locally`,icon:(0,J.jsx)(h,{className:`h-4 w-4`,"aria-hidden":`true`}),children:`Open the Vellum desktop app or run vellum wake in your terminal to start it.`};let xe=(U||G)&&!_&&$(b)?`starting`:b,Se=De(xe,_,!_&&$(xe)&&s&&x(s)?(0,J.jsx)(r,{variant:`outlined`,size:`compact`,leftIcon:U?(0,J.jsx)(m,{className:`animate-spin`,"aria-hidden":`true`}):void 0,disabled:!s||U,onClick:()=>{ve()},children:`Wake up`}):void 0,me);if(Se)return Se;let Ce=d.kind===`active`&&d.isLocal;if(e&&Ce&&i===`backend-unreachable`)return{tone:`error`,title:`Trying to reach Vellum…`,icon:(0,J.jsx)(ee,{className:`h-4 w-4`,"aria-hidden":`true`}),actions:(0,J.jsx)(r,{variant:`outlined`,size:`compact`,onClick:a,children:`Retry now`})};let Y=d.kind===`active`&&d.maintenanceMode?.enabled===!0&&(!S||N(S));if(ae&&!Y&&!P)return{tone:`error`,title:`Assistant status is unavailable`,actions:v?Oe():void 0};let X=S?.state===`unreachable`&&(k||P)?{...S,state:`waking`}:S?.state===`unreachable`&&j?{...S,state:`sleeping`}:S?.state===`crash_loop`&&L?{...S,state:`restarting`}:S,Z=X?.detail_state===`failed`&&X.state===R,Q=Y?we():Z?null:Ee(X,v,le);return!(S?.state===`maintenance_mode`||Y)||!Q?Q:{...Q,tone:de?`error`:Q.tone,children:de,actions:g?(0,J.jsx)(r,{variant:`outlined`,size:`compact`,leftIcon:V?(0,J.jsx)(m,{className:`animate-spin`,"aria-hidden":`true`}):void 0,disabled:V,onClick:()=>{ge()},children:`Resume Assistant`}):void 0}}function je({className:e,placement:t=C()?`electron`:`web`}){let n=Ae();return n?(0,J.jsx)(ke,{banner:n,className:e,placement:t}):null}var Me=3e3;function Ne({assistantId:e,currentVersion:t,placement:n=`web`,className:i}){let[a,o]=(0,H.useState)(!1),[c,l]=(0,H.useState)(null),u=re(e=>e.assistantState),d=ie(),f=w.use.activeAssistantId(),ee=S.use.version(),p=k.use.previewChannel(),m=e??f,h=t??ee,_=w(e=>m?e.assistants.find(e=>e.id===m):null),v=_?.cloud===`local`,x=_?.isPlatformHosted===!0&&_?.isLocal===!1,ne=_?.runtimeVersion??h??null,C=_?.currentReleaseVersion??h??null,T=v?`local`:x?`platform`:null,{data:E}=ce(x?m??null:null),D=T===`local`?ne:T===`platform`?C:null,ae=v&&_?.isActiveLockfileAssistant===!0,oe=u.kind===`self_hosted`?!u.health||u.health===`healthy`:u.kind===`active`&&u.isLocal?u.reachable!==!1&&(!u.health||u.health===`healthy`):!1,se=!d||d===`healthy`,A=u.kind===`active`&&!u.isLocal&&u.reachable!==!1&&!u.maintenanceMode?.enabled&&(!u.health||u.health===`healthy`)&&(!E||E.state===`active`),j=!!m&&!!D&&!!_?.isLocal&&ae&&oe&&se&&te()||!!m&&!!D&&x&&A,M=B(_?.releaseChannel,p),{data:N,refetch:P}=s({...L({query:T===`platform`?{channel:M}:{stable:!0,limit:100}}),enabled:j,refetchInterval:fe,refetchOnReconnect:!0,refetchOnWindowFocus:!0});(0,H.useEffect)(()=>{if(!j)return;let e=()=>{P()},t=[O(`app.resume`,e),O(`power.resume`,e),O(`power.unlock`,e)];return()=>{for(let e of t)e()}},[P,j]);let F=(0,H.useMemo)(()=>T===`platform`?N?.find(e=>e.is_stable!==!1)??N?.[0]:ue(N),[T,N])?.version??null,I=m&&F?`${m}:${F}`:null,pe=z(D,F),U=de({assistantId:m,targetVersion:F??void 0}),W=Pe({assistantId:m,targetVersion:F??void 0,shouldStopPolling:E?.detail_state===`failed`}),G=T===`platform`?W.isPending:U.isPending;return(0,H.useEffect)(()=>{if(!m||!F){l(null);return}l(V(m,F)?`${m}:${F}`:null)},[m,F]),!j||!F||!pe||I!==null&&I===c||G?null:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:R(n===`electron`?`px-4 pt-2`:`px-0 pt-0`,i),children:(0,J.jsx)(Ce,{tone:`info`,title:`New assistant version available: ${F}`,placement:n,icon:(0,J.jsx)(g,{"aria-hidden":`true`}),actions:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(r,{variant:`ghost`,size:`compact`,onClick:()=>o(!0),children:`Update`}),(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px bg-[color-mix(in_srgb,var(--status-banner-action-color)_35%,transparent)]`}),(0,J.jsx)(r,{variant:`ghost`,size:`compact`,onClick:()=>{!m||!F||(le(m,F),l(`${m}:${F}`))},children:`Later`})]})})}),(0,J.jsx)(b,{open:a,title:`Update assistant runtime`,message:`Update to version ${F}? The assistant will be briefly unavailable during the update.`,confirmLabel:`Update`,onConfirm:async()=>{if(!(!m||!F||!T)){o(!1);try{if(T===`platform`){let e=await W.upgrade();if(e.detail?.includes(`Already on the latest`)){y.warning(e.detail);return}}else await U.upgrade(),y.success(`Update complete. Your assistant is healthy.`,{id:`runtime-upgrade-complete`,tone:`strong`});l(`${m}:${F}`)}catch(e){y.error(e instanceof Error?e.message:`Failed to trigger update. Please try again.`)}}},onCancel:()=>o(!1)})]})}function Pe({assistantId:e,targetVersion:t,shouldStopPolling:n=!1}){let r=o(),[i,a]=(0,H.useState)(!1),l=(0,H.useRef)(null),u=c({mutationFn:async()=>{if(!e)throw Error(`No assistant is active.`);let{data:n}=await ae({path:{id:e},body:t?{version:t}:{},throwOnError:!0});return n}});return(0,H.useEffect)(()=>{!i||!n||(l.current=null,a(!1))},[i,n]),s({...F({path:{id:e??``}}),enabled:i&&!!e,refetchInterval:e=>{let t=e.state.data?.current_release_version;return t&&l.current&&t===l.current?(queueMicrotask(()=>{e.state.data&&w.getState().upsertFromApi(e.state.data),l.current=null,a(!1),y.success(`Update complete. Your assistant is healthy.`,{id:`runtime-upgrade-complete`,tone:`strong`})}),!1):Me}}),{isPending:u.isPending||i,upgrade:async()=>{if(!e)throw Error(`No assistant is active.`);let n=await u.mutateAsync();return n.detail?.includes(`Already on the latest`)||(l.current=n.version??t??null,l.current&&a(!0),r.invalidateQueries({queryKey:I({path:{id:e}})})),n}}}export{U as a,W as i,je as n,pe as o,ye as r,Ne as t};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-Cr238HhI.js","assets/dist-D7UWVopK.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-DiNp24s6.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-VkxVX0DM.js";import{t as i}from"./preload-helper-Cv2QeVDK.js";import{t as a}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as o}from"./QueryClientProvider-EuRl-wrW.js";import{t as s}from"./useQuery-CTSuec5b.js";import{t as c}from"./useMutation-D2YPyfEH.js";import{t as l}from"./jsx-runtime-BJ8jcmzB.js";import{t as u}from"./createLucideIcon-B-ZPaMbU.js";import{t as d}from"./circle-alert-DvkPmyIg.js";import{t as f}from"./circle-check-BlOeCme9.js";import{t as ee}from"./cloud-off-CB9uhEDu.js";import{t as p}from"./info-Bn2hbIVl.js";import{t as m}from"./loader-circle-DYe85z3g.js";import{t as h}from"./moon-CZZGDGLY.js";import{t as g}from"./refresh-cw-p138DTtp.js";import{t as _}from"./triangle-alert-43gIbLca.js";import{t as v}from"./wrench-DEcKnUZl.js";import{n as y}from"./toast-DqqWkjsh.js";import{t as b}from"./confirm-dialog-Drw1adml.js";import{H as te,g as x,q as ne}from"./local-mode-BNr2MrWI.js";import{t as S}from"./assistant-identity-store-DhAqaifK.js";import{t as C}from"./is-electron-wgAC5Mzb.js";import{r as w,t as T}from"./resolved-assistants-store-BNadgXqb.js";import{_t as re,lt as ie,rt as E,tt as D}from"./auth-store-CVtcHK0b.js";import{Q as ae,k as oe}from"./sdk.gen-DWvuzSBW.js";import{n as O}from"./event-bus-B-wwSVzo.js";import{t as k}from"./client-feature-flag-store-CT2T_Fg7.js";import{m as se}from"./native-biometric-D9IxNvJM.js";import{i as A,t as j}from"./dist-D7UWVopK.js";import{d as M}from"./routes-B7wRw3UT.js";import{r as ce,t as N}from"./operational-status-CMN32PL8.js";import{t as P}from"./use-bus-subscription-BuhDYgS1.js";import{O as F,k as I,wt as L}from"./react-query.gen-CwRPAiHT.js";import{t as R}from"./misc-B24X-saO.js";import{a as z,i as B,n as le,o as V,r as ue,s as de,t as fe}from"./local-runtime-upgrade-BkoG5uVr.js";var pe=u(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),H=e(n(),1);function U(e){return C()?window.vellum?.connectivity?.onState(e)??(()=>void 0):()=>void 0}function W(e){C()&&window.vellum?.connectivity?.setDevice(e)}async function G(e){if(!C())return null;try{return await e()??null}catch{return null}}function K(){return G(()=>window.vellum?.connectivity?.get())}function me(){return G(()=>window.vellum?.connectivity?.retry())}var q=2e3;function he(){let[e,t]=(0,H.useState)(`online`),n=(0,H.useRef)(null),r=(0,H.useCallback)(()=>{n.current&&=(clearTimeout(n.current),null)},[]),i=(0,H.useCallback)(e=>{e&&(r(),t(e))},[r]),a=(0,H.useCallback)(()=>{K().then(i)},[i]);return P(`app.resume`,a),(0,H.useEffect)(()=>{let e=U(e=>{if(e===`online`){if(n.current)return;n.current=setTimeout(()=>{n.current=null,t(`online`)},q)}else r(),t(e)});return window.addEventListener(`focus`,a),()=>{e(),window.removeEventListener(`focus`,a),r()}},[a,r]),{connectivityState:e,retryConnectivity:(0,H.useCallback)(()=>{me().then(i)},[i])}}var ge=A(`Network`,{web:()=>i(()=>import(`./web-Cr238HhI.js`).then(e=>new e.NetworkWeb),__vite__mapDeps([0,1]))});function _e(){let[e,t]=(0,H.useState)(!0);return(0,H.useEffect)(()=>{if(!j.isNativePlatform())return;let e=!1;ge.getStatus().then(n=>{e||t(n.connected)}).catch(()=>{});let n=ge.addListener(`networkStatusChange`,n=>{e||t(n.connected)});return()=>{e=!0,n.then(e=>e.remove()).catch(()=>{})}},[]),e}var ve=15e3;function ye(){let[e,t]=(0,H.useState)(null);return P(`app.resume`,()=>{t(Date.now()+ve)}),(0,H.useEffect)(()=>{if(e===null)return;let n=e-Date.now();if(n<=0){t(null);return}let r=setTimeout(()=>{t(null)},n);return()=>clearTimeout(r)},[e]),e!==null}var J=l(),be=6e4,xe={info:{container:`bg-[var(--system-info-weak)]`,content:`text-[color:var(--system-info-strong)]`,icon:`text-[color:var(--system-info-strong)]`,action:`[--status-banner-action-color:var(--system-info-strong)]`,DefaultIcon:p},success:{container:`bg-[var(--system-positive-weak)]`,content:`text-[color:var(--system-positive-strong)]`,icon:`text-[color:var(--system-positive-strong)]`,action:`[--status-banner-action-color:var(--system-positive-strong)]`,DefaultIcon:f},warning:{container:`bg-[var(--system-mid-weak)]`,content:`text-[color:var(--system-mid-strong)]`,icon:`text-[color:var(--system-mid-strong)]`,action:`[--status-banner-action-color:var(--system-mid-strong)]`,DefaultIcon:d},error:{container:`bg-[var(--system-negative-weak)]`,content:`text-[color:var(--system-negative-strong)]`,icon:`text-[color:var(--system-negative-strong)]`,action:`[--status-banner-action-color:var(--system-negative-strong)]`,DefaultIcon:_},neutral:{container:`bg-[var(--surface-active)]`,content:`text-[color:var(--content-secondary)]`,icon:`text-[color:var(--content-secondary)]`,action:`[--status-banner-action-color:var(--content-secondary)]`,DefaultIcon:null}},Se={web:`min-h-10 rounded-none px-4 py-[10px]`,electron:`min-h-8 rounded-[6px] px-2 py-[7px]`};function Ce({tone:e,title:t,children:n,icon:r,actions:i,placement:a=`web`,className:o,ref:s,...c}){let l=xe[e],u=e===`error`?`alert`:`status`,d=a===`web`?`text-body-medium-default leading-5`:`text-body-small-default leading-[18px]`,f=r===void 0?l.DefaultIcon?(0,J.jsx)(l.DefaultIcon,{"aria-hidden":`true`}):null:r;return(0,J.jsxs)(`div`,{...c,ref:s,role:u,"data-slot":`status-banner-notice`,"data-placement":a,"data-tone":e,className:R(`flex w-full shrink-0 items-center justify-between gap-3 overflow-hidden`,`text-[color:var(--content-default)]`,Se[a],l.container,o),children:[(0,J.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[f?(0,J.jsx)(`span`,{className:R(`flex size-3.5 shrink-0 items-center justify-center [&_svg]:size-3.5`,l.icon),children:f}):null,(0,J.jsxs)(`div`,{className:`min-w-0`,children:[(0,J.jsx)(`div`,{className:R(`truncate`,l.content,d),children:t}),n?(0,J.jsx)(`div`,{className:`text-body-small-default leading-4 text-[color:var(--content-secondary)]`,children:n}):null]})]}),i?(0,J.jsx)(`div`,{className:R(`flex shrink-0 items-center border-l border-[color-mix(in_srgb,var(--status-banner-action-color)_22%,transparent)] text-label-medium-default`,`text-[color:var(--status-banner-action-color)]`,l.action,a===`web`?`gap-2 pl-4 leading-5`:`gap-1.5 pl-2 leading-[18px]`,`[&_[data-slot=button]]:h-auto [&_[data-slot=button]]:border-0 [&_[data-slot=button]]:bg-transparent`,`[&_[data-slot=button]]:-mx-1 [&_[data-slot=button]]:rounded-sm [&_[data-slot=button]]:px-1 [&_[data-slot=button]]:py-0`,`[&_[data-slot=button]]:text-body-small-default`,`[&_[data-slot=button]]:leading-[inherit] [&_[data-slot=button]]:shadow-none`,`[&_[data-slot=button]]:[--vbtn-fg:var(--status-banner-action-color)]`,`[&_[data-slot=button]]:hover:!bg-transparent [&_[data-slot=button]]:hover:!opacity-100`,`[&_[data-slot=button]]:hover:[--vbtn-fg:var(--status-banner-action-color)]`,`[&_[data-slot=button]]:focus-visible:ring-2 [&_[data-slot=button]]:focus-visible:ring-[var(--ring)] [&_[data-slot=button]]:focus-visible:ring-offset-0`),children:i}):null]})}var Y={initializing:`Assistant is initializing`,migrating:`Assistant is migrating`,provisioning:`Assistant is provisioning`,active:`Assistant is healthy`,sleeping:`Assistant is sleeping`,waking:`Assistant is waking`,restarting:`Assistant is restarting`,restoring_backup:`Assistant is restoring a backup`,upgrading_assistant_version:`Assistant is upgrading`,resizing_machine:`Assistant machine is resizing`,resizing_storage:`Assistant storage is resizing`,maintenance_mode:`Assistant is in maintenance mode`,crash_loop:`Assistant fatal error`,unreachable:`Assistant is unreachable`,not_found:`Assistant was not found`,retiring:`Assistant is retiring`},X={initializing:`Assistant failed to initialize`,migrating:`Assistant migration failed`,provisioning:`Assistant failed to provision`,waking:`Assistant failed to wake`,restarting:`Assistant restart failed`,restoring_backup:`Backup restore failed`,upgrading_assistant_version:`Assistant upgrade failed`,resizing_machine:`Machine resize failed`,resizing_storage:`Storage resize failed`,retiring:`Assistant failed to retire`};function we(){return{tone:`warning`,title:Y.maintenance_mode,icon:(0,J.jsx)(v,{className:`h-4 w-4`,"aria-hidden":`true`})}}function Z(){return(0,J.jsx)(m,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})}function Q(){return(0,J.jsx)(`span`,{className:`busy-indicator inline-block size-2 rounded-full bg-current`,"aria-hidden":`true`})}function Te(e,t){if(!(!e&&!t))return(0,J.jsxs)(J.Fragment,{children:[e?Oe():null,e&&t?(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px bg-[color-mix(in_srgb,var(--status-banner-action-color)_35%,transparent)]`}):null,t?(0,J.jsx)(r,{variant:`ghost`,size:`compact`,onClick:t,children:`Dismiss`}):null]})}function Ee(e,t,n){if(!e||N(e))return null;if(e.detail_state===`failed`){let r=X[e.state];if(r)return{tone:`error`,title:r,children:e.detail?.message??void 0,actions:Te(t,n)}}switch(e.state){case`crash_loop`:case`unreachable`:case`not_found`:return{tone:`error`,title:Y[e.state],actions:t?Oe():void 0};case`sleeping`:return{tone:`neutral`,title:Y[e.state],icon:(0,J.jsx)(h,{className:`h-4 w-4`,"aria-hidden":`true`})};case`maintenance_mode`:return we();case`upgrading_assistant_version`:case`resizing_machine`:case`resizing_storage`:case`initializing`:case`migrating`:case`provisioning`:return{tone:`info`,title:Y[e.state],icon:Z()};case`waking`:return{tone:`info`,title:Y[e.state],icon:Q()};case`restarting`:case`restoring_backup`:case`retiring`:return{tone:`warning`,title:Y[e.state],icon:Z()};default:return{tone:`warning`,title:Y[e.state],icon:Z()}}}function De(e,t,n,r){if(t&&(e===`sleeping`||e===`unreachable`))return{tone:`neutral`,title:`Your assistant can't be reached`,icon:(0,J.jsx)(ee,{className:`h-4 w-4`,"aria-hidden":`true`}),children:`The connection to the paired assistant's host is down. Check the host machine and its tunnel.`};switch(e){case`sleeping`:return{tone:r?`error`:`neutral`,title:`Your assistant is asleep`,children:r,icon:(0,J.jsx)(h,{className:`h-4 w-4`,"aria-hidden":`true`}),actions:n};case`starting`:return{tone:`info`,title:`Your assistant is waking up`,icon:Q()};case`upgrading`:return{tone:`warning`,title:`Assistant is upgrading`,icon:(0,J.jsx)(m,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})};case`migrating`:return{tone:`info`,title:`Assistant is migrating`,icon:(0,J.jsx)(m,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})};case`crashed`:return{tone:`error`,title:`Your assistant crashed`,children:r,actions:n};case`unreachable`:return{tone:r?`error`:`neutral`,title:`Your assistant is asleep`,icon:(0,J.jsx)(h,{className:`h-4 w-4`,"aria-hidden":`true`}),children:r,actions:n};case`unhealthy`:return{tone:`warning`,title:`Assistant is unhealthy`};default:return null}}function Oe(){return(0,J.jsx)(r,{asChild:!0,variant:`outlined`,size:`compact`,children:(0,J.jsx)(a,{to:`${M.settings.debug}?tab=doctor`,children:`Go to Doctor`})})}function $(e){return e===`sleeping`||e===`crashed`||e===`unreachable`}function ke({banner:e,className:t,placement:n}){return(0,J.jsx)(`div`,{className:R(n===`electron`?`px-4 pt-2`:`px-0 pt-0`,t),children:(0,J.jsx)(Ce,{tone:e.tone,title:e.title,icon:e.icon,actions:e.actions,placement:n,children:e.children})})}function Ae(){let e=C(),n=se(),{connectivityState:i,retryConnectivity:a}=he(),o=_e(),s=w.use.activeAssistantId(),c=w.use.selectedAssistantId(),l=w.use.assistants(),u=D.use.currentOrganizationId(),d=re.use.assistantState(),f=re.use.operationalStatusAssistantId(),p=(0,H.useMemo)(()=>{let e=T(l,u).filter(e=>e.isPlatformHosted===!0&&e.isLocal===!1);return e.find(e=>e.id===c)?.id??e[0]?.id??null},[l,u,c]),g=f??s??p,_=(0,H.useMemo)(()=>l.some(e=>e.id===s&&e.isPaired===!0),[l,s]),v=d.kind===`active`&&!d.isLocal&&!!s&&g===s,y=ce(g),b=ie(),{data:S,isError:ae,refetch:O}=y,[k,A]=(0,H.useState)(!1);(0,H.useEffect)(()=>{S?.state===`sleeping`?A(!0):(S?.state===`active`||S?.state===`crash_loop`||S?.state===`not_found`)&&A(!1)},[S?.state]),(0,H.useEffect)(()=>{if(!k||S?.state!==`unreachable`)return;let e=setTimeout(()=>{A(!1)},6e4);return()=>clearTimeout(e)},[k,S?.state]);let[j,M]=(0,H.useState)(!1);(0,H.useEffect)(()=>{S?.state===`active`?M(!0):(S?.state===`sleeping`||S?.state===`crash_loop`||S?.state===`not_found`)&&M(!1)},[S?.state]),(0,H.useEffect)(()=>{if(!j||S?.state!==`unreachable`)return;let e=setTimeout(()=>{M(!1)},15e3);return()=>clearTimeout(e)},[j,S?.state]);let P=ye(),[F,I]=(0,H.useState)(null);(0,H.useEffect)(()=>{g&&(S?.state===`restarting`?I(S.detail_state===`failed`?null:g):(S?.state===`active`||S?.state===`sleeping`||S?.state===`not_found`)&&I(null))},[g,S?.state,S?.detail_state]);let L=F!==null&&F===g;(0,H.useEffect)(()=>{if(!L||S?.state!==`crash_loop`)return;let e=setTimeout(()=>{I(null)},6e4);return()=>clearTimeout(e)},[L,S?.state]);let[R,z]=(0,H.useState)(null),B=(0,H.useRef)(S?.state);(0,H.useEffect)(()=>{let e=B.current;B.current=S?.state,S?.state!==e&&z(null)},[S?.state]);let le=(0,H.useCallback)(()=>{S?.state&&z(S.state)},[S?.state]),[V,ue]=(0,H.useState)(!1),[de,fe]=(0,H.useState)(null),[U,W]=(0,H.useState)(!1),[G,K]=(0,H.useState)(!1),[me,q]=(0,H.useState)(null);(0,H.useEffect)(()=>{if(!G)return;let e=setTimeout(()=>{K(!1)},be);return()=>clearTimeout(e)},[G]),(0,H.useEffect)(()=>{(b===`healthy`||b===`unhealthy`||b===`sleeping`)&&K(!1)},[b]),(0,H.useEffect)(()=>{K(!1)},[s]);let ge=(0,H.useCallback)(async()=>{if(!(!g||V)){ue(!0),fe(null);try{let{response:e}=await oe({path:{assistant_id:g},throwOnError:!1});if(!e?.ok)throw Error(`Exit maintenance mode returned non-ok response`);await Promise.allSettled([O(),E.checkAssistant()])}catch(e){t(e,{context:`exit_maintenance_mode_status_banner`}),fe(`Failed to exit maintenance mode. Please try again.`)}finally{ue(!1)}}},[g,V,O]),ve=(0,H.useCallback)(async()=>{if(!(!s||U)){W(!0),K(!0),q(null);try{let e=await ne(s);if(!e.ok){K(!1),q(e.error||`Wake failed. Try running vellum wake in your terminal.`);return}await Promise.allSettled([O(),a(),E.checkAssistant()]),E.triggerReachabilityProbe()}catch(e){K(!1),t(e,{context:`wake_local_assistant_status_banner`}),q(`Wake failed. Try running vellum wake in your terminal.`)}finally{W(!1)}}},[s,U,O,a]);if((0,H.useEffect)(()=>{$(b)||q(null)},[b]),e&&i===`device-offline`||!e&&n&&!o)return{tone:`error`,title:`You're offline`,icon:(0,J.jsx)(pe,{className:`h-4 w-4`,"aria-hidden":`true`})};if(!_&&!te()&&$(b))return{tone:`neutral`,title:`Your assistant runs locally`,icon:(0,J.jsx)(h,{className:`h-4 w-4`,"aria-hidden":`true`}),children:`Open the Vellum desktop app or run vellum wake in your terminal to start it.`};let xe=(U||G)&&!_&&$(b)?`starting`:b,Se=De(xe,_,!_&&$(xe)&&s&&x(s)?(0,J.jsx)(r,{variant:`outlined`,size:`compact`,leftIcon:U?(0,J.jsx)(m,{className:`animate-spin`,"aria-hidden":`true`}):void 0,disabled:!s||U,onClick:()=>{ve()},children:`Wake up`}):void 0,me);if(Se)return Se;let Ce=d.kind===`active`&&d.isLocal;if(e&&Ce&&i===`backend-unreachable`)return{tone:`error`,title:`Trying to reach Vellum…`,icon:(0,J.jsx)(ee,{className:`h-4 w-4`,"aria-hidden":`true`}),actions:(0,J.jsx)(r,{variant:`outlined`,size:`compact`,onClick:a,children:`Retry now`})};let Y=d.kind===`active`&&d.maintenanceMode?.enabled===!0&&(!S||N(S));if(ae&&!Y&&!P)return{tone:`error`,title:`Assistant status is unavailable`,actions:v?Oe():void 0};let X=S?.state===`unreachable`&&(k||P)?{...S,state:`waking`}:S?.state===`unreachable`&&j?{...S,state:`sleeping`}:S?.state===`crash_loop`&&L?{...S,state:`restarting`}:S,Z=X?.detail_state===`failed`&&X.state===R,Q=Y?we():Z?null:Ee(X,v,le);return!(S?.state===`maintenance_mode`||Y)||!Q?Q:{...Q,tone:de?`error`:Q.tone,children:de,actions:g?(0,J.jsx)(r,{variant:`outlined`,size:`compact`,leftIcon:V?(0,J.jsx)(m,{className:`animate-spin`,"aria-hidden":`true`}):void 0,disabled:V,onClick:()=>{ge()},children:`Resume Assistant`}):void 0}}function je({className:e,placement:t=C()?`electron`:`web`}){let n=Ae();return n?(0,J.jsx)(ke,{banner:n,className:e,placement:t}):null}var Me=3e3;function Ne({assistantId:e,currentVersion:t,placement:n=`web`,className:i}){let[a,o]=(0,H.useState)(!1),[c,l]=(0,H.useState)(null),u=re(e=>e.assistantState),d=ie(),f=w.use.activeAssistantId(),ee=S.use.version(),p=k.use.previewChannel(),m=e??f,h=t??ee,_=w(e=>m?e.assistants.find(e=>e.id===m):null),v=_?.cloud===`local`,x=_?.isPlatformHosted===!0&&_?.isLocal===!1,ne=_?.runtimeVersion??h??null,C=_?.currentReleaseVersion??h??null,T=v?`local`:x?`platform`:null,{data:E}=ce(x?m??null:null),D=T===`local`?ne:T===`platform`?C:null,ae=v&&_?.isActiveLockfileAssistant===!0,oe=u.kind===`self_hosted`?!u.health||u.health===`healthy`:u.kind===`active`&&u.isLocal?u.reachable!==!1&&(!u.health||u.health===`healthy`):!1,se=!d||d===`healthy`,A=u.kind===`active`&&!u.isLocal&&u.reachable!==!1&&!u.maintenanceMode?.enabled&&(!u.health||u.health===`healthy`)&&(!E||E.state===`active`),j=!!m&&!!D&&!!_?.isLocal&&ae&&oe&&se&&te()||!!m&&!!D&&x&&A,M=B(_?.releaseChannel,p),{data:N,refetch:P}=s({...L({query:T===`platform`?{channel:M}:{stable:!0,limit:100}}),enabled:j,refetchInterval:fe,refetchOnReconnect:!0,refetchOnWindowFocus:!0});(0,H.useEffect)(()=>{if(!j)return;let e=()=>{P()},t=[O(`app.resume`,e),O(`power.resume`,e),O(`power.unlock`,e)];return()=>{for(let e of t)e()}},[P,j]);let F=(0,H.useMemo)(()=>T===`platform`?N?.find(e=>e.is_stable!==!1)??N?.[0]:ue(N),[T,N])?.version??null,I=m&&F?`${m}:${F}`:null,pe=z(D,F),U=de({assistantId:m,targetVersion:F??void 0}),W=Pe({assistantId:m,targetVersion:F??void 0,shouldStopPolling:E?.detail_state===`failed`}),G=T===`platform`?W.isPending:U.isPending;return(0,H.useEffect)(()=>{if(!m||!F){l(null);return}l(V(m,F)?`${m}:${F}`:null)},[m,F]),!j||!F||!pe||I!==null&&I===c||G?null:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:R(n===`electron`?`px-4 pt-2`:`px-0 pt-0`,i),children:(0,J.jsx)(Ce,{tone:`info`,title:`New assistant version available: ${F}`,placement:n,icon:(0,J.jsx)(g,{"aria-hidden":`true`}),actions:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(r,{variant:`ghost`,size:`compact`,onClick:()=>o(!0),children:`Update`}),(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px bg-[color-mix(in_srgb,var(--status-banner-action-color)_35%,transparent)]`}),(0,J.jsx)(r,{variant:`ghost`,size:`compact`,onClick:()=>{!m||!F||(le(m,F),l(`${m}:${F}`))},children:`Later`})]})})}),(0,J.jsx)(b,{open:a,title:`Update assistant runtime`,message:`Update to version ${F}? The assistant will be briefly unavailable during the update.`,confirmLabel:`Update`,onConfirm:async()=>{if(!(!m||!F||!T)){o(!1);try{if(T===`platform`){let e=await W.upgrade();if(e.detail?.includes(`Already on the latest`)){y.warning(e.detail);return}}else await U.upgrade(),y.success(`Update complete. Your assistant is healthy.`,{id:`runtime-upgrade-complete`,tone:`strong`});l(`${m}:${F}`)}catch(e){y.error(e instanceof Error?e.message:`Failed to trigger update. Please try again.`)}}},onCancel:()=>o(!1)})]})}function Pe({assistantId:e,targetVersion:t,shouldStopPolling:n=!1}){let r=o(),[i,a]=(0,H.useState)(!1),l=(0,H.useRef)(null),u=c({mutationFn:async()=>{if(!e)throw Error(`No assistant is active.`);let{data:n}=await ae({path:{id:e},body:t?{version:t}:{},throwOnError:!0});return n}});return(0,H.useEffect)(()=>{!i||!n||(l.current=null,a(!1))},[i,n]),s({...F({path:{id:e??``}}),enabled:i&&!!e,refetchInterval:e=>{let t=e.state.data?.current_release_version;return t&&l.current&&t===l.current?(queueMicrotask(()=>{e.state.data&&w.getState().upsertFromApi(e.state.data),l.current=null,a(!1),y.success(`Update complete. Your assistant is healthy.`,{id:`runtime-upgrade-complete`,tone:`strong`})}),!1):Me}}),{isPending:u.isPending||i,upgrade:async()=>{if(!e)throw Error(`No assistant is active.`);let n=await u.mutateAsync();return n.detail?.includes(`Already on the latest`)||(l.current=n.version??t??null,l.current&&a(!0),r.invalidateQueries({queryKey:I({path:{id:e}})})),n}}}export{U as a,W as i,je as n,pe as o,ye as r,Ne as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{n}from"./QueryClientProvider-EuRl-wrW.js";import{t as r}from"./useQuery-CTSuec5b.js";import{n as i}from"./toast-DqqWkjsh.js";import{n as a,t as o}from"./react-query.gen-Bbh5MII3.js";import{t as s}from"./copy-to-clipboard-D76_3Coc.js";import{t as c}from"./deploy-store-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{n}from"./QueryClientProvider-EuRl-wrW.js";import{t as r}from"./useQuery-CTSuec5b.js";import{n as i}from"./toast-DqqWkjsh.js";import{n as a,t as o}from"./react-query.gen-Bbh5MII3.js";import{t as s}from"./copy-to-clipboard-D76_3Coc.js";import{t as c}from"./deploy-store-dyN183E8.js";var l=e(t(),1);function u(e,t,{enabled:i=!0}={}){let s=n(),u=i&&e!==``&&t!=null,d=r({...o({path:{assistant_id:e,id:t??``}}),enabled:u}),f=c.use.isDeploying(),p=(0,l.useRef)(f);return(0,l.useEffect)(()=>{let n=p.current&&!f;p.current=f,n&&u&&s.invalidateQueries({queryKey:a({path:{assistant_id:e,id:t??``}})})},[f,u,e,t,s]),{deployedUrl:d.data?.published?d.data.publicUrl??null:null,isLoading:u&&d.isPending}}function d(e){s(e,{errorMessage:`Couldn't copy the link. Open it at ${e}`,onCopied:()=>{i.success(`Link copied`,{description:e,action:{label:`Open`,onClick:()=>window.open(e,`_blank`)}})}})}var f=/^\/v1\/x\//,p=/^(https?|mailto|tel):/i;function m(e){return typeof e==`string`&&p.test(e.trim())}function h(e){return JSON.stringify(e).replace(/<\//g,`<\\/`).replace(/<!--/g,`<\\!--`)}function g(){return`<script>
|
|
2
2
|
(function() {
|
|
3
3
|
var store = {};
|
|
4
4
|
var storageShim = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-DiNp24s6.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-VkxVX0DM.js";import{d as i,p as a}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as o}from"./QueryClientProvider-EuRl-wrW.js";import{t as s}from"./useQuery-CTSuec5b.js";import{t as c}from"./useInfiniteQuery-C5Kg1-qX.js";import{t as l}from"./useMutation-D2YPyfEH.js";import{t as u}from"./jsx-runtime-BJ8jcmzB.js";import{t as d}from"./cn-Cf8SmgbR.js";import{t as f}from"./typography-DekrYXvs.js";import{t as p}from"./card-DUsAeHUS.js";import{n as m,o as h}from"./list-row-CDwzGT9g.js";import{t as g}from"./calendar-5ZUL5438.js";import{t as _}from"./chart-column-Bd2tG_o1.js";import{t as v}from"./chevron-down-CmQCCo_x.js";import{t as y}from"./chevron-right-Dwr_Sx98.js";import{t as b}from"./circle-alert-DvkPmyIg.js";import{t as x}from"./clock-1REtpnlM.js";import{t as S}from"./coins-CveNnhLe.js";import{t as C}from"./loader-circle-DYe85z3g.js";import{t as w}from"./play-dZ2h3AT7.js";import{t as T}from"./repeat-BL0WDPMw.js";import{t as E}from"./settings-B-74NxzZ.js";import{t as D}from"./trash-2-V2WT_DbX.js";import{t as O}from"./notice-BlYF-xU3.js";import{o as k}from"./src-qDZBwoEm.js";import{t as A}from"./tag-Ddzwz3ij.js";import{n as j,t as M}from"./input-DkgpMeG9.js";import{t as N}from"./toggle-0qt1e_3r.js";import{t as P}from"./modal-UYNawsIu.js";import{n as F}from"./toast-DqqWkjsh.js";import{t as I}from"./confirm-dialog-Drw1adml.js";import{t as L}from"./select-BKyejRky.js";import{t as R}from"./skeleton-D8_lkywC.js";import{o as z}from"./i18n--HmJLuhM.js";import{t as B}from"./useTranslation-DdVCKPgw.js";import{a as ee,l as te,n as ne,o as re,r as ie,s as ae}from"./profile-pickers-B0hfDNt-.js";import{d as V}from"./routes-B7wRw3UT.js";import{$t as oe,B as se,Ct as ce,H as le,R as ue,S as de,St as fe,Tt as pe,V as me,b as he,bt as ge,cn as _e,p as ve,sn as ye,u as be,x as xe,xt as Se,y as Ce,yt as we,z as Te}from"./react-query.gen-Bbh5MII3.js";import{n as Ee,r as De}from"./conversation-navigation-DQEOhOXf.js";import{n as Oe}from"./use-is-mobile-q9Lr7beO.js";import{t as ke}from"./effective-timezone-CHJnU8kZ.js";import{t as Ae}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as je}from"./use-effective-timezone-vox0__xI.js";import{t as Me}from"./use-assistant-capability-CmwC8eoT.js";import{t as Ne}from"./use-active-assistant-id-BADYKVyx.js";import{n as Pe}from"./detail-shell-B1BZYIqh.js";import{n as Fe}from"./schedules-C2Tr1zNV.js";import{t as Ie}from"./detail-card-BzCuPjtL.js";import{n as Le,t as Re}from"./detail-drawer-CYUmZIyK.js";import{a as ze,c as Be,i as Ve,n as He,o as Ue,r as We,s as Ge,t as Ke}from"./schedules-D3oXqJMY.js";import{i as qe,n as Je,t as Ye}from"./profile-metadata-CsakJtzD.js";import{t as Xe}from"./page-empty-state-BG1VeXc8.js";var H=e(n(),1),Ze={frequency:`daily`,minute:0,hour24:9,weekdays:[1],dayOfMonth:1},Qe=[{value:0,letter:`S`,short:`Sun`,full:`Sunday`},{value:1,letter:`M`,short:`Mon`,full:`Monday`},{value:2,letter:`T`,short:`Tue`,full:`Tuesday`},{value:3,letter:`W`,short:`Wed`,full:`Wednesday`},{value:4,letter:`T`,short:`Thu`,full:`Thursday`},{value:5,letter:`F`,short:`Fri`,full:`Friday`},{value:6,letter:`S`,short:`Sat`,full:`Saturday`}],$e=[1,2,3,4,5];function U(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,Math.round(e))):t}function et(e){let t=Array.from(new Set(e.map(e=>U(e,0,6)).filter(e=>Number.isInteger(e)))).sort((e,t)=>e-t);return t.length>0?t:[1]}function tt(e){let t=U(e.minute,0,59),n=U(e.hour24,0,23);switch(e.frequency){case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${et(e.weekdays).join(`,`)}`;case`monthly`:return e.dayOfMonth===`last`?`${t} ${n} L * *`:`${t} ${n} ${U(e.dayOfMonth,1,28)} * *`}}function nt(e,t){let n=U(e,0,23),r=U(t,0,59),i=n<12?`AM`:`PM`;return`${n%12==0?12:n%12}:${String(r).padStart(2,`0`)} ${i}`}function rt(e){let t=[`th`,`st`,`nd`,`rd`],n=e%100;return`${e}${t[(n-20)%10]??t[n]??t[0]}`}function it(e){let t=et(e),n=new Set(t);if(t.length===7)return`every day`;if(t.length===5&&$e.every(e=>n.has(e)))return`every weekday`;if(t.length===2&&n.has(0)&&n.has(6))return`every weekend`;if(t.length===1)return`every ${Qe[t[0]]?.full??`day`}`;let r=t.map(e=>Qe[e]?.short??``),i=r.pop();return`every ${r.join(`, `)} & ${i}`}function at(e){let t=nt(e.hour24,e.minute);switch(e.frequency){case`hourly`:{let t=U(e.minute,0,59);return`Runs every hour at :${String(t).padStart(2,`0`)}`}case`daily`:return`Runs every day at ${t}`;case`weekly`:return`Runs ${it(e.weekdays)} at ${t}`;case`monthly`:return e.dayOfMonth===`last`?`Runs on the last day of every month at ${t}`:`Runs on the ${rt(U(e.dayOfMonth,1,28))} of every month at ${t}`}}var W=u(),ot=[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`}],st=Array.from({length:12},(e,t)=>{let n=t+1;return{value:String(n),label:String(n)}}),ct=Array.from({length:12},(e,t)=>{let n=t*5,r=String(n).padStart(2,`0`);return{value:r,label:r}}),lt=[...Array.from({length:28},(e,t)=>{let n=t+1;return{value:String(n),label:rt(n)}}),{value:`last`,label:`Last day`}],ut=[{value:`AM`,label:`AM`},{value:`PM`,label:`PM`}];function dt(e,t){let n=e%12;return t===`PM`?n+12:n}function ft(e){try{let t=new Intl.DateTimeFormat(`en-US`,{timeZone:e,timeZoneName:`short`}).formatToParts(new Date).find(e=>e.type===`timeZoneName`)?.value;return t&&t!==e?`${e} · ${t}`:e}catch{return e}}function pt({isOpen:e,assistantId:t,onClose:n,onCreated:r}){return(0,W.jsx)(P.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,W.jsx)(mt,{assistantId:t,onClose:n,onCreated:r}):null})}function mt({assistantId:e,onClose:t,onCreated:n}){let i=je(),[a,o]=(0,H.useState)(``),[s,c]=(0,H.useState)(``),[l,u]=(0,H.useState)(``),[d,f]=(0,H.useState)(`simple`),[p,m]=(0,H.useState)(Ze),[h,g]=(0,H.useState)(``),[_,v]=(0,H.useState)(!1),[y,b]=(0,H.useState)(null),x=a.trim(),S=s.trim(),C=l.trim(),w=h.trim(),T=(0,H.useMemo)(()=>d===`simple`?tt(p):w,[d,p,w]),E=(0,H.useMemo)(()=>d===`simple`?at(p):w||`Enter a cron expression to continue.`,[d,p,w]),D=(0,H.useMemo)(()=>ft(i),[i]),O=x.length>0&&S.length>0&&C.length>0&&T.length>0&&!_;return(0,W.jsxs)(P.Content,{size:`md`,children:[(0,W.jsxs)(P.Header,{children:[(0,W.jsx)(P.Title,{children:`Create schedule`}),(0,W.jsx)(P.Description,{children:`Schedule a recurring instruction for your assistant. Runs in execute mode — the message is delivered to the assistant on each fire.`})]}),(0,W.jsxs)(`form`,{onSubmit:async t=>{if(t.preventDefault(),O){v(!0),b(null);try{await Ke(e,{name:x,description:S,expression:T,message:C,timezone:i}),v(!1),n()}catch(e){b(e instanceof Error?e.message:`Failed to create schedule.`),v(!1)}}},children:[(0,W.jsx)(P.Body,{children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,W.jsx)(M,{label:`Name`,placeholder:`Morning briefing`,value:a,onChange:e=>o(e.target.value),required:!0,autoFocus:!0,fullWidth:!0}),(0,W.jsx)(j,{label:`Description`,placeholder:`What is this schedule for?`,value:s,onChange:e=>c(e.target.value),required:!0,fullWidth:!0,rows:2}),(0,W.jsx)(yt,{label:`Repeat`,children:d===`simple`?(0,W.jsx)(ht,{cadence:p,onChange:m}):(0,W.jsx)(vt,{value:h,onChange:g,onUseSimple:()=>f(`simple`)})}),(0,W.jsx)(bt,{summary:E,mono:d===`advanced`&&w.length>0,timezoneLabel:D}),d===`simple`?(0,W.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e||tt(p)),f(`advanced`)},className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`Advanced — write a cron expression`}):null,(0,W.jsx)(j,{label:`Message`,placeholder:`What should the assistant do on each fire?`,value:l,onChange:e=>u(e.target.value),required:!0,fullWidth:!0,rows:4}),y?(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:y}):null]})}),(0,W.jsxs)(P.Footer,{children:[(0,W.jsx)(r,{variant:`outlined`,onClick:t,type:`button`,children:`Cancel`}),(0,W.jsx)(r,{variant:`primary`,type:`submit`,disabled:!O,children:_?`Creating…`:`Create schedule`})]})]})]})}function ht({cadence:e,onChange:t}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(h,{items:ot,value:e.frequency,onChange:n=>t({...e,frequency:n}),ariaLabel:`How often the schedule runs`}),e.frequency===`hourly`?(0,W.jsx)(G,{label:`At minute`,children:(0,W.jsx)(L,{options:ct,value:String(e.minute).padStart(2,`0`),onChange:n=>t({...e,minute:Number(n)}),"aria-label":`Minute`,className:`w-24`})}):null,e.frequency===`weekly`?(0,W.jsx)(G,{label:`On these days`,children:(0,W.jsx)(_t,{value:e.weekdays,onChange:n=>t({...e,weekdays:n})})}):null,e.frequency===`monthly`?(0,W.jsx)(G,{label:`On day`,children:(0,W.jsx)(L,{options:lt,value:e.dayOfMonth===`last`?`last`:String(e.dayOfMonth),onChange:n=>t({...e,dayOfMonth:n===`last`?`last`:Number(n)}),"aria-label":`Day of month`,className:`w-32`})}):null,e.frequency===`hourly`?null:(0,W.jsx)(G,{label:`At time`,children:(0,W.jsx)(gt,{hour24:e.hour24,minute:e.minute,onChange:(n,r)=>t({...e,hour24:n,minute:r})})})]})}function gt({hour24:e,minute:t,onChange:n}){let r=e<12?`AM`:`PM`,i=e%12==0?12:e%12;return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(L,{options:st,value:String(i),onChange:e=>n(dt(Number(e),r),t),"aria-label":`Hour`,className:`w-[72px]`}),(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:`:`}),(0,W.jsx)(L,{options:ct,value:String(t).padStart(2,`0`),onChange:t=>n(e,Number(t)),"aria-label":`Minute`,className:`w-[72px]`}),(0,W.jsx)(`div`,{className:`w-[112px]`,children:(0,W.jsx)(h,{items:ut,value:r,onChange:e=>n(dt(i,e),t),ariaLabel:`AM or PM`})})]})}function _t({value:e,onChange:t}){let n=new Set(e),r=e=>{let r=new Set(n);r.has(e)?r.size>1&&r.delete(e):r.add(e),t([...r].sort((e,t)=>e-t))};return(0,W.jsx)(`div`,{className:`flex gap-1.5`,children:Qe.map(e=>{let t=n.has(e.value);return(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.value),"aria-pressed":t,"aria-label":e.full,title:e.full,className:d(`flex h-9 w-9 items-center justify-center rounded-md border text-body-medium-default transition-colors`,t?`border-[var(--border-active)] bg-[var(--surface-active)] text-[var(--content-emphasised)]`:`border-[var(--field-border)] text-[var(--content-tertiary)] hover:border-[var(--border-active)] hover:text-[var(--content-default)]`),children:e.letter},e.value)})})}function vt({value:e,onChange:t,onUseSimple:n}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(M,{placeholder:`0 9 * * *`,value:e,onChange:e=>t(e.target.value),fullWidth:!0,className:`font-mono`,"aria-label":`Cron expression`,helperText:`Standard 5-field cron (minute hour day month weekday). RRULE expressions are also accepted.`}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`← Back to the simple builder`})]})}function yt({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:e}),t]})}function G({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,W.jsx)(`span`,{className:`min-w-[88px] text-body-small-default text-[var(--content-tertiary)]`,children:e}),t]})}function bt({summary:e,mono:t,timezoneLabel:n}){return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3.5 py-3`,children:[(0,W.jsx)(x,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:d(`text-body-medium-default text-[var(--content-default)]`,t&&`break-all font-mono`),children:e}),(0,W.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Times use your timezone — `,n,`.`]})]})]})}function xt(e=ke(),t=Date.now()){return qe(Je,e,t)}function K(e){return e?new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0}):`—`}function St(e){return e==null?`—`:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}var Ct=new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`,minimumFractionDigits:2,maximumFractionDigits:2});function q(e){return e==null||!Number.isFinite(e)?`—`:Ct.format(e)}function wt(e){return`${e.toLocaleString()} ${e===1?`run`:`runs`}`}function Tt(e){let t=Math.round(e/6e4);return t>=60&&t%60==0?`Every ${t/60} hr`:`Every ${t} min`}function Et(e){if(!e)return;let t=new Set,n=[];for(let r of e)for(let e of r.runs)t.has(e.id)||(t.add(e.id),n.push(e));return n}function Dt(e){return!!e.conversationId&&e.conversationExists===!0&&e.conversationArchivedAt==null}function Ot(e){return Dt(e)?e.conversationId??null:null}function J(e){return typeof e==`string`&&e.length>0}function kt(e){return e.status===`pending`||e.status===`superseded`}function At(e){return e.status!==`skipped`&&e.status!==`missed`&&!kt(e)}var jt={heartbeat:`system-heartbeat`,consolidation:`system-consolidation`,retrospective:`system-memory-retrospective`};function Mt(e){if(e.cronExpression)return e.timezone?`Cron: ${e.cronExpression} (${e.timezone})`:`Cron: ${e.cronExpression}`;let t=Tt(e.intervalMs);return e.activeHoursStart!=null&&e.activeHoursEnd!=null&&(t+=` (${e.activeHoursStart}:00–${e.activeHoursEnd}:00)`),t}function Nt(e){return Tt(e.intervalMs)}var Pt=`After conversation activity`;function Ft(e){return e.status!==`fired`&&e.status!==`cancelled`}function It(e,t){return Ft(e)?e.status===`firing`?!1:e.nextRunAt==null||!e.enabled&&e.nextRunAt<=t:!0}function Lt(e,t){let n=[],r=[],i=[];for(let a of e)a.isOneShot?It(a,t)?i.push(a):r.push(a):n.push(a);return n.sort((e,t)=>e.enabled===t.enabled?(e.nextRunAt??1/0)-(t.nextRunAt??1/0):e.enabled?-1:1),r.sort((e,t)=>(e.nextRunAt??1/0)-(t.nextRunAt??1/0)),i.sort((e,t)=>{let n=e.lastRunAt??e.nextRunAt??0;return(t.lastRunAt??t.nextRunAt??0)-n}),{recurring:n,upcomingOneTime:r,pastOneTime:i}}function Rt(e,t,n=!0){return{queryKey:[{_id:`schedulesUsagesummaryGet`,path:{assistant_id:e??``},_tz:t}],queryFn:()=>e?Ve(e,xt(t)):Promise.resolve([]),enabled:n,staleTime:1e4}}function zt(e){return{scheduleId:e,runCount:0,totalEstimatedCostUsd:0,eventCount:0}}function Bt(e,t,n){let r=(t??[]).filter(e=>{let t=e.startedAt??e.createdAt;return At(e)&&t>=n.from&&t<=n.to});return{scheduleId:e,runCount:r.length,totalEstimatedCostUsd:r.reduce((e,t)=>{let n=t.estimatedCostUsd;return typeof n==`number`&&Number.isFinite(n)?e+n:e},0),eventCount:0}}function Vt(e,t,n){let r=!!e&&n?.enabled!==!1,{data:i}=s({...ve({path:{assistant_id:e}}),enabled:r,staleTime:6e4}),{data:a}=s({...be({path:{assistant_id:e}}),enabled:r,staleTime:6e4}),o=i?.callSites.find(e=>e.id===t)?.defaultProfile??null;return o==null?{key:null,label:null}:{key:o,label:(a?Ye(a):{})[o]?.displayName??o}}function Ht(e,n,r){let i=Vt(e,`mainAgent`),[a,o]=(0,H.useState)(!1),s=(0,H.useMemo)(()=>i.key?n.filter(e=>Ft(e)&&e.inferenceProfile!==i.key).length:0,[i.key,n]),c=i.label,u=l({mutationFn:t=>ze(e,null,t),onSuccess:e=>{o(!1),r(),F.success(e===0?`Every schedule already runs on ${c}.`:`Moved ${e} ${e===1?`schedule`:`schedules`} to ${c}.`)},onError:e=>{t(e,{context:`schedules_rebase_inference_profile`}),F.error(`Failed to move the schedules.`)}});return{defaultProfileLabel:c,offDefaultCount:s,canRebase:s>0,requestRebase:()=>o(!0),dialogProps:{open:a&&i.key!=null,profileLabel:c,offDefaultCount:s,isPending:u.isPending,onConfirm:()=>{i.key&&u.mutate(i.key)},onCancel:()=>o(!1)}}}function Ut({open:e,profileLabel:t,offDefaultCount:n,isPending:r,onConfirm:i,onCancel:a}){return(0,W.jsx)(I,{open:e,title:`Use ${t} for every schedule?`,message:`${n} of the schedules below ${n===1?`runs`:`run`} on a different model. This moves every schedule, including reminders your assistant set aside for later, onto ${t}, your current default. Schedules you deliberately put on another model move too.`,confirmLabel:`Move schedules`,isPending:r,onConfirm:i,onCancel:a})}function Wt({status:e}){return(0,W.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full`,style:{backgroundColor:e===`ok`||e===`completed`?`var(--system-positive-strong)`:e===`error`||e===`failed`?`var(--system-negative-strong)`:`var(--content-tertiary)`},"aria-label":e??`unknown`})}function Gt({scheduleName:e,usage:t,onOpenUsage:n}){if(t.status===`loading`)return(0,W.jsxs)(`div`,{"aria-label":`Loading schedule usage`,className:`flex w-[156px] shrink-0 items-center justify-end gap-3`,children:[(0,W.jsx)(R,{as:`span`,className:`h-5 w-16`}),(0,W.jsx)(R,{as:`span`,className:`h-5 w-16`})]});let r=t.status===`error`,i=r?`--`:q(t.summary.totalEstimatedCostUsd),a=r?`--`:wt(t.summary.runCount),o=t.status===`ready`&&!(t.summary.totalEstimatedCostUsd>0),s=t.status===`ready`&&t.summary.runCount===0,c=o?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`,l=s?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`;return(0,W.jsxs)(`div`,{className:`flex w-[156px] shrink-0 items-center justify-end gap-3 text-right text-body-small-default`,children:[n?(0,W.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`View usage for ${e}`,className:`min-w-[64px] cursor-pointer rounded px-1 py-0.5 text-right transition-colors hover:bg-[var(--surface-hover)] ${c}`,children:i}):(0,W.jsx)(`span`,{"aria-label":`Cost for ${e} in the last 7 days: ${i}`,className:`block min-w-[64px] px-1 py-0.5 ${c}`,children:i}),(0,W.jsx)(`span`,{"aria-label":`Runs for ${e} in the last 7 days: ${a}`,className:`block min-w-[64px] px-1 py-0.5 ${l}`,children:a})]})}function Kt({name:e,subtitle:t,enabled:n,nextRunAt:r,lastRunAt:i,usage:a,helperText:o,statusLabel:s,statusTone:c=`neutral`,onClick:l}){return(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-3 rounded-md px-2 py-3 transition-colors hover:bg-[var(--surface-hover)] [&+&]:border-t [&+&]:border-[var(--border-base)]`,children:(0,W.jsxs)(`button`,{type:`button`,onClick:l,"aria-label":`Open ${e}`,className:`flex min-w-0 flex-1 cursor-pointer flex-wrap items-center gap-3 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e})}),(0,W.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:t}),o?(0,W.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-secondary)]`,children:o}):null,(0,W.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-body-small-default text-[var(--content-tertiary)]`,children:[r?(0,W.jsxs)(`span`,{children:[`Next: `,K(r)]}):null,i?(0,W.jsxs)(`span`,{children:[`Last: `,K(i)]}):null]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-3`,children:[(0,W.jsx)(Gt,{scheduleName:e,usage:a}),s?(0,W.jsx)(A,{tone:c,children:s}):(0,W.jsx)(`span`,{className:`h-2 w-2 rounded-full`,style:{backgroundColor:n?`var(--system-positive-strong)`:`var(--content-disabled)`},"aria-label":n?`enabled`:`disabled`}),(0,W.jsx)(y,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})})}function qt({heartbeatConfig:e,consolidationConfig:t,retrospectiveConfig:n,heartbeatUsage:r,consolidationUsage:i,retrospectiveUsage:a,isLoading:o,hasError:s,onRetry:c,onSelectHeartbeat:l,onSelectConsolidation:u,onSelectRetrospective:d}){let f=e!=null,p=t?.available===!0,m=n?.available===!0,h=f||p||m;if(!o&&!s&&!h)return null;let g=[...f?[r]:[],...p?[i]:[],...m?[a]:[]].filter(e=>e.status===`ready`),_=g.reduce((e,t)=>e+(t.summary.totalEstimatedCostUsd??0),0),y=o?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,W.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):s&&!h?(0,W.jsxs)(O,{tone:`error`,children:[`Failed to load system jobs.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]}):(0,W.jsxs)(`div`,{children:[f?(0,W.jsx)(Kt,{name:`Heartbeat`,subtitle:Mt(e),enabled:e.enabled,nextRunAt:e.nextRunAt,lastRunAt:e.lastRunAt,usage:r,onClick:l}):null,p?(0,W.jsx)(Kt,{name:`Consolidation`,subtitle:Nt(t),enabled:t.enabled,helperText:t.enabled?void 0:`Memory is off, so consolidation is paused.`,nextRunAt:t.nextRunAt,lastRunAt:t.lastRunAt,usage:i,statusLabel:t.enabled?void 0:`Paused`,statusTone:`warning`,onClick:u}):null,m?(0,W.jsx)(Kt,{name:`Memory retrospective`,subtitle:Pt,enabled:n.enabled,helperText:n.enabled?void 0:`Retrospectives are turned off in Memory settings.`,nextRunAt:n.nextRunAt,lastRunAt:n.lastRunAt,usage:a,statusLabel:n.enabled?void 0:`Paused`,statusTone:`warning`,onClick:d}):null,s?(0,W.jsx)(`div`,{className:`pt-3 first:pt-0`,children:(0,W.jsxs)(O,{tone:`error`,children:[`Some system jobs failed to load.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]})}):null]});return(0,W.jsx)(Ie,{children:(0,W.jsx)(k.Root,{type:`multiple`,children:(0,W.jsxs)(k.Item,{value:`system-jobs`,children:[(0,W.jsxs)(k.Trigger,{className:`group justify-between gap-3`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1 text-left`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`System`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Built-in jobs managed by the assistant runtime`})]}),(0,W.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[g.length>0?(0,W.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[q(_),` (7d)`]}):null,(0,W.jsx)(v,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]})]}),(0,W.jsx)(k.Content,{children:(0,W.jsx)(`div`,{className:`mt-3`,children:y})})]})})})}var Jt={disabled:`heartbeat is disabled`,outside_active_hours:`outside active hours`,overlap:`previous run was still active`,pre_first_user_message:`waiting for the first conversation`,max_consecutive_runs:`consecutive-run cap reached`,max_daily_runs:`daily run cap reached`,quiesced:`assistant was shutting down`};function Yt(e){return e.status===`missed`?`Missed while the assistant was offline`:`skipReason`in e&&e.skipReason?`Skipped — ${Jt[e.skipReason]??e.skipReason}`:null}function Y(e,t){return{id:e.id,jobId:t,status:e.status,startedAt:e.startedAt??e.scheduledFor,finishedAt:e.finishedAt,durationMs:e.durationMs,output:Yt(e),error:e.error,conversationId:e.conversationId,conversationExists:e.conversationExists,conversationArchivedAt:e.conversationArchivedAt,estimatedCostUsd:e.estimatedCostUsd,createdAt:e.createdAt,...`title`in e?{title:e.title}:{}}}function Xt(e){return e.runs.filter(e=>!kt(e)).map(e=>Y(e,`heartbeat`))}function Zt(e){return e.runs.map(e=>Y(e,`consolidation`))}function Qt(e){return e.runs.map(e=>Y(e,`retrospective`))}var X=1e4;function $t(e,t,n,r,i){return e?{status:`loading`}:t?{status:`error`}:{status:`ready`,summary:Bt(n,r,i)}}function en(e,n){let r=o(),i={path:{assistant_id:e??``}},{data:a,isLoading:c,isError:l,refetch:u}=s({...ue(i),enabled:!!e,staleTime:X}),{data:d,isLoading:f,isError:p,refetch:m}=s({...Ce(i),enabled:!!e,staleTime:X}),{data:h,isLoading:g,isError:_,refetch:v}=s({...we(i),enabled:!!e,staleTime:X}),y={path:{assistant_id:e??``},query:{limit:100}},{data:b,isLoading:x,isError:S,refetch:C}=s({...le(y),select:Xt,enabled:!!e&&a!=null,staleTime:X}),{data:w,isLoading:T,isError:E,refetch:D}=s({...de(y),select:Zt,enabled:!!e&&d?.available===!0,staleTime:X}),{data:O,isLoading:k,isError:A,refetch:j}=s({...fe(y),select:Qt,enabled:!!e&&h?.available===!0,staleTime:X}),M=(0,H.useMemo)(()=>xt(n),[n]),N=(0,H.useMemo)(()=>$t(x,S,jt.heartbeat,b,M),[b,S,x,M]),P=(0,H.useMemo)(()=>$t(T,E,jt.consolidation,w,M),[w,E,T,M]),I=(0,H.useMemo)(()=>$t(k,A,jt.retrospective,O,M),[O,A,k,M]),L=t=>{if(!e)return;let n={heartbeat:{config:ue(i).queryKey,runs:le(y).queryKey,infinite:me(i)},consolidation:{config:Ce(i).queryKey,runs:de(y).queryKey,infinite:xe(i)},retrospective:{config:we(i).queryKey,runs:fe(y).queryKey,infinite:Se(i)}}[t];r.invalidateQueries({queryKey:n.config}),r.invalidateQueries({queryKey:n.runs}),r.invalidateQueries({queryKey:n.infinite})},R=_e({onSuccess:e=>{e.ran?F.success(`Heartbeat started.`):F.info(`Heartbeat skipped.`)},onError:e=>{t(e,{context:`heartbeat_run_now`}),F.error(`Failed to run heartbeat.`)},onSettled:()=>L(`heartbeat`)}),z=oe({onSuccess:e=>{e.ran?F.success(`Consolidation queued.`):F.info(`Consolidation already queued or running.`)},onError:e=>{t(e,{context:`consolidation_run_now`}),F.error(`Failed to run consolidation.`)},onSettled:()=>L(`consolidation`)}),B=ye({onSuccess:e=>{Te(r,i,e),F.success(e.enabled?`Heartbeat enabled.`:`Heartbeat disabled.`)},onError:e=>{t(e,{context:`heartbeat_toggle`}),F.error(`Failed to toggle heartbeat.`)}});return{heartbeatConfig:a,consolidationConfig:d,retrospectiveConfig:h,heartbeatUsage:N,consolidationUsage:P,retrospectiveUsage:I,isLoading:c||f||g,hasError:l||p||_,isHeartbeatRunning:R.isPending,isConsolidationRunning:z.isPending,isHeartbeatLoading:c,isHeartbeatError:l,isConsolidationLoading:f,isConsolidationError:p,isRetrospectiveLoading:g,isRetrospectiveError:_,refetchHeartbeat:u,refetchConsolidation:m,refetchRetrospective:v,runHeartbeatNow:()=>{e&&R.mutate({path:{assistant_id:e}})},runConsolidationNow:()=>{e&&z.mutate({path:{assistant_id:e}})},toggleHeartbeat:t=>{e&&B.mutate({body:{enabled:t},path:{assistant_id:e}})},refetchAll:()=>{u(),m(),v(),C(),D(),j()}}}function Z({id:e,title:t,subtitle:n,accessory:r,children:i,className:a}){let o=!!(t||n||r);return(0,W.jsx)(p,{asChild:!0,className:d(`rounded-lg`,a),children:(0,W.jsxs)(`section`,{id:e,children:[o&&(0,W.jsxs)(`div`,{className:`flex flex-row items-start justify-between gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[t&&(0,W.jsx)(f,{variant:`title-small`,as:`h2`,className:`text-[var(--content-emphasised)]`,children:t}),n&&(0,W.jsx)(f,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:n})]}),r&&(0,W.jsx)(`div`,{className:`shrink-0`,children:r})]}),i!=null&&(0,W.jsx)(`div`,{className:o?`mt-3`:``,children:i})]})})}function tn(e){return/^plugin:([^/]+)\//.exec(e??``)?.[1]??null}var nn={user_disabled:`scheduleDisarmReason.userDisabled`,plugin_removed:`scheduleDisarmReason.pluginRemoved`,plugin_disabled:`scheduleDisarmReason.pluginDisabled`,declaration_removed:`scheduleDisarmReason.declarationRemoved`,declaration_disabled:`scheduleDisarmReason.declarationDisabled`};function rn(e){return e.enabled||!e.disarmReason?null:nn[e.disarmReason]??null}var an=`Default (assistant's main model)`,on=`Custom call-site model`;function sn(e,t){return t?.[e]?.displayName??e}function cn(e,t){if(e==null)return;if(e.provider!=null||e.model!=null)return on;let n=e.profile?.trim();return n?`Override (${sn(n,t)})`:void 0}function ln({assistantId:e,pinnedProfile:t,defaultCallSite:n=`mainAgent`,fallbackLabel:r=an,respectCallSiteOverride:i=!1}){let a=t==null,{data:o}=s({...be({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),c=(0,H.useMemo)(()=>o?Ye(o):{},[o]),{label:l}=Vt(e,n,{enabled:a}),u=a&&i?cn(o?.llm?.callSites?.[n],c):void 0,d=t==null?u??(l==null?r:`Default (${l})`):sn(t,c);return(0,W.jsxs)(`div`,{className:`flex min-h-6 items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-[var(--content-secondary)]`,children:`Model profile`}),(0,W.jsx)(`span`,{className:`min-w-0 truncate text-right`,title:d,children:d})]})}function un(e,t,n){let r=te(e?.profiles??{},e?.profileOrder??[]);return[{value:null,label:`Default`},...re(r,[t],n).map(e=>{let t=ne(e,r,n);return{value:e.name,label:ie(e),...t?{issue:t}:{},...t===`undispatchable`?{reason:ee(e)}:{}}})]}function dn(e,t){let{data:n}=s({...be({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),r=ae();return(0,H.useMemo)(()=>un(n?.llm,t,{requireOwnProviderAndModel:r}),[n?.llm,t,r])}function fn({assistantId:e,value:t,onChange:n,disabled:r=!1,isSaving:i=!1,className:a,includeDefaultOption:o=!0,placeholder:s,variant:c,menuAlign:l}){return(0,W.jsx)(L,{value:t,onChange:n,onSelectNone:()=>n(null),options:dn(e,t).filter(e=>o||e.value!=null).map(e=>({...e.issue===`undispatchable`?{icon:(0,W.jsx)(b,{className:`h-3.5 w-3.5 text-[var(--system-mid-strong)]`}),...e.reason?{tooltip:e.reason}:{}}:{},value:e.value,label:e.label})),disabled:r||i,placeholder:s,className:a,variant:c,menuAlign:l,"aria-label":`Model profile`})}function Q({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex min-h-6 items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-body-medium-lighter text-[var(--content-secondary)]`,children:e}),(0,W.jsx)(`span`,{className:`min-w-0 text-right text-body-medium-lighter text-[var(--content-default)]`,children:t})]})}function pn({schedule:e,assistantId:n,isPast:r}){let{t:i}=B(`schedules`),a=o(),s=pe({path:{assistant_id:n}}),c=l({mutationFn:t=>Be(n,e.id,{inferenceProfile:t}),onMutate:async t=>{await a.cancelQueries({queryKey:s});let n=a.getQueryData(s)?.find(t=>t.id===e.id)?.inferenceProfile;return a.setQueryData(s,n=>n?.map(n=>n.id===e.id?{...n,inferenceProfile:t}:n)),{previousProfile:n}},onError:(n,r,o)=>{let c=o?.previousProfile;c!==void 0&&a.setQueryData(s,t=>t?.map(t=>t.id===e.id?{...t,inferenceProfile:c}:t)),t(n,{context:`schedule_update_inference_profile`}),F.error(i(`scheduleDetail.modelChangeFailed`))},onSettled:()=>a.invalidateQueries({queryKey:s})});return e.mode===`workflow`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q,{label:i(`scheduleDetail.modelProfile`),value:i(`scheduleDetail.notUsedForWorkflow`)}),(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:i(`scheduleDetail.modelProfileWorkflowNote`)})]}):r?(0,W.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:(0,W.jsx)(ln,{assistantId:n,pinnedProfile:e.inferenceProfile})}):(0,W.jsx)(Q,{label:i(`scheduleDetail.modelProfile`),value:(0,W.jsx)(fn,{assistantId:n,value:e.inferenceProfile,onChange:t=>{t&&t!==e.inferenceProfile&&c.mutate(t)},includeDefaultOption:!1,placeholder:i(`scheduleDetail.chooseModel`),isSaving:c.isPending,variant:`ghost`,menuAlign:`end`,className:`-my-1 -mr-2`})})}function mn({icon:e,value:t,label:n}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-3`,children:[(0,W.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-[var(--surface-sunken)] text-[var(--content-secondary)]`,children:e}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`div`,{className:`truncate text-body-large-default text-[var(--content-default)]`,children:t}),(0,W.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:n})]})]})}function hn({usage:e}){let{t}=B(`schedules`);return e.status===`loading`?(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:Array.from({length:2},(e,t)=>(0,W.jsx)(R,{className:`h-[60px] rounded-lg`},t))}):e.status===`error`?null:(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:[(0,W.jsx)(mn,{icon:(0,W.jsx)(S,{className:`h-4 w-4`}),value:q(e.summary.totalEstimatedCostUsd),label:t(`scheduleDetail.costLabel`,{days:7})}),(0,W.jsx)(mn,{icon:(0,W.jsx)(T,{className:`h-4 w-4`}),value:wt(e.summary.runCount),label:t(`scheduleDetail.runsLabel`,{days:7})})]})}function gn(e){return e.exists&&e.archivedAt==null}function _n({run:e,index:t,isExpanded:n,disableDirectOpen:r,onOpenConversation:i,onToggleDetails:a}){let{t:o}=B(`schedules`),s=Ot(e),c=e.conversations??(s?[{id:s,title:null,exists:!0,archivedAt:null}]:[]),l=J(e.output),u=J(e.error),f=!r&&c.length===1&&gn(c[0])?c[0].id:null,p=!f&&(c.length>0||l||u),m=`schedule-run-details-${t}`,h=!!f||p,g=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Wt,{status:e.status}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:K(e.startedAt)}),(0,W.jsxs)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[St(e.durationMs),` ·`,` `,q(e.estimatedCostUsd)]}),e.status===`error`&&e.error?(0,W.jsxs)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--system-negative-strong)]`,children:[e.error.slice(0,120),e.error.length>120?`…`:``]}):null]}),h?(0,W.jsx)(y,{className:d(`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform`,p&&n?`rotate-90`:``)}):null]}),_=p&&n?(0,W.jsx)(`div`,{id:m,className:`px-2 pb-3`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[c.length>0?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:o(`scheduleDetail.conversations`)}),(0,W.jsx)(`div`,{className:`space-y-1`,children:c.map(e=>gn(e)?(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),className:`block w-full truncate text-left text-body-small-default text-[var(--content-default)] hover:underline`,children:J(e.title)?e.title:o(`scheduleDetail.conversation`)},e.id):(0,W.jsxs)(`span`,{className:`block truncate text-body-small-default text-[var(--content-tertiary)] italic`,children:[J(e.title)?e.title:o(`scheduleDetail.conversation`),` `,e.exists?o(`scheduleDetail.conversationArchived`):o(`scheduleDetail.conversationUnavailable`)]},e.id))})]}):null,l?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:o(`scheduleDetail.output`)}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,u?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:o(`scheduleDetail.error`)}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null;return f?(0,W.jsx)(`div`,{children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(f),"aria-label":o(`scheduleDetail.openRunConversationAria`,{time:K(e.startedAt)}),className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:g})}):p?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),"aria-label":o(`scheduleDetail.toggleRunDetailsAria`,{time:K(e.startedAt)}),"aria-expanded":n,"aria-controls":m,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:g}),_]}):(0,W.jsx)(`div`,{className:`flex items-center gap-3 px-2 py-3`,children:g})}function vn({runs:e,isLoading:t,disableDirectOpen:n,onOpenConversation:r}){let{t:i}=B(`schedules`),[a,o]=(0,H.useState)(null);return t?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-6`,children:(0,W.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,W.jsx)(`p`,{className:`py-2 text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:i(`scheduleDetail.noRunsYet`)}):(0,W.jsx)(`div`,{className:`-mx-2 divide-y divide-[var(--border-base)]`,children:e.map((e,t)=>(0,W.jsx)(_n,{run:e,index:t,isExpanded:a===e.id,disableDirectOpen:n,onOpenConversation:r,onToggleDetails:e=>o(t=>t===e?null:e)},e.id))})}function yn({schedule:e,assistantId:n,usage:a,isPast:o=!1,onClose:c,onDeleted:l}){let{t:u}=B(`schedules`),d=i(),{data:f,isLoading:p}=s({queryKey:ce({path:{assistant_id:n,id:e.id}}),queryFn:()=>We(n,e.id),staleTime:1e4}),[m,h]=(0,H.useState)(!1),[g,v]=(0,H.useState)(!1),[y,b]=(0,H.useState)(!1),x=tn(e.sourceKey),S=rn(e),w=x!==null&&!e.enabled,T=async()=>{h(!0);try{await Ue(n,e.id)}catch(e){t(e,{context:`schedule_run_now`}),F.error(u(`scheduleDetail.runFailed`))}finally{h(!1)}},E=async()=>{b(!0);try{await He(n,e.id),l()}catch(e){t(e,{context:`schedule_delete`}),F.error(u(`scheduleDetail.deleteFailed`)),b(!1),v(!1)}};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex h-full flex-col bg-[var(--surface-overlay)] md:rounded-[var(--radius-xl)] md:border md:border-[var(--border-base)]`,children:[(0,W.jsx)(Pe,{title:e.name,headerActions:x?void 0:(0,W.jsx)(r,{variant:`dangerOutline`,iconOnly:(0,W.jsx)(D,{}),"aria-label":u(`scheduleDetail.delete`),tooltip:u(`scheduleDetail.delete`),onClick:()=>v(!0)}),closeLabel:u(`scheduleDetail.closeAria`),closeTooltip:u(`scheduleDetail.close`),onClose:c}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[e.description?(0,W.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e.description}):null,(0,W.jsx)(Z,{title:u(`scheduleDetail.details`),children:(0,W.jsxs)(`div`,{className:`space-y-2`,children:[e.cadenceDescription?(0,W.jsx)(Q,{label:u(`scheduleDetail.cadence`),value:e.cadenceDescription}):null,(0,W.jsx)(Q,{label:u(`scheduleDetail.mode`),value:e.mode}),(0,W.jsx)(pn,{schedule:e,assistantId:n,isPast:o}),(0,W.jsx)(Q,{label:u(`scheduleDetail.status`),value:e.enabled?u(`scheduleDetail.enabled`):u(`scheduleDetail.disabled`)}),(0,W.jsx)(Q,{label:u(`scheduleDetail.nextRun`),value:K(e.nextRunAt)}),e.lastRunAt?(0,W.jsx)(Q,{label:u(`scheduleDetail.lastRun`),value:(0,W.jsxs)(`span`,{className:`flex items-center justify-end gap-2`,children:[(0,W.jsx)(Wt,{status:e.lastStatus}),K(e.lastRunAt)]})}):null]})}),(0,W.jsx)(hn,{usage:a}),(0,W.jsx)(Z,{title:u(`scheduleDetail.recentRuns`),children:(0,W.jsx)(vn,{runs:f?.runs,isLoading:p,disableDirectOpen:e.mode===`script`,onOpenConversation:e=>Ee(d,e)})})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t border-[var(--border-hover)] p-[var(--app-spacing-lg)]`,children:[x?(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:S?u(`scheduleDetail.managedByPluginPaused`,{plugin:x,reason:u(S)}):u(`scheduleDetail.managedByPlugin`,{plugin:x})}):(0,W.jsx)(`span`,{}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(r,{variant:`outlined`,leftIcon:(0,W.jsx)(_,{className:`h-3.5 w-3.5`}),onClick:()=>d(V.settings.usageForSchedule(e.id)),children:u(`scheduleDetail.viewUsage`)}),e.mode===`script`?(0,W.jsxs)(W.Fragment,{children:[w?(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:u(`scheduleDetail.turnOnToRun`)}):null,(0,W.jsx)(r,{variant:`primary`,leftIcon:m?(0,W.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):void 0,onClick:()=>void T(),disabled:m||w,children:u(m?`scheduleDetail.running`:`scheduleDetail.runNow`)})]}):null]})]})]}),(0,W.jsx)(I,{open:g,title:u(`scheduleDetail.delete`),message:u(`scheduleDetail.deleteConfirmMessage`,{name:e.name}),confirmLabel:u(`scheduleDetail.confirmDelete`),cancelLabel:u(`scheduleDetail.cancel`),destructive:!0,isPending:y,onConfirm:()=>void E(),onCancel:()=>v(!1)})]})}function bn(e){if(e.status===`loading`)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(R,{as:`span`,className:`h-4 w-12`}),(0,W.jsx)(R,{as:`span`,className:`h-4 w-10`})]});if(e.status===`error`)return(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`—`});let{summary:t}=e;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:q(t.totalEstimatedCostUsd)}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:wt(t.runCount)})]})}function xn({name:e,badge:t,metaParts:n,usage:r,enabled:i,selected:a,onClick:o,onToggle:s,toggleAriaLabel:c}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-2 py-3 transition-colors [&+&]:border-t [&+&]:border-[var(--border-base)] ${a?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`}`,children:[s?(0,W.jsx)(N,{checked:i,onChange:s,"aria-label":c}):null,(0,W.jsxs)(`button`,{type:`button`,onClick:o,className:`flex min-w-0 flex-1 cursor-pointer items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e}),t]}),n.length>0?(0,W.jsx)(`span`,{className:`flex min-w-0 items-center gap-2 text-label-small-default text-[var(--content-tertiary)]`,children:n.map((e,t)=>(0,W.jsxs)(H.Fragment,{children:[t>0?(0,W.jsx)(`span`,{className:`h-[3px] w-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}):null,(0,W.jsx)(`span`,{className:`truncate`,children:e})]},t))}):null]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[bn(r),(0,W.jsx)(y,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})]})}function Sn({schedule:e,usage:t,selected:n,onClick:r,onToggle:i}){let{t:a}=B(`schedules`),o=e.isOneShot?``:e.cadenceDescription.trim(),s=e.lastRunAt??e.nextRunAt,c=rn(e),l=[c?a(c):``,o,s?K(s):``].filter(Boolean),u=tn(e.sourceKey);return(0,W.jsx)(xn,{name:e.name,badge:u?(0,W.jsx)(A,{tone:`info`,children:u}):void 0,metaParts:l,usage:t,enabled:e.enabled,selected:n,onClick:r,onToggle:i,toggleAriaLabel:i?a(`scheduleRow.toggleAria`,{name:e.name}):void 0})}function Cn({recurring:e,oneTime:t,pastOneTime:n,usageForSchedule:i,isLoading:a,isError:o,refetch:s,onToggle:c,onSelectSchedule:l,selectedScheduleId:u,onStartNewChat:d,onCreateSchedule:f,pastOpen:p,onPastOpenChange:m,onRebaseProfiles:h,defaultProfileLabel:_,systemTasksSlot:v}){let{t:b}=B(`schedules`),x=e=>(0,W.jsx)(Sn,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id),onToggle:t=>c(e.id,t)},e.id),S=e=>(0,W.jsx)(Sn,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id)},e.id),C=n.length>0?(0,W.jsx)(k.Root,{type:`single`,collapsible:!0,className:`mt-3`,value:p?`past`:``,onValueChange:e=>m(e===`past`),children:(0,W.jsxs)(k.Item,{value:`past`,children:[(0,W.jsxs)(k.Trigger,{className:`group gap-[var(--app-spacing-xs)] px-2 text-label-small-default text-[var(--content-tertiary)]`,children:[(0,W.jsx)(y,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,W.jsx)(`span`,{children:b(`schedulesPanel.pastToggle`,{count:n.length})})]}),(0,W.jsx)(k.Content,{children:(0,W.jsx)(`div`,{className:`pt-1`,children:n.map(S)})})]})}):null;return(0,W.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[a?(0,W.jsx)(`div`,{className:`space-y-3`,children:Array.from({length:2},(e,t)=>(0,W.jsx)(R,{className:`h-12 rounded-md`},t))}):o&&e.length===0?(0,W.jsx)(O,{tone:`error`,actions:(0,W.jsx)(`button`,{type:`button`,onClick:s,className:`cursor-pointer underline hover:no-underline`,children:b(`schedulesPanel.retry`)}),children:b(`schedulesPanel.loadFailed`)}):e.length===0&&t.length===0&&n.length===0?(0,W.jsx)(Xe,{icon:g,title:b(`schedulesPanel.emptyTitle`),description:b(`schedulesPanel.emptyDescription`),actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(r,{variant:`primary`,size:`regular`,onClick:d,children:b(`schedulesPanel.newConversation`)}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:b(`schedulesPanel.emptyActionsSeparator`)}),(0,W.jsx)(r,{variant:`outlined`,size:`regular`,onClick:f,children:b(`schedulesPanel.createSchedule`)})]})}):(0,W.jsxs)(`div`,{children:[h&&_?(0,W.jsx)(`div`,{className:`mb-1 flex min-w-0 justify-end`,children:(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:h,className:`max-w-full truncate`,children:b(`schedulesPanel.useProfileForAll`,{profile:_})})}):null,e.map(x),t.length>0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`mt-3 px-2 text-label-small-default text-[var(--content-tertiary)]`,children:b(`schedulesPanel.oneTimeHeading`)}),t.map(S)]}):null,C]}),v?(0,W.jsx)(`div`,{className:`mt-[var(--app-spacing-lg)]`,children:v}):null]})}function wn({runs:e,isLoading:t,emptyMessage:n=`No runs yet.`,hasMore:a=!1,isLoadingMore:o=!1,onLoadMore:s}){let c=i(),[l,u]=(0,H.useState)(null),d=a&&s?(0,W.jsx)(`div`,{className:`flex justify-center pt-3`,children:(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:s,disabled:o,leftIcon:o?(0,W.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):void 0,children:o?`Loading…`:`Load more`})}):null;return(0,W.jsx)(Z,{title:`Recent runs`,children:t?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,W.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`py-4 text-center text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:n}),d]}):(0,W.jsxs)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:[e.map((e,t)=>{let n=Ot(e),r=J(e.output),i=J(e.error),a=e.status===`skipped`||e.status===`missed`,o=!n&&!a&&(r||i),s=l===e.id,d=`schedule-run-details-${t}`;return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(m,{label:(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,W.jsx)(Wt,{status:e.status}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`block truncate text-body-medium-lighter text-[var(--content-default)]`,children:J(e.title)?e.title:K(e.startedAt)}),(0,W.jsxs)(`span`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[J(e.title)?`${K(e.startedAt)} · `:``,a?(0,W.jsx)(W.Fragment,{children:r?e.output:e.status===`missed`?`Missed`:`Skipped`}):(0,W.jsxs)(W.Fragment,{children:[St(e.durationMs),` ·`,` `,q(e.estimatedCostUsd)]}),e.status===`error`&&e.error&&(0,W.jsxs)(`span`,{className:`ml-2 text-[var(--system-negative-strong)]`,children:[e.error.slice(0,80),e.error.length>80?`…`:``]})]})]}),n||o?(0,W.jsx)(y,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform ${s?`rotate-90`:``}`}):null]}),onSelect:n?()=>Ee(c,n):o?()=>u(s?null:e.id):void 0,"aria-label":`Run at ${K(e.startedAt)}`,"aria-expanded":o?s:void 0,"aria-controls":o?d:void 0,className:`h-auto py-2.5 gap-3 -mx-2 px-2`}),o&&s?(0,W.jsx)(`div`,{id:d,className:`px-2 pb-3`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[r?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,i?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null]},e.id)}),d]})})}var Tn={heartbeat:`heartbeatAgent`,consolidation:`memoryV2Consolidation`,retrospective:`memoryRetrospective`};function $({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex min-h-6 items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-[var(--content-secondary)]`,children:e}),(0,W.jsx)(`span`,{className:`flex min-w-0 items-center justify-end gap-2 text-right text-[var(--content-default)]`,children:t})]})}function En({kind:e,assistantId:t,systemTasks:n,canOpenMemorySettings:a,onClose:o}){let{t:s}=B(`schedules`),l=i(),{heartbeatConfig:u,consolidationConfig:d,retrospectiveConfig:f}=n,p,m,h,g,_,v,y;e===`heartbeat`?(p=s(`systemTaskDetail.nameHeartbeat`),m=u?Mt(u):``,h=u?.enabled??!1,g=u?.nextRunAt??null,_=u?.lastRunAt??null,v=n.isHeartbeatRunning,y=n.runHeartbeatNow):e===`consolidation`?(p=s(`systemTaskDetail.nameConsolidation`),m=d?Nt(d):``,h=d?.enabled??!1,g=d?.nextRunAt??null,_=d?.lastRunAt??null,v=n.isConsolidationRunning,y=n.runConsolidationNow):(p=s(`systemTaskDetail.nameRetrospective`),m=Pt,h=f?.enabled??!1,g=f?.nextRunAt??null,_=f?.lastRunAt??null,v=!1,y=void 0);let b=e!==`heartbeat`,x=e===`retrospective`,S=b&&!h,T=v||S,D=s(b?h?`systemTaskDetail.statusManagedOn`:`systemTaskDetail.statusPaused`:h?`scheduleDetail.enabled`:`scheduleDetail.disabled`),k=x&&f?.available===!0,A=s(k?`systemTaskDetail.pausedRetrospectiveSwitchedOff`:x?`systemTaskDetail.pausedRetrospective`:`systemTaskDetail.pausedConsolidation`),j=b&&h&&a,M={path:{assistant_id:t},query:{limit:25}},P=e===`heartbeat`?se(M):e===`consolidation`?he(M):ge(M),{data:F,isLoading:I,fetchNextPage:L,hasNextPage:R,isFetchingNextPage:z}=c({queryKey:P.queryKey,queryFn:P.queryFn,initialPageParam:{path:M.path,query:{}},getNextPageParam:e=>e.nextCursor??void 0,staleTime:1e4}),ee=Et(F?.pages.map(t=>({runs:t.runs.filter(e=>!kt(e)).map(t=>Y(t,e))}))),te=ee?.find(e=>At(e)&&e.status!==`running`),ne=_??te?.finishedAt??te?.startedAt??null;return(0,W.jsxs)(`div`,{className:`flex h-full flex-col bg-[var(--surface-overlay)] md:rounded-[var(--radius-xl)] md:border md:border-[var(--border-base)]`,children:[(0,W.jsx)(Pe,{title:p,closeLabel:s(`scheduleDetail.closeAria`),closeTooltip:s(`scheduleDetail.close`),onClose:o}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(Z,{title:s(`scheduleDetail.details`),children:(0,W.jsxs)(`div`,{className:`space-y-2 text-body-medium-lighter`,children:[(0,W.jsx)($,{label:s(`scheduleDetail.status`),value:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`truncate`,children:D}),b?null:(0,W.jsx)(N,{size:`sm`,checked:h,onChange:n.toggleHeartbeat,"aria-label":s(`scheduleDetail.toggleAria`,{name:p})})]})}),(0,W.jsx)(ln,{assistantId:t,defaultCallSite:Tn[e],fallbackLabel:s(`systemTaskDetail.fallbackModelProfile`),respectCallSiteOverride:!0}),m?(0,W.jsx)($,{label:s(`systemTaskDetail.repeats`),value:(0,W.jsx)(`span`,{className:`truncate`,children:m})}):null,x?null:(0,W.jsx)($,{label:s(`scheduleDetail.nextRun`),value:(0,W.jsx)(`span`,{className:`truncate`,children:K(g)})}),(0,W.jsx)($,{label:s(`scheduleDetail.lastRun`),value:(0,W.jsx)(`span`,{className:`truncate`,children:K(ne)})})]})}),S?(0,W.jsx)(O,{tone:`warning`,className:`mt-4`,actions:a?(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:()=>l(`${V.settings.developer}?tab=memory`),children:s(k?`systemTaskDetail.openMemorySettings`:`systemTaskDetail.turnOnMemory`)}):void 0,children:A}):null]}),(0,W.jsx)(wn,{runs:ee,isLoading:I,hasMore:R,isLoadingMore:z,onLoadMore:()=>void L()})]}),j||y?(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center justify-end gap-2 border-t border-[var(--border-hover)] p-[var(--app-spacing-lg)]`,children:[j?(0,W.jsx)(r,{variant:`outlined`,leftIcon:(0,W.jsx)(E,{className:`h-3.5 w-3.5`}),onClick:()=>l(`${V.settings.developer}?tab=memory`),children:s(`systemTaskDetail.memorySettings`)}):null,y?(0,W.jsx)(r,{variant:`primary`,leftIcon:v?(0,W.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):(0,W.jsx)(w,{className:`h-3.5 w-3.5`}),onClick:y,disabled:T,children:s(v?`scheduleDetail.running`:`scheduleDetail.runNow`)}):null]}):null]})}function Dn(e){let n=je(),[r]=(0,H.useState)(()=>Date.now()),{data:i,isLoading:a,isError:o,refetch:c}=s(Fe(e)),{data:l,isLoading:u,isError:d}=s(Rt(e,n,!0)),{recurring:f,oneTime:p,pastOneTime:m}=(0,H.useMemo)(()=>{let e=Lt(i??[],r);return{recurring:e.recurring,oneTime:e.upcomingOneTime,pastOneTime:e.pastOneTime}},[r,i]),h=(0,H.useMemo)(()=>new Map((l??[]).map(e=>[e.scheduleId,e])),[l]);return{recurring:f,oneTime:p,pastOneTime:m,usageForSchedule:(0,H.useCallback)(e=>u?{status:`loading`}:d?{status:`error`}:{status:`ready`,summary:h.get(e)??zt(e)},[d,u,h]),handleToggle:(0,H.useCallback)(async(n,r)=>{if(e)try{await Ge(e,n,r),c()}catch(e){t(e,{context:`schedule_toggle`}),F.error(z(`schedules:scheduleDetail.toggleFailed`))}},[e,c]),isLoading:a,isError:o,refetch:(0,H.useCallback)(()=>{c()},[c])}}function On(){let e=i(),{scheduleId:t}=a(),n=Ne(),r=Oe(),o=je(),s=Dn(n),c=en(n,o),l=Me(`memoryOptOut`),u=Ae.use.settingsDeveloperNav(),d=l&&u===!0,[f,p]=(0,H.useState)(!1),m=t??null,[h,g]=(0,H.useState)(null),[_,v]=(0,H.useState)(!1),y=(0,H.useCallback)(t=>{e(t?V.schedules.detail(t):V.schedules.root)},[e]),b=m?s.recurring.find(e=>e.id===m)??s.oneTime.find(e=>e.id===m)??s.pastOneTime.find(e=>e.id===m)??null:null;(0,H.useEffect)(()=>{m&&!s.isLoading&&!s.isError&&!b&&y(null)},[m,b,s.isLoading,s.isError,y]);let x=h===`heartbeat`?c.heartbeatConfig!=null:h===`consolidation`?c.consolidationConfig?.available===!0:h===`retrospective`?c.retrospectiveConfig?.available===!0:!1;(0,H.useEffect)(()=>{h&&!c.isLoading&&!x&&g(null)},[h,x,c.isLoading]);let S=(0,H.useCallback)(e=>{g(null),y(e)},[y]),C=(0,H.useCallback)(e=>{m&&y(null),g(e)},[y,m]),w=(0,H.useCallback)(()=>{De(e)},[e]),T=Ht(n,(0,H.useMemo)(()=>[...s.recurring,...s.oneTime,...s.pastOneTime],[s.recurring,s.oneTime,s.pastOneTime]),s.refetch),E=(b?(0,W.jsx)(yn,{schedule:b,assistantId:n,usage:s.usageForSchedule(b.id),isPast:s.pastOneTime.some(e=>e.id===b.id),onClose:()=>y(null),onDeleted:()=>{y(null),s.refetch()}}):null)??(h&&x?(0,W.jsx)(En,{kind:h,assistantId:n,systemTasks:c,canOpenMemorySettings:d,onClose:()=>g(null)}):null),D=(0,W.jsx)(Cn,{recurring:s.recurring,oneTime:s.oneTime,pastOneTime:s.pastOneTime,usageForSchedule:s.usageForSchedule,isLoading:s.isLoading,isError:s.isError,refetch:s.refetch,onToggle:s.handleToggle,onSelectSchedule:S,selectedScheduleId:m,onStartNewChat:w,onCreateSchedule:()=>p(!0),pastOpen:_,onPastOpenChange:v,onRebaseProfiles:T.canRebase?T.requestRebase:void 0,defaultProfileLabel:T.defaultProfileLabel??void 0,systemTasksSlot:(0,W.jsx)(qt,{heartbeatConfig:c.heartbeatConfig,consolidationConfig:c.consolidationConfig,retrospectiveConfig:c.retrospectiveConfig,heartbeatUsage:c.heartbeatUsage,consolidationUsage:c.consolidationUsage,retrospectiveUsage:c.retrospectiveUsage,isLoading:c.isLoading,hasError:c.hasError,onRetry:c.refetchAll,onSelectHeartbeat:()=>C(`heartbeat`),onSelectConsolidation:()=>C(`consolidation`),onSelectRetrospective:()=>C(`retrospective`)})}),O=(0,W.jsx)(Ut,{...T.dialogProps});return E&&r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Le,{children:E}),O]}):(0,W.jsxs)(W.Fragment,{children:[E&&!r?(0,W.jsx)(Re,{storageKey:`schedulesDetailDrawerWidth`,detailKey:m??h??void 0,section:D,detail:E}):D,(0,W.jsx)(pt,{isOpen:f,assistantId:n,onClose:()=>p(!1),onCreated:()=>{p(!1),s.refetch()}}),O]})}export{On as SchedulesPage};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-DiNp24s6.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-VkxVX0DM.js";import{d as i,p as a}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as o}from"./QueryClientProvider-EuRl-wrW.js";import{t as s}from"./useQuery-CTSuec5b.js";import{t as c}from"./useInfiniteQuery-C5Kg1-qX.js";import{t as l}from"./useMutation-D2YPyfEH.js";import{t as u}from"./jsx-runtime-BJ8jcmzB.js";import{t as d}from"./cn-Cf8SmgbR.js";import{t as f}from"./typography-DekrYXvs.js";import{t as p}from"./card-DUsAeHUS.js";import{n as m,o as h}from"./list-row-CDwzGT9g.js";import{t as g}from"./calendar-5ZUL5438.js";import{t as _}from"./chart-column-Bd2tG_o1.js";import{t as v}from"./chevron-down-CmQCCo_x.js";import{t as y}from"./chevron-right-Dwr_Sx98.js";import{t as b}from"./circle-alert-DvkPmyIg.js";import{t as x}from"./clock-1REtpnlM.js";import{t as S}from"./coins-CveNnhLe.js";import{t as C}from"./loader-circle-DYe85z3g.js";import{t as w}from"./play-dZ2h3AT7.js";import{t as T}from"./repeat-BL0WDPMw.js";import{t as E}from"./settings-B-74NxzZ.js";import{t as D}from"./trash-2-V2WT_DbX.js";import{t as O}from"./notice-BlYF-xU3.js";import{s as k}from"./src-CImIAPTd.js";import{t as A}from"./tag-Ddzwz3ij.js";import{n as j,t as M}from"./input-DkgpMeG9.js";import{t as N}from"./toggle-0qt1e_3r.js";import{t as P}from"./modal-UYNawsIu.js";import{n as F}from"./toast-DqqWkjsh.js";import{t as I}from"./confirm-dialog-Drw1adml.js";import{t as L}from"./select-BKyejRky.js";import{t as R}from"./skeleton-D8_lkywC.js";import{s as z}from"./i18n-C9hRT4Lf.js";import{t as B}from"./useTranslation-D9pPv-bA.js";import{a as ee,l as te,n as ne,o as re,r as ie,s as ae}from"./profile-pickers-B0hfDNt-.js";import{d as V}from"./routes-B7wRw3UT.js";import{$t as oe,B as se,Ct as ce,H as le,R as ue,S as de,St as fe,Tt as pe,V as me,b as he,bt as ge,cn as _e,p as ve,sn as ye,u as be,x as xe,xt as Se,y as Ce,yt as we,z as Te}from"./react-query.gen-Bbh5MII3.js";import{n as Ee,r as De}from"./conversation-navigation-B_4jZ9Z2.js";import{n as Oe}from"./use-is-mobile-q9Lr7beO.js";import{t as ke}from"./effective-timezone-CHJnU8kZ.js";import{t as Ae}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as je}from"./use-effective-timezone-vox0__xI.js";import{t as Me}from"./use-assistant-capability-C-yHcMH4.js";import{t as Ne}from"./use-active-assistant-id-BADYKVyx.js";import{n as Pe}from"./detail-shell-D1UEZCzz.js";import{n as Fe}from"./schedules-C2Tr1zNV.js";import{t as Ie}from"./detail-card-Bqnvs6YE.js";import{n as Le,t as Re}from"./detail-drawer-j2jaITAL.js";import{a as ze,c as Be,i as Ve,n as He,o as Ue,r as We,s as Ge,t as Ke}from"./schedules-C3wE8OML.js";import{i as qe,n as Je,t as Ye}from"./profile-metadata-D9zzZn4_.js";import{t as Xe}from"./page-empty-state-CzHxZkBR.js";var H=e(n(),1),Ze={frequency:`daily`,minute:0,hour24:9,weekdays:[1],dayOfMonth:1},Qe=[{value:0,letter:`S`,short:`Sun`,full:`Sunday`},{value:1,letter:`M`,short:`Mon`,full:`Monday`},{value:2,letter:`T`,short:`Tue`,full:`Tuesday`},{value:3,letter:`W`,short:`Wed`,full:`Wednesday`},{value:4,letter:`T`,short:`Thu`,full:`Thursday`},{value:5,letter:`F`,short:`Fri`,full:`Friday`},{value:6,letter:`S`,short:`Sat`,full:`Saturday`}],$e=[1,2,3,4,5];function U(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,Math.round(e))):t}function et(e){let t=Array.from(new Set(e.map(e=>U(e,0,6)).filter(e=>Number.isInteger(e)))).sort((e,t)=>e-t);return t.length>0?t:[1]}function tt(e){let t=U(e.minute,0,59),n=U(e.hour24,0,23);switch(e.frequency){case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${et(e.weekdays).join(`,`)}`;case`monthly`:return e.dayOfMonth===`last`?`${t} ${n} L * *`:`${t} ${n} ${U(e.dayOfMonth,1,28)} * *`}}function nt(e,t){let n=U(e,0,23),r=U(t,0,59),i=n<12?`AM`:`PM`;return`${n%12==0?12:n%12}:${String(r).padStart(2,`0`)} ${i}`}function rt(e){let t=[`th`,`st`,`nd`,`rd`],n=e%100;return`${e}${t[(n-20)%10]??t[n]??t[0]}`}function it(e){let t=et(e),n=new Set(t);if(t.length===7)return`every day`;if(t.length===5&&$e.every(e=>n.has(e)))return`every weekday`;if(t.length===2&&n.has(0)&&n.has(6))return`every weekend`;if(t.length===1)return`every ${Qe[t[0]]?.full??`day`}`;let r=t.map(e=>Qe[e]?.short??``),i=r.pop();return`every ${r.join(`, `)} & ${i}`}function at(e){let t=nt(e.hour24,e.minute);switch(e.frequency){case`hourly`:{let t=U(e.minute,0,59);return`Runs every hour at :${String(t).padStart(2,`0`)}`}case`daily`:return`Runs every day at ${t}`;case`weekly`:return`Runs ${it(e.weekdays)} at ${t}`;case`monthly`:return e.dayOfMonth===`last`?`Runs on the last day of every month at ${t}`:`Runs on the ${rt(U(e.dayOfMonth,1,28))} of every month at ${t}`}}var W=u(),ot=[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`}],st=Array.from({length:12},(e,t)=>{let n=t+1;return{value:String(n),label:String(n)}}),ct=Array.from({length:12},(e,t)=>{let n=t*5,r=String(n).padStart(2,`0`);return{value:r,label:r}}),lt=[...Array.from({length:28},(e,t)=>{let n=t+1;return{value:String(n),label:rt(n)}}),{value:`last`,label:`Last day`}],ut=[{value:`AM`,label:`AM`},{value:`PM`,label:`PM`}];function dt(e,t){let n=e%12;return t===`PM`?n+12:n}function ft(e){try{let t=new Intl.DateTimeFormat(`en-US`,{timeZone:e,timeZoneName:`short`}).formatToParts(new Date).find(e=>e.type===`timeZoneName`)?.value;return t&&t!==e?`${e} · ${t}`:e}catch{return e}}function pt({isOpen:e,assistantId:t,onClose:n,onCreated:r}){return(0,W.jsx)(P.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,W.jsx)(mt,{assistantId:t,onClose:n,onCreated:r}):null})}function mt({assistantId:e,onClose:t,onCreated:n}){let i=je(),[a,o]=(0,H.useState)(``),[s,c]=(0,H.useState)(``),[l,u]=(0,H.useState)(``),[d,f]=(0,H.useState)(`simple`),[p,m]=(0,H.useState)(Ze),[h,g]=(0,H.useState)(``),[_,v]=(0,H.useState)(!1),[y,b]=(0,H.useState)(null),x=a.trim(),S=s.trim(),C=l.trim(),w=h.trim(),T=(0,H.useMemo)(()=>d===`simple`?tt(p):w,[d,p,w]),E=(0,H.useMemo)(()=>d===`simple`?at(p):w||`Enter a cron expression to continue.`,[d,p,w]),D=(0,H.useMemo)(()=>ft(i),[i]),O=x.length>0&&S.length>0&&C.length>0&&T.length>0&&!_;return(0,W.jsxs)(P.Content,{size:`md`,children:[(0,W.jsxs)(P.Header,{children:[(0,W.jsx)(P.Title,{children:`Create schedule`}),(0,W.jsx)(P.Description,{children:`Schedule a recurring instruction for your assistant. Runs in execute mode — the message is delivered to the assistant on each fire.`})]}),(0,W.jsxs)(`form`,{onSubmit:async t=>{if(t.preventDefault(),O){v(!0),b(null);try{await Ke(e,{name:x,description:S,expression:T,message:C,timezone:i}),v(!1),n()}catch(e){b(e instanceof Error?e.message:`Failed to create schedule.`),v(!1)}}},children:[(0,W.jsx)(P.Body,{children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,W.jsx)(M,{label:`Name`,placeholder:`Morning briefing`,value:a,onChange:e=>o(e.target.value),required:!0,autoFocus:!0,fullWidth:!0}),(0,W.jsx)(j,{label:`Description`,placeholder:`What is this schedule for?`,value:s,onChange:e=>c(e.target.value),required:!0,fullWidth:!0,rows:2}),(0,W.jsx)(yt,{label:`Repeat`,children:d===`simple`?(0,W.jsx)(ht,{cadence:p,onChange:m}):(0,W.jsx)(vt,{value:h,onChange:g,onUseSimple:()=>f(`simple`)})}),(0,W.jsx)(bt,{summary:E,mono:d===`advanced`&&w.length>0,timezoneLabel:D}),d===`simple`?(0,W.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e||tt(p)),f(`advanced`)},className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`Advanced — write a cron expression`}):null,(0,W.jsx)(j,{label:`Message`,placeholder:`What should the assistant do on each fire?`,value:l,onChange:e=>u(e.target.value),required:!0,fullWidth:!0,rows:4}),y?(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:y}):null]})}),(0,W.jsxs)(P.Footer,{children:[(0,W.jsx)(r,{variant:`outlined`,onClick:t,type:`button`,children:`Cancel`}),(0,W.jsx)(r,{variant:`primary`,type:`submit`,disabled:!O,children:_?`Creating…`:`Create schedule`})]})]})]})}function ht({cadence:e,onChange:t}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(h,{items:ot,value:e.frequency,onChange:n=>t({...e,frequency:n}),ariaLabel:`How often the schedule runs`}),e.frequency===`hourly`?(0,W.jsx)(G,{label:`At minute`,children:(0,W.jsx)(L,{options:ct,value:String(e.minute).padStart(2,`0`),onChange:n=>t({...e,minute:Number(n)}),"aria-label":`Minute`,className:`w-24`})}):null,e.frequency===`weekly`?(0,W.jsx)(G,{label:`On these days`,children:(0,W.jsx)(_t,{value:e.weekdays,onChange:n=>t({...e,weekdays:n})})}):null,e.frequency===`monthly`?(0,W.jsx)(G,{label:`On day`,children:(0,W.jsx)(L,{options:lt,value:e.dayOfMonth===`last`?`last`:String(e.dayOfMonth),onChange:n=>t({...e,dayOfMonth:n===`last`?`last`:Number(n)}),"aria-label":`Day of month`,className:`w-32`})}):null,e.frequency===`hourly`?null:(0,W.jsx)(G,{label:`At time`,children:(0,W.jsx)(gt,{hour24:e.hour24,minute:e.minute,onChange:(n,r)=>t({...e,hour24:n,minute:r})})})]})}function gt({hour24:e,minute:t,onChange:n}){let r=e<12?`AM`:`PM`,i=e%12==0?12:e%12;return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(L,{options:st,value:String(i),onChange:e=>n(dt(Number(e),r),t),"aria-label":`Hour`,className:`w-[72px]`}),(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:`:`}),(0,W.jsx)(L,{options:ct,value:String(t).padStart(2,`0`),onChange:t=>n(e,Number(t)),"aria-label":`Minute`,className:`w-[72px]`}),(0,W.jsx)(`div`,{className:`w-[112px]`,children:(0,W.jsx)(h,{items:ut,value:r,onChange:e=>n(dt(i,e),t),ariaLabel:`AM or PM`})})]})}function _t({value:e,onChange:t}){let n=new Set(e),r=e=>{let r=new Set(n);r.has(e)?r.size>1&&r.delete(e):r.add(e),t([...r].sort((e,t)=>e-t))};return(0,W.jsx)(`div`,{className:`flex gap-1.5`,children:Qe.map(e=>{let t=n.has(e.value);return(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.value),"aria-pressed":t,"aria-label":e.full,title:e.full,className:d(`flex h-9 w-9 items-center justify-center rounded-md border text-body-medium-default transition-colors`,t?`border-[var(--border-active)] bg-[var(--surface-active)] text-[var(--content-emphasised)]`:`border-[var(--field-border)] text-[var(--content-tertiary)] hover:border-[var(--border-active)] hover:text-[var(--content-default)]`),children:e.letter},e.value)})})}function vt({value:e,onChange:t,onUseSimple:n}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(M,{placeholder:`0 9 * * *`,value:e,onChange:e=>t(e.target.value),fullWidth:!0,className:`font-mono`,"aria-label":`Cron expression`,helperText:`Standard 5-field cron (minute hour day month weekday). RRULE expressions are also accepted.`}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`← Back to the simple builder`})]})}function yt({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:e}),t]})}function G({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,W.jsx)(`span`,{className:`min-w-[88px] text-body-small-default text-[var(--content-tertiary)]`,children:e}),t]})}function bt({summary:e,mono:t,timezoneLabel:n}){return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3.5 py-3`,children:[(0,W.jsx)(x,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:d(`text-body-medium-default text-[var(--content-default)]`,t&&`break-all font-mono`),children:e}),(0,W.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Times use your timezone — `,n,`.`]})]})]})}function xt(e=ke(),t=Date.now()){return qe(Je,e,t)}function K(e){return e?new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0}):`—`}function St(e){return e==null?`—`:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}var Ct=new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`,minimumFractionDigits:2,maximumFractionDigits:2});function q(e){return e==null||!Number.isFinite(e)?`—`:Ct.format(e)}function wt(e){return`${e.toLocaleString()} ${e===1?`run`:`runs`}`}function Tt(e){let t=Math.round(e/6e4);return t>=60&&t%60==0?`Every ${t/60} hr`:`Every ${t} min`}function Et(e){if(!e)return;let t=new Set,n=[];for(let r of e)for(let e of r.runs)t.has(e.id)||(t.add(e.id),n.push(e));return n}function Dt(e){return!!e.conversationId&&e.conversationExists===!0&&e.conversationArchivedAt==null}function Ot(e){return Dt(e)?e.conversationId??null:null}function J(e){return typeof e==`string`&&e.length>0}function kt(e){return e.status===`pending`||e.status===`superseded`}function At(e){return e.status!==`skipped`&&e.status!==`missed`&&!kt(e)}var jt={heartbeat:`system-heartbeat`,consolidation:`system-consolidation`,retrospective:`system-memory-retrospective`};function Mt(e){if(e.cronExpression)return e.timezone?`Cron: ${e.cronExpression} (${e.timezone})`:`Cron: ${e.cronExpression}`;let t=Tt(e.intervalMs);return e.activeHoursStart!=null&&e.activeHoursEnd!=null&&(t+=` (${e.activeHoursStart}:00–${e.activeHoursEnd}:00)`),t}function Nt(e){return Tt(e.intervalMs)}var Pt=`After conversation activity`;function Ft(e){return e.status!==`fired`&&e.status!==`cancelled`}function It(e,t){return Ft(e)?e.status===`firing`?!1:e.nextRunAt==null||!e.enabled&&e.nextRunAt<=t:!0}function Lt(e,t){let n=[],r=[],i=[];for(let a of e)a.isOneShot?It(a,t)?i.push(a):r.push(a):n.push(a);return n.sort((e,t)=>e.enabled===t.enabled?(e.nextRunAt??1/0)-(t.nextRunAt??1/0):e.enabled?-1:1),r.sort((e,t)=>(e.nextRunAt??1/0)-(t.nextRunAt??1/0)),i.sort((e,t)=>{let n=e.lastRunAt??e.nextRunAt??0;return(t.lastRunAt??t.nextRunAt??0)-n}),{recurring:n,upcomingOneTime:r,pastOneTime:i}}function Rt(e,t,n=!0){return{queryKey:[{_id:`schedulesUsagesummaryGet`,path:{assistant_id:e??``},_tz:t}],queryFn:()=>e?Ve(e,xt(t)):Promise.resolve([]),enabled:n,staleTime:1e4}}function zt(e){return{scheduleId:e,runCount:0,totalEstimatedCostUsd:0,eventCount:0}}function Bt(e,t,n){let r=(t??[]).filter(e=>{let t=e.startedAt??e.createdAt;return At(e)&&t>=n.from&&t<=n.to});return{scheduleId:e,runCount:r.length,totalEstimatedCostUsd:r.reduce((e,t)=>{let n=t.estimatedCostUsd;return typeof n==`number`&&Number.isFinite(n)?e+n:e},0),eventCount:0}}function Vt(e,t,n){let r=!!e&&n?.enabled!==!1,{data:i}=s({...ve({path:{assistant_id:e}}),enabled:r,staleTime:6e4}),{data:a}=s({...be({path:{assistant_id:e}}),enabled:r,staleTime:6e4}),o=i?.callSites.find(e=>e.id===t)?.defaultProfile??null;return o==null?{key:null,label:null}:{key:o,label:(a?Ye(a):{})[o]?.displayName??o}}function Ht(e,n,r){let i=Vt(e,`mainAgent`),[a,o]=(0,H.useState)(!1),s=(0,H.useMemo)(()=>i.key?n.filter(e=>Ft(e)&&e.inferenceProfile!==i.key).length:0,[i.key,n]),c=i.label,u=l({mutationFn:t=>ze(e,null,t),onSuccess:e=>{o(!1),r(),F.success(e===0?`Every schedule already runs on ${c}.`:`Moved ${e} ${e===1?`schedule`:`schedules`} to ${c}.`)},onError:e=>{t(e,{context:`schedules_rebase_inference_profile`}),F.error(`Failed to move the schedules.`)}});return{defaultProfileLabel:c,offDefaultCount:s,canRebase:s>0,requestRebase:()=>o(!0),dialogProps:{open:a&&i.key!=null,profileLabel:c,offDefaultCount:s,isPending:u.isPending,onConfirm:()=>{i.key&&u.mutate(i.key)},onCancel:()=>o(!1)}}}function Ut({open:e,profileLabel:t,offDefaultCount:n,isPending:r,onConfirm:i,onCancel:a}){return(0,W.jsx)(I,{open:e,title:`Use ${t} for every schedule?`,message:`${n} of the schedules below ${n===1?`runs`:`run`} on a different model. This moves every schedule, including reminders your assistant set aside for later, onto ${t}, your current default. Schedules you deliberately put on another model move too.`,confirmLabel:`Move schedules`,isPending:r,onConfirm:i,onCancel:a})}function Wt({status:e}){return(0,W.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full`,style:{backgroundColor:e===`ok`||e===`completed`?`var(--system-positive-strong)`:e===`error`||e===`failed`?`var(--system-negative-strong)`:`var(--content-tertiary)`},"aria-label":e??`unknown`})}function Gt({scheduleName:e,usage:t,onOpenUsage:n}){if(t.status===`loading`)return(0,W.jsxs)(`div`,{"aria-label":`Loading schedule usage`,className:`flex w-[156px] shrink-0 items-center justify-end gap-3`,children:[(0,W.jsx)(R,{as:`span`,className:`h-5 w-16`}),(0,W.jsx)(R,{as:`span`,className:`h-5 w-16`})]});let r=t.status===`error`,i=r?`--`:q(t.summary.totalEstimatedCostUsd),a=r?`--`:wt(t.summary.runCount),o=t.status===`ready`&&!(t.summary.totalEstimatedCostUsd>0),s=t.status===`ready`&&t.summary.runCount===0,c=o?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`,l=s?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`;return(0,W.jsxs)(`div`,{className:`flex w-[156px] shrink-0 items-center justify-end gap-3 text-right text-body-small-default`,children:[n?(0,W.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`View usage for ${e}`,className:`min-w-[64px] cursor-pointer rounded px-1 py-0.5 text-right transition-colors hover:bg-[var(--surface-hover)] ${c}`,children:i}):(0,W.jsx)(`span`,{"aria-label":`Cost for ${e} in the last 7 days: ${i}`,className:`block min-w-[64px] px-1 py-0.5 ${c}`,children:i}),(0,W.jsx)(`span`,{"aria-label":`Runs for ${e} in the last 7 days: ${a}`,className:`block min-w-[64px] px-1 py-0.5 ${l}`,children:a})]})}function Kt({name:e,subtitle:t,enabled:n,nextRunAt:r,lastRunAt:i,usage:a,helperText:o,statusLabel:s,statusTone:c=`neutral`,onClick:l}){return(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-3 rounded-md px-2 py-3 transition-colors hover:bg-[var(--surface-hover)] [&+&]:border-t [&+&]:border-[var(--border-base)]`,children:(0,W.jsxs)(`button`,{type:`button`,onClick:l,"aria-label":`Open ${e}`,className:`flex min-w-0 flex-1 cursor-pointer flex-wrap items-center gap-3 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e})}),(0,W.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:t}),o?(0,W.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-secondary)]`,children:o}):null,(0,W.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-body-small-default text-[var(--content-tertiary)]`,children:[r?(0,W.jsxs)(`span`,{children:[`Next: `,K(r)]}):null,i?(0,W.jsxs)(`span`,{children:[`Last: `,K(i)]}):null]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-3`,children:[(0,W.jsx)(Gt,{scheduleName:e,usage:a}),s?(0,W.jsx)(A,{tone:c,children:s}):(0,W.jsx)(`span`,{className:`h-2 w-2 rounded-full`,style:{backgroundColor:n?`var(--system-positive-strong)`:`var(--content-disabled)`},"aria-label":n?`enabled`:`disabled`}),(0,W.jsx)(y,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})})}function qt({heartbeatConfig:e,consolidationConfig:t,retrospectiveConfig:n,heartbeatUsage:r,consolidationUsage:i,retrospectiveUsage:a,isLoading:o,hasError:s,onRetry:c,onSelectHeartbeat:l,onSelectConsolidation:u,onSelectRetrospective:d}){let f=e!=null,p=t?.available===!0,m=n?.available===!0,h=f||p||m;if(!o&&!s&&!h)return null;let g=[...f?[r]:[],...p?[i]:[],...m?[a]:[]].filter(e=>e.status===`ready`),_=g.reduce((e,t)=>e+(t.summary.totalEstimatedCostUsd??0),0),y=o?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,W.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):s&&!h?(0,W.jsxs)(O,{tone:`error`,children:[`Failed to load system jobs.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]}):(0,W.jsxs)(`div`,{children:[f?(0,W.jsx)(Kt,{name:`Heartbeat`,subtitle:Mt(e),enabled:e.enabled,nextRunAt:e.nextRunAt,lastRunAt:e.lastRunAt,usage:r,onClick:l}):null,p?(0,W.jsx)(Kt,{name:`Consolidation`,subtitle:Nt(t),enabled:t.enabled,helperText:t.enabled?void 0:`Memory is off, so consolidation is paused.`,nextRunAt:t.nextRunAt,lastRunAt:t.lastRunAt,usage:i,statusLabel:t.enabled?void 0:`Paused`,statusTone:`warning`,onClick:u}):null,m?(0,W.jsx)(Kt,{name:`Memory retrospective`,subtitle:Pt,enabled:n.enabled,helperText:n.enabled?void 0:`Retrospectives are turned off in Memory settings.`,nextRunAt:n.nextRunAt,lastRunAt:n.lastRunAt,usage:a,statusLabel:n.enabled?void 0:`Paused`,statusTone:`warning`,onClick:d}):null,s?(0,W.jsx)(`div`,{className:`pt-3 first:pt-0`,children:(0,W.jsxs)(O,{tone:`error`,children:[`Some system jobs failed to load.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]})}):null]});return(0,W.jsx)(Ie,{children:(0,W.jsx)(k.Root,{type:`multiple`,children:(0,W.jsxs)(k.Item,{value:`system-jobs`,children:[(0,W.jsxs)(k.Trigger,{className:`group justify-between gap-3`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1 text-left`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`System`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Built-in jobs managed by the assistant runtime`})]}),(0,W.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[g.length>0?(0,W.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[q(_),` (7d)`]}):null,(0,W.jsx)(v,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]})]}),(0,W.jsx)(k.Content,{children:(0,W.jsx)(`div`,{className:`mt-3`,children:y})})]})})})}var Jt={disabled:`heartbeat is disabled`,outside_active_hours:`outside active hours`,overlap:`previous run was still active`,pre_first_user_message:`waiting for the first conversation`,max_consecutive_runs:`consecutive-run cap reached`,max_daily_runs:`daily run cap reached`,quiesced:`assistant was shutting down`};function Yt(e){return e.status===`missed`?`Missed while the assistant was offline`:`skipReason`in e&&e.skipReason?`Skipped — ${Jt[e.skipReason]??e.skipReason}`:null}function Y(e,t){return{id:e.id,jobId:t,status:e.status,startedAt:e.startedAt??e.scheduledFor,finishedAt:e.finishedAt,durationMs:e.durationMs,output:Yt(e),error:e.error,conversationId:e.conversationId,conversationExists:e.conversationExists,conversationArchivedAt:e.conversationArchivedAt,estimatedCostUsd:e.estimatedCostUsd,createdAt:e.createdAt,...`title`in e?{title:e.title}:{}}}function Xt(e){return e.runs.filter(e=>!kt(e)).map(e=>Y(e,`heartbeat`))}function Zt(e){return e.runs.map(e=>Y(e,`consolidation`))}function Qt(e){return e.runs.map(e=>Y(e,`retrospective`))}var X=1e4;function $t(e,t,n,r,i){return e?{status:`loading`}:t?{status:`error`}:{status:`ready`,summary:Bt(n,r,i)}}function en(e,n){let r=o(),i={path:{assistant_id:e??``}},{data:a,isLoading:c,isError:l,refetch:u}=s({...ue(i),enabled:!!e,staleTime:X}),{data:d,isLoading:f,isError:p,refetch:m}=s({...Ce(i),enabled:!!e,staleTime:X}),{data:h,isLoading:g,isError:_,refetch:v}=s({...we(i),enabled:!!e,staleTime:X}),y={path:{assistant_id:e??``},query:{limit:100}},{data:b,isLoading:x,isError:S,refetch:C}=s({...le(y),select:Xt,enabled:!!e&&a!=null,staleTime:X}),{data:w,isLoading:T,isError:E,refetch:D}=s({...de(y),select:Zt,enabled:!!e&&d?.available===!0,staleTime:X}),{data:O,isLoading:k,isError:A,refetch:j}=s({...fe(y),select:Qt,enabled:!!e&&h?.available===!0,staleTime:X}),M=(0,H.useMemo)(()=>xt(n),[n]),N=(0,H.useMemo)(()=>$t(x,S,jt.heartbeat,b,M),[b,S,x,M]),P=(0,H.useMemo)(()=>$t(T,E,jt.consolidation,w,M),[w,E,T,M]),I=(0,H.useMemo)(()=>$t(k,A,jt.retrospective,O,M),[O,A,k,M]),L=t=>{if(!e)return;let n={heartbeat:{config:ue(i).queryKey,runs:le(y).queryKey,infinite:me(i)},consolidation:{config:Ce(i).queryKey,runs:de(y).queryKey,infinite:xe(i)},retrospective:{config:we(i).queryKey,runs:fe(y).queryKey,infinite:Se(i)}}[t];r.invalidateQueries({queryKey:n.config}),r.invalidateQueries({queryKey:n.runs}),r.invalidateQueries({queryKey:n.infinite})},R=_e({onSuccess:e=>{e.ran?F.success(`Heartbeat started.`):F.info(`Heartbeat skipped.`)},onError:e=>{t(e,{context:`heartbeat_run_now`}),F.error(`Failed to run heartbeat.`)},onSettled:()=>L(`heartbeat`)}),z=oe({onSuccess:e=>{e.ran?F.success(`Consolidation queued.`):F.info(`Consolidation already queued or running.`)},onError:e=>{t(e,{context:`consolidation_run_now`}),F.error(`Failed to run consolidation.`)},onSettled:()=>L(`consolidation`)}),B=ye({onSuccess:e=>{Te(r,i,e),F.success(e.enabled?`Heartbeat enabled.`:`Heartbeat disabled.`)},onError:e=>{t(e,{context:`heartbeat_toggle`}),F.error(`Failed to toggle heartbeat.`)}});return{heartbeatConfig:a,consolidationConfig:d,retrospectiveConfig:h,heartbeatUsage:N,consolidationUsage:P,retrospectiveUsage:I,isLoading:c||f||g,hasError:l||p||_,isHeartbeatRunning:R.isPending,isConsolidationRunning:z.isPending,isHeartbeatLoading:c,isHeartbeatError:l,isConsolidationLoading:f,isConsolidationError:p,isRetrospectiveLoading:g,isRetrospectiveError:_,refetchHeartbeat:u,refetchConsolidation:m,refetchRetrospective:v,runHeartbeatNow:()=>{e&&R.mutate({path:{assistant_id:e}})},runConsolidationNow:()=>{e&&z.mutate({path:{assistant_id:e}})},toggleHeartbeat:t=>{e&&B.mutate({body:{enabled:t},path:{assistant_id:e}})},refetchAll:()=>{u(),m(),v(),C(),D(),j()}}}function Z({id:e,title:t,subtitle:n,accessory:r,children:i,className:a}){let o=!!(t||n||r);return(0,W.jsx)(p,{asChild:!0,className:d(`rounded-lg`,a),children:(0,W.jsxs)(`section`,{id:e,children:[o&&(0,W.jsxs)(`div`,{className:`flex flex-row items-start justify-between gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[t&&(0,W.jsx)(f,{variant:`title-small`,as:`h2`,className:`text-[var(--content-emphasised)]`,children:t}),n&&(0,W.jsx)(f,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:n})]}),r&&(0,W.jsx)(`div`,{className:`shrink-0`,children:r})]}),i!=null&&(0,W.jsx)(`div`,{className:o?`mt-3`:``,children:i})]})})}function tn(e){return/^plugin:([^/]+)\//.exec(e??``)?.[1]??null}var nn={user_disabled:`scheduleDisarmReason.userDisabled`,plugin_removed:`scheduleDisarmReason.pluginRemoved`,plugin_disabled:`scheduleDisarmReason.pluginDisabled`,declaration_removed:`scheduleDisarmReason.declarationRemoved`,declaration_disabled:`scheduleDisarmReason.declarationDisabled`};function rn(e){return e.enabled||!e.disarmReason?null:nn[e.disarmReason]??null}var an=`Default (assistant's main model)`,on=`Custom call-site model`;function sn(e,t){return t?.[e]?.displayName??e}function cn(e,t){if(e==null)return;if(e.provider!=null||e.model!=null)return on;let n=e.profile?.trim();return n?`Override (${sn(n,t)})`:void 0}function ln({assistantId:e,pinnedProfile:t,defaultCallSite:n=`mainAgent`,fallbackLabel:r=an,respectCallSiteOverride:i=!1}){let a=t==null,{data:o}=s({...be({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),c=(0,H.useMemo)(()=>o?Ye(o):{},[o]),{label:l}=Vt(e,n,{enabled:a}),u=a&&i?cn(o?.llm?.callSites?.[n],c):void 0,d=t==null?u??(l==null?r:`Default (${l})`):sn(t,c);return(0,W.jsxs)(`div`,{className:`flex min-h-6 items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-[var(--content-secondary)]`,children:`Model profile`}),(0,W.jsx)(`span`,{className:`min-w-0 truncate text-right`,title:d,children:d})]})}function un(e,t,n){let r=te(e?.profiles??{},e?.profileOrder??[]);return[{value:null,label:`Default`},...re(r,[t],n).map(e=>{let t=ne(e,r,n);return{value:e.name,label:ie(e),...t?{issue:t}:{},...t===`undispatchable`?{reason:ee(e)}:{}}})]}function dn(e,t){let{data:n}=s({...be({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),r=ae();return(0,H.useMemo)(()=>un(n?.llm,t,{requireOwnProviderAndModel:r}),[n?.llm,t,r])}function fn({assistantId:e,value:t,onChange:n,disabled:r=!1,isSaving:i=!1,className:a,includeDefaultOption:o=!0,placeholder:s,variant:c,menuAlign:l}){return(0,W.jsx)(L,{value:t,onChange:n,onSelectNone:()=>n(null),options:dn(e,t).filter(e=>o||e.value!=null).map(e=>({...e.issue===`undispatchable`?{icon:(0,W.jsx)(b,{className:`h-3.5 w-3.5 text-[var(--system-mid-strong)]`}),...e.reason?{tooltip:e.reason}:{}}:{},value:e.value,label:e.label})),disabled:r||i,placeholder:s,className:a,variant:c,menuAlign:l,"aria-label":`Model profile`})}function Q({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex min-h-6 items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-body-medium-lighter text-[var(--content-secondary)]`,children:e}),(0,W.jsx)(`span`,{className:`min-w-0 text-right text-body-medium-lighter text-[var(--content-default)]`,children:t})]})}function pn({schedule:e,assistantId:n,isPast:r}){let{t:i}=B(`schedules`),a=o(),s=pe({path:{assistant_id:n}}),c=l({mutationFn:t=>Be(n,e.id,{inferenceProfile:t}),onMutate:async t=>{await a.cancelQueries({queryKey:s});let n=a.getQueryData(s)?.find(t=>t.id===e.id)?.inferenceProfile;return a.setQueryData(s,n=>n?.map(n=>n.id===e.id?{...n,inferenceProfile:t}:n)),{previousProfile:n}},onError:(n,r,o)=>{let c=o?.previousProfile;c!==void 0&&a.setQueryData(s,t=>t?.map(t=>t.id===e.id?{...t,inferenceProfile:c}:t)),t(n,{context:`schedule_update_inference_profile`}),F.error(i(`scheduleDetail.modelChangeFailed`))},onSettled:()=>a.invalidateQueries({queryKey:s})});return e.mode===`workflow`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q,{label:i(`scheduleDetail.modelProfile`),value:i(`scheduleDetail.notUsedForWorkflow`)}),(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:i(`scheduleDetail.modelProfileWorkflowNote`)})]}):r?(0,W.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:(0,W.jsx)(ln,{assistantId:n,pinnedProfile:e.inferenceProfile})}):(0,W.jsx)(Q,{label:i(`scheduleDetail.modelProfile`),value:(0,W.jsx)(fn,{assistantId:n,value:e.inferenceProfile,onChange:t=>{t&&t!==e.inferenceProfile&&c.mutate(t)},includeDefaultOption:!1,placeholder:i(`scheduleDetail.chooseModel`),isSaving:c.isPending,variant:`ghost`,menuAlign:`end`,className:`-my-1 -mr-2`})})}function mn({icon:e,value:t,label:n}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-3`,children:[(0,W.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-[var(--surface-sunken)] text-[var(--content-secondary)]`,children:e}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`div`,{className:`truncate text-body-large-default text-[var(--content-default)]`,children:t}),(0,W.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:n})]})]})}function hn({usage:e}){let{t}=B(`schedules`);return e.status===`loading`?(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:Array.from({length:2},(e,t)=>(0,W.jsx)(R,{className:`h-[60px] rounded-lg`},t))}):e.status===`error`?null:(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:[(0,W.jsx)(mn,{icon:(0,W.jsx)(S,{className:`h-4 w-4`}),value:q(e.summary.totalEstimatedCostUsd),label:t(`scheduleDetail.costLabel`,{days:7})}),(0,W.jsx)(mn,{icon:(0,W.jsx)(T,{className:`h-4 w-4`}),value:wt(e.summary.runCount),label:t(`scheduleDetail.runsLabel`,{days:7})})]})}function gn(e){return e.exists&&e.archivedAt==null}function _n({run:e,index:t,isExpanded:n,disableDirectOpen:r,onOpenConversation:i,onToggleDetails:a}){let{t:o}=B(`schedules`),s=Ot(e),c=e.conversations??(s?[{id:s,title:null,exists:!0,archivedAt:null}]:[]),l=J(e.output),u=J(e.error),f=!r&&c.length===1&&gn(c[0])?c[0].id:null,p=!f&&(c.length>0||l||u),m=`schedule-run-details-${t}`,h=!!f||p,g=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Wt,{status:e.status}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:K(e.startedAt)}),(0,W.jsxs)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[St(e.durationMs),` ·`,` `,q(e.estimatedCostUsd)]}),e.status===`error`&&e.error?(0,W.jsxs)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--system-negative-strong)]`,children:[e.error.slice(0,120),e.error.length>120?`…`:``]}):null]}),h?(0,W.jsx)(y,{className:d(`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform`,p&&n?`rotate-90`:``)}):null]}),_=p&&n?(0,W.jsx)(`div`,{id:m,className:`px-2 pb-3`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[c.length>0?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:o(`scheduleDetail.conversations`)}),(0,W.jsx)(`div`,{className:`space-y-1`,children:c.map(e=>gn(e)?(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),className:`block w-full truncate text-left text-body-small-default text-[var(--content-default)] hover:underline`,children:J(e.title)?e.title:o(`scheduleDetail.conversation`)},e.id):(0,W.jsxs)(`span`,{className:`block truncate text-body-small-default text-[var(--content-tertiary)] italic`,children:[J(e.title)?e.title:o(`scheduleDetail.conversation`),` `,e.exists?o(`scheduleDetail.conversationArchived`):o(`scheduleDetail.conversationUnavailable`)]},e.id))})]}):null,l?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:o(`scheduleDetail.output`)}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,u?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:o(`scheduleDetail.error`)}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null;return f?(0,W.jsx)(`div`,{children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(f),"aria-label":o(`scheduleDetail.openRunConversationAria`,{time:K(e.startedAt)}),className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:g})}):p?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),"aria-label":o(`scheduleDetail.toggleRunDetailsAria`,{time:K(e.startedAt)}),"aria-expanded":n,"aria-controls":m,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:g}),_]}):(0,W.jsx)(`div`,{className:`flex items-center gap-3 px-2 py-3`,children:g})}function vn({runs:e,isLoading:t,disableDirectOpen:n,onOpenConversation:r}){let{t:i}=B(`schedules`),[a,o]=(0,H.useState)(null);return t?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-6`,children:(0,W.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,W.jsx)(`p`,{className:`py-2 text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:i(`scheduleDetail.noRunsYet`)}):(0,W.jsx)(`div`,{className:`-mx-2 divide-y divide-[var(--border-base)]`,children:e.map((e,t)=>(0,W.jsx)(_n,{run:e,index:t,isExpanded:a===e.id,disableDirectOpen:n,onOpenConversation:r,onToggleDetails:e=>o(t=>t===e?null:e)},e.id))})}function yn({schedule:e,assistantId:n,usage:a,isPast:o=!1,onClose:c,onDeleted:l}){let{t:u}=B(`schedules`),d=i(),{data:f,isLoading:p}=s({queryKey:ce({path:{assistant_id:n,id:e.id}}),queryFn:()=>We(n,e.id),staleTime:1e4}),[m,h]=(0,H.useState)(!1),[g,v]=(0,H.useState)(!1),[y,b]=(0,H.useState)(!1),x=tn(e.sourceKey),S=rn(e),w=x!==null&&!e.enabled,T=async()=>{h(!0);try{await Ue(n,e.id)}catch(e){t(e,{context:`schedule_run_now`}),F.error(u(`scheduleDetail.runFailed`))}finally{h(!1)}},E=async()=>{b(!0);try{await He(n,e.id),l()}catch(e){t(e,{context:`schedule_delete`}),F.error(u(`scheduleDetail.deleteFailed`)),b(!1),v(!1)}};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex h-full flex-col bg-[var(--surface-overlay)] md:rounded-[var(--radius-xl)] md:border md:border-[var(--border-base)]`,children:[(0,W.jsx)(Pe,{title:e.name,headerActions:x?void 0:(0,W.jsx)(r,{variant:`dangerOutline`,iconOnly:(0,W.jsx)(D,{}),"aria-label":u(`scheduleDetail.delete`),tooltip:u(`scheduleDetail.delete`),onClick:()=>v(!0)}),closeLabel:u(`scheduleDetail.closeAria`),closeTooltip:u(`scheduleDetail.close`),onClose:c}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[e.description?(0,W.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e.description}):null,(0,W.jsx)(Z,{title:u(`scheduleDetail.details`),children:(0,W.jsxs)(`div`,{className:`space-y-2`,children:[e.cadenceDescription?(0,W.jsx)(Q,{label:u(`scheduleDetail.cadence`),value:e.cadenceDescription}):null,(0,W.jsx)(Q,{label:u(`scheduleDetail.mode`),value:e.mode}),(0,W.jsx)(pn,{schedule:e,assistantId:n,isPast:o}),(0,W.jsx)(Q,{label:u(`scheduleDetail.status`),value:e.enabled?u(`scheduleDetail.enabled`):u(`scheduleDetail.disabled`)}),(0,W.jsx)(Q,{label:u(`scheduleDetail.nextRun`),value:K(e.nextRunAt)}),e.lastRunAt?(0,W.jsx)(Q,{label:u(`scheduleDetail.lastRun`),value:(0,W.jsxs)(`span`,{className:`flex items-center justify-end gap-2`,children:[(0,W.jsx)(Wt,{status:e.lastStatus}),K(e.lastRunAt)]})}):null]})}),(0,W.jsx)(hn,{usage:a}),(0,W.jsx)(Z,{title:u(`scheduleDetail.recentRuns`),children:(0,W.jsx)(vn,{runs:f?.runs,isLoading:p,disableDirectOpen:e.mode===`script`,onOpenConversation:e=>Ee(d,e)})})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t border-[var(--border-hover)] p-[var(--app-spacing-lg)]`,children:[x?(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:S?u(`scheduleDetail.managedByPluginPaused`,{plugin:x,reason:u(S)}):u(`scheduleDetail.managedByPlugin`,{plugin:x})}):(0,W.jsx)(`span`,{}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(r,{variant:`outlined`,leftIcon:(0,W.jsx)(_,{className:`h-3.5 w-3.5`}),onClick:()=>d(V.settings.usageForSchedule(e.id)),children:u(`scheduleDetail.viewUsage`)}),e.mode===`script`?(0,W.jsxs)(W.Fragment,{children:[w?(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:u(`scheduleDetail.turnOnToRun`)}):null,(0,W.jsx)(r,{variant:`primary`,leftIcon:m?(0,W.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):void 0,onClick:()=>void T(),disabled:m||w,children:u(m?`scheduleDetail.running`:`scheduleDetail.runNow`)})]}):null]})]})]}),(0,W.jsx)(I,{open:g,title:u(`scheduleDetail.delete`),message:u(`scheduleDetail.deleteConfirmMessage`,{name:e.name}),confirmLabel:u(`scheduleDetail.confirmDelete`),cancelLabel:u(`scheduleDetail.cancel`),destructive:!0,isPending:y,onConfirm:()=>void E(),onCancel:()=>v(!1)})]})}function bn(e){if(e.status===`loading`)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(R,{as:`span`,className:`h-4 w-12`}),(0,W.jsx)(R,{as:`span`,className:`h-4 w-10`})]});if(e.status===`error`)return(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`—`});let{summary:t}=e;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:q(t.totalEstimatedCostUsd)}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:wt(t.runCount)})]})}function xn({name:e,badge:t,metaParts:n,usage:r,enabled:i,selected:a,onClick:o,onToggle:s,toggleAriaLabel:c}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-2 py-3 transition-colors [&+&]:border-t [&+&]:border-[var(--border-base)] ${a?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`}`,children:[s?(0,W.jsx)(N,{checked:i,onChange:s,"aria-label":c}):null,(0,W.jsxs)(`button`,{type:`button`,onClick:o,className:`flex min-w-0 flex-1 cursor-pointer items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e}),t]}),n.length>0?(0,W.jsx)(`span`,{className:`flex min-w-0 items-center gap-2 text-label-small-default text-[var(--content-tertiary)]`,children:n.map((e,t)=>(0,W.jsxs)(H.Fragment,{children:[t>0?(0,W.jsx)(`span`,{className:`h-[3px] w-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}):null,(0,W.jsx)(`span`,{className:`truncate`,children:e})]},t))}):null]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[bn(r),(0,W.jsx)(y,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})]})}function Sn({schedule:e,usage:t,selected:n,onClick:r,onToggle:i}){let{t:a}=B(`schedules`),o=e.isOneShot?``:e.cadenceDescription.trim(),s=e.lastRunAt??e.nextRunAt,c=rn(e),l=[c?a(c):``,o,s?K(s):``].filter(Boolean),u=tn(e.sourceKey);return(0,W.jsx)(xn,{name:e.name,badge:u?(0,W.jsx)(A,{tone:`info`,children:u}):void 0,metaParts:l,usage:t,enabled:e.enabled,selected:n,onClick:r,onToggle:i,toggleAriaLabel:i?a(`scheduleRow.toggleAria`,{name:e.name}):void 0})}function Cn({recurring:e,oneTime:t,pastOneTime:n,usageForSchedule:i,isLoading:a,isError:o,refetch:s,onToggle:c,onSelectSchedule:l,selectedScheduleId:u,onStartNewChat:d,onCreateSchedule:f,pastOpen:p,onPastOpenChange:m,onRebaseProfiles:h,defaultProfileLabel:_,systemTasksSlot:v}){let{t:b}=B(`schedules`),x=e=>(0,W.jsx)(Sn,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id),onToggle:t=>c(e.id,t)},e.id),S=e=>(0,W.jsx)(Sn,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id)},e.id),C=n.length>0?(0,W.jsx)(k.Root,{type:`single`,collapsible:!0,className:`mt-3`,value:p?`past`:``,onValueChange:e=>m(e===`past`),children:(0,W.jsxs)(k.Item,{value:`past`,children:[(0,W.jsxs)(k.Trigger,{className:`group gap-[var(--app-spacing-xs)] px-2 text-label-small-default text-[var(--content-tertiary)]`,children:[(0,W.jsx)(y,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,W.jsx)(`span`,{children:b(`schedulesPanel.pastToggle`,{count:n.length})})]}),(0,W.jsx)(k.Content,{children:(0,W.jsx)(`div`,{className:`pt-1`,children:n.map(S)})})]})}):null;return(0,W.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[a?(0,W.jsx)(`div`,{className:`space-y-3`,children:Array.from({length:2},(e,t)=>(0,W.jsx)(R,{className:`h-12 rounded-md`},t))}):o&&e.length===0?(0,W.jsx)(O,{tone:`error`,actions:(0,W.jsx)(`button`,{type:`button`,onClick:s,className:`cursor-pointer underline hover:no-underline`,children:b(`schedulesPanel.retry`)}),children:b(`schedulesPanel.loadFailed`)}):e.length===0&&t.length===0&&n.length===0?(0,W.jsx)(Xe,{icon:g,title:b(`schedulesPanel.emptyTitle`),description:b(`schedulesPanel.emptyDescription`),actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(r,{variant:`primary`,size:`regular`,onClick:d,children:b(`schedulesPanel.newConversation`)}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:b(`schedulesPanel.emptyActionsSeparator`)}),(0,W.jsx)(r,{variant:`outlined`,size:`regular`,onClick:f,children:b(`schedulesPanel.createSchedule`)})]})}):(0,W.jsxs)(`div`,{children:[h&&_?(0,W.jsx)(`div`,{className:`mb-1 flex min-w-0 justify-end`,children:(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:h,className:`max-w-full truncate`,children:b(`schedulesPanel.useProfileForAll`,{profile:_})})}):null,e.map(x),t.length>0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`mt-3 px-2 text-label-small-default text-[var(--content-tertiary)]`,children:b(`schedulesPanel.oneTimeHeading`)}),t.map(S)]}):null,C]}),v?(0,W.jsx)(`div`,{className:`mt-[var(--app-spacing-lg)]`,children:v}):null]})}function wn({runs:e,isLoading:t,emptyMessage:n=`No runs yet.`,hasMore:a=!1,isLoadingMore:o=!1,onLoadMore:s}){let c=i(),[l,u]=(0,H.useState)(null),d=a&&s?(0,W.jsx)(`div`,{className:`flex justify-center pt-3`,children:(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:s,disabled:o,leftIcon:o?(0,W.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):void 0,children:o?`Loading…`:`Load more`})}):null;return(0,W.jsx)(Z,{title:`Recent runs`,children:t?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,W.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`py-4 text-center text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:n}),d]}):(0,W.jsxs)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:[e.map((e,t)=>{let n=Ot(e),r=J(e.output),i=J(e.error),a=e.status===`skipped`||e.status===`missed`,o=!n&&!a&&(r||i),s=l===e.id,d=`schedule-run-details-${t}`;return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(m,{label:(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,W.jsx)(Wt,{status:e.status}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`block truncate text-body-medium-lighter text-[var(--content-default)]`,children:J(e.title)?e.title:K(e.startedAt)}),(0,W.jsxs)(`span`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[J(e.title)?`${K(e.startedAt)} · `:``,a?(0,W.jsx)(W.Fragment,{children:r?e.output:e.status===`missed`?`Missed`:`Skipped`}):(0,W.jsxs)(W.Fragment,{children:[St(e.durationMs),` ·`,` `,q(e.estimatedCostUsd)]}),e.status===`error`&&e.error&&(0,W.jsxs)(`span`,{className:`ml-2 text-[var(--system-negative-strong)]`,children:[e.error.slice(0,80),e.error.length>80?`…`:``]})]})]}),n||o?(0,W.jsx)(y,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform ${s?`rotate-90`:``}`}):null]}),onSelect:n?()=>Ee(c,n):o?()=>u(s?null:e.id):void 0,"aria-label":`Run at ${K(e.startedAt)}`,"aria-expanded":o?s:void 0,"aria-controls":o?d:void 0,className:`h-auto py-2.5 gap-3 -mx-2 px-2`}),o&&s?(0,W.jsx)(`div`,{id:d,className:`px-2 pb-3`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[r?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,i?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null]},e.id)}),d]})})}var Tn={heartbeat:`heartbeatAgent`,consolidation:`memoryV2Consolidation`,retrospective:`memoryRetrospective`};function $({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex min-h-6 items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-[var(--content-secondary)]`,children:e}),(0,W.jsx)(`span`,{className:`flex min-w-0 items-center justify-end gap-2 text-right text-[var(--content-default)]`,children:t})]})}function En({kind:e,assistantId:t,systemTasks:n,canOpenMemorySettings:a,onClose:o}){let{t:s}=B(`schedules`),l=i(),{heartbeatConfig:u,consolidationConfig:d,retrospectiveConfig:f}=n,p,m,h,g,_,v,y;e===`heartbeat`?(p=s(`systemTaskDetail.nameHeartbeat`),m=u?Mt(u):``,h=u?.enabled??!1,g=u?.nextRunAt??null,_=u?.lastRunAt??null,v=n.isHeartbeatRunning,y=n.runHeartbeatNow):e===`consolidation`?(p=s(`systemTaskDetail.nameConsolidation`),m=d?Nt(d):``,h=d?.enabled??!1,g=d?.nextRunAt??null,_=d?.lastRunAt??null,v=n.isConsolidationRunning,y=n.runConsolidationNow):(p=s(`systemTaskDetail.nameRetrospective`),m=Pt,h=f?.enabled??!1,g=f?.nextRunAt??null,_=f?.lastRunAt??null,v=!1,y=void 0);let b=e!==`heartbeat`,x=e===`retrospective`,S=b&&!h,T=v||S,D=s(b?h?`systemTaskDetail.statusManagedOn`:`systemTaskDetail.statusPaused`:h?`scheduleDetail.enabled`:`scheduleDetail.disabled`),k=x&&f?.available===!0,A=s(k?`systemTaskDetail.pausedRetrospectiveSwitchedOff`:x?`systemTaskDetail.pausedRetrospective`:`systemTaskDetail.pausedConsolidation`),j=b&&h&&a,M={path:{assistant_id:t},query:{limit:25}},P=e===`heartbeat`?se(M):e===`consolidation`?he(M):ge(M),{data:F,isLoading:I,fetchNextPage:L,hasNextPage:R,isFetchingNextPage:z}=c({queryKey:P.queryKey,queryFn:P.queryFn,initialPageParam:{path:M.path,query:{}},getNextPageParam:e=>e.nextCursor??void 0,staleTime:1e4}),ee=Et(F?.pages.map(t=>({runs:t.runs.filter(e=>!kt(e)).map(t=>Y(t,e))}))),te=ee?.find(e=>At(e)&&e.status!==`running`),ne=_??te?.finishedAt??te?.startedAt??null;return(0,W.jsxs)(`div`,{className:`flex h-full flex-col bg-[var(--surface-overlay)] md:rounded-[var(--radius-xl)] md:border md:border-[var(--border-base)]`,children:[(0,W.jsx)(Pe,{title:p,closeLabel:s(`scheduleDetail.closeAria`),closeTooltip:s(`scheduleDetail.close`),onClose:o}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(Z,{title:s(`scheduleDetail.details`),children:(0,W.jsxs)(`div`,{className:`space-y-2 text-body-medium-lighter`,children:[(0,W.jsx)($,{label:s(`scheduleDetail.status`),value:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`truncate`,children:D}),b?null:(0,W.jsx)(N,{size:`sm`,checked:h,onChange:n.toggleHeartbeat,"aria-label":s(`scheduleDetail.toggleAria`,{name:p})})]})}),(0,W.jsx)(ln,{assistantId:t,defaultCallSite:Tn[e],fallbackLabel:s(`systemTaskDetail.fallbackModelProfile`),respectCallSiteOverride:!0}),m?(0,W.jsx)($,{label:s(`systemTaskDetail.repeats`),value:(0,W.jsx)(`span`,{className:`truncate`,children:m})}):null,x?null:(0,W.jsx)($,{label:s(`scheduleDetail.nextRun`),value:(0,W.jsx)(`span`,{className:`truncate`,children:K(g)})}),(0,W.jsx)($,{label:s(`scheduleDetail.lastRun`),value:(0,W.jsx)(`span`,{className:`truncate`,children:K(ne)})})]})}),S?(0,W.jsx)(O,{tone:`warning`,className:`mt-4`,actions:a?(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:()=>l(`${V.settings.developer}?tab=memory`),children:s(k?`systemTaskDetail.openMemorySettings`:`systemTaskDetail.turnOnMemory`)}):void 0,children:A}):null]}),(0,W.jsx)(wn,{runs:ee,isLoading:I,hasMore:R,isLoadingMore:z,onLoadMore:()=>void L()})]}),j||y?(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center justify-end gap-2 border-t border-[var(--border-hover)] p-[var(--app-spacing-lg)]`,children:[j?(0,W.jsx)(r,{variant:`outlined`,leftIcon:(0,W.jsx)(E,{className:`h-3.5 w-3.5`}),onClick:()=>l(`${V.settings.developer}?tab=memory`),children:s(`systemTaskDetail.memorySettings`)}):null,y?(0,W.jsx)(r,{variant:`primary`,leftIcon:v?(0,W.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):(0,W.jsx)(w,{className:`h-3.5 w-3.5`}),onClick:y,disabled:T,children:s(v?`scheduleDetail.running`:`scheduleDetail.runNow`)}):null]}):null]})}function Dn(e){let n=je(),[r]=(0,H.useState)(()=>Date.now()),{data:i,isLoading:a,isError:o,refetch:c}=s(Fe(e)),{data:l,isLoading:u,isError:d}=s(Rt(e,n,!0)),{recurring:f,oneTime:p,pastOneTime:m}=(0,H.useMemo)(()=>{let e=Lt(i??[],r);return{recurring:e.recurring,oneTime:e.upcomingOneTime,pastOneTime:e.pastOneTime}},[r,i]),h=(0,H.useMemo)(()=>new Map((l??[]).map(e=>[e.scheduleId,e])),[l]);return{recurring:f,oneTime:p,pastOneTime:m,usageForSchedule:(0,H.useCallback)(e=>u?{status:`loading`}:d?{status:`error`}:{status:`ready`,summary:h.get(e)??zt(e)},[d,u,h]),handleToggle:(0,H.useCallback)(async(n,r)=>{if(e)try{await Ge(e,n,r),c()}catch(e){t(e,{context:`schedule_toggle`}),F.error(z(`schedules:scheduleDetail.toggleFailed`))}},[e,c]),isLoading:a,isError:o,refetch:(0,H.useCallback)(()=>{c()},[c])}}function On(){let e=i(),{scheduleId:t}=a(),n=Ne(),r=Oe(),o=je(),s=Dn(n),c=en(n,o),l=Me(`memoryOptOut`),u=Ae.use.settingsDeveloperNav(),d=l&&u===!0,[f,p]=(0,H.useState)(!1),m=t??null,[h,g]=(0,H.useState)(null),[_,v]=(0,H.useState)(!1),y=(0,H.useCallback)(t=>{e(t?V.schedules.detail(t):V.schedules.root)},[e]),b=m?s.recurring.find(e=>e.id===m)??s.oneTime.find(e=>e.id===m)??s.pastOneTime.find(e=>e.id===m)??null:null;(0,H.useEffect)(()=>{m&&!s.isLoading&&!s.isError&&!b&&y(null)},[m,b,s.isLoading,s.isError,y]);let x=h===`heartbeat`?c.heartbeatConfig!=null:h===`consolidation`?c.consolidationConfig?.available===!0:h===`retrospective`?c.retrospectiveConfig?.available===!0:!1;(0,H.useEffect)(()=>{h&&!c.isLoading&&!x&&g(null)},[h,x,c.isLoading]);let S=(0,H.useCallback)(e=>{g(null),y(e)},[y]),C=(0,H.useCallback)(e=>{m&&y(null),g(e)},[y,m]),w=(0,H.useCallback)(()=>{De(e)},[e]),T=Ht(n,(0,H.useMemo)(()=>[...s.recurring,...s.oneTime,...s.pastOneTime],[s.recurring,s.oneTime,s.pastOneTime]),s.refetch),E=(b?(0,W.jsx)(yn,{schedule:b,assistantId:n,usage:s.usageForSchedule(b.id),isPast:s.pastOneTime.some(e=>e.id===b.id),onClose:()=>y(null),onDeleted:()=>{y(null),s.refetch()}}):null)??(h&&x?(0,W.jsx)(En,{kind:h,assistantId:n,systemTasks:c,canOpenMemorySettings:d,onClose:()=>g(null)}):null),D=(0,W.jsx)(Cn,{recurring:s.recurring,oneTime:s.oneTime,pastOneTime:s.pastOneTime,usageForSchedule:s.usageForSchedule,isLoading:s.isLoading,isError:s.isError,refetch:s.refetch,onToggle:s.handleToggle,onSelectSchedule:S,selectedScheduleId:m,onStartNewChat:w,onCreateSchedule:()=>p(!0),pastOpen:_,onPastOpenChange:v,onRebaseProfiles:T.canRebase?T.requestRebase:void 0,defaultProfileLabel:T.defaultProfileLabel??void 0,systemTasksSlot:(0,W.jsx)(qt,{heartbeatConfig:c.heartbeatConfig,consolidationConfig:c.consolidationConfig,retrospectiveConfig:c.retrospectiveConfig,heartbeatUsage:c.heartbeatUsage,consolidationUsage:c.consolidationUsage,retrospectiveUsage:c.retrospectiveUsage,isLoading:c.isLoading,hasError:c.hasError,onRetry:c.refetchAll,onSelectHeartbeat:()=>C(`heartbeat`),onSelectConsolidation:()=>C(`consolidation`),onSelectRetrospective:()=>C(`retrospective`)})}),O=(0,W.jsx)(Ut,{...T.dialogProps});return E&&r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Le,{children:E}),O]}):(0,W.jsxs)(W.Fragment,{children:[E&&!r?(0,W.jsx)(Re,{storageKey:`schedulesDetailDrawerWidth`,detailKey:m??h??void 0,section:D,detail:E}):D,(0,W.jsx)(pt,{isOpen:f,assistantId:n,onClose:()=>p(!1),onCreated:()=>{p(!1),s.refetch()}}),O]})}export{On as SchedulesPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./queryOptions-DbnOXI51.js";import{a as t,i as n,n as r,t as i}from"./api-errors-CASENJGT.js";import{$ as a,ct as o,rt as s}from"./sdk.gen-CiE6cMi0.js";import{A as c,I as l,j as u,k as d}from"./react-query.gen-Bbh5MII3.js";import{t as f}from"./client-perf-
|
|
1
|
+
import{t as e}from"./queryOptions-DbnOXI51.js";import{a as t,i as n,n as r,t as i}from"./api-errors-CASENJGT.js";import{$ as a,ct as o,rt as s}from"./sdk.gen-CiE6cMi0.js";import{A as c,I as l,j as u,k as d}from"./react-query.gen-Bbh5MII3.js";import{t as f}from"./client-perf-BZu5XQCP.js";import{a as p}from"./diagnostics-CwFqcLv_.js";function m(e){return!!e&&!e.startsWith(`system:`)}function h(e){return e.isPinned===!0||e.groupId===`system:pinned`}function g(e){return e.surfacedAt==null?e.conversationType===`background`||e.conversationType===`scheduled`||e.groupId===`system:background`||e.groupId===`system:scheduled`:!1}function _(e){return e.conversationType===`scheduled`||e.groupId===`system:scheduled`}function ee(e){return!e.hasUnseenLatestAssistantMessage&&!g(e)&&e.conversationId!=null&&e.latestAssistantMessageAt!=null}function te(e){return e.hasUnseenLatestAssistantMessage===!0&&!g(e)&&e.conversationId!=null}function v(e){return e.hasUnseenLatestAssistantMessage===!0&&!g(e)&&e.archivedAt==null}function y(e){return e.reduce((e,t)=>v(t)?e+1:e,0)}function b(e){let t=e.headers.get(`content-length`);if(t===null||t.trim()===``)return null;let n=Number(t);return Number.isFinite(n)?n:null}var x={},S={conversationType:`background`},C={conversationType:`scheduled`},w={archiveStatus:`archived`},T={archiveStatus:`archived`,conversationType:`background`},ne=d({path:{assistant_id:``}})[0]._id;function re(e,t={}){return d({path:{assistant_id:e??``},query:t})}function E(e){return d({path:{assistant_id:e??``}})}function D(e){let t=e[0];if(typeof t!=`object`||!t||t._id!==ne)return;let n=t.query;if(!(typeof n!=`object`||!n))return n}function O(e,t){return{queryKey:E(e),predicate:e=>{let n=D(e.queryKey);return n!==void 0&&t(n)}}}function k(e){return e.groupId!==void 0||e.originChannel!==void 0}function A(e){return e.archiveStatus===`archived`}function j(e){return e.conversationType===void 0&&(e.archiveStatus===void 0||e.archiveStatus===`active`)&&e.originChannel===void 0&&e.groupId===void 0&&e.needsAttention===void 0}function M(e){return(t,n)=>(n[e]??0)-(t[e]??0)}var N=M(`lastMessageAt`);function P(e,t){let n=e.findIndex(e=>N(t,e)<=0),r=n===-1?e.length:n;return[...e.slice(0,r),t,...e.slice(r)]}function ie(e,t){let{conversations:n,hasMore:r}=e,i=n[n.length-1];return r&&i!==void 0&&N(t,i)>0?e:{conversations:P(n,t),hasMore:r}}function ae(e,t,{pinnedInjected:n}){if(!t.hasMore)return t;let r=n?t.conversations.filter(e=>e.isPinned!==!0):t.conversations;if(r.length===0)return e;let i=Math.min(...r.map(e=>e.lastMessageAt??0)),a=new Set(t.conversations.map(e=>e.conversationId)),o=e.conversations.filter(e=>!a.has(e.conversationId)&&(e.draft===!0||(e.lastMessageAt??0)<i));return{conversations:[...t.conversations,...o],hasMore:t.hasMore}}function F(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function I(e){return typeof e==`string`?e:void 0}function L(e){if(e)return{sourceChannel:e.sourceChannel,externalChatId:e.externalChatId,externalThreadId:e.externalThreadId,externalChatName:e.externalChatName,externalUserId:I(e.externalUserId),displayName:I(e.displayName),username:I(e.username),slackChannel:e.slackChannel?{channelId:e.slackChannel.channelId,name:e.slackChannel.name,link:e.slackChannel.link?.webUrl?{webUrl:e.slackChannel.link.webUrl}:void 0}:void 0,slackThread:e.slackThread?{channelId:e.slackThread.channelId,threadTs:e.slackThread.threadTs,link:e.slackThread.link?.appUrl||e.slackThread.link?.webUrl?{appUrl:e.slackThread.link.appUrl,webUrl:e.slackThread.link.webUrl}:void 0}:void 0}}function R(e){let t=e.assistantAttention,n=e.channelBinding?.sourceChannel??I(e.conversationOriginChannel);return{conversationId:e.id,title:e.title,createdAt:F(e.createdAt),lastMessageAt:F(e.lastMessageAt??e.updatedAt),hasUnseenLatestAssistantMessage:t?.hasUnseenLatestAssistantMessage,latestAssistantMessageAt:F(t?.latestAssistantMessageAt),lastSeenAssistantMessageAt:F(t?.lastSeenAssistantMessageAt),archivedAt:e.archivedAt,surfacedAt:F(e.surfacedAt),groupId:I(e.groupId),source:e.source,isPinned:e.isPinned,conversationType:e.conversationType,scheduleJobId:e.scheduleJobId,displayOrder:F(e.displayOrder),channelBinding:L(e.channelBinding),originChannel:n,isProcessing:e.isProcessing,historyOrphaned:e.historyOrphaned}}function z(e){return R(e)}function B(e){return u({path:{assistant_id:e??``}})}var V=200,H=[`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`,`discord`];function U(e){return A(e)?`archived`:e.conversationType===void 0?e.originChannel===void 0?e.groupId===void 0?`foreground`:`section`:`origin_channel`:e.conversationType}function W(e,t){return k(e)?t:[...e.conversationType===`background`&&!A(e)?t.filter(e=>!_(e)):t].sort(M(A(e)?`archivedAt`:`lastMessageAt`))}function G(e,t,n,r){p(`conversation_list_page_fetch`,{assistantId:e,offset:0,status:t.status,count:t.conversations.length,hasMore:t.hasMore,durationMs:t.durationMs,bytes:t.bytes,listKind:n,source:r})}async function K(e,t,o,s={}){let c=performance.now(),{data:l,error:u,response:d}=await a({path:{assistant_id:e},query:{...s,limit:50,offset:t},throwOnError:!1});r(d,u,`Failed to list conversations.`);let f=Math.round(performance.now()-c);if(!d.ok){p(`conversation_list_page_fetch_error`,{assistantId:e,offset:t,status:d.status,durationMs:f,bytes:b(d),listKind:U(s),source:o});let r=n(u,d,`Failed to list conversations.`);throw new i(d.status,r)}return{conversations:(l?.conversations??[]).map(R),hasMore:l?.hasMore??!1,status:d.status,durationMs:f,bytes:b(d)}}async function q(e,t={}){let n=[],r=new Set,i=performance.now(),a=0,o=0,s=null,c=r=>{let c=Math.round(performance.now()-i);p(`conversation_list_drain`,{assistantId:e,outcome:r,pages:a,rows:n.length,totalMs:c,maxPageMs:o,totalBytes:s,listKind:U(t)}),f(`client_list.drain`,c,{outcome:r,pages:a,rows:n.length,max_page_ms:o,total_bytes:s,list_kind:U(t)})};try{for(let i=0;i<V;i++){let c=await K(e,i*50,`drain`,t);a++,o=Math.max(o,c.durationMs),c.bytes!==null&&(s=(s??0)+c.bytes),i===0&&G(e,c,U(t),`drain`);for(let e of c.conversations)r.has(e.conversationId)||(r.add(e.conversationId),n.push(e));if(!c.hasMore||c.conversations.length===0)break}}catch(e){throw c(`error`),e}return c(`ok`),W(t,n)}async function J(e){let{conversations:t}=await K(e,0,`existence_probe`);return t.length>0}var oe=`system:pinned`,se=`system:all`,ce=`vellum`;async function le(e,n){let{data:i,error:a,response:s}=await o({path:{assistant_id:e},throwOnError:!1,signal:n});if(r(s,a,`Failed to fetch unread conversation count.`),!s.ok){if(s.status===404)return null;throw t(a,s)}return i?.count??null}function Y(e){return c({path:{assistant_id:e??``}})}async function ue(e,n){let{data:i,error:a,response:o}=await s({path:{assistant_id:e},throwOnError:!1,signal:n});if(r(o,a,`Failed to fetch sidebar sections.`),!o.ok){if(o.status===404)return null;throw t(a,o)}return i?.sections??null}async function de(e,t={},n=`first_page_refresh`){let r=await K(e,0,n,t);return G(e,r,U(t),n),{conversations:W(t,r.conversations),hasMore:r.hasMore}}async function fe(e,t,n){let r=await K(e,n,`load_more`,t);return{conversations:r.conversations,hasMore:r.hasMore}}var X=3e4;function pe(t){return e({queryKey:B(t),queryFn:({signal:e})=>le(t,e),staleTime:X,refetchOnWindowFocus:!1})}function Z(t){return e({queryKey:Y(t),queryFn:({signal:e})=>ue(t,e),staleTime:X,refetchOnWindowFocus:!1})}var me=[`groupId`,`isPinned`,`archivedAt`,`surfacedAt`,`conversationType`,`originChannel`];function he(e){return me.some(t=>t in e)}function Q(e){return e.archivedAt!=null||e.conversationType===`private`?!1:e.conversationType!==`background`&&e.conversationType!==`scheduled`&&e.groupId!==`system:background`&&e.groupId!==`system:scheduled`?!0:e.source===`subagent`?!1:e.surfacedAt!=null||m(e.groupId)}function ge(e,t){if(!Q(e))return!1;let{groupId:n,originChannel:r}=t;if(n===`system:pinned`){if(!h(e))return!1}else if(n===`system:all`){if(h(e)||m(e.groupId))return!1}else if(n!==void 0&&e.groupId!==n)return!1;return r===void 0?!0:r===`vellum`?e.originChannel==null||e.originChannel===`vellum`:e.originChannel===r}function $(e,t){if(h(e))return t.kind===`pinned`;if(m(e.groupId))return t.kind===`group`&&t.groupId===e.groupId;let n=e.originChannel;return n==null||n===`vellum`?t.kind===`chats`:t.kind===`channel`&&t.channelId===n}function _e(e,t,n){if(!t)return;let r=Y(t),i=e.getQueryData(r);if(i==null||i.some(e=>$(n,e)))return;if(h(n)){e.setQueryData(r,[{kind:`pinned`,total:1,unread:0},...i]);return}let a=n.groupId;if(m(a)){let n=(e.getQueryData(l({path:{assistant_id:t}}))?.groups)?.find(e=>e.id===a);if(!n)return;e.setQueryData(r,[...i,{kind:`group`,groupId:a,name:n.name,icon:n.icon??null,sortPosition:n.sortPosition??0,total:1,unread:0}]);return}let o=n.originChannel;o==null||o===`vellum`||e.setQueryData(r,[...i,{kind:`channel`,channelId:o,total:1,unread:0}])}function ve(e,t,n){if(!t)return[];let r=[],i=e.getQueriesData({queryKey:E(t)});for(let[t,a]of i){let i=D(t);if(!i||!k(i))continue;if(!a){r.push(t);continue}let o=a.conversations,s=o.findIndex(e=>e.conversationId===n.conversationId),c=ge(n,i);if(c===(s!==-1)){if(c&&o[s]!==n){let r=[...o];r[s]=n,e.setQueryData(t,{conversations:r,hasMore:a.hasMore})}continue}if(c){let r=ie(a,n);if(r===a)continue;e.setQueryData(t,r)}else e.setQueryData(t,{conversations:o.filter(e=>e.conversationId!==n.conversationId),hasMore:a.hasMore});r.push(t)}return r}export{O as A,g as B,T as C,C as D,x as E,b as F,m as H,te as I,ee as L,A as M,j as N,D as O,k as P,v as R,ae as S,S as T,_ as U,h as V,B as _,ve as a,N as b,se as c,J as d,de as f,pe as g,Y as h,he as i,re as j,E as k,oe as l,Z as m,Q as n,ce as o,fe as p,$ as r,H as s,_e as t,q as u,z as v,w,P as x,M as y,y as z};
|
package/dist/assets/{select-assistant-screen-Bpp_Fhfx.js → select-assistant-screen-BZxPQqe4.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{d as r,h as i}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as a}from"./jsx-runtime-BJ8jcmzB.js";import{t as o}from"./check-pgeLaeXx.js";import{t as s}from"./menu-ubIBmfUh.js";import{t as c}from"./cloud-dqL-JBKK.js";import{t as l}from"./ellipsis-vertical-CJX4FZlb.js";import{t as u}from"./globe-COrlg99x.js";import{t as d}from"./laptop-DoAUvmjX.js";import{t as f}from"./link-2-BBS4SmE3.js";import{t as p}from"./plus-CWkbiq1y.js";import{t as m}from"./notice-BlYF-xU3.js";import{n as ee,t as te}from"./input-DkgpMeG9.js";import{t as h}from"./modal-UYNawsIu.js";import{t as g}from"./confirm-dialog-Drw1adml.js";import{H as _,S as v,W as y,X as b,dt as x,g as ne,h as re,k as ie,nt as ae,q as oe,t as se,v as ce}from"./local-mode-BNr2MrWI.js";import{t as le}from"./is-electron-wgAC5Mzb.js";import{n as ue,r as de}from"./resolved-assistants-store-BNadgXqb.js";import"./i18n--HmJLuhM.js";import{t as fe}from"./Trans-BUsRawhS.js";import{t as S}from"./useTranslation-DdVCKPgw.js";import{X as pe,i as me,n as he,tt as ge}from"./auth-store-DDMY1UvK.js";import{c as C}from"./remote-gateway-session-CzPLaXuT.js";import{t as _e}from"./client-feature-flag-store-CT2T_Fg7.js";import{d as w}from"./routes-B7wRw3UT.js";import{h as ve,l as T}from"./platform-detection-Dt0-jSAU.js";import{i as E,n as ye,t as be}from"./remove-from-device-dialog-BDRSkSad.js";import{t as xe}from"./use-onboarding-login-BosEuDpc.js";import{n as Se,t as D}from"./retire-confirm-dialog-DPyqO3ao.js";import{t as Ce}from"./onboarding-layout-GTzgLPSo.js";import{i as we}from"./format-date-B_oQDqU9.js";import{t as Te}from"./index-CflMsKlP.js";import{t as Ee}from"./radio-card-nav-D_-kt3tm.js";import{a as O,i as De,n as Oe,o as k,t as ke}from"./self-hosted-servers-DYKQjALI.js";var A=e(t(),1);async function Ae(e){let t=()=>window.location.assign(`${e.url}${w.assistant}`);if(!T()){t();return}await Oe(e.url)||t()}function je(e){return O(v()?C():window.location.origin)===e.url}var j=a(),Me=`Failed to add the assistant. Please try again.`;function Ne(e){for(let t of[`/assistant/pair`,`/assistant`])if(e.endsWith(t))return e.slice(0,-t.length);return e}function Pe({open:e,onClose:t,onAdded:r}){let{t:i}=S(`onboarding`),[a,o]=(0,A.useState)(``),[s,c]=(0,A.useState)(!1),[l,d]=(0,A.useState)(null);(0,A.useEffect)(()=>{e&&(o(``),c(!1),d(null))},[e]);let f=()=>{s||t()},p=async()=>{if(!a.trim()||s)return;let e=O(a),t=e===null?null:O(Ne(e));if(t===null){d(`Enter the full https address, like https://example.com/assistant-1.`);return}c(!0),d(null);try{let e=await k.getState().addOrigin({url:t});if(e.ok){r(e.origin);return}d(Me)}catch(e){console.error(`addRemoteOriginDialog.add failed`,e),d(Me)}c(!1)};return(0,j.jsx)(h.Root,{open:e,onOpenChange:e=>{e||f()},children:(0,j.jsxs)(h.Content,{size:`md`,children:[(0,j.jsxs)(h.Header,{icon:u,children:[(0,j.jsx)(h.Title,{children:i(`addRemoteOriginDialog.title`)}),(0,j.jsx)(h.Description,{children:i(`addRemoteOriginDialog.body`)})]}),(0,j.jsx)(h.Body,{children:(0,j.jsxs)(`div`,{className:`space-y-4`,children:[(0,j.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,j.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`add-remote-origin-url`,children:i(`addRemoteOriginDialog.addressLabel`)}),(0,j.jsx)(te,{id:`add-remote-origin-url`,type:`url`,value:a,onChange:e=>o(e.target.value),placeholder:`https://example.com/assistant-1`,fullWidth:!0,autoFocus:!0})]}),l&&(0,j.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:l})]})}),(0,j.jsxs)(h.Footer,{children:[(0,j.jsx)(n,{variant:`ghost`,onClick:f,disabled:s,children:i(`actions.cancel`)}),(0,j.jsx)(n,{variant:`primary`,onClick:()=>void p(),disabled:!a.trim()||s,children:i(s?`actions.adding`:`actions.add`)})]})]})})}function Fe({open:e,initialBundle:t,guidanceMessage:r,onClose:i,onImported:a}){let{t:o}=S(`onboarding`),[s,c]=(0,A.useState)(``),[l,u]=(0,A.useState)(``),[d,p]=(0,A.useState)(!1),[g,_]=(0,A.useState)(null),[v,y]=(0,A.useState)(null);(0,A.useEffect)(()=>{e&&(c(t??``),u(``),p(!1),_(null),y(null))},[e,t]);let b=()=>{d||i()},x=async()=>{let e=s.trim();if(!(!e||d)){p(!0),_(null);try{let t=await re(e,l.trim()||void 0);if(!t.ok)_(t.error);else if(t.accessOnly)y(t.assistantId);else{a(t.assistantId);return}}catch(e){console.error(`connectAssistantDialog.import failed`,e),_(`Failed to import the pairing bundle. Please try again.`)}p(!1)}};return v==null?(0,j.jsx)(h.Root,{open:e,onOpenChange:e=>{e||b()},children:(0,j.jsxs)(h.Content,{size:`md`,children:[(0,j.jsxs)(h.Header,{icon:f,children:[(0,j.jsx)(h.Title,{children:o(`connectAssistantDialog.title`)}),(0,j.jsx)(h.Description,{children:(0,j.jsx)(fe,{i18nKey:`connectAssistantDialog.instruction`,ns:`onboarding`,components:{code:(0,j.jsx)(`code`,{})}})})]}),(0,j.jsx)(h.Body,{children:(0,j.jsxs)(`div`,{className:`space-y-4`,children:[r&&(0,j.jsx)(m,{tone:`info`,children:r}),(0,j.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,j.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`connect-assistant-bundle`,children:o(`connectAssistantDialog.bundleLabel`)}),(0,j.jsx)(ee,{id:`connect-assistant-bundle`,value:s,onChange:e=>c(e.target.value),placeholder:`eyJnYXRld2F5...`,rows:4,fullWidth:!0,autoFocus:!0})]}),(0,j.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,j.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`connect-assistant-name`,children:o(`connectAssistantDialog.nameLabel`)}),(0,j.jsx)(te,{id:`connect-assistant-name`,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:`office-mac`,fullWidth:!0})]}),g&&(0,j.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:g})]})}),(0,j.jsxs)(h.Footer,{children:[(0,j.jsx)(n,{variant:`ghost`,onClick:b,disabled:d,children:o(`actions.cancel`)}),(0,j.jsx)(n,{variant:`primary`,onClick:()=>void x(),disabled:!s.trim()||d,children:o(d?`actions.connecting`:`actions.connect`)})]})]})}):(0,j.jsx)(h.Root,{open:e,onOpenChange:e=>{e||b()},children:(0,j.jsxs)(h.Content,{size:`sm`,children:[(0,j.jsx)(h.Header,{icon:f,children:(0,j.jsx)(h.Title,{children:o(`connectAssistantDialog.importedTitle`)})}),(0,j.jsx)(h.Body,{children:(0,j.jsx)(m,{tone:`warning`,children:o(`connectAssistantDialog.importedBody`)})}),(0,j.jsx)(h.Footer,{children:(0,j.jsx)(n,{variant:`primary`,onClick:()=>a(v),children:o(`actions.continue`)})})]})})}function Ie({open:e,assistantName:t,isPending:r,errorMessage:i,onCancel:a,onRepair:o,onRetire:s}){let{t:c}=S(`onboarding`),[l,u]=(0,A.useState)(`menu`);(0,A.useEffect)(()=>{e&&u(`menu`)},[e]);let d=i?(0,j.jsx)(`span`,{className:`mt-3 block text-body-small-default text-[var(--system-negative-strong)]`,children:i}):null;return l===`confirm-repair`?(0,j.jsx)(g,{open:e,title:c(`connectRecoveryDialog.repairTitle`),message:(0,j.jsxs)(j.Fragment,{children:[c(`connectRecoveryDialog.repairBody`),d]}),confirmLabel:c(`connectRecoveryDialog.repairConfirm`),isPending:r,onConfirm:o,onCancel:()=>u(`menu`)}):l===`confirm-retire`?(0,j.jsx)(D,{open:e,isPending:r,extraMessage:d,onConfirm:s,onCancel:()=>u(`menu`)}):(0,j.jsx)(h.Root,{open:e,onOpenChange:e=>{!e&&!r&&a()},children:(0,j.jsxs)(h.Content,{size:`sm`,hideCloseButton:!0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),r||a()},children:[(0,j.jsx)(h.Header,{children:(0,j.jsx)(h.Title,{children:c(`connectRecoveryDialog.authFailedTitle`)})}),(0,j.jsxs)(h.Body,{children:[(0,j.jsx)(h.Description,{children:c(`connectRecoveryDialog.authFailedBody`,{name:t})}),d,(0,j.jsxs)(`div`,{className:`mt-5 flex w-full flex-col gap-2`,children:[(0,j.jsx)(n,{variant:`primary`,fullWidth:!0,disabled:r,onClick:()=>u(`confirm-repair`),children:c(`connectRecoveryDialog.wakeAndRepair`)}),(0,j.jsx)(n,{variant:`dangerOutline`,fullWidth:!0,disabled:r,onClick:()=>u(`confirm-retire`),children:c(`connectRecoveryDialog.retire`)}),(0,j.jsx)(n,{variant:`outlined`,fullWidth:!0,disabled:r,onClick:a,children:c(`actions.cancel`)})]})]})]})})}function Le(e){return e.name?e.name:e.isPaired?`Paired Assistant`:e.isLocal&&e.cloud===`local`?e.id:e.isLocal?`Local Assistant`:`Cloud Assistant`}function M(e,t){if(e)try{return t(`selectAssistantScreen.selfHostedWithHost`,{host:new URL(e).hostname})}catch{}return t(`selectAssistantScreen.selfHosted`)}function Re(e,t){let n=e.isPaired?x(e.runtimeUrl):e.isLocal?ce()?`On this computer`:M(e.ingressUrl,t):`Cloud-hosted`;return e.hatchedAt?`${n} · Created ${we(e.hatchedAt)}`:n}function N(e){return new URL(e.url).hostname}function ze(e){return e.name??N(e)}function P(e){return`origin:${e.url}`}var F=`origin:vellum-cloud`,Be=[];function Ve(e){let t=new URLSearchParams(e);return t.delete(`register`),t.delete(`name`),t}function I(){let{t:e}=S(`onboarding`),t=r(),[a,o]=i(),s=a.get(`fromLogin`)===`1`,l=a.get(`noAutoSkip`)===`1`,d=le(),m=ce(),ee=me(),te=de.use.assistants(),h=ge.use.currentOrganizationId(),g=_e.use.assistantSwitcher(),v=_e.use.webRemoteIngress(),x=_e.use.hydrated(),re=k.use.origins(),fe=k.use.hydrated(),C=ve(),T=g?re:Be,{loading:D,error:we,login:Me,cancel:Ne}=xe(),[M,Re]=(0,A.useState)(null),N=g&&M!==null?{url:M,name:`Vellum Cloud`}:null,I=N!==null,L=e=>e.isPaired||e.isLocal&&m||ee,R=te.filter(ue),z=R.filter(L),Ke=z.length>0||T.length>0||N!==null,B=_(),qe=!ee&&B,[V,H]=(0,A.useState)(null),[U,Je]=(0,A.useState)(!1),[Ye,Xe]=(0,A.useState)(!1),[Ze,Qe]=(0,A.useState)(null),[W,$e]=(0,A.useState)(null),[et,G]=(0,A.useState)(!1),[tt,K]=(0,A.useState)(null),[q,J]=(0,A.useState)(null),[nt,rt]=(0,A.useState)(!1),[it,Y]=(0,A.useState)(null),[at,ot]=(0,A.useState)(!1),[X,st]=(0,A.useState)(null),[ct,lt]=(0,A.useState)(!1),[ut,dt]=(0,A.useState)(null),ft=E.use.open(),pt=E.use.initialBundle(),mt=E.use.guidanceMessage(),ht=E.use.deepLinkDrainSettled(),Z=(0,A.useRef)(!1);(0,A.useEffect)(()=>{Te()},[]);let gt=!m&&(!x||!g);(0,A.useEffect)(()=>{!m&&x&&!g&&t(w.assistant,{replace:!0})},[m,x,g,t]),(0,A.useEffect)(()=>{g&&(ke(),k.getState().hydrate())},[g]),(0,A.useEffect)(()=>{if(!g||!C)return;let e=!1;return De().then(t=>{e||Re(t)}),()=>{e=!0}},[g,C]);let Q=(0,A.useRef)(!1);(0,A.useEffect)(()=>{if(!g||Q.current)return;Q.current=!0;let e=a.get(`register`);if(e===null)return;let t=()=>o(Ve,{replace:!0}),n=O(e);if(n===null){t();return}k.getState().addOrigin({url:n,name:a.get(`name`)??void 0}).then(e=>{e.ok?t():Q.current=!1}).catch(()=>{Q.current=!1})},[g,a,o]),(0,A.useEffect)(()=>{if(V===F&&I||V!=null&&T.some(e=>P(e)===V))return;if(z.length===0){let e=T[0],t=e?P(e):I?F:null;V!==t&&H(t);return}if(V!=null&&z.some(e=>e.id===V))return;let e=pe(h);H(z.find(t=>t.id===e)?.id??z[0].id)},[V,z,h,T,I]);let $=async e=>{Je(!0),Qe(null);try{e.isPaired?await he.getState().connectPairedAssistant(e.id):e.isLocal&&m?await he.getState().connectLocalAssistant(e.id):await he.getState().connectPlatformAssistant(e.id),t(w.assistant,{replace:!0})}catch(t){console.error(`selectAssistant.handleConnect failed`,t),e.isLocal&&_()&&(y(t)||ae(t)||t instanceof se)&&ne(e.id)?$e(e):e.isPaired&&y(t)?Qe(`This pairing has expired. Run vellum pair on the assistant's machine and import it again with vellum connect import.`):Qe(`Failed to connect. Please try again.`),Je(!1)}},_t=()=>{$e(null),G(!1),K(null),Xe(!1)},vt=async()=>{if(!(!W||et)){G(!0),K(null);try{let e=await oe(W.id,{repairGuardian:!0});if(e.ok){b(),_t(),$(W);return}K(e.error||`Repair failed. Please try again.`)}catch(e){console.error(`selectAssistant.recoveryRepair failed`,e),K(`Repair failed. Please try again.`)}G(!1)}},yt=async()=>{if(!(!W||et)){G(!0),K(null);try{let e=await Se(W.id);if(e.ok){_t(),t(e.nextRoute,{replace:!0});return}K(e.error)}catch(e){console.error(`selectAssistant.recoveryRetire failed`,e),K(`Failed to retire assistant. Please try again.`)}G(!1)}},bt=()=>{nt||(J(null),Y(null))},xt=async()=>{if(!(!q||nt)){if(rt(!0),Y(null),q.isPaired){let e=await ye(q.id);e.ok?(Z.current=!0,J(null)):Y(e.error),rt(!1);return}try{let e=await ie(q.id);if(e.ok){let e=de.getState();e.activeAssistantId===q.id&&e.setActiveAssistantId(null),Z.current=!0,J(null)}else Y(e.error??`Failed to remove. Please try again.`)}catch(e){console.error(`selectAssistant.removeFromDevice failed`,e),Y(`Failed to remove. Please try again.`)}rt(!1)}},St=()=>{ct||(st(null),dt(null))},Ct=async()=>{!X||ct||(lt(!0),dt(null),await k.getState().removeOrigin(X.url),k.getState().origins.some(e=>e.url===X.url)?dt(`Failed to remove. Please try again.`):(Z.current=!0,st(null)),lt(!1))},wt=e=>{E.getState().closeConnectDialog(),$(de.getState().assistants.find(t=>t.id===e)??{id:e,isLocal:!1,isPlatformHosted:!1,isPaired:!0})},Tt=e=>{ot(!1),Ae(e)};(0,A.useEffect)(()=>{s||l||Z.current||m&&x&&(g&&!fe||T.length>0||d&&!ht||U||Ye||ft||R.length!==0&&R.length===1&&z.length===1&&(Xe(!0),$(z[0])))},[R.length,z.length,ht,m,T.length,g,x,fe]);let Et=()=>{if(V===F){Oe(null).then(e=>{!e&&M!==null&&window.location.assign(M)});return}let e=T.find(e=>P(e)===V);if(e){je(e)?t(w.assistant,{replace:!0}):Ae(e);return}let n=R.find(e=>e.id===V);n&&$(n)},Dt=()=>{t(m?w.welcome:w.assistant)},Ot=we??Ze;return gt||Ye&&!Ot&&!W?(0,j.jsx)(He,{}):(0,j.jsxs)(Ce,{showAvatarWave:!0,children:[(0,j.jsx)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${d?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`min-h-screen px-6 pb-40 pt-6 md:min-h-full md:pb-6`} text-[var(--content-default)]`,children:(0,j.jsxs)(`div`,{className:`flex w-full flex-col items-center ${d?``:`flex-1 justify-center`}`,children:[(0,j.jsx)(`h1`,{className:`text-center text-5xl font-normal tracking-tight md:text-4xl lg:text-5xl`,style:{fontFamily:`var(--font-serif)`,animation:`fadeInUp 0.5s ease-out 0.1s both`},children:e(`selectAssistantScreen.title`)}),Ot&&(0,j.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:Ot}),(0,j.jsxs)(`div`,{role:`radiogroup`,"aria-label":e(`selectAssistantScreen.listAriaLabel`),onKeyDown:Ee,className:`flex w-full flex-col ${d?`mt-8 gap-2`:`mt-10 gap-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:[R.map(t=>{let n=L(t);return(0,j.jsx)(We,{assistant:t,selected:V===t.id,locked:!n,tabStop:V==null?z[0]?.id===t.id:V===t.id,onSelect:()=>{n&&H(t.id)},loginLabel:e(D?`actions.cancel`:`actions.loginToUse`),loginDisabled:U,onLogin:!n&&(t.isPlatformHosted||t.isLocal)?D?Ne:()=>void Me():void 0,onRemove:t.isPlatformHosted&&qe||t.isPaired&&B?()=>J(t):void 0},t.id)}),T.map((e,t)=>{let n=P(e),r=je(e);return(0,j.jsx)(Ge,{origin:e,selected:V===n,current:r,tabStop:V==null?z.length===0&&t===0:V===n,onSelect:()=>H(n),onRemove:r&&C?void 0:()=>st(e)},e.url)}),N&&(0,j.jsx)(Ge,{origin:N,icon:(0,j.jsx)(c,{className:`h-5 w-5`}),selected:V===F,current:!1,tabStop:V==null?z.length===0&&T.length===0:V===F,onSelect:()=>H(F)}),m&&(0,j.jsx)(Ue,{icon:(0,j.jsx)(p,{className:`h-4 w-4`}),label:e(`selectAssistantScreen.createNew`),disabled:U||D,onClick:()=>void t(`${w.onboarding.hosting}?from=select-assistant`)}),B&&(0,j.jsx)(Ue,{icon:(0,j.jsx)(f,{className:`h-4 w-4`}),label:e(`selectAssistantScreen.connectRemote`),disabled:U||D,onClick:()=>E.getState().openConnectDialog()}),g&&v&&!B&&(0,j.jsx)(Ue,{icon:(0,j.jsx)(u,{className:`h-4 w-4`}),label:e(`selectAssistantScreen.addRemote`),disabled:U||D,onClick:()=>ot(!0)})]}),Ke&&(0,j.jsx)(`div`,{className:`mt-8 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:(0,j.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,className:d?void 0:`h-11 text-base`,onClick:Et,disabled:!V||U,children:e(U?`actions.connecting`:`actions.continue`)})}),(0,j.jsx)(`div`,{className:Ke?`mt-3`:`mt-8`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:(0,j.jsx)(n,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,onClick:Dt,disabled:U||D,children:e(`actions.back`)})})]})}),(0,j.jsx)(Pe,{open:at,onClose:()=>ot(!1),onAdded:Tt}),(0,j.jsx)(Fe,{open:ft,initialBundle:pt??void 0,guidanceMessage:mt??void 0,onClose:()=>E.getState().closeConnectDialog(),onImported:wt}),(0,j.jsx)(Ie,{open:W!=null,assistantName:W?Le(W):``,isPending:et,errorMessage:tt??void 0,onCancel:_t,onRepair:()=>void vt(),onRetire:()=>void yt()}),(0,j.jsx)(be,{open:q!=null,kind:q?.isPaired?`paired`:`platform`,assistantName:q?Le(q):e(`selectAssistantScreen.unnamedAssistant`),errorMessage:it??void 0,isPending:nt,onConfirm:()=>void xt(),onCancel:bt}),(0,j.jsx)(be,{open:X!=null,kind:`origin`,assistantName:X?ze(X):e(`selectAssistantScreen.unnamedAssistant`),errorMessage:ut??void 0,isPending:ct,onConfirm:()=>void Ct(),onCancel:St})]})}function He(){let{t:e}=S(`onboarding`);return(0,j.jsx)(Ce,{showAvatarWave:!0,children:(0,j.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center justify-center px-6 text-[var(--content-default)]`,children:(0,j.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:e(`selectAssistantScreen.connectingToAssistant`)})})})}function Ue({icon:e,label:t,disabled:n,onClick:r}){let i=le();return(0,j.jsxs)(`button`,{type:`button`,onClick:r,disabled:n,className:[`group flex w-full items-center justify-center gap-2 border border-dashed border-[var(--border-element)]/50 text-[var(--content-tertiary)]`,i?`rounded-lg px-3 py-2.5`:`rounded-xl px-5 py-3`,`cursor-pointer transition-all duration-200 ease-out`,`hover:border-[var(--border-element)] hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,`disabled:cursor-not-allowed disabled:opacity-50`].join(` `),children:[e,(0,j.jsx)(`span`,{className:i?`text-body-small-default`:`text-body-medium-default`,children:t})]})}function L({label:e,onRemove:t}){let{t:r}=S(`onboarding`);return(0,j.jsxs)(s.Root,{children:[(0,j.jsx)(s.Trigger,{asChild:!0,children:(0,j.jsx)(n,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,iconOnly:(0,j.jsx)(l,{}),"aria-label":r(`selectAssistantScreen.rowActionsAriaLabel`,{name:e})})}),(0,j.jsx)(s.Content,{align:`end`,sideOffset:4,children:(0,j.jsx)(s.Item,{onSelect:t,className:`text-[var(--system-negative-strong)] data-[highlighted]:text-[var(--system-negative-strong)]`,children:r(`selectAssistantScreen.removeFromDevice`)})})]})}function R({icon:e,title:t,subtitle:n,selected:r,locked:i=!1,tabStop:a,onSelect:s,action:c,removeMenu:l}){let u=le();return(0,j.jsxs)(`div`,{role:i?void 0:`radio`,"aria-checked":i?void 0:r,tabIndex:i?void 0:a?0:-1,onClick:i?void 0:s,onKeyDown:i?void 0:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),s())},className:[`group flex w-full items-center border text-left`,u?`gap-3 rounded-lg px-[10px] py-3`:`gap-4 rounded-2xl px-[18px] py-4`,`transition-all duration-200 ease-out`,i?`border-[var(--border-base)] bg-[var(--surface-overlay)]`:`cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--primary-base)]`,i?``:r?`border-[var(--primary-base)] bg-[var(--surface-lift)]`:`border-[var(--border-base)] bg-[var(--surface-lift)]/60 hover:border-[var(--border-element)] hover:bg-[var(--surface-lift)]`].join(` `),children:[(0,j.jsx)(`div`,{className:[`flex shrink-0 items-center justify-center transition-colors duration-200`,`h-12 w-12 rounded-[10px]`,r&&!i?`bg-[var(--primary-base)] text-[var(--surface-base)]`:`bg-[var(--surface-active)]/40 text-[var(--content-secondary)]`].join(` `),children:e}),(0,j.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,j.jsx)(`span`,{className:`block text-body-medium-default text-[var(--content-default)]`,children:t}),(0,j.jsx)(`span`,{className:`mt-1 block text-[var(--content-tertiary)] ${u?`text-label-medium-default font-normal`:`text-body-small-lighter`}`,children:n})]}),(0,j.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c,l&&(i?l:(0,j.jsx)(`div`,{onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:l})),!i&&(0,j.jsx)(`div`,{className:[`flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-200`,r?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)] group-hover:border-[var(--content-tertiary)]`].join(` `),children:r&&(0,j.jsx)(o,{className:`h-3 w-3 text-[var(--surface-base)]`,strokeWidth:3})})]})]})}function We({assistant:e,selected:t,locked:r,tabStop:i,onSelect:a,loginLabel:o,loginDisabled:s,onLogin:l,onRemove:u}){let{t:p}=S(`onboarding`),m=Le(e);return(0,j.jsx)(R,{icon:e.isPaired?(0,j.jsx)(f,{className:`h-5 w-5`}):e.isLocal?(0,j.jsx)(d,{className:`h-5 w-5`}):(0,j.jsx)(c,{className:`h-5 w-5`}),title:m,subtitle:Re(e,p),selected:t,locked:r,tabStop:i,onSelect:a,action:r&&l?(0,j.jsx)(n,{variant:`primary`,size:`regular`,onClick:l,disabled:s,children:o}):void 0,removeMenu:u&&(0,j.jsx)(L,{label:m,onRemove:u})})}function Ge({origin:e,icon:t,selected:n,current:r,tabStop:i,onSelect:a,onRemove:o}){let s=ze(e);return(0,j.jsx)(R,{icon:t??(0,j.jsx)(u,{className:`h-5 w-5`}),title:s,subtitle:`${r?`Current`:`Remote`} · ${N(e)}`,selected:n,tabStop:i,onSelect:a,removeMenu:o&&(0,j.jsx)(L,{label:s,onRemove:o})})}export{I as SelectAssistantScreen};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{d as r,h as i}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as a}from"./jsx-runtime-BJ8jcmzB.js";import{t as o}from"./check-pgeLaeXx.js";import{t as s}from"./menu-ubIBmfUh.js";import{t as c}from"./cloud-dqL-JBKK.js";import{t as l}from"./ellipsis-vertical-CJX4FZlb.js";import{t as u}from"./globe-COrlg99x.js";import{t as d}from"./laptop-DoAUvmjX.js";import{t as f}from"./link-2-BBS4SmE3.js";import{t as p}from"./plus-CWkbiq1y.js";import{t as m}from"./notice-BlYF-xU3.js";import{n as ee,t as te}from"./input-DkgpMeG9.js";import{t as h}from"./modal-UYNawsIu.js";import{t as g}from"./confirm-dialog-Drw1adml.js";import{H as _,S as v,W as y,X as b,dt as x,g as ne,h as re,k as ie,nt as ae,q as oe,t as se,v as ce}from"./local-mode-BNr2MrWI.js";import{t as le}from"./is-electron-wgAC5Mzb.js";import{n as ue,r as de}from"./resolved-assistants-store-BNadgXqb.js";import"./i18n-C9hRT4Lf.js";import{t as fe}from"./Trans-FBE1EuwL.js";import{t as S}from"./useTranslation-D9pPv-bA.js";import{X as pe,i as me,n as he,tt as ge}from"./auth-store-CVtcHK0b.js";import{c as C}from"./remote-gateway-session-CzPLaXuT.js";import{t as _e}from"./client-feature-flag-store-CT2T_Fg7.js";import{d as w}from"./routes-B7wRw3UT.js";import{h as ve,l as T}from"./platform-detection-zth6eCY8.js";import{i as E,n as ye,t as be}from"./remove-from-device-dialog-DeJ_gAmf.js";import{t as xe}from"./use-onboarding-login-BdVTfZ3o.js";import{n as Se,t as D}from"./retire-confirm-dialog-f-A5OVYj.js";import{t as Ce}from"./onboarding-layout-GTzgLPSo.js";import{i as we}from"./format-date-B_oQDqU9.js";import{t as Te}from"./index-I9kwAKzY.js";import{t as Ee}from"./radio-card-nav-CrM7VJUk.js";import{a as O,i as De,n as Oe,o as k,t as ke}from"./self-hosted-servers-BviPyNnl.js";var A=e(t(),1);async function Ae(e){let t=()=>window.location.assign(`${e.url}${w.assistant}`);if(!T()){t();return}await Oe(e.url)||t()}function je(e){return O(v()?C():window.location.origin)===e.url}var j=a(),Me=`Failed to add the assistant. Please try again.`;function Ne(e){for(let t of[`/assistant/pair`,`/assistant`])if(e.endsWith(t))return e.slice(0,-t.length);return e}function Pe({open:e,onClose:t,onAdded:r}){let{t:i}=S(`onboarding`),[a,o]=(0,A.useState)(``),[s,c]=(0,A.useState)(!1),[l,d]=(0,A.useState)(null);(0,A.useEffect)(()=>{e&&(o(``),c(!1),d(null))},[e]);let f=()=>{s||t()},p=async()=>{if(!a.trim()||s)return;let e=O(a),t=e===null?null:O(Ne(e));if(t===null){d(`Enter the full https address, like https://example.com/assistant-1.`);return}c(!0),d(null);try{let e=await k.getState().addOrigin({url:t});if(e.ok){r(e.origin);return}d(Me)}catch(e){console.error(`addRemoteOriginDialog.add failed`,e),d(Me)}c(!1)};return(0,j.jsx)(h.Root,{open:e,onOpenChange:e=>{e||f()},children:(0,j.jsxs)(h.Content,{size:`md`,children:[(0,j.jsxs)(h.Header,{icon:u,children:[(0,j.jsx)(h.Title,{children:i(`addRemoteOriginDialog.title`)}),(0,j.jsx)(h.Description,{children:i(`addRemoteOriginDialog.body`)})]}),(0,j.jsx)(h.Body,{children:(0,j.jsxs)(`div`,{className:`space-y-4`,children:[(0,j.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,j.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`add-remote-origin-url`,children:i(`addRemoteOriginDialog.addressLabel`)}),(0,j.jsx)(te,{id:`add-remote-origin-url`,type:`url`,value:a,onChange:e=>o(e.target.value),placeholder:`https://example.com/assistant-1`,fullWidth:!0,autoFocus:!0})]}),l&&(0,j.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:l})]})}),(0,j.jsxs)(h.Footer,{children:[(0,j.jsx)(n,{variant:`ghost`,onClick:f,disabled:s,children:i(`actions.cancel`)}),(0,j.jsx)(n,{variant:`primary`,onClick:()=>void p(),disabled:!a.trim()||s,children:i(s?`actions.adding`:`actions.add`)})]})]})})}function Fe({open:e,initialBundle:t,guidanceMessage:r,onClose:i,onImported:a}){let{t:o}=S(`onboarding`),[s,c]=(0,A.useState)(``),[l,u]=(0,A.useState)(``),[d,p]=(0,A.useState)(!1),[g,_]=(0,A.useState)(null),[v,y]=(0,A.useState)(null);(0,A.useEffect)(()=>{e&&(c(t??``),u(``),p(!1),_(null),y(null))},[e,t]);let b=()=>{d||i()},x=async()=>{let e=s.trim();if(!(!e||d)){p(!0),_(null);try{let t=await re(e,l.trim()||void 0);if(!t.ok)_(t.error);else if(t.accessOnly)y(t.assistantId);else{a(t.assistantId);return}}catch(e){console.error(`connectAssistantDialog.import failed`,e),_(`Failed to import the pairing bundle. Please try again.`)}p(!1)}};return v==null?(0,j.jsx)(h.Root,{open:e,onOpenChange:e=>{e||b()},children:(0,j.jsxs)(h.Content,{size:`md`,children:[(0,j.jsxs)(h.Header,{icon:f,children:[(0,j.jsx)(h.Title,{children:o(`connectAssistantDialog.title`)}),(0,j.jsx)(h.Description,{children:(0,j.jsx)(fe,{i18nKey:`connectAssistantDialog.instruction`,ns:`onboarding`,components:{code:(0,j.jsx)(`code`,{})}})})]}),(0,j.jsx)(h.Body,{children:(0,j.jsxs)(`div`,{className:`space-y-4`,children:[r&&(0,j.jsx)(m,{tone:`info`,children:r}),(0,j.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,j.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`connect-assistant-bundle`,children:o(`connectAssistantDialog.bundleLabel`)}),(0,j.jsx)(ee,{id:`connect-assistant-bundle`,value:s,onChange:e=>c(e.target.value),placeholder:`eyJnYXRld2F5...`,rows:4,fullWidth:!0,autoFocus:!0})]}),(0,j.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,j.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`connect-assistant-name`,children:o(`connectAssistantDialog.nameLabel`)}),(0,j.jsx)(te,{id:`connect-assistant-name`,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:`office-mac`,fullWidth:!0})]}),g&&(0,j.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:g})]})}),(0,j.jsxs)(h.Footer,{children:[(0,j.jsx)(n,{variant:`ghost`,onClick:b,disabled:d,children:o(`actions.cancel`)}),(0,j.jsx)(n,{variant:`primary`,onClick:()=>void x(),disabled:!s.trim()||d,children:o(d?`actions.connecting`:`actions.connect`)})]})]})}):(0,j.jsx)(h.Root,{open:e,onOpenChange:e=>{e||b()},children:(0,j.jsxs)(h.Content,{size:`sm`,children:[(0,j.jsx)(h.Header,{icon:f,children:(0,j.jsx)(h.Title,{children:o(`connectAssistantDialog.importedTitle`)})}),(0,j.jsx)(h.Body,{children:(0,j.jsx)(m,{tone:`warning`,children:o(`connectAssistantDialog.importedBody`)})}),(0,j.jsx)(h.Footer,{children:(0,j.jsx)(n,{variant:`primary`,onClick:()=>a(v),children:o(`actions.continue`)})})]})})}function Ie({open:e,assistantName:t,isPending:r,errorMessage:i,onCancel:a,onRepair:o,onRetire:s}){let{t:c}=S(`onboarding`),[l,u]=(0,A.useState)(`menu`);(0,A.useEffect)(()=>{e&&u(`menu`)},[e]);let d=i?(0,j.jsx)(`span`,{className:`mt-3 block text-body-small-default text-[var(--system-negative-strong)]`,children:i}):null;return l===`confirm-repair`?(0,j.jsx)(g,{open:e,title:c(`connectRecoveryDialog.repairTitle`),message:(0,j.jsxs)(j.Fragment,{children:[c(`connectRecoveryDialog.repairBody`),d]}),confirmLabel:c(`connectRecoveryDialog.repairConfirm`),isPending:r,onConfirm:o,onCancel:()=>u(`menu`)}):l===`confirm-retire`?(0,j.jsx)(D,{open:e,isPending:r,extraMessage:d,onConfirm:s,onCancel:()=>u(`menu`)}):(0,j.jsx)(h.Root,{open:e,onOpenChange:e=>{!e&&!r&&a()},children:(0,j.jsxs)(h.Content,{size:`sm`,hideCloseButton:!0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),r||a()},children:[(0,j.jsx)(h.Header,{children:(0,j.jsx)(h.Title,{children:c(`connectRecoveryDialog.authFailedTitle`)})}),(0,j.jsxs)(h.Body,{children:[(0,j.jsx)(h.Description,{children:c(`connectRecoveryDialog.authFailedBody`,{name:t})}),d,(0,j.jsxs)(`div`,{className:`mt-5 flex w-full flex-col gap-2`,children:[(0,j.jsx)(n,{variant:`primary`,fullWidth:!0,disabled:r,onClick:()=>u(`confirm-repair`),children:c(`connectRecoveryDialog.wakeAndRepair`)}),(0,j.jsx)(n,{variant:`dangerOutline`,fullWidth:!0,disabled:r,onClick:()=>u(`confirm-retire`),children:c(`connectRecoveryDialog.retire`)}),(0,j.jsx)(n,{variant:`outlined`,fullWidth:!0,disabled:r,onClick:a,children:c(`actions.cancel`)})]})]})]})})}function Le(e){return e.name?e.name:e.isPaired?`Paired Assistant`:e.isLocal&&e.cloud===`local`?e.id:e.isLocal?`Local Assistant`:`Cloud Assistant`}function M(e,t){if(e)try{return t(`selectAssistantScreen.selfHostedWithHost`,{host:new URL(e).hostname})}catch{}return t(`selectAssistantScreen.selfHosted`)}function Re(e,t){let n=e.isPaired?x(e.runtimeUrl):e.isLocal?ce()?`On this computer`:M(e.ingressUrl,t):`Cloud-hosted`;return e.hatchedAt?`${n} · Created ${we(e.hatchedAt)}`:n}function N(e){return new URL(e.url).hostname}function ze(e){return e.name??N(e)}function P(e){return`origin:${e.url}`}var F=`origin:vellum-cloud`,Be=[];function Ve(e){let t=new URLSearchParams(e);return t.delete(`register`),t.delete(`name`),t}function I(){let{t:e}=S(`onboarding`),t=r(),[a,o]=i(),s=a.get(`fromLogin`)===`1`,l=a.get(`noAutoSkip`)===`1`,d=le(),m=ce(),ee=me(),te=de.use.assistants(),h=ge.use.currentOrganizationId(),g=_e.use.assistantSwitcher(),v=_e.use.webRemoteIngress(),x=_e.use.hydrated(),re=k.use.origins(),fe=k.use.hydrated(),C=ve(),T=g?re:Be,{loading:D,error:we,login:Me,cancel:Ne}=xe(),[M,Re]=(0,A.useState)(null),N=g&&M!==null?{url:M,name:`Vellum Cloud`}:null,I=N!==null,L=e=>e.isPaired||e.isLocal&&m||ee,R=te.filter(ue),z=R.filter(L),Ke=z.length>0||T.length>0||N!==null,B=_(),qe=!ee&&B,[V,H]=(0,A.useState)(null),[U,Je]=(0,A.useState)(!1),[Ye,Xe]=(0,A.useState)(!1),[Ze,Qe]=(0,A.useState)(null),[W,$e]=(0,A.useState)(null),[et,G]=(0,A.useState)(!1),[tt,K]=(0,A.useState)(null),[q,J]=(0,A.useState)(null),[nt,rt]=(0,A.useState)(!1),[it,Y]=(0,A.useState)(null),[at,ot]=(0,A.useState)(!1),[X,st]=(0,A.useState)(null),[ct,lt]=(0,A.useState)(!1),[ut,dt]=(0,A.useState)(null),ft=E.use.open(),pt=E.use.initialBundle(),mt=E.use.guidanceMessage(),ht=E.use.deepLinkDrainSettled(),Z=(0,A.useRef)(!1);(0,A.useEffect)(()=>{Te()},[]);let gt=!m&&(!x||!g);(0,A.useEffect)(()=>{!m&&x&&!g&&t(w.assistant,{replace:!0})},[m,x,g,t]),(0,A.useEffect)(()=>{g&&(ke(),k.getState().hydrate())},[g]),(0,A.useEffect)(()=>{if(!g||!C)return;let e=!1;return De().then(t=>{e||Re(t)}),()=>{e=!0}},[g,C]);let Q=(0,A.useRef)(!1);(0,A.useEffect)(()=>{if(!g||Q.current)return;Q.current=!0;let e=a.get(`register`);if(e===null)return;let t=()=>o(Ve,{replace:!0}),n=O(e);if(n===null){t();return}k.getState().addOrigin({url:n,name:a.get(`name`)??void 0}).then(e=>{e.ok?t():Q.current=!1}).catch(()=>{Q.current=!1})},[g,a,o]),(0,A.useEffect)(()=>{if(V===F&&I||V!=null&&T.some(e=>P(e)===V))return;if(z.length===0){let e=T[0],t=e?P(e):I?F:null;V!==t&&H(t);return}if(V!=null&&z.some(e=>e.id===V))return;let e=pe(h);H(z.find(t=>t.id===e)?.id??z[0].id)},[V,z,h,T,I]);let $=async e=>{Je(!0),Qe(null);try{e.isPaired?await he.getState().connectPairedAssistant(e.id):e.isLocal&&m?await he.getState().connectLocalAssistant(e.id):await he.getState().connectPlatformAssistant(e.id),t(w.assistant,{replace:!0})}catch(t){console.error(`selectAssistant.handleConnect failed`,t),e.isLocal&&_()&&(y(t)||ae(t)||t instanceof se)&&ne(e.id)?$e(e):e.isPaired&&y(t)?Qe(`This pairing has expired. Run vellum pair on the assistant's machine and import it again with vellum connect import.`):Qe(`Failed to connect. Please try again.`),Je(!1)}},_t=()=>{$e(null),G(!1),K(null),Xe(!1)},vt=async()=>{if(!(!W||et)){G(!0),K(null);try{let e=await oe(W.id,{repairGuardian:!0});if(e.ok){b(),_t(),$(W);return}K(e.error||`Repair failed. Please try again.`)}catch(e){console.error(`selectAssistant.recoveryRepair failed`,e),K(`Repair failed. Please try again.`)}G(!1)}},yt=async()=>{if(!(!W||et)){G(!0),K(null);try{let e=await Se(W.id);if(e.ok){_t(),t(e.nextRoute,{replace:!0});return}K(e.error)}catch(e){console.error(`selectAssistant.recoveryRetire failed`,e),K(`Failed to retire assistant. Please try again.`)}G(!1)}},bt=()=>{nt||(J(null),Y(null))},xt=async()=>{if(!(!q||nt)){if(rt(!0),Y(null),q.isPaired){let e=await ye(q.id);e.ok?(Z.current=!0,J(null)):Y(e.error),rt(!1);return}try{let e=await ie(q.id);if(e.ok){let e=de.getState();e.activeAssistantId===q.id&&e.setActiveAssistantId(null),Z.current=!0,J(null)}else Y(e.error??`Failed to remove. Please try again.`)}catch(e){console.error(`selectAssistant.removeFromDevice failed`,e),Y(`Failed to remove. Please try again.`)}rt(!1)}},St=()=>{ct||(st(null),dt(null))},Ct=async()=>{!X||ct||(lt(!0),dt(null),await k.getState().removeOrigin(X.url),k.getState().origins.some(e=>e.url===X.url)?dt(`Failed to remove. Please try again.`):(Z.current=!0,st(null)),lt(!1))},wt=e=>{E.getState().closeConnectDialog(),$(de.getState().assistants.find(t=>t.id===e)??{id:e,isLocal:!1,isPlatformHosted:!1,isPaired:!0})},Tt=e=>{ot(!1),Ae(e)};(0,A.useEffect)(()=>{s||l||Z.current||m&&x&&(g&&!fe||T.length>0||d&&!ht||U||Ye||ft||R.length!==0&&R.length===1&&z.length===1&&(Xe(!0),$(z[0])))},[R.length,z.length,ht,m,T.length,g,x,fe]);let Et=()=>{if(V===F){Oe(null).then(e=>{!e&&M!==null&&window.location.assign(M)});return}let e=T.find(e=>P(e)===V);if(e){je(e)?t(w.assistant,{replace:!0}):Ae(e);return}let n=R.find(e=>e.id===V);n&&$(n)},Dt=()=>{t(m?w.welcome:w.assistant)},Ot=we??Ze;return gt||Ye&&!Ot&&!W?(0,j.jsx)(He,{}):(0,j.jsxs)(Ce,{showAvatarWave:!0,children:[(0,j.jsx)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${d?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`min-h-screen px-6 pb-40 pt-6 md:min-h-full md:pb-6`} text-[var(--content-default)]`,children:(0,j.jsxs)(`div`,{className:`flex w-full flex-col items-center ${d?``:`flex-1 justify-center`}`,children:[(0,j.jsx)(`h1`,{className:`text-center text-5xl font-normal tracking-tight md:text-4xl lg:text-5xl`,style:{fontFamily:`var(--font-serif)`,animation:`fadeInUp 0.5s ease-out 0.1s both`},children:e(`selectAssistantScreen.title`)}),Ot&&(0,j.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:Ot}),(0,j.jsxs)(`div`,{role:`radiogroup`,"aria-label":e(`selectAssistantScreen.listAriaLabel`),onKeyDown:Ee,className:`flex w-full flex-col ${d?`mt-8 gap-2`:`mt-10 gap-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:[R.map(t=>{let n=L(t);return(0,j.jsx)(We,{assistant:t,selected:V===t.id,locked:!n,tabStop:V==null?z[0]?.id===t.id:V===t.id,onSelect:()=>{n&&H(t.id)},loginLabel:e(D?`actions.cancel`:`actions.loginToUse`),loginDisabled:U,onLogin:!n&&(t.isPlatformHosted||t.isLocal)?D?Ne:()=>void Me():void 0,onRemove:t.isPlatformHosted&&qe||t.isPaired&&B?()=>J(t):void 0},t.id)}),T.map((e,t)=>{let n=P(e),r=je(e);return(0,j.jsx)(Ge,{origin:e,selected:V===n,current:r,tabStop:V==null?z.length===0&&t===0:V===n,onSelect:()=>H(n),onRemove:r&&C?void 0:()=>st(e)},e.url)}),N&&(0,j.jsx)(Ge,{origin:N,icon:(0,j.jsx)(c,{className:`h-5 w-5`}),selected:V===F,current:!1,tabStop:V==null?z.length===0&&T.length===0:V===F,onSelect:()=>H(F)}),m&&(0,j.jsx)(Ue,{icon:(0,j.jsx)(p,{className:`h-4 w-4`}),label:e(`selectAssistantScreen.createNew`),disabled:U||D,onClick:()=>void t(`${w.onboarding.hosting}?from=select-assistant`)}),B&&(0,j.jsx)(Ue,{icon:(0,j.jsx)(f,{className:`h-4 w-4`}),label:e(`selectAssistantScreen.connectRemote`),disabled:U||D,onClick:()=>E.getState().openConnectDialog()}),g&&v&&!B&&(0,j.jsx)(Ue,{icon:(0,j.jsx)(u,{className:`h-4 w-4`}),label:e(`selectAssistantScreen.addRemote`),disabled:U||D,onClick:()=>ot(!0)})]}),Ke&&(0,j.jsx)(`div`,{className:`mt-8 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:(0,j.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,className:d?void 0:`h-11 text-base`,onClick:Et,disabled:!V||U,children:e(U?`actions.connecting`:`actions.continue`)})}),(0,j.jsx)(`div`,{className:Ke?`mt-3`:`mt-8`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:(0,j.jsx)(n,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,onClick:Dt,disabled:U||D,children:e(`actions.back`)})})]})}),(0,j.jsx)(Pe,{open:at,onClose:()=>ot(!1),onAdded:Tt}),(0,j.jsx)(Fe,{open:ft,initialBundle:pt??void 0,guidanceMessage:mt??void 0,onClose:()=>E.getState().closeConnectDialog(),onImported:wt}),(0,j.jsx)(Ie,{open:W!=null,assistantName:W?Le(W):``,isPending:et,errorMessage:tt??void 0,onCancel:_t,onRepair:()=>void vt(),onRetire:()=>void yt()}),(0,j.jsx)(be,{open:q!=null,kind:q?.isPaired?`paired`:`platform`,assistantName:q?Le(q):e(`selectAssistantScreen.unnamedAssistant`),errorMessage:it??void 0,isPending:nt,onConfirm:()=>void xt(),onCancel:bt}),(0,j.jsx)(be,{open:X!=null,kind:`origin`,assistantName:X?ze(X):e(`selectAssistantScreen.unnamedAssistant`),errorMessage:ut??void 0,isPending:ct,onConfirm:()=>void Ct(),onCancel:St})]})}function He(){let{t:e}=S(`onboarding`);return(0,j.jsx)(Ce,{showAvatarWave:!0,children:(0,j.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center justify-center px-6 text-[var(--content-default)]`,children:(0,j.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:e(`selectAssistantScreen.connectingToAssistant`)})})})}function Ue({icon:e,label:t,disabled:n,onClick:r}){let i=le();return(0,j.jsxs)(`button`,{type:`button`,onClick:r,disabled:n,className:[`group flex w-full items-center justify-center gap-2 border border-dashed border-[var(--border-element)]/50 text-[var(--content-tertiary)]`,i?`rounded-lg px-3 py-2.5`:`rounded-xl px-5 py-3`,`cursor-pointer transition-all duration-200 ease-out`,`hover:border-[var(--border-element)] hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,`disabled:cursor-not-allowed disabled:opacity-50`].join(` `),children:[e,(0,j.jsx)(`span`,{className:i?`text-body-small-default`:`text-body-medium-default`,children:t})]})}function L({label:e,onRemove:t}){let{t:r}=S(`onboarding`);return(0,j.jsxs)(s.Root,{children:[(0,j.jsx)(s.Trigger,{asChild:!0,children:(0,j.jsx)(n,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,iconOnly:(0,j.jsx)(l,{}),"aria-label":r(`selectAssistantScreen.rowActionsAriaLabel`,{name:e})})}),(0,j.jsx)(s.Content,{align:`end`,sideOffset:4,children:(0,j.jsx)(s.Item,{onSelect:t,className:`text-[var(--system-negative-strong)] data-[highlighted]:text-[var(--system-negative-strong)]`,children:r(`selectAssistantScreen.removeFromDevice`)})})]})}function R({icon:e,title:t,subtitle:n,selected:r,locked:i=!1,tabStop:a,onSelect:s,action:c,removeMenu:l}){let u=le();return(0,j.jsxs)(`div`,{role:i?void 0:`radio`,"aria-checked":i?void 0:r,tabIndex:i?void 0:a?0:-1,onClick:i?void 0:s,onKeyDown:i?void 0:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),s())},className:[`group flex w-full items-center border text-left`,u?`gap-3 rounded-lg px-[10px] py-3`:`gap-4 rounded-2xl px-[18px] py-4`,`transition-all duration-200 ease-out`,i?`border-[var(--border-base)] bg-[var(--surface-overlay)]`:`cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--primary-base)]`,i?``:r?`border-[var(--primary-base)] bg-[var(--surface-lift)]`:`border-[var(--border-base)] bg-[var(--surface-lift)]/60 hover:border-[var(--border-element)] hover:bg-[var(--surface-lift)]`].join(` `),children:[(0,j.jsx)(`div`,{className:[`flex shrink-0 items-center justify-center transition-colors duration-200`,`h-12 w-12 rounded-[10px]`,r&&!i?`bg-[var(--primary-base)] text-[var(--surface-base)]`:`bg-[var(--surface-active)]/40 text-[var(--content-secondary)]`].join(` `),children:e}),(0,j.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,j.jsx)(`span`,{className:`block text-body-medium-default text-[var(--content-default)]`,children:t}),(0,j.jsx)(`span`,{className:`mt-1 block text-[var(--content-tertiary)] ${u?`text-label-medium-default font-normal`:`text-body-small-lighter`}`,children:n})]}),(0,j.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c,l&&(i?l:(0,j.jsx)(`div`,{onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:l})),!i&&(0,j.jsx)(`div`,{className:[`flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-200`,r?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)] group-hover:border-[var(--content-tertiary)]`].join(` `),children:r&&(0,j.jsx)(o,{className:`h-3 w-3 text-[var(--surface-base)]`,strokeWidth:3})})]})]})}function We({assistant:e,selected:t,locked:r,tabStop:i,onSelect:a,loginLabel:o,loginDisabled:s,onLogin:l,onRemove:u}){let{t:p}=S(`onboarding`),m=Le(e);return(0,j.jsx)(R,{icon:e.isPaired?(0,j.jsx)(f,{className:`h-5 w-5`}):e.isLocal?(0,j.jsx)(d,{className:`h-5 w-5`}):(0,j.jsx)(c,{className:`h-5 w-5`}),title:m,subtitle:Re(e,p),selected:t,locked:r,tabStop:i,onSelect:a,action:r&&l?(0,j.jsx)(n,{variant:`primary`,size:`regular`,onClick:l,disabled:s,children:o}):void 0,removeMenu:u&&(0,j.jsx)(L,{label:m,onRemove:u})})}function Ge({origin:e,icon:t,selected:n,current:r,tabStop:i,onSelect:a,onRemove:o}){let s=ze(e);return(0,j.jsx)(R,{icon:t??(0,j.jsx)(u,{className:`h-5 w-5`}),title:s,subtitle:`${r?`Current`:`Remote`} · ${N(e)}`,selected:n,tabStop:i,onSelect:a,removeMenu:o&&(0,j.jsx)(L,{label:s,onRemove:o})})}export{I as SelectAssistantScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as e}from"./local-settings-Bx7FsNo5.js";import{n as t,t as n}from"./create-selectors-CmDroXTn.js";import{i as r}from"./dist-D7UWVopK.js";import{i}from"./typed-storage-BNw603jr.js";import{l as a}from"./platform-detection-
|
|
1
|
+
import{u as e}from"./local-settings-Bx7FsNo5.js";import{n as t,t as n}from"./create-selectors-CmDroXTn.js";import{i as r}from"./dist-D7UWVopK.js";import{i}from"./typed-storage-BNw603jr.js";import{l as a}from"./platform-detection-zth6eCY8.js";var o=`vellum:remembered-origins`;function s(e){let t=e.trim();if(t===``)return null;let n;try{n=new URL(t)}catch{return null}return n.protocol!==`https:`||n.hostname===``?null:`${n.origin}${n.pathname.replace(/\/+$/,``)}`}function c(e,t){let n=[],r=new Set,i=t??new Date().toISOString();for(let t of e){if(typeof t!=`object`||!t)continue;let{url:e,name:a,addedAt:o}=t;if(typeof e!=`string`)continue;let c=s(e);c===null||r.has(c)||(r.add(c),n.push({url:c,...typeof a==`string`&&a!==``?{name:a}:{},addedAt:typeof o==`string`?o:i}))}return n}function l(e){let t=JSON.parse(e);return Array.isArray(t)?c(t):null}var u=i({key:o,scope:`device`,parse:l,serialize:JSON.stringify,fallback:[]}),d={load:async()=>u.load(),save:async e=>{u.save(e)},watch:t=>e(o,t)},f=d,p=null,m=0,h=Promise.resolve(),g=`vellum:remembered-origins:mutate`;async function _(e){let t=typeof navigator>`u`?void 0:navigator.locks;return t?await t.request(g,e):e()}function v(e){let t=()=>_(e),n=h.then(t,t);return h=n.catch(()=>void 0),n}var y=null,b=!1;function x(e){return v(async()=>{try{let t=await f.load();if(e!==m)return;w.getState().hydrated?w.setState({origins:t}):p===null?w.getState().hydrate():b=!0}catch{}})}function S(){y?.();let e=m;y=f.watch?.(()=>void x(e))??null}function C(e){f=e,m+=1,p=null,b=!1,w.setState({hydrated:!1}),S(),w.getState().hydrate()}var w=t()((e,t)=>({origins:[],hydrated:!1,hydrate:()=>(p??=(async()=>{let t=m;await Promise.resolve();try{let n=await f.load();t===m&&(e({origins:n,hydrated:!0}),b&&(b=!1,x(t)))}catch{t===m&&(p=null)}})(),p),addOrigin:async({url:n,name:r})=>{let i=s(n);return i===null?{ok:!1}:v(async()=>{if(await t().hydrate(),!t().hydrated)return{ok:!1};let n=f,a=m,o;try{o=await n.load()}catch{return{ok:!1}}if(a!==m)return{ok:!1};let s=r?.trim(),c=o.find(e=>e.url===i),l=c??{url:i,addedAt:new Date().toISOString()},u=s?{...l,name:s}:l,d=c?o.map(e=>e.url===i?u:e):[...o,u];try{await n.save(d)}catch{return{ok:!1}}return a===m?(e({origins:d}),{ok:!0,origin:u}):{ok:!1}})},removeOrigin:async n=>{let r=s(n);r!==null&&await v(async()=>{if(await t().hydrate(),!t().hydrated)return;let n=f,i=m,a;try{a=await n.load()}catch{return}if(i!==m)return;let o=a.filter(e=>e.url!==r);if(o.length!==a.length)try{await n.save(o)}catch{return}i===m&&e({origins:o})})}}));S();var T=n(w),E=r(`SelfHostedServers`),D=`1970-01-01T00:00:00.000Z`;async function O(){try{return await E.list()}catch(e){return console.debug(`[self-hosted-servers] bridge unavailable:`,e),null}}var k=`vellum:remembered-origins:native-migrated`;function A(){try{return window.localStorage.getItem(k)===`true`}catch{return!0}}function j(){try{window.localStorage.setItem(k,`true`)}catch{}}async function M(e){if(A())return e;let t=[];try{t=await d.load()}catch{t=[]}let n=new Set(e.map(e=>e.url)),r=t.filter(e=>!n.has(e.url)),i=[];for(let t of r){try{await E.add({url:t.url,...t.name?{name:t.name}:{}})}catch(t){return console.debug(`[self-hosted-servers] migration add failed:`,t),[...e,...i]}i.push(t)}return j(),[...e,...i]}function N(){return{load:async()=>{let e=await O();return e===null?d.load():M(c(e.servers,D))},save:async e=>{let t=await O();if(t===null){await d.save(e);return}let n=new Map(c(t.servers,D).map(e=>[e.url,e.name])),r=new Set(e.map(e=>e.url));for(let e of n.keys())r.has(e)||await E.remove({url:e});for(let t of e)(!n.has(t.url)||t.name&&t.name!==n.get(t.url))&&await E.add({url:t.url,...t.name?{name:t.name}:{}})},watch:d.watch}}var P=!1;function F(){P||!a()||(P=!0,C(N()))}async function I(e){if(!a())return!1;try{return await E.switchTo(e===null?{}:{url:e}),!0}catch(e){return console.debug(`[self-hosted-servers] switchTo unavailable:`,e),!1}}async function L(e,t){if(!a())return!1;try{return await E.switchToPath({...e===null?{}:{url:e},path:t}),!0}catch(e){return console.debug(`[self-hosted-servers] switchToPath unavailable:`,e),!1}}async function R(){if(!a())return null;let e=await O();return e===null||!e.activeUrl?null:e.bakedUrl?s(e.bakedUrl):null}export{s as a,R as i,I as n,T as o,L as r,F as t};
|