@vellumai/web 0.11.0-staging.1 → 0.11.0-staging.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 (148) hide show
  1. package/dist/assets/access-DS79PSR3.js +1 -0
  2. package/dist/assets/{account-page-BQkbkIBf.js → account-page-D3ERiewh.js} +1 -1
  3. package/dist/assets/{acp-run-actions-BWR9i8MT.js → acp-run-actions-BH8wuBAL.js} +1 -1
  4. package/dist/assets/{acp-run-detail-panel-np07jHCY.js → acp-run-detail-panel-dqVK6rPq.js} +1 -1
  5. package/dist/assets/{activity-steps-panel-DA5HdB61.js → activity-steps-panel-xxl2hu3E.js} +1 -1
  6. package/dist/assets/{add-credential-modal-rP3DdyDH.js → add-credential-modal-CY_--m8L.js} +1 -1
  7. package/dist/assets/{ai-page-eBXLZw6t.js → ai-page-B02NwVRu.js} +1 -1
  8. package/dist/assets/{api-CI6Y6DLb.js → api-C3QSs67k.js} +1 -1
  9. package/dist/assets/{api-BlN0EOWF.js → api-LG8zI3nK.js} +1 -1
  10. package/dist/assets/{api-key-screen-B6aLgYrf.js → api-key-screen-CvBdN6Ae.js} +1 -1
  11. package/dist/assets/{app-card-A7PMnlAT.js → app-card-CAaFL1oB.js} +1 -1
  12. package/dist/assets/{assistant-feature-flag-store-DV5Zr1c4.js → assistant-feature-flag-store-CAdgpPiS.js} +1 -1
  13. package/dist/assets/{assistant-status-panel-CxMEVjFY.js → assistant-status-panel-BTnD-jhG.js} +1 -1
  14. package/dist/assets/{auth-store-BW4V6iLb.js → auth-store-5qq59BAN.js} +1 -1
  15. package/dist/assets/{avatar-random-BiEMZGl7.js → avatar-random-BMSYTcJK.js} +1 -1
  16. package/dist/assets/{background-task-actions-Y-aaTGGd.js → background-task-actions-DmP5s0oO.js} +1 -1
  17. package/dist/assets/{background-task-detail-panel-CGAeD1Ym.js → background-task-detail-panel-BCYAElGc.js} +1 -1
  18. package/dist/assets/{billing-page-5GkNMPN6.js → billing-page-B5j5TW_S.js} +1 -1
  19. package/dist/assets/{bookmarks-page-B1-9GBEx.js → bookmarks-page-D_Jr-a4Q.js} +1 -1
  20. package/dist/assets/build-state-m0LQ5Iis.js +1 -0
  21. package/dist/assets/{channels-page-route-BLy5uT8z.js → channels-page-route-BYP9SOw5.js} +1 -1
  22. package/dist/assets/{chat-avatar-DQx81apI.js → chat-avatar-CvEA6z0H.js} +1 -1
  23. package/dist/assets/{chat-markdown-message-CdM44BjA.js → chat-markdown-message-rxPKNeTx.js} +1 -1
  24. package/dist/assets/{checkout-continuation-DIMnSvv3.js → checkout-continuation-U3Pd2nxi.js} +1 -1
  25. package/dist/assets/{checkout-page-BZQpdPLT.js → checkout-page-C5_9GbP-.js} +1 -1
  26. package/dist/assets/{client-feature-flag-store-BDrcV52r.js → client-feature-flag-store-CMncoan8.js} +1 -1
  27. package/dist/assets/{command-palette-window-page-DAC710zo.js → command-palette-window-page-gq0zowBe.js} +1 -1
  28. package/dist/assets/{contacts-page-route-BF8J2JDt.js → contacts-page-route-DNoCUXE7.js} +1 -1
  29. package/dist/assets/{conversation-cache-DU44A0zv.js → conversation-cache-DKvwwWNo.js} +1 -1
  30. package/dist/assets/{conversation-list-fetchers-DLZho4T7.js → conversation-list-fetchers-DM-Y61u5.js} +1 -1
  31. package/dist/assets/conversation-navigation-DsN0hcpL.js +1 -0
  32. package/dist/assets/{conversation-queries-Bvh4bAZ6.js → conversation-queries-CWvK6RLK.js} +1 -1
  33. package/dist/assets/{credentials-page-DzlUvhn4.js → credentials-page-BsJFuOc9.js} +1 -1
  34. package/dist/assets/{debug-page-TgklOyxq.js → debug-page-BziypDgA.js} +1 -1
  35. package/dist/assets/{deploy-dialogs-Day3_9Lh.js → deploy-dialogs-DZSd5o9b.js} +1 -1
  36. package/dist/assets/{deploy-store-Brp7LoZ_.js → deploy-store-D6snB1j5.js} +1 -1
  37. package/dist/assets/{developer-page-BobJIDnJ.js → developer-page-QMFEIyBS.js} +1 -1
  38. package/dist/assets/{document-viewer-container-BIS1iPUz.js → document-viewer-container-B7TEDeV0.js} +1 -1
  39. package/dist/assets/{document-viewer-page-CcGTGI8C.js → document-viewer-page-3Eq8L562.js} +1 -1
  40. package/dist/assets/{emails-page-CbAcUM70.js → emails-page-Wr4wPSYl.js} +1 -1
  41. package/dist/assets/{eye-bbox-DU39FEUp.js → eye-bbox-C_V87iLg.js} +1 -1
  42. package/dist/assets/feature-flag-catalog-I9-eJQP_.js +1 -0
  43. package/dist/assets/{first-run-scope-DKYDP-Kz.js → first-run-scope-CL5YbC3b.js} +1 -1
  44. package/dist/assets/{general-page-CtfWmXZi.js → general-page-lbkufqHg.js} +1 -1
  45. package/dist/assets/{get-memory-stats-DMSpgqW_.js → get-memory-stats-BCYSpBF6.js} +1 -1
  46. package/dist/assets/hatching-screen-D81diZoa.js +1 -0
  47. package/dist/assets/{home-page-route-BV2GBxZi.js → home-page-route-CHe8eoLz.js} +1 -1
  48. package/dist/assets/{hosting-screen-CTtZrpXi.js → hosting-screen-D9atAksQ.js} +1 -1
  49. package/dist/assets/{identity-page-route-DsU3eoey.js → identity-page-route-CK3YsXCN.js} +1 -1
  50. package/dist/assets/{index-DMFNBbtE.js → index-0f48hi7h.js} +1 -1
  51. package/dist/assets/{inspect-page-BcTmA6nR.js → inspect-page-COwvbHtX.js} +1 -1
  52. package/dist/assets/{installed-plugins-query-C29LGAEV.js → installed-plugins-query-Cgek0q7G.js} +1 -1
  53. package/dist/assets/{integrations-page-CTST1yxp.js → integrations-page-CJOBwxXp.js} +1 -1
  54. package/dist/assets/{invalidate-plugin-queries-DamxiwYv.js → invalidate-plugin-queries-C3NTXkCX.js} +1 -1
  55. package/dist/assets/{latest-assistant-text-C0pZSmc9.js → latest-assistant-text-DOepZ_Io.js} +2 -2
  56. package/dist/assets/{library-detail-page-CI4p4bVi.js → library-detail-page-DVwI94NZ.js} +1 -1
  57. package/dist/assets/{library-page-SAKHIHZb.js → library-page-CNA794WY.js} +1 -1
  58. package/dist/assets/{local-runtime-upgrade-CoFpjlw3.js → local-runtime-upgrade-Bqn3d7Q7.js} +1 -1
  59. package/dist/assets/{login-flow-B4pa-3II.js → login-flow-CD9tyuFG.js} +1 -1
  60. package/dist/assets/{login-page-CVnwfJ3R.js → login-page-BNStrcnU.js} +1 -1
  61. package/dist/assets/{logout-page-km3RHlGI.js → logout-page-CpFeuLA_.js} +1 -1
  62. package/dist/assets/{logs-layout-D4Ubybh3.js → logs-layout-BUiPeZ4I.js} +1 -1
  63. package/dist/assets/{memory-page-route-JRgoyHnC.js → memory-page-route-C0cBV7HD.js} +1 -1
  64. package/dist/assets/{memory-router-playground-page-DvbF6E2-.js → memory-router-playground-page-D4UIq8mw.js} +1 -1
  65. package/dist/assets/{messages-Coz9buJR.js → messages-CFcAW4iz.js} +2 -2
  66. package/dist/assets/navigation-resolver-DPJxzx0h.js +1 -0
  67. package/dist/assets/{notifications-page-CWtQZnHw.js → notifications-page-ClfcJeLf.js} +1 -1
  68. package/dist/assets/{open-workspace-file-DNaU5wg2.js → open-workspace-file-DtK3a84K.js} +2 -2
  69. package/dist/assets/{page-empty-state-L-3_3LSi.js → page-empty-state-DT-tC1u6.js} +1 -1
  70. package/dist/assets/{personality-page-B621HU2-.js → personality-page-BJpW3UXD.js} +1 -1
  71. package/dist/assets/{plans-page-DAVt4mwm.js → plans-page-BDKqdYNM.js} +1 -1
  72. package/dist/assets/{platform-login-notice-BaCrIk0m.js → platform-login-notice-CdYiKsE8.js} +1 -1
  73. package/dist/assets/{platform-loopback-page-jBGJSmyh.js → platform-loopback-page-D0gXCm2S.js} +1 -1
  74. package/dist/assets/{privacy-page-DZEcN0PF.js → privacy-page-B0QN4qZO.js} +1 -1
  75. package/dist/assets/privacy-screen-vp4uUpm6.js +1 -0
  76. package/dist/assets/{provider-callback-page-BeDYWdc_.js → provider-callback-page-BH6DES7c.js} +1 -1
  77. package/dist/assets/{provider-key-1rLTitmu.js → provider-key-D2Nsf9zh.js} +1 -1
  78. package/dist/assets/{provider-signup-page-CVKaVhiB.js → provider-signup-page-BAPcG_iJ.js} +1 -1
  79. package/dist/assets/{react-query.gen-r3I6j8-1.js → react-query.gen-C5c1Acuq.js} +1 -1
  80. package/dist/assets/{research-onboarding-route-DwRSK3R4.js → research-onboarding-route-CFL3q__m.js} +2 -2
  81. package/dist/assets/{retire-confirm-dialog-BuS97P1t.js → retire-confirm-dialog-CsSY2-T8.js} +1 -1
  82. package/dist/assets/{review-terms-screen-CTNEkesk.js → review-terms-screen-BhyRQBjl.js} +1 -1
  83. package/dist/assets/{risk-DmicWnoH.js → risk-CdT92Vqr.js} +1 -1
  84. package/dist/assets/{routes-Bzk5oLRb.js → routes-CaP5Tqj7.js} +14 -14
  85. package/dist/assets/{runtime-upgrade-banner-DPMpuefs.js → runtime-upgrade-banner-DPqzKtZU.js} +1 -1
  86. package/dist/assets/{schedules-DIpn4jGl.js → schedules-6hzhR_C_.js} +1 -1
  87. package/dist/assets/{schedules-page-A9pwMmex.js → schedules-page-DVnUeaoB.js} +1 -1
  88. package/dist/assets/{sdk.gen-BVAVE6A_.js → sdk.gen-BHZ0fJla.js} +1 -1
  89. package/dist/assets/{select-assistant-screen-BPXqMOtp.js → select-assistant-screen-CVV3iqMy.js} +1 -1
  90. package/dist/assets/{settings-layout-CrOIplp2.js → settings-layout-B_4PKJr9.js} +1 -1
  91. package/dist/assets/{settings-navigation-Ccol_TOM.js → settings-navigation-CSG7jiyJ.js} +1 -1
  92. package/dist/assets/{share-feedback-modal-IyuFKIAE.js → share-feedback-modal-BoWCg4KH.js} +1 -1
  93. package/dist/assets/{sidebar-tree-_HwQiPki.js → sidebar-tree-C_PPNHe5.js} +1 -1
  94. package/dist/assets/{signup-page-D44Im_Pf.js → signup-page-D0S_8XYw.js} +1 -1
  95. package/dist/assets/{site-favicon-DzmWythg.js → site-favicon-BB1pYWLF.js} +1 -1
  96. package/dist/assets/{skill-detail-page-HW_A5KMG.js → skill-detail-page-CTobyK6L.js} +1 -1
  97. package/dist/assets/{skill-detail-panel-CrwVImjM.js → skill-detail-panel-CNzionF7.js} +1 -1
  98. package/dist/assets/{skills-Djg056es.js → skills-Cum1XWT2.js} +1 -1
  99. package/dist/assets/{sound-manager-DlaDOZ8r.js → sound-manager-Bx-OcMAz.js} +1 -1
  100. package/dist/assets/{sounds-page-CtII5pFQ.js → sounds-page-C45-RF4i.js} +1 -1
  101. package/dist/assets/{subagent-detail-panel-tuHcbKyo.js → subagent-detail-panel-DyyMdaNO.js} +1 -1
  102. package/dist/assets/subagent-store-MDi6lBXs.js +3 -0
  103. package/dist/assets/{superpowers-page-f4EChE6q.js → superpowers-page-CaLzK5D-.js} +1 -1
  104. package/dist/assets/{system-events-page-oxkNLamU.js → system-events-page-DXAU01ZO.js} +1 -1
  105. package/dist/assets/{theme-stage-page-5wL3M-2c.js → theme-stage-page-BDTCmutO.js} +1 -1
  106. package/dist/assets/{tool-detail-panel-BqhEUAMJ.js → tool-detail-panel-DFrWEWKG.js} +1 -1
  107. package/dist/assets/{transcript-message-body-shared-D3uxHQt5.js → transcript-message-body-shared-D9_d2c2X.js} +1 -1
  108. package/dist/assets/{upgrade-cancel-page-BRA25NVC.js → upgrade-cancel-page-eiJEAvFz.js} +1 -1
  109. package/dist/assets/{upgrade-success-page-BlZDEVkm.js → upgrade-success-page-Cb1Gl4MM.js} +1 -1
  110. package/dist/assets/{use-app-theme-CGie3Dma.js → use-app-theme-Dg8A6vPA.js} +1 -1
  111. package/dist/assets/{use-assistant-avatar-IcRIy2-c.js → use-assistant-avatar-bwLHcMz4.js} +1 -1
  112. package/dist/assets/{use-assistant-capability-C8pZDYlr.js → use-assistant-capability-CDS7GbSO.js} +1 -1
  113. package/dist/assets/{use-assistant-identity-details-CE6-JkNE.js → use-assistant-identity-details-9JRWxXTQ.js} +1 -1
  114. package/dist/assets/{use-bookmarks-CIhaNp5_.js → use-bookmarks-CK-nOiT-.js} +1 -1
  115. package/dist/assets/{use-checkout-dismiss-refresh-BpmG1OQ0.js → use-checkout-dismiss-refresh-CqGR_OsB.js} +1 -1
  116. package/dist/assets/{use-command-palette-sections-CXU-OW-6.js → use-command-palette-sections-CkpUaAKs.js} +1 -1
  117. package/dist/assets/{use-edit-app-CYK9-rGD.js → use-edit-app-B_Nequzs.js} +1 -1
  118. package/dist/assets/{use-invite-link-dialog-DdiGDpLS.js → use-invite-link-dialog-CPPOduk8.js} +1 -1
  119. package/dist/assets/{use-ios-app-nudge-t0SIn8xv.js → use-ios-app-nudge-B-ojl-b1.js} +1 -1
  120. package/dist/assets/{use-is-org-ready-D0q2NIZU.js → use-is-org-ready-C5xlYywh.js} +1 -1
  121. package/dist/assets/{use-onboarding-login-BmYpiSIt.js → use-onboarding-login-DI5gvqEG.js} +1 -1
  122. package/dist/assets/{use-platform-assistant-id-Cm5BfOD8.js → use-platform-assistant-id-DOsSt6k1.js} +1 -1
  123. package/dist/assets/{use-platform-gate-bFyCaLbM.js → use-platform-gate-C65D14xY.js} +1 -1
  124. package/dist/assets/{use-save-twilio-credentials-Bm-WW_5V.js → use-save-twilio-credentials-c9xG9RPK.js} +1 -1
  125. package/dist/assets/{use-skill-actions-C4J1lG_r.js → use-skill-actions-BAAx1Eia.js} +1 -1
  126. package/dist/assets/{use-skill-detail-files-BKtCag3o.js → use-skill-detail-files-BvOKvY0-.js} +1 -1
  127. package/dist/assets/{use-sticky-profiles-mC9bd8xU.js → use-sticky-profiles-CdWX0mgI.js} +1 -1
  128. package/dist/assets/{use-subagent-card-data-Dp1wCoRB.js → use-subagent-card-data-DHuNtSy9.js} +1 -1
  129. package/dist/assets/{utils-BCDvGOqU.js → utils-B0rBxtYP.js} +1 -1
  130. package/dist/assets/{viewer-store-Ct0SDE-n.js → viewer-store-DLk-jp8U.js} +1 -1
  131. package/dist/assets/{voice-list-IdN1mqlX.js → voice-list-CW8mzaHU.js} +1 -1
  132. package/dist/assets/{voice-page-CxWJ-zo7.js → voice-page-0zsCIOdT.js} +1 -1
  133. package/dist/assets/{voice-picker-modal-BHRanF0C.js → voice-picker-modal-PdsZwrsV.js} +1 -1
  134. package/dist/assets/{welcome-screen-jOvMiW_R.js → welcome-screen-DwOAZpZS.js} +1 -1
  135. package/dist/assets/{workflow-store-CMNMu-fc.js → workflow-store-lM7yKbUo.js} +1 -1
  136. package/dist/assets/workspace-page-D4NvhCv1.js +1 -0
  137. package/dist/assets/{workspace-tree-query-COH0vdQ-.js → workspace-tree-query-B1A-efgV.js} +1 -1
  138. package/dist/index.html +61 -61
  139. package/package.json +1 -1
  140. package/dist/assets/access-CHoOc28F.js +0 -1
  141. package/dist/assets/build-state-DaLynPsy.js +0 -1
  142. package/dist/assets/conversation-navigation-Bo95jhXQ.js +0 -1
  143. package/dist/assets/feature-flag-catalog-TjLF99gJ.js +0 -1
  144. package/dist/assets/hatching-screen-Btkqf3MF.js +0 -1
  145. package/dist/assets/navigation-resolver-D4jPigYv.js +0 -1
  146. package/dist/assets/privacy-screen-DXkQbNvk.js +0 -1
  147. package/dist/assets/subagent-store-CQKOOAm6.js +0 -3
  148. package/dist/assets/workspace-page-BZBNul96.js +0 -1
