@vellumai/web 0.10.3-staging.2 → 0.10.4-staging.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AnimatePresence-CgXwEO42.js → AnimatePresence-Dfn9OLfv.js} +2 -2
- package/dist/assets/{BundleConfirmPage-DpfvIcwl.js → BundleConfirmPage-cwBrFi1K.js} +1 -1
- package/dist/assets/{Combination-4Qc3vrtW.js → Combination-DRz6Ez-m.js} +1 -1
- package/dist/assets/{QueryClientProvider-DKhXIxGb.js → QueryClientProvider-DgWA3A3c.js} +1 -1
- package/dist/assets/{about-page-CuSnWJFo.js → about-page-6YWjIdZL.js} +1 -1
- package/dist/assets/{account-page-CCYCSy2-.js → account-page-bNvk8mIC.js} +1 -1
- package/dist/assets/{account-shell-b6GjlQ0u.js → account-shell-B1geYjoc.js} +1 -1
- package/dist/assets/{add-credits-modal-Dy3I3Har.js → add-credits-modal-D-5W9e8w.js} +1 -1
- package/dist/assets/{advanced-page-CVnT0zH-.js → advanced-page-CuerkFrp.js} +1 -1
- package/dist/assets/ai-page-CsqhZcSf.js +1 -0
- package/dist/assets/{api-2kc3MHRz.js → api-DXPKXkDj.js} +1 -1
- package/dist/assets/{api-key-screen-DGVn66y4.js → api-key-screen-QS5FdtlL.js} +1 -1
- package/dist/assets/{app-info-BZYaLxCg.js → app-info-oX9MaK2d.js} +1 -1
- package/dist/assets/{archive-BFILUl9x.js → archive-Ct5g6T4N.js} +1 -1
- package/dist/assets/{archive-page-Dl6HLIJt.js → archive-page-Bh0LTWRp.js} +1 -1
- package/dist/assets/arrow-left-BPsKoNcb.js +1 -0
- package/dist/assets/arrow-up-CkZMv0kb.js +1 -0
- package/dist/assets/{assistant-api-DROTS3Y9.js → assistant-api-BdlaVxiH.js} +1 -1
- package/dist/assets/{assistant-feature-flag-store-Dl92XRsM.js → assistant-feature-flag-store-Ceb6N94N.js} +1 -1
- package/dist/assets/assistant-identity-store-ESeBny_J.js +1 -0
- package/dist/assets/{assistant-status-panel-BkIkvMYw.js → assistant-status-panel-DRHanMan.js} +1 -1
- package/dist/assets/auth-store-BzL2lSd1.js +7 -0
- package/dist/assets/ban-BW0pQzvY.js +1 -0
- package/dist/assets/{bell-DB1SrBre.js → bell-B-09xFrv.js} +1 -1
- package/dist/assets/{billing-page-Cq_yLwUC.js → billing-page-CEArOabV.js} +3 -3
- package/dist/assets/{bookmark-C3S-p0MQ.js → bookmark-B_4Mr1qd.js} +1 -1
- package/dist/assets/{bookmarks-page-CANlE7hP.js → bookmarks-page-BvkvZ7uy.js} +1 -1
- package/dist/assets/{brain-Bs6LnfHO.js → brain-CamcLepK.js} +1 -1
- package/dist/assets/{browser-CKX_K5ev.js → browser-CDQJAXkC.js} +2 -2
- package/dist/assets/{bug-DDcuQ3au.js → bug-BiiqXpDy.js} +1 -1
- package/dist/assets/{build-state-VC4tL7sK.js → build-state-BIN8lPRx.js} +1 -1
- package/dist/assets/{button-D7s2Q_uG.js → button-BvHa6F59.js} +1 -1
- package/dist/assets/{calendar-CpgH8CqM.js → calendar-Ba3kkcG0.js} +1 -1
- package/dist/assets/{capture-error-Hr1Yo2kx.js → capture-error-BaKOqBjF.js} +1 -1
- package/dist/assets/{card-BibIM9x3.js → card-D9_3ngHI.js} +1 -1
- package/dist/assets/check-DwLoiFa9.js +1 -0
- package/dist/assets/check-DxBmXJus.js +1 -0
- package/dist/assets/{checkbox-BqCzUvXM.js → checkbox-DNfwi5Hy.js} +1 -1
- package/dist/assets/chevron-left-CgekgptJ.js +1 -0
- package/dist/assets/chevron-right-DP15nqFC.js +1 -0
- package/dist/assets/{chevron-up-BRZN6p_l.js → chevron-up-CNrKWpd3.js} +1 -1
- package/dist/assets/{circle-alert-DvNg50UK.js → circle-alert-BB_iJtM8.js} +1 -1
- package/dist/assets/circle-check-Cwv8JCfw.js +1 -0
- package/dist/assets/{client-feature-flag-store-C1kdd1EO.js → client-feature-flag-store-kWvb3vtZ.js} +1 -1
- package/dist/assets/{cloud-off-rAv4OHmv.js → cloud-off-DpkRXr7O.js} +1 -1
- package/dist/assets/{cn-DvW5mxZR.js → cn-CFvi8Z0K.js} +1 -1
- package/dist/assets/code-7vvpMPgo.js +1 -0
- package/dist/assets/{command-palette-GZu_zgQg.js → command-palette-D1nNMvVX.js} +1 -1
- package/dist/assets/{command-palette-window-page-CzWu42Ee.js → command-palette-window-page-DrZt0RaG.js} +1 -1
- package/dist/assets/{community-page-Dhgypa-h.js → community-page-A8lshdka.js} +1 -1
- package/dist/assets/{confirm-dialog-CfOXCE1N.js → confirm-dialog-BtxNY4WU.js} +1 -1
- package/dist/assets/{connect-page-CDOcgzzL.js → connect-page-CuSSRk9J.js} +1 -1
- package/dist/assets/{consent-controls-BSZV4rW3.js → consent-controls-CYj9WfJh.js} +1 -1
- package/dist/assets/{contacts-gateway-dxw1KMN2.js → contacts-gateway-CHNyL-NU.js} +1 -1
- package/dist/assets/{contacts-page-route-C3QiOxjO.js → contacts-page-route-qsIGsjpD.js} +2 -2
- package/dist/assets/{conversation-list-fetchers-UPVZq_6O.js → conversation-list-fetchers-Bcp_Zesn.js} +1 -1
- package/dist/assets/{conversation-store-DK-7gFAt.js → conversation-store-6tz67quR.js} +1 -1
- package/dist/assets/{cpu-CiHv3fhs.js → cpu-PmmoD4_K.js} +1 -1
- package/dist/assets/{credit-card-BKRB1ZIi.js → credit-card-yPLmY1JU.js} +1 -1
- package/dist/assets/{danger-zone-redirect-page-CjqUKhk9.js → danger-zone-redirect-page-Dhgk9mkr.js} +1 -1
- package/dist/assets/debug-page-Ddv9MlOm.js +4 -0
- package/dist/assets/{deploy-dialogs-jf5VL1UP.js → deploy-dialogs-qdH6GTjP.js} +1 -1
- package/dist/assets/{detail-card-BIwpXT5F.js → detail-card-5TPdhuZN.js} +1 -1
- package/dist/assets/{developer-page-iEL4eJ8x.js → developer-page-BXl0qAXX.js} +1 -1
- package/dist/assets/{devices-page-RMaPGcXe.js → devices-page-DaZR3FC4.js} +1 -1
- package/dist/assets/{diagnostics-BEB4VPwC.js → diagnostics-D5xXiLo-.js} +1 -1
- package/dist/assets/{dictation-overlay-page-BxQCzLMY.js → dictation-overlay-page-DOdZ_KIz.js} +1 -1
- package/dist/assets/{dist-B0Gf-knw.js → dist-BkSUb6s0.js} +1 -1
- package/dist/assets/{dist-cApvLul2.js → dist-Ble8OyWO.js} +1 -1
- package/dist/assets/{document-viewer-page-57OuXxYw.js → document-viewer-page-XzPSoPVb.js} +1 -1
- package/dist/assets/{domain-field-DYwuCpup.js → domain-field-BGp08c4L.js} +1 -1
- package/dist/assets/{dropdown-CL8VmqrY.js → dropdown-SUNHYFiy.js} +1 -1
- package/dist/assets/{earn-credits-modal-Nm1VymMp.js → earn-credits-modal-D7ioWvNh.js} +1 -1
- package/dist/assets/{emails-page-0gRZqa6y.js → emails-page-BRnVsJnR.js} +1 -1
- package/dist/assets/{emoji-catalog-data-Dlkuvec0.js → emoji-catalog-data-hHp74TCA.js} +1 -1
- package/dist/assets/{environment-store-CvH3J6fT.js → environment-store-B5EGAqzg.js} +1 -1
- package/dist/assets/esm-8Mv545sP.js +2 -0
- package/dist/assets/esm-B35SBKTx.js +2 -0
- package/dist/assets/esm-B9nLiq-2.js +1 -0
- package/dist/assets/{esm-B3Lr4Bv0.js → esm-DQXfMjvW.js} +2 -2
- package/dist/assets/esm-Dz9uwqjb.js +2 -0
- package/dist/assets/esm-TyKOKslC.js +2 -0
- package/dist/assets/{external-link-DPAtkBJ2.js → external-link-h3UAe8eX.js} +1 -1
- package/dist/assets/{file-editor-BNkJJbUv.js → file-editor-Cy1TZHJJ.js} +1 -1
- package/dist/assets/{file-text-CmK9LY1p.js → file-text-Bxj0xAst.js} +1 -1
- package/dist/assets/funnel-events-Dz_DLI0Q.js +1 -0
- package/dist/assets/general-page-Dl7IYYSf.js +1 -0
- package/dist/assets/{globe-DYF_lSGm.js → globe-D7wvOZaZ.js} +1 -1
- package/dist/assets/{hard-drive-D7_5VMhi.js → hard-drive-CO7i5o4z.js} +1 -1
- package/dist/assets/{hatching-screen-KPinlCES.js → hatching-screen-YvbZlnsV.js} +1 -1
- package/dist/assets/home-page-route-B7AJU1pr.js +1 -0
- package/dist/assets/{hosting-screen-C14KAJ6m.js → hosting-screen-CKlP38Z3.js} +1 -1
- package/dist/assets/{identity-page-route-C0BFcTAF.js → identity-page-route-CZQEWoJK.js} +1 -1
- package/dist/assets/index-3zpPFBeR.js +132 -0
- package/dist/assets/index-PRuqIn_u.css +2 -0
- package/dist/assets/{info-_OtUK1cX.js → info-B4DDA6uP.js} +1 -1
- package/dist/assets/{info-BGLlcyt6.js → info-CNTT4WCe.js} +1 -1
- package/dist/assets/{input-C8kfrq9r.js → input-BLN3wmw2.js} +1 -1
- package/dist/assets/{inspect-page-CWasyuSO.js → inspect-page-AldHg0Dz.js} +4 -4
- package/dist/assets/{install-C3xe8ARr.js → install-D_GSceot.js} +1 -1
- package/dist/assets/integrations-page-b3sE-PDS.js +1 -0
- package/dist/assets/{intelligence-layout-CvTumtjv.js → intelligence-layout-CsM_YjdB.js} +1 -1
- package/dist/assets/{keyboard-shortcuts-page-kiOEZKzE.js → keyboard-shortcuts-page-Capx1ICA.js} +1 -1
- package/dist/assets/{lib-BWRK7bT2.js → lib-Bexzcbsy.js} +1 -1
- package/dist/assets/library-detail-page-DrgMdBPq.js +1 -0
- package/dist/assets/{library-page-BHejhapZ.js → library-page-Catpu3p0.js} +1 -1
- package/dist/assets/{link-2-CaszbD7P.js → link-2-DW8ruMGH.js} +1 -1
- package/dist/assets/{list-row-Cw9JYESP.js → list-row-l7sxQ4Tj.js} +1 -1
- package/dist/assets/loader-circle-cYXxWP5B.js +1 -0
- package/dist/assets/{local-mode-CvrNMtPF.js → local-mode-Cez1weue.js} +1 -1
- package/dist/assets/{log-in-2iOsufxq.js → log-in-Ci5ja9sN.js} +1 -1
- package/dist/assets/{login-flow-DPi11n3h.js → login-flow-DeMU71_M.js} +1 -1
- package/dist/assets/{login-page-BGLVK82t.js → login-page-DkNb0F3s.js} +1 -1
- package/dist/assets/{logout-page-Bl6AD21S.js → logout-page-POyojlS1.js} +1 -1
- package/dist/assets/{logs-layout-C9eUE1Pt.js → logs-layout-qJmOLDZF.js} +1 -1
- package/dist/assets/{memory-router-playground-page-Dhi3uqxr.js → memory-router-playground-page-DD6t0kqe.js} +1 -1
- package/dist/assets/{menu-C_97pis4.js → menu-_JM4udVm.js} +1 -1
- package/dist/assets/{messages-DHDZ32NT.js → messages-DCNfjhgv.js} +2 -2
- package/dist/assets/{minimize-2-JE_UHZlJ.js → minimize-2-DmC6-Woz.js} +1 -1
- package/dist/assets/{mobile-sidebar-drawer-DqXFL0Ke.js → mobile-sidebar-drawer-B4ol32hs.js} +1 -1
- package/dist/assets/{modal-D0Q3UWD0.js → modal-CH2iwSBx.js} +1 -1
- package/dist/assets/{monitor-D2okHi8o.js → monitor-B1YMXlZj.js} +1 -1
- package/dist/assets/{moon-CK8MXzOo.js → moon-DSWoApF5.js} +1 -1
- package/dist/assets/mutation-error-B5AKP6aC.js +1 -0
- package/dist/assets/{native-file-B-MK3Ngg.js → native-file-GuVJgNpB.js} +2 -2
- package/dist/assets/{notice-CqRgVmeL.js → notice-BhqKj_VM.js} +1 -1
- package/dist/assets/{notifications-page-pHiDPA0p.js → notifications-page-MRalDive.js} +1 -1
- package/dist/assets/{oauth-complete-page-DiGMWbOb.js → oauth-complete-page-DGOyh2u6.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-CwoZnzdc.js → oauth-popup-complete-page-BPxKmr_f.js} +1 -1
- package/dist/assets/{page-shell-cEGpH3P5.js → page-shell-cu3KBmqd.js} +1 -1
- package/dist/assets/{pairing-page-clFaUgzL.js → pairing-page-_ulPOW9r.js} +1 -1
- package/dist/assets/{panel-item-nGTDevWP.js → panel-item-DN2CyWOT.js} +1 -1
- package/dist/assets/{password-reset-page-DfYGL1Gv.js → password-reset-page-BfRXQpS_.js} +1 -1
- package/dist/assets/{pencil-DbB9rxpY.js → pencil-DUMCM9m-.js} +1 -1
- package/dist/assets/{platform-loopback-page-Df5bTTx8.js → platform-loopback-page-D3oAT6qE.js} +1 -1
- package/dist/assets/{plugin-detail-page-IRPeI4lP.js → plugin-detail-page-ClMMTrti.js} +1 -1
- package/dist/assets/{plugins-page-BaYp2QOe.js → plugins-page-y6Aom9qx.js} +1 -1
- package/dist/assets/{popover-CL-JL6vG.js → popover-BIr0nN9H.js} +1 -1
- package/dist/assets/prechat-route-MTnUk6MK.js +1 -0
- package/dist/assets/{prefs-C_oq5G87.js → prefs-C6e8pdrA.js} +1 -1
- package/dist/assets/{privacy-page-BUhxrIRn.js → privacy-page-gc352kAN.js} +1 -1
- package/dist/assets/privacy-screen-CQLPQPoM.js +1 -0
- package/dist/assets/{progress-bar-DIFlWPPg.js → progress-bar-ATg2lhDh.js} +1 -1
- package/dist/assets/{provider-callback-page-CxFC4PH1.js → provider-callback-page-BtYwaMxL.js} +1 -1
- package/dist/assets/{provider-key-nA35OC4Y.js → provider-key-BKR2QTfR.js} +1 -1
- package/dist/assets/{provider-signup-page-CdpT28xL.js → provider-signup-page-80V_D9ad.js} +1 -1
- package/dist/assets/proxy-T76Q62qP.js +1 -0
- package/dist/assets/{quick-input-page-C9jN8YtU.js → quick-input-page-B-7fTgJi.js} +1 -1
- package/dist/assets/{react-query.gen-CQLyoqYk.js → react-query.gen-BeTpj_Sy.js} +1 -1
- package/dist/assets/{react-query.gen-rp6Krcco.js → react-query.gen-breoeUVK.js} +1 -1
- package/dist/assets/{refresh-cw-Bf6LV0kG.js → refresh-cw-kmptQnpX.js} +1 -1
- package/dist/assets/{research-mock-page-ttrrPwo3.js → research-mock-page-DYPr-S2q.js} +1 -1
- package/dist/assets/research-onboarding-route-yYstHFq4.js +35 -0
- package/dist/assets/{resize-errors-DnJEbHn4.js → resize-errors-ocHCHRPn.js} +1 -1
- package/dist/assets/{resolved-assistants-store-Cp4J43BK.js → resolved-assistants-store-BrS8JBzC.js} +1 -1
- package/dist/assets/{return-to-ByvaXBKr.js → return-to-DlPFMVLx.js} +1 -1
- package/dist/assets/{review-terms-screen-DEiifDmK.js → review-terms-screen-DFlSm1tM.js} +1 -1
- package/dist/assets/risk-badge-CTIwePVV.js +1 -0
- package/dist/assets/{routes-DVqkwUEe.js → routes-Dzl0kj5j.js} +1 -1
- package/dist/assets/{save-DEBQ_gbb.js → save-DQyrotXP.js} +1 -1
- package/dist/assets/{schedules-D-4Rq6ZC.js → schedules-DZspBZ61.js} +1 -1
- package/dist/assets/{sdk.gen-D-_js_oC.js → sdk.gen-DSjI3deY.js} +1 -1
- package/dist/assets/{select-assistant-screen-UoixBMN2.js → select-assistant-screen-kcdnMYj7.js} +1 -1
- package/dist/assets/{setting-row-o44aWwYt.js → setting-row-DB3q3lgL.js} +1 -1
- package/dist/assets/settings-layout-DV4y_-8a.js +1 -0
- package/dist/assets/{share-feedback-modal-CTwByE7B.js → share-feedback-modal-CNGNLLDP.js} +1 -1
- package/dist/assets/{shortcut-keys-vM6sNj7W.js → shortcut-keys-D4E8qQgS.js} +1 -1
- package/dist/assets/{sidebar-tree-BJkXpCut.js → sidebar-tree-BCJVetMg.js} +1 -1
- package/dist/assets/{signup-page-CKDYl9Wb.js → signup-page-iM9szAKN.js} +1 -1
- package/dist/assets/{signup-shell-Bu5BM6II.js → signup-shell-GOG8-46O.js} +1 -1
- package/dist/assets/{skills-page-DVjqqfMw.js → skills-page-D3c3cuti.js} +1 -1
- package/dist/assets/{sound-manager-CzslfzDO.js → sound-manager-DwCzTycd.js} +1 -1
- package/dist/assets/{sounds-page-mens6EAJ.js → sounds-page-C3qbFW0l.js} +1 -1
- package/dist/assets/{sparkles-BICoewVE.js → sparkles-C8eL4LNF.js} +1 -1
- package/dist/assets/src-Dr68ou95.js +293 -0
- package/dist/assets/{stat-square-B0S3fO7O.js → stat-square-zBHENXcL.js} +1 -1
- package/dist/assets/{status-badge-pill-DYlAnX5m.js → status-badge-pill-CSitw8_5.js} +1 -1
- package/dist/assets/step-indicator-dots-D4A7eDFL.js +1 -0
- package/dist/assets/subagent-detail-panel-D3xm4yVF.js +4 -0
- package/dist/assets/{subagent-store-BLHGkTJR.js → subagent-store-CFwN6f1W.js} +1 -1
- package/dist/assets/system-events-page-CXlJ_J54.js +1 -0
- package/dist/assets/{system-events-redirect-page-C1hGE6n5.js → system-events-redirect-page-Bkigvq03.js} +1 -1
- package/dist/assets/{tag-B_-QAvJF.js → tag-64Evw5MO.js} +1 -1
- package/dist/assets/{three-dot-indicator-CLs7Rl-I.js → three-dot-indicator-DKd64wpF.js} +1 -1
- package/dist/assets/{tiptap-document-editor-D2t4qYzv.js → tiptap-document-editor-D031y5O7.js} +1 -1
- package/dist/assets/{toast-2TW5tj1Y.js → toast-VJ6jFKB9.js} +1 -1
- package/dist/assets/{toggle-X_kQW5my.js → toggle-zADptotB.js} +1 -1
- package/dist/assets/tool-detail-panel-Cq_SyoUG.js +2 -0
- package/dist/assets/{trace-page-DRWPaAuQ.js → trace-page-CEyVWa_4.js} +1 -1
- package/dist/assets/{triangle-alert-Bz1PpciW.js → triangle-alert-DqPPHRPD.js} +1 -1
- package/dist/assets/{triangle-alert-DKOyShqD.js → triangle-alert-eaW8jtCr.js} +1 -1
- package/dist/assets/{typography-BscuIPxA.js → typography-COqg6o2z.js} +1 -1
- package/dist/assets/{upgrade-cancel-page-Cwv5eMh9.js → upgrade-cancel-page-CM9JnbEO.js} +1 -1
- package/dist/assets/{upgrade-success-page-DnJ8Kyyj.js → upgrade-success-page-BxrXUjiP.js} +1 -1
- package/dist/assets/{usage-page-DJHRS0lZ.js → usage-page-DBmsLal7.js} +1 -1
- package/dist/assets/{use-active-assistant-id-C-RHQ9f6.js → use-active-assistant-id-jfqnc4T7.js} +1 -1
- package/dist/assets/{use-bus-subscription-BbiZXm1u.js → use-bus-subscription-CKWguMzy.js} +1 -1
- package/dist/assets/use-is-org-ready-DLZpD311.js +1 -0
- package/dist/assets/{use-onboarding-login-BEOH92mZ.js → use-onboarding-login-Cz1MgHw6.js} +1 -1
- package/dist/assets/use-plugin-drift-4-li_vW2.js +1 -0
- package/dist/assets/use-reduced-motion-DvKonyYy.js +1 -0
- package/dist/assets/{useQuery-B45lW1Kk.js → useBaseQuery-BOw_gWPH.js} +1 -1
- package/dist/assets/useInfiniteQuery-iPXlezAp.js +1 -0
- package/dist/assets/{useMutation-Lj4VunQV.js → useMutation-D3WkZnYg.js} +1 -1
- package/dist/assets/useQuery-cVuP8q1x.js +1 -0
- package/dist/assets/{user-plus-C0OyQU83.js → user-plus-CjFuXA3D.js} +1 -1
- package/dist/assets/{utils-IBnUZTqY.js → utils-Lep-7jRg.js} +1 -1
- package/dist/assets/{viewer-store-Dead64xY.js → viewer-store-Dened07w.js} +1 -1
- package/dist/assets/{voice-page-kQZ2ya5j.js → voice-page-C3zxM20t.js} +1 -1
- package/dist/assets/{weather-forecast-display-Cu3W6OZF.js → weather-forecast-display-DfsXEBSo.js} +1 -1
- package/dist/assets/{web-DOKyhuGQ.js → web-Broue3sZ.js} +1 -1
- package/dist/assets/{web-M3MS-KVB.js → web-C6Et8xNJ.js} +1 -1
- package/dist/assets/{web-B0S2ynRY.js → web-CNtrY6ZR.js} +1 -1
- package/dist/assets/{web-D0QcGl1O.js → web-CccL0uF5.js} +1 -1
- package/dist/assets/{web-Cg8gCWpB.js → web-CtAf2vJC.js} +1 -1
- package/dist/assets/{web-DJKnWTsF.js → web-Cygkn0vs.js} +1 -1
- package/dist/assets/{web-iUXw2JWQ.js → web-DuqCaaXx.js} +1 -1
- package/dist/assets/{welcome-screen-Bd7PCfAf.js → welcome-screen-RBmiq3Lq.js} +1 -1
- package/dist/assets/workflow-detail-panel-C2dD_hU2.js +1 -0
- package/dist/assets/{workspace-page-BR4pOxs5.js → workspace-page-lR8lzD2L.js} +1 -1
- package/dist/assets/x-649kPSQS.js +1 -0
- package/dist/assets/x-Bn5tweDc.js +1 -0
- package/dist/index.html +135 -134
- package/package.json +1 -1
- package/dist/assets/ai-page-kEbHR7cH.js +0 -1
- package/dist/assets/arrow-left-CP-EhDNF.js +0 -1
- package/dist/assets/arrow-up-nBfZxfhi.js +0 -1
- package/dist/assets/assistant-identity-store-CKjnoLSp.js +0 -1
- package/dist/assets/auth-store-Kfxhs2oI.js +0 -7
- package/dist/assets/ban-BpBuRCKI.js +0 -1
- package/dist/assets/check-CW0KmV0o.js +0 -1
- package/dist/assets/check-D6WkI0gF.js +0 -1
- package/dist/assets/chevron-left-DghyKSEE.js +0 -1
- package/dist/assets/chevron-right-B6vEpVY0.js +0 -1
- package/dist/assets/circle-check-DzlJxj_M.js +0 -1
- package/dist/assets/code-aMX9iMYa.js +0 -1
- package/dist/assets/debug-page-CBozmAQQ.js +0 -2
- package/dist/assets/esm-BVNBLzcW.js +0 -2
- package/dist/assets/esm-BtN-afz9.js +0 -1
- package/dist/assets/esm-D2xhPoyM.js +0 -2
- package/dist/assets/esm-DwNtkiSD.js +0 -2
- package/dist/assets/esm-pt1s0ryM.js +0 -2
- package/dist/assets/general-page-aZxTpnpI.js +0 -1
- package/dist/assets/home-page-route-CudtBGg1.js +0 -1
- package/dist/assets/index-Hcyzmz_5.css +0 -2
- package/dist/assets/index-PRnvH2Y1.js +0 -132
- package/dist/assets/integrations-page-WhBpTYP2.js +0 -1
- package/dist/assets/library-detail-page-rPvN9G1a.js +0 -1
- package/dist/assets/loader-circle-IIzBGiwm.js +0 -1
- package/dist/assets/mutation-error-CsyN8rYH.js +0 -1
- package/dist/assets/prechat-route-BaMWiiaf.js +0 -1
- package/dist/assets/privacy-screen-BaHYtKEt.js +0 -1
- package/dist/assets/proxy-DmIh4F51.js +0 -1
- package/dist/assets/reduced-motion-DYlLlcUm.js +0 -1
- package/dist/assets/research-onboarding-route-Cxai0fux.js +0 -36
- package/dist/assets/risk-badge-BA8R-HCI.js +0 -1
- package/dist/assets/settings-layout-CQ3Z9Raj.js +0 -1
- package/dist/assets/src-CK6bncSg.js +0 -293
- package/dist/assets/step-indicator-dots-CEVbsP8r.js +0 -1
- package/dist/assets/subagent-detail-panel-DVQAkMjF.js +0 -4
- package/dist/assets/system-events-page-Dro8iNrx.js +0 -1
- package/dist/assets/tool-detail-panel-DRD2DIMF.js +0 -2
- package/dist/assets/use-is-org-ready-BdtHeRV6.js +0 -1
- package/dist/assets/use-plugin-drift-Bj693x0f.js +0 -1
- package/dist/assets/use-reduced-motion-ChB7nOGe.js +0 -1
- package/dist/assets/workflow-detail-panel-CMmPPsuL.js +0 -1
- package/dist/assets/x-C8bCmIhD.js +0 -1
- package/dist/assets/x-KVxA2ZL0.js +0 -1
- /package/dist/assets/{api-errors-CveHbhgb.js → api-errors-B-g6gvNv.js} +0 -0
- /package/dist/assets/{avatar-bundled-components-BgAkdy0n.js → avatar-bundled-components-DoxUXsZB.js} +0 -0
- /package/dist/assets/{avatar-svg-compositor-CEmN7KGI.js → avatar-svg-compositor-Bzno7teV.js} +0 -0
- /package/dist/assets/{build.umd-B3KuSWeo.js → build.umd-C56vswwO.js} +0 -0
- /package/dist/assets/{client.gen-Cs6pCK0s.js → client.gen-BnoNy2w0.js} +0 -0
- /package/dist/assets/{composer-focus-Bp1AiP29.js → composer-focus-BZr63Cvs.js} +0 -0
- /package/dist/assets/{conversation-selection-CtKjA5Ni.js → conversation-selection-BV7USWf2.js} +0 -0
- /package/dist/assets/{create-selectors-BE0_e_Ed.js → create-selectors-BTyhO-eS.js} +0 -0
- /package/dist/assets/{createLucideIcon-Bjb-Kuq7.js → createLucideIcon-6rJ6BdB7.js} +0 -0
- /package/dist/assets/{createLucideIcon-BlMXrA59.js → createLucideIcon-D8roAprb.js} +0 -0
- /package/dist/assets/{definitions-lQvEBMJT.js → definitions-CtVlh_R5.js} +0 -0
- /package/dist/assets/{dist-BTp54SIT.js → dist-CzyDxYAs.js} +0 -0
- /package/dist/assets/{edit-chat-session-DJpqkkos.js → edit-chat-session-BYvbyTwd.js} +0 -0
- /package/dist/assets/{effective-timezone-DrYGH2Lb.js → effective-timezone-DAkNzd21.js} +0 -0
- /package/dist/assets/{event-bus-Dl7-I4aL.js → event-bus-CBil9JQT.js} +0 -0
- /package/dist/assets/{feature-flag-catalog-RK3_Ckyw.js → feature-flag-catalog-Br-v70vR.js} +0 -0
- /package/dist/assets/{format-CPOur310.js → format-HKnibeVj.js} +0 -0
- /package/dist/assets/{format-date-CLlHK5gl.js → format-date-DyMQp2_m.js} +0 -0
- /package/dist/assets/{format-file-size-BfZOpPdu.js → format-file-size-DOcXaUaE.js} +0 -0
- /package/dist/assets/{haptics-CXHZxyAg.js → haptics-CKwMH4eq.js} +0 -0
- /package/dist/assets/{impersonate-version-flag-n-4oNLiO.js → impersonate-version-flag-XVa1Tm2F.js} +0 -0
- /package/dist/assets/{infiniteQueryOptions-C6p49ZmI.js → infiniteQueryOptions-DTCCTa10.js} +0 -0
- /package/dist/assets/{is-electron-C_ZTVhv8.js → is-electron-URCUw74P.js} +0 -0
- /package/dist/assets/{jsx-runtime-CVSDxk6A.js → jsx-runtime-B-mvcaJS.js} +0 -0
- /package/dist/assets/{llm-dimension-CQdmYu05.js → llm-dimension-Dx3xIzPP.js} +0 -0
- /package/dist/assets/{misc-BN2o2MEB.js → misc-CBD9JJCY.js} +0 -0
- /package/dist/assets/{native-deep-link-BYNI6pkW.js → native-deep-link-DmJ7Ty6z.js} +0 -0
- /package/dist/assets/{pdf-pz4ipUHd.js → pdf-DNWhOzmB.js} +0 -0
- /package/dist/assets/{prechat-B28Vzu55.js → prechat-BuuzFtal.js} +0 -0
- /package/dist/assets/{prechat-names-CRduluk-.js → prechat-names-Bo5bdzfH.js} +0 -0
- /package/dist/assets/{public-asset-Fx_laYnf.js → public-asset-BTisO-cB.js} +0 -0
- /package/dist/assets/{queryOptions-BtNi-_9H.js → queryOptions-DGyQTr3e.js} +0 -0
- /package/dist/assets/{sdk.gen-1aYqVbMj.js → sdk.gen-CC1iYdd0.js} +0 -0
- /package/dist/assets/{semver-yC_Iq9co.js → semver-DpADL11z.js} +0 -0
- /package/dist/assets/{tool-call-status-DTV5jmaU.js → tool-call-status-DNS6Y_vi.js} +0 -0
- /package/dist/assets/{typed-storage-Dctd_K9F.js → typed-storage-Chj38wph.js} +0 -0
- /package/dist/assets/{usage-window-Wgtgd-cv.js → usage-window-dm_mRqGo.js} +0 -0
- /package/dist/assets/{use-is-mobile-Cy10kl9u.js → use-is-mobile-BF5x8sr8.js} +0 -0
- /package/dist/assets/{workflow-status-DmbjJPT4.js → workflow-status-B53qU9DS.js} +0 -0
- /package/dist/assets/{xterm-MKaw0cT7.js → xterm-CQ7wuPsS.js} +0 -0
- /package/dist/assets/{xterm-addon-fit-BFDQtfbG.js → xterm-addon-fit-CamgTlEH.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,r as n,s as r}from"./local-settings-lVNyIOJ_.js";import{r as i,t as a}from"./capture-error-Hr1Yo2kx.js";import{t as o}from"./react-DJZBPgpf.js";import{t as s}from"./button-D7s2Q_uG.js";import{d as c,h as l}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as u}from"./QueryClientProvider-DKhXIxGb.js";import{t as d}from"./useQuery-B45lW1Kk.js";import{t as f}from"./useMutation-Lj4VunQV.js";import{t as p}from"./jsx-runtime-CVSDxk6A.js";import{t as m}from"./typography-BscuIPxA.js";import{t as h}from"./dropdown-CL8VmqrY.js";import{t as g}from"./confirm-dialog-CfOXCE1N.js";import{t as _}from"./notice-CqRgVmeL.js";import{t as v}from"./tag-B_-QAvJF.js";import{t as y}from"./input-C8kfrq9r.js";import{t as b}from"./toggle-X_kQW5my.js";import{n as x}from"./stat-square-B0S3fO7O.js";import{t as S}from"./modal-D0Q3UWD0.js";import{n as C}from"./toast-2TW5tj1Y.js";import{t as w}from"./createLucideIcon-BlMXrA59.js";import{t as T}from"./check-D6WkI0gF.js";import{t as E}from"./circle-alert-DvNg50UK.js";import{t as D}from"./circle-check-DzlJxj_M.js";import{n as O,t as k}from"./domain-field-DYwuCpup.js";import{t as A}from"./external-link-DPAtkBJ2.js";import{t as j}from"./info-_OtUK1cX.js";import{t as M}from"./loader-circle-IIzBGiwm.js";import{t as N}from"./triangle-alert-DKOyShqD.js";import{In as P,Mt as F,in as I,jt as L,nt as R}from"./sdk.gen-1aYqVbMj.js";import{R as z,c as B,d as ee,ft as te,kt as V,l as H,u as U,wt as W,z as G}from"./react-query.gen-CQLyoqYk.js";import{r as ne}from"./api-errors-CveHbhgb.js";import{a as re}from"./routes-DVqkwUEe.js";import{t as K}from"./use-is-org-ready-BdtHeRV6.js";import{t as q}from"./assistant-identity-store-CKjnoLSp.js";import{t as ie}from"./assistant-feature-flag-store-Dl92XRsM.js";import{c as ae,d as oe,et as se,f as ce,g as le,h as ue,l as de,m as fe,o as pe,p as me,s as he,u as ge,v as _e,y as ve}from"./react-query.gen-rp6Krcco.js";import{$n as J,Cr as Y,Gi as ye,Ir as be,Jr as xe,Qn as Se,Sr as Ce,Tn as we,Tr as Te,Xn as Ee,Yn as De,Zn as Oe,_ as ke,_r as Ae,an as je,ar as Me,b as Ne,br as Pe,cr as Fe,dr as Ie,er as Le,fr as Re,gr as ze,hr as Be,ir as Ve,lr as He,mr as Ue,nr as We,or as Ge,pr as Ke,rr as qe,sr as Je,tr as Ye,ur as Xe,v as Ze,vr as Qe,wr as $e,x as et,xr as tt,y as nt,yr as rt}from"./index-PRnvH2Y1.js";import{t as X}from"./use-active-assistant-id-C-RHQ9f6.js";import{t as it}from"./detail-card-BIwpXT5F.js";import{t as at}from"./environment-store-CvH3J6fT.js";var ot=w(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),Z=e(o(),1),Q=p();function st({mode:e,onChange:t}){return(0,Q.jsx)(`div`,{className:`max-w-[280px]`,children:(0,Q.jsx)(x,{ariaLabel:`Service mode`,value:e,onChange:t,items:[{value:`managed`,label:`Managed`},{value:`your-own`,label:`Your Own`}]})})}function ct({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,Q.jsxs)(it,{id:e,title:t,subtitle:n,accessory:(0,Q.jsx)(st,{mode:r,onChange:i}),children:[(0,Q.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,Q.jsx)(`div`,{className:`mt-4`,children:a})]})}function $({onClick:e,disabled:t}){return(0,Q.jsx)(s,{onClick:e,disabled:t,children:`Save`})}function lt({onClick:e,filled:t=!1}){return(0,Q.jsx)(s,{variant:t?`danger`:`dangerGhost`,onClick:e,children:`Reset`})}function ut({id:e,title:t,subtitle:n,children:r}){return(0,Q.jsxs)(it,{id:e,title:t,subtitle:n,children:[(0,Q.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,Q.jsx)(`div`,{className:`mt-4`,children:r})]})}function dt({guide:e}){return(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(j,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsx)(`span`,{children:e.description}),(0,Q.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[e.linkLabel,(0,Q.jsx)(A,{className:`h-3 w-3`})]})]})]})}function ft({status:e,message:t,isLoading:n}){return n?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,children:[(0,Q.jsx)(M,{className:`h-3 w-3 animate-spin`}),`Checking domain…`]}):e?e===`verified`?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-positive-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-positive-strong)]`,title:`DNS records have been verified. Your domain is ready to send and receive email.`,children:[(0,Q.jsx)(T,{className:`h-3 w-3`}),`Domain verified`]}):e===`pending`||e===`not_started`?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-mid-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-mid-strong)]`,title:`DNS records have been provisioned. Waiting for the email provider to verify them — this usually takes a few minutes.`,children:[(0,Q.jsx)(ye,{className:`h-3 w-3`}),`Verifying domain…`]}):(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-negative-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,title:`Domain verification failed. DNS records may not have propagated correctly. You could try releasing and re-registering the domain.`,children:[(0,Q.jsx)(E,{className:`h-3 w-3`}),`Verification failed`]}):(0,Q.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,title:`Unable to retrieve domain verification status.`,children:`Unknown status`})}var pt=`__custom__`;function mt(e){return e?!!(e.profile||e.provider||e.model):!1}function ht(e,t){let n=mt(e);return n===mt(t)?n?(e?.profile??null)===(t?.profile??null)&&(e?.provider??null)===(t?.provider??null)&&(e?.model??null)===(t?.model??null):!0:!1}function gt({id:e,displayName:t,description:n,defaultProfileLabel:r,draft:i,profileOptions:a,onDraftChange:o,onToggle:s}){let c=mt(i),l=!i||!c?``:i.provider||i.model?pt:i.profile??``,u=l===pt,d=tt.find(e=>e===i?.provider)??tt[0],f=$e(d).map(e=>({value:e.id,label:e.displayName})),p=!!i?.provider&&!i?.model;function m(t){if(t===`__custom__`){let t=tt[0];o(e,{profile:null,provider:t,model:Y(t)??``})}else t===``?o(e,null):o(e,{profile:t,provider:null,model:null})}function g(t){let n=Y(t)??``;o(e,{...i??{},profile:null,provider:t,model:n})}function _(t){o(e,{...i??{},model:t})}return(0,Q.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-default font-medium text-[var(--content-default)]`,children:t}),n&&(0,Q.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[n,r&&(0,Q.jsxs)(`span`,{className:`ml-1.5 text-body-small-default text-[var(--content-tertiary)] opacity-60`,children:[`· Default: `,r]})]})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c&&(0,Q.jsx)(h,{value:l,onChange:m,options:a,className:`w-44`,menuMinWidth:280,menuAlign:`end`}),(0,Q.jsx)(b,{checked:c,onChange:t=>s(e,t),"aria-label":`Override ${t}`})]})]}),c&&u&&(0,Q.jsxs)(`div`,{className:`mt-3 space-y-2 border-t border-[var(--border-base)] pt-3`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsxs)(`div`,{className:`flex-1`,children:[(0,Q.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:d??``,onChange:g,options:tt.map(e=>({value:e,label:Ce[e]??e}))})]}),(0,Q.jsxs)(`div`,{className:`flex-1`,children:[(0,Q.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Model`}),(0,Q.jsx)(h,{value:i?.model??``,onChange:_,options:f})]})]}),p&&(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:`Pick a model`})]})]})}function _t({isOpen:e,onClose:t,assistantId:n}){let r=(0,Z.useRef)(!1);return(0,Q.jsx)(S.Root,{open:e,onOpenChange:e=>{!e&&!r.current&&t()},children:e?(0,Q.jsx)(vt,{assistantId:n,onClose:t,onSavingChange:e=>{r.current=e}}):null})}function vt({assistantId:e,onClose:t,onSavingChange:n}){let r=u(),{data:i}=d({...B({path:{assistant_id:e}}),staleTime:3e4}),o=(0,Z.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),c=(0,Z.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),l=(0,Z.useMemo)(()=>i?.llm?.callSites??{},[i?.llm?.callSites]),f=(0,Z.useMemo)(()=>He(o,c),[o,c]),p=V({onSuccess:t=>{U(r,{path:{assistant_id:e}},t)}}),[m,h]=(0,Z.useState)(``),[_,v]=(0,Z.useState)({}),[b,x]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(!1),E=ie.use.analyzeConversation(),{data:D,isLoading:O,isError:k,refetch:A}=d({...ee({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4,refetchOnWindowFocus:!1}),j=(0,Z.useMemo)(()=>{let e=(D?.callSites??[]).filter(e=>e.id!==`mainAgent`);return E||(e=e.filter(e=>e.id!==`analyzeConversation`)),e},[D,E]),N=!O&&!k&&!!D&&!!i,P=(0,Z.useMemo)(()=>j.map(e=>e.id),[j]),F=(0,Z.useMemo)(()=>{if(!N)return{};let e={};for(let t of P)if(t in _)e[t]=_[t];else{let n=l[t];e[t]=n?{...n}:{}}return e},[N,P,l,_]),I=(0,Z.useMemo)(()=>new Set(P),[P]),L=(0,Z.useMemo)(()=>Object.entries(l).some(([e,t])=>I.has(e)&&(t?.profile!=null||t?.provider!=null||t?.model!=null)),[l,I]),R=(0,Z.useMemo)(()=>{if(!N)return!1;for(let e of Object.keys(F))if(!ht(F[e],l[e]))return!0;return!1},[N,F,l]),z=(0,Z.useMemo)(()=>Object.values(F).some(e=>mt(e)&&!!e?.provider&&!e?.model),[F]),te=(0,Z.useCallback)(e=>[...Ne(f,[e]).map(e=>({value:e.name,label:Ze(e)})),{value:pt,label:`Custom`}],[f]),H=(0,Z.useMemo)(()=>{if(!m.trim())return j;let e=m.toLowerCase();return j.filter(t=>(t.displayName??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||(t.domain??``).toLowerCase().includes(e))},[j,m]),W=(0,Z.useMemo)(()=>{if(!D)return[];let e=D.domains.map(e=>e.id),t=new Map(D.domains.map(e=>[e.id,e])),n=[];for(let r of e){let e=H.filter(e=>e.domain===r);e.length>0&&n.push({domain:t.get(r),sites:e})}let r=new Set(e),i=H.filter(e=>!r.has(e.domain));return i.length>0&&n.push({domain:{id:`other`,displayName:`Other`},sites:i}),n},[D,H]),G=(0,Z.useCallback)((e,t)=>{v(n=>({...n,[e]:t}))},[]),ne=(0,Z.useCallback)((e,t)=>{if(!t){v(t=>({...t,[e]:null}));return}let n=nt(f,j.find(t=>t.id===e)?.defaultProfile);if(n)v(t=>({...t,[e]:{profile:n}}));else{let t=tt[0],n=Y(t)??``;v(r=>({...r,[e]:{provider:t,model:n}}))}},[j,f]),re=(0,Z.useCallback)(async()=>{x(!0),n?.(!0);try{let n={};for(let e of Object.keys(F)){let t=F[e]??null;n[e]=mt(t)?{profile:t?.profile??null,provider:t?.provider??null,model:t?.model??null}:null}await p.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),C.success(`Overrides saved.`)}catch(e){C.error(`Failed to save overrides. Please try again.`),a(e,{context:`call_site_overrides_save`})}finally{x(!1),n?.(!1)}},[F,t,p,n,e]),K=(0,Z.useCallback)(async()=>{x(!0),n?.(!0);try{let n={};for(let e of Object.keys(F))n[e]=null;await p.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),C.success(`Overrides reset.`)}catch(e){C.error(`Failed to reset overrides. Please try again.`),a(e,{context:`call_site_overrides_reset`})}finally{x(!1),n?.(!1)}},[F,t,p,n,e]);return(0,Q.jsxs)(S.Content,{size:`lg`,hideCloseButton:!0,children:[(0,Q.jsxs)(S.Header,{children:[(0,Q.jsx)(S.Title,{children:`Action Overrides`}),(0,Q.jsx)(S.Description,{children:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`})]}),(0,Q.jsxs)(S.Body,{children:[(0,Q.jsx)(`div`,{className:`mb-4`,children:(0,Q.jsx)(y,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:`Search actions…`,leftIcon:(0,Q.jsx)(xe,{className:`h-4 w-4`}),fullWidth:!0})}),O&&(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Q.jsx)(M,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}),k&&(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-12 text-center`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Couldn't load actions`}),(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Make sure your assistant is running`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>void A(),children:`Retry`})]}),!O&&!k&&D&&(0,Q.jsx)(`div`,{className:`space-y-4`,children:W.length===0?(0,Q.jsx)(`p`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No actions match your search.`}):W.map(({domain:e,sites:t})=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`mb-2 text-body-small-default font-semibold uppercase tracking-wider text-[var(--content-tertiary)]`,children:e.displayName}),(0,Q.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>{let t=(()=>{let t=F[e.id]??null;return!t||!mt(t)?``:t.provider||t.model?`__custom__`:t.profile??``})(),n=e.defaultProfile?f.find(t=>t.name===e.defaultProfile)?.label??e.defaultProfile:null;return(0,Q.jsx)(gt,{id:e.id,displayName:e.displayName,description:e.description,defaultProfileLabel:n,draft:F[e.id]??null,profileOptions:te(t===``||t===`__custom__`?null:t),onDraftChange:G,onToggle:ne},e.id)})})]},e.id))})]}),(0,Q.jsxs)(S.Footer,{children:[L&&(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>T(!0),disabled:b||!N,tintColor:`var(--system-negative-strong)`,className:`mr-auto`,children:`Reset to Defaults`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:t,disabled:b,children:`Cancel`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,onClick:()=>void re(),disabled:!R||z||b,children:b?(0,Q.jsx)(M,{className:`h-4 w-4 animate-spin`}):`Save`})]}),(0,Q.jsx)(g,{open:w,title:`Reset to Defaults`,message:`Every task override will be reset and will follow your active profile. This cannot be undone.`,confirmLabel:`Reset to Defaults`,destructive:!0,onConfirm:()=>{T(!1),K()},onCancel:()=>T(!1)})]})}function yt({blocked:e,availableReplacements:t,replacement:n,onReplacementChange:r,error:i,saving:a,onClose:o,onConfirm:c}){let l=``;if(e){let t=e.label||e.name;l=e.isActive&&e.callSiteIds.length>0?`"${t}" is the active profile and is used by ${e.callSiteIds.length} call site(s). Pick a replacement profile.`:e.isActive?`"${t}" is the active profile. Pick a different active profile before deleting, or select a replacement below.`:`"${t}" is used by ${e.callSiteIds.length} call site(s). Select a replacement profile to reassign them before deleting.`}return(0,Q.jsx)(S.Root,{open:e!==null,onOpenChange:e=>{e||o()},children:(0,Q.jsxs)(S.Content,{size:`sm`,children:[(0,Q.jsx)(S.Header,{children:(0,Q.jsx)(S.Title,{children:`Can't Delete Profile`})}),(0,Q.jsxs)(S.Body,{className:`space-y-4`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`p`,children:l}),e&&e.callSiteIds.length>0&&(0,Q.jsx)(`ul`,{className:`space-y-1 pl-1`,children:e.callSiteIds.map(e=>(0,Q.jsxs)(`li`,{className:`text-body-small-default text-(--content-secondary)`,children:[`• `,(0,Q.jsx)(`code`,{children:e})]},e))}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Replacement profile`}),(0,Q.jsx)(h,{"aria-label":`Replacement profile`,value:n,onChange:r,options:[{value:``,label:`Select a replacement…`},...t.map(e=>({value:e.name,label:e.label??e.name}))]})]}),i&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:i})]}),(0,Q.jsxs)(S.Footer,{children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:o,children:`Cancel`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,disabled:!n||a,onClick:c,children:a?`Saving…`:`Reassign and Delete`})]})]})})}function bt(e,t){if(e){let n=$e(e).find(e=>e.id===t);if(n)return n.displayName}let n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t}function xt(e){let t=[];e.description&&t.push(e.description);let n=[];if(e.model&&n.push(bt(e.provider,e.model)),e.provider){let t=Ce[e.provider]??e.provider;n.push(`hosted by ${t}`)}return n.length>0&&t.push(n.join(` `)),t.join(` – `)}function St({profile:e,isDragging:t,dropTarget:n,isDeleting:r,deleteError:i,isToggling:a,onDragStart:o,onDragEnd:c,onDragOver:l,onDragLeave:u,onDrop:d,onEditClick:f,onDeleteClick:p,onStatusToggle:h}){let g=e.source===`managed`,_=e.status!==`disabled`;return(0,Q.jsxs)(`div`,{className:`relative`,children:[n?.name===e.name&&!n.after&&(0,Q.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg pr-2 py-2${t?` opacity-50`:``}`,draggable:!g,onDragStart:o,onDragEnd:c,onDragOver:l,onDragLeave:u,onDrop:d,children:[(0,Q.jsx)(ot,{className:`h-4 w-4 shrink-0 ${g?`invisible`:`cursor-grab text-[var(--content-tertiary)]`}`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1${_?``:` opacity-55`}`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:e.label??e.name}),g&&(0,Q.jsx)(v,{tone:`positive`,title:`Managed by Platform — auth is locked, but you can rename or disable this profile.`,children:`Platform`})]}),e.description||e.model||e.provider?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:xt(e)}):null]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center`,title:_?`Active — toggle to hide from pickers`:`Disabled — toggle to show in pickers`,children:(0,Q.jsx)(b,{checked:_,onChange:e=>h(e),disabled:a,"aria-label":`${_?`Disable`:`Enable`} ${e.label??e.name}`})}),(0,Q.jsxs)(`div`,{className:`flex w-[92px] items-center justify-end gap-2`,children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:f,children:g?`View`:`Edit`}),(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(be,{}),"aria-label":`Delete ${e.label??e.name}`,disabled:g||r,title:g?`Managed profiles cannot be deleted`:void 0,onClick:p,tintColor:`var(--system-negative-strong)`})]})]})]}),n?.name===e.name&&n.after&&(0,Q.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),i?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:i}):null]})}function Ct({isOpen:e,assistantId:t,onClose:n}){let r=u(),{data:i}=d({...B({path:{assistant_id:t}}),staleTime:3e4}),o=(0,Z.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),s=(0,Z.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),c=i?.llm?.activeProfile??null,l=i?.llm?.callSites??{},f=(0,Z.useMemo)(()=>He(o,s),[o,s]),p=V({onSuccess:e=>{U(r,{path:{assistant_id:t}},e)}}),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),{data:v}=d({...z({path:{assistant_id:t}}),enabled:e}),y=v?.connections,b=Object.keys(o);async function x(e,n,r){let i=r?.mode??`replace`,c=!(e in o);if(i===`merge`&&!c){await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:n}}}}),h(!1),_(null);return}let l={profiles:{[e]:n}};if(c&&(l.profileOrder=s.includes(e)?s:[...s,e]),c)await p.mutateAsync({path:{assistant_id:t},body:{llm:l}});else{let n=o[e];await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:null}}}});try{await p.mutateAsync({path:{assistant_id:t},body:{llm:l}})}catch(r){throw a(r,{context:`settings-ai-profile-edit-recreate`}),n!=null&&await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:n}}}}).catch(()=>{}),r}}c&&C.success(`Profile "${n.label??e}" created`),h(!1),_(null)}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(S.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,Q.jsx)(wt,{assistantId:t,profiles:o,profileOrder:s,orderedProfiles:f,activeProfile:c,callSiteOverrides:l,onClose:n,onEditClick:e=>{_(e),h(!0)},onNewClick:()=>{_(null),h(!0)}}):null}),(0,Q.jsx)(De,{isOpen:m,mode:g?g.source===`managed`?`view`:`edit`:`create`,profileName:g?.name,initialValues:g??void 0,existingNames:b,connections:y,assistantId:t,onSave:x,onCancel:()=>{h(!1),_(null)}})]})}function wt({assistantId:e,profiles:t,profileOrder:n,orderedProfiles:r,activeProfile:i,callSiteOverrides:o,onClose:c,onEditClick:l,onNewClick:d}){let f=u(),p=V({onSuccess:t=>{U(f,{path:{assistant_id:e}},t)}}),[h,g]=(0,Z.useState)({}),[_,v]=(0,Z.useState)({}),[y,b]=(0,Z.useState)(new Set),[x,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(null),[O,k]=(0,Z.useState)(null),A=(0,Z.useRef)(null),j=(0,Z.useRef)(null),[M,N]=(0,Z.useState)(null),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)(``),[R,z]=(0,Z.useState)(!1),B=(0,Z.useMemo)(()=>r,[r]);async function ee(n,r){if(y.has(n.name))return!1;b(e=>new Set(e).add(n.name)),C(null);let i=r?`active`:`disabled`;if(!t[n.name])return b(e=>{let t=new Set(e);return t.delete(n.name),t}),!1;try{return await p.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[n.name]:{status:i}}}}}),!0}catch(e){return a(e,{context:`settings-ai-profile-toggle`}),C(`Couldn't update "${n.label??n.name}". Please try again.`),!1}finally{b(e=>{let t=new Set(e);return t.delete(n.name),t})}}async function te(t){v(e=>({...e,[t]:!0})),g(e=>{let n={...e};return delete n[t],n});try{let r=n.filter(e=>e!==t);await p.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[t]:null},profileOrder:r}}})}catch(e){a(e,{context:`settings-ai-profile-delete`}),g(e=>({...e,[t]:`Failed to delete profile. Please try again.`}))}finally{v(e=>{let n={...e};return delete n[t],n})}}function H(e){let t=B.find(t=>t.name===e)?.label??e,n=e===i,r=Object.entries(o).filter(([t,n])=>t!==`mainAgent`&&n?.profile===e).map(([e])=>e);if(n||r.length>0){N({name:e,label:t,isActive:n,callSiteIds:r}),L(``),F(null);return}te(e)}async function W(){if(!M||!I)return;z(!0),F(null);let t={};if(M.isActive&&(t.activeProfile=I),M.callSiteIds.length>0){let e={};for(let t of M.callSiteIds)e[t]={profile:I};t.callSites=e}if(Object.keys(t).length>0)try{await p.mutateAsync({path:{assistant_id:e},body:{llm:t}})}catch(e){a(e,{context:`settings-ai-profile-reassign-delete`}),F(`Failed to reassign references. Please try again.`),z(!1);return}let n=M.name;N(null),z(!1),te(n)}async function G(t,r){if(t===r.name)return;k(null);let i=n.filter(e=>e!==t),o=i.indexOf(r.name);if(o===-1)return;r.after&&(o+=1);let s=[...i.slice(0,o),t,...i.slice(o)];try{await p.mutateAsync({path:{assistant_id:e},body:{llm:{profileOrder:s}}})}catch(e){a(e,{context:`settings-ai-profile-reorder`}),k(`Failed to reorder profiles. Please try again.`)}}let ne=B.filter(e=>e.name!==M?.name&&e.source!==`managed`),re=ne.length>0?ne:B.filter(e=>e.name!==M?.name);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(S.Content,{size:`md`,children:[(0,Q.jsxs)(S.Header,{children:[(0,Q.jsx)(S.Title,{children:`Model Profiles`}),(0,Q.jsx)(S.Description,{children:`Bundle a provider and model into a named profile. Assign profiles to specific actions or swap between them when chatting.`})]}),(0,Q.jsxs)(S.Body,{children:[B.length===0?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No profiles yet. Create one to get started.`}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:B.map(e=>(0,Q.jsx)(St,{profile:e,isDragging:w===e.name,dropTarget:E,isDeleting:_[e.name]??!1,deleteError:h[e.name],isToggling:y.has(e.name),onDragStart:t=>{A.current=e.name,T(e.name),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},onDragEnd:()=>{A.current=null,j.current=null,T(null),D(null)},onDragOver:t=>{t.preventDefault();let n=t.currentTarget.getBoundingClientRect(),r=t.clientY>n.top+n.height/2,i={name:e.name,after:r};j.current=i,D(i)},onDragLeave:t=>{t.currentTarget.contains(t.relatedTarget)||(j.current=null,D(t=>t?.name===e.name?null:t))},onDrop:e=>{e.preventDefault();let t=A.current,n=j.current;A.current=null,j.current=null,T(null),D(null),t&&n&&G(t,n)},onEditClick:()=>l(e),onDeleteClick:()=>H(e.name),onStatusToggle:t=>void ee(e,t)},e.name))}),O&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:O}),x&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:x})]}),(0,Q.jsxs)(S.Footer,{className:`justify-between`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:d,children:`+ New Profile`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:c,children:`Done`})]})]}),(0,Q.jsx)(yt,{blocked:M,availableReplacements:re,replacement:I,onReplacementChange:L,error:P,saving:R,onClose:()=>{N(null),F(null)},onConfirm:()=>void W()})]})}function Tt({mode:e,connection:t,assistantId:n,existingNames:r,onSave:i,onCancel:a}){let[o,c]=(0,Z.useState)(e),[l,d]=(0,Z.useState)(void 0),f=o===`managed-edit`,[p,g]=(0,Z.useState)(t?.label??``),[_,v]=(0,Z.useState)(t?.name??``),[b,x]=(0,Z.useState)(t?.provider??`anthropic`),[C,w]=(0,Z.useState)(()=>t?t.auth.type:`platform`),[T,E]=(0,Z.useState)(()=>t?.auth.type===`api_key`?t.auth.credential:t?``:`credential/anthropic/api_key`),[D,O]=(0,Z.useState)(t?.baseUrl??``),[k,A]=(0,Z.useState)(()=>t?.models?t.models.map(e=>e.id).join(`, `):``),[j,M]=(0,Z.useState)(!1),[N,I]=(0,Z.useState)(null),L=b===`openai-compatible`,R=(0,Z.useMemo)(()=>b&&!Ye.includes(b)?[...Ye,b]:Ye,[b]),{handleLabelChange:z,resetDirty:B}=Se(o,g,v),[ee,V]=(0,Z.useState)(``),[H,U]=(0,Z.useState)(!1),W=u(),G=(0,Z.useMemo)(()=>qe(T),[T]),ne=C===`api_key`&&G!==null,{hasStoredCredential:re,isLoading:K}=Je({assistantId:n,credentialKind:`credential`,credentialName:G?`${G.service}:${G.field}`:``,enabled:ne}),{credentials:q}=Oe({assistantId:n,enabled:C===`api_key`});(0,Z.useEffect)(()=>{let e=t?.provider??`anthropic`;g(t?.label??``),v(t?.name??``),x(e),w(t?t.auth.type:`platform`),t?.auth.type===`api_key`?E(t.auth.credential):E(t?``:`credential/${e}/api_key`),B(),I(null),O(t?.baseUrl??``),A(t?.models?t.models.map(e=>e.id).join(`, `):``),V(``),U(!1)},[t,B]);function ie(){c(`create`),d(b===`ollama`?`none`:`api_key`)}let ae=_.trim().length>0;async function oe(){if(ae){M(!0),I(null);try{let e;if(C===`api_key`){let t=T.trim()||`credential/${b}/api_key`,r=ee.trim();if(r){U(!0);try{let e=qe(t);await P({path:{assistant_id:n},body:e?{type:`credential`,name:`${e.service}:${e.field}`,value:r}:{type:`api_key`,name:b,value:r},throwOnError:!0});let i=Ge(n,`credential`,e?`${e.service}:${e.field}`:``);W.setQueryData(i,!0),W.invalidateQueries({queryKey:te({path:{assistant_id:n}})})}catch{I(`Failed to save API key. Please try again.`);return}finally{U(!1)}}e={type:`api_key`,credential:t}}else if(C===`oauth_subscription`)if(t?.auth.type===`oauth_subscription`)e=t.auth;else{I(`Use the "Sign in with ChatGPT" button to connect your subscription.`);return}else if(C===`service_account`)if(t?.auth.type===`service_account`)e=t.auth;else{I(`Service account connections cannot be created through this form.`);return}else e=C===`none`?{type:`none`}:{type:`platform`};let r=p.trim()||null,a={auth:e,label:r,...L&&{base_url:D.trim()||null,models:k.trim()?k.split(`,`).map(e=>({id:e.trim()})).filter(e=>e.id):null}},{data:o,response:s}=await F({path:{assistant_id:n,name:t?.name??_.trim()},body:a});if(!s?.ok){I(We(s?.status,_.trim()));return}if(!o){I(`Server returned an empty response. Please try again.`);return}i(o)}catch{I(`Failed to save connection. Please try again.`)}finally{M(!1)}}}let se=q.filter(e=>e.service===b),ce=o!==`create`&&t?.auth.type===`api_key`,le=se.length>0||ce,ue=J(`Enter your API key`,re);return o===`create`?(0,Q.jsx)(Ee,{variant:`modal`,assistantId:n,existingNames:r,defaultProviderType:b,defaultAuthType:l,onCreated:i,onCancel:a},b):(0,Q.jsxs)(S.Content,{size:`md`,children:[(0,Q.jsxs)(S.Header,{children:[(0,Q.jsx)(S.Title,{children:`Edit Connection`}),(0,Q.jsx)(S.Description,{children:f?`Managed by Vellum — auth is locked, but you can rename "${t?.name}".`:`Editing "${t?.name}".`})]}),(0,Q.jsxs)(S.Body,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsxs)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[`Display Name`,` `,(0,Q.jsx)(`span`,{className:`text-[var(--content-disabled)]`,children:`(optional)`})]}),(0,Q.jsx)(y,{value:p,onChange:e=>z(e.target.value),placeholder:`e.g. My Anthropic Key`,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Key`}),(0,Q.jsx)(y,{value:_,placeholder:`e.g. anthropic-personal`,disabled:!0,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{"aria-label":`Provider`,value:b,onChange:x,disabled:!0,options:R.map(e=>({value:e,label:Ce[e]}))})]}),L&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Base URL`}),(0,Q.jsx)(y,{value:D,onChange:e=>O(e.target.value),placeholder:`https://api.example.com/v1`,disabled:f,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Models`}),(0,Q.jsx)(y,{value:k,onChange:e=>A(e.target.value),placeholder:`model-1, model-2`,disabled:f,fullWidth:!0}),(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:`Comma-separated model identifiers exposed by your endpoint.`})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Auth Type`}),(0,Q.jsx)(h,{"aria-label":`Auth type`,value:C,onChange:e=>{w(e),I(null)},disabled:f||b===`ollama`,options:(()=>{let e;return e=b===`ollama`?[`none`]:Te(b)?[`api_key`,`platform`]:[`api_key`],C&&!e.includes(C)&&e.push(C),e.map(e=>({value:e,label:Le[e]}))})()})]}),C===`api_key`&&(0,Q.jsx)(Ve,{apiKeyValue:ee,onApiKeyChange:V,credential:T,onCredentialChange:E,isAuthLocked:f,isLoadingCredential:K,apiKeyPlaceholder:ue,provider:b,providerCredentials:se,showAdvancedSection:le,onError:I}),C===`oauth_subscription`&&(0,Q.jsx)(Me,{assistantId:n,onConnected:i}),N&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:N})]}),(0,Q.jsxs)(S.Footer,{children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:a,children:`Cancel`}),o===`managed-edit`&&(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:ie,disabled:j||H,children:`Save as New`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,disabled:!ae||j||H,onClick:()=>void oe(),children:j?`Saving…`:`Save`})]})]})}function Et(e){switch(e.type){case`api_key`:return`API key · ${e.credential}`;case`oauth_subscription`:return`ChatGPT Subscription`;case`platform`:return`Managed proxy`;case`none`:return`None (local)`;default:return e.type}}function Dt({isOpen:e,assistantId:t,onClose:n}){let[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(null),s=u(),{data:c,isLoading:l,isError:f}=d({...z({path:{assistant_id:t}}),enabled:e}),p=(0,Z.useMemo)(()=>c?.connections??[],[c]);function m(e){s.invalidateQueries({queryKey:G({path:{assistant_id:t}})}),i(!1),o(null)}let h=p.map(e=>e.name),g=()=>{i(!1),o(null)};return(0,Q.jsx)(S.Root,{open:e,onOpenChange:e=>{e||(r?g():n())},children:e?r?(0,Q.jsx)(Tt,{mode:a?a.isManaged?`managed-edit`:`edit`:`create`,connection:a??void 0,assistantId:t,existingNames:h,onSave:m,onCancel:g}):(0,Q.jsx)(Ot,{connections:p,loading:l,isError:f,assistantId:t,onClose:n,onEditClick:e=>{o(e),i(!0)},onNewClick:()=>{o(null),i(!0)},onConnectionDeleted:()=>{s.invalidateQueries({queryKey:G({path:{assistant_id:t}})})}}):null})}function Ot({connections:e,loading:t,isError:n,assistantId:r,onClose:i,onEditClick:a,onNewClick:o,onConnectionDeleted:c}){let[l,u]=(0,Z.useState)({}),[d,f]=(0,Z.useState)({});async function p(e){f(t=>({...t,[e]:!0})),u(t=>{let n={...t};return delete n[e],n});try{let{response:t}=await L({path:{assistant_id:r,name:e}});t?.ok||t?.status===404?c(e):t?.status===409?u(t=>({...t,[e]:`Connection is in use by one or more profiles. Remove those references first.`})):u(t=>({...t,[e]:`Failed to delete connection. Please try again.`}))}catch{u(t=>({...t,[e]:`Failed to delete connection. Please try again.`}))}finally{f(t=>{let n={...t};return delete n[e],n})}}return(0,Q.jsxs)(S.Content,{size:`md`,children:[(0,Q.jsxs)(S.Header,{children:[(0,Q.jsx)(S.Title,{children:`Provider Connections`}),(0,Q.jsx)(S.Description,{children:`Manage inference provider connections. Each connection binds a name to a provider and auth configuration.`})]}),(0,Q.jsx)(S.Body,{children:t?(0,Q.jsx)(`div`,{className:`space-y-2 py-2`,children:[1,2,3].map(e=>(0,Q.jsx)(`div`,{className:`h-10 animate-pulse rounded-lg bg-[var(--surface-active)]`},e))}):n?(0,Q.jsx)(m,{variant:`body-medium-default`,as:`p`,className:`py-4 text-center text-(--system-negative-strong)`,children:`Failed to load connections. Please try again.`}):e.length===0?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No connections yet. Create one to get started.`}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:e.map(e=>{let t=d[e.name]??!1,n=l[e.name],r=e.isManaged??!1;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg px-2 py-2`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:e.label??e.name}),r&&(0,Q.jsx)(v,{tone:`positive`,title:`Managed by Platform — auth is locked, but you can rename this connection.`,children:`Platform`})]}),(0,Q.jsxs)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:[e.label?`${e.name} · `:``,Ce[e.provider]??e.provider,` · `,Et(e.auth)]})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:()=>a(e),children:`Edit`}),(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(be,{}),"aria-label":`Delete ${e.name}`,disabled:r||t,title:r?`Managed connections cannot be deleted`:void 0,onClick:()=>void p(e.name),tintColor:`var(--system-negative-strong)`})]})]}),n?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:n}):null]},e.name)})})}),(0,Q.jsxs)(S.Footer,{className:`justify-between`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:o,children:`+ New Connection`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:i,children:`Done`})]})]})}function kt(e){let[t,n]=(0,Z.useState)(void 0);return(0,Z.useEffect)(()=>{t!==void 0&&e===t.value&&n(void 0)},[e,t]),[t===void 0?e:t.value,(0,Z.useCallback)(e=>n(e===void 0?void 0:{value:e}),[])]}function At(){let e=X(),t=u(),{data:n}=d({...B({path:{assistant_id:e}}),staleTime:3e4}),r=n?.llm?.activeProfile??null,i=n?.llm?.advisorProfile??null,o=n?.llm?.callSites??{},{profiles:c,profileOrder:l}=ke(n?.llm,e),f=(0,Z.useMemo)(()=>He(c,l),[c,l]),p=V({onSuccess:n=>{U(t,{path:{assistant_id:e}},n)}}),[g,_]=kt(r),[v,y]=kt(i),[b,x]=(0,Z.useState)(!1),[S,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(!1),D=(0,Z.useMemo)(()=>Ne(f,[g]),[f,g]),O=(0,Z.useMemo)(()=>Ne(f,[v]),[f,v]),k=Object.entries(o).filter(([e,t])=>e!==`mainAgent`&&(t?.profile!=null||t?.provider!=null||t?.model!=null)).length,A=k===1?`1 Override`:k>0?`${k} Overrides`:`Overrides`,j=g!==r,N=v!==i,P=(0,Z.useCallback)(async()=>{try{let t={};j&&(t.activeProfile=g),N&&(t.advisorProfile=v),await p.mutateAsync({path:{assistant_id:e},body:{llm:t}}),C.success(`Saved.`)}catch(e){C.error(`Failed to save. Please try again.`),a(e,{context:`settings-ai-language-model-save`})}},[j,N,g,v,p,e]);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ut,{title:`Language Model`,subtitle:`Configure the LLMs that power your assistant`,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Default Profile`}),(0,Q.jsx)(h,{value:g??``,onChange:e=>{_(e===``?null:e)},placeholder:`Select a default profile…`,options:D.map(e=>({value:e.name,label:Ze(e)}))}),D.length===0?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-1 text-(--content-tertiary)`,children:`No profiles yet. Click Profiles below to create one.`}):null]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Advisor Profile`}),(0,Q.jsx)(h,{value:v??``,onChange:e=>{y(e===``?null:e)},placeholder:`Select an advisor profile…`,options:O.map(e=>({value:e.name,label:Ze(e)}))}),(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-1 text-(--content-tertiary)`,children:`Which model your assistant consults for a second opinion`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>E(!0),children:`Providers`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>x(!0),children:`Profiles`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>w(!0),children:A})]}),(j||N)&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:P,disabled:p.isPending}),p.isPending&&(0,Q.jsx)(M,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]})}),e&&(0,Q.jsx)(Ct,{isOpen:b,assistantId:e,onClose:()=>x(!1)}),e&&(0,Q.jsx)(_t,{isOpen:S,onClose:()=>w(!1),assistantId:e}),e&&(0,Q.jsx)(Dt,{isOpen:T,assistantId:e,onClose:()=>E(!1)})]})}var jt=`vellum:ai:imageGenMode`,Mt=`vellum:ai:imageGenModel`,Nt=`vellum:ai:webSearchMode`,Pt=`vellum:ai:webSearchProvider`,Ft=`vellum:ai:webFetchProvider`,It=`vellum:ai:emailMode`,Lt=`vellum:ai:emailByoProvider`,Rt=`vellum:voice:ttsProvider`,zt=`vellum:voice:ttsApiKey:`,Bt=`vellum:voice:ttsVoiceId:`,Vt=`vellum:voice:sttProvider`,Ht=`vellum:voice:sttApiKey:`;function Ut(){let e=X();return(0,Z.useCallback)(async(t,n)=>{try{let{data:r}=await P({path:{assistant_id:e},body:{value:n,type:`api_key`,name:t},throwOnError:!0});Fe(r)}catch(e){throw e instanceof Error&&e.message===`No assistant found`?C.error(`Assistant not ready. Please try again.`):C.error(`Failed to save ${t} API key. Please try again.`),a(e,{context:`provision_provider_key`}),e}},[e])}function Wt(){let e=X(),i=u(),{data:o}=d({...B({path:{assistant_id:e}}),staleTime:3e4}),s=V({onSuccess:t=>{U(i,{path:{assistant_id:e}},t)}}),c=Ut(),{serverWebSearchMode:l,serverWebSearchProvider:f}=(0,Z.useMemo)(()=>{if(!o)return{serverWebSearchMode:Re(n(Nt,`your-own`),`your-own`),serverWebSearchProvider:n(Pt,`inference-provider-native`)};let e=o.services?.[`web-search`];return{serverWebSearchMode:Re(e?.mode??n(`vellum:ai:webSearchMode`,`your-own`),`your-own`),serverWebSearchProvider:e?.provider||n(`vellum:ai:webSearchProvider`,`inference-provider-native`)}},[o]),[p,m]=(0,Z.useState)(!1),[g,_]=kt(l),[v,b]=kt(f),[x,S]=(0,Z.useState)(``),w=Ke.has(v),{hasStoredCredential:T}=Je({assistantId:e,credentialKind:`api_key`,credentialName:v,enabled:w}),E=x.trim().length>0,D=p||g===`your-own`&&w&&!T&&!E||!(g!==l||(g===`managed`?`inference-provider-native`:v)!==f)&&!E,O=J(ze[v]??`Enter your API key`,T),k=(0,Z.useCallback)(async()=>{m(!0);let t=x.trim(),n=g===`managed`?`inference-provider-native`:v,o=Ie(n),l=g===`your-own`&&w&&t.length>0;try{l&&await c(n,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-search":{mode:g,provider:n}}}}).catch(e=>{throw C.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{m(!1);return}m(!1);try{if(r(Nt,g),r(Pt,n),l){o&&r(o,t);let n=Ge(e,`api_key`,v);i.setQueryData(n,!0),i.invalidateQueries({queryKey:n}),S(``)}C.success(`Web search settings saved.`)}catch(e){a(e,{context:`settings-ai-web-search-persist-local`}),C.error(`Saved, but local preferences could not be written.`)}},[w,s,c,i,e,x,g,v]),A=(0,Z.useCallback)(()=>{let e=Ie(v);e&&t(e),S(``),b(`inference-provider-native`),r(Pt,`inference-provider-native`)},[v,b]);return(0,Q.jsx)(ct,{title:`Web Search`,subtitle:`Configure how your assistant should search the web`,mode:g,onModeChange:e=>_(e),children:g===`managed`?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Web search is included with managed inference.`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:k,disabled:D}),p&&(0,Q.jsx)(M,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:v,onChange:b,options:Be.map(e=>({value:e,label:Ue[e]??e}))})]}),w&&(0,Q.jsx)(y,{label:`API Key`,type:`password`,value:x,onChange:e=>S(e.target.value),placeholder:O,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:k,disabled:D}),p&&(0,Q.jsx)(M,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),w&&(0,Q.jsx)(lt,{onClick:A,filled:!0})]})]})})}var Gt=`default`;function Kt(){let e=X(),i=u(),{data:o}=d({...B({path:{assistant_id:e}}),staleTime:3e4}),s=V({onSuccess:t=>{U(i,{path:{assistant_id:e}},t)}}),c=Ut(),l=(0,Z.useMemo)(()=>o?o.services?.[`web-fetch`]?.provider||n(`vellum:ai:webFetchProvider`,Gt):n(Ft,Gt),[o]),[f,p]=(0,Z.useState)(!1),[m,g]=kt(l),[_,v]=(0,Z.useState)(``),b=Ae.has(m),{hasStoredCredential:x}=Je({assistantId:e,credentialKind:`api_key`,credentialName:m,enabled:b}),S=_.trim().length>0,w=f||b&&!x&&!S||m===l&&!S,T=J(Pe[m]??`Enter your API key`,x),E=(0,Z.useCallback)(async()=>{p(!0);let t=_.trim(),n=b&&t.length>0;try{n&&await c(m,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-fetch":{provider:m}}}}).catch(e=>{throw C.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{p(!1);return}p(!1);try{if(r(Ft,m),n){let n=Xe(m);n&&r(n,t);let a=Ge(e,`api_key`,m);i.setQueryData(a,!0),i.invalidateQueries({queryKey:a}),v(``)}C.success(`Web fetch settings saved.`)}catch(e){a(e,{context:`settings-ai-web-fetch-persist-local`}),C.error(`Saved, but local preferences could not be written.`)}},[b,s,c,i,e,_,m]),D=(0,Z.useCallback)(()=>{let e=Xe(m);e&&t(e),v(``),g(Gt),r(Ft,Gt)},[m,g]);return(0,Q.jsx)(ut,{id:`web-fetch`,title:`Web Fetch`,subtitle:`Configure how your assistant reads individual web pages`,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:m,onChange:g,options:rt.map(e=>({value:e,label:Qe[e]??e}))})]}),b&&(0,Q.jsx)(y,{label:`API Key`,type:`password`,value:_,onChange:e=>v(e.target.value),placeholder:T,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:E,disabled:w}),f&&(0,Q.jsx)(M,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),b&&(0,Q.jsx)(lt,{onClick:D,filled:!0})]})]})})}var qt=[{id:`elevenlabs`,displayName:`ElevenLabs`,subtitle:`High-quality voice synthesis for conversations and read-aloud. Requires an ElevenLabs API key.`,supportsVoiceSelection:!0,apiKeyPlaceholder:`sk_…`,credentialsGuide:{description:`Sign in to ElevenLabs, go to your Profile, and copy your API key.`,url:`https://elevenlabs.io/app/settings/api-keys`,linkLabel:`Open ElevenLabs API Keys`}},{id:`fish-audio`,displayName:`Fish Audio`,subtitle:`Natural-sounding voice synthesis with custom voice cloning. Requires a Fish Audio API key and voice reference ID.`,supportsVoiceSelection:!0,apiKeyPlaceholder:`Enter your Fish Audio API key`,credentialsGuide:{description:`Sign in to Fish Audio, navigate to API Keys in your dashboard, and create a new key.`,url:`https://fish.audio/app/api-keys/`,linkLabel:`Open Fish Audio API Keys`}},{id:`deepgram`,displayName:`Deepgram`,subtitle:`Fast, accurate text-to-speech synthesis. Uses the same API key as Deepgram speech-to-text.`,supportsVoiceSelection:!1,apiKeyPlaceholder:`Enter your Deepgram API key`,credentialsGuide:{description:`Sign in to Deepgram, navigate to your API Keys page, and create or copy an existing key. This is the same key used for speech-to-text.`,url:`https://console.deepgram.com/`,linkLabel:`Open Deepgram Console`}},{id:`xai`,displayName:`xAI`,subtitle:`Text-to-speech from xAI with expressive voices (eve, ara, rex, sal, leo). Requires an xAI API key.`,supportsVoiceSelection:!1,apiKeyPlaceholder:`Enter your xAI API key`,credentialsGuide:{description:`Sign in to the xAI console, navigate to API Keys, and create a new key.`,url:`https://console.x.ai/`,linkLabel:`Open xAI Console`}}],Jt=[{id:`deepgram`,displayName:`Deepgram`,subtitle:`Fast, accurate speech-to-text transcription. Uses the same API key as Deepgram text-to-speech.`,apiKeyPlaceholder:`Enter your Deepgram API key`,credentialsGuide:{description:`Sign in to Deepgram, navigate to your API Keys page, and create or copy an existing key. This is the same key used for text-to-speech.`,url:`https://console.deepgram.com/`,linkLabel:`Open Deepgram Console`}},{id:`openai`,displayName:`OpenAI`,subtitle:`OpenAI Whisper transcription. Requires an OpenAI API key.`,apiKeyPlaceholder:`sk-…`,credentialsGuide:{description:`Sign in to the OpenAI platform, navigate to API Keys, and create a new secret key.`,url:`https://platform.openai.com/api-keys`,linkLabel:`Open OpenAI API Keys`}},{id:`macos-native`,displayName:`macOS Native Dictation`,subtitle:`Apple's on-device speech recognition, running locally through the macOS helper. Works offline and needs no API key.`,requiresNativeDictation:!0,setupWarning:`Requires macOS Dictation to be turned on: open System Settings → Keyboard, then enable Dictation. macOS downloads the on-device speech model the first time Dictation is enabled — without it, voice input produces no transcript.`}],Yt=[{id:`mailgun`,displayName:`Mailgun`,setupSkill:`mailgun-setup`,docsUrl:`https://www.mailgun.com/`},{id:`resend`,displayName:`Resend`,setupSkill:`resend-setup`,docsUrl:`https://resend.com/`}],Xt=[`gemini-3.1-flash-image-preview`,`gemini-3-pro-image-preview`],Zt={"gemini-3.1-flash-image-preview":`Nano Banana 2`,"gemini-3-pro-image-preview":`Nano Banana Pro`};function Qt({assistantId:e,assistantHandle:t,emailRootDomain:n}){let r=u(),i=c(),[o,p]=l(),[m,h]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(null),[S,w]=(0,Z.useState)(``),[T,E]=(0,Z.useState)(null),[D,A]=(0,Z.useState)(!1),[j,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{v||!t||m||(h(t),y(!0))},[t,v,m]);let I=d({...se(),enabled:!0}),L=I.data,R=L?.entitlements,z=R?.managed_email===!0,B=!!R&&!z,ee=!L&&I.isError&&!I.isFetching,te=d({...ae({path:{assistant_id:e}}),enabled:!B}),V=d({...me({path:{assistant_id:e}}),enabled:!B}),H=te.data?.results?.[0],U=V.data?.results?.[0],W=H?`${H.subdomain}.${n}`:null,G=d({...ue({path:{assistant_id:e,id:U?.id??``}}),enabled:!!U?.id,refetchOnWindowFocus:!1}),K=d({...ge({path:{assistant_id:e,id:H?.id??``}}),enabled:!!H?.id,refetchInterval:e=>{let t=e.state.data?.status;return t===`verified`||t===`failed`?!1:1e4},refetchOnWindowFocus:!0});(0,Z.useEffect)(()=>{o.get(`release`)!==`1`||!H||U||(N(!0),p(e=>{let t=new URLSearchParams(e);return t.delete(`release`),t},{replace:!0}))},[U,H,o,p]);let q=f(pe()),ie=f(he()),_e=f(oe()),J=f(ce()),Y=(0,Z.useCallback)(()=>{let t={assistant_id:e};r.invalidateQueries({queryKey:de({path:t})}),r.invalidateQueries({queryKey:fe({path:t})}),U?.id&&r.invalidateQueries({queryKey:le({path:{...t,id:U.id}})}),r.invalidateQueries({queryKey:ve()})},[U?.id,e,r]),ye=(0,Z.useCallback)(async()=>{let t=m.trim().toLowerCase();if(!t){x(`Enter a subdomain.`);return}A(!1);try{await q.mutateAsync({path:{assistant_id:e},body:{subdomain:t}}),h(``),x(null),Y(),C.success(`Domain ${t}.${n} registered.`)}catch(e){x(ne(e,void 0,`Failed to register domain.`))}},[e,n,Y,q,m]),xe=(0,Z.useCallback)(async()=>{let t=S.trim().toLowerCase();if(!t){E(`Enter an email username.`);return}try{await _e.mutateAsync({path:{assistant_id:e},body:{username:t}}),w(``),E(null),Y(),C.success(`Email address created.`)}catch(e){E(ne(e,void 0,`Failed to create email address.`))}},[e,Y,_e,S]),Se=(0,Z.useCallback)(async()=>{if(U?.id){F(!1);try{await J.mutateAsync({path:{assistant_id:e,id:U.id}}),Y(),C.success(`Email address removed.`)}catch(e){a(e,{context:`email_address_delete`}),C.error(`Failed to remove email address.`)}}},[U?.id,e,J,Y]),Ce=(0,Z.useCallback)(async()=>{if(!H?.id)return;if(U){C.error(`Remove the email address first.`);return}N(!1);let t=H.subdomain;try{await ie.mutateAsync({path:{assistant_id:e,id:H.id}}),h(t),Y(),C.success(`Domain released.`)}catch(e){a(e,{context:`email_domain_release`}),C.error(`Failed to release domain.`)}},[U,e,ie,H?.id,H?.subdomain,Y]);if(I.isLoading)return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(M,{className:`h-4 w-4 animate-spin`}),`Checking subscription…`]});if(B)return(0,Q.jsxs)(_,{tone:`info`,icon:(0,Q.jsx)(O,{className:`h-4 w-4`,"aria-hidden":!0}),title:`Get a dedicated email address for your assistant`,actions:(0,Q.jsx)(s,{size:`compact`,onClick:()=>i(`${re.settings.billing}?adjust_plan`),children:`Upgrade to Pro`}),children:[`Pro plans include a managed`,` `,`<your-subdomain>.${n}`,` inbox — no provider setup required. Or switch to `,(0,Q.jsx)(`strong`,{children:`Your Own`}),` to bring an existing provider.`]});let we=ee?(0,Q.jsx)(_,{tone:`warning`,title:`Couldn't verify subscription status`,actions:(0,Q.jsx)(s,{size:`compact`,variant:`outlined`,onClick:()=>I.refetch(),children:`Retry`}),children:`We couldn't reach the billing service. The form below assumes managed email is enabled for your org — if it isn't, registering a domain will fail.`}):null;return H?U?(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[we,(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Address`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:U.address}),(0,Q.jsx)(ft,{status:K.data?.status,message:K.data?.message,isLoading:K.isLoading}),(0,Q.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(be,{}),onClick:()=>F(!0),disabled:J.isPending,"aria-label":`Remove email address`})]}),(0,Q.jsx)(g,{open:P,title:`Remove Email Address`,message:(0,Q.jsxs)(Q.Fragment,{children:[`Are you sure you want to remove `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:U.address}),`? Your assistant will no longer be able to send or receive email at this address.`]}),confirmLabel:`Remove`,destructive:!0,onConfirm:Se,onCancel:()=>F(!1)})]}),G.data?.usage&&(0,Q.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[G.data.usage.sent_today,` /`,` `,G.data.usage.daily_limit,` sent today ·`,` `,G.data.usage.received_today,` received`]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[we,(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Domain`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:[H.subdomain,`.`,n]}),(0,Q.jsx)(ft,{status:K.data?.status,message:K.data?.message,isLoading:K.isLoading}),(0,Q.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(be,{}),onClick:()=>N(!0),disabled:ie.isPending,"aria-label":`Release domain`})]}),(0,Q.jsx)(g,{open:j,title:`Release Domain`,message:(0,Q.jsxs)(Q.Fragment,{children:[`Are you sure you want to release `,(0,Q.jsxs)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:[H.subdomain,`.`,n]}),`? The subdomain will become available for others to claim.`]}),confirmLabel:`Release`,destructive:!0,onConfirm:Ce,onCancel:()=>N(!1)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Email address`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`div`,{className:`flex h-9 min-w-0 flex-1 items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${T?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[(0,Q.jsx)(`input`,{value:S,onChange:e=>{w(e.target.value.toLowerCase()),T&&E(null)},placeholder:`hi`,"aria-label":`Email username`,"aria-invalid":!!T,className:`h-full min-w-0 flex-1 bg-transparent pl-3 pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`}),(0,Q.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`@`,W]})]}),(0,Q.jsx)(s,{onClick:xe,disabled:_e.isPending||!S.trim(),children:_e.isPending?`Creating…`:`Create`})]}),T&&(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:T})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[we,(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Subdomain`}),(0,Q.jsx)(k,{subdomain:m,onSubdomainChange:e=>{h(e),b&&x(null)},domainSuffix:n,subdomainPlaceholder:`my-assistant`,error:b}),(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Each assistant gets its own subdomain. Lowercase letters, numbers, and hyphens only.`}),(0,Q.jsx)(s,{onClick:()=>A(!0),disabled:q.isPending||!m.trim(),children:q.isPending?`Registering…`:`Register`}),(0,Q.jsx)(g,{open:D,title:`Set Subdomain`,message:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:m.trim().toLowerCase()||`subdomain`}),` will also become your assistant's public handle. You won't be able to change it once set.`]}),confirmLabel:`Confirm`,onConfirm:ye,onCancel:()=>A(!1)})]})}function $t(){let e=X(),t=K(),{data:o}=d({..._e(),enabled:t}),s=o?.results?.[0]?.handle,c=at.use.emailRootDomain(),l=je(),[u,f]=(0,Z.useState)(()=>l===`gated`?`your-own`:Re(n(It,`managed`),`managed`)),[p,m]=(0,Z.useState)(()=>{let e=n(Lt,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),g=d({queryKey:[`byoEmailCredential`,e,p],queryFn:async()=>{let{data:t}=await R({path:{assistant_id:e},body:{service:p,field:`api_key`},throwOnError:!0});return t},enabled:u===`your-own`||l===`gated`,staleTime:6e4,retry:i,meta:{errorContext:`byo_email_credential_check`}});(0,Z.useEffect)(()=>{g.error&&a(g.error,{context:`byo_email_credential_check`,bestEffort:!0})},[g.error]);let _=g.data?.hasSecret===!0,v=(0,Z.useCallback)(e=>{f(e),r(It,e)},[]),y=(0,Z.useCallback)(()=>{r(Lt,p),C.success(`Email settings saved.`)},[p]),b=(0,Z.useMemo)(()=>Yt.find(e=>e.id===p)??Yt[0],[p]),x=(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(j,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsxs)(`span`,{children:[`Configure `,b.displayName,` via the assistant CLI: ask the assistant to run the`,` `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:b.setupSkill}),` `,`skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`]}),(0,Q.jsxs)(`a`,{href:b.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,b.displayName,(0,Q.jsx)(A,{className:`h-3 w-3`})]})]})]}),S=(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:p,onChange:e=>{(e===`mailgun`||e===`resend`)&&m(e)},options:Yt.map(e=>({value:e.id,label:e.displayName}))})]}),_?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--system-positive-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-default)]`,children:[(0,Q.jsx)(D,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`span`,{children:[b.displayName,` API key configured. To reconfigure, run the`,` `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:b.setupSkill}),` `,`skill.`]})]}),(0,Q.jsxs)(`a`,{href:b.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-body-small-default text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,b.displayName,(0,Q.jsx)(A,{className:`h-3 w-3`})]})]}):x,(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Q.jsx)($,{onClick:y,disabled:!1})})]});return l===`gated`?(0,Q.jsx)(ut,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,children:S}):(0,Q.jsx)(ct,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,mode:u,onModeChange:v,children:u===`managed`?(0,Q.jsx)(`div`,{className:`space-y-4`,children:l===`disabled`?(0,Q.jsx)(et,{children:`Log in to the Vellum platform to manage email settings.`}):(0,Q.jsx)(Qt,{assistantId:e,assistantHandle:s,emailRootDomain:c})}):S})}function en(){let e=X(),t=u(),{data:i}=d({...B({path:{assistant_id:e}}),staleTime:3e4}),o=V({onSuccess:n=>{U(t,{path:{assistant_id:e}},n)}}),s=Ut(),[c,l]=kt((0,Z.useMemo)(()=>Re(i?i.services?.[`image-generation`]?.mode??n(`vellum:ai:imageGenMode`,`your-own`):n(jt,`your-own`),`your-own`),[i])),[f,p]=(0,Z.useState)(()=>n(Mt,`gemini-3.1-flash-image-preview`)),[m,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(!1),b=(0,Z.useCallback)(async()=>{v(!0);let n=m.trim(),i=c===`your-own`&&n.length>0;try{i&&await s(`gemini`,n),await o.mutateAsync({path:{assistant_id:e},body:{services:{"image-generation":{mode:c}}}}).catch(e=>{throw C.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e});try{await I({path:{assistant_id:e},body:{modelId:f},throwOnError:!0})}catch(e){throw C.error(`Failed to update image generation model. Please try again.`),a(e,{context:`set_image_gen_model`}),e}finally{t.invalidateQueries({queryKey:H({path:{assistant_id:e}})})}}catch{v(!1);return}v(!1);try{r(jt,c),r(Mt,f),i&&g(``),C.success(`Image generation settings saved.`)}catch(e){a(e,{context:`settings-ai-image-gen-persist-local`}),C.error(`Saved, but local preferences could not be written.`)}},[m,c,f,e,o,s,t]),x=(0,Z.useCallback)(()=>{g(``),p(`gemini-3.1-flash-image-preview`),r(Mt,`gemini-3.1-flash-image-preview`)},[]);return(0,Q.jsx)(ct,{title:`Image Generation`,subtitle:`Configure which model your assistant uses to generate images`,mode:c,onModeChange:e=>l(e),children:c===`managed`?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,Q.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,Q.jsx)(h,{className:`flex-1`,value:f,onChange:p,options:Xt.map(e=>({value:e,label:Zt[e]??e}))}),(0,Q.jsx)($,{onClick:b,disabled:_}),_&&(0,Q.jsx)(M,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsx)(y,{label:`API Key`,type:`password`,value:m,onChange:e=>g(e.target.value),placeholder:`Enter your Gemini API key`,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,Q.jsx)(h,{value:f,onChange:p,options:Xt.map(e=>({value:e,label:Zt[e]??e}))})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:b,disabled:_}),_&&(0,Q.jsx)(M,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),(0,Q.jsx)(lt,{onClick:x})]})]})})}async function tn(e){let{provider:t,apiKey:n,voiceId:r,text:i}=e;if(n.trim().length===0)return{kind:`error`,message:`Save an API key for this provider first.`};try{return t===`elevenlabs`?await nn(n,r,i):t===`deepgram`?await rn(n,i):t===`fish-audio`?{kind:`unsupported`,message:`Fish Audio TTS is only supported in the desktop app today. Use ElevenLabs or Deepgram to test from the browser.`}:t===`xai`?{kind:`unsupported`,message:`xAI TTS is only supported in the desktop app today. Use ElevenLabs or Deepgram to test from the browser.`}:{kind:`unsupported`,message:`TTS testing for "${t}" is not supported from the browser yet.`}}catch(e){return{kind:`error`,message:e instanceof Error?e.message:`Failed to reach the TTS provider.`}}}async function nn(e,t,n){let r=t.trim();if(r.length===0)return{kind:`error`,message:`Enter and save a Voice ID before testing ElevenLabs.`};let i=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${encodeURIComponent(r)}?output_format=mp3_44100_128`,{method:`POST`,headers:{"xi-api-key":e,"Content-Type":`application/json`,Accept:`audio/mpeg`},body:JSON.stringify({text:n,model_id:`eleven_turbo_v2_5`})});return i.ok?{kind:`audio`,blob:await i.blob()}:{kind:`error`,message:await an(i,`ElevenLabs rejected the request.`)}}async function rn(e,t){let n=await fetch(`https://api.deepgram.com/v1/speak?model=aura-2-thalia-en`,{method:`POST`,headers:{Authorization:`Token ${e}`,"Content-Type":`application/json`,Accept:`audio/mpeg`},body:JSON.stringify({text:t})});return n.ok?{kind:`audio`,blob:await n.blob()}:{kind:`error`,message:await an(n,`Deepgram rejected the request.`)}}async function an(e,t){try{let n=await e.text();if(n.length===0)return`${t} (HTTP ${e.status})`;try{let e=JSON.parse(n);if(e&&typeof e==`object`&&`detail`in e&&typeof e.detail==`string`)return e.detail;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message}catch{}return n.slice(0,200)}catch{return`${t} (HTTP ${e.status})`}}function on(){let e=X(),t=q.use.name()??`your assistant`,i=K(),{data:a}=d({...W({path:{assistant_id:e}}),enabled:i,staleTime:1/0}),o=a?.providers??qt,c=o[0]?.id??`elevenlabs`,[l,u]=(0,Z.useState)(()=>n(Rt,c)),[f,p]=(0,Z.useState)(l),[m,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(``),[b,x]=(0,Z.useState)(``),[S,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(!1),D=(0,Z.useMemo)(()=>o.find(e=>e.id===l)??o[0],[l,o]),O=(0,Z.useCallback)(e=>{let t=n(zt+e,``),r=n(Bt+e,``);w(t.length>0),v(r),x(r),g(``)},[]);(0,Z.useEffect)(()=>{O(l)},[l,O]);let k=(0,Z.useMemo)(()=>{let e=l!==f,t=m.trim().length>0,n=_.trim()!==b;return e||t||n},[l,f,m,_,b]),A=(0,Z.useCallback)(()=>{r(Rt,l);let e=m.trim();e.length>0&&(r(zt+l,e),w(!0));let t=_.trim();r(Bt+l,t),p(l),x(t),g(``)},[l,m,_]),j=(0,Z.useCallback)(()=>{r(zt+l,``),w(!1),g(``)},[l]),M=(0,Z.useCallback)(async()=>{E(!0);try{let e=n(zt+l,``),r=m.trim(),i=r.length>0?r:e;if(i.length===0){C.error(`Save an API key for this provider before testing.`);return}let a=n(Bt+l,``),o=_.trim(),s=await tn({provider:l,apiKey:i,voiceId:o.length>0?o:a,text:`Hey! It's ${t}. How does this sound?`});if(s.kind!==`audio`){C.error(s.message);return}let c=URL.createObjectURL(s.blob);try{let e=new Audio(c);await e.play(),await new Promise(t=>{e.onended=()=>t(),e.onerror=()=>t()})}finally{URL.revokeObjectURL(c)}}finally{E(!1)}},[t,m,l,_]),N=S?`•••••••• (Enter a new key to replace)`:D.apiKeyPlaceholder;return(0,Q.jsx)(ut,{title:`Text-to-Speech`,subtitle:D.subtitle,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:l,onChange:u,options:o.map(e=>({value:e.id,label:e.displayName})),"aria-label":`TTS provider`})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`API Key`}),(0,Q.jsx)(y,{type:`password`,value:m,onChange:e=>g(e.target.value),placeholder:N,fullWidth:!0})]}),D.supportsVoiceSelection&&(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Voice ID`}),(0,Q.jsx)(y,{type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:`Enter a voice ID`,fullWidth:!0})]}),(0,Q.jsx)(dt,{guide:D.credentialsGuide}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`outlined`,onClick:M,disabled:T,children:T?`Testing…`:`Test`}),(0,Q.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:A,disabled:!k}),S&&(0,Q.jsx)(lt,{onClick:j})]})]})]})})}function sn(){let[e]=(0,Z.useState)(()=>Jt.filter(e=>!e.requiresNativeDictation||we())),t=e[0]?.id??`deepgram`,[i,a]=(0,Z.useState)(()=>{let r=n(Vt,t);return e.some(e=>e.id===r)?r:t}),[o,s]=(0,Z.useState)(i),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{let i=n(Vt,t);i===`macos-native`&&!e.some(e=>e.id===i)&&r(Vt,t)},[e,t]);let f=(0,Z.useMemo)(()=>e.find(e=>e.id===i)??e[0],[e,i]),p=f.apiKeyPlaceholder!==void 0;(0,Z.useEffect)(()=>{d(n(Ht+i,``).length>0),l(``)},[i]);let m=(0,Z.useMemo)(()=>{let e=i!==o,t=c.trim().length>0;return e||t},[i,o,c]),g=(0,Z.useCallback)(()=>{r(Vt,i);let e=c.trim();e.length>0&&(r(Ht+i,e),d(!0)),s(i),l(``)},[i,c]),_=(0,Z.useCallback)(()=>{r(Ht+i,``),d(!1),l(``)},[i]),v=u?`•••••••• (Enter a new key to replace)`:f.apiKeyPlaceholder;return(0,Q.jsx)(ut,{title:`Speech-to-Text`,subtitle:f.subtitle,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:i,onChange:a,options:e.map(e=>({value:e.id,label:e.displayName})),"aria-label":`STT provider`})]}),p&&(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`API Key`}),(0,Q.jsx)(y,{type:`password`,value:c,onChange:e=>l(e.target.value),placeholder:v,fullWidth:!0})]}),f.setupWarning&&(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(N,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-mid-strong)]`}),(0,Q.jsx)(`span`,{children:f.setupWarning})]}),f.credentialsGuide&&(0,Q.jsx)(dt,{guide:f.credentialsGuide}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,Q.jsx)($,{onClick:g,disabled:!m}),u&&(0,Q.jsx)(lt,{onClick:_})]})]})})}function cn(){return(0,Z.useEffect)(()=>{let e=window.location.hash.slice(1);e&&requestAnimationFrame(()=>{document.getElementById(e)?.scrollIntoView({block:`start`})})},[]),(0,Q.jsxs)(`div`,{className:`space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] px-4 py-2.5`,children:[(0,Q.jsx)(j,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`}),(0,Q.jsxs)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:[`Managed services are metered and deducted from your Vellum account balance.`,` `,(0,Q.jsxs)(`a`,{href:`https://www.vellum.ai/docs/pricing`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--primary-base)] hover:underline`,children:[`View pricing`,(0,Q.jsx)(A,{className:`h-3.5 w-3.5`})]})]})]}),(0,Q.jsx)(At,{}),(0,Q.jsx)(Wt,{}),(0,Q.jsx)(Kt,{}),(0,Q.jsx)($t,{}),(0,Q.jsx)(en,{}),(0,Q.jsx)(on,{}),(0,Q.jsx)(sn,{})]})}export{cn as AiPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./create-selectors-BE0_e_Ed.js";import{t as n}from"./impersonate-version-flag-n-4oNLiO.js";var r=t(e(e=>({name:null,version:null,setIdentity:(t,r)=>{e({name:t,version:n()??r})},clearIdentity:()=>e({name:null,version:null})})));export{r as t};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esm-D2xhPoyM.js","assets/preload-helper-BewR0kVT.js","assets/dist-BTp54SIT.js","assets/esm-BtN-afz9.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,c as n,i as r,t as i}from"./local-settings-lVNyIOJ_.js";import{a,n as o,t as s}from"./device-settings-BBwtGKJb.js";import{o as c,t as l}from"./capture-error-Hr1Yo2kx.js";import{t as u}from"./react-DJZBPgpf.js";import{t as d}from"./preload-helper-BewR0kVT.js";import{t as f}from"./useQuery-B45lW1Kk.js";import{n as p,t as m}from"./create-selectors-BE0_e_Ed.js";import{$ as h,C as ee,Q as te,S as ne,T as re,Z as ie,_ as ae,at as g,c as oe,d as se,et as ce,f as _,h as v,i as le,it as y,m as ue,n as de,nt as fe,o as pe,r as me,rt as he,s as ge,tt as _e,v as ve,x as ye}from"./local-mode-CvrNMtPF.js";import{t as b}from"./is-electron-C_ZTVhv8.js";import{n as x,t as be}from"./resolved-assistants-store-Cp4J43BK.js";import{n as xe,r as S,t as Se}from"./api-errors-CveHbhgb.js";import{t as C}from"./client.gen-Cs6pCK0s.js";import{M as Ce,N as we,St as Te}from"./sdk.gen-D-_js_oC.js";import{a as Ee,c as w,r as De}from"./api-2kc3MHRz.js";import{n as Oe}from"./event-bus-Dl7-I4aL.js";import{s as ke,t as Ae}from"./return-to-ByvaXBKr.js";import{i as je,t as Me}from"./dist-BTp54SIT.js";import{a as Ne}from"./routes-DVqkwUEe.js";import{r as Pe}from"./typed-storage-Dctd_K9F.js";var T=m(p(()=>({assistantState:{kind:`loading`},operationalStatusAssistantId:null,expectingFirstMessage:!1}))),Fe=new Set;function Ie(e){return Fe.add(e),()=>{Fe.delete(e)}}function Le(){for(let e of Fe)try{e()}catch{}}var Re=new Set([502,503,504]),ze=`Connection interrupted. Reconnecting…`;function Be(e){return e.code===`proxy_network_error`?!0:(typeof e.detail==`string`?e.detail:``).includes(`net::ERR_`)}function Ve(e){if(e.ok)switch(e.data.status){case`active`:return e.data.is_local?{kind:`self_hosted`}:{kind:`active`};case`initializing`:return{kind:`initializing`};case`to_be_deleted`:return{kind:`cleaning_up`};default:return{kind:`error`,message:`Unexpected assistant status: ${e.data.status}`}}return e.status===404?{kind:`auto_hatch`}:Be(e.error)?{kind:`error`,transient:!0,message:ze}:{kind:`error`,message:S(e.error,void 0,`Failed to check assistant status.`)}}function He(e){return e===void 0||e>=500}var Ue=`platform_hosted_disabled`,We=`We are at capacity for Vellum Managed Assistants, more will be available soon!`;function Ge(e,t){return e===503?t?.code===Ue:!1}var Ke=2e3,qe=3e4;function Je(e){return Math.min(Ke*2**e,qe)}var Ye=3e5;function Xe(){return{kind:`error`,message:`Your assistant is taking longer than expected to start. Please try again, or check the community for help.`}}var Ze=[`assistant`,`current`],Qe=3e3,$e=new Set([`initializing`,`cleaning_up`]);function et(e){if(!e)return!1;let t=Ve(e);return $e.has(t.kind)?Qe:!1}function tt(e){return e?[...Ze,e]:Ze}function nt(e){let t=e.selectedPlatformAssistantId??null;return f({queryKey:tt(t),queryFn:()=>De(t??void 0),enabled:e.enabled,retry:!1,refetchInterval:e=>et(e.state.data),refetchOnWindowFocus:!1})}var rt=new Set([`healthy`,`ok`]);function it(e){if(!e.ok)return`unreachable`;let t=e.data?.status;return t!==void 0&&!rt.has(t)?`unhealthy`:`healthy`}function at(){let e=T.use.assistantState();return e.kind===`self_hosted`||e.kind===`active`&&e.isLocal?e.health??null:null}var E=e=>e===`authenticated`,ot=e=>e!==`initializing`,D=e=>e===`present`,st=(e,t)=>e===`present`&&!t,ct=new Set([401,403,410]),lt=e=>!e.ok&&e.status!==void 0&&ct.has(e.status),ut=4e3,dt=6e4,ft=5e3;function pt(){let e=/\/assistant(?:\/|$)/.exec(window.location.pathname),t=e&&e.index>0?window.location.pathname.slice(0,e.index).replace(/\/+$/,``):``;return`${window.location.origin}${t}`}var mt=new class{state={kind:`loading`};generation=0;initializingTimeout=null;ready=!1;inputs={sessionStatus:`initializing`,hasPlatformSession:!1,queryClient:null,selectedPlatformAssistantId:null};probeTimer=null;healthHeartbeatTimer=null;healthHeartbeatId=null;healthHeartbeatToken=0;reachabilityProbeInFlightIds=new Set;probeLoopAssistantId=null;errorRetryTimer=null;errorRetryAttempt=0;constructor(){Ie(()=>this.onUnreachable()),Oe(`app.online`,()=>this.onNetworkOnline()),x.subscribe((e,t)=>{e.selectedAssistantId!==t.selectedAssistantId&&(!g()||this.state.kind===`loading`||this.applyGatewayAuthShortCircuit())})}setInputs(e){this.inputs=e,this.ready=!0}resetForLogout(){x.getState().activeAssistantId!==null&&x.getState().setActiveAssistantId(null),this.setOperationalStatusAssistantId(null),this.cancelProbeTimer(),this.probeLoopAssistantId=null,this.reachabilityProbeInFlightIds.clear(),this.state.kind!==`loading`&&this.transition({kind:`loading`}),this.clearExpectingFirstMessage()}async respondToInputs(){if(this.ready){if(!E(this.inputs.sessionStatus)){this.resetForLogout();return}if(g()){this.applyGatewayAuthShortCircuit();return}this.inputs.hasPlatformSession&&h(null),this.inputs.isOrgReady&&await this.checkAssistant()}}async applyServerResult(e){this.ready&&(this.state.kind!==`initializing`&&this.state.kind!==`cleaning_up`||await this.applyServerStateUpdate(e))}async checkAssistant(e){if(!this.ready)return;if(g()){this.applyGatewayAuthShortCircuit();return}let t=this.generation;try{let n=e??this.inputs.selectedPlatformAssistantId??null,r=await this.inputs.queryClient.fetchQuery({queryKey:tt(n),queryFn:()=>De(n??void 0),staleTime:0});if(t!==this.generation||n&&!r.ok&&r.status===404&&(x.getState().setSelectedAssistant(null),r=await this.inputs.queryClient.fetchQuery({queryKey:Ze,queryFn:()=>De(),staleTime:0}),t!==this.generation))return;await this.applyServerStateUpdate(r)}catch(e){if(console.error(`Error checking assistant status:`,e),l(e,{context:`check_assistant`}),t!==this.generation||this.degradeOnTransportFailure())return;this.transition({kind:`error`,transient:!0,message:ze})}}degradeOnTransportFailure(){return this.state.kind===`active`?(this.triggerReachabilityProbe(),!0):this.state.kind===`initializing`||this.state.kind===`cleaning_up`}retryAssistant(){this.ready&&this.checkAssistant()}markExpectingFirstMessage(){T.getState().expectingFirstMessage||T.setState({expectingFirstMessage:!0})}clearExpectingFirstMessage(){T.getState().expectingFirstMessage&&T.setState({expectingFirstMessage:!1})}transition(e){let t=this.state.kind;this.state=e,T.setState({assistantState:e}),e.kind===`initializing`?t!==`initializing`&&this.armInitializingWatchdog():this.initializingTimeout&&=(clearTimeout(this.initializingTimeout),null),e.kind!==`initializing`&&e.kind!==`active`&&this.clearExpectingFirstMessage(),!(e.kind===`self_hosted`||e.kind===`active`&&e.isLocal)&&this.healthHeartbeatId!==null&&this.cancelHealthHeartbeat(),e.kind===`error`&&e.transient?this.armErrorRetry():this.clearErrorRetry(e.kind!==`error`)}clearErrorRetry(e){this.errorRetryTimer&&=(clearTimeout(this.errorRetryTimer),null),e&&(this.errorRetryAttempt=0)}armErrorRetry(){this.errorRetryTimer&&clearTimeout(this.errorRetryTimer);let e=Je(this.errorRetryAttempt);this.errorRetryAttempt+=1,this.errorRetryTimer=setTimeout(()=>{this.errorRetryTimer=null,this.checkAssistant()},e)}onNetworkOnline(){if(this.ready){if(this.state.kind===`error`&&this.state.transient){this.clearErrorRetry(!0),this.checkAssistant();return}this.state.kind===`active`&&this.state.reachable===!1&&this.checkAssistant()}}armInitializingWatchdog(){this.initializingTimeout&&clearTimeout(this.initializingTimeout),this.initializingTimeout=setTimeout(()=>{this.generation++,c(`Assistant stuck in initializing state`,{level:`warning`,extra:{timeoutMs:Ye}}),this.transition(Xe())},Ye)}projectActive(e){let t=e.data.maintenance_mode,n=e.data.is_local??!1;h(null),this.setOperationalStatusAssistantId(e.data.id);let r=x.getState();r.upsertFromApi(e.data),r.setActiveAssistantId(e.data.id),this.transition({kind:`active`,isLocal:n,maintenanceMode:{enabled:t?.enabled}}),n?this.startHealthHeartbeat(e.data.id):this.probeReachability(e.data.id)}projectSelfHosted(e){this.setOperationalStatusAssistantId(null),h({url:e.data.ingress_url,token:e.data.platform_actor_token});let t=x.getState();t.upsertFromApi(e.data),t.setActiveAssistantId(e.data.id),this.transition({kind:`self_hosted`}),this.startHealthHeartbeat(e.data.id)}applyGatewayAuthShortCircuit(){let e=window.location.origin,t=`self`,n=le();if(v())e=pt();else if(n){let r=oe();e=`${window.location.origin}${n}`,t=r?.assistantId??t}h({url:e,token:fe()}),this.setOperationalStatusAssistantId(null),x.getState().setActiveAssistantId(t),this.transition({kind:`active`,isLocal:!0}),this.startHealthHeartbeat(t)}async applyServerStateUpdate(e){let t=this.generation,n=Ve(e);if(!(n.kind===`error`&&n.transient&&this.degradeOnTransportFailure())&&(e.ok?this.setOperationalStatusAssistantId(e.data.id):this.setOperationalStatusAssistantId(null),n.kind!==`auto_hatch`)){if(n.kind===`active`&&e.ok){this.projectActive(e);return}if(n.kind===`self_hosted`&&e.ok){this.projectSelfHosted(e);return}t===this.generation&&n.kind!==`active`&&this.transition(n)}}async probeReachability(e){if(!this.reachabilityProbeInFlightIds.has(e)){this.reachabilityProbeInFlightIds.add(e);try{let t=this.generation,n=this.state.kind===`self_hosted`||this.state.kind===`active`&&this.state.isLocal,r=n?oe()?.assistantId??e:e,i=!v()&&n?await re(r).catch(()=>null):null,a=i?.ok&&i.state===`upgrading`?`upgrading`:`unreachable`;if(a!==`upgrading`)try{a=it(await Ee(e))}catch{a=`unreachable`}if(a===`unreachable`&&!i&&!v()&&(i=await re(r).catch(()=>null)),a===`unreachable`&&i?.ok)switch(i.state){case`healthy`:a=`healthy`;break;case`sleeping`:case`starting`:case`upgrading`:case`crashed`:a=i.state;break;case`unknown`:break}if(t!==this.generation||x.getState().activeAssistantId!==e)return;if(this.state.kind===`self_hosted`){this.state.health!==a&&this.transition({...this.state,health:a});return}if(this.state.kind!==`active`)return;let o=a===`healthy`||a===`unhealthy`;if(this.state.reachable===o&&this.state.health===a)return;this.transition({...this.state,reachable:o,health:a})}finally{this.reachabilityProbeInFlightIds.delete(e)}}}cancelProbeTimer(){this.probeTimer&&=(clearTimeout(this.probeTimer),null)}startProbeLoop(e){if(this.probeLoopAssistantId===e)return;this.cancelProbeTimer(),this.probeLoopAssistantId=e;let t=Date.now(),n=()=>{this.probeLoopAssistantId=null},r=async()=>{if(this.state.kind!==`active`||this.state.reachable===!0){n();return}if(Date.now()-t>dt){n();return}await this.probeReachability(e);let i=this.state;if(i.kind!==`active`||i.reachable===!0){n();return}if(Date.now()-t>dt){n();return}this.probeTimer=setTimeout(()=>void r(),ut)};this.probeTimer=setTimeout(()=>void r(),ut)}startHealthHeartbeat(e){if(this.healthHeartbeatId===e)return;this.cancelHealthHeartbeat(),this.healthHeartbeatId=e;let t=this.healthHeartbeatToken,n=async()=>{t===this.healthHeartbeatToken&&(await this.probeReachability(e),t===this.healthHeartbeatToken&&(this.healthHeartbeatTimer=setTimeout(()=>void n(),ft)))};n()}cancelHealthHeartbeat(){this.healthHeartbeatToken++,this.healthHeartbeatId=null,this.healthHeartbeatTimer&&=(clearTimeout(this.healthHeartbeatTimer),null)}onUnreachable(){this.triggerReachabilityProbe()}triggerReachabilityProbe(){if(this.state.kind!==`active`)return;let e=x.getState().activeAssistantId;if(e){if(this.transition({...this.state,reachable:!1}),this.healthHeartbeatId===e){this.probeReachability(e);return}this.startProbeLoop(e)}}setLocalAssistantUpgradeInProgress(e,t){if(x.getState().activeAssistantId===e){if(!t){this.probeReachability(e);return}if(this.state.kind===`self_hosted`){this.transition({...this.state,health:`upgrading`});return}this.state.kind===`active`&&this.state.isLocal&&this.transition({...this.state,reachable:!1,health:`upgrading`})}}__resetForTesting(){this.initializingTimeout&&=(clearTimeout(this.initializingTimeout),null),this.cancelProbeTimer(),this.cancelHealthHeartbeat(),this.probeLoopAssistantId=null,this.reachabilityProbeInFlightIds.clear(),this.clearErrorRetry(!0),this.state={kind:`loading`},this.generation=0,this.ready=!1,T.setState({expectingFirstMessage:!1,operationalStatusAssistantId:null}),this.inputs={sessionStatus:`initializing`,hasPlatformSession:!1,queryClient:null},T.setState({assistantState:this.state}),x.setState({activeAssistantId:null})}setOperationalStatusAssistantId(e){T.getState().operationalStatusAssistantId!==e&&T.setState({operationalStatusAssistantId:e})}};function ht(e){let{assistants:t,selectedAssistantId:n,assistantsHydrated:r}=x.getState(),i=be(t,e),a=e=>i.some(t=>t.id===e);if(n!==null){let e=t.some(e=>e.id===n);if(a(n)||!e&&!r)return n}let o=de()?.assistantId??null;return o!==null&&a(o)?o:i[0]?.id??null}async function O(e){x.getState().setSelectedAssistant(e),e!==null&&await ye(e)}var gt={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)};Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`});function _t({onRequest:e,onSseError:t,onSseEvent:n,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:a,sseMaxRetryAttempts:o,sseMaxRetryDelay:s,sseSleepFn:c,url:l,...u}){let d,f=c??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let c=a??3e3,p=0,m=u.signal??new AbortController().signal;for(;!m.aborted;){p++;let a=u.headers instanceof Headers?u.headers:new Headers(u.headers);d!==void 0&&a.set(`Last-Event-ID`,d);try{let t={redirect:`follow`,...u,body:u.serializedBody,headers:a,signal:m},o=new Request(l,t);e&&(o=await e(l,t));let s=await(u.fetch??globalThis.fetch)(o);if(!s.ok)throw Error(`SSE failed: ${s.status} ${s.statusText}`);if(!s.body)throw Error(`No body in SSE response`);let f=s.body.pipeThrough(new TextDecoderStream).getReader(),p=``,h=()=>{try{f.cancel()}catch{}};m.addEventListener(`abort`,h);try{for(;;){let{done:e,value:t}=await f.read();if(e)break;p+=t,p=p.replace(/\r\n?/g,`
|
|
3
|
-
`);let a=p.split(`
|
|
4
|
-
|
|
5
|
-
`);p=a.pop()??``;for(let e of a){let t=e.split(`
|
|
6
|
-
`),a=[],o;for(let e of t)if(e.startsWith(`data:`))a.push(e.replace(/^data:\s*/,``));else if(e.startsWith(`event:`))o=e.replace(/^event:\s*/,``);else if(e.startsWith(`id:`))d=e.replace(/^id:\s*/,``);else if(e.startsWith(`retry:`)){let t=Number.parseInt(e.replace(/^retry:\s*/,``),10);Number.isNaN(t)||(c=t)}let s,l=!1;if(a.length){let e=a.join(`
|
|
7
|
-
`);try{s=JSON.parse(e),l=!0}catch{s=e}}l&&(i&&await i(s),r&&(s=await r(s))),n?.({data:s,event:o,id:d,retry:c}),a.length&&(yield s)}}}finally{m.removeEventListener(`abort`,h),f.releaseLock()}break}catch(e){if(t?.(e),o!==void 0&&p>=o)break;await f(Math.min(c*2**(p-1),s??3e4))}}}()}}var vt=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},yt=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},bt=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},xt=({allowReserved:e,explode:t,name:n,style:r,value:i})=>{if(!t){let t=(e?i:i.map(e=>encodeURIComponent(e))).join(yt(r));switch(r){case`label`:return`.${t}`;case`matrix`:return`;${n}=${t}`;case`simple`:return t;default:return`${n}=${t}`}}let a=vt(r),o=i.map(t=>r===`label`||r===`simple`?e?t:encodeURIComponent(t):St({allowReserved:e,name:n,value:t})).join(a);return r===`label`||r===`matrix`?a+o:o},St=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},Ct=({allowReserved:e,explode:t,name:n,style:r,value:i,valueOnly:a})=>{if(i instanceof Date)return a?i.toISOString():`${n}=${i.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(i).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let a=t.join(`,`);switch(r){case`form`:return`${n}=${a}`;case`label`:return`.${a}`;case`matrix`:return`;${n}=${a}`;default:return a}}let o=bt(r),s=Object.entries(i).map(([t,i])=>St({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(o);return r===`label`||r===`matrix`?o+s:s},wt=/\{[^{}]+\}/g,Tt=({path:e,url:t})=>{let n=t,r=t.match(wt);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),a=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),a=`label`):i.startsWith(`;`)&&(i=i.substring(1),a=`matrix`);let o=e[i];if(o==null)continue;if(Array.isArray(o)){n=n.replace(t,xt({explode:r,name:i,style:a,value:o}));continue}if(typeof o==`object`){n=n.replace(t,Ct({explode:r,name:i,style:a,value:o,valueOnly:!0}));continue}if(a===`matrix`){n=n.replace(t,`;${St({name:i,value:o})}`);continue}let s=encodeURIComponent(a===`label`?`.${o}`:o);n=n.replace(t,s)}return n},Et=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=Tt({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o};function Dt(e){let t=e.body!==void 0;if(t&&e.bodySerializer)return`serializedBody`in e?e.serializedBody!==void 0&&e.serializedBody!==``?e.serializedBody:null:e.body===``?null:e.body;if(t)return e.body}var Ot=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},kt=({parameters:e={},...t}={})=>n=>{let r=[];if(n&&typeof n==`object`)for(let i in n){let a=n[i];if(a==null)continue;let o=e[i]||t;if(Array.isArray(a)){let e=xt({allowReserved:o.allowReserved,explode:!0,name:i,style:`form`,value:a,...o.array});e&&r.push(e)}else if(typeof a==`object`){let e=Ct({allowReserved:o.allowReserved,explode:!0,name:i,style:`deepObject`,value:a,...o.object});e&&r.push(e)}else{let e=St({allowReserved:o.allowReserved,name:i,value:a});e&&r.push(e)}}return r.join(`&`)},At=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},jt=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1,Mt=async({security:e,...t})=>{for(let n of e){if(jt(t,n.name))continue;let e=await Ot(n,t.auth);if(!e)continue;let r=n.name??`Authorization`;switch(n.in){case`query`:t.query||={},t.query[r]=e;break;case`cookie`:t.headers.append(`Cookie`,`${r}=${e}`);break;default:t.headers.set(r,e);break}}},Nt=e=>Et({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:kt(e.querySerializer),url:e.url}),Pt=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=It(e.headers,t.headers),n},Ft=e=>{let t=[];return e.forEach((e,n)=>{t.push([n,e])}),t},It=(...e)=>{let t=new Headers;for(let n of e){if(!n)continue;let e=n instanceof Headers?Ft(n):Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t},Lt=class{fns=[];clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e==`number`?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let n=this.getInterceptorIndex(e);return this.fns[n]?(this.fns[n]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}},Rt=()=>({error:new Lt,request:new Lt,response:new Lt}),zt=kt({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),Bt={"Content-Type":`application/json`},Vt=(e={})=>({...gt,headers:Bt,parseAs:`auto`,querySerializer:zt,...e}),k=((e={})=>{let t=Pt(Vt(),e),n=()=>({...t}),r=e=>(t=Pt(t,e),n()),i=Rt(),a=async e=>{let n={...t,...e,fetch:e.fetch??t.fetch??globalThis.fetch,headers:It(t.headers,e.headers),serializedBody:void 0};n.security&&await Mt({...n,security:n.security}),n.requestValidator&&await n.requestValidator(n),n.body!==void 0&&n.bodySerializer&&(n.serializedBody=n.bodySerializer(n.body)),(n.body===void 0||n.serializedBody===``)&&n.headers.delete(`Content-Type`);let r=n;return{opts:r,url:Nt(r)}},o=async e=>{let n=e.throwOnError??t.throwOnError,r=e.responseStyle??t.responseStyle,o,s;try{let{opts:t,url:n}=await a(e),r={redirect:`follow`,...t,body:Dt(t)};o=new Request(n,r);for(let e of i.request.fns)e&&(o=await e(o,t));let c=t.fetch;s=await c(o);for(let e of i.response.fns)e&&(s=await e(s,o,t));let l={request:o,response:s};if(s.ok){let e=(t.parseAs===`auto`?At(s.headers.get(`Content-Type`)):t.parseAs)??`json`;if(s.status===204||s.headers.get(`Content-Length`)===`0`){let n;switch(e){case`arrayBuffer`:case`blob`:case`text`:n=await s[e]();break;case`formData`:n=new FormData;break;case`stream`:n=s.body;break;default:n={};break}return t.responseStyle===`data`?n:{data:n,...l}}let n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`text`:n=await s[e]();break;case`json`:{let e=await s.text();n=e?JSON.parse(e):{};break}case`stream`:return t.responseStyle===`data`?s.body:{data:s.body,...l}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...l}}let u=await s.text(),d;try{d=JSON.parse(u)}catch{}throw d??u}catch(t){let a=t;for(let t of i.error.fns)t&&(a=await t(a,s,o,e));if(a||={},n)throw a;return r===`data`?void 0:{error:a,request:o,response:s}}},s=e=>t=>o({...t,method:e}),c=e=>async t=>{let{opts:n,url:r}=await a(t);return _t({...n,body:n.body,method:e,onRequest:async(e,t)=>{let r=new Request(e,t);for(let e of i.request.fns)e&&(r=await e(r,n));return r},serializedBody:Dt(n),url:r})};return{buildUrl:e=>Nt({...t,...e}),connect:s(`CONNECT`),delete:s(`DELETE`),get:s(`GET`),getConfig:n,head:s(`HEAD`),interceptors:i,options:s(`OPTIONS`),patch:s(`PATCH`),post:s(`POST`),put:s(`PUT`),request:o,setConfig:r,sse:{connect:c(`CONNECT`),delete:c(`DELETE`),get:c(`GET`),head:c(`HEAD`),options:c(`OPTIONS`),patch:c(`PATCH`),post:c(`POST`),put:c(`PUT`),trace:c(`TRACE`)},trace:s(`TRACE`)}})(Vt()),Ht=e=>(e.client??k).get({url:`/_allauth/{client}/v1/auth/provider/signup`,...e}),Ut=e=>(e.client??k).post({url:`/_allauth/{client}/v1/auth/provider/signup`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Wt=e=>(e.client??k).delete({url:`/_allauth/{client}/v1/auth/session`,...e}),Gt=e=>(e.client??k).get({url:`/_allauth/{client}/v1/auth/session`,...e}),Kt=()=>b()?`app`:`browser`;function qt(e){return!e.ok&&e.status===409}function Jt(e,t){let n=e;if(n&&Array.isArray(n.errors))return{ok:!1,status:t,errors:n.errors};let r=n?.data;return r&&Array.isArray(r.flows)?{ok:!1,status:t,errors:[],flows:r.flows}:{ok:!1,status:t,errors:[]}}async function A(){let{data:e,error:t,response:n}=await Gt({path:{client:Kt()}});return e?{ok:!0,data:e.data}:Jt(t,n?.status)}async function Yt(){let{data:e,error:t,response:n}=await Wt({path:{client:Kt()}});return e?{ok:!0,data:e}:n?.status===401?{ok:!0,data:{}}:Jt(t,n?.status)}async function Xt(){let{data:e,error:t,response:n}=await Ht({path:{client:Kt()}});return e?{ok:!0,data:e.data}:Jt(t,n?.status)}async function Zt({email:e,username:t}){let{data:n,error:r,response:i}=await Ut({path:{client:Kt()},body:{email:e,username:t}});return n?{ok:!0,data:n.data}:Jt(r,i?.status)}var Qt=`vellum:auth:userSnapshot`;function $t(e){if(e)try{localStorage.setItem(Qt,JSON.stringify(e))}catch{}}function en(){try{let e=localStorage.getItem(Qt);if(!e)return null;let t=JSON.parse(e);return!t||typeof t!=`object`?null:{id:typeof t.id==`string`?t.id:null,username:typeof t.username==`string`?t.username:null,email:typeof t.email==`string`?t.email:null,isStaff:t.isStaff===!0,firstName:typeof t.firstName==`string`?t.firstName:``,lastName:typeof t.lastName==`string`?t.lastName:``}}catch{return null}}function tn(){try{localStorage.removeItem(Qt)}catch{}}var j;function M(){return b()?(j===void 0&&(j=window.vellum?.auth?.getSessionToken?.()??null),j):null}function nn(e){j=e}var rn=`__Secure-csrftoken`;function N(){return document.cookie.split(`; `).findLast(e=>e.startsWith(`${rn}=`))?.split(`=`).slice(1).join(`=`)}function an(){document.cookie.split(`; `).filter(e=>e.startsWith(`${rn}=`)).length>1&&(document.cookie=`${rn}=; path=/; max-age=0; secure`)}var on=null;async function sn(){b()||g()||(an(),!N()&&(on||=(async()=>{for(let e=0;e<2;e++)try{if(await Gt({path:{client:`browser`}}),N())return}catch{console.warn(`CSRF cookie bootstrap failed (attempt ${e+1}/2)`),e===0&&await new Promise(e=>setTimeout(e,500))}})().finally(()=>{on=null}),await on))}var cn=`vellum_active_organization_id`;function ln(){return globalThis.sessionStorage===void 0?null:globalThis.sessionStorage}function un(){let e=ln();if(!e)return null;try{return e.getItem(cn)}catch{return null}}function dn(e){let t=ln();if(t)try{t.setItem(cn,e)}catch{}}function fn(){let e=ln();if(e)try{e.removeItem(cn)}catch{}}function pn(e,t){return e.length===0?null:t&&e.some(e=>e.id===t)?t:e[0].id}var P=m(p()((e,t)=>({organizations:[],currentOrganizationId:null,status:`idle`,error:null,fetchOrganizations:async()=>{e({status:`loading`,error:null});try{let n=(await Te()).data?.results??[],r=pn(n,t().currentOrganizationId??un());r&&dn(r),e({organizations:n,currentOrganizationId:r,status:r?`ready`:`error`,error:r?null:`No organization available for this user.`})}catch(t){e({status:`error`,error:t instanceof Error&&t.message?t.message:`Failed to load organizations.`})}},setCurrentOrganizationId:n=>{let{organizations:r}=t();r.some(e=>e.id===n)&&(dn(n),e({currentOrganizationId:n,status:`ready`}))},clearOrganization:()=>{fn(),e({organizations:[],currentOrganizationId:null,status:`idle`,error:null})}})));function F(){return P.getState().currentOrganizationId??un()}function mn(){P.getState().clearOrganization()}function hn(){let e=0,t=P.subscribe(t=>{(t.status===`ready`||t.status===`error`)&&(e=Date.now())}),n=$.subscribe((e,t)=>{let n=D(e.platformSession),r=D(t.platformSession);n&&(!r||e.user?.id!==t.user?.id)&&P.getState().fetchOrganizations()}),r=()=>{if(!D($.getState().platformSession))return;let{status:t}=P.getState();(t===`ready`||t===`error`)&&Date.now()-e>1e4&&P.getState().fetchOrganizations()},i=Oe(`app.resume`,()=>{r()});return()=>{t(),n(),i()}}function gn(e,t={}){let n={...e??{}},r=t.includeSelfHostedActorToken===!1?null:ie();if(r)return n.Authorization=`Bearer ${r}`,n;let i=t.organizationId??F();i&&(n[`Vellum-Organization-Id`]=i);let a=M();return a&&(n[`X-Session-Token`]=a),n}async function _n(e,t={}){let n=gn(e,t);if(n.Authorization||b())return n;await sn();let r=N();return r&&(n[`X-CSRFToken`]=r),n}var vn;function yn(){return b()?(vn===void 0&&(vn=window.__VELLUM_CONFIG__?.deviceId??null),vn):null}var bn=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,xn=`X-Vellum-Electron-Renderer-Origin`,Sn=new Map;async function Cn(e,t={}){if(!_()||v()||ue()||Rn(e))return e;let n=Tn(e);if(!n)return e;let r=Sn.get(n.assistantId);if(r)return r;let i=En(n,{allowGatewayRepair:t.allowGatewayRepair??!0});Sn.set(n.assistantId,i);try{return await i}catch(e){throw Sn.delete(n.assistantId),e}}function wn(e,t={}){if(!_()||v()||ue())return;let n=e;if(!n){let e=oe();if(!e||!se(e))return;n=e.assistantId}Cn(n,{allowGatewayRepair:t.allowGatewayRepair??!1}).catch(t.onError??(e=>{console.warn(`local assistant platform bootstrap failed`,e)}))}function Tn(e){let t=de();if(t?.assistantId===e&&se(t))return t;let n=oe();return n?.assistantId===e&&se(n)?n:null}async function En(e,t){let n=await Dn(e,t),r=await On(n,e.assistantId),i=r?.assistantId&&Rn(r.assistantId)?r.assistantId:null;if(i&&r?.hasAssistantApiKey!==!1)return i;let a=await kn(r?.organizationId??null,e);if(!a)throw Error(`Sign in to Vellum and select an organization to register this local assistant.`);let o=await An(e,a),s=zn(o.assistant?.id,o.assistant_id,o.id),c=i??s;if(!c||!Rn(c))throw Error(`The platform registration response did not include an assistant UUID.`);let l=I(o.assistant_api_key);return!l&&r?.hasAssistantApiKey!==!0&&(l=await jn(e,a)),await Nn(n,{assistantApiKey:l,platformAssistantId:c,platformBaseUrl:ge(),organizationId:a,webhookSecret:I(o.webhook_secret)}),c}async function Dn(e,t){let n=te(),r=ie();if(t.allowGatewayRepair&&(!n||!r)&&(await ve(e),n=te(),r=ie()),!n||!r){let t=le(e);t&&(n=`${window.location.origin}${t}`)}if(!n||!r)throw Error(`Unable to reach the local assistant for platform identity setup.`);return{gatewayUrl:n,actorToken:r}}async function On(e,t){let n=Ln(e.gatewayUrl,`/v1/assistants/${encodeURIComponent(t)}/platform/status`),r=await fetch(n,{headers:{Accept:`application/json`,Authorization:`Bearer ${e.actorToken}`},credentials:`omit`}).catch(()=>null);if(!r?.ok)return null;let i=await r.json().catch(()=>null);return{assistantId:zn(i?.assistantId,i?.assistant_id),organizationId:zn(i?.organizationId,i?.organization_id),hasAssistantApiKey:Bn(i?.hasAssistantApiKey,i?.has_assistant_api_key)}}async function kn(e,t){return(e??F()??t.organizationId??null)||(await P.getState().fetchOrganizations().catch(()=>{}),F()??t.organizationId??null)}async function An(e,t){return await Mn(`/v1/assistants/self-hosted-local/ensure-registration/`,e,t)}async function jn(e,t){return I((await Mn(`/v1/assistants/self-hosted-local/reprovision-api-key/`,e,t)).provisioning?.assistant_api_key)}async function Mn(e,t,n){let r=yn();if(!r)throw Error(`Unable to identify this device for local assistant platform registration.`);let i=new Headers({...await _n({Accept:`application/json`,"Content-Type":`application/json`},{includeSelfHostedActorToken:!1,organizationId:n})}),a=M();if(b()){if(!a)throw Error(`Sign in to Vellum to register this local assistant.`);i.set(xn,`${window.location.protocol}//${window.location.host}`)}let o=await fetch(new URL(e,window.location.origin).toString(),{method:`POST`,headers:i,credentials:b()?`omit`:`same-origin`,body:JSON.stringify({client_installation_id:r,runtime_assistant_id:t.assistantId,client_platform:`macos`})}).catch(e=>{throw Error(`Unable to reach the platform registration endpoint: ${In(e)}`)});if(!o.ok){let e=await Fn(o);throw Error(`Unable to register the local assistant with the platform (HTTP ${o.status})${e?`: ${e}`:`.`}`)}try{return await o.json()}catch(e){throw Error(`Unable to read the platform registration response: ${In(e)}`)}}async function Nn(e,t){let n=[[`vellum:assistant_api_key`,t.assistantApiKey],[`vellum:platform_assistant_id`,t.platformAssistantId],[`vellum:platform_base_url`,t.platformBaseUrl],[`vellum:platform_organization_id`,t.organizationId],[`vellum:webhook_secret`,t.webhookSecret]];await Promise.all(n.filter(e=>!!e[1]).map(([t,n])=>Pn(e,t,n)))}async function Pn(e,t,n){let r=await fetch(Ln(e.gatewayUrl,`/v1/secrets`),{method:`POST`,headers:{Accept:`application/json`,Authorization:`Bearer ${e.actorToken}`,"Content-Type":`application/json`},credentials:`omit`,body:JSON.stringify({type:`credential`,name:t,value:n})}).catch(e=>{throw Error(`Unable to reach the local assistant while storing ${t}: ${In(e)}`)});if(!r.ok){let e=await Fn(r);throw Error(`Unable to store ${t} on the local assistant (HTTP ${r.status})${e?`: ${e}`:`.`}`)}return!0}async function Fn(e){if((e.headers.get(`content-type`)??``).includes(`application/json`)){let t=await e.json().catch(()=>null),n=t&&typeof t==`object`&&`detail`in t?I(t.detail):null,r=t&&typeof t==`object`&&`code`in t?I(t.code):null;return n&&r?`${n} (${r})`:n||r||JSON.stringify(t)}return(await e.text().catch(()=>``)).slice(0,300)}function In(e){return e instanceof Error?e.message:String(e)}function Ln(e,t){let n=new URL(e);return n.pathname=`${n.pathname.replace(/\/$/,``)}${t}`,n.toString()}function Rn(e){return bn.test(e)}function zn(...e){for(let t of e){let e=I(t);if(e)return e}return null}function I(e){return typeof e==`string`&&e.trim()?e.trim():null}function Bn(...e){for(let t of e)if(typeof t==`boolean`)return t;return null}var Vn=`/_allauth/browser/v1/auth/provider/redirect`;function Hn(e,t,n,r={}){let i={provider:e,callback_url:new URL(t,n).href,process:`login`};return r.intent&&(i.intent=r.intent),r.loginHint&&(i.login_hint=r.loginHint),r.providerHint&&(i.provider_hint=r.providerHint),i}function Un(e){if(!e)throw Error(`Unable to start provider redirect: CSRF token is missing. The session may not be initialized. Please refresh the page and try again.`)}async function Wn(e,t,n={}){await sn();let r=N();Un(r);let i=window.location.origin,a=document.createElement(`form`);a.method=`POST`,a.action=`${i}${Vn}`;let o=Hn(e,t,i,n);o.csrfmiddlewaretoken=r;for(let[e,t]of Object.entries(o)){let n=document.createElement(`input`);n.type=`hidden`,n.name=e,n.value=t,a.appendChild(n)}document.body.appendChild(a),a.submit()}function Gn(e,t){return e?{kind:`authenticated`}:t.some(e=>e.id===`provider_signup`&&e.is_pending)?{kind:`provider_signup`}:{kind:`error`,message:`Unexpected authentication state.`}}var Kn=`https://www.vellum.ai`,qn=`vellum:loopback:state`,Jn=`vellum:loopback:returnTo`;function Yn(){let e=window.__VELLUM_CONFIG__;return e?.webUrl?{webUrl:e.webUrl}:{webUrl:Kn}}function Xn(){let e=new Uint8Array(32);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function Zn(){return Yn().webUrl===window.location.origin}async function Qn(e,t){let{webUrl:n}=Yn(),r=Xn(),i=window.location.port||`3000`;sessionStorage.setItem(qn,r),e&&sessionStorage.setItem(Jn,e);let a=`/accounts/cli/callback?port=${i}&state=${r}`,o=`${n}/account/${t?.intent===`signup`?`signup`:`login`}?returnTo=${encodeURIComponent(a)}`;window.location.href=o}async function $n(e){b()&&await window.vellum?.menu.setPlatformSession(e)}var er=e(u(),1),tr=je(`NativeAuth`),nr=Ne.assistant,rr=!1;function ir(){return rr}function ar(){return`${window.location.protocol}//${window.location.host}`}function L(){return typeof window<`u`&&Me.isNativePlatform()}var or=()=>()=>{};function sr(){return(0,er.useSyncExternalStore)(or,L,()=>!1)}async function cr(e){let t=e?.baseURL??ar(),{sessionToken:n}=await tr.startAuth({baseURL:t,...e?.loginHint?{loginHint:e.loginHint}:{},...e?.providerHint?{providerHint:e.providerHint}:{},...e?.intent?{intent:e.intent}:{}});ur(n),L()&&await lr(),vr()&&await hr(n);let r=Ae(e?.returnTo??null,nr);window.location.href=r}async function lr(){for(let e=0;e<6;e++){try{let e=await A();if(e.ok&&e.data.user)return}catch{}await new Promise(t=>setTimeout(t,50*(e+1)))}}function ur(e){let t=`path=/; domain=.vellum.ai; secure; samesite=lax; max-age=1209600`;document.cookie=`sessionid=${e}; ${t}`,document.cookie=`__Secure-sessionid=${e}; ${t}`}function dr(){if(typeof document>`u`)return null;let e=document.cookie.split(`; `);for(let t of[`__Secure-sessionid`,`sessionid`]){let n=e.find(e=>e.startsWith(`${t}=`));if(n){let e=n.slice(t.length+1);if(e)return e}}return null}async function fr(e,t,n={}){if(L()){try{await cr({returnTo:n.intent===`signup`?Ne.onboarding.privacy:n.returnTo??null,loginHint:n.loginHint,providerHint:n.providerHint,intent:n.intent})}catch(e){if(e?.code===`USER_CANCELLED`)return;throw e}return}if(b()&&window.vellum?.auth?.startOAuth){rr=!0;try{let e=await window.vellum.auth.startOAuth({providerHint:n.providerHint,loginHint:n.loginHint,intent:n.intent});if(e?.sessionToken){nn(e.sessionToken),await $n(!0);let t=Ae(n.intent===`signup`?Ne.onboarding.privacy:n.returnTo??null,nr);window.location.href=t}}finally{rr=!1}return}if(_()&&!Zn()){await Qn(n.returnTo??void 0,{intent:n.intent});return}await Wn(e,t,n)}var R=je(`NativeBiometric`),pr=`vellum.ai`;async function mr(){if(!L())return!1;try{let{available:e}=await R.isAvailable();return e}catch{return!1}}async function hr(e){if(!await mr())return!1;try{return await R.storeToken({token:e,server:pr}),!0}catch(e){return console.error(`[native-biometric] failed to store token:`,e),!1}}var z=null;async function gr(){return L()?z||(z=(async()=>{try{let{token:e}=await R.retrieveToken({server:pr,reason:`Sign in to Vellum`});return e}catch{return null}finally{z=null}})(),z):null}async function _r(){if(L())try{await R.deleteToken({server:pr})}catch{}}function vr(){return o(`biometricEnabled`,!0)}function yr(e){a(`biometricEnabled`,e)}async function br(){if(!L())return`Biometrics`;try{let{biometryType:e}=await R.isAvailable();switch(e){case`faceId`:return`Face ID`;case`touchId`:return`Touch ID`;case`opticId`:return`Optic ID`;default:return`Biometrics`}}catch{return`Biometrics`}}var xr=`.dev`;function Sr(e){let t=JSON.parse(e);return typeof t.token==`string`&&typeof t.bundleId==`string`&&typeof t.assistantId==`string`?{token:t.token,bundleId:t.bundleId,assistantId:t.assistantId}:null}var Cr=Pe({key:`vellum:push_registration`,scope:`user`,parse:Sr,serialize:JSON.stringify,fallback:null}),wr=!1,Tr=null,B=null,Er=new Set;function Dr(e){Er.add(e),e.finally(()=>{Er.delete(e)})}function Or(){return L()&&Me.getPlatform()===`ios`}function kr(e){return e.endsWith(xr)?`development`:`production`}async function Ar(e,t){try{let{App:n}=await d(async()=>{let{App:e}=await import(`./esm-D2xhPoyM.js`);return{App:e}},__vite__mapDeps([0,1,2])),{id:r}=await n.getInfo(),i=await we({path:{assistant_id:t},body:{token:e,platform:`ios`,bundle_id:r,apns_environment:kr(r)},throwOnError:!1});if(i.error){l(i.error,{context:`push_registration_upsert`,level:`warning`,bestEffort:!0});return}B={token:e,bundleId:r,assistantId:t},Cr.save(B)}catch(e){l(e,{context:`push_registration_upsert`,level:`warning`,bestEffort:!0})}}async function jr(){if(!wr){wr=!0;try{let{PushNotifications:e}=await d(async()=>{let{PushNotifications:e}=await import(`./esm-BtN-afz9.js`);return{PushNotifications:e}},__vite__mapDeps([3,2]));await e.addListener(`registration`,e=>{let t=Tr;t&&Dr(Ar(e.value,t))}),await e.addListener(`registrationError`,e=>{l(e,{context:`push_registration_apns`,level:`warning`})})}catch(e){wr=!1,l(e,{context:`push_registration_listeners`,level:`warning`})}}}async function Mr(e){if(Or()){Tr=e,B&&B.assistantId!==e&&Dr(Ar(B.token,e));try{let{PushNotifications:e}=await d(async()=>{let{PushNotifications:e}=await import(`./esm-BtN-afz9.js`);return{PushNotifications:e}},__vite__mapDeps([3,2]));if(await jr(),(await e.requestPermissions()).receive!==`granted`)return;await e.register()}catch(e){l(e,{context:`push_registration_register`,level:`warning`})}}}async function Nr(){for(Tr=null;Er.size>0;)await Promise.allSettled([...Er]);let e=B??Cr.load();if(B=null,Cr.remove(),!(!e||!Or()))try{let t=await Ce({path:{assistant_id:e.assistantId,token:e.token},query:{bundle_id:e.bundleId},throwOnError:!1});t.error&&l(t.error,{context:`push_registration_delete`,level:`warning`,bestEffort:!0,extra:{assistantId:e.assistantId,bundleId:e.bundleId}})}catch(e){l(e,{context:`push_registration_delete`,level:`warning`,bestEffort:!0})}}function Pr(e){return e}function Fr(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return{code:null,message:n};let r=Pr(e),i=r[t];if(Array.isArray(i)&&i.length>0){let e=i[0];if(typeof e==`string`)return{code:null,message:e};if(e&&typeof e==`object`&&!Array.isArray(e)){let t=Pr(e),r=t.code,i=t.string??t.message;return{code:typeof r==`string`?r:null,message:typeof i==`string`?i:n}}}return typeof r.detail==`string`?{code:null,message:r.detail}:{code:null,message:n}}var Ir={too_short:`Must be at least 3 characters.`,too_long:`Must be at most 30 characters.`,invalid_chars:`Use only lowercase letters, digits, hyphens, and underscores.`,leading_underscore:`Cannot start with an underscore.`,trailing_underscore:`Cannot end with an underscore.`,leading_hyphen:`Cannot start with a hyphen.`,trailing_hyphen:`Cannot end with a hyphen.`,all_digits:`Cannot be all digits.`,reserved:`This handle is reserved.`,taken:`This handle is already taken.`};async function Lr(){let{data:e,error:t,response:n}=await C.get({url:`/v1/user/me/`,throwOnError:!1});if(xe(n,t,`Failed to load profile.`),!n.ok||!e)throw new Se(n.status,S(t,n,`Failed to load profile.`));return e}var Rr=`Please choose a different handle.`;async function zr(e){let{data:t,error:n,response:r}=await C.patch({url:`/v1/user/me/`,body:e,throwOnError:!1});if(!r)return{kind:`error`,message:S(n,void 0,`Failed to save profile.`)??`Failed to save profile.`};if(r.ok&&t)return{kind:`ok`,data:t};if(r.status===409){let{message:e}=Fr(n,`username`,Ir.taken);return{kind:`taken`,message:e}}if(r.status===400){let{code:e,message:t}=Fr(n,`username`,Rr);return{kind:`invalid`,code:e,message:t}}return{kind:`error`,message:S(n,r,`Failed to save profile.`)}}async function Br(){let{data:e,error:t,response:n}=await C.get({url:`/v1/user/consent/`,throwOnError:!1});if(xe(n,t,`Failed to load consent.`),!n.ok||!e)throw new Se(n.status,S(t,n,`Failed to load consent.`));return e}async function Vr(e){await C.put({url:`/v1/user/consent/`,body:e,throwOnError:!0})}async function Hr(e,t){let{data:n,error:r,response:i}=await C.get({url:`/v1/user/username-available/`,query:{username:e},signal:t,throwOnError:!1});if(xe(i,r,`Failed to check handle availability.`),!i.ok||!n)throw new Se(i.status,i.status===429?`Too many checks — try again in a moment.`:S(r,i,`Failed to check handle availability.`));return n}function V(e){a(`diagnosticsReporting`,e)}function Ur(e,t){let n=Wr(e);n!==null&&t(n);let{shareDiagnostics:r,diagnosticsVersionCurrent:i,hasServerRecord:a}=e;return V(a&&r===!0&&i),n}function Wr(e){let{shareDiagnostics:t,hasServerRecord:n}=e;return t===!1?!1:n&&t===!0?!0:null}var Gr=s(`shareAnalytics`),Kr=s(`shareDiagnostics`),qr=p()(e=>({shareAnalytics:i(Gr,!0),shareDiagnostics:i(Kr,!0),tosAccepted:!1,privacyConsent:!1,analyticsConsentCurrent:!1,diagnosticsConsentCurrent:!1,setShareAnalytics:n=>{e({shareAnalytics:n}),t(Gr,n)},setShareDiagnostics:n=>{e({shareDiagnostics:n}),t(Kr,n)},setTosAccepted:t=>{e({tosAccepted:t})},setPrivacyConsent:t=>{e({privacyConsent:t})},setAnalyticsConsentCurrent:t=>{e({analyticsConsentCurrent:t})},setDiagnosticsConsentCurrent:t=>{e({diagnosticsConsentCurrent:t})}})),H=m(qr),Jr=new Map([[Gr,`shareAnalytics`],[Kr,`shareDiagnostics`]]),Yr={shareAnalytics:!0,shareDiagnostics:!0};for(let[e,t]of Jr)n(e,()=>{let n=i(e,Yr[t]??!1);qr.setState({[t]:n})});var U=`2026-06-08`,W=`2026-06-22`,Xr=`2026-06-18`,Zr=`2026-06-18`,Qr=`2026-06-08`,$r={tos:U,privacy:W,share_analytics:Xr,share_diagnostics:Zr};function G(e,t){return`device:consent:${e}:v${$r[e]}:${t}`}function ei(e){return`device:consent:ai:v${Qr}:${e}`}function ti(e){if(typeof window>`u`||!e)return{tos:!1,privacy:!1,analyticsCurrent:!1,diagnosticsCurrent:!1};try{let t=i(G(`share_analytics`,e),!1),n=i(G(`share_diagnostics`,e),!1),a=i(G(`tos`,e),!1),o=i(G(`privacy`,e),!1);if(i(ei(e),!1)&&r(ei(e)),a||o)return{tos:a,privacy:o,analyticsCurrent:t,diagnosticsCurrent:n};let s=i(`vellum:onboarding:tosAccepted`,!1),c=i(`vellum:onboarding:aiDataConsent`,!1);return s||c?(ni(e,s,!1),{tos:s,privacy:!1,analyticsCurrent:t,diagnosticsCurrent:n}):{tos:!1,privacy:!1,analyticsCurrent:t,diagnosticsCurrent:n}}catch{return{tos:!1,privacy:!1,analyticsCurrent:!1,diagnosticsCurrent:!1}}}function ni(e,n,r){if(!(typeof window>`u`||!e))try{t(G(`tos`,e),n),t(G(`privacy`,e),r)}catch{}}function ri(e,n){if(!(typeof window>`u`||!e))try{n.analyticsCurrent!==void 0&&t(G(`share_analytics`,e),n.analyticsCurrent),n.diagnosticsCurrent!==void 0&&t(G(`share_diagnostics`,e),n.diagnosticsCurrent)}catch{}}function ii(e){if(r(`vellum:onboarding:tosAccepted`),r(`vellum:onboarding:aiDataConsent`),r(`vellum:onboarding:selectedVersion`),!(typeof window>`u`||!e))try{r(G(`tos`,e)),r(G(`privacy`,e)),r(ei(e)),r(G(`share_analytics`,e)),r(G(`share_diagnostics`,e))}catch{}}function K(e,t){return e>=t}function ai(e){if(!e)return{tos:!1,privacy:!1,shareAnalytics:null,shareDiagnostics:null,analyticsCurrent:!1,diagnosticsCurrent:!1,hasServerRecord:!1};let t=!!e.tos_accepted_version||!!e.privacy_policy_accepted_version||!!e.ai_data_sharing_accepted_version||!!e.share_analytics_accepted_version||!!e.share_diagnostics_accepted_version||e.share_analytics===!1||e.share_diagnostics===!1;return{tos:K(e.tos_accepted_version,U),privacy:K(e.privacy_policy_accepted_version,`2026-06-22`)&&K(e.ai_data_sharing_accepted_version,`2026-06-22`),shareAnalytics:e.share_analytics,shareDiagnostics:e.share_diagnostics,analyticsCurrent:K(e.share_analytics_accepted_version,Xr),diagnosticsCurrent:K(e.share_diagnostics_accepted_version,Zr),hasServerRecord:t}}function oi(e){let t=H.getState();t.setTosAccepted(e.tos),t.setPrivacyConsent(e.privacy),t.setShareAnalytics(e.shareAnalytics),t.setShareDiagnostics(e.shareDiagnostics),t.setAnalyticsConsentCurrent(!0),t.setDiagnosticsConsentCurrent(!0),V(e.shareDiagnostics),ni(e.userId,e.tos,e.privacy),ri(e.userId,{analyticsCurrent:!0,diagnosticsCurrent:!0}),e.hasPlatformSession&&Vr({tos_accepted_version:e.tos?U:``,privacy_policy_accepted_version:e.privacy?W:``,ai_data_sharing_accepted_version:e.privacy?W:``,share_analytics:e.shareAnalytics,share_diagnostics:e.shareDiagnostics,share_analytics_accepted_version:Xr,share_diagnostics_accepted_version:Zr}).catch(()=>{})}function si(e,t,n){let r=H.getState(),{userId:i,hasPlatformSession:o}=n;e===`share_analytics`?(r.setShareAnalytics(t),a(`shareAnalytics`,t),o&&(r.setAnalyticsConsentCurrent(!0),ri(i,{analyticsCurrent:!0}))):(r.setShareDiagnostics(t),a(`shareDiagnostics`,t),o?(r.setDiagnosticsConsentCurrent(!0),V(t),ri(i,{diagnosticsCurrent:!0})):V(!1)),o&&Vr({[e]:t,[`${e}_accepted_version`]:$r[e]}).catch(()=>{})}var ci=`vellum:`,li=[`onboarding.`,`voice:`,`gw:`,`ff:client:`,`local:`,`integrations.`,`vellumDebug.`,`vellum_`],ui=new Set([`vellum_theme`,`vellum_share_analytics`,`vellum_share_diagnostics`,`vellum_biometric_enabled`,`vellum_llm_log_retention`,`vellum_timezone`,`vellum_media_embeds_enabled`,`vellum_media_embed_domains`,`onboarding.lastUserId`]);function di(e){return e.startsWith(ci)?!0:ui.has(e)?!1:li.some(t=>e.startsWith(t))}function fi(){try{sessionStorage.clear()}catch{}try{let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&di(n)&&e.push(n)}e.forEach(e=>localStorage.removeItem(e))}catch{}}function pi(e){return e?.id??e?.email??e?.username??null}function q(e){return e?{id:pi(e),username:e.username??null,email:e.email??null,isStaff:e.is_staff??!1,firstName:e.first_name??``,lastName:e.last_name??``}:null}var mi=null,J=null,hi=!1,gi={id:`gateway-local`,username:`local`,email:null,isStaff:!1,firstName:`Local`,lastName:`User`},Y=e=>($t(e),{sessionStatus:`authenticated`,user:e,platformSession:`present`,platformSessionRestoredOffline:!1}),X=()=>({sessionStatus:`authenticated`,user:gi}),Z=()=>({sessionStatus:`unauthenticated`,user:null,platformSession:`absent`}),_i=e=>e===null||!e.ok&&!lt(e);async function vi(e){if(!M())return!1;let t=en();return t?(await Q(t.id),e({...Y(t),platformSessionRestoredOffline:!0}),!0):!1}function yi(e){(!e||mi&&mi!==e)&&mn(),mi=e}function bi(){J?.postMessage(`auth-changed`)}async function Q(e){if(e)try{let t=ai(await Br()),n=H.getState();t.hasServerRecord&&t.shareAnalytics!==null&&n.setShareAnalytics(t.shareAnalytics),Ur({shareDiagnostics:t.shareDiagnostics,diagnosticsVersionCurrent:t.diagnosticsCurrent,hasServerRecord:t.hasServerRecord},n.setShareDiagnostics);let r=t.tos,i=t.privacy,a=t.analyticsCurrent,o=t.diagnosticsCurrent;if(!t.hasServerRecord){let t=ti(e);a=t.analyticsCurrent,o=t.diagnosticsCurrent,V(n.shareDiagnostics&&o),t.tos&&t.privacy&&(r=!0,i=!0,Vr({tos_accepted_version:U,privacy_policy_accepted_version:W,ai_data_sharing_accepted_version:W,...a?{share_analytics_accepted_version:Xr,share_analytics:n.shareAnalytics}:{},...o?{share_diagnostics_accepted_version:Zr,share_diagnostics:n.shareDiagnostics}:{}}).catch(()=>{}))}n.setTosAccepted(r),n.setPrivacyConsent(i),n.setAnalyticsConsentCurrent(a),n.setDiagnosticsConsentCurrent(o),ni(e,r,i),ri(e,{analyticsCurrent:a,diagnosticsCurrent:o}),yi(e);return}catch{}let t=ti(e),n=H.getState();n.setTosAccepted(t.tos),n.setPrivacyConsent(t.privacy),n.setAnalyticsConsentCurrent(t.analyticsCurrent),n.setDiagnosticsConsentCurrent(t.diagnosticsCurrent),yi(e)}var xi=0;Promise.resolve();function Si(e,t={}){let n=++xi,r=()=>n!==xi;A().then(async n=>{if(!r())if(n.ok&&n.data.user){let i=q(n.data.user),a=t.setUserOnSuccess?{user:i}:{};if(t.setUserOnSuccess&&$t(i),_()){let e=!1,t=()=>!e&&!r();try{await Promise.race([(async()=>{await P.getState().fetchOrganizations();let e=await w();t()&&e.ok&&await ne(e.data,P.getState().currentOrganizationId??void 0,t)})(),new Promise((t,n)=>setTimeout(()=>{e=!0,n(Error(`sync timeout`))},3e3))])}catch{}}if(r())return;e({platformSession:`present`,platformSessionRestoredOffline:!1,...a}),wn()}else t.clearOnFailure&&e({platformSession:`absent`})}).catch(()=>{r()||t.clearOnFailure&&e({platformSession:`absent`})}).finally(()=>{r()||e(e=>e.platformSession===`unknown`?{platformSession:`absent`}:{})})}function Ci(e,t){!_()||y()||pe().length>0?Si(e,t):e({platformSession:`absent`})}async function wi(){try{if(await ke())return!0}catch{}return fe()!==null}var $=m(p()((e,t)=>({sessionStatus:`initializing`,user:null,platformSession:`unknown`,platformSessionRestoredOffline:!1,initSession:async()=>{if(v()){await wi()?e({...X(),platformSession:`absent`}):e(Z());return}if(y()){try{await ae(),e(X())}catch{e({sessionStatus:`unauthenticated`,user:null})}Ci(e);return}if(_()&&!y()){if(pe().length>0){let t=null;try{if(t=await A(),t.ok&&t.data.user){let n=q(t.data.user);await Q(n?.id??null);try{await P.getState().fetchOrganizations();let e=await w();e.ok&&await ne(e.data,P.getState().currentOrganizationId??void 0)}catch{}e(Y(n));return}}catch{}if(_i(t)){if(await vi(e))return}else tn();e(Z());return}e(X()),hi?e({platformSession:`absent`}):Si(e,{setUserOnSuccess:!0}),hi=!1;return}let t=null;try{if(t=await A(),t.ok&&t.data.user){let n=q(t.data.user);await Q(n?.id??null);try{await P.getState().fetchOrganizations();let e=await w();e.ok&&x.getState().setFromApi(e.data)}catch{}e(Y(n));return}}catch(e){console.error(`auth.initSession failed`,e)}if(!(_i(t)&&await vi(e))){if(L()&&vr())try{let t=await gr();if(t){ur(t),await lr();let n=await A();if(n.ok&&n.data.user){let t=q(n.data.user);await Q(t?.id??null);try{await P.getState().fetchOrganizations();let e=await w();e.ok&&x.getState().setFromApi(e.data)}catch{}e(Y(t));return}}}catch(e){console.warn(`auth.initSession biometric recovery failed`,e)}await Q(null),_i(t)||tn(),e(Z())}},connectLocalAssistant:async n=>{await ve(me().find(e=>e.assistantId===n)),await O(n),e(X()),await mt.checkAssistant(),st(t().platformSession,t().platformSessionRestoredOffline)&&wn(n),Ci(e)},connectPlatformAssistant:async t=>{await O(t);let n=await A();if(!n.ok||!n.data.user)throw Error(`Platform authentication required`);let r=q(n.data.user);await Q(r?.id??null),await P.getState().fetchOrganizations(),e(Y(r))},refreshSession:async()=>{if(v())return await wi()?(e({...X(),platformSession:`absent`}),!0):(e(Z()),!1);if(g()){try{await _e(he()),e({sessionStatus:`authenticated`})}catch{return e(Z()),!1}return Ci(e,{clearOnFailure:!0}),!0}let n=null;try{if(n=await A(),n.ok&&n.data.user){let t=q(n.data.user);if(await Q(t?.id??null),_())try{await P.getState().fetchOrganizations();let e=await w();e.ok&&await ne(e.data,P.getState().currentOrganizationId??void 0)}catch{}return e(Y(t)),!0}}catch(e){console.warn(`auth.refreshSession failed`,e)}if(_i(n))return E(t().sessionStatus);if(y()){let n=E(t().sessionStatus);return n&&(tn(),e({...X(),platformSession:`absent`})),n}return tn(),await Q(null),e(Z()),!1},logout:async()=>{if(g()){mt.resetForLogout(),await O(null),ce(),mn(),fi(),e(Z()),bi();return}hi=!0,await Nr();try{await Yt()}finally{b()&&await window.vellum?.auth?.signOut?.(),_()&&!b()&&await ee(),_r(),mn(),fi(),mt.resetForLogout(),await O(null),e(Z()),bi()}}}))),Ti=()=>E($.use.sessionStatus()),Ei=()=>!ot($.use.sessionStatus()),Di=()=>D($.use.platformSession()),Oi=()=>st($.use.platformSession(),$.use.platformSessionRestoredOffline());function ki(){let{refreshSession:e}=$.getState(),t=[],n=()=>e().catch(e=>console.warn(`auth.refreshSession failed`,e)),r=Oe(`app.resume`,()=>{ir()||n()});return t.push(r),typeof BroadcastChannel<`u`&&(J=new BroadcastChannel(`auth`),J.onmessage=()=>{fi(),window.location.reload()},t.push(()=>{J?.close(),J=null})),()=>t.forEach(e=>e())}export{D as $,fr as A,hn as B,br as C,hr as D,yr as E,Gn as F,Xt as G,sn as H,wn as I,Zt as J,A as K,Cn as L,sr as M,$n as N,dr as O,Zn as P,mt as Q,yn as R,_r as S,vr as T,N as U,P as V,M as W,ht as X,k as Y,O as Z,Br as _,Ti as a,We as at,Fr as b,U as c,He as ct,oi as d,T as dt,E as et,si as f,Hr as g,Ir as h,Di as i,nt as it,cr as j,L as k,ii as l,Re as lt,Ur as m,$ as n,ot as nt,Ei as o,Ge as ot,H as p,qt as q,Oi as r,at as rt,W as s,Ve as st,ki as t,st as tt,ai as u,Le as ut,Lr as v,mr as w,Mr as x,zr as y,F as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`ban`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-Bjb-Kuq7.js";var t=e(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]);export{t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/xterm-MKaw0cT7.js","assets/chunk-jRWAZmH_.js","assets/xterm-addon-fit-BFDQtfbG.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Hr1Yo2kx.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-D7s2Q_uG.js";import{t as i}from"./preload-helper-BewR0kVT.js";import{d as a,h as o}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as s}from"./useQuery-B45lW1Kk.js";import{t as c}from"./useMutation-Lj4VunQV.js";import{t as l}from"./jsx-runtime-CVSDxk6A.js";import{t as u}from"./dropdown-CL8VmqrY.js";import{i as d}from"./src-CK6bncSg.js";import{t as f}from"./confirm-dialog-CfOXCE1N.js";import{t as p}from"./notice-CqRgVmeL.js";import{t as m}from"./tag-B_-QAvJF.js";import{n as h}from"./toast-2TW5tj1Y.js";import{n as g,t as _}from"./create-selectors-BE0_e_Ed.js";import{A as v,B as y,D as b,G as x,H as S,K as C,M as w,R as T,W as E,q as D,u as O,z as k}from"./local-mode-CvrNMtPF.js";import{n as ee}from"./resolved-assistants-store-Cp4J43BK.js";import{t as A}from"./createLucideIcon-BlMXrA59.js";import{t as te}from"./arrow-up-nBfZxfhi.js";import{t as j}from"./check-D6WkI0gF.js";import{t as M}from"./chevron-right-B6vEpVY0.js";import{t as N}from"./chevron-up-BRZN6p_l.js";import{t as P}from"./circle-check-DzlJxj_M.js";import{t as F}from"./hard-drive-D7_5VMhi.js";import{t as I}from"./loader-circle-IIzBGiwm.js";import{t as ne}from"./save-DEBQ_gbb.js";import{t as L}from"./triangle-alert-DKOyShqD.js";import{t as R}from"./x-KVxA2ZL0.js";import{r as re,t as z}from"./api-errors-CveHbhgb.js";import{l as ie,n as ae}from"./auth-store-Kfxhs2oI.js";import{t as oe}from"./client.gen-Cs6pCK0s.js";import{E as se,G as ce,J as le,K as B,T as ue,d as de,l as fe,q as pe,u as me}from"./sdk.gen-D-_js_oC.js";import{l as he,n as ge,r as _e,s as ve,u as ye}from"./api-2kc3MHRz.js";import{a as be}from"./routes-DVqkwUEe.js";import{_t as xe,a as Se,i as Ce}from"./react-query.gen-rp6Krcco.js";import{t as we}from"./misc-BN2o2MEB.js";import{$i as Te,Br as Ee,Hn as V,Li as H,Lr as U,Un as De,Vn as Oe,Wn as ke,Wr as Ae,Zr as W,an as G,bn as je,in as Me,kr as K,ni as Ne,qi as Pe,x as q}from"./index-PRnvH2Y1.js";import{t as Fe}from"./share-feedback-modal-CTwByE7B.js";var Ie=A(`plug-zap`,[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]]),Le=A(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),Re=A(`unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),J=e(n(),1);function ze(e,t,n,r){let i=!1,a=new AbortController;return(async()=>{if(i)return;let o=null;try{let{stream:s}=await oe.sse.get({url:`/v1/assistants/{assistant_id}/terminal/sessions/{session_id}/events/`,path:{assistant_id:e,session_id:t},headers:{Accept:`text/event-stream, application/json`,...Oe()},signal:a.signal,sseMaxRetryAttempts:0,onSseError:e=>{o=V(e,`Terminal stream disconnected`)}});for await(let e of s){if(i)return;let t=De(e);if(!t)continue;let r=ke(t),a=typeof r.seq==`number`?r.seq:-1,o=typeof r.data==`string`?r.data:``;if(!(a<0||o===``))try{n({seq:a,data:o})}catch{}}if(i)return;if(o){r(o);return}r(Error(`Terminal stream ended unexpectedly`))}catch(e){if(i)return;r(V(e,`Terminal stream connection failed`))}})().catch(e=>{i||r(V(e,`Terminal stream setup failed`))}),{cancel:()=>{i=!0,a.abort()}}}var Y=_(g()((e,t)=>({status:`idle`,errorMessage:null,reconnectAttempts:0,sessionId:null,requestConnect:()=>{let{status:n}=t();(n===`idle`||n===`closed`||n===`error`)&&e({status:`connecting`,errorMessage:null,reconnectAttempts:0})},connectSucceeded:n=>{t().status===`connecting`&&e({status:`connected`,sessionId:n,errorMessage:null,reconnectAttempts:0})},connectFailed:n=>{t().status===`connecting`&&e({status:`error`,errorMessage:n,sessionId:null})},disconnected:()=>{t().status===`connected`&&e({status:`error`,errorMessage:`Connection lost.`,sessionId:null})},requestReconnect:()=>{let{status:n,reconnectAttempts:r}=t();(n===`error`||n===`connected`)&&e({status:`reconnecting`,errorMessage:null,reconnectAttempts:r+1,sessionId:null})},reconnectSucceeded:n=>{t().status===`reconnecting`&&e({status:`connected`,sessionId:n,errorMessage:null,reconnectAttempts:0})},reconnectFailed:n=>{t().status===`reconnecting`&&e({status:`error`,errorMessage:n,sessionId:null})},errorOccurred:t=>{e({status:`error`,errorMessage:t,sessionId:null})},closed:()=>{e({status:`closed`,errorMessage:null,sessionId:null})},reset:()=>{e({status:`idle`,errorMessage:null,reconnectAttempts:0,sessionId:null})}}))),Be=50,Ve=150,He=3,Ue=1e3;function We(){return{highWaterMark:-1}}function Ge({assistantId:e,onData:t,service:n}){let r=(0,J.useRef)(null),i=(0,J.useRef)(t);(0,J.useLayoutEffect)(()=>{i.current=t},[t]);let a=(0,J.useRef)(``),o=(0,J.useRef)(null),s=(0,J.useRef)(null),c=(0,J.useRef)(null),l=(0,J.useRef)(null),u=(0,J.useRef)(We()),d=(0,J.useRef)(null),f=(0,J.useRef)(!1),p=(0,J.useRef)(null),m=(0,J.useMemo)(()=>n?{service:n}:void 0,[n]),h=(0,J.useCallback)(t=>{o.current||=setInterval(()=>{let n=a.current;!n||!e||(a.current=``,pe({path:{assistant_id:e,session_id:t},body:{data:n},throwOnError:!1}).catch(()=>{}))},Be)},[e]),g=(0,J.useCallback)(()=>{o.current&&=(clearInterval(o.current),null),a.current=``},[]),_=(0,J.useCallback)(async t=>{if(!e){t?Y.getState().reconnectFailed(`No assistant ID`):Y.getState().connectFailed(`No assistant ID`);return}let n;try{let{data:t,error:r,response:i}=await ce({path:{assistant_id:e},body:m,throwOnError:!1});if(!i||!i.ok){let e=r&&typeof r==`object`&&!Array.isArray(r)?r.detail:void 0;throw Error(e??`Failed to create terminal session (HTTP ${i?.status??`unknown`})`)}let a=t&&typeof t==`object`&&!Array.isArray(t)?t:{},o=typeof a.session_id==`string`?a.session_id:typeof a.id==`string`?a.id:void 0;if(!o)throw Error(`Backend did not return a session ID`);n=o}catch(e){let n=e instanceof Error?e.message:`Failed to create terminal session`;t?Y.getState().reconnectFailed(n):Y.getState().connectFailed(n);return}let a=t?`reconnecting`:`connecting`;if(Y.getState().status!==a){B({path:{assistant_id:e,session_id:n},throwOnError:!1}).catch(()=>{});return}u.current=We(),r.current=ze(e,n,e=>{if(!(e.seq<=u.current.highWaterMark)){u.current.highWaterMark=e.seq;try{i.current(e.data)}catch{}}},e=>{g(),Y.getState().errorOccurred(e.message)}),h(n),f.current=!1,p.current=n,t?Y.getState().reconnectSucceeded(n):Y.getState().connectSucceeded(n);let o=l.current;o&&e&&le({path:{assistant_id:e,session_id:n},body:{cols:o.cols,rows:o.rows},throwOnError:!1}).catch(()=>{})},[e,m,h,g]),v=Y.use.status(),y=Y.use.reconnectAttempts();(0,J.useEffect)(()=>{if(v!==`error`||f.current||y>=He)return;let t=Ue*2**y;return d.current=setTimeout(()=>{if(d.current=null,Y.getState().status!==`error`||f.current)return;r.current?.cancel(),r.current=null;let t=p.current;t&&e&&(p.current=null,B({path:{assistant_id:e,session_id:t},throwOnError:!1}).catch(()=>{})),Y.getState().requestReconnect(),_(!0)},t),()=>{d.current&&=(clearTimeout(d.current),null)}},[v,y,e,_]);let b=(0,J.useCallback)(()=>{let{status:e}=Y.getState();e!==`idle`&&e!==`closed`&&e!==`error`||(Y.getState().requestConnect(),_(!1))},[_]),x=(0,J.useCallback)(()=>{let{status:t,sessionId:n}=Y.getState();t!==`error`&&t!==`connected`||(r.current?.cancel(),r.current=null,g(),s.current&&=(clearTimeout(s.current),null),c.current=null,n&&e&&B({path:{assistant_id:e,session_id:n},throwOnError:!1}).catch(()=>{}),Y.getState().requestReconnect(),_(!0))},[e,_,g]),S=(0,J.useCallback)(()=>{let{sessionId:t}=Y.getState();f.current=!0,d.current&&=(clearTimeout(d.current),null),r.current?.cancel(),r.current=null,g(),s.current&&=(clearTimeout(s.current),null),t&&e&&B({path:{assistant_id:e,session_id:t},throwOnError:!1}).catch(()=>{}),Y.getState().closed()},[e,g]),C=(0,J.useCallback)(e=>{a.current+=e},[]),w=(0,J.useCallback)((t,n)=>{l.current={cols:t,rows:n};let{status:r,sessionId:i}=Y.getState();r!==`connected`||!i||!e||(c.current={cols:t,rows:n},s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{s.current=null;let t=c.current,n=Y.getState();!t||!n.sessionId||n.status!==`connected`||!e||(c.current=null,le({path:{assistant_id:e,session_id:n.sessionId},body:{cols:t.cols,rows:t.rows},throwOnError:!1}).catch(()=>{}))},Ve))},[e]);return(0,J.useEffect)(()=>()=>{f.current=!0,d.current&&=(clearTimeout(d.current),null),r.current?.cancel(),r.current=null,o.current&&=(clearInterval(o.current),null),s.current&&=(clearTimeout(s.current),null);let{sessionId:t}=Y.getState();t&&e&&B({path:{assistant_id:e,session_id:t},throwOnError:!1}).catch(()=>{}),Y.getState().reset()},[e]),{connect:b,reconnect:x,close:S,sendInput:C,sendResize:w}}var X=l();function Ke({onData:t,onResize:n,className:r,readOnly:a=!1,writeRef:o}){let s=(0,J.useRef)(null),c=(0,J.useRef)(null),l=(0,J.useRef)(t),u=(0,J.useRef)(n),d=(0,J.useRef)(a);return(0,J.useLayoutEffect)(()=>{l.current=t,u.current=n,d.current=a}),(0,J.useEffect)(()=>{let e=c.current;e&&(e.options.disableStdin=a,a||e.focus())},[a]),(0,J.useEffect)(()=>{if(!s.current)return;let t=s.current,n=!1,r=null,f=null,p=null,m=null;return Promise.all([i(()=>import(`./xterm-MKaw0cT7.js`).then(t=>e(t.default,1)),__vite__mapDeps([0,1])),i(()=>import(`./xterm-addon-fit-BFDQtfbG.js`).then(t=>e(t.default,1)),__vite__mapDeps([2,1]))]).then(([{Terminal:e},{FitAddon:i}])=>{if(n||!t)return;let s=new e({cursorBlink:!0,fontFamily:`"JetBrains Mono", "Fira Code", monospace`,fontSize:14,theme:{background:`#0f1117`,foreground:`#d4d4d4`,cursor:`#d4d4d4`,black:`#1e1e1e`,brightBlack:`#666666`,red:`#f44747`,brightRed:`#f44747`,green:`#6a9955`,brightGreen:`#6a9955`,yellow:`#dcdcaa`,brightYellow:`#dcdcaa`,blue:`#569cd6`,brightBlue:`#569cd6`,magenta:`#c586c0`,brightMagenta:`#c586c0`,cyan:`#4ec9b0`,brightCyan:`#4ec9b0`,white:`#d4d4d4`,brightWhite:`#ffffff`},disableStdin:a,scrollback:2e3});r=s;let h=new i;s.loadAddon(h),s.open(t),c.current=s,s.attachCustomKeyEventHandler(e=>e.key===`k`&&e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey?(e.type===`keydown`&&(e.preventDefault(),s.clear()),!1):!0);try{h.fit(),s.cols&&s.rows&&u.current?.({cols:s.cols,rows:s.rows})}catch{}p=s.onData(e=>{d.current||l.current?.(e)}),m=s.onResize(({cols:e,rows:t})=>{u.current?.({cols:e,rows:t})}),f=new ResizeObserver(()=>{try{h.fit()}catch{}}),f.observe(t),o&&(o.current=e=>s.write(e))}),()=>{n=!0,f?.disconnect(),p?.dispose(),m?.dispose(),r?.dispose(),c.current=null,o&&(o.current=null)}},[]),(0,X.jsx)(`div`,{ref:s,className:r,style:{width:`100%`,height:`100%`,overflow:`hidden`},role:`region`,"aria-label":`Terminal console`})}function qe({status:e,onConnect:t,onDisconnect:n,onClear:i,className:a,maintenanceModeActive:o}){let s=e===`connecting`||e===`reconnecting`,c=e===`connected`,l=e===`idle`||e===`closed`||e===`error`;return(0,X.jsxs)(`div`,{className:[`flex items-center justify-between gap-3 border-b px-3 py-1.5`,a].filter(Boolean).join(` `),style:{background:`var(--surface-lift)`,borderColor:`var(--border-base)`},children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,X.jsx)(U,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}),(0,X.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Terminal`}),(0,X.jsx)(Je,{status:e}),o&&(0,X.jsx)(m,{tone:`warning`,leftIcon:(0,X.jsx)(K,{}),title:`Recovery Mode active — session connected to the debug terminal`,children:`Recovery`})]}),(0,X.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,X.jsx)(r,{variant:`ghost`,size:`compact`,leftIcon:(0,X.jsx)(R,{}),onClick:i,title:`Clear terminal output`,children:`Clear`}),c||s?(0,X.jsx)(r,{variant:`danger`,size:`compact`,leftIcon:s?(0,X.jsx)(I,{className:`animate-spin`}):(0,X.jsx)(Re,{}),onClick:n,disabled:s,title:`Disconnect terminal session`,children:`Disconnect`}):(0,X.jsx)(r,{variant:`primary`,size:`compact`,leftIcon:(0,X.jsx)(Ie,{}),onClick:t,disabled:!l,title:`Connect terminal session`,children:`Connect`})]})]})}function Je({status:e}){let t=Ye[e];return(0,X.jsx)(m,{tone:t.tone,leftIcon:(0,X.jsx)(`span`,{className:[`h-1.5 w-1.5 rounded-full bg-current`,t.pulse?`animate-pulse`:``].filter(Boolean).join(` `)}),"aria-label":`Terminal status: ${t.label}`,children:t.label})}var Ye={idle:{label:`Idle`,tone:`neutral`},connecting:{label:`Connecting`,tone:`warning`,pulse:!0},connected:{label:`Connected`,tone:`positive`},reconnecting:{label:`Reconnecting`,tone:`warning`,pulse:!0},error:{label:`Error`,tone:`negative`},closed:{label:`Closed`,tone:`neutral`}};function Xe({assistantId:e,className:t,maintenanceMode:n,service:r}){let i=(0,J.useRef)(null),{connect:a,close:o,sendInput:s,sendResize:c,reconnect:l}=Ge({assistantId:e,onData:(0,J.useCallback)(e=>{try{let t=atob(e);i.current?.(t)}catch{i.current?.(e)}},[]),service:r}),u=Y.use.status(),d=Y.use.errorMessage(),f=Y.use.reconnectAttempts(),p=(0,J.useCallback)(()=>{u===`error`||u===`reconnecting`||f>0?l():a()},[u,f,a,l]),m=(0,J.useCallback)(e=>{s(e)},[s]),h=(0,J.useCallback)(({cols:e,rows:t})=>{c(e,t)},[c]),g=(0,J.useCallback)(()=>{i.current?.(`\x1B[2J\x1B[H`)},[]),_=u!==`connected`,v=n?.enabled===!0;return(0,X.jsxs)(`div`,{className:[`flex flex-col overflow-hidden rounded-lg border border-[var(--border-base)]`,t].filter(Boolean).join(` `),children:[(0,X.jsx)(qe,{status:u,onConnect:p,onDisconnect:o,onClear:g,maintenanceModeActive:v}),v&&(0,X.jsx)(`div`,{className:`border-b border-[var(--system-mid-strong)] bg-[var(--system-mid-weak)] px-3 py-2 text-body-small-default text-[var(--system-mid-strong)]`,children:`Recovery Mode active — this session is connected to the debug terminal.`}),u===`error`&&d&&(0,X.jsx)(`div`,{className:`border-b border-[var(--border-base)] bg-[var(--system-negative-weak)] px-3 py-2 text-body-small-default text-[var(--system-negative-strong)]`,children:d}),(0,X.jsx)(`div`,{className:`relative min-h-0 flex-1`,children:(0,X.jsx)(`div`,{className:`absolute inset-0`,children:(0,X.jsx)(Ke,{onData:m,onResize:h,readOnly:_,writeRef:i,className:`h-full w-full`})})})]})}var Ze=[{value:`assistant`,label:`assistant`},{value:`gateway`,label:`gateway`},{value:`credential-executor`,label:`credential-executor`}];function Qe(){let e=G({platformHostedOnly:!0}),n=Me(),[r,i]=(0,J.useState)(null),[a,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(!0),[l,d]=(0,J.useState)(`assistant`),f=(0,J.useRef)(!1),p=(0,J.useCallback)(async e=>{if(!(!e&&f.current)){e||c(!0);try{let e=await _e();e.ok&&(f.current=!0,i(e.data.id),o(e.data.maintenance_mode))}catch(e){t(e,{context:`fetch_assistant_for_terminal`}),h.error(`Failed to load assistant info`)}finally{c(!1)}}},[]);return(0,J.useEffect)(()=>{e===`full`&&p()},[p,e]),e===`gated`?null:(0,X.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3`,children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,X.jsx)(`div`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-[var(--surface-base)]`,children:(0,X.jsx)(U,{className:`h-5 w-5 text-[var(--content-secondary)]`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`h2`,{className:`text-title-small text-[var(--content-default)]`,children:`Terminal`}),(0,X.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Interactive shell session on your assistant machine`})]})]}),r&&(0,X.jsx)(u,{options:Ze,value:l,onChange:d,"aria-label":`Target container`})]}),e===`disabled`?(0,X.jsx)(q,{children:`Log in to the Vellum platform to open a terminal session.`}):s||e===`full`&&n?(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,X.jsx)(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-secondary)]`}),`Loading terminal...`]}):r?(0,X.jsx)(Xe,{assistantId:r,maintenanceMode:a??void 0,service:l,className:`min-h-0 flex-1`},l):(0,X.jsx)(`div`,{className:`rounded-lg border border-[var(--border-base)] px-4 py-3 text-body-medium-lighter text-[var(--content-tertiary)]`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-2 px-1 py-0.5`,children:[(0,X.jsx)(U,{className:`h-4 w-4 shrink-0`}),(0,X.jsx)(`span`,{children:`No assistant found. Hatch an assistant to use the terminal.`})]})})]})}var $e=3,et={point_in_time:{label:`Point-in-time`,tone:`neutral`},scheduled:{label:`Scheduled`,tone:`positive`},preview_channel:{label:`Preview`,tone:`warning`},doctor:{label:`Doctor`,tone:`warning`}};function tt({type:e}){let t=et[e]??{label:e,tone:`neutral`};return(0,X.jsx)(m,{tone:t.tone,children:t.label})}function nt(e){if(e==null)return`—`;let t=String(e);/Z|[+-]\d{2}:?\d{2}$/.test(t)||(t+=`Z`);let n=new Date(t);return Number.isNaN(n.getTime())?`—`:n.toLocaleString(`en-US`,{year:`numeric`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`})}function rt({assistantId:e}){let[t,n]=(0,J.useState)(null),[i,a]=(0,J.useState)(null),[o,s]=(0,J.useState)([]),[c,l]=(0,J.useState)(0),[u,d]=(0,J.useState)(null),[p,g]=(0,J.useState)(null),[_,v]=(0,J.useState)(!1),[y,b]=(0,J.useState)(null),x=(0,J.useCallback)(e=>{navigator.clipboard.writeText(e).then(()=>{b(e),setTimeout(()=>b(null),2e3)})},[]),S=t!==e;(0,J.useEffect)(()=>{let t=!1;return ve(e).then(r=>{t||(r.ok?(s(r.data),a(null)):a(typeof r.error?.detail==`string`?r.error.detail:`Failed to load backups.`),n(e))}).catch(()=>{t||(a(`Failed to load backups.`),n(e))}),()=>{t=!0}},[e,c]);let C=(0,J.useCallback)(async()=>{if(!p)return;let t=p;g(null),d(t.snapshot_name);try{let n=await ye(e,t);if(n.ok)h.success(`Backup restored successfully.`),l(e=>e+1);else{let e=typeof n.error?.detail==`string`?n.error.detail:`Failed to restore backup.`;h.error(e)}}catch{h.error(`Failed to restore backup.`)}finally{d(null)}},[e,p]),w=(0,J.useCallback)(async()=>{v(!0);try{let t=await ge(e);if(t.ok)h.success(`Backup started. It will appear in the list shortly.`),l(e=>e+1);else{let e=typeof t.error?.detail==`string`?t.error.detail:`Failed to create backup.`;h.error(e)}}catch{h.error(`Failed to create backup.`)}finally{v(!1)}},[e]);if(S)return(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,X.jsx)(I,{className:`h-4 w-4 animate-spin`}),`Loading backups...`]});if(i)return(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--system-negative-strong)]`,children:[(0,X.jsx)(L,{className:`h-4 w-4 shrink-0`}),i]});let T=o.filter(e=>e.backup_type===`point_in_time`).length,E=(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-3`,children:[T>=$e&&(0,X.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Creating a new backup will remove the oldest one.`}),(0,X.jsx)(r,{variant:`outlined`,leftIcon:_?(0,X.jsx)(I,{className:`animate-spin`}):(0,X.jsx)(ne,{}),onClick:w,disabled:_||u!==null,className:`shrink-0`,children:_?`Creating…`:`Create Backup`})]});return o.length===0?(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.jsx)(`div`,{className:`flex justify-end`,children:E}),(0,X.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No backups found for this assistant.`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`space-y-2`,children:[E,(0,X.jsx)(`div`,{className:`hidden lg:block`,children:(0,X.jsxs)(`table`,{className:`w-full table-fixed text-body-medium-lighter`,children:[(0,X.jsx)(`thead`,{children:(0,X.jsxs)(`tr`,{className:`border-b border-[var(--border-base)] text-left text-body-small-default text-[var(--content-secondary)]`,children:[(0,X.jsx)(`th`,{className:`w-[35%] pb-2 pr-4`,children:`Snapshot Name`}),(0,X.jsx)(`th`,{className:`w-[13%] pb-2 pr-4`,children:`Type`}),(0,X.jsx)(`th`,{className:`w-[12%] pb-2 pr-4`,children:`Ready`}),(0,X.jsx)(`th`,{className:`w-[20%] pb-2 pr-4`,children:`Created`}),(0,X.jsx)(`th`,{className:`w-[20%] pb-2`})]})}),(0,X.jsx)(`tbody`,{children:o.map(e=>(0,X.jsxs)(`tr`,{className:`border-b border-[var(--border-base)] last:border-0`,children:[(0,X.jsx)(`td`,{className:`py-2.5 pr-4`,children:(0,X.jsxs)(`div`,{className:`group/snapshot flex items-center gap-1`,children:[(0,X.jsx)(`code`,{className:`truncate text-body-small-default text-[var(--content-default)]`,title:e.snapshot_name,children:e.snapshot_name}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>x(e.snapshot_name),className:`shrink-0 text-[var(--content-secondary)] opacity-0 transition-opacity hover:text-[var(--content-default)] group-hover/snapshot:opacity-100`,title:`Copy snapshot name`,children:y===e.snapshot_name?(0,X.jsx)(j,{className:`h-3.5 w-3.5 text-green-500`}):(0,X.jsx)(H,{className:`h-3.5 w-3.5`})})]})}),(0,X.jsx)(`td`,{className:`overflow-hidden whitespace-nowrap py-2.5 pr-4`,children:(0,X.jsx)(tt,{type:e.backup_type})}),(0,X.jsx)(`td`,{className:`overflow-hidden whitespace-nowrap py-2.5 pr-4`,children:(0,X.jsx)(m,{tone:e.ready_to_use?`positive`:`warning`,children:e.ready_to_use?`Ready`:`Pending`})}),(0,X.jsx)(`td`,{className:`overflow-hidden whitespace-nowrap py-2.5 pr-4 text-body-medium-default text-[var(--content-default)]`,children:nt(e.created_at)}),(0,X.jsx)(`td`,{className:`py-2.5 text-right`,children:(0,X.jsx)(r,{variant:`ghost`,leftIcon:u===e.snapshot_name?(0,X.jsx)(I,{className:`animate-spin`}):(0,X.jsx)(W,{}),onClick:()=>g(e),disabled:u!==null||!e.ready_to_use,title:e.ready_to_use?void 0:`Backup is not ready to use`,children:`Restore`})})]},e.snapshot_name))})]})}),(0,X.jsx)(`div`,{className:`flex flex-col gap-3 lg:hidden`,children:o.map(e=>(0,X.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] p-3`,children:[(0,X.jsxs)(`div`,{className:`group/snapshot mb-2 flex items-center gap-1`,children:[(0,X.jsx)(`code`,{className:`truncate text-body-small-default text-[var(--content-default)]`,title:e.snapshot_name,children:e.snapshot_name}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>x(e.snapshot_name),className:`shrink-0 text-[var(--content-secondary)] hover:text-[var(--content-default)]`,title:`Copy snapshot name`,children:y===e.snapshot_name?(0,X.jsx)(j,{className:`h-3.5 w-3.5 text-green-500`}):(0,X.jsx)(H,{className:`h-3.5 w-3.5`})})]}),(0,X.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center gap-2 text-body-medium-lighter`,children:[(0,X.jsx)(tt,{type:e.backup_type}),(0,X.jsx)(m,{tone:e.ready_to_use?`positive`:`warning`,children:e.ready_to_use?`Ready`:`Pending`}),(0,X.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:nt(e.created_at)})]}),(0,X.jsx)(r,{variant:`ghost`,leftIcon:u===e.snapshot_name?(0,X.jsx)(I,{className:`animate-spin`}):(0,X.jsx)(W,{}),onClick:()=>g(e),disabled:u!==null||!e.ready_to_use,title:e.ready_to_use?void 0:`Backup is not ready to use`,children:`Restore`})]},e.snapshot_name))})]}),(0,X.jsx)(f,{open:p!==null,title:`Restore Backup`,message:p?`Restore from backup "${p.snapshot_name}"?\n\nThe assistant will be temporarily unavailable during the restore.`:``,confirmLabel:`Restore`,destructive:!0,onConfirm:C,onCancel:()=>g(null)})]})}function it({assistantId:e,maintenanceMode:n,onMaintenanceModeChange:i}){let[a,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(null),l=G({platformHostedOnly:!0}),u=Me(),d=(0,J.useCallback)(async()=>{o(!0),c(null);try{let{response:n}=await ue({path:{assistant_id:e},throwOnError:!1});n?.ok?await i():(t(Error(`Enter maintenance mode returned non-ok response`),{context:`enter_maintenance_mode`}),c(`Failed to enter Recovery Mode. Please try again.`))}catch(e){t(e,{context:`enter_maintenance_mode`}),c(`Failed to enter Recovery Mode. Please try again.`)}finally{o(!1)}},[e,i]),f=(0,J.useCallback)(async()=>{o(!0),c(null);try{let{response:n}=await se({path:{assistant_id:e},throwOnError:!1});n?.ok?await i():(t(Error(`Exit maintenance mode returned non-ok response`),{context:`exit_maintenance_mode`}),c(`Failed to exit Recovery Mode. Please try again.`))}catch(e){t(e,{context:`exit_maintenance_mode`}),c(`Failed to exit Recovery Mode. Please try again.`)}finally{o(!1)}},[e,i]);if(l===`gated`)return null;let m=n?.enabled===!0;return(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-base)] px-4 py-3`,children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,X.jsx)(K,{className:`h-4 w-4 shrink-0 ${m?`text-[var(--system-mid-strong)]`:`text-[var(--content-disabled)]`}`}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Recovery Mode`}),m?(0,X.jsx)(`p`,{className:`text-body-small-default text-[var(--system-mid-strong)]`,children:`Active — connected to the debug terminal`}):(0,X.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Pause the assistant and connect directly to its workspace via the debug terminal`})]})]}),(0,X.jsx)(`div`,{className:`ml-4 flex shrink-0 items-center gap-2`,children:l===`disabled`?null:a||l===`full`&&u?(0,X.jsx)(I,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}):m?(0,X.jsx)(r,{variant:`outlined`,onClick:f,children:`Resume Assistant`}):(0,X.jsx)(r,{variant:`dangerOutline`,onClick:d,children:`Enter Recovery Mode`})})]}),l===`disabled`&&(0,X.jsxs)(q,{children:[`Log in to the Vellum platform to `,m?`exit`:`enter`,` Recovery Mode.`]}),s&&(0,X.jsx)(p,{tone:`error`,children:s})]})}async function at(e){let t=await v(e);if(!t.ok)return{ok:!1,error:t.error??`Failed to stop assistant.`};let n=await w(e);return n.ok?{ok:!0}:{ok:!1,error:n.error??`Failed to start assistant.`}}function ot({assistantId:e}){let[t,n]=(0,J.useState)(!1),[i,a]=(0,J.useState)(!1);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(r,{variant:`outlined`,leftIcon:t?(0,X.jsx)(I,{className:`animate-spin`}):(0,X.jsx)(W,{}),onClick:()=>a(!0),disabled:t,className:`shrink-0`,children:`Restart`}),(0,X.jsx)(f,{open:i,title:`Restart Assistant`,message:`Are you sure you want to restart this assistant? It will be briefly unavailable during the restart.`,confirmLabel:`Restart`,onConfirm:async()=>{a(!1),n(!0);try{if(b()&&O(e)){let t=await at(e);t.ok?h.success(`Assistant is restarting.`):h.error(t.error??`Failed to restart assistant.`)}else{let t=await he(e);if(t.ok)h.success(`Assistant is restarting.`);else{let e=typeof t.error?.detail==`string`?t.error.detail:`Failed to restart assistant.`;h.error(e)}}}catch{h.error(`Failed to restart assistant.`)}finally{n(!1)}},onCancel:()=>a(!1)})]})}function st(e,t){return t?!0:!!e&&e.toLowerCase().endsWith(`@vellum.ai`)}function ct(){let e=a(),n=ae.use.user(),i=G(),o=st(n?.email??null,n?.isStaff??!1),[s,c]=(0,J.useState)(null),[l,u]=(0,J.useState)(!0),d=(0,J.useRef)(!1),f=(0,J.useCallback)(()=>{ie(n?.id??null),h.success(`Onboarding flags cleared.`),e(be.onboarding.privacy)},[e,n?.id]),p=(0,J.useCallback)(async e=>{if(!(!e&&d.current)){e||u(!0);try{let e=await _e();e.ok?(d.current=!0,c(e.data)):c(null)}catch(e){t(e,{context:`fetch_assistant_for_debug_controls`}),h.error(`Failed to load assistant info`)}finally{u(!1)}}},[]);return(0,J.useEffect)(()=>{p()},[p]),(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,X.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-lg bg-[var(--surface-base)]`,children:(0,X.jsx)(K,{className:`h-5 w-5 text-[var(--content-secondary)]`})}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`h2`,{className:`text-title-small text-[var(--content-default)]`,children:`General`}),(0,X.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Manage backups, restart your assistant, or enter Recovery Mode to connect to the debug terminal.`})]})]}),l?(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,X.jsx)(I,{className:`h-4 w-4 animate-spin`}),`Loading assistant info...`]}):s?(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-base)] px-4 py-3 dark:border-[var(--border-base)]`,children:[(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Restart Assistant`}),(0,X.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Restart the assistant machine. It will be briefly unavailable during the restart.`})]}),(0,X.jsx)(`div`,{className:`ml-4 shrink-0`,children:(0,X.jsx)(ot,{assistantId:s.id})})]}),(0,X.jsx)(it,{assistantId:s.id,maintenanceMode:s.maintenance_mode,onMaintenanceModeChange:()=>p(!0)}),o&&(0,X.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-base)] px-4 py-3 dark:border-[var(--border-base)]`,children:[(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Replay onboarding (Vellum-only)`}),(0,X.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Clear local onboarding flags and re-walk the privacy → hatch screens. Your existing assistant is preserved.`})]}),(0,X.jsx)(`div`,{className:`ml-4 shrink-0`,children:(0,X.jsx)(r,{variant:`outlined`,leftIcon:(0,X.jsx)(Le,{}),onClick:f,children:`Replay`})})]}),i===`disabled`&&(0,X.jsx)(q,{children:`Log in to the Vellum platform to manage backups.`}),i!==`disabled`&&(0,X.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] px-4 py-3 dark:border-[var(--border-base)]`,children:[(0,X.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,X.jsx)(F,{className:`h-4 w-4 text-[var(--content-secondary)]`}),(0,X.jsx)(`h3`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Backups`})]}),(0,X.jsx)(rt,{assistantId:s.id})]})]}):(0,X.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No assistant found. Hatch an assistant to access debug controls.`})]})}function lt({text:e}){let[t,n]=(0,J.useState)(!1),r=(0,J.useRef)(null);return(0,J.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),(0,X.jsx)(`button`,{type:`button`,onClick:()=>{navigator.clipboard.writeText(e).then(()=>{n(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{n(!1),r.current=null},1500)}).catch(()=>{})},title:t?`Copied!`:`Copy`,"aria-label":t?`Copied`:`Copy to clipboard`,className:`flex h-6 w-6 cursor-pointer items-center justify-center rounded-md bg-[var(--surface-overlay)] text-[var(--content-tertiary)] pointer-events-none opacity-0 transition-opacity duration-150 group-hover/msg:pointer-events-auto group-hover/msg:opacity-100 hover:text-[var(--content-secondary)] [@media(hover:none)]:pointer-events-auto [@media(hover:none)]:opacity-100`,children:(0,X.jsxs)(`div`,{className:`relative h-3.5 w-3.5`,children:[(0,X.jsx)(j,{className:`absolute inset-0 h-3.5 w-3.5 text-[var(--system-positive-strong)] transition-opacity duration-150 ${t?`opacity-100`:`opacity-0`}`}),(0,X.jsx)(H,{className:`absolute inset-0 h-3.5 w-3.5 transition-opacity duration-150 ${t?`opacity-0`:`opacity-100`}`})]})})}function ut({entry:e}){let[t,n]=(0,J.useState)(!1),{toolName:r,input:i,result:a,isError:o,status:s}=e.meta,c=s===`running`,l=c?`Running 1 step`:o?`Failed 1 step`:`Completed 1 step`,u=!c&&(a!==void 0||Object.keys(i).length>0);return(0,X.jsxs)(`div`,{className:`my-1 w-full`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>{u&&n(!t)},className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 transition-colors ${o?`bg-[var(--system-negative-weak)]`:`bg-[var(--surface-base)]`} ${u?`cursor-pointer hover:bg-[var(--surface-hover)]`:`cursor-default`} ${t?`rounded-b-none`:``}`,children:[c?(0,X.jsx)(I,{className:`h-4 w-4 shrink-0 animate-spin text-[var(--content-disabled)]`}):o?(0,X.jsx)(Pe,{className:`h-4 w-4 shrink-0 text-[var(--system-negative-strong)]`}):(0,X.jsx)(P,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,X.jsx)(`span`,{className:`text-body-medium-default ${o?`text-[var(--system-negative-strong)]`:`text-[var(--content-default)]`}`,children:l}),(0,X.jsx)(`span`,{className:`ml-auto flex items-center gap-1.5 text-[var(--content-tertiary)]`,children:u&&(t?(0,X.jsx)(N,{className:`h-4 w-4`}):(0,X.jsx)(Te,{className:`h-4 w-4`}))})]}),t&&u&&(0,X.jsxs)(`div`,{className:`rounded-b-lg border-t px-3 pb-3 ${o?`border-[var(--system-negative-weak)] bg-[var(--system-negative-weak)]`:`border-[var(--border-base)] bg-[var(--surface-base)] dark:bg-[var(--surface-lift)]`}`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 py-2`,children:[(0,X.jsx)(K,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:r})]}),(0,X.jsx)(`div`,{className:`border-t border-[var(--border-base)]`}),(0,X.jsxs)(`div`,{className:`mt-2.5`,children:[(0,X.jsx)(`div`,{className:`mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-[var(--content-disabled)]`,children:`Technical Details`}),Object.entries(i).map(([e,t])=>(0,X.jsxs)(`div`,{className:`mt-0.5`,children:[(0,X.jsxs)(`span`,{className:`text-body-medium-default text-[var(--content-default)]`,children:[e,`:`]}),` `,(0,X.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:typeof t==`string`?t.length>200?t.slice(0,200)+`...`:t:JSON.stringify(t)})]},e))]}),a!==void 0&&(0,X.jsxs)(`div`,{className:`mt-3`,children:[(0,X.jsx)(`div`,{className:`mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-[var(--content-disabled)]`,children:`Output`}),(0,X.jsx)(`div`,{className:`rounded-md border p-3 ${o?`border-[var(--system-negative-weak)] bg-[var(--system-negative-weak)]/50`:`border-[var(--border-element)] bg-[var(--surface-base)]`}`,children:(0,X.jsx)(`pre`,{className:`max-h-60 overflow-y-auto whitespace-pre-wrap break-words text-body-small-default ${o?`text-[var(--system-negative-strong)]`:`text-[var(--content-default)]`}`,children:a.length>2e3?a.slice(0,2e3)+`...`:a})})]})]})]})}function dt({entry:e,onRespond:t,disabled:n}){let{toolName:r,description:i,input:a}=e.meta,[o,s]=(0,J.useState)(!1);return(0,X.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-4`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-2`,children:[(0,X.jsx)(Ae,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-disabled)]`}),(0,X.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Confirmation required`})]}),(0,X.jsxs)(`div`,{className:`flex shrink-0 gap-2`,children:[(0,X.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>t(`approve`),className:`flex items-center gap-1.5 rounded-md bg-[var(--system-positive-strong)] px-3 py-1.5 text-body-small-default text-white transition-colors hover:bg-[var(--system-positive-strong)] disabled:cursor-not-allowed disabled:opacity-50`,children:`Allow once`}),r===`exec_command`&&(0,X.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>t(`approve all exec`),className:`flex items-center gap-1.5 rounded-md border border-[var(--system-positive-strong)] bg-[var(--surface-lift)] px-3 py-1.5 text-body-small-default text-[var(--system-positive-strong)] transition-colors hover:bg-[var(--system-positive-weak)] disabled:cursor-not-allowed disabled:opacity-50`,children:`Always Allow`}),(0,X.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>t(`deny`),className:`flex items-center gap-1.5 rounded-md border border-[var(--system-negative-strong)] bg-[var(--surface-lift)] px-3 py-1.5 text-body-small-default text-[var(--system-negative-strong)] transition-colors hover:bg-[var(--system-negative-weak)] disabled:cursor-not-allowed disabled:opacity-50`,children:`Deny`})]})]}),(!!r||!!i||!!a)&&(0,X.jsxs)(`div`,{className:`mt-3`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>s(!o),className:`flex items-center gap-1 text-body-small-default text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-default)]`,children:[(0,X.jsx)(M,{className:`h-3 w-3 transition-transform ${o?`rotate-90`:``}`}),o?`Hide details`:`Show details`]}),o&&(0,X.jsxs)(`div`,{className:`mt-2 space-y-1.5`,children:[r&&(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,X.jsx)(`span`,{children:`Tool:`}),(0,X.jsx)(`code`,{className:`rounded bg-[var(--surface-base)] px-1.5 py-0.5 font-mono text-[var(--content-secondary)] dark:bg-[var(--surface-lift)] dark:text-[var(--content-default)]`,children:r})]}),i&&(0,X.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:i}),a&&Object.keys(a).length>0&&(0,X.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap rounded bg-[var(--surface-base)] p-2 text-label-medium-default text-[var(--content-secondary)] dark:bg-[var(--surface-lift)] dark:text-[var(--content-default)]`,children:JSON.stringify(a,null,2)})]})]})]})}function ft({entry:e,onRespond:t,disabled:n}){let{toolName:i}=e.meta;return(0,X.jsx)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-4`,children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-2`,children:[(0,X.jsx)(F,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-disabled)]`}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Create a backup before modifying?`}),(0,X.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`The doctor is about to run`,` `,(0,X.jsx)(`code`,{className:`rounded bg-[var(--surface-base)] px-1 py-0.5 font-mono text-[var(--content-secondary)]`,children:i}),`. Would you like to back up your workspace first?`]})]})]}),(0,X.jsxs)(`div`,{className:`flex shrink-0 gap-2`,children:[(0,X.jsx)(r,{variant:`primary`,disabled:n,onClick:()=>t(`backup`),children:`Back up`}),(0,X.jsx)(r,{variant:`outlined`,disabled:n,onClick:()=>t(`skip_backup`),children:`Skip`})]})]})})}function pt({entry:e}){return(0,X.jsxs)(`div`,{className:`group/msg flex items-start justify-end gap-1.5`,children:[(0,X.jsx)(`div`,{className:`flex shrink-0 items-center self-center`,children:(0,X.jsx)(lt,{text:e.content})}),(0,X.jsx)(`div`,{className:`max-w-[80%] whitespace-pre-wrap rounded-lg bg-[var(--surface-lift)] px-4 py-3 text-chat text-[var(--content-default)]`,children:e.content})]})}function mt({entry:e}){return(0,X.jsxs)(`div`,{className:`group/msg flex items-start justify-start gap-1.5`,children:[(0,X.jsx)(`div`,{className:`w-full text-chat text-[var(--content-default)]`,children:(0,X.jsx)(d,{content:e.content})}),(0,X.jsx)(`div`,{className:`flex shrink-0 items-center pt-0.5`,children:(0,X.jsx)(lt,{text:e.content})})]})}function ht({entry:e}){return(0,X.jsxs)(`div`,{className:`flex items-start gap-2 text-body-small-default text-[var(--system-negative-strong)]`,children:[(0,X.jsx)(L,{className:`mt-0.5 h-3.5 w-3.5 shrink-0`}),(0,X.jsx)(`span`,{children:e.content})]})}function gt({entry:e}){return(0,X.jsx)(`div`,{className:`text-center text-body-small-default text-[var(--content-disabled)]`,children:e.content})}var _t=`0 0 724 691`,vt=`#DB4B77`,Z=`#F2F2F2`,yt=`#1A1A1A`,bt=`M707.996 341.488C683.572 371.035 643.096 379.081 606.995 383.544C585.458 386.205 563.817 387.947 542.142 388.871C531.271 389.34 520.394 389.578 509.517 389.597C509.127 389.597 508.73 389.604 508.34 389.604C539.98 409.658 571.958 431.456 594.664 461.683C615.354 489.223 627.369 524.084 618.659 558.345C614.714 573.858 606.844 588.374 594.889 599.167C581.012 611.696 562.615 618.079 543.959 615.227C524.928 612.31 508.592 601.272 493.122 590.513C477.163 579.416 461.759 567.586 446.956 554.985C432.226 542.449 418.071 529.273 404.782 515.212C401.597 511.845 398.478 508.439 395.411 504.987C395.332 506.221 395.246 507.449 395.16 508.67C393.64 530.804 390.508 552.813 385.876 574.505C381.812 593.503 376.631 612.297 370.221 630.642C364.769 646.24 357.917 662.018 345.916 673.761C335.032 684.415 319.932 690.693 304.614 689.954C288.622 689.175 276.49 679.894 268.619 666.374C260.055 651.654 254.761 634.51 250.294 618.172C245.424 600.355 242.173 582.096 240.561 563.692C238.882 544.456 238.677 524.613 240.752 505.093C240.164 505.898 239.57 506.703 238.955 507.509C233.457 514.704 227.14 521.378 220.716 527.755C208.154 540.218 194.349 551.433 179.54 561.131C166.422 569.719 152.519 577.132 138.073 583.238C122.86 589.674 106.333 595.787 89.7861 597.351C74.8317 598.764 59.4075 595.437 49.4026 583.548C40.8116 573.336 37.4353 559.13 38.4529 546.02C39.6691 530.33 47.6584 515.879 57.1277 503.647C68.289 489.237 81.7962 476.568 94.8805 463.941C112.63 446.817 130.797 429.759 149.769 413.758C133.652 415.052 117.487 415.257 101.562 414.385C83.9244 413.414 65.996 411.269 49.079 406.015C34.3755 401.454 19.6257 393.756 10.2747 381.167C2.05413 370.11 -2.30039 355.053 1.24128 341.481C5.30564 325.922 19.0643 317.597 32.7163 311.115C64.555 296.005 99.8366 290.097 134.834 288.763C152.538 288.09 170.274 288.71 187.945 289.879C189.611 289.984 191.276 290.097 192.948 290.209C176.744 285.403 161.776 275.713 148.831 265.151C134.458 253.42 121.869 239.663 110.318 225.193C99.3547 211.456 88.8807 197.112 79.3448 182.351C69.558 167.188 61.3172 149.748 63.1485 131.237C66.4331 98.0067 102.368 85.2731 131.491 90.3755C149.836 93.5902 166.349 102.892 181.588 113.209C196.325 123.19 210.724 133.792 224.615 144.922C235.558 153.695 246.224 162.923 256.142 172.858C254.979 152.288 253.539 131.614 254.438 111.017C255.224 92.9499 258.066 74.7764 265.348 58.1084C272.082 42.6945 282.748 29.3267 296.143 19.1613C309.34 9.15344 326.309 1.12634 343.035 0.0771651C360.441 -1.01881 374.92 9.70203 384.813 23.1751C403.157 48.167 404.803 82.1373 400.666 111.764C397.904 131.527 392.564 150.843 388.461 170.35C386.386 180.225 384.575 190.166 383.524 200.207C383.445 200.973 383.379 201.738 383.313 202.511C384.529 200.299 385.863 198.121 387.284 195.949C392.887 187.394 399.146 179.149 405.674 171.274C418.838 155.398 433.225 140.565 448.688 126.907C474.956 103.711 506.371 78.8764 542.863 76.8298C551.982 76.3212 561.479 77.3051 569.778 81.319C576.968 84.7978 582.638 90.5806 586.583 97.4655C594.909 112.028 596.74 129.666 594.387 146.05C589.213 182.06 565.7 211.211 538.798 234.164C524.716 246.184 509.576 256.879 494.542 267.665C492.553 269.091 490.564 270.517 488.575 271.942C500.847 267.367 513.29 263.228 525.807 259.459C547.515 252.917 569.593 247.537 592.101 244.567C611.965 241.946 632.332 241.095 652.289 243.26C667.541 244.916 683.03 248.686 696.346 256.528C710.032 264.595 720.156 277.487 722.555 293.423C725.144 310.667 718.966 328.22 707.996 341.488Z`,xt=[{d:`M320.715 343.724C320.838 359.862 316.431 375.655 310.169 390.408C310.138 390.482 310.107 390.555 310.07 390.629C307.833 395.777 305.299 400.893 302.372 405.757C296.079 416.243 287.955 425.559 277.045 431.507C262.264 439.554 242.097 440.564 229.523 427.806C219.821 417.961 217.343 402.876 219.161 389.644C221.017 376.135 227.365 363.661 231.267 350.694C233.246 344.106 234.793 337.265 234.398 330.338C233.998 323.381 230.971 317.932 226.94 312.433C222.909 306.929 220.468 301.067 221.042 294.11C221.578 287.632 224.148 281.58 228.352 276.63C238.627 264.543 255.953 264.131 269.612 270.165C277.057 273.453 283.597 278.464 289.644 283.858C293.749 287.515 297.737 291.333 301.41 295.427C302.884 297.065 304.301 298.746 305.663 300.476C315.513 313.012 320.592 327.789 320.715 343.724Z`,fill:Z},{d:`M305.663 300.476C304.301 298.746 302.884 297.065 301.41 295.427C297.737 291.333 293.749 287.515 289.644 283.858C283.597 278.464 277.057 273.453 269.612 270.165C255.953 264.131 238.627 264.543 228.352 276.63C224.148 281.58 221.578 287.632 221.042 294.11C220.468 301.067 222.909 306.929 226.94 312.433C230.971 317.932 233.998 323.381 234.398 330.338C234.793 337.265 233.246 344.106 231.267 350.694C227.365 363.661 221.017 376.135 219.161 389.644C217.343 402.876 219.821 417.961 229.523 427.806C242.097 440.564 262.264 439.554 277.045 431.507C287.955 425.559 296.079 416.243 302.372 405.757C305.299 400.893 307.833 395.777 310.07 390.629C310.107 390.555 310.138 390.482 310.169 390.408C316.431 375.655 320.838 359.862 320.715 343.724C320.592 327.789 315.513 313.012 305.663 300.476ZM304.524 387.107C298.767 400.413 291.229 413.86 279.185 422.468C278.809 422.733 278.432 422.997 278.05 423.256C277.687 423.502 277.317 423.743 276.941 423.977C265.698 431.107 250.831 434.142 238.867 426.926C227.846 420.282 224.518 406.305 225.233 394.268C225.96 382.034 231.477 370.458 235.428 359.025C239.323 347.739 242.855 335.277 239.921 323.338C238.522 317.673 235.458 313.117 232.087 308.456C228.315 303.235 226.558 297.749 228.037 291.302C231.212 277.479 244.84 270.743 258.221 273.348C267.843 275.226 276.219 280.681 283.665 287.134C283.721 287.183 283.782 287.232 283.837 287.282C287.314 290.311 290.587 293.549 293.681 296.733C305.238 308.622 312.973 322.624 314.027 339.383C315.057 355.743 310.878 372.139 304.524 387.107Z`,fill:Z},{d:`M320.716 343.724C320.839 359.862 316.432 375.655 310.17 390.408C310.139 390.481 310.108 390.555 310.071 390.629C307.833 395.777 305.3 400.893 302.372 405.757C299.642 409.766 296.597 413.571 293.145 417.043C293.022 417.13 292.893 417.21 292.769 417.29C288.011 420.43 282.574 422.85 276.941 423.976C270.58 425.251 263.972 424.882 257.803 422.031C244.686 415.978 243.435 402.371 248.662 390.796C254.745 377.97 263.658 365.853 265.575 351.691C266.647 343.699 265.051 336.243 262.672 328.602C260.465 321.491 257.956 314.225 258.197 306.726C258.548 295.587 266.604 288.944 278.094 287.558C279.912 287.331 281.779 287.189 283.666 287.134C286.643 287.029 289.669 287.14 292.664 287.478C293.028 287.78 293.379 288.082 293.737 288.39C296.363 290.662 298.945 292.995 301.411 295.427C302.884 297.065 304.302 298.746 305.664 300.476C315.513 313.012 320.592 327.789 320.716 343.724Z`,fill:yt},{d:`M449.963 343.724C450.086 359.862 445.679 375.655 439.417 390.408C439.386 390.482 439.355 390.555 439.318 390.629C437.081 395.777 434.548 400.893 431.62 405.757C425.327 416.243 417.203 425.559 406.293 431.507C391.512 439.554 371.345 440.564 358.771 427.806C349.069 417.961 346.591 402.876 348.409 389.644C350.265 376.135 356.613 363.661 360.515 350.694C362.493 344.106 364.041 337.265 363.646 330.338C363.245 323.381 360.219 317.932 356.188 312.433C352.157 306.929 349.716 301.067 350.289 294.11C350.826 287.632 353.396 281.58 357.599 276.63C367.874 264.543 385.201 264.131 398.859 270.165C406.305 273.453 412.845 278.464 418.891 283.858C422.996 287.515 426.985 291.333 430.658 295.427C432.131 297.065 433.549 298.746 434.911 300.476C444.761 313.012 449.84 327.789 449.963 343.724Z`,fill:Z},{d:`M434.911 300.476C433.549 298.746 432.131 297.065 430.658 295.427C426.985 291.333 422.996 287.515 418.891 283.858C412.845 278.464 406.305 273.453 398.859 270.165C385.201 264.131 367.874 264.543 357.599 276.63C353.396 281.58 350.826 287.632 350.289 294.11C349.716 301.067 352.157 306.929 356.188 312.433C360.219 317.932 363.245 323.381 363.646 330.338C364.041 337.265 362.493 344.106 360.515 350.694C356.613 363.661 350.265 376.135 348.409 389.644C346.591 402.876 349.069 417.961 358.771 427.806C371.345 440.564 391.512 439.554 406.293 431.507C417.203 425.559 425.327 416.243 431.62 405.757C434.548 400.893 437.081 395.777 439.318 390.629C439.355 390.555 439.386 390.482 439.417 390.408C445.679 375.655 450.086 359.862 449.963 343.724C449.84 327.789 444.761 313.012 434.911 300.476ZM433.771 387.107C428.014 400.413 420.476 413.86 408.432 422.468C408.056 422.733 407.68 422.997 407.298 423.256C406.935 423.502 406.565 423.743 406.189 423.977C394.946 431.107 380.079 434.142 368.115 426.926C357.094 420.282 353.766 406.305 354.481 394.268C355.208 382.034 360.724 370.458 364.675 359.025C368.571 347.739 372.103 335.277 369.169 323.338C367.77 317.673 364.706 313.117 361.335 308.456C357.562 303.235 355.806 297.749 357.285 291.302C360.46 277.479 374.087 270.743 387.469 273.348C397.09 275.226 405.467 280.681 412.913 287.134C412.968 287.183 413.03 287.232 413.085 287.282C416.562 290.311 419.835 293.549 422.929 296.733C434.486 308.622 442.221 322.624 443.275 339.383C444.305 355.743 440.125 372.139 433.771 387.107Z`,fill:Z},{d:`M449.964 343.724C450.087 359.862 445.68 375.655 439.418 390.408C439.387 390.481 439.356 390.555 439.319 390.629C437.081 395.777 434.548 400.893 431.621 405.757C428.89 409.766 425.845 413.571 422.393 417.043C422.27 417.13 422.141 417.21 422.017 417.29C417.259 420.43 411.823 422.85 406.189 423.976C399.828 425.251 393.221 424.882 387.051 422.031C373.934 415.978 372.683 402.371 377.91 390.796C383.993 377.97 392.906 365.853 394.823 351.691C395.896 343.699 394.299 336.243 391.92 328.602C389.713 321.491 387.205 314.225 387.445 306.726C387.797 295.587 395.852 288.944 407.342 287.558C409.16 287.331 411.028 287.189 412.914 287.134C415.891 287.029 418.917 287.14 421.913 287.478C422.276 287.78 422.628 288.082 422.985 288.39C425.611 290.662 428.193 292.995 430.659 295.427C432.132 297.065 433.55 298.746 434.912 300.476C444.762 313.012 449.841 327.789 449.964 343.724Z`,fill:yt}];function Q({className:e}){return(0,X.jsxs)(`svg`,{viewBox:_t,xmlns:`http://www.w3.org/2000/svg`,className:e,"aria-hidden":`true`,children:[(0,X.jsx)(`path`,{d:bt,fill:vt}),xt.map((e,t)=>(0,X.jsx)(`path`,{d:e.d,fill:e.fill},t)),(0,X.jsxs)(`g`,{transform:`translate(370 510) scale(1.37) translate(-370 -510)`,children:[(0,X.jsx)(`path`,{d:`M 230 440 Q 210 560 320 585 Q 430 610 500 540`,stroke:`#1F1F23`,strokeWidth:`22`,strokeLinecap:`round`,fill:`none`}),(0,X.jsx)(`circle`,{cx:`230`,cy:`435`,r:`16`,fill:`#1F1F23`}),(0,X.jsx)(`circle`,{cx:`510`,cy:`525`,r:`58`,fill:`#E4E4E7`,stroke:`#1F1F23`,strokeWidth:`10`}),(0,X.jsx)(`circle`,{cx:`510`,cy:`525`,r:`34`,fill:`#52525B`}),(0,X.jsx)(`circle`,{cx:`500`,cy:`515`,r:`10`,fill:`#A1A1AA`,opacity:`0.55`})]})]})}function St(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Ct(e){let t=[];for(let n of e){let e=Date.parse(n.occurred_at),r=St(n.metadata);switch(n.kind){case`user`:t.push({id:n.id,kind:`user`,content:n.content,timestamp:e});break;case`assistant`:t.push({id:n.id,kind:`assistant`,content:n.content,timestamp:e});break;case`tool_call`:{let i=typeof r.toolName==`string`?r.toolName:n.content;t.push({id:n.id,kind:`tool_call`,content:i,timestamp:e,meta:{toolName:i,input:r.input??{},toolCallId:typeof r.id==`string`?r.id:n.id,status:`running`}});break}case`tool_result`:{let e=r.toolCallId,i=r.isError===!0,a=t.findIndex(t=>t.kind===`tool_call`&&t.meta.toolCallId===e);if(a===-1)break;let o=t[a];if(o.kind!==`tool_call`)break;t[a]={...o,meta:{...o.meta,result:n.content,isError:i,status:i?`error`:`completed`}};break}case`approval`:{let i=typeof r.toolName==`string`?r.toolName:n.content;t.push({id:n.id,kind:`approval`,content:i,timestamp:e,meta:{toolName:i,input:r.input??{},toolCallId:typeof r.id==`string`?r.id:n.id,description:typeof r.description==`string`?r.description:``}});break}case`status`:n.content===`completed`?t.push({id:n.id,kind:`status`,content:`Session completed`,timestamp:e}):n.content===`error`&&t.push({id:n.id,kind:`status`,content:`Session ended with error`,timestamp:e});break;case`error`:t.push({id:n.id,kind:`error`,content:n.content,timestamp:e});break;default:break}}return t}function wt(e){switch(e){case`active`:return`active`;case`completed`:return`completed`;case`error`:return`error`}}function Tt(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n&&n.kind!==`status`)return n.kind===`approval`}return!1}function Et(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n&&n.kind!==`status`)return n.kind===`backup_prompt`}return!1}function Dt(e){return e[0]??null}var $=_(g()((e,t)=>({entries:[],inputValue:``,thinking:!1,sessionId:null,sessionStatus:`idle`,pendingApproval:!1,pendingBackup:!1,historyDismissed:!1,streamingEntryId:null,entryCounter:0,lastAssistantId:null,nextId:()=>{let n=t().entryCounter+1;return e({entryCounter:n}),`entry-${n}`},appendEntry:n=>{let r=t().nextId();e(e=>({entries:[...e.entries,{...n,id:r,timestamp:Date.now()}]}))},updateEntries:t=>{e(e=>({entries:t(e.entries)}))},teardown:()=>{e({sessionId:null,sessionStatus:`completed`,pendingApproval:!1,pendingBackup:!1,thinking:!1,streamingEntryId:null})},reset:()=>{e({entries:[],inputValue:``,thinking:!1,sessionId:null,sessionStatus:`idle`,pendingApproval:!1,pendingBackup:!1,historyDismissed:!1,streamingEntryId:null,entryCounter:0})},resetForNewSession:()=>{e({entries:[],inputValue:``,thinking:!1,sessionId:null,sessionStatus:`idle`,pendingApproval:!1,pendingBackup:!1,historyDismissed:!0,streamingEntryId:null,entryCounter:0})},setInputValue:t=>e({inputValue:t}),setThinking:t=>e({thinking:t}),setPendingApproval:t=>e({pendingApproval:t}),setPendingBackup:t=>e({pendingBackup:t}),setSessionId:t=>e({sessionId:t}),setSessionStatus:t=>e({sessionStatus:t}),setHistoryDismissed:t=>e({historyDismissed:t}),setStreamingEntryId:t=>e({streamingEntryId:t}),setEntries:t=>e({entries:t})}))),Ot=`Hi! I'm the Doctor. State the nature of the issue you're experiencing with your assistant and I'll help diagnose and fix it.`,kt=new Set([`approve`,`approve all exec`,`approve all future exec commands`,`approve_all_exec`,`deny`]);function At(e,n){me({path:{assistant_id:e,session_id:n},throwOnError:!1}).catch(e=>t(e,{context:`doctor_cleanup_destroy`})),se({path:{assistant_id:e},throwOnError:!1}).catch(e=>t(e,{context:`doctor_cleanup_maintenance_exit`}))}var jt=k(`type`,[S({type:y(`message`),content:x()}),S({type:y(`message_delta`),content:x()}),S({type:y(`tool_call`),toolName:x(),input:E(x(),D()),id:x()}),S({type:y(`tool_result`),toolCallId:x(),content:x(),isError:T()}),S({type:y(`approval_required`),toolName:x(),input:E(x(),D()),id:x(),description:x()}),S({type:y(`backup_prompt`),toolName:x()}),S({type:y(`status`),status:C([y(`active`),y(`completed`),y(`error`)])}),S({type:y(`error`),message:x()})]);function Mt(e){try{let t=typeof e==`string`?JSON.parse(e):e,n=jt.safeParse(t);return n.success?n.data:null}catch{return null}}function Nt(e,t){e.setThinking(!1);let n=e.getStreamingEntryId();if(n)e.updateEntries(e=>e.map(e=>e.id===n?{...e,content:e.content+t.content}:e));else{let n=e.nextId();e.setStreamingEntryId(n),e.updateEntries(e=>[...e,{id:n,kind:`assistant`,content:t.content,timestamp:Date.now()}])}}function Pt(e){e.setThinking(!1),e.setStreamingEntryId(null)}function Ft(e,t){e.setThinking(!1),e.setStreamingEntryId(null),e.appendEntry({kind:`tool_call`,content:t.toolName,meta:{toolName:t.toolName,input:t.input,toolCallId:t.id,status:`running`}})}function It(e,t){e.updateEntries(e=>{let n=e.findIndex(e=>e.kind===`tool_call`&&e.meta.toolCallId===t.toolCallId);if(n===-1)return e;let r=e[n];if(r.kind!==`tool_call`)return e;let i=[...e];return i[n]={...r,meta:{...r.meta,result:t.content,isError:t.isError,status:t.isError?`error`:`completed`}},i})}function Lt(e,t){e.setThinking(!1),e.setPendingApproval(!0),e.appendEntry({kind:`approval`,content:t.toolName,meta:{toolName:t.toolName,input:t.input,toolCallId:t.id,description:t.description}})}function Rt(e,t){e.setThinking(!1),e.setPendingBackup(!0),e.appendEntry({kind:`backup_prompt`,content:t.toolName,meta:{toolName:t.toolName}})}function zt(e,t){return t.status===`completed`||t.status===`error`?(e.setThinking(!1),e.setSessionStatus(t.status),e.appendEntry({kind:`status`,content:t.status===`completed`?`Session completed`:`Session ended with error`}),!0):(e.setSessionStatus(t.status),!1)}function Bt(e,t){e.setThinking(!1),e.setPendingApproval(!1),e.setPendingBackup(!1),e.setStreamingEntryId(null),e.appendEntry({kind:`error`,content:t.message})}var Vt=new Set([404,410]);function Ht(){let e=(0,J.useRef)(null);return{connectSSE:(0,J.useCallback)((n,r)=>{let i=new AbortController;e.current=i;let a=!1,o=()=>e.current===i,s={updateEntries:e=>$.getState().updateEntries(e),setThinking:e=>$.getState().setThinking(e),setPendingApproval:e=>$.getState().setPendingApproval(e),setPendingBackup:e=>$.getState().setPendingBackup(e),setSessionStatus:e=>$.getState().setSessionStatus(e),appendEntry:e=>$.getState().appendEntry(e),nextId:()=>$.getState().nextId(),getStreamingEntryId:()=>$.getState().streamingEntryId,setStreamingEntryId:e=>$.getState().setStreamingEntryId(e)},c=t=>{if(!o())return;e.current=null;let n=$.getState();n.setThinking(!1),n.setPendingApproval(!1),n.setStreamingEntryId(null),n.setSessionStatus(`error`),n.appendEntry({kind:`error`,content:t})};function l(e){if(o())switch(e.type){case`message_delta`:Nt(s,e);break;case`message`:Pt(s);break;case`tool_call`:Ft(s,e);break;case`tool_result`:It(s,e);break;case`approval_required`:Lt(s,e);break;case`backup_prompt`:Rt(s,e);break;case`status`:zt(s,e)&&(a=!0);break;case`error`:Bt(s,e);break}}(async()=>{let e=null,s=!1,u=null;try{let{stream:d}=await de({path:{assistant_id:n,session_id:r},headers:{Accept:`text/event-stream, application/json`,...Oe()},signal:i.signal,sseMaxRetryAttempts:0,fetch:(async(e,t)=>{let n=await globalThis.fetch(e,t);return n.ok||(u=n.status,Vt.has(n.status)&&(s=!0)),n}),onSseError:t=>{s||(e=V(t,`Doctor stream disconnected`))}});if(!o())return;for await(let e of d){if(!o())return;let t=Mt(e);t&&l(t)}if(!o())return;if(s){a=!0;let e=$.getState();e.setThinking(!1),e.setStreamingEntryId(null),e.setSessionStatus(`completed`),e.setPendingApproval(!1),e.appendEntry({kind:`status`,content:`Previous session expired. Start a new session to continue.`});return}if(e){t(e,{context:`doctor_sse_stream`}),c(u?`Failed to connect to event stream (${u}). Start a new session to continue.`:`Event stream disconnected. Start a new session to continue.`);return}a||c(`Doctor event stream ended before the session completed. Start a new session to continue.`)}catch(e){if(i.signal.aborted)return;t(e,{context:`doctor_sse_stream`}),c(`Event stream disconnected. Start a new session to continue.`)}})()},[]),abort:(0,J.useCallback)(()=>{e.current?.abort(),e.current=null},[])}}function Ut(){let e=ee.use.activeAssistantId()??``,n=$.use.entries(),i=$.use.inputValue(),a=$.use.pendingApproval(),o=$.use.pendingBackup(),l=$.use.thinking(),u=$.use.sessionId(),d=$.use.sessionStatus(),f=$.use.historyDismissed(),[p,h]=(0,J.useState)(!1),g=G(),_=(0,J.useRef)(null),v=(0,J.useRef)(null),y=(0,J.useRef)(0),b=(0,J.useRef)(0),{connectSSE:x,abort:S}=Ht(),C=!!e&&u===null&&!f&&n.length===0,w=s({...Ce({path:{assistant_id:e||`placeholder`},query:{limit:1}}),enabled:C}),T=(w.data?Dt(w.data.results??[]):null)?.id??null,E=s({...Se({path:{assistant_id:e||`placeholder`,doctor_session_id:T??``}}),enabled:!!e&&!!T&&!f&&u===null&&n.length===0}),D=f?void 0:E.data,O=D?wt(D.status):null,k=(0,J.useMemo)(()=>D?Ct(D.messages??[]):[],[D]);(0,J.useEffect)(()=>{if(f||u!==null||n.length>0||!D||!T||O!==`active`)return;let t=$.getState(),r=Ct(D.messages??[]);t.setEntries(r),t.setPendingApproval(Tt(r)),t.setPendingBackup(Et(r)),t.setSessionId(T),t.setSessionStatus(`active`),x(e,T)},[f,u,n.length,D,O,T,e,x]),(0,J.useEffect)(()=>{w.error&&t(w.error,{context:`doctor_history_list`})},[w.error]),(0,J.useEffect)(()=>{E.error&&t(E.error,{context:`doctor_history_detail`})},[E.error]);let A=c({async mutationFn(e){let{data:t,error:n,response:r}=await fe({...e,throwOnError:!1});if(n)throw r?.status===429?new z(429,`You've used all of your available Doctor sessions for this month. Please try again next month.`):n;return t},onSuccess(t){let n=$.getState();n.setSessionId(t.session_id),n.setSessionStatus(`active`),n.setEntries([{kind:`assistant`,content:Ot,id:`greeting`,timestamp:Date.now()}]),x(e,t.session_id)},onError(e){e instanceof z&&e.status===429||t(e,{context:`start_doctor_session`});let n=$.getState();n.setSessionStatus(`error`),n.appendEntry({kind:`error`,content:e instanceof z?e.message:re(e,void 0,`Failed to start doctor session`)})}}),j=xe({onMutate(e){let t=e.body.content,n=$.getState();n.appendEntry({kind:`user`,content:t}),n.setInputValue(``),kt.has(t.toLowerCase())&&n.setPendingApproval(!1)},onSuccess(){$.getState().setThinking(!0)},onError(e){t(e,{context:`send_doctor_message`}),$.getState().appendEntry({kind:`error`,content:re(e,void 0,`Failed to send message`)})}}),M=A.isPending,N=j.isPending,P=t=>{let n=t.trim();!n||!u||j.mutate({path:{assistant_id:e,session_id:u},body:{content:n}})},F=()=>{S();let t=$.getState();t.sessionId&&e&&At(e,t.sessionId),t.teardown()},ne=()=>{S();let t=$.getState();t.sessionId&&e&&At(e,t.sessionId),t.resetForNewSession()},L=(0,J.useMemo)(()=>u||n.length>0?n:f?[]:k,[u,n,f,k]);(0,J.useEffect)(()=>{let e=L.at(-1)?.content.length??0;(L.length>y.current||e>b.current)&&_.current?.scrollTo({top:_.current.scrollHeight,behavior:`smooth`}),y.current=L.length,b.current=e},[L]),(0,J.useEffect)(()=>{let t=$.getState();t.lastAssistantId===e&&t.sessionStatus===`active`&&t.sessionId&&t.reset(),t.historyDismissed&&!t.sessionId&&$.setState({historyDismissed:!1})},[]),(0,J.useEffect)(()=>{let t=$.getState();if(t.lastAssistantId===e)return;let n=t.lastAssistantId,r=t.sessionId;S(),t.reset(),$.setState({lastAssistantId:e}),r&&n&&At(n,r)},[e,S]),(0,J.useEffect)(()=>()=>{S()},[S]);let R=u!==null&&d===`active`,ie=!R&&n.length>0&&(d===`completed`||d===`error`),ae=R||ie?d:O??`idle`,oe=C&&(w.isLoading||!!T&&E.isLoading);return(0,X.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 rounded-xl bg-[var(--surface-base)] p-5 ring-1 ring-[var(--border-base)]`,children:[(0,X.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,X.jsx)(Q,{className:`h-10 w-10 shrink-0`}),(0,X.jsx)(`h2`,{className:`text-title-small text-[var(--content-default)]`,children:`Doctor`}),(0,X.jsx)(m,{tone:`neutral`,title:`Doctor is in beta — use the Settings menu to submit feedback`,children:`Beta`}),g===`full`&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>h(!0),className:`cursor-pointer text-body-small-default text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)]`,children:`Share Feedback`})]}),R&&(0,X.jsxs)(`button`,{type:`button`,onClick:F,className:`flex cursor-pointer items-center gap-1.5 rounded border border-[var(--system-negative-strong)] px-3 py-1.5 text-body-small-default text-[var(--system-negative-strong)] transition-colors hover:bg-[var(--system-negative-weak)] disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,X.jsx)(Ee,{className:`h-3 w-3`}),`End Session`]})]}),oe?(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,X.jsx)(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-secondary)]`}),`Loading...`]}):e?ae===`idle`?(0,X.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4 py-12`,children:[(0,X.jsx)(Q,{className:`h-24 w-24 shrink-0`}),(0,X.jsxs)(`div`,{className:`text-center`,children:[(0,X.jsx)(`h3`,{className:`text-title-medium text-[var(--content-default)]`,children:`Assistant Doctor`}),(0,X.jsx)(`p`,{className:`mt-1 max-w-md text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Start a diagnostic session to have the Doctor analyze your assistant, identify issues, and suggest or apply fixes. The Doctor is free to use. Doctor logs may be temporarily stored.`})]}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>A.mutate({path:{assistant_id:e}}),disabled:M,className:`flex cursor-pointer items-center gap-2 rounded-lg bg-[var(--primary-base)] px-5 py-2.5 text-body-medium-default text-[var(--content-inset)] transition-colors hover:bg-[var(--primary-hover)] disabled:cursor-not-allowed disabled:opacity-50`,children:[M?(0,X.jsx)(I,{className:`h-4 w-4 animate-spin`}):(0,X.jsx)(Ne,{className:`h-4 w-4`}),`Start Doctor Session`]})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{ref:_,className:`min-h-0 flex-1 overflow-y-auto`,children:(0,X.jsxs)(`div`,{className:`mx-auto max-w-2xl space-y-3`,children:[L.map(e=>{switch(e.kind){case`user`:return(0,X.jsx)(pt,{entry:e},e.id);case`assistant`:return(0,X.jsx)(mt,{entry:e},e.id);case`tool_call`:return(0,X.jsx)(`div`,{className:`flex justify-start`,children:(0,X.jsx)(`div`,{className:`w-full`,children:(0,X.jsx)(ut,{entry:e})})},e.id);case`approval`:return(0,X.jsx)(`div`,{className:`max-w-[90%]`,children:(0,X.jsx)(dt,{entry:e,onRespond:P,disabled:!a||N})},e.id);case`backup_prompt`:return(0,X.jsx)(`div`,{className:`max-w-[90%]`,children:(0,X.jsx)(ft,{entry:e,onRespond:e=>{$.getState().setPendingBackup(!1),P(e)},disabled:!o||N})},e.id);case`error`:return(0,X.jsx)(ht,{entry:e},e.id);case`status`:return(0,X.jsx)(gt,{entry:e},e.id);default:return null}}),l&&(0,X.jsx)(`div`,{className:`flex justify-start`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-[5px] rounded-[var(--radius-lg)] bg-[var(--surface-overlay)] px-4 py-3`,children:[[-.333,0,-.667].map((e,t)=>(0,X.jsx)(`span`,{"aria-hidden":!0,className:`typing-dot block h-2 w-2 rounded-full bg-[var(--content-tertiary)]`,style:{animation:`typing-dot-pulse 1s ease-in-out infinite`,animationDelay:`${e}s`}},t)),(0,X.jsx)(`span`,{className:`sr-only`,children:`Thinking…`})]})}),R&&!L.length&&(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-disabled)]`,children:[(0,X.jsx)(I,{className:`h-4 w-4 animate-spin`}),`Connecting...`]})]})}),R&&(0,X.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),i.trim()&&!N&&(P(i),v.current&&(v.current.style.height=`auto`))},className:`mx-auto w-full max-w-2xl shrink-0 overflow-hidden rounded-[10px] bg-[var(--surface-lift)] shadow-sm ring-1 ring-transparent focus-within:ring-[var(--ring)]`,children:[(0,X.jsx)(`textarea`,{ref:v,value:i,onChange:e=>{$.getState().setInputValue(e.target.value),e.target.style.height=`auto`,e.target.style.height=`${Math.min(e.target.scrollHeight,160)}px`},onKeyDown:e=>{e.key!==`Enter`||e.shiftKey||e.nativeEvent.isComposing||e.keyCode===229||je()||(e.preventDefault(),i.trim()&&!N&&(P(i),v.current&&(v.current.style.height=`auto`)))},placeholder:a?`Type "approve" or "deny", or send a message...`:`Type a message...`,disabled:N,rows:1,className:`w-full resize-none border-none bg-transparent px-4 pb-2 pt-3 text-body-medium-lighter text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] focus:outline-none disabled:opacity-50`}),(0,X.jsx)(`div`,{className:`flex items-center justify-end px-3 pb-2`,children:(0,X.jsx)(r,{variant:`primary`,iconOnly:(0,X.jsx)(te,{className:`h-4 w-4`,strokeWidth:2.5}),type:`submit`,disabled:!i.trim()||N,"aria-label":`Send message`})})]}),(ie||!R&&O&&O!==`active`)&&(0,X.jsx)(`div`,{className:`flex shrink-0 items-center justify-center gap-3 py-2`,children:(0,X.jsxs)(`button`,{type:`button`,onClick:ne,className:`flex cursor-pointer items-center gap-2 rounded-lg bg-[var(--primary-base)] px-4 py-2 text-body-medium-default text-[var(--content-inset)] transition-colors hover:bg-[var(--primary-hover)]`,children:[(0,X.jsx)(Ne,{className:`h-4 w-4`}),`New Session`]})})]}):(0,X.jsx)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] px-4 py-3 text-body-medium-lighter text-[var(--content-tertiary)]`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(Q,{className:`h-6 w-6 shrink-0`}),(0,X.jsx)(`span`,{children:`No assistant found. Hatch an assistant to use the Doctor.`})]})}),(0,X.jsx)(Fe,{open:p,onClose:()=>h(!1),assistantId:e})]})}var Wt=[{id:`general`,label:`General`},{id:`terminal`,label:`Terminal`},{id:`doctor`,label:`Doctor`}];function Gt(){let[e,t]=o(),n=G({platformHostedOnly:!0}),r=(0,J.useMemo)(()=>Wt.filter(e=>!(e.id===`terminal`&&n===`gated`||e.id===`doctor`&&n===`gated`)),[n]),i=(0,J.useMemo)(()=>{let t=e.get(`tab`);return r.find(e=>e.id===t)?.id??`general`},[e,r]),a=n=>{let r=new URLSearchParams(e.toString());n===`general`?r.delete(`tab`):r.set(`tab`,n),t(r,{replace:!0})};return(0,X.jsxs)(`div`,{"data-slot":`debug-page`,className:`flex min-h-0 flex-1 flex-col`,children:[(0,X.jsx)(`div`,{role:`tablist`,"aria-label":`Debug sections`,className:`flex shrink-0 items-center gap-1 border-b border-[var(--border-base)]`,children:r.map(e=>{let t=e.id===i;return(0,X.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t,"aria-controls":`debug-tab-panel-${e.id}`,id:`debug-tab-${e.id}`,onClick:()=>a(e.id),className:we(`relative -mb-px cursor-pointer border-b-2 px-4 py-2 text-body-medium-default transition-colors`,t?`border-[var(--system-positive-strong)] text-[var(--system-positive-strong)]`:`border-transparent text-[var(--content-tertiary)] hover:text-[var(--content-default)] dark:text-[var(--content-disabled)] dark:hover:text-[var(--content-default)]`),children:e.label},e.id)})}),(0,X.jsxs)(`div`,{id:`debug-tab-panel-${i}`,role:`tabpanel`,"aria-labelledby":`debug-tab-${i}`,className:`flex min-h-0 flex-1 flex-col pt-6`,children:[i===`general`&&(0,X.jsx)(ct,{}),i===`terminal`&&(0,X.jsx)(Qe,{}),i===`doctor`&&(0,X.jsx)(Ut,{})]})]})}export{Gt as DebugPage};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-M3MS-KVB.js","assets/dist-BTp54SIT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-BewR0kVT.js";import{i as t}from"./dist-BTp54SIT.js";var n;(function(e){e.Light=`light`,e.Dark=`dark`})(n||={});var r=t(`SafeArea`,{web:()=>e(()=>import(`./web-M3MS-KVB.js`).then(e=>new e.SafeAreaWeb),__vite__mapDeps([0,1]))});export{r as SafeArea};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./dist-BTp54SIT.js";var t=e(`PushNotifications`,{});export{t as PushNotifications};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-Cg8gCWpB.js","assets/dist-BTp54SIT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-BewR0kVT.js";import{i as t}from"./dist-BTp54SIT.js";var n=t(`App`,{web:()=>e(()=>import(`./web-Cg8gCWpB.js`).then(e=>new e.AppWeb),__vite__mapDeps([0,1]))});export{n as App};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-iUXw2JWQ.js","assets/dist-BTp54SIT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-BewR0kVT.js";import{i as t}from"./dist-BTp54SIT.js";var n=t(`Browser`,{web:()=>e(()=>import(`./web-iUXw2JWQ.js`).then(e=>new e.BrowserWeb),__vite__mapDeps([0,1]))});export{n as Browser};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-DOKyhuGQ.js","assets/dist-BTp54SIT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-BewR0kVT.js";import{i as t}from"./dist-BTp54SIT.js";var n=t(`Share`,{web:()=>e(()=>import(`./web-DOKyhuGQ.js`).then(e=>new e.ShareWeb),__vite__mapDeps([0,1]))});export{n as Share};
|