@vellumai/web 0.11.3-staging.1 → 0.11.3-staging.3
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/{access-BEF4g5Xz.js → access-RDaLlBt5.js} +1 -1
- package/dist/assets/{account-page-CjBQhkfo.js → account-page-JyXn859b.js} +1 -1
- package/dist/assets/{account-shell-BwGiy59u.js → account-shell-DuR-x14B.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-BPcNCjiL.js → acp-run-detail-panel-BsGRKgJi.js} +1 -1
- package/dist/assets/{activity-steps-panel-DhuSLpCc.js → activity-steps-panel-DGS78a-e.js} +1 -1
- package/dist/assets/ai-page-84Y9c_q2.js +1 -0
- package/dist/assets/{api-key-screen-D1j3oper.js → api-key-screen-vFF5CrFw.js} +1 -1
- package/dist/assets/{app-card-BBt0ilaM.js → app-card-Df-Gy7pD.js} +1 -1
- package/dist/assets/{assistant-status-panel-DnkQ1jrJ.js → assistant-status-panel-C92c678g.js} +1 -1
- package/dist/assets/{auth-store-CPVpJ_c7.js → auth-store-BJdkkmzu.js} +1 -1
- package/dist/assets/{avatar-random-BHVo9v-a.js → avatar-random-BiLhcs1I.js} +1 -1
- package/dist/assets/{background-task-detail-panel-CyVrsboL.js → background-task-detail-panel-Dq1DgR5i.js} +1 -1
- package/dist/assets/billing-page-CAFoZYGH.js +3 -0
- package/dist/assets/{bookmarks-page-M8X5Jj_q.js → bookmarks-page-EeUOpkIO.js} +1 -1
- package/dist/assets/{build-state-DGpOoR0F.js → build-state-DJaFMxtL.js} +1 -1
- package/dist/assets/channels-page-route-DS9XLjMy.js +9 -0
- package/dist/assets/{chat-markdown-message-Dr9rA1lM.js → chat-markdown-message-C6oOqDdl.js} +1 -1
- package/dist/assets/{checkout-page-CQdvMHxx.js → checkout-page-BqIlZAum.js} +1 -1
- package/dist/assets/{command-palette-DjHOOk8U.js → command-palette-D6aRon6x.js} +1 -1
- package/dist/assets/{command-palette-window-page-msewbnL1.js → command-palette-window-page-B1jt_AiM.js} +1 -1
- package/dist/assets/{common-BUQt6ee_.js → common-wFfOb0rN.js} +1 -1
- package/dist/assets/{composer-settings-veIRzcPS.js → composer-settings-Du4kV9LG.js} +1 -1
- package/dist/assets/{contacts-page-route-Caog1niM.js → contacts-page-route-B4eanbVf.js} +1 -1
- package/dist/assets/{conversation-navigation-DqU55C7j.js → conversation-navigation-gR_RLe1J.js} +1 -1
- package/dist/assets/{conversation-queries-Bh_7RMKd.js → conversation-queries-Bx_JApUN.js} +1 -1
- package/dist/assets/{credentials-page-D3H8KP0a.js → credentials-page-BLMs_5u_.js} +1 -1
- package/dist/assets/{csv-preview-Crel8fKb.js → csv-preview-B0xuZwnc.js} +1 -1
- package/dist/assets/{debug-page-By8-4Cjy.js → debug-page-7plKE23B.js} +2 -2
- package/dist/assets/{deploy-dialogs-Dak-wWO4.js → deploy-dialogs-Bjz3OS-8.js} +1 -1
- package/dist/assets/{deploy-store-0HlKHhLJ.js → deploy-store-BGcHwvB5.js} +1 -1
- package/dist/assets/{detail-card-CmSV969e.js → detail-card-hWrhardR.js} +1 -1
- package/dist/assets/{detail-drawer-HN4NsyKg.js → detail-drawer-s-zfqqMy.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-DV6U5A7y.js → detail-panel-stop-button-CC6QoK-R.js} +1 -1
- package/dist/assets/{detail-shell-rL601Rqo.js → detail-shell-PCaxY4Tf.js} +1 -1
- package/dist/assets/{developer-page-Bgg8qW6q.js → developer-page-CV5m0xk-.js} +1 -1
- package/dist/assets/{document-viewer-container-BkKmz-ar.js → document-viewer-container-wjJ6ACJv.js} +2 -2
- package/dist/assets/{document-viewer-page-B-jAUGAO.js → document-viewer-page-C8YfZSmS.js} +1 -1
- package/dist/assets/{emails-page-B0r-ksKy.js → emails-page-BqvrSqnK.js} +1 -1
- package/dist/assets/{file-editor-BQUkusyI.js → file-editor-DOnVeKOG.js} +1 -1
- package/dist/assets/file-markdown-CGC6ZrPT.js +2 -0
- package/dist/assets/{first-run-scope-U5LrdMhR.js → first-run-scope-DKd0ZevK.js} +1 -1
- package/dist/assets/{general-page-Ce41M2hE.js → general-page-C7kX0xLP.js} +1 -1
- package/dist/assets/{hatching-screen-TI6k1_Q2.js → hatching-screen-Dws0nCOf.js} +1 -1
- package/dist/assets/{home-page-route-D6oL1pWj.js → home-page-route-Qs5WbFPD.js} +1 -1
- package/dist/assets/home-tool-permission-card-Do3YeiVC.js +1 -0
- package/dist/assets/{hosting-screen-CGkMm-2o.js → hosting-screen-BJB_azfa.js} +1 -1
- package/dist/assets/identity-page-route-uZNXQbMq.js +7 -0
- package/dist/assets/{index-3KliM4Ki.js → index-DRExgbkb.js} +1 -1
- package/dist/assets/index-Q1K0w5kB.css +2 -0
- package/dist/assets/{inspect-page-DD024DeO.js → inspect-page-C1dITgHA.js} +3 -3
- package/dist/assets/integration-icon-R8opqT3n.js +1 -0
- package/dist/assets/integrations-page-D4EH9FG0.js +1 -0
- package/dist/assets/{intelligence-layout-DOTYC75R.js → intelligence-layout-ByKfD_gm.js} +1 -1
- package/dist/assets/{library-detail-page-B2C4hPSd.js → library-detail-page-BciW_57s.js} +1 -1
- package/dist/assets/{library-page-Y2NwunY9.js → library-page-CMO0VZux.js} +1 -1
- package/dist/assets/{local-runtime-upgrade-12Yco-XF.js → local-runtime-upgrade-CXKbgZ4c.js} +1 -1
- package/dist/assets/{login-flow-fmfcNxyU.js → login-flow-CN5J4YsY.js} +1 -1
- package/dist/assets/{login-page-HFoMsSuP.js → login-page-5jtwkaF1.js} +1 -1
- package/dist/assets/{logout-page-B_3PiI2q.js → logout-page-Bz0x8UvE.js} +1 -1
- package/dist/assets/{logs-layout-7JGOJ0Gg.js → logs-layout-B_GC1zBM.js} +1 -1
- package/dist/assets/{memory-page-route-Cf8FoT6z.js → memory-page-route-BtL6zJZb.js} +1 -1
- package/dist/assets/{memory-router-playground-page-B4vWmkYZ.js → memory-router-playground-page-e4uW8QiT.js} +1 -1
- package/dist/assets/{message-files-panel-B8NzbXp3.js → message-files-panel-DxmbSrm8.js} +1 -1
- package/dist/assets/{messages-JRZkqLeA.js → messages-DSdy6Lfi.js} +1 -1
- package/dist/assets/{metric-card-Ba-Ju2sO.js → metric-card-BSJPacNm.js} +1 -1
- package/dist/assets/{mobile-sidebar-drawer-B0rTd7jy.js → mobile-sidebar-drawer-BGHwfePU.js} +1 -1
- package/dist/assets/{multi-activity-group-5OxVs26d.js → multi-activity-group-D_OVaru-.js} +1 -1
- package/dist/assets/{not-found-zOjj1km-.js → not-found-ClBCK2Sg.js} +1 -1
- package/dist/assets/{notifications-pzRj4j4m.js → notifications-G7qqgf4f.js} +1 -1
- package/dist/assets/{notifications-page-DTTyILgl.js → notifications-page-AW-ftrs5.js} +1 -1
- package/dist/assets/{open-workspace-file-FgLn-SuR.js → open-workspace-file-DViQQLp4.js} +2 -2
- package/dist/assets/{page-shell-DH240m1W.js → page-shell-Tpt9AIL2.js} +1 -1
- package/dist/assets/pairing-page-CGoWIhv7.js +1 -0
- package/dist/assets/{personality-page-B1BQNH7w.js → personality-page-avdvL3Dx.js} +1 -1
- package/dist/assets/{plans-page-B8oZfefa.js → plans-page-CdNdqHks.js} +1 -1
- package/dist/assets/{platform-login-notice-3g7rHtc3.js → platform-login-notice-BEDBlins.js} +1 -1
- package/dist/assets/{platform-loopback-page-DwnkFF3M.js → platform-loopback-page-DcHVugCF.js} +1 -1
- package/dist/assets/{plugin-detail-page-BrrXgSIx.js → plugin-detail-page-CnlqMl6e.js} +1 -1
- package/dist/assets/plugins-surface-C5i913ST.js +1 -0
- package/dist/assets/{preview-error-Di5TH4XQ.js → preview-error-CVMngD78.js} +1 -1
- package/dist/assets/{privacy-page-4LAU5IqF.js → privacy-page-CfJXPReU.js} +1 -1
- package/dist/assets/{privacy-screen-CNnBXznE.js → privacy-screen-4GElE18b.js} +1 -1
- package/dist/assets/{profile-pickers-BSDVzs_G.js → profile-pickers-ChG4_Gpc.js} +1 -1
- package/dist/assets/{provider-callback-page-CpfaqAgJ.js → provider-callback-page-rNJpxKm4.js} +1 -1
- package/dist/assets/{provider-key-C9asexKh.js → provider-key-BZOH9D9k.js} +1 -1
- package/dist/assets/{provider-signup-page-MukjbwOQ.js → provider-signup-page-BG-fVW-J.js} +1 -1
- package/dist/assets/{push-registration-CqXBOPNb.js → push-registration-C0GXHrCj.js} +1 -1
- package/dist/assets/{remove-from-device-dialog-DY5o8eIg.js → remove-from-device-dialog-BGqwuQw9.js} +1 -1
- package/dist/assets/{research-onboarding-route-BIY3OCwG.js → research-onboarding-route-s_8BLTOQ.js} +1 -1
- package/dist/assets/{retire-confirm-dialog-CgOoh5RG.js → retire-confirm-dialog-Bm7A3sZF.js} +1 -1
- package/dist/assets/{review-terms-screen-BA2I_7F2.js → review-terms-screen-CpWYZlRr.js} +1 -1
- package/dist/assets/routes-DE2XWIds.js +23 -0
- package/dist/assets/{runtime-upgrade-banner-9KhcwQWy.js → runtime-upgrade-banner-DtzsX2m0.js} +1 -1
- package/dist/assets/{sandbox-bridge-B6h4B0qp.js → sandbox-bridge-WZhWtkZd.js} +1 -1
- package/dist/assets/schedules-page-Cfala7Km.js +1 -0
- package/dist/assets/select-assistant-screen-BqObBI5Z.js +1 -0
- package/dist/assets/self-hosted-servers-DFgP80iG.js +1 -0
- package/dist/assets/{settings-divider-D_vHiuYw.js → settings-divider-Dyvf7Uk6.js} +1 -1
- package/dist/assets/{settings-layout-CINtkHJR.js → settings-layout-DfPO11SQ.js} +1 -1
- package/dist/assets/{settings-navigation-CHeVLLWI.js → settings-navigation-C1wEuU56.js} +1 -1
- package/dist/assets/{share-feedback-modal-BWez_NtT.js → share-feedback-modal-Ctgazbnj.js} +1 -1
- package/dist/assets/{sidebar-tree-aLYbZLvm.js → sidebar-tree-VXRWtsy4.js} +1 -1
- package/dist/assets/{signup-page-CiW0Chx7.js → signup-page-CLf-r4oP.js} +1 -1
- package/dist/assets/{site-favicon-B5ilr8wL.js → site-favicon-DfuXzZcN.js} +1 -1
- package/dist/assets/{skill-detail-page-T24C6W33.js → skill-detail-page-ChpWru-e.js} +2 -2
- package/dist/assets/{skill-detail-panel-BOPQ16Vg.js → skill-detail-panel-DU0bdJUl.js} +1 -1
- package/dist/assets/{skills-C2mjxWRN.js → skills-B4bfakyU.js} +1 -1
- package/dist/assets/{src-BMRW2yQf.js → src-DyqTPMO2.js} +1 -1
- package/dist/assets/{stt-language-picker-modal-BVO4V699.js → stt-language-picker-modal-BiWHaqFq.js} +1 -1
- package/dist/assets/{subagent-detail-panel-BCDOrwh3.js → subagent-detail-panel-Gi0UOlsn.js} +1 -1
- package/dist/assets/{subagent-store-BOpi4xxB.js → subagent-store-9SqF-NFa.js} +1 -1
- package/dist/assets/superpowers-page-nHT_hb33.js +1 -0
- package/dist/assets/{system-events-page-Bgo88uzO.js → system-events-page-Bfpn0HzE.js} +1 -1
- package/dist/assets/{telegram-setup-wizard-B3MHpy56.js → telegram-setup-wizard-GetgaQy5.js} +1 -1
- package/dist/assets/{text-preview-CPYq3og6.js → text-preview-CEL0P-WV.js} +1 -1
- package/dist/assets/{theme-stage-page-B6C95R4X.js → theme-stage-page-CEBFiy-u.js} +1 -1
- package/dist/assets/{tiptap-document-editor-By4wlOTs.js → tiptap-document-editor-DPkcv0pe.js} +1 -1
- package/dist/assets/{tool-detail-panel-E_gP0j1r.js → tool-detail-panel-84bl2nI3.js} +1 -1
- package/dist/assets/typed-storage-lk6_tW16.js +1 -0
- package/dist/assets/{upgrade-cancel-page-DCiT0Rqi.js → upgrade-cancel-page-DNteIqqS.js} +1 -1
- package/dist/assets/{upgrade-success-page-DLs3viaj.js → upgrade-success-page-CAeO4QtE.js} +1 -1
- package/dist/assets/{use-assistant-avatar-Dk975wdP.js → use-assistant-avatar-Dd-EU1FC.js} +1 -1
- package/dist/assets/{use-assistant-identity-details-DyvMGaA7.js → use-assistant-identity-details-DqiKjphK.js} +1 -1
- package/dist/assets/{use-attachment-preview-DjrcSin2.js → use-attachment-preview-B4PALbqs.js} +1 -1
- package/dist/assets/{use-attachment-squares-DHH1eTI4.js → use-attachment-squares-C-9Rz-8O.js} +1 -1
- package/dist/assets/{use-bookmarks-Wg8ueMhb.js → use-bookmarks-BWGVUg59.js} +1 -1
- package/dist/assets/{use-checkout-dismiss-refresh-wuwzKwo_.js → use-checkout-dismiss-refresh-BGeYbYii.js} +1 -1
- package/dist/assets/{use-command-palette-sections-CzHbFhwD.js → use-command-palette-sections-D3aj-BzX.js} +1 -1
- package/dist/assets/{use-edge-swipe-back-9-2nUEK7.js → use-edge-swipe-back-BGq52vVr.js} +2 -2
- package/dist/assets/{use-edit-app-PiQBQ9vN.js → use-edit-app-u-kyfEFX.js} +1 -1
- package/dist/assets/{use-invite-link-dialog-C6rYwhqr.js → use-invite-link-dialog-Ccf_XNV3.js} +1 -1
- package/dist/assets/{use-is-org-ready-BTUeuhPi.js → use-is-org-ready-CQntk0MX.js} +1 -1
- package/dist/assets/{use-onboarding-login-BXw1Fcg3.js → use-onboarding-login-Cw_9Ydsv.js} +1 -1
- package/dist/assets/{use-platform-assistant-id-DOBe1pF-.js → use-platform-assistant-id-DMP9urFb.js} +1 -1
- package/dist/assets/{use-platform-gate-DBRG0Q26.js → use-platform-gate-2lhRAyKS.js} +1 -1
- package/dist/assets/{use-return-to-short-circuit-Bl1RwuwD.js → use-return-to-short-circuit-Dm5PWev2.js} +1 -1
- package/dist/assets/{use-skill-actions-kLsl5L01.js → use-skill-actions-BopRxJ9x.js} +1 -1
- package/dist/assets/{use-sticky-profiles-CVsR9J8_.js → use-sticky-profiles-5cPu_MUo.js} +1 -1
- package/dist/assets/{use-subagent-card-data-BeUTFQdm.js → use-subagent-card-data-VnA5x24X.js} +1 -1
- package/dist/assets/{use-supports-bookmarks-FmvOAxKu.js → use-supports-bookmarks-z9pfj1Rm.js} +1 -1
- package/dist/assets/use-supports-credentials-settings-CEPArXBW.js +1 -0
- package/dist/assets/{use-transcript-message-by-id-C7L609Lk.js → use-transcript-message-by-id-DCOlEJjY.js} +1 -1
- package/dist/assets/{use-transcript-messages-BAG92dqc.js → use-transcript-messages-BEpY7uG4.js} +1 -1
- package/dist/assets/{use-voice-sample-preview-CVVwbBcE.js → use-voice-sample-preview-CzqJYPiZ.js} +1 -1
- package/dist/assets/{utils-CAZUrJMu.js → utils-CVoSWh7U.js} +1 -1
- package/dist/assets/{viewer-store-BhqBXvNu.js → viewer-store-CayI6XWh.js} +1 -1
- package/dist/assets/{voice-list-ChEr4jqe.js → voice-list-BS2BNjKN.js} +1 -1
- package/dist/assets/{voice-page-CkdnjoLc.js → voice-page-B7t0g-1X.js} +1 -1
- package/dist/assets/{voice-providers-note-DC4nbaBx.js → voice-providers-note-Cv7vCsDI.js} +1 -1
- package/dist/assets/{welcome-screen-BTnikex6.js → welcome-screen-eqR0DNzE.js} +1 -1
- package/dist/assets/{workflow-detail-panel-Bf6rP5UH.js → workflow-detail-panel-Dlj8i7AM.js} +1 -1
- package/dist/assets/{workspace-page-C8EUvGJ4.js → workspace-page-CAbshSeb.js} +1 -1
- package/dist/images/integrations/ATTRIBUTION.md +72 -0
- package/dist/images/integrations/airtable.svg +1 -0
- package/dist/images/integrations/asana.svg +1 -0
- package/dist/images/integrations/discord.svg +1 -0
- package/dist/images/integrations/dropbox.svg +1 -0
- package/dist/images/integrations/hubspot.svg +1 -0
- package/dist/images/integrations/salesforce.svg +5 -0
- package/dist/images/integrations/sanity.svg +1 -0
- package/dist/images/integrations/spotify.svg +1 -0
- package/dist/images/integrations/telegram.svg +1 -0
- package/dist/images/integrations/todoist.svg +1 -0
- package/dist/images/integrations/x.svg +1 -0
- package/dist/index.html +57 -57
- package/package.json +1 -1
- package/dist/assets/ai-page-CsufGyQ4.js +0 -1
- package/dist/assets/billing-page-CvZZTRHS.js +0 -3
- package/dist/assets/channels-page-route-Dj500t-M.js +0 -9
- package/dist/assets/file-markdown-DMq6D4CV.js +0 -2
- package/dist/assets/home-tool-permission-card-DG7KNyYY.js +0 -1
- package/dist/assets/identity-page-route-CLUGVFIg.js +0 -7
- package/dist/assets/index-BIhXfUlg.css +0 -2
- package/dist/assets/integration-icon-BaoRF0qI.js +0 -1
- package/dist/assets/integrations-page-Dygny-c2.js +0 -1
- package/dist/assets/pairing-page-Tun2QZT0.js +0 -1
- package/dist/assets/plugins-surface-B4NuEVD_.js +0 -1
- package/dist/assets/routes-DuLrKyjJ.js +0 -23
- package/dist/assets/schedules-page-CchXRGaR.js +0 -1
- package/dist/assets/select-assistant-screen-BHf9p-NL.js +0 -1
- package/dist/assets/superpowers-page-bOpdIXSO.js +0 -1
- package/dist/assets/typed-storage-UYklH-m5.js +0 -1
- package/dist/assets/use-supports-credentials-settings-BGgnzFf0.js +0 -1
- package/dist/assets/use-supports-schedule-profile-moves-CuKzMKxy.js +0 -1
- /package/dist/assets/{profile-metadata-DutSLpwl.js → profile-metadata-DgH7VoVU.js} +0 -0
- /package/dist/assets/{start-screen-zLwb2fyf.js → start-screen-CXUDtHbL.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Cw5vs0Ef.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-BENY-yx_.js";import{d as i,p as a}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as o}from"./QueryClientProvider-CMu7CkQU.js";import{t as s}from"./useQuery-Bz-fbQ-m.js";import{t as c}from"./useInfiniteQuery-Dk8q0n49.js";import{t as l}from"./useMutation-CXGTrp4W.js";import{t as u}from"./jsx-runtime-D3ZM-ToX.js";import{t as d}from"./cn-DFWryB3N.js";import{t as f}from"./typography-BeUa5Fd-.js";import{t as p}from"./calendar-CTyC1v1L.js";import{t as m}from"./chart-column-CEHOik7U.js";import{t as h}from"./chevron-down-CrFV6lfm.js";import{t as g}from"./chevron-right-DBGgpEiZ.js";import{t as _}from"./circle-alert-De9q5FVd.js";import{t as v}from"./clock-B8umTTHk.js";import{t as y}from"./coins-CJ7Ik1IC.js";import{N as b,R as x,a as S}from"./src-BMRW2yQf.js";import{t as C}from"./loader-circle-DOtGXcds.js";import{t as w}from"./play-UYtEUTRg.js";import{t as T}from"./repeat-BvvxRT2U.js";import{t as E}from"./settings-751LDGs_.js";import{t as D}from"./trash-2-BKXSi5Tj.js";import{t as O}from"./x-338EsJDP.js";import{t as k}from"./notice-C0ifrvvJ.js";import{t as A}from"./tag-DeMzQvCo.js";import{n as j,t as M}from"./input-DmHXRXaB.js";import{t as ee}from"./toggle-C-v4x7_A.js";import{t as N}from"./modal-DI63s9MQ.js";import{n as P}from"./toast-BpuLSxyt.js";import{t as F}from"./confirm-dialog-zx8L9sUi.js";import{t as I}from"./select-B8-i-CZ4.js";import{t as L}from"./skeleton-CJJwPIil.js";import{a as R,l as z,n as te,o as ne,r as re,s as ie}from"./profile-pickers-BSDVzs_G.js";import{d as B}from"./routes-iipg2wkc.js";import{F as ae,I as oe,L as se,R as ce,S as le,St as ue,Xt as de,_t as fe,an as pe,b as me,bt as he,gt as ge,in as _e,p as ve,u as V,vt as ye,x as be,y as xe,yt as Se,z as Ce}from"./react-query.gen-DxjuNs-5.js";import{n as we,t as Te}from"./conversation-navigation-DqU55C7j.js";import{n as Ee}from"./use-is-mobile-BP8UePsY.js";import{t as De}from"./effective-timezone-CjGPHJlt.js";import{t as Oe}from"./assistant-feature-flag-store-qYfAdlBG.js";import{t as H}from"./use-effective-timezone-BZgsy8ZD.js";import{t as ke}from"./use-assistant-capability-y4ML0NOY.js";import{t as Ae}from"./use-active-assistant-id-BvHP5Ojg.js";import{a as je,c as Me,i as Ne,l as Pe,n as Fe,o as Ie,r as Le,s as Re,t as ze}from"./schedules-kVuR00ra.js";import{t as Be}from"./detail-card-CmSV969e.js";import{n as Ve,t as He}from"./detail-drawer-HN4NsyKg.js";import{r as Ue,t as We}from"./profile-metadata-DutSLpwl.js";import{n as Ge}from"./use-supports-schedule-profile-moves-CuKzMKxy.js";import{t as Ke}from"./page-empty-state-DtjiuvvO.js";var U=e(n(),1),qe={frequency:`daily`,minute:0,hour24:9,weekdays:[1],dayOfMonth:1},W=[{value:0,letter:`S`,short:`Sun`,full:`Sunday`},{value:1,letter:`M`,short:`Mon`,full:`Monday`},{value:2,letter:`T`,short:`Tue`,full:`Tuesday`},{value:3,letter:`W`,short:`Wed`,full:`Wednesday`},{value:4,letter:`T`,short:`Thu`,full:`Thursday`},{value:5,letter:`F`,short:`Fri`,full:`Friday`},{value:6,letter:`S`,short:`Sat`,full:`Saturday`}],Je=[1,2,3,4,5];function G(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,Math.round(e))):t}function Ye(e){let t=Array.from(new Set(e.map(e=>G(e,0,6)).filter(e=>Number.isInteger(e)))).sort((e,t)=>e-t);return t.length>0?t:[1]}function Xe(e){let t=G(e.minute,0,59),n=G(e.hour24,0,23);switch(e.frequency){case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${Ye(e.weekdays).join(`,`)}`;case`monthly`:return e.dayOfMonth===`last`?`${t} ${n} L * *`:`${t} ${n} ${G(e.dayOfMonth,1,28)} * *`}}function Ze(e,t){let n=G(e,0,23),r=G(t,0,59),i=n<12?`AM`:`PM`;return`${n%12==0?12:n%12}:${String(r).padStart(2,`0`)} ${i}`}function Qe(e){let t=[`th`,`st`,`nd`,`rd`],n=e%100;return`${e}${t[(n-20)%10]??t[n]??t[0]}`}function $e(e){let t=Ye(e),n=new Set(t);if(t.length===7)return`every day`;if(t.length===5&&Je.every(e=>n.has(e)))return`every weekday`;if(t.length===2&&n.has(0)&&n.has(6))return`every weekend`;if(t.length===1)return`every ${W[t[0]]?.full??`day`}`;let r=t.map(e=>W[e]?.short??``),i=r.pop();return`every ${r.join(`, `)} & ${i}`}function et(e){let t=Ze(e.hour24,e.minute);switch(e.frequency){case`hourly`:{let t=G(e.minute,0,59);return`Runs every hour at :${String(t).padStart(2,`0`)}`}case`daily`:return`Runs every day at ${t}`;case`weekly`:return`Runs ${$e(e.weekdays)} at ${t}`;case`monthly`:return e.dayOfMonth===`last`?`Runs on the last day of every month at ${t}`:`Runs on the ${Qe(G(e.dayOfMonth,1,28))} of every month at ${t}`}}var K=u(),tt=[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`}],nt=Array.from({length:12},(e,t)=>{let n=t+1;return{value:String(n),label:String(n)}}),rt=Array.from({length:12},(e,t)=>{let n=t*5,r=String(n).padStart(2,`0`);return{value:r,label:r}}),it=[...Array.from({length:28},(e,t)=>{let n=t+1;return{value:String(n),label:Qe(n)}}),{value:`last`,label:`Last day`}],at=[{value:`AM`,label:`AM`},{value:`PM`,label:`PM`}];function ot(e,t){let n=e%12;return t===`PM`?n+12:n}function st(e){try{let t=new Intl.DateTimeFormat(`en-US`,{timeZone:e,timeZoneName:`short`}).formatToParts(new Date).find(e=>e.type===`timeZoneName`)?.value;return t&&t!==e?`${e} · ${t}`:e}catch{return e}}function ct({isOpen:e,assistantId:t,onClose:n,onCreated:r}){return(0,K.jsx)(N.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,K.jsx)(lt,{assistantId:t,onClose:n,onCreated:r}):null})}function lt({assistantId:e,onClose:t,onCreated:n}){let i=H(),[a,o]=(0,U.useState)(``),[s,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(``),[d,f]=(0,U.useState)(`simple`),[p,m]=(0,U.useState)(qe),[h,g]=(0,U.useState)(``),[_,v]=(0,U.useState)(!1),[y,b]=(0,U.useState)(null),x=a.trim(),S=s.trim(),C=l.trim(),w=h.trim(),T=(0,U.useMemo)(()=>d===`simple`?Xe(p):w,[d,p,w]),E=(0,U.useMemo)(()=>d===`simple`?et(p):w||`Enter a cron expression to continue.`,[d,p,w]),D=(0,U.useMemo)(()=>st(i),[i]),O=x.length>0&&S.length>0&&C.length>0&&T.length>0&&!_;return(0,K.jsxs)(N.Content,{size:`md`,children:[(0,K.jsxs)(N.Header,{children:[(0,K.jsx)(N.Title,{children:`Create schedule`}),(0,K.jsx)(N.Description,{children:`Schedule a recurring instruction for your assistant. Runs in execute mode — the message is delivered to the assistant on each fire.`})]}),(0,K.jsxs)(`form`,{onSubmit:async t=>{if(t.preventDefault(),O){v(!0),b(null);try{await ze(e,{name:x,description:S,expression:T,message:C,timezone:i}),v(!1),n()}catch(e){b(e instanceof Error?e.message:`Failed to create schedule.`),v(!1)}}},children:[(0,K.jsx)(N.Body,{children:(0,K.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,K.jsx)(M,{label:`Name`,placeholder:`Morning briefing`,value:a,onChange:e=>o(e.target.value),required:!0,autoFocus:!0,fullWidth:!0}),(0,K.jsx)(j,{label:`Description`,placeholder:`What is this schedule for?`,value:s,onChange:e=>c(e.target.value),required:!0,fullWidth:!0,rows:2}),(0,K.jsx)(mt,{label:`Repeat`,children:d===`simple`?(0,K.jsx)(ut,{cadence:p,onChange:m}):(0,K.jsx)(pt,{value:h,onChange:g,onUseSimple:()=>f(`simple`)})}),(0,K.jsx)(ht,{summary:E,mono:d===`advanced`&&w.length>0,timezoneLabel:D}),d===`simple`?(0,K.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e||Xe(p)),f(`advanced`)},className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`Advanced — write a cron expression`}):null,(0,K.jsx)(j,{label:`Message`,placeholder:`What should the assistant do on each fire?`,value:l,onChange:e=>u(e.target.value),required:!0,fullWidth:!0,rows:4}),y?(0,K.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:y}):null]})}),(0,K.jsxs)(N.Footer,{children:[(0,K.jsx)(r,{variant:`outlined`,onClick:t,type:`button`,children:`Cancel`}),(0,K.jsx)(r,{variant:`primary`,type:`submit`,disabled:!O,children:_?`Creating…`:`Create schedule`})]})]})]})}function ut({cadence:e,onChange:t}){return(0,K.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,K.jsx)(x,{items:tt,value:e.frequency,onChange:n=>t({...e,frequency:n}),ariaLabel:`How often the schedule runs`}),e.frequency===`hourly`?(0,K.jsx)(q,{label:`At minute`,children:(0,K.jsx)(I,{options:rt,value:String(e.minute).padStart(2,`0`),onChange:n=>t({...e,minute:Number(n)}),"aria-label":`Minute`,className:`w-24`})}):null,e.frequency===`weekly`?(0,K.jsx)(q,{label:`On these days`,children:(0,K.jsx)(ft,{value:e.weekdays,onChange:n=>t({...e,weekdays:n})})}):null,e.frequency===`monthly`?(0,K.jsx)(q,{label:`On day`,children:(0,K.jsx)(I,{options:it,value:e.dayOfMonth===`last`?`last`:String(e.dayOfMonth),onChange:n=>t({...e,dayOfMonth:n===`last`?`last`:Number(n)}),"aria-label":`Day of month`,className:`w-32`})}):null,e.frequency===`hourly`?null:(0,K.jsx)(q,{label:`At time`,children:(0,K.jsx)(dt,{hour24:e.hour24,minute:e.minute,onChange:(n,r)=>t({...e,hour24:n,minute:r})})})]})}function dt({hour24:e,minute:t,onChange:n}){let r=e<12?`AM`:`PM`,i=e%12==0?12:e%12;return(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(I,{options:nt,value:String(i),onChange:e=>n(ot(Number(e),r),t),"aria-label":`Hour`,className:`w-[72px]`}),(0,K.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:`:`}),(0,K.jsx)(I,{options:rt,value:String(t).padStart(2,`0`),onChange:t=>n(e,Number(t)),"aria-label":`Minute`,className:`w-[72px]`}),(0,K.jsx)(`div`,{className:`w-[112px]`,children:(0,K.jsx)(x,{items:at,value:r,onChange:e=>n(ot(i,e),t),ariaLabel:`AM or PM`})})]})}function ft({value:e,onChange:t}){let n=new Set(e),r=e=>{let r=new Set(n);r.has(e)?r.size>1&&r.delete(e):r.add(e),t([...r].sort((e,t)=>e-t))};return(0,K.jsx)(`div`,{className:`flex gap-1.5`,children:W.map(e=>{let t=n.has(e.value);return(0,K.jsx)(`button`,{type:`button`,onClick:()=>r(e.value),"aria-pressed":t,"aria-label":e.full,title:e.full,className:d(`flex h-9 w-9 items-center justify-center rounded-md border text-body-medium-default transition-colors`,t?`border-[var(--border-active)] bg-[var(--surface-active)] text-[var(--content-emphasised)]`:`border-[var(--field-border)] text-[var(--content-tertiary)] hover:border-[var(--border-active)] hover:text-[var(--content-default)]`),children:e.letter},e.value)})})}function pt({value:e,onChange:t,onUseSimple:n}){return(0,K.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,K.jsx)(M,{placeholder:`0 9 * * *`,value:e,onChange:e=>t(e.target.value),fullWidth:!0,className:`font-mono`,"aria-label":`Cron expression`,helperText:`Standard 5-field cron (minute hour day month weekday). RRULE expressions are also accepted.`}),(0,K.jsx)(`button`,{type:`button`,onClick:n,className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`← Back to the simple builder`})]})}function mt({label:e,children:t}){return(0,K.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:e}),t]})}function q({label:e,children:t}){return(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,K.jsx)(`span`,{className:`min-w-[88px] text-body-small-default text-[var(--content-tertiary)]`,children:e}),t]})}function ht({summary:e,mono:t,timezoneLabel:n}){return(0,K.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3.5 py-3`,children:[(0,K.jsx)(v,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`p`,{className:d(`text-body-medium-default text-[var(--content-default)]`,t&&`break-all font-mono`),children:e}),(0,K.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Times use your timezone — `,n,`.`]})]})]})}function gt(e=De(),t=Date.now()){return Ue(`7d`,e,t)}function J(e){return e?new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0}):`—`}function _t(e){return e==null?`—`:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}var vt=new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`,minimumFractionDigits:2,maximumFractionDigits:2});function Y(e){return e==null||!Number.isFinite(e)?`—`:vt.format(e)}function yt(e){return`${e.toLocaleString()} ${e===1?`run`:`runs`}`}function bt(e){let t=Math.round(e/6e4);return t>=60&&t%60==0?`Every ${t/60} hr`:`Every ${t} min`}function xt(e){if(!e)return;let t=new Set,n=[];for(let r of e)for(let e of r.runs)t.has(e.id)||(t.add(e.id),n.push(e));return n}function St(e){return!!e.conversationId&&e.conversationExists===!0&&e.conversationArchivedAt==null}function Ct(e){return St(e)?e.conversationId??null:null}function X(e){return typeof e==`string`&&e.length>0}function wt(e){return e.status===`pending`||e.status===`superseded`}function Tt(e){return e.status!==`skipped`&&e.status!==`missed`&&!wt(e)}var Et={heartbeat:`system-heartbeat`,consolidation:`system-consolidation`,retrospective:`system-memory-retrospective`};function Dt(e){if(e.cronExpression)return e.timezone?`Cron: ${e.cronExpression} (${e.timezone})`:`Cron: ${e.cronExpression}`;let t=bt(e.intervalMs);return e.activeHoursStart!=null&&e.activeHoursEnd!=null&&(t+=` (${e.activeHoursStart}:00–${e.activeHoursEnd}:00)`),t}function Ot(e){return bt(e.intervalMs)}var kt=`After conversation activity`;function At(e){return e.status!==`fired`&&e.status!==`cancelled`}function jt(e,t){return At(e)?e.status===`firing`?!1:e.nextRunAt==null||!e.enabled&&e.nextRunAt<=t:!0}function Mt(e,t){let n=[],r=[],i=[];for(let a of e)a.isOneShot?jt(a,t)?i.push(a):r.push(a):n.push(a);return n.sort((e,t)=>e.enabled===t.enabled?(e.nextRunAt??1/0)-(t.nextRunAt??1/0):e.enabled?-1:1),r.sort((e,t)=>(e.nextRunAt??1/0)-(t.nextRunAt??1/0)),i.sort((e,t)=>{let n=e.lastRunAt??e.nextRunAt??0;return(t.lastRunAt??t.nextRunAt??0)-n}),{recurring:n,upcomingOneTime:r,pastOneTime:i}}function Nt(e,t,n=!0){return{queryKey:[{_id:`schedulesUsagesummaryGet`,path:{assistant_id:e??``},_tz:t}],queryFn:()=>e?Ne(e,gt(t)):Promise.resolve([]),enabled:n,staleTime:1e4}}function Pt(e){return{scheduleId:e,runCount:0,totalEstimatedCostUsd:0,eventCount:0}}function Ft(e,t,n){let r=(t??[]).filter(e=>{let t=e.startedAt??e.createdAt;return Tt(e)&&t>=n.from&&t<=n.to});return{scheduleId:e,runCount:r.length,totalEstimatedCostUsd:r.reduce((e,t)=>{let n=t.estimatedCostUsd;return typeof n==`number`&&Number.isFinite(n)?e+n:e},0),eventCount:0}}function It(e,t,n){let r=!!e&&n?.enabled!==!1,{data:i}=s({...ve({path:{assistant_id:e}}),enabled:r,staleTime:6e4}),{data:a}=s({...V({path:{assistant_id:e}}),enabled:r,staleTime:6e4}),o=i?.callSites.find(e=>e.id===t)?.defaultProfile??null;return o==null?{key:null,label:null}:{key:o,label:(a?We(a):{})[o]?.displayName??o}}function Lt(e,n,r){let i=It(e,`mainAgent`),a=Ge(e),[o,s]=(0,U.useState)(!1),c=(0,U.useMemo)(()=>i.key?n.filter(e=>At(e)&&e.inferenceProfile!==i.key).length:0,[i.key,n]),u=i.label,d=l({mutationFn:t=>je(e,null,t),onSuccess:e=>{s(!1),r(),P.success(e===0?`Every schedule already runs on ${u}.`:`Moved ${e} ${e===1?`schedule`:`schedules`} to ${u}.`)},onError:e=>{t(e,{context:`schedules_rebase_inference_profile`}),P.error(`Failed to move the schedules.`)}});return{defaultProfileLabel:u,offDefaultCount:c,canRebase:a&&c>0,requestRebase:()=>s(!0),dialogProps:{open:o&&a&&i.key!=null,profileLabel:u,offDefaultCount:c,isPending:d.isPending,onConfirm:()=>{i.key&&d.mutate(i.key)},onCancel:()=>s(!1)}}}function Rt({open:e,profileLabel:t,offDefaultCount:n,isPending:r,onConfirm:i,onCancel:a}){return(0,K.jsx)(F,{open:e,title:`Use ${t} for every schedule?`,message:`${n} of the schedules below ${n===1?`runs`:`run`} on a different model. This moves every schedule, including reminders your assistant set aside for later, onto ${t}, your current default. Schedules you deliberately put on another model move too.`,confirmLabel:`Move schedules`,isPending:r,onConfirm:i,onCancel:a})}function zt({status:e}){return(0,K.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full`,style:{backgroundColor:e===`ok`||e===`completed`?`var(--system-positive-strong)`:e===`error`||e===`failed`?`var(--system-negative-strong)`:`var(--content-tertiary)`},"aria-label":e??`unknown`})}function Bt({scheduleName:e,usage:t,onOpenUsage:n}){if(t.status===`loading`)return(0,K.jsxs)(`div`,{"aria-label":`Loading schedule usage`,className:`flex w-[156px] shrink-0 items-center justify-end gap-3`,children:[(0,K.jsx)(L,{as:`span`,className:`h-5 w-16`}),(0,K.jsx)(L,{as:`span`,className:`h-5 w-16`})]});let r=t.status===`error`,i=r?`--`:Y(t.summary.totalEstimatedCostUsd),a=r?`--`:yt(t.summary.runCount),o=t.status===`ready`&&!(t.summary.totalEstimatedCostUsd>0),s=t.status===`ready`&&t.summary.runCount===0,c=o?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`,l=s?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`;return(0,K.jsxs)(`div`,{className:`flex w-[156px] shrink-0 items-center justify-end gap-3 text-right text-body-small-default`,children:[n?(0,K.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`View usage for ${e}`,className:`min-w-[64px] cursor-pointer rounded px-1 py-0.5 text-right transition-colors hover:bg-[var(--surface-hover)] ${c}`,children:i}):(0,K.jsx)(`span`,{"aria-label":`Cost for ${e} in the last 7 days: ${i}`,className:`block min-w-[64px] px-1 py-0.5 ${c}`,children:i}),(0,K.jsx)(`span`,{"aria-label":`Runs for ${e} in the last 7 days: ${a}`,className:`block min-w-[64px] px-1 py-0.5 ${l}`,children:a})]})}function Vt({name:e,subtitle:t,enabled:n,nextRunAt:r,lastRunAt:i,usage:a,helperText:o,statusLabel:s,statusTone:c=`neutral`,onClick:l}){return(0,K.jsx)(`div`,{className:`flex flex-wrap items-center gap-3 rounded-md px-2 py-3 transition-colors hover:bg-[var(--surface-hover)] [&+&]:border-t [&+&]:border-[var(--border-base)]`,children:(0,K.jsxs)(`button`,{type:`button`,onClick:l,"aria-label":`Open ${e}`,className:`flex min-w-0 flex-1 cursor-pointer flex-wrap items-center gap-3 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,K.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e})}),(0,K.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:t}),o?(0,K.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-secondary)]`,children:o}):null,(0,K.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-body-small-default text-[var(--content-tertiary)]`,children:[r?(0,K.jsxs)(`span`,{children:[`Next: `,J(r)]}):null,i?(0,K.jsxs)(`span`,{children:[`Last: `,J(i)]}):null]})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-3`,children:[(0,K.jsx)(Bt,{scheduleName:e,usage:a}),s?(0,K.jsx)(A,{tone:c,children:s}):(0,K.jsx)(`span`,{className:`h-2 w-2 rounded-full`,style:{backgroundColor:n?`var(--system-positive-strong)`:`var(--content-disabled)`},"aria-label":n?`enabled`:`disabled`}),(0,K.jsx)(g,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})})}function Ht({heartbeatConfig:e,consolidationConfig:t,retrospectiveConfig:n,heartbeatUsage:r,consolidationUsage:i,retrospectiveUsage:a,isLoading:o,hasError:s,onRetry:c,onSelectHeartbeat:l,onSelectConsolidation:u,onSelectRetrospective:d}){let f=e!=null,p=t?.available===!0,m=n?.available===!0,g=f||p||m;if(!o&&!s&&!g)return null;let _=[...f?[r]:[],...p?[i]:[],...m?[a]:[]].filter(e=>e.status===`ready`),v=_.reduce((e,t)=>e+(t.summary.totalEstimatedCostUsd??0),0),y=o?(0,K.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,K.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):s&&!g?(0,K.jsxs)(k,{tone:`error`,children:[`Failed to load system jobs.`,` `,(0,K.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]}):(0,K.jsxs)(`div`,{children:[f?(0,K.jsx)(Vt,{name:`Heartbeat`,subtitle:Dt(e),enabled:e.enabled,nextRunAt:e.nextRunAt,lastRunAt:e.lastRunAt,usage:r,onClick:l}):null,p?(0,K.jsx)(Vt,{name:`Consolidation`,subtitle:Ot(t),enabled:t.enabled,helperText:t.enabled?void 0:`Memory is off, so consolidation is paused.`,nextRunAt:t.nextRunAt,lastRunAt:t.lastRunAt,usage:i,statusLabel:t.enabled?void 0:`Paused`,statusTone:`warning`,onClick:u}):null,m?(0,K.jsx)(Vt,{name:`Memory retrospective`,subtitle:kt,enabled:n.enabled,helperText:n.enabled?void 0:`Retrospectives are turned off in Memory settings.`,nextRunAt:n.nextRunAt,lastRunAt:n.lastRunAt,usage:a,statusLabel:n.enabled?void 0:`Paused`,statusTone:`warning`,onClick:d}):null,s?(0,K.jsx)(`div`,{className:`pt-3 first:pt-0`,children:(0,K.jsxs)(k,{tone:`error`,children:[`Some system jobs failed to load.`,` `,(0,K.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]})}):null]});return(0,K.jsx)(Be,{children:(0,K.jsx)(S.Root,{type:`multiple`,children:(0,K.jsxs)(S.Item,{value:`system-jobs`,children:[(0,K.jsxs)(S.Trigger,{className:`group justify-between gap-3`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1 text-left`,children:[(0,K.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`System`}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Built-in jobs managed by the assistant runtime`})]}),(0,K.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[_.length>0?(0,K.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[Y(v),` (7d)`]}):null,(0,K.jsx)(h,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]})]}),(0,K.jsx)(S.Content,{children:(0,K.jsx)(`div`,{className:`mt-3`,children:y})})]})})})}var Ut={disabled:`heartbeat is disabled`,outside_active_hours:`outside active hours`,overlap:`previous run was still active`,pre_first_user_message:`waiting for the first conversation`,max_consecutive_runs:`consecutive-run cap reached`,max_daily_runs:`daily run cap reached`,quiesced:`assistant was shutting down`};function Wt(e){return e.status===`missed`?`Missed while the assistant was offline`:`skipReason`in e&&e.skipReason?`Skipped — ${Ut[e.skipReason]??e.skipReason}`:null}function Z(e,t){return{id:e.id,jobId:t,status:e.status,startedAt:e.startedAt??e.scheduledFor,finishedAt:e.finishedAt,durationMs:e.durationMs,output:Wt(e),error:e.error,conversationId:e.conversationId,conversationExists:e.conversationExists,conversationArchivedAt:e.conversationArchivedAt,estimatedCostUsd:e.estimatedCostUsd,createdAt:e.createdAt,...`title`in e?{title:e.title}:{}}}function Gt(e){return e.runs.filter(e=>!wt(e)).map(e=>Z(e,`heartbeat`))}function Kt(e){return e.runs.map(e=>Z(e,`consolidation`))}function qt(e){return e.runs.map(e=>Z(e,`retrospective`))}var Q=1e4;function Jt(e,t,n,r,i){return e?{status:`loading`}:t?{status:`error`}:{status:`ready`,summary:Ft(n,r,i)}}function Yt(e,n){let r=o(),i={path:{assistant_id:e??``}},{data:a,isLoading:c,isError:l,refetch:u}=s({...ae(i),enabled:!!e,staleTime:Q}),{data:d,isLoading:f,isError:p,refetch:m}=s({...xe(i),enabled:!!e,staleTime:Q}),{data:h,isLoading:g,isError:_,refetch:v}=s({...ge(i),enabled:!!e,staleTime:Q}),y={path:{assistant_id:e??``},query:{limit:100}},{data:b,isLoading:x,isError:S,refetch:C}=s({...Ce(y),select:Gt,enabled:!!e&&a!=null,staleTime:Q}),{data:w,isLoading:T,isError:E,refetch:D}=s({...le(y),select:Kt,enabled:!!e&&d?.available===!0,staleTime:Q}),{data:O,isLoading:k,isError:A,refetch:j}=s({...Se(y),select:qt,enabled:!!e&&h?.available===!0,staleTime:Q}),M=(0,U.useMemo)(()=>gt(n),[n]),ee=(0,U.useMemo)(()=>Jt(x,S,Et.heartbeat,b,M),[b,S,x,M]),N=(0,U.useMemo)(()=>Jt(T,E,Et.consolidation,w,M),[w,E,T,M]),F=(0,U.useMemo)(()=>Jt(k,A,Et.retrospective,O,M),[O,A,k,M]),I=t=>{if(!e)return;let n={heartbeat:{config:ae(i).queryKey,runs:Ce(y).queryKey,infinite:ce(i)},consolidation:{config:xe(i).queryKey,runs:le(y).queryKey,infinite:be(i)},retrospective:{config:ge(i).queryKey,runs:Se(y).queryKey,infinite:ye(i)}}[t];r.invalidateQueries({queryKey:n.config}),r.invalidateQueries({queryKey:n.runs}),r.invalidateQueries({queryKey:n.infinite})},L=pe({onSuccess:e=>{e.ran?P.success(`Heartbeat started.`):P.info(`Heartbeat skipped.`)},onError:e=>{t(e,{context:`heartbeat_run_now`}),P.error(`Failed to run heartbeat.`)},onSettled:()=>I(`heartbeat`)}),R=de({onSuccess:e=>{e.ran?P.success(`Consolidation queued.`):P.info(`Consolidation already queued or running.`)},onError:e=>{t(e,{context:`consolidation_run_now`}),P.error(`Failed to run consolidation.`)},onSettled:()=>I(`consolidation`)}),z=_e({onSuccess:e=>{oe(r,i,e),P.success(e.enabled?`Heartbeat enabled.`:`Heartbeat disabled.`)},onError:e=>{t(e,{context:`heartbeat_toggle`}),P.error(`Failed to toggle heartbeat.`)}});return{heartbeatConfig:a,consolidationConfig:d,retrospectiveConfig:h,heartbeatUsage:ee,consolidationUsage:N,retrospectiveUsage:F,isLoading:c||f||g,hasError:l||p||_,isHeartbeatRunning:L.isPending,isConsolidationRunning:R.isPending,isHeartbeatLoading:c,isHeartbeatError:l,isConsolidationLoading:f,isConsolidationError:p,isRetrospectiveLoading:g,isRetrospectiveError:_,refetchHeartbeat:u,refetchConsolidation:m,refetchRetrospective:v,runHeartbeatNow:()=>{e&&L.mutate({path:{assistant_id:e}})},runConsolidationNow:()=>{e&&R.mutate({path:{assistant_id:e}})},toggleHeartbeat:t=>{e&&z.mutate({body:{enabled:t},path:{assistant_id:e}})},refetchAll:()=>{u(),m(),v(),C(),D(),j()}}}function Xt(e){return/^plugin:([^/]+)\//.exec(e??``)?.[1]??null}var Zt=`Default (assistant's main model)`,Qt=`Custom call-site model`;function $t(e,t){return t?.[e]?.displayName??e}function en(e,t){if(e==null)return;if(e.provider!=null||e.model!=null)return Qt;let n=e.profile?.trim();return n?`Override (${$t(n,t)})`:void 0}function tn({assistantId:e,pinnedProfile:t,defaultCallSite:n=`mainAgent`,fallbackLabel:r=Zt,respectCallSiteOverride:i=!1}){let a=t==null,{data:o}=s({...V({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),c=(0,U.useMemo)(()=>o?We(o):{},[o]),{label:l}=It(e,n,{enabled:a}),u=a&&i?en(o?.llm?.callSites?.[n],c):void 0,d=t==null?u??(l==null?r:`Default (${l})`):$t(t,c);return(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,K.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Model profile`}),(0,K.jsx)(`span`,{className:`min-w-0 text-right`,children:d})]})}function nn(e,t,n){let r=z(e?.profiles??{},e?.profileOrder??[]);return[{value:null,label:`Default`},...ne(r,[t],n).map(e=>{let t=te(e,r,n);return{value:e.name,label:re(e),...t?{issue:t}:{},...t===`undispatchable`?{reason:R(e)}:{}}})]}function rn(e,t){let{data:n}=s({...V({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),r=ie();return(0,U.useMemo)(()=>nn(n?.llm,t,{requireOwnProviderAndModel:r}),[n?.llm,t,r])}function an({assistantId:e,value:t,onChange:n,disabled:r=!1,isSaving:i=!1,className:a,includeDefaultOption:o=!0,placeholder:s}){return(0,K.jsx)(I,{value:t,onChange:n,onSelectNone:()=>n(null),options:rn(e,t).filter(e=>o||e.value!=null).map(e=>({...e.issue===`undispatchable`?{icon:(0,K.jsx)(_,{className:`h-3.5 w-3.5 text-[var(--system-mid-strong)]`}),...e.reason?{tooltip:e.reason}:{}}:{},value:e.value,label:e.label})),disabled:r||i,placeholder:s,className:a,"aria-label":`Model profile`})}function on({children:e}){return(0,K.jsx)(f,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function $({label:e,value:t}){return(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-1`,children:[(0,K.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e}),(0,K.jsx)(`span`,{className:`min-w-0 text-right text-body-medium-lighter text-[var(--content-default)]`,children:t})]})}function sn({schedule:e,assistantId:n,isPast:r}){let i=o(),a=ue({path:{assistant_id:n}}),s=l({mutationFn:t=>Pe(n,e.id,{inferenceProfile:t}),onMutate:async t=>{await i.cancelQueries({queryKey:a});let n=i.getQueryData(a)?.find(t=>t.id===e.id)?.inferenceProfile;return i.setQueryData(a,n=>n?.map(n=>n.id===e.id?{...n,inferenceProfile:t}:n)),{previousProfile:n}},onError:(n,r,o)=>{let s=o?.previousProfile;s!==void 0&&i.setQueryData(a,t=>t?.map(t=>t.id===e.id?{...t,inferenceProfile:s}:t)),t(n,{context:`schedule_update_inference_profile`}),P.error(`Failed to change the model.`)},onSettled:()=>i.invalidateQueries({queryKey:a})});return e.mode===`workflow`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)($,{label:`Model profile`,value:`Not used for workflow runs`}),(0,K.jsx)(`p`,{className:`pb-1 text-body-small-default text-[var(--content-tertiary)]`,children:`Each step of a workflow picks its own model, so this schedule has no model setting to change.`})]}):r?(0,K.jsx)(`div`,{className:`py-1 text-body-medium-lighter text-[var(--content-default)]`,children:(0,K.jsx)(tn,{assistantId:n,pinnedProfile:e.inferenceProfile})}):(0,K.jsx)($,{label:`Model profile`,value:(0,K.jsx)(an,{assistantId:n,value:e.inferenceProfile,onChange:t=>{t&&t!==e.inferenceProfile&&s.mutate(t)},includeDefaultOption:!1,placeholder:`Choose a model`,isSaving:s.isPending,className:`min-w-[11rem]`})})}function cn({icon:e,value:t,label:n}){return(0,K.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-3`,children:[(0,K.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-[var(--surface-sunken)] text-[var(--content-secondary)]`,children:e}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`div`,{className:`truncate text-body-large-default text-[var(--content-default)]`,children:t}),(0,K.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:n})]})]})}function ln({usage:e}){return e.status===`loading`?(0,K.jsx)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:Array.from({length:2},(e,t)=>(0,K.jsx)(L,{className:`h-[60px] rounded-lg`},t))}):e.status===`error`?null:(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:[(0,K.jsx)(cn,{icon:(0,K.jsx)(y,{className:`h-4 w-4`}),value:Y(e.summary.totalEstimatedCostUsd),label:`7 Day Cost`}),(0,K.jsx)(cn,{icon:(0,K.jsx)(T,{className:`h-4 w-4`}),value:yt(e.summary.runCount),label:`7 Day Runs`})]})}function un(e){return e.exists&&e.archivedAt==null}function dn({run:e,index:t,isExpanded:n,disableDirectOpen:r,onOpenConversation:i,onToggleDetails:a}){let o=Ct(e),s=e.conversations??(o?[{id:o,title:null,exists:!0,archivedAt:null}]:[]),c=X(e.output),l=X(e.error),u=!r&&s.length===1&&un(s[0])?s[0].id:null,f=!u&&(s.length>0||c||l),p=`schedule-run-details-${t}`,m=!!u||f,h=(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(zt,{status:e.status}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:J(e.startedAt)}),(0,K.jsxs)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[_t(e.durationMs),` ·`,` `,Y(e.estimatedCostUsd)]}),e.status===`error`&&e.error?(0,K.jsxs)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--system-negative-strong)]`,children:[e.error.slice(0,120),e.error.length>120?`…`:``]}):null]}),m?(0,K.jsx)(g,{className:d(`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform`,f&&n?`rotate-90`:``)}):null]}),_=f&&n?(0,K.jsx)(`div`,{id:p,className:`px-2 pb-3`,children:(0,K.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[s.length>0?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Conversations`}),(0,K.jsx)(`div`,{className:`space-y-1`,children:s.map(e=>un(e)?(0,K.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),className:`block w-full truncate text-left text-body-small-default text-[var(--content-default)] hover:underline`,children:X(e.title)?e.title:`Conversation`},e.id):(0,K.jsxs)(`span`,{className:`block truncate text-body-small-default text-[var(--content-tertiary)] italic`,children:[X(e.title)?e.title:`Conversation`,` `,e.exists?`(archived)`:`(unavailable)`]},e.id))})]}):null,c?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,K.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,l?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,K.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null;return u?(0,K.jsx)(`div`,{children:(0,K.jsx)(`button`,{type:`button`,onClick:()=>i(u),"aria-label":`Open conversation for run at ${J(e.startedAt)}`,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:h})}):f?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),"aria-label":`Toggle details for run at ${J(e.startedAt)}`,"aria-expanded":n,"aria-controls":p,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:h}),_]}):(0,K.jsx)(`div`,{className:`flex items-center gap-3 px-2 py-3`,children:h})}function fn({runs:e,isLoading:t,disableDirectOpen:n,onOpenConversation:r}){let[i,a]=(0,U.useState)(null);return t?(0,K.jsx)(`div`,{className:`flex items-center justify-center py-6`,children:(0,K.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,K.jsx)(`p`,{className:`py-2 text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:`No runs yet.`}):(0,K.jsx)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:e.map((e,t)=>(0,K.jsx)(dn,{run:e,index:t,isExpanded:i===e.id,disableDirectOpen:n,onOpenConversation:r,onToggleDetails:e=>a(t=>t===e?null:e)},e.id))})}function pn({schedule:e,assistantId:n,usage:a,isPast:o=!1,isMobile:c,onClose:l,onDeleted:u}){let p=i(),{data:h,isLoading:g}=s({queryKey:he({path:{assistant_id:n,id:e.id}}),queryFn:()=>Le(n,e.id),staleTime:1e4}),[_,v]=(0,U.useState)(!1),[y,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(!1),w=Xt(e.sourceKey),T=w!==null&&!e.enabled,E=async()=>{v(!0);try{await Ie(n,e.id)}catch(e){t(e,{context:`schedule_run_now`}),P.error(`Failed to run schedule.`)}finally{v(!1)}},k=async()=>{S(!0);try{await Fe(n,e.id),u()}catch(e){t(e,{context:`schedule_delete`}),P.error(`Failed to delete schedule.`),S(!1),b(!1)}};return(0,K.jsxs)(`div`,{className:d(`flex h-full flex-col bg-[var(--surface-overlay)]`,!c&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,K.jsx)(f,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:e.name})}),(0,K.jsx)(r,{variant:`ghost`,iconOnly:(0,K.jsx)(O,{}),onClick:l,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,K.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[e.description?(0,K.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e.description}):null,(0,K.jsxs)(`section`,{children:[(0,K.jsx)(on,{children:`Details`}),(0,K.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] px-4 py-2`,children:[e.cadenceDescription?(0,K.jsx)($,{label:`Cadence`,value:e.cadenceDescription}):null,(0,K.jsx)($,{label:`Mode`,value:e.mode}),(0,K.jsx)(sn,{schedule:e,assistantId:n,isPast:o}),(0,K.jsx)($,{label:`Status`,value:e.enabled?`Enabled`:`Disabled`}),(0,K.jsx)($,{label:`Next run`,value:J(e.nextRunAt)}),e.lastRunAt?(0,K.jsx)($,{label:`Last run`,value:(0,K.jsxs)(`span`,{className:`flex items-center justify-end gap-2`,children:[(0,K.jsx)(zt,{status:e.lastStatus}),J(e.lastRunAt)]})}):null]})]}),(0,K.jsx)(ln,{usage:a}),(0,K.jsxs)(`section`,{children:[(0,K.jsx)(on,{children:`Recent runs`}),(0,K.jsx)(fn,{runs:h?.runs,isLoading:g,disableDirectOpen:e.mode===`script`,onOpenConversation:e=>Te(p,e)})]})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[w?(0,K.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Managed by plugin `,w]}):y?(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(r,{variant:`ghost`,onClick:()=>b(!1),disabled:x,children:`Cancel`}),(0,K.jsx)(r,{variant:`danger`,onClick:()=>void k(),disabled:x,children:x?`Deleting…`:`Yes, delete`})]}):(0,K.jsx)(r,{variant:`dangerOutline`,leftIcon:(0,K.jsx)(D,{className:`h-3.5 w-3.5`}),onClick:()=>b(!0),children:`Delete`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(r,{variant:`outlined`,leftIcon:(0,K.jsx)(m,{className:`h-3.5 w-3.5`}),onClick:()=>p(B.settings.usageForSchedule(e.id)),children:`View usage`}),e.mode===`script`?(0,K.jsxs)(K.Fragment,{children:[T?(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Turn this schedule on to run it`}):null,(0,K.jsx)(r,{variant:`primary`,leftIcon:_?(0,K.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):void 0,onClick:()=>void E(),disabled:_||T,children:_?`Running…`:`Run now`})]}):null]})]})]})}function mn(e){if(e.status===`loading`)return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(L,{as:`span`,className:`h-4 w-12`}),(0,K.jsx)(L,{as:`span`,className:`h-4 w-10`})]});if(e.status===`error`)return(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`—`});let{summary:t}=e;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:Y(t.totalEstimatedCostUsd)}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:yt(t.runCount)})]})}function hn({name:e,badge:t,metaParts:n,usage:r,enabled:i,selected:a,onClick:o,onToggle:s,toggleAriaLabel:c}){return(0,K.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-2 py-3 transition-colors [&+&]:border-t [&+&]:border-[var(--border-base)] ${a?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`}`,children:[s?(0,K.jsx)(ee,{checked:i,onChange:s,"aria-label":c}):null,(0,K.jsxs)(`button`,{type:`button`,onClick:o,className:`flex min-w-0 flex-1 cursor-pointer items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e}),t]}),n.length>0?(0,K.jsx)(`span`,{className:`flex min-w-0 items-center gap-2 text-label-small-default text-[var(--content-tertiary)]`,children:n.map((e,t)=>(0,K.jsxs)(U.Fragment,{children:[t>0?(0,K.jsx)(`span`,{className:`h-[3px] w-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}):null,(0,K.jsx)(`span`,{className:`truncate`,children:e})]},t))}):null]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[mn(r),(0,K.jsx)(g,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})]})}function gn({schedule:e,usage:t,selected:n,onClick:r,onToggle:i}){let a=e.isOneShot?``:e.cadenceDescription.trim(),o=e.lastRunAt??e.nextRunAt,s=[a,o?J(o):``].filter(Boolean),c=Xt(e.sourceKey);return(0,K.jsx)(hn,{name:e.name,badge:c?(0,K.jsx)(A,{tone:`info`,children:c}):void 0,metaParts:s,usage:t,enabled:e.enabled,selected:n,onClick:r,onToggle:i,toggleAriaLabel:i?`Toggle ${e.name}`:void 0})}function _n({recurring:e,oneTime:t,pastOneTime:n,usageForSchedule:i,isLoading:a,isError:o,refetch:s,onToggle:c,onSelectSchedule:l,selectedScheduleId:u,onStartNewChat:d,onCreateSchedule:f,pastOpen:m,onPastOpenChange:h,onRebaseProfiles:_,defaultProfileLabel:v,systemTasksSlot:y}){let b=e=>(0,K.jsx)(gn,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id),onToggle:t=>c(e.id,t)},e.id),x=e=>(0,K.jsx)(gn,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id)},e.id),C=n.length>0?(0,K.jsx)(S.Root,{type:`single`,collapsible:!0,className:`mt-3`,value:m?`past`:``,onValueChange:e=>h(e===`past`),children:(0,K.jsxs)(S.Item,{value:`past`,children:[(0,K.jsxs)(S.Trigger,{className:`group gap-[var(--app-spacing-xs)] px-2 text-label-small-default text-[var(--content-tertiary)]`,children:[(0,K.jsx)(g,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,K.jsxs)(`span`,{children:[`Past (`,n.length,`)`]})]}),(0,K.jsx)(S.Content,{children:(0,K.jsx)(`div`,{className:`pt-1`,children:n.map(x)})})]})}):null;return(0,K.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[a?(0,K.jsx)(`div`,{className:`space-y-3`,children:Array.from({length:2},(e,t)=>(0,K.jsx)(L,{className:`h-12 rounded-md`},t))}):o&&e.length===0?(0,K.jsx)(k,{tone:`error`,actions:(0,K.jsx)(`button`,{type:`button`,onClick:s,className:`cursor-pointer underline hover:no-underline`,children:`Retry`}),children:`Failed to load schedules.`}):e.length===0&&t.length===0&&n.length===0?(0,K.jsx)(Ke,{icon:p,title:`No schedules yet`,description:`Ask your assistant to set one up, or create one yourself.`,actions:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(r,{variant:`primary`,size:`regular`,onClick:d,children:`New Conversation`}),(0,K.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`or`}),(0,K.jsx)(r,{variant:`outlined`,size:`regular`,onClick:f,children:`Create schedule`})]})}):(0,K.jsxs)(`div`,{children:[_&&v?(0,K.jsx)(`div`,{className:`mb-1 flex min-w-0 justify-end`,children:(0,K.jsx)(r,{variant:`outlined`,size:`compact`,onClick:_,className:`max-w-full truncate`,children:`Use ${v} for all schedules`})}):null,e.map(b),t.length>0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`p`,{className:`mt-3 px-2 text-label-small-default text-[var(--content-tertiary)]`,children:`One-time`}),t.map(x)]}):null,C]}),y?(0,K.jsx)(`div`,{className:`mt-[var(--app-spacing-lg)]`,children:y}):null]})}function vn({runs:e,isLoading:t,emptyMessage:n=`No runs yet.`,hasMore:a=!1,isLoadingMore:o=!1,onLoadMore:s}){let c=i(),[l,u]=(0,U.useState)(null),d=a&&s?(0,K.jsx)(`div`,{className:`flex justify-center pt-3`,children:(0,K.jsx)(r,{variant:`outlined`,size:`compact`,onClick:s,disabled:o,leftIcon:o?(0,K.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):void 0,children:o?`Loading…`:`Load more`})}):null;return(0,K.jsx)(Be,{title:`Recent runs`,children:t?(0,K.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,K.jsx)(C,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`p`,{className:`py-4 text-center text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:n}),d]}):(0,K.jsxs)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:[e.map((e,t)=>{let n=Ct(e),r=X(e.output),i=X(e.error),a=e.status===`skipped`||e.status===`missed`,o=!n&&!a&&(r||i),s=l===e.id,d=`schedule-run-details-${t}`;return(0,K.jsxs)(`div`,{children:[(0,K.jsx)(b,{label:(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,K.jsx)(zt,{status:e.status}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`block truncate text-body-medium-lighter text-[var(--content-default)]`,children:X(e.title)?e.title:J(e.startedAt)}),(0,K.jsxs)(`span`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[X(e.title)?`${J(e.startedAt)} · `:``,a?(0,K.jsx)(K.Fragment,{children:r?e.output:e.status===`missed`?`Missed`:`Skipped`}):(0,K.jsxs)(K.Fragment,{children:[_t(e.durationMs),` ·`,` `,Y(e.estimatedCostUsd)]}),e.status===`error`&&e.error&&(0,K.jsxs)(`span`,{className:`ml-2 text-[var(--system-negative-strong)]`,children:[e.error.slice(0,80),e.error.length>80?`…`:``]})]})]}),n||o?(0,K.jsx)(g,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform ${s?`rotate-90`:``}`}):null]}),onSelect:n?()=>Te(c,n):o?()=>u(s?null:e.id):void 0,"aria-label":`Run at ${J(e.startedAt)}`,"aria-expanded":o?s:void 0,"aria-controls":o?d:void 0,className:`h-auto py-2.5 gap-3 -mx-2 px-2`}),o&&s?(0,K.jsx)(`div`,{id:d,className:`px-2 pb-3`,children:(0,K.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[r?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,K.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,i?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,K.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null]},e.id)}),d]})})}var yn={heartbeat:`heartbeatAgent`,consolidation:`memoryV2Consolidation`,retrospective:`memoryRetrospective`};function bn({children:e}){return(0,K.jsx)(f,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function xn({kind:e,assistantId:t,systemTasks:n,canOpenMemorySettings:a,isMobile:o,onClose:s}){let l=i(),{heartbeatConfig:u,consolidationConfig:p,retrospectiveConfig:m}=n,h,g,_,v,y,b,x;e===`heartbeat`?(h=`Heartbeat`,g=u?Dt(u):``,_=u?.enabled??!1,v=u?.nextRunAt??null,y=u?.lastRunAt??null,b=n.isHeartbeatRunning,x=n.runHeartbeatNow):e===`consolidation`?(h=`Consolidation`,g=p?Ot(p):``,_=p?.enabled??!1,v=p?.nextRunAt??null,y=p?.lastRunAt??null,b=n.isConsolidationRunning,x=n.runConsolidationNow):(h=`Memory retrospective`,g=kt,_=m?.enabled??!1,v=m?.nextRunAt??null,y=m?.lastRunAt??null,b=!1,x=void 0);let S=e!==`heartbeat`,T=e===`retrospective`,D=S&&!_,A=b||D,j=S?_?`On · Managed by Memory`:`Paused`:_?`Enabled`:`Disabled`,M=T&&m?.available===!0,N=M?`Retrospectives are turned off. Turn them back on under Memory in settings.`:T?`Memory is off, so retrospectives are paused. Turn Memory back on to resume them.`:`Memory is off, so consolidation is paused. Turn Memory back on to resume consolidation.`,P=S&&_&&a,F={path:{assistant_id:t},query:{limit:25}},I=e===`heartbeat`?se(F):e===`consolidation`?me(F):fe(F),{data:L,isLoading:R,fetchNextPage:z,hasNextPage:te,isFetchingNextPage:ne}=c({queryKey:I.queryKey,queryFn:I.queryFn,initialPageParam:{path:F.path,query:{}},getNextPageParam:e=>e.nextCursor??void 0,staleTime:1e4}),re=xt(L?.pages.map(t=>({runs:t.runs.filter(e=>!wt(e)).map(t=>Z(t,e))}))),ie=re?.find(e=>Tt(e)&&e.status!==`running`),ae=y??ie?.finishedAt??ie?.startedAt??null;return(0,K.jsxs)(`div`,{className:d(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(f,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:h}),g?(0,K.jsx)(f,{variant:`body-small-default`,as:`p`,className:`truncate text-[var(--content-tertiary)]`,children:g}):null]}),(0,K.jsx)(r,{variant:`ghost`,iconOnly:(0,K.jsx)(O,{}),onClick:s,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,K.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[(0,K.jsxs)(`section`,{children:[(0,K.jsx)(bn,{children:`Details`}),(0,K.jsxs)(`div`,{className:`space-y-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] px-4 py-3 text-body-medium-lighter`,children:[(0,K.jsx)(tn,{assistantId:t,defaultCallSite:yn[e],fallbackLabel:`Default (system task model)`,respectCallSiteOverride:!0}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,K.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Status`}),(0,K.jsxs)(`span`,{className:`flex items-center gap-2 text-[var(--content-default)]`,children:[(0,K.jsx)(`span`,{children:j}),S?null:(0,K.jsx)(ee,{checked:_,onChange:n.toggleHeartbeat,"aria-label":`Toggle ${h}`})]})]}),T?null:(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,K.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Next run`}),(0,K.jsx)(`span`,{className:`text-[var(--content-default)]`,children:J(v)})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,K.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Last run`}),(0,K.jsx)(`span`,{className:`text-[var(--content-default)]`,children:J(ae)})]})]}),D?(0,K.jsx)(k,{tone:`warning`,className:`mt-4`,actions:a?(0,K.jsx)(r,{variant:`outlined`,size:`compact`,onClick:()=>l(`${B.settings.developer}?tab=memory`),children:M?`Open Memory settings`:`Turn on Memory`}):void 0,children:N}):null]}),(0,K.jsx)(vn,{runs:re,isLoading:R,hasMore:te,isLoadingMore:ne,onLoadMore:()=>void z()})]}),P||x?(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center justify-end gap-2 border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[P?(0,K.jsx)(r,{variant:`outlined`,leftIcon:(0,K.jsx)(E,{className:`h-3.5 w-3.5`}),onClick:()=>l(`${B.settings.developer}?tab=memory`),children:`Memory settings`}):null,x?(0,K.jsx)(r,{variant:`primary`,leftIcon:b?(0,K.jsx)(C,{className:`h-3.5 w-3.5 animate-spin`}):(0,K.jsx)(w,{className:`h-3.5 w-3.5`}),onClick:x,disabled:A,children:b?`Running…`:`Run now`}):null]}):null]})}function Sn(e){let n=H(),[r]=(0,U.useState)(()=>Date.now()),{data:i,isLoading:a,isError:o,refetch:c}=s(Re(e)),{data:l,isLoading:u,isError:d}=s(Nt(e,n,!0)),{recurring:f,oneTime:p,pastOneTime:m}=(0,U.useMemo)(()=>{let e=Mt(i??[],r);return{recurring:e.recurring,oneTime:e.upcomingOneTime,pastOneTime:e.pastOneTime}},[r,i]),h=(0,U.useMemo)(()=>new Map((l??[]).map(e=>[e.scheduleId,e])),[l]);return{recurring:f,oneTime:p,pastOneTime:m,usageForSchedule:(0,U.useCallback)(e=>u?{status:`loading`}:d?{status:`error`}:{status:`ready`,summary:h.get(e)??Pt(e)},[d,u,h]),handleToggle:(0,U.useCallback)(async(n,r)=>{if(e)try{await Me(e,n,r),c()}catch(e){t(e,{context:`schedule_toggle`}),P.error(`Failed to toggle schedule.`)}},[e,c]),isLoading:a,isError:o,refetch:(0,U.useCallback)(()=>{c()},[c])}}function Cn(){let e=i(),{scheduleId:t}=a(),n=Ae(),r=Ee(),o=H(),s=Sn(n),c=Yt(n,o),l=ke(`memoryOptOut`),u=Oe.use.settingsDeveloperNav(),d=l&&u===!0,[f,p]=(0,U.useState)(!1),m=t??null,[h,g]=(0,U.useState)(null),[_,v]=(0,U.useState)(!1),y=(0,U.useCallback)(t=>{e(t?B.schedules.detail(t):B.schedules.root)},[e]),b=m?s.recurring.find(e=>e.id===m)??s.oneTime.find(e=>e.id===m)??s.pastOneTime.find(e=>e.id===m)??null:null;(0,U.useEffect)(()=>{m&&!s.isLoading&&!s.isError&&!b&&y(null)},[m,b,s.isLoading,s.isError,y]);let x=h===`heartbeat`?c.heartbeatConfig!=null:h===`consolidation`?c.consolidationConfig?.available===!0:h===`retrospective`?c.retrospectiveConfig?.available===!0:!1;(0,U.useEffect)(()=>{h&&!c.isLoading&&!x&&g(null)},[h,x,c.isLoading]);let S=(0,U.useCallback)(e=>{g(null),y(e)},[y]),C=(0,U.useCallback)(e=>{m&&y(null),g(e)},[y,m]),w=(0,U.useCallback)(()=>{we(e)},[e]),T=Lt(n,(0,U.useMemo)(()=>[...s.recurring,...s.oneTime,...s.pastOneTime],[s.recurring,s.oneTime,s.pastOneTime]),s.refetch),E=(b?(0,K.jsx)(pn,{schedule:b,assistantId:n,usage:s.usageForSchedule(b.id),isPast:s.pastOneTime.some(e=>e.id===b.id),isMobile:r,onClose:()=>y(null),onDeleted:()=>{y(null),s.refetch()}}):null)??(h&&x?(0,K.jsx)(xn,{kind:h,assistantId:n,systemTasks:c,canOpenMemorySettings:d,isMobile:r,onClose:()=>g(null)}):null),D=(0,K.jsx)(_n,{recurring:s.recurring,oneTime:s.oneTime,pastOneTime:s.pastOneTime,usageForSchedule:s.usageForSchedule,isLoading:s.isLoading,isError:s.isError,refetch:s.refetch,onToggle:s.handleToggle,onSelectSchedule:S,selectedScheduleId:m,onStartNewChat:w,onCreateSchedule:()=>p(!0),pastOpen:_,onPastOpenChange:v,onRebaseProfiles:T.canRebase?T.requestRebase:void 0,defaultProfileLabel:T.defaultProfileLabel??void 0,systemTasksSlot:(0,K.jsx)(Ht,{heartbeatConfig:c.heartbeatConfig,consolidationConfig:c.consolidationConfig,retrospectiveConfig:c.retrospectiveConfig,heartbeatUsage:c.heartbeatUsage,consolidationUsage:c.consolidationUsage,retrospectiveUsage:c.retrospectiveUsage,isLoading:c.isLoading,hasError:c.hasError,onRetry:c.refetchAll,onSelectHeartbeat:()=>C(`heartbeat`),onSelectConsolidation:()=>C(`consolidation`),onSelectRetrospective:()=>C(`retrospective`)})}),O=(0,K.jsx)(Rt,{...T.dialogProps});return E&&r?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Ve,{children:E}),O]}):(0,K.jsxs)(K.Fragment,{children:[E&&!r?(0,K.jsx)(He,{storageKey:`schedulesDetailDrawerWidth`,detailKey:m??h??void 0,section:D,detail:E}):D,(0,K.jsx)(ct,{isOpen:f,assistantId:n,onClose:()=>p(!1),onCreated:()=>{p(!1),s.refetch()}}),O]})}export{Cn as SchedulesPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{u as t}from"./local-settings-Bx7FsNo5.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-BENY-yx_.js";import{d as i,h as a}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as o}from"./jsx-runtime-D3ZM-ToX.js";import{t as s}from"./check-DSgjgwlo.js";import{t as c}from"./menu-DKE_-iVc.js";import{t as l}from"./cloud-DqktQX50.js";import{t as u}from"./ellipsis-vertical-eVgdKn9z.js";import{t as d}from"./globe-COk-NH9x.js";import{t as f}from"./laptop-BXuIFbVm.js";import{t as ee}from"./link-2-Bm55xvLL.js";import{t as p}from"./plus-DnH9Pjq4.js";import{t as m}from"./notice-C0ifrvvJ.js";import{n as te,t as h}from"./input-DmHXRXaB.js";import{t as g}from"./modal-DI63s9MQ.js";import{t as ne}from"./confirm-dialog-zx8L9sUi.js";import{n as _,t as v}from"./create-selectors-DBgi9gD3.js";import{$ as re,O as ie,V as ae,W as oe,_ as se,ct as y,h as ce,m as b,q as le,t as ue,x as de,z as fe}from"./local-mode-BfEgOekp.js";import{t as pe}from"./is-electron-BHXrkjI3.js";import{n as me}from"./resolved-assistants-store-BFI9c7ip.js";import{X as he,i as ge,n as _e,tt as ve}from"./auth-store-CPVpJ_c7.js";import{c as ye}from"./remote-gateway-session-CgDx1fv1.js";import{t as be}from"./client-feature-flag-store-C8ieIAKe.js";import{c as x,m as xe}from"./platform-detection-C_TK32Dw.js";import{i as S}from"./dist-Br0LBu8Y.js";import{d as C}from"./routes-iipg2wkc.js";import{i as Se}from"./typed-storage-UYklH-m5.js";import{i as w,n as Ce,t as we}from"./remove-from-device-dialog-DY5o8eIg.js";import{t as Te}from"./use-onboarding-login-BXw1Fcg3.js";import{n as Ee,t as T}from"./retire-confirm-dialog-CgOoh5RG.js";import{t as De}from"./onboarding-layout-C534GRct.js";import{i as Oe}from"./format-date-Bi9Bsv-w.js";import{t as ke}from"./radio-card-nav-B1BF1G_V.js";var E=e(n(),1),Ae=`vellum:remembered-origins`;function D(e){let t=e.trim();if(t===``)return null;let n;try{n=new URL(t)}catch{return null}return n.protocol!==`https:`||n.hostname===``?null:`${n.origin}${n.pathname.replace(/\/+$/,``)}`}function O(e,t){let n=[],r=new Set,i=t??new Date().toISOString();for(let t of e){if(typeof t!=`object`||!t)continue;let{url:e,name:a,addedAt:o}=t;if(typeof e!=`string`)continue;let s=D(e);s===null||r.has(s)||(r.add(s),n.push({url:s,...typeof a==`string`&&a!==``?{name:a}:{},addedAt:typeof o==`string`?o:i}))}return n}function je(e){let t=JSON.parse(e);return Array.isArray(t)?O(t):null}var k=Se({key:Ae,scope:`device`,parse:je,serialize:JSON.stringify,fallback:[]}),A={load:async()=>k.load(),save:async e=>{k.save(e)},watch:e=>t(Ae,e)},j=A,M=null,N=0,P=Promise.resolve(),Me=`vellum:remembered-origins:mutate`;async function Ne(e){let t=typeof navigator>`u`?void 0:navigator.locks;return t?await t.request(Me,e):e()}function F(e){let t=()=>Ne(e),n=P.then(t,t);return P=n.catch(()=>void 0),n}var I=null,L=!1;function Pe(e){return F(async()=>{try{let t=await j.load();if(e!==N)return;B.getState().hydrated?B.setState({origins:t}):M===null?B.getState().hydrate():L=!0}catch{}})}function R(){I?.();let e=N;I=j.watch?.(()=>void Pe(e))??null}function z(e){j=e,N+=1,M=null,L=!1,B.setState({hydrated:!1}),R(),B.getState().hydrate()}var B=_()((e,t)=>({origins:[],hydrated:!1,hydrate:()=>(M??=(async()=>{let t=N;await Promise.resolve();try{let n=await j.load();t===N&&(e({origins:n,hydrated:!0}),L&&(L=!1,Pe(t)))}catch{t===N&&(M=null)}})(),M),addOrigin:async({url:n,name:r})=>{let i=D(n);return i===null?{ok:!1}:F(async()=>{if(await t().hydrate(),!t().hydrated)return{ok:!1};let n=j,a=N,o;try{o=await n.load()}catch{return{ok:!1}}if(a!==N)return{ok:!1};let s=r?.trim(),c=o.find(e=>e.url===i),l=c??{url:i,addedAt:new Date().toISOString()},u=s?{...l,name:s}:l,d=c?o.map(e=>e.url===i?u:e):[...o,u];try{await n.save(d)}catch{return{ok:!1}}return a===N?(e({origins:d}),{ok:!0,origin:u}):{ok:!1}})},removeOrigin:async n=>{let r=D(n);r!==null&&await F(async()=>{if(await t().hydrate(),!t().hydrated)return;let n=j,i=N,a;try{a=await n.load()}catch{return}if(i!==N)return;let o=a.filter(e=>e.url!==r);if(o.length!==a.length)try{await n.save(o)}catch{return}i===N&&e({origins:o})})}}));R();var V=v(B),H=S(`SelfHostedServers`),U=`1970-01-01T00:00:00.000Z`;async function W(){try{return await H.list()}catch(e){return console.debug(`[self-hosted-servers] bridge unavailable:`,e),null}}var G=`vellum:remembered-origins:native-migrated`;function K(){try{return window.localStorage.getItem(G)===`true`}catch{return!0}}function Fe(){try{window.localStorage.setItem(G,`true`)}catch{}}async function q(e){if(K())return e;let t=[];try{t=await A.load()}catch{t=[]}let n=new Set(e.map(e=>e.url)),r=t.filter(e=>!n.has(e.url)),i=[];for(let t of r){try{await H.add({url:t.url,...t.name?{name:t.name}:{}})}catch(t){return console.debug(`[self-hosted-servers] migration add failed:`,t),[...e,...i]}i.push(t)}return Fe(),[...e,...i]}function Ie(){return{load:async()=>{let e=await W();return e===null?A.load():q(O(e.servers,U))},save:async e=>{let t=await W();if(t===null){await A.save(e);return}let n=new Map(O(t.servers,U).map(e=>[e.url,e.name])),r=new Set(e.map(e=>e.url));for(let e of n.keys())r.has(e)||await H.remove({url:e});for(let t of e)(!n.has(t.url)||t.name&&t.name!==n.get(t.url))&&await H.add({url:t.url,...t.name?{name:t.name}:{}})},watch:A.watch}}var J=!1;function Le(){J||!x()||(J=!0,z(Ie()))}async function Re(e){if(!x())return!1;try{return await H.switchTo(e===null?{}:{url:e}),!0}catch(e){return console.debug(`[self-hosted-servers] switchTo unavailable:`,e),!1}}async function ze(){if(!x())return null;let e=await W();return e===null||!e.activeUrl?null:e.bakedUrl?D(e.bakedUrl):null}async function Be(e){let t=()=>window.location.assign(`${e.url}${C.assistant}`);if(!x()){t();return}await Re(e.url)||t()}function Ve(e){return D(de()?ye():window.location.origin)===e.url}var Y=o(),X=`Failed to add the assistant. Please try again.`;function He(e){for(let t of[`/assistant/pair`,`/assistant`])if(e.endsWith(t))return e.slice(0,-t.length);return e}function Ue({open:e,onClose:t,onAdded:n}){let[i,a]=(0,E.useState)(``),[o,s]=(0,E.useState)(!1),[c,l]=(0,E.useState)(null);(0,E.useEffect)(()=>{e&&(a(``),s(!1),l(null))},[e]);let u=()=>{o||t()},f=async()=>{if(!i.trim()||o)return;let e=D(i),t=e===null?null:D(He(e));if(t===null){l(`Enter the full https address, like https://example.com/assistant-1.`);return}s(!0),l(null);try{let e=await V.getState().addOrigin({url:t});if(e.ok){n(e.origin);return}l(X)}catch(e){console.error(`addRemoteOriginDialog.add failed`,e),l(X)}s(!1)};return(0,Y.jsx)(g.Root,{open:e,onOpenChange:e=>{e||u()},children:(0,Y.jsxs)(g.Content,{size:`md`,children:[(0,Y.jsxs)(g.Header,{children:[(0,Y.jsx)(g.Title,{icon:d,children:`Add a Remote Assistant`}),(0,Y.jsx)(g.Description,{children:`Paste the https link your assistant’s pairing page gave you.`})]}),(0,Y.jsx)(g.Body,{children:(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`add-remote-origin-url`,children:`Assistant address`}),(0,Y.jsx)(h,{id:`add-remote-origin-url`,type:`url`,value:i,onChange:e=>a(e.target.value),placeholder:`https://example.com/assistant-1`,fullWidth:!0,autoFocus:!0})]}),c&&(0,Y.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:c})]})}),(0,Y.jsxs)(g.Footer,{children:[(0,Y.jsx)(r,{variant:`ghost`,onClick:u,disabled:o,children:`Cancel`}),(0,Y.jsx)(r,{variant:`primary`,onClick:()=>void f(),disabled:!i.trim()||o,children:o?`Adding…`:`Add`})]})]})})}function We({open:e,initialBundle:t,guidanceMessage:n,onClose:i,onImported:a}){let[o,s]=(0,E.useState)(``),[c,l]=(0,E.useState)(``),[u,d]=(0,E.useState)(!1),[f,p]=(0,E.useState)(null),[ne,_]=(0,E.useState)(null);(0,E.useEffect)(()=>{e&&(s(t??``),l(``),d(!1),p(null),_(null))},[e,t]);let v=()=>{u||i()},re=async()=>{let e=o.trim();if(!(!e||u)){d(!0),p(null);try{let t=await b(e,c.trim()||void 0);if(!t.ok)p(t.error);else if(t.accessOnly)_(t.assistantId);else{a(t.assistantId);return}}catch(e){console.error(`connectAssistantDialog.import failed`,e),p(`Failed to import the pairing bundle. Please try again.`)}d(!1)}};return ne==null?(0,Y.jsx)(g.Root,{open:e,onOpenChange:e=>{e||v()},children:(0,Y.jsxs)(g.Content,{size:`md`,children:[(0,Y.jsxs)(g.Header,{children:[(0,Y.jsx)(g.Title,{icon:ee,children:`Connect a Remote Assistant`}),(0,Y.jsxs)(g.Description,{children:[`On the assistant’s machine, run`,` `,(0,Y.jsx)(`code`,{children:`vellum pair --url https://...`}),` and paste the bundle here.`]})]}),(0,Y.jsx)(g.Body,{children:(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[n&&(0,Y.jsx)(m,{tone:`info`,children:n}),(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`connect-assistant-bundle`,children:`Pairing bundle`}),(0,Y.jsx)(te,{id:`connect-assistant-bundle`,value:o,onChange:e=>s(e.target.value),placeholder:`eyJnYXRld2F5...`,rows:4,fullWidth:!0,autoFocus:!0})]}),(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(`label`,{className:`text-body-small-default text-[var(--content-secondary)]`,htmlFor:`connect-assistant-name`,children:`Name (optional)`}),(0,Y.jsx)(h,{id:`connect-assistant-name`,type:`text`,value:c,onChange:e=>l(e.target.value),placeholder:`office-mac`,fullWidth:!0})]}),f&&(0,Y.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:f})]})}),(0,Y.jsxs)(g.Footer,{children:[(0,Y.jsx)(r,{variant:`ghost`,onClick:v,disabled:u,children:`Cancel`}),(0,Y.jsx)(r,{variant:`primary`,onClick:()=>void re(),disabled:!o.trim()||u,children:u?`Connecting…`:`Connect`})]})]})}):(0,Y.jsx)(g.Root,{open:e,onOpenChange:e=>{e||v()},children:(0,Y.jsxs)(g.Content,{size:`sm`,children:[(0,Y.jsx)(g.Header,{children:(0,Y.jsx)(g.Title,{icon:ee,children:`Pairing Imported`})}),(0,Y.jsx)(g.Body,{children:(0,Y.jsx)(m,{tone:`warning`,children:`This pairing is access-only: its access expires and cannot renew itself. Re-run vellum pair on the assistant’s machine and import the new bundle when it expires.`})}),(0,Y.jsx)(g.Footer,{children:(0,Y.jsx)(r,{variant:`primary`,onClick:()=>a(ne),children:`Continue`})})]})})}function Ge({open:e,assistantName:t,isPending:n,errorMessage:i,onCancel:a,onRepair:o,onRetire:s}){let[c,l]=(0,E.useState)(`menu`);(0,E.useEffect)(()=>{e&&l(`menu`)},[e]);let u=i?(0,Y.jsx)(`span`,{className:`mt-3 block text-body-small-default text-[var(--system-negative-strong)]`,children:i}):null;return c===`confirm-repair`?(0,Y.jsx)(ne,{open:e,title:`Repair Assistant?`,message:(0,Y.jsxs)(Y.Fragment,{children:[`Repairing re-provisions this assistant’s authentication token. Any other devices or browser sessions connected to it will be signed out and need to reconnect.`,u]}),confirmLabel:`Repair`,isPending:n,onConfirm:o,onCancel:()=>l(`menu`)}):c===`confirm-retire`?(0,Y.jsx)(T,{open:e,isPending:n,extraMessage:u,onConfirm:s,onCancel:()=>l(`menu`)}):(0,Y.jsx)(g.Root,{open:e,onOpenChange:e=>{!e&&!n&&a()},children:(0,Y.jsxs)(g.Content,{size:`sm`,hideCloseButton:!0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),n||a()},children:[(0,Y.jsx)(g.Header,{children:(0,Y.jsx)(g.Title,{children:`Can’t Authenticate Assistant`})}),(0,Y.jsxs)(g.Body,{children:[(0,Y.jsxs)(g.Description,{children:[`The authentication token for `,t,` is missing or can no longer be refreshed, so this assistant can’t be connected. You can repair it, retire it, or pick a different assistant.`]}),u,(0,Y.jsxs)(`div`,{className:`mt-5 flex w-full flex-col gap-2`,children:[(0,Y.jsx)(r,{variant:`primary`,fullWidth:!0,disabled:n,onClick:()=>l(`confirm-repair`),children:`Wake & Repair`}),(0,Y.jsx)(r,{variant:`dangerOutline`,fullWidth:!0,disabled:n,onClick:()=>l(`confirm-retire`),children:`Retire Assistant`}),(0,Y.jsx)(r,{variant:`outlined`,fullWidth:!0,disabled:n,onClick:a,children:`Cancel`})]})]})]})})}function Ke(e){return e.name?e.name:e.isPaired?`Paired Assistant`:e.isLocal?`Local Assistant`:`Cloud Assistant`}function Z(e){let t=e.isPaired?y(e.runtimeUrl):e.isLocal?`On this computer`:`Cloud-hosted`;return e.hatchedAt?`${t} · Created ${Oe(e.hatchedAt)}`:t}function qe(e){return new URL(e.url).hostname}function Je(e){return e.name??qe(e)}function Ye(e){return`origin:${e.url}`}var Q=`origin:vellum-cloud`,Xe=[];function Ze(e){let t=new URLSearchParams(e);return t.delete(`register`),t.delete(`name`),t}function Qe(){let e=i(),[t,n]=a(),o=t.get(`fromLogin`)===`1`,s=t.get(`noAutoSkip`)===`1`,c=pe(),u=se(),f=ge(),m=me.use.assistants(),te=ve.use.currentOrganizationId(),h=be.use.assistantSwitcher(),g=be.use.hydrated(),ne=V.use.origins(),_=V.use.hydrated(),v=xe(),y=h?ne:Xe,{loading:b,error:de,login:ye,cancel:x}=Te(),[S,Se]=(0,E.useState)(null),T=h&&S!==null?{url:S,name:`Vellum Cloud`}:null,Oe=T!==null,Ae=e=>e.isLocal||e.isPaired||f,O=m.filter(Ae),je=O.length>0||y.length>0||T!==null,k=fe(),A=!f&&k,[j,M]=(0,E.useState)(null),[N,P]=(0,E.useState)(!1),[Me,Ne]=(0,E.useState)(!1),[F,I]=(0,E.useState)(null),[L,Pe]=(0,E.useState)(null),[R,z]=(0,E.useState)(!1),[B,H]=(0,E.useState)(null),[U,W]=(0,E.useState)(null),[G,K]=(0,E.useState)(!1),[Fe,q]=(0,E.useState)(null),[Ie,J]=(0,E.useState)(!1),[X,He]=(0,E.useState)(null),[Z,qe]=(0,E.useState)(!1),[Qe,$]=(0,E.useState)(null),tt=w.use.open(),it=w.use.initialBundle(),at=w.use.guidanceMessage(),ot=w.use.deepLinkDrainSettled(),st=(0,E.useRef)(!1),ct=!u&&(!g||!h);(0,E.useEffect)(()=>{!u&&g&&!h&&e(C.assistant,{replace:!0})},[u,g,h,e]),(0,E.useEffect)(()=>{h&&(Le(),V.getState().hydrate())},[h]),(0,E.useEffect)(()=>{if(!h||!v)return;let e=!1;return ze().then(t=>{e||Se(t)}),()=>{e=!0}},[h,v]);let lt=(0,E.useRef)(!1);(0,E.useEffect)(()=>{if(!h||lt.current)return;lt.current=!0;let e=t.get(`register`);if(e===null)return;let r=()=>n(Ze,{replace:!0}),i=D(e);if(i===null){r();return}V.getState().addOrigin({url:i,name:t.get(`name`)??void 0}).then(e=>{e.ok?r():lt.current=!1}).catch(()=>{lt.current=!1})},[h,t,n]),(0,E.useEffect)(()=>{if(j===Q&&Oe||j!=null&&y.some(e=>Ye(e)===j))return;if(O.length===0){let e=y[0],t=e?Ye(e):Oe?Q:null;j!==t&&M(t);return}if(j!=null&&O.some(e=>e.id===j))return;let e=he(te);M(O.find(t=>t.id===e)?.id??O[0].id)},[j,O,te,y,Oe]);let ut=async t=>{P(!0),I(null);try{t.isPaired?await _e.getState().connectPairedAssistant(t.id):t.isLocal?await _e.getState().connectLocalAssistant(t.id):await _e.getState().connectPlatformAssistant(t.id),e(C.assistant,{replace:!0})}catch(e){console.error(`selectAssistant.handleConnect failed`,e),t.isLocal&&fe()&&(ae(e)||re(e)||e instanceof ue)&&ce(t.id)?Pe(t):t.isPaired&&ae(e)?I(`This pairing has expired. Run vellum pair on the assistant's machine and import it again with vellum connect import.`):I(`Failed to connect. Please try again.`),P(!1)}},dt=()=>{Pe(null),z(!1),H(null),Ne(!1)},ft=async()=>{if(!(!L||R)){z(!0),H(null);try{let e=await oe(L.id,{repairGuardian:!0});if(e.ok){le(),dt(),ut(L);return}H(e.error||`Repair failed. Please try again.`)}catch(e){console.error(`selectAssistant.recoveryRepair failed`,e),H(`Repair failed. Please try again.`)}z(!1)}},pt=async()=>{if(!(!L||R)){z(!0),H(null);try{let t=await Ee(L.id);if(t.ok){dt(),e(t.nextRoute,{replace:!0});return}H(t.error)}catch(e){console.error(`selectAssistant.recoveryRetire failed`,e),H(`Failed to retire assistant. Please try again.`)}z(!1)}},mt=()=>{G||(W(null),q(null))},ht=async()=>{if(!(!U||G)){if(K(!0),q(null),U.isPaired){let e=await Ce(U.id);e.ok?(st.current=!0,W(null)):q(e.error),K(!1);return}try{let e=await ie(U.id);if(e.ok){let e=me.getState();e.activeAssistantId===U.id&&e.setActiveAssistantId(null),st.current=!0,W(null)}else q(e.error??`Failed to remove. Please try again.`)}catch(e){console.error(`selectAssistant.removeFromDevice failed`,e),q(`Failed to remove. Please try again.`)}K(!1)}},gt=()=>{Z||(He(null),$(null))},_t=async()=>{!X||Z||(qe(!0),$(null),await V.getState().removeOrigin(X.url),V.getState().origins.some(e=>e.url===X.url)?$(`Failed to remove. Please try again.`):(st.current=!0,He(null)),qe(!1))},vt=e=>{w.getState().closeConnectDialog(),ut(me.getState().assistants.find(t=>t.id===e)??{id:e,isLocal:!1,isPlatformHosted:!1,isPaired:!0})},yt=e=>{J(!1),Be(e)};(0,E.useEffect)(()=>{o||s||st.current||u&&g&&(h&&!_||y.length>0||c&&!ot||N||Me||tt||m.length!==0&&m.length===1&&O.length===1&&(Ne(!0),ut(O[0])))},[m.length,O.length,ot,u,y.length,h,g,_]);let bt=()=>{if(j===Q){Re(null).then(e=>{!e&&S!==null&&window.location.assign(S)});return}let t=y.find(e=>Ye(e)===j);if(t){Ve(t)?e(C.assistant,{replace:!0}):Be(t);return}let n=m.find(e=>e.id===j);n&&ut(n)},xt=()=>{e(u?C.welcome:C.assistant)},St=de??F;return ct||Me&&!St&&!L?(0,Y.jsx)($e,{}):(0,Y.jsxs)(De,{children:[(0,Y.jsx)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${c?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`min-h-screen px-6 pb-40 pt-6`} text-[var(--content-default)]`,children:(0,Y.jsxs)(`div`,{className:`flex w-full flex-col items-center ${c?``:`flex-1 justify-center`}`,children:[(0,Y.jsx)(`h1`,{className:`text-center text-5xl font-normal tracking-tight`,style:{fontFamily:`var(--font-serif)`,animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Choose an Assistant`}),St&&(0,Y.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:St}),(0,Y.jsxs)(`div`,{role:`radiogroup`,"aria-label":`Assistants`,onKeyDown:ke,className:`flex w-full flex-col ${c?`mt-8 gap-2`:`mt-10 gap-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:[m.map(e=>{let t=Ae(e);return(0,Y.jsx)(nt,{assistant:e,selected:j===e.id,locked:!t,tabStop:j==null?O[0]?.id===e.id:j===e.id,onSelect:()=>{t&&M(e.id)},loginLabel:b?`Cancel`:`Log in to use`,loginDisabled:N,onLogin:!t&&e.isPlatformHosted?b?x:()=>void ye():void 0,onRemove:e.isPlatformHosted&&A||e.isPaired&&k?()=>W(e):void 0},e.id)}),y.map((e,t)=>{let n=Ye(e),r=Ve(e);return(0,Y.jsx)(rt,{origin:e,selected:j===n,current:r,tabStop:j==null?O.length===0&&t===0:j===n,onSelect:()=>M(n),onRemove:r&&v?void 0:()=>He(e)},e.url)}),T&&(0,Y.jsx)(rt,{origin:T,icon:(0,Y.jsx)(l,{className:`h-5 w-5`}),selected:j===Q,current:!1,tabStop:j==null?O.length===0&&y.length===0:j===Q,onSelect:()=>M(Q)}),u&&(0,Y.jsx)(et,{icon:(0,Y.jsx)(p,{className:`h-4 w-4`}),label:`Create a new assistant`,disabled:N||b,onClick:()=>void e(`${C.onboarding.hosting}?from=select-assistant`)}),k&&(0,Y.jsx)(et,{icon:(0,Y.jsx)(ee,{className:`h-4 w-4`}),label:`Connect a remote assistant`,disabled:N||b,onClick:()=>w.getState().openConnectDialog()}),h&&!k&&(0,Y.jsx)(et,{icon:(0,Y.jsx)(d,{className:`h-4 w-4`}),label:`Add a remote assistant`,disabled:N||b,onClick:()=>J(!0)})]}),je&&(0,Y.jsx)(`div`,{className:`mt-8 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:(0,Y.jsx)(r,{variant:`primary`,size:`regular`,fullWidth:!0,className:c?void 0:`h-11 text-base`,onClick:bt,disabled:!j||N,children:N?`Connecting…`:`Continue`})}),(0,Y.jsx)(`div`,{className:je?`mt-3`:`mt-8`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:(0,Y.jsx)(r,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,onClick:xt,disabled:N||b,children:`Back`})})]})}),(0,Y.jsx)(Ue,{open:Ie,onClose:()=>J(!1),onAdded:yt}),(0,Y.jsx)(We,{open:tt,initialBundle:it??void 0,guidanceMessage:at??void 0,onClose:()=>w.getState().closeConnectDialog(),onImported:vt}),(0,Y.jsx)(Ge,{open:L!=null,assistantName:L?Ke(L):``,isPending:R,errorMessage:B??void 0,onCancel:dt,onRepair:()=>void ft(),onRetire:()=>void pt()}),(0,Y.jsx)(we,{open:U!=null,kind:U?.isPaired?`paired`:`platform`,assistantName:U?Ke(U):`the assistant`,errorMessage:Fe??void 0,isPending:G,onConfirm:()=>void ht(),onCancel:mt}),(0,Y.jsx)(we,{open:X!=null,kind:`origin`,assistantName:X?Je(X):`the assistant`,errorMessage:Qe??void 0,isPending:Z,onConfirm:()=>void _t(),onCancel:gt})]})}function $e(){return(0,Y.jsx)(De,{children:(0,Y.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center justify-center px-6 text-[var(--content-default)]`,children:(0,Y.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Connecting to your assistant…`})})})}function et({icon:e,label:t,disabled:n,onClick:r}){let i=pe();return(0,Y.jsxs)(`button`,{type:`button`,onClick:r,disabled:n,className:[`group flex w-full items-center justify-center gap-2 border border-dashed border-[var(--border-element)]/50 text-[var(--content-tertiary)]`,i?`rounded-lg px-3 py-2.5`:`rounded-xl px-5 py-3`,`cursor-pointer transition-all duration-200 ease-out`,`hover:border-[var(--border-element)] hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,`disabled:cursor-not-allowed disabled:opacity-50`].join(` `),children:[e,(0,Y.jsx)(`span`,{className:i?`text-body-small-default`:`text-body-medium-default`,children:t})]})}function $({label:e,onRemove:t}){return(0,Y.jsxs)(c.Root,{children:[(0,Y.jsx)(c.Trigger,{asChild:!0,children:(0,Y.jsx)(r,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,iconOnly:(0,Y.jsx)(u,{}),"aria-label":`Actions for ${e}`})}),(0,Y.jsx)(c.Content,{align:`end`,sideOffset:4,children:(0,Y.jsx)(c.Item,{onSelect:t,className:`text-[var(--system-negative-strong)] data-[highlighted]:text-[var(--system-negative-strong)]`,children:`Remove from this device…`})})]})}function tt({icon:e,title:t,subtitle:n,selected:r,locked:i=!1,tabStop:a,onSelect:o,action:c,removeMenu:l}){let u=pe();return(0,Y.jsxs)(`div`,{role:i?void 0:`radio`,"aria-checked":i?void 0:r,tabIndex:i?void 0:a?0:-1,onClick:i?void 0:o,onKeyDown:i?void 0:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),o())},className:[`group flex w-full items-center border text-left`,u?`gap-3 rounded-lg px-[10px] py-3`:`gap-4 rounded-2xl px-[18px] py-4`,`transition-all duration-200 ease-out`,i?`border-[var(--border-base)] bg-[var(--surface-overlay)]`:`cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--primary-base)]`,i?``:r?`border-[var(--primary-base)] bg-[var(--surface-lift)]`:`border-[var(--border-base)] bg-[var(--surface-lift)]/60 hover:border-[var(--border-element)] hover:bg-[var(--surface-lift)]`].join(` `),children:[(0,Y.jsx)(`div`,{className:[`flex shrink-0 items-center justify-center transition-colors duration-200`,`h-12 w-12 rounded-[10px]`,r&&!i?`bg-[var(--primary-base)] text-[var(--surface-base)]`:`bg-[var(--surface-active)]/40 text-[var(--content-secondary)]`].join(` `),children:e}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:`block text-body-medium-default text-[var(--content-default)]`,children:t}),(0,Y.jsx)(`span`,{className:`mt-1 block text-[var(--content-tertiary)] ${u?`text-label-medium-default font-normal`:`text-body-small-lighter`}`,children:n})]}),(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c,l&&(i?l:(0,Y.jsx)(`div`,{onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:l})),!i&&(0,Y.jsx)(`div`,{className:[`flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-200`,r?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)] group-hover:border-[var(--content-tertiary)]`].join(` `),children:r&&(0,Y.jsx)(s,{className:`h-3 w-3 text-[var(--surface-base)]`,strokeWidth:3})})]})]})}function nt({assistant:e,selected:t,locked:n,tabStop:i,onSelect:a,loginLabel:o,loginDisabled:s,onLogin:c,onRemove:u}){let d=Ke(e);return(0,Y.jsx)(tt,{icon:e.isPaired?(0,Y.jsx)(ee,{className:`h-5 w-5`}):e.isLocal?(0,Y.jsx)(f,{className:`h-5 w-5`}):(0,Y.jsx)(l,{className:`h-5 w-5`}),title:d,subtitle:Z(e),selected:t,locked:n,tabStop:i,onSelect:a,action:n&&c?(0,Y.jsx)(r,{variant:`primary`,size:`regular`,onClick:c,disabled:s,children:o}):void 0,removeMenu:u&&(0,Y.jsx)($,{label:d,onRemove:u})})}function rt({origin:e,icon:t,selected:n,current:r,tabStop:i,onSelect:a,onRemove:o}){let s=Je(e);return(0,Y.jsx)(tt,{icon:t??(0,Y.jsx)(d,{className:`h-5 w-5`}),title:s,subtitle:`${r?`Current`:`Remote`} · ${qe(e)}`,selected:n,tabStop:i,onSelect:a,removeMenu:o&&(0,Y.jsx)($,{label:s,onRemove:o})})}export{Qe as SelectAssistantScreen};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{s as t,t as n}from"./local-settings-Bx7FsNo5.js";import{t as r}from"./react-BFJW0bSv.js";import{W as i,t as a}from"./button-BENY-yx_.js";import{d as o,h as s,u as c}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as l}from"./QueryClientProvider-CMu7CkQU.js";import{t as u}from"./useQuery-Bz-fbQ-m.js";import{t as d}from"./useMutation-CXGTrp4W.js";import{t as f}from"./jsx-runtime-D3ZM-ToX.js";import{t as p}from"./card-q0GJX1HZ.js";import{t as m}from"./createLucideIcon-C1mdGPB9.js";import{t as h}from"./arrow-down-to-line-DmG4pLoU.js";import{t as g}from"./arrow-left-BikDV6F2.js";import{a as _,i as v,n as y,o as b,r as x,s as S,t as ee}from"./use-skill-actions-kLsl5L01.js";import{t as C}from"./brain-ZiC0HCCF.js";import{t as w}from"./calendar-CTyC1v1L.js";import{t as T}from"./check-DSgjgwlo.js";import{i as E,n as D,r as te,t as ne}from"./invalidate-plugin-queries-zbCn3jP3.js";import{t as O}from"./circle-check-big-CpoRGdNz.js";import{t as re}from"./cloud-off-DyOAnFan.js";import{t as ie}from"./code-DwZ6Mhdw.js";import{F as k,N as A}from"./src-BMRW2yQf.js";import{t as j}from"./download-Byg0fi0d.js";import{t as ae}from"./external-link-vwewPjbo.js";import{t as M}from"./globe-COk-NH9x.js";import{t as oe}from"./hard-drive-DsHzx0GK.js";import{t as se}from"./heart-CRsy5qXC.js";import{t as N}from"./layout-grid-C3h1DMhl.js";import{t as ce}from"./link-2-Bm55xvLL.js";import{t as P}from"./loader-circle-DOtGXcds.js";import{t as le}from"./mail-CYjppw70.js";import{t as ue}from"./message-circle-C6QWfv9m.js";import{t as de}from"./mic-bZFqVBA_.js";import{t as F}from"./puzzle-CIWAeBs0.js";import{t as fe}from"./search-D2xMZu1P.js";import{t as I}from"./settings-751LDGs_.js";import{t as pe}from"./sparkles-B94iNYGJ.js";import{t as me}from"./terminal-CkQ9DSF2.js";import{t as L}from"./trash-2-BKXSi5Tj.js";import{t as he}from"./triangle-alert-CB4pJgCL.js";import{t as ge}from"./user-Djte2CiZ.js";import{t as _e}from"./x-338EsJDP.js";import{n as R,t as ve}from"./installed-plugins-query-CIcohCho.js";import{t as z}from"./tag-DeMzQvCo.js";import{t as ye}from"./popover-CAbJ9178.js";import{t as be}from"./input-DmHXRXaB.js";import{t as xe}from"./toggle-C-v4x7_A.js";import{n as B}from"./toast-BpuLSxyt.js";import{t as Se}from"./confirm-dialog-zx8L9sUi.js";import{t as Ce}from"./file-markdown-DMq6D4CV.js";import{t as we}from"./assistant-identity-store-nE-e8KQw.js";import{i as V}from"./utils-CAZUrJMu.js";import{Hn as Te,Vn as Ee,Wn as De,qn as Oe}from"./sdk.gen-CBPZ2IdN.js";import{d as ke}from"./routes-iipg2wkc.js";import{At as Ae,dt as je,hn as Me,kt as Ne,lt as Pe,mn as Fe,mt as H,pn as Ie,pt as U}from"./react-query.gen-DxjuNs-5.js";import{n as Le}from"./use-is-mobile-BP8UePsY.js";import{t as W}from"./misc-Z0jXGGeY.js";import{t as Re}from"./plugins-surface-B4NuEVD_.js";import{t as ze}from"./use-active-assistant-id-BvHP5Ojg.js";import{n as Be,r as Ve}from"./skills-C2mjxWRN.js";var He=m(`funnel`,[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]]),G=e(r(),1),K=f(),Ue={sm:`h-7 w-7`,md:`h-8 w-8 text-3xl`};function q({external:e=!1,icon:t,iconSrc:n,size:r=`sm`,className:i}){let[a,o]=(0,G.useState)(!1);(0,G.useEffect)(()=>{o(!1)},[n]);let s=t||(e?`📦`:`🧩`),c=!!n&&!a;return(0,K.jsx)(`span`,{className:W(`flex shrink-0 items-center justify-center`,Ue[r],i),children:c?(0,K.jsx)(`img`,{src:n,alt:``,"aria-hidden":!0,loading:`lazy`,className:`h-full w-full object-contain`,onError:()=>o(!0)}):s})}var We=e=>`Remove "${e}" from this assistant?`,Ge=e=>`"${e}" has local edits that will be overwritten by the upgrade. Continue?`,Ke=`Upgrade anyway`,qe=`Failed to install plugin. Please try again.`,Je=`Failed to remove plugin. Please try again.`,Ye=`Failed to upgrade plugin. Please try again.`,Xe=`Failed to update plugin. Please try again.`;function Ze(e,t){let n=e.map(e=>({name:e.name,description:e.description??void 0,status:`installed`,external:void 0,version:e.version??void 0,path:e.path,issues:e.issues,enabled:e.enabled,icon:e.icon,hasIcon:e.hasIcon,iconVersion:e.iconVersion})),r=new Set(n.map(e=>e.name)),i=t.filter(e=>!r.has(e.name)).map(e=>({name:e.name,description:e.description,status:`available`,external:!0,path:e.path}));return[...n,...i]}function Qe(e,t){let n=t.trim().toLowerCase();return n?[e.name,e.description].some(e=>e?.toLowerCase().includes(n)):!0}function $e(e){return[...e].sort((e,t)=>{let n=e.status===`installed`;return n===(t.status===`installed`)?e.name.localeCompare(t.name,void 0,{sensitivity:`base`}):n?-1:1})}function et(e,t){switch(t){case`all`:return e;case`available`:return e.filter(e=>e.status===`available`);case`installed`:return e.filter(e=>e.status===`installed`);case`active`:return e.filter(e=>e.status===`installed`&&e.enabled!==!1);case`off`:return e.filter(e=>e.status===`installed`&&e.enabled===!1)}}function tt(e){return e?e.slice(0,7):`unknown`}function J({plugin:e,surfaces:t=null,className:n}){let r=[{label:`Source`,value:e.source?.kind===`github`?e.source.repo:`Local`,href:(e.source?.kind===`github`?`https://github.com/${e.source.repo}`:null)??void 0}];return e.homepage&&r.push({label:`Homepage`,value:e.homepage,href:e.homepage}),e.license&&r.push({label:`License`,value:e.license}),t&&(t.skills.length>0&&r.push({label:`Skills`,value:String(t.skills.length)}),t.hooks.length>0&&r.push({label:`Hooks`,value:String(t.hooks.length)}),t.tools.length>0&&r.push({label:`Tools`,value:String(t.tools.length)})),(0,K.jsx)(`dl`,{className:W(`mb-5 grid gap-x-6 gap-y-2 border-b pb-5 sm:grid-cols-[max-content_1fr]`,n),style:{borderColor:`var(--border-base)`},children:r.map(e=>(0,K.jsxs)(`div`,{className:`contents`,children:[(0,K.jsx)(`dt`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:e.label}),(0,K.jsx)(`dd`,{className:`min-w-0 truncate text-body-small-default`,style:{color:`var(--content-secondary)`},children:e.href?(0,K.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 underline`,style:{color:`var(--primary-base, #60a5fa)`},children:[e.value,(0,K.jsx)(ae,{className:`h-3 w-3`,"aria-hidden":!0})]}):e.value})]},e.label))})}function nt({plugin:e,drift:t,onInstall:n,onRemove:r,onUpgrade:i,isInstalling:o,isRemoving:s,isUpgrading:c,hasLocalEdits:l,enabled:u,onToggle:d,isToggling:f}){let[p,m]=(0,G.useState)(!1),[g,_]=(0,G.useState)(!1),v=e.installed??!1,y=e.artifact??null,b=t?.status===`update-available`,x=b?`Upgrade ${tt(t?.local?.commit??null)} → ${tt(t?.remote?.commit??null)}`:void 0;return(0,K.jsxs)(K.Fragment,{children:[v?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 md:flex-nowrap md:shrink-0`,children:[u!==void 0&&d?(0,K.jsx)(xe,{label:`Auto-include in chat`,checked:u,onChange:()=>d(),disabled:f}):null,y?(0,K.jsx)(a,{asChild:!0,leftIcon:(0,K.jsx)(j,{"aria-hidden":!0}),children:(0,K.jsx)(`a`,{href:y.url,download:!0,children:y.label??`Download`})}):null,b?(0,K.jsx)(a,{type:`button`,onClick:()=>{if(l){_(!0);return}i()},disabled:c,title:x,leftIcon:c?(0,K.jsx)(P,{className:`animate-spin`,"aria-hidden":!0}):(0,K.jsx)(E,{"aria-hidden":!0}),children:`Upgrade`}):null,(0,K.jsx)(a,{type:`button`,variant:`dangerOutline`,onClick:()=>m(!0),disabled:s,leftIcon:s?(0,K.jsx)(P,{className:`animate-spin`,"aria-hidden":!0}):(0,K.jsx)(L,{"aria-hidden":!0}),children:`Remove`})]}):(0,K.jsx)(a,{type:`button`,onClick:n,disabled:o,leftIcon:o?(0,K.jsx)(P,{className:`animate-spin`,"aria-hidden":!0}):(0,K.jsx)(h,{"aria-hidden":!0}),children:`Install`}),(0,K.jsx)(Se,{open:p,title:`Remove plugin`,message:We(e.name),confirmLabel:`Remove`,destructive:!0,onConfirm:()=>{m(!1),r()},onCancel:()=>m(!1)}),(0,K.jsx)(Se,{open:g,title:`Upgrade plugin`,message:Ge(e.name),confirmLabel:Ke,destructive:!0,onConfirm:()=>{_(!1),i()},onCancel:()=>_(!1)})]})}function rt(){return(0,K.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,K.jsx)(P,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})})}function Y(){return(0,K.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 py-12 text-center`,style:{color:`var(--content-tertiary)`},children:[(0,K.jsx)(he,{className:`h-6 w-6`,"aria-hidden":!0}),(0,K.jsx)(`p`,{className:`text-body-medium-default`,children:`We couldn't load this plugin.`}),(0,K.jsx)(`p`,{className:`text-body-small-default`,children:`It may not exist, or your assistant may be on an older build.`})]})}function it({isInstallError:e,isRemoveError:t,isUpgradeError:n}){let r=e?qe:t?Je:n?Ye:null;return r?(0,K.jsxs)(`div`,{className:`mb-3 flex items-center gap-2 rounded px-3 py-2 text-body-small-default`,style:{backgroundColor:`var(--surface-secondary)`,color:`var(--content-warning, var(--content-tertiary))`},role:`alert`,children:[(0,K.jsx)(he,{className:`h-4 w-4 shrink-0`,"aria-hidden":!0}),r]}):null}function at({external:e,className:t}){let n=e?{label:`External`,icon:M}:{label:`Local`,icon:oe};return(0,K.jsx)(z,{tone:`neutral`,leftIcon:(0,G.createElement)(n.icon),className:t,children:n.label})}function X({onClick:e,isUpgrading:t=!1}={}){let n=(0,K.jsx)(z,{tone:`warning`,leftIcon:(0,G.createElement)(t?P:E,{className:t?`animate-spin`:void 0}),className:`shrink-0`,children:`Update available`});return e?(0,K.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),e()},disabled:t,"aria-label":`Upgrade plugin`,className:`shrink-0 rounded-[6px] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:cursor-not-allowed`,children:n}):n}var ot=300*1e3;function Z({assistantId:e,name:t,enabled:n=!0}){return u({...je({path:{assistant_id:e,name:t}}),enabled:!!e&&!!t&&n,staleTime:ot,retry:!1})}function st(e){let t=e?.local?.localChanges;return!!t&&t?.clean===!1}function ct(e,t,n){let r=l(),i=n?.onRemoved,a=u({...Pe({path:{assistant_id:e,name:t}}),enabled:!!e&&!!t}),o=Z({assistantId:e,name:t,enabled:a.data?.installed??!1}).data,s=(0,G.useCallback)(()=>ne(r,e,t),[e,t,r]),c=Me({onSuccess:()=>{s(),B.success(`Installed ${t||`plugin`}`)}}),d=Ie({onSuccess:()=>{s(),i?.()}}),f=Fe({onSuccess:e=>{s(),B.success(e.outcome===`already-up-to-date`?`${t||`Plugin`} is already up to date`:`Upgraded ${t||`plugin`} to ${tt(e.toCommit)}`)}});return{plugin:a.data??null,drift:o,isLoading:a.isLoading,isError:a.isError,install:()=>{c.mutate({path:{assistant_id:e},body:{name:t}})},remove:()=>{d.mutate({path:{assistant_id:e,name:t}})},upgrade:()=>{f.mutate({path:{assistant_id:e,name:t},body:{}})},isInstalling:c.isPending,isRemoving:d.isPending,isUpgrading:f.isPending,isInstallError:c.isError,isRemoveError:d.isError,isUpgradeError:f.isError,hasLocalEdits:st(o)}}var lt=`0.10.5`;function ut(){return V(lt)}function Q(e,t,n,r){let i=ut(),{data:a}=u({queryKey:[`pluginIcon`,e,t,r],queryFn:async()=>{let{data:n,error:r}=await De({path:{assistant_id:e,name:t},parseAs:`blob`,throwOnError:!1});if(r||!(n instanceof Blob))throw Error(`Failed to load plugin icon`);return n},enabled:!!(i&&n&&r),staleTime:1/0,retry:!1}),[o,s]=(0,G.useState)(void 0);return(0,G.useEffect)(()=>{if(!a){s(void 0);return}let e=URL.createObjectURL(a);return s(e),()=>{URL.revokeObjectURL(e)}},[a]),o}function dt(e){let t=l(),n={queryKey:U({path:{assistant_id:e}})},r=(e,r)=>{t.setQueriesData(n,t=>t&&{...t,plugins:t.plugins.map(t=>t.name===e?{...t,enabled:r}:t)})},i=d({mutationFn:async({name:t,nextEnabled:n})=>{let r=await(n?Te({path:{assistant_id:e,name:t},throwOnError:!1}):Ee({path:{assistant_id:e,name:t},throwOnError:!1})),i=r.response?.status;if(r.response?.ok||i===409)return r;throw Error(`Plugin toggle failed (${i??`network error`})`)},onMutate:async({name:e,nextEnabled:i})=>{await t.cancelQueries(n),r(e,i)},onError:(e,{name:t,nextEnabled:n})=>{r(t,!n),B.error(Xe)},onSettled:(n,r,i)=>{ne(t,e,i.name)}});return{toggle:(e,t)=>{i.mutate({name:e,nextEnabled:t})},togglingName:i.isPending?i.variables?.name??null:null}}function ft({assistantId:e,name:t,onBack:n,externalHint:r,enabled:i}){let{plugin:o,drift:s,isLoading:c,isError:l,install:u,remove:d,upgrade:f,isInstalling:m,isRemoving:h,isUpgrading:_,isInstallError:v,isRemoveError:y,isUpgradeError:b,hasLocalEdits:x}=ct(e,t,{onRemoved:n}),{toggle:S,togglingName:ee}=dt(e),C=Q(e,t,o?.hasIcon,o?.iconVersion);return(0,K.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col`,children:[(0,K.jsxs)(`div`,{className:`mb-4 flex items-start gap-3`,children:[(0,K.jsx)(a,{type:`button`,variant:`ghost`,iconOnly:(0,K.jsx)(g,{"aria-hidden":!0}),"aria-label":`Back to plugins`,onClick:n}),(0,K.jsx)($,{name:t,plugin:o,externalHint:r,iconSrc:C,drift:s,onInstall:u,onRemove:d,onUpgrade:f,isInstalling:m,isRemoving:h,isUpgrading:_,hasLocalEdits:x,enabled:i,onToggle:()=>S(t,!i),isToggling:ee===t})]}),(v||y||b)&&(0,K.jsx)(it,{isInstallError:v,isRemoveError:y,isUpgradeError:b}),(0,K.jsx)(p.Root,{asChild:!0,children:(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-5`,children:c?(0,K.jsx)(rt,{}):l||!o?(0,K.jsx)(Y,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(J,{plugin:o,surfaces:s?.surfaces??null}),o.readme?(0,K.jsx)(Ce,{content:o.readme}):(0,K.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`This plugin doesn't ship a README.`})]})})})]})}function $({name:e,plugin:t,externalHint:n,iconSrc:r,drift:i,onInstall:a,onRemove:o,onUpgrade:s,isInstalling:c,isRemoving:l,isUpgrading:u,hasLocalEdits:d,enabled:f,onToggle:p,isToggling:m}){let h=t?.source?.kind===`github`,g=t?h:n,_=i?.status===`update-available`;return(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-3 sm:flex-row sm:items-center`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3`,children:[g===void 0?(0,K.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0`}):(0,K.jsx)(q,{external:g,icon:t?.icon??void 0,iconSrc:r,size:`md`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,K.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:t?.name??e}),t?.version?(0,K.jsxs)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:[`v`,t.version]}):null,t?(0,K.jsx)(at,{external:h}):null,_?(0,K.jsx)(X,{}):null]}),t?.description?(0,K.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-body-medium-lighter`,style:{color:`var(--content-secondary)`},children:t.description}):null]})]}),t?(0,K.jsx)(nt,{plugin:t,drift:i,onInstall:a,onRemove:o,onUpgrade:s,isInstalling:c,isRemoving:l,isUpgrading:u,hasLocalEdits:d,enabled:f,onToggle:p,isToggling:m}):null]})}var pt=e(i(),1);function mt({assistantId:e,name:t,onBack:n,externalHint:r,enabled:i}){let{plugin:o,drift:s,isLoading:c,isError:l,install:u,remove:d,upgrade:f,isInstalling:m,isRemoving:h,isUpgrading:_,isInstallError:v,isRemoveError:y,isUpgradeError:b,hasLocalEdits:x}=ct(e,t,{onRemoved:n}),{toggle:S,togglingName:ee}=dt(e),[C,w]=(0,G.useState)(null);(0,G.useEffect)(()=>{w(document.getElementById(`viewport-overlays`))},[]);let T=o?.source?.kind===`github`,E=o?T:r,D=s?.status===`update-available`,te=o?.name??t,ne=Q(e,t,o?.hasIcon,o?.iconVersion),O=(0,K.jsxs)(`div`,{className:`fixed inset-0 z-40 flex flex-col overflow-hidden bg-[var(--surface-overlay)]`,style:{paddingTop:`calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px)))`,paddingBottom:`calc(8px + var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)))`,paddingLeft:`calc(12px + var(--safe-area-inset-left, env(safe-area-inset-left, 0px)))`,paddingRight:`calc(12px + var(--safe-area-inset-right, env(safe-area-inset-right, 0px)))`},children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(a,{variant:`ghost`,iconOnly:(0,K.jsx)(g,{"aria-hidden":!0}),expandOnMobile:!0,"aria-label":`Back to plugins`,onClick:n,className:`max-md:bg-[var(--surface-active)]`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate px-2 text-center text-body-medium-default`,style:{color:`var(--content-secondary)`},children:te}),(0,K.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0 touch-mobile:h-10 touch-mobile:w-10`})]}),(0,K.jsxs)(`div`,{className:`mt-4 flex flex-col gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[E===void 0?(0,K.jsx)(`span`,{"aria-hidden":!0,className:`h-8 w-8 shrink-0`}):(0,K.jsx)(q,{external:E,icon:o?.icon??void 0,iconSrc:ne,size:`md`}),(0,K.jsx)(`h2`,{className:`min-w-0 truncate text-title-medium`,style:{color:`var(--content-emphasised)`},children:te})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[D?(0,K.jsx)(X,{}):null,o?(0,K.jsx)(at,{external:T}):null]})]}),o?.description?(0,K.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:o.description}):null]}),o?(0,K.jsx)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:(0,K.jsx)(nt,{plugin:o,drift:s,enabled:i,onToggle:()=>S(t,!i),isToggling:ee===t,onInstall:u,onRemove:d,onUpgrade:f,isInstalling:m,isRemoving:h,isUpgrading:_,hasLocalEdits:x})}):null,(v||y||b)&&(0,K.jsx)(`div`,{className:`mt-3`,children:(0,K.jsx)(it,{isInstallError:v,isRemoveError:y,isUpgradeError:b})}),(0,K.jsx)(p.Root,{asChild:!0,noPadding:!0,children:(0,K.jsx)(`div`,{className:`mt-6 flex min-h-0 flex-1 flex-col overflow-hidden rounded-2xl border bg-[var(--surface-lift)]`,style:{borderColor:`var(--border-hover)`},children:(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4`,children:c?(0,K.jsx)(rt,{}):l||!o?(0,K.jsx)(Y,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(J,{plugin:o,surfaces:s?.surfaces??null}),o.readme?(0,K.jsx)(Ce,{content:o.readme}):(0,K.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`This plugin doesn't ship a README.`})]})})})})]});return C?(0,pt.createPortal)(O,C):O}function ht({assistantId:e,item:t,drift:n,onSelect:r,onInstall:i,onRemove:o,onUpgrade:s,isInstalling:c=!1,isRemoving:l=!1,isUpgrading:u=!1}){let d=t.status===`available`,f=n?.status===`update-available`,m=t.enabled!==void 0,g=t.enabled===!1,_=Q(e,t.name,t.hasIcon,t.iconVersion);return(0,K.jsx)(p.Root,{asChild:!0,children:(0,K.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:r,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),r())},className:`flex cursor-pointer items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-[var(--surface-hover)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,K.jsx)(q,{size:`sm`,external:t.external,icon:t.icon,iconSrc:_,className:g?`opacity-50`:void 0}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:g?`var(--content-tertiary)`:`var(--content-emphasised)`},children:t.name}),t.version?(0,K.jsxs)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:[`v`,t.version]}):null,(0,K.jsx)(z,{tone:`neutral`,leftIcon:(0,K.jsx)(F,{"aria-hidden":!0}),children:`Plugin`}),f?(0,K.jsx)(X,{onClick:s,isUpgrading:u}):null]}),(0,K.jsx)(`p`,{className:`mt-1 truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.description??`No description provided.`}),t.issues&&t.issues.length>0?(0,K.jsxs)(`p`,{className:`mt-1 truncate text-body-small-default`,style:{color:`var(--content-warning, var(--content-tertiary))`},title:t.issues.join(`; `),children:[t.issues[0],t.issues.length>1?` (+${t.issues.length-1} more)`:``]}):null]}),d?c?(0,K.jsx)(a,{type:`button`,iconOnly:(0,K.jsx)(P,{className:`animate-spin`,"aria-hidden":!0}),disabled:!0,"aria-label":`Installing`,expandOnMobile:!1}):(0,K.jsx)(a,{type:`button`,iconOnly:(0,K.jsx)(h,{"aria-hidden":!0}),onClick:e=>{e.stopPropagation(),i?.()},disabled:!i,"aria-label":`Install plugin`,expandOnMobile:!1}):(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[m?(0,K.jsx)(z,{tone:t.enabled?`positive`:`neutral`,children:t.enabled?`Enabled`:`Disabled`}):null,(0,K.jsx)(a,{type:`button`,variant:`dangerOutline`,iconOnly:l?(0,K.jsx)(P,{className:`animate-spin`,"aria-hidden":!0}):(0,K.jsx)(L,{"aria-hidden":!0}),onClick:e=>{e.stopPropagation(),o?.()},disabled:l||u||!o,"aria-label":`Remove plugin`,expandOnMobile:!1})]})]})})}var gt={mail:le,calendar:w,"message-circle":ue,globe:M,zap:R,code:ie,mic:de,"shopping-cart":D,palette:te,heart:se,settings:I,"link-2":ce};function _t(e){return gt[e]}function vt({selected:e,onSelect:t,counts:n,totalCount:r,showCounts:i,categories:a,ariaLabel:o=`Skill categories`}){let s=[...a].sort((e,t)=>e.label.localeCompare(t.label));return(0,K.jsxs)(`nav`,{className:`flex flex-col gap-1`,"aria-label":o,children:[(0,K.jsx)(yt,{icon:N,label:`All`,count:r,isActive:e===null,showCount:i,onClick:()=>t(null)}),s.map(r=>(0,K.jsx)(yt,{icon:_t(r.icon)??N,label:r.label,count:n[r.slug]??0,isActive:e===r.slug,showCount:i,onClick:()=>t(r.slug)},r.slug))]})}function yt({icon:e,label:t,count:n,isActive:r,showCount:i,onClick:o}){return(0,K.jsxs)(a,{variant:`ghost`,onClick:o,"aria-pressed":r,className:`h-auto justify-between gap-3 rounded-lg border-0 bg-transparent px-3 py-2 text-left hover:bg-[var(--ghost-hover)]`,style:{backgroundColor:r?`var(--surface-active)`:void 0,color:r?`var(--content-default)`:`var(--content-secondary)`},children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2.5`,children:[(0,K.jsx)(e,{className:`h-4 w-4 shrink-0`,"aria-hidden":!0}),(0,K.jsx)(`span`,{className:`text-body-medium-default`,children:t})]}),i&&(0,K.jsx)(`span`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:n})]})}function bt({skill:e,onSelect:t,onInstall:n,onRemove:r,isInstalling:i=!1,isRemoving:o=!1}){let s=x(e),c=Be(e);return(0,K.jsx)(p.Root,{asChild:!0,children:(0,K.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:t,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t())},className:`flex cursor-pointer items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-[var(--surface-hover)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,K.jsx)(`div`,{className:`flex shrink-0 items-center justify-center text-[28px] leading-none`,children:(0,K.jsx)(b,{skill:e,className:`h-7 w-7`})}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-emphasised)`},children:e.name}),(0,K.jsx)(_,{origin:e.origin})]}),(0,K.jsx)(`p`,{className:`mt-1 truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.description})]}),s?i?(0,K.jsx)(a,{type:`button`,iconOnly:(0,K.jsx)(P,{className:`animate-spin`,"aria-hidden":!0}),disabled:!0,"aria-label":`Installing`,expandOnMobile:!1}):(0,K.jsx)(a,{type:`button`,iconOnly:(0,K.jsx)(h,{"aria-hidden":!0}),onClick:e=>{e.stopPropagation(),n?.()},disabled:!n,"aria-label":`Install skill`,expandOnMobile:!1}):(0,K.jsx)(a,{type:`button`,variant:`dangerOutline`,iconOnly:o?(0,K.jsx)(P,{className:`animate-spin`,"aria-hidden":!0}):(0,K.jsx)(L,{"aria-hidden":!0}),onClick:e=>{e.stopPropagation(),r?.()},disabled:!c||o||!r,"aria-label":c?`Remove skill`:`Bundled skill cannot be removed`,title:c?void 0:`Bundled skills cannot be removed`,expandOnMobile:!1})]})})}var xt=[{value:`all`,label:`All`,icon:N},{value:`installed`,label:`Installed`,icon:O},{value:`available`,label:`Available`,icon:h}],St=[{value:`skills`,label:`Skills`,icon:R},{value:`plugins`,label:`Plugins`,icon:F}],Ct=[{value:`vellum`,label:`Vellum`,icon:S},{value:`clawhub`,label:`Clawhub`,icon:M},{value:`skillssh`,label:`skills.sh`,icon:me},{value:`custom`,label:`Custom`,icon:ge},{value:`assistant-memory`,label:`Assistant's Memory`,icon:C}];function wt({search:e,onSearchChange:t,filter:n,onFilterChange:r,isSearching:i,categories:a,category:o,onCategoryChange:s,counts:c,totalCount:l,showCounts:u,pluginsSupported:d}){return(0,K.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,K.jsx)(be,{type:`search`,value:e,onChange:e=>{t(e.target.value)},placeholder:`Search superpowers`,"aria-label":`Search superpowers`,leftIcon:(0,K.jsx)(fe,{className:`h-4 w-4`,"aria-hidden":!0}),rightIcon:i?(0,K.jsx)(P,{className:`h-4 w-4 animate-spin`,"aria-hidden":!0}):void 0,fullWidth:!0,wrapperClassName:`flex-1`}),(0,K.jsx)(Tt,{filter:n,onFilterChange:r,categories:a,category:o,onCategoryChange:s,counts:c,totalCount:l,showCounts:u,pluginsSupported:d})]})}function Tt(e){let t=Le(),[n,r]=(0,G.useState)(!1),i=(0,K.jsx)(a,{type:`button`,variant:`outlined`,iconOnly:(0,K.jsx)(He,{"aria-hidden":!0}),"aria-label":`Filter superpowers`,"aria-haspopup":t?`dialog`:`listbox`,"aria-expanded":n,tintColor:`var(--primary-base)`});if(t)return(0,K.jsx)(Et,{...e,open:n,onOpenChange:r,trigger:i});let o=t=>{e.onFilterChange(t),r(!1)};return(0,K.jsxs)(ye.Root,{open:n,onOpenChange:r,children:[(0,K.jsx)(ye.Trigger,{asChild:!0,children:i}),(0,K.jsx)(ye.Content,{align:`end`,sideOffset:4,className:`w-44 overflow-hidden p-0`,children:(0,K.jsxs)(`ul`,{role:`listbox`,children:[(0,K.jsx)(kt,{label:`Status`,options:xt,selected:e.filter,onSelect:o}),e.pluginsSupported&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,K.jsx)(kt,{label:`Type`,options:St,selected:e.filter,onSelect:o})]}),(0,K.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,K.jsx)(kt,{label:`Source`,options:Ct,selected:e.filter,onSelect:o})]})})]})}function Et({filter:e,onFilterChange:t,categories:n,category:r,onCategoryChange:i,counts:o,totalCount:s,showCounts:c,pluginsSupported:l,open:u,onOpenChange:d,trigger:f}){let p=[...n].sort((e,t)=>e.label.localeCompare(t.label));return(0,K.jsxs)(k.Root,{open:u,onOpenChange:d,children:[(0,K.jsx)(k.Trigger,{asChild:!0,children:f}),(0,K.jsxs)(k.Content,{className:`max-h-[85dvh]`,"aria-describedby":void 0,children:[(0,K.jsx)(`div`,{"aria-hidden":!0,className:`mx-auto mb-3 h-1 w-9 shrink-0 rounded-full bg-[var(--border-element)]`}),(0,K.jsx)(k.Header,{children:(0,K.jsx)(k.Title,{children:`Filters`})}),(0,K.jsxs)(k.Body,{className:`flex flex-col gap-3 pt-2`,children:[(0,K.jsx)(Dt,{label:`Status`,children:xt.map(n=>(0,K.jsx)(Ot,{icon:n.icon,label:n.label,active:e===n.value,onSelect:()=>t(n.value)},n.value))}),l&&(0,K.jsx)(Dt,{label:`Type`,children:St.map(n=>(0,K.jsx)(Ot,{icon:n.icon,label:n.label,active:e===n.value,onSelect:()=>t(n.value)},n.value))}),(0,K.jsx)(Dt,{label:`Source`,children:Ct.map(n=>(0,K.jsx)(Ot,{icon:n.icon,label:n.label,active:e===n.value,onSelect:()=>t(n.value)},n.value))}),(0,K.jsxs)(Dt,{label:`Categories`,children:[(0,K.jsx)(Ot,{icon:N,label:`All`,active:r===null,badge:c?s:void 0,onSelect:()=>i(null)}),p.map(e=>(0,K.jsx)(Ot,{icon:_t(e.icon)??N,label:e.label,active:r===e.slug,badge:c?o[e.slug]??0:void 0,onSelect:()=>i(e.slug)},e.slug))]})]}),(0,K.jsx)(k.Footer,{children:(0,K.jsx)(a,{type:`button`,variant:`primary`,fullWidth:!0,onClick:()=>d(!1),children:`Done`})})]})]})}function Dt({label:e,children:t}){return(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`px-2 pb-1 text-body-small-default uppercase tracking-wide`,style:{color:`var(--content-tertiary)`},children:e}),t]})}function Ot({icon:e,label:t,active:n,badge:r,onSelect:i}){return(0,K.jsx)(A,{icon:e,label:t,active:n,activeVariant:`branded`,badge:r,trailingAction:n&&r==null?(0,K.jsx)(T,{className:`h-4 w-4 text-[var(--primary-base)]`,"aria-hidden":!0}):void 0,onSelect:i})}function kt({label:e,options:t,selected:n,onSelect:r}){return(0,K.jsxs)(`li`,{children:[(0,K.jsx)(`div`,{className:`px-3 pb-1 pt-2 text-body-small-default uppercase tracking-wide`,style:{color:`var(--content-tertiary)`},children:e}),(0,K.jsx)(`ul`,{children:t.map(e=>{let t=e.icon,i=n===e.value;return(0,K.jsx)(`li`,{children:(0,K.jsxs)(`button`,{type:`button`,onClick:()=>r(e.value),role:`option`,"aria-selected":i,className:`flex w-full items-center gap-2 px-3 py-1.5 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{color:i?`var(--primary-base)`:`var(--content-default)`},children:[(0,K.jsx)(t,{className:`h-4 w-4`,"aria-hidden":!0}),(0,K.jsx)(`span`,{className:`flex-1`,children:e.label}),i&&(0,K.jsx)(O,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]})},e.value)})})]})}var At=300*1e3,jt=[],Mt=[];async function Nt(e,t,n){let r=await Oe({path:{assistant_id:e},query:{q:void 0,category:t},signal:n,throwOnError:!1});if(r.response?.status===404)return{plugins:[]};if(!r.response?.ok)throw Error(`Failed to load plugins`);return r.data??{plugins:[]}}function Pt(e,t){let[n,r]=(0,G.useState)({assistantId:e,latched:!1}),i=n.assistantId===e?n.latched:!1;return n.assistantId!==e&&r({assistantId:e,latched:!1}),(0,G.useEffect)(()=>{t&&r(t=>t.assistantId===e&&t.latched?t:{assistantId:e,latched:!0})},[e,t]),i||t}function Ft(e,t=null,n=!0){let r=t??void 0,i=u({queryKey:U({path:{assistant_id:e},query:{q:void 0,category:r}}),queryFn:({signal:t})=>Nt(e,r,t),enabled:!!e&&n,staleTime:At}),a=u({...ve(e),enabled:!!e&&n&&t!==null}),o=u({...H({path:{assistant_id:e},query:{q:void 0}}),enabled:!!e&&n,staleTime:At}),s=(0,G.useMemo)(()=>{let e=t===null?i.data?.plugins:a.data?.plugins??i.data?.plugins;return new Set((e??jt).map(e=>e.name))},[t,a.data?.plugins,i.data?.plugins]),c=(0,G.useMemo)(()=>{let e=i.data?.plugins??jt,n=o.data?.matches??Mt;return $e(Ze(e,(t===null?n:n.filter(e=>(e.category??`system`)===t)).filter(e=>!s.has(e.name))))},[i.data?.plugins,o.data?.matches,t,s]),d=t===null?i.data:a.data,f=Pt(e,d?.categoryCounts!==void 0),p=Pt(e,(d?.plugins??jt).some(e=>e.enabled!==void 0)),m=l(),h=(0,G.useRef)(null);return(0,G.useEffect)(()=>{if(h.current===e||!o.isSuccess)return;let t=d?.plugins;if(!t?.length)return;let n=new Map((o.data?.matches??Mt).map(e=>[e.name,e.category]));t.some(e=>{let t=n.get(e.name);return t!=null&&t!==`system`&&(e.category??`system`)===`system`})&&(h.current=e,m.invalidateQueries({queryKey:U({path:{assistant_id:e},query:{q:void 0}})}))},[e,o.isSuccess,o.data?.matches,d?.plugins,m]),{items:c,isLoading:i.isLoading,catalogLoading:o.isLoading,isError:i.isError,isFetching:i.isFetching||o.isFetching,catalogError:o.isError,categorySupported:f,pluginToggleSupported:p,installedCategoryCounts:d?.categoryCounts,installedPlugins:d?.plugins??jt,installedTotal:d?.totalCount,catalogMatches:o.data?.matches??Mt,unfilteredInstalledNames:s}}function It(e){return u({...Ne({path:{assistant_id:e}}),select:e=>e.categories,staleTime:300*1e3})}var Lt=new Set([`all`,`installed`,`available`,`skills`,`plugins`,`vellum`,`clawhub`,`skillssh`,`custom`,`assistant-memory`]);function Rt(e){let t=e.get(`filter`),n=e.get(`category`);return{q:e.get(`q`)??``,filter:Vt(t)?t:`all`,category:n||null}}function zt(e,t){let n=new URLSearchParams(e);return t.q!==void 0&&Bt(n,`q`,t.q.trim()||null),t.filter!==void 0&&Bt(n,`filter`,t.filter===`all`?null:t.filter),t.category!==void 0&&Bt(n,`category`,t.category),n}function Bt(e,t,n){n===null?e.delete(t):e.set(t,n)}function Vt(e){return e!==null&&Lt.has(e)}function Ht(e){switch(e){case`installed`:return{kind:`installed`};case`available`:return{kind:`available`};case`vellum`:case`clawhub`:case`skillssh`:case`custom`:case`assistant-memory`:return{origin:e};default:return{}}}function Ut(e){return e!==`plugins`}function Wt(e){return e===`all`||e===`installed`||e===`available`||e===`plugins`}function Gt(e){switch(e){case`installed`:return`installed`;case`available`:return`available`;default:return`all`}}function Kt(e,t){let[n,r]=(0,G.useState)(e);return(0,G.useEffect)(()=>{let n=setTimeout(()=>{r(e)},t);return()=>clearTimeout(n)},[e,t]),n}var qt=300,Jt=`vellum:superpowers:tipDismissed`;function Yt(e){return[...e].sort((e,t)=>e.installed===t.installed?e.name.localeCompare(t.name,void 0,{sensitivity:`base`}):e.installed?-1:1)}function Xt({assistantId:e}){let r=o(),i=c(),a=l(),d=Le(),f=we.use.version(),p=Re(),[m,h]=s(),{q:g,filter:_,category:y}=(0,G.useMemo)(()=>Rt(m),[m]),b=m.get(`plugin`),x=(0,G.useCallback)(e=>{h(t=>zt(t,e),{replace:!0})},[h]),S=m.get(`success`),C=(0,G.useRef)(!1);(0,G.useEffect)(()=>{S!==`true`||C.current||(C.current=!0,b&&B.success(`Installed ${b}`),h(e=>{let t=new URLSearchParams(e);return t.delete(`success`),t},{replace:!0}))},[S,b,h]);let[w,T]=(0,G.useState)(g),E=Kt(w.trim(),qt),D=(0,G.useRef)(g);(0,G.useEffect)(()=>{if(g!==D.current&&(D.current=g,g!==w.trim())){T(g);return}E!==g&&E===w.trim()&&(D.current=E,x({q:E}))},[E,g,w,x]);let te=(0,G.useCallback)(e=>x({filter:e}),[x]),O=(0,G.useCallback)(e=>x({category:e}),[x]),[re,ie]=(0,G.useState)(()=>n(Jt,!1)),k=(0,G.useCallback)(()=>{ie(!0),t(Jt,!0)},[]),A=!p&&_===`plugins`?`all`:_,j=Ut(A),ae=p&&Wt(A),M=Gt(A),{handleInstall:oe,handleRemove:se,isInstallingSkill:N,isRemovingSkill:ce,skillPendingRemoval:P,confirmRemove:le,cancelRemove:ue}=ee(e),{data:de=[]}=It(e),{origin:F,kind:fe}=(0,G.useMemo)(()=>Ht(A),[A]),I=u({...Ae({path:{assistant_id:e},query:{include:`catalog`,origin:F,kind:fe,q:E||void 0,category:y??void 0}}),select:e=>({skills:e.skills,categoryCounts:e.categoryCounts,totalCount:e.totalCount}),enabled:!!e&&j}),pe=u({...Ae({path:{assistant_id:e},query:{include:`catalog`,origin:F,kind:fe,q:E||void 0}}),select:e=>({skills:e.skills,categoryCounts:e.categoryCounts,totalCount:e.totalCount}),enabled:!!e&&j&&y!==null}),{items:me,isLoading:L,catalogLoading:he,isError:ge,isFetching:_e,catalogError:R,categorySupported:ve,installedCategoryCounts:z,installedPlugins:ye,installedTotal:be,catalogMatches:xe,unfilteredInstalledNames:Ce}=Ft(e,y,p),V=ae&&(y===null||ve),Te=(0,G.useCallback)(t=>ne(a,e,t),[e,a]),[Ee,De]=(0,G.useState)(null),[Oe,je]=(0,G.useState)(null),[Ne,Pe]=(0,G.useState)(null),[H,U]=(0,G.useState)(null),[W,ze]=(0,G.useState)(null),Be=Me({onMutate:e=>De(e.body.name),onSuccess:(e,t)=>B.success(`Installed ${t.body.name}`),onError:()=>B.error(qe),onSettled:(e,t,n)=>{De(null),Te(n.body.name)}}),He=Ie({onMutate:e=>je(e.path.name),onSuccess:(e,t)=>B.success(`Removed ${t.path.name}`),onError:()=>B.error(Je),onSettled:(e,t,n)=>{je(null),Te(n.path.name)}}),Ue=Fe({onMutate:e=>Pe(e.path.name),onSuccess:(e,t)=>B.success(e.outcome===`already-up-to-date`?`${t.path.name} is already up to date`:`Upgraded ${t.path.name} to ${tt(e.toCommit)}`),onError:()=>B.error(Ye),onSettled:(e,t,n)=>{Pe(null),Te(n.path.name)}}),q=(0,G.useCallback)(e=>h(t=>{let n=new URLSearchParams(t);return n.set(`plugin`,e.name),n}),[h]),Xe=(0,G.useCallback)(()=>h(e=>{let t=new URLSearchParams(e);return t.delete(`plugin`),t},{replace:!0}),[h]),Ze=(0,G.useCallback)(t=>{Be.mutate({path:{assistant_id:e},body:{name:t.name}})},[e,Be]),$e=(0,G.useCallback)(()=>{H&&(He.mutate({path:{assistant_id:e,name:H.name}}),U(null))},[e,H,He]),J=(0,G.useCallback)(t=>{Ue.mutate({path:{assistant_id:e,name:t},body:{}})},[e,Ue]),nt=(0,G.useCallback)(()=>{W&&(J(W.name),ze(null))},[W,J]),rt=(0,G.useCallback)((e,t)=>{if(st(t)){ze(e);return}J(e.name)},[J]),Y=(0,G.useMemo)(()=>j?I.data?.skills??[]:[],[j,I.data?.skills]),it=(0,G.useMemo)(()=>V?et(me,M).filter(e=>Qe(e,E)):[],[V,me,M,E]),at=(0,G.useMemo)(()=>Yt([...Y.map(e=>({type:`skill`,key:`skill:${e.id}`,name:e.name,installed:v(e),skill:e})),...it.map(e=>({type:`plugin`,key:`plugin:${e.name}`,name:e.name,installed:e.status===`installed`,item:e}))]),[Y,it]),X=y===null?I.data:pe.data,ot=Zt(j,X?.skills??Y,X?.categoryCounts,X?.totalCount),Z=Qt(ae&&ve,z,ye,be,xe,Ce,M),{counts:ct,totalCount:lt}=(0,G.useMemo)(()=>{let e={...ot.counts};for(let[t,n]of Object.entries(Z.counts))e[t]=(e[t]??0)+n;return{counts:e,totalCount:ot.totalCount+Z.totalCount}},[ot,Z]),ut=j&&I.isLoading,Q=j&&I.isError,dt=V&&L,$=V&&ge,pt=(Q||!j)&&($||!V)&&(Q||$),gt=ut||dt,_t=!!E&&(j&&I.isFetching||V&&_e&&!L),yt=w.trim().length>0;if(b&&!p&&f===null)return null;if(b&&p){let t=me.find(e=>e.name===b),n={assistantId:e,name:b,externalHint:t?.external,enabled:t?.enabled,onBack:Xe};return d?(0,K.jsx)(mt,{...n}):(0,K.jsx)(ft,{...n})}let xt=(0,K.jsx)(`div`,{className:`min-w-0 flex-1 overflow-y-auto`,children:gt?(0,K.jsx)(nn,{}):pt?(0,K.jsx)(rn,{}):at.length===0?V&&he&&M!==`installed`?(0,K.jsx)(nn,{}):(0,K.jsx)(an,{filter:A,category:y}):(0,K.jsx)(`ul`,{className:`flex flex-col gap-2`,children:at.map(t=>(0,K.jsx)(`li`,{children:t.type===`skill`?(0,K.jsx)(bt,{skill:t.skill,onSelect:()=>r(ke.skills.detail(t.skill.id),{state:{listSearch:i.search}}),onInstall:()=>oe(t.skill),onRemove:()=>se(t.skill),isInstalling:N(t.skill),isRemoving:ce(t.skill)}):t.installed?(0,K.jsx)($t,{assistantId:e,item:t.item,onSelect:()=>q(t.item),onRemove:()=>U(t.item),onUpgrade:e=>rt(t.item,e),isRemoving:Oe===t.item.name,isUpgrading:Ne===t.item.name}):(0,K.jsx)(ht,{assistantId:e,item:t.item,onSelect:()=>q(t.item),onInstall:()=>Ze(t.item),isInstalling:Ee===t.item.name})},t.key))})});return(0,K.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col gap-4`,children:[!re&&(0,K.jsx)(en,{onDismiss:k}),(0,K.jsx)(wt,{search:w,onSearchChange:T,filter:A,onFilterChange:te,isSearching:_t,categories:de,category:y,onCategoryChange:O,counts:ct,totalCount:lt,showCounts:!yt,pluginsSupported:p}),!gt&&!pt&&Q?(0,K.jsx)(tn,{text:`Skills are temporarily unavailable. Plugins are still listed below.`}):null,!gt&&!pt&&$?(0,K.jsx)(tn,{text:`Plugins are temporarily unavailable. Skills are still listed below.`}):null,V&&R&&!dt&&!$?(0,K.jsx)(tn,{text:`Plugin catalog browsing is temporarily unavailable. Installed plugins are still listed below.`}):null,(0,K.jsxs)(`div`,{className:`flex min-h-0 flex-1 gap-6`,children:[(0,K.jsx)(`aside`,{className:`hidden w-56 shrink-0 overflow-y-auto sm:block`,children:(0,K.jsx)(vt,{ariaLabel:`Superpower categories`,selected:y,onSelect:O,counts:ct,totalCount:lt,showCounts:!yt,categories:de})}),xt]}),(0,K.jsx)(Ve,{skillName:P?.name??null,onConfirm:le,onCancel:ue}),(0,K.jsx)(Se,{open:H!==null,title:`Remove plugin`,message:H?We(H.name):``,confirmLabel:`Remove`,destructive:!0,onConfirm:$e,onCancel:()=>U(null)}),(0,K.jsx)(Se,{open:W!==null,title:`Upgrade plugin`,message:W?Ge(W.name):``,confirmLabel:Ke,destructive:!0,onConfirm:nt,onCancel:()=>ze(null)})]})}function Zt(e,t,n,r){return(0,G.useMemo)(()=>{if(!e)return{counts:{},totalCount:0};if(n&&Object.keys(n).length>0)return{counts:n,totalCount:r??t.length};let i={};for(let e of t){let t=e.category??`system`;i[t]=(i[t]??0)+1}return{counts:i,totalCount:r??t.length}},[e,t,n,r])}function Qt(e,t,n,r,i,a,o){return(0,G.useMemo)(()=>{if(!e)return{counts:{},totalCount:0};let s={},c=o!==`available`,l=o===`all`||o===`available`;if(c)if(t&&Object.keys(t).length>0)Object.assign(s,t);else for(let e of n){let t=e.category??`system`;s[t]=(s[t]??0)+1}let u=0;if(l)for(let e of i){if(a.has(e.name))continue;let t=e.category??`system`;s[t]=(s[t]??0)+1,u+=1}let d=r??n.length;return{counts:s,totalCount:(c?d:0)+u}},[e,t,n,r,i,a,o])}function $t({assistantId:e,item:t,onSelect:n,onRemove:r,onUpgrade:i,isRemoving:a,isUpgrading:o}){let s=Z({assistantId:e,name:t.name}).data;return(0,K.jsx)(ht,{assistantId:e,item:t,drift:s,onSelect:n,onRemove:r,onUpgrade:()=>i(s),isRemoving:a,isUpgrading:o})}function en({onDismiss:e}){return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-body-small-default`,style:{backgroundColor:`var(--surface-base)`,color:`var(--content-secondary)`},children:[(0,K.jsx)(pe,{className:`h-4 w-4 shrink-0`,style:{color:`var(--primary-base)`}}),(0,K.jsx)(`p`,{className:`flex-1`,children:`Create a new custom skill by describing what you want in chat, or install plugins to extend your assistant.`}),(0,K.jsx)(a,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,K.jsx)(_e,{"aria-hidden":!0}),onClick:e,"aria-label":`Dismiss tip`,tintColor:`var(--content-tertiary)`,expandOnMobile:!1})]})}function tn({text:e}){return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-body-small-default`,style:{backgroundColor:`var(--surface-base)`,color:`var(--content-secondary)`},children:[(0,K.jsx)(re,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`},"aria-hidden":!0}),(0,K.jsx)(`p`,{className:`flex-1`,children:e})]})}function nn(){return(0,K.jsx)(`div`,{className:`flex items-center justify-center py-16`,children:(0,K.jsx)(P,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})})}function rn(){return(0,K.jsx)(p.Root,{children:(0,K.jsxs)(p.Body,{className:`flex flex-col items-center justify-center py-16 text-center`,children:[(0,K.jsx)(he,{className:`mb-3 h-8 w-8`,style:{color:`var(--system-danger)`},"aria-hidden":!0}),(0,K.jsx)(`h3`,{className:`text-title-small`,style:{color:`var(--content-default)`},children:`Failed to load superpowers`}),(0,K.jsx)(`p`,{className:`mt-1 max-w-sm text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Something went wrong. Try refreshing the page.`})]})})}function an({filter:e,category:t}){let{title:n,subtitle:r,Icon:i}=on(e,t);return(0,K.jsx)(y,{icon:i,title:n,subtitle:r})}function on(e,t){if(t)return{title:`Nothing in this category`,subtitle:`Try selecting a different category or clearing the filter.`,Icon:N};switch(e){case`installed`:return{title:`No Superpowers Installed`,subtitle:`Ask your assistant in chat to search for and install new skills and plugins.`,Icon:R};case`available`:return{title:`Nothing Left to Install`,subtitle:`All available skills and plugins are installed.`,Icon:O};case`skills`:return{title:`No Skills Found`,subtitle:`Ask your assistant in chat to search for and install new skills.`,Icon:R};case`plugins`:return{title:`No Plugins Found`,subtitle:`Browse the catalog to install plugins that extend your assistant.`,Icon:F};case`vellum`:return{title:`No Vellum Skills`,subtitle:`No bundled Vellum skills found.`,Icon:R};case`clawhub`:return{title:`No Clawhub Skills`,subtitle:`No Clawhub skills found. Try searching the catalog.`,Icon:R};case`skillssh`:return{title:`No skills.sh Skills`,subtitle:`No skills.sh skills found. Try searching the catalog.`,Icon:R};case`custom`:return{title:`No Custom Skills`,subtitle:`Create a custom skill by describing what you want in chat.`,Icon:R};case`assistant-memory`:return{title:`No Skills From Memory`,subtitle:`Skills your assistant authors from past conversations will appear here.`,Icon:R};default:return{title:`No Superpowers Available`,subtitle:`Check your connection to the Vellum catalog.`,Icon:re}}}function sn(){return(0,K.jsx)(Xt,{assistantId:ze()})}export{sn as SuperpowersPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,l as n,o as r,u as i}from"./local-settings-Bx7FsNo5.js";import{t as a}from"./react-BFJW0bSv.js";var o=e(a(),1);function s(e){if(typeof window>`u`)return null;try{return localStorage.getItem(e)}catch{return null}}function c(e){let r=new Map,i={has:e=>r.has(e),get:e=>r.get(e),drop:e=>r.delete(e),scope:e,clear:()=>r.clear(),write(e,i,a,o){r.delete(e),!n(i,o)&&(r.set(e,a),t(i,o))}};return l.push(i),i}var l=[];function u(){for(let e of l)e.scope===`user`&&e.clear()}var d=``;function f(e,t){let n=new Map;return function(r){let i=e(r),a=n.get(r);if(a!==void 0&&a.raw===i)return a.value;let o=t(i);return n.set(r,{raw:i,value:o}),o}}function p(e){return e===`true`?!0:e===`false`?!1:null}function m(e){let{key:t,scope:n,parse:a,serialize:l,fallback:u}=e,f,p=u,m=c(n);function h(){if(m.has(d))return m.get(d);let e=s(t);if(e===f)return p;if(f=e,e===null)return p=u,u;try{let t=a(e);p=t===null?u:t}catch{p=u}return p}function g(e){m.write(d,t,e,l(e))}function _(){m.drop(d),r(t)}function v(e){return i(t,e)}function y(){return h()}function b(){return u}function x(){return(0,o.useSyncExternalStore)(v,y,b)}return{load:h,save:g,remove:_,key:t,scope:n,useValue:x}}function h(e){let{keyFn:t,scope:n,parse:a,serialize:l,fallback:u}=e;function d(e){if(e===null)return u;try{let t=a(e);return t===null?u:t}catch{return u}}let p=c(n);function m(e){return p.has(e)?p.get(e):d(s(t(e)))}function h(e,n){p.write(e,t(e),n,l(n))}function g(e){p.drop(e),r(t(e))}let _=f(e=>s(t(e)),d);function v(e){return p.has(e)?p.get(e):_(e)}function y(e){return(0,o.useSyncExternalStore)((0,o.useCallback)(n=>i(t(e),n),[e]),(0,o.useCallback)(()=>v(e),[e]),()=>u)}return{load:m,save:h,remove:g,keyFn:t,scope:n,useValue:y}}function g(e){let{keyFn:t,scope:n,parseValue:a,fallback:l,maxEntries:u}=e;function d(e){try{let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return null;let n={};for(let[e,r]of Object.entries(t)){let t=a(r);t!==null&&(n[e]=t)}return n}catch{return null}}let p=c(n);function m(e,n){p.write(e,t(e),n,JSON.stringify(n))}function h(e){if(p.has(e))return{...p.get(e)};let n=s(t(e));return n===null?{...l}:d(n)??{...l}}function g(e,t){return h(e)[t]}function _(e,t,n){let r=h(e);if(r[t]=n,u!==void 0){let t=Object.entries(r);if(t.length>u){let n=t.slice(t.length-u),r={};for(let[e,t]of n)r[e]=t;m(e,r);return}}m(e,r)}function v(e,t){let n=h(e);delete n[t],m(e,n)}function y(e){p.drop(e),r(t(e))}let b=f(e=>s(t(e)),e=>e===null?l:d(e)??l);function x(e){return p.has(e)?p.get(e):b(e)}function S(e){return(0,o.useSyncExternalStore)((0,o.useCallback)(n=>i(t(e),n),[e]),(0,o.useCallback)(()=>x(e),[e]),()=>l)}return{load:h,get:g,set:_,deleteEntry:v,remove:y,keyFn:t,scope:n,useValue:S}}export{p as a,m as i,h as n,g as r,u as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./utils-CAZUrJMu.js";var t=`0.10.8`;function n(n){return e(t,n)}export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,s as t,t as n}from"./utils-CAZUrJMu.js";var r=`0.12.0`;function i(t){return e(r,t)}async function a(e){return await t(e),n(r,e)}export{i as n,a as t};
|
|
File without changes
|
|
File without changes
|