@@ -1 +1 @@
1
- import{i as e}from"./local-settings-C-dW2vkq.js";import{t}from"./button-Dy5001j6.js";import{t as n}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as r}from"./jsx-runtime-D3ZM-ToX.js";import{t as i}from"./cn-CJf7MmLX.js";import{n as a,t as o}from"./middleware-HE0NLvPl.js";import"./src-te3YTBG-.js";import{t as s}from"./modal-BR4CUFBd.js";import{n as c,t as l}from"./create-selectors-Qo7kcikX.js";import{t as u}from"./is-electron-m5eeGBnd.js";import{u as d}from"./routes-D9sNqB_o.js";import{a as f,n as p}from"./voice-list-IdN1mqlX.js";var m=`vellum:voice:inputDeviceId`;function h(){return e(m,``)}function g(){let e=h();return{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,...e?{deviceId:{exact:e}}:{}}}async function _(){let e=g();try{return await navigator.mediaDevices.getUserMedia({audio:e})}catch(t){if(e.deviceId&&t instanceof DOMException&&t.name===`OverconstrainedError`){let{deviceId:t,...n}=e;return navigator.mediaDevices.getUserMedia({audio:n})}throw t}}var v=`vellum:voice:activationKey`,y={kind:`modifierOnly`,modifiers:[`control`]},b={kind:`modifierOnly`,modifiers:[`function`]},x=[`function`,`control`,`option`,`shift`,`command`],S={function:`Fn`,control:`Ctrl`,option:`Alt`,shift:`Shift`,command:`Cmd`};function C(e){return Array.from(new Set(e)).sort((e,t)=>x.indexOf(e)-x.indexOf(t))}function w(e){return C(e).map(e=>S[e]).join(`+`)}function T(e){if(e.kind===`off`)return`Off`;if(e.kind===`modifierOnly`)return w(e.modifiers);let t=w(e.modifiers);return t?`${t}+${e.label}`:e.label}function E(e,t){if(e.kind!==t.kind)return!1;if(e.kind===`off`||t.kind===`off`)return!0;let n=C(e.modifiers),r=C(t.modifiers);return n.length!==r.length||n.some((e,t)=>e!==r[t])?!1:e.kind===`key`&&t.kind===`key`?e.label===t.label:!0}function D(e){return JSON.stringify(e)}function O(e){return e.kind===`modifierOnly`&&e.modifiers.length===1&&e.modifiers[0]===`function`}function k(e){return typeof e==`string`&&x.includes(e)}function A(e,t){let n=e.filter(k);return t.preserveFunction&&n.includes(`function`)?b.modifiers:C(t.preserveFunction?n:n.filter(e=>e!==`function`))}function j(e,t={}){if(!e)return y;if(e===`fn`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?b.modifiers:y.modifiers};if(e===`ctrl`)return y;if(e===`fn_shift`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?b.modifiers:[`shift`]};if(e===`off`)return{kind:`off`};try{let n=JSON.parse(e);if(n.kind===`off`)return{kind:`off`};if(n.kind===`modifierOnly`&&Array.isArray(n.modifiers)){let e=A(n.modifiers,t);return e.length===0?y:{kind:`modifierOnly`,modifiers:e}}if(n.kind===`key`&&typeof n.label==`string`&&Array.isArray(n.modifiers))return{kind:`key`,label:n.label,modifiers:A(n.modifiers,t)}}catch{}return y}function M(e){let t=[];return e.ctrlKey&&t.push(`control`),e.altKey&&t.push(`option`),e.shiftKey&&t.push(`shift`),e.metaKey&&t.push(`command`),t}function N(e){return e===`Control`||e===`Alt`||e===`Shift`||e===`Meta`||e===`Fn`}function P(e,t){if(e.length!==t.length)return!1;let n=C(e),r=C(t);return n.every((e,t)=>e===r[t])}function F(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=M(e),r=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?N(e.key)?P(n,r):!1:(e.key.length===1?e.key.toUpperCase():e.key)===t.label?P(n,r):!1}function I(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?!!(e.key===`Control`&&n.includes(`control`)||e.key===`Alt`&&n.includes(`option`)||e.key===`Shift`&&n.includes(`shift`)||e.key===`Meta`&&n.includes(`command`)):(e.key.length===1?e.key.toUpperCase():e.key)===t.label}function L(){return u()}function R(){return u()&&typeof window.vellum?.helper?.hotkey?.fnPushToTalk==`function`&&typeof window.vellum?.helper?.hotkey?.onEvent==`function`}async function z(e){if(!R())return!1;try{return(await window.vellum.helper.hotkey.fnPushToTalk(e)).ok}catch{return!1}}function B(e){return R()?window.vellum.helper.hotkey.onEvent(e):()=>void 0}var V=1200,H=3e3,U=`medium`,W={high:100,medium:250,low:600};function G(e){return W[e]}function K(e){return Number.isFinite(e)?Math.round(Math.min(H,Math.max(500,e))):V}var q={showUserTranscript:!1,showAssistantTranscript:!1,firstRunSeen:!1,pauseBeforeReplyMs:null,interruptSensitivity:null},J=`vellum:voice-prefs`,Y=c()(a((e,t)=>({...q,setShowUserTranscript:t=>e({showUserTranscript:t}),setShowAssistantTranscript:t=>e({showAssistantTranscript:t}),markFirstRunSeen:()=>{t().firstRunSeen||e({firstRunSeen:!0})},setPauseBeforeReplyMs:t=>e({pauseBeforeReplyMs:t===null?null:K(t)}),setInterruptSensitivity:t=>e({interruptSensitivity:t})}),{name:J,storage:o(()=>localStorage),partialize:e=>({showUserTranscript:e.showUserTranscript,showAssistantTranscript:e.showAssistantTranscript,firstRunSeen:e.firstRunSeen,pauseBeforeReplyMs:e.pauseBeforeReplyMs,interruptSensitivity:e.interruptSensitivity})})),X=l(Y);typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===J&&Y.persist.rehydrate()});var Z=r();function Q({className:e}){return(0,Z.jsxs)(`p`,{className:i(`text-label-small-default text-[var(--content-tertiary)]`,e),children:[`Speech providers, transcription, and API keys live in`,` `,(0,Z.jsx)(n,{to:`${d.settings.ai}#text-to-speech`,className:`text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:`Models & Services`}),`.`]})}function $({assistantId:e,open:t,onOpenChange:n}){return(0,Z.jsx)(s.Root,{open:t,onOpenChange:n,children:(0,Z.jsx)(s.Content,{size:`md`,children:(0,Z.jsx)(ee,{assistantId:e,onDone:()=>n(!1)})})})}function ee({assistantId:e,onDone:n}){let{available:r,currentModel:i,selectModel:a,selecting:o}=f(e);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(s.Header,{children:[(0,Z.jsx)(s.Title,{children:`Voices`}),r&&(0,Z.jsx)(s.Description,{children:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`})]}),(0,Z.jsx)(s.Body,{children:(0,Z.jsx)(p,{assistantId:e,filterBySource:!0,value:i,onChange:a})}),(0,Z.jsxs)(s.Footer,{className:`items-center justify-between gap-3`,children:[(0,Z.jsx)(Q,{}),(0,Z.jsx)(t,{variant:`primary`,onClick:n,disabled:o,className:`shrink-0`,children:`Done`})]})]})}export{C,_ as E,D as S,h as T,F as _,H as a,w as b,L as c,R as d,y as f,E as g,T as h,V as i,z as l,v as m,Q as n,G as o,b as p,U as r,X as s,$ as t,B as u,I as v,m as w,j as x,O as y};
1
+ import{i as e}from"./local-settings-C-dW2vkq.js";import{t}from"./button-Dy5001j6.js";import{t as n}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as r}from"./jsx-runtime-D3ZM-ToX.js";import{t as i}from"./cn-CJf7MmLX.js";import{n as a,t as o}from"./middleware-HE0NLvPl.js";import"./src-te3YTBG-.js";import{t as s}from"./modal-BR4CUFBd.js";import{n as c,t as l}from"./create-selectors-Qo7kcikX.js";import{t as u}from"./is-electron-m5eeGBnd.js";import{u as d}from"./routes-D9sNqB_o.js";import{a as f,n as p}from"./voice-list-CW8mzaHU.js";var m=`vellum:voice:inputDeviceId`;function h(){return e(m,``)}function g(){let e=h();return{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,...e?{deviceId:{exact:e}}:{}}}async function _(){let e=g();try{return await navigator.mediaDevices.getUserMedia({audio:e})}catch(t){if(e.deviceId&&t instanceof DOMException&&t.name===`OverconstrainedError`){let{deviceId:t,...n}=e;return navigator.mediaDevices.getUserMedia({audio:n})}throw t}}var v=`vellum:voice:activationKey`,y={kind:`modifierOnly`,modifiers:[`control`]},b={kind:`modifierOnly`,modifiers:[`function`]},x=[`function`,`control`,`option`,`shift`,`command`],S={function:`Fn`,control:`Ctrl`,option:`Alt`,shift:`Shift`,command:`Cmd`};function C(e){return Array.from(new Set(e)).sort((e,t)=>x.indexOf(e)-x.indexOf(t))}function w(e){return C(e).map(e=>S[e]).join(`+`)}function T(e){if(e.kind===`off`)return`Off`;if(e.kind===`modifierOnly`)return w(e.modifiers);let t=w(e.modifiers);return t?`${t}+${e.label}`:e.label}function E(e,t){if(e.kind!==t.kind)return!1;if(e.kind===`off`||t.kind===`off`)return!0;let n=C(e.modifiers),r=C(t.modifiers);return n.length!==r.length||n.some((e,t)=>e!==r[t])?!1:e.kind===`key`&&t.kind===`key`?e.label===t.label:!0}function D(e){return JSON.stringify(e)}function O(e){return e.kind===`modifierOnly`&&e.modifiers.length===1&&e.modifiers[0]===`function`}function k(e){return typeof e==`string`&&x.includes(e)}function A(e,t){let n=e.filter(k);return t.preserveFunction&&n.includes(`function`)?b.modifiers:C(t.preserveFunction?n:n.filter(e=>e!==`function`))}function j(e,t={}){if(!e)return y;if(e===`fn`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?b.modifiers:y.modifiers};if(e===`ctrl`)return y;if(e===`fn_shift`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?b.modifiers:[`shift`]};if(e===`off`)return{kind:`off`};try{let n=JSON.parse(e);if(n.kind===`off`)return{kind:`off`};if(n.kind===`modifierOnly`&&Array.isArray(n.modifiers)){let e=A(n.modifiers,t);return e.length===0?y:{kind:`modifierOnly`,modifiers:e}}if(n.kind===`key`&&typeof n.label==`string`&&Array.isArray(n.modifiers))return{kind:`key`,label:n.label,modifiers:A(n.modifiers,t)}}catch{}return y}function M(e){let t=[];return e.ctrlKey&&t.push(`control`),e.altKey&&t.push(`option`),e.shiftKey&&t.push(`shift`),e.metaKey&&t.push(`command`),t}function N(e){return e===`Control`||e===`Alt`||e===`Shift`||e===`Meta`||e===`Fn`}function P(e,t){if(e.length!==t.length)return!1;let n=C(e),r=C(t);return n.every((e,t)=>e===r[t])}function F(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=M(e),r=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?N(e.key)?P(n,r):!1:(e.key.length===1?e.key.toUpperCase():e.key)===t.label?P(n,r):!1}function I(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?!!(e.key===`Control`&&n.includes(`control`)||e.key===`Alt`&&n.includes(`option`)||e.key===`Shift`&&n.includes(`shift`)||e.key===`Meta`&&n.includes(`command`)):(e.key.length===1?e.key.toUpperCase():e.key)===t.label}function L(){return u()}function R(){return u()&&typeof window.vellum?.helper?.hotkey?.fnPushToTalk==`function`&&typeof window.vellum?.helper?.hotkey?.onEvent==`function`}async function z(e){if(!R())return!1;try{return(await window.vellum.helper.hotkey.fnPushToTalk(e)).ok}catch{return!1}}function B(e){return R()?window.vellum.helper.hotkey.onEvent(e):()=>void 0}var V=1200,H=3e3,U=`medium`,W={high:100,medium:250,low:600};function G(e){return W[e]}function K(e){return Number.isFinite(e)?Math.round(Math.min(H,Math.max(500,e))):V}var q={showUserTranscript:!1,showAssistantTranscript:!1,firstRunSeen:!1,pauseBeforeReplyMs:null,interruptSensitivity:null},J=`vellum:voice-prefs`,Y=c()(a((e,t)=>({...q,setShowUserTranscript:t=>e({showUserTranscript:t}),setShowAssistantTranscript:t=>e({showAssistantTranscript:t}),markFirstRunSeen:()=>{t().firstRunSeen||e({firstRunSeen:!0})},setPauseBeforeReplyMs:t=>e({pauseBeforeReplyMs:t===null?null:K(t)}),setInterruptSensitivity:t=>e({interruptSensitivity:t})}),{name:J,storage:o(()=>localStorage),partialize:e=>({showUserTranscript:e.showUserTranscript,showAssistantTranscript:e.showAssistantTranscript,firstRunSeen:e.firstRunSeen,pauseBeforeReplyMs:e.pauseBeforeReplyMs,interruptSensitivity:e.interruptSensitivity})})),X=l(Y);typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===J&&Y.persist.rehydrate()});var Z=r();function Q({className:e}){return(0,Z.jsxs)(`p`,{className:i(`text-label-small-default text-[var(--content-tertiary)]`,e),children:[`Speech providers, transcription, and API keys live in`,` `,(0,Z.jsx)(n,{to:`${d.settings.ai}#text-to-speech`,className:`text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:`Models & Services`}),`.`]})}function $({assistantId:e,open:t,onOpenChange:n}){return(0,Z.jsx)(s.Root,{open:t,onOpenChange:n,children:(0,Z.jsx)(s.Content,{size:`md`,children:(0,Z.jsx)(ee,{assistantId:e,onDone:()=>n(!1)})})})}function ee({assistantId:e,onDone:n}){let{available:r,currentModel:i,selectModel:a,selecting:o}=f(e);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(s.Header,{children:[(0,Z.jsx)(s.Title,{children:`Voices`}),r&&(0,Z.jsx)(s.Description,{children:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`})]}),(0,Z.jsx)(s.Body,{children:(0,Z.jsx)(p,{assistantId:e,filterBySource:!0,value:i,onChange:a})}),(0,Z.jsxs)(s.Footer,{className:`items-center justify-between gap-3`,children:[(0,Z.jsx)(Q,{}),(0,Z.jsx)(t,{variant:`primary`,onClick:n,disabled:o,className:`shrink-0`,children:`Done`})]})]})}export{C,_ as E,D as S,h as T,F as _,H as a,w as b,L as c,R as d,y as f,E as g,T as h,V as i,z as l,v as m,Q as n,G as o,b as p,U as r,X as s,$ as t,B as u,I as v,m as w,j as x,O as y};
@@ -1 +1 @@
1
- import{t as e}from"./button-Dy5001j6.js";import{u as t}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{l as r}from"./local-mode-BTovbt13.js";import{u as i}from"./routes-D9sNqB_o.js";import{t as a}from"./use-onboarding-login-BmYpiSIt.js";import{t as o}from"./onboarding-layout-DLs1hfp_.js";var s=n();function c(){let n=t(),{loading:c,error:l,login:u,cancel:d}=a();return(0,s.jsx)(o,{children:(0,s.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center px-6 pb-40 text-[var(--content-default)]`,children:(0,s.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:[(0,s.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Welcome to Vellum`}),(0,s.jsx)(`p`,{className:`mt-3 text-body-medium-lighter text-[var(--content-tertiary)]`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Your own personal intelligence is just a step away.`}),l&&(0,s.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:l}),(0,s.jsxs)(`div`,{className:`mt-10 flex w-full max-w-sm flex-col gap-3`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,s.jsx)(e,{variant:`primary`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:c?d:()=>void u(),children:c?`Cancel`:`Log In`}),(0,s.jsx)(e,{variant:`ghost`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:()=>{c&&d(),r()?n(i.selectAssistant):n(i.onboarding.hosting)},children:`Continue without account`})]})]})})})}export{c as WelcomeScreen};
1
+ import{t as e}from"./button-Dy5001j6.js";import{u as t}from"./chunk-5KNZJZUH-Bsoom5--.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{l as r}from"./local-mode-BTovbt13.js";import{u as i}from"./routes-D9sNqB_o.js";import{t as a}from"./use-onboarding-login-DI5gvqEG.js";import{t as o}from"./onboarding-layout-DLs1hfp_.js";var s=n();function c(){let n=t(),{loading:c,error:l,login:u,cancel:d}=a();return(0,s.jsx)(o,{children:(0,s.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center px-6 pb-40 text-[var(--content-default)]`,children:(0,s.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:[(0,s.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Welcome to Vellum`}),(0,s.jsx)(`p`,{className:`mt-3 text-body-medium-lighter text-[var(--content-tertiary)]`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Your own personal intelligence is just a step away.`}),l&&(0,s.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:l}),(0,s.jsxs)(`div`,{className:`mt-10 flex w-full max-w-sm flex-col gap-3`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,s.jsx)(e,{variant:`primary`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:c?d:()=>void u(),children:c?`Cancel`:`Log In`}),(0,s.jsx)(e,{variant:`ghost`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:()=>{c&&d(),r()?n(i.selectAssistant):n(i.onboarding.hosting)},children:`Continue without account`})]})]})})})}export{c as WelcomeScreen};
@@ -1 +1 @@
1
- import{t as e}from"./capture-error-Bj8_eutd.js";import{n as t,t as n}from"./create-selectors-Qo7kcikX.js";import{p as r}from"./api-CI6Y6DLb.js";import{n as i}from"./resolved-assistants-store-Dw5UuGyB.js";import{Mr as a,Nr as o,Pr as s}from"./sdk.gen-BVAVE6A_.js";import{t as c}from"./by-tool-use-id-index-M50wYE1f.js";import{t as l}from"./workflow-status-HyIIhMBP.js";async function u(t,n){try{let{data:i,response:a}=await s({path:{assistant_id:t,id:n},throwOnError:!1});if(!a||!a.ok||!i)return null;let o=r.safeParse(i);return o.success?o.data:(e(o.error,{context:`fetchWorkflowJournal`}),null)}catch(t){return e(t,{context:`fetchWorkflowJournal`}),null}}async function d(t,n){try{let{data:e,response:r}=await o({path:{assistant_id:t,id:n},throwOnError:!1});return r?.ok&&e?e:r?.status===404?`not_found`:null}catch(t){return e(t,{context:`fetchWorkflowRun`}),null}}var f={byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:0};function p(e,t){return{runId:e,status:`running`,agentsSpawned:0,inputTokens:0,outputTokens:0,startedAt:t,leaves:new Map}}function m(e){let t=e;for(let[n,r]of e)r.status===`running`&&(t===e&&(t=new Map(e)),t.set(n,{...r,status:`cancelled`}));return t}function h(e,t){return`${t}:${l(e)?`live`:`final`}`}function g(e){return e===`failed`?`failed`:e===`running`?`running`:`completed`}function _(e){return e===`interrupted`?`running`:e}var v=n(t()((e,t)=>({...f,startRun:n=>{let{byId:r,orderedIds:i,byToolUseId:a}=t(),o=r[n.runId];if(o){let t=o.label??n.label,i=o.toolUseId??n.toolUseId,s=t!==o.label,l=i!==o.toolUseId;if(!s&&!l)return;let u={...o,label:t,toolUseId:i},d=l?c(a,n.toolUseId,n.runId):a;e({byId:{...r,[n.runId]:u},byToolUseId:d});return}let s={...p(n.runId,n.timestamp),label:n.label,toolUseId:n.toolUseId},l=c(a,n.toolUseId,n.runId);e({byId:{...r,[n.runId]:s},orderedIds:[...i,n.runId],byToolUseId:l})},applyProgress:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s={...o,status:_(o.status),phase:n.phase??o.phase,message:n.message??o.message,agentsSpawned:n.agentsSpawned??o.agentsSpawned,label:o.label??n.label};e({byId:{...r,[n.runId]:s},orderedIds:a?i:[...i,n.runId]})},leafStarted:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=_(o.status),c=o.leaves.get(n.seq);if(c&&c.status!==`running`){s!==o.status&&e({byId:{...r,[n.runId]:{...o,status:s}}});return}let l={seq:n.seq,status:`running`,label:n.label??c?.label,promptSummary:n.promptSummary??c?.promptSummary},u=new Map(o.leaves).set(n.seq,l),d=Math.max(o.agentsSpawned,u.size);e({byId:{...r,[n.runId]:{...o,status:s,agentsSpawned:d,leaves:u}},orderedIds:a?i:[...i,n.runId]})},leafFinished:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=o.leaves.get(n.seq),c={seq:n.seq,status:n.status,label:n.label??s?.label,promptSummary:s?.promptSummary,inputTokens:n.inputTokens??s?.inputTokens,outputTokens:n.outputTokens??s?.outputTokens,resultSummary:n.resultSummary??s?.resultSummary};if(s&&s.status===c.status&&s.label===c.label&&s.inputTokens===c.inputTokens&&s.outputTokens===c.outputTokens&&s.resultSummary===c.resultSummary)return;let l=new Map(o.leaves).set(n.seq,c),u=0,d=0;for(let e of l.values())u+=e.inputTokens??0,d+=e.outputTokens??0;e({byId:{...r,[n.runId]:{...o,inputTokens:Math.max(o.inputTokens,u),outputTokens:Math.max(o.outputTokens,d),leaves:l}},orderedIds:a?i:[...i,n.runId]})},completeRun:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=l(n.status)?o.leaves:m(o.leaves),c={...o,status:n.status,agentsSpawned:n.agentsSpawned,inputTokens:n.inputTokens,outputTokens:n.outputTokens,summary:n.summary??o.summary,leaves:s};e({byId:{...r,[n.runId]:c},orderedIds:a?i:[...i,n.runId]})},backfillFromJournal:(n,r)=>{let{byId:i,orderedIds:a}=t(),o=i[n],s=o??p(n,Date.now()),c=!1,u=s.leaves;for(let e of r.leaves){let t=s.leaves.get(e.seq),n=g(e.status);if(!t){c||=(u=new Map(s.leaves),!0),u.set(e.seq,{seq:e.seq,status:n,label:e.label,promptSummary:e.promptSummary,resultSummary:e.resultSummary,inputTokens:e.inputTokens,outputTokens:e.outputTokens});continue}(t.status===`running`||t.status===`cancelled`)&&n!==`running`&&(c||=(u=new Map(s.leaves),!0),u.set(e.seq,{...t,status:n,label:t.label??e.label,promptSummary:t.promptSummary??e.promptSummary,resultSummary:t.resultSummary??e.resultSummary,inputTokens:t.inputTokens??e.inputTokens,outputTokens:t.outputTokens??e.outputTokens}))}let d=l(s.status)?r.status??s.status:s.status,f=l(s.status)&&!l(d)?m(u):u,h={...s,status:d,agentsSpawned:Math.max(s.agentsSpawned,r.agentsSpawned??s.agentsSpawned),inputTokens:Math.max(s.inputTokens,r.inputTokens??s.inputTokens),outputTokens:Math.max(s.outputTokens,r.outputTokens??s.outputTokens),phase:r.phase??s.phase,leaves:f};e({byId:{...i,[n]:h},orderedIds:o?a:[...a,n]})},fetchJournalIfNeeded:async(n,r)=>{let{byId:i,fetchedAt:a}=t(),o=i[r];if(!o)return;let s=h(o.status,r),c=a.get(s);if(c!==void 0&&c>=o.startedAt)return;let l=new Map(a);l.set(s,o.startedAt),e({fetchedAt:l});let d=t().generation,f=await u(n,r);if(!f){let n=new Map(t().fetchedAt);n.delete(s),e({fetchedAt:n});return}t().generation===d&&t().backfillFromJournal(r,f)},hydrateRunIfNeeded:async(n,r)=>{let{byId:i,hydratedRunIds:a}=t();if(i[r]||a.has(r))return;e({hydratedRunIds:new Set(a).add(r)});let o=t().generation,s=await d(n,r);if(t().generation===o){if(s===`not_found`){e({notFoundRunIds:new Set(t().notFoundRunIds).add(r)});return}if(s===null){let n=new Set(t().hydratedRunIds);n.delete(r),e({hydratedRunIds:n,hydrationFailedRunIds:new Set(t().hydrationFailedRunIds).add(r)});return}t().startRun({runId:r,label:s.name??void 0,timestamp:Date.now()}),l(s.status)?t().applyProgress({runId:r,agentsSpawned:s.agentsSpawned}):t().completeRun({runId:r,status:s.status,agentsSpawned:s.agentsSpawned,inputTokens:s.inputTokens,outputTokens:s.outputTokens}),await t().fetchJournalIfNeeded(n,r)}},abortRun:async e=>{let t=i.getState().activeAssistantId;if(t)try{await a({path:{assistant_id:t,id:e},throwOnError:!0})}catch{}},reset:()=>e({byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:t().generation+1})})));export{v as t};
1
+ import{t as e}from"./capture-error-Bj8_eutd.js";import{n as t,t as n}from"./create-selectors-Qo7kcikX.js";import{p as r}from"./api-C3QSs67k.js";import{n as i}from"./resolved-assistants-store-Dw5UuGyB.js";import{Fr as a,Nr as o,Pr as s}from"./sdk.gen-BHZ0fJla.js";import{t as c}from"./by-tool-use-id-index-M50wYE1f.js";import{t as l}from"./workflow-status-HyIIhMBP.js";async function u(t,n){try{let{data:i,response:o}=await a({path:{assistant_id:t,id:n},throwOnError:!1});if(!o||!o.ok||!i)return null;let s=r.safeParse(i);return s.success?s.data:(e(s.error,{context:`fetchWorkflowJournal`}),null)}catch(t){return e(t,{context:`fetchWorkflowJournal`}),null}}async function d(t,n){try{let{data:e,response:r}=await s({path:{assistant_id:t,id:n},throwOnError:!1});return r?.ok&&e?e:r?.status===404?`not_found`:null}catch(t){return e(t,{context:`fetchWorkflowRun`}),null}}var f={byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:0};function p(e,t){return{runId:e,status:`running`,agentsSpawned:0,inputTokens:0,outputTokens:0,startedAt:t,leaves:new Map}}function m(e){let t=e;for(let[n,r]of e)r.status===`running`&&(t===e&&(t=new Map(e)),t.set(n,{...r,status:`cancelled`}));return t}function h(e,t){return`${t}:${l(e)?`live`:`final`}`}function g(e){return e===`failed`?`failed`:e===`running`?`running`:`completed`}function _(e){return e===`interrupted`?`running`:e}var v=n(t()((e,t)=>({...f,startRun:n=>{let{byId:r,orderedIds:i,byToolUseId:a}=t(),o=r[n.runId];if(o){let t=o.label??n.label,i=o.toolUseId??n.toolUseId,s=t!==o.label,l=i!==o.toolUseId;if(!s&&!l)return;let u={...o,label:t,toolUseId:i},d=l?c(a,n.toolUseId,n.runId):a;e({byId:{...r,[n.runId]:u},byToolUseId:d});return}let s={...p(n.runId,n.timestamp),label:n.label,toolUseId:n.toolUseId},l=c(a,n.toolUseId,n.runId);e({byId:{...r,[n.runId]:s},orderedIds:[...i,n.runId],byToolUseId:l})},applyProgress:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s={...o,status:_(o.status),phase:n.phase??o.phase,message:n.message??o.message,agentsSpawned:n.agentsSpawned??o.agentsSpawned,label:o.label??n.label};e({byId:{...r,[n.runId]:s},orderedIds:a?i:[...i,n.runId]})},leafStarted:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=_(o.status),c=o.leaves.get(n.seq);if(c&&c.status!==`running`){s!==o.status&&e({byId:{...r,[n.runId]:{...o,status:s}}});return}let l={seq:n.seq,status:`running`,label:n.label??c?.label,promptSummary:n.promptSummary??c?.promptSummary},u=new Map(o.leaves).set(n.seq,l),d=Math.max(o.agentsSpawned,u.size);e({byId:{...r,[n.runId]:{...o,status:s,agentsSpawned:d,leaves:u}},orderedIds:a?i:[...i,n.runId]})},leafFinished:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=o.leaves.get(n.seq),c={seq:n.seq,status:n.status,label:n.label??s?.label,promptSummary:s?.promptSummary,inputTokens:n.inputTokens??s?.inputTokens,outputTokens:n.outputTokens??s?.outputTokens,resultSummary:n.resultSummary??s?.resultSummary};if(s&&s.status===c.status&&s.label===c.label&&s.inputTokens===c.inputTokens&&s.outputTokens===c.outputTokens&&s.resultSummary===c.resultSummary)return;let l=new Map(o.leaves).set(n.seq,c),u=0,d=0;for(let e of l.values())u+=e.inputTokens??0,d+=e.outputTokens??0;e({byId:{...r,[n.runId]:{...o,inputTokens:Math.max(o.inputTokens,u),outputTokens:Math.max(o.outputTokens,d),leaves:l}},orderedIds:a?i:[...i,n.runId]})},completeRun:n=>{let{byId:r,orderedIds:i}=t(),a=r[n.runId],o=a??p(n.runId,Date.now()),s=l(n.status)?o.leaves:m(o.leaves),c={...o,status:n.status,agentsSpawned:n.agentsSpawned,inputTokens:n.inputTokens,outputTokens:n.outputTokens,summary:n.summary??o.summary,leaves:s};e({byId:{...r,[n.runId]:c},orderedIds:a?i:[...i,n.runId]})},backfillFromJournal:(n,r)=>{let{byId:i,orderedIds:a}=t(),o=i[n],s=o??p(n,Date.now()),c=!1,u=s.leaves;for(let e of r.leaves){let t=s.leaves.get(e.seq),n=g(e.status);if(!t){c||=(u=new Map(s.leaves),!0),u.set(e.seq,{seq:e.seq,status:n,label:e.label,promptSummary:e.promptSummary,resultSummary:e.resultSummary,inputTokens:e.inputTokens,outputTokens:e.outputTokens});continue}(t.status===`running`||t.status===`cancelled`)&&n!==`running`&&(c||=(u=new Map(s.leaves),!0),u.set(e.seq,{...t,status:n,label:t.label??e.label,promptSummary:t.promptSummary??e.promptSummary,resultSummary:t.resultSummary??e.resultSummary,inputTokens:t.inputTokens??e.inputTokens,outputTokens:t.outputTokens??e.outputTokens}))}let d=l(s.status)?r.status??s.status:s.status,f=l(s.status)&&!l(d)?m(u):u,h={...s,status:d,agentsSpawned:Math.max(s.agentsSpawned,r.agentsSpawned??s.agentsSpawned),inputTokens:Math.max(s.inputTokens,r.inputTokens??s.inputTokens),outputTokens:Math.max(s.outputTokens,r.outputTokens??s.outputTokens),phase:r.phase??s.phase,leaves:f};e({byId:{...i,[n]:h},orderedIds:o?a:[...a,n]})},fetchJournalIfNeeded:async(n,r)=>{let{byId:i,fetchedAt:a}=t(),o=i[r];if(!o)return;let s=h(o.status,r),c=a.get(s);if(c!==void 0&&c>=o.startedAt)return;let l=new Map(a);l.set(s,o.startedAt),e({fetchedAt:l});let d=t().generation,f=await u(n,r);if(!f){let n=new Map(t().fetchedAt);n.delete(s),e({fetchedAt:n});return}t().generation===d&&t().backfillFromJournal(r,f)},hydrateRunIfNeeded:async(n,r)=>{let{byId:i,hydratedRunIds:a}=t();if(i[r]||a.has(r))return;e({hydratedRunIds:new Set(a).add(r)});let o=t().generation,s=await d(n,r);if(t().generation===o){if(s===`not_found`){e({notFoundRunIds:new Set(t().notFoundRunIds).add(r)});return}if(s===null){let n=new Set(t().hydratedRunIds);n.delete(r),e({hydratedRunIds:n,hydrationFailedRunIds:new Set(t().hydrationFailedRunIds).add(r)});return}t().startRun({runId:r,label:s.name??void 0,timestamp:Date.now()}),l(s.status)?t().applyProgress({runId:r,agentsSpawned:s.agentsSpawned}):t().completeRun({runId:r,status:s.status,agentsSpawned:s.agentsSpawned,inputTokens:s.inputTokens,outputTokens:s.outputTokens}),await t().fetchJournalIfNeeded(n,r)}},abortRun:async e=>{let t=i.getState().activeAssistantId;if(t)try{await o({path:{assistant_id:t,id:e},throwOnError:!0})}catch{}},reset:()=>e({byId:{},orderedIds:[],byToolUseId:new Map,fetchedAt:new Map,hydratedRunIds:new Set,notFoundRunIds:new Set,hydrationFailedRunIds:new Set,generation:t().generation+1})})));export{v as t};
@@ -0,0 +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}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./useMutation-CXGTrp4W.js";import{t as s}from"./jsx-runtime-D3ZM-ToX.js";import{t as c}from"./queryOptions-CMSBCFOf.js";import{t as l}from"./createLucideIcon-CAM1RhH8.js";import{t as u}from"./chevron-down-B5A-0g8A.js";import{t as d}from"./chevron-right-HU6H84S0.js";import{t as f}from"./menu-BvjhxZo7.js";import{t as p}from"./download-CywcQLB2.js";import{t as m}from"./eye-off-Jdx8qkOK.js";import{t as h}from"./eye-BMVGQXHT.js";import{t as g}from"./file-plus-C3SBA8ll.js";import{t as _}from"./file-text-Br730Q4B.js";import{n as v,r as y,t as b}from"./workspace-tree-query-B1A-efgV.js";import{t as x}from"./folder-open-Nlg0OphT.js";import{t as S}from"./folder-DF8nFp7N.js";import{n as C,t as w}from"./video-BcgduiJ6.js";import{t as T}from"./loader-circle-XREx3i4W.js";import{t as E}from"./pencil-D38YNe2r.js";import{t as D}from"./plus-jH3kAliM.js";import{t as O}from"./search-BVW-n8to.js";import{t as k}from"./trash-2-L5LNgw9o.js";import{t as A}from"./x-JBAsSOmg.js";import{k as j}from"./src-te3YTBG-.js";import{t as M}from"./input-hw3el2GJ.js";import{t as N}from"./modal-BR4CUFBd.js";import{n as P,t as F}from"./panel-item-CrtoJCrd.js";import{t as ee}from"./confirm-dialog-UYFm4osC.js";import{n as I,t as L}from"./file-markdown-DaflJFk7.js";import{Br as te,Hr as R,Ir as ne,Lr as z,Rr as B,Ur as re,zr as ie}from"./sdk.gen-BHZ0fJla.js";import{n as V}from"./use-is-mobile-BlQuzI5Z.js";import{n as H}from"./native-file-ySSv1sQ7.js";import{t as U}from"./use-active-assistant-id-CldxA_-M.js";import{n as W,t as ae}from"./mobile-sidebar-drawer-DtKU2vlu.js";import{i as G,n as oe,r as K,t as q}from"./file-editor-phorJEVv.js";import{t as J}from"./format-file-size-BgMTiWPt.js";var se=l(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ce=l(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),Y=l(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),X=e(t(),1);async function le(e){let{data:t,error:n}=await z({path:{assistant_id:e.assistantId},query:{path:e.path,...e.showHidden?{showHidden:`true`}:{}},parseAs:`blob`,throwOnError:!1});if(n||!(t instanceof Blob))throw Error(`Failed to download file`);await H(t,e.filename)}function ue(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function de(e,t){return ue(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function fe(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function pe(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Z=s();function me(e){let{assistantId:t,path:n,name:r,showHidden:i}=e,[a,o]=(0,X.useState)(!1),[s,c]=(0,X.useState)(!1);return{isDownloading:a,error:s,download:(0,X.useCallback)(async()=>{c(!1),o(!0);try{await le({assistantId:t,path:n,filename:r,showHidden:i})}catch{c(!0)}finally{o(!1)}},[t,n,r,i])}}function he({assistantId:e,path:t,name:r,showHidden:i}){let{isDownloading:a,error:o,download:s}=me({assistantId:e,path:t,name:r,showHidden:i});return(0,Z.jsx)(n,{variant:`ghost`,size:`regular`,iconOnly:a?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(p,{"aria-hidden":!0}),onClick:()=>void s(),disabled:a,"aria-label":`Download ${r}`,tooltip:o?`Download failed. Try again.`:`Download`})}function ge(e){return c({queryFn:async()=>{let{data:t,error:n}=await B({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function _e({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=_;return n.startsWith(`image/`)?r=C:n.startsWith(`video/`)?r=w:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=y),(0,Z.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,Z.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function ve({viewMode:e,onChange:t}){return(0,Z.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,Z.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(_e,{mimeType:t}),(0,Z.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:J(n)})]}),r]})}function ye({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await z({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,X.useState)(null);return(0,X.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function be({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let{isDownloading:c,error:l,download:u}=me({assistantId:e,path:t,name:r,showHidden:s});return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:r,mimeType:i,size:a}),(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Z.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,Z.jsx)(y,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Z.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,Z.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:J(a,`Unknown size`)}),o&&(0,Z.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(o).toLocaleString()]})]}),(0,Z.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:c?(0,Z.jsx)(T,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(p,{"aria-hidden":!0}),onClick:u,disabled:c,"aria-label":`Download ${r}`,className:`mt-4`,children:c?`Downloading…`:`Download`}),l&&(0,Z.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:`Download failed. Try again.`})]})})]})}function xe({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...ge({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,g]=(0,X.useState)(null),[_,v]=(0,X.useState)(null);(0,X.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;g(e=>e==null?e:n(e)),v(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,X.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);g(e=>e!=null&&t(e)?null:e),v(e=>e!=null&&t(e.path)?null:e)},[d]);let y=h!=null&&h===t,b=p?.content??``,S=_?.path===t?_.content:b,C=()=>{g(null),v(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await re({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{g(e=>e===t.path?null:e),v(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),E=S!==b,D=(0,X.useCallback)(()=>{t&&E&&!w.isPending&&w.mutate({path:t,content:S})},[t,E,w,S]);if(!t)return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,Z.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Z.jsx)(x,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(T,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let O=p.mimeType??`application/octet-stream`,k=p.name??t.split(`/`).pop()??t,A=I(k,O),j=de(k,O),M=p.content!=null&&!A&&!j,N=t?pe(t):!0,P=y&&(0,Z.jsx)(oe,{isDirty:E,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:D,onDiscard:C});if(A&&p.content!=null){let e=y?S:p.content;return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(ve,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,Z.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Z.jsx)(L,{content:e})}):y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}if(j&&p.content!=null){let e=y?S:p.content,n=fe(e);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(ve,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:s===`preview`?n:e,downloadContent:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,Z.jsx)(G,{content:n,readOnly:!0,whiteSpace:`pre`}):y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}return M?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:y?S:p.content??``,fileName:k,mimeType:O,showEdit:!N,isEditing:y,onToggleEdit:()=>y?C():g(t)}),y?(0,Z.jsx)(K,{value:S,onChange:e=>v({path:t,content:e}),onSave:D}):(0,Z.jsx)(G,{content:p.content??``,readOnly:N,onStartEdit:()=>g(t)})]}),P]}):O.startsWith(`image/`)||O.startsWith(`video/`)?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size,rightContent:(0,Z.jsx)(he,{assistantId:e,path:t,name:k,showHidden:r})}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Z.jsx)(ye,{assistantId:e,path:t,mimeType:O,showHidden:r})})]}):(0,Z.jsx)(be,{assistantId:e,path:t,name:k,mimeType:O,size:p.size,modifiedAt:p.modifiedAt,showHidden:r})}function Se(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}async function Ce(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await R({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function we({entry:e}){return e.type===`directory`?(0,Z.jsx)(S,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Z.jsx)(C,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Z.jsx)(w,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(_,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function Te({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h}){let _=e.path??``,y=e.name??``,b=e.type===`directory`,x=n.has(_),S=r===_,C=y.startsWith(`.`),w=!pe(_),T=b&&(x||s.length>0),{data:D}=a({...v({assistantId:t,path:_,showHidden:i,includeDirSizes:o===`size`}),enabled:b&&T}),O=(0,X.useMemo)(()=>Se(D?.entries??[],o),[D?.entries,o]),A=s===``||y.toLowerCase().includes(s);if(s!==``&&!b&&!A)return null;let M=(0,Z.jsxs)(`button`,{onClick:()=>{b?c(_):l(_)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${h*14+8}px`,paddingRight:`8px`,color:S?`var(--content-default)`:C?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:S?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:C&&!S?.7:1},children:[b?T?(0,Z.jsx)(u,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(d,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Z.jsx)(we,{entry:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:y}),e.size!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:J(e.size)})]});return(0,Z.jsxs)(`div`,{children:[w?(0,Z.jsxs)(j.Root,{children:[(0,Z.jsx)(j.Trigger,{children:M}),(0,Z.jsxs)(j.Content,{children:[b&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(g,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`file`,parentPath:_}),children:`New File`}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`folder`,parentPath:_}),children:`New Folder`}),(0,Z.jsx)(j.Separator,{})]}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(k,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:_,name:y,isDirectory:b}),children:`Delete`}),(0,Z.jsx)(j.Item,{leftIcon:(0,Z.jsx)(E,{className:`h-3.5 w-3.5`}),onSelect:()=>p({path:_,name:y,isDirectory:b}),children:`Rename`})]})]}):M,b&&T&&O.length>0&&(0,Z.jsx)(`div`,{children:O.map(e=>(0,Z.jsx)(Te,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h+1},e.path))})]})}function Ee({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,X.useRef)(null),[d,f]=(0,X.useState)(a??``),p=d.trim(),m=p.length>0&&(/[/\\]/.test(p)||p===`.`||p===`..`),h=p.length>0&&!m&&!c;return(0,Z.jsx)(N.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Z.jsx)(N.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),h&&s(p)},children:[(0,Z.jsx)(N.Header,{children:(0,Z.jsx)(N.Title,{children:e})}),(0,Z.jsx)(N.Body,{children:(0,Z.jsx)(M,{ref:u,label:`Name`,value:d,onChange:e=>f(e.target.value),placeholder:t,errorText:l??(m?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Z.jsxs)(N.Footer,{children:[(0,Z.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,disabled:!h,children:c?i:r})]})]})})})}function $({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:g,onPathRenamed:_}){let y=i(),[x,S]=(0,X.useState)(``),C=x.trim().toLowerCase(),[w,T]=(0,X.useState)(!1),[E,D]=(0,X.useState)(null),[k,j]=(0,X.useState)(null),N=(0,X.useCallback)(()=>{D(null),j(null)},[]),{data:P,isLoading:F}=a(v({assistantId:e,showHidden:s,includeDirSizes:c===`size`})),I=(0,X.useMemo)(()=>Se(P?.entries??[],c),[P?.entries,c]),L=(0,X.useCallback)(()=>{for(let e of[b,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])y.invalidateQueries({queryKey:[e]})},[y]),R=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await Ce(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await re({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await ie({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{N(),L(),e.parentPath&&u(e.parentPath),e.kind===`file`?d(e.path):u(e.path)},onError:e=>{j(e instanceof Error?e.message:`Failed to create.`)}}),z=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await Ce(e,r,t.newName,i);let{error:o,response:s}=await te({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{N(),L(),_(e,t)},onError:e=>{j(e instanceof Error?e.message:`Failed to rename.`)}}),B=(0,X.useCallback)(e=>{j(null),D({type:`create`,...e})},[]),V=(0,X.useCallback)(e=>{j(null),D({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,X.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await ne({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{U(null),L(),g(e.path)}}),ae=(0,X.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Z.jsx)(ce,{"aria-hidden":!0}):(0,Z.jsx)(se,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Z.jsx)(h,{"aria-hidden":!0}):(0,Z.jsx)(m,{"aria-hidden":!0}),onClick:f,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(De,{open:w,onOpenChange:T,onSelectKind:e=>{T(!1),B({kind:e,parentPath:``})}})]})]}),(0,Z.jsx)(`div`,{className:`px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(M,{type:`text`,value:x,onChange:e=>S(e.target.value),placeholder:`Search files`,leftIcon:(0,Z.jsx)(O,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),x&&(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(A,{"aria-hidden":!0}),onClick:()=>S(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:F?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):I.length?I.map(n=>(0,Z.jsx)(Te,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:C,onToggleExpand:l,onSelectPath:d,onRequestDelete:ae,onRequestRename:V,onRequestCreate:B,depth:0},n.path)):(0,Z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),E?.type===`create`&&(0,Z.jsx)(Ee,{title:E.kind===`file`?`New File`:`New Folder`,placeholder:E.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:N,onConfirm:e=>{j(null),R.mutate({kind:E.kind,parentPath:E.parentPath,name:e})},pending:R.isPending,error:k},`create-${E.kind}-${E.parentPath}`),E?.type===`rename`&&(0,Z.jsx)(Ee,{title:`Rename`,placeholder:E.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:E.name,onCancel:N,onConfirm:e=>{if(e===E.name){N();return}j(null),z.mutate({oldPath:E.path,newName:e})},pending:z.isPending,error:k},`rename-${E.path}`),(0,Z.jsx)(ee,{open:H!==null,title:H?.isDirectory?`Delete Folder`:`Delete File`,message:(0,Z.jsxs)(Z.Fragment,{children:[`Are you sure you want to delete`,` `,(0,Z.jsx)(`span`,{style:{color:`var(--content-default)`},children:H?.name}),H?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,W.error&&(0,Z.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function De({open:e,onOpenChange:t,onSelectKind:r}){return V()?(0,Z.jsxs)(P.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(P.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(D,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(P.Content,{children:[(0,Z.jsx)(P.Header,{className:`sr-only`,children:(0,Z.jsx)(P.Title,{children:`Create new`})}),(0,Z.jsxs)(P.Body,{className:`pt-0`,children:[(0,Z.jsx)(F,{icon:g,label:`New File`,onSelect:()=>r(`file`)}),(0,Z.jsx)(F,{icon:Y,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,Z.jsxs)(f.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(f.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(D,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(f.Content,{align:`end`,sideOffset:4,children:[(0,Z.jsx)(f.Item,{leftIcon:(0,Z.jsx)(g,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,Z.jsx)(f.Item,{leftIcon:(0,Z.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function Oe(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function ke({assistantId:e}){let[t,n]=r(),[i,a]=(0,X.useState)(()=>{let e=t.get(`file`);return e?Oe(e):new Set}),[o,s]=(0,X.useState)(()=>t.get(`file`)),[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,X.useState)(`preview`);(0,X.useEffect)(()=>{let e=t.get(`file`);e&&(s(e),a(t=>{let n=new Set(t);for(let t of Oe(e))n.add(t);return n.size===t.size?t:n}),n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0}))},[t,n]);let m=(0,X.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,X.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,X.useState)(!1),v=(0,X.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,X.useState)(null),x=(0,X.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,X.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,X.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,Z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,Z.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,Z.jsx)(W,{onClick:()=>_(!0)})}),(0,Z.jsx)(ae,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,Z.jsx)($,{...w})}),(0,Z.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,Z.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)($,{...w})}),(0,Z.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)(xe,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function Ae(){return(0,Z.jsx)(ke,{assistantId:U()})}export{Ae as WorkspacePage};
@@ -1 +1 @@
1
- import{t as e}from"./queryOptions-CMSBCFOf.js";import{t}from"./createLucideIcon-CAM1RhH8.js";import{Vr as n}from"./sdk.gen-BVAVE6A_.js";var r=t(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),i=`assistantsWorkspaceTreeRetrieve`;function a({assistantId:t,path:r=``,showHidden:a=!1,includeDirSizes:o=!1}){return e({queryKey:[i,t,{path:r,showHidden:a,includeDirSizes:o}],queryFn:async()=>{let e={};r&&(e.path=r),a&&(e.showHidden=`true`),o&&(e.includeDirSizes=`true`);let{data:i,error:s}=await n({path:{assistant_id:t},query:e});if(s)throw s;if(!i)throw Error(`Failed to load workspace tree`);return i}})}export{a as n,r,i as t};
1
+ import{t as e}from"./queryOptions-CMSBCFOf.js";import{t}from"./createLucideIcon-CAM1RhH8.js";import{Hr as n}from"./sdk.gen-BHZ0fJla.js";var r=t(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),i=`assistantsWorkspaceTreeRetrieve`;function a({assistantId:t,path:r=``,showHidden:a=!1,includeDirSizes:o=!1}){return e({queryKey:[i,t,{path:r,showHidden:a,includeDirSizes:o}],queryFn:async()=>{let e={};r&&(e.path=r),a&&(e.showHidden=`true`),o&&(e.includeDirSizes=`true`);let{data:i,error:s}=await n({path:{assistant_id:t},query:e});if(s)throw s;if(!i)throw Error(`Failed to load workspace tree`);return i}})}export{a as n,r,i as t};
package/dist/index.html CHANGED
@@ -10,7 +10,7 @@
10
10
  <link rel="apple-touch-icon" href="/assistant/favicon.svg" />
11
11
  <title>Vellum Assistant</title>
12
12
  <script src="/assistant/theme-init.js"></script>
13
- <script type="module" crossorigin src="/assistant/assets/index-DMFNBbtE.js"></script>
13
+ <script type="module" crossorigin src="/assistant/assets/index-0f48hi7h.js"></script>
14
14
  <link rel="modulepreload" crossorigin href="/assistant/assets/chunk-jRWAZmH_.js">
15
15
  <link rel="modulepreload" crossorigin href="/assistant/assets/preload-helper-Cv2QeVDK.js">
16
16
  <link rel="modulepreload" crossorigin href="/assistant/assets/is-electron-m5eeGBnd.js">
@@ -18,12 +18,12 @@
18
18
  <link rel="modulepreload" crossorigin href="/assistant/assets/create-selectors-Qo7kcikX.js">
19
19
  <link rel="modulepreload" crossorigin href="/assistant/assets/local-settings-C-dW2vkq.js">
20
20
  <link rel="modulepreload" crossorigin href="/assistant/assets/local-mode-BTovbt13.js">
21
- <link rel="modulepreload" crossorigin href="/assistant/assets/api-CI6Y6DLb.js">
21
+ <link rel="modulepreload" crossorigin href="/assistant/assets/api-C3QSs67k.js">
22
22
  <link rel="modulepreload" crossorigin href="/assistant/assets/client.gen-CV05d-kw.js">
23
23
  <link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-BIu1DgTs.js">
24
- <link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-BVAVE6A_.js">
24
+ <link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-BHZ0fJla.js">
25
25
  <link rel="modulepreload" crossorigin href="/assistant/assets/api-errors-CFiCT7Ap.js">
26
- <link rel="modulepreload" crossorigin href="/assistant/assets/api-BlN0EOWF.js">
26
+ <link rel="modulepreload" crossorigin href="/assistant/assets/api-LG8zI3nK.js">
27
27
  <link rel="modulepreload" crossorigin href="/assistant/assets/impersonate-version-flag-4Ki_3iKD.js">
28
28
  <link rel="modulepreload" crossorigin href="/assistant/assets/assistant-identity-store-DIyVo8LV.js">
29
29
  <link rel="modulepreload" crossorigin href="/assistant/assets/semver-BpijV4FQ.js">
@@ -31,7 +31,7 @@
31
31
  <link rel="modulepreload" crossorigin href="/assistant/assets/jsx-runtime-D3ZM-ToX.js">
32
32
  <link rel="modulepreload" crossorigin href="/assistant/assets/QueryClientProvider-CMu7CkQU.js">
33
33
  <link rel="modulepreload" crossorigin href="/assistant/assets/useQuery-Bz-fbQ-m.js">
34
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-assistant-avatar-IcRIy2-c.js">
34
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-assistant-avatar-bwLHcMz4.js">
35
35
  <link rel="modulepreload" crossorigin href="/assistant/assets/device-settings-DXp9L4iB.js">
36
36
  <link rel="modulepreload" crossorigin href="/assistant/assets/onboarding-store-bZ2qYISk.js">
37
37
  <link rel="modulepreload" crossorigin href="/assistant/assets/consent-hzYg-zbh.js">
@@ -46,8 +46,8 @@
46
46
  <link rel="modulepreload" crossorigin href="/assistant/assets/funnel-events-n2IVlwTo.js">
47
47
  <link rel="modulepreload" crossorigin href="/assistant/assets/event-bus-DSxmBYhD.js">
48
48
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-bus-subscription-nUrbz9Mu.js">
49
- <link rel="modulepreload" crossorigin href="/assistant/assets/feature-flag-catalog-TjLF99gJ.js">
50
- <link rel="modulepreload" crossorigin href="/assistant/assets/client-feature-flag-store-BDrcV52r.js">
49
+ <link rel="modulepreload" crossorigin href="/assistant/assets/feature-flag-catalog-I9-eJQP_.js">
50
+ <link rel="modulepreload" crossorigin href="/assistant/assets/client-feature-flag-store-CMncoan8.js">
51
51
  <link rel="modulepreload" crossorigin href="/assistant/assets/theme-preferences-Bb2pPRXa.js">
52
52
  <link rel="modulepreload" crossorigin href="/assistant/assets/typed-storage-9Sn8tkE7.js">
53
53
  <link rel="modulepreload" crossorigin href="/assistant/assets/bundle-mjs-BQxDdOEo.js">
@@ -85,21 +85,21 @@
85
85
  <link rel="modulepreload" crossorigin href="/assistant/assets/tag-NXcyiTkK.js">
86
86
  <link rel="modulepreload" crossorigin href="/assistant/assets/toggle-lfnhEAcN.js">
87
87
  <link rel="modulepreload" crossorigin href="/assistant/assets/src-te3YTBG-.js">
88
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-ios-app-nudge-t0SIn8xv.js">
88
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-ios-app-nudge-B-ojl-b1.js">
89
89
  <link rel="modulepreload" crossorigin href="/assistant/assets/useMutation-CXGTrp4W.js">
90
90
  <link rel="modulepreload" crossorigin href="/assistant/assets/infiniteQueryOptions-CqLc14_4.js">
91
91
  <link rel="modulepreload" crossorigin href="/assistant/assets/queryOptions-CMSBCFOf.js">
92
- <link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-r3I6j8-1.js">
92
+ <link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-C5c1Acuq.js">
93
93
  <link rel="modulepreload" crossorigin href="/assistant/assets/remote-gateway-session-yRYdsfDx.js">
94
94
  <link rel="modulepreload" crossorigin href="/assistant/assets/capture-error-Bj8_eutd.js">
95
95
  <link rel="modulepreload" crossorigin href="/assistant/assets/resolved-assistants-store-Dw5UuGyB.js">
96
- <link rel="modulepreload" crossorigin href="/assistant/assets/auth-store-BW4V6iLb.js">
97
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-is-org-ready-D0q2NIZU.js">
98
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-platform-gate-bFyCaLbM.js">
99
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-sticky-profiles-mC9bd8xU.js">
100
- <link rel="modulepreload" crossorigin href="/assistant/assets/eye-bbox-DU39FEUp.js">
96
+ <link rel="modulepreload" crossorigin href="/assistant/assets/auth-store-5qq59BAN.js">
97
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-is-org-ready-C5xlYywh.js">
98
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-platform-gate-C65D14xY.js">
99
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-sticky-profiles-CdWX0mgI.js">
100
+ <link rel="modulepreload" crossorigin href="/assistant/assets/eye-bbox-C_V87iLg.js">
101
101
  <link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-BC3STDmV.js">
102
- <link rel="modulepreload" crossorigin href="/assistant/assets/local-runtime-upgrade-CoFpjlw3.js">
102
+ <link rel="modulepreload" crossorigin href="/assistant/assets/local-runtime-upgrade-Bqn3d7Q7.js">
103
103
  <link rel="modulepreload" crossorigin href="/assistant/assets/diagnostics-T_96Uyh5.js">
104
104
  <link rel="modulepreload" crossorigin href="/assistant/assets/misc-CuYswARt.js">
105
105
  <link rel="modulepreload" crossorigin href="/assistant/assets/cloud-off-BCBGTmt0.js">
@@ -107,11 +107,11 @@
107
107
  <link rel="modulepreload" crossorigin href="/assistant/assets/refresh-cw-DzPnoeCh.js">
108
108
  <link rel="modulepreload" crossorigin href="/assistant/assets/wrench-0WW0zkkG.js">
109
109
  <link rel="modulepreload" crossorigin href="/assistant/assets/chunk-5KNZJZUH-Bsoom5--.js">
110
- <link rel="modulepreload" crossorigin href="/assistant/assets/runtime-upgrade-banner-DPMpuefs.js">
111
- <link rel="modulepreload" crossorigin href="/assistant/assets/navigation-resolver-D4jPigYv.js">
110
+ <link rel="modulepreload" crossorigin href="/assistant/assets/runtime-upgrade-banner-DPqzKtZU.js">
111
+ <link rel="modulepreload" crossorigin href="/assistant/assets/navigation-resolver-DPJxzx0h.js">
112
112
  <link rel="modulepreload" crossorigin href="/assistant/assets/research-onboarding-persistence-51lJoYJ2.js">
113
- <link rel="modulepreload" crossorigin href="/assistant/assets/build-state-DaLynPsy.js">
114
- <link rel="modulepreload" crossorigin href="/assistant/assets/retire-confirm-dialog-BuS97P1t.js">
113
+ <link rel="modulepreload" crossorigin href="/assistant/assets/build-state-m0LQ5Iis.js">
114
+ <link rel="modulepreload" crossorigin href="/assistant/assets/retire-confirm-dialog-CsSY2-T8.js">
115
115
  <link rel="modulepreload" crossorigin href="/assistant/assets/chat-CDFCY8f0.js">
116
116
  <link rel="modulepreload" crossorigin href="/assistant/assets/haptics-DvWjk9Fg.js">
117
117
  <link rel="modulepreload" crossorigin href="/assistant/assets/settings-CfuLzwIw.js">
@@ -122,31 +122,31 @@
122
122
  <link rel="modulepreload" crossorigin href="/assistant/assets/monitor-B1y28fS1.js">
123
123
  <link rel="modulepreload" crossorigin href="/assistant/assets/search-BVW-n8to.js">
124
124
  <link rel="modulepreload" crossorigin href="/assistant/assets/zoom-in-CaLYwni-.js">
125
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-command-palette-sections-CXU-OW-6.js">
125
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-command-palette-sections-CkpUaAKs.js">
126
126
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-active-assistant-id-CldxA_-M.js">
127
127
  <link rel="modulepreload" crossorigin href="/assistant/assets/key-round-0Zop_GsZ.js">
128
- <link rel="modulepreload" crossorigin href="/assistant/assets/add-credential-modal-rP3DdyDH.js">
128
+ <link rel="modulepreload" crossorigin href="/assistant/assets/add-credential-modal-CY_--m8L.js">
129
129
  <link rel="modulepreload" crossorigin href="/assistant/assets/edge-swipe-arbiter-store-CQnDi2yf.js">
130
- <link rel="modulepreload" crossorigin href="/assistant/assets/viewer-store-Ct0SDE-n.js">
130
+ <link rel="modulepreload" crossorigin href="/assistant/assets/viewer-store-DLk-jp8U.js">
131
131
  <link rel="modulepreload" crossorigin href="/assistant/assets/pointer-BbPfN86L.js">
132
132
  <link rel="modulepreload" crossorigin href="/assistant/assets/sandbox-bridge-BxW8HZq_.js">
133
133
  <link rel="modulepreload" crossorigin href="/assistant/assets/external-link-CS0aVYGt.js">
134
134
  <link rel="modulepreload" crossorigin href="/assistant/assets/puzzle-BVC3TGko.js">
135
- <link rel="modulepreload" crossorigin href="/assistant/assets/app-card-A7PMnlAT.js">
135
+ <link rel="modulepreload" crossorigin href="/assistant/assets/app-card-CAaFL1oB.js">
136
136
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-is-mobile-BlQuzI5Z.js">
137
137
  <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-store-C--wWMNW.js">
138
138
  <link rel="modulepreload" crossorigin href="/assistant/assets/edit-chat-session-D37Qx6ol.js">
139
139
  <link rel="modulepreload" crossorigin href="/assistant/assets/chevron-up-2Qqarz0p.js">
140
140
  <link rel="modulepreload" crossorigin href="/assistant/assets/minimize-2-CaXsUqSp.js">
141
141
  <link rel="modulepreload" crossorigin href="/assistant/assets/pencil-D38YNe2r.js">
142
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-edit-app-CYK9-rGD.js">
142
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-edit-app-B_Nequzs.js">
143
143
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-svg-compositor-Dl-ckXRE.js">
144
144
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-renderer-ClUVcQmf.js">
145
145
  <link rel="modulepreload" crossorigin href="/assistant/assets/proxy-D7UPVac3.js">
146
146
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-reduced-motion-W1fCe3vS.js">
147
147
  <link rel="modulepreload" crossorigin href="/assistant/assets/animated-avatar-BcgncPkc.js">
148
- <link rel="modulepreload" crossorigin href="/assistant/assets/sound-manager-DlaDOZ8r.js">
149
- <link rel="modulepreload" crossorigin href="/assistant/assets/chat-avatar-DQx81apI.js">
148
+ <link rel="modulepreload" crossorigin href="/assistant/assets/sound-manager-Bx-OcMAz.js">
149
+ <link rel="modulepreload" crossorigin href="/assistant/assets/chat-avatar-CvEA6z0H.js">
150
150
  <link rel="modulepreload" crossorigin href="/assistant/assets/apple-logo--8ZT6Umn.js">
151
151
  <link rel="modulepreload" crossorigin href="/assistant/assets/middleware-HE0NLvPl.js">
152
152
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-discord-nudge-C_QdHIeX.js">
@@ -160,63 +160,63 @@
160
160
  <link rel="modulepreload" crossorigin href="/assistant/assets/send-Q71Exj3z.js">
161
161
  <link rel="modulepreload" crossorigin href="/assistant/assets/trash-2-L5LNgw9o.js">
162
162
  <link rel="modulepreload" crossorigin href="/assistant/assets/user-_zNqL48O.js">
163
- <link rel="modulepreload" crossorigin href="/assistant/assets/document-viewer-container-BIS1iPUz.js">
163
+ <link rel="modulepreload" crossorigin href="/assistant/assets/document-viewer-container-B7TEDeV0.js">
164
164
  <link rel="modulepreload" crossorigin href="/assistant/assets/arrow-left-C2ylPLHq.js">
165
165
  <link rel="modulepreload" crossorigin href="/assistant/assets/sparkles-Ccrj7hxd.js">
166
166
  <link rel="modulepreload" crossorigin href="/assistant/assets/not-found-OqaWNmdx.js">
167
- <link rel="modulepreload" crossorigin href="/assistant/assets/login-flow-B4pa-3II.js">
168
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-onboarding-login-BmYpiSIt.js">
167
+ <link rel="modulepreload" crossorigin href="/assistant/assets/login-flow-CD9tyuFG.js">
168
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-onboarding-login-DI5gvqEG.js">
169
169
  <link rel="modulepreload" crossorigin href="/assistant/assets/log-in-CqVJRYe-.js">
170
- <link rel="modulepreload" crossorigin href="/assistant/assets/platform-login-notice-BaCrIk0m.js">
170
+ <link rel="modulepreload" crossorigin href="/assistant/assets/platform-login-notice-CdYiKsE8.js">
171
171
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-copy-to-clipboard-cF7ZSilD.js">
172
172
  <link rel="modulepreload" crossorigin href="/assistant/assets/clipboard-copy-JwIceweN.js">
173
173
  <link rel="modulepreload" crossorigin href="/assistant/assets/slack-setup-wizard-DK2F8LXc.js">
174
174
  <link rel="modulepreload" crossorigin href="/assistant/assets/square-D_e8nR-F.js">
175
175
  <link rel="modulepreload" crossorigin href="/assistant/assets/volume-2-CvT-JEIl.js">
176
- <link rel="modulepreload" crossorigin href="/assistant/assets/voice-list-IdN1mqlX.js">
177
- <link rel="modulepreload" crossorigin href="/assistant/assets/voice-picker-modal-BHRanF0C.js">
176
+ <link rel="modulepreload" crossorigin href="/assistant/assets/voice-list-CW8mzaHU.js">
177
+ <link rel="modulepreload" crossorigin href="/assistant/assets/voice-picker-modal-PdsZwrsV.js">
178
178
  <link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-B5ygTzyg.js">
179
179
  <link rel="modulepreload" crossorigin href="/assistant/assets/mail-CMdPNysl.js">
180
180
  <link rel="modulepreload" crossorigin href="/assistant/assets/message-circle-BsH7vHtN.js">
181
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-save-twilio-credentials-Bm-WW_5V.js">
181
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-save-twilio-credentials-c9xG9RPK.js">
182
182
  <link rel="modulepreload" crossorigin href="/assistant/assets/by-tool-use-id-index-M50wYE1f.js">
183
183
  <link rel="modulepreload" crossorigin href="/assistant/assets/optimistic-lifecycle-BINTsVFx.js">
184
184
  <link rel="modulepreload" crossorigin href="/assistant/assets/acp-run-store-B_eDLRwl.js">
185
185
  <link rel="modulepreload" crossorigin href="/assistant/assets/prechat-CeL4a_1i.js">
186
186
  <link rel="modulepreload" crossorigin href="/assistant/assets/browser-timezone-CGwaX5Uv.js">
187
187
  <link rel="modulepreload" crossorigin href="/assistant/assets/effective-timezone-CmcoXrio.js">
188
- <link rel="modulepreload" crossorigin href="/assistant/assets/messages-Coz9buJR.js">
188
+ <link rel="modulepreload" crossorigin href="/assistant/assets/messages-CFcAW4iz.js">
189
189
  <link rel="modulepreload" crossorigin href="/assistant/assets/background-task-store-DMP8ByUq.js">
190
190
  <link rel="modulepreload" crossorigin href="/assistant/assets/file-markdown-DaflJFk7.js">
191
- <link rel="modulepreload" crossorigin href="/assistant/assets/workspace-tree-query-COH0vdQ-.js">
191
+ <link rel="modulepreload" crossorigin href="/assistant/assets/workspace-tree-query-B1A-efgV.js">
192
192
  <link rel="modulepreload" crossorigin href="/assistant/assets/browser-CTZVDjOL.js">
193
193
  <link rel="modulepreload" crossorigin href="/assistant/assets/native-anchor-CeekjwVy.js">
194
194
  <link rel="modulepreload" crossorigin href="/assistant/assets/eye-off-Jdx8qkOK.js">
195
195
  <link rel="modulepreload" crossorigin href="/assistant/assets/eye-BMVGQXHT.js">
196
- <link rel="modulepreload" crossorigin href="/assistant/assets/chat-markdown-message-CdM44BjA.js">
197
- <link rel="modulepreload" crossorigin href="/assistant/assets/risk-DmicWnoH.js">
196
+ <link rel="modulepreload" crossorigin href="/assistant/assets/chat-markdown-message-rxPKNeTx.js">
197
+ <link rel="modulepreload" crossorigin href="/assistant/assets/risk-CdT92Vqr.js">
198
198
  <link rel="modulepreload" crossorigin href="/assistant/assets/code-qafFA0_-.js">
199
- <link rel="modulepreload" crossorigin href="/assistant/assets/acp-run-actions-BWR9i8MT.js">
200
- <link rel="modulepreload" crossorigin href="/assistant/assets/background-task-actions-Y-aaTGGd.js">
199
+ <link rel="modulepreload" crossorigin href="/assistant/assets/acp-run-actions-BH8wuBAL.js">
200
+ <link rel="modulepreload" crossorigin href="/assistant/assets/background-task-actions-DmP5s0oO.js">
201
201
  <link rel="modulepreload" crossorigin href="/assistant/assets/three-dot-indicator-BMvKQ_On.js">
202
202
  <link rel="modulepreload" crossorigin href="/assistant/assets/AnimatePresence-DPfyu3ET.js">
203
203
  <link rel="modulepreload" crossorigin href="/assistant/assets/brain-BIzJCPA6.js">
204
204
  <link rel="modulepreload" crossorigin href="/assistant/assets/user-plus-oiIr9ey8.js">
205
- <link rel="modulepreload" crossorigin href="/assistant/assets/site-favicon-DzmWythg.js">
206
- <link rel="modulepreload" crossorigin href="/assistant/assets/subagent-store-CQKOOAm6.js">
205
+ <link rel="modulepreload" crossorigin href="/assistant/assets/site-favicon-BB1pYWLF.js">
206
+ <link rel="modulepreload" crossorigin href="/assistant/assets/subagent-store-MDi6lBXs.js">
207
207
  <link rel="modulepreload" crossorigin href="/assistant/assets/circle-x-17dBxF06.js">
208
208
  <link rel="modulepreload" crossorigin href="/assistant/assets/file-plus-C3SBA8ll.js">
209
209
  <link rel="modulepreload" crossorigin href="/assistant/assets/terminal-CdCI6wMV.js">
210
- <link rel="modulepreload" crossorigin href="/assistant/assets/transcript-message-body-shared-D3uxHQt5.js">
210
+ <link rel="modulepreload" crossorigin href="/assistant/assets/transcript-message-body-shared-D9_d2c2X.js">
211
211
  <link rel="modulepreload" crossorigin href="/assistant/assets/detail-shell-Cyqr5FXJ.js">
212
212
  <link rel="modulepreload" crossorigin href="/assistant/assets/surface-parse-helpers-CEJ3tQ9Q.js">
213
213
  <link rel="modulepreload" crossorigin href="/assistant/assets/workflow-status-HyIIhMBP.js">
214
- <link rel="modulepreload" crossorigin href="/assistant/assets/workflow-store-CMNMu-fc.js">
214
+ <link rel="modulepreload" crossorigin href="/assistant/assets/workflow-store-lM7yKbUo.js">
215
215
  <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-selection-oJy8Oht3.js">
216
- <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-navigation-Bo95jhXQ.js">
217
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-subagent-card-data-Dp1wCoRB.js">
218
- <link rel="modulepreload" crossorigin href="/assistant/assets/assistant-feature-flag-store-DV5Zr1c4.js">
219
- <link rel="modulepreload" crossorigin href="/assistant/assets/access-CHoOc28F.js">
216
+ <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-navigation-DsN0hcpL.js">
217
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-subagent-card-data-DHuNtSy9.js">
218
+ <link rel="modulepreload" crossorigin href="/assistant/assets/assistant-feature-flag-store-CAdgpPiS.js">
219
+ <link rel="modulepreload" crossorigin href="/assistant/assets/access-DS79PSR3.js">
220
220
  <link rel="modulepreload" crossorigin href="/assistant/assets/research-facts-B7Ev1zv0.js">
221
221
  <link rel="modulepreload" crossorigin href="/assistant/assets/ban-B__z3LwE.js">
222
222
  <link rel="modulepreload" crossorigin href="/assistant/assets/research-results-view-C4sIw2gK.js">
@@ -226,12 +226,12 @@
226
226
  <link rel="modulepreload" crossorigin href="/assistant/assets/list-DNbTcxAh.js">
227
227
  <link rel="modulepreload" crossorigin href="/assistant/assets/rotate-ccw-BjzeX7qz.js">
228
228
  <link rel="modulepreload" crossorigin href="/assistant/assets/shield-check-22NwY9JM.js">
229
- <link rel="modulepreload" crossorigin href="/assistant/assets/utils-BCDvGOqU.js">
230
- <link rel="modulepreload" crossorigin href="/assistant/assets/invalidate-plugin-queries-DamxiwYv.js">
229
+ <link rel="modulepreload" crossorigin href="/assistant/assets/utils-B0rBxtYP.js">
230
+ <link rel="modulepreload" crossorigin href="/assistant/assets/invalidate-plugin-queries-C3NTXkCX.js">
231
231
  <link rel="modulepreload" crossorigin href="/assistant/assets/native-deep-link-DCBJ-Rw0.js">
232
232
  <link rel="modulepreload" crossorigin href="/assistant/assets/oauth-connection-utils-CWPUW4MK.js">
233
233
  <link rel="modulepreload" crossorigin href="/assistant/assets/oauth-popup-OhSYYlQF.js">
234
- <link rel="modulepreload" crossorigin href="/assistant/assets/first-run-scope-DKYDP-Kz.js">
234
+ <link rel="modulepreload" crossorigin href="/assistant/assets/first-run-scope-CL5YbC3b.js">
235
235
  <link rel="modulepreload" crossorigin href="/assistant/assets/onboarding-layout-DLs1hfp_.js">
236
236
  <link rel="modulepreload" crossorigin href="/assistant/assets/hard-navigate-DyUrcxe0.js">
237
237
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-supports-bookmarks-C3J7FtDn.js">
@@ -240,31 +240,31 @@
240
240
  <link rel="modulepreload" crossorigin href="/assistant/assets/sliders-horizontal-slneqAyY.js">
241
241
  <link rel="modulepreload" crossorigin href="/assistant/assets/mic-xmDFUbCL.js">
242
242
  <link rel="modulepreload" crossorigin href="/assistant/assets/users-iLvfYFOP.js">
243
- <link rel="modulepreload" crossorigin href="/assistant/assets/settings-navigation-Ccol_TOM.js">
243
+ <link rel="modulepreload" crossorigin href="/assistant/assets/settings-navigation-CSG7jiyJ.js">
244
244
  <link rel="modulepreload" crossorigin href="/assistant/assets/workspace-theme-tokens-DNNwX-XS.js">
245
- <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-list-fetchers-DLZho4T7.js">
246
- <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-queries-Bvh4bAZ6.js">
247
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-app-theme-CGie3Dma.js">
248
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-assistant-capability-C8pZDYlr.js">
245
+ <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-list-fetchers-DM-Y61u5.js">
246
+ <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-queries-CWvK6RLK.js">
247
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-app-theme-Dg8A6vPA.js">
248
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-assistant-capability-CDS7GbSO.js">
249
249
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-bundled-components-DPqbVXi9.js">
250
250
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-avatar-accent-var-vpakP1ce.js">
251
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-bookmarks-CIhaNp5_.js">
251
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-bookmarks-CK-nOiT-.js">
252
252
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-edge-swipe-Wm9pU2HX.js">
253
253
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-swipe-engine-6PcZZMVD.js">
254
254
  <link rel="modulepreload" crossorigin href="/assistant/assets/plugins-surface-B43Op43l.js">
255
- <link rel="modulepreload" crossorigin href="/assistant/assets/installed-plugins-query-C29LGAEV.js">
255
+ <link rel="modulepreload" crossorigin href="/assistant/assets/installed-plugins-query-Cgek0q7G.js">
256
256
  <link rel="modulepreload" crossorigin href="/assistant/assets/doctor-handoff-store-CYjL1S0n.js">
257
257
  <link rel="modulepreload" crossorigin href="/assistant/assets/shield-fzs_emVe.js">
258
258
  <link rel="modulepreload" crossorigin href="/assistant/assets/threshold-presets-BdTTHCnm.js">
259
259
  <link rel="modulepreload" crossorigin href="/assistant/assets/trust-rules-api-B5lfygCA.js">
260
260
  <link rel="modulepreload" crossorigin href="/assistant/assets/dictation-overlay-pePw7mLd.js">
261
261
  <link rel="modulepreload" crossorigin href="/assistant/assets/native-file-ySSv1sQ7.js">
262
- <link rel="modulepreload" crossorigin href="/assistant/assets/deploy-store-Brp7LoZ_.js">
262
+ <link rel="modulepreload" crossorigin href="/assistant/assets/deploy-store-D6snB1j5.js">
263
263
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-subagent-CRA2B82x.js">
264
264
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-tone-BKwvoDSj.js">
265
- <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-cache-DU44A0zv.js">
265
+ <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-cache-DKvwwWNo.js">
266
266
  <link rel="modulepreload" crossorigin href="/assistant/assets/external-urls-_vjsdj2L.js">
267
- <link rel="modulepreload" crossorigin href="/assistant/assets/open-workspace-file-DNaU5wg2.js">
267
+ <link rel="modulepreload" crossorigin href="/assistant/assets/open-workspace-file-DtK3a84K.js">
268
268
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-bundled-avatar-components-Bbs4vCnX.js">
269
269
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-effective-timezone-Dqs8OaXJ.js">
270
270
  <link rel="modulepreload" crossorigin href="/assistant/assets/useInfiniteQuery-Dk8q0n49.js">
@@ -293,7 +293,7 @@
293
293
  <link rel="modulepreload" crossorigin href="/assistant/assets/smartphone-mDNwm_ss.js">
294
294
  <link rel="modulepreload" crossorigin href="/assistant/assets/sun-Dw0t1n1O.js">
295
295
  <link rel="modulepreload" crossorigin href="/assistant/assets/workflow-cWWiPi3K.js">
296
- <link rel="modulepreload" crossorigin href="/assistant/assets/routes-Bzk5oLRb.js">
296
+ <link rel="modulepreload" crossorigin href="/assistant/assets/routes-CaP5Tqj7.js">
297
297
  <link rel="stylesheet" crossorigin href="/assistant/assets/src-CfUWwwYf.css">
298
298
  <link rel="stylesheet" crossorigin href="/assistant/assets/index-UKZ4bO6i.css">
299
299
  <script>window.__VELLUM_CONFIG__={"webUrl":"https://www.vellum.ai","platformUrl":"https://platform.vellum.ai"}</script></head>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/web",
3
- "version": "0.11.0-staging.1",
3
+ "version": "0.11.0-staging.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Pre-built web SPA for the Vellum Assistant",
@@ -1 +0,0 @@
1
- import{n as e}from"./auth-store-BW4V6iLb.js";import{t}from"./assistant-feature-flag-store-DV5Zr1c4.js";function n(e,t){return t||e?.isStaff===!0||e?.email?.toLowerCase().endsWith(`@vellum.ai`)===!0}function r(){return n(e.use.user(),t.use.settingsDeveloperNav()===!0)}export{r as t};
@@ -1 +0,0 @@
1
- import{f as e,h as t,lt as n,m as r}from"./local-mode-BTovbt13.js";import{n as i,t as a}from"./resolved-assistants-store-Dw5UuGyB.js";import{F as o,N as s,T as c,n as l}from"./auth-store-BW4V6iLb.js";import{u}from"./native-biometric-BAMIyaSS.js";import{l as d}from"./remote-gateway-session-yRYdsfDx.js";import{a as f,i as p,n as m,r as h,s as g}from"./prefs-bw85lYLp.js";function _(e){let t=c();return(t==null?e:a(e,t)).some(e=>e.isPlatformHosted)}function v(a){let{sessionStatus:c,platformSession:v}=l.getState(),{assistants:y,assistantsHydrated:b}=i.getState(),x=t();return{isLocalMode:e(),isPlatformDisabled:r(),isRemoteGateway:x,remoteGatewayPublicPathPrefix:x?d():``,isGatewayAuth:n(),isNative:u(),hasAssistants:y.length>0,hasPlatformHostedAssistant:_(y),sessionSettled:o(c),isAuthenticated:s(c),platformSession:v,tosAccepted:g(),privacyConsent:f(),analyticsConsentCurrent:m(),diagnosticsConsentCurrent:p(),consentHydrated:h(),assistantsHydrated:b,...a}}export{v as t};
@@ -1 +0,0 @@
1
- import{u as e}from"./routes-D9sNqB_o.js";import{t}from"./conversation-store-C--wWMNW.js";import{r as n}from"./viewer-store-Ct0SDE-n.js";import{t as r}from"./haptics-DvWjk9Fg.js";import{n as i}from"./subagent-store-CQKOOAm6.js";import{t as a}from"./workflow-store-CMNMu-fc.js";import{t as o}from"./conversation-selection-oJy8Oht3.js";import{t as s}from"./sound-manager-DlaDOZ8r.js";var c=`vellum:focus-composer`,l=!1;function u(){l=!0,typeof window<`u`&&window.dispatchEvent(new Event(c))}function d(){let e=l;return l=!1,e}var f=[`input`,`textarea`,`select`,`[contenteditable=""]`,`[contenteditable="true"]`,`[role="textbox"]`].join(`,`);function p(e){return!!e?.closest(f)}function m(e){return!!e?.closest(`a[href], button, summary`)}function h(e,t){return!(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey||e.isComposing||e.keyCode===229||typeof e.key!=`string`||e.key.length!==1||p(t)||e.key===` `&&m(t))}function g({value:e,text:t,selectionStart:n,selectionEnd:r}){let i=Math.max(0,Math.min(n??e.length,e.length)),a=Math.max(i,Math.min(r??i,e.length));return{value:e.slice(0,i)+t+e.slice(a),cursor:i+t.length}}function _(o,s,c){c?.silent||r.light(),n.getState().setMainView(`chat`),i.getState().reset(),a.getState().reset(),t.getState().setActiveConversationId(s),o(c?.messageId?e.conversationAtMessage(s,c.messageId):e.conversation(s))}function v(c,l){l?.silent||(r.light(),s().play(`new_conversation`)),n.getState().setMainView(`chat`),i.getState().reset(),a.getState().reset();let d=o();t.getState().setActiveConversationId(d);let f=e.conversation(d);if(l?.prompt){let e=new URLSearchParams({prompt:l.prompt});f=`${f}?${e.toString()}`}c(f),u()}export{g as a,d as i,v as n,u as o,c as r,h as s,_ as t};
@@ -1 +0,0 @@
1
- var e={version:1,flags:[{id:`in-chat-onboarding-tour`,scope:`client`,key:`in-chat-onboarding-tour`,label:`In-Chat Onboarding Tour`,description:`Multivariate experiment for the eyes-led in-chat onboarding tour. control = straight to chat after research onboarding (current behavior); tour = the extended tour auto-plays on first workspace entry. Desktop-only: phone-width viewports and the native shell get neither the tour nor its telemetry (not even the exposure event), so the funnel measures desktop sessions exclusively. Targeted via LaunchDarkly (70% tour / 30% control).`,defaultEnabled:`control`,values:[`control`,`tour`]},{id:`user-hosted-enabled`,scope:`client`,key:`user-hosted-enabled`,label:`User Hosted Enabled`,description:`Enable user-hosted onboarding flow`,defaultEnabled:!1},{id:`proactive-tips`,scope:`client`,key:`proactive-tips`,label:`Proactive Tips`,description:`Gates the dismissible proactive tip card in the web sidebar. String-valued so future A/B arms can be added as new values.`,defaultEnabled:`off`,values:[`off`,`on`]},{id:`experiment-activation-flow-2026-06-03`,scope:`both`,key:`experiment-activation-flow-2026-06-03`,label:`Activation Flow Experiment 2026-06-03`,description:`Multivariate activation-flow experiment. control = standard flow; variant-a = activation rail; personal-page = new sign-up-page variant (front-end only). Targeted via LaunchDarkly.`,defaultEnabled:`control`,values:[`control`,`variant-a`,`personal-page`]},{id:`experiment-billing-cta-2026-07-23`,scope:`client`,key:`experiment-billing-cta-2026-07-23`,label:`Experiment: Billing CTA 2026-07-23`,description:`Credit paywall CTA experiment. control = single Add Credits CTA for everyone (opens Add Credits modal). upgrade-cta = FREE users (plan_id base) get a single Upgrade CTA (View Plans takeover) instead; PAID users still get Add Credits.`,defaultEnabled:`control`,values:[`control`,`upgrade-cta`]},{id:`local-docker-enabled`,scope:`client`,key:`local-docker-enabled`,label:`Local Docker Mode`,description:`When enabled, the Local hosting option uses Docker under the hood for sandboxed execution, hiding the separate Docker card`,defaultEnabled:!1},{id:`a2a-channel`,scope:`assistant`,key:`a2a-channel`,label:`A2A Channel`,description:`Enable the A2A (Agent-to-Agent) channel for inter-assistant communication via the open A2A protocol`,defaultEnabled:!1},{id:`settings-developer-nav`,scope:`assistant`,key:`settings-developer-nav`,label:`Settings Developer Nav`,description:`Control Developer nav visibility in macOS settings`,defaultEnabled:!1},{id:`developer-menu-items`,scope:`client`,key:`developer-menu-items`,label:`Developer Menu Items`,description:`Show Component Gallery and Replay Onboarding in the menu bar`,defaultEnabled:!1},{id:`settings-embedding-provider`,scope:`assistant`,key:`settings-embedding-provider`,label:`Embedding Provider Settings`,description:`Show the Embedding service card in Models & Services settings`,defaultEnabled:!1},{id:`multi-platform-assistant`,scope:`client`,key:`multi-platform-assistant`,label:`Multi-Platform Assistant Switcher`,description:`Enable the menu-bar assistant switcher for managing multiple platform-hosted assistants (new/switch/retire)`,defaultEnabled:!1},{id:`quick-input`,scope:`client`,key:`quick-input`,label:`Quick Input`,description:`Enable the Quick Input popover on right-click of the menu bar icon`,defaultEnabled:!1},{id:`expand-completed-steps`,scope:`client`,key:`expand-completed-steps`,label:`Expand Completed Steps`,description:`Auto-expand completed tool call step groups instead of showing them collapsed`,defaultEnabled:!1},{id:`backward-releases`,scope:`assistant`,key:`backward-releases`,label:`Backward Releases`,description:`Show older versions in the version picker, allowing rollback to previous releases`,defaultEnabled:!1},{id:`voice-duplex-handoff`,scope:`assistant`,key:`voice-duplex-handoff`,label:`Voice Duplex Handoff`,description:`When a user barges in during live voice, keep the interrupted turn running as a background subagent instead of discarding it (true-duplex handoff)`,defaultEnabled:!1},{id:`fast-mode`,scope:`assistant`,key:`fast-mode`,label:`Fast Mode`,description:`Enable Anthropic fast mode for Opus models (4.6, 4.7, 4.8), delivering up to 2.5x higher output tokens per second at premium pricing`,defaultEnabled:!1},{id:`teleport`,scope:`client`,key:`teleport`,label:`Teleport`,description:`Enable teleport UI in General settings for moving assistants between hosting environments`,defaultEnabled:!1},{id:`apple-container`,scope:`client`,key:`apple-container`,label:`Apple Container`,description:`Enable assistant sandboxing via Apple Containers on macOS 26+, providing a lightweight native sandbox without third-party dependencies`,defaultEnabled:!1},{id:`fork-from-message`,scope:`client`,key:`fork-from-message`,label:`Fork from Message`,description:`Show the 'Fork from here' option in message overflow menus`,defaultEnabled:!1},{id:`home-tab`,scope:`client`,key:`home-tab`,label:`Home Tab`,description:`Replace the knowledge graph top-level tab with a new Home page showing relationship progression, facts, and capability tiers`,defaultEnabled:!1},{id:`scroll-debug-overlay`,scope:`client`,key:`scroll-debug-overlay`,label:`Scroll Debug Overlay`,description:`Show a live HUD in the top-right of the conversation with scroll geometry, velocity, update rate, and anchor-preserver activity. Developer diagnostic for investigating scroll jank.`,defaultEnabled:!1},{id:`compaction-playground`,scope:`assistant`,key:`compaction-playground`,label:`Compaction Playground`,description:`Expose the developer-only Compaction Playground tab in macOS Settings and enable the /playground/* HTTP endpoints for exercising compaction conditions. Dev-only; default off.`,defaultEnabled:!1},{id:`app-control`,scope:`assistant`,key:`app-control`,label:`App Control`,description:`Enable the app-control skill (per-app screenshot + raw input bypassing AX tree)`,defaultEnabled:!1},{id:`velvet-theme`,scope:`client`,key:`velvet-theme`,label:`Velvet Theme`,description:`Show the Velvet theme option in the macOS appearance settings. Velvet is a dark-mode variant with red/pink accent colors.`,defaultEnabled:!1},{id:`queue-steering`,scope:`assistant`,key:`queue-steering`,label:`Queue Steering`,description:`Enable the 'Push to agent' button on queued messages, allowing users to steer the assistant to a specific queued message by aborting the current generation and promoting the message to the head of the queue.`,defaultEnabled:!1},{id:`chat-pull-to-refresh-enabled`,scope:`client`,key:`chat-pull-to-refresh-enabled`,label:`Chat Pull to Refresh`,description:`Enable pull-to-refresh gesture in the chat view.`,defaultEnabled:!1},{id:`platform-notifications`,scope:`client`,key:`platform-notifications`,label:`Platform Notifications`,description:`Enable the Notifications tab in settings.`,defaultEnabled:!1},{id:`centralized-assistant-status`,scope:`client`,key:`centralized-assistant-status`,label:`Centralized Assistant Status`,description:`Enable client polling of the centralized assistant operational status endpoint.`,defaultEnabled:!1},{id:`preview-channel`,scope:`client`,key:`preview-channel`,label:`Preview Channel`,description:`Enable user-facing Preview release channel controls in assistant settings.`,defaultEnabled:!1},{id:`rollback-enabled`,scope:`assistant`,key:`rollback-enabled`,label:`Rollback Enabled`,description:`Show older versions in the version picker, allowing rollback to previous releases.`,defaultEnabled:!1},{id:`self-hosted-assistant`,scope:`client`,key:`self-hosted-assistant`,label:`Self-Hosted Assistant`,description:`Enable self-hosted assistant configuration.`,defaultEnabled:!1},{id:`web-remote-ingress`,scope:`assistant`,key:`web-remote-ingress`,label:`Web Remote Ingress`,description:`Serve the web client over a public tunnel and enable browser pairing for self-hosted assistants.`,defaultEnabled:!1},{id:`settings-sleep-policy`,scope:`assistant`,key:`settings-sleep-policy`,label:`Settings Sleep Policy`,description:`Enable sleep policy settings.`,defaultEnabled:!1},{id:`velvet`,scope:`client`,key:`velvet`,label:`Velvet`,description:`Enable the Velvet design theme.`,defaultEnabled:!1},{id:`memory-router-playground`,scope:`client`,key:`memory-router-playground`,label:`Memory Router Playground`,description:`Expose the developer-only Memory Router Playground tab in macOS Settings and the /assistant/memory-router-playground web page for dry-running v4 router config overrides against the live page index. Dev-only; default off.`,defaultEnabled:!1},{id:`self-intro-greeting`,scope:`both`,key:`self-intro-greeting`,label:`Self-intro first message`,description:`On the first conversation, send a natural self-introduction (e.g. "Hi Vela, I'm alex. Nice to meet you.") on the user's behalf and route it through real LLM inference, instead of serving the canned first greeting. Names come from the onboarding context; falls back to the canned greeting when no name is known. Exposed to clients so pre-hatch onboarding can compute the source-of-truth initial message, and to the assistant so older clients can still be gated server-side. See assistant/src/daemon/first-greeting.ts (buildSelfIntroMessage).`,defaultEnabled:!1},{id:`channel-trust-floors`,scope:`assistant`,key:`channel-trust-floors`,label:`Channel Trust Floors`,description:`Expose the Channel Trust Floors settings card (per-channel inbound admission policy) on the Privacy settings page. When off, the card is hidden and channels fall back to their default admission floors. On by default; disable to hide the card.`,defaultEnabled:!0},{id:`mcp-add-server`,scope:`assistant`,key:`mcp-add-server`,label:`MCP Add Server`,description:`Show the Add Server action on the MCP settings page. The MCP page itself remains visible; this flag gates only creating new Model Context Protocol server connections.`,defaultEnabled:!1},{id:`os-beta`,scope:`assistant`,key:`os-beta`,label:`OS Beta`,description:`Enable the OS Beta model profile (MiniMax M3 / Together) in the assistant's model profile selection.`,defaultEnabled:!1},{id:`new-thread-suggestions`,scope:`client`,key:`new-thread-suggestions`,label:`New-thread suggestions library`,description:`Replace the empty-state conversation-starter chips with the scrollable, categorized suggestions library and detail drawer (currently mocked data).`,defaultEnabled:!1},{id:`account-mfa`,scope:`client`,key:`account-mfa`,label:`Account MFA`,description:`Surface the Security settings page where users enroll and manage TOTP two-factor authentication for their Vellum (WorkOS) account. Applies to email/password sign-in only.`,defaultEnabled:!1},{id:`chat-credential-reveal`,scope:`assistant`,key:`chat-credential-reveal`,label:`Chat Credential Reveal`,description:"Persist chat secret redactions as sentinel markers instead of the legacy HTML marker, enriched with the vault identity when the value byte-matches a credential revealed this turn. Also gates the `credentials reveal --for-chat` channel and the live-stream swap that replaces an echoed reveal plaintext with its sentinel before emission. Redaction itself is NOT gated: a route-proven reveal plaintext stays out of persisted rows in both modes. Client chip rendering is gated on daemon version, not on this flag.",defaultEnabled:!1},{id:`composer-secret-guard`,scope:`assistant`,key:`composer-secret-guard`,label:`Composer Secret Guard`,description:`Detect API keys/secrets typed into the chat composer and offer secure credential storage before send`,defaultEnabled:!1},{id:`marketing-pricing-takeover`,scope:`client`,key:`marketing-pricing-takeover`,label:`Marketing Pricing Takeover`,description:"Gates the marketing pricing takeover page (www.vellum.ai/pricing) and the `/assistant/checkout?package=<slug>` deep link its package CTAs target. One flag covers both halves of the funnel so they can never be enabled independently and strand a CTA. When off, the checkout deep link redirects to the in-app plans takeover.",defaultEnabled:!1}]};function t(e,t){return e===t||e===`both`}var n=e.flags,r={};function i(e){return r[e]||e.split(`-`).map((e,t)=>e===`ui`?`UI`:t===0?e:e[0].toUpperCase()+e.slice(1)).join(``)}function a(e){let r={};for(let a of n)typeof a.defaultEnabled==`boolean`&&t(a.scope,e)&&(r[i(a.key)]=a.defaultEnabled);return r}function o(e){let r={};for(let a of n)typeof a.defaultEnabled==`string`&&t(a.scope,e)&&(r[i(a.key)]=a.defaultEnabled);return r}var s=a(`client`),c=a(`assistant`),l=o(`client`),u=o(`assistant`),d=new Map;for(let e of n)d.set(i(e.key),e);var f=new Map;for(let e of n)f.set(i(e.key),e.key);function p(e){return i(e)}function m(e){return f.get(e)}function h(e){return d.get(e)}var g=`VITE_VELLUM_FLAG_`;function _(e){return e.toLowerCase().replace(/_/g,`-`)}var v=new Set([`true`,`1`,`yes`,`on`]),y=new Set([`false`,`0`,`no`,`off`]),b=new Map;for(let e of n)b.set(e.key,e);function x(e){return typeof e?.defaultEnabled==`string`}function S(e,t){let n=b.get(e),r=t.toLowerCase();return x(n)?n?.values?n.values.find(e=>e.toLowerCase()===r):t:v.has(r)?!0:y.has(r)?!1:t}function C(){if(typeof window<`u`&&window.__VELLUM_FLAG_OVERRIDES__!=null)return{...window.__VELLUM_FLAG_OVERRIDES__};let e={},t={BASE_URL:`/assistant/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_PLATFORM_MODE:`false`};for(let n of Object.keys(t))if(n.startsWith(g)){let r=_(n.slice(17)),i=t[n];if(i!=null){let t=S(r,i);t!==void 0&&(e[r]=t)}}return e}var w=null;function T(){return w===null&&(w=C()),w}function E(e){let n=T(),r={},i={};for(let[a,o]of Object.entries(n)){let n=b.get(a);if(!n||!t(n.scope,e))continue;let s=p(a);if(x(n)){let e=typeof o==`string`?o:o?`on`:`off`;(typeof o==`string`||n.values?.includes(e))&&(i[s]=e)}else typeof o==`boolean`?r[s]=o:i[s]=o}return{bool:r,str:i}}export{p as a,h as c,l as i,t as l,u as n,n as o,s as r,E as s,c as t,m as u};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{o as t,t as n}from"./capture-error-Bj8_eutd.js";import{t as r}from"./react-BFJW0bSv.js";import{t as i}from"./button-Dy5001j6.js";import{m as a,u as o}from"./chunk-5KNZJZUH-Bsoom5--.js";import{n as s}from"./QueryClientProvider-CMu7CkQU.js";import{t as c}from"./jsx-runtime-D3ZM-ToX.js";import{t as l}from"./progress-bar-C_T5_pf2.js";import{S as u,_ as ee,f as d,g as te,it as f,k as ne,nt as re,y as ie}from"./local-mode-BTovbt13.js";import{t as p}from"./is-electron-m5eeGBnd.js";import{n as ae}from"./resolved-assistants-store-Dw5UuGyB.js";import{r as oe}from"./api-errors-CFiCT7Ap.js";import{A as m,B as se,F as h,H as ce,T as g,V as _,j as le,n as ue,z as de}from"./auth-store-BW4V6iLb.js";import{a as fe,o as pe,r as v}from"./api-BlN0EOWF.js";import{u as me}from"./native-biometric-BAMIyaSS.js";import{u as y}from"./routes-D9sNqB_o.js";import{h as he,o as ge}from"./prefs-bw85lYLp.js";import{i as b,t as x}from"./navigation-resolver-D4jPigYv.js";import{t as S}from"./build-state-DaLynPsy.js";import{t as C}from"./avatar-bundled-components-DPqbVXi9.js";import{t as w}from"./avatar-svg-compositor-Dl-ckXRE.js";import{t as T}from"./onboarding-layout-DLs1hfp_.js";import{t as _e}from"./provider-key-1rLTitmu.js";import{a as ve,i as ye,n as E,r as D,t as O}from"./avatar-random-BiEMZGl7.js";import{t as k}from"./plugin-attribution-DrwveSW_.js";var A=e(r(),1),j=c(),be=800,M=null,N=null,P=null;function F(){M=null,N=null,P=null}var xe={initializing:0,provisioning:.33,connecting:.66,resizing:.85,ready:1},I=1500,Se={initializing:`Getting things ready…`,provisioning:`Setting up your assistant…`,connecting:`Connecting to your assistant…`,resizing:`Setting up your machine…`,ready:`Ready`};function Ce(e,t,n){if(e>=t)return t;let r=1-(1-Math.min(1,n/I))**3;return e+(t-e)*r}function we(){let e=b(S(),{kind:`hatch-gate`});return e.action===`redirect`?{kind:`redirect`,to:e.to}:e.action===`wait`?{kind:`wait`}:{kind:`proceed`}}function L(){let e=o(),r=s(),[c]=a(),b=c.get(`hosting`),S=c.get(`fail`),I=c.get(k),L=p(),R=d()&&b!==null&&b!==`vellum-cloud`,z=b===`vellum-cloud`,B=c.get(x)===`1`,V=ue.use.sessionStatus(),Te=R?h(V):V,[H]=(0,A.useState)(()=>P??=O(C)),U=(0,A.useMemo)(()=>{let e=w(C,H.bodyShape,H.eyeStyle,H.color,320);return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`},[H]),[W,G]=(0,A.useState)(`initializing`),[Ee,K]=(0,A.useState)(null),[De,q]=(0,A.useState)(!1),[Oe,ke]=(0,A.useState)(0),[Ae,J]=(0,A.useState)(0),[je,Me]=(0,A.useState)(0),Y=(0,A.useRef)(W),X=(0,A.useRef)(0),Z=(0,A.useRef)(0),Q=(0,A.useRef)(0),$=(0,A.useCallback)(e=>{X.current=Q.current,Z.current=Date.now(),Y.current=e,G(e),Me(e=>e+1)},[]);return(0,A.useEffect)(()=>{if(S!==null){K(`Simulated hatch failure (developer menu → Replay Hatch Failure).`);return}let i=we();if(i.kind===`redirect`){e(i.to,{replace:!0});return}if(i.kind===`wait`)return;z&&d()&&(f(),re(null)),q(!1);let a=!1,o=null,s=null,c=null,l=Date.now(),p,h=!1,x=!1,C=ge(),w=t=>{try{he(``)}catch(e){n(e,{context:`onboarding_mark_completed`})}J(1),Q.current=1,X.current=1,G(`ready`),Y.current=`ready`,s=setTimeout(()=>{a||(F(),(async()=>{if(await le.checkAssistant(),!a){if(me()){le.markExpectingFirstMessage(),e(`${y.assistant}?onboarding=1`,{replace:!0});return}if(R){let n=new URLSearchParams;b&&n.set(`hosting`,b),t&&n.set(`assistant`,t),I&&n.set(k,I);let r=n.toString();e(`${y.onboarding.research}${r?`?${r}`:``}`,{replace:!0});return}e(y.onboarding.research,{replace:!0})}})())},be)},T=e=>ve(e,H,r),O=async()=>{if($(`provisioning`),!R){try{let e=await v(),t=_(e);if(!a&&e.ok&&t.kind===`active`){d()&&u(e.data.id,e.data.name,g()??void 0),await j(e.data.id);return}t.kind===`auto_hatch`&&(x=!0)}catch{}if(a)return}if(R){try{M||=ne(void 0,b===`docker`?`docker`:void 0);let e=await M;if(a)return;if(!e.ok){F(),K(e.error??`Failed to hatch local assistant.`);return}await te(),e.assistantId&&m(e.assistantId),$(`connecting`);let t=!1;for(;!a&&!t;){if(await ie()){f(),await ee(),t=!0;break}if(Date.now()-l>=3e5){F(),K(`Your assistant is taking longer than expected. Please try again.`);return}await new Promise(e=>{c=setTimeout(e,D)}),c=null}if(a)return;if(e.assistantId)try{await _e(e.assistantId)}catch(e){n(e,{context:`onboarding_apply_provider_key`})}e.assistantId&&await ue.getState().connectLocalAssistant(e.assistantId),e.assistantId&&(ae.getState().upsertFromApi({id:e.assistantId,name:e.assistantId,status:`active`,is_local:!0,created:new Date().toISOString()}),m(e.assistantId),T(e.assistantId)),w(e.assistantId)}catch{if(F(),a)return;K(`Failed to hatch local assistant. Check CLI logs for details.`)}return}try{N||=pe(C?{version:C}:void 0);let e=await N;if(N=null,a)return;if(e.ok&&(p=e.data.id),h=e.ok&&e.status===201,!e.ok){if(t(`Onboarding hatch request failed`,{level:`warning`,extra:{status:e.status,error:e.error}}),se(e.status,e.error)){K(de),q(!0);return}if(!ce(e.status)){K(oe(e.error,void 0,`Failed to start your assistant. Please try again.`));return}}}catch(e){if(N=null,n(e,{context:`onboarding_hatch_assistant`}),a)return}A(0)},A=e=>{a||(o=setTimeout(P,e))},j=async e=>{for($(`connecting`);!a;){try{if((await fe(e)).ok)break}catch{}if(Date.now()-l>=3e5){K(`Your assistant is taking longer than expected. Please try again.`);return}await new Promise(e=>{o=setTimeout(e,D)}),o=null}if(a)return;let n=await ye({assistantId:e,postCheckoutReturn:B,managedHatch:z,hatchStartMs:l,isCancelled:()=>a,onResizeWait:()=>$(`resizing`),registerTimer:e=>{o=e}});if(!a){if(n===`health_timeout`){t(`Onboarding hatch wait exceeded timeout`,{level:`warning`,extra:{maxWaitMs:E,stage:`post_resize_health`}}),K(`Your assistant is taking longer than expected. Please try again.`);return}w()}},P=async()=>{if(!a){if(Date.now()-l>=3e5){t(`Onboarding hatch wait exceeded timeout`,{level:`warning`,extra:{maxWaitMs:E}}),K(`Your assistant is taking longer than expected. Please try again.`);return}try{let e=await v(p);if(a||p&&!e.ok&&e.status===404&&(p=void 0,e=await v(),a))return;let t=_(e);if(t.kind===`active`){if(e.ok){let t=e.data.id;ae.getState().upsertFromApi(e.data),m(t),(h||x)&&T(t),d()&&u(t,e.data.name,g()??void 0),await j(t);return}w();return}if(t.kind===`error`){K(t.message);return}t.kind!==`auto_hatch`&&Y.current===`provisioning`&&$(`connecting`),A(D)}catch(e){if(n(e,{context:`onboarding_poll_assistant`}),a)return;A(D)}}};return O(),()=>{a=!0,o&&clearTimeout(o),s&&clearTimeout(s),c&&clearTimeout(c)}},[Oe,S,H,z,B,Te,e,r,$,R]),(0,A.useEffect)(()=>{Z.current===0&&(Z.current=Date.now());let e,t=()=>{let n=Date.now()-Z.current,r=xe[Y.current],i=Ce(X.current,r,n);Q.current=i,J(i),r-i>1e-6&&(e=requestAnimationFrame(t))};return e=requestAnimationFrame(t),()=>cancelAnimationFrame(e)},[je]),Ee?(0,j.jsx)(T,{children:(0,j.jsxs)(`div`,{role:`alert`,className:`mx-auto flex w-full max-w-xl flex-col items-center ${L?`min-h-full px-8 pt-21 pb-28 electron-prechat-type`:`min-h-screen justify-center px-6 pb-40`} text-center text-[var(--content-default)]`,children:[(0,j.jsx)(`h1`,{className:L?`text-title-large`:`text-3xl font-semibold tracking-tight`,children:`Something went wrong`}),(0,j.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)] ${L?`mt-3.5`:`mt-4`}`,children:Ee}),De&&(0,j.jsxs)(`div`,{className:`mt-6 flex w-full max-w-sm flex-col items-center gap-3`,children:[(0,j.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Get started today with a local assistant`}),(0,j.jsx)(i,{asChild:!0,variant:`primary`,size:`regular`,fullWidth:!0,className:L?void 0:`h-11 text-base`,children:(0,j.jsx)(`a`,{href:`${window.location.origin}/download`,children:`Download the macOS app`})})]}),(0,j.jsx)(`img`,{src:U,alt:``,width:160,height:160,className:`${L?`my-auto py-8`:`my-16`} onboarding-avatar-failed`}),(0,j.jsxs)(`div`,{className:`flex w-full flex-col ${L?`gap-2.5 max-w-[280px]`:`gap-2 max-w-sm`}`,children:[(0,j.jsx)(i,{variant:`primary`,size:`regular`,fullWidth:!0,className:L?void 0:`h-11 text-base`,onClick:()=>{X.current=0,Z.current=Date.now(),Y.current=`initializing`,Q.current=0,G(`initializing`),J(0),Me(e=>e+1),K(null),q(!1),ke(e=>e+1)},children:`Try again`}),(0,j.jsx)(i,{variant:`outlined`,size:`regular`,fullWidth:!0,className:L?void 0:`h-11 text-base`,onClick:()=>void e(R?y.onboarding.hosting:y.onboarding.privacy,{replace:!0}),children:`Back`})]})]})}):(0,j.jsx)(T,{children:(0,j.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${L?`min-h-full px-8 pt-21 pb-28 electron-prechat-type`:`min-h-screen justify-center px-6 pb-40`} text-center text-[var(--content-default)]`,children:[(0,j.jsx)(`h1`,{className:L?`text-title-large`:`text-3xl font-semibold tracking-tight`,children:W===`ready`?`Your assistant is ready!`:`Waking up…`}),W!==`ready`&&(0,j.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)] ${L?`mt-3.5`:`mt-4`}`,children:`Hang tight — your assistant will have a few questions for you once it's up.`}),(0,j.jsx)(`img`,{src:U,alt:``,width:160,height:160,className:`${L?`my-auto py-8`:`my-16`} ${W===`ready`?`onboarding-avatar-awake`:`onboarding-avatar-pulse`}`}),(0,j.jsx)(l,{value:Ae,height:6,className:`w-full ${L?`max-w-[200px]`:`max-w-sm`}`,"aria-label":`Assistant startup progress`}),(0,j.jsx)(`p`,{className:`text-[var(--content-tertiary)] ${L?`mt-4 text-label-small-default`:`mt-3 text-body-small-default`}`,children:Se[W]})]})})}export{L as HatchingScreen};
@@ -1 +0,0 @@
1
- import{S as e,_ as t}from"./native-biometric-BAMIyaSS.js";import{u as n}from"./routes-D9sNqB_o.js";function r({isNative:e,isLocalHatch:t}){return e||t?n.onboarding.hatching:n.onboarding.research}function i(e){return e.tosAccepted&&e.privacyConsent}function a(e){return i(e)&&e.analyticsConsentCurrent&&e.diagnosticsConsentCurrent}var o=`${n.assistant}/onboarding`,s=new Set([n.onboarding.hosting,n.onboarding.apiKey]),c=new Set([n.welcome,n.selectAssistant]);function l(e){return e.startsWith(`${o}/`)||e===o}function u(e){return e?n.welcome:n.onboarding.privacy}var d=new Set([`${n.settings.root}/billing`,n.settings.usage]);function f(e,t){if(!d.has(e))return!1;let n=t.indexOf(`?`);return n<0?!1:new URLSearchParams(t.slice(n+1)).has(`session_id`)}var p=`post_checkout`;function m(e){return`${r({isNative:e.isNative,isLocalHatch:!1})}?hosting=vellum-cloud&${p}=1`}var h=new Set([n.onboarding.hatching,n.onboarding.research]);function g(t){let n=e(t,``);if(!n.startsWith(`/`))return null;let r=n.indexOf(`?`);return r<0||!h.has(n.slice(0,r))||new URLSearchParams(n.slice(r+1)).get(`post_checkout`)!==`1`?null:n}function _(e){if(e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`//`))try{return new URL(e,`http://placeholder.invalid`).pathname}catch{return e}return e}function v(e,t){return t===n.welcome?e.hasAssistants?n.selectAssistant:n.onboarding.hosting:t===n.selectAssistant?`${t}?fromLogin=1`:t}function y(e,t){switch(t.kind){case`route-guard`:return x(e,t.pathname);case`onboarding-intercept`:return P(e,t.intendedDestination);case`hatch-gate`:return F(e);case`post-auth`:return R(t.authIntent,t.returnTo,t.fallback);case`post-retire`:return z(e)}}var b=[S,C,w,E,D,O,A,M,N];function x(e,t){let n=t.indexOf(`?`),r=n>=0?t.slice(0,n):t;for(let n of b){let i=n(e,r,t);if(i)return i}return{action:`allow`}}function S(e){return e.sessionSettled?null:{action:`wait`}}function C(e,t,n){if(e.hasPlatformHostedAssistant||!f(t,n)||!e.isAuthenticated)return null;if(!e.isLocalMode&&!e.assistantsHydrated)return{action:`wait`};if(e.isLocalMode){if(e.platformSession===`unknown`)return{action:`wait`,waitFor:`platform-session`};if(e.platformSession!==`present`)return null}return{action:`redirect`,to:m(e)}}function w(e,t,n){return!e.isGatewayAuth||g(n)?null:{action:`allow`}}function T(e,t){let r=e.remoteGatewayPublicPathPrefix;return!e.isRemoteGateway||!r?t:t===r?n.assistant:t.startsWith(`${r}/`)?t.slice(r.length):t}function E(e,t,r){if(!e.isRemoteGateway||e.isAuthenticated)return null;let i=T(e,r);return{action:`redirect`,to:`${n.remotePair}?returnTo=${encodeURIComponent(i)}`}}function D(e,t,r){return e.isAuthenticated?null:e.isLocalMode&&(l(t)||c.has(t))?t===n.selectAssistant&&!e.hasAssistants?{action:`redirect`,to:n.onboarding.hosting}:{action:`allow`}:e.isLocalMode&&!e.hasAssistants?{action:`redirect`,to:n.welcome}:e.isLocalMode?{action:`redirect`,to:n.selectAssistant}:{action:`redirect`,to:`${n.account.login}?returnTo=${encodeURIComponent(r)}`}}function O(e,t){return c.has(t)?e.isLocalMode?t===n.selectAssistant&&!e.hasAssistants?{action:`redirect`,to:n.onboarding.hosting}:{action:`allow`}:{action:`redirect`,to:n.assistant}:s.has(t)&&!e.isLocalMode?{action:`redirect`,to:n.assistant}:null}function k(e,t){let r=u(e.isLocalMode);if(r!==n.onboarding.privacy)return r;let i=g(t);return i?`${r}?returnTo=${encodeURIComponent(i)}`:r}function A(e,t,r){return t===n.reviewTerms?{action:`allow`}:l(t)?j(e,t,r):null}function j(e,t,r){if(!h.has(t))return{action:`allow`};if(t===n.onboarding.research){if(!e.isLocalMode&&!e.consentHydrated)return{action:`wait`};if(e.consentHydrationTimedOut)return{action:`allow`}}if(!i(e))return{action:`redirect`,to:k(e,r)};if(t===n.onboarding.research&&g(r)&&!e.isPlatformDisabled&&e.platformSession===`present`&&!a(e)){let e=encodeURIComponent(r);return{action:`redirect`,to:`${n.reviewTerms}?returnTo=${e}`}}return{action:`allow`}}function M(e,t,r){if(e.hasAssistants||t===n.checkout)return null;if(e.isLocalMode)return e.platformSession===`unknown`?{action:`wait`,waitFor:`platform-session`}:e.platformSession===`present`?{action:`redirect`,to:n.onboarding.hosting}:{action:`redirect`,to:n.welcome};if(!e.assistantsHydrated||!e.consentHydrated)return{action:`wait`};if(!i(e))return{action:`redirect`,to:n.onboarding.privacy};if(!a(e)){let e=encodeURIComponent(r);return{action:`redirect`,to:`${n.reviewTerms}?returnTo=${e}`}}return{action:`redirect`,to:n.onboarding.hatching}}function N(e,t,r){if(e.isPlatformDisabled||e.platformSession!==`present`||a(e))return null;if(!e.consentHydrated&&!e.isLocalMode)return{action:`wait`};let i=encodeURIComponent(r);return{action:`redirect`,to:`${n.reviewTerms}?returnTo=${i}`}}function P(e,t){if(e.isLocalMode&&e.hasAssistants||i(e))return{action:`allow`};let r=_(t);return!r.startsWith(n.assistant)||r.startsWith(`${n.assistant}/onboarding`)||r===n.reviewTerms?{action:`allow`}:{action:`redirect`,to:u(e.isLocalMode)}}function F(e){return e.sessionSettled?!e.isAuthenticated&&!e.isLocalMode?{action:`redirect`,to:n.account.login}:i(e)?!e.isLocalMode&&!a(e)?{action:`redirect`,to:n.reviewTerms}:{action:`allow`}:{action:`redirect`,to:u(e.isLocalMode)}:{action:`wait`}}var I=`/import`;function L(e){return e===I||e.startsWith(`${I}?`)||e.startsWith(`${I}/`)}function R(n,r,i){let a=e(r,i),o=t({intent:n,returnTo:a});return n===`signup`&&L(a)?{action:`redirect`,to:a}:{action:`redirect`,to:o}}function z(e){return e.hasAssistants?{action:`redirect`,to:e.isLocalMode?n.selectAssistant:n.assistant}:e.isLocalMode?e.platformSession===`present`?{action:`redirect`,to:n.onboarding.hosting}:{action:`redirect`,to:n.welcome}:{action:`redirect`,to:n.onboarding.privacy}}export{r as a,y as i,g as n,v as r,p as t};
@@ -1 +0,0 @@
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{f as o}from"./local-mode-BTovbt13.js";import{t as s}from"./is-electron-m5eeGBnd.js";import{f as c,i as l,n as u}from"./auth-store-BW4V6iLb.js";import{m as d,v as f,y as p}from"./native-biometric-BAMIyaSS.js";import{u as m}from"./routes-D9sNqB_o.js";import{d as h,m as g,p as _}from"./prefs-bw85lYLp.js";import{a as v,n as y}from"./navigation-resolver-D4jPigYv.js";import{l as b,n as x,o as S}from"./funnel-events-n2IVlwTo.js";import{t as C}from"./onboarding-layout-DLs1hfp_.js";import{t as w}from"./plugin-attribution-DrwveSW_.js";import{n as T,t as E}from"./consent-controls-OcgxuxS0.js";import{r as D,t as O}from"./checkout-continuation-DIMnSvv3.js";var k=e(t(),1),A=a();function j({current:e,total:t,color:n}){return(0,A.jsx)(`div`,{className:`flex items-center gap-1.5`,role:`group`,"aria-label":`Step ${e+1} of ${t}`,children:Array.from({length:t},(t,r)=>(0,A.jsx)(`div`,{"aria-hidden":`true`,className:`h-[3px] w-8 rounded-full transition-colors`,style:n?{backgroundColor:n,opacity:r<=e?1:.3}:void 0,children:n?null:(0,A.jsx)(`div`,{className:`h-full w-full rounded-full bg-[var(--content-default)] ${r<=e?``:`opacity-20`}`})},r))})}function M(){let e=i(),[t]=r(),a=u.use.user()?.id??null,M=s(),N=d(),[P,F]=_(),I=P??!0,[L,R]=g(),[z,B]=h(),V=l(),H=D();(0,k.useEffect)(()=>{N||b()},[N]);let U=t.get(`preview`)===`true`,W=(0,k.useCallback)(e=>{},[]),G=U?W:F,K=U?W:R,q=U?W:B,J=(0,k.useCallback)(()=>{if(U)return;c({userId:a,tos:L,privacy:z,shareAnalytics:null,shareDiagnostics:I,hasPlatformSession:V}),N||S(x.privacyTos,{userId:a});let n=y(t.get(`returnTo`));if(n){e(n);return}let r=t.get(`hosting`),i=new URLSearchParams;r&&i.set(`hosting`,r);let s=t.get(w);s&&i.set(w,s);let l=i.toString(),u=`${v({isNative:N,isLocalHatch:o()&&r!==null&&r!==`vellum-cloud`})}${l?`?${l}`:``}`,d=p();if(d?.kind===`package`&&d.resumeAfterOnboarding===!0)if(H===`disabled`)f();else{let t=new URLSearchParams({package:d.packageKey,[O]:u});e(`${m.checkout}?${t.toString()}`);return}e(u)},[z,V,N,U,e,t,I,H,L,a]);return(0,A.jsx)(C,{children:(0,A.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${M?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`px-6 py-16`} text-[var(--content-default)]`,children:[N&&(0,A.jsx)(`div`,{className:`mb-8 flex w-full justify-center`,style:{animation:`fadeInUp 0.3s ease-out 0.1s both`},children:(0,A.jsx)(j,{current:2,total:3})}),(0,A.jsx)(`h1`,{className:M?`text-title-large`:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Before You Start`}),(0,A.jsx)(`p`,{className:`text-center text-body-medium-lighter text-[var(--content-tertiary)] ${M?`mt-3.5`:`mt-4`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Choose your privacy preferences. You can update these anytime in the Settings.`}),(0,A.jsx)(T,{electron:M,showAnalytics:!1,shareAnalytics:!1,shareDiagnostics:I,onShareAnalyticsChange:W,onShareDiagnosticsChange:G,className:`mt-8 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`}}),(0,A.jsx)(E,{electron:M,privacyConsent:z,tosAccepted:L,onPrivacyChange:q,onTosChange:K,className:`mt-6 w-full`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`}}),(0,A.jsxs)(`div`,{className:`mt-8 flex w-full flex-col ${M?`gap-2.5`:`gap-2`}`,style:{animation:`fadeInUp 0.5s ease-out 0.55s both`},children:[(0,A.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,disabled:!L||!z,onClick:J,className:M?void 0:`h-11 text-base`,children:`Start`}),(0,A.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,onClick:()=>e(o()?m.onboarding.hosting:m.onboarding.start),className:M?void 0:`h-11 text-base`,children:`Back`})]})]})})}export{M as PrivacyScreen};