@vellumai/web 0.11.2-staging.2 → 0.11.2

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.
Files changed (159) hide show
  1. package/dist/assets/{Combination-CWTYp834.js → Combination-TPH8qx8I.js} +1 -1
  2. package/dist/assets/{access-CVnesk0m.js → access-PKx6h0AJ.js} +1 -1
  3. package/dist/assets/{account-page-mMG1nL1O.js → account-page-DucijMvM.js} +1 -1
  4. package/dist/assets/{account-shell-BmH96-Ie.js → account-shell-BBDh-DzD.js} +1 -1
  5. package/dist/assets/{acp-run-detail-panel-SN6NIuW5.js → acp-run-detail-panel-DJ6moBbf.js} +1 -1
  6. package/dist/assets/{activity-steps-panel-bduSS8_d.js → activity-steps-panel-C95hN_fd.js} +1 -1
  7. package/dist/assets/{add-credential-modal-4zzd0MPK.js → add-credential-modal-BbvTHJmF.js} +1 -1
  8. package/dist/assets/{add-credits-modal-DNYP2NMD.js → add-credits-modal-C5d63VSi.js} +1 -1
  9. package/dist/assets/{ai-page-BMqECtJX.js → ai-page-CbNTYziv.js} +1 -1
  10. package/dist/assets/{api-key-screen-tqtaQUVf.js → api-key-screen-B5zgGiwa.js} +1 -1
  11. package/dist/assets/{app-card-BJigGog3.js → app-card-CxO44OqN.js} +1 -1
  12. package/dist/assets/{assistant-feature-flag-store-BvLDPeej.js → assistant-feature-flag-store-BojuHxUH.js} +1 -1
  13. package/dist/assets/{assistant-status-panel-DyjhJvK6.js → assistant-status-panel-ZdWgKADH.js} +1 -1
  14. package/dist/assets/{background-task-detail-panel-DCtBOnvF.js → background-task-detail-panel-BvgkgKs6.js} +1 -1
  15. package/dist/assets/{billing-page-TF_LgX6K.js → billing-page-CSxWbmCW.js} +2 -2
  16. package/dist/assets/{bookmarks-page-Brvj5Jf6.js → bookmarks-page-hFDlAWts.js} +1 -1
  17. package/dist/assets/{button-Dy5001j6.js → button-BwFudwM5.js} +1 -1
  18. package/dist/assets/{channels-page-route-8vJJE2LN.js → channels-page-route-Cxn_zS-J.js} +1 -1
  19. package/dist/assets/{chat-markdown-message-B7qvlO44.js → chat-markdown-message-BZZsrGyj.js} +1 -1
  20. package/dist/assets/{checkbox-PU47Djxg.js → checkbox-fzrjTRTI.js} +1 -1
  21. package/dist/assets/{checkout-page-MpIPAAgf.js → checkout-page-lDrK4V11.js} +1 -1
  22. package/dist/assets/{command-palette-Bd1GTwZQ.js → command-palette-Bzsl-t3p.js} +1 -1
  23. package/dist/assets/{command-palette-window-page-CoweYsZl.js → command-palette-window-page-DjfAe-7N.js} +1 -1
  24. package/dist/assets/{community-page-BWMwSeEZ.js → community-page-CktLEQl7.js} +1 -1
  25. package/dist/assets/{confirm-dialog-j9o2h3xs.js → confirm-dialog-B7WBNDbT.js} +1 -1
  26. package/dist/assets/{connect-page-BxSNhZ8N.js → connect-page-hrIJuX_v.js} +1 -1
  27. package/dist/assets/{consent-controls-Bs63UL5k.js → consent-controls-HYcVhQZ2.js} +1 -1
  28. package/dist/assets/{contacts-page-route-BOpVOsYK.js → contacts-page-route-CX57wU3L.js} +1 -1
  29. package/dist/assets/{conversation-navigation-Bf3cDRKh.js → conversation-navigation-CIHBMx2t.js} +1 -1
  30. package/dist/assets/{copy-to-clipboard-DgY-nZpm.js → copy-to-clipboard-Y0mxY68V.js} +1 -1
  31. package/dist/assets/{credential-entry-page-CreYYbwf.js → credential-entry-page-DQOv-Jyx.js} +1 -1
  32. package/dist/assets/credentials-page-C0eeGia5.js +1 -0
  33. package/dist/assets/{csv-preview-cEf_PW-P.js → csv-preview-C4T5JLx3.js} +1 -1
  34. package/dist/assets/{debug-page-DfPZPo6D.js → debug-page-DzXHo3zM.js} +2 -2
  35. package/dist/assets/{deploy-dialogs-CuaO05wL.js → deploy-dialogs-DQGwptOi.js} +1 -1
  36. package/dist/assets/{deploy-store-BDIOP-i9.js → deploy-store-BJh0AR_u.js} +1 -1
  37. package/dist/assets/{detail-card-BElAV1cp.js → detail-card-Br_T-73R.js} +1 -1
  38. package/dist/assets/{detail-drawer-Cd_EQJkJ.js → detail-drawer-Cbj_q7o7.js} +1 -1
  39. package/dist/assets/{detail-panel-stop-button-Bhew_kym.js → detail-panel-stop-button-DN2NrxEh.js} +1 -1
  40. package/dist/assets/{detail-shell-BjqibXNX.js → detail-shell-BuJMM-9z.js} +1 -1
  41. package/dist/assets/{developer-page-DwBmhm09.js → developer-page-Cj9JWAsX.js} +1 -1
  42. package/dist/assets/{dist-EanpjdWC.js → dist-B5IUaBWa.js} +1 -1
  43. package/dist/assets/{dist-C68qFSny.js → dist-BrrL0-_M.js} +1 -1
  44. package/dist/assets/dist-DWcXIgDR.js +1 -0
  45. package/dist/assets/{document-viewer-container-iB63ww7P.js → document-viewer-container-CPc9KTln.js} +2 -2
  46. package/dist/assets/{document-viewer-page-CA1ParJ6.js → document-viewer-page-BqJvQQmH.js} +1 -1
  47. package/dist/assets/{dropdown-B3FHWc_n.js → dropdown-CJVkL1Yp.js} +1 -1
  48. package/dist/assets/{emails-page-Bo0Bwem2.js → emails-page-DwQ-FnOD.js} +1 -1
  49. package/dist/assets/{file-editor-BfJR0ScX.js → file-editor-BigdI9HF.js} +1 -1
  50. package/dist/assets/{file-markdown-DnVLY_b_.js → file-markdown-eU8RUJQZ.js} +1 -1
  51. package/dist/assets/{first-run-scope-CPJpXaWU.js → first-run-scope-DqdWmMO-.js} +1 -1
  52. package/dist/assets/{general-page-BXeIQDGi.js → general-page-uFG7UTqR.js} +1 -1
  53. package/dist/assets/hatching-screen-CWZvcZVI.js +1 -0
  54. package/dist/assets/{home-page-route-BPht0PNp.js → home-page-route-zQaUf7gb.js} +1 -1
  55. package/dist/assets/{hosting-screen-DxtyBx0I.js → hosting-screen-lGuLVQVG.js} +1 -1
  56. package/dist/assets/{identity-page-route-DgmrXhhV.js → identity-page-route-C64OsL5_.js} +1 -1
  57. package/dist/assets/index-Cn_k9u0x.css +2 -0
  58. package/dist/assets/{index-CPeIfypI.js → index-D-1mlWsA.js} +1 -1
  59. package/dist/assets/{input-tXUFa7Eo.js → input-CgGeKtja.js} +1 -1
  60. package/dist/assets/{inspect-page-C8aLJOd6.js → inspect-page-DdXP831Q.js} +1 -1
  61. package/dist/assets/integrations-page-DmQCd8GV.js +1 -0
  62. package/dist/assets/{intelligence-layout-BRC0qkZ7.js → intelligence-layout-IptAIgHy.js} +1 -1
  63. package/dist/assets/{library-detail-page-gC4yIWnV.js → library-detail-page-Ddel5wXb.js} +1 -1
  64. package/dist/assets/{library-page-B10gnbXU.js → library-page-B4k0PNa8.js} +1 -1
  65. package/dist/assets/{login-page-CbWRbJDE.js → login-page-CRIed3qa.js} +1 -1
  66. package/dist/assets/{logout-page-DCyzi0V6.js → logout-page-Ne05SAbm.js} +1 -1
  67. package/dist/assets/{logs-layout-CYkqau4S.js → logs-layout-BN5HA58-.js} +1 -1
  68. package/dist/assets/{memory-page-route-j_3602nh.js → memory-page-route-Mz8GlpcX.js} +1 -1
  69. package/dist/assets/{memory-router-playground-page-x5X662qi.js → memory-router-playground-page-CeIkpuOW.js} +1 -1
  70. package/dist/assets/{menu-wESJw6y3.js → menu-Cfi4A3sw.js} +1 -1
  71. package/dist/assets/{message-files-panel-C8JokH6e.js → message-files-panel-C8sWLQ58.js} +1 -1
  72. package/dist/assets/{messages-Dyp1xUqz.js → messages-BTSYvzWZ.js} +1 -1
  73. package/dist/assets/{metric-card-DpZFp8-q.js → metric-card-CczTqF_s.js} +1 -1
  74. package/dist/assets/{mobile-sidebar-drawer-BwCIAm23.js → mobile-sidebar-drawer-CSAugzxJ.js} +1 -1
  75. package/dist/assets/{modal-xr_vw1ZO.js → modal-DagTZ8xj.js} +1 -1
  76. package/dist/assets/mutation-error-Cp0Jaqnt.js +1 -0
  77. package/dist/assets/{not-found-Bh7ZsdAo.js → not-found-C1zvwDkh.js} +1 -1
  78. package/dist/assets/{notifications-page-BA2BW5y6.js → notifications-page-BzoWNM1e.js} +1 -1
  79. package/dist/assets/{onboarding-layout-iPzXbZk1.js → onboarding-layout-CNKJRWfe.js} +1 -1
  80. package/dist/assets/{open-workspace-file-CivxJWcw.js → open-workspace-file-DAlt8chN.js} +2 -2
  81. package/dist/assets/{page-shell-ZNQR4ZTn.js → page-shell-Dx-efyAO.js} +1 -1
  82. package/dist/assets/pairing-page-BqjYohpZ.js +1 -0
  83. package/dist/assets/{panel-item-CJh95P_q.js → panel-item-5YQ3jbso.js} +1 -1
  84. package/dist/assets/{personality-page-Bz_rNBSs.js → personality-page-CB98MeIQ.js} +1 -1
  85. package/dist/assets/{plans-page-BfyCgy38.js → plans-page-BcR_kjJL.js} +1 -1
  86. package/dist/assets/{platform-login-notice-DFmjUE9q.js → platform-login-notice-DvWjpI2S.js} +1 -1
  87. package/dist/assets/popover-CBYgK7Wt.js +1 -0
  88. package/dist/assets/{preview-error-BrLE2D3A.js → preview-error-DzUxX6Jy.js} +1 -1
  89. package/dist/assets/{privacy-page-BhEGh78C.js → privacy-page-B9zfD9a-.js} +1 -1
  90. package/dist/assets/{privacy-screen-CWVCI_KU.js → privacy-screen-Btqk8OjG.js} +1 -1
  91. package/dist/assets/{provider-callback-page-DP5cKqPE.js → provider-callback-page-Jul4gNdZ.js} +1 -1
  92. package/dist/assets/provider-key-BZOwvE14.js +1 -0
  93. package/dist/assets/{provider-signup-page-BjiiJWS_.js → provider-signup-page-C47ij2Um.js} +1 -1
  94. package/dist/assets/{research-mock-page-CGkqkXHp.js → research-mock-page-DthnGXhi.js} +1 -1
  95. package/dist/assets/{research-onboarding-route-DZF-B2Rk.js → research-onboarding-route-Cql_2-1F.js} +1 -1
  96. package/dist/assets/{research-results-view-BFZFPpev.js → research-results-view-BYpW36E0.js} +1 -1
  97. package/dist/assets/{retire-confirm-dialog-8xlq4bkx.js → retire-confirm-dialog-PvFzzHrQ.js} +1 -1
  98. package/dist/assets/{review-terms-screen-C5BAI3Rx.js → review-terms-screen-BpE_z8HY.js} +1 -1
  99. package/dist/assets/routes-DRAnvlxS.js +23 -0
  100. package/dist/assets/{runtime-upgrade-banner-DjFuJawk.js → runtime-upgrade-banner-Blp8EyfL.js} +1 -1
  101. package/dist/assets/{schedules-page-3ZE1nR6I.js → schedules-page-D6KPJIUP.js} +1 -1
  102. package/dist/assets/{select-assistant-screen-D4WHHv61.js → select-assistant-screen-DH6QRKdk.js} +1 -1
  103. package/dist/assets/{settings-divider-BkLQFMlW.js → settings-divider-COV4-sHz.js} +1 -1
  104. package/dist/assets/{settings-layout-BmOglXDq.js → settings-layout-CyMD8Ey7.js} +1 -1
  105. package/dist/assets/{share-feedback-modal-Rwuho_1S.js → share-feedback-modal-NfuDPoEg.js} +1 -1
  106. package/dist/assets/{sidebar-tree-Dxx5qLMQ.js → sidebar-tree-DTcPYrOG.js} +1 -1
  107. package/dist/assets/{site-favicon-CDH0mg6Q.js → site-favicon-DkjZF9mC.js} +1 -1
  108. package/dist/assets/{skill-detail-page-DswXTTyb.js → skill-detail-page-CzCcXCkp.js} +1 -1
  109. package/dist/assets/{skill-detail-panel-DhQFBAFF.js → skill-detail-panel-B1Kxa3zf.js} +1 -1
  110. package/dist/assets/{skills-CbF2uKXV.js → skills-CrZ3GlyK.js} +1 -1
  111. package/dist/assets/{slack-setup-wizard-DPzdheN0.js → slack-setup-wizard-CeBY_rKV.js} +1 -1
  112. package/dist/assets/src-CwGlaCIx.js +293 -0
  113. package/dist/assets/{start-screen-CSxaBn88.js → start-screen-wyemTUjV.js} +1 -1
  114. package/dist/assets/{subagent-detail-panel-CidisBCf.js → subagent-detail-panel-C3II8umu.js} +1 -1
  115. package/dist/assets/{superpowers-page-BouZK3P4.js → superpowers-page-DmIZ_ed4.js} +1 -1
  116. package/dist/assets/{system-events-page-BrvTNeiN.js → system-events-page-DAbap4FJ.js} +1 -1
  117. package/dist/assets/{tag-gOOX7fbA.js → tag-G0ELn_cq.js} +1 -1
  118. package/dist/assets/{text-preview-DwgKh8PW.js → text-preview-DLiOtb-y.js} +1 -1
  119. package/dist/assets/{theme-stage-page-LIhQbqRQ.js → theme-stage-page-Dt0ShS5G.js} +1 -1
  120. package/dist/assets/{tiptap-document-editor-BvGaiGeN.js → tiptap-document-editor-LwU6S_hn.js} +2 -2
  121. package/dist/assets/{toast-BtFgiPe3.js → toast-BHjG1kP8.js} +1 -1
  122. package/dist/assets/{tool-detail-panel-B2CIRZkB.js → tool-detail-panel-tFQRRPbP.js} +1 -1
  123. package/dist/assets/{transcript-message-body-shared-BfKwS5qD.js → transcript-message-body-shared-DdXeU1D-.js} +1 -1
  124. package/dist/assets/{upgrade-cancel-page-DjeqfvTa.js → upgrade-cancel-page-isK2Rvv6.js} +1 -1
  125. package/dist/assets/{upgrade-success-page-B4TCn340.js → upgrade-success-page-B7ZaoDsy.js} +1 -1
  126. package/dist/assets/{use-assistant-identity-details-D-7oN9gr.js → use-assistant-identity-details-BLHiMTpS.js} +1 -1
  127. package/dist/assets/{use-attachment-preview-CQjpDfsc.js → use-attachment-preview-TAzqhvwh.js} +1 -1
  128. package/dist/assets/{use-attachment-squares-8Hx-p8ls.js → use-attachment-squares-Cnn6a6er.js} +1 -1
  129. package/dist/assets/{use-bookmarks-DO9wmU-2.js → use-bookmarks-BKYsQrf9.js} +1 -1
  130. package/dist/assets/{use-checkout-dismiss-refresh-CV_H4uEB.js → use-checkout-dismiss-refresh-ChquCG4n.js} +1 -1
  131. package/dist/assets/{use-edit-app-Bd1eXXFq.js → use-edit-app-LCywIVb9.js} +1 -1
  132. package/dist/assets/{use-invite-link-dialog-TNGI1l4g.js → use-invite-link-dialog-CnOeFYBH.js} +1 -1
  133. package/dist/assets/{use-ios-app-nudge-CadXZRJC.js → use-ios-app-nudge-9Qqz96FD.js} +1 -1
  134. package/dist/assets/{use-skill-actions-B_tz3CI7.js → use-skill-actions-Ik0rj4or.js} +1 -1
  135. package/dist/assets/{use-sticky-profiles-D5TVHOgw.js → use-sticky-profiles-BwaZUy6p.js} +1 -1
  136. package/dist/assets/{use-subagent-card-data-bjGydvhR.js → use-subagent-card-data-1nEhEj8_.js} +1 -1
  137. package/dist/assets/{use-transcript-message-by-id-BgyP3Ki5.js → use-transcript-message-by-id-RhDDYgbY.js} +1 -1
  138. package/dist/assets/{use-transcript-messages-C2uwkjKL.js → use-transcript-messages-C5t358ZW.js} +1 -1
  139. package/dist/assets/{utils-3IBGVjNS.js → utils-B6xfBCpN.js} +1 -1
  140. package/dist/assets/{viewer-store-DbIS4l8d.js → viewer-store-DxLOGAkL.js} +1 -1
  141. package/dist/assets/{voice-list-D26Lzbpv.js → voice-list-DP4_zhJe.js} +1 -1
  142. package/dist/assets/{voice-page-CQ2Vp8p4.js → voice-page-Bn0QH4eT.js} +1 -1
  143. package/dist/assets/{voice-providers-note-Ck7hNTfp.js → voice-providers-note-F4pLO3zK.js} +1 -1
  144. package/dist/assets/{welcome-screen-CdsjDVfi.js → welcome-screen-B6BjQt9n.js} +1 -1
  145. package/dist/assets/{workflow-detail-panel-CsRhUrbM.js → workflow-detail-panel-H3N7Md_X.js} +1 -1
  146. package/dist/assets/{workspace-page-CFuSxp5s.js → workspace-page-B4sn6pzo.js} +1 -1
  147. package/dist/index.html +55 -55
  148. package/package.json +1 -1
  149. package/dist/assets/credentials-page-DBLT8nUI.js +0 -1
  150. package/dist/assets/dist-BDdp8zqz.js +0 -1
  151. package/dist/assets/hatching-screen-BUpSlvBy.js +0 -1
  152. package/dist/assets/index-C7_04HXM.css +0 -2
  153. package/dist/assets/integrations-page-Bp2Q81Qt.js +0 -1
  154. package/dist/assets/mutation-error-YLfUU5XL.js +0 -1
  155. package/dist/assets/pairing-page-P5ghxF0M.js +0 -1
  156. package/dist/assets/popover-B-3isZCV.js +0 -1
  157. package/dist/assets/provider-key-CgC-RLmR.js +0 -1
  158. package/dist/assets/routes-uGHUgv4F.js +0 -23
  159. package/dist/assets/src-Da9g8qsW.js +0 -293
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-Cw8N9FBf.js","assets/dist-an0Z446E.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-CqtAGHQu.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-Dy5001j6.js";import{t as i}from"./preload-helper-Cv2QeVDK.js";import{t as a}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as o}from"./QueryClientProvider-CMu7CkQU.js";import{t as s}from"./useQuery-Bz-fbQ-m.js";import{t as c}from"./useMutation-CXGTrp4W.js";import{t as l}from"./jsx-runtime-D3ZM-ToX.js";import{t as u}from"./createLucideIcon-CAM1RhH8.js";import{t as d}from"./circle-alert-DQMH8VJH.js";import{t as f}from"./circle-check-DvrCdroD.js";import{t as ee}from"./cloud-off-BFACQbO0.js";import{t as te}from"./info-DkhVkzmK.js";import{t as p}from"./loader-circle-DWWXcfTQ.js";import{t as m}from"./moon-CHW45huN.js";import{t as h}from"./refresh-cw-EZQqnaxp.js";import{t as g}from"./triangle-alert-D6bAGtMw.js";import{t as _}from"./wrench-DhynFba1.js";import{n as v}from"./toast-BtFgiPe3.js";import{t as y}from"./confirm-dialog-j9o2h3xs.js";import{n as b,t as x}from"./create-selectors-BfxF8Sx_.js";import{L as ne,M as re,u as S}from"./local-mode-DHueA-BJ.js";import{t as C}from"./is-electron-DIlIrdJX.js";import{n as w,t as T}from"./resolved-assistants-store-C6oDdTxB.js";import{t as E}from"./assistant-identity-store-B51BX78j.js";import{at as ie,pt as ae,st as D,xt as O}from"./auth-store-C9aYqB9U.js";import{N as k,Q as A,k as j}from"./sdk.gen-ies09CqM.js";import{n as M}from"./event-bus-CbDg1VDt.js";import{t as N}from"./client-feature-flag-store-Cw39NfCq.js";import{m as oe}from"./native-biometric-DetUqtjl.js";import{i as P,t as F}from"./dist-an0Z446E.js";import{d as I}from"./routes-DrfnNoYS.js";import{i as L,t as R}from"./use-platform-gate-C5bNA5Pn.js";import{r as z}from"./use-is-org-ready-3vHDbj4G.js";import{o as B}from"./diagnostics-DykDXmF3.js";import{t as se}from"./use-bus-subscription-DiCq1_ki.js";import{C as ce,O as le,Tt as V,k as ue}from"./react-query.gen-BtYBixpk.js";import{t as H}from"./misc-BBsGq1IU.js";import{a as de,i as U,n as fe,o as W,r as G,s as pe,t as K}from"./local-runtime-upgrade-CnY-6TiF.js";var me=u(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),q=e(n(),1),he=x(b()((e,t)=>({isConnected:!1,setConnected:n=>{t().isConnected!==n&&e({isConnected:n})}}))),ge=()=>he.getState().isConnected;function J(e){return C()?window.vellum?.connectivity?.onState(e)??(()=>void 0):()=>void 0}function _e(e){C()&&window.vellum?.connectivity?.setDevice(e)}async function Y(e){if(!C())return null;try{return await e()??null}catch{return null}}function X(){return Y(()=>window.vellum?.connectivity?.get())}function ve(){return Y(()=>window.vellum?.connectivity?.retry())}var Z=5e3,ye=3e4,be=1e3,xe=3e4;function Se(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?Z:Math.min(xe,Math.max(be,e))}function Ce({assistantState:e,activeAssistantIsPlatformHosted:t,targetIsKnownPlatformHostedAssistant:n,targetIsLifecycleOperationAssistant:r}){return r||n||e.kind===`active`&&t}var we=new Map;function Te(e,t){let n=t?`${t.state}:${t.detail_state??``}`:`absent`;we.get(e)!==n&&(we.set(e,n),B(`operational_status`,{assistantId:e,state:t?.state??null,detailState:t?.detail_state??null,reason:t?.detail?.reason??null,message:t?.detail?.message??null,healthzOk:t?.runtime?.healthz_ok??null,podPhase:t?.pod?.pod_phase??null,sseConnected:ge()}))}async function Ee(e,t){let{data:n,error:r,response:i}=await k({path:{id:e},signal:t,throwOnError:!1});if(!i||!i.ok){if(i?.status===403||i?.status===404)return Te(e,null),null;throw r??Error(`Failed to fetch assistant operational status`)}let a=n??null;return Te(e,a),a}function De(e){let t=L(),n=O.use.assistantState(),r=O.use.operationalStatusAssistantId(),i=w(t=>e?t.assistants.find(t=>t.id===e):void 0),a=R(),o=z(),c=!!e&&e===r,l=i?.isPlatformHosted===!0&&i.isLocal===!1,u=!!e&&t===`full`&&o&&Ce({assistantState:n,activeAssistantIsPlatformHosted:a,targetIsKnownPlatformHostedAssistant:l,targetIsLifecycleOperationAssistant:c});return s({queryKey:ce({path:{id:u?e:`disabled`}}).queryKey,queryFn:({signal:t})=>Ee(e,t),enabled:u,retry:!1,staleTime:0,refetchIntervalInBackground:!0,refetchInterval:e=>{if(!u)return!1;let t=e.state.data;return t===null?ye:t?.state===`sleeping`?Z:Se(t?.poll_after_ms)}})}function Oe(e){return e?.state===`active`}var ke=2e3;function Ae(){let[e,t]=(0,q.useState)(`online`),n=(0,q.useRef)(null),r=(0,q.useCallback)(()=>{n.current&&=(clearTimeout(n.current),null)},[]),i=(0,q.useCallback)(e=>{e&&(r(),t(e))},[r]),a=(0,q.useCallback)(()=>{X().then(i)},[i]);return se(`app.resume`,a),(0,q.useEffect)(()=>{let e=J(e=>{if(e===`online`){if(n.current)return;n.current=setTimeout(()=>{n.current=null,t(`online`)},ke)}else r(),t(e)});return window.addEventListener(`focus`,a),()=>{e(),window.removeEventListener(`focus`,a),r()}},[a,r]),{connectivityState:e,retryConnectivity:(0,q.useCallback)(()=>{ve().then(i)},[i])}}var je=P(`Network`,{web:()=>i(()=>import(`./web-Cw8N9FBf.js`).then(e=>new e.NetworkWeb),__vite__mapDeps([0,1]))});function Me(){let[e,t]=(0,q.useState)(!0);return(0,q.useEffect)(()=>{if(!F.isNativePlatform())return;let e=!1;je.getStatus().then(n=>{e||t(n.connected)}).catch(()=>{});let n=je.addListener(`networkStatusChange`,n=>{e||t(n.connected)});return()=>{e=!0,n.then(e=>e.remove()).catch(()=>{})}},[]),e}var Q=l(),Ne=6e4,Pe=15e3,Fe={info:{container:`bg-[var(--system-info-weak)]`,content:`text-[color:var(--system-info-strong)]`,icon:`text-[color:var(--system-info-strong)]`,action:`[--status-banner-action-color:var(--system-info-strong)]`,DefaultIcon:te},success:{container:`bg-[var(--system-positive-weak)]`,content:`text-[color:var(--system-positive-strong)]`,icon:`text-[color:var(--system-positive-strong)]`,action:`[--status-banner-action-color:var(--system-positive-strong)]`,DefaultIcon:f},warning:{container:`bg-[var(--system-mid-weak)]`,content:`text-[color:var(--system-mid-strong)]`,icon:`text-[color:var(--system-mid-strong)]`,action:`[--status-banner-action-color:var(--system-mid-strong)]`,DefaultIcon:d},error:{container:`bg-[var(--system-negative-weak)]`,content:`text-[color:var(--system-negative-strong)]`,icon:`text-[color:var(--system-negative-strong)]`,action:`[--status-banner-action-color:var(--system-negative-strong)]`,DefaultIcon:g},neutral:{container:`bg-[var(--surface-active)]`,content:`text-[color:var(--content-secondary)]`,icon:`text-[color:var(--content-secondary)]`,action:`[--status-banner-action-color:var(--content-secondary)]`,DefaultIcon:null}},Ie={web:`min-h-10 rounded-none px-4 py-[10px]`,electron:`min-h-8 rounded-[6px] px-2 py-[7px]`};function Le({tone:e,title:t,children:n,icon:r,actions:i,placement:a=`web`,className:o,ref:s,...c}){let l=Fe[e],u=e===`error`?`alert`:`status`,d=a===`web`?`text-body-medium-default leading-5`:`text-body-small-default leading-[18px]`,f=r===void 0?l.DefaultIcon?(0,Q.jsx)(l.DefaultIcon,{"aria-hidden":`true`}):null:r;return(0,Q.jsxs)(`div`,{...c,ref:s,role:u,"data-slot":`status-banner-notice`,"data-placement":a,"data-tone":e,className:H(`flex w-full shrink-0 items-center justify-between gap-3 overflow-hidden`,`text-[color:var(--content-default)]`,Ie[a],l.container,o),children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[f?(0,Q.jsx)(`span`,{className:H(`flex size-3.5 shrink-0 items-center justify-center [&_svg]:size-3.5`,l.icon),children:f}):null,(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`div`,{className:H(`truncate`,l.content,d),children:t}),n?(0,Q.jsx)(`div`,{className:`text-body-small-default leading-4 text-[color:var(--content-secondary)]`,children:n}):null]})]}),i?(0,Q.jsx)(`div`,{className:H(`flex shrink-0 items-center border-l border-[color-mix(in_srgb,var(--status-banner-action-color)_22%,transparent)] text-label-medium-default`,`text-[color:var(--status-banner-action-color)]`,l.action,a===`web`?`gap-2 pl-4 leading-5`:`gap-1.5 pl-2 leading-[18px]`,`[&_[data-slot=button]]:h-auto [&_[data-slot=button]]:border-0 [&_[data-slot=button]]:bg-transparent`,`[&_[data-slot=button]]:-mx-1 [&_[data-slot=button]]:rounded-sm [&_[data-slot=button]]:px-1 [&_[data-slot=button]]:py-0`,`[&_[data-slot=button]]:text-body-small-default`,`[&_[data-slot=button]]:leading-[inherit] [&_[data-slot=button]]:shadow-none`,`[&_[data-slot=button]]:[--vbtn-fg:var(--status-banner-action-color)]`,`[&_[data-slot=button]]:hover:!bg-transparent [&_[data-slot=button]]:hover:!opacity-100`,`[&_[data-slot=button]]:hover:[--vbtn-fg:var(--status-banner-action-color)]`,`[&_[data-slot=button]]:focus-visible:ring-2 [&_[data-slot=button]]:focus-visible:ring-[var(--ring)] [&_[data-slot=button]]:focus-visible:ring-offset-0`),children:i}):null]})}var $={initializing:`Assistant is initializing`,migrating:`Assistant is migrating`,provisioning:`Assistant is provisioning`,active:`Assistant is healthy`,sleeping:`Assistant is sleeping`,waking:`Assistant is waking`,restarting:`Assistant is restarting`,restoring_backup:`Assistant is restoring a backup`,upgrading_assistant_version:`Assistant is upgrading`,resizing_machine:`Assistant machine is resizing`,resizing_storage:`Assistant storage is resizing`,maintenance_mode:`Assistant is in maintenance mode`,crash_loop:`Assistant fatal error`,unreachable:`Assistant is unreachable`,not_found:`Assistant was not found`,retiring:`Assistant is retiring`},Re={initializing:`Assistant failed to initialize`,migrating:`Assistant migration failed`,provisioning:`Assistant failed to provision`,waking:`Assistant failed to wake`,restarting:`Assistant restart failed`,restoring_backup:`Backup restore failed`,upgrading_assistant_version:`Assistant upgrade failed`,resizing_machine:`Machine resize failed`,resizing_storage:`Storage resize failed`,retiring:`Assistant failed to retire`};function ze(){return{tone:`warning`,title:$.maintenance_mode,icon:(0,Q.jsx)(_,{className:`h-4 w-4`,"aria-hidden":`true`})}}function Be(){return(0,Q.jsx)(p,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})}function Ve(){return(0,Q.jsx)(`span`,{className:`busy-indicator inline-block size-2 rounded-full bg-current`,"aria-hidden":`true`})}function He(e,t){if(!(!e&&!t))return(0,Q.jsxs)(Q.Fragment,{children:[e?Ge():null,e&&t?(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px bg-[color-mix(in_srgb,var(--status-banner-action-color)_35%,transparent)]`}):null,t?(0,Q.jsx)(r,{variant:`ghost`,size:`compact`,onClick:t,children:`Dismiss`}):null]})}function Ue(e,t,n){if(!e||Oe(e))return null;if(e.detail_state===`failed`){let r=Re[e.state];if(r)return{tone:`error`,title:r,children:e.detail?.message??void 0,actions:He(t,n)}}switch(e.state){case`crash_loop`:case`unreachable`:case`not_found`:return{tone:`error`,title:$[e.state],actions:t?Ge():void 0};case`sleeping`:return{tone:`neutral`,title:$[e.state],icon:(0,Q.jsx)(m,{className:`h-4 w-4`,"aria-hidden":`true`})};case`maintenance_mode`:return ze();case`upgrading_assistant_version`:case`resizing_machine`:case`resizing_storage`:case`initializing`:case`migrating`:case`provisioning`:return{tone:`info`,title:$[e.state],icon:Be()};case`waking`:return{tone:`info`,title:$[e.state],icon:Ve()};case`restarting`:case`restoring_backup`:case`retiring`:return{tone:`warning`,title:$[e.state],icon:Be()};default:return{tone:`warning`,title:$[e.state],icon:Be()}}}function We(e,t,n){switch(e){case`sleeping`:return{tone:n?`error`:`neutral`,title:`Your assistant is asleep`,children:n,icon:(0,Q.jsx)(m,{className:`h-4 w-4`,"aria-hidden":`true`}),actions:t};case`starting`:return{tone:`info`,title:`Your assistant is waking up`,icon:Ve()};case`upgrading`:return{tone:`warning`,title:`Assistant is upgrading`,icon:(0,Q.jsx)(p,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})};case`migrating`:return{tone:`info`,title:`Assistant is migrating`,icon:(0,Q.jsx)(p,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})};case`crashed`:return{tone:`error`,title:`Your assistant crashed`,children:n,actions:t};case`unreachable`:return{tone:n?`error`:`neutral`,title:`Your assistant is asleep`,icon:(0,Q.jsx)(m,{className:`h-4 w-4`,"aria-hidden":`true`}),children:n,actions:t};case`unhealthy`:return{tone:`warning`,title:`Assistant is unhealthy`};default:return null}}function Ge(){return(0,Q.jsx)(r,{asChild:!0,variant:`outlined`,size:`compact`,children:(0,Q.jsx)(a,{to:`${I.settings.debug}?tab=doctor`,children:`Go to Doctor`})})}function Ke(e){return e===`sleeping`||e===`crashed`||e===`unreachable`}function qe({banner:e,className:t,placement:n}){return(0,Q.jsx)(`div`,{className:H(n===`electron`?`px-4 pt-2`:`px-0 pt-0`,t),children:(0,Q.jsx)(Le,{tone:e.tone,title:e.title,icon:e.icon,actions:e.actions,placement:n,children:e.children})})}function Je(){let e=C(),n=oe(),{connectivityState:i,retryConnectivity:a}=Ae(),o=Me(),s=w.use.activeAssistantId(),c=w.use.selectedAssistantId(),l=w.use.assistants(),u=ie.use.currentOrganizationId(),d=O.use.assistantState(),f=O.use.operationalStatusAssistantId(),te=(0,q.useMemo)(()=>{let e=T(l,u).filter(e=>e.isPlatformHosted===!0&&e.isLocal===!1);return e.find(e=>e.id===c)?.id??e[0]?.id??null},[l,u,c]),h=f??s??te,g=d.kind===`active`&&!d.isLocal&&!!s&&h===s,_=De(h),v=ae(),{data:y,isError:b,refetch:x}=_,[E,k]=(0,q.useState)(!1);(0,q.useEffect)(()=>{y?.state===`sleeping`?k(!0):(y?.state===`active`||y?.state===`crash_loop`||y?.state===`not_found`)&&k(!1)},[y?.state]),(0,q.useEffect)(()=>{if(!E||y?.state!==`unreachable`)return;let e=setTimeout(()=>{k(!1)},6e4);return()=>clearTimeout(e)},[E,y?.state]);let[A,M]=(0,q.useState)(!1);(0,q.useEffect)(()=>{y?.state===`active`?M(!0):(y?.state===`sleeping`||y?.state===`crash_loop`||y?.state===`not_found`)&&M(!1)},[y?.state]),(0,q.useEffect)(()=>{if(!A||y?.state!==`unreachable`)return;let e=setTimeout(()=>{M(!1)},15e3);return()=>clearTimeout(e)},[A,y?.state]);let[N,P]=(0,q.useState)(null);se(`app.resume`,()=>{P(Date.now()+Pe)}),(0,q.useEffect)(()=>{if(N===null)return;let e=N-Date.now();if(e<=0){P(null);return}let t=setTimeout(()=>{P(null)},e);return()=>clearTimeout(t)},[N]);let F=N!==null,[I,L]=(0,q.useState)(null);(0,q.useEffect)(()=>{h&&(y?.state===`restarting`?L(y.detail_state===`failed`?null:h):(y?.state===`active`||y?.state===`sleeping`||y?.state===`not_found`)&&L(null))},[h,y?.state,y?.detail_state]);let R=I!==null&&I===h;(0,q.useEffect)(()=>{if(!R||y?.state!==`crash_loop`)return;let e=setTimeout(()=>{L(null)},6e4);return()=>clearTimeout(e)},[R,y?.state]);let[z,B]=(0,q.useState)(null),ce=(0,q.useRef)(y?.state);(0,q.useEffect)(()=>{let e=ce.current;ce.current=y?.state,y?.state!==e&&B(null)},[y?.state]);let le=(0,q.useCallback)(()=>{y?.state&&B(y.state)},[y?.state]),[V,ue]=(0,q.useState)(!1),[H,de]=(0,q.useState)(null),[U,fe]=(0,q.useState)(!1),[W,G]=(0,q.useState)(!1),[pe,K]=(0,q.useState)(null);(0,q.useEffect)(()=>{if(!W)return;let e=setTimeout(()=>{G(!1)},Ne);return()=>clearTimeout(e)},[W]),(0,q.useEffect)(()=>{(v===`healthy`||v===`unhealthy`||v===`sleeping`)&&G(!1)},[v]),(0,q.useEffect)(()=>{G(!1)},[s]);let he=(0,q.useCallback)(async()=>{if(!(!h||V)){ue(!0),de(null);try{let{response:e}=await j({path:{assistant_id:h},throwOnError:!1});if(!e?.ok)throw Error(`Exit maintenance mode returned non-ok response`);await Promise.allSettled([x(),D.checkAssistant()])}catch(e){t(e,{context:`exit_maintenance_mode_status_banner`}),de(`Failed to exit maintenance mode. Please try again.`)}finally{ue(!1)}}},[h,V,x]),ge=(0,q.useCallback)(async()=>{if(!(!s||U)){fe(!0),G(!0),K(null);try{let e=await ne(s);if(!e.ok){G(!1),K(e.error||`Wake failed. Try running vellum wake in your terminal.`);return}await Promise.allSettled([x(),a(),D.checkAssistant()]),D.triggerReachabilityProbe()}catch(e){G(!1),t(e,{context:`wake_local_assistant_status_banner`}),K(`Wake failed. Try running vellum wake in your terminal.`)}finally{fe(!1)}}},[s,U,x,a]);if((0,q.useEffect)(()=>{Ke(v)||K(null)},[v]),e&&i===`device-offline`||!e&&n&&!o)return{tone:`error`,title:`You're offline`,icon:(0,Q.jsx)(me,{className:`h-4 w-4`,"aria-hidden":`true`})};if(!re()&&Ke(v))return{tone:`neutral`,title:`Your assistant runs locally`,icon:(0,Q.jsx)(m,{className:`h-4 w-4`,"aria-hidden":`true`}),children:`Open the Vellum desktop app or run vellum wake in your terminal to start it.`};let J=(U||W)&&Ke(v)?`starting`:v,_e=We(J,Ke(J)&&s&&S(s)?(0,Q.jsx)(r,{variant:`outlined`,size:`compact`,leftIcon:U?(0,Q.jsx)(p,{className:`animate-spin`,"aria-hidden":`true`}):void 0,disabled:!s||U,onClick:()=>{ge()},children:`Wake up`}):void 0,pe);if(_e)return _e;if(e&&i===`backend-unreachable`)return{tone:`error`,title:`Trying to reach Vellum…`,icon:(0,Q.jsx)(ee,{className:`h-4 w-4`,"aria-hidden":`true`}),actions:(0,Q.jsx)(r,{variant:`outlined`,size:`compact`,onClick:a,children:`Retry now`})};let Y=d.kind===`active`&&d.maintenanceMode?.enabled===!0&&(!y||Oe(y));if(b&&!Y&&!F)return{tone:`error`,title:`Assistant status is unavailable`,actions:g?Ge():void 0};let X=y?.state===`unreachable`&&(E||F)?{...y,state:`waking`}:y?.state===`unreachable`&&A?{...y,state:`sleeping`}:y?.state===`crash_loop`&&R?{...y,state:`restarting`}:y,ve=X?.detail_state===`failed`&&X.state===z,Z=Y?ze():ve?null:Ue(X,g,le);return!(y?.state===`maintenance_mode`||Y)||!Z?Z:{...Z,tone:H?`error`:Z.tone,children:H,actions:h?(0,Q.jsx)(r,{variant:`outlined`,size:`compact`,leftIcon:V?(0,Q.jsx)(p,{className:`animate-spin`,"aria-hidden":`true`}):void 0,disabled:V,onClick:()=>{he()},children:`Resume Assistant`}):void 0}}function Ye({className:e,placement:t=C()?`electron`:`web`}){let n=Je();return n?(0,Q.jsx)(qe,{banner:n,className:e,placement:t}):null}var Xe=3e3;function Ze({assistantId:e,currentVersion:t,placement:n=`web`,className:i}){let[a,o]=(0,q.useState)(!1),[c,l]=(0,q.useState)(null),u=O(e=>e.assistantState),d=ae(),f=w.use.activeAssistantId(),ee=E.use.version(),te=N.use.previewChannel(),p=e??f,m=t??ee,g=w(e=>p?e.assistants.find(e=>e.id===p):null),_=g?.cloud===`local`,b=g?.isPlatformHosted===!0&&g?.isLocal===!1,x=g?.runtimeVersion??m??null,ne=g?.currentReleaseVersion??m??null,S=_?`local`:b?`platform`:null,{data:C}=De(b?p??null:null),T=S===`local`?x:S===`platform`?ne:null,ie=_&&g?.isActiveLockfileAssistant===!0,D=u.kind===`self_hosted`?!u.health||u.health===`healthy`:u.kind===`active`&&u.isLocal?u.reachable!==!1&&(!u.health||u.health===`healthy`):!1,k=!d||d===`healthy`,A=u.kind===`active`&&!u.isLocal&&u.reachable!==!1&&!u.maintenanceMode?.enabled&&(!u.health||u.health===`healthy`)&&(!C||C.state===`active`),j=!!p&&!!T&&!!g?.isLocal&&ie&&D&&k&&re()||!!p&&!!T&&b&&A,oe=U(g?.releaseChannel,te),{data:P,refetch:F}=s({...V({query:S===`platform`?{channel:oe}:{stable:!0,limit:100}}),enabled:j,refetchInterval:K,refetchOnReconnect:!0,refetchOnWindowFocus:!0});(0,q.useEffect)(()=>{if(!j)return;let e=()=>{F()},t=[M(`app.resume`,e),M(`power.resume`,e),M(`power.unlock`,e)];return()=>{for(let e of t)e()}},[F,j]);let I=(0,q.useMemo)(()=>S===`platform`?P?.find(e=>e.is_stable!==!1)??P?.[0]:G(P),[S,P])?.version??null,L=p&&I?`${p}:${I}`:null,R=de(T,I),z=pe({assistantId:p,targetVersion:I??void 0}),B=Qe({assistantId:p,targetVersion:I??void 0,shouldStopPolling:C?.detail_state===`failed`}),se=S===`platform`?B.isPending:z.isPending;return(0,q.useEffect)(()=>{if(!p||!I){l(null);return}l(W(p,I)?`${p}:${I}`:null)},[p,I]),!j||!I||!R||L!==null&&L===c||se?null:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:H(n===`electron`?`px-4 pt-2`:`px-0 pt-0`,i),children:(0,Q.jsx)(Le,{tone:`info`,title:`New assistant version available: ${I}`,placement:n,icon:(0,Q.jsx)(h,{"aria-hidden":`true`}),actions:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(r,{variant:`ghost`,size:`compact`,onClick:()=>o(!0),children:`Update`}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px bg-[color-mix(in_srgb,var(--status-banner-action-color)_35%,transparent)]`}),(0,Q.jsx)(r,{variant:`ghost`,size:`compact`,onClick:()=>{!p||!I||(fe(p,I),l(`${p}:${I}`))},children:`Later`})]})})}),(0,Q.jsx)(y,{open:a,title:`Update assistant runtime`,message:`Update to version ${I}? The assistant will be briefly unavailable during the update.`,confirmLabel:`Update`,onConfirm:async()=>{if(!(!p||!I||!S)){o(!1);try{if(S===`platform`){let e=await B.upgrade();if(e.detail?.includes(`Already on the latest`)){v.warning(e.detail);return}}else await z.upgrade(),v.success(`Update complete — assistant is healthy.`,{id:`runtime-upgrade-complete`,tone:`strong`});l(`${p}:${I}`)}catch(e){v.error(e instanceof Error?e.message:`Failed to trigger update. Please try again.`)}}},onCancel:()=>o(!1)})]})}function Qe({assistantId:e,targetVersion:t,shouldStopPolling:n=!1}){let r=o(),[i,a]=(0,q.useState)(!1),l=(0,q.useRef)(null),u=c({mutationFn:async()=>{if(!e)throw Error(`No assistant is active.`);let{data:n}=await A({path:{id:e},body:t?{version:t}:{},throwOnError:!0});return n}});return(0,q.useEffect)(()=>{!i||!n||(l.current=null,a(!1))},[i,n]),s({...le({path:{id:e??``}}),enabled:i&&!!e,refetchInterval:e=>{let t=e.state.data?.current_release_version;return t&&l.current&&t===l.current?(queueMicrotask(()=>{e.state.data&&w.getState().upsertFromApi(e.state.data),l.current=null,a(!1),v.success(`Update complete — assistant is healthy.`,{id:`runtime-upgrade-complete`,tone:`strong`})}),!1):Xe}}),{isPending:u.isPending||i,upgrade:async()=>{if(!e)throw Error(`No assistant is active.`);let n=await u.mutateAsync();return n.detail?.includes(`Already on the latest`)||(l.current=n.version??t??null,l.current&&a(!0),r.invalidateQueries({queryKey:ue({path:{id:e}})})),n}}}export{he as a,J as i,Ye as n,me as o,_e as r,Ze as t};
2
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-CqtAGHQu.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-BwFudwM5.js";import{t as i}from"./preload-helper-Cv2QeVDK.js";import{t as a}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as o}from"./QueryClientProvider-CMu7CkQU.js";import{t as s}from"./useQuery-Bz-fbQ-m.js";import{t as c}from"./useMutation-CXGTrp4W.js";import{t as l}from"./jsx-runtime-D3ZM-ToX.js";import{t as u}from"./createLucideIcon-CAM1RhH8.js";import{t as d}from"./circle-alert-DQMH8VJH.js";import{t as f}from"./circle-check-DvrCdroD.js";import{t as ee}from"./cloud-off-BFACQbO0.js";import{t as te}from"./info-DkhVkzmK.js";import{t as p}from"./loader-circle-DWWXcfTQ.js";import{t as m}from"./moon-CHW45huN.js";import{t as h}from"./refresh-cw-EZQqnaxp.js";import{t as g}from"./triangle-alert-D6bAGtMw.js";import{t as _}from"./wrench-DhynFba1.js";import{n as v}from"./toast-BHjG1kP8.js";import{t as y}from"./confirm-dialog-B7WBNDbT.js";import{n as b,t as x}from"./create-selectors-BfxF8Sx_.js";import{L as ne,M as re,u as S}from"./local-mode-DHueA-BJ.js";import{t as C}from"./is-electron-DIlIrdJX.js";import{n as w,t as T}from"./resolved-assistants-store-C6oDdTxB.js";import{t as E}from"./assistant-identity-store-B51BX78j.js";import{at as ie,pt as ae,st as D,xt as O}from"./auth-store-C9aYqB9U.js";import{N as k,Q as A,k as j}from"./sdk.gen-ies09CqM.js";import{n as M}from"./event-bus-CbDg1VDt.js";import{t as N}from"./client-feature-flag-store-Cw39NfCq.js";import{m as oe}from"./native-biometric-DetUqtjl.js";import{i as P,t as F}from"./dist-an0Z446E.js";import{d as I}from"./routes-DrfnNoYS.js";import{i as L,t as R}from"./use-platform-gate-C5bNA5Pn.js";import{r as z}from"./use-is-org-ready-3vHDbj4G.js";import{o as B}from"./diagnostics-DykDXmF3.js";import{t as se}from"./use-bus-subscription-DiCq1_ki.js";import{C as ce,O as le,Tt as V,k as ue}from"./react-query.gen-BtYBixpk.js";import{t as H}from"./misc-BBsGq1IU.js";import{a as de,i as U,n as fe,o as W,r as G,s as pe,t as K}from"./local-runtime-upgrade-CnY-6TiF.js";var me=u(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),q=e(n(),1),he=x(b()((e,t)=>({isConnected:!1,setConnected:n=>{t().isConnected!==n&&e({isConnected:n})}}))),ge=()=>he.getState().isConnected;function J(e){return C()?window.vellum?.connectivity?.onState(e)??(()=>void 0):()=>void 0}function _e(e){C()&&window.vellum?.connectivity?.setDevice(e)}async function Y(e){if(!C())return null;try{return await e()??null}catch{return null}}function X(){return Y(()=>window.vellum?.connectivity?.get())}function ve(){return Y(()=>window.vellum?.connectivity?.retry())}var Z=5e3,ye=3e4,be=1e3,xe=3e4;function Se(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?Z:Math.min(xe,Math.max(be,e))}function Ce({assistantState:e,activeAssistantIsPlatformHosted:t,targetIsKnownPlatformHostedAssistant:n,targetIsLifecycleOperationAssistant:r}){return r||n||e.kind===`active`&&t}var we=new Map;function Te(e,t){let n=t?`${t.state}:${t.detail_state??``}`:`absent`;we.get(e)!==n&&(we.set(e,n),B(`operational_status`,{assistantId:e,state:t?.state??null,detailState:t?.detail_state??null,reason:t?.detail?.reason??null,message:t?.detail?.message??null,healthzOk:t?.runtime?.healthz_ok??null,podPhase:t?.pod?.pod_phase??null,sseConnected:ge()}))}async function Ee(e,t){let{data:n,error:r,response:i}=await k({path:{id:e},signal:t,throwOnError:!1});if(!i||!i.ok){if(i?.status===403||i?.status===404)return Te(e,null),null;throw r??Error(`Failed to fetch assistant operational status`)}let a=n??null;return Te(e,a),a}function De(e){let t=L(),n=O.use.assistantState(),r=O.use.operationalStatusAssistantId(),i=w(t=>e?t.assistants.find(t=>t.id===e):void 0),a=R(),o=z(),c=!!e&&e===r,l=i?.isPlatformHosted===!0&&i.isLocal===!1,u=!!e&&t===`full`&&o&&Ce({assistantState:n,activeAssistantIsPlatformHosted:a,targetIsKnownPlatformHostedAssistant:l,targetIsLifecycleOperationAssistant:c});return s({queryKey:ce({path:{id:u?e:`disabled`}}).queryKey,queryFn:({signal:t})=>Ee(e,t),enabled:u,retry:!1,staleTime:0,refetchIntervalInBackground:!0,refetchInterval:e=>{if(!u)return!1;let t=e.state.data;return t===null?ye:t?.state===`sleeping`?Z:Se(t?.poll_after_ms)}})}function Oe(e){return e?.state===`active`}var ke=2e3;function Ae(){let[e,t]=(0,q.useState)(`online`),n=(0,q.useRef)(null),r=(0,q.useCallback)(()=>{n.current&&=(clearTimeout(n.current),null)},[]),i=(0,q.useCallback)(e=>{e&&(r(),t(e))},[r]),a=(0,q.useCallback)(()=>{X().then(i)},[i]);return se(`app.resume`,a),(0,q.useEffect)(()=>{let e=J(e=>{if(e===`online`){if(n.current)return;n.current=setTimeout(()=>{n.current=null,t(`online`)},ke)}else r(),t(e)});return window.addEventListener(`focus`,a),()=>{e(),window.removeEventListener(`focus`,a),r()}},[a,r]),{connectivityState:e,retryConnectivity:(0,q.useCallback)(()=>{ve().then(i)},[i])}}var je=P(`Network`,{web:()=>i(()=>import(`./web-Cw8N9FBf.js`).then(e=>new e.NetworkWeb),__vite__mapDeps([0,1]))});function Me(){let[e,t]=(0,q.useState)(!0);return(0,q.useEffect)(()=>{if(!F.isNativePlatform())return;let e=!1;je.getStatus().then(n=>{e||t(n.connected)}).catch(()=>{});let n=je.addListener(`networkStatusChange`,n=>{e||t(n.connected)});return()=>{e=!0,n.then(e=>e.remove()).catch(()=>{})}},[]),e}var Q=l(),Ne=6e4,Pe=15e3,Fe={info:{container:`bg-[var(--system-info-weak)]`,content:`text-[color:var(--system-info-strong)]`,icon:`text-[color:var(--system-info-strong)]`,action:`[--status-banner-action-color:var(--system-info-strong)]`,DefaultIcon:te},success:{container:`bg-[var(--system-positive-weak)]`,content:`text-[color:var(--system-positive-strong)]`,icon:`text-[color:var(--system-positive-strong)]`,action:`[--status-banner-action-color:var(--system-positive-strong)]`,DefaultIcon:f},warning:{container:`bg-[var(--system-mid-weak)]`,content:`text-[color:var(--system-mid-strong)]`,icon:`text-[color:var(--system-mid-strong)]`,action:`[--status-banner-action-color:var(--system-mid-strong)]`,DefaultIcon:d},error:{container:`bg-[var(--system-negative-weak)]`,content:`text-[color:var(--system-negative-strong)]`,icon:`text-[color:var(--system-negative-strong)]`,action:`[--status-banner-action-color:var(--system-negative-strong)]`,DefaultIcon:g},neutral:{container:`bg-[var(--surface-active)]`,content:`text-[color:var(--content-secondary)]`,icon:`text-[color:var(--content-secondary)]`,action:`[--status-banner-action-color:var(--content-secondary)]`,DefaultIcon:null}},Ie={web:`min-h-10 rounded-none px-4 py-[10px]`,electron:`min-h-8 rounded-[6px] px-2 py-[7px]`};function Le({tone:e,title:t,children:n,icon:r,actions:i,placement:a=`web`,className:o,ref:s,...c}){let l=Fe[e],u=e===`error`?`alert`:`status`,d=a===`web`?`text-body-medium-default leading-5`:`text-body-small-default leading-[18px]`,f=r===void 0?l.DefaultIcon?(0,Q.jsx)(l.DefaultIcon,{"aria-hidden":`true`}):null:r;return(0,Q.jsxs)(`div`,{...c,ref:s,role:u,"data-slot":`status-banner-notice`,"data-placement":a,"data-tone":e,className:H(`flex w-full shrink-0 items-center justify-between gap-3 overflow-hidden`,`text-[color:var(--content-default)]`,Ie[a],l.container,o),children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[f?(0,Q.jsx)(`span`,{className:H(`flex size-3.5 shrink-0 items-center justify-center [&_svg]:size-3.5`,l.icon),children:f}):null,(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`div`,{className:H(`truncate`,l.content,d),children:t}),n?(0,Q.jsx)(`div`,{className:`text-body-small-default leading-4 text-[color:var(--content-secondary)]`,children:n}):null]})]}),i?(0,Q.jsx)(`div`,{className:H(`flex shrink-0 items-center border-l border-[color-mix(in_srgb,var(--status-banner-action-color)_22%,transparent)] text-label-medium-default`,`text-[color:var(--status-banner-action-color)]`,l.action,a===`web`?`gap-2 pl-4 leading-5`:`gap-1.5 pl-2 leading-[18px]`,`[&_[data-slot=button]]:h-auto [&_[data-slot=button]]:border-0 [&_[data-slot=button]]:bg-transparent`,`[&_[data-slot=button]]:-mx-1 [&_[data-slot=button]]:rounded-sm [&_[data-slot=button]]:px-1 [&_[data-slot=button]]:py-0`,`[&_[data-slot=button]]:text-body-small-default`,`[&_[data-slot=button]]:leading-[inherit] [&_[data-slot=button]]:shadow-none`,`[&_[data-slot=button]]:[--vbtn-fg:var(--status-banner-action-color)]`,`[&_[data-slot=button]]:hover:!bg-transparent [&_[data-slot=button]]:hover:!opacity-100`,`[&_[data-slot=button]]:hover:[--vbtn-fg:var(--status-banner-action-color)]`,`[&_[data-slot=button]]:focus-visible:ring-2 [&_[data-slot=button]]:focus-visible:ring-[var(--ring)] [&_[data-slot=button]]:focus-visible:ring-offset-0`),children:i}):null]})}var $={initializing:`Assistant is initializing`,migrating:`Assistant is migrating`,provisioning:`Assistant is provisioning`,active:`Assistant is healthy`,sleeping:`Assistant is sleeping`,waking:`Assistant is waking`,restarting:`Assistant is restarting`,restoring_backup:`Assistant is restoring a backup`,upgrading_assistant_version:`Assistant is upgrading`,resizing_machine:`Assistant machine is resizing`,resizing_storage:`Assistant storage is resizing`,maintenance_mode:`Assistant is in maintenance mode`,crash_loop:`Assistant fatal error`,unreachable:`Assistant is unreachable`,not_found:`Assistant was not found`,retiring:`Assistant is retiring`},Re={initializing:`Assistant failed to initialize`,migrating:`Assistant migration failed`,provisioning:`Assistant failed to provision`,waking:`Assistant failed to wake`,restarting:`Assistant restart failed`,restoring_backup:`Backup restore failed`,upgrading_assistant_version:`Assistant upgrade failed`,resizing_machine:`Machine resize failed`,resizing_storage:`Storage resize failed`,retiring:`Assistant failed to retire`};function ze(){return{tone:`warning`,title:$.maintenance_mode,icon:(0,Q.jsx)(_,{className:`h-4 w-4`,"aria-hidden":`true`})}}function Be(){return(0,Q.jsx)(p,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})}function Ve(){return(0,Q.jsx)(`span`,{className:`busy-indicator inline-block size-2 rounded-full bg-current`,"aria-hidden":`true`})}function He(e,t){if(!(!e&&!t))return(0,Q.jsxs)(Q.Fragment,{children:[e?Ge():null,e&&t?(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px bg-[color-mix(in_srgb,var(--status-banner-action-color)_35%,transparent)]`}):null,t?(0,Q.jsx)(r,{variant:`ghost`,size:`compact`,onClick:t,children:`Dismiss`}):null]})}function Ue(e,t,n){if(!e||Oe(e))return null;if(e.detail_state===`failed`){let r=Re[e.state];if(r)return{tone:`error`,title:r,children:e.detail?.message??void 0,actions:He(t,n)}}switch(e.state){case`crash_loop`:case`unreachable`:case`not_found`:return{tone:`error`,title:$[e.state],actions:t?Ge():void 0};case`sleeping`:return{tone:`neutral`,title:$[e.state],icon:(0,Q.jsx)(m,{className:`h-4 w-4`,"aria-hidden":`true`})};case`maintenance_mode`:return ze();case`upgrading_assistant_version`:case`resizing_machine`:case`resizing_storage`:case`initializing`:case`migrating`:case`provisioning`:return{tone:`info`,title:$[e.state],icon:Be()};case`waking`:return{tone:`info`,title:$[e.state],icon:Ve()};case`restarting`:case`restoring_backup`:case`retiring`:return{tone:`warning`,title:$[e.state],icon:Be()};default:return{tone:`warning`,title:$[e.state],icon:Be()}}}function We(e,t,n){switch(e){case`sleeping`:return{tone:n?`error`:`neutral`,title:`Your assistant is asleep`,children:n,icon:(0,Q.jsx)(m,{className:`h-4 w-4`,"aria-hidden":`true`}),actions:t};case`starting`:return{tone:`info`,title:`Your assistant is waking up`,icon:Ve()};case`upgrading`:return{tone:`warning`,title:`Assistant is upgrading`,icon:(0,Q.jsx)(p,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})};case`migrating`:return{tone:`info`,title:`Assistant is migrating`,icon:(0,Q.jsx)(p,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`})};case`crashed`:return{tone:`error`,title:`Your assistant crashed`,children:n,actions:t};case`unreachable`:return{tone:n?`error`:`neutral`,title:`Your assistant is asleep`,icon:(0,Q.jsx)(m,{className:`h-4 w-4`,"aria-hidden":`true`}),children:n,actions:t};case`unhealthy`:return{tone:`warning`,title:`Assistant is unhealthy`};default:return null}}function Ge(){return(0,Q.jsx)(r,{asChild:!0,variant:`outlined`,size:`compact`,children:(0,Q.jsx)(a,{to:`${I.settings.debug}?tab=doctor`,children:`Go to Doctor`})})}function Ke(e){return e===`sleeping`||e===`crashed`||e===`unreachable`}function qe({banner:e,className:t,placement:n}){return(0,Q.jsx)(`div`,{className:H(n===`electron`?`px-4 pt-2`:`px-0 pt-0`,t),children:(0,Q.jsx)(Le,{tone:e.tone,title:e.title,icon:e.icon,actions:e.actions,placement:n,children:e.children})})}function Je(){let e=C(),n=oe(),{connectivityState:i,retryConnectivity:a}=Ae(),o=Me(),s=w.use.activeAssistantId(),c=w.use.selectedAssistantId(),l=w.use.assistants(),u=ie.use.currentOrganizationId(),d=O.use.assistantState(),f=O.use.operationalStatusAssistantId(),te=(0,q.useMemo)(()=>{let e=T(l,u).filter(e=>e.isPlatformHosted===!0&&e.isLocal===!1);return e.find(e=>e.id===c)?.id??e[0]?.id??null},[l,u,c]),h=f??s??te,g=d.kind===`active`&&!d.isLocal&&!!s&&h===s,_=De(h),v=ae(),{data:y,isError:b,refetch:x}=_,[E,k]=(0,q.useState)(!1);(0,q.useEffect)(()=>{y?.state===`sleeping`?k(!0):(y?.state===`active`||y?.state===`crash_loop`||y?.state===`not_found`)&&k(!1)},[y?.state]),(0,q.useEffect)(()=>{if(!E||y?.state!==`unreachable`)return;let e=setTimeout(()=>{k(!1)},6e4);return()=>clearTimeout(e)},[E,y?.state]);let[A,M]=(0,q.useState)(!1);(0,q.useEffect)(()=>{y?.state===`active`?M(!0):(y?.state===`sleeping`||y?.state===`crash_loop`||y?.state===`not_found`)&&M(!1)},[y?.state]),(0,q.useEffect)(()=>{if(!A||y?.state!==`unreachable`)return;let e=setTimeout(()=>{M(!1)},15e3);return()=>clearTimeout(e)},[A,y?.state]);let[N,P]=(0,q.useState)(null);se(`app.resume`,()=>{P(Date.now()+Pe)}),(0,q.useEffect)(()=>{if(N===null)return;let e=N-Date.now();if(e<=0){P(null);return}let t=setTimeout(()=>{P(null)},e);return()=>clearTimeout(t)},[N]);let F=N!==null,[I,L]=(0,q.useState)(null);(0,q.useEffect)(()=>{h&&(y?.state===`restarting`?L(y.detail_state===`failed`?null:h):(y?.state===`active`||y?.state===`sleeping`||y?.state===`not_found`)&&L(null))},[h,y?.state,y?.detail_state]);let R=I!==null&&I===h;(0,q.useEffect)(()=>{if(!R||y?.state!==`crash_loop`)return;let e=setTimeout(()=>{L(null)},6e4);return()=>clearTimeout(e)},[R,y?.state]);let[z,B]=(0,q.useState)(null),ce=(0,q.useRef)(y?.state);(0,q.useEffect)(()=>{let e=ce.current;ce.current=y?.state,y?.state!==e&&B(null)},[y?.state]);let le=(0,q.useCallback)(()=>{y?.state&&B(y.state)},[y?.state]),[V,ue]=(0,q.useState)(!1),[H,de]=(0,q.useState)(null),[U,fe]=(0,q.useState)(!1),[W,G]=(0,q.useState)(!1),[pe,K]=(0,q.useState)(null);(0,q.useEffect)(()=>{if(!W)return;let e=setTimeout(()=>{G(!1)},Ne);return()=>clearTimeout(e)},[W]),(0,q.useEffect)(()=>{(v===`healthy`||v===`unhealthy`||v===`sleeping`)&&G(!1)},[v]),(0,q.useEffect)(()=>{G(!1)},[s]);let he=(0,q.useCallback)(async()=>{if(!(!h||V)){ue(!0),de(null);try{let{response:e}=await j({path:{assistant_id:h},throwOnError:!1});if(!e?.ok)throw Error(`Exit maintenance mode returned non-ok response`);await Promise.allSettled([x(),D.checkAssistant()])}catch(e){t(e,{context:`exit_maintenance_mode_status_banner`}),de(`Failed to exit maintenance mode. Please try again.`)}finally{ue(!1)}}},[h,V,x]),ge=(0,q.useCallback)(async()=>{if(!(!s||U)){fe(!0),G(!0),K(null);try{let e=await ne(s);if(!e.ok){G(!1),K(e.error||`Wake failed. Try running vellum wake in your terminal.`);return}await Promise.allSettled([x(),a(),D.checkAssistant()]),D.triggerReachabilityProbe()}catch(e){G(!1),t(e,{context:`wake_local_assistant_status_banner`}),K(`Wake failed. Try running vellum wake in your terminal.`)}finally{fe(!1)}}},[s,U,x,a]);if((0,q.useEffect)(()=>{Ke(v)||K(null)},[v]),e&&i===`device-offline`||!e&&n&&!o)return{tone:`error`,title:`You're offline`,icon:(0,Q.jsx)(me,{className:`h-4 w-4`,"aria-hidden":`true`})};if(!re()&&Ke(v))return{tone:`neutral`,title:`Your assistant runs locally`,icon:(0,Q.jsx)(m,{className:`h-4 w-4`,"aria-hidden":`true`}),children:`Open the Vellum desktop app or run vellum wake in your terminal to start it.`};let J=(U||W)&&Ke(v)?`starting`:v,_e=We(J,Ke(J)&&s&&S(s)?(0,Q.jsx)(r,{variant:`outlined`,size:`compact`,leftIcon:U?(0,Q.jsx)(p,{className:`animate-spin`,"aria-hidden":`true`}):void 0,disabled:!s||U,onClick:()=>{ge()},children:`Wake up`}):void 0,pe);if(_e)return _e;if(e&&i===`backend-unreachable`)return{tone:`error`,title:`Trying to reach Vellum…`,icon:(0,Q.jsx)(ee,{className:`h-4 w-4`,"aria-hidden":`true`}),actions:(0,Q.jsx)(r,{variant:`outlined`,size:`compact`,onClick:a,children:`Retry now`})};let Y=d.kind===`active`&&d.maintenanceMode?.enabled===!0&&(!y||Oe(y));if(b&&!Y&&!F)return{tone:`error`,title:`Assistant status is unavailable`,actions:g?Ge():void 0};let X=y?.state===`unreachable`&&(E||F)?{...y,state:`waking`}:y?.state===`unreachable`&&A?{...y,state:`sleeping`}:y?.state===`crash_loop`&&R?{...y,state:`restarting`}:y,ve=X?.detail_state===`failed`&&X.state===z,Z=Y?ze():ve?null:Ue(X,g,le);return!(y?.state===`maintenance_mode`||Y)||!Z?Z:{...Z,tone:H?`error`:Z.tone,children:H,actions:h?(0,Q.jsx)(r,{variant:`outlined`,size:`compact`,leftIcon:V?(0,Q.jsx)(p,{className:`animate-spin`,"aria-hidden":`true`}):void 0,disabled:V,onClick:()=>{he()},children:`Resume Assistant`}):void 0}}function Ye({className:e,placement:t=C()?`electron`:`web`}){let n=Je();return n?(0,Q.jsx)(qe,{banner:n,className:e,placement:t}):null}var Xe=3e3;function Ze({assistantId:e,currentVersion:t,placement:n=`web`,className:i}){let[a,o]=(0,q.useState)(!1),[c,l]=(0,q.useState)(null),u=O(e=>e.assistantState),d=ae(),f=w.use.activeAssistantId(),ee=E.use.version(),te=N.use.previewChannel(),p=e??f,m=t??ee,g=w(e=>p?e.assistants.find(e=>e.id===p):null),_=g?.cloud===`local`,b=g?.isPlatformHosted===!0&&g?.isLocal===!1,x=g?.runtimeVersion??m??null,ne=g?.currentReleaseVersion??m??null,S=_?`local`:b?`platform`:null,{data:C}=De(b?p??null:null),T=S===`local`?x:S===`platform`?ne:null,ie=_&&g?.isActiveLockfileAssistant===!0,D=u.kind===`self_hosted`?!u.health||u.health===`healthy`:u.kind===`active`&&u.isLocal?u.reachable!==!1&&(!u.health||u.health===`healthy`):!1,k=!d||d===`healthy`,A=u.kind===`active`&&!u.isLocal&&u.reachable!==!1&&!u.maintenanceMode?.enabled&&(!u.health||u.health===`healthy`)&&(!C||C.state===`active`),j=!!p&&!!T&&!!g?.isLocal&&ie&&D&&k&&re()||!!p&&!!T&&b&&A,oe=U(g?.releaseChannel,te),{data:P,refetch:F}=s({...V({query:S===`platform`?{channel:oe}:{stable:!0,limit:100}}),enabled:j,refetchInterval:K,refetchOnReconnect:!0,refetchOnWindowFocus:!0});(0,q.useEffect)(()=>{if(!j)return;let e=()=>{F()},t=[M(`app.resume`,e),M(`power.resume`,e),M(`power.unlock`,e)];return()=>{for(let e of t)e()}},[F,j]);let I=(0,q.useMemo)(()=>S===`platform`?P?.find(e=>e.is_stable!==!1)??P?.[0]:G(P),[S,P])?.version??null,L=p&&I?`${p}:${I}`:null,R=de(T,I),z=pe({assistantId:p,targetVersion:I??void 0}),B=Qe({assistantId:p,targetVersion:I??void 0,shouldStopPolling:C?.detail_state===`failed`}),se=S===`platform`?B.isPending:z.isPending;return(0,q.useEffect)(()=>{if(!p||!I){l(null);return}l(W(p,I)?`${p}:${I}`:null)},[p,I]),!j||!I||!R||L!==null&&L===c||se?null:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:H(n===`electron`?`px-4 pt-2`:`px-0 pt-0`,i),children:(0,Q.jsx)(Le,{tone:`info`,title:`New assistant version available: ${I}`,placement:n,icon:(0,Q.jsx)(h,{"aria-hidden":`true`}),actions:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(r,{variant:`ghost`,size:`compact`,onClick:()=>o(!0),children:`Update`}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px bg-[color-mix(in_srgb,var(--status-banner-action-color)_35%,transparent)]`}),(0,Q.jsx)(r,{variant:`ghost`,size:`compact`,onClick:()=>{!p||!I||(fe(p,I),l(`${p}:${I}`))},children:`Later`})]})})}),(0,Q.jsx)(y,{open:a,title:`Update assistant runtime`,message:`Update to version ${I}? The assistant will be briefly unavailable during the update.`,confirmLabel:`Update`,onConfirm:async()=>{if(!(!p||!I||!S)){o(!1);try{if(S===`platform`){let e=await B.upgrade();if(e.detail?.includes(`Already on the latest`)){v.warning(e.detail);return}}else await z.upgrade(),v.success(`Update complete — assistant is healthy.`,{id:`runtime-upgrade-complete`,tone:`strong`});l(`${p}:${I}`)}catch(e){v.error(e instanceof Error?e.message:`Failed to trigger update. Please try again.`)}}},onCancel:()=>o(!1)})]})}function Qe({assistantId:e,targetVersion:t,shouldStopPolling:n=!1}){let r=o(),[i,a]=(0,q.useState)(!1),l=(0,q.useRef)(null),u=c({mutationFn:async()=>{if(!e)throw Error(`No assistant is active.`);let{data:n}=await A({path:{id:e},body:t?{version:t}:{},throwOnError:!0});return n}});return(0,q.useEffect)(()=>{!i||!n||(l.current=null,a(!1))},[i,n]),s({...le({path:{id:e??``}}),enabled:i&&!!e,refetchInterval:e=>{let t=e.state.data?.current_release_version;return t&&l.current&&t===l.current?(queueMicrotask(()=>{e.state.data&&w.getState().upsertFromApi(e.state.data),l.current=null,a(!1),v.success(`Update complete — assistant is healthy.`,{id:`runtime-upgrade-complete`,tone:`strong`})}),!1):Xe}}),{isPending:u.isPending||i,upgrade:async()=>{if(!e)throw Error(`No assistant is active.`);let n=await u.mutateAsync();return n.detail?.includes(`Already on the latest`)||(l.current=n.version??t??null,l.current&&a(!0),r.invalidateQueries({queryKey:ue({path:{id:e}})})),n}}}export{he as a,J as i,Ye as n,me as o,_e as r,Ze as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-CqtAGHQu.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-Dy5001j6.js";import{f as i,u as a}from"./chunk-5KNZJZUH-Bsoom5--.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"./jsx-runtime-D3ZM-ToX.js";import{t as u}from"./cn-CJf7MmLX.js";import{t as d}from"./typography-DEI9Ra9z.js";import{t as f}from"./calendar-qrPKlf1H.js";import{t as p}from"./chart-column-k8S2UYq8.js";import{t as m}from"./chevron-down-BNidRDh1.js";import{t as h}from"./chevron-right-CANAtgGn.js";import{t as g}from"./clock-DeynsyYL.js";import{t as _}from"./coins-CcTuNVlN.js";import{P as v,a as y}from"./src-Da9g8qsW.js";import{t as b}from"./loader-circle-DWWXcfTQ.js";import{t as x}from"./play-Dh6Bw5AP.js";import{t as S}from"./repeat-CP_vsQPN.js";import{t as C}from"./settings-6_RIT4kT.js";import{t as w}from"./trash-2-DfVRfykB.js";import{t as T}from"./x-D4O9yIS7.js";import{t as E}from"./notice-Dslxs3H6.js";import{t as D}from"./tag-gOOX7fbA.js";import{n as O,t as k}from"./input-tXUFa7Eo.js";import{t as A}from"./toggle-BEPV0rQM.js";import{t as j}from"./modal-xr_vw1ZO.js";import{t as M}from"./panel-item-CJh95P_q.js";import{n as N}from"./toast-BtFgiPe3.js";import{t as P}from"./dropdown-B3FHWc_n.js";import{d as F}from"./routes-DrfnNoYS.js";import{$t as I,F as L,M as ee,N as te,P as ne,Qt as re,Wt as ie,_ as ae,c as R,d as z,ft as B,g as V,gt as oe,ht as se,j as ce,mt as le,pt as ue,v as de,y as fe}from"./react-query.gen-C7om930f.js";import{n as pe,t as me}from"./conversation-navigation-Bf3cDRKh.js";import{n as he}from"./use-is-mobile-MmHo-OM6.js";import{t as ge}from"./effective-timezone-BX46fWmk.js";import{t as _e}from"./assistant-feature-flag-store-BvLDPeej.js";import{t as ve}from"./use-effective-timezone-BM5B7KHp.js";import{t as ye}from"./use-assistant-capability-CnI3VItU.js";import{t as be}from"./use-active-assistant-id-JLsAfn3e.js";import{t as xe}from"./detail-card-BElAV1cp.js";import{n as Se,t as Ce}from"./detail-drawer-Cd_EQJkJ.js";import{a as we,c as Te,i as Ee,n as De,o as Oe,r as ke,s as Ae,t as je}from"./page-empty-state-D-y7eP1V.js";import{r as Me,t as Ne}from"./profile-metadata-CA6wxcVJ.js";var H=e(n(),1),Pe={frequency:`daily`,minute:0,hour24:9,weekdays:[1],dayOfMonth:1},Fe=[{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`}],Ie=[1,2,3,4,5];function U(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,Math.round(e))):t}function Le(e){let t=Array.from(new Set(e.map(e=>U(e,0,6)).filter(e=>Number.isInteger(e)))).sort((e,t)=>e-t);return t.length>0?t:[1]}function Re(e){let t=U(e.minute,0,59),n=U(e.hour24,0,23);switch(e.frequency){case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${Le(e.weekdays).join(`,`)}`;case`monthly`:return e.dayOfMonth===`last`?`${t} ${n} L * *`:`${t} ${n} ${U(e.dayOfMonth,1,28)} * *`}}function ze(e,t){let n=U(e,0,23),r=U(t,0,59),i=n<12?`AM`:`PM`;return`${n%12==0?12:n%12}:${String(r).padStart(2,`0`)} ${i}`}function Be(e){let t=[`th`,`st`,`nd`,`rd`],n=e%100;return`${e}${t[(n-20)%10]??t[n]??t[0]}`}function Ve(e){let t=Le(e),n=new Set(t);if(t.length===7)return`every day`;if(t.length===5&&Ie.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 ${Fe[t[0]]?.full??`day`}`;let r=t.map(e=>Fe[e]?.short??``),i=r.pop();return`every ${r.join(`, `)} & ${i}`}function He(e){let t=ze(e.hour24,e.minute);switch(e.frequency){case`hourly`:{let t=U(e.minute,0,59);return`Runs every hour at :${String(t).padStart(2,`0`)}`}case`daily`:return`Runs every day at ${t}`;case`weekly`:return`Runs ${Ve(e.weekdays)} at ${t}`;case`monthly`:return e.dayOfMonth===`last`?`Runs on the last day of every month at ${t}`:`Runs on the ${Be(U(e.dayOfMonth,1,28))} of every month at ${t}`}}var W=l(),Ue=[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`}],We=Array.from({length:12},(e,t)=>{let n=t+1;return{value:String(n),label:String(n)}}),Ge=Array.from({length:12},(e,t)=>{let n=t*5,r=String(n).padStart(2,`0`);return{value:r,label:r}}),Ke=[...Array.from({length:28},(e,t)=>{let n=t+1;return{value:String(n),label:Be(n)}}),{value:`last`,label:`Last day`}],qe=[{value:`AM`,label:`AM`},{value:`PM`,label:`PM`}];function Je(e,t){let n=e%12;return t===`PM`?n+12:n}function Ye(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 Xe({isOpen:e,assistantId:t,onClose:n,onCreated:r}){return(0,W.jsx)(j.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,W.jsx)(Ze,{assistantId:t,onClose:n,onCreated:r}):null})}function Ze({assistantId:e,onClose:t,onCreated:n}){let i=ve(),[a,o]=(0,H.useState)(``),[s,c]=(0,H.useState)(``),[l,u]=(0,H.useState)(``),[d,f]=(0,H.useState)(`simple`),[p,m]=(0,H.useState)(Pe),[h,g]=(0,H.useState)(``),[_,v]=(0,H.useState)(!1),[y,b]=(0,H.useState)(null),x=a.trim(),S=s.trim(),C=l.trim(),w=h.trim(),T=(0,H.useMemo)(()=>d===`simple`?Re(p):w,[d,p,w]),E=(0,H.useMemo)(()=>d===`simple`?He(p):w||`Enter a cron expression to continue.`,[d,p,w]),D=(0,H.useMemo)(()=>Ye(i),[i]),A=x.length>0&&S.length>0&&C.length>0&&T.length>0&&!_;return(0,W.jsxs)(j.Content,{size:`md`,children:[(0,W.jsxs)(j.Header,{children:[(0,W.jsx)(j.Title,{children:`Create schedule`}),(0,W.jsx)(j.Description,{children:`Schedule a recurring instruction for your assistant. Runs in execute mode — the message is delivered to the assistant on each fire.`})]}),(0,W.jsxs)(`form`,{onSubmit:async t=>{if(t.preventDefault(),A){v(!0),b(null);try{await De(e,{name:x,description:S,expression:T,message:C,timezone:i}),v(!1),n()}catch(e){b(e instanceof Error?e.message:`Failed to create schedule.`),v(!1)}}},children:[(0,W.jsx)(j.Body,{children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,W.jsx)(k,{label:`Name`,placeholder:`Morning briefing`,value:a,onChange:e=>o(e.target.value),required:!0,autoFocus:!0,fullWidth:!0}),(0,W.jsx)(O,{label:`Description`,placeholder:`What is this schedule for?`,value:s,onChange:e=>c(e.target.value),required:!0,fullWidth:!0,rows:2}),(0,W.jsx)(nt,{label:`Repeat`,children:d===`simple`?(0,W.jsx)(Qe,{cadence:p,onChange:m}):(0,W.jsx)(tt,{value:h,onChange:g,onUseSimple:()=>f(`simple`)})}),(0,W.jsx)(rt,{summary:E,mono:d===`advanced`&&w.length>0,timezoneLabel:D}),d===`simple`?(0,W.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e||Re(p)),f(`advanced`)},className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`Advanced — write a cron expression`}):null,(0,W.jsx)(O,{label:`Message`,placeholder:`What should the assistant do on each fire?`,value:l,onChange:e=>u(e.target.value),required:!0,fullWidth:!0,rows:4}),y?(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:y}):null]})}),(0,W.jsxs)(j.Footer,{children:[(0,W.jsx)(r,{variant:`outlined`,onClick:t,type:`button`,children:`Cancel`}),(0,W.jsx)(r,{variant:`primary`,type:`submit`,disabled:!A,children:_?`Creating…`:`Create schedule`})]})]})]})}function Qe({cadence:e,onChange:t}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(v,{items:Ue,value:e.frequency,onChange:n=>t({...e,frequency:n}),ariaLabel:`How often the schedule runs`}),e.frequency===`hourly`?(0,W.jsx)(G,{label:`At minute`,children:(0,W.jsx)(P,{options:Ge,value:String(e.minute).padStart(2,`0`),onChange:n=>t({...e,minute:Number(n)}),"aria-label":`Minute`,className:`w-24`})}):null,e.frequency===`weekly`?(0,W.jsx)(G,{label:`On these days`,children:(0,W.jsx)(et,{value:e.weekdays,onChange:n=>t({...e,weekdays:n})})}):null,e.frequency===`monthly`?(0,W.jsx)(G,{label:`On day`,children:(0,W.jsx)(P,{options:Ke,value:e.dayOfMonth===`last`?`last`:String(e.dayOfMonth),onChange:n=>t({...e,dayOfMonth:n===`last`?`last`:Number(n)}),"aria-label":`Day of month`,className:`w-32`})}):null,e.frequency===`hourly`?null:(0,W.jsx)(G,{label:`At time`,children:(0,W.jsx)($e,{hour24:e.hour24,minute:e.minute,onChange:(n,r)=>t({...e,hour24:n,minute:r})})})]})}function $e({hour24:e,minute:t,onChange:n}){let r=e<12?`AM`:`PM`,i=e%12==0?12:e%12;return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(P,{options:We,value:String(i),onChange:e=>n(Je(Number(e),r),t),"aria-label":`Hour`,className:`w-[72px]`}),(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:`:`}),(0,W.jsx)(P,{options:Ge,value:String(t).padStart(2,`0`),onChange:t=>n(e,Number(t)),"aria-label":`Minute`,className:`w-[72px]`}),(0,W.jsx)(`div`,{className:`w-[112px]`,children:(0,W.jsx)(v,{items:qe,value:r,onChange:e=>n(Je(i,e),t),ariaLabel:`AM or PM`})})]})}function et({value:e,onChange:t}){let n=new Set(e),r=e=>{let r=new Set(n);r.has(e)?r.size>1&&r.delete(e):r.add(e),t([...r].sort((e,t)=>e-t))};return(0,W.jsx)(`div`,{className:`flex gap-1.5`,children:Fe.map(e=>{let t=n.has(e.value);return(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.value),"aria-pressed":t,"aria-label":e.full,title:e.full,className:u(`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 tt({value:e,onChange:t,onUseSimple:n}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(k,{placeholder:`0 9 * * *`,value:e,onChange:e=>t(e.target.value),fullWidth:!0,className:`font-mono`,"aria-label":`Cron expression`,helperText:`Standard 5-field cron (minute hour day month weekday). RRULE expressions are also accepted.`}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`← Back to the simple builder`})]})}function nt({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:e}),t]})}function G({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,W.jsx)(`span`,{className:`min-w-[88px] text-body-small-default text-[var(--content-tertiary)]`,children:e}),t]})}function rt({summary:e,mono:t,timezoneLabel:n}){return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3.5 py-3`,children:[(0,W.jsx)(g,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:u(`text-body-medium-default text-[var(--content-default)]`,t&&`break-all font-mono`),children:e}),(0,W.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Times use your timezone — `,n,`.`]})]})]})}function it(e=ge(),t=Date.now()){return Me(`7d`,e,t)}function K(e){return e?new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0}):`—`}function at(e){return e==null?`—`:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}var ot=new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`,minimumFractionDigits:2,maximumFractionDigits:2});function q(e){return e==null||!Number.isFinite(e)?`—`:ot.format(e)}function st(e){return`${e.toLocaleString()} ${e===1?`run`:`runs`}`}function ct(e){let t=Math.round(e/6e4);return t>=60&&t%60==0?`Every ${t/60} hr`:`Every ${t} min`}function lt(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 ut(e){return!!e.conversationId&&e.conversationExists===!0&&e.conversationArchivedAt==null}function dt(e){return ut(e)?e.conversationId??null:null}function J(e){return typeof e==`string`&&e.length>0}function ft(e){return e.status===`pending`||e.status===`superseded`}function pt(e){return e.status!==`skipped`&&e.status!==`missed`&&!ft(e)}var mt={heartbeat:`system-heartbeat`,consolidation:`system-consolidation`,retrospective:`system-memory-retrospective`};function ht(e){if(e.cronExpression)return e.timezone?`Cron: ${e.cronExpression} (${e.timezone})`:`Cron: ${e.cronExpression}`;let t=ct(e.intervalMs);return e.activeHoursStart!=null&&e.activeHoursEnd!=null&&(t+=` (${e.activeHoursStart}:00–${e.activeHoursEnd}:00)`),t}function gt(e){return ct(e.intervalMs)}var _t=`After conversation activity`;function vt(e,t){return e.status===`fired`||e.status===`cancelled`?!0:e.status===`firing`?!1:e.nextRunAt==null||!e.enabled&&e.nextRunAt<=t}function yt(e,t){let n=[],r=[],i=[];for(let a of e)a.isOneShot?vt(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 bt(e,t,n=!0){return{queryKey:[{_id:`schedulesUsagesummaryGet`,path:{assistant_id:e??``},_tz:t}],queryFn:()=>e?we(e,it(t)):Promise.resolve([]),enabled:n,staleTime:1e4}}function xt(e){return{scheduleId:e,runCount:0,totalEstimatedCostUsd:0,eventCount:0}}function St(e,t,n){let r=(t??[]).filter(e=>{let t=e.startedAt??e.createdAt;return pt(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 Ct({status:e}){return(0,W.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full`,style:{backgroundColor:e===`ok`||e===`completed`?`var(--system-positive-strong)`:e===`error`||e===`failed`?`var(--system-negative-strong)`:`var(--content-tertiary)`},"aria-label":e??`unknown`})}function wt({scheduleName:e,usage:t,onOpenUsage:n}){if(t.status===`loading`)return(0,W.jsxs)(`div`,{"aria-label":`Loading schedule usage`,className:`flex w-[156px] shrink-0 items-center justify-end gap-3`,children:[(0,W.jsx)(`span`,{className:`h-5 w-16 animate-pulse rounded bg-[var(--surface-muted)]`}),(0,W.jsx)(`span`,{className:`h-5 w-16 animate-pulse rounded bg-[var(--surface-muted)]`})]});let r=t.status===`error`,i=r?`--`:q(t.summary.totalEstimatedCostUsd),a=r?`--`:st(t.summary.runCount),o=t.status===`ready`&&!(t.summary.totalEstimatedCostUsd>0),s=t.status===`ready`&&t.summary.runCount===0,c=o?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`,l=s?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`;return(0,W.jsxs)(`div`,{className:`flex w-[156px] shrink-0 items-center justify-end gap-3 text-right text-body-small-default`,children:[n?(0,W.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`View usage for ${e}`,className:`min-w-[64px] cursor-pointer rounded px-1 py-0.5 text-right transition-colors hover:bg-[var(--surface-hover)] ${c}`,children:i}):(0,W.jsx)(`span`,{"aria-label":`Cost for ${e} in the last 7 days: ${i}`,className:`block min-w-[64px] px-1 py-0.5 ${c}`,children:i}),(0,W.jsx)(`span`,{"aria-label":`Runs for ${e} in the last 7 days: ${a}`,className:`block min-w-[64px] px-1 py-0.5 ${l}`,children:a})]})}function Y({name:e,subtitle:t,enabled:n,nextRunAt:r,lastRunAt:i,usage:a,helperText:o,statusLabel:s,statusTone:c=`neutral`,onClick:l}){return(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-3 rounded-md px-2 py-3 transition-colors hover:bg-[var(--surface-hover)] [&+&]:border-t [&+&]:border-[var(--border-base)]`,children:(0,W.jsxs)(`button`,{type:`button`,onClick:l,"aria-label":`Open ${e}`,className:`flex min-w-0 flex-1 cursor-pointer flex-wrap items-center gap-3 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e})}),(0,W.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:t}),o?(0,W.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-secondary)]`,children:o}):null,(0,W.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-body-small-default text-[var(--content-tertiary)]`,children:[r?(0,W.jsxs)(`span`,{children:[`Next: `,K(r)]}):null,i?(0,W.jsxs)(`span`,{children:[`Last: `,K(i)]}):null]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-3`,children:[(0,W.jsx)(wt,{scheduleName:e,usage:a}),s?(0,W.jsx)(D,{tone:c,children:s}):(0,W.jsx)(`span`,{className:`h-2 w-2 rounded-full`,style:{backgroundColor:n?`var(--system-positive-strong)`:`var(--content-disabled)`},"aria-label":n?`enabled`:`disabled`}),(0,W.jsx)(h,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})})}function Tt({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,h=n?.available===!0,g=f||p||h;if(!o&&!s&&!g)return null;let _=[...f?[r]:[],...p?[i]:[],...h?[a]:[]].filter(e=>e.status===`ready`),v=_.reduce((e,t)=>e+(t.summary.totalEstimatedCostUsd??0),0),x=o?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,W.jsx)(b,{className:`h-5 w-5 animate-spin text-stone-400`})}):s&&!g?(0,W.jsxs)(E,{tone:`error`,children:[`Failed to load system jobs.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]}):(0,W.jsxs)(`div`,{children:[f?(0,W.jsx)(Y,{name:`Heartbeat`,subtitle:ht(e),enabled:e.enabled,nextRunAt:e.nextRunAt,lastRunAt:e.lastRunAt,usage:r,onClick:l}):null,p?(0,W.jsx)(Y,{name:`Consolidation`,subtitle:gt(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,h?(0,W.jsx)(Y,{name:`Memory retrospective`,subtitle:_t,enabled:n.enabled,helperText:n.enabled?void 0:`Memory is off, so retrospectives are paused.`,nextRunAt:n.nextRunAt,lastRunAt:n.lastRunAt,usage:a,statusLabel:n.enabled?void 0:`Paused`,statusTone:`warning`,onClick:d}):null,s?(0,W.jsx)(`div`,{className:`pt-3 first:pt-0`,children:(0,W.jsxs)(E,{tone:`error`,children:[`Some system jobs failed to load.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]})}):null]});return(0,W.jsx)(xe,{children:(0,W.jsx)(y.Root,{type:`multiple`,children:(0,W.jsxs)(y.Item,{value:`system-jobs`,children:[(0,W.jsxs)(y.Trigger,{className:`group justify-between gap-3`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1 text-left`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`System`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Built-in jobs managed by the assistant runtime`})]}),(0,W.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[_.length>0?(0,W.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[q(v),` (7d)`]}):null,(0,W.jsx)(m,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]})]}),(0,W.jsx)(y.Content,{children:(0,W.jsx)(`div`,{className:`mt-3`,children:x})})]})})})}var Et={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 Dt(e){return e.status===`missed`?`Missed while the assistant was offline`:`skipReason`in e&&e.skipReason?`Skipped — ${Et[e.skipReason]??e.skipReason}`:null}function X(e,t){return{id:e.id,jobId:t,status:e.status,startedAt:e.startedAt??e.scheduledFor,finishedAt:e.finishedAt,durationMs:e.durationMs,output:Dt(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 Ot(e){return e.runs.filter(e=>!ft(e)).map(e=>X(e,`heartbeat`))}function kt(e){return e.runs.map(e=>X(e,`consolidation`))}function At(e){return e.runs.map(e=>X(e,`retrospective`))}var Z=1e4;function jt(e,t,n,r,i){return e?{status:`loading`}:t?{status:`error`}:{status:`ready`,summary:St(n,r,i)}}function Mt(e,n){let r=o(),i={path:{assistant_id:e??``}},{data:a,isLoading:c,isError:l,refetch:u}=s({...ce(i),enabled:!!e,staleTime:Z}),{data:d,isLoading:f,isError:p,refetch:m}=s({...V(i),enabled:!!e,staleTime:Z}),{data:h,isLoading:g,isError:_,refetch:v}=s({...B(i),enabled:!!e,staleTime:Z}),y={path:{assistant_id:e??``},query:{limit:100}},{data:b,isLoading:x,isError:S,refetch:C}=s({...L(y),select:Ot,enabled:!!e&&a!=null,staleTime:Z}),{data:w,isLoading:T,isError:E,refetch:D}=s({...fe(y),select:kt,enabled:!!e&&d?.available===!0,staleTime:Z}),{data:O,isLoading:k,isError:A,refetch:j}=s({...se(y),select:At,enabled:!!e&&h?.available===!0,staleTime:Z}),M=(0,H.useMemo)(()=>it(n),[n]),P=(0,H.useMemo)(()=>jt(x,S,mt.heartbeat,b,M),[b,S,x,M]),F=(0,H.useMemo)(()=>jt(T,E,mt.consolidation,w,M),[w,E,T,M]),te=(0,H.useMemo)(()=>jt(k,A,mt.retrospective,O,M),[O,A,k,M]),ae=t=>{if(!e)return;let n={heartbeat:{config:ce(i).queryKey,runs:L(y).queryKey,infinite:ne(i)},consolidation:{config:V(i).queryKey,runs:fe(y).queryKey,infinite:de(i)},retrospective:{config:B(i).queryKey,runs:se(y).queryKey,infinite:le(i)}}[t];r.invalidateQueries({queryKey:n.config}),r.invalidateQueries({queryKey:n.runs}),r.invalidateQueries({queryKey:n.infinite})},R=I({onSuccess:e=>{e.ran?N.success(`Heartbeat started.`):N.info(`Heartbeat skipped.`)},onError:e=>{t(e,{context:`heartbeat_run_now`}),N.error(`Failed to run heartbeat.`)},onSettled:()=>ae(`heartbeat`)}),z=ie({onSuccess:e=>{e.ran?N.success(`Consolidation queued.`):N.info(`Consolidation already queued or running.`)},onError:e=>{t(e,{context:`consolidation_run_now`}),N.error(`Failed to run consolidation.`)},onSettled:()=>ae(`consolidation`)}),oe=re({onSuccess:e=>{ee(r,i,e),N.success(e.enabled?`Heartbeat enabled.`:`Heartbeat disabled.`)},onError:e=>{t(e,{context:`heartbeat_toggle`}),N.error(`Failed to toggle heartbeat.`)}});return{heartbeatConfig:a,consolidationConfig:d,retrospectiveConfig:h,heartbeatUsage:P,consolidationUsage:F,retrospectiveUsage:te,isLoading:c||f||g,hasError:l||p||_,isHeartbeatRunning:R.isPending,isConsolidationRunning:z.isPending,isHeartbeatLoading:c,isHeartbeatError:l,isConsolidationLoading:f,isConsolidationError:p,isRetrospectiveLoading:g,isRetrospectiveError:_,refetchHeartbeat:u,refetchConsolidation:m,refetchRetrospective:v,runHeartbeatNow:()=>{e&&R.mutate({path:{assistant_id:e}})},runConsolidationNow:()=>{e&&z.mutate({path:{assistant_id:e}})},toggleHeartbeat:t=>{e&&oe.mutate({body:{enabled:t},path:{assistant_id:e}})},refetchAll:()=>{u(),m(),v(),C(),D(),j()}}}function Nt({children:e}){return(0,W.jsx)(d,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function Q({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-1`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e}),(0,W.jsx)(`span`,{className:`min-w-0 text-right text-body-medium-lighter text-[var(--content-default)]`,children:t})]})}function Pt({icon:e,value:t,label:n}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-3`,children:[(0,W.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-[var(--surface-sunken)] text-[var(--content-secondary)]`,children:e}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`div`,{className:`truncate text-body-large-default text-[var(--content-default)]`,children:t}),(0,W.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:n})]})]})}function Ft({usage:e}){return e.status===`loading`?(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:Array.from({length:2},(e,t)=>(0,W.jsx)(`div`,{className:`h-[60px] animate-pulse rounded-lg bg-[var(--surface-muted)]`},t))}):e.status===`error`?null:(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:[(0,W.jsx)(Pt,{icon:(0,W.jsx)(_,{className:`h-4 w-4`}),value:q(e.summary.totalEstimatedCostUsd),label:`7 Day Cost`}),(0,W.jsx)(Pt,{icon:(0,W.jsx)(S,{className:`h-4 w-4`}),value:st(e.summary.runCount),label:`7 Day Runs`})]})}function It(e){return e.exists&&e.archivedAt==null}function Lt({run:e,index:t,isExpanded:n,disableDirectOpen:r,onOpenConversation:i,onToggleDetails:a}){let o=dt(e),s=e.conversations??(o?[{id:o,title:null,exists:!0,archivedAt:null}]:[]),c=J(e.output),l=J(e.error),d=!r&&s.length===1&&It(s[0])?s[0].id:null,f=!d&&(s.length>0||c||l),p=`schedule-run-details-${t}`,m=!!d||f,g=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Ct,{status:e.status}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:K(e.startedAt)}),(0,W.jsxs)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[at(e.durationMs),` ·`,` `,q(e.estimatedCostUsd)]}),e.status===`error`&&e.error?(0,W.jsxs)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--system-negative-strong)]`,children:[e.error.slice(0,120),e.error.length>120?`…`:``]}):null]}),m?(0,W.jsx)(h,{className:u(`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform`,f&&n?`rotate-90`:``)}):null]}),_=f&&n?(0,W.jsx)(`div`,{id:p,className:`px-2 pb-3`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[s.length>0?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Conversations`}),(0,W.jsx)(`div`,{className:`space-y-1`,children:s.map(e=>It(e)?(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),className:`block w-full truncate text-left text-body-small-default text-[var(--content-default)] hover:underline`,children:J(e.title)?e.title:`Conversation`},e.id):(0,W.jsxs)(`span`,{className:`block truncate text-body-small-default text-[var(--content-tertiary)] italic`,children:[J(e.title)?e.title:`Conversation`,` `,e.exists?`(archived)`:`(unavailable)`]},e.id))})]}):null,c?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,l?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null;return d?(0,W.jsx)(`div`,{children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(d),"aria-label":`Open conversation for run at ${K(e.startedAt)}`,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:g})}):f?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),"aria-label":`Toggle details for run at ${K(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:g}),_]}):(0,W.jsx)(`div`,{className:`flex items-center gap-3 px-2 py-3`,children:g})}function Rt({runs:e,isLoading:t,disableDirectOpen:n,onOpenConversation:r}){let[i,a]=(0,H.useState)(null);return t?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-6`,children:(0,W.jsx)(b,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,W.jsx)(`p`,{className:`py-2 text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:`No runs yet.`}):(0,W.jsx)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:e.map((e,t)=>(0,W.jsx)(Lt,{run:e,index:t,isExpanded:i===e.id,disableDirectOpen:n,onOpenConversation:r,onToggleDetails:e=>a(t=>t===e?null:e)},e.id))})}function zt({schedule:e,assistantId:n,usage:i,isMobile:o,onClose:c,onDeleted:l}){let f=a(),{data:m,isLoading:h}=s({queryKey:oe({path:{assistant_id:n,id:e.id}}),queryFn:()=>Ee(n,e.id),staleTime:1e4}),[g,_]=(0,H.useState)(!1),[v,y]=(0,H.useState)(!1),[x,S]=(0,H.useState)(!1),C=async()=>{_(!0);try{await Oe(n,e.id)}catch(e){t(e,{context:`schedule_run_now`}),N.error(`Failed to run schedule.`)}finally{_(!1)}},E=async()=>{S(!0);try{await ke(n,e.id),l()}catch(e){t(e,{context:`schedule_delete`}),N.error(`Failed to delete schedule.`),S(!1),y(!1)}};return(0,W.jsxs)(`div`,{className:u(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,W.jsx)(d,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:e.name})}),(0,W.jsx)(r,{variant:`ghost`,iconOnly:(0,W.jsx)(T,{}),onClick:c,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[e.description?(0,W.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e.description}):null,(0,W.jsxs)(`section`,{children:[(0,W.jsx)(Nt,{children:`Details`}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] px-4 py-2`,children:[e.cadenceDescription?(0,W.jsx)(Q,{label:`Cadence`,value:e.cadenceDescription}):null,(0,W.jsx)(Q,{label:`Mode`,value:e.mode}),(0,W.jsx)(Q,{label:`Status`,value:e.enabled?`Enabled`:`Disabled`}),(0,W.jsx)(Q,{label:`Next run`,value:K(e.nextRunAt)}),e.lastRunAt?(0,W.jsx)(Q,{label:`Last run`,value:(0,W.jsxs)(`span`,{className:`flex items-center justify-end gap-2`,children:[(0,W.jsx)(Ct,{status:e.lastStatus}),K(e.lastRunAt)]})}):null]})]}),(0,W.jsx)(Ft,{usage:i}),(0,W.jsxs)(`section`,{children:[(0,W.jsx)(Nt,{children:`Recent runs`}),(0,W.jsx)(Rt,{runs:m?.runs,isLoading:h,disableDirectOpen:e.mode===`script`,onOpenConversation:e=>me(f,e)})]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[v?(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(r,{variant:`ghost`,onClick:()=>y(!1),disabled:x,children:`Cancel`}),(0,W.jsx)(r,{variant:`danger`,onClick:()=>void E(),disabled:x,children:x?`Deleting…`:`Yes, delete`})]}):(0,W.jsx)(r,{variant:`dangerOutline`,leftIcon:(0,W.jsx)(w,{className:`h-3.5 w-3.5`}),onClick:()=>y(!0),children:`Delete`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(r,{variant:`outlined`,leftIcon:(0,W.jsx)(p,{className:`h-3.5 w-3.5`}),onClick:()=>f(F.settings.usageForSchedule(e.id)),children:`View usage`}),e.mode===`script`?(0,W.jsx)(r,{variant:`primary`,leftIcon:g?(0,W.jsx)(b,{className:`h-3.5 w-3.5 animate-spin`}):void 0,onClick:()=>void C(),disabled:g,children:g?`Running…`:`Run now`}):null]})]})]})}function Bt(e){if(e.status===`loading`)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`h-4 w-12 animate-pulse rounded bg-[var(--surface-muted)]`}),(0,W.jsx)(`span`,{className:`h-4 w-10 animate-pulse rounded bg-[var(--surface-muted)]`})]});if(e.status===`error`)return(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`—`});let{summary:t}=e;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:q(t.totalEstimatedCostUsd)}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:st(t.runCount)})]})}function Vt({name:e,metaParts:t,usage:n,enabled:r,selected:i,onClick:a,onToggle:o,toggleAriaLabel:s}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-2 py-3 transition-colors [&+&]:border-t [&+&]:border-[var(--border-base)] ${i?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`}`,children:[o?(0,W.jsx)(A,{checked:r,onChange:o,"aria-label":s}):null,(0,W.jsxs)(`button`,{type:`button`,onClick:a,className:`flex min-w-0 flex-1 cursor-pointer items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,W.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e}),t.length>0?(0,W.jsx)(`span`,{className:`flex min-w-0 items-center gap-2 text-label-small-default text-[var(--content-tertiary)]`,children:t.map((e,t)=>(0,W.jsxs)(H.Fragment,{children:[t>0?(0,W.jsx)(`span`,{className:`h-[3px] w-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}):null,(0,W.jsx)(`span`,{className:`truncate`,children:e})]},t))}):null]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[Bt(n),(0,W.jsx)(h,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})]})}function Ht({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?K(o):``].filter(Boolean);return(0,W.jsx)(Vt,{name:e.name,metaParts:s,usage:t,enabled:e.enabled,selected:n,onClick:r,onToggle:i,toggleAriaLabel:i?`Toggle ${e.name}`:void 0})}function Ut({recurring:e,oneTime:t,pastOneTime:n,usageForSchedule:i,isLoading:a,isError:o,refetch:s,onToggle:c,onSelectSchedule:l,selectedScheduleId:u,onStartNewChat:d,onCreateSchedule:p,pastOpen:m,onPastOpenChange:g,systemTasksSlot:_}){let v=e=>(0,W.jsx)(Ht,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id),onToggle:t=>c(e.id,t)},e.id),b=e=>(0,W.jsx)(Ht,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id)},e.id),x=n.length>0?(0,W.jsx)(y.Root,{type:`single`,collapsible:!0,className:`mt-3`,value:m?`past`:``,onValueChange:e=>g(e===`past`),children:(0,W.jsxs)(y.Item,{value:`past`,children:[(0,W.jsxs)(y.Trigger,{className:`group gap-[var(--app-spacing-xs)] px-2 text-label-small-default text-[var(--content-tertiary)]`,children:[(0,W.jsx)(h,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,W.jsxs)(`span`,{children:[`Past (`,n.length,`)`]})]}),(0,W.jsx)(y.Content,{children:(0,W.jsx)(`div`,{className:`pt-1`,children:n.map(b)})})]})}):null;return(0,W.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[a?(0,W.jsx)(`div`,{className:`space-y-3`,children:Array.from({length:2},(e,t)=>(0,W.jsx)(`div`,{className:`h-12 animate-pulse rounded-md bg-[var(--surface-muted)]`},t))}):o&&e.length===0?(0,W.jsx)(E,{tone:`error`,actions:(0,W.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,W.jsx)(je,{icon:f,title:`No schedules yet`,description:`Ask your assistant to set one up, or create one yourself.`,actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(r,{variant:`primary`,size:`regular`,onClick:d,children:`New Conversation`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`or`}),(0,W.jsx)(r,{variant:`outlined`,size:`regular`,onClick:p,children:`Create schedule`})]})}):(0,W.jsxs)(`div`,{children:[e.map(v),t.length>0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`mt-3 px-2 text-label-small-default text-[var(--content-tertiary)]`,children:`One-time`}),t.map(b)]}):null,x]}),_?(0,W.jsx)(`div`,{className:`mt-[var(--app-spacing-lg)]`,children:_}):null]})}var Wt=`Default (assistant's main model)`,Gt=`Custom call-site model`;function $(e,t){return t?.[e]?.displayName??e}function Kt(e,t){if(e==null)return;if(e.provider!=null||e.model!=null)return Gt;let n=e.profile?.trim();return n?`Override (${$(n,t)})`:void 0}function qt({assistantId:e,pinnedProfile:t,defaultCallSite:n=`mainAgent`,fallbackLabel:r=Wt,respectCallSiteOverride:i=!1}){let a=t==null,{data:o}=s({...R({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),c=(0,H.useMemo)(()=>o?Ne(o):{},[o]),{data:l}=s({...z({path:{assistant_id:e}}),enabled:!!e&&a,staleTime:6e4}),u=a&&i?Kt(o?.llm?.callSites?.[n],c):void 0,d=a?l?.callSites.find(e=>e.id===n)?.defaultProfile:void 0,f=t==null?u??(d==null?r:`Default (${$(d,c)})`):$(t,c);return(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Model profile`}),(0,W.jsx)(`span`,{className:`min-w-0 text-right`,children:f})]})}function Jt({runs:e,isLoading:t,emptyMessage:n=`No runs yet.`,hasMore:i=!1,isLoadingMore:o=!1,onLoadMore:s}){let c=a(),[l,u]=(0,H.useState)(null),d=i&&s?(0,W.jsx)(`div`,{className:`flex justify-center pt-3`,children:(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:s,disabled:o,leftIcon:o?(0,W.jsx)(b,{className:`h-3.5 w-3.5 animate-spin`}):void 0,children:o?`Loading…`:`Load more`})}):null;return(0,W.jsx)(xe,{title:`Recent runs`,children:t?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,W.jsx)(b,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`py-4 text-center text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:n}),d]}):(0,W.jsxs)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:[e.map((e,t)=>{let n=dt(e),r=J(e.output),i=J(e.error),a=e.status===`skipped`||e.status===`missed`,o=!n&&!a&&(r||i),s=l===e.id,d=`schedule-run-details-${t}`;return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(M,{label:(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,W.jsx)(Ct,{status:e.status}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`block truncate text-body-medium-lighter text-[var(--content-default)]`,children:J(e.title)?e.title:K(e.startedAt)}),(0,W.jsxs)(`span`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[J(e.title)?`${K(e.startedAt)} · `:``,a?(0,W.jsx)(W.Fragment,{children:r?e.output:e.status===`missed`?`Missed`:`Skipped`}):(0,W.jsxs)(W.Fragment,{children:[at(e.durationMs),` ·`,` `,q(e.estimatedCostUsd)]}),e.status===`error`&&e.error&&(0,W.jsxs)(`span`,{className:`ml-2 text-[var(--system-negative-strong)]`,children:[e.error.slice(0,80),e.error.length>80?`…`:``]})]})]}),n||o?(0,W.jsx)(h,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform ${s?`rotate-90`:``}`}):null]}),onSelect:n?()=>me(c,n):o?()=>u(s?null:e.id):void 0,"aria-label":`Run at ${K(e.startedAt)}`,"aria-expanded":o?s:void 0,"aria-controls":o?d:void 0,className:`h-auto py-2.5 gap-3 -mx-2 px-2`}),o&&s?(0,W.jsx)(`div`,{id:d,className:`px-2 pb-3`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[r?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,i?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null]},e.id)}),d]})})}var Yt={heartbeat:`heartbeatAgent`,consolidation:`memoryV2Consolidation`,retrospective:`memoryRetrospective`};function Xt({children:e}){return(0,W.jsx)(d,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function Zt({kind:e,assistantId:t,systemTasks:n,canOpenMemorySettings:i,isMobile:o,onClose:s}){let l=a(),{heartbeatConfig:f,consolidationConfig:p,retrospectiveConfig:m}=n,h,g,_,v,y,S,w;e===`heartbeat`?(h=`Heartbeat`,g=f?ht(f):``,_=f?.enabled??!1,v=f?.nextRunAt??null,y=f?.lastRunAt??null,S=n.isHeartbeatRunning,w=n.runHeartbeatNow):e===`consolidation`?(h=`Consolidation`,g=p?gt(p):``,_=p?.enabled??!1,v=p?.nextRunAt??null,y=p?.lastRunAt??null,S=n.isConsolidationRunning,w=n.runConsolidationNow):(h=`Memory retrospective`,g=_t,_=m?.enabled??!1,v=m?.nextRunAt??null,y=m?.lastRunAt??null,S=!1,w=void 0);let D=e!==`heartbeat`,O=e===`retrospective`,k=D&&!_,j=S||k,M=D?_?`On · Managed by Memory`:`Paused`:_?`Enabled`:`Disabled`,N=O?`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=D&&_&&i,I={path:{assistant_id:t},query:{limit:25}},L=e===`heartbeat`?te(I):e===`consolidation`?ae(I):ue(I),{data:ee,isLoading:ne,fetchNextPage:re,hasNextPage:ie,isFetchingNextPage:R}=c({queryKey:L.queryKey,queryFn:L.queryFn,initialPageParam:{path:I.path,query:{}},getNextPageParam:e=>e.nextCursor??void 0,staleTime:1e4}),z=lt(ee?.pages.map(t=>({runs:t.runs.filter(e=>!ft(e)).map(t=>X(t,e))}))),B=z?.find(e=>pt(e)&&e.status!==`running`),V=y??B?.finishedAt??B?.startedAt??null;return(0,W.jsxs)(`div`,{className:u(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(d,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:h}),g?(0,W.jsx)(d,{variant:`body-small-default`,as:`p`,className:`truncate text-[var(--content-tertiary)]`,children:g}):null]}),(0,W.jsx)(r,{variant:`ghost`,iconOnly:(0,W.jsx)(T,{}),onClick:s,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[(0,W.jsxs)(`section`,{children:[(0,W.jsx)(Xt,{children:`Details`}),(0,W.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,W.jsx)(qt,{assistantId:t,defaultCallSite:Yt[e],fallbackLabel:`Default (system task model)`,respectCallSiteOverride:!0}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Status`}),(0,W.jsxs)(`span`,{className:`flex items-center gap-2 text-[var(--content-default)]`,children:[(0,W.jsx)(`span`,{children:M}),D?null:(0,W.jsx)(A,{checked:_,onChange:n.toggleHeartbeat,"aria-label":`Toggle ${h}`})]})]}),O?null:(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Next run`}),(0,W.jsx)(`span`,{className:`text-[var(--content-default)]`,children:K(v)})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Last run`}),(0,W.jsx)(`span`,{className:`text-[var(--content-default)]`,children:K(V)})]})]}),k?(0,W.jsx)(E,{tone:`warning`,className:`mt-4`,actions:i?(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:()=>l(`${F.settings.developer}?tab=memory`),children:`Turn on Memory`}):void 0,children:N}):null]}),(0,W.jsx)(Jt,{runs:z,isLoading:ne,hasMore:ie,isLoadingMore:R,onLoadMore:()=>void re()})]}),P||w?(0,W.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,W.jsx)(r,{variant:`outlined`,leftIcon:(0,W.jsx)(C,{className:`h-3.5 w-3.5`}),onClick:()=>l(`${F.settings.developer}?tab=memory`),children:`Memory settings`}):null,w?(0,W.jsx)(r,{variant:`primary`,leftIcon:S?(0,W.jsx)(b,{className:`h-3.5 w-3.5 animate-spin`}):(0,W.jsx)(x,{className:`h-3.5 w-3.5`}),onClick:w,disabled:j,children:S?`Running…`:`Run now`}):null]}):null]})}function Qt(e){let n=ve(),[r]=(0,H.useState)(()=>Date.now()),{data:i,isLoading:a,isError:o,refetch:c}=s(Ae(e)),{data:l,isLoading:u,isError:d}=s(bt(e,n,!0)),{recurring:f,oneTime:p,pastOneTime:m}=(0,H.useMemo)(()=>{let e=yt(i??[],r);return{recurring:e.recurring,oneTime:e.upcomingOneTime,pastOneTime:e.pastOneTime}},[r,i]),h=(0,H.useMemo)(()=>new Map((l??[]).map(e=>[e.scheduleId,e])),[l]);return{recurring:f,oneTime:p,pastOneTime:m,usageForSchedule:(0,H.useCallback)(e=>u?{status:`loading`}:d?{status:`error`}:{status:`ready`,summary:h.get(e)??xt(e)},[d,u,h]),handleToggle:(0,H.useCallback)(async(n,r)=>{if(e)try{await Te(e,n,r),c()}catch(e){t(e,{context:`schedule_toggle`}),N.error(`Failed to toggle schedule.`)}},[e,c]),isLoading:a,isError:o,refetch:(0,H.useCallback)(()=>{c()},[c])}}function $t(){let e=a(),{scheduleId:t}=i(),n=be(),r=he(),o=ve(),s=Qt(n),c=Mt(n,o),l=ye(`memoryOptOut`),u=_e.use.settingsDeveloperNav(),d=l&&u===!0,[f,p]=(0,H.useState)(!1),m=t??null,[h,g]=(0,H.useState)(null),[_,v]=(0,H.useState)(!1),y=(0,H.useCallback)(t=>{e(t?F.schedules.detail(t):F.schedules.root)},[e]),b=m?s.recurring.find(e=>e.id===m)??s.oneTime.find(e=>e.id===m)??s.pastOneTime.find(e=>e.id===m)??null:null;(0,H.useEffect)(()=>{m&&!s.isLoading&&!s.isError&&!b&&y(null)},[m,b,s.isLoading,s.isError,y]);let x=h===`heartbeat`?c.heartbeatConfig!=null:h===`consolidation`?c.consolidationConfig?.available===!0:h===`retrospective`?c.retrospectiveConfig?.available===!0:!1;(0,H.useEffect)(()=>{h&&!c.isLoading&&!x&&g(null)},[h,x,c.isLoading]);let S=(0,H.useCallback)(e=>{g(null),y(e)},[y]),C=(0,H.useCallback)(e=>{m&&y(null),g(e)},[y,m]),w=(0,H.useCallback)(()=>{pe(e)},[e]),T=(b?(0,W.jsx)(zt,{schedule:b,assistantId:n,usage:s.usageForSchedule(b.id),isMobile:r,onClose:()=>y(null),onDeleted:()=>{y(null),s.refetch()}}):null)??(h&&x?(0,W.jsx)(Zt,{kind:h,assistantId:n,systemTasks:c,canOpenMemorySettings:d,isMobile:r,onClose:()=>g(null)}):null),E=(0,W.jsx)(Ut,{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,systemTasksSlot:(0,W.jsx)(Tt,{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`)})});return T&&r?(0,W.jsx)(Se,{children:T}):(0,W.jsxs)(W.Fragment,{children:[T&&!r?(0,W.jsx)(Ce,{storageKey:`schedulesDetailDrawerWidth`,detailKey:m??h??void 0,section:E,detail:T}):E,(0,W.jsx)(Xe,{isOpen:f,assistantId:n,onClose:()=>p(!1),onCreated:()=>{p(!1),s.refetch()}})]})}export{$t as SchedulesPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-CqtAGHQu.js";import{t as n}from"./react-BFJW0bSv.js";import{t as r}from"./button-BwFudwM5.js";import{f as i,u as a}from"./chunk-5KNZJZUH-Bsoom5--.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"./jsx-runtime-D3ZM-ToX.js";import{t as u}from"./cn-CJf7MmLX.js";import{t as d}from"./typography-DEI9Ra9z.js";import{t as f}from"./calendar-qrPKlf1H.js";import{t as p}from"./chart-column-k8S2UYq8.js";import{t as m}from"./chevron-down-BNidRDh1.js";import{t as h}from"./chevron-right-CANAtgGn.js";import{t as g}from"./clock-DeynsyYL.js";import{t as _}from"./coins-CcTuNVlN.js";import{F as v,a as y}from"./src-CwGlaCIx.js";import{t as b}from"./loader-circle-DWWXcfTQ.js";import{t as x}from"./play-Dh6Bw5AP.js";import{t as S}from"./repeat-CP_vsQPN.js";import{t as C}from"./settings-6_RIT4kT.js";import{t as w}from"./trash-2-DfVRfykB.js";import{t as T}from"./x-D4O9yIS7.js";import{t as E}from"./notice-Dslxs3H6.js";import{t as D}from"./tag-G0ELn_cq.js";import{n as O,t as k}from"./input-CgGeKtja.js";import{t as A}from"./toggle-BEPV0rQM.js";import{t as j}from"./modal-DagTZ8xj.js";import{t as M}from"./panel-item-5YQ3jbso.js";import{n as N}from"./toast-BHjG1kP8.js";import{t as P}from"./dropdown-CJVkL1Yp.js";import{d as F}from"./routes-DrfnNoYS.js";import{$t as I,F as L,M as ee,N as te,P as ne,Qt as re,Wt as ie,_ as ae,c as R,d as z,ft as B,g as V,gt as oe,ht as se,j as ce,mt as le,pt as ue,v as de,y as fe}from"./react-query.gen-C7om930f.js";import{n as pe,t as me}from"./conversation-navigation-CIHBMx2t.js";import{n as he}from"./use-is-mobile-MmHo-OM6.js";import{t as ge}from"./effective-timezone-BX46fWmk.js";import{t as _e}from"./assistant-feature-flag-store-BojuHxUH.js";import{t as ve}from"./use-effective-timezone-BM5B7KHp.js";import{t as ye}from"./use-assistant-capability-CnI3VItU.js";import{t as be}from"./use-active-assistant-id-JLsAfn3e.js";import{t as xe}from"./detail-card-Br_T-73R.js";import{n as Se,t as Ce}from"./detail-drawer-Cbj_q7o7.js";import{a as we,c as Te,i as Ee,n as De,o as Oe,r as ke,s as Ae,t as je}from"./page-empty-state-D-y7eP1V.js";import{r as Me,t as Ne}from"./profile-metadata-CA6wxcVJ.js";var H=e(n(),1),Pe={frequency:`daily`,minute:0,hour24:9,weekdays:[1],dayOfMonth:1},Fe=[{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`}],Ie=[1,2,3,4,5];function U(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,Math.round(e))):t}function Le(e){let t=Array.from(new Set(e.map(e=>U(e,0,6)).filter(e=>Number.isInteger(e)))).sort((e,t)=>e-t);return t.length>0?t:[1]}function Re(e){let t=U(e.minute,0,59),n=U(e.hour24,0,23);switch(e.frequency){case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${Le(e.weekdays).join(`,`)}`;case`monthly`:return e.dayOfMonth===`last`?`${t} ${n} L * *`:`${t} ${n} ${U(e.dayOfMonth,1,28)} * *`}}function ze(e,t){let n=U(e,0,23),r=U(t,0,59),i=n<12?`AM`:`PM`;return`${n%12==0?12:n%12}:${String(r).padStart(2,`0`)} ${i}`}function Be(e){let t=[`th`,`st`,`nd`,`rd`],n=e%100;return`${e}${t[(n-20)%10]??t[n]??t[0]}`}function Ve(e){let t=Le(e),n=new Set(t);if(t.length===7)return`every day`;if(t.length===5&&Ie.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 ${Fe[t[0]]?.full??`day`}`;let r=t.map(e=>Fe[e]?.short??``),i=r.pop();return`every ${r.join(`, `)} & ${i}`}function He(e){let t=ze(e.hour24,e.minute);switch(e.frequency){case`hourly`:{let t=U(e.minute,0,59);return`Runs every hour at :${String(t).padStart(2,`0`)}`}case`daily`:return`Runs every day at ${t}`;case`weekly`:return`Runs ${Ve(e.weekdays)} at ${t}`;case`monthly`:return e.dayOfMonth===`last`?`Runs on the last day of every month at ${t}`:`Runs on the ${Be(U(e.dayOfMonth,1,28))} of every month at ${t}`}}var W=l(),Ue=[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`}],We=Array.from({length:12},(e,t)=>{let n=t+1;return{value:String(n),label:String(n)}}),Ge=Array.from({length:12},(e,t)=>{let n=t*5,r=String(n).padStart(2,`0`);return{value:r,label:r}}),Ke=[...Array.from({length:28},(e,t)=>{let n=t+1;return{value:String(n),label:Be(n)}}),{value:`last`,label:`Last day`}],qe=[{value:`AM`,label:`AM`},{value:`PM`,label:`PM`}];function Je(e,t){let n=e%12;return t===`PM`?n+12:n}function Ye(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 Xe({isOpen:e,assistantId:t,onClose:n,onCreated:r}){return(0,W.jsx)(j.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,W.jsx)(Ze,{assistantId:t,onClose:n,onCreated:r}):null})}function Ze({assistantId:e,onClose:t,onCreated:n}){let i=ve(),[a,o]=(0,H.useState)(``),[s,c]=(0,H.useState)(``),[l,u]=(0,H.useState)(``),[d,f]=(0,H.useState)(`simple`),[p,m]=(0,H.useState)(Pe),[h,g]=(0,H.useState)(``),[_,v]=(0,H.useState)(!1),[y,b]=(0,H.useState)(null),x=a.trim(),S=s.trim(),C=l.trim(),w=h.trim(),T=(0,H.useMemo)(()=>d===`simple`?Re(p):w,[d,p,w]),E=(0,H.useMemo)(()=>d===`simple`?He(p):w||`Enter a cron expression to continue.`,[d,p,w]),D=(0,H.useMemo)(()=>Ye(i),[i]),A=x.length>0&&S.length>0&&C.length>0&&T.length>0&&!_;return(0,W.jsxs)(j.Content,{size:`md`,children:[(0,W.jsxs)(j.Header,{children:[(0,W.jsx)(j.Title,{children:`Create schedule`}),(0,W.jsx)(j.Description,{children:`Schedule a recurring instruction for your assistant. Runs in execute mode — the message is delivered to the assistant on each fire.`})]}),(0,W.jsxs)(`form`,{onSubmit:async t=>{if(t.preventDefault(),A){v(!0),b(null);try{await De(e,{name:x,description:S,expression:T,message:C,timezone:i}),v(!1),n()}catch(e){b(e instanceof Error?e.message:`Failed to create schedule.`),v(!1)}}},children:[(0,W.jsx)(j.Body,{children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,W.jsx)(k,{label:`Name`,placeholder:`Morning briefing`,value:a,onChange:e=>o(e.target.value),required:!0,autoFocus:!0,fullWidth:!0}),(0,W.jsx)(O,{label:`Description`,placeholder:`What is this schedule for?`,value:s,onChange:e=>c(e.target.value),required:!0,fullWidth:!0,rows:2}),(0,W.jsx)(nt,{label:`Repeat`,children:d===`simple`?(0,W.jsx)(Qe,{cadence:p,onChange:m}):(0,W.jsx)(tt,{value:h,onChange:g,onUseSimple:()=>f(`simple`)})}),(0,W.jsx)(rt,{summary:E,mono:d===`advanced`&&w.length>0,timezoneLabel:D}),d===`simple`?(0,W.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e||Re(p)),f(`advanced`)},className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`Advanced — write a cron expression`}):null,(0,W.jsx)(O,{label:`Message`,placeholder:`What should the assistant do on each fire?`,value:l,onChange:e=>u(e.target.value),required:!0,fullWidth:!0,rows:4}),y?(0,W.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:y}):null]})}),(0,W.jsxs)(j.Footer,{children:[(0,W.jsx)(r,{variant:`outlined`,onClick:t,type:`button`,children:`Cancel`}),(0,W.jsx)(r,{variant:`primary`,type:`submit`,disabled:!A,children:_?`Creating…`:`Create schedule`})]})]})]})}function Qe({cadence:e,onChange:t}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(v,{items:Ue,value:e.frequency,onChange:n=>t({...e,frequency:n}),ariaLabel:`How often the schedule runs`}),e.frequency===`hourly`?(0,W.jsx)(G,{label:`At minute`,children:(0,W.jsx)(P,{options:Ge,value:String(e.minute).padStart(2,`0`),onChange:n=>t({...e,minute:Number(n)}),"aria-label":`Minute`,className:`w-24`})}):null,e.frequency===`weekly`?(0,W.jsx)(G,{label:`On these days`,children:(0,W.jsx)(et,{value:e.weekdays,onChange:n=>t({...e,weekdays:n})})}):null,e.frequency===`monthly`?(0,W.jsx)(G,{label:`On day`,children:(0,W.jsx)(P,{options:Ke,value:e.dayOfMonth===`last`?`last`:String(e.dayOfMonth),onChange:n=>t({...e,dayOfMonth:n===`last`?`last`:Number(n)}),"aria-label":`Day of month`,className:`w-32`})}):null,e.frequency===`hourly`?null:(0,W.jsx)(G,{label:`At time`,children:(0,W.jsx)($e,{hour24:e.hour24,minute:e.minute,onChange:(n,r)=>t({...e,hour24:n,minute:r})})})]})}function $e({hour24:e,minute:t,onChange:n}){let r=e<12?`AM`:`PM`,i=e%12==0?12:e%12;return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(P,{options:We,value:String(i),onChange:e=>n(Je(Number(e),r),t),"aria-label":`Hour`,className:`w-[72px]`}),(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:`:`}),(0,W.jsx)(P,{options:Ge,value:String(t).padStart(2,`0`),onChange:t=>n(e,Number(t)),"aria-label":`Minute`,className:`w-[72px]`}),(0,W.jsx)(`div`,{className:`w-[112px]`,children:(0,W.jsx)(v,{items:qe,value:r,onChange:e=>n(Je(i,e),t),ariaLabel:`AM or PM`})})]})}function et({value:e,onChange:t}){let n=new Set(e),r=e=>{let r=new Set(n);r.has(e)?r.size>1&&r.delete(e):r.add(e),t([...r].sort((e,t)=>e-t))};return(0,W.jsx)(`div`,{className:`flex gap-1.5`,children:Fe.map(e=>{let t=n.has(e.value);return(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.value),"aria-pressed":t,"aria-label":e.full,title:e.full,className:u(`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 tt({value:e,onChange:t,onUseSimple:n}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(k,{placeholder:`0 9 * * *`,value:e,onChange:e=>t(e.target.value),fullWidth:!0,className:`font-mono`,"aria-label":`Cron expression`,helperText:`Standard 5-field cron (minute hour day month weekday). RRULE expressions are also accepted.`}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`← Back to the simple builder`})]})}function nt({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:e}),t]})}function G({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,W.jsx)(`span`,{className:`min-w-[88px] text-body-small-default text-[var(--content-tertiary)]`,children:e}),t]})}function rt({summary:e,mono:t,timezoneLabel:n}){return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3.5 py-3`,children:[(0,W.jsx)(g,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:u(`text-body-medium-default text-[var(--content-default)]`,t&&`break-all font-mono`),children:e}),(0,W.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Times use your timezone — `,n,`.`]})]})]})}function it(e=ge(),t=Date.now()){return Me(`7d`,e,t)}function K(e){return e?new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0}):`—`}function at(e){return e==null?`—`:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}var ot=new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`,minimumFractionDigits:2,maximumFractionDigits:2});function q(e){return e==null||!Number.isFinite(e)?`—`:ot.format(e)}function st(e){return`${e.toLocaleString()} ${e===1?`run`:`runs`}`}function ct(e){let t=Math.round(e/6e4);return t>=60&&t%60==0?`Every ${t/60} hr`:`Every ${t} min`}function lt(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 ut(e){return!!e.conversationId&&e.conversationExists===!0&&e.conversationArchivedAt==null}function dt(e){return ut(e)?e.conversationId??null:null}function J(e){return typeof e==`string`&&e.length>0}function ft(e){return e.status===`pending`||e.status===`superseded`}function pt(e){return e.status!==`skipped`&&e.status!==`missed`&&!ft(e)}var mt={heartbeat:`system-heartbeat`,consolidation:`system-consolidation`,retrospective:`system-memory-retrospective`};function ht(e){if(e.cronExpression)return e.timezone?`Cron: ${e.cronExpression} (${e.timezone})`:`Cron: ${e.cronExpression}`;let t=ct(e.intervalMs);return e.activeHoursStart!=null&&e.activeHoursEnd!=null&&(t+=` (${e.activeHoursStart}:00–${e.activeHoursEnd}:00)`),t}function gt(e){return ct(e.intervalMs)}var _t=`After conversation activity`;function vt(e,t){return e.status===`fired`||e.status===`cancelled`?!0:e.status===`firing`?!1:e.nextRunAt==null||!e.enabled&&e.nextRunAt<=t}function yt(e,t){let n=[],r=[],i=[];for(let a of e)a.isOneShot?vt(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 bt(e,t,n=!0){return{queryKey:[{_id:`schedulesUsagesummaryGet`,path:{assistant_id:e??``},_tz:t}],queryFn:()=>e?we(e,it(t)):Promise.resolve([]),enabled:n,staleTime:1e4}}function xt(e){return{scheduleId:e,runCount:0,totalEstimatedCostUsd:0,eventCount:0}}function St(e,t,n){let r=(t??[]).filter(e=>{let t=e.startedAt??e.createdAt;return pt(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 Ct({status:e}){return(0,W.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full`,style:{backgroundColor:e===`ok`||e===`completed`?`var(--system-positive-strong)`:e===`error`||e===`failed`?`var(--system-negative-strong)`:`var(--content-tertiary)`},"aria-label":e??`unknown`})}function wt({scheduleName:e,usage:t,onOpenUsage:n}){if(t.status===`loading`)return(0,W.jsxs)(`div`,{"aria-label":`Loading schedule usage`,className:`flex w-[156px] shrink-0 items-center justify-end gap-3`,children:[(0,W.jsx)(`span`,{className:`h-5 w-16 animate-pulse rounded bg-[var(--surface-muted)]`}),(0,W.jsx)(`span`,{className:`h-5 w-16 animate-pulse rounded bg-[var(--surface-muted)]`})]});let r=t.status===`error`,i=r?`--`:q(t.summary.totalEstimatedCostUsd),a=r?`--`:st(t.summary.runCount),o=t.status===`ready`&&!(t.summary.totalEstimatedCostUsd>0),s=t.status===`ready`&&t.summary.runCount===0,c=o?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`,l=s?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`;return(0,W.jsxs)(`div`,{className:`flex w-[156px] shrink-0 items-center justify-end gap-3 text-right text-body-small-default`,children:[n?(0,W.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`View usage for ${e}`,className:`min-w-[64px] cursor-pointer rounded px-1 py-0.5 text-right transition-colors hover:bg-[var(--surface-hover)] ${c}`,children:i}):(0,W.jsx)(`span`,{"aria-label":`Cost for ${e} in the last 7 days: ${i}`,className:`block min-w-[64px] px-1 py-0.5 ${c}`,children:i}),(0,W.jsx)(`span`,{"aria-label":`Runs for ${e} in the last 7 days: ${a}`,className:`block min-w-[64px] px-1 py-0.5 ${l}`,children:a})]})}function Y({name:e,subtitle:t,enabled:n,nextRunAt:r,lastRunAt:i,usage:a,helperText:o,statusLabel:s,statusTone:c=`neutral`,onClick:l}){return(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-3 rounded-md px-2 py-3 transition-colors hover:bg-[var(--surface-hover)] [&+&]:border-t [&+&]:border-[var(--border-base)]`,children:(0,W.jsxs)(`button`,{type:`button`,onClick:l,"aria-label":`Open ${e}`,className:`flex min-w-0 flex-1 cursor-pointer flex-wrap items-center gap-3 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e})}),(0,W.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:t}),o?(0,W.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-secondary)]`,children:o}):null,(0,W.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-body-small-default text-[var(--content-tertiary)]`,children:[r?(0,W.jsxs)(`span`,{children:[`Next: `,K(r)]}):null,i?(0,W.jsxs)(`span`,{children:[`Last: `,K(i)]}):null]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-3`,children:[(0,W.jsx)(wt,{scheduleName:e,usage:a}),s?(0,W.jsx)(D,{tone:c,children:s}):(0,W.jsx)(`span`,{className:`h-2 w-2 rounded-full`,style:{backgroundColor:n?`var(--system-positive-strong)`:`var(--content-disabled)`},"aria-label":n?`enabled`:`disabled`}),(0,W.jsx)(h,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})})}function Tt({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,h=n?.available===!0,g=f||p||h;if(!o&&!s&&!g)return null;let _=[...f?[r]:[],...p?[i]:[],...h?[a]:[]].filter(e=>e.status===`ready`),v=_.reduce((e,t)=>e+(t.summary.totalEstimatedCostUsd??0),0),x=o?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,W.jsx)(b,{className:`h-5 w-5 animate-spin text-stone-400`})}):s&&!g?(0,W.jsxs)(E,{tone:`error`,children:[`Failed to load system jobs.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]}):(0,W.jsxs)(`div`,{children:[f?(0,W.jsx)(Y,{name:`Heartbeat`,subtitle:ht(e),enabled:e.enabled,nextRunAt:e.nextRunAt,lastRunAt:e.lastRunAt,usage:r,onClick:l}):null,p?(0,W.jsx)(Y,{name:`Consolidation`,subtitle:gt(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,h?(0,W.jsx)(Y,{name:`Memory retrospective`,subtitle:_t,enabled:n.enabled,helperText:n.enabled?void 0:`Memory is off, so retrospectives are paused.`,nextRunAt:n.nextRunAt,lastRunAt:n.lastRunAt,usage:a,statusLabel:n.enabled?void 0:`Paused`,statusTone:`warning`,onClick:d}):null,s?(0,W.jsx)(`div`,{className:`pt-3 first:pt-0`,children:(0,W.jsxs)(E,{tone:`error`,children:[`Some system jobs failed to load.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]})}):null]});return(0,W.jsx)(xe,{children:(0,W.jsx)(y.Root,{type:`multiple`,children:(0,W.jsxs)(y.Item,{value:`system-jobs`,children:[(0,W.jsxs)(y.Trigger,{className:`group justify-between gap-3`,children:[(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1 text-left`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`System`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Built-in jobs managed by the assistant runtime`})]}),(0,W.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[_.length>0?(0,W.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[q(v),` (7d)`]}):null,(0,W.jsx)(m,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]})]}),(0,W.jsx)(y.Content,{children:(0,W.jsx)(`div`,{className:`mt-3`,children:x})})]})})})}var Et={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 Dt(e){return e.status===`missed`?`Missed while the assistant was offline`:`skipReason`in e&&e.skipReason?`Skipped — ${Et[e.skipReason]??e.skipReason}`:null}function X(e,t){return{id:e.id,jobId:t,status:e.status,startedAt:e.startedAt??e.scheduledFor,finishedAt:e.finishedAt,durationMs:e.durationMs,output:Dt(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 Ot(e){return e.runs.filter(e=>!ft(e)).map(e=>X(e,`heartbeat`))}function kt(e){return e.runs.map(e=>X(e,`consolidation`))}function At(e){return e.runs.map(e=>X(e,`retrospective`))}var Z=1e4;function jt(e,t,n,r,i){return e?{status:`loading`}:t?{status:`error`}:{status:`ready`,summary:St(n,r,i)}}function Mt(e,n){let r=o(),i={path:{assistant_id:e??``}},{data:a,isLoading:c,isError:l,refetch:u}=s({...ce(i),enabled:!!e,staleTime:Z}),{data:d,isLoading:f,isError:p,refetch:m}=s({...V(i),enabled:!!e,staleTime:Z}),{data:h,isLoading:g,isError:_,refetch:v}=s({...B(i),enabled:!!e,staleTime:Z}),y={path:{assistant_id:e??``},query:{limit:100}},{data:b,isLoading:x,isError:S,refetch:C}=s({...L(y),select:Ot,enabled:!!e&&a!=null,staleTime:Z}),{data:w,isLoading:T,isError:E,refetch:D}=s({...fe(y),select:kt,enabled:!!e&&d?.available===!0,staleTime:Z}),{data:O,isLoading:k,isError:A,refetch:j}=s({...se(y),select:At,enabled:!!e&&h?.available===!0,staleTime:Z}),M=(0,H.useMemo)(()=>it(n),[n]),P=(0,H.useMemo)(()=>jt(x,S,mt.heartbeat,b,M),[b,S,x,M]),F=(0,H.useMemo)(()=>jt(T,E,mt.consolidation,w,M),[w,E,T,M]),te=(0,H.useMemo)(()=>jt(k,A,mt.retrospective,O,M),[O,A,k,M]),ae=t=>{if(!e)return;let n={heartbeat:{config:ce(i).queryKey,runs:L(y).queryKey,infinite:ne(i)},consolidation:{config:V(i).queryKey,runs:fe(y).queryKey,infinite:de(i)},retrospective:{config:B(i).queryKey,runs:se(y).queryKey,infinite:le(i)}}[t];r.invalidateQueries({queryKey:n.config}),r.invalidateQueries({queryKey:n.runs}),r.invalidateQueries({queryKey:n.infinite})},R=I({onSuccess:e=>{e.ran?N.success(`Heartbeat started.`):N.info(`Heartbeat skipped.`)},onError:e=>{t(e,{context:`heartbeat_run_now`}),N.error(`Failed to run heartbeat.`)},onSettled:()=>ae(`heartbeat`)}),z=ie({onSuccess:e=>{e.ran?N.success(`Consolidation queued.`):N.info(`Consolidation already queued or running.`)},onError:e=>{t(e,{context:`consolidation_run_now`}),N.error(`Failed to run consolidation.`)},onSettled:()=>ae(`consolidation`)}),oe=re({onSuccess:e=>{ee(r,i,e),N.success(e.enabled?`Heartbeat enabled.`:`Heartbeat disabled.`)},onError:e=>{t(e,{context:`heartbeat_toggle`}),N.error(`Failed to toggle heartbeat.`)}});return{heartbeatConfig:a,consolidationConfig:d,retrospectiveConfig:h,heartbeatUsage:P,consolidationUsage:F,retrospectiveUsage:te,isLoading:c||f||g,hasError:l||p||_,isHeartbeatRunning:R.isPending,isConsolidationRunning:z.isPending,isHeartbeatLoading:c,isHeartbeatError:l,isConsolidationLoading:f,isConsolidationError:p,isRetrospectiveLoading:g,isRetrospectiveError:_,refetchHeartbeat:u,refetchConsolidation:m,refetchRetrospective:v,runHeartbeatNow:()=>{e&&R.mutate({path:{assistant_id:e}})},runConsolidationNow:()=>{e&&z.mutate({path:{assistant_id:e}})},toggleHeartbeat:t=>{e&&oe.mutate({body:{enabled:t},path:{assistant_id:e}})},refetchAll:()=>{u(),m(),v(),C(),D(),j()}}}function Nt({children:e}){return(0,W.jsx)(d,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function Q({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-1`,children:[(0,W.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e}),(0,W.jsx)(`span`,{className:`min-w-0 text-right text-body-medium-lighter text-[var(--content-default)]`,children:t})]})}function Pt({icon:e,value:t,label:n}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-3`,children:[(0,W.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-[var(--surface-sunken)] text-[var(--content-secondary)]`,children:e}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`div`,{className:`truncate text-body-large-default text-[var(--content-default)]`,children:t}),(0,W.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:n})]})]})}function Ft({usage:e}){return e.status===`loading`?(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:Array.from({length:2},(e,t)=>(0,W.jsx)(`div`,{className:`h-[60px] animate-pulse rounded-lg bg-[var(--surface-muted)]`},t))}):e.status===`error`?null:(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:[(0,W.jsx)(Pt,{icon:(0,W.jsx)(_,{className:`h-4 w-4`}),value:q(e.summary.totalEstimatedCostUsd),label:`7 Day Cost`}),(0,W.jsx)(Pt,{icon:(0,W.jsx)(S,{className:`h-4 w-4`}),value:st(e.summary.runCount),label:`7 Day Runs`})]})}function It(e){return e.exists&&e.archivedAt==null}function Lt({run:e,index:t,isExpanded:n,disableDirectOpen:r,onOpenConversation:i,onToggleDetails:a}){let o=dt(e),s=e.conversations??(o?[{id:o,title:null,exists:!0,archivedAt:null}]:[]),c=J(e.output),l=J(e.error),d=!r&&s.length===1&&It(s[0])?s[0].id:null,f=!d&&(s.length>0||c||l),p=`schedule-run-details-${t}`,m=!!d||f,g=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Ct,{status:e.status}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:K(e.startedAt)}),(0,W.jsxs)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[at(e.durationMs),` ·`,` `,q(e.estimatedCostUsd)]}),e.status===`error`&&e.error?(0,W.jsxs)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--system-negative-strong)]`,children:[e.error.slice(0,120),e.error.length>120?`…`:``]}):null]}),m?(0,W.jsx)(h,{className:u(`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform`,f&&n?`rotate-90`:``)}):null]}),_=f&&n?(0,W.jsx)(`div`,{id:p,className:`px-2 pb-3`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[s.length>0?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Conversations`}),(0,W.jsx)(`div`,{className:`space-y-1`,children:s.map(e=>It(e)?(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),className:`block w-full truncate text-left text-body-small-default text-[var(--content-default)] hover:underline`,children:J(e.title)?e.title:`Conversation`},e.id):(0,W.jsxs)(`span`,{className:`block truncate text-body-small-default text-[var(--content-tertiary)] italic`,children:[J(e.title)?e.title:`Conversation`,` `,e.exists?`(archived)`:`(unavailable)`]},e.id))})]}):null,c?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,l?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null;return d?(0,W.jsx)(`div`,{children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(d),"aria-label":`Open conversation for run at ${K(e.startedAt)}`,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:g})}):f?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),"aria-label":`Toggle details for run at ${K(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:g}),_]}):(0,W.jsx)(`div`,{className:`flex items-center gap-3 px-2 py-3`,children:g})}function Rt({runs:e,isLoading:t,disableDirectOpen:n,onOpenConversation:r}){let[i,a]=(0,H.useState)(null);return t?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-6`,children:(0,W.jsx)(b,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,W.jsx)(`p`,{className:`py-2 text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:`No runs yet.`}):(0,W.jsx)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:e.map((e,t)=>(0,W.jsx)(Lt,{run:e,index:t,isExpanded:i===e.id,disableDirectOpen:n,onOpenConversation:r,onToggleDetails:e=>a(t=>t===e?null:e)},e.id))})}function zt({schedule:e,assistantId:n,usage:i,isMobile:o,onClose:c,onDeleted:l}){let f=a(),{data:m,isLoading:h}=s({queryKey:oe({path:{assistant_id:n,id:e.id}}),queryFn:()=>Ee(n,e.id),staleTime:1e4}),[g,_]=(0,H.useState)(!1),[v,y]=(0,H.useState)(!1),[x,S]=(0,H.useState)(!1),C=async()=>{_(!0);try{await Oe(n,e.id)}catch(e){t(e,{context:`schedule_run_now`}),N.error(`Failed to run schedule.`)}finally{_(!1)}},E=async()=>{S(!0);try{await ke(n,e.id),l()}catch(e){t(e,{context:`schedule_delete`}),N.error(`Failed to delete schedule.`),S(!1),y(!1)}};return(0,W.jsxs)(`div`,{className:u(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,W.jsx)(d,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:e.name})}),(0,W.jsx)(r,{variant:`ghost`,iconOnly:(0,W.jsx)(T,{}),onClick:c,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[e.description?(0,W.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e.description}):null,(0,W.jsxs)(`section`,{children:[(0,W.jsx)(Nt,{children:`Details`}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] px-4 py-2`,children:[e.cadenceDescription?(0,W.jsx)(Q,{label:`Cadence`,value:e.cadenceDescription}):null,(0,W.jsx)(Q,{label:`Mode`,value:e.mode}),(0,W.jsx)(Q,{label:`Status`,value:e.enabled?`Enabled`:`Disabled`}),(0,W.jsx)(Q,{label:`Next run`,value:K(e.nextRunAt)}),e.lastRunAt?(0,W.jsx)(Q,{label:`Last run`,value:(0,W.jsxs)(`span`,{className:`flex items-center justify-end gap-2`,children:[(0,W.jsx)(Ct,{status:e.lastStatus}),K(e.lastRunAt)]})}):null]})]}),(0,W.jsx)(Ft,{usage:i}),(0,W.jsxs)(`section`,{children:[(0,W.jsx)(Nt,{children:`Recent runs`}),(0,W.jsx)(Rt,{runs:m?.runs,isLoading:h,disableDirectOpen:e.mode===`script`,onOpenConversation:e=>me(f,e)})]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[v?(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(r,{variant:`ghost`,onClick:()=>y(!1),disabled:x,children:`Cancel`}),(0,W.jsx)(r,{variant:`danger`,onClick:()=>void E(),disabled:x,children:x?`Deleting…`:`Yes, delete`})]}):(0,W.jsx)(r,{variant:`dangerOutline`,leftIcon:(0,W.jsx)(w,{className:`h-3.5 w-3.5`}),onClick:()=>y(!0),children:`Delete`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(r,{variant:`outlined`,leftIcon:(0,W.jsx)(p,{className:`h-3.5 w-3.5`}),onClick:()=>f(F.settings.usageForSchedule(e.id)),children:`View usage`}),e.mode===`script`?(0,W.jsx)(r,{variant:`primary`,leftIcon:g?(0,W.jsx)(b,{className:`h-3.5 w-3.5 animate-spin`}):void 0,onClick:()=>void C(),disabled:g,children:g?`Running…`:`Run now`}):null]})]})]})}function Bt(e){if(e.status===`loading`)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`h-4 w-12 animate-pulse rounded bg-[var(--surface-muted)]`}),(0,W.jsx)(`span`,{className:`h-4 w-10 animate-pulse rounded bg-[var(--surface-muted)]`})]});if(e.status===`error`)return(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`—`});let{summary:t}=e;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:q(t.totalEstimatedCostUsd)}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:st(t.runCount)})]})}function Vt({name:e,metaParts:t,usage:n,enabled:r,selected:i,onClick:a,onToggle:o,toggleAriaLabel:s}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-2 py-3 transition-colors [&+&]:border-t [&+&]:border-[var(--border-base)] ${i?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`}`,children:[o?(0,W.jsx)(A,{checked:r,onChange:o,"aria-label":s}):null,(0,W.jsxs)(`button`,{type:`button`,onClick:a,className:`flex min-w-0 flex-1 cursor-pointer items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,W.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e}),t.length>0?(0,W.jsx)(`span`,{className:`flex min-w-0 items-center gap-2 text-label-small-default text-[var(--content-tertiary)]`,children:t.map((e,t)=>(0,W.jsxs)(H.Fragment,{children:[t>0?(0,W.jsx)(`span`,{className:`h-[3px] w-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}):null,(0,W.jsx)(`span`,{className:`truncate`,children:e})]},t))}):null]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[Bt(n),(0,W.jsx)(h,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})]})}function Ht({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?K(o):``].filter(Boolean);return(0,W.jsx)(Vt,{name:e.name,metaParts:s,usage:t,enabled:e.enabled,selected:n,onClick:r,onToggle:i,toggleAriaLabel:i?`Toggle ${e.name}`:void 0})}function Ut({recurring:e,oneTime:t,pastOneTime:n,usageForSchedule:i,isLoading:a,isError:o,refetch:s,onToggle:c,onSelectSchedule:l,selectedScheduleId:u,onStartNewChat:d,onCreateSchedule:p,pastOpen:m,onPastOpenChange:g,systemTasksSlot:_}){let v=e=>(0,W.jsx)(Ht,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id),onToggle:t=>c(e.id,t)},e.id),b=e=>(0,W.jsx)(Ht,{schedule:e,usage:i(e.id),selected:e.id===u,onClick:()=>l(e.id)},e.id),x=n.length>0?(0,W.jsx)(y.Root,{type:`single`,collapsible:!0,className:`mt-3`,value:m?`past`:``,onValueChange:e=>g(e===`past`),children:(0,W.jsxs)(y.Item,{value:`past`,children:[(0,W.jsxs)(y.Trigger,{className:`group gap-[var(--app-spacing-xs)] px-2 text-label-small-default text-[var(--content-tertiary)]`,children:[(0,W.jsx)(h,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,W.jsxs)(`span`,{children:[`Past (`,n.length,`)`]})]}),(0,W.jsx)(y.Content,{children:(0,W.jsx)(`div`,{className:`pt-1`,children:n.map(b)})})]})}):null;return(0,W.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[a?(0,W.jsx)(`div`,{className:`space-y-3`,children:Array.from({length:2},(e,t)=>(0,W.jsx)(`div`,{className:`h-12 animate-pulse rounded-md bg-[var(--surface-muted)]`},t))}):o&&e.length===0?(0,W.jsx)(E,{tone:`error`,actions:(0,W.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,W.jsx)(je,{icon:f,title:`No schedules yet`,description:`Ask your assistant to set one up, or create one yourself.`,actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(r,{variant:`primary`,size:`regular`,onClick:d,children:`New Conversation`}),(0,W.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`or`}),(0,W.jsx)(r,{variant:`outlined`,size:`regular`,onClick:p,children:`Create schedule`})]})}):(0,W.jsxs)(`div`,{children:[e.map(v),t.length>0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`mt-3 px-2 text-label-small-default text-[var(--content-tertiary)]`,children:`One-time`}),t.map(b)]}):null,x]}),_?(0,W.jsx)(`div`,{className:`mt-[var(--app-spacing-lg)]`,children:_}):null]})}var Wt=`Default (assistant's main model)`,Gt=`Custom call-site model`;function $(e,t){return t?.[e]?.displayName??e}function Kt(e,t){if(e==null)return;if(e.provider!=null||e.model!=null)return Gt;let n=e.profile?.trim();return n?`Override (${$(n,t)})`:void 0}function qt({assistantId:e,pinnedProfile:t,defaultCallSite:n=`mainAgent`,fallbackLabel:r=Wt,respectCallSiteOverride:i=!1}){let a=t==null,{data:o}=s({...R({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),c=(0,H.useMemo)(()=>o?Ne(o):{},[o]),{data:l}=s({...z({path:{assistant_id:e}}),enabled:!!e&&a,staleTime:6e4}),u=a&&i?Kt(o?.llm?.callSites?.[n],c):void 0,d=a?l?.callSites.find(e=>e.id===n)?.defaultProfile:void 0,f=t==null?u??(d==null?r:`Default (${$(d,c)})`):$(t,c);return(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Model profile`}),(0,W.jsx)(`span`,{className:`min-w-0 text-right`,children:f})]})}function Jt({runs:e,isLoading:t,emptyMessage:n=`No runs yet.`,hasMore:i=!1,isLoadingMore:o=!1,onLoadMore:s}){let c=a(),[l,u]=(0,H.useState)(null),d=i&&s?(0,W.jsx)(`div`,{className:`flex justify-center pt-3`,children:(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:s,disabled:o,leftIcon:o?(0,W.jsx)(b,{className:`h-3.5 w-3.5 animate-spin`}):void 0,children:o?`Loading…`:`Load more`})}):null;return(0,W.jsx)(xe,{title:`Recent runs`,children:t?(0,W.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,W.jsx)(b,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`py-4 text-center text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:n}),d]}):(0,W.jsxs)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:[e.map((e,t)=>{let n=dt(e),r=J(e.output),i=J(e.error),a=e.status===`skipped`||e.status===`missed`,o=!n&&!a&&(r||i),s=l===e.id,d=`schedule-run-details-${t}`;return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(M,{label:(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,W.jsx)(Ct,{status:e.status}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`block truncate text-body-medium-lighter text-[var(--content-default)]`,children:J(e.title)?e.title:K(e.startedAt)}),(0,W.jsxs)(`span`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[J(e.title)?`${K(e.startedAt)} · `:``,a?(0,W.jsx)(W.Fragment,{children:r?e.output:e.status===`missed`?`Missed`:`Skipped`}):(0,W.jsxs)(W.Fragment,{children:[at(e.durationMs),` ·`,` `,q(e.estimatedCostUsd)]}),e.status===`error`&&e.error&&(0,W.jsxs)(`span`,{className:`ml-2 text-[var(--system-negative-strong)]`,children:[e.error.slice(0,80),e.error.length>80?`…`:``]})]})]}),n||o?(0,W.jsx)(h,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform ${s?`rotate-90`:``}`}):null]}),onSelect:n?()=>me(c,n):o?()=>u(s?null:e.id):void 0,"aria-label":`Run at ${K(e.startedAt)}`,"aria-expanded":o?s:void 0,"aria-controls":o?d:void 0,className:`h-auto py-2.5 gap-3 -mx-2 px-2`}),o&&s?(0,W.jsx)(`div`,{id:d,className:`px-2 pb-3`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[r?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,i?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,W.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null]},e.id)}),d]})})}var Yt={heartbeat:`heartbeatAgent`,consolidation:`memoryV2Consolidation`,retrospective:`memoryRetrospective`};function Xt({children:e}){return(0,W.jsx)(d,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function Zt({kind:e,assistantId:t,systemTasks:n,canOpenMemorySettings:i,isMobile:o,onClose:s}){let l=a(),{heartbeatConfig:f,consolidationConfig:p,retrospectiveConfig:m}=n,h,g,_,v,y,S,w;e===`heartbeat`?(h=`Heartbeat`,g=f?ht(f):``,_=f?.enabled??!1,v=f?.nextRunAt??null,y=f?.lastRunAt??null,S=n.isHeartbeatRunning,w=n.runHeartbeatNow):e===`consolidation`?(h=`Consolidation`,g=p?gt(p):``,_=p?.enabled??!1,v=p?.nextRunAt??null,y=p?.lastRunAt??null,S=n.isConsolidationRunning,w=n.runConsolidationNow):(h=`Memory retrospective`,g=_t,_=m?.enabled??!1,v=m?.nextRunAt??null,y=m?.lastRunAt??null,S=!1,w=void 0);let D=e!==`heartbeat`,O=e===`retrospective`,k=D&&!_,j=S||k,M=D?_?`On · Managed by Memory`:`Paused`:_?`Enabled`:`Disabled`,N=O?`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=D&&_&&i,I={path:{assistant_id:t},query:{limit:25}},L=e===`heartbeat`?te(I):e===`consolidation`?ae(I):ue(I),{data:ee,isLoading:ne,fetchNextPage:re,hasNextPage:ie,isFetchingNextPage:R}=c({queryKey:L.queryKey,queryFn:L.queryFn,initialPageParam:{path:I.path,query:{}},getNextPageParam:e=>e.nextCursor??void 0,staleTime:1e4}),z=lt(ee?.pages.map(t=>({runs:t.runs.filter(e=>!ft(e)).map(t=>X(t,e))}))),B=z?.find(e=>pt(e)&&e.status!==`running`),V=y??B?.finishedAt??B?.startedAt??null;return(0,W.jsxs)(`div`,{className:u(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(d,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:h}),g?(0,W.jsx)(d,{variant:`body-small-default`,as:`p`,className:`truncate text-[var(--content-tertiary)]`,children:g}):null]}),(0,W.jsx)(r,{variant:`ghost`,iconOnly:(0,W.jsx)(T,{}),onClick:s,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[(0,W.jsxs)(`section`,{children:[(0,W.jsx)(Xt,{children:`Details`}),(0,W.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,W.jsx)(qt,{assistantId:t,defaultCallSite:Yt[e],fallbackLabel:`Default (system task model)`,respectCallSiteOverride:!0}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Status`}),(0,W.jsxs)(`span`,{className:`flex items-center gap-2 text-[var(--content-default)]`,children:[(0,W.jsx)(`span`,{children:M}),D?null:(0,W.jsx)(A,{checked:_,onChange:n.toggleHeartbeat,"aria-label":`Toggle ${h}`})]})]}),O?null:(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Next run`}),(0,W.jsx)(`span`,{className:`text-[var(--content-default)]`,children:K(v)})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Last run`}),(0,W.jsx)(`span`,{className:`text-[var(--content-default)]`,children:K(V)})]})]}),k?(0,W.jsx)(E,{tone:`warning`,className:`mt-4`,actions:i?(0,W.jsx)(r,{variant:`outlined`,size:`compact`,onClick:()=>l(`${F.settings.developer}?tab=memory`),children:`Turn on Memory`}):void 0,children:N}):null]}),(0,W.jsx)(Jt,{runs:z,isLoading:ne,hasMore:ie,isLoadingMore:R,onLoadMore:()=>void re()})]}),P||w?(0,W.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,W.jsx)(r,{variant:`outlined`,leftIcon:(0,W.jsx)(C,{className:`h-3.5 w-3.5`}),onClick:()=>l(`${F.settings.developer}?tab=memory`),children:`Memory settings`}):null,w?(0,W.jsx)(r,{variant:`primary`,leftIcon:S?(0,W.jsx)(b,{className:`h-3.5 w-3.5 animate-spin`}):(0,W.jsx)(x,{className:`h-3.5 w-3.5`}),onClick:w,disabled:j,children:S?`Running…`:`Run now`}):null]}):null]})}function Qt(e){let n=ve(),[r]=(0,H.useState)(()=>Date.now()),{data:i,isLoading:a,isError:o,refetch:c}=s(Ae(e)),{data:l,isLoading:u,isError:d}=s(bt(e,n,!0)),{recurring:f,oneTime:p,pastOneTime:m}=(0,H.useMemo)(()=>{let e=yt(i??[],r);return{recurring:e.recurring,oneTime:e.upcomingOneTime,pastOneTime:e.pastOneTime}},[r,i]),h=(0,H.useMemo)(()=>new Map((l??[]).map(e=>[e.scheduleId,e])),[l]);return{recurring:f,oneTime:p,pastOneTime:m,usageForSchedule:(0,H.useCallback)(e=>u?{status:`loading`}:d?{status:`error`}:{status:`ready`,summary:h.get(e)??xt(e)},[d,u,h]),handleToggle:(0,H.useCallback)(async(n,r)=>{if(e)try{await Te(e,n,r),c()}catch(e){t(e,{context:`schedule_toggle`}),N.error(`Failed to toggle schedule.`)}},[e,c]),isLoading:a,isError:o,refetch:(0,H.useCallback)(()=>{c()},[c])}}function $t(){let e=a(),{scheduleId:t}=i(),n=be(),r=he(),o=ve(),s=Qt(n),c=Mt(n,o),l=ye(`memoryOptOut`),u=_e.use.settingsDeveloperNav(),d=l&&u===!0,[f,p]=(0,H.useState)(!1),m=t??null,[h,g]=(0,H.useState)(null),[_,v]=(0,H.useState)(!1),y=(0,H.useCallback)(t=>{e(t?F.schedules.detail(t):F.schedules.root)},[e]),b=m?s.recurring.find(e=>e.id===m)??s.oneTime.find(e=>e.id===m)??s.pastOneTime.find(e=>e.id===m)??null:null;(0,H.useEffect)(()=>{m&&!s.isLoading&&!s.isError&&!b&&y(null)},[m,b,s.isLoading,s.isError,y]);let x=h===`heartbeat`?c.heartbeatConfig!=null:h===`consolidation`?c.consolidationConfig?.available===!0:h===`retrospective`?c.retrospectiveConfig?.available===!0:!1;(0,H.useEffect)(()=>{h&&!c.isLoading&&!x&&g(null)},[h,x,c.isLoading]);let S=(0,H.useCallback)(e=>{g(null),y(e)},[y]),C=(0,H.useCallback)(e=>{m&&y(null),g(e)},[y,m]),w=(0,H.useCallback)(()=>{pe(e)},[e]),T=(b?(0,W.jsx)(zt,{schedule:b,assistantId:n,usage:s.usageForSchedule(b.id),isMobile:r,onClose:()=>y(null),onDeleted:()=>{y(null),s.refetch()}}):null)??(h&&x?(0,W.jsx)(Zt,{kind:h,assistantId:n,systemTasks:c,canOpenMemorySettings:d,isMobile:r,onClose:()=>g(null)}):null),E=(0,W.jsx)(Ut,{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,systemTasksSlot:(0,W.jsx)(Tt,{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`)})});return T&&r?(0,W.jsx)(Se,{children:T}):(0,W.jsxs)(W.Fragment,{children:[T&&!r?(0,W.jsx)(Ce,{storageKey:`schedulesDetailDrawerWidth`,detailKey:m??h??void 0,section:E,detail:T}):E,(0,W.jsx)(Xe,{isOpen:f,assistantId:n,onClose:()=>p(!1),onCreated:()=>{p(!1),s.refetch()}})]})}export{$t as SchedulesPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{m as r,u as i}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as a}from"./jsx-runtime-D3ZM-ToX.js";import{t as o}from"./check-Dt2rQhdg.js";import{t as s}from"./menu-wESJw6y3.js";import{t as c}from"./cloud-q4J30bVb.js";import{t as l}from"./ellipsis-vertical-qQRDY5dB.js";import{t as u}from"./laptop-BGOychmC.js";import{t as d}from"./plus-EJu6s6xR.js";import{t as f}from"./modal-xr_vw1ZO.js";import{t as p}from"./confirm-dialog-j9o2h3xs.js";import{L as m,M as h,P as g,ft as ee,ot as te,t as _,u as ne,x as re}from"./local-mode-DHueA-BJ.js";import{t as v}from"./is-electron-DIlIrdJX.js";import{n as ie}from"./resolved-assistants-store-C6oDdTxB.js";import{at as ae,et as y,i as b,n as x}from"./auth-store-C9aYqB9U.js";import{d as S}from"./routes-DrfnNoYS.js";import{t as oe}from"./use-onboarding-login-CiQyxJLM.js";import{n as se,t as C}from"./retire-confirm-dialog-8xlq4bkx.js";import{t as w}from"./onboarding-layout-iPzXbZk1.js";import{r as T}from"./format-date-CQUMvfqf.js";import{t as ce}from"./radio-card-nav-C_pSc4PD.js";var E=e(t(),1),D=a();function le({open:e,assistantName:t,isPending:r,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,D.jsx)(`span`,{className:`mt-3 block text-body-small-default text-[var(--system-negative-strong)]`,children:i}):null;return c===`confirm-repair`?(0,D.jsx)(p,{open:e,title:`Repair Assistant?`,message:(0,D.jsxs)(D.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:r,onConfirm:o,onCancel:()=>l(`menu`)}):c===`confirm-retire`?(0,D.jsx)(C,{open:e,isPending:r,extraMessage:u,onConfirm:s,onCancel:()=>l(`menu`)}):(0,D.jsx)(f.Root,{open:e,onOpenChange:e=>{!e&&!r&&a()},children:(0,D.jsxs)(f.Content,{size:`sm`,hideCloseButton:!0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),r||a()},children:[(0,D.jsx)(f.Header,{children:(0,D.jsx)(f.Title,{children:`Can’t Authenticate Assistant`})}),(0,D.jsxs)(f.Body,{children:[(0,D.jsxs)(f.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,D.jsxs)(`div`,{className:`mt-5 flex w-full flex-col gap-2`,children:[(0,D.jsx)(n,{variant:`primary`,fullWidth:!0,disabled:r,onClick:()=>l(`confirm-repair`),children:`Wake & Repair`}),(0,D.jsx)(n,{variant:`dangerOutline`,fullWidth:!0,disabled:r,onClick:()=>l(`confirm-retire`),children:`Retire Assistant`}),(0,D.jsx)(n,{variant:`outlined`,fullWidth:!0,disabled:r,onClick:a,children:`Cancel`})]})]})]})})}function O(e){return e.name?e.name:e.isLocal?`Local Assistant`:`Cloud Assistant`}function k(e){let t=e.isLocal?`On this computer`:`Cloud-hosted`;return e.hatchedAt?`${t} · Created ${T(e.hatchedAt)}`:t}function A(){let e=i(),[t]=r(),a=t.get(`fromLogin`)===`1`,o=t.get(`noAutoSkip`)===`1`,s=v(),c=b(),l=ie.use.assistants(),u=ae.use.currentOrganizationId(),{loading:f,error:C,login:T,cancel:k}=oe(),A=e=>e.isLocal||c,j=l.filter(A),de=!c&&h(),[M,N]=(0,E.useState)(null),[P,F]=(0,E.useState)(!1),[I,L]=(0,E.useState)(!1),[fe,R]=(0,E.useState)(null),[z,B]=(0,E.useState)(null),[V,H]=(0,E.useState)(!1),[pe,U]=(0,E.useState)(null),[W,G]=(0,E.useState)(null),[K,q]=(0,E.useState)(!1),[J,Y]=(0,E.useState)(null),X=(0,E.useRef)(!1);(0,E.useEffect)(()=>{if(j.length===0){M!=null&&N(null);return}if(M!=null&&j.some(e=>e.id===M))return;let e=y(u);N(j.find(t=>t.id===e)?.id??j[0].id)},[M,j,u]);let Z=async t=>{F(!0),R(null);try{t.isLocal?await x.getState().connectLocalAssistant(t.id):await x.getState().connectPlatformAssistant(t.id),e(S.assistant,{replace:!0})}catch(e){console.error(`selectAssistant.handleConnect failed`,e),t.isLocal&&h()&&(g(e)||ee(e)||e instanceof _)&&ne(t.id)?B(t):R(`Failed to connect. Please try again.`),F(!1)}},Q=()=>{B(null),H(!1),U(null),L(!1)},me=async()=>{if(!(!z||V)){H(!0),U(null);try{let e=await m(z.id,{repairGuardian:!0});if(e.ok){te(),Q(),Z(z);return}U(e.error||`Repair failed. Please try again.`)}catch(e){console.error(`selectAssistant.recoveryRepair failed`,e),U(`Repair failed. Please try again.`)}H(!1)}},he=async()=>{if(!(!z||V)){H(!0),U(null);try{let t=await se(z.id);if(t.ok){Q(),e(t.nextRoute,{replace:!0});return}U(t.error)}catch(e){console.error(`selectAssistant.recoveryRetire failed`,e),U(`Failed to retire assistant. Please try again.`)}H(!1)}},ge=()=>{K||(G(null),Y(null))},_e=async()=>{if(!(!W||K)){q(!0),Y(null);try{let e=await re(W.id);e.ok?(X.current=!0,G(null)):Y(e.error??`Failed to remove. Please try again.`)}catch(e){console.error(`selectAssistant.removeFromDevice failed`,e),Y(`Failed to remove. Please try again.`)}q(!1)}};(0,E.useEffect)(()=>{a||o||X.current||P||I||l.length!==0&&l.length===1&&j.length===1&&(L(!0),Z(j[0]))},[l.length,j.length]);let ve=()=>{let e=l.find(e=>e.id===M);e&&Z(e)},ye=()=>{e(S.welcome)},$=C??fe;return I&&!$&&!z?(0,D.jsx)(w,{children:(0,D.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,D.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Connecting to your assistant…`})})}):(0,D.jsxs)(w,{children:[(0,D.jsx)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${s?`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,D.jsxs)(`div`,{className:`flex w-full flex-col items-center ${s?``:`flex-1 justify-center`}`,children:[(0,D.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`}),$&&(0,D.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:$}),(0,D.jsxs)(`div`,{role:`radiogroup`,"aria-label":`Assistants`,onKeyDown:ce,className:`flex w-full flex-col ${s?`mt-8 gap-2`:`mt-10 gap-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:[l.map(e=>{let t=A(e);return(0,D.jsx)(ue,{assistant:e,selected:M===e.id,locked:!t,tabStop:M==null?j[0]?.id===e.id:M===e.id,onSelect:()=>{t&&N(e.id)},loginLabel:f?`Cancel`:`Log in to use`,loginDisabled:P,onLogin:!t&&e.isPlatformHosted?f?k:()=>void T():void 0,onRemove:e.isPlatformHosted&&de?()=>G(e):void 0},e.id)}),(0,D.jsxs)(`button`,{type:`button`,onClick:()=>void e(`${S.onboarding.hosting}?from=select-assistant`),disabled:P||f,className:[`group flex w-full items-center justify-center gap-2 border border-dashed border-[var(--border-element)]/50 text-[var(--content-tertiary)]`,s?`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:[(0,D.jsx)(d,{className:`h-4 w-4`}),(0,D.jsx)(`span`,{className:s?`text-body-small-default`:`text-body-medium-default`,children:`Create a new assistant`})]})]}),j.length>0&&(0,D.jsx)(`div`,{className:`mt-8 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:(0,D.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,className:s?void 0:`h-11 text-base`,onClick:ve,disabled:!M||P,children:P?`Connecting…`:`Continue`})}),(0,D.jsx)(`div`,{className:j.length>0?`mt-3`:`mt-8`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:(0,D.jsx)(n,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,onClick:ye,disabled:P||f,children:`Back`})})]})}),(0,D.jsx)(le,{open:z!=null,assistantName:z?O(z):``,isPending:V,errorMessage:pe??void 0,onCancel:Q,onRepair:()=>void me(),onRetire:()=>void he()}),(0,D.jsx)(p,{open:W!=null,title:`Remove from this device?`,message:(0,D.jsxs)(D.Fragment,{children:[`This won’t delete`,` `,W?O(W):`the assistant`,`. It only removes it from this device. Logging in will make it available again.`,J&&(0,D.jsx)(`span`,{className:`mt-2 block text-[var(--system-negative-strong)]`,children:J})]}),confirmLabel:`Remove`,destructive:!0,isPending:K,onConfirm:()=>void _e(),onCancel:ge})]})}function ue({assistant:e,selected:t,locked:r,tabStop:i,onSelect:a,loginLabel:d,loginDisabled:f,onLogin:p,onRemove:m}){let h=k(e),g=v();return(0,D.jsxs)(`div`,{role:r?void 0:`radio`,"aria-checked":r?void 0:t,tabIndex:r?void 0:i?0:-1,onClick:r?void 0:a,onKeyDown:r?void 0:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())},className:[`group flex w-full items-center border text-left`,g?`gap-3 rounded-lg px-[10px] py-3`:`gap-4 rounded-2xl px-[18px] py-4`,`transition-all duration-200 ease-out`,r?`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)]`,r?``:t?`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,D.jsx)(`div`,{className:[`flex shrink-0 items-center justify-center transition-colors duration-200`,`h-12 w-12 rounded-[10px]`,t&&!r?`bg-[var(--primary-base)] text-[var(--surface-base)]`:`bg-[var(--surface-active)]/40 text-[var(--content-secondary)]`].join(` `),children:e.isLocal?(0,D.jsx)(u,{className:`h-5 w-5`}):(0,D.jsx)(c,{className:`h-5 w-5`})}),(0,D.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,D.jsx)(`span`,{className:`block text-body-medium-default text-[var(--content-default)]`,children:O(e)}),(0,D.jsx)(`span`,{className:`mt-1 block text-[var(--content-tertiary)] ${g?`text-label-medium-default font-normal`:`text-body-small-lighter`}`,children:h})]}),r?(0,D.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[p&&(0,D.jsx)(n,{variant:`primary`,size:`regular`,onClick:p,disabled:f,children:d}),m&&(0,D.jsxs)(s.Root,{children:[(0,D.jsx)(s.Trigger,{asChild:!0,children:(0,D.jsx)(n,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,iconOnly:(0,D.jsx)(l,{}),"aria-label":`Actions for ${O(e)}`})}),(0,D.jsx)(s.Content,{align:`end`,sideOffset:4,children:(0,D.jsx)(s.Item,{onSelect:m,className:`text-[var(--system-negative-strong)] data-[highlighted]:text-[var(--system-negative-strong)]`,children:`Remove from this device…`})})]})]}):(0,D.jsx)(`div`,{className:[`flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-200`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)] group-hover:border-[var(--content-tertiary)]`].join(` `),children:t&&(0,D.jsx)(o,{className:`h-3 w-3 text-[var(--surface-base)]`,strokeWidth:3})})]})}export{A as SelectAssistantScreen};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-BwFudwM5.js";import{m as r,u as i}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as a}from"./jsx-runtime-D3ZM-ToX.js";import{t as o}from"./check-Dt2rQhdg.js";import{t as s}from"./menu-Cfi4A3sw.js";import{t as c}from"./cloud-q4J30bVb.js";import{t as l}from"./ellipsis-vertical-qQRDY5dB.js";import{t as u}from"./laptop-BGOychmC.js";import{t as d}from"./plus-EJu6s6xR.js";import{t as f}from"./modal-DagTZ8xj.js";import{t as p}from"./confirm-dialog-B7WBNDbT.js";import{L as m,M as h,P as g,ft as ee,ot as te,t as _,u as ne,x as re}from"./local-mode-DHueA-BJ.js";import{t as v}from"./is-electron-DIlIrdJX.js";import{n as ie}from"./resolved-assistants-store-C6oDdTxB.js";import{at as ae,et as y,i as b,n as x}from"./auth-store-C9aYqB9U.js";import{d as S}from"./routes-DrfnNoYS.js";import{t as oe}from"./use-onboarding-login-CiQyxJLM.js";import{n as se,t as C}from"./retire-confirm-dialog-PvFzzHrQ.js";import{t as w}from"./onboarding-layout-CNKJRWfe.js";import{r as T}from"./format-date-CQUMvfqf.js";import{t as ce}from"./radio-card-nav-C_pSc4PD.js";var E=e(t(),1),D=a();function le({open:e,assistantName:t,isPending:r,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,D.jsx)(`span`,{className:`mt-3 block text-body-small-default text-[var(--system-negative-strong)]`,children:i}):null;return c===`confirm-repair`?(0,D.jsx)(p,{open:e,title:`Repair Assistant?`,message:(0,D.jsxs)(D.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:r,onConfirm:o,onCancel:()=>l(`menu`)}):c===`confirm-retire`?(0,D.jsx)(C,{open:e,isPending:r,extraMessage:u,onConfirm:s,onCancel:()=>l(`menu`)}):(0,D.jsx)(f.Root,{open:e,onOpenChange:e=>{!e&&!r&&a()},children:(0,D.jsxs)(f.Content,{size:`sm`,hideCloseButton:!0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),r||a()},children:[(0,D.jsx)(f.Header,{children:(0,D.jsx)(f.Title,{children:`Can’t Authenticate Assistant`})}),(0,D.jsxs)(f.Body,{children:[(0,D.jsxs)(f.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,D.jsxs)(`div`,{className:`mt-5 flex w-full flex-col gap-2`,children:[(0,D.jsx)(n,{variant:`primary`,fullWidth:!0,disabled:r,onClick:()=>l(`confirm-repair`),children:`Wake & Repair`}),(0,D.jsx)(n,{variant:`dangerOutline`,fullWidth:!0,disabled:r,onClick:()=>l(`confirm-retire`),children:`Retire Assistant`}),(0,D.jsx)(n,{variant:`outlined`,fullWidth:!0,disabled:r,onClick:a,children:`Cancel`})]})]})]})})}function O(e){return e.name?e.name:e.isLocal?`Local Assistant`:`Cloud Assistant`}function k(e){let t=e.isLocal?`On this computer`:`Cloud-hosted`;return e.hatchedAt?`${t} · Created ${T(e.hatchedAt)}`:t}function A(){let e=i(),[t]=r(),a=t.get(`fromLogin`)===`1`,o=t.get(`noAutoSkip`)===`1`,s=v(),c=b(),l=ie.use.assistants(),u=ae.use.currentOrganizationId(),{loading:f,error:C,login:T,cancel:k}=oe(),A=e=>e.isLocal||c,j=l.filter(A),de=!c&&h(),[M,N]=(0,E.useState)(null),[P,F]=(0,E.useState)(!1),[I,L]=(0,E.useState)(!1),[fe,R]=(0,E.useState)(null),[z,B]=(0,E.useState)(null),[V,H]=(0,E.useState)(!1),[pe,U]=(0,E.useState)(null),[W,G]=(0,E.useState)(null),[K,q]=(0,E.useState)(!1),[J,Y]=(0,E.useState)(null),X=(0,E.useRef)(!1);(0,E.useEffect)(()=>{if(j.length===0){M!=null&&N(null);return}if(M!=null&&j.some(e=>e.id===M))return;let e=y(u);N(j.find(t=>t.id===e)?.id??j[0].id)},[M,j,u]);let Z=async t=>{F(!0),R(null);try{t.isLocal?await x.getState().connectLocalAssistant(t.id):await x.getState().connectPlatformAssistant(t.id),e(S.assistant,{replace:!0})}catch(e){console.error(`selectAssistant.handleConnect failed`,e),t.isLocal&&h()&&(g(e)||ee(e)||e instanceof _)&&ne(t.id)?B(t):R(`Failed to connect. Please try again.`),F(!1)}},Q=()=>{B(null),H(!1),U(null),L(!1)},me=async()=>{if(!(!z||V)){H(!0),U(null);try{let e=await m(z.id,{repairGuardian:!0});if(e.ok){te(),Q(),Z(z);return}U(e.error||`Repair failed. Please try again.`)}catch(e){console.error(`selectAssistant.recoveryRepair failed`,e),U(`Repair failed. Please try again.`)}H(!1)}},he=async()=>{if(!(!z||V)){H(!0),U(null);try{let t=await se(z.id);if(t.ok){Q(),e(t.nextRoute,{replace:!0});return}U(t.error)}catch(e){console.error(`selectAssistant.recoveryRetire failed`,e),U(`Failed to retire assistant. Please try again.`)}H(!1)}},ge=()=>{K||(G(null),Y(null))},_e=async()=>{if(!(!W||K)){q(!0),Y(null);try{let e=await re(W.id);e.ok?(X.current=!0,G(null)):Y(e.error??`Failed to remove. Please try again.`)}catch(e){console.error(`selectAssistant.removeFromDevice failed`,e),Y(`Failed to remove. Please try again.`)}q(!1)}};(0,E.useEffect)(()=>{a||o||X.current||P||I||l.length!==0&&l.length===1&&j.length===1&&(L(!0),Z(j[0]))},[l.length,j.length]);let ve=()=>{let e=l.find(e=>e.id===M);e&&Z(e)},ye=()=>{e(S.welcome)},$=C??fe;return I&&!$&&!z?(0,D.jsx)(w,{children:(0,D.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,D.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Connecting to your assistant…`})})}):(0,D.jsxs)(w,{children:[(0,D.jsx)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${s?`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,D.jsxs)(`div`,{className:`flex w-full flex-col items-center ${s?``:`flex-1 justify-center`}`,children:[(0,D.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`}),$&&(0,D.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:$}),(0,D.jsxs)(`div`,{role:`radiogroup`,"aria-label":`Assistants`,onKeyDown:ce,className:`flex w-full flex-col ${s?`mt-8 gap-2`:`mt-10 gap-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:[l.map(e=>{let t=A(e);return(0,D.jsx)(ue,{assistant:e,selected:M===e.id,locked:!t,tabStop:M==null?j[0]?.id===e.id:M===e.id,onSelect:()=>{t&&N(e.id)},loginLabel:f?`Cancel`:`Log in to use`,loginDisabled:P,onLogin:!t&&e.isPlatformHosted?f?k:()=>void T():void 0,onRemove:e.isPlatformHosted&&de?()=>G(e):void 0},e.id)}),(0,D.jsxs)(`button`,{type:`button`,onClick:()=>void e(`${S.onboarding.hosting}?from=select-assistant`),disabled:P||f,className:[`group flex w-full items-center justify-center gap-2 border border-dashed border-[var(--border-element)]/50 text-[var(--content-tertiary)]`,s?`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:[(0,D.jsx)(d,{className:`h-4 w-4`}),(0,D.jsx)(`span`,{className:s?`text-body-small-default`:`text-body-medium-default`,children:`Create a new assistant`})]})]}),j.length>0&&(0,D.jsx)(`div`,{className:`mt-8 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:(0,D.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,className:s?void 0:`h-11 text-base`,onClick:ve,disabled:!M||P,children:P?`Connecting…`:`Continue`})}),(0,D.jsx)(`div`,{className:j.length>0?`mt-3`:`mt-8`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:(0,D.jsx)(n,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,onClick:ye,disabled:P||f,children:`Back`})})]})}),(0,D.jsx)(le,{open:z!=null,assistantName:z?O(z):``,isPending:V,errorMessage:pe??void 0,onCancel:Q,onRepair:()=>void me(),onRetire:()=>void he()}),(0,D.jsx)(p,{open:W!=null,title:`Remove from this device?`,message:(0,D.jsxs)(D.Fragment,{children:[`This won’t delete`,` `,W?O(W):`the assistant`,`. It only removes it from this device. Logging in will make it available again.`,J&&(0,D.jsx)(`span`,{className:`mt-2 block text-[var(--system-negative-strong)]`,children:J})]}),confirmLabel:`Remove`,destructive:!0,isPending:K,onConfirm:()=>void _e(),onCancel:ge})]})}function ue({assistant:e,selected:t,locked:r,tabStop:i,onSelect:a,loginLabel:d,loginDisabled:f,onLogin:p,onRemove:m}){let h=k(e),g=v();return(0,D.jsxs)(`div`,{role:r?void 0:`radio`,"aria-checked":r?void 0:t,tabIndex:r?void 0:i?0:-1,onClick:r?void 0:a,onKeyDown:r?void 0:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())},className:[`group flex w-full items-center border text-left`,g?`gap-3 rounded-lg px-[10px] py-3`:`gap-4 rounded-2xl px-[18px] py-4`,`transition-all duration-200 ease-out`,r?`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)]`,r?``:t?`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,D.jsx)(`div`,{className:[`flex shrink-0 items-center justify-center transition-colors duration-200`,`h-12 w-12 rounded-[10px]`,t&&!r?`bg-[var(--primary-base)] text-[var(--surface-base)]`:`bg-[var(--surface-active)]/40 text-[var(--content-secondary)]`].join(` `),children:e.isLocal?(0,D.jsx)(u,{className:`h-5 w-5`}):(0,D.jsx)(c,{className:`h-5 w-5`})}),(0,D.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,D.jsx)(`span`,{className:`block text-body-medium-default text-[var(--content-default)]`,children:O(e)}),(0,D.jsx)(`span`,{className:`mt-1 block text-[var(--content-tertiary)] ${g?`text-label-medium-default font-normal`:`text-body-small-lighter`}`,children:h})]}),r?(0,D.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[p&&(0,D.jsx)(n,{variant:`primary`,size:`regular`,onClick:p,disabled:f,children:d}),m&&(0,D.jsxs)(s.Root,{children:[(0,D.jsx)(s.Trigger,{asChild:!0,children:(0,D.jsx)(n,{variant:`ghost`,size:`regular`,className:`text-[var(--content-tertiary)]`,iconOnly:(0,D.jsx)(l,{}),"aria-label":`Actions for ${O(e)}`})}),(0,D.jsx)(s.Content,{align:`end`,sideOffset:4,children:(0,D.jsx)(s.Item,{onSelect:m,className:`text-[var(--system-negative-strong)] data-[highlighted]:text-[var(--system-negative-strong)]`,children:`Remove from this device…`})})]})]}):(0,D.jsx)(`div`,{className:[`flex h-5 w-5 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-200`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)] group-hover:border-[var(--content-tertiary)]`].join(` `),children:t&&(0,D.jsx)(o,{className:`h-3 w-3 text-[var(--surface-base)]`,strokeWidth:3})})]})}export{A as SelectAssistantScreen};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-D3ZM-ToX.js";import{t}from"./cn-CJf7MmLX.js";import"./src-Da9g8qsW.js";var n=e();function r({className:e}){return(0,n.jsx)(`div`,{role:`presentation`,className:t(`h-px w-full bg-[var(--border-base)]`,e)})}export{r as t};
1
+ import{t as e}from"./jsx-runtime-D3ZM-ToX.js";import{t}from"./cn-CJf7MmLX.js";import"./src-CwGlaCIx.js";var n=e();function r({className:e}){return(0,n.jsx)(`div`,{role:`presentation`,className:t(`h-px w-full bg-[var(--border-base)]`,e)})}export{r as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{l as n,r,u as i}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as a}from"./jsx-runtime-D3ZM-ToX.js";import{t as o}from"./use-supports-bookmarks-DwTpI8uM.js";import{t as s}from"./log-in-D4nsqRbG.js";import{t as c}from"./log-out-CF9mMMsz.js";import{n as l}from"./resolved-assistants-store-C6oDdTxB.js";import{i as u}from"./auth-store-C9aYqB9U.js";import{t as d}from"./client-feature-flag-store-Cw39NfCq.js";import{d as f}from"./routes-DrfnNoYS.js";import{i as p}from"./use-platform-gate-C5bNA5Pn.js";import{r as m,t as h}from"./settings-navigation-CyH-twYD.js";import{t as g}from"./use-onboarding-login-CiQyxJLM.js";import{t as _}from"./assistant-feature-flag-store-BvLDPeej.js";import{n as v,t as y}from"./sidebar-tree-Dxx5qLMQ.js";import{t as b}from"./use-supports-credentials-settings-3jGHR8fw.js";var x=e(t(),1),S=a();function C(){let e=_.use.settingsDeveloperNav(),t=d.use.platformNotifications(),a=l.use.activeAssistantId(),C=o(a),w=b(a),T=p({platformHostedOnly:!0}),E=p()===`full`?`Billing & Usage`:`Usage`,{pathname:D}=n(),O=i(),k=u(),{login:A}=g(),j=(0,x.useMemo)(()=>h.filter(e=>!(e.id===`notifications`&&(!t||T===`gated`)||e.id===`bookmarks`&&!C||e.id===`credentials`&&!w||e.id===`developer`)).map(e=>e.id===`billing`?{...e,label:E}:e),[t,T,C,w,E]),M=(0,x.useMemo)(()=>{let t=[];return e&&t.push(...h.filter(e=>e.id===`developer`)),t.push(k?{id:`logout`,label:`Log Out`,icon:c,onSelect:()=>void m(O)}:{id:`login`,label:`Log In`,icon:s,onSelect:()=>void A()}),t},[e,k,O,A]),N=(0,x.useMemo)(()=>{if(D===f.settings.root)return`Settings`;let e=h.find(e=>D===e.href||D.startsWith(e.href+`/`));return e?e.id===`billing`?E:e.label:`Settings`},[D,E]);return(0,S.jsx)(v,{backHref:f.assistant,sidebar:(0,S.jsx)(y,{items:j,bottomItems:M,indexPath:f.settings.root}),title:N,children:(0,S.jsx)(r,{})})}export{C as SettingsLayout};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{l as n,r,u as i}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as a}from"./jsx-runtime-D3ZM-ToX.js";import{t as o}from"./use-supports-bookmarks-DwTpI8uM.js";import{t as s}from"./log-in-D4nsqRbG.js";import{t as c}from"./log-out-CF9mMMsz.js";import{n as l}from"./resolved-assistants-store-C6oDdTxB.js";import{i as u}from"./auth-store-C9aYqB9U.js";import{t as d}from"./client-feature-flag-store-Cw39NfCq.js";import{d as f}from"./routes-DrfnNoYS.js";import{i as p}from"./use-platform-gate-C5bNA5Pn.js";import{r as m,t as h}from"./settings-navigation-CyH-twYD.js";import{t as g}from"./use-onboarding-login-CiQyxJLM.js";import{t as _}from"./assistant-feature-flag-store-BojuHxUH.js";import{n as v,t as y}from"./sidebar-tree-DTcPYrOG.js";import{t as b}from"./use-supports-credentials-settings-3jGHR8fw.js";var x=e(t(),1),S=a();function C(){let e=_.use.settingsDeveloperNav(),t=d.use.platformNotifications(),a=l.use.activeAssistantId(),C=o(a),w=b(a),T=p({platformHostedOnly:!0}),E=p()===`full`?`Billing & Usage`:`Usage`,{pathname:D}=n(),O=i(),k=u(),{login:A}=g(),j=(0,x.useMemo)(()=>h.filter(e=>!(e.id===`notifications`&&(!t||T===`gated`)||e.id===`bookmarks`&&!C||e.id===`credentials`&&!w||e.id===`developer`)).map(e=>e.id===`billing`?{...e,label:E}:e),[t,T,C,w,E]),M=(0,x.useMemo)(()=>{let t=[];return e&&t.push(...h.filter(e=>e.id===`developer`)),t.push(k?{id:`logout`,label:`Log Out`,icon:c,onSelect:()=>void m(O)}:{id:`login`,label:`Log In`,icon:s,onSelect:()=>void A()}),t},[e,k,O,A]),N=(0,x.useMemo)(()=>{if(D===f.settings.root)return`Settings`;let e=h.find(e=>D===e.href||D.startsWith(e.href+`/`));return e?e.id===`billing`?E:e.label:`Settings`},[D,E]);return(0,S.jsx)(v,{backHref:f.assistant,sidebar:(0,S.jsx)(y,{items:j,bottomItems:M,indexPath:f.settings.root}),title:N,children:(0,S.jsx)(r,{})})}export{C as SettingsLayout};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esm-UxVM8v-Z.js","assets/preload-helper-Cv2QeVDK.js","assets/dist-an0Z446E.js"])))=>i.map(i=>d[i]);
2
- import{o as e,r as t}from"./chunk-jRWAZmH_.js";import{t as n}from"./react-BFJW0bSv.js";import{F as r,n as i,t as a}from"./button-Dy5001j6.js";import{t as o}from"./preload-helper-Cv2QeVDK.js";import{t as s}from"./useMutation-CXGTrp4W.js";import{t as c}from"./jsx-runtime-D3ZM-ToX.js";import{t as l}from"./bug-DdmWJIkz.js";import{t as u}from"./download-Cnb8zZrK.js";import{t as ee}from"./info-DkhVkzmK.js";import{t as d}from"./lightbulb-NdZMkb6Y.js";import{t as te}from"./loader-circle-DWWXcfTQ.js";import{t as ne}from"./mail-DyUf40pu.js";import{t as f}from"./message-circle-ByXBaIaq.js";import{t as p}from"./paperclip--f908Kg3.js";import{t as re}from"./send-Bdmy_GSE.js";import{t as m}from"./x-D4O9yIS7.js";import{t as h}from"./notice-Dslxs3H6.js";import{n as ie,t as g}from"./input-tXUFa7Eo.js";import{t as _}from"./toggle-BEPV0rQM.js";import{t as v}from"./dropdown-B3FHWc_n.js";import{t as y}from"./is-electron-DIlIrdJX.js";import{n as b}from"./assistant-identity-store-B51BX78j.js";import{n as ae}from"./auth-store-C9aYqB9U.js";import{ln as x}from"./sdk.gen-CjtCuSlS.js";import{t as S}from"./dist-an0Z446E.js";import{n as C}from"./diagnostics-DykDXmF3.js";import{I as oe}from"./react-query.gen-BtYBixpk.js";import"./external-urls-BL9qY0s8.js";var w=e(n(),1),se=e(r(),1),ce=`vellum:debug:`;function T(){let e={};if(typeof window>`u`)return e;try{for(let t=0;t<window.localStorage.length;t++){let n=window.localStorage.key(t);if(n===null||!n.startsWith(ce))continue;let r=window.localStorage.getItem(n);r!==null&&(e[n]=r)}}catch{}return e}function E(){return{collectedAt:new Date().toISOString(),resolved:{impersonateAssistantVersion:b()},overrides:T()}}var D=t({ShareFeedbackModal:()=>H,stripBulkBase64:()=>R}),O=c(),k=[{value:`bug_report`,label:`Bug Report`,icon:l,includesLogsByDefault:!0},{value:`feature_request`,label:`Feature Request`,icon:d,includesLogsByDefault:!1},{value:`other`,label:`Other`,icon:f,includesLogsByDefault:!1}],A=[{value:`past_hour`,label:`Past hour`,cutoffMs:3600*1e3},{value:`past_24_hours`,label:`Past 24 hours`,cutoffMs:1440*60*1e3},{value:`all_time`,label:`All time`,cutoffMs:null}],le=A.map(e=>({value:e.value,label:e.label})),j=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`video/mp4`,`video/quicktime`,`video/webm`]),M=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`mp4`,`mov`,`webm`]),N=10,P=50*1024*1024,ue={bug_report:`bug_report`,feature_request:`feature_request`,other:`other`};function de(){return y()?`electron`:S.getPlatform()===`ios`?`ios`:`web`}function fe(e){if(e.size>P)return!1;if(e.type&&j.has(e.type))return!0;if(!e.type){let t=e.name.split(`.`).pop()?.toLowerCase();return t?M.has(t):!1}return!1}var F=8192,I=/^data:([^;,]+);base64,/i,L=/^[A-Za-z0-9+/]+={0,2}$/;function R(e,t=new WeakSet){if(typeof e==`string`){let t=I.exec(e);return t?`[stripped data URI ${t[1]}, ${e.length} chars]`:e.length>=F&&L.test(e)?`[stripped base64, ${e.length} chars]`:e}if(typeof e!=`object`||!e)return e;if(t.has(e))return`[cyclic]`;t.add(e);let n;if(Array.isArray(e))n=e.map(e=>R(e,t));else{let r={};for(let[n,i]of Object.entries(e))r[n]=R(i,t);n=r}return t.delete(e),n}function z(e,t){let n=Math.ceil(t.length/512),r=new Uint8Array(512+n*512),i=new TextEncoder,a=(e,t,n)=>{let a=i.encode(e);r.set(a.slice(0,n),t)},o=(e,t,n)=>{a(e.toString(8).padStart(n-1,`0`)+`\0`,t,n)};a(e,0,100),o(420,100,8),o(0,108,8),o(0,116,8),o(t.length,124,12),o(Math.floor(Date.now()/1e3),136,12);for(let e=148;e<156;e++)r[e]=32;r[156]=48,a(`ustar\0`,257,6),a(`00`,263,2);let s=0;for(let e=0;e<512;e++)s+=r[e];return o(s,148,7),r[155]=32,r.set(t,512),r}async function B(e,t){try{let n={};t.window.startTime!=null&&(n.startTime=t.window.startTime,n.endTime=t.window.endTime),t.activeConversationId&&(n.conversationId=t.activeConversationId);let{data:r,error:i}=await x({path:{assistant_id:e},body:n,parseAs:`blob`,throwOnError:!1});if(i||!(r instanceof Blob))return null;let a=await r.arrayBuffer();return new Uint8Array(a)}catch{return null}}async function V(){if(!S.isNativePlatform())return null;try{let{App:e}=await o(async()=>{let{App:e}=await import(`./esm-UxVM8v-Z.js`);return{App:e}},__vite__mapDeps([0,1,2])),{id:t,name:n,version:r,build:i}=await e.getInfo();return{id:t,name:n,version:r,build:i}}catch{return null}}async function pe(e,t,n,r={}){if(typeof CompressionStream>`u`)return null;let{diagnosticsProvider:i,doctorSessionId:a,extraLogFiles:o=[]}=r,s=new Date,c=A.find(t=>t.value===e),l=s.getTime(),u=c?.cutoffMs==null?null:l-c.cutoffMs,ee=u==null?null:new Date(u).toISOString(),d=null;try{d=i?.()??null}catch{d=null}let te=C(d),ne={collected_at:s.toISOString(),time_range:e,cutoff:ee,log_window:{start_time_ms:u,end_time_ms:l},assistant_id:t,active_conversation_id:n,doctor_session_id:a??null,client_version:null,native_app:await V(),user_agent:typeof navigator<`u`?navigator.userAgent:``,language:typeof navigator<`u`?navigator.language:``,platform:typeof navigator<`u`?navigator.platform:``,url:typeof window<`u`?window.location.href:``,viewport:typeof window<`u`?{width:window.innerWidth,height:window.innerHeight}:null,screen:typeof screen<`u`?{width:screen.width,height:screen.height}:null,connection:typeof navigator<`u`&&`connection`in navigator?{effectiveType:navigator.connection.effectiveType,downlink:navigator.connection.downlink,rtt:navigator.connection.rtt}:null,deviceMemory:typeof navigator<`u`&&`deviceMemory`in navigator?navigator.deviceMemory:null,hardwareConcurrency:typeof navigator<`u`?navigator.hardwareConcurrency:null},f=new TextEncoder,p=f.encode(JSON.stringify(ne,null,2)),re=f.encode(JSON.stringify(te,null,2)),m=[z(`web-client-context.json`,p),z(`web-chat-diagnostics.json`,re)],h=new TextEncoder().encode(JSON.stringify(E(),null,2));m.push(z(`web-debug-flags.json`,h));for(let e of o){let t=e.contents.trim();t&&m.push(z(e.filename,f.encode(t)))}try{let e=typeof window<`u`?window._vellumDebug?.chat:null;if(e){let t={clientMessages:e.getClientMessages?.()??null,transcriptItems:e.getTranscriptItems?.()??null,pendingInteractions:e.listPendingInteractions?.()??null,thinkingIndicator:e.thinkingIndicator?.()??null,streamingRing:e.streamingRing?.()??null,reconciliationDiagnostics:e.getReconciliationDiagnostics?.()??null},n=new TextEncoder().encode(JSON.stringify(R(t),null,2));m.push(z(`web-chat-debug-api-triage.json`,n))}}catch{}try{let e=typeof window<`u`?window._vellumDebug?.events:null;if(e){let t={focus:typeof document<`u`?{hasFocus:typeof document.hasFocus==`function`?document.hasFocus():null,visibilityState:document.visibilityState}:null,clients:e.getClients().map(({abortSignal:e,...t})=>({...t,aborted:e.aborted})),events:e.getEvents()},n=new TextEncoder().encode(JSON.stringify(R(t),null,2));m.push(z(`web-sse-liveness-triage.json`,n))}}catch{}if(y()&&window.vellum?.feedback){try{let e=await window.vellum.feedback.diagnostics(),t=new TextEncoder().encode(JSON.stringify(e,null,2));m.push(z(`electron-diagnostics.json`,t))}catch{}try{let e=await window.vellum.feedback.logs();if(e){let t=new TextEncoder().encode(e);m.push(z(`electron-main-logs.txt`,t))}}catch{}}if(t){let e=await B(t,{window:{startTime:u,endTime:l},activeConversationId:n});e&&m.push(z(`platform-logs.tar.gz`,e))}m.push(new Uint8Array(1024));let ie=m.reduce((e,t)=>e+t.length,0),g=new Uint8Array(ie),_=0;for(let e of m)g.set(e,_),_+=e.length;let v=new Blob([g.buffer]),b=await new Response(v.stream().pipeThrough(new CompressionStream(`gzip`))).blob();return new File([b],`web-client-logs-${s.getTime()}.tar.gz`,{type:`application/gzip`})}function H({open:e,onClose:t,initialReason:n,initialMessage:r,onSubmitted:o,assistantId:c,assistantVersion:l,activeConversationId:d,doctorSessionId:f,doctorSessionLog:b,getDiagnosticsSnapshot:x}){let S=ae.use.user(),C=S?.email,ce=S?.isStaff??!1,T=(0,w.useId)(),E=(0,w.useRef)(null),D=(0,w.useRef)(null),A=(0,w.useRef)(null),j=(0,w.useRef)(null),[M,P]=(0,w.useState)(n??`bug_report`),[F,I]=(0,w.useState)(``),[L,R]=(0,w.useState)(``),[z,B]=(0,w.useState)(k.find(e=>e.value===(n??`bug_report`))?.includesLogsByDefault??!0),[V,H]=(0,w.useState)(!1),[U,W]=(0,w.useState)(`past_hour`),[G,K]=(0,w.useState)([]),[ge,q]=(0,w.useState)(null),[_e,J]=(0,w.useState)(!1),[Y,ve]=(0,w.useState)(!1),[X,ye]=(0,w.useState)(!1),Z=s(oe()),[be,Q]=(0,w.useState)(!1),$=Z.isPending||be,xe=!C,Se=(0,w.useMemo)(()=>F.trim().length>0&&L.trim().length>0,[F,L]);(0,w.useEffect)(()=>{if(!e)return;let t=n??`bug_report`;P(t),I(r??``),R(C??``),B(k.find(e=>e.value===t)?.includesLogsByDefault??!0),H(!1),W(`past_hour`),K([]),ve(!1),ye(!1),q(null),Q(!1),Z.reset();let i=setTimeout(()=>{C?A.current?.focus():j.current?.focus()},50);return()=>clearTimeout(i)},[e]),(0,w.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=t}},[e]);let Ce=e=>{P(e),V||B(k.find(t=>t.value===e)?.includesLogsByDefault??!1)},we=()=>{B(e=>!e),H(!0)},Te=b?.trim()?[{filename:`doctor-session.txt`,contents:b}]:[],Ee=(0,w.useCallback)(e=>{e.key===`Escape`&&!e.defaultPrevented&&!$&&(e.preventDefault(),t())},[t,$]),De=(0,w.useCallback)(e=>{e.target===E.current&&!$&&t()},[t,$]),Oe=(0,w.useCallback)(e=>{K(t=>{let n=N-t.length;if(n<=0)return t;let r=new Set(t.map(e=>`${e.name}:${e.size}`)),i=[];for(let t of e){if(i.length>=n)break;if(!fe(t))continue;let e=`${t.name}:${t.size}`;r.has(e)||(r.add(e),i.push(t))}return i.length>0?[...t,...i]:t})},[]),ke=e=>{e.target.files&&Oe(Array.from(e.target.files)),e.target.value=``},Ae=e=>{e.preventDefault(),J(!1),e.dataTransfer.files?.length&&Oe(Array.from(e.dataTransfer.files))},je=e=>{e.preventDefault(),J(!0)},Me=e=>{e.preventDefault(),e.currentTarget===e.target&&J(!1)},Ne=e=>{K(t=>t.filter((t,n)=>n!==e))};return e?(0,se.createPortal)((0,O.jsx)(`div`,{ref:E,role:`dialog`,"aria-modal":`true`,"aria-labelledby":T,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:Ee,onClick:De,onDrop:Ae,onDragOver:je,onDragLeave:Me,children:(0,O.jsxs)(`div`,{className:`mx-4 flex w-full max-w-lg flex-col rounded-xl border p-6 shadow-xl`,style:{backgroundColor:`var(--surface-lift)`,borderColor:`var(--border-base)`,maxHeight:`calc(100vh - 2rem)`},children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between border-b pb-4`,style:{borderColor:`var(--border-subtle)`},children:[(0,O.jsx)(`h2`,{id:T,className:`!m-0 text-title-small text-[var(--content-default)]`,children:`Share Feedback`}),(0,O.jsx)(a,{variant:`ghost`,iconOnly:(0,O.jsx)(m,{}),onClick:t,disabled:$,"aria-label":`Close`,tintColor:`var(--content-secondary)`})]}),(0,O.jsxs)(`div`,{className:`flex flex-col gap-3.5 overflow-y-auto pt-4 ${$?`pointer-events-none opacity-60`:``}`,children:[ce&&(0,O.jsxs)(`div`,{className:`flex flex-col gap-1.5 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] px-3 py-2.5`,children:[(0,O.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-3`,children:[(0,O.jsx)(_,{checked:X,onChange:()=>ye(e=>!e),"aria-label":`Download diagnostics directly`}),(0,O.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:`Download diagnostics directly`})]}),(0,O.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Admin only — builds the diagnostics archive locally and downloads it instead of submitting feedback or notifying Slack.`})]}),X?(0,O.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,O.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:`Time range`}),(0,O.jsx)(v,{options:le,value:U,onChange:W,"aria-label":`Diagnostics time range`})]}):(0,O.jsxs)(O.Fragment,{children:[xe&&(0,O.jsx)(g,{id:`${T}-email`,ref:j,label:`Email`,type:`email`,placeholder:`you@example.com`,value:L,onChange:e=>R(e.target.value),leftIcon:(0,O.jsx)(ne,{className:`h-4 w-4`,"aria-hidden":!0}),fullWidth:!0}),(0,O.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,O.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Category`}),(0,O.jsx)(`div`,{className:`flex gap-2`,children:k.map(e=>(0,O.jsx)(me,{option:e,isSelected:M===e.value,onSelect:()=>Ce(e.value)},e.value))})]}),(0,O.jsx)(`hr`,{className:`border-[var(--border-subtle)]`}),M===`bug_report`&&(0,O.jsxs)(h,{tone:`info`,children:[`Tip: Get faster support by posting in our`,` `,(0,O.jsx)(`a`,{href:`https://vellum.ai/community`,target:`_blank`,rel:`noopener noreferrer`,className:`underline text-[var(--content-default)]`,children:`Discord community`})]}),M===`feature_request`&&(0,O.jsxs)(h,{tone:`info`,children:[`Tip: Vote on features on our`,` `,(0,O.jsx)(`a`,{href:`https://vellum.ai/roadmap`,target:`_blank`,rel:`noopener noreferrer`,className:`underline text-[var(--content-default)]`,children:`public roadmap`})]}),(0,O.jsx)(ie,{id:`${T}-message`,ref:A,label:M===`bug_report`?`What went wrong?`:M===`feature_request`?`Describe your idea`:`What's on your mind?`,rows:3,placeholder:M===`bug_report`?`What did you expect to happen, and what happened instead?`:M===`feature_request`?`What problem would this solve for you?`:`Share your thoughts...`,value:F,onChange:e=>I(e.target.value),fullWidth:!0}),M!==`feature_request`&&(0,O.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,O.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2.5`,children:[(0,O.jsx)(_,{checked:z,onChange:we,"aria-label":`Include browser diagnostics`}),(0,O.jsx)(`span`,{className:`text-body-medium-lighter leading-6 text-[var(--content-default)]`,children:`Include diagnostics`})]}),(0,O.jsx)(i,{content:`Diagnostics include browser context, assistant logs, and timestamps — never passwords or credentials.`,children:(0,O.jsx)(`button`,{type:`button`,"aria-label":`About diagnostics`,className:`inline-flex items-center justify-center text-[var(--content-tertiary)]`,children:(0,O.jsx)(ee,{className:`h-3.5 w-3.5`})})})]}),z&&(0,O.jsx)(v,{options:le,value:U,onChange:W,"aria-label":`Diagnostics time range`})]}),y()&&d&&M!==`feature_request`&&(0,O.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2.5`,children:[(0,O.jsx)(_,{checked:Y,onChange:()=>ve(e=>!e),"aria-label":`Include the most recent conversation`}),(0,O.jsx)(`span`,{className:`text-body-medium-lighter leading-6 text-[var(--content-default)]`,children:`Include the most recent conversation`})]}),(0,O.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,O.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:[`Attachments`,G.length>0&&(0,O.jsxs)(`span`,{className:`text-[var(--content-tertiary)]`,children:[` · `,G.length,`/`,N]})]}),(0,O.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,O.jsx)(p,{}),onClick:()=>D.current?.click(),disabled:G.length>=N,children:`Add files`}),(0,O.jsx)(`input`,{ref:D,type:`file`,multiple:!0,accept:`image/png,image/jpeg,image/gif,image/webp,video/mp4,video/quicktime,video/webm`,onChange:ke,className:`hidden`})]}),G.length>0&&(0,O.jsx)(`div`,{className:`flex gap-2 overflow-x-auto`,children:G.map((e,t)=>(0,O.jsx)(he,{file:e,onRemove:()=>Ne(t)},`${e.name}-${t}`))}),_e&&(0,O.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Drop files to attach…`})]})]}),ge&&(0,O.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--system-negative-strong)]`,children:ge})]}),(0,O.jsx)(`div`,{className:`mt-4 flex items-center justify-end gap-2 border-t pt-4`,style:{borderColor:`var(--border-subtle)`},children:$?(0,O.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-body-medium-lighter text-[var(--content-secondary)]`,children:[(0,O.jsx)(te,{className:`h-4 w-4 animate-spin`}),X?`Preparing diagnostics…`:`Sending feedback…`]}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(a,{variant:`ghost`,onClick:t,children:`Cancel`}),X?(0,O.jsx)(a,{variant:`primary`,leftIcon:(0,O.jsx)(u,{}),onClick:async()=>{if(!$){q(null),Q(!0);try{let e=await pe(U,c??null,y()?Y?d??null:null:d??null,{diagnosticsProvider:x,doctorSessionId:f,extraLogFiles:Te});if(!e){q(`Diagnostics export isn't supported in this browser.`);return}let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=e.name,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),0),t()}catch(e){q(e instanceof Error?e.message:`Failed to build diagnostics. Please try again.`)}finally{Q(!1)}}},children:`Download diagnostics`}):(0,O.jsx)(a,{variant:`primary`,leftIcon:(0,O.jsx)(re,{}),onClick:async()=>{if(!(!Se||$)){q(null),Q(!0);try{let e=z&&M!==`feature_request`?await pe(U,c??null,y()?Y?d??null:null:d??null,{diagnosticsProvider:x,doctorSessionId:f,extraLogFiles:Te}):null;await Z.mutateAsync({headers:{"Content-Type":null},body:{message:F.trim(),classification:ue[M],email:L.trim(),client:de(),client_version:void 0,...c?{assistant_id:c}:{},...l?{assistant_version:l}:{},...f?{doctor_session_id:f}:{},...e?{logs_file:e}:{},...G.length?{attachments:G}:{}},bodySerializer:e=>{let t=new FormData;for(let[n,r]of Object.entries(e))if(r!=null){if(n===`attachments`&&Array.isArray(r)){for(let e of r)t.append(`attachments`,e);continue}r instanceof Blob?t.append(n,r):t.append(n,String(r))}return t}}),o?.(),t()}catch(e){q(e instanceof Error?e.message:`Failed to submit feedback. Please try again.`)}finally{Q(!1)}}},disabled:!Se,children:`Submit`})]})})]})}),document.body):null}function me({option:e,isSelected:t,onSelect:n}){let r=e.icon;return(0,O.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":t,className:`flex items-center gap-1.5 rounded-full border px-3 py-1.5 text-left transition-colors`,style:{borderColor:t?`var(--primary-base)`:`var(--border-base)`,backgroundColor:t?`color-mix(in oklab, var(--primary-base) 10%, transparent)`:`transparent`},children:[(0,O.jsx)(r,{className:`h-3.5 w-3.5 shrink-0`,style:{color:t?`var(--primary-base)`:`var(--content-secondary)`}}),(0,O.jsx)(`span`,{className:`text-body-small-default`,style:{color:t?`var(--primary-base)`:`var(--content-default)`},children:e.label})]})}function he({file:e,onRemove:t}){let n=e.type.startsWith(`image/`),r=(0,w.useMemo)(()=>n?URL.createObjectURL(e):null,[e,n]);return(0,w.useEffect)(()=>{if(r)return()=>URL.revokeObjectURL(r)},[r]),(0,O.jsxs)(`div`,{className:`relative flex h-16 w-16 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)]`,title:e.name,children:[n&&r?(0,O.jsx)(`img`,{src:r,alt:e.name,className:`h-full w-full object-cover`}):(0,O.jsx)(p,{className:`h-5 w-5 text-[var(--content-secondary)]`}),(0,O.jsx)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,O.jsx)(m,{}),onClick:t,"aria-label":`Remove ${e.name}`,className:`absolute top-0.5 right-0.5 h-4 w-4 rounded-full bg-black/60 text-white hover:bg-black/70`,tintColor:`#fff`})]})}export{D as n,H as t};
2
+ import{o as e,r as t}from"./chunk-jRWAZmH_.js";import{t as n}from"./react-BFJW0bSv.js";import{W as r,n as i,t as a}from"./button-BwFudwM5.js";import{t as o}from"./preload-helper-Cv2QeVDK.js";import{t as s}from"./useMutation-CXGTrp4W.js";import{t as c}from"./jsx-runtime-D3ZM-ToX.js";import{t as l}from"./bug-DdmWJIkz.js";import{t as u}from"./download-Cnb8zZrK.js";import{t as ee}from"./info-DkhVkzmK.js";import{t as d}from"./lightbulb-NdZMkb6Y.js";import{t as te}from"./loader-circle-DWWXcfTQ.js";import{t as ne}from"./mail-DyUf40pu.js";import{t as f}from"./message-circle-ByXBaIaq.js";import{t as p}from"./paperclip--f908Kg3.js";import{t as re}from"./send-Bdmy_GSE.js";import{t as m}from"./x-D4O9yIS7.js";import{t as h}from"./notice-Dslxs3H6.js";import{n as ie,t as g}from"./input-CgGeKtja.js";import{t as _}from"./toggle-BEPV0rQM.js";import{t as v}from"./dropdown-CJVkL1Yp.js";import{t as y}from"./is-electron-DIlIrdJX.js";import{n as b}from"./assistant-identity-store-B51BX78j.js";import{n as ae}from"./auth-store-C9aYqB9U.js";import{ln as x}from"./sdk.gen-CjtCuSlS.js";import{t as S}from"./dist-an0Z446E.js";import{n as C}from"./diagnostics-DykDXmF3.js";import{I as oe}from"./react-query.gen-BtYBixpk.js";import"./external-urls-BL9qY0s8.js";var w=e(n(),1),se=e(r(),1),ce=`vellum:debug:`;function T(){let e={};if(typeof window>`u`)return e;try{for(let t=0;t<window.localStorage.length;t++){let n=window.localStorage.key(t);if(n===null||!n.startsWith(ce))continue;let r=window.localStorage.getItem(n);r!==null&&(e[n]=r)}}catch{}return e}function E(){return{collectedAt:new Date().toISOString(),resolved:{impersonateAssistantVersion:b()},overrides:T()}}var D=t({ShareFeedbackModal:()=>H,stripBulkBase64:()=>R}),O=c(),k=[{value:`bug_report`,label:`Bug Report`,icon:l,includesLogsByDefault:!0},{value:`feature_request`,label:`Feature Request`,icon:d,includesLogsByDefault:!1},{value:`other`,label:`Other`,icon:f,includesLogsByDefault:!1}],A=[{value:`past_hour`,label:`Past hour`,cutoffMs:3600*1e3},{value:`past_24_hours`,label:`Past 24 hours`,cutoffMs:1440*60*1e3},{value:`all_time`,label:`All time`,cutoffMs:null}],le=A.map(e=>({value:e.value,label:e.label})),j=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`video/mp4`,`video/quicktime`,`video/webm`]),M=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`mp4`,`mov`,`webm`]),N=10,P=50*1024*1024,ue={bug_report:`bug_report`,feature_request:`feature_request`,other:`other`};function de(){return y()?`electron`:S.getPlatform()===`ios`?`ios`:`web`}function fe(e){if(e.size>P)return!1;if(e.type&&j.has(e.type))return!0;if(!e.type){let t=e.name.split(`.`).pop()?.toLowerCase();return t?M.has(t):!1}return!1}var F=8192,I=/^data:([^;,]+);base64,/i,L=/^[A-Za-z0-9+/]+={0,2}$/;function R(e,t=new WeakSet){if(typeof e==`string`){let t=I.exec(e);return t?`[stripped data URI ${t[1]}, ${e.length} chars]`:e.length>=F&&L.test(e)?`[stripped base64, ${e.length} chars]`:e}if(typeof e!=`object`||!e)return e;if(t.has(e))return`[cyclic]`;t.add(e);let n;if(Array.isArray(e))n=e.map(e=>R(e,t));else{let r={};for(let[n,i]of Object.entries(e))r[n]=R(i,t);n=r}return t.delete(e),n}function z(e,t){let n=Math.ceil(t.length/512),r=new Uint8Array(512+n*512),i=new TextEncoder,a=(e,t,n)=>{let a=i.encode(e);r.set(a.slice(0,n),t)},o=(e,t,n)=>{a(e.toString(8).padStart(n-1,`0`)+`\0`,t,n)};a(e,0,100),o(420,100,8),o(0,108,8),o(0,116,8),o(t.length,124,12),o(Math.floor(Date.now()/1e3),136,12);for(let e=148;e<156;e++)r[e]=32;r[156]=48,a(`ustar\0`,257,6),a(`00`,263,2);let s=0;for(let e=0;e<512;e++)s+=r[e];return o(s,148,7),r[155]=32,r.set(t,512),r}async function B(e,t){try{let n={};t.window.startTime!=null&&(n.startTime=t.window.startTime,n.endTime=t.window.endTime),t.activeConversationId&&(n.conversationId=t.activeConversationId);let{data:r,error:i}=await x({path:{assistant_id:e},body:n,parseAs:`blob`,throwOnError:!1});if(i||!(r instanceof Blob))return null;let a=await r.arrayBuffer();return new Uint8Array(a)}catch{return null}}async function V(){if(!S.isNativePlatform())return null;try{let{App:e}=await o(async()=>{let{App:e}=await import(`./esm-UxVM8v-Z.js`);return{App:e}},__vite__mapDeps([0,1,2])),{id:t,name:n,version:r,build:i}=await e.getInfo();return{id:t,name:n,version:r,build:i}}catch{return null}}async function pe(e,t,n,r={}){if(typeof CompressionStream>`u`)return null;let{diagnosticsProvider:i,doctorSessionId:a,extraLogFiles:o=[]}=r,s=new Date,c=A.find(t=>t.value===e),l=s.getTime(),u=c?.cutoffMs==null?null:l-c.cutoffMs,ee=u==null?null:new Date(u).toISOString(),d=null;try{d=i?.()??null}catch{d=null}let te=C(d),ne={collected_at:s.toISOString(),time_range:e,cutoff:ee,log_window:{start_time_ms:u,end_time_ms:l},assistant_id:t,active_conversation_id:n,doctor_session_id:a??null,client_version:null,native_app:await V(),user_agent:typeof navigator<`u`?navigator.userAgent:``,language:typeof navigator<`u`?navigator.language:``,platform:typeof navigator<`u`?navigator.platform:``,url:typeof window<`u`?window.location.href:``,viewport:typeof window<`u`?{width:window.innerWidth,height:window.innerHeight}:null,screen:typeof screen<`u`?{width:screen.width,height:screen.height}:null,connection:typeof navigator<`u`&&`connection`in navigator?{effectiveType:navigator.connection.effectiveType,downlink:navigator.connection.downlink,rtt:navigator.connection.rtt}:null,deviceMemory:typeof navigator<`u`&&`deviceMemory`in navigator?navigator.deviceMemory:null,hardwareConcurrency:typeof navigator<`u`?navigator.hardwareConcurrency:null},f=new TextEncoder,p=f.encode(JSON.stringify(ne,null,2)),re=f.encode(JSON.stringify(te,null,2)),m=[z(`web-client-context.json`,p),z(`web-chat-diagnostics.json`,re)],h=new TextEncoder().encode(JSON.stringify(E(),null,2));m.push(z(`web-debug-flags.json`,h));for(let e of o){let t=e.contents.trim();t&&m.push(z(e.filename,f.encode(t)))}try{let e=typeof window<`u`?window._vellumDebug?.chat:null;if(e){let t={clientMessages:e.getClientMessages?.()??null,transcriptItems:e.getTranscriptItems?.()??null,pendingInteractions:e.listPendingInteractions?.()??null,thinkingIndicator:e.thinkingIndicator?.()??null,streamingRing:e.streamingRing?.()??null,reconciliationDiagnostics:e.getReconciliationDiagnostics?.()??null},n=new TextEncoder().encode(JSON.stringify(R(t),null,2));m.push(z(`web-chat-debug-api-triage.json`,n))}}catch{}try{let e=typeof window<`u`?window._vellumDebug?.events:null;if(e){let t={focus:typeof document<`u`?{hasFocus:typeof document.hasFocus==`function`?document.hasFocus():null,visibilityState:document.visibilityState}:null,clients:e.getClients().map(({abortSignal:e,...t})=>({...t,aborted:e.aborted})),events:e.getEvents()},n=new TextEncoder().encode(JSON.stringify(R(t),null,2));m.push(z(`web-sse-liveness-triage.json`,n))}}catch{}if(y()&&window.vellum?.feedback){try{let e=await window.vellum.feedback.diagnostics(),t=new TextEncoder().encode(JSON.stringify(e,null,2));m.push(z(`electron-diagnostics.json`,t))}catch{}try{let e=await window.vellum.feedback.logs();if(e){let t=new TextEncoder().encode(e);m.push(z(`electron-main-logs.txt`,t))}}catch{}}if(t){let e=await B(t,{window:{startTime:u,endTime:l},activeConversationId:n});e&&m.push(z(`platform-logs.tar.gz`,e))}m.push(new Uint8Array(1024));let ie=m.reduce((e,t)=>e+t.length,0),g=new Uint8Array(ie),_=0;for(let e of m)g.set(e,_),_+=e.length;let v=new Blob([g.buffer]),b=await new Response(v.stream().pipeThrough(new CompressionStream(`gzip`))).blob();return new File([b],`web-client-logs-${s.getTime()}.tar.gz`,{type:`application/gzip`})}function H({open:e,onClose:t,initialReason:n,initialMessage:r,onSubmitted:o,assistantId:c,assistantVersion:l,activeConversationId:d,doctorSessionId:f,doctorSessionLog:b,getDiagnosticsSnapshot:x}){let S=ae.use.user(),C=S?.email,ce=S?.isStaff??!1,T=(0,w.useId)(),E=(0,w.useRef)(null),D=(0,w.useRef)(null),A=(0,w.useRef)(null),j=(0,w.useRef)(null),[M,P]=(0,w.useState)(n??`bug_report`),[F,I]=(0,w.useState)(``),[L,R]=(0,w.useState)(``),[z,B]=(0,w.useState)(k.find(e=>e.value===(n??`bug_report`))?.includesLogsByDefault??!0),[V,H]=(0,w.useState)(!1),[U,W]=(0,w.useState)(`past_hour`),[G,K]=(0,w.useState)([]),[ge,q]=(0,w.useState)(null),[_e,J]=(0,w.useState)(!1),[Y,ve]=(0,w.useState)(!1),[X,ye]=(0,w.useState)(!1),Z=s(oe()),[be,Q]=(0,w.useState)(!1),$=Z.isPending||be,xe=!C,Se=(0,w.useMemo)(()=>F.trim().length>0&&L.trim().length>0,[F,L]);(0,w.useEffect)(()=>{if(!e)return;let t=n??`bug_report`;P(t),I(r??``),R(C??``),B(k.find(e=>e.value===t)?.includesLogsByDefault??!0),H(!1),W(`past_hour`),K([]),ve(!1),ye(!1),q(null),Q(!1),Z.reset();let i=setTimeout(()=>{C?A.current?.focus():j.current?.focus()},50);return()=>clearTimeout(i)},[e]),(0,w.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=t}},[e]);let Ce=e=>{P(e),V||B(k.find(t=>t.value===e)?.includesLogsByDefault??!1)},we=()=>{B(e=>!e),H(!0)},Te=b?.trim()?[{filename:`doctor-session.txt`,contents:b}]:[],Ee=(0,w.useCallback)(e=>{e.key===`Escape`&&!e.defaultPrevented&&!$&&(e.preventDefault(),t())},[t,$]),De=(0,w.useCallback)(e=>{e.target===E.current&&!$&&t()},[t,$]),Oe=(0,w.useCallback)(e=>{K(t=>{let n=N-t.length;if(n<=0)return t;let r=new Set(t.map(e=>`${e.name}:${e.size}`)),i=[];for(let t of e){if(i.length>=n)break;if(!fe(t))continue;let e=`${t.name}:${t.size}`;r.has(e)||(r.add(e),i.push(t))}return i.length>0?[...t,...i]:t})},[]),ke=e=>{e.target.files&&Oe(Array.from(e.target.files)),e.target.value=``},Ae=e=>{e.preventDefault(),J(!1),e.dataTransfer.files?.length&&Oe(Array.from(e.dataTransfer.files))},je=e=>{e.preventDefault(),J(!0)},Me=e=>{e.preventDefault(),e.currentTarget===e.target&&J(!1)},Ne=e=>{K(t=>t.filter((t,n)=>n!==e))};return e?(0,se.createPortal)((0,O.jsx)(`div`,{ref:E,role:`dialog`,"aria-modal":`true`,"aria-labelledby":T,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:Ee,onClick:De,onDrop:Ae,onDragOver:je,onDragLeave:Me,children:(0,O.jsxs)(`div`,{className:`mx-4 flex w-full max-w-lg flex-col rounded-xl border p-6 shadow-xl`,style:{backgroundColor:`var(--surface-lift)`,borderColor:`var(--border-base)`,maxHeight:`calc(100vh - 2rem)`},children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between border-b pb-4`,style:{borderColor:`var(--border-subtle)`},children:[(0,O.jsx)(`h2`,{id:T,className:`!m-0 text-title-small text-[var(--content-default)]`,children:`Share Feedback`}),(0,O.jsx)(a,{variant:`ghost`,iconOnly:(0,O.jsx)(m,{}),onClick:t,disabled:$,"aria-label":`Close`,tintColor:`var(--content-secondary)`})]}),(0,O.jsxs)(`div`,{className:`flex flex-col gap-3.5 overflow-y-auto pt-4 ${$?`pointer-events-none opacity-60`:``}`,children:[ce&&(0,O.jsxs)(`div`,{className:`flex flex-col gap-1.5 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] px-3 py-2.5`,children:[(0,O.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-3`,children:[(0,O.jsx)(_,{checked:X,onChange:()=>ye(e=>!e),"aria-label":`Download diagnostics directly`}),(0,O.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:`Download diagnostics directly`})]}),(0,O.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Admin only — builds the diagnostics archive locally and downloads it instead of submitting feedback or notifying Slack.`})]}),X?(0,O.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,O.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:`Time range`}),(0,O.jsx)(v,{options:le,value:U,onChange:W,"aria-label":`Diagnostics time range`})]}):(0,O.jsxs)(O.Fragment,{children:[xe&&(0,O.jsx)(g,{id:`${T}-email`,ref:j,label:`Email`,type:`email`,placeholder:`you@example.com`,value:L,onChange:e=>R(e.target.value),leftIcon:(0,O.jsx)(ne,{className:`h-4 w-4`,"aria-hidden":!0}),fullWidth:!0}),(0,O.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,O.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:`Category`}),(0,O.jsx)(`div`,{className:`flex gap-2`,children:k.map(e=>(0,O.jsx)(me,{option:e,isSelected:M===e.value,onSelect:()=>Ce(e.value)},e.value))})]}),(0,O.jsx)(`hr`,{className:`border-[var(--border-subtle)]`}),M===`bug_report`&&(0,O.jsxs)(h,{tone:`info`,children:[`Tip: Get faster support by posting in our`,` `,(0,O.jsx)(`a`,{href:`https://vellum.ai/community`,target:`_blank`,rel:`noopener noreferrer`,className:`underline text-[var(--content-default)]`,children:`Discord community`})]}),M===`feature_request`&&(0,O.jsxs)(h,{tone:`info`,children:[`Tip: Vote on features on our`,` `,(0,O.jsx)(`a`,{href:`https://vellum.ai/roadmap`,target:`_blank`,rel:`noopener noreferrer`,className:`underline text-[var(--content-default)]`,children:`public roadmap`})]}),(0,O.jsx)(ie,{id:`${T}-message`,ref:A,label:M===`bug_report`?`What went wrong?`:M===`feature_request`?`Describe your idea`:`What's on your mind?`,rows:3,placeholder:M===`bug_report`?`What did you expect to happen, and what happened instead?`:M===`feature_request`?`What problem would this solve for you?`:`Share your thoughts...`,value:F,onChange:e=>I(e.target.value),fullWidth:!0}),M!==`feature_request`&&(0,O.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,O.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2.5`,children:[(0,O.jsx)(_,{checked:z,onChange:we,"aria-label":`Include browser diagnostics`}),(0,O.jsx)(`span`,{className:`text-body-medium-lighter leading-6 text-[var(--content-default)]`,children:`Include diagnostics`})]}),(0,O.jsx)(i,{content:`Diagnostics include browser context, assistant logs, and timestamps — never passwords or credentials.`,children:(0,O.jsx)(`button`,{type:`button`,"aria-label":`About diagnostics`,className:`inline-flex items-center justify-center text-[var(--content-tertiary)]`,children:(0,O.jsx)(ee,{className:`h-3.5 w-3.5`})})})]}),z&&(0,O.jsx)(v,{options:le,value:U,onChange:W,"aria-label":`Diagnostics time range`})]}),y()&&d&&M!==`feature_request`&&(0,O.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2.5`,children:[(0,O.jsx)(_,{checked:Y,onChange:()=>ve(e=>!e),"aria-label":`Include the most recent conversation`}),(0,O.jsx)(`span`,{className:`text-body-medium-lighter leading-6 text-[var(--content-default)]`,children:`Include the most recent conversation`})]}),(0,O.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,O.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:[`Attachments`,G.length>0&&(0,O.jsxs)(`span`,{className:`text-[var(--content-tertiary)]`,children:[` · `,G.length,`/`,N]})]}),(0,O.jsx)(a,{variant:`outlined`,size:`compact`,leftIcon:(0,O.jsx)(p,{}),onClick:()=>D.current?.click(),disabled:G.length>=N,children:`Add files`}),(0,O.jsx)(`input`,{ref:D,type:`file`,multiple:!0,accept:`image/png,image/jpeg,image/gif,image/webp,video/mp4,video/quicktime,video/webm`,onChange:ke,className:`hidden`})]}),G.length>0&&(0,O.jsx)(`div`,{className:`flex gap-2 overflow-x-auto`,children:G.map((e,t)=>(0,O.jsx)(he,{file:e,onRemove:()=>Ne(t)},`${e.name}-${t}`))}),_e&&(0,O.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Drop files to attach…`})]})]}),ge&&(0,O.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--system-negative-strong)]`,children:ge})]}),(0,O.jsx)(`div`,{className:`mt-4 flex items-center justify-end gap-2 border-t pt-4`,style:{borderColor:`var(--border-subtle)`},children:$?(0,O.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-body-medium-lighter text-[var(--content-secondary)]`,children:[(0,O.jsx)(te,{className:`h-4 w-4 animate-spin`}),X?`Preparing diagnostics…`:`Sending feedback…`]}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(a,{variant:`ghost`,onClick:t,children:`Cancel`}),X?(0,O.jsx)(a,{variant:`primary`,leftIcon:(0,O.jsx)(u,{}),onClick:async()=>{if(!$){q(null),Q(!0);try{let e=await pe(U,c??null,y()?Y?d??null:null:d??null,{diagnosticsProvider:x,doctorSessionId:f,extraLogFiles:Te});if(!e){q(`Diagnostics export isn't supported in this browser.`);return}let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=e.name,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),0),t()}catch(e){q(e instanceof Error?e.message:`Failed to build diagnostics. Please try again.`)}finally{Q(!1)}}},children:`Download diagnostics`}):(0,O.jsx)(a,{variant:`primary`,leftIcon:(0,O.jsx)(re,{}),onClick:async()=>{if(!(!Se||$)){q(null),Q(!0);try{let e=z&&M!==`feature_request`?await pe(U,c??null,y()?Y?d??null:null:d??null,{diagnosticsProvider:x,doctorSessionId:f,extraLogFiles:Te}):null;await Z.mutateAsync({headers:{"Content-Type":null},body:{message:F.trim(),classification:ue[M],email:L.trim(),client:de(),client_version:void 0,...c?{assistant_id:c}:{},...l?{assistant_version:l}:{},...f?{doctor_session_id:f}:{},...e?{logs_file:e}:{},...G.length?{attachments:G}:{}},bodySerializer:e=>{let t=new FormData;for(let[n,r]of Object.entries(e))if(r!=null){if(n===`attachments`&&Array.isArray(r)){for(let e of r)t.append(`attachments`,e);continue}r instanceof Blob?t.append(n,r):t.append(n,String(r))}return t}}),o?.(),t()}catch(e){q(e instanceof Error?e.message:`Failed to submit feedback. Please try again.`)}finally{Q(!1)}}},disabled:!Se,children:`Submit`})]})})]})}),document.body):null}function me({option:e,isSelected:t,onSelect:n}){let r=e.icon;return(0,O.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":t,className:`flex items-center gap-1.5 rounded-full border px-3 py-1.5 text-left transition-colors`,style:{borderColor:t?`var(--primary-base)`:`var(--border-base)`,backgroundColor:t?`color-mix(in oklab, var(--primary-base) 10%, transparent)`:`transparent`},children:[(0,O.jsx)(r,{className:`h-3.5 w-3.5 shrink-0`,style:{color:t?`var(--primary-base)`:`var(--content-secondary)`}}),(0,O.jsx)(`span`,{className:`text-body-small-default`,style:{color:t?`var(--primary-base)`:`var(--content-default)`},children:e.label})]})}function he({file:e,onRemove:t}){let n=e.type.startsWith(`image/`),r=(0,w.useMemo)(()=>n?URL.createObjectURL(e):null,[e,n]);return(0,w.useEffect)(()=>{if(r)return()=>URL.revokeObjectURL(r)},[r]),(0,O.jsxs)(`div`,{className:`relative flex h-16 w-16 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)]`,title:e.name,children:[n&&r?(0,O.jsx)(`img`,{src:r,alt:e.name,className:`h-full w-full object-cover`}):(0,O.jsx)(p,{className:`h-5 w-5 text-[var(--content-secondary)]`}),(0,O.jsx)(a,{variant:`ghost`,size:`compact`,iconOnly:(0,O.jsx)(m,{}),onClick:t,"aria-label":`Remove ${e.name}`,className:`absolute top-0.5 right-0.5 h-4 w-4 rounded-full bg-black/60 text-white hover:bg-black/70`,tintColor:`#fff`})]})}export{D as n,H as t};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-Dy5001j6.js";import{l as r,t as i,u as a}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as o}from"./jsx-runtime-D3ZM-ToX.js";import{t as s}from"./typography-DEI9Ra9z.js";import{t as c}from"./arrow-left-W84B6oJL.js";import{t as l}from"./chevron-right-CANAtgGn.js";import{c as u}from"./src-Da9g8qsW.js";import{n as d,t as f}from"./runtime-upgrade-banner-DjFuJawk.js";import{t as p}from"./is-electron-DIlIrdJX.js";import{d as m}from"./routes-DrfnNoYS.js";import{n as h}from"./use-is-mobile-MmHo-OM6.js";import{t as g}from"./use-edge-swipe-back-Dk2xXjh4.js";import{t as _}from"./link-click-aVk_YdAp.js";var v=e(t(),1),y=o();function b({sidebar:e,children:t,actions:o,backHref:l,title:u=`Settings`,menuRoute:_=m.settings.root}){let{pathname:b}=r(),x=a(),S=b===_,C=h(),w=(0,v.useRef)(null),T=(0,v.useRef)(null);(0,v.useLayoutEffect)(()=>{T.current?.scrollTo(0,0)},[b]);let E=S?l:_;g({containerRef:w,onBack:(0,v.useCallback)(()=>{x(E)},[x,E]),enabled:C,navKey:b});let D=p(),O=S?`Back from ${u}`:`Back to ${u} menu`,k=(0,y.jsx)(n,{variant:`ghost`,iconOnly:(0,y.jsx)(c,{}),"aria-label":O,tintColor:`var(--content-secondary)`,onClick:()=>x(E)}),A=(0,y.jsx)(n,{asChild:!0,variant:`outlined`,"aria-label":`Back from ${u}`,className:`h-8 w-8 px-0`,tintColor:`var(--content-secondary)`,children:(0,y.jsx)(i,{to:l,className:`flex items-center justify-center no-underline`,children:(0,y.jsx)(c,{size:16,"aria-hidden":`true`})})});return(0,y.jsxs)(`div`,{ref:w,className:`flex h-full min-h-0 w-full flex-1 flex-col gap-4 p-4 sm:p-6 md:gap-0`,style:{paddingTop:D?`3.75rem`:`1rem`},children:[(0,y.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 md:hidden`,children:[k,(0,y.jsx)(s,{as:`h1`,variant:`body-large-default`,className:`flex-1 truncate text-center`,style:{color:`var(--content-tertiary)`,lineHeight:1.4},children:u}),(0,y.jsx)(`div`,{className:`h-10 w-10 shrink-0`,"aria-hidden":`true`})]}),D?(0,y.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 pb-4 empty:hidden`,children:[(0,y.jsx)(d,{placement:`electron`,className:`px-0 pt-0`}),(0,y.jsx)(f,{placement:`electron`,className:`px-0 pt-0`})]}):null,(0,y.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden md:rounded-[12px] md:border md:border-[var(--border-base)] md:bg-[var(--surface-overlay)]`,children:[(0,y.jsxs)(`div`,{className:`hidden shrink-0 items-center justify-between gap-4 px-6 py-5 md:flex`,children:[(0,y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[A,(0,y.jsx)(`h1`,{className:`text-title-large truncate`,style:{color:`var(--content-emphasised)`,lineHeight:1.2},children:u})]}),(0,y.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:o})]}),(0,y.jsxs)(`div`,{className:`flex min-h-0 flex-1 overflow-hidden`,children:[(0,y.jsx)(`aside`,{className:`hidden w-64 shrink-0 overflow-y-auto md:block`,"aria-label":`${u} navigation`,children:e}),S?(0,y.jsx)(`div`,{className:`flex min-w-0 min-h-0 flex-1 flex-col overflow-y-auto overflow-x-hidden pb-6 md:hidden`,children:e}):null,(0,y.jsx)(`main`,{ref:T,className:`min-w-0 min-h-0 flex-1 flex-col gap-4 overflow-y-auto overflow-x-hidden pb-6 md:flex md:px-6 md:pt-0 ${S?`hidden`:`flex`}`,children:t})]})]})]})}function x({items:e,bottomItems:t,indexPath:n}){let{pathname:i}=r(),o=a(),s=h(),c=(e,t,r)=>{let{href:a,onSelect:c}=e,d=a!=null&&(i===a||i.startsWith(a+`/`)||!s&&r&&n!=null&&i===n);return(0,y.jsxs)(v.Fragment,{children:[(0,y.jsx)(u.Item,{icon:e.icon,label:e.label,active:d,trailingIcon:a==null?void 0:l,trailingIconClassName:a==null?void 0:`md:hidden`,href:a,onSelect:c,onClick:a==null?void 0:e=>{_(e)||(e.preventDefault(),o(a))}}),!t&&(0,y.jsx)(`div`,{role:`presentation`,"aria-hidden":!0,className:`my-2 h-px w-full bg-[var(--border-base)] md:hidden`})]},e.id)};return(0,y.jsxs)(`nav`,{"aria-label":`Sidebar navigation`,className:`flex min-h-full flex-col md:gap-2 md:px-6 md:pb-4`,children:[e.map((n,r)=>c(n,r===e.length-1&&!t?.length,r===0)),t&&t.length>0&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`div`,{className:`flex-1`}),(0,y.jsx)(`div`,{role:`presentation`,"aria-hidden":!0,className:`mx-0 my-2 h-px w-full bg-[var(--border-base)] md:mx-0`}),t.map((e,n)=>c(e,n===t.length-1,!1))]})]})}export{b as n,x as t};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-BwFudwM5.js";import{l as r,t as i,u as a}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as o}from"./jsx-runtime-D3ZM-ToX.js";import{t as s}from"./typography-DEI9Ra9z.js";import{t as c}from"./arrow-left-W84B6oJL.js";import{t as l}from"./chevron-right-CANAtgGn.js";import{c as u}from"./src-CwGlaCIx.js";import{n as d,t as f}from"./runtime-upgrade-banner-Blp8EyfL.js";import{t as p}from"./is-electron-DIlIrdJX.js";import{d as m}from"./routes-DrfnNoYS.js";import{n as h}from"./use-is-mobile-MmHo-OM6.js";import{t as g}from"./use-edge-swipe-back-Dk2xXjh4.js";import{t as _}from"./link-click-aVk_YdAp.js";var v=e(t(),1),y=o();function b({sidebar:e,children:t,actions:o,backHref:l,title:u=`Settings`,menuRoute:_=m.settings.root}){let{pathname:b}=r(),x=a(),S=b===_,C=h(),w=(0,v.useRef)(null),T=(0,v.useRef)(null);(0,v.useLayoutEffect)(()=>{T.current?.scrollTo(0,0)},[b]);let E=S?l:_;g({containerRef:w,onBack:(0,v.useCallback)(()=>{x(E)},[x,E]),enabled:C,navKey:b});let D=p(),O=S?`Back from ${u}`:`Back to ${u} menu`,k=(0,y.jsx)(n,{variant:`ghost`,iconOnly:(0,y.jsx)(c,{}),"aria-label":O,tintColor:`var(--content-secondary)`,onClick:()=>x(E)}),A=(0,y.jsx)(n,{asChild:!0,variant:`outlined`,"aria-label":`Back from ${u}`,className:`h-8 w-8 px-0`,tintColor:`var(--content-secondary)`,children:(0,y.jsx)(i,{to:l,className:`flex items-center justify-center no-underline`,children:(0,y.jsx)(c,{size:16,"aria-hidden":`true`})})});return(0,y.jsxs)(`div`,{ref:w,className:`flex h-full min-h-0 w-full flex-1 flex-col gap-4 p-4 sm:p-6 md:gap-0`,style:{paddingTop:D?`3.75rem`:`1rem`},children:[(0,y.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 md:hidden`,children:[k,(0,y.jsx)(s,{as:`h1`,variant:`body-large-default`,className:`flex-1 truncate text-center`,style:{color:`var(--content-tertiary)`,lineHeight:1.4},children:u}),(0,y.jsx)(`div`,{className:`h-10 w-10 shrink-0`,"aria-hidden":`true`})]}),D?(0,y.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 pb-4 empty:hidden`,children:[(0,y.jsx)(d,{placement:`electron`,className:`px-0 pt-0`}),(0,y.jsx)(f,{placement:`electron`,className:`px-0 pt-0`})]}):null,(0,y.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden md:rounded-[12px] md:border md:border-[var(--border-base)] md:bg-[var(--surface-overlay)]`,children:[(0,y.jsxs)(`div`,{className:`hidden shrink-0 items-center justify-between gap-4 px-6 py-5 md:flex`,children:[(0,y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[A,(0,y.jsx)(`h1`,{className:`text-title-large truncate`,style:{color:`var(--content-emphasised)`,lineHeight:1.2},children:u})]}),(0,y.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:o})]}),(0,y.jsxs)(`div`,{className:`flex min-h-0 flex-1 overflow-hidden`,children:[(0,y.jsx)(`aside`,{className:`hidden w-64 shrink-0 overflow-y-auto md:block`,"aria-label":`${u} navigation`,children:e}),S?(0,y.jsx)(`div`,{className:`flex min-w-0 min-h-0 flex-1 flex-col overflow-y-auto overflow-x-hidden pb-6 md:hidden`,children:e}):null,(0,y.jsx)(`main`,{ref:T,className:`min-w-0 min-h-0 flex-1 flex-col gap-4 overflow-y-auto overflow-x-hidden pb-6 md:flex md:px-6 md:pt-0 ${S?`hidden`:`flex`}`,children:t})]})]})]})}function x({items:e,bottomItems:t,indexPath:n}){let{pathname:i}=r(),o=a(),s=h(),c=(e,t,r)=>{let{href:a,onSelect:c}=e,d=a!=null&&(i===a||i.startsWith(a+`/`)||!s&&r&&n!=null&&i===n);return(0,y.jsxs)(v.Fragment,{children:[(0,y.jsx)(u.Item,{icon:e.icon,label:e.label,active:d,trailingIcon:a==null?void 0:l,trailingIconClassName:a==null?void 0:`md:hidden`,href:a,onSelect:c,onClick:a==null?void 0:e=>{_(e)||(e.preventDefault(),o(a))}}),!t&&(0,y.jsx)(`div`,{role:`presentation`,"aria-hidden":!0,className:`my-2 h-px w-full bg-[var(--border-base)] md:hidden`})]},e.id)};return(0,y.jsxs)(`nav`,{"aria-label":`Sidebar navigation`,className:`flex min-h-full flex-col md:gap-2 md:px-6 md:pb-4`,children:[e.map((n,r)=>c(n,r===e.length-1&&!t?.length,r===0)),t&&t.length>0&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`div`,{className:`flex-1`}),(0,y.jsx)(`div`,{role:`presentation`,"aria-hidden":!0,className:`mx-0 my-2 h-px w-full bg-[var(--border-base)] md:mx-0`}),t.map((e,n)=>c(e,n===t.length-1,!1))]})]})}export{b as n,x as t};