@vellumai/web 0.11.4-staging.3 → 0.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{Trans-BUsRawhS.js → Trans-FBE1EuwL.js} +1 -1
- package/dist/assets/{access-Cngxal_O.js → access-D0krXly2.js} +1 -1
- package/dist/assets/account-DEWe1CJv.js +1 -0
- package/dist/assets/{account-page-IVZcGHZy.js → account-page-Df1VB34_.js} +1 -1
- package/dist/assets/{account-shell-DdH2Ze4T.js → account-shell-Dk4m-iaE.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-UjpE_MSy.js → acp-run-detail-panel-DsqMAPE4.js} +1 -1
- package/dist/assets/{activity-steps-panel-ChM6OAY8.js → activity-steps-panel-C9z9FMmK.js} +1 -1
- package/dist/assets/{add-credits-modal-ByR0kDly.js → add-credits-modal-RIAYgbOT.js} +1 -1
- package/dist/assets/{ai-page-BmOCqfyq.js → ai-page-CI4LZXTY.js} +1 -1
- package/dist/assets/api-BjYAXdCk.js +1 -0
- package/dist/assets/{api-CQ3nejmH.js → api-Cx3i50oG.js} +1 -1
- package/dist/assets/{api-key-screen-BnQoBDlm.js → api-key-screen-BKFAcyqU.js} +1 -1
- package/dist/assets/{app-card--MsNli_3.js → app-card-CjRGDYCX.js} +1 -1
- package/dist/assets/{assistant-status-panel-BkuUZfnZ.js → assistant-status-panel-BkLYzQAL.js} +1 -1
- package/dist/assets/{auth-store-DDMY1UvK.js → auth-store-CVtcHK0b.js} +2 -2
- package/dist/assets/auth-welcome-screen-Pw3qXxi5.js +1 -0
- package/dist/assets/{avatar-random-D1LU-C7V.js → avatar-random-B5F8Cp2E.js} +1 -1
- package/dist/assets/{background-task-detail-panel-DQeMsdpK.js → background-task-detail-panel-DtJ1ZolD.js} +1 -1
- package/dist/assets/{billing-page-BU6n42tO.js → billing-page-CmVjD4bw.js} +3 -3
- package/dist/assets/{bookmarks-page-DIzvqlcG.js → bookmarks-page-DUbnEAgS.js} +1 -1
- package/dist/assets/{browser-Nd92UvKg.js → browser-Ca2R8csw.js} +2 -2
- package/dist/assets/{build-state-BZ5ujToI.js → build-state-laR44jYU.js} +1 -1
- package/dist/assets/channels-page-route-sLLh-p2k.js +9 -0
- package/dist/assets/{chat-C0-tqEYA.js → chat-1xy90pMn.js} +1 -1
- package/dist/assets/{chat-BWQujip4.js → chat-CHVUM3s0.js} +1 -1
- package/dist/assets/{chat-markdown-message-mIiMHNFn.js → chat-markdown-message-CtLdsT2K.js} +1 -1
- package/dist/assets/{checkout-continuation-UVo_MUjH.js → checkout-continuation-BvY4Kjz7.js} +1 -1
- package/dist/assets/{checkout-page-C1hWo56h.js → checkout-page-CWRkiEj1.js} +1 -1
- package/dist/assets/checkout-return-target-_Y86sfo0.js +1 -0
- package/dist/assets/{client-perf-DHnnpVkx.js → client-perf-BZu5XQCP.js} +1 -1
- package/dist/assets/{command-palette-C6fyPEFS.js → command-palette-B6PZe9A0.js} +1 -1
- package/dist/assets/command-palette-window-page-BYkkAV88.js +1 -0
- package/dist/assets/{community-page-DK1RRzQb.js → community-page-Dd84pjdI.js} +1 -1
- package/dist/assets/companion-surface-CZHv2avR.js +1 -0
- package/dist/assets/companion-surface-page-BvDSOFVH.js +1 -0
- package/dist/assets/{composer-settings-Bs2Ux46E.js → composer-settings-DBAb6W2i.js} +1 -1
- package/dist/assets/{connect-page-DcyvGKph.js → connect-page-DiO1EqEC.js} +1 -1
- package/dist/assets/{consent-controls-BqSz1Rrx.js → consent-controls-B_zCicqo.js} +1 -1
- package/dist/assets/{contacts-page-route--H1bhesC.js → contacts-page-route-fUfbhwZ5.js} +1 -1
- package/dist/assets/{conversation-cache-C3KMXxZQ.js → conversation-cache-qk0nNm6Q.js} +1 -1
- package/dist/assets/{conversation-navigation-DQEOhOXf.js → conversation-navigation-B_4jZ9Z2.js} +1 -1
- package/dist/assets/{conversation-queries-Crrs0Ih6.js → conversation-queries-M4Inozp_.js} +1 -1
- package/dist/assets/{conversation-selection-BFTHfyYb.js → conversation-selection-4ubh2ui-.js} +1 -1
- package/dist/assets/{credential-entry-page-DNW0ZIUD.js → credential-entry-page--HYBfvoW.js} +1 -1
- package/dist/assets/{credentials-page-BUxLoFkv.js → credentials-page-C-e4DqWt.js} +1 -1
- package/dist/assets/{csv-preview-FnIpBtF1.js → csv-preview-T_KT_vef.js} +1 -1
- package/dist/assets/{debug-page-01b8L6vC.js → debug-page-Be5Y5TVM.js} +2 -2
- package/dist/assets/{deploy-dialogs-I_QAK81w.js → deploy-dialogs-CgicOESj.js} +1 -1
- package/dist/assets/{deploy-store-C-WH19q9.js → deploy-store-dyN183E8.js} +1 -1
- package/dist/assets/{desktop-voice-activity-CPOU-25i.js → desktop-voice-activity-D1BSf0I-.js} +1 -1
- package/dist/assets/{detail-card-BzCuPjtL.js → detail-card-Bqnvs6YE.js} +1 -1
- package/dist/assets/{detail-drawer-CYUmZIyK.js → detail-drawer-j2jaITAL.js} +1 -1
- package/dist/assets/{detail-shell-B1BZYIqh.js → detail-shell-D1UEZCzz.js} +1 -1
- package/dist/assets/{developer-page-DshJ0gl6.js → developer-page-DD8xa8mQ.js} +1 -1
- package/dist/assets/{diagnostics-BrWbafo7.js → diagnostics-CwFqcLv_.js} +1 -1
- package/dist/assets/{doctor-handoff-store-CX39mMuw.js → doctor-handoff-store-Cy96Na-O.js} +1 -1
- package/dist/assets/{document-viewer-container-Bb7omFZS.js → document-viewer-container-BMmSidmj.js} +2 -2
- package/dist/assets/{document-viewer-page-Cyul2rIj.js → document-viewer-page-tTTco75r.js} +1 -1
- package/dist/assets/{emails-page-CArz1548.js → emails-page-CJM4OS94.js} +1 -1
- package/dist/assets/{esm-DYyr0ITx.js → esm-BD6nxr-q.js} +2 -2
- package/dist/assets/{esm-DjphWBuP.js → esm-BaEdQNCe.js} +2 -2
- package/dist/assets/esm-CtKndoc9.js +2 -0
- package/dist/assets/{esm-CfdMbmKl.js → esm-DTIJZw37.js} +2 -2
- package/dist/assets/{esm-tSqvpvZa.js → esm-FpGTFn5W.js} +2 -2
- package/dist/assets/{esm-L7cqLUll.js → esm-kYXyJ2zw.js} +2 -2
- package/dist/assets/{esm-DbEwZ3Za.js → esm-nl105Ya0.js} +2 -2
- package/dist/assets/{external-anchor-DQhNmTOb.js → external-anchor-CLy6d_za.js} +1 -1
- package/dist/assets/feed-item-status-actions--CCeCtuw.js +1 -0
- package/dist/assets/file-markdown-C1rEGVrN.js +2 -0
- package/dist/assets/first-run-scope-DdSaiULx.js +1 -0
- package/dist/assets/format-usd-tespTIex.js +1 -0
- package/dist/assets/{funnel-events-BfR30ND5.js → funnel-events-BP3XPaB5.js} +1 -1
- package/dist/assets/general-page-Bi87XguF.js +1 -0
- package/dist/assets/{haptics-Sti0ZroX.js → haptics-D3hzTCtH.js} +2 -2
- package/dist/assets/{hatching-screen-DUCKM3qi.js → hatching-screen-DA0yyXD1.js} +1 -1
- package/dist/assets/home-page-route-BSoWksW0.js +1 -0
- package/dist/assets/{hosting-screen-By2Dt_ov.js → hosting-screen-cfhZ-ct7.js} +1 -1
- package/dist/assets/{i18n--HmJLuhM.js → i18n-C9hRT4Lf.js} +3 -3
- package/dist/assets/{identity-page-route-4IEB7D_s.js → identity-page-route-BjSsi8PM.js} +1 -1
- package/dist/assets/index-BmDctEOW.css +2 -0
- package/dist/assets/{index-CflMsKlP.js → index-I9kwAKzY.js} +3 -3
- package/dist/assets/{ingest-C3QOaKA5.js → ingest-DXklElaR.js} +1 -1
- package/dist/assets/{inspect-page-D3vuZY29.js → inspect-page-naqIziez.js} +3 -3
- package/dist/assets/{integrations-page-Ck4sUGfr.js → integrations-page-zrUmh2xn.js} +1 -1
- package/dist/assets/{intelligence-layout-2iu6OgCh.js → intelligence-layout-CXzIl0Vl.js} +1 -1
- package/dist/assets/{invalidate-memory-queries-CSQ9nfIN.js → invalidate-memory-queries-C4-KSsdB.js} +1 -1
- package/dist/assets/{latest-assistant-text-hKWwKxXi.js → latest-assistant-text-JCjtByys.js} +1 -1
- package/dist/assets/{library-detail-page-DcRn2wsJ.js → library-detail-page-CyWiXwb9.js} +1 -1
- package/dist/assets/{library-page-Db5Pstgx.js → library-page-CzcvMljL.js} +1 -1
- package/dist/assets/{local-runtime-upgrade-T5WFNI2L.js → local-runtime-upgrade-BkoG5uVr.js} +1 -1
- package/dist/assets/{login-flow-Bprf1KQp.js → login-flow-D6ivg6PM.js} +1 -1
- package/dist/assets/login-page-Dmpz0GgT.js +1 -0
- package/dist/assets/{logout-page-HF_SMBkj.js → logout-page-CI3LDcqG.js} +1 -1
- package/dist/assets/{logs-layout-CNyrG8d2.js → logs-layout-BHP-ADUq.js} +1 -1
- package/dist/assets/{markdown-preview-CYSaj1MV.js → markdown-preview-Dx8E021p.js} +1 -1
- package/dist/assets/{memory-page-route-DDdpEiCD.js → memory-page-route-qvBEERTa.js} +1 -1
- package/dist/assets/memory-router-playground-page-Bnxf4hzQ.js +1 -0
- package/dist/assets/{message-files-panel-25T5M1Ct.js → message-files-panel-ZPa7eZHc.js} +1 -1
- package/dist/assets/{messages-DJ6wO978.js → messages-CPTfRZA4.js} +1 -1
- package/dist/assets/{metric-card-Bg72JUq3.js → metric-card-bXd-f58c.js} +1 -1
- package/dist/assets/multi-activity-group-AECQlBbV.js +1 -0
- package/dist/assets/native-anchor-Bn22ZLay.js +1 -0
- package/dist/assets/{native-biometric-BxYhgb-X.js → native-biometric-D9IxNvJM.js} +1 -1
- package/dist/assets/{native-deep-link-C-s7GeV-.js → native-deep-link-IwasVyFQ.js} +2 -2
- package/dist/assets/{native-file-B3U837ed.js → native-file-BpFW1c_c.js} +2 -2
- package/dist/assets/{navigation-resolver-D4kCxpGf.js → navigation-resolver-jIQ5B6JB.js} +1 -1
- package/dist/assets/{not-found-DlCb1TjZ.js → not-found-ui-gcXqK.js} +1 -1
- package/dist/assets/{notifications-CZJragaI.js → notifications-DK6b8YVI.js} +1 -1
- package/dist/assets/{notifications-page-D7nqzDdY.js → notifications-page-GRXZE_lL.js} +1 -1
- package/dist/assets/{oauth-complete-page-4tmCqzLC.js → oauth-complete-page-7NZZRVcj.js} +1 -1
- package/dist/assets/{oauth-connection-utils-DmZFWfiy.js → oauth-connection-utils-19Tfw-lp.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-CjVEoYgl.js → oauth-popup-complete-page-Ci39YXpe.js} +1 -1
- package/dist/assets/{onboarding-step-layout-BfHbyjc0.js → onboarding-step-layout-2G2ptxpI.js} +1 -1
- package/dist/assets/open-workspace-file-CYf_Tqw3.js +2 -0
- package/dist/assets/{operational-status-T7FDD0t5.js → operational-status-CMN32PL8.js} +1 -1
- package/dist/assets/page-shell-C3ZmdIop.js +1 -0
- package/dist/assets/page-surface-store-DJLLsNFC.js +1 -0
- package/dist/assets/{pairing-page-CweLlHZS.js → pairing-page-YPN7ISIr.js} +1 -1
- package/dist/assets/{pdf-file-preview-6vptz6t6.js → pdf-file-preview-udA0Apx_.js} +1 -1
- package/dist/assets/{pdf-preview-sG04pSiE.js → pdf-preview-6Xfl1tO1.js} +2 -2
- package/dist/assets/{personality-page-DV3W2t42.js → personality-page-CLsRq5L2.js} +1 -1
- package/dist/assets/{plans-page-D-z14zHg.js → plans-page-DkVXE0Jv.js} +1 -1
- package/dist/assets/{platform-detection-Dt0-jSAU.js → platform-detection-zth6eCY8.js} +1 -1
- package/dist/assets/{platform-login-notice-jeJJGuqn.js → platform-login-notice-CvFpWLJY.js} +1 -1
- package/dist/assets/{platform-loopback-page-y_4YDCry.js → platform-loopback-page-B8cGk07e.js} +1 -1
- package/dist/assets/{preview-error-BkNW-Vj0.js → preview-error-gCViZZRw.js} +1 -1
- package/dist/assets/{privacy-page-BXSqDC_-.js → privacy-page-BxJ2Cuev.js} +1 -1
- package/dist/assets/{privacy-screen-BkGGAYzN.js → privacy-screen-DlSj_9FT.js} +1 -1
- package/dist/assets/{provider-callback-page-C-bl_GDk.js → provider-callback-page-BPp1TM7J.js} +1 -1
- package/dist/assets/{provider-signup-page-PSLa_T38.js → provider-signup-page-Cv9_b_58.js} +1 -1
- package/dist/assets/{provisioning-targets-QWEnNCue.js → provisioning-targets-DDUZDQ_a.js} +1 -1
- package/dist/assets/{push-registration-BMwgTQHf.js → push-registration-CH_t0mI8.js} +2 -2
- package/dist/assets/{remove-from-device-dialog-BDRSkSad.js → remove-from-device-dialog-DeJ_gAmf.js} +1 -1
- package/dist/assets/{research-facts-_ZlA6tzF.js → research-facts-C2cY_gU2.js} +1 -1
- package/dist/assets/{research-mock-page-PPKtT6UI.js → research-mock-page-CB1_bEoa.js} +1 -1
- package/dist/assets/research-onboarding-route-BY3X_d2-.js +50 -0
- package/dist/assets/{research-results-view-BFBI--6l.js → research-results-view-BcQs2Zh9.js} +1 -1
- package/dist/assets/{retire-confirm-dialog-DPyqO3ao.js → retire-confirm-dialog-f-A5OVYj.js} +1 -1
- package/dist/assets/{review-terms-screen-Cba1alNi.js → review-terms-screen-CI_29cnc.js} +1 -1
- package/dist/assets/routes-OwGjl0BS.js +24 -0
- package/dist/assets/{runtime-upgrade-banner-BrXnDFJZ.js → runtime-upgrade-banner-Cj9E7kWP.js} +2 -2
- package/dist/assets/{sandbox-bridge-CXqBkVsW.js → sandbox-bridge-Dj1pIOXJ.js} +1 -1
- package/dist/assets/{schedules-page-D81oQFHC.js → schedules-page-0V6ECw0t.js} +1 -1
- package/dist/assets/{section-membership-B23vBXXp.js → section-membership-vg-XaMPS.js} +1 -1
- package/dist/assets/{select-assistant-screen-Bpp_Fhfx.js → select-assistant-screen-BZxPQqe4.js} +1 -1
- package/dist/assets/{self-hosted-servers-DYKQjALI.js → self-hosted-servers-BviPyNnl.js} +1 -1
- package/dist/assets/settings-CEQzAg2m.js +1 -0
- package/dist/assets/{settings-divider-DGdHGRSV.js → settings-divider-C0NZsB-L.js} +1 -1
- package/dist/assets/{settings-layout-Vv6ixknD.js → settings-layout-DgNBNUT7.js} +1 -1
- package/dist/assets/settings-navigation-CVw10LL_.js +1 -0
- package/dist/assets/{share-feedback-modal-BIIdahKH.js → share-feedback-modal-PlN6X3Pm.js} +2 -2
- package/dist/assets/{sidebar-tree-BNzVigoN.js → sidebar-tree-Bp0eeKf2.js} +1 -1
- package/dist/assets/{signup-page-DwghsKON.js → signup-page-gqz5_wG1.js} +1 -1
- package/dist/assets/{site-favicon-D5oxJG4i.js → site-favicon-Cu07pwc9.js} +1 -1
- package/dist/assets/{skill-detail-page-DrVoo07c.js → skill-detail-page-c0s3w3K3.js} +1 -1
- package/dist/assets/{skill-detail-panel-Co6OpnMY.js → skill-detail-panel-NYXq557_.js} +1 -1
- package/dist/assets/{skills-CAAcLlNJ.js → skills-5MnTu98B.js} +1 -1
- package/dist/assets/{src-qDZBwoEm.js → src-CImIAPTd.js} +1 -1
- package/dist/assets/{start-screen-CO55WEqw.js → start-screen-CHO19RCi.js} +1 -1
- package/dist/assets/{status-badge-pill-CoGc_Kjf.js → status-badge-pill-D8m98tJa.js} +1 -1
- package/dist/assets/{stt-language-picker-modal-7-gnUFiL.js → stt-language-picker-modal-BXLEBM7b.js} +1 -1
- package/dist/assets/{subagent-detail-panel-B7yd49jl.js → subagent-detail-panel-CrbpQRzW.js} +1 -1
- package/dist/assets/{subagent-store-D79M-K__.js → subagent-store-DqKEBlAM.js} +1 -1
- package/dist/assets/{superpowers-page-B0zX5FZy.js → superpowers-page-B5WGXphq.js} +1 -1
- package/dist/assets/{swipe-action-reveal-Ctx7MIFN.js → swipe-action-reveal-Ai9lRgUU.js} +1 -1
- package/dist/assets/{system-events-page-7z3m1kM5.js → system-events-page-_aap_0av.js} +1 -1
- package/dist/assets/{telegram-setup-wizard-DhIkHgMe.js → telegram-setup-wizard-BENKNAuh.js} +1 -1
- package/dist/assets/{text-preview-DFo5f2uH.js → text-preview-DUlKYC4u.js} +1 -1
- package/dist/assets/{theme-stage-page-CmF6f7RN.js → theme-stage-page-CbGuxQ23.js} +1 -1
- package/dist/assets/{tiptap-document-editor-DDfxW_SE.js → tiptap-document-editor-0vqw7hch.js} +1 -1
- package/dist/assets/{tool-detail-panel-Zx64Drl4.js → tool-detail-panel-C2wUYsf2.js} +1 -1
- package/dist/assets/{trust-rules-api-BtUxkSk-.js → trust-rules-api-DRJ1qP-y.js} +1 -1
- package/dist/assets/{upgrade-cancel-page-H2SezHRI.js → upgrade-cancel-page-Dbd3VJdm.js} +1 -1
- package/dist/assets/{upgrade-success-page-DoM6CoFp.js → upgrade-success-page-CHbEmpjg.js} +1 -1
- package/dist/assets/{use-assistant-capability-CmwC8eoT.js → use-assistant-capability-C-yHcMH4.js} +1 -1
- package/dist/assets/{use-assistant-identity-details-DqD-wXki.js → use-assistant-identity-details-u9sG9ip2.js} +1 -1
- package/dist/assets/{use-attachment-preview-BfZe160h.js → use-attachment-preview-Cq_IWTdT.js} +2 -2
- package/dist/assets/{use-attachment-squares-jfCXyibr.js → use-attachment-squares-BKi30wmg.js} +1 -1
- package/dist/assets/{use-bookmarks-Dg-dtmf5.js → use-bookmarks-Bl4tx8xK.js} +1 -1
- package/dist/assets/{use-checkout-dismiss-refresh-lXbrGudW.js → use-checkout-dismiss-refresh-BHuxVDUc.js} +1 -1
- package/dist/assets/use-command-palette-sections-CvNjev8s.js +1 -0
- package/dist/assets/{use-edge-swipe-CJ8niuZL.js → use-edge-swipe-C4IrskOL.js} +1 -1
- package/dist/assets/use-edge-swipe-back-CiO9raEw.js +2 -0
- package/dist/assets/{use-edit-app-CAyA09nW.js → use-edit-app-ByAfCYIL.js} +1 -1
- package/dist/assets/{use-is-org-ready-BYJTuCXo.js → use-is-org-ready-GDBxqujc.js} +1 -1
- package/dist/assets/use-onboarding-login-BdVTfZ3o.js +1 -0
- package/dist/assets/{use-platform-assistant-id-CuqHJket.js → use-platform-assistant-id-B7TrEBmf.js} +1 -1
- package/dist/assets/{use-platform-gate-DJ7NtOkG.js → use-platform-gate-DG9Xg3Hs.js} +1 -1
- package/dist/assets/{use-return-to-short-circuit-CXFMS-0F.js → use-return-to-short-circuit-EtY8cSC7.js} +1 -1
- package/dist/assets/{use-side-list-room-DtmLatRX.js → use-side-list-room-CUXPQyjw.js} +1 -1
- package/dist/assets/{use-skill-actions-DjwFUePB.js → use-skill-actions-CdbZjq6a.js} +1 -1
- package/dist/assets/{use-sticky-profiles-BYBk-2VZ.js → use-sticky-profiles-vQLFyEh0.js} +1 -1
- package/dist/assets/{use-stt-language-selection-82DrT6kd.js → use-stt-language-selection-CK6bUfVS.js} +1 -1
- package/dist/assets/{use-subagent-card-data-CTkK6bHj.js → use-subagent-card-data-DlVOBxXw.js} +1 -1
- package/dist/assets/use-transcript-message-by-id-FmIIrRsf.js +1 -0
- package/dist/assets/{use-transcript-messages-BvoNGyuA.js → use-transcript-messages-Q1PBxvSF.js} +1 -1
- package/dist/assets/{use-voice-sample-preview-BHCiYpHq.js → use-voice-sample-preview-CZoWWEeH.js} +1 -1
- package/dist/assets/useTranslation-D9pPv-bA.js +1 -0
- package/dist/assets/{voice-page-CqgBuO-G.js → voice-page-B1mJ2hkc.js} +1 -1
- package/dist/assets/{voice-providers-note-DmCKsoh8.js → voice-providers-note-TDQxSwUj.js} +1 -1
- package/dist/assets/{web-C6ruWL7-.js → web-CxX3pST-.js} +1 -1
- package/dist/assets/{web-ByBZa2-p.js → web-D1mJSG8v.js} +1 -1
- package/dist/assets/welcome-screen-DPXQU47t.js +1 -0
- package/dist/assets/{workflow-detail-panel-CXQymzrA.js → workflow-detail-panel-C0kN-iH3.js} +1 -1
- package/dist/assets/{workflow-store-DMcem5b6.js → workflow-store-BXqyb8CL.js} +1 -1
- package/dist/assets/{workspace-page-CHN0AzFJ.js → workspace-page-Mj_A1eeR.js} +1 -1
- package/dist/assets/{workspace-tree-query-BmugmuTC.js → workspace-tree-query-Dyls8wmV.js} +1 -1
- package/dist/index.html +93 -93
- package/package.json +1 -1
- package/dist/assets/account-C-_tLpl9.js +0 -1
- package/dist/assets/api-Cet3wU2m.js +0 -1
- package/dist/assets/channels-page-route-BVzZL9QF.js +0 -9
- package/dist/assets/checkout-return-target-Bj6qL3Z7.js +0 -1
- package/dist/assets/command-palette-window-page-nIdxmxPV.js +0 -1
- package/dist/assets/companion-surface-page-BZHSeP1U.js +0 -1
- package/dist/assets/esm-B8RIzuiy.js +0 -2
- package/dist/assets/file-markdown-Br-X9E8g.js +0 -2
- package/dist/assets/first-run-scope-CGwas_dv.js +0 -1
- package/dist/assets/format-usd-BSn1PAt3.js +0 -1
- package/dist/assets/general-page-DqxymzlR.js +0 -1
- package/dist/assets/home-page-route--ZWIkqRA.js +0 -1
- package/dist/assets/home-tool-permission-card-BGkMa_5c.js +0 -1
- package/dist/assets/index-yCM21OWQ.css +0 -2
- package/dist/assets/login-page-DsrM-8gG.js +0 -1
- package/dist/assets/memory-router-playground-page-Bvv1GiG1.js +0 -1
- package/dist/assets/multi-activity-group-CvLkSXkq.js +0 -1
- package/dist/assets/native-anchor-WUfwamgX.js +0 -1
- package/dist/assets/native-auth-error-B4gY5JEl.js +0 -1
- package/dist/assets/open-workspace-file-CDO9erng.js +0 -2
- package/dist/assets/page-shell-3Yi5Ezsv.js +0 -1
- package/dist/assets/page-surface-store-d61YqYCV.js +0 -1
- package/dist/assets/research-onboarding-route-Cv91i-43.js +0 -50
- package/dist/assets/routes-Cu81Z_6p.js +0 -24
- package/dist/assets/settings-DWADkKSC.js +0 -1
- package/dist/assets/settings-navigation-Dt128ttq.js +0 -1
- package/dist/assets/use-command-palette-sections-D3ZIddUs.js +0 -1
- package/dist/assets/use-edge-swipe-back-Dl-lRTON.js +0 -2
- package/dist/assets/use-onboarding-login-BosEuDpc.js +0 -1
- package/dist/assets/use-transcript-message-by-id-DTaTEqgT.js +0 -1
- package/dist/assets/useTranslation-DdVCKPgw.js +0 -1
- package/dist/assets/welcome-screen-Cghao5xK.js +0 -1
- /package/dist/assets/{app-types-DhugcUAb.js → app-types-DET4dder.js} +0 -0
- /package/dist/assets/{archive-redirect-page-DddErONf.js → archive-redirect-page-LFqfq3Zx.js} +0 -0
- /package/dist/assets/{billing-redirect-page-CaXtswvd.js → billing-redirect-page-B6zuKMxb.js} +0 -0
- /package/dist/assets/{build.umd-Bnx74y6d.js → build.umd-CwkQd6wk.js} +0 -0
- /package/dist/assets/{channels-BdtsaKuZ.js → channels-CXuBInAc.js} +0 -0
- /package/dist/assets/{common-CYa3Lx5T.js → common-EmSgsWNa.js} +0 -0
- /package/dist/assets/{contacts-Adtv7fIG.js → contacts-BRU7ohw2.js} +0 -0
- /package/dist/assets/{credential-requests-BjLAoauv.js → credential-requests-BbBZKJHx.js} +0 -0
- /package/dist/assets/{danger-zone-redirect-page-C45lMfXW.js → danger-zone-redirect-page-BuIG9f9S.js} +0 -0
- /package/dist/assets/{definitions-BvE4YCqW.js → definitions-Co0yLSy_.js} +0 -0
- /package/dist/assets/{definitions-BOuhvvgh.js → definitions-Yz8Uao4u.js} +0 -0
- /package/dist/assets/{devices-redirect-page-CTLNcuXg.js → devices-redirect-page-BoKYF1E9.js} +0 -0
- /package/dist/assets/{diff-rows-CMQi83GC.js → diff-rows-BrFK496i.js} +0 -0
- /package/dist/assets/{emoji-catalog-data-zwouAP3d.js → emoji-catalog-data-BIIBfSqk.js} +0 -0
- /package/dist/assets/{environment-store-CgcCuCfv.js → environment-store-C4So_j-o.js} +0 -0
- /package/dist/assets/{esm-B3RQnhQB.js → esm-BJhqsukI.js} +0 -0
- /package/dist/assets/{esm-U4mAZE_5.js → esm-CPFvOH-c.js} +0 -0
- /package/dist/assets/{external-urls-B0QJBkzP.js → external-urls-Bg18AU4S.js} +0 -0
- /package/dist/assets/{file-editor-C2Qy2Ujg.js → file-editor-BwdObVSu.js} +0 -0
- /package/dist/assets/{home-DaG8KIqs.js → home-BwSxL4rM.js} +0 -0
- /package/dist/assets/{intelligence-B920vsi4.js → intelligence-DXpXyKbw.js} +0 -0
- /package/dist/assets/{keyboard-shortcuts-redirect-page-DSUfuOqd.js → keyboard-shortcuts-redirect-page-DSnux9sJ.js} +0 -0
- /package/dist/assets/{library-DqQriY4U.js → library-CuKVNDEp.js} +0 -0
- /package/dist/assets/{link-click-3KBltS8g.js → link-click-BsxbQxDe.js} +0 -0
- /package/dist/assets/{logs-s74ABgur.js → logs-Blq4k473.js} +0 -0
- /package/dist/assets/{machine-sizes-BEgYDPIN.js → machine-sizes-DzJ0TVYS.js} +0 -0
- /package/dist/assets/{media-preview-C0jyQw5_.js → media-preview-HgLvcAQ9.js} +0 -0
- /package/dist/assets/{onboarding-orcvuvpJ.js → onboarding-DK0I_g8T.js} +0 -0
- /package/dist/assets/{page-empty-state-BG1VeXc8.js → page-empty-state-CzHxZkBR.js} +0 -0
- /package/dist/assets/{password-reset-page-D4zTOGaM.js → password-reset-page-D8ONrPU-.js} +0 -0
- /package/dist/assets/{pdf-CjG-njep.js → pdf-UON6A_nT.js} +0 -0
- /package/dist/assets/{plugin-attribution-CcHpmela.js → plugin-attribution-C0u-eDRH.js} +0 -0
- /package/dist/assets/{plugin-detail-page-DWr7S8VR.js → plugin-detail-page--CvX0OXv.js} +0 -0
- /package/dist/assets/{plugins-page-BZLdfa7d.js → plugins-page-CZ16U_6n.js} +0 -0
- /package/dist/assets/{profile-metadata-CsakJtzD.js → profile-metadata-D9zzZn4_.js} +0 -0
- /package/dist/assets/{provider-key-CsMdPcM5.js → provider-key-DpdSx5gG.js} +0 -0
- /package/dist/assets/{radio-card-nav-D_-kt3tm.js → radio-card-nav-CrM7VJUk.js} +0 -0
- /package/dist/assets/{remote-web-DxCgPeJc.js → remote-web-DBCYTF2P.js} +0 -0
- /package/dist/assets/{schedules-D3oXqJMY.js → schedules-C3wE8OML.js} +0 -0
- /package/dist/assets/{schedules-rtwsTU7E.js → schedules-Co4-ymK5.js} +0 -0
- /package/dist/assets/{security-redirect-page-DbXxE5Ym.js → security-redirect-page-D6x3MANY.js} +0 -0
- /package/dist/assets/{setting-row-C0mDhzZy.js → setting-row-BvQpFvtr.js} +0 -0
- /package/dist/assets/{signup-shell-DnLhiMGV.js → signup-shell-DW976E_0.js} +0 -0
- /package/dist/assets/{skill-icon-sj-wJGzd.js → skill-icon-yVnZg-J1.js} +0 -0
- /package/dist/assets/{skills-page-yj4WNgG3.js → skills-page-B_VTCiN2.js} +0 -0
- /package/dist/assets/{sounds-page-Co2G6n-5.js → sounds-page-BdSO1UIf.js} +0 -0
- /package/dist/assets/{system-events-redirect-page-Dbxsscgn.js → system-events-redirect-page-DbyqOqe_.js} +0 -0
- /package/dist/assets/{terminal-og9TTXfZ.js → terminal-_tzbWcM4.js} +0 -0
- /package/dist/assets/{usage-redirect-page-NZfMbBv6.js → usage-redirect-page-DyTnwv4x.js} +0 -0
- /package/dist/assets/{use-skill-detail-files-DNaNHaP0.js → use-skill-detail-files-Bg4G44J3.js} +0 -0
- /package/dist/assets/{use-supports-credentials-settings-BCD9S39r.js → use-supports-credentials-settings-Cj-Py42f.js} +0 -0
- /package/dist/assets/{use-truncated-blob-text-CHF4X4vL.js → use-truncated-blob-text-BYAPiP8I.js} +0 -0
- /package/dist/assets/{weather-forecast-display-8i3-jfUZ.js → weather-forecast-display-D3IBgGHv.js} +0 -0
- /package/dist/assets/{web-DXzSQlx4.js → web-B60tNeyj.js} +0 -0
- /package/dist/assets/{web-Crg_ekZH.js → web-BSizndvP.js} +0 -0
- /package/dist/assets/{web-to2ecOqW.js → web-CXad-fWd.js} +0 -0
- /package/dist/assets/{web-xhYMQG7j.js → web-Cpz2h_dP.js} +0 -0
- /package/dist/assets/{web-eg_n1fSm.js → web-Cr238HhI.js} +0 -0
- /package/dist/assets/{web-B5o07_c8.js → web-Nd-L7NoL.js} +0 -0
- /package/dist/assets/{web-Ctf28EEk.js → web-W2HEHjFb.js} +0 -0
- /package/dist/assets/{workspace-BBqltPoi.js → workspace-BFa6JWKe.js} +0 -0
- /package/dist/assets/{xterm-DJn4nvHR.js → xterm-DFQikp5h.js} +0 -0
- /package/dist/assets/{xterm-addon-fit-DEYHenuA.js → xterm-addon-fit-B04vX_IV.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{c as t,r as n,s as r,t as i}from"./local-settings-Bx7FsNo5.js";import{s as a}from"./device-settings-DZvv4pnY.js";import{t as o}from"./capture-error-DiNp24s6.js";import{t as s}from"./react-BFJW0bSv.js";import{t as c}from"./button-VkxVX0DM.js";import{t as l}from"./jsx-runtime-BJ8jcmzB.js";import{t as u}from"./createLucideIcon-B-ZPaMbU.js";import{t as d}from"./checkbox-CyG1nZhR.js";import{t as f}from"./triangle-alert-43gIbLca.js";import{t as p}from"./notice-BlYF-xU3.js";import"./src-qDZBwoEm.js";import{t as m}from"./modal-UYNawsIu.js";import{i as h,t as g}from"./api-CQ3nejmH.js";import{t as _}from"./client-feature-flag-store-CT2T_Fg7.js";import{i as v,t as y}from"./dist-D7UWVopK.js";import{a as b,i as x}from"./typed-storage-BNw603jr.js";import{n as S,r as C,t as ee}from"./theme-preferences-CAlH0BJX.js";import{t as w}from"./use-bus-subscription-BuhDYgS1.js";import{o as te}from"./funnel-events-BfR30ND5.js";var T=u(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),ne=u(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),E=e(s(),1),D=`NativeLaunchScreen`,O=v(D);function k(e){return e===`velvet`?`dark`:e}function A(){return y.isNativePlatform()&&y.getPlatform()===`android`&&y.isPluginAvailable(D)}async function j(e){if(A())try{await O.ready({theme:k(e)})}catch(e){o(e,{context:`native_launch_screen_ready`,bestEffort:!0})}}async function re(e){if(A())try{await O.setTheme({theme:k(e)})}catch(e){o(e,{context:`native_launch_screen_theme_sync`,bestEffort:!0})}}function ie(){return _.use.stringFlags().proactiveTips??`off`}function ae(e){return e===`on`}function M(e){return e===void 0||typeof e==`number`&&Number.isFinite(e)}function oe(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return typeof t.shownCount==`number`&&Number.isFinite(t.shownCount)&&M(t.dismissedAt)&&M(t.lastShownAt)}function se(e){let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return null;let n={};for(let[e,r]of Object.entries(t))oe(r)&&(n[e]=r);return n}function ce(e){let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}var N=x({key:`device:tips:records`,scope:`device`,parse:se,serialize:JSON.stringify,fallback:{}}),le=x({key:`device:tips:enabled`,scope:`device`,parse:b,serialize:String,fallback:!0}),P=x({key:`device:tips:first_seen_at`,scope:`device`,parse:ce,serialize:String,fallback:0});function ue(){P.load()===0&&P.save(Date.now())}function de(e,t){let n=N.load(),r=n[e];N.save({...n,[e]:{...r,lastShownAt:t,shownCount:(r?.shownCount??0)+1}})}function F(e,t){let n=N.load(),r=n[e];N.save({...n,[e]:{...r,dismissedAt:t,shownCount:r?.shownCount??0}})}var I=`proactive-tips-v1`,L={impression:0,learn_more:1,dismiss:2,dont_show_again:3,click:4,completion:5};function R(e,t,n){te({stepName:t,stepIndex:L[t]},{funnelVersion:I,screen:e,variant:n})}function z(){let e=_.use.velvet(),[t,n]=(0,E.useState)(()=>S({velvetEnabled:e}));return(0,E.useEffect)(()=>{n(S({velvetEnabled:e}))},[e]),(0,E.useEffect)(()=>a(`theme`,()=>{n(S({velvetEnabled:e}))}),[e]),(0,E.useEffect)(()=>{ee(t)},[t]),{theme:t,setThemePreference:e=>{n(e),C(e),re(e)}}}var B=6e4;function V(e){return!!(e?.enabled&&e.effectivelyLocked)}function H(e){return V(e)?e.acknowledged&&!e.overrideActive:!1}function U(e){return!!(e&&V(e)&&!e.acknowledged&&!e.overrideActive)}function fe(e){return!!(e?.enabled&&e.state===`warning`)}function pe(e){return U(e)?`acknowledgement-required`:H(e)?`cleanup`:fe(e)?`warning`:`inactive`}function me({monitorEnabled:e,hasResolvedStatus:t,status:n}){return!e||!t?null:U(n)?`acknowledgement-required`:null}function he(e){return`Storage cleanup mode must be acknowledged before sending messages.`}function ge(e,t){return e===t?!0:!e||!t?!1:e.enabled===t.enabled&&e.state===t.state&&e.locked===t.locked&&e.acknowledged===t.acknowledged&&e.overrideActive===t.overrideActive&&e.effectivelyLocked===t.effectivelyLocked&&e.lockId===t.lockId&&e.usagePercent===t.usagePercent&&e.thresholdPercent===t.thresholdPercent&&e.path===t.path&&e.lastCheckedAt===t.lastCheckedAt&&e.error===t.error&&e.blockedCapabilities.length===t.blockedCapabilities.length&&e.blockedCapabilities.every((e,n)=>e===t.blockedCapabilities[n])}function _e(e){return e?.usagePercent==null||!Number.isFinite(e.usagePercent)?`Unknown`:`${Math.round(e.usagePercent)}%`}var W={assistantId:null,status:null,hasResolvedStatus:!1};function ve(e,t){return e instanceof Error?e:Error(t)}function ye({assistantId:e,enabled:t,refreshKey:n,cadenceMs:r=B}){let[i,a]=(0,E.useState)(W),[o,s]=(0,E.useState)(!1),[c,l]=(0,E.useState)(null),u=(0,E.useRef)(e),d=(0,E.useRef)(t),f=(0,E.useRef)(0),p=(0,E.useRef)(0);(0,E.useLayoutEffect)(()=>{u.current=e,d.current=t}),(0,E.useEffect)(()=>{f.current+=1,a(W),l(null),s(!1)},[e,t]);let m=(0,E.useCallback)((e,t)=>d.current&&u.current===e&&f.current===t,[]),_=(0,E.useCallback)((e,t,n,r)=>{m(e,r)&&a(r=>r.assistantId===e&&r.hasResolvedStatus===n&&ge(r.status,t)?r:{assistantId:e,status:t,hasResolvedStatus:n})},[m]),v=(0,E.useCallback)(()=>{f.current+=1,a(W)},[]),y=(0,E.useCallback)(async()=>{let n=e;if(!t||!n){v();return}let r=f.current,i=p.current+1;p.current=i;try{let e=await h(n);if(p.current!==i)return;if(!e.ok){_(n,null,!1,r);return}_(n,e.data.status,!0,r)}catch{if(p.current!==i)return;_(n,null,!1,r)}},[e,_,v,t]);(0,E.useEffect)(()=>{if(!t||!e)return;y();let n=window.setInterval(()=>{y()},r);return()=>{window.clearInterval(n)}},[e,r,t,y,n]),w(`app.resume`,()=>{y()});let b=(0,E.useCallback)(n=>{if(!t||!e){v();return}let r=f.current+1;f.current=r,s(!1),l(null),_(e,n,!0,r)},[e,_,v,t]);w(`sse.event`,e=>{let t=e.message;t.type===`disk_pressure_status_changed`&&b(t.status)});let x=(0,E.useCallback)(async()=>{let n=e;if(!t||!n){v();return}let r=f.current+1;f.current=r,s(!0),l(null);try{let e=await g(n);if(!e.ok)throw Error(`Failed to acknowledge assistant disk pressure.`);if(!m(n,r))return;let t=f.current+1;f.current=t,_(n,e.data.status,!0,t),s(!1)}catch(e){m(n,r)&&l(ve(e,`Failed to acknowledge assistant disk pressure.`))}finally{m(n,r)&&s(!1)}},[e,_,v,t,m]),S=t&&i.assistantId===e?i.status:null,C=!!(t&&e&&i.assistantId===e&&i.hasResolvedStatus);return{status:S,mode:(0,E.useMemo)(()=>pe(S),[S]),hasResolvedStatus:C,isAcknowledging:o,acknowledgeError:c,acknowledge:x,applyStatusEvent:b,refresh:y}}var G=l();function be(e){let{status:t,mode:n,isAcknowledging:r=!1,acknowledgeError:i,onAcknowledge:a,onDismissWarning:o,onReviewWorkspaceData:s,onUpgradeStorage:l}=e,[u,h]=(0,E.useState)(!1),[g,_]=(0,E.useState)(!1),v=_e(t);if(n===`warning`){let e=t.usagePercent??0;return(0,G.jsx)(p,{tone:`warning`,title:`Your storage is almost full`,icon:(0,G.jsx)(T,{className:`h-4 w-4`,"aria-hidden":`true`}),onDismiss:o?()=>o(g):void 0,className:`p-4`,"data-testid":`disk-pressure-banner`,children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`div`,{className:`h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--surface-active)]`,children:(0,G.jsx)(`div`,{className:`h-full rounded-full transition-[width] duration-300`,style:{width:`${e}%`,backgroundColor:`var(--system-mid-strong)`}})}),(0,G.jsx)(`span`,{className:`text-body-medium-default shrink-0 tabular-nums text-[color:var(--system-mid-strong)]`,children:v})]}),(0,G.jsx)(`p`,{className:`m-0`,children:l?`Free up space or add more storage to avoid interruptions.`:`Free up space to avoid interruptions.`}),(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[s&&(0,G.jsx)(c,{variant:`outlined`,size:`compact`,onClick:s,children:`Manage Storage`}),l&&(0,G.jsx)(c,{variant:`outlined`,size:`compact`,onClick:l,children:`Upgrade`}),o?(0,G.jsx)(d,{className:`ml-auto`,checked:g,onCheckedChange:e=>_(e===!0),label:`Don't show again`,"data-testid":`disk-pressure-banner-dont-show-again`}):null]})]})})}if(n===`cleanup`){let e=t.usagePercent??0;return(0,G.jsx)(p,{tone:`warning`,title:`Cleanup mode is active`,icon:(0,G.jsx)(T,{className:`h-4 w-4`,"aria-hidden":`true`}),className:`p-4`,"data-testid":`disk-pressure-banner`,children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`div`,{className:`h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--surface-active)]`,children:(0,G.jsx)(`div`,{className:`h-full rounded-full transition-[width] duration-300`,style:{width:`${e}%`,backgroundColor:`var(--system-mid-strong)`}})}),(0,G.jsx)(`span`,{className:`text-body-medium-default shrink-0 tabular-nums text-[color:var(--system-mid-strong)]`,children:v})]}),(0,G.jsx)(`p`,{className:`m-0`,children:`Prompt your assistant to free up space before it runs out and enters a locked state.`}),(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[s&&(0,G.jsx)(c,{variant:`outlined`,size:`compact`,onClick:s,children:`Manage Storage`}),l&&(0,G.jsx)(c,{variant:`outlined`,size:`compact`,onClick:l,children:`Upgrade`})]})]})})}let y=t.usagePercent??0;return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(p,{tone:`error`,title:`Storage is critically low`,icon:(0,G.jsx)(T,{className:`h-4 w-4`,"aria-hidden":`true`}),className:`p-4`,"data-testid":`disk-pressure-banner`,children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`div`,{className:`h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--surface-active)]`,children:(0,G.jsx)(`div`,{className:`h-full rounded-full transition-[width] duration-300`,style:{width:`${y}%`,backgroundColor:`var(--system-negative-strong)`}})}),(0,G.jsx)(`span`,{className:`text-body-medium-default shrink-0 tabular-nums text-[color:var(--system-negative-strong)]`,children:v})]}),(0,G.jsx)(`p`,{className:`m-0`,children:`Your assistant will enter a locked state if it runs out of storage.`}),i?(0,G.jsx)(`span`,{className:`text-[var(--system-negative-strong)]`,role:`alert`,children:i}):null,(0,G.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(0,G.jsx)(c,{variant:`primary`,size:`compact`,onClick:()=>h(!0),children:`Review`})})]})}),(0,G.jsx)(m.Root,{open:u,onOpenChange:e=>{e||h(!1)},children:(0,G.jsxs)(m.Content,{size:`sm`,children:[(0,G.jsx)(m.Header,{icon:f,children:(0,G.jsx)(m.Title,{children:`Storage is critically low`})}),(0,G.jsx)(m.Body,{children:(0,G.jsx)(m.Description,{children:`Your assistant will enter a locked state if it runs out of storage. You should either prompt your assistant to free up space or increase your storage.`})}),(0,G.jsxs)(m.Footer,{children:[l&&(0,G.jsx)(c,{variant:`outlined`,onClick:()=>{h(!1),l()},children:`Upgrade`}),(0,G.jsx)(c,{variant:`primary`,disabled:r,onClick:()=>{a(),h(!1)},children:r?`Acknowledging...`:`Acknowledge`})]})]})})]})}var xe=`https://apps.apple.com/us/app/vellum-assistant/id6759934423`,K=`ai.vellum.assistant`,Se=`https://play.google.com/store/apps/details?id=${K}`,q={ios:{downloaded:`app.iosNudge.downloaded`,bannerDismissed:`app.iosNudge.bannerDismissed`,assistantTurnsSeen:`app.iosNudge.assistantTurnsSeen`},android:{downloaded:`app.androidNudge.downloaded`,bannerDismissed:`app.androidNudge.bannerDismissed`,assistantTurnsSeen:`app.androidNudge.assistantTurnsSeen`}};function Ce(){let e=(void 0)?.trim();if(!e)return null;try{let t=new URL(e);return t.protocol===`https:`&&t.hostname===`play.google.com`&&t.pathname===`/store/apps/details`&&t.searchParams.get(`id`)===K?Se:null}catch(e){if(e instanceof TypeError)return null;throw e}}function J(e){return e===`ios`?`iOS`:`Android`}function Y(e){if(e===`ios`)return{platform:e,appName:J(e),storeUrl:xe};let t=Ce();return t?{platform:e,appName:J(e),storeUrl:t}:null}function we(e){return i(q[e].downloaded,!1)}function X(e){r(q[e].downloaded,!0)}function Te(e){return i(q[e].bannerDismissed,!1)}function Z(e){r(q[e].bannerDismissed,!0)}function Q(e){return Math.max(0,n(q[e].assistantTurnsSeen,0))}function Ee(e,n=1){n<=0||t(q[e].assistantTurnsSeen,Q(e)+n)}function $(e){let t=Y(e);return t?(window.open(t.storeUrl,`_blank`,`noopener,noreferrer`),!0):!1}function De(e){let[t,n]=(0,E.useState)(!1),[r,i]=(0,E.useState)(!1),a=Y(e)!==null;(0,E.useEffect)(()=>{n(we(e)),i(Te(e))},[e]);let o=(0,E.useCallback)(()=>{$(e)&&(X(e),n(!0))},[e]),s=(0,E.useCallback)(()=>{Z(e),i(!0)},[e]);return(0,E.useMemo)(()=>({bannerShouldShow:a&&!t&&!r,handleDownload:o,handleBannerDismiss:s}),[a,t,r,o,s])}var Oe=x({key:`device:cmd_enter_to_send`,scope:`device`,parse:b,serialize:String,fallback:!1}),ke=x({key:`device:show_context_window_indicator`,scope:`device`,parse:b,serialize:String,fallback:!1});export{ie as C,T as E,ae as S,ne as T,F as _,Ee as a,le as b,De as c,ye as d,he as f,ue as g,R as h,Y as i,X as l,z as m,ke as n,$ as o,me as p,J as r,Q as s,Oe as t,be as u,de as v,j as w,P as x,N as y};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{c as t,r as n,s as r,t as i}from"./local-settings-Bx7FsNo5.js";import{s as a}from"./device-settings-DZvv4pnY.js";import{t as o}from"./capture-error-DiNp24s6.js";import{t as s}from"./react-BFJW0bSv.js";import{t as c}from"./button-VkxVX0DM.js";import{t as l}from"./jsx-runtime-BJ8jcmzB.js";import{t as u}from"./createLucideIcon-B-ZPaMbU.js";import{t as d}from"./checkbox-CyG1nZhR.js";import{t as f}from"./triangle-alert-43gIbLca.js";import{t as p}from"./notice-BlYF-xU3.js";import"./src-CImIAPTd.js";import{t as m}from"./modal-UYNawsIu.js";import{i as h,t as g}from"./api-Cx3i50oG.js";import{t as _}from"./client-feature-flag-store-CT2T_Fg7.js";import{i as v,t as y}from"./dist-D7UWVopK.js";import{a as b,i as x}from"./typed-storage-BNw603jr.js";import{n as S,r as C,t as ee}from"./theme-preferences-CAlH0BJX.js";import{t as w}from"./use-bus-subscription-BuhDYgS1.js";import{o as te}from"./funnel-events-BP3XPaB5.js";var T=u(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),ne=u(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),E=e(s(),1),D=`NativeLaunchScreen`,O=v(D);function k(e){return e===`velvet`?`dark`:e}function A(){return y.isNativePlatform()&&y.getPlatform()===`android`&&y.isPluginAvailable(D)}async function j(e){if(A())try{await O.ready({theme:k(e)})}catch(e){o(e,{context:`native_launch_screen_ready`,bestEffort:!0})}}async function re(e){if(A())try{await O.setTheme({theme:k(e)})}catch(e){o(e,{context:`native_launch_screen_theme_sync`,bestEffort:!0})}}function ie(){return _.use.stringFlags().proactiveTips??`off`}function ae(e){return e===`on`}function M(e){return e===void 0||typeof e==`number`&&Number.isFinite(e)}function oe(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return typeof t.shownCount==`number`&&Number.isFinite(t.shownCount)&&M(t.dismissedAt)&&M(t.lastShownAt)}function se(e){let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return null;let n={};for(let[e,r]of Object.entries(t))oe(r)&&(n[e]=r);return n}function ce(e){let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}var N=x({key:`device:tips:records`,scope:`device`,parse:se,serialize:JSON.stringify,fallback:{}}),le=x({key:`device:tips:enabled`,scope:`device`,parse:b,serialize:String,fallback:!0}),P=x({key:`device:tips:first_seen_at`,scope:`device`,parse:ce,serialize:String,fallback:0});function ue(){P.load()===0&&P.save(Date.now())}function de(e,t){let n=N.load(),r=n[e];N.save({...n,[e]:{...r,lastShownAt:t,shownCount:(r?.shownCount??0)+1}})}function F(e,t){let n=N.load(),r=n[e];N.save({...n,[e]:{...r,dismissedAt:t,shownCount:r?.shownCount??0}})}var I=`proactive-tips-v1`,L={impression:0,learn_more:1,dismiss:2,dont_show_again:3,click:4,completion:5};function R(e,t,n){te({stepName:t,stepIndex:L[t]},{funnelVersion:I,screen:e,variant:n})}function z(){let e=_.use.velvet(),[t,n]=(0,E.useState)(()=>S({velvetEnabled:e}));return(0,E.useEffect)(()=>{n(S({velvetEnabled:e}))},[e]),(0,E.useEffect)(()=>a(`theme`,()=>{n(S({velvetEnabled:e}))}),[e]),(0,E.useEffect)(()=>{ee(t)},[t]),{theme:t,setThemePreference:e=>{n(e),C(e),re(e)}}}var B=6e4;function V(e){return!!(e?.enabled&&e.effectivelyLocked)}function H(e){return V(e)?e.acknowledged&&!e.overrideActive:!1}function U(e){return!!(e&&V(e)&&!e.acknowledged&&!e.overrideActive)}function fe(e){return!!(e?.enabled&&e.state===`warning`)}function pe(e){return U(e)?`acknowledgement-required`:H(e)?`cleanup`:fe(e)?`warning`:`inactive`}function me({monitorEnabled:e,hasResolvedStatus:t,status:n}){return!e||!t?null:U(n)?`acknowledgement-required`:null}function he(e){return`Storage cleanup mode must be acknowledged before sending messages.`}function ge(e,t){return e===t?!0:!e||!t?!1:e.enabled===t.enabled&&e.state===t.state&&e.locked===t.locked&&e.acknowledged===t.acknowledged&&e.overrideActive===t.overrideActive&&e.effectivelyLocked===t.effectivelyLocked&&e.lockId===t.lockId&&e.usagePercent===t.usagePercent&&e.thresholdPercent===t.thresholdPercent&&e.path===t.path&&e.lastCheckedAt===t.lastCheckedAt&&e.error===t.error&&e.blockedCapabilities.length===t.blockedCapabilities.length&&e.blockedCapabilities.every((e,n)=>e===t.blockedCapabilities[n])}function _e(e){return e?.usagePercent==null||!Number.isFinite(e.usagePercent)?`Unknown`:`${Math.round(e.usagePercent)}%`}var W={assistantId:null,status:null,hasResolvedStatus:!1};function ve(e,t){return e instanceof Error?e:Error(t)}function ye({assistantId:e,enabled:t,refreshKey:n,cadenceMs:r=B}){let[i,a]=(0,E.useState)(W),[o,s]=(0,E.useState)(!1),[c,l]=(0,E.useState)(null),u=(0,E.useRef)(e),d=(0,E.useRef)(t),f=(0,E.useRef)(0),p=(0,E.useRef)(0);(0,E.useLayoutEffect)(()=>{u.current=e,d.current=t}),(0,E.useEffect)(()=>{f.current+=1,a(W),l(null),s(!1)},[e,t]);let m=(0,E.useCallback)((e,t)=>d.current&&u.current===e&&f.current===t,[]),_=(0,E.useCallback)((e,t,n,r)=>{m(e,r)&&a(r=>r.assistantId===e&&r.hasResolvedStatus===n&&ge(r.status,t)?r:{assistantId:e,status:t,hasResolvedStatus:n})},[m]),v=(0,E.useCallback)(()=>{f.current+=1,a(W)},[]),y=(0,E.useCallback)(async()=>{let n=e;if(!t||!n){v();return}let r=f.current,i=p.current+1;p.current=i;try{let e=await h(n);if(p.current!==i)return;if(!e.ok){_(n,null,!1,r);return}_(n,e.data.status,!0,r)}catch{if(p.current!==i)return;_(n,null,!1,r)}},[e,_,v,t]);(0,E.useEffect)(()=>{if(!t||!e)return;y();let n=window.setInterval(()=>{y()},r);return()=>{window.clearInterval(n)}},[e,r,t,y,n]),w(`app.resume`,()=>{y()});let b=(0,E.useCallback)(n=>{if(!t||!e){v();return}let r=f.current+1;f.current=r,s(!1),l(null),_(e,n,!0,r)},[e,_,v,t]);w(`sse.event`,e=>{let t=e.message;t.type===`disk_pressure_status_changed`&&b(t.status)});let x=(0,E.useCallback)(async()=>{let n=e;if(!t||!n){v();return}let r=f.current+1;f.current=r,s(!0),l(null);try{let e=await g(n);if(!e.ok)throw Error(`Failed to acknowledge assistant disk pressure.`);if(!m(n,r))return;let t=f.current+1;f.current=t,_(n,e.data.status,!0,t),s(!1)}catch(e){m(n,r)&&l(ve(e,`Failed to acknowledge assistant disk pressure.`))}finally{m(n,r)&&s(!1)}},[e,_,v,t,m]),S=t&&i.assistantId===e?i.status:null,C=!!(t&&e&&i.assistantId===e&&i.hasResolvedStatus);return{status:S,mode:(0,E.useMemo)(()=>pe(S),[S]),hasResolvedStatus:C,isAcknowledging:o,acknowledgeError:c,acknowledge:x,applyStatusEvent:b,refresh:y}}var G=l();function be(e){let{status:t,mode:n,isAcknowledging:r=!1,acknowledgeError:i,onAcknowledge:a,onDismissWarning:o,onReviewWorkspaceData:s,onUpgradeStorage:l}=e,[u,h]=(0,E.useState)(!1),[g,_]=(0,E.useState)(!1),v=_e(t);if(n===`warning`){let e=t.usagePercent??0;return(0,G.jsx)(p,{tone:`warning`,title:`Your storage is almost full`,icon:(0,G.jsx)(T,{className:`h-4 w-4`,"aria-hidden":`true`}),onDismiss:o?()=>o(g):void 0,className:`p-4`,"data-testid":`disk-pressure-banner`,children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`div`,{className:`h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--surface-active)]`,children:(0,G.jsx)(`div`,{className:`h-full rounded-full transition-[width] duration-300`,style:{width:`${e}%`,backgroundColor:`var(--system-mid-strong)`}})}),(0,G.jsx)(`span`,{className:`text-body-medium-default shrink-0 tabular-nums text-[color:var(--system-mid-strong)]`,children:v})]}),(0,G.jsx)(`p`,{className:`m-0`,children:l?`Free up space or add more storage to avoid interruptions.`:`Free up space to avoid interruptions.`}),(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[s&&(0,G.jsx)(c,{variant:`outlined`,size:`compact`,onClick:s,children:`Manage Storage`}),l&&(0,G.jsx)(c,{variant:`outlined`,size:`compact`,onClick:l,children:`Upgrade`}),o?(0,G.jsx)(d,{className:`ml-auto`,checked:g,onCheckedChange:e=>_(e===!0),label:`Don't show again`,"data-testid":`disk-pressure-banner-dont-show-again`}):null]})]})})}if(n===`cleanup`){let e=t.usagePercent??0;return(0,G.jsx)(p,{tone:`warning`,title:`Cleanup mode is active`,icon:(0,G.jsx)(T,{className:`h-4 w-4`,"aria-hidden":`true`}),className:`p-4`,"data-testid":`disk-pressure-banner`,children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`div`,{className:`h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--surface-active)]`,children:(0,G.jsx)(`div`,{className:`h-full rounded-full transition-[width] duration-300`,style:{width:`${e}%`,backgroundColor:`var(--system-mid-strong)`}})}),(0,G.jsx)(`span`,{className:`text-body-medium-default shrink-0 tabular-nums text-[color:var(--system-mid-strong)]`,children:v})]}),(0,G.jsx)(`p`,{className:`m-0`,children:`Prompt your assistant to free up space before it runs out and enters a locked state.`}),(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[s&&(0,G.jsx)(c,{variant:`outlined`,size:`compact`,onClick:s,children:`Manage Storage`}),l&&(0,G.jsx)(c,{variant:`outlined`,size:`compact`,onClick:l,children:`Upgrade`})]})]})})}let y=t.usagePercent??0;return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(p,{tone:`error`,title:`Storage is critically low`,icon:(0,G.jsx)(T,{className:`h-4 w-4`,"aria-hidden":`true`}),className:`p-4`,"data-testid":`disk-pressure-banner`,children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`div`,{className:`h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--surface-active)]`,children:(0,G.jsx)(`div`,{className:`h-full rounded-full transition-[width] duration-300`,style:{width:`${y}%`,backgroundColor:`var(--system-negative-strong)`}})}),(0,G.jsx)(`span`,{className:`text-body-medium-default shrink-0 tabular-nums text-[color:var(--system-negative-strong)]`,children:v})]}),(0,G.jsx)(`p`,{className:`m-0`,children:`Your assistant will enter a locked state if it runs out of storage.`}),i?(0,G.jsx)(`span`,{className:`text-[var(--system-negative-strong)]`,role:`alert`,children:i}):null,(0,G.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(0,G.jsx)(c,{variant:`primary`,size:`compact`,onClick:()=>h(!0),children:`Review`})})]})}),(0,G.jsx)(m.Root,{open:u,onOpenChange:e=>{e||h(!1)},children:(0,G.jsxs)(m.Content,{size:`sm`,children:[(0,G.jsx)(m.Header,{icon:f,children:(0,G.jsx)(m.Title,{children:`Storage is critically low`})}),(0,G.jsx)(m.Body,{children:(0,G.jsx)(m.Description,{children:`Your assistant will enter a locked state if it runs out of storage. You should either prompt your assistant to free up space or increase your storage.`})}),(0,G.jsxs)(m.Footer,{children:[l&&(0,G.jsx)(c,{variant:`outlined`,onClick:()=>{h(!1),l()},children:`Upgrade`}),(0,G.jsx)(c,{variant:`primary`,disabled:r,onClick:()=>{a(),h(!1)},children:r?`Acknowledging...`:`Acknowledge`})]})]})})]})}var xe=`https://apps.apple.com/us/app/vellum-assistant/id6759934423`,K=`ai.vellum.assistant`,Se=`https://play.google.com/store/apps/details?id=${K}`,q={ios:{downloaded:`app.iosNudge.downloaded`,bannerDismissed:`app.iosNudge.bannerDismissed`,assistantTurnsSeen:`app.iosNudge.assistantTurnsSeen`},android:{downloaded:`app.androidNudge.downloaded`,bannerDismissed:`app.androidNudge.bannerDismissed`,assistantTurnsSeen:`app.androidNudge.assistantTurnsSeen`}};function Ce(){let e=(void 0)?.trim();if(!e)return null;try{let t=new URL(e);return t.protocol===`https:`&&t.hostname===`play.google.com`&&t.pathname===`/store/apps/details`&&t.searchParams.get(`id`)===K?Se:null}catch(e){if(e instanceof TypeError)return null;throw e}}function J(e){return e===`ios`?`iOS`:`Android`}function Y(e){if(e===`ios`)return{platform:e,appName:J(e),storeUrl:xe};let t=Ce();return t?{platform:e,appName:J(e),storeUrl:t}:null}function we(e){return i(q[e].downloaded,!1)}function X(e){r(q[e].downloaded,!0)}function Te(e){return i(q[e].bannerDismissed,!1)}function Z(e){r(q[e].bannerDismissed,!0)}function Q(e){return Math.max(0,n(q[e].assistantTurnsSeen,0))}function Ee(e,n=1){n<=0||t(q[e].assistantTurnsSeen,Q(e)+n)}function $(e){let t=Y(e);return t?(window.open(t.storeUrl,`_blank`,`noopener,noreferrer`),!0):!1}function De(e){let[t,n]=(0,E.useState)(!1),[r,i]=(0,E.useState)(!1),a=Y(e)!==null;(0,E.useEffect)(()=>{n(we(e)),i(Te(e))},[e]);let o=(0,E.useCallback)(()=>{$(e)&&(X(e),n(!0))},[e]),s=(0,E.useCallback)(()=>{Z(e),i(!0)},[e]);return(0,E.useMemo)(()=>({bannerShouldShow:a&&!t&&!r,handleDownload:o,handleBannerDismiss:s}),[a,t,r,o,s])}var Oe=x({key:`device:cmd_enter_to_send`,scope:`device`,parse:b,serialize:String,fallback:!1}),ke=x({key:`device:show_context_window_indicator`,scope:`device`,parse:b,serialize:String,fallback:!1});export{ie as C,T as E,ae as S,ne as T,F as _,Ee as a,le as b,De as c,ye as d,he as f,ue as g,R as h,Y as i,X as l,z as m,ke as n,$ as o,me as p,J as r,Q as s,Oe as t,be as u,de as v,j as w,P as x,N as y};
|
|
@@ -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{n as a}from"./QueryClientProvider-EuRl-wrW.js";import{t as o}from"./useMutation-D2YPyfEH.js";import{t as s}from"./jsx-runtime-BJ8jcmzB.js";import{t as c}from"./typography-DekrYXvs.js";import{t as l}from"./card-DUsAeHUS.js";import{t as u}from"./link-2-BBS4SmE3.js";import{t as d}from"./loader-circle-DYe85z3g.js";import{t as f}from"./triangle-alert-43gIbLca.js";import{n as p}from"./toast-DqqWkjsh.js";import"./i18n
|
|
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{n as a}from"./QueryClientProvider-EuRl-wrW.js";import{t as o}from"./useMutation-D2YPyfEH.js";import{t as s}from"./jsx-runtime-BJ8jcmzB.js";import{t as c}from"./typography-DekrYXvs.js";import{t as l}from"./card-DUsAeHUS.js";import{t as u}from"./link-2-BBS4SmE3.js";import{t as d}from"./loader-circle-DYe85z3g.js";import{t as f}from"./triangle-alert-43gIbLca.js";import{n as p}from"./toast-DqqWkjsh.js";import"./i18n-C9hRT4Lf.js";import{t as m}from"./useTranslation-D9pPv-bA.js";import{d as h}from"./routes-B7wRw3UT.js";import{t as g}from"./use-active-assistant-id-BADYKVyx.js";import{n as _}from"./a2a-invite-lHsf93YX.js";import{r as v}from"./contacts-gateway-CZNNXLeD.js";var y=e(t(),1),b=s();function x(e){let t=e[0];return typeof t==`object`&&!!t&&t._id===`contactsGet`}function S(e){switch(e){case`expired`:case`not_found`:return`connectPage.errorExpired`;case`already_redeemed_by_other`:return`connectPage.errorAlreadyRedeemed`;case`sender_not_found`:return`connectPage.errorSenderNotFound`;case`not_platform_managed`:return`connectPage.errorNotPlatformManaged`;default:return null}}function C(){return(0,b.jsx)(w,{assistantId:g()})}function w({assistantId:e}){let{t}=m(`contacts`),s=r(),g=a(),[C]=i(),w=(0,y.useMemo)(()=>_(C),[C]),T=o({mutationFn:()=>{if(!w)throw Error(`Invalid invite link`);return v(e,{senderAssistantId:w.senderAssistantId,token:w.token})},onSuccess:e=>{e.success&&(g.invalidateQueries({predicate:e=>x(e.queryKey)}),e.alreadyConnected?p(t(`connectPage.alreadyConnected`)):p(t(`connectPage.connected`)),s(h.contacts.root))}}),E=(0,y.useCallback)(()=>{s(h.contacts.root)},[s]),D=(0,y.useCallback)(()=>{T.mutate()},[T]),O=(0,y.useMemo)(()=>{if(T.isError)return T.error instanceof Error?T.error.message:t(`connectPage.errorGeneric`);if(T.data&&!T.data.success){let e=S(T.data.errorCode);return e?t(e):T.data.error||t(`connectPage.errorGeneric`)}return null},[T.isError,T.error,T.data,t]);return w?(0,b.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,b.jsx)(l,{className:`w-full max-w-md`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(u,{className:`h-6 w-6`,style:{color:`var(--content-secondary)`}}),(0,b.jsx)(c,{variant:`title-small`,children:t(`connectPage.title`)})]}),(0,b.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:t(`connectPage.body`)}),O&&(0,b.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md p-3`,style:{backgroundColor:`var(--surface-negative-subtle)`,color:`var(--system-negative-strong)`},children:[(0,b.jsx)(f,{className:`h-4 w-4 shrink-0`}),(0,b.jsx)(c,{variant:`body-small-default`,children:O})]}),(0,b.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,b.jsx)(n,{variant:`primary`,onClick:D,disabled:T.isPending,children:T.isPending?(0,b.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(d,{className:`h-4 w-4 animate-spin`}),t(`actions.connecting`)]}):t(`actions.connect`)}),(0,b.jsx)(n,{variant:`outlined`,onClick:E,disabled:T.isPending,children:t(`actions.cancel`)})]})]})})}):(0,b.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,b.jsx)(l,{className:`w-full max-w-md`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(f,{className:`h-6 w-6`,style:{color:`var(--system-negative-strong)`}}),(0,b.jsx)(c,{variant:`title-small`,children:t(`connectPage.invalidTitle`)})]}),(0,b.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:t(`connectPage.invalidBody`)}),(0,b.jsx)(`div`,{className:`flex gap-2 pt-2`,children:(0,b.jsx)(n,{variant:`primary`,onClick:E,children:t(`connectPage.goToContacts`)})})]})})})}export{C as ConnectPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BJ8jcmzB.js";import{t}from"./card-DUsAeHUS.js";import{t as n}from"./checkbox-CyG1nZhR.js";import"./i18n
|
|
1
|
+
import{t as e}from"./jsx-runtime-BJ8jcmzB.js";import{t}from"./card-DUsAeHUS.js";import{t as n}from"./checkbox-CyG1nZhR.js";import"./i18n-C9hRT4Lf.js";import{t as r}from"./Trans-FBE1EuwL.js";import{t as i}from"./useTranslation-D9pPv-bA.js";import{d as a,u as o}from"./routes-B7wRw3UT.js";import{t as s}from"./setting-row-BvQpFvtr.js";var c=e(),l=[`[&_button[data-state=checked]]:bg-[var(--primary-base)]`,`[&_svg]:text-[var(--content-inset)]`,`[&_button[data-state=unchecked]]:bg-[var(--surface-base)]`,`[&_button[data-state=unchecked]]:border-[var(--border-element)]`].join(` `),u=`mb-2.5 ml-1 text-body-small-default font-medium uppercase tracking-wider text-[var(--content-tertiary)]`,d={privacy:{href:a.docs.legal.privacyPolicy,text:`Privacy and AI Data Sharing Policy`,aria:`I agree to the Privacy and AI Data Sharing Policy`},tos:{href:a.docs.legal.termsOfUse,text:`Terms of Service`,aria:`I agree to the Terms of Service`}};function f({kind:e,checked:t,onChange:i}){let a=d[e];return(0,c.jsx)(n,{checked:t,onCheckedChange:e=>i(e===!0),label:(0,c.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:(0,c.jsx)(r,{i18nKey:`consentControls.agreeTo`,ns:`onboarding`,values:{policy:a.text},components:{link:(0,c.jsx)(`a`,{href:o(a.href),target:`_blank`,rel:`noreferrer`,className:`underline`})}})}),"aria-label":a.aria,className:l})}function p(){return(0,c.jsx)(`div`,{className:`h-px bg-[var(--surface-active)] dark:bg-[var(--surface-lift)]`})}function m({notes:e}){let{t}=i(`onboarding`);return!e||e.length===0?null:(0,c.jsxs)(`div`,{className:`rounded-r-md border-l-2 border-[var(--content-secondary)] bg-[var(--surface-base)] py-3 pl-3.5 pr-3.5`,children:[(0,c.jsx)(`p`,{className:`text-body-small-default font-medium text-[var(--content-secondary)]`,children:t(`consentControls.whatsChanged`)}),e.length===1?(0,c.jsx)(`p`,{className:`mt-1.5 text-body-medium-lighter text-[var(--content-default)]`,children:e[0]}):(0,c.jsx)(`ul`,{className:`mt-2 flex flex-col gap-1.5`,children:e.map(e=>(0,c.jsxs)(`li`,{className:`flex gap-2.5 text-body-medium-lighter text-[var(--content-default)]`,children:[(0,c.jsx)(`span`,{"aria-hidden":!0,className:`mt-[0.5em] h-1 w-1 flex-none rounded-full bg-[var(--content-tertiary)]`}),(0,c.jsx)(`span`,{children:e})]},e))})]})}function h({electron:e,showAnalytics:n=!0,showDiagnostics:r=!0,shareAnalytics:a,shareDiagnostics:o,onShareAnalyticsChange:l,onShareDiagnosticsChange:d,className:f,style:m}){let{t:h}=i(`onboarding`);return(0,c.jsxs)(`section`,{className:f,style:m,children:[(0,c.jsx)(`p`,{className:u,children:h(`consentControls.privacyPreferences`)}),(0,c.jsx)(t,{padding:e?`sm`:`md`,className:`w-full`,children:(0,c.jsxs)(`div`,{className:`flex flex-col ${e?`gap-3`:`gap-4`}`,children:[n&&(0,c.jsx)(s,{label:h(`consentControls.analyticsLabel`),helperText:h(`consentControls.analyticsHelp`),checked:a,onChange:l}),n&&r&&(0,c.jsx)(p,{}),r&&(0,c.jsx)(s,{label:h(`consentControls.diagnosticsLabel`),helperText:h(`consentControls.diagnosticsHelp`),checked:o,onChange:d})]})})]})}function g({electron:e,showPrivacy:n=!0,showTos:r=!0,privacyConsent:a,tosAccepted:o,onPrivacyChange:s,onTosChange:l,privacyNotes:d,tosNotes:p,className:h,style:g}){let{t:_}=i(`onboarding`);return(0,c.jsxs)(`section`,{className:h,style:g,children:[(0,c.jsx)(`p`,{className:u,children:_(`consentControls.agreements`)}),(0,c.jsx)(t,{padding:e?`sm`:`md`,className:`w-full`,children:(0,c.jsxs)(`div`,{className:`flex flex-col ${e?`gap-3.5`:`gap-4`}`,children:[n&&(0,c.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,c.jsx)(m,{notes:d}),(0,c.jsx)(f,{kind:`privacy`,checked:a,onChange:s})]}),r&&(0,c.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,c.jsx)(m,{notes:p}),(0,c.jsx)(f,{kind:`tos`,checked:o,onChange:l})]})]})})]})}export{h as n,g as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{d as r,h as i,n 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"./typography-DekrYXvs.js";import{t as d}from"./card-DUsAeHUS.js";import{n as f}from"./list-row-CDwzGT9g.js";import{t as p}from"./createLucideIcon-B-ZPaMbU.js";import{t as m}from"./arrow-left-Ciai6BHG.js";import{t as h}from"./arrow-right-BH9GyonN.js";import{D as g,E as _,O as v,a as y,c as ee,h as b,p as x,u as S}from"./use-save-twilio-credentials-Bs9sThtb.js";import{t as C}from"./circle-check-big-BDMPSnMn.js";import{t as w}from"./ellipsis-vertical-CJX4FZlb.js";import{t as te}from"./link-2-BBS4SmE3.js";import{t as T}from"./loader-circle-DYe85z3g.js";import{t as E}from"./mail-9qQtaWSe.js";import{t as ne}from"./message-square-ameAY_Gq.js";import{t as D}from"./pencil-Ba0D7tjH.js";import{t as O}from"./plus-CWkbiq1y.js";import{t as k}from"./search-D_t5oHhF.js";import{t as A}from"./send-Dwk9mFMC.js";import{t as j}from"./user-plus-BsoY_aiQ.js";import{t as M}from"./tag-Ddzwz3ij.js";import{t as N}from"./input-DkgpMeG9.js";import{t as P}from"./modal-UYNawsIu.js";import{n as re}from"./toast-DqqWkjsh.js";import{t as F}from"./confirm-dialog-Drw1adml.js";import{t as ie}from"./assistant-identity-store-DhAqaifK.js";import{o as I}from"./i18n--HmJLuhM.js";import{t as L}from"./Trans-BUsRawhS.js";import{t as R}from"./useTranslation-DdVCKPgw.js";import{C as ae}from"./sdk.gen-CiE6cMi0.js";import{d as oe}from"./routes-B7wRw3UT.js";import{C as se,T as z,en as ce,s as le,tn as ue,w as de}from"./react-query.gen-Bbh5MII3.js";import{r as fe}from"./conversation-navigation-DQEOhOXf.js";import{t as pe}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as B}from"./use-active-assistant-id-BADYKVyx.js";import{t as V}from"./detail-card-BzCuPjtL.js";import{n as me,r as he,t as ge}from"./use-side-list-room-DtmLatRX.js";import{c as H,i as _e,n as ve,r as U,t as ye}from"./use-invite-link-dialog-Chhnymz9.js";import{a as be,i as xe,n as W,t as Se}from"./contacts-gateway-CZNNXLeD.js";var G=p(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ce=p(`git-merge`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]),K=e(t(),1),we=new Set([`slack`]);function Te(e){return e.status===`verified`||e.status===`active`&&e.verifiedAt!=null}function Ee(e){switch(e){case`slack`:return`channelType.slack`;case`telegram`:return`channelType.telegram`;case`whatsapp`:return`channelType.whatsapp`;case`a2a`:return`channelType.a2a`;case`phone`:return`channelType.phone`;case`email`:return`channelType.email`;default:return null}}function q(e){let t=Ee(e.toLowerCase());return t?I(t,{ns:`contacts`}):e}var De=`New Contact`;function Oe(e){return e===De}var J=l();function ke({channels:e,pendingChannelKey:t=null,onConnect:n,onDisconnect:r}){let{t:i}=R(`contacts`),[a,o]=(0,K.useState)(null);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col`,children:e.map((e,i)=>(0,J.jsxs)(`div`,{children:[i>0?(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}):null,(0,J.jsx)(Ae,{channel:e,pending:t===e.key,onConnect:n?()=>n(e.key):void 0,onDisconnect:r?()=>o(e.key):void 0})]},e.key))}),(0,J.jsx)(F,{open:a!==null,title:i(`assistantContactChannels.disconnectConfirmTitle`,{channel:a?x(a):``}),message:i(`assistantContactChannels.disconnectConfirmMessage`),confirmLabel:i(`actions.disconnect`),destructive:!0,onConfirm:()=>{a&&r&&r(a),o(null)},onCancel:()=>o(null)})]})}function Ae({channel:e,pending:t,onConnect:r,onDisconnect:i}){let{t:a}=R(`contacts`),o=e.status===`ready`;return(0,J.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,J.jsx)(S,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,J.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:x(e.key)}),o&&e.address?(0,J.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,J.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:o?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),a(`channelStatus.connected`)]}),(0,J.jsx)(n,{variant:`danger`,onClick:i,disabled:!i||t,children:a(t?`actions.disconnecting`:`actions.disconnect`)})]}):(0,J.jsx)(n,{variant:`outlined`,onClick:r,disabled:!r||t,children:a(`actions.connect`)})})]})}function Y({role:e,contactType:t}){let{label:n,tone:r}=X(e,t);return(0,J.jsx)(M,{tone:r,children:n})}function X(e,t){switch(e){case`guardian`:return{label:`Guardian`,tone:`positive`};case`assistant`:return{label:`Assistant`,tone:`negative`};default:return t===`assistant`?{label:`Assistant`,tone:`negative`}:{label:`Human`,tone:`warning`}}}function je({assistantName:e,...t}){let{t:n}=R(`contacts`),r=b(e);return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:n(`assistantChannelsDetail.title`,{name:r}),accessory:(0,J.jsx)(Y,{role:`assistant`}),compactAccessory:!0}),(0,J.jsx)(V,{title:n(`assistantChannelsDetail.channelsTitle`),subtitle:n(`assistantChannelsDetail.channelsSubtitle`,{name:r}),children:(0,J.jsx)(ke,{...t})})]})}var Me=new Set([`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`]);function Z(e){return Me.has(e)}function Q(e,t){return e.id===`a2a`?t&&t.status!==`revoked`?{kind:`connected`}:{kind:`setup`}:t!=null&&Te(t)?{kind:`verified`}:t?.status===`blocked`?{kind:`none`}:t&&t.status!==`revoked`?{kind:`unverified`}:{kind:`setup`}}function Ne(e,t,n){let r=[],i=new Set;if(e)for(let t of e)t.id===`a2a`&&!n||(r.push(t),i.add(t.id));for(let e of t)e.status===`revoked`||i.has(e.type)||e.type===`a2a`&&!n||Z(e.type)&&(r.push({id:e.type,source:`default`,label:e.type.charAt(0).toUpperCase()+e.type.slice(1),subtitle:``,icon:`help-circle`,supportsVerification:!1,setupMessages:{guardian:``,contact:``}}),i.add(e.type));return r}function Pe({name:e,className:t,style:n}){switch(e){case`bot`:return(0,J.jsx)(v,{className:t,style:n});case`hash`:return(0,J.jsx)(g,{className:t,style:n});case`send`:return(0,J.jsx)(A,{className:t,style:n});case`phone`:return(0,J.jsx)(_,{className:t,style:n});case`mail`:return(0,J.jsx)(E,{className:t,style:n});case`message-square`:return(0,J.jsx)(ne,{className:t,style:n});default:return(0,J.jsx)(G,{className:t,style:n})}}function Fe({contactChannels:e,availableChannels:t,a2aEnabled:n,setupLabel:r,verifyLoading:i,verifySubject:a=`self`,onSetupChannel:o,onVerifyChannel:s,onRevokeChannel:c,onLinkAccount:l}){let{t:u}=R(`contacts`),[d,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(null),h=new Map;for(let t of e)t.status!==`revoked`&&(h.has(t.type)||h.set(t.type,t));return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col`,children:Ne(t,e,n).map((e,t)=>{let n=h.get(e.id);return(0,J.jsxs)(`div`,{children:[t>0&&(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,J.jsx)($,{info:e,existing:n,setupLabel:r??u(`contactChannelsSection.setupDefault`),verifyLoading:i,onSetup:o?()=>o(e.id):void 0,onVerify:s&&e.supportsVerification?()=>f(e):void 0,onRevoke:c&&n?()=>m({channelId:n.id,channel:e}):void 0,onLinkAccount:l&&we.has(e.id)?()=>l(e.id):void 0})]},e.id)})}),d&&(0,J.jsx)(F,{open:!0,title:u(`contactChannelsSection.verifyConfirmTitle`,{channel:d.label}),message:u(a===`contact`?`contactChannelsSection.verifyConfirmMessageContact`:`contactChannelsSection.verifyConfirmMessageGuardian`,{channel:d.label}),confirmLabel:u(`actions.verify`),onConfirm:()=>{d&&(s?.(d.id),f(null))},onCancel:()=>f(null)}),p&&(0,J.jsx)(F,{open:!0,title:u(`contactChannelsSection.revokeConfirmTitle`,{channel:p.channel.label}),message:u(`contactChannelsSection.revokeConfirmMessage`),confirmLabel:u(`actions.revoke`),destructive:!0,onConfirm:()=>{c?.(p.channelId,p.channel.id),m(null)},onCancel:()=>m(null)})]})}function $({info:e,existing:t,setupLabel:r,verifyLoading:i,onSetup:a,onVerify:o,onRevoke:s,onLinkAccount:c}){let{t:l}=R(`contacts`),u=Q(e,t);return(0,J.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,J.jsx)(Pe,{name:e.icon,className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,J.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),t?.address?(0,J.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.address}):null,(0,J.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:u.kind===`connected`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),l(`channelStatus.connected`)]}),s?(0,J.jsx)(n,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`verified`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),l(`channelStatus.verified`)]}),s?(0,J.jsx)(n,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`unverified`?(0,J.jsx)(n,{variant:`outlined`,onClick:o,disabled:!o||i,children:l(i?`actions.verifying`:`actions.verify`)}):u.kind===`setup`?e.id===`a2a`?null:(0,J.jsxs)(J.Fragment,{children:[c?(0,J.jsxs)(n,{onClick:c,children:[(0,J.jsx)(te,{className:`h-3.5 w-3.5`}),l(`contactChannelsSection.linkAccount`)]}):null,(0,J.jsx)(n,{variant:`outlined`,onClick:a,disabled:!a,children:r})]}):null})]})}function Ie(e){return(0,J.jsx)(Le,{...e},e.contact.id)}function Le({contact:e,savePending:t,deletePending:r,verifyPending:i,mergePending:a=!1,canMerge:o=!1,availableChannels:s,a2aEnabled:c,onSave:l,onDelete:u,onMerge:d,onSetupChannel:f,onVerifyChannel:p,onRevokeChannel:m,onLinkAccount:h}){let{t:g}=R(`contacts`),_=Oe(e.displayName),[v,y]=(0,K.useState)(_?``:e.displayName),[ee,b]=(0,K.useState)(e.notes??``),[x,S]=(0,K.useState)(!1),C=v.trim(),w=ee.trim(),te=_?``:e.displayName,T=e.notes??``,E=C!==te||w!==T,ne=C.length>0&&E&&!t&&!r,D=_&&e.channels.length===0&&e.interactionCount===0,O=C||(_?g(`contact.draftName`):e.displayName),k=g(`contact.interactions`,{count:e.interactionCount});return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:O,accessory:(0,J.jsx)(Y,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:k,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(N,{label:g(`contact.nameLabel`),type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:g(`contactDetailView.namePlaceholder`),autoFocus:_,disabled:t||r,fullWidth:!0}),(0,J.jsx)(N,{label:g(`contact.notesLabel`),type:`text`,value:ee,onChange:e=>b(e.target.value),placeholder:g(`contactDetailView.notesPlaceholder`),disabled:t||r,fullWidth:!0}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(n,{type:`button`,onClick:()=>l({displayName:C,notes:w}),disabled:!ne,children:g(t?`actions.saving`:`actions.save`)}),d?(0,J.jsx)(n,{type:`button`,variant:`outlined`,onClick:d,disabled:!o||D||E||a||t||r,title:o?D?g(`contactDetailView.mergeBlockedUnsavedDraft`):E?g(`contact.mergeBlockedUnsaved`):void 0:g(`contact.mergeBlockedNoCandidates`),children:g(a?`actions.merging`:`actions.merge`)}):null,(0,J.jsx)(n,{type:`button`,variant:`danger`,onClick:()=>{D?u():S(!0)},disabled:r,children:g(r?`actions.deleting`:`contactDetailView.delete`)})]})]})}),(0,J.jsx)(V,{title:g(`contactDetailView.linkedAccountsTitle`),subtitle:g(`contactDetailView.linkedAccountsSubtitle`),children:(0,J.jsx)(Fe,{contactChannels:e.channels,availableChannels:s,a2aEnabled:c,verifyLoading:i,verifySubject:`contact`,onSetupChannel:f,onVerifyChannel:p,onRevokeChannel:m,onLinkAccount:h})}),(0,J.jsx)(F,{open:x,title:g(`contactDetailView.deleteConfirmTitle`,{name:O}),message:g(`contactDetailView.deleteConfirmMessage`),confirmLabel:g(`actions.delete`),destructive:!0,onConfirm:()=>{S(!1),u()},onCancel:()=>S(!1)})]})}function Re(e){return(0,J.jsx)(ze,{...e},`${e.survivor.id}:${e.open?`open`:`closed`}`)}function ze({open:e,survivor:t,candidates:r,pending:i,errorMessage:a,onMerge:o,onClose:s}){let{t:c}=R(`contacts`),[l,d]=(0,K.useState)(``),[f,p]=(0,K.useState)(null);(0,K.useEffect)(()=>{f&&!r.some(e=>e.id===f)&&p(null)},[r,f]);let h=(0,K.useMemo)(()=>{let e=l.trim().toLowerCase();return e?r.filter(t=>t.displayName.toLowerCase().includes(e)):r},[r,l]),g=f?r.find(e=>e.id===f)??null:null,_=We(t);return(0,J.jsx)(P.Root,{open:e,onOpenChange:e=>{!e&&!i&&s()},children:(0,J.jsxs)(P.Content,{size:`md`,children:[(0,J.jsxs)(P.Header,{icon:Ce,children:[(0,J.jsx)(P.Title,{children:g?c(`contactMergeDialog.titlePicked`,{donor:g.displayName,survivor:_}):c(`contactMergeDialog.titlePicking`,{survivor:_})}),(0,J.jsx)(P.Description,{children:c(g?`contactMergeDialog.descriptionPicked`:`contactMergeDialog.descriptionPicking`)})]}),(0,J.jsxs)(P.Body,{className:`flex flex-col gap-3`,children:[g?(0,J.jsx)(He,{survivor:t,donor:g}):r.length===0?(0,J.jsx)(Ue,{}):(0,J.jsx)(Be,{search:l,onSearch:d,candidates:h,onPick:p}),a?(0,J.jsx)(u,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:a}):null]}),(0,J.jsx)(P.Footer,{children:g?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(n,{variant:`outlined`,onClick:()=>p(null),disabled:i,leftIcon:(0,J.jsx)(m,{"aria-hidden":!0}),children:c(`actions.back`)}),(0,J.jsx)(n,{variant:`danger`,onClick:()=>o(g.id),disabled:i,children:c(i?`actions.merging`:`contactMergeDialog.confirm`)})]}):(0,J.jsx)(n,{variant:`outlined`,onClick:s,disabled:i,children:c(`actions.cancel`)})})]})})}function Be({search:e,onSearch:t,candidates:n,onPick:r}){let{t:i}=R(`contacts`);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(N,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:i(`contactMergeDialog.searchPlaceholder`),leftIcon:(0,J.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}),(0,J.jsx)(`div`,{className:`flex max-h-[320px] min-h-[120px] flex-col gap-1 overflow-y-auto`,role:`listbox`,"aria-label":i(`contactMergeDialog.listAriaLabel`),children:n.length===0?(0,J.jsx)(u,{as:`p`,variant:`body-small-default`,className:`px-3 py-4 text-center text-(--content-tertiary)`,children:i(`contactsList.noMatches`)}):n.map(e=>(0,J.jsx)(Ve,{contact:e,onPick:()=>r(e.id)},e.id))})]})}function Ve({contact:e,onPick:t}){let n=Ke(e).join(` | `)||void 0;return(0,J.jsx)(f,{asChild:!0,children:(0,J.jsx)(`button`,{type:`button`,onClick:t,role:`option`,"aria-selected":`false`,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e.displayName}),n?(0,J.jsx)(`span`,{className:`truncate text-body-small-default text-(--content-tertiary)`,children:n}):null]})})})}function He({survivor:e,donor:t}){let{t:n}=R(`contacts`),r=We(e),{moved:i,duplicates:a}=Ge(e,t);return(0,J.jsxs)(`ul`,{className:`flex flex-col gap-2 text-body-medium-lighter text-(--content-secondary)`,children:[(0,J.jsx)(`li`,{children:(0,J.jsx)(L,{i18nKey:`contactMergeDialog.donorDeleted`,ns:`contacts`,values:{donor:t.displayName},components:{donor:(0,J.jsx)(`span`,{className:`text-(--content-default)`})}})}),(0,J.jsx)(`li`,{children:n(`contactMergeDialog.channelsMoved`,{count:i.length,survivor:r,channels:i.map(e=>q(e.type)).join(`, `)})}),a.length>0?(0,J.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.duplicatesSkipped`,{count:a.length,survivor:r})}):null,t.notes?(0,J.jsx)(`li`,{children:n(`contactMergeDialog.notesAppended`)}):null,(0,J.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.irreversible`)})]})}function Ue(){let{t:e}=R(`contacts`);return(0,J.jsx)(u,{as:`p`,variant:`body-medium-lighter`,className:`px-3 py-6 text-center text-(--content-tertiary)`,children:e(`contactMergeDialog.empty`)})}function We(e){return e.role===`guardian`?!e.displayName||e.displayName.startsWith(`vellum-principal-`)?I(`survivorName.you`,{ns:`contacts`}):I(`survivorName.youNamed`,{ns:`contacts`,name:e.displayName}):e.displayName||I(`survivorName.thisContact`,{ns:`contacts`})}function Ge(e,t){let n=[],r=[];for(let i of t.channels)i.status!==`revoked`&&(e.channels.some(e=>e.type===i.type&&e.address.toLowerCase()===i.address.toLowerCase())?r.push(i):n.push(i));return{moved:n,duplicates:r}}function Ke(e){let t=new Set,n=[];for(let r of e.channels){if(r.status===`revoked`)continue;let e=r.type.toLowerCase();t.has(e)||(t.add(e),n.push(q(e)))}return n}function qe({loading:e,guardian:t,assistantName:r,regularContacts:i,selection:a,onSelect:o,onAddContact:s,addingContact:c=!1,search:l,onSearchChange:u}){let{t:f}=R(`contacts`),p=l.trim()?i.filter(e=>e.displayName.toLowerCase().includes(l.trim().toLowerCase())):i;return(0,J.jsx)(d.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,J.jsxs)(d.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:f(`contactsList.heading`)}),(0,J.jsx)(n,{type:`button`,variant:`ghost`,iconOnly:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(O,{"aria-hidden":!0}),onClick:s,disabled:c,"aria-label":f(`contactsList.addAriaLabel`),tintColor:`var(--content-secondary)`})]}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t?(0,J.jsx)(Je,{name:t.displayName?f(`contactsList.youNamed`,{name:t.displayName}):f(`contactsList.you`),role:t.role,channelTypes:t.channelTypes,selected:a?.kind===`contact`&&a.contactId===t.id,onClick:()=>o({kind:`contact`,contactId:t.id}),trailingIcon:`pencil`}):null,(0,J.jsx)(Je,{name:r?.trim()||f(`contactsList.assistantFallback`),role:`assistant`,selected:a?.kind===`assistant`,onClick:()=>o({kind:`assistant`}),trailingIcon:`more`})]}),(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),i.length>0?(0,J.jsx)(N,{type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:f(`contactsList.searchPlaceholder`),leftIcon:(0,J.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,i.length>0?(0,J.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto flex flex-col gap-1`,children:[p.map(e=>(0,J.jsx)(Je,{name:e.displayName,role:e.role,contactType:e.contactType,channelTypes:e.channelTypes,verified:e.verified,selected:a?.kind===`contact`&&a.contactId===e.id,onClick:()=>o({kind:`contact`,contactId:e.id}),trailingIcon:`more`},e.id)),p.length===0?(0,J.jsx)(`p`,{className:`px-3 py-4 text-center text-body-small-default`,style:{color:`var(--content-tertiary)`},children:f(`contactsList.noMatches`)}):null]}):e?null:(0,J.jsx)(n,{type:`button`,variant:`ghost`,onClick:s,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(j,{"aria-hidden":!0}),children:f(`contactsList.add`)})]})})}function Je({name:e,role:t,contactType:n,channelTypes:r,selected:i,onClick:a,trailingIcon:o,verified:s}){let{t:c}=R(`contacts`),l=r&&r.length>0?r.join(` | `):void 0,u=o===`pencil`?(0,J.jsx)(D,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):o===`more`?(0,J.jsx)(w,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):void 0;return(0,J.jsx)(f,{asChild:!0,active:i,children:(0,J.jsxs)(`button`,{type:`button`,onClick:a,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e}),l?(0,J.jsx)(`span`,{className:`truncate text-body-small-default`,style:{color:`var(--content-tertiary)`},children:l}):null]}),(0,J.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1`,children:[s===void 0?null:(0,J.jsx)(M,{tone:s?`positive`:`neutral`,children:c(s?`contactsList.verified`:`contactsList.unverified`)}),(0,J.jsx)(Y,{role:t,contactType:n}),u]})]})})}function Ye(e){return(0,J.jsx)(Xe,{...e},e.contact.id)}function Xe({contact:e,savePending:t,verifyPending:r,mergePending:i=!1,canMerge:a=!1,availableChannels:o,a2aEnabled:s,onSave:c,onMerge:l,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f,onGenerateInviteLink:p}){let{t:m}=R(`contacts`),h=e.displayName.startsWith(`vellum-principal-`),g=h?``:e.displayName,[_,v]=(0,K.useState)(g),[y,ee]=(0,K.useState)(e.notes??``),b=_.trim(),x=y.trim(),S=b!==g.trim()||x!==(e.notes??``).trim(),C=S&&!t,w=m(`contact.interactions`,{count:e.interactionCount});return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:h?m(`contactsList.you`):m(`contactsList.youNamed`,{name:e.displayName}),accessory:(0,J.jsx)(Y,{role:`guardian`}),compactAccessory:!0,subtitle:w,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(N,{label:m(`contact.nameLabel`),type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:m(`guardianDetailView.namePlaceholder`),disabled:t,fullWidth:!0}),(0,J.jsx)(N,{label:m(`contact.notesLabel`),type:`text`,value:y,onChange:e=>ee(e.target.value),placeholder:m(`guardianDetailView.notesPlaceholder`),disabled:t,fullWidth:!0}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(n,{variant:`primary`,onClick:()=>c({displayName:b||e.displayName,notes:x}),disabled:!C,children:m(t?`actions.saving`:`actions.save`)}),l?(0,J.jsx)(n,{variant:`outlined`,onClick:l,disabled:!a||S||i||t,title:a?S?m(`contact.mergeBlockedUnsaved`):void 0:m(`contact.mergeBlockedNoCandidates`),children:m(i?`actions.merging`:`actions.merge`)}):null]})]})}),(0,J.jsx)(V,{title:m(`guardianDetailView.channelsTitle`),subtitle:m(`guardianDetailView.channelsSubtitle`),children:(0,J.jsx)(Fe,{contactChannels:e.channels,availableChannels:o,a2aEnabled:s,setupLabel:m(`guardianDetailView.setupLabel`),verifyLoading:r,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f})}),p?(0,J.jsx)(U,{onClick:p}):null]})}function Ze(e,t){let n=t.trim().toLowerCase().replace(/^@/,``);return n===``?e:e.filter(e=>e.displayName.toLowerCase().includes(n)||e.username.toLowerCase().includes(n))}function Qe(e){let t=e.trim().split(/\s+/).filter(Boolean);return`${t[0]?.[0]??`?`}${t.length>1?t[t.length-1]?.[0]??``:``}`.toUpperCase()}function $e({open:e,channelLabel:t,contactName:r,accounts:i,loading:a,errorMessage:o,pendingAccountId:s,onPick:c,onClose:l,onInviteInstead:u}){let{t:d}=R(`contacts`),[f,p]=(0,K.useState)(``);(0,K.useEffect)(()=>{e&&p(``)},[e]);let m=(0,K.useMemo)(()=>Ze(i??[],f),[i,f]),g=s!=null;return(0,J.jsx)(P.Root,{open:e,onOpenChange:e=>!e&&l(),children:(0,J.jsxs)(P.Content,{size:`sm`,children:[(0,J.jsxs)(P.Header,{children:[(0,J.jsx)(P.Title,{children:d(`linkAccountDialog.title`,{channel:t})}),(0,J.jsx)(P.Description,{children:(0,J.jsx)(L,{i18nKey:`linkAccountDialog.description`,ns:`contacts`,values:{channel:t,name:r},components:{contact:(0,J.jsx)(`span`,{className:`text-[color:var(--content-default)]`})}})})]}),(0,J.jsxs)(P.Body,{className:`flex flex-col gap-3`,children:[(0,J.jsx)(N,{type:`search`,value:f,onChange:e=>p(e.target.value),placeholder:d(`linkAccountDialog.searchPlaceholder`),"aria-label":d(`linkAccountDialog.searchAriaLabel`,{channel:t}),leftIcon:(0,J.jsx)(k,{className:`h-4 w-4`}),fullWidth:!0}),o?(0,J.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-negative)]`,children:o}):null,(0,J.jsx)(`div`,{className:`max-h-80 overflow-y-auto`,children:a?(0,J.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:d(`linkAccountDialog.loading`)}):m.length===0?(0,J.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:(i?.length??0)===0?d(`linkAccountDialog.noMembers`):d(`linkAccountDialog.noMatches`)}):(0,J.jsx)(`ul`,{className:`flex flex-col`,children:m.map(e=>(0,J.jsx)(`li`,{children:(0,J.jsxs)(`button`,{type:`button`,onClick:()=>c(e),disabled:g,className:`flex w-full cursor-pointer items-center gap-3 rounded-md px-2 py-2 text-left transition-colors hover:bg-[var(--surface-overlay)] disabled:cursor-not-allowed disabled:opacity-60`,children:[e.imageUrl?(0,J.jsx)(`img`,{src:e.imageUrl,alt:``,className:`h-8 w-8 shrink-0 rounded-full`}):(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--tag-bg-neutral)] text-body-small-emphasised text-[color:var(--content-secondary)]`,children:Qe(e.displayName)}),(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default text-[color:var(--content-default)]`,children:e.displayName}),(0,J.jsxs)(`span`,{className:`truncate text-body-small-default text-[color:var(--content-tertiary)]`,children:[`@`,e.username]})]}),s===e.id?(0,J.jsx)(`span`,{className:`ml-auto shrink-0 text-body-small-default text-[color:var(--content-tertiary)]`,children:d(`linkAccountDialog.linking`)}):null]})},e.id))})})]}),(0,J.jsxs)(P.Footer,{className:`items-center justify-between gap-3 border-t border-[var(--border-base)]`,children:[(0,J.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:(0,J.jsx)(L,{i18nKey:`linkAccountDialog.guardianLinkNote`,ns:`contacts`,components:{emphasis:(0,J.jsx)(`span`,{className:`text-[color:var(--content-secondary)]`})}})}),u?(0,J.jsxs)(n,{variant:`link`,className:`shrink-0`,onClick:u,disabled:g,children:[d(`linkAccountDialog.inviteInstead`),(0,J.jsx)(h,{className:`h-3.5 w-3.5`})]}):null]})]})})}function et({assistantId:e,channelType:t,contact:n,onLinked:r}){let[i,a]=(0,K.useState)(!1),o=c({mutationFn:n=>W(e,n.contact,{type:t,address:n.account.id}),onSuccess:(e,t)=>{a(!1),re.success(I(`accountLink.linked`,{ns:`contacts`,username:t.account.username})),r()}}),s=(0,K.useCallback)(()=>{o.reset(),a(!0)},[o]),l=(0,K.useCallback)(()=>{o.isPending||(o.reset(),a(!1))},[o]),u=(0,K.useCallback)(e=>{!n||o.isPending||o.mutate({contact:n,account:e})},[n,o]);return{channelType:t,dialogOpen:i,open:s,close:l,linkErrorMessage:o.error instanceof Error?o.error.message:o.error?I(`accountLink.linkFailed`,{ns:`contacts`}):null,pendingAccountId:o.isPending?o.variables.account.id:null,pick:u}}var tt=[{id:`slack`,source:`default`,label:`Slack`,subtitle:`Message your assistant from Slack`,icon:`hash`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Slack. Can you help me set that up?`,contact:`I'd like to verify a contact's Slack identity. Can you walk me through it?`}},{id:`telegram`,source:`default`,label:`Telegram`,subtitle:`Message your assistant from Telegram`,icon:`send`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Telegram. Can you help me set that up?`,contact:`I'd like to verify a contact's Telegram identity. Can you walk me through it?`}},{id:`phone`,source:`default`,label:`Phone Calling`,subtitle:`Call or text your assistant via phone`,icon:`phone`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian for phone calls. Can you help me set that up?`,contact:`I'd like to verify a contact's phone number. Can you help me set that up?`}}],nt=[];function rt({assistantId:e,onStartSetupConversation:t}){let{t:n}=R(`contacts`),r=pe.use.a2aChannel(),l=ie.use.name(),u=o(),[d]=i(),f=d.get(`setup`),p=f&&ee(f)?f:null,[m,h]=(0,K.useState)({kind:`assistant`}),g=ye(e),{paneRef:_,hasRoomForList:v,drawerOpen:x,openDrawer:S,closeDrawer:C}=ge(),[w,te]=(0,K.useState)(``),[T,E]=(0,K.useState)(!1),ne=b(l),D=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),O=de(D),k=s({...se(D),enabled:!!e,select:e=>e.contacts}),A=ve({assistantId:e,onStartSetupConversation:t}),j=s({...le({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await ae({path:{assistant_id:e},signal:t,throwOnError:!1});if(!i||i.status===404)return{channels:tt};if(!i.ok)throw r??Error(`Failed to fetch channel availability`);return n},select:e=>e.channels}).data??nt,M=k.data,N=(0,K.useMemo)(()=>M?.find(e=>e.role===`guardian`)??null,[M]),P=(0,K.useMemo)(()=>M?.filter(e=>e.role!==`guardian`)??[],[M]),F=(0,K.useMemo)(()=>m.kind===`contact`?M?.find(e=>e.id===m.contactId)??null:null,[M,m]),I=(0,K.useMemo)(()=>!M||!F?[]:M.filter(e=>e.id!==F.id&&e.role!==`guardian`),[M,F]),L=I.length>0,fe=(0,K.useRef)(!!p);(0,K.useEffect)(()=>{fe.current||N&&(fe.current=!0,h({kind:`contact`,contactId:N.id}))},[N]);let B=(0,K.useCallback)(()=>u.invalidateQueries({queryKey:O}),[u,O]),V=c({mutationFn:()=>xe(e,{displayName:De}),onMutate:async()=>{await u.cancelQueries({queryKey:O})},onSuccess:e=>{z(u,D,t=>t?{...t,contacts:[...t.contacts,e]}:void 0),h({kind:`contact`,contactId:e.id})},onError:H(n(`contactsPage.createFailed`)),onSettled:()=>B()}),U=c({mutationFn:t=>Se(e,t),onSuccess:(e,t)=>{z(u,D,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==t)}:void 0),h({kind:`assistant`})},onError:H(n(`contactsPage.deleteFailed`)),onSettled:()=>B()}),W=c({mutationFn:({contactId:t,patch:n})=>xe(e,{id:t,displayName:n.displayName,notes:n.notes}),onSuccess:e=>{z(u,D,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onError:H(n(`contactsPage.saveFailed`)),onSettled:()=>B()}),G=ue({onMutate:async()=>{await u.cancelQueries({queryKey:O})},onSuccess:(e,t)=>{let r=e.contact,i=t.body.mergeId;r&&(z(u,D,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==i).map(e=>e.id===r.id?r:e)}:void 0),h({kind:`contact`,contactId:r.id})),E(!1),re.success(n(`contactsPage.mergeSucceeded`))},onSettled:()=>B()}),Ce=(0,K.useCallback)(e=>{h(e),C(),E(!1),G.reset()},[C,G]),we=(0,K.useCallback)(()=>{G.reset(),E(!0)},[G]),Te=(0,K.useCallback)(()=>{G.isPending||(E(!1),G.reset())},[G]),Ee=ce({onSuccess:()=>B()}),Oe=(0,K.useCallback)((t,n)=>{Ee.mutate({path:{assistant_id:e,contactChannelId:t},body:{status:`revoked`}})},[Ee,e]),ke=(0,K.useCallback)(()=>{V.isPending||V.mutate()},[V]),Ae=(0,K.useCallback)(e=>{if(!t)return;let n=j.find(t=>t.id===e)?.setupMessages.contact;n&&t(n)},[j,t]),Y=(0,K.useCallback)(e=>{if(!t)return;let n=j.find(t=>t.id===e)?.setupMessages.guardian;n&&t(n)},[j,t]),X=c({mutationFn:t=>be(e,t.channelId),onSuccess:()=>B(),onError:H(n(`contactsPage.verifyFailed`))}),Me=(0,K.useCallback)(e=>{if(!F)return;let t=F.channels.find(t=>t.type===e&&t.status!==`revoked`);t&&X.mutate({channelId:t.id})},[F,X]),Z=et({assistantId:e,channelType:`slack`,contact:F?{id:F.id,displayName:F.displayName}:null,onLinked:B}),Q=s({...y(e),enabled:!!e&&Z.dialogOpen,select:e=>e.users}),Ne=A.channels.some(e=>e.key===`slack`&&e.status===`ready`),Pe=(0,K.useCallback)(e=>{e===Z.channelType&&Z.open()},[Z]),Fe=U.isPending?U.variables:null,$=(0,K.useMemo)(()=>F?W.isPending&&W.variables?.contactId===F.id?{...F,displayName:W.variables.patch.displayName,notes:W.variables.patch.notes}:F:null,[F,W.isPending,W.variables]);if(p)return(0,J.jsx)(a,{to:`${oe.channels}?setup=${p}`,replace:!0});let Le={loading:k.isLoading,assistantName:ne,guardian:N?{id:N.id,displayName:N.displayName.startsWith(`vellum-principal-`)?``:N.displayName,role:N.role,channelTypes:ot(N.channels,r)}:null,regularContacts:P.filter(e=>e.id!==Fe).map(e=>({id:e.id,displayName:e.displayName,role:e.role,contactType:e.contactType,channelTypes:ot(e.channels,r),verified:at(e.channels)})),selection:m,onAddContact:ke,addingContact:V.isPending,search:w,onSearchChange:te};return(0,J.jsxs)(`div`,{ref:_,className:`flex min-h-0 flex-1 overflow-hidden ${v?`flex-row gap-6`:`flex-col gap-4`}`,children:[v?(0,J.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,J.jsx)(qe,{...Le,onSelect:Ce})}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex items-center`,children:(0,J.jsx)(he,{onClick:S})}),(0,J.jsx)(me,{open:x,onClose:C,title:n(`contactsPage.title`),children:(0,J.jsx)(qe,{...Le,onSelect:Ce})})]}),(0,J.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:m.kind===`assistant`||m.kind===`contact`&&m.contactId===Fe?(0,J.jsx)(je,{assistantName:ne,channels:A.channels,pendingChannelKey:A.pendingChannelKey,onConnect:A.onSetup,onDisconnect:A.onDisconnect}):$?$.role===`guardian`?(0,J.jsx)(Ye,{contact:$,savePending:W.isPending,verifyPending:X.isPending,mergePending:G.isPending,canMerge:L,availableChannels:j,a2aEnabled:r,onSave:e=>{W.mutate({contactId:$.id,patch:e})},onMerge:we,onSetupChannel:t?Y:void 0,onVerifyChannel:Me,onRevokeChannel:Oe,onGenerateInviteLink:r?g.open:void 0}):(0,J.jsx)(Ie,{contact:$,savePending:W.isPending,deletePending:U.isPending,verifyPending:X.isPending,mergePending:G.isPending,canMerge:L,availableChannels:j,a2aEnabled:r,onSave:e=>{W.mutate({contactId:$.id,patch:e})},onDelete:()=>{U.mutate($.id)},onMerge:we,onSetupChannel:t?Ae:void 0,onVerifyChannel:Me,onRevokeChannel:Oe,onLinkAccount:Ne?Pe:void 0}):(0,J.jsx)(it,{})}),F?(0,J.jsx)(Re,{open:T,survivor:F,candidates:I,pending:G.isPending,errorMessage:G.error instanceof Error?G.error.message:G.error?n(`contactsPage.mergeFailed`):null,onMerge:t=>G.mutate({path:{assistant_id:e},body:{keepId:F.id,mergeId:t}}),onClose:Te}):null,(0,J.jsx)($e,{open:Z.dialogOpen,channelLabel:q(`slack`),contactName:F?.displayName??``,accounts:Q.data,loading:Q.isLoading,errorMessage:Q.isError?n(`contactsPage.rosterLoadFailed`):Z.linkErrorMessage,pendingAccountId:Z.pendingAccountId,onPick:Z.pick,onClose:Z.close,onInviteInstead:t?()=>{Z.close(),Ae(Z.channelType)}:void 0}),(0,J.jsx)(_e,{open:g.isOpen,assistantId:e,onClose:g.close})]})}function it(){let{t:e}=R(`contacts`);return(0,J.jsx)(`div`,{className:`flex h-full items-center justify-center py-16`,children:(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e(`contactsPage.emptyBody`)})})}function at(e){return e.some(e=>e.status!==`revoked`&&(e.type===`a2a`||Te(e)))}function ot(e,t){let n=new Set,r=[];for(let i of e){if(i.status===`revoked`)continue;let e=i.type.toLowerCase();n.has(e)||e===`a2a`&&!t||(n.add(e),r.push(q(e)))}return r}function st(){let e=r(),t=B();return(0,J.jsx)(rt,{assistantId:t,onStartSetupConversation:t=>{fe(e,{prompt:t})}},t)}export{st as ContactsPageRoute};
|
|
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,n 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"./typography-DekrYXvs.js";import{t as d}from"./card-DUsAeHUS.js";import{n as f}from"./list-row-CDwzGT9g.js";import{t as p}from"./createLucideIcon-B-ZPaMbU.js";import{t as m}from"./arrow-left-Ciai6BHG.js";import{t as h}from"./arrow-right-BH9GyonN.js";import{D as g,E as _,O as v,a as y,c as ee,h as b,p as x,u as S}from"./use-save-twilio-credentials-Bs9sThtb.js";import{t as C}from"./circle-check-big-BDMPSnMn.js";import{t as w}from"./ellipsis-vertical-CJX4FZlb.js";import{t as te}from"./link-2-BBS4SmE3.js";import{t as T}from"./loader-circle-DYe85z3g.js";import{t as E}from"./mail-9qQtaWSe.js";import{t as ne}from"./message-square-ameAY_Gq.js";import{t as D}from"./pencil-Ba0D7tjH.js";import{t as O}from"./plus-CWkbiq1y.js";import{t as k}from"./search-D_t5oHhF.js";import{t as A}from"./send-Dwk9mFMC.js";import{t as j}from"./user-plus-BsoY_aiQ.js";import{t as M}from"./tag-Ddzwz3ij.js";import{t as N}from"./input-DkgpMeG9.js";import{t as P}from"./modal-UYNawsIu.js";import{n as re}from"./toast-DqqWkjsh.js";import{t as F}from"./confirm-dialog-Drw1adml.js";import{t as ie}from"./assistant-identity-store-DhAqaifK.js";import{s as I}from"./i18n-C9hRT4Lf.js";import{t as L}from"./Trans-FBE1EuwL.js";import{t as R}from"./useTranslation-D9pPv-bA.js";import{C as ae}from"./sdk.gen-CiE6cMi0.js";import{d as oe}from"./routes-B7wRw3UT.js";import{C as se,T as z,en as ce,s as le,tn as ue,w as de}from"./react-query.gen-Bbh5MII3.js";import{r as fe}from"./conversation-navigation-B_4jZ9Z2.js";import{t as pe}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as B}from"./use-active-assistant-id-BADYKVyx.js";import{t as V}from"./detail-card-Bqnvs6YE.js";import{n as me,r as he,t as ge}from"./use-side-list-room-CUXPQyjw.js";import{c as H,i as _e,n as ve,r as U,t as ye}from"./use-invite-link-dialog-Chhnymz9.js";import{a as be,i as xe,n as W,t as Se}from"./contacts-gateway-CZNNXLeD.js";var G=p(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ce=p(`git-merge`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]),K=e(t(),1),we=new Set([`slack`]);function Te(e){return e.status===`verified`||e.status===`active`&&e.verifiedAt!=null}function Ee(e){switch(e){case`slack`:return`channelType.slack`;case`telegram`:return`channelType.telegram`;case`whatsapp`:return`channelType.whatsapp`;case`a2a`:return`channelType.a2a`;case`phone`:return`channelType.phone`;case`email`:return`channelType.email`;default:return null}}function q(e){let t=Ee(e.toLowerCase());return t?I(t,{ns:`contacts`}):e}var De=`New Contact`;function Oe(e){return e===De}var J=l();function ke({channels:e,pendingChannelKey:t=null,onConnect:n,onDisconnect:r}){let{t:i}=R(`contacts`),[a,o]=(0,K.useState)(null);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col`,children:e.map((e,i)=>(0,J.jsxs)(`div`,{children:[i>0?(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}):null,(0,J.jsx)(Ae,{channel:e,pending:t===e.key,onConnect:n?()=>n(e.key):void 0,onDisconnect:r?()=>o(e.key):void 0})]},e.key))}),(0,J.jsx)(F,{open:a!==null,title:i(`assistantContactChannels.disconnectConfirmTitle`,{channel:a?x(a):``}),message:i(`assistantContactChannels.disconnectConfirmMessage`),confirmLabel:i(`actions.disconnect`),destructive:!0,onConfirm:()=>{a&&r&&r(a),o(null)},onCancel:()=>o(null)})]})}function Ae({channel:e,pending:t,onConnect:r,onDisconnect:i}){let{t:a}=R(`contacts`),o=e.status===`ready`;return(0,J.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,J.jsx)(S,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,J.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:x(e.key)}),o&&e.address?(0,J.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,J.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:o?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),a(`channelStatus.connected`)]}),(0,J.jsx)(n,{variant:`danger`,onClick:i,disabled:!i||t,children:a(t?`actions.disconnecting`:`actions.disconnect`)})]}):(0,J.jsx)(n,{variant:`outlined`,onClick:r,disabled:!r||t,children:a(`actions.connect`)})})]})}function Y({role:e,contactType:t}){let{label:n,tone:r}=X(e,t);return(0,J.jsx)(M,{tone:r,children:n})}function X(e,t){switch(e){case`guardian`:return{label:`Guardian`,tone:`positive`};case`assistant`:return{label:`Assistant`,tone:`negative`};default:return t===`assistant`?{label:`Assistant`,tone:`negative`}:{label:`Human`,tone:`warning`}}}function je({assistantName:e,...t}){let{t:n}=R(`contacts`),r=b(e);return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:n(`assistantChannelsDetail.title`,{name:r}),accessory:(0,J.jsx)(Y,{role:`assistant`}),compactAccessory:!0}),(0,J.jsx)(V,{title:n(`assistantChannelsDetail.channelsTitle`),subtitle:n(`assistantChannelsDetail.channelsSubtitle`,{name:r}),children:(0,J.jsx)(ke,{...t})})]})}var Me=new Set([`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`]);function Z(e){return Me.has(e)}function Q(e,t){return e.id===`a2a`?t&&t.status!==`revoked`?{kind:`connected`}:{kind:`setup`}:t!=null&&Te(t)?{kind:`verified`}:t?.status===`blocked`?{kind:`none`}:t&&t.status!==`revoked`?{kind:`unverified`}:{kind:`setup`}}function Ne(e,t,n){let r=[],i=new Set;if(e)for(let t of e)t.id===`a2a`&&!n||(r.push(t),i.add(t.id));for(let e of t)e.status===`revoked`||i.has(e.type)||e.type===`a2a`&&!n||Z(e.type)&&(r.push({id:e.type,source:`default`,label:e.type.charAt(0).toUpperCase()+e.type.slice(1),subtitle:``,icon:`help-circle`,supportsVerification:!1,setupMessages:{guardian:``,contact:``}}),i.add(e.type));return r}function Pe({name:e,className:t,style:n}){switch(e){case`bot`:return(0,J.jsx)(v,{className:t,style:n});case`hash`:return(0,J.jsx)(g,{className:t,style:n});case`send`:return(0,J.jsx)(A,{className:t,style:n});case`phone`:return(0,J.jsx)(_,{className:t,style:n});case`mail`:return(0,J.jsx)(E,{className:t,style:n});case`message-square`:return(0,J.jsx)(ne,{className:t,style:n});default:return(0,J.jsx)(G,{className:t,style:n})}}function Fe({contactChannels:e,availableChannels:t,a2aEnabled:n,setupLabel:r,verifyLoading:i,verifySubject:a=`self`,onSetupChannel:o,onVerifyChannel:s,onRevokeChannel:c,onLinkAccount:l}){let{t:u}=R(`contacts`),[d,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(null),h=new Map;for(let t of e)t.status!==`revoked`&&(h.has(t.type)||h.set(t.type,t));return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex flex-col`,children:Ne(t,e,n).map((e,t)=>{let n=h.get(e.id);return(0,J.jsxs)(`div`,{children:[t>0&&(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,J.jsx)($,{info:e,existing:n,setupLabel:r??u(`contactChannelsSection.setupDefault`),verifyLoading:i,onSetup:o?()=>o(e.id):void 0,onVerify:s&&e.supportsVerification?()=>f(e):void 0,onRevoke:c&&n?()=>m({channelId:n.id,channel:e}):void 0,onLinkAccount:l&&we.has(e.id)?()=>l(e.id):void 0})]},e.id)})}),d&&(0,J.jsx)(F,{open:!0,title:u(`contactChannelsSection.verifyConfirmTitle`,{channel:d.label}),message:u(a===`contact`?`contactChannelsSection.verifyConfirmMessageContact`:`contactChannelsSection.verifyConfirmMessageGuardian`,{channel:d.label}),confirmLabel:u(`actions.verify`),onConfirm:()=>{d&&(s?.(d.id),f(null))},onCancel:()=>f(null)}),p&&(0,J.jsx)(F,{open:!0,title:u(`contactChannelsSection.revokeConfirmTitle`,{channel:p.channel.label}),message:u(`contactChannelsSection.revokeConfirmMessage`),confirmLabel:u(`actions.revoke`),destructive:!0,onConfirm:()=>{c?.(p.channelId,p.channel.id),m(null)},onCancel:()=>m(null)})]})}function $({info:e,existing:t,setupLabel:r,verifyLoading:i,onSetup:a,onVerify:o,onRevoke:s,onLinkAccount:c}){let{t:l}=R(`contacts`),u=Q(e,t);return(0,J.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,J.jsx)(Pe,{name:e.icon,className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,J.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),t?.address?(0,J.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.address}):null,(0,J.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:u.kind===`connected`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),l(`channelStatus.connected`)]}),s?(0,J.jsx)(n,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`verified`?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,J.jsx)(C,{className:`h-3 w-3`}),l(`channelStatus.verified`)]}),s?(0,J.jsx)(n,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`unverified`?(0,J.jsx)(n,{variant:`outlined`,onClick:o,disabled:!o||i,children:l(i?`actions.verifying`:`actions.verify`)}):u.kind===`setup`?e.id===`a2a`?null:(0,J.jsxs)(J.Fragment,{children:[c?(0,J.jsxs)(n,{onClick:c,children:[(0,J.jsx)(te,{className:`h-3.5 w-3.5`}),l(`contactChannelsSection.linkAccount`)]}):null,(0,J.jsx)(n,{variant:`outlined`,onClick:a,disabled:!a,children:r})]}):null})]})}function Ie(e){return(0,J.jsx)(Le,{...e},e.contact.id)}function Le({contact:e,savePending:t,deletePending:r,verifyPending:i,mergePending:a=!1,canMerge:o=!1,availableChannels:s,a2aEnabled:c,onSave:l,onDelete:u,onMerge:d,onSetupChannel:f,onVerifyChannel:p,onRevokeChannel:m,onLinkAccount:h}){let{t:g}=R(`contacts`),_=Oe(e.displayName),[v,y]=(0,K.useState)(_?``:e.displayName),[ee,b]=(0,K.useState)(e.notes??``),[x,S]=(0,K.useState)(!1),C=v.trim(),w=ee.trim(),te=_?``:e.displayName,T=e.notes??``,E=C!==te||w!==T,ne=C.length>0&&E&&!t&&!r,D=_&&e.channels.length===0&&e.interactionCount===0,O=C||(_?g(`contact.draftName`):e.displayName),k=g(`contact.interactions`,{count:e.interactionCount});return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:O,accessory:(0,J.jsx)(Y,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:k,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(N,{label:g(`contact.nameLabel`),type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:g(`contactDetailView.namePlaceholder`),autoFocus:_,disabled:t||r,fullWidth:!0}),(0,J.jsx)(N,{label:g(`contact.notesLabel`),type:`text`,value:ee,onChange:e=>b(e.target.value),placeholder:g(`contactDetailView.notesPlaceholder`),disabled:t||r,fullWidth:!0}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(n,{type:`button`,onClick:()=>l({displayName:C,notes:w}),disabled:!ne,children:g(t?`actions.saving`:`actions.save`)}),d?(0,J.jsx)(n,{type:`button`,variant:`outlined`,onClick:d,disabled:!o||D||E||a||t||r,title:o?D?g(`contactDetailView.mergeBlockedUnsavedDraft`):E?g(`contact.mergeBlockedUnsaved`):void 0:g(`contact.mergeBlockedNoCandidates`),children:g(a?`actions.merging`:`actions.merge`)}):null,(0,J.jsx)(n,{type:`button`,variant:`danger`,onClick:()=>{D?u():S(!0)},disabled:r,children:g(r?`actions.deleting`:`contactDetailView.delete`)})]})]})}),(0,J.jsx)(V,{title:g(`contactDetailView.linkedAccountsTitle`),subtitle:g(`contactDetailView.linkedAccountsSubtitle`),children:(0,J.jsx)(Fe,{contactChannels:e.channels,availableChannels:s,a2aEnabled:c,verifyLoading:i,verifySubject:`contact`,onSetupChannel:f,onVerifyChannel:p,onRevokeChannel:m,onLinkAccount:h})}),(0,J.jsx)(F,{open:x,title:g(`contactDetailView.deleteConfirmTitle`,{name:O}),message:g(`contactDetailView.deleteConfirmMessage`),confirmLabel:g(`actions.delete`),destructive:!0,onConfirm:()=>{S(!1),u()},onCancel:()=>S(!1)})]})}function Re(e){return(0,J.jsx)(ze,{...e},`${e.survivor.id}:${e.open?`open`:`closed`}`)}function ze({open:e,survivor:t,candidates:r,pending:i,errorMessage:a,onMerge:o,onClose:s}){let{t:c}=R(`contacts`),[l,d]=(0,K.useState)(``),[f,p]=(0,K.useState)(null);(0,K.useEffect)(()=>{f&&!r.some(e=>e.id===f)&&p(null)},[r,f]);let h=(0,K.useMemo)(()=>{let e=l.trim().toLowerCase();return e?r.filter(t=>t.displayName.toLowerCase().includes(e)):r},[r,l]),g=f?r.find(e=>e.id===f)??null:null,_=We(t);return(0,J.jsx)(P.Root,{open:e,onOpenChange:e=>{!e&&!i&&s()},children:(0,J.jsxs)(P.Content,{size:`md`,children:[(0,J.jsxs)(P.Header,{icon:Ce,children:[(0,J.jsx)(P.Title,{children:g?c(`contactMergeDialog.titlePicked`,{donor:g.displayName,survivor:_}):c(`contactMergeDialog.titlePicking`,{survivor:_})}),(0,J.jsx)(P.Description,{children:c(g?`contactMergeDialog.descriptionPicked`:`contactMergeDialog.descriptionPicking`)})]}),(0,J.jsxs)(P.Body,{className:`flex flex-col gap-3`,children:[g?(0,J.jsx)(He,{survivor:t,donor:g}):r.length===0?(0,J.jsx)(Ue,{}):(0,J.jsx)(Be,{search:l,onSearch:d,candidates:h,onPick:p}),a?(0,J.jsx)(u,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:a}):null]}),(0,J.jsx)(P.Footer,{children:g?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(n,{variant:`outlined`,onClick:()=>p(null),disabled:i,leftIcon:(0,J.jsx)(m,{"aria-hidden":!0}),children:c(`actions.back`)}),(0,J.jsx)(n,{variant:`danger`,onClick:()=>o(g.id),disabled:i,children:c(i?`actions.merging`:`contactMergeDialog.confirm`)})]}):(0,J.jsx)(n,{variant:`outlined`,onClick:s,disabled:i,children:c(`actions.cancel`)})})]})})}function Be({search:e,onSearch:t,candidates:n,onPick:r}){let{t:i}=R(`contacts`);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(N,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:i(`contactMergeDialog.searchPlaceholder`),leftIcon:(0,J.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}),(0,J.jsx)(`div`,{className:`flex max-h-[320px] min-h-[120px] flex-col gap-1 overflow-y-auto`,role:`listbox`,"aria-label":i(`contactMergeDialog.listAriaLabel`),children:n.length===0?(0,J.jsx)(u,{as:`p`,variant:`body-small-default`,className:`px-3 py-4 text-center text-(--content-tertiary)`,children:i(`contactsList.noMatches`)}):n.map(e=>(0,J.jsx)(Ve,{contact:e,onPick:()=>r(e.id)},e.id))})]})}function Ve({contact:e,onPick:t}){let n=Ke(e).join(` | `)||void 0;return(0,J.jsx)(f,{asChild:!0,children:(0,J.jsx)(`button`,{type:`button`,onClick:t,role:`option`,"aria-selected":`false`,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e.displayName}),n?(0,J.jsx)(`span`,{className:`truncate text-body-small-default text-(--content-tertiary)`,children:n}):null]})})})}function He({survivor:e,donor:t}){let{t:n}=R(`contacts`),r=We(e),{moved:i,duplicates:a}=Ge(e,t);return(0,J.jsxs)(`ul`,{className:`flex flex-col gap-2 text-body-medium-lighter text-(--content-secondary)`,children:[(0,J.jsx)(`li`,{children:(0,J.jsx)(L,{i18nKey:`contactMergeDialog.donorDeleted`,ns:`contacts`,values:{donor:t.displayName},components:{donor:(0,J.jsx)(`span`,{className:`text-(--content-default)`})}})}),(0,J.jsx)(`li`,{children:n(`contactMergeDialog.channelsMoved`,{count:i.length,survivor:r,channels:i.map(e=>q(e.type)).join(`, `)})}),a.length>0?(0,J.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.duplicatesSkipped`,{count:a.length,survivor:r})}):null,t.notes?(0,J.jsx)(`li`,{children:n(`contactMergeDialog.notesAppended`)}):null,(0,J.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.irreversible`)})]})}function Ue(){let{t:e}=R(`contacts`);return(0,J.jsx)(u,{as:`p`,variant:`body-medium-lighter`,className:`px-3 py-6 text-center text-(--content-tertiary)`,children:e(`contactMergeDialog.empty`)})}function We(e){return e.role===`guardian`?!e.displayName||e.displayName.startsWith(`vellum-principal-`)?I(`survivorName.you`,{ns:`contacts`}):I(`survivorName.youNamed`,{ns:`contacts`,name:e.displayName}):e.displayName||I(`survivorName.thisContact`,{ns:`contacts`})}function Ge(e,t){let n=[],r=[];for(let i of t.channels)i.status!==`revoked`&&(e.channels.some(e=>e.type===i.type&&e.address.toLowerCase()===i.address.toLowerCase())?r.push(i):n.push(i));return{moved:n,duplicates:r}}function Ke(e){let t=new Set,n=[];for(let r of e.channels){if(r.status===`revoked`)continue;let e=r.type.toLowerCase();t.has(e)||(t.add(e),n.push(q(e)))}return n}function qe({loading:e,guardian:t,assistantName:r,regularContacts:i,selection:a,onSelect:o,onAddContact:s,addingContact:c=!1,search:l,onSearchChange:u}){let{t:f}=R(`contacts`),p=l.trim()?i.filter(e=>e.displayName.toLowerCase().includes(l.trim().toLowerCase())):i;return(0,J.jsx)(d.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,J.jsxs)(d.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:f(`contactsList.heading`)}),(0,J.jsx)(n,{type:`button`,variant:`ghost`,iconOnly:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(O,{"aria-hidden":!0}),onClick:s,disabled:c,"aria-label":f(`contactsList.addAriaLabel`),tintColor:`var(--content-secondary)`})]}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t?(0,J.jsx)(Je,{name:t.displayName?f(`contactsList.youNamed`,{name:t.displayName}):f(`contactsList.you`),role:t.role,channelTypes:t.channelTypes,selected:a?.kind===`contact`&&a.contactId===t.id,onClick:()=>o({kind:`contact`,contactId:t.id}),trailingIcon:`pencil`}):null,(0,J.jsx)(Je,{name:r?.trim()||f(`contactsList.assistantFallback`),role:`assistant`,selected:a?.kind===`assistant`,onClick:()=>o({kind:`assistant`}),trailingIcon:`more`})]}),(0,J.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),i.length>0?(0,J.jsx)(N,{type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:f(`contactsList.searchPlaceholder`),leftIcon:(0,J.jsx)(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,i.length>0?(0,J.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto flex flex-col gap-1`,children:[p.map(e=>(0,J.jsx)(Je,{name:e.displayName,role:e.role,contactType:e.contactType,channelTypes:e.channelTypes,verified:e.verified,selected:a?.kind===`contact`&&a.contactId===e.id,onClick:()=>o({kind:`contact`,contactId:e.id}),trailingIcon:`more`},e.id)),p.length===0?(0,J.jsx)(`p`,{className:`px-3 py-4 text-center text-body-small-default`,style:{color:`var(--content-tertiary)`},children:f(`contactsList.noMatches`)}):null]}):e?null:(0,J.jsx)(n,{type:`button`,variant:`ghost`,onClick:s,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,J.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,J.jsx)(j,{"aria-hidden":!0}),children:f(`contactsList.add`)})]})})}function Je({name:e,role:t,contactType:n,channelTypes:r,selected:i,onClick:a,trailingIcon:o,verified:s}){let{t:c}=R(`contacts`),l=r&&r.length>0?r.join(` | `):void 0,u=o===`pencil`?(0,J.jsx)(D,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):o===`more`?(0,J.jsx)(w,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):void 0;return(0,J.jsx)(f,{asChild:!0,active:i,children:(0,J.jsxs)(`button`,{type:`button`,onClick:a,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e}),l?(0,J.jsx)(`span`,{className:`truncate text-body-small-default`,style:{color:`var(--content-tertiary)`},children:l}):null]}),(0,J.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1`,children:[s===void 0?null:(0,J.jsx)(M,{tone:s?`positive`:`neutral`,children:c(s?`contactsList.verified`:`contactsList.unverified`)}),(0,J.jsx)(Y,{role:t,contactType:n}),u]})]})})}function Ye(e){return(0,J.jsx)(Xe,{...e},e.contact.id)}function Xe({contact:e,savePending:t,verifyPending:r,mergePending:i=!1,canMerge:a=!1,availableChannels:o,a2aEnabled:s,onSave:c,onMerge:l,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f,onGenerateInviteLink:p}){let{t:m}=R(`contacts`),h=e.displayName.startsWith(`vellum-principal-`),g=h?``:e.displayName,[_,v]=(0,K.useState)(g),[y,ee]=(0,K.useState)(e.notes??``),b=_.trim(),x=y.trim(),S=b!==g.trim()||x!==(e.notes??``).trim(),C=S&&!t,w=m(`contact.interactions`,{count:e.interactionCount});return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,J.jsx)(V,{title:h?m(`contactsList.you`):m(`contactsList.youNamed`,{name:e.displayName}),accessory:(0,J.jsx)(Y,{role:`guardian`}),compactAccessory:!0,subtitle:w,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(N,{label:m(`contact.nameLabel`),type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:m(`guardianDetailView.namePlaceholder`),disabled:t,fullWidth:!0}),(0,J.jsx)(N,{label:m(`contact.notesLabel`),type:`text`,value:y,onChange:e=>ee(e.target.value),placeholder:m(`guardianDetailView.notesPlaceholder`),disabled:t,fullWidth:!0}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(n,{variant:`primary`,onClick:()=>c({displayName:b||e.displayName,notes:x}),disabled:!C,children:m(t?`actions.saving`:`actions.save`)}),l?(0,J.jsx)(n,{variant:`outlined`,onClick:l,disabled:!a||S||i||t,title:a?S?m(`contact.mergeBlockedUnsaved`):void 0:m(`contact.mergeBlockedNoCandidates`),children:m(i?`actions.merging`:`actions.merge`)}):null]})]})}),(0,J.jsx)(V,{title:m(`guardianDetailView.channelsTitle`),subtitle:m(`guardianDetailView.channelsSubtitle`),children:(0,J.jsx)(Fe,{contactChannels:e.channels,availableChannels:o,a2aEnabled:s,setupLabel:m(`guardianDetailView.setupLabel`),verifyLoading:r,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f})}),p?(0,J.jsx)(U,{onClick:p}):null]})}function Ze(e,t){let n=t.trim().toLowerCase().replace(/^@/,``);return n===``?e:e.filter(e=>e.displayName.toLowerCase().includes(n)||e.username.toLowerCase().includes(n))}function Qe(e){let t=e.trim().split(/\s+/).filter(Boolean);return`${t[0]?.[0]??`?`}${t.length>1?t[t.length-1]?.[0]??``:``}`.toUpperCase()}function $e({open:e,channelLabel:t,contactName:r,accounts:i,loading:a,errorMessage:o,pendingAccountId:s,onPick:c,onClose:l,onInviteInstead:u}){let{t:d}=R(`contacts`),[f,p]=(0,K.useState)(``);(0,K.useEffect)(()=>{e&&p(``)},[e]);let m=(0,K.useMemo)(()=>Ze(i??[],f),[i,f]),g=s!=null;return(0,J.jsx)(P.Root,{open:e,onOpenChange:e=>!e&&l(),children:(0,J.jsxs)(P.Content,{size:`sm`,children:[(0,J.jsxs)(P.Header,{children:[(0,J.jsx)(P.Title,{children:d(`linkAccountDialog.title`,{channel:t})}),(0,J.jsx)(P.Description,{children:(0,J.jsx)(L,{i18nKey:`linkAccountDialog.description`,ns:`contacts`,values:{channel:t,name:r},components:{contact:(0,J.jsx)(`span`,{className:`text-[color:var(--content-default)]`})}})})]}),(0,J.jsxs)(P.Body,{className:`flex flex-col gap-3`,children:[(0,J.jsx)(N,{type:`search`,value:f,onChange:e=>p(e.target.value),placeholder:d(`linkAccountDialog.searchPlaceholder`),"aria-label":d(`linkAccountDialog.searchAriaLabel`,{channel:t}),leftIcon:(0,J.jsx)(k,{className:`h-4 w-4`}),fullWidth:!0}),o?(0,J.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-negative)]`,children:o}):null,(0,J.jsx)(`div`,{className:`max-h-80 overflow-y-auto`,children:a?(0,J.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:d(`linkAccountDialog.loading`)}):m.length===0?(0,J.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:(i?.length??0)===0?d(`linkAccountDialog.noMembers`):d(`linkAccountDialog.noMatches`)}):(0,J.jsx)(`ul`,{className:`flex flex-col`,children:m.map(e=>(0,J.jsx)(`li`,{children:(0,J.jsxs)(`button`,{type:`button`,onClick:()=>c(e),disabled:g,className:`flex w-full cursor-pointer items-center gap-3 rounded-md px-2 py-2 text-left transition-colors hover:bg-[var(--surface-overlay)] disabled:cursor-not-allowed disabled:opacity-60`,children:[e.imageUrl?(0,J.jsx)(`img`,{src:e.imageUrl,alt:``,className:`h-8 w-8 shrink-0 rounded-full`}):(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--tag-bg-neutral)] text-body-small-emphasised text-[color:var(--content-secondary)]`,children:Qe(e.displayName)}),(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,J.jsx)(`span`,{className:`truncate text-body-medium-default text-[color:var(--content-default)]`,children:e.displayName}),(0,J.jsxs)(`span`,{className:`truncate text-body-small-default text-[color:var(--content-tertiary)]`,children:[`@`,e.username]})]}),s===e.id?(0,J.jsx)(`span`,{className:`ml-auto shrink-0 text-body-small-default text-[color:var(--content-tertiary)]`,children:d(`linkAccountDialog.linking`)}):null]})},e.id))})})]}),(0,J.jsxs)(P.Footer,{className:`items-center justify-between gap-3 border-t border-[var(--border-base)]`,children:[(0,J.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:(0,J.jsx)(L,{i18nKey:`linkAccountDialog.guardianLinkNote`,ns:`contacts`,components:{emphasis:(0,J.jsx)(`span`,{className:`text-[color:var(--content-secondary)]`})}})}),u?(0,J.jsxs)(n,{variant:`link`,className:`shrink-0`,onClick:u,disabled:g,children:[d(`linkAccountDialog.inviteInstead`),(0,J.jsx)(h,{className:`h-3.5 w-3.5`})]}):null]})]})})}function et({assistantId:e,channelType:t,contact:n,onLinked:r}){let[i,a]=(0,K.useState)(!1),o=c({mutationFn:n=>W(e,n.contact,{type:t,address:n.account.id}),onSuccess:(e,t)=>{a(!1),re.success(I(`accountLink.linked`,{ns:`contacts`,username:t.account.username})),r()}}),s=(0,K.useCallback)(()=>{o.reset(),a(!0)},[o]),l=(0,K.useCallback)(()=>{o.isPending||(o.reset(),a(!1))},[o]),u=(0,K.useCallback)(e=>{!n||o.isPending||o.mutate({contact:n,account:e})},[n,o]);return{channelType:t,dialogOpen:i,open:s,close:l,linkErrorMessage:o.error instanceof Error?o.error.message:o.error?I(`accountLink.linkFailed`,{ns:`contacts`}):null,pendingAccountId:o.isPending?o.variables.account.id:null,pick:u}}var tt=[{id:`slack`,source:`default`,label:`Slack`,subtitle:`Message your assistant from Slack`,icon:`hash`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Slack. Can you help me set that up?`,contact:`I'd like to verify a contact's Slack identity. Can you walk me through it?`}},{id:`telegram`,source:`default`,label:`Telegram`,subtitle:`Message your assistant from Telegram`,icon:`send`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Telegram. Can you help me set that up?`,contact:`I'd like to verify a contact's Telegram identity. Can you walk me through it?`}},{id:`phone`,source:`default`,label:`Phone Calling`,subtitle:`Call or text your assistant via phone`,icon:`phone`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian for phone calls. Can you help me set that up?`,contact:`I'd like to verify a contact's phone number. Can you help me set that up?`}}],nt=[];function rt({assistantId:e,onStartSetupConversation:t}){let{t:n}=R(`contacts`),r=pe.use.a2aChannel(),l=ie.use.name(),u=o(),[d]=i(),f=d.get(`setup`),p=f&&ee(f)?f:null,[m,h]=(0,K.useState)({kind:`assistant`}),g=ye(e),{paneRef:_,hasRoomForList:v,drawerOpen:x,openDrawer:S,closeDrawer:C}=ge(),[w,te]=(0,K.useState)(``),[T,E]=(0,K.useState)(!1),ne=b(l),D=(0,K.useMemo)(()=>({path:{assistant_id:e}}),[e]),O=de(D),k=s({...se(D),enabled:!!e,select:e=>e.contacts}),A=ve({assistantId:e,onStartSetupConversation:t}),j=s({...le({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await ae({path:{assistant_id:e},signal:t,throwOnError:!1});if(!i||i.status===404)return{channels:tt};if(!i.ok)throw r??Error(`Failed to fetch channel availability`);return n},select:e=>e.channels}).data??nt,M=k.data,N=(0,K.useMemo)(()=>M?.find(e=>e.role===`guardian`)??null,[M]),P=(0,K.useMemo)(()=>M?.filter(e=>e.role!==`guardian`)??[],[M]),F=(0,K.useMemo)(()=>m.kind===`contact`?M?.find(e=>e.id===m.contactId)??null:null,[M,m]),I=(0,K.useMemo)(()=>!M||!F?[]:M.filter(e=>e.id!==F.id&&e.role!==`guardian`),[M,F]),L=I.length>0,fe=(0,K.useRef)(!!p);(0,K.useEffect)(()=>{fe.current||N&&(fe.current=!0,h({kind:`contact`,contactId:N.id}))},[N]);let B=(0,K.useCallback)(()=>u.invalidateQueries({queryKey:O}),[u,O]),V=c({mutationFn:()=>xe(e,{displayName:De}),onMutate:async()=>{await u.cancelQueries({queryKey:O})},onSuccess:e=>{z(u,D,t=>t?{...t,contacts:[...t.contacts,e]}:void 0),h({kind:`contact`,contactId:e.id})},onError:H(n(`contactsPage.createFailed`)),onSettled:()=>B()}),U=c({mutationFn:t=>Se(e,t),onSuccess:(e,t)=>{z(u,D,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==t)}:void 0),h({kind:`assistant`})},onError:H(n(`contactsPage.deleteFailed`)),onSettled:()=>B()}),W=c({mutationFn:({contactId:t,patch:n})=>xe(e,{id:t,displayName:n.displayName,notes:n.notes}),onSuccess:e=>{z(u,D,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onError:H(n(`contactsPage.saveFailed`)),onSettled:()=>B()}),G=ue({onMutate:async()=>{await u.cancelQueries({queryKey:O})},onSuccess:(e,t)=>{let r=e.contact,i=t.body.mergeId;r&&(z(u,D,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==i).map(e=>e.id===r.id?r:e)}:void 0),h({kind:`contact`,contactId:r.id})),E(!1),re.success(n(`contactsPage.mergeSucceeded`))},onSettled:()=>B()}),Ce=(0,K.useCallback)(e=>{h(e),C(),E(!1),G.reset()},[C,G]),we=(0,K.useCallback)(()=>{G.reset(),E(!0)},[G]),Te=(0,K.useCallback)(()=>{G.isPending||(E(!1),G.reset())},[G]),Ee=ce({onSuccess:()=>B()}),Oe=(0,K.useCallback)((t,n)=>{Ee.mutate({path:{assistant_id:e,contactChannelId:t},body:{status:`revoked`}})},[Ee,e]),ke=(0,K.useCallback)(()=>{V.isPending||V.mutate()},[V]),Ae=(0,K.useCallback)(e=>{if(!t)return;let n=j.find(t=>t.id===e)?.setupMessages.contact;n&&t(n)},[j,t]),Y=(0,K.useCallback)(e=>{if(!t)return;let n=j.find(t=>t.id===e)?.setupMessages.guardian;n&&t(n)},[j,t]),X=c({mutationFn:t=>be(e,t.channelId),onSuccess:()=>B(),onError:H(n(`contactsPage.verifyFailed`))}),Me=(0,K.useCallback)(e=>{if(!F)return;let t=F.channels.find(t=>t.type===e&&t.status!==`revoked`);t&&X.mutate({channelId:t.id})},[F,X]),Z=et({assistantId:e,channelType:`slack`,contact:F?{id:F.id,displayName:F.displayName}:null,onLinked:B}),Q=s({...y(e),enabled:!!e&&Z.dialogOpen,select:e=>e.users}),Ne=A.channels.some(e=>e.key===`slack`&&e.status===`ready`),Pe=(0,K.useCallback)(e=>{e===Z.channelType&&Z.open()},[Z]),Fe=U.isPending?U.variables:null,$=(0,K.useMemo)(()=>F?W.isPending&&W.variables?.contactId===F.id?{...F,displayName:W.variables.patch.displayName,notes:W.variables.patch.notes}:F:null,[F,W.isPending,W.variables]);if(p)return(0,J.jsx)(a,{to:`${oe.channels}?setup=${p}`,replace:!0});let Le={loading:k.isLoading,assistantName:ne,guardian:N?{id:N.id,displayName:N.displayName.startsWith(`vellum-principal-`)?``:N.displayName,role:N.role,channelTypes:ot(N.channels,r)}:null,regularContacts:P.filter(e=>e.id!==Fe).map(e=>({id:e.id,displayName:e.displayName,role:e.role,contactType:e.contactType,channelTypes:ot(e.channels,r),verified:at(e.channels)})),selection:m,onAddContact:ke,addingContact:V.isPending,search:w,onSearchChange:te};return(0,J.jsxs)(`div`,{ref:_,className:`flex min-h-0 flex-1 overflow-hidden ${v?`flex-row gap-6`:`flex-col gap-4`}`,children:[v?(0,J.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,J.jsx)(qe,{...Le,onSelect:Ce})}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`flex items-center`,children:(0,J.jsx)(he,{onClick:S})}),(0,J.jsx)(me,{open:x,onClose:C,title:n(`contactsPage.title`),children:(0,J.jsx)(qe,{...Le,onSelect:Ce})})]}),(0,J.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:m.kind===`assistant`||m.kind===`contact`&&m.contactId===Fe?(0,J.jsx)(je,{assistantName:ne,channels:A.channels,pendingChannelKey:A.pendingChannelKey,onConnect:A.onSetup,onDisconnect:A.onDisconnect}):$?$.role===`guardian`?(0,J.jsx)(Ye,{contact:$,savePending:W.isPending,verifyPending:X.isPending,mergePending:G.isPending,canMerge:L,availableChannels:j,a2aEnabled:r,onSave:e=>{W.mutate({contactId:$.id,patch:e})},onMerge:we,onSetupChannel:t?Y:void 0,onVerifyChannel:Me,onRevokeChannel:Oe,onGenerateInviteLink:r?g.open:void 0}):(0,J.jsx)(Ie,{contact:$,savePending:W.isPending,deletePending:U.isPending,verifyPending:X.isPending,mergePending:G.isPending,canMerge:L,availableChannels:j,a2aEnabled:r,onSave:e=>{W.mutate({contactId:$.id,patch:e})},onDelete:()=>{U.mutate($.id)},onMerge:we,onSetupChannel:t?Ae:void 0,onVerifyChannel:Me,onRevokeChannel:Oe,onLinkAccount:Ne?Pe:void 0}):(0,J.jsx)(it,{})}),F?(0,J.jsx)(Re,{open:T,survivor:F,candidates:I,pending:G.isPending,errorMessage:G.error instanceof Error?G.error.message:G.error?n(`contactsPage.mergeFailed`):null,onMerge:t=>G.mutate({path:{assistant_id:e},body:{keepId:F.id,mergeId:t}}),onClose:Te}):null,(0,J.jsx)($e,{open:Z.dialogOpen,channelLabel:q(`slack`),contactName:F?.displayName??``,accounts:Q.data,loading:Q.isLoading,errorMessage:Q.isError?n(`contactsPage.rosterLoadFailed`):Z.linkErrorMessage,pendingAccountId:Z.pendingAccountId,onPick:Z.pick,onClose:Z.close,onInviteInstead:t?()=>{Z.close(),Ae(Z.channelType)}:void 0}),(0,J.jsx)(_e,{open:g.isOpen,assistantId:e,onClose:g.close})]})}function it(){let{t:e}=R(`contacts`);return(0,J.jsx)(`div`,{className:`flex h-full items-center justify-center py-16`,children:(0,J.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e(`contactsPage.emptyBody`)})})}function at(e){return e.some(e=>e.status!==`revoked`&&(e.type===`a2a`||Te(e)))}function ot(e,t){let n=new Set,r=[];for(let i of e){if(i.status===`revoked`)continue;let e=i.type.toLowerCase();n.has(e)||e===`a2a`&&!t||(n.add(e),r.push(q(e)))}return r}function st(){let e=r(),t=B();return(0,J.jsx)(rt,{assistantId:t,onStartSetupConversation:t=>{fe(e,{prompt:t})}},t)}export{st as ContactsPageRoute};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,a as t,h as n,i as r,j as i,k as a,t as o}from"./section-membership-
|
|
1
|
+
import{_ as e,a as t,h as n,i as r,j as i,k as a,t as o}from"./section-membership-vg-XaMPS.js";var s={conversations:[],hasMore:!1};async function c(t,n){await Promise.all([t.cancelQueries({queryKey:a(n)}),t.cancelQueries({queryKey:e(n)})])}function l(e,t){return e.getQueriesData({queryKey:a(t)}).map(([e,t])=>[e,t])}function u(e,t){for(let[n,r]of t)e.setQueryData(n,r)}async function d(t,r){await Promise.all([t.invalidateQueries({queryKey:a(r)}),t.invalidateQueries({queryKey:e(r)}),t.invalidateQueries({queryKey:n(r)})])}function f(e,t){let n=t(e.conversations);return n===e.conversations?e:{conversations:n,hasMore:e.hasMore}}function p(e,t,n){e.setQueryData(t,e=>{let t=e??s,r=f(t,n);return r===t?e:r})}function m(e,t,n,r){p(e,i(t,n),r)}function h(e,t,n){if(!t)return;let r=e.getQueriesData({queryKey:a(t)});for(let[t,i]of r){if(!i)continue;let r=f(i,n);r!==i&&e.setQueryData(t,r)}}function g(e,t,n){if(!t)return;let r=e.getQueriesData({queryKey:a(t)});for(let[,e]of r){let t=e?.conversations.find(e=>e.conversationId===n);if(t)return t}}function _(...e){let[t=[],...n]=e;if(n.every(e=>e.length===0))return t;let r=new Set(t.map(e=>e.conversationId)),i=[...t];for(let e of n)for(let t of e)r.has(t.conversationId)||(r.add(t.conversationId),i.push(t));return i}function v(e,n,i,a){let s;return h(e,n,e=>{let t=!1,n=e.map(e=>e.conversationId===i?(t=!0,s??={...e,...a},s):e);return t?n:e}),!s||!r(a)?[]:(o(e,n,s),t(e,n,s))}export{v as a,h as c,_ as i,m as l,g as n,u as o,d as r,l as s,c as t};
|
package/dist/assets/{conversation-navigation-DQEOhOXf.js → conversation-navigation-B_4jZ9Z2.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as e}from"./routes-B7wRw3UT.js";import{t}from"./conversation-store-DKBwV4bc.js";import{t as n}from"./haptics-
|
|
1
|
+
import{d as e}from"./routes-B7wRw3UT.js";import{t}from"./conversation-store-DKBwV4bc.js";import{t as n}from"./haptics-D3hzTCtH.js";import{r}from"./subagent-store-DqKEBlAM.js";import{t as i}from"./workflow-store-BXqyb8CL.js";import{i as a}from"./viewer-store-CwlLnf-k.js";import{t as o}from"./conversation-selection-4ubh2ui-.js";import{t as s}from"./sound-manager-lHaiHTCh.js";import{t as c}from"./use-is-mobile-q9Lr7beO.js";var l=`vellum:focus-composer`,u=!1;function d(){u=!0,typeof window<`u`&&window.dispatchEvent(new Event(l))}function f(){let e=u;return u=!1,e}var p=[`input`,`textarea`,`select`,`[contenteditable=""]`,`[contenteditable="true"]`,`[role="textbox"]`].join(`,`);function m(e){return!!e?.closest(p)}function h(e){return!!e?.closest(`a[href], button, summary`)}function g(e,t){return!(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey||e.isComposing||e.keyCode===229||typeof e.key!=`string`||e.key.length!==1||m(t)||e.key===` `&&h(t))}function _({value:e,text:t,selectionStart:n,selectionEnd:r}){let i=Math.max(0,Math.min(n??e.length,e.length)),a=Math.max(i,Math.min(r??i,e.length));return{value:e.slice(0,i)+t+e.slice(a),cursor:i+t.length}}function v(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(c).matches}function y(e){if(v())return!1;let n=a.getState();return n.mainView!==`app`&&n.mainView!==`app-editing`||!n.activeAppId&&!n.openedAppState?!1:(t.getState().setEditingConversationId(e),n.enterAppEditing(),!0)}function b(e){y(e)||a.getState().setMainView(`chat`)}function x(o,s,c){c?.silent||n.light(),b(s),s!==t.getState().activeConversationId&&(r.getState().reset(),i.getState().reset(),a.getState().clearTranscriptPanelPayloads()),t.getState().setActiveConversationId(s),o(c?.messageId?e.conversationAtMessage(s,c.messageId):e.conversation(s))}function S(c,l){l?.silent||(n.light(),s().play(`new_conversation`)),r.getState().reset(),i.getState().reset(),a.getState().clearTranscriptPanelPayloads();let u=o();b(u),t.getState().setActiveConversationId(u);let f=e.conversation(u);if(l?.prompt){let e=new URLSearchParams({prompt:l.prompt});f=`${f}?${e.toString()}`}c(f),d()}export{l as a,d as c,b as i,g as l,x as n,f as o,S as r,_ as s,y as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./useQuery-CTSuec5b.js";import{t as r}from"./useQueries-Bimdc7uA.js";import{t as i}from"./queryOptions-DbnOXI51.js";import{r as a}from"./use-is-org-ready-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./useQuery-CTSuec5b.js";import{t as r}from"./useQueries-Bimdc7uA.js";import{t as i}from"./queryOptions-DbnOXI51.js";import{r as a}from"./use-is-org-ready-GDBxqujc.js";import{F as o,O as s}from"./react-query.gen-Bbh5MII3.js";import{n as c}from"./operational-status-CMN32PL8.js";import{C as l,D as u,E as d,N as f,P as p,S as m,T as h,f as g,g as _,m as v,u as y,w as b,y as x,z as S}from"./section-membership-vg-XaMPS.js";import{i as C}from"./conversation-cache-qk0nNm6Q.js";var w=e(t(),1),T=3e4;function E(e,t=d){let n=s({path:{assistant_id:e},query:t}).queryKey;return p(t)?i({queryKey:n,queryFn:async({client:r})=>{let i=await g(e,t),a=r.getQueryData(n);return a?m(a,i,{pinnedInjected:f(t)}):i},staleTime:T}):i({queryKey:n,queryFn:async()=>({conversations:await y(e,t),hasMore:!1}),staleTime:T})}var D=[],O=[];function k(e){let t=a(),n=c(e);return t&&n}var A={conversations:D,isLoading:!1,isPending:!0,isError:!1,error:null,hasData:!1,hasMore:!1,refetch:()=>{}};function j(e,t,n){let i=k(e),a=r({queries:t===null?[]:[{...E(e??``,t),enabled:n&&!!e&&i}]})[0];return a===void 0?A:{conversations:a.data?.conversations??D,isLoading:a.isLoading,isPending:a.isPending,isError:a.isError,error:a.error,hasData:a.data!==void 0,hasMore:a.data?.hasMore??!1,refetch:()=>{a.refetch()}}}function M(e,t=!0){return j(e,d,t)}function N(e,t=!0){return j(e,h,t)}function P(e,t=!0){return j(e,u,t)}function F(e,t,n=!0){return j(e,t,n)}function I(e,t=!0){let n=j(e,b,t),r=j(e,l,t);return{conversations:(0,w.useMemo)(()=>{let e=C(n.conversations,r.conversations);return e===n.conversations?e:[...e].sort(x(`archivedAt`))},[n.conversations,r.conversations]),isLoading:n.isLoading||r.isLoading,isPending:n.isPending||r.isPending,isError:n.isError||r.isError,error:n.error??r.error,hasData:n.hasData&&r.hasData,hasMore:!1,refetch:()=>{n.refetch(),r.refetch()}}}function L(e,t=!0){let r=a();return n({...v(e),enabled:t&&!!e&&r}).data??null}function R(e,t=!0){let r=k(e);return n({..._(e),enabled:t&&!!e&&r}).data??null}function z(e,t,n=!0){let r=R(e,n),i=(0,w.useMemo)(()=>S(t),[t]);return Math.max(0,r??i)}function B(e,t=!0){let r=k(e),i=n({...o({path:{assistant_id:e??``}}),select:e=>e.groups,enabled:t&&!!e&&r,staleTime:3e4});return{conversationGroups:i.data??O,isLoading:i.isLoading}}export{M as a,L as c,B as i,z as l,N as n,P as o,k as r,F as s,I as t};
|
package/dist/assets/{conversation-selection-BFTHfyYb.js → conversation-selection-4ubh2ui-.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./conversation-store-DKBwV4bc.js";import{B as t,n}from"./section-membership-
|
|
1
|
+
import{t as e}from"./conversation-store-DKBwV4bc.js";import{B as t,n}from"./section-membership-vg-XaMPS.js";function r(){let t=typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`draft-${Date.now()}-${Math.random().toString(16).slice(2)}`;return e.getState().registerDraftConversationId(t),t}function i({platformStartsInNewChat:e,urlConversationId:t,currentConversationId:n}){return e&&t==null&&n==null}function a(e){return n(e)&&!t(e)}function o({storedConversation:e,defaultConversationId:t,...n}){return s(n)||(e&&a(e)?e.conversationId:t)}function s({queryParamKey:e,onboardingDraftConversationId:t,newChatDraftConversationId:n,currentConversationId:r,currentAssistantId:i,nextAssistantId:a}){return e||t||(i===a&&r?r:n||null)}export{i as a,s as i,a as n,o as r,r as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{t as r}from"./jsx-runtime-BJ8jcmzB.js";import{t as i}from"./card-DUsAeHUS.js";import{t as a}from"./circle-alert-DvkPmyIg.js";import{t as o}from"./circle-check-BlOeCme9.js";import{t as s}from"./key-round-C51ZTEMu.js";import{t as c}from"./loader-circle-DYe85z3g.js";import{t as l}from"./input-DkgpMeG9.js";import"./i18n
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{t as r}from"./jsx-runtime-BJ8jcmzB.js";import{t as i}from"./card-DUsAeHUS.js";import{t as a}from"./circle-alert-DvkPmyIg.js";import{t as o}from"./circle-check-BlOeCme9.js";import{t as s}from"./key-round-C51ZTEMu.js";import{t as c}from"./loader-circle-DYe85z3g.js";import{t as l}from"./input-DkgpMeG9.js";import"./i18n-C9hRT4Lf.js";import{t as u}from"./useTranslation-D9pPv-bA.js";import{s as d}from"./remote-gateway-session-CzPLaXuT.js";var f=e(t(),1),p=`/v1/credential-requests/peek`,m=`/v1/credential-requests/submit`;function h(e){return e>0xe8d4a51000?e:e*1e3}function g(e){let t=e?.error?.code;return t===`INVALID`?`invalid`:t===`EXPIRED`?`expired`:t===`USED`?`used`:null}function _(e){let t=e;return typeof t?.service==`string`&&typeof t.field==`string`&&(t.label===null||typeof t.label==`string`)&&typeof t.expiresAt==`number`}async function v(e,t){let n=await fetch(d(p),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e}),signal:t}),r=await n.json().catch(()=>null);return n.ok&&_(r)?{status:`ok`,request:r}:n.status===404?{status:g(r)??`invalid`}:{status:`error`}}async function y(e,t,n){let r=await fetch(d(m),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,value:t}),signal:n});if(r.ok)return{status:`ok`};let i=await r.json().catch(()=>null);return r.status===404?{status:g(i)??`invalid`}:r.status===502?{status:`store-failed`}:{status:`error`}}var b=r();function x(e){let[t,n]=(0,f.useState)(()=>Date.now());return(0,f.useEffect)(()=>{let t=setInterval(()=>n(Date.now()),e);return()=>clearInterval(t)},[e]),t}function S(e){let t=Math.max(0,Math.ceil(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}h ${r}m`:r>0?`${r}m ${i}s`:`${i}s`}function C({icon:e,title:t,children:n}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e,(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:t})]}),(0,b.jsx)(`p`,{className:`text-sm leading-6 text-[var(--content-secondary)]`,children:n})]})}function w(){let{t:e}=u(`credential-requests`),[t]=(0,f.useState)(()=>new URLSearchParams(window.location.hash.replace(/^#/,``)).get(`token`)?.trim()||new URLSearchParams(window.location.search).get(`token`)?.trim()||null),[r,d]=(0,f.useState)({kind:`loading`}),[p,m]=(0,f.useState)(``),[g,_]=(0,f.useState)(!1),[w,T]=(0,f.useState)(null),E=x(1e3);(0,f.useEffect)(()=>{let e=new URL(window.location.href),t=new URLSearchParams(e.hash.replace(/^#/,``));if(!t.has(`token`)&&!e.searchParams.has(`token`))return;e.searchParams.delete(`token`),t.delete(`token`);let n=t.toString();window.history.replaceState(window.history.state,``,`${e.pathname}${e.search}${n?`#${n}`:``}`)},[]),(0,f.useEffect)(()=>{if(!t){d({kind:`invalid`});return}let e=new AbortController;return(async()=>{let n=await v(t,e.signal).catch(()=>({status:`error`}));e.signal.aborted||(n.status===`ok`?d({kind:`form`,request:n.request}):d({kind:n.status}))})(),()=>{e.abort()}},[t]);let D=async e=>{if(e.preventDefault(),!t||r.kind!==`form`||!p.trim()||g)return;_(!0),T(null);let n=await y(t,p).catch(()=>({status:`error`}));switch(_(!1),n.status){case`ok`:m(``),d({kind:`success`});break;case`invalid`:case`expired`:case`used`:d({kind:n.status});break;case`store-failed`:m(``),d({kind:`store-failed`});break;case`error`:T(`Something went wrong while submitting. Check your connection and try again.`);break}},O=r.kind===`form`?h(r.request.expiresAt):null,k=r.kind===`form`&&O!==null&&O>E,A;if(r.kind===`loading`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(c,{className:`h-5 w-5 animate-spin text-blue-600`,"aria-hidden":!0}),title:e(`credentialEntry.checkingTitle`),children:e(`credentialEntry.checkingBody`)});else if(r.kind===`success`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(o,{className:`h-5 w-5 text-green-600`,"aria-hidden":!0}),title:e(`credentialEntry.savedTitle`),children:e(`credentialEntry.savedBody`)});else if(r.kind===`invalid`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.invalidTitle`),children:e(`credentialEntry.invalidBody`)});else if(r.kind===`expired`||r.kind===`form`&&!k)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.expiredTitle`),children:e(`credentialEntry.expiredBody`)});else if(r.kind===`used`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.usedTitle`),children:e(`credentialEntry.usedBody`)});else if(r.kind===`store-failed`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.storeFailedTitle`),children:e(`credentialEntry.storeFailedBody`)});else if(r.kind===`error`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.errorTitle`),children:e(`credentialEntry.errorBody`)});else{let{request:t}=r,i=`${t.service}:${t.field}`,a=(O??0)-E;A=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(s,{className:`h-5 w-5 text-blue-600`,"aria-hidden":!0}),(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:e(`credentialEntry.heading`)})]}),(0,b.jsxs)(`div`,{className:`rounded-md border border-[var(--border-subtle)] bg-[var(--background-muted)] p-4`,children:[(0,b.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:t.label||i}),(0,b.jsxs)(`p`,{className:`mt-1 font-mono text-body-small-default text-[var(--content-tertiary)]`,children:[t.label?`${i} · `:``,e(`credentialEntry.oneTimeEntry`)]})]}),(0,b.jsx)(`p`,{className:`text-sm leading-6 text-[var(--content-secondary)]`,children:e(`credentialEntry.instructions`)}),(0,b.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:e=>void D(e),children:[(0,b.jsx)(l,{label:e(`credentialEntry.valueLabel`),type:`password`,value:p,onChange:e=>m(e.target.value),placeholder:e(`credentialEntry.valuePlaceholder`),autoComplete:`off`,autoFocus:!0,fullWidth:!0,errorText:w??void 0}),(0,b.jsx)(n,{type:`submit`,disabled:g||!p.trim(),leftIcon:g?(0,b.jsx)(c,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:e(`credentialEntry.submit`)})]}),(0,b.jsx)(`p`,{className:`text-xs text-[var(--content-tertiary)]`,children:e(`credentialEntry.expiresIn`,{remaining:S(a),time:new Date(O??0).toLocaleTimeString()})})]})}return(0,b.jsx)(`main`,{className:`flex min-h-svh items-center justify-center bg-[var(--background-default)] px-6 py-10 text-[var(--content-primary)]`,children:(0,b.jsx)(`div`,{className:`w-full max-w-md`,children:(0,b.jsx)(i.Root,{bordered:!0,elevated:!0,padding:`lg`,children:(0,b.jsx)(`div`,{className:`flex flex-col gap-4`,children:A})})})})}export{w as CredentialEntryPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{r as t}from"./capture-error-DiNp24s6.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-VkxVX0DM.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./jsx-runtime-BJ8jcmzB.js";import{t as s}from"./card-DUsAeHUS.js";import{a as c,d as l,n as u,o as d}from"./list-row-CDwzGT9g.js";import{t as f}from"./check-pgeLaeXx.js";import{t as p}from"./chevron-down-CmQCCo_x.js";import{t as m}from"./eye-off-0lRvXR9p.js";import{t as h}from"./eye-CHlTF_ct.js";import{t as g}from"./key-round-C51ZTEMu.js";import{t as _}from"./link-2-BBS4SmE3.js";import{t as v}from"./loader-circle-DYe85z3g.js";import{t as y}from"./plus-CWkbiq1y.js";import{t as ee}from"./search-D_t5oHhF.js";import{t as b}from"./trash-2-V2WT_DbX.js";import{t as te}from"./tag-Ddzwz3ij.js";import{t as x}from"./popover-D3A6cIyW.js";import{t as S}from"./input-DkgpMeG9.js";import{t as C}from"./modal-UYNawsIu.js";import{n as w}from"./toast-DqqWkjsh.js";import{t as ne}from"./confirm-dialog-Drw1adml.js";import{t as T}from"./assistant-identity-store-DhAqaifK.js";import{Qr as E,ft as re,pt as D}from"./sdk.gen-CiE6cMi0.js";import{r as ie}from"./use-is-org-ready-BYJTuCXo.js";import{nn as O}from"./react-query.gen-Bbh5MII3.js";import{t as k}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as A}from"./use-touch-mobile-CnqGLpCj.js";import{t as j}from"./copy-to-clipboard-D76_3Coc.js";import{t as M}from"./use-active-assistant-id-BADYKVyx.js";import{n as N,t as P}from"./add-credential-modal-vRe51ERD.js";import{t as F}from"./not-found-DlCb1TjZ.js";import{t as I}from"./detail-card-BzCuPjtL.js";import{t as L}from"./use-supports-credentials-settings-BCD9S39r.js";var R=e(n(),1),z=o(),B=1500;function V(e){if(!e)return``;try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function H({credential:e,assistantId:t,generatingLink:n,deleting:r,onGenerateLink:i,onDelete:a}){let o=`${e.service}:${e.field}`,[c,l]=(0,R.useState)(!1),u=[e.alias?o:null,e.createdAt?`added ${V(e.createdAt)}`:null].filter(e=>!!e);return(0,z.jsx)(s.Root,{children:(0,z.jsxs)(s.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,z.jsx)(g,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.alias||o}),(0,z.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center`,children:(0,z.jsx)(U,{assistantId:t,credential:e})}),u.length>0&&(0,z.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:u.join(` · `)})]}),(0,z.jsx)(`div`,{className:`shrink-0`,children:(0,z.jsx)(W,{name:o,open:c,onOpenChange:l,generatingLink:n,deleting:r,onGenerateLink:()=>{l(!1),i()},onDelete:()=>{l(!1),a()}})})]})})}function U({assistantId:e,credential:t}){let[n,r]=(0,R.useState)(null),[i,a]=(0,R.useState)(!1),[o,s]=(0,R.useState)(!1),c=(0,R.useRef)(null),u=(0,R.useRef)(0),d=`${t.service}:${t.field}`,p=(0,R.useCallback)(()=>{u.current++,r(null),a(!1),s(!1),c.current&&=(clearTimeout(c.current),null)},[]);(0,R.useEffect)(()=>{p()},[t.updatedAt,p]);let g=(0,R.useCallback)(async()=>{let n=++u.current;a(!0);try{let{data:i}=await D({path:{assistant_id:e},body:{service:t.service,field:t.field},throwOnError:!0});u.current===n&&r(i.value)}catch{u.current===n&&w.error(`Couldn't reveal ${d}.`)}finally{u.current===n&&a(!1)}},[e,t.service,t.field,d]),_=(0,R.useCallback)(()=>{n!=null&&j(n,{errorMessage:`Couldn't copy. Reveal and copy manually.`,onCopied:()=>{s(!0),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>s(!1),B)}})},[n]),y=n!==null;return t.hasSecret?(0,z.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5 align-middle font-mono text-body-medium-lighter`,children:[(0,z.jsx)(`button`,{type:`button`,onClick:()=>y?p():void g(),disabled:i,"aria-label":y?`Hide value for ${d}`:`Reveal value for ${d}`,title:y?`Hide value`:`Click to reveal`,"data-private":!0,className:`min-w-0 truncate rounded-sm text-left transition-[filter,color] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)] ${y?`text-[var(--content-secondary)]`:`select-none text-[var(--content-tertiary)] blur-[3px] hover:blur-[2px]`}`,children:y?n:t.scrubbedValue}),i?(0,z.jsx)(v,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):y?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`button`,{type:`button`,onClick:_,"aria-label":`Copy value for ${d}`,title:`Copy value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:o?(0,z.jsx)(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,z.jsx)(l,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,z.jsx)(`button`,{type:`button`,onClick:p,"aria-label":`Hide value for ${d}`,title:`Hide value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,z.jsx)(m,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,z.jsx)(`button`,{type:`button`,onClick:()=>void g(),"aria-label":`Reveal value for ${d}`,title:`Click to reveal`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,z.jsx)(h,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,z.jsx)(`span`,{className:`min-w-0 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:t.scrubbedValue})}function W({name:e,open:t,onOpenChange:n,generatingLink:i,deleting:a,onGenerateLink:o,onDelete:s}){let l=A(),d=i||a,f=(0,z.jsx)(r,{variant:`outlined`,rightIcon:(0,z.jsx)(p,{}),"aria-haspopup":`menu`,"aria-expanded":t,"aria-label":`Configure ${e}`,leftIcon:d?(0,z.jsx)(v,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:`Configure`});return l?(0,z.jsxs)(c.Root,{open:t,onOpenChange:n,children:[(0,z.jsx)(c.Trigger,{asChild:!0,children:f}),(0,z.jsxs)(c.Content,{children:[(0,z.jsx)(c.Header,{children:(0,z.jsx)(c.Title,{children:e})}),(0,z.jsxs)(c.Body,{children:[(0,z.jsx)(u,{icon:i?v:_,label:`Generate link`,onSelect:()=>{d||o()}}),(0,z.jsx)(u,{icon:a?v:b,label:`Delete`,onSelect:()=>{d||s()}})]})]})]}):(0,z.jsxs)(x.Root,{open:t,onOpenChange:n,children:[(0,z.jsx)(x.Trigger,{asChild:!0,children:f}),(0,z.jsxs)(x.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,z.jsx)(r,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:o,disabled:d,className:`w-full justify-start rounded-none`,leftIcon:i?(0,z.jsx)(v,{className:`animate-spin`,"aria-hidden":!0}):(0,z.jsx)(_,{"aria-hidden":!0}),children:`Generate link`}),(0,z.jsx)(r,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:s,disabled:d,className:`w-full justify-start rounded-none`,leftIcon:a?(0,z.jsx)(v,{className:`animate-spin`,"aria-hidden":!0}):(0,z.jsx)(b,{"aria-hidden":!0}),children:`Delete`})]})]})}function G(e){return e>0xe8d4a51000?e:e*1e3}async function K(e,t){let{data:n,response:r}=await E.post({url:`/v1/assistants/{assistant_id}/credential-requests`,path:{assistant_id:e},body:t});if(!r?.ok)throw Error(`Failed to create credential request: ${r?.status}`);return n}var q=6;function J(){let e=M(),t=L(e),n=T.use.assistantId();return T.use.version()!==null&&n===e&&!t?(0,z.jsx)(F,{}):t?(0,z.jsx)(Y,{}):null}function Y(){let e=M(),n=i(),o=ie(),c=N(e),u=a({queryKey:c,queryFn:async()=>{let{data:t}=await re({path:{assistant_id:e},body:{},throwOnError:!0});return{credentials:t.credentials,managedCredentials:t.managedCredentials}},enabled:o,retry:t}),f=(0,R.useMemo)(()=>u.data?.credentials??[],[u.data]),p=k.use.settingsDeveloperNav(),m=(0,R.useMemo)(()=>p?u.data?.managedCredentials??[]:[],[p,u.data]),h=O({onError:e=>{w.error(e.message||`Failed to delete credential`)}}),[b,x]=(0,R.useState)(!1),[T,E]=(0,R.useState)(`own`),[D,A]=(0,R.useState)(``),[F,L]=(0,R.useState)(null),[B,V]=(0,R.useState)(null),[U,W]=(0,R.useState)(null),J=h.isPending?`${h.variables?.body?.service}:${h.variables?.body?.field}`:null,Y=(0,R.useMemo)(()=>{let e=D.trim().toLowerCase();return e?f.filter(t=>[t.service,t.field,`${t.service}:${t.field}`,t.alias??``].join(` `).toLowerCase().includes(e)):f},[f,D]);(0,R.useEffect)(()=>{f.length<=q&&A(``)},[f.length]),(0,R.useEffect)(()=>{f.length===0&&m.length>0&&E(`managed`)},[f.length,m.length]);let ae=()=>{let t=F;L(null),t&&h.mutate({path:{assistant_id:e},body:{service:t.service,field:t.field}},{onSuccess:()=>{n.invalidateQueries({queryKey:c}),w.success(`Deleted ${t.service}:${t.field}.`)}})},X=async t=>{let n=`${t.service}:${t.field}`;W(n);try{let r=await K(e,{service:t.service,field:t.field,label:t.alias??void 0});r.ok&&r.url?V({name:n,url:r.url,expiresAt:r.expiresAt??null}):w.error(r.error||`Failed to generate a one-time link`)}catch(e){w.error(e instanceof Error?e.message:`Failed to generate a one-time link`)}finally{W(null)}},oe=()=>{let e=B?.url;e&&j(e,{successMessage:`Link copied to clipboard.`,errorMessage:`Couldn't copy the link. Select it and copy manually.`})};if(u.isLoading)return(0,z.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,z.jsx)(v,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})});let Z=f.length>0,Q=m.length>0,se=f.length>q,$=T===`managed`&&Q;return(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsx)(I,{title:`Credentials`,subtitle:$?`Provided through your Vellum-managed integrations. These are read-only here.`:`Stored encrypted in your assistant's credential vault. Reveal a value on demand, or replace or delete it at any time.`,accessory:(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Q?(0,z.jsx)(d,{items:[{value:`own`,label:`Your own`},{value:`managed`,label:`Managed`}],value:T,onChange:E,ariaLabel:`Credential source`}):null,!$&&Z?(0,z.jsx)(r,{type:`button`,variant:`primary`,size:`regular`,onClick:()=>x(!0),leftIcon:(0,z.jsx)(y,{"aria-hidden":!0}),children:`Add`}):null]}),children:$?(0,z.jsx)(`div`,{className:`space-y-2`,children:m.map(e=>(0,z.jsx)(s.Root,{children:(0,z.jsxs)(s.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,z.jsx)(g,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.provider}),(0,z.jsxs)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:[e.accountInfo??e.handle,` · `,e.status]})]}),(0,z.jsx)(te,{tone:`neutral`,children:`Managed`})]})},e.handle))}):(0,z.jsxs)(`div`,{className:`space-y-4`,children:[Z?(0,z.jsxs)(`div`,{className:`space-y-3`,children:[se?(0,z.jsx)(S,{type:`text`,value:D,onChange:e=>A(e.target.value),placeholder:`Search credentials`,"aria-label":`Search credentials`,leftIcon:(0,z.jsx)(ee,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,Y.length===0?(0,z.jsxs)(`p`,{className:`px-1 py-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No credentials matched “`,D.trim(),`”.`]}):(0,z.jsx)(`div`,{className:`space-y-2`,children:Y.map(t=>{let n=`${t.service}:${t.field}`;return(0,z.jsx)(H,{credential:t,assistantId:e,generatingLink:U===n,deleting:J===n,onGenerateLink:()=>void X(t),onDelete:()=>L(t)},t.credentialId??n)})})]}):(0,z.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-6 py-12 text-center`,children:[(0,z.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,z.jsx)(g,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`,"aria-hidden":!0})}),(0,z.jsx)(`h3`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:`No credentials yet`}),(0,z.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Add an API key or token to let tools and integrations use it.`})]}),Z?null:(0,z.jsx)(r,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>x(!0),className:`w-full border-dashed`,leftIcon:(0,z.jsx)(y,{"aria-hidden":!0}),children:`Add Credential`})]})}),(0,z.jsx)(ne,{open:F!==null,title:`Delete credential`,message:F?`Delete ${F.service}:${F.field}? Tools and integrations using it will lose access.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:ae,onCancel:()=>L(null)}),(0,z.jsx)(P,{open:b,onClose:()=>x(!1)}),(0,z.jsx)(C.Root,{open:B!==null,onOpenChange:e=>{e||V(null)},children:(0,z.jsxs)(C.Content,{size:`sm`,children:[(0,z.jsxs)(C.Header,{icon:_,children:[(0,z.jsx)(C.Title,{children:`One-time credential link`}),(0,z.jsx)(C.Description,{children:B?`Send this link to whoever should provide ${B.name}. It works exactly once${B.expiresAt===null?``:` and expires ${new Date(G(B.expiresAt)).toLocaleString()}`}. Anyone with the link can set this credential, so share it over a trusted channel.`:``})]}),(0,z.jsx)(C.Body,{children:(0,z.jsx)(S,{label:`Link`,type:`text`,readOnly:!0,value:B?.url??``,onFocus:e=>e.currentTarget.select(),fullWidth:!0})}),(0,z.jsx)(C.Footer,{children:(0,z.jsx)(r,{type:`button`,size:`compact`,onClick:oe,leftIcon:(0,z.jsx)(l,{"aria-hidden":!0}),children:`Copy link`})})]})})]})}export{J as CredentialsPage};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{r as t}from"./capture-error-DiNp24s6.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-VkxVX0DM.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./jsx-runtime-BJ8jcmzB.js";import{t as s}from"./card-DUsAeHUS.js";import{a as c,d as l,n as u,o as d}from"./list-row-CDwzGT9g.js";import{t as f}from"./check-pgeLaeXx.js";import{t as p}from"./chevron-down-CmQCCo_x.js";import{t as m}from"./eye-off-0lRvXR9p.js";import{t as h}from"./eye-CHlTF_ct.js";import{t as g}from"./key-round-C51ZTEMu.js";import{t as _}from"./link-2-BBS4SmE3.js";import{t as v}from"./loader-circle-DYe85z3g.js";import{t as y}from"./plus-CWkbiq1y.js";import{t as ee}from"./search-D_t5oHhF.js";import{t as b}from"./trash-2-V2WT_DbX.js";import{t as te}from"./tag-Ddzwz3ij.js";import{t as x}from"./popover-D3A6cIyW.js";import{t as S}from"./input-DkgpMeG9.js";import{t as C}from"./modal-UYNawsIu.js";import{n as w}from"./toast-DqqWkjsh.js";import{t as ne}from"./confirm-dialog-Drw1adml.js";import{t as T}from"./assistant-identity-store-DhAqaifK.js";import{Qr as E,ft as re,pt as D}from"./sdk.gen-CiE6cMi0.js";import{r as ie}from"./use-is-org-ready-GDBxqujc.js";import{nn as O}from"./react-query.gen-Bbh5MII3.js";import{t as k}from"./assistant-feature-flag-store-CNWz-RMv.js";import{t as A}from"./use-touch-mobile-CnqGLpCj.js";import{t as j}from"./copy-to-clipboard-D76_3Coc.js";import{t as M}from"./use-active-assistant-id-BADYKVyx.js";import{n as N,t as P}from"./add-credential-modal-vRe51ERD.js";import{t as F}from"./not-found-ui-gcXqK.js";import{t as I}from"./detail-card-Bqnvs6YE.js";import{t as L}from"./use-supports-credentials-settings-Cj-Py42f.js";var R=e(n(),1),z=o(),B=1500;function V(e){if(!e)return``;try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function H({credential:e,assistantId:t,generatingLink:n,deleting:r,onGenerateLink:i,onDelete:a}){let o=`${e.service}:${e.field}`,[c,l]=(0,R.useState)(!1),u=[e.alias?o:null,e.createdAt?`added ${V(e.createdAt)}`:null].filter(e=>!!e);return(0,z.jsx)(s.Root,{children:(0,z.jsxs)(s.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,z.jsx)(g,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.alias||o}),(0,z.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center`,children:(0,z.jsx)(U,{assistantId:t,credential:e})}),u.length>0&&(0,z.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:u.join(` · `)})]}),(0,z.jsx)(`div`,{className:`shrink-0`,children:(0,z.jsx)(W,{name:o,open:c,onOpenChange:l,generatingLink:n,deleting:r,onGenerateLink:()=>{l(!1),i()},onDelete:()=>{l(!1),a()}})})]})})}function U({assistantId:e,credential:t}){let[n,r]=(0,R.useState)(null),[i,a]=(0,R.useState)(!1),[o,s]=(0,R.useState)(!1),c=(0,R.useRef)(null),u=(0,R.useRef)(0),d=`${t.service}:${t.field}`,p=(0,R.useCallback)(()=>{u.current++,r(null),a(!1),s(!1),c.current&&=(clearTimeout(c.current),null)},[]);(0,R.useEffect)(()=>{p()},[t.updatedAt,p]);let g=(0,R.useCallback)(async()=>{let n=++u.current;a(!0);try{let{data:i}=await D({path:{assistant_id:e},body:{service:t.service,field:t.field},throwOnError:!0});u.current===n&&r(i.value)}catch{u.current===n&&w.error(`Couldn't reveal ${d}.`)}finally{u.current===n&&a(!1)}},[e,t.service,t.field,d]),_=(0,R.useCallback)(()=>{n!=null&&j(n,{errorMessage:`Couldn't copy. Reveal and copy manually.`,onCopied:()=>{s(!0),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>s(!1),B)}})},[n]),y=n!==null;return t.hasSecret?(0,z.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5 align-middle font-mono text-body-medium-lighter`,children:[(0,z.jsx)(`button`,{type:`button`,onClick:()=>y?p():void g(),disabled:i,"aria-label":y?`Hide value for ${d}`:`Reveal value for ${d}`,title:y?`Hide value`:`Click to reveal`,"data-private":!0,className:`min-w-0 truncate rounded-sm text-left transition-[filter,color] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)] ${y?`text-[var(--content-secondary)]`:`select-none text-[var(--content-tertiary)] blur-[3px] hover:blur-[2px]`}`,children:y?n:t.scrubbedValue}),i?(0,z.jsx)(v,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):y?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`button`,{type:`button`,onClick:_,"aria-label":`Copy value for ${d}`,title:`Copy value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:o?(0,z.jsx)(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,z.jsx)(l,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,z.jsx)(`button`,{type:`button`,onClick:p,"aria-label":`Hide value for ${d}`,title:`Hide value`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,z.jsx)(m,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,z.jsx)(`button`,{type:`button`,onClick:()=>void g(),"aria-label":`Reveal value for ${d}`,title:`Click to reveal`,className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,z.jsx)(h,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,z.jsx)(`span`,{className:`min-w-0 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:t.scrubbedValue})}function W({name:e,open:t,onOpenChange:n,generatingLink:i,deleting:a,onGenerateLink:o,onDelete:s}){let l=A(),d=i||a,f=(0,z.jsx)(r,{variant:`outlined`,rightIcon:(0,z.jsx)(p,{}),"aria-haspopup":`menu`,"aria-expanded":t,"aria-label":`Configure ${e}`,leftIcon:d?(0,z.jsx)(v,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:`Configure`});return l?(0,z.jsxs)(c.Root,{open:t,onOpenChange:n,children:[(0,z.jsx)(c.Trigger,{asChild:!0,children:f}),(0,z.jsxs)(c.Content,{children:[(0,z.jsx)(c.Header,{children:(0,z.jsx)(c.Title,{children:e})}),(0,z.jsxs)(c.Body,{children:[(0,z.jsx)(u,{icon:i?v:_,label:`Generate link`,onSelect:()=>{d||o()}}),(0,z.jsx)(u,{icon:a?v:b,label:`Delete`,onSelect:()=>{d||s()}})]})]})]}):(0,z.jsxs)(x.Root,{open:t,onOpenChange:n,children:[(0,z.jsx)(x.Trigger,{asChild:!0,children:f}),(0,z.jsxs)(x.Content,{align:`end`,sideOffset:4,role:`menu`,className:`w-56 overflow-hidden p-0`,children:[(0,z.jsx)(r,{type:`button`,role:`menuitem`,variant:`ghost`,onClick:o,disabled:d,className:`w-full justify-start rounded-none`,leftIcon:i?(0,z.jsx)(v,{className:`animate-spin`,"aria-hidden":!0}):(0,z.jsx)(_,{"aria-hidden":!0}),children:`Generate link`}),(0,z.jsx)(r,{type:`button`,role:`menuitem`,variant:`dangerGhost`,onClick:s,disabled:d,className:`w-full justify-start rounded-none`,leftIcon:a?(0,z.jsx)(v,{className:`animate-spin`,"aria-hidden":!0}):(0,z.jsx)(b,{"aria-hidden":!0}),children:`Delete`})]})]})}function G(e){return e>0xe8d4a51000?e:e*1e3}async function K(e,t){let{data:n,response:r}=await E.post({url:`/v1/assistants/{assistant_id}/credential-requests`,path:{assistant_id:e},body:t});if(!r?.ok)throw Error(`Failed to create credential request: ${r?.status}`);return n}var q=6;function J(){let e=M(),t=L(e),n=T.use.assistantId();return T.use.version()!==null&&n===e&&!t?(0,z.jsx)(F,{}):t?(0,z.jsx)(Y,{}):null}function Y(){let e=M(),n=i(),o=ie(),c=N(e),u=a({queryKey:c,queryFn:async()=>{let{data:t}=await re({path:{assistant_id:e},body:{},throwOnError:!0});return{credentials:t.credentials,managedCredentials:t.managedCredentials}},enabled:o,retry:t}),f=(0,R.useMemo)(()=>u.data?.credentials??[],[u.data]),p=k.use.settingsDeveloperNav(),m=(0,R.useMemo)(()=>p?u.data?.managedCredentials??[]:[],[p,u.data]),h=O({onError:e=>{w.error(e.message||`Failed to delete credential`)}}),[b,x]=(0,R.useState)(!1),[T,E]=(0,R.useState)(`own`),[D,A]=(0,R.useState)(``),[F,L]=(0,R.useState)(null),[B,V]=(0,R.useState)(null),[U,W]=(0,R.useState)(null),J=h.isPending?`${h.variables?.body?.service}:${h.variables?.body?.field}`:null,Y=(0,R.useMemo)(()=>{let e=D.trim().toLowerCase();return e?f.filter(t=>[t.service,t.field,`${t.service}:${t.field}`,t.alias??``].join(` `).toLowerCase().includes(e)):f},[f,D]);(0,R.useEffect)(()=>{f.length<=q&&A(``)},[f.length]),(0,R.useEffect)(()=>{f.length===0&&m.length>0&&E(`managed`)},[f.length,m.length]);let ae=()=>{let t=F;L(null),t&&h.mutate({path:{assistant_id:e},body:{service:t.service,field:t.field}},{onSuccess:()=>{n.invalidateQueries({queryKey:c}),w.success(`Deleted ${t.service}:${t.field}.`)}})},X=async t=>{let n=`${t.service}:${t.field}`;W(n);try{let r=await K(e,{service:t.service,field:t.field,label:t.alias??void 0});r.ok&&r.url?V({name:n,url:r.url,expiresAt:r.expiresAt??null}):w.error(r.error||`Failed to generate a one-time link`)}catch(e){w.error(e instanceof Error?e.message:`Failed to generate a one-time link`)}finally{W(null)}},oe=()=>{let e=B?.url;e&&j(e,{successMessage:`Link copied to clipboard.`,errorMessage:`Couldn't copy the link. Select it and copy manually.`})};if(u.isLoading)return(0,z.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,z.jsx)(v,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})});let Z=f.length>0,Q=m.length>0,se=f.length>q,$=T===`managed`&&Q;return(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsx)(I,{title:`Credentials`,subtitle:$?`Provided through your Vellum-managed integrations. These are read-only here.`:`Stored encrypted in your assistant's credential vault. Reveal a value on demand, or replace or delete it at any time.`,accessory:(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Q?(0,z.jsx)(d,{items:[{value:`own`,label:`Your own`},{value:`managed`,label:`Managed`}],value:T,onChange:E,ariaLabel:`Credential source`}):null,!$&&Z?(0,z.jsx)(r,{type:`button`,variant:`primary`,size:`regular`,onClick:()=>x(!0),leftIcon:(0,z.jsx)(y,{"aria-hidden":!0}),children:`Add`}):null]}),children:$?(0,z.jsx)(`div`,{className:`space-y-2`,children:m.map(e=>(0,z.jsx)(s.Root,{children:(0,z.jsxs)(s.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,z.jsx)(g,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.provider}),(0,z.jsxs)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:[e.accountInfo??e.handle,` · `,e.status]})]}),(0,z.jsx)(te,{tone:`neutral`,children:`Managed`})]})},e.handle))}):(0,z.jsxs)(`div`,{className:`space-y-4`,children:[Z?(0,z.jsxs)(`div`,{className:`space-y-3`,children:[se?(0,z.jsx)(S,{type:`text`,value:D,onChange:e=>A(e.target.value),placeholder:`Search credentials`,"aria-label":`Search credentials`,leftIcon:(0,z.jsx)(ee,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,Y.length===0?(0,z.jsxs)(`p`,{className:`px-1 py-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`No credentials matched “`,D.trim(),`”.`]}):(0,z.jsx)(`div`,{className:`space-y-2`,children:Y.map(t=>{let n=`${t.service}:${t.field}`;return(0,z.jsx)(H,{credential:t,assistantId:e,generatingLink:U===n,deleting:J===n,onGenerateLink:()=>void X(t),onDelete:()=>L(t)},t.credentialId??n)})})]}):(0,z.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-6 py-12 text-center`,children:[(0,z.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,z.jsx)(g,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`,"aria-hidden":!0})}),(0,z.jsx)(`h3`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:`No credentials yet`}),(0,z.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Add an API key or token to let tools and integrations use it.`})]}),Z?null:(0,z.jsx)(r,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>x(!0),className:`w-full border-dashed`,leftIcon:(0,z.jsx)(y,{"aria-hidden":!0}),children:`Add Credential`})]})}),(0,z.jsx)(ne,{open:F!==null,title:`Delete credential`,message:F?`Delete ${F.service}:${F.field}? Tools and integrations using it will lose access.`:``,confirmLabel:`Delete`,destructive:!0,onConfirm:ae,onCancel:()=>L(null)}),(0,z.jsx)(P,{open:b,onClose:()=>x(!1)}),(0,z.jsx)(C.Root,{open:B!==null,onOpenChange:e=>{e||V(null)},children:(0,z.jsxs)(C.Content,{size:`sm`,children:[(0,z.jsxs)(C.Header,{icon:_,children:[(0,z.jsx)(C.Title,{children:`One-time credential link`}),(0,z.jsx)(C.Description,{children:B?`Send this link to whoever should provide ${B.name}. It works exactly once${B.expiresAt===null?``:` and expires ${new Date(G(B.expiresAt)).toLocaleString()}`}. Anyone with the link can set this credential, so share it over a trusted channel.`:``})]}),(0,z.jsx)(C.Body,{children:(0,z.jsx)(S,{label:`Link`,type:`text`,readOnly:!0,value:B?.url??``,onFocus:e=>e.currentTarget.select(),fullWidth:!0})}),(0,z.jsx)(C.Footer,{children:(0,z.jsx)(r,{type:`button`,size:`compact`,onClick:oe,leftIcon:(0,z.jsx)(l,{"aria-hidden":!0}),children:`Copy link`})})]})})]})}export{J as CredentialsPage};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-BJ8jcmzB.js";import{t as r}from"./typography-DekrYXvs.js";import{t as i}from"./preview-error-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./jsx-runtime-BJ8jcmzB.js";import{t as r}from"./typography-DekrYXvs.js";import{t as i}from"./preview-error-gCViZZRw.js";import{l as a}from"./src-CImIAPTd.js";import{t as o}from"./preview-skeleton-Be9eHMn9.js";var s=e(t(),1),c=[`,`,`;`,` `];function l(e){let t=e.trim();return t===``?!1:/^[+-]?(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?$/.test(t)}function u(e,t){let n=0,r=!1,i=!1;for(let a=0;a<e.length;a+=1){let o=e[a];if(r){o===`"`&&(e[a+1]===`"`?a+=1:r=!1),i=!0;continue}if(o===`"`){r=!0,i=!0;continue}if(o===`
|
|
2
2
|
`||o===`\r`){if(i)break;continue}o===t&&(n+=1),i=!0}return n}function d(e){let t=c[0],n=0;for(let r of c){let i=u(e,r);i>n&&(t=r,n=i)}return t}function f(e,t){let n=[],r=[],i=``,a=!1,o=!1,s=()=>{r.push(i),i=``,r.length===1&&r[0]===``||n.push(r),r=[]};for(let c=0;c<e.length;c+=1){let l=e[c];if(a){l===`"`?e[c+1]===`"`?(i+=`"`,c+=1):a=!1:i+=l;continue}if(l===`"`&&i===``){a=!0;continue}if(l===t){r.push(i),i=``;continue}if(l===`\r`||l===`
|
|
3
3
|
`){if(l===`\r`&&e[c+1]===`
|
|
4
4
|
`&&(c+=1),s(),n.length>=5e3)return o=e.slice(c+1).trim()!==``,{records:n,truncated:o};continue}i+=l}return(i!==``||r.length>0)&&s(),{records:n,truncated:o}}function p(e){let t=e[0];return!t||e.length<2||t.some(e=>e.trim()===``||l(e))?!1:e.slice(1).some(e=>e.some(e=>l(e)))}function m(e){let t=e.charCodeAt(0)===65279?e.slice(1):e;if(t.trim()===``)return{headers:null,rows:[],truncated:!1};let{records:n,truncated:r}=f(t,d(t));if(n.length===0)return{headers:null,rows:[],truncated:r};let i=n.reduce((e,t)=>Math.max(e,t.length),0),a=Math.min(i,200),o=i>200,s=n.map(e=>{let t=e.slice(0,a);for(;t.length<a;)t.push(``);return t}),c=p(s);return{headers:c?s[0]:null,rows:c?s.slice(1):s,truncated:r||o}}var h=n(),g=30,_=`border-b border-r border-[var(--border-element)] px-2 py-1 align-top last:border-r-0`,v={Table:({style:e,...t})=>(0,h.jsx)(`table`,{...t,className:`w-full min-w-max border-collapse text-body-small-default text-[var(--content-default)]`,style:e}),TableRow:({item:e,...t})=>(0,h.jsx)(`tr`,{...t})};function y({blob:e,filename:t}){let[n,c]=(0,s.useState)(null),[l,u]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let t=!1;return c(null),u(!1),e.text().then(e=>{t||c(e)},()=>{t||u(!0)}),()=>{t=!0}},[e]);let d=(0,s.useMemo)(()=>n===null?null:m(n),[n]),f=d?.headers??null,p=(0,s.useCallback)(()=>f===null?null:(0,h.jsx)(`tr`,{children:f.map((e,t)=>(0,h.jsx)(`th`,{scope:`col`,title:e,className:`${_} bg-[var(--surface-sunken)] text-left text-body-small-emphasised`,children:(0,h.jsx)(`span`,{className:`block max-w-[20rem] truncate`,children:e})},t))}),[f]);if(l)return(0,h.jsx)(i,{filename:t});if(d===null)return(0,h.jsx)(o,{});let y=f?.length??d.rows[0]?.length??0;return y===0?(0,h.jsx)(`div`,{role:`status`,className:`flex h-full items-center justify-center p-4`,children:(0,h.jsx)(r,{as:`span`,variant:`body-small-default`,className:`text-[var(--content-tertiary)]`,children:`This file is empty`})}):(0,h.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,h.jsx)(a,{data:d.rows,initialItemCount:Math.min(d.rows.length,g),components:v,fixedHeaderContent:f===null?void 0:p,itemContent:(e,t)=>t.map((e,t)=>(0,h.jsx)(`td`,{title:e,className:_,children:(0,h.jsx)(`span`,{className:`block max-w-[20rem] truncate`,children:e})},t)),className:`min-h-0 flex-1`}),(0,h.jsxs)(r,{as:`p`,variant:`label-small-default`,className:`shrink-0 border-t border-[var(--border-element)] px-3 py-1.5 text-[var(--content-tertiary)]`,children:[`${d.rows.length} rows x ${y} columns`,d.truncated?` (truncated)`:``]})]})}export{y as CsvPreview};
|