@vellumai/web 0.11.3-staging.1 → 0.11.3-staging.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/assets/{access-BEF4g5Xz.js → access-RDaLlBt5.js} +1 -1
  2. package/dist/assets/{account-page-CjBQhkfo.js → account-page-JyXn859b.js} +1 -1
  3. package/dist/assets/{account-shell-BwGiy59u.js → account-shell-DuR-x14B.js} +1 -1
  4. package/dist/assets/{acp-run-detail-panel-BPcNCjiL.js → acp-run-detail-panel-BsGRKgJi.js} +1 -1
  5. package/dist/assets/{activity-steps-panel-DhuSLpCc.js → activity-steps-panel-DGS78a-e.js} +1 -1
  6. package/dist/assets/ai-page-84Y9c_q2.js +1 -0
  7. package/dist/assets/{api-key-screen-D1j3oper.js → api-key-screen-vFF5CrFw.js} +1 -1
  8. package/dist/assets/{app-card-BBt0ilaM.js → app-card-Df-Gy7pD.js} +1 -1
  9. package/dist/assets/{assistant-status-panel-DnkQ1jrJ.js → assistant-status-panel-C92c678g.js} +1 -1
  10. package/dist/assets/{auth-store-CPVpJ_c7.js → auth-store-BJdkkmzu.js} +1 -1
  11. package/dist/assets/{avatar-random-BHVo9v-a.js → avatar-random-BiLhcs1I.js} +1 -1
  12. package/dist/assets/{background-task-detail-panel-CyVrsboL.js → background-task-detail-panel-Dq1DgR5i.js} +1 -1
  13. package/dist/assets/billing-page-CAFoZYGH.js +3 -0
  14. package/dist/assets/{bookmarks-page-M8X5Jj_q.js → bookmarks-page-EeUOpkIO.js} +1 -1
  15. package/dist/assets/{build-state-DGpOoR0F.js → build-state-DJaFMxtL.js} +1 -1
  16. package/dist/assets/channels-page-route-DS9XLjMy.js +9 -0
  17. package/dist/assets/{chat-markdown-message-Dr9rA1lM.js → chat-markdown-message-C6oOqDdl.js} +1 -1
  18. package/dist/assets/{checkout-page-CQdvMHxx.js → checkout-page-BqIlZAum.js} +1 -1
  19. package/dist/assets/{command-palette-DjHOOk8U.js → command-palette-D6aRon6x.js} +1 -1
  20. package/dist/assets/{command-palette-window-page-msewbnL1.js → command-palette-window-page-B1jt_AiM.js} +1 -1
  21. package/dist/assets/{common-BUQt6ee_.js → common-wFfOb0rN.js} +1 -1
  22. package/dist/assets/{composer-settings-veIRzcPS.js → composer-settings-Du4kV9LG.js} +1 -1
  23. package/dist/assets/{contacts-page-route-Caog1niM.js → contacts-page-route-B4eanbVf.js} +1 -1
  24. package/dist/assets/{conversation-navigation-DqU55C7j.js → conversation-navigation-gR_RLe1J.js} +1 -1
  25. package/dist/assets/{conversation-queries-Bh_7RMKd.js → conversation-queries-Bx_JApUN.js} +1 -1
  26. package/dist/assets/{credentials-page-D3H8KP0a.js → credentials-page-BLMs_5u_.js} +1 -1
  27. package/dist/assets/{csv-preview-Crel8fKb.js → csv-preview-B0xuZwnc.js} +1 -1
  28. package/dist/assets/{debug-page-By8-4Cjy.js → debug-page-7plKE23B.js} +2 -2
  29. package/dist/assets/{deploy-dialogs-Dak-wWO4.js → deploy-dialogs-Bjz3OS-8.js} +1 -1
  30. package/dist/assets/{deploy-store-0HlKHhLJ.js → deploy-store-BGcHwvB5.js} +1 -1
  31. package/dist/assets/{detail-card-CmSV969e.js → detail-card-hWrhardR.js} +1 -1
  32. package/dist/assets/{detail-drawer-HN4NsyKg.js → detail-drawer-s-zfqqMy.js} +1 -1
  33. package/dist/assets/{detail-panel-stop-button-DV6U5A7y.js → detail-panel-stop-button-CC6QoK-R.js} +1 -1
  34. package/dist/assets/{detail-shell-rL601Rqo.js → detail-shell-PCaxY4Tf.js} +1 -1
  35. package/dist/assets/{developer-page-Bgg8qW6q.js → developer-page-CV5m0xk-.js} +1 -1
  36. package/dist/assets/{document-viewer-container-BkKmz-ar.js → document-viewer-container-wjJ6ACJv.js} +2 -2
  37. package/dist/assets/{document-viewer-page-B-jAUGAO.js → document-viewer-page-C8YfZSmS.js} +1 -1
  38. package/dist/assets/{emails-page-B0r-ksKy.js → emails-page-BqvrSqnK.js} +1 -1
  39. package/dist/assets/{file-editor-BQUkusyI.js → file-editor-DOnVeKOG.js} +1 -1
  40. package/dist/assets/file-markdown-CGC6ZrPT.js +2 -0
  41. package/dist/assets/{first-run-scope-U5LrdMhR.js → first-run-scope-DKd0ZevK.js} +1 -1
  42. package/dist/assets/{general-page-Ce41M2hE.js → general-page-C7kX0xLP.js} +1 -1
  43. package/dist/assets/{hatching-screen-TI6k1_Q2.js → hatching-screen-Dws0nCOf.js} +1 -1
  44. package/dist/assets/{home-page-route-D6oL1pWj.js → home-page-route-Qs5WbFPD.js} +1 -1
  45. package/dist/assets/home-tool-permission-card-Do3YeiVC.js +1 -0
  46. package/dist/assets/{hosting-screen-CGkMm-2o.js → hosting-screen-BJB_azfa.js} +1 -1
  47. package/dist/assets/identity-page-route-uZNXQbMq.js +7 -0
  48. package/dist/assets/{index-3KliM4Ki.js → index-DRExgbkb.js} +1 -1
  49. package/dist/assets/index-Q1K0w5kB.css +2 -0
  50. package/dist/assets/{inspect-page-DD024DeO.js → inspect-page-C1dITgHA.js} +3 -3
  51. package/dist/assets/integration-icon-R8opqT3n.js +1 -0
  52. package/dist/assets/integrations-page-D4EH9FG0.js +1 -0
  53. package/dist/assets/{intelligence-layout-DOTYC75R.js → intelligence-layout-ByKfD_gm.js} +1 -1
  54. package/dist/assets/{library-detail-page-B2C4hPSd.js → library-detail-page-BciW_57s.js} +1 -1
  55. package/dist/assets/{library-page-Y2NwunY9.js → library-page-CMO0VZux.js} +1 -1
  56. package/dist/assets/{local-runtime-upgrade-12Yco-XF.js → local-runtime-upgrade-CXKbgZ4c.js} +1 -1
  57. package/dist/assets/{login-flow-fmfcNxyU.js → login-flow-CN5J4YsY.js} +1 -1
  58. package/dist/assets/{login-page-HFoMsSuP.js → login-page-5jtwkaF1.js} +1 -1
  59. package/dist/assets/{logout-page-B_3PiI2q.js → logout-page-Bz0x8UvE.js} +1 -1
  60. package/dist/assets/{logs-layout-7JGOJ0Gg.js → logs-layout-B_GC1zBM.js} +1 -1
  61. package/dist/assets/{memory-page-route-Cf8FoT6z.js → memory-page-route-BtL6zJZb.js} +1 -1
  62. package/dist/assets/{memory-router-playground-page-B4vWmkYZ.js → memory-router-playground-page-e4uW8QiT.js} +1 -1
  63. package/dist/assets/{message-files-panel-B8NzbXp3.js → message-files-panel-DxmbSrm8.js} +1 -1
  64. package/dist/assets/{messages-JRZkqLeA.js → messages-DSdy6Lfi.js} +1 -1
  65. package/dist/assets/{metric-card-Ba-Ju2sO.js → metric-card-BSJPacNm.js} +1 -1
  66. package/dist/assets/{mobile-sidebar-drawer-B0rTd7jy.js → mobile-sidebar-drawer-BGHwfePU.js} +1 -1
  67. package/dist/assets/{multi-activity-group-5OxVs26d.js → multi-activity-group-D_OVaru-.js} +1 -1
  68. package/dist/assets/{not-found-zOjj1km-.js → not-found-ClBCK2Sg.js} +1 -1
  69. package/dist/assets/{notifications-pzRj4j4m.js → notifications-G7qqgf4f.js} +1 -1
  70. package/dist/assets/{notifications-page-DTTyILgl.js → notifications-page-AW-ftrs5.js} +1 -1
  71. package/dist/assets/{open-workspace-file-FgLn-SuR.js → open-workspace-file-DViQQLp4.js} +2 -2
  72. package/dist/assets/{page-shell-DH240m1W.js → page-shell-Tpt9AIL2.js} +1 -1
  73. package/dist/assets/pairing-page-CGoWIhv7.js +1 -0
  74. package/dist/assets/{personality-page-B1BQNH7w.js → personality-page-avdvL3Dx.js} +1 -1
  75. package/dist/assets/{plans-page-B8oZfefa.js → plans-page-CdNdqHks.js} +1 -1
  76. package/dist/assets/{platform-login-notice-3g7rHtc3.js → platform-login-notice-BEDBlins.js} +1 -1
  77. package/dist/assets/{platform-loopback-page-DwnkFF3M.js → platform-loopback-page-DcHVugCF.js} +1 -1
  78. package/dist/assets/{plugin-detail-page-BrrXgSIx.js → plugin-detail-page-CnlqMl6e.js} +1 -1
  79. package/dist/assets/plugins-surface-C5i913ST.js +1 -0
  80. package/dist/assets/{preview-error-Di5TH4XQ.js → preview-error-CVMngD78.js} +1 -1
  81. package/dist/assets/{privacy-page-4LAU5IqF.js → privacy-page-CfJXPReU.js} +1 -1
  82. package/dist/assets/{privacy-screen-CNnBXznE.js → privacy-screen-4GElE18b.js} +1 -1
  83. package/dist/assets/{profile-pickers-BSDVzs_G.js → profile-pickers-ChG4_Gpc.js} +1 -1
  84. package/dist/assets/{provider-callback-page-CpfaqAgJ.js → provider-callback-page-rNJpxKm4.js} +1 -1
  85. package/dist/assets/{provider-key-C9asexKh.js → provider-key-BZOH9D9k.js} +1 -1
  86. package/dist/assets/{provider-signup-page-MukjbwOQ.js → provider-signup-page-BG-fVW-J.js} +1 -1
  87. package/dist/assets/{push-registration-CqXBOPNb.js → push-registration-C0GXHrCj.js} +1 -1
  88. package/dist/assets/{remove-from-device-dialog-DY5o8eIg.js → remove-from-device-dialog-BGqwuQw9.js} +1 -1
  89. package/dist/assets/{research-onboarding-route-BIY3OCwG.js → research-onboarding-route-s_8BLTOQ.js} +1 -1
  90. package/dist/assets/{retire-confirm-dialog-CgOoh5RG.js → retire-confirm-dialog-Bm7A3sZF.js} +1 -1
  91. package/dist/assets/{review-terms-screen-BA2I_7F2.js → review-terms-screen-CpWYZlRr.js} +1 -1
  92. package/dist/assets/routes-DE2XWIds.js +23 -0
  93. package/dist/assets/{runtime-upgrade-banner-9KhcwQWy.js → runtime-upgrade-banner-DtzsX2m0.js} +1 -1
  94. package/dist/assets/{sandbox-bridge-B6h4B0qp.js → sandbox-bridge-WZhWtkZd.js} +1 -1
  95. package/dist/assets/schedules-page-Cfala7Km.js +1 -0
  96. package/dist/assets/select-assistant-screen-BqObBI5Z.js +1 -0
  97. package/dist/assets/self-hosted-servers-DFgP80iG.js +1 -0
  98. package/dist/assets/{settings-divider-D_vHiuYw.js → settings-divider-Dyvf7Uk6.js} +1 -1
  99. package/dist/assets/{settings-layout-CINtkHJR.js → settings-layout-DfPO11SQ.js} +1 -1
  100. package/dist/assets/{settings-navigation-CHeVLLWI.js → settings-navigation-C1wEuU56.js} +1 -1
  101. package/dist/assets/{share-feedback-modal-BWez_NtT.js → share-feedback-modal-Ctgazbnj.js} +1 -1
  102. package/dist/assets/{sidebar-tree-aLYbZLvm.js → sidebar-tree-VXRWtsy4.js} +1 -1
  103. package/dist/assets/{signup-page-CiW0Chx7.js → signup-page-CLf-r4oP.js} +1 -1
  104. package/dist/assets/{site-favicon-B5ilr8wL.js → site-favicon-DfuXzZcN.js} +1 -1
  105. package/dist/assets/{skill-detail-page-T24C6W33.js → skill-detail-page-ChpWru-e.js} +2 -2
  106. package/dist/assets/{skill-detail-panel-BOPQ16Vg.js → skill-detail-panel-DU0bdJUl.js} +1 -1
  107. package/dist/assets/{skills-C2mjxWRN.js → skills-B4bfakyU.js} +1 -1
  108. package/dist/assets/{src-BMRW2yQf.js → src-DyqTPMO2.js} +1 -1
  109. package/dist/assets/{stt-language-picker-modal-BVO4V699.js → stt-language-picker-modal-BiWHaqFq.js} +1 -1
  110. package/dist/assets/{subagent-detail-panel-BCDOrwh3.js → subagent-detail-panel-Gi0UOlsn.js} +1 -1
  111. package/dist/assets/{subagent-store-BOpi4xxB.js → subagent-store-9SqF-NFa.js} +1 -1
  112. package/dist/assets/superpowers-page-nHT_hb33.js +1 -0
  113. package/dist/assets/{system-events-page-Bgo88uzO.js → system-events-page-Bfpn0HzE.js} +1 -1
  114. package/dist/assets/{telegram-setup-wizard-B3MHpy56.js → telegram-setup-wizard-GetgaQy5.js} +1 -1
  115. package/dist/assets/{text-preview-CPYq3og6.js → text-preview-CEL0P-WV.js} +1 -1
  116. package/dist/assets/{theme-stage-page-B6C95R4X.js → theme-stage-page-CEBFiy-u.js} +1 -1
  117. package/dist/assets/{tiptap-document-editor-By4wlOTs.js → tiptap-document-editor-DPkcv0pe.js} +1 -1
  118. package/dist/assets/{tool-detail-panel-E_gP0j1r.js → tool-detail-panel-84bl2nI3.js} +1 -1
  119. package/dist/assets/typed-storage-lk6_tW16.js +1 -0
  120. package/dist/assets/{upgrade-cancel-page-DCiT0Rqi.js → upgrade-cancel-page-DNteIqqS.js} +1 -1
  121. package/dist/assets/{upgrade-success-page-DLs3viaj.js → upgrade-success-page-CAeO4QtE.js} +1 -1
  122. package/dist/assets/{use-assistant-avatar-Dk975wdP.js → use-assistant-avatar-Dd-EU1FC.js} +1 -1
  123. package/dist/assets/{use-assistant-identity-details-DyvMGaA7.js → use-assistant-identity-details-DqiKjphK.js} +1 -1
  124. package/dist/assets/{use-attachment-preview-DjrcSin2.js → use-attachment-preview-B4PALbqs.js} +1 -1
  125. package/dist/assets/{use-attachment-squares-DHH1eTI4.js → use-attachment-squares-C-9Rz-8O.js} +1 -1
  126. package/dist/assets/{use-bookmarks-Wg8ueMhb.js → use-bookmarks-BWGVUg59.js} +1 -1
  127. package/dist/assets/{use-checkout-dismiss-refresh-wuwzKwo_.js → use-checkout-dismiss-refresh-BGeYbYii.js} +1 -1
  128. package/dist/assets/{use-command-palette-sections-CzHbFhwD.js → use-command-palette-sections-D3aj-BzX.js} +1 -1
  129. package/dist/assets/{use-edge-swipe-back-9-2nUEK7.js → use-edge-swipe-back-BGq52vVr.js} +2 -2
  130. package/dist/assets/{use-edit-app-PiQBQ9vN.js → use-edit-app-u-kyfEFX.js} +1 -1
  131. package/dist/assets/{use-invite-link-dialog-C6rYwhqr.js → use-invite-link-dialog-Ccf_XNV3.js} +1 -1
  132. package/dist/assets/{use-is-org-ready-BTUeuhPi.js → use-is-org-ready-CQntk0MX.js} +1 -1
  133. package/dist/assets/{use-onboarding-login-BXw1Fcg3.js → use-onboarding-login-Cw_9Ydsv.js} +1 -1
  134. package/dist/assets/{use-platform-assistant-id-DOBe1pF-.js → use-platform-assistant-id-DMP9urFb.js} +1 -1
  135. package/dist/assets/{use-platform-gate-DBRG0Q26.js → use-platform-gate-2lhRAyKS.js} +1 -1
  136. package/dist/assets/{use-return-to-short-circuit-Bl1RwuwD.js → use-return-to-short-circuit-Dm5PWev2.js} +1 -1
  137. package/dist/assets/{use-skill-actions-kLsl5L01.js → use-skill-actions-BopRxJ9x.js} +1 -1
  138. package/dist/assets/{use-sticky-profiles-CVsR9J8_.js → use-sticky-profiles-5cPu_MUo.js} +1 -1
  139. package/dist/assets/{use-subagent-card-data-BeUTFQdm.js → use-subagent-card-data-VnA5x24X.js} +1 -1
  140. package/dist/assets/{use-supports-bookmarks-FmvOAxKu.js → use-supports-bookmarks-z9pfj1Rm.js} +1 -1
  141. package/dist/assets/use-supports-credentials-settings-CEPArXBW.js +1 -0
  142. package/dist/assets/{use-transcript-message-by-id-C7L609Lk.js → use-transcript-message-by-id-DCOlEJjY.js} +1 -1
  143. package/dist/assets/{use-transcript-messages-BAG92dqc.js → use-transcript-messages-BEpY7uG4.js} +1 -1
  144. package/dist/assets/{use-voice-sample-preview-CVVwbBcE.js → use-voice-sample-preview-CzqJYPiZ.js} +1 -1
  145. package/dist/assets/{utils-CAZUrJMu.js → utils-CVoSWh7U.js} +1 -1
  146. package/dist/assets/{viewer-store-BhqBXvNu.js → viewer-store-CayI6XWh.js} +1 -1
  147. package/dist/assets/{voice-list-ChEr4jqe.js → voice-list-BS2BNjKN.js} +1 -1
  148. package/dist/assets/{voice-page-CkdnjoLc.js → voice-page-B7t0g-1X.js} +1 -1
  149. package/dist/assets/{voice-providers-note-DC4nbaBx.js → voice-providers-note-Cv7vCsDI.js} +1 -1
  150. package/dist/assets/{welcome-screen-BTnikex6.js → welcome-screen-eqR0DNzE.js} +1 -1
  151. package/dist/assets/{workflow-detail-panel-Bf6rP5UH.js → workflow-detail-panel-Dlj8i7AM.js} +1 -1
  152. package/dist/assets/{workspace-page-C8EUvGJ4.js → workspace-page-CAbshSeb.js} +1 -1
  153. package/dist/images/integrations/ATTRIBUTION.md +72 -0
  154. package/dist/images/integrations/airtable.svg +1 -0
  155. package/dist/images/integrations/asana.svg +1 -0
  156. package/dist/images/integrations/discord.svg +1 -0
  157. package/dist/images/integrations/dropbox.svg +1 -0
  158. package/dist/images/integrations/hubspot.svg +1 -0
  159. package/dist/images/integrations/salesforce.svg +5 -0
  160. package/dist/images/integrations/sanity.svg +1 -0
  161. package/dist/images/integrations/spotify.svg +1 -0
  162. package/dist/images/integrations/telegram.svg +1 -0
  163. package/dist/images/integrations/todoist.svg +1 -0
  164. package/dist/images/integrations/x.svg +1 -0
  165. package/dist/index.html +57 -57
  166. package/package.json +1 -1
  167. package/dist/assets/ai-page-CsufGyQ4.js +0 -1
  168. package/dist/assets/billing-page-CvZZTRHS.js +0 -3
  169. package/dist/assets/channels-page-route-Dj500t-M.js +0 -9
  170. package/dist/assets/file-markdown-DMq6D4CV.js +0 -2
  171. package/dist/assets/home-tool-permission-card-DG7KNyYY.js +0 -1
  172. package/dist/assets/identity-page-route-CLUGVFIg.js +0 -7
  173. package/dist/assets/index-BIhXfUlg.css +0 -2
  174. package/dist/assets/integration-icon-BaoRF0qI.js +0 -1
  175. package/dist/assets/integrations-page-Dygny-c2.js +0 -1
  176. package/dist/assets/pairing-page-Tun2QZT0.js +0 -1
  177. package/dist/assets/plugins-surface-B4NuEVD_.js +0 -1
  178. package/dist/assets/routes-DuLrKyjJ.js +0 -23
  179. package/dist/assets/schedules-page-CchXRGaR.js +0 -1
  180. package/dist/assets/select-assistant-screen-BHf9p-NL.js +0 -1
  181. package/dist/assets/superpowers-page-bOpdIXSO.js +0 -1
  182. package/dist/assets/typed-storage-UYklH-m5.js +0 -1
  183. package/dist/assets/use-supports-credentials-settings-BGgnzFf0.js +0 -1
  184. package/dist/assets/use-supports-schedule-profile-moves-CuKzMKxy.js +0 -1
  185. /package/dist/assets/{profile-metadata-DutSLpwl.js → profile-metadata-DgH7VoVU.js} +0 -0
  186. /package/dist/assets/{start-screen-zLwb2fyf.js → start-screen-CXUDtHbL.js} +0 -0
package/dist/index.html CHANGED
@@ -51,7 +51,7 @@
51
51
  <meta name="twitter:image:alt" content="Vellum: Your Personal Intelligence" />
52
52
 
53
53
  <script src="/assistant/theme-init.js"></script>
54
- <script type="module" crossorigin src="/assistant/assets/index-3KliM4Ki.js"></script>
54
+ <script type="module" crossorigin src="/assistant/assets/index-DRExgbkb.js"></script>
55
55
  <link rel="modulepreload" crossorigin href="/assistant/assets/chunk-jRWAZmH_.js">
56
56
  <link rel="modulepreload" crossorigin href="/assistant/assets/preload-helper-Cv2QeVDK.js">
57
57
  <link rel="modulepreload" crossorigin href="/assistant/assets/is-electron-BHXrkjI3.js">
@@ -67,11 +67,11 @@
67
67
  <link rel="modulepreload" crossorigin href="/assistant/assets/api-JA_IDAQk.js">
68
68
  <link rel="modulepreload" crossorigin href="/assistant/assets/assistant-identity-store-nE-e8KQw.js">
69
69
  <link rel="modulepreload" crossorigin href="/assistant/assets/semver-7PiLMufW.js">
70
- <link rel="modulepreload" crossorigin href="/assistant/assets/utils-CAZUrJMu.js">
70
+ <link rel="modulepreload" crossorigin href="/assistant/assets/utils-CVoSWh7U.js">
71
71
  <link rel="modulepreload" crossorigin href="/assistant/assets/jsx-runtime-D3ZM-ToX.js">
72
72
  <link rel="modulepreload" crossorigin href="/assistant/assets/QueryClientProvider-CMu7CkQU.js">
73
73
  <link rel="modulepreload" crossorigin href="/assistant/assets/useQuery-Bz-fbQ-m.js">
74
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-assistant-avatar-Dk975wdP.js">
74
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-assistant-avatar-Dd-EU1FC.js">
75
75
  <link rel="modulepreload" crossorigin href="/assistant/assets/device-settings-DZvv4pnY.js">
76
76
  <link rel="modulepreload" crossorigin href="/assistant/assets/onboarding-store-_SsI8JK5.js">
77
77
  <link rel="modulepreload" crossorigin href="/assistant/assets/consent-C4SGGEiM.js">
@@ -89,7 +89,7 @@
89
89
  <link rel="modulepreload" crossorigin href="/assistant/assets/feature-flag-catalog-BOqgTYGM.js">
90
90
  <link rel="modulepreload" crossorigin href="/assistant/assets/client-feature-flag-store-C8ieIAKe.js">
91
91
  <link rel="modulepreload" crossorigin href="/assistant/assets/theme-preferences-5grl-uOq.js">
92
- <link rel="modulepreload" crossorigin href="/assistant/assets/typed-storage-UYklH-m5.js">
92
+ <link rel="modulepreload" crossorigin href="/assistant/assets/typed-storage-lk6_tW16.js">
93
93
  <link rel="modulepreload" crossorigin href="/assistant/assets/dist-DHB1G-V6.js">
94
94
  <link rel="modulepreload" crossorigin href="/assistant/assets/bundle-mjs-BQxDdOEo.js">
95
95
  <link rel="modulepreload" crossorigin href="/assistant/assets/cn-DFWryB3N.js">
@@ -124,21 +124,21 @@
124
124
  <link rel="modulepreload" crossorigin href="/assistant/assets/skeleton-CJJwPIil.js">
125
125
  <link rel="modulepreload" crossorigin href="/assistant/assets/tag-DeMzQvCo.js">
126
126
  <link rel="modulepreload" crossorigin href="/assistant/assets/toggle-C-v4x7_A.js">
127
- <link rel="modulepreload" crossorigin href="/assistant/assets/src-BMRW2yQf.js">
128
- <link rel="modulepreload" crossorigin href="/assistant/assets/composer-settings-veIRzcPS.js">
129
- <link rel="modulepreload" crossorigin href="/assistant/assets/profile-pickers-BSDVzs_G.js">
127
+ <link rel="modulepreload" crossorigin href="/assistant/assets/src-DyqTPMO2.js">
128
+ <link rel="modulepreload" crossorigin href="/assistant/assets/composer-settings-Du4kV9LG.js">
129
+ <link rel="modulepreload" crossorigin href="/assistant/assets/profile-pickers-ChG4_Gpc.js">
130
130
  <link rel="modulepreload" crossorigin href="/assistant/assets/identity-DTcIPrCK.js">
131
131
  <link rel="modulepreload" crossorigin href="/assistant/assets/remote-gateway-session-CgDx1fv1.js">
132
- <link rel="modulepreload" crossorigin href="/assistant/assets/push-registration-CqXBOPNb.js">
132
+ <link rel="modulepreload" crossorigin href="/assistant/assets/push-registration-C0GXHrCj.js">
133
133
  <link rel="modulepreload" crossorigin href="/assistant/assets/resolved-assistants-store-BFI9c7ip.js">
134
- <link rel="modulepreload" crossorigin href="/assistant/assets/auth-store-CPVpJ_c7.js">
134
+ <link rel="modulepreload" crossorigin href="/assistant/assets/auth-store-BJdkkmzu.js">
135
135
  <link rel="modulepreload" crossorigin href="/assistant/assets/useMutation-CXGTrp4W.js">
136
136
  <link rel="modulepreload" crossorigin href="/assistant/assets/infiniteQueryOptions-CqLc14_4.js">
137
137
  <link rel="modulepreload" crossorigin href="/assistant/assets/queryOptions-CMSBCFOf.js">
138
138
  <link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-DKb3mEwJ.js">
139
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-is-org-ready-BTUeuhPi.js">
140
- <link rel="modulepreload" crossorigin href="/assistant/assets/local-runtime-upgrade-12Yco-XF.js">
141
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-platform-gate-DBRG0Q26.js">
139
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-is-org-ready-CQntk0MX.js">
140
+ <link rel="modulepreload" crossorigin href="/assistant/assets/local-runtime-upgrade-CXKbgZ4c.js">
141
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-platform-gate-2lhRAyKS.js">
142
142
  <link rel="modulepreload" crossorigin href="/assistant/assets/diagnostics-6dSlxnyU.js">
143
143
  <link rel="modulepreload" crossorigin href="/assistant/assets/misc-Z0jXGGeY.js">
144
144
  <link rel="modulepreload" crossorigin href="/assistant/assets/cloud-off-DyOAnFan.js">
@@ -146,12 +146,12 @@
146
146
  <link rel="modulepreload" crossorigin href="/assistant/assets/refresh-cw-DV6tvYxO.js">
147
147
  <link rel="modulepreload" crossorigin href="/assistant/assets/wrench-BIRk4-Cp.js">
148
148
  <link rel="modulepreload" crossorigin href="/assistant/assets/chunk-5KNZJZUH-BUqIilZr.js">
149
- <link rel="modulepreload" crossorigin href="/assistant/assets/runtime-upgrade-banner-9KhcwQWy.js">
149
+ <link rel="modulepreload" crossorigin href="/assistant/assets/runtime-upgrade-banner-DtzsX2m0.js">
150
150
  <link rel="modulepreload" crossorigin href="/assistant/assets/navigation-resolver-DrNVOkMu.js">
151
151
  <link rel="modulepreload" crossorigin href="/assistant/assets/research-onboarding-persistence-CiHHjoc-.js">
152
- <link rel="modulepreload" crossorigin href="/assistant/assets/build-state-DGpOoR0F.js">
153
- <link rel="modulepreload" crossorigin href="/assistant/assets/retire-confirm-dialog-CgOoh5RG.js">
154
- <link rel="modulepreload" crossorigin href="/assistant/assets/remove-from-device-dialog-DY5o8eIg.js">
152
+ <link rel="modulepreload" crossorigin href="/assistant/assets/build-state-DJaFMxtL.js">
153
+ <link rel="modulepreload" crossorigin href="/assistant/assets/retire-confirm-dialog-Bm7A3sZF.js">
154
+ <link rel="modulepreload" crossorigin href="/assistant/assets/remove-from-device-dialog-BGqwuQw9.js">
155
155
  <link rel="modulepreload" crossorigin href="/assistant/assets/chat-DYLliWTB.js">
156
156
  <link rel="modulepreload" crossorigin href="/assistant/assets/haptics-Mqend0Ru.js">
157
157
  <link rel="modulepreload" crossorigin href="/assistant/assets/calendar-CTyC1v1L.js">
@@ -160,24 +160,24 @@
160
160
  <link rel="modulepreload" crossorigin href="/assistant/assets/message-square-BjBDqFUX.js">
161
161
  <link rel="modulepreload" crossorigin href="/assistant/assets/monitor-CPgcKlQP.js">
162
162
  <link rel="modulepreload" crossorigin href="/assistant/assets/settings-751LDGs_.js">
163
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-command-palette-sections-CzHbFhwD.js">
163
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-command-palette-sections-D3aj-BzX.js">
164
164
  <link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-DxjuNs-5.js">
165
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-sticky-profiles-CVsR9J8_.js">
165
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-sticky-profiles-5cPu_MUo.js">
166
166
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-active-assistant-id-BvHP5Ojg.js">
167
167
  <link rel="modulepreload" crossorigin href="/assistant/assets/key-round-B-C1Qgxd.js">
168
168
  <link rel="modulepreload" crossorigin href="/assistant/assets/add-credential-modal-DKu25tMg.js">
169
169
  <link rel="modulepreload" crossorigin href="/assistant/assets/workspace-path-links-Dal5QJ_L.js">
170
- <link rel="modulepreload" crossorigin href="/assistant/assets/open-workspace-file-FgLn-SuR.js">
171
- <link rel="modulepreload" crossorigin href="/assistant/assets/viewer-store-BhqBXvNu.js">
170
+ <link rel="modulepreload" crossorigin href="/assistant/assets/open-workspace-file-DViQQLp4.js">
171
+ <link rel="modulepreload" crossorigin href="/assistant/assets/viewer-store-CayI6XWh.js">
172
172
  <link rel="modulepreload" crossorigin href="/assistant/assets/copy-to-clipboard-DnJHokIa.js">
173
173
  <link rel="modulepreload" crossorigin href="/assistant/assets/native-file-BUoRmAbj.js">
174
- <link rel="modulepreload" crossorigin href="/assistant/assets/deploy-store-0HlKHhLJ.js">
175
- <link rel="modulepreload" crossorigin href="/assistant/assets/sandbox-bridge-B6h4B0qp.js">
174
+ <link rel="modulepreload" crossorigin href="/assistant/assets/deploy-store-BGcHwvB5.js">
175
+ <link rel="modulepreload" crossorigin href="/assistant/assets/sandbox-bridge-WZhWtkZd.js">
176
176
  <link rel="modulepreload" crossorigin href="/assistant/assets/edge-swipe-arbiter-store-aOM60mqn.js">
177
177
  <link rel="modulepreload" crossorigin href="/assistant/assets/pointer-CmipOtDe.js">
178
178
  <link rel="modulepreload" crossorigin href="/assistant/assets/external-link-vwewPjbo.js">
179
179
  <link rel="modulepreload" crossorigin href="/assistant/assets/puzzle-CIWAeBs0.js">
180
- <link rel="modulepreload" crossorigin href="/assistant/assets/app-card-BBt0ilaM.js">
180
+ <link rel="modulepreload" crossorigin href="/assistant/assets/app-card-Df-Gy7pD.js">
181
181
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-is-mobile-BP8UePsY.js">
182
182
  <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-store-D4pZBwP5.js">
183
183
  <link rel="modulepreload" crossorigin href="/assistant/assets/edit-chat-session-DKBzd1lH.js">
@@ -185,7 +185,7 @@
185
185
  <link rel="modulepreload" crossorigin href="/assistant/assets/link-2-Bm55xvLL.js">
186
186
  <link rel="modulepreload" crossorigin href="/assistant/assets/minimize-2-D5pX5fY1.js">
187
187
  <link rel="modulepreload" crossorigin href="/assistant/assets/pencil-DidiUknI.js">
188
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-edit-app-PiQBQ9vN.js">
188
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-edit-app-u-kyfEFX.js">
189
189
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-svg-compositor-BOadabHt.js">
190
190
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-renderer-CsRuhhXn.js">
191
191
  <link rel="modulepreload" crossorigin href="/assistant/assets/reduced-motion-DiWTepDn.js">
@@ -197,13 +197,13 @@
197
197
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-copy-to-clipboard-CT4aISCf.js">
198
198
  <link rel="modulepreload" crossorigin href="/assistant/assets/browser-BP3Xidk_.js">
199
199
  <link rel="modulepreload" crossorigin href="/assistant/assets/clipboard-copy-BOU_-XoC.js">
200
- <link rel="modulepreload" crossorigin href="/assistant/assets/telegram-setup-wizard-B3MHpy56.js">
201
- <link rel="modulepreload" crossorigin href="/assistant/assets/detail-shell-rL601Rqo.js">
200
+ <link rel="modulepreload" crossorigin href="/assistant/assets/telegram-setup-wizard-GetgaQy5.js">
201
+ <link rel="modulepreload" crossorigin href="/assistant/assets/detail-shell-PCaxY4Tf.js">
202
202
  <link rel="modulepreload" crossorigin href="/assistant/assets/apple-logo-Dz_HmP0n.js">
203
203
  <link rel="modulepreload" crossorigin href="/assistant/assets/middleware-DiHdH8q1.js">
204
204
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-discord-nudge-BxJE92fj.js">
205
205
  <link rel="modulepreload" crossorigin href="/assistant/assets/public-asset-CZ7NhuGg.js">
206
- <link rel="modulepreload" crossorigin href="/assistant/assets/integration-icon-BaoRF0qI.js">
206
+ <link rel="modulepreload" crossorigin href="/assistant/assets/integration-icon-R8opqT3n.js">
207
207
  <link rel="modulepreload" crossorigin href="/assistant/assets/chat-layout-slots-store-N_sabTbs.js">
208
208
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-local-file-info-2nORgZPN.js">
209
209
  <link rel="modulepreload" crossorigin href="/assistant/assets/circle-check-big-CpoRGdNz.js">
@@ -213,23 +213,23 @@
213
213
  <link rel="modulepreload" crossorigin href="/assistant/assets/send-BlX2px_R.js">
214
214
  <link rel="modulepreload" crossorigin href="/assistant/assets/trash-2-BKXSi5Tj.js">
215
215
  <link rel="modulepreload" crossorigin href="/assistant/assets/user-Djte2CiZ.js">
216
- <link rel="modulepreload" crossorigin href="/assistant/assets/document-viewer-container-BkKmz-ar.js">
216
+ <link rel="modulepreload" crossorigin href="/assistant/assets/document-viewer-container-wjJ6ACJv.js">
217
217
  <link rel="modulepreload" crossorigin href="/assistant/assets/arrow-left-BikDV6F2.js">
218
218
  <link rel="modulepreload" crossorigin href="/assistant/assets/sparkles-B94iNYGJ.js">
219
219
  <link rel="modulepreload" crossorigin href="/assistant/assets/shim-DQit20z4.js">
220
- <link rel="modulepreload" crossorigin href="/assistant/assets/not-found-zOjj1km-.js">
221
- <link rel="modulepreload" crossorigin href="/assistant/assets/login-flow-fmfcNxyU.js">
220
+ <link rel="modulepreload" crossorigin href="/assistant/assets/not-found-ClBCK2Sg.js">
221
+ <link rel="modulepreload" crossorigin href="/assistant/assets/login-flow-CN5J4YsY.js">
222
222
  <link rel="modulepreload" crossorigin href="/assistant/assets/external-urls-EO9DXoFH.js">
223
223
  <link rel="modulepreload" crossorigin href="/assistant/assets/native-auth-error-B9Iha2zU.js">
224
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-onboarding-login-BXw1Fcg3.js">
224
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-onboarding-login-Cw_9Ydsv.js">
225
225
  <link rel="modulepreload" crossorigin href="/assistant/assets/log-in-BkWp0GjS.js">
226
- <link rel="modulepreload" crossorigin href="/assistant/assets/platform-login-notice-3g7rHtc3.js">
227
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-voice-sample-preview-CVVwbBcE.js">
226
+ <link rel="modulepreload" crossorigin href="/assistant/assets/platform-login-notice-BEDBlins.js">
227
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-voice-sample-preview-CzqJYPiZ.js">
228
228
  <link rel="modulepreload" crossorigin href="/assistant/assets/search-D2xMZu1P.js">
229
229
  <link rel="modulepreload" crossorigin href="/assistant/assets/square-CE8V_WXJ.js">
230
230
  <link rel="modulepreload" crossorigin href="/assistant/assets/volume-2-CyoXrHNM.js">
231
- <link rel="modulepreload" crossorigin href="/assistant/assets/voice-list-ChEr4jqe.js">
232
- <link rel="modulepreload" crossorigin href="/assistant/assets/voice-providers-note-DC4nbaBx.js">
231
+ <link rel="modulepreload" crossorigin href="/assistant/assets/voice-list-BS2BNjKN.js">
232
+ <link rel="modulepreload" crossorigin href="/assistant/assets/voice-providers-note-Cv7vCsDI.js">
233
233
  <link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-CAngxL4a.js">
234
234
  <link rel="modulepreload" crossorigin href="/assistant/assets/mail-CYjppw70.js">
235
235
  <link rel="modulepreload" crossorigin href="/assistant/assets/message-circle-C6QWfv9m.js">
@@ -240,15 +240,15 @@
240
240
  <link rel="modulepreload" crossorigin href="/assistant/assets/prechat-CXmfuQt3.js">
241
241
  <link rel="modulepreload" crossorigin href="/assistant/assets/browser-timezone-DM1QmwES.js">
242
242
  <link rel="modulepreload" crossorigin href="/assistant/assets/effective-timezone-CjGPHJlt.js">
243
- <link rel="modulepreload" crossorigin href="/assistant/assets/messages-JRZkqLeA.js">
243
+ <link rel="modulepreload" crossorigin href="/assistant/assets/messages-DSdy6Lfi.js">
244
244
  <link rel="modulepreload" crossorigin href="/assistant/assets/background-task-store-B1MUU_bh.js">
245
- <link rel="modulepreload" crossorigin href="/assistant/assets/file-markdown-DMq6D4CV.js">
245
+ <link rel="modulepreload" crossorigin href="/assistant/assets/file-markdown-CGC6ZrPT.js">
246
246
  <link rel="modulepreload" crossorigin href="/assistant/assets/pdf-preview-DNzKWskr.js">
247
247
  <link rel="modulepreload" crossorigin href="/assistant/assets/chevron-left-D-pnIQax.js">
248
248
  <link rel="modulepreload" crossorigin href="/assistant/assets/file-CTdxLT0k.js">
249
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-attachment-preview-DjrcSin2.js">
249
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-attachment-preview-B4PALbqs.js">
250
250
  <link rel="modulepreload" crossorigin href="/assistant/assets/client-perf-C-xVLAvQ.js">
251
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-transcript-messages-BAG92dqc.js">
251
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-transcript-messages-BEpY7uG4.js">
252
252
  <link rel="modulepreload" crossorigin href="/assistant/assets/code-DwZ6Mhdw.js">
253
253
  <link rel="modulepreload" crossorigin href="/assistant/assets/acp-run-actions-BtRROeN9.js">
254
254
  <link rel="modulepreload" crossorigin href="/assistant/assets/message-content-Beh5mR15.js">
@@ -257,29 +257,29 @@
257
257
  <link rel="modulepreload" crossorigin href="/assistant/assets/AnimatePresence-D41IKJOi.js">
258
258
  <link rel="modulepreload" crossorigin href="/assistant/assets/brain-ZiC0HCCF.js">
259
259
  <link rel="modulepreload" crossorigin href="/assistant/assets/user-plus-DAap8I1c.js">
260
- <link rel="modulepreload" crossorigin href="/assistant/assets/site-favicon-B5ilr8wL.js">
261
- <link rel="modulepreload" crossorigin href="/assistant/assets/subagent-store-BOpi4xxB.js">
260
+ <link rel="modulepreload" crossorigin href="/assistant/assets/site-favicon-DfuXzZcN.js">
261
+ <link rel="modulepreload" crossorigin href="/assistant/assets/subagent-store-9SqF-NFa.js">
262
262
  <link rel="modulepreload" crossorigin href="/assistant/assets/circle-x-B5rnAOe1.js">
263
263
  <link rel="modulepreload" crossorigin href="/assistant/assets/file-plus-D0O_zjgz.js">
264
264
  <link rel="modulepreload" crossorigin href="/assistant/assets/terminal-CkQ9DSF2.js">
265
- <link rel="modulepreload" crossorigin href="/assistant/assets/multi-activity-group-5OxVs26d.js">
265
+ <link rel="modulepreload" crossorigin href="/assistant/assets/multi-activity-group-D_OVaru-.js">
266
266
  <link rel="modulepreload" crossorigin href="/assistant/assets/archive-VIStcSec.js">
267
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-attachment-squares-DHH1eTI4.js">
267
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-attachment-squares-C-9Rz-8O.js">
268
268
  <link rel="modulepreload" crossorigin href="/assistant/assets/workspace-tree-query-Djht8L1-.js">
269
269
  <link rel="modulepreload" crossorigin href="/assistant/assets/native-anchor-CpFd0dIc.js">
270
270
  <link rel="modulepreload" crossorigin href="/assistant/assets/ellipsis-C7C3LPFH.js">
271
271
  <link rel="modulepreload" crossorigin href="/assistant/assets/eye-off-BwU7XK4M.js">
272
272
  <link rel="modulepreload" crossorigin href="/assistant/assets/eye-GcssNJdY.js">
273
- <link rel="modulepreload" crossorigin href="/assistant/assets/chat-markdown-message-Dr9rA1lM.js">
273
+ <link rel="modulepreload" crossorigin href="/assistant/assets/chat-markdown-message-C6oOqDdl.js">
274
274
  <link rel="modulepreload" crossorigin href="/assistant/assets/preview-skeleton-DsTQ51Kh.js">
275
275
  <link rel="modulepreload" crossorigin href="/assistant/assets/surface-parse-helpers-Dpxz8G3q.js">
276
276
  <link rel="modulepreload" crossorigin href="/assistant/assets/workflow-status-AIHLnh_i.js">
277
277
  <link rel="modulepreload" crossorigin href="/assistant/assets/workflow-store-D0DBQy44.js">
278
278
  <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-selection-DXYpE4U8.js">
279
- <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-navigation-DqU55C7j.js">
280
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-subagent-card-data-BeUTFQdm.js">
279
+ <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-navigation-gR_RLe1J.js">
280
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-subagent-card-data-VnA5x24X.js">
281
281
  <link rel="modulepreload" crossorigin href="/assistant/assets/assistant-feature-flag-store-qYfAdlBG.js">
282
- <link rel="modulepreload" crossorigin href="/assistant/assets/access-BEF4g5Xz.js">
282
+ <link rel="modulepreload" crossorigin href="/assistant/assets/access-RDaLlBt5.js">
283
283
  <link rel="modulepreload" crossorigin href="/assistant/assets/research-facts-xV6xeZTm.js">
284
284
  <link rel="modulepreload" crossorigin href="/assistant/assets/ban-Dk1OXyCw.js">
285
285
  <link rel="modulepreload" crossorigin href="/assistant/assets/research-results-view-CBP6WMg5.js">
@@ -289,37 +289,37 @@
289
289
  <link rel="modulepreload" crossorigin href="/assistant/assets/list-O_53kvwx.js">
290
290
  <link rel="modulepreload" crossorigin href="/assistant/assets/rotate-ccw-Dcfo4EC8.js">
291
291
  <link rel="modulepreload" crossorigin href="/assistant/assets/shield-check-zaoUwOKj.js">
292
- <link rel="modulepreload" crossorigin href="/assistant/assets/home-tool-permission-card-DG7KNyYY.js">
292
+ <link rel="modulepreload" crossorigin href="/assistant/assets/home-tool-permission-card-Do3YeiVC.js">
293
293
  <link rel="modulepreload" crossorigin href="/assistant/assets/get-memory-stats-CgfjHhot.js">
294
294
  <link rel="modulepreload" crossorigin href="/assistant/assets/invalidate-memory-queries-CdJoJc7n.js">
295
295
  <link rel="modulepreload" crossorigin href="/assistant/assets/invalidate-plugin-queries-zbCn3jP3.js">
296
296
  <link rel="modulepreload" crossorigin href="/assistant/assets/oauth-connection-utils-CPrZGY1J.js">
297
297
  <link rel="modulepreload" crossorigin href="/assistant/assets/oauth-popup-CBMOU7CT.js">
298
- <link rel="modulepreload" crossorigin href="/assistant/assets/first-run-scope-U5LrdMhR.js">
298
+ <link rel="modulepreload" crossorigin href="/assistant/assets/first-run-scope-DKd0ZevK.js">
299
299
  <link rel="modulepreload" crossorigin href="/assistant/assets/onboarding-layout-C534GRct.js">
300
300
  <link rel="modulepreload" crossorigin href="/assistant/assets/hard-navigate-BrsAH6PB.js">
301
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-supports-bookmarks-FmvOAxKu.js">
301
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-supports-bookmarks-z9pfj1Rm.js">
302
302
  <link rel="modulepreload" crossorigin href="/assistant/assets/bug-CDEs1Scu.js">
303
303
  <link rel="modulepreload" crossorigin href="/assistant/assets/chart-column-CEHOik7U.js">
304
304
  <link rel="modulepreload" crossorigin href="/assistant/assets/cpu-mDttg6J1.js">
305
305
  <link rel="modulepreload" crossorigin href="/assistant/assets/mic-bZFqVBA_.js">
306
306
  <link rel="modulepreload" crossorigin href="/assistant/assets/sliders-horizontal-Dd2oGqSf.js">
307
307
  <link rel="modulepreload" crossorigin href="/assistant/assets/users-XI0CRYkf.js">
308
- <link rel="modulepreload" crossorigin href="/assistant/assets/settings-navigation-CHeVLLWI.js">
308
+ <link rel="modulepreload" crossorigin href="/assistant/assets/settings-navigation-C1wEuU56.js">
309
309
  <link rel="modulepreload" crossorigin href="/assistant/assets/schedules-CMISpWUM.js">
310
310
  <link rel="modulepreload" crossorigin href="/assistant/assets/schedules-kVuR00ra.js">
311
311
  <link rel="modulepreload" crossorigin href="/assistant/assets/workspace-theme-tokens-D_dTwxiM.js">
312
312
  <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-list-fetchers-D3FmANI4.js">
313
- <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-queries-Bh_7RMKd.js">
313
+ <link rel="modulepreload" crossorigin href="/assistant/assets/conversation-queries-Bx_JApUN.js">
314
314
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-edge-swipe-Di2s_nu-.js">
315
315
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-app-theme-CV9AULGm.js">
316
316
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-assistant-capability-y4ML0NOY.js">
317
317
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-bundled-components-BCCi2IoG.js">
318
318
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-avatar-accent-var-B7jzoU_Q.js">
319
- <link rel="modulepreload" crossorigin href="/assistant/assets/use-bookmarks-Wg8ueMhb.js">
319
+ <link rel="modulepreload" crossorigin href="/assistant/assets/use-bookmarks-BWGVUg59.js">
320
320
  <link rel="modulepreload" crossorigin href="/assistant/assets/daily-reset-time-B2-pE2Lv.js">
321
321
  <link rel="modulepreload" crossorigin href="/assistant/assets/use-swipe-engine-DkOpo76V.js">
322
- <link rel="modulepreload" crossorigin href="/assistant/assets/plugins-surface-B4NuEVD_.js">
322
+ <link rel="modulepreload" crossorigin href="/assistant/assets/plugins-surface-C5i913ST.js">
323
323
  <link rel="modulepreload" crossorigin href="/assistant/assets/android-consumption-only-BkXIkXls.js">
324
324
  <link rel="modulepreload" crossorigin href="/assistant/assets/installed-plugins-query-CIcohCho.js">
325
325
  <link rel="modulepreload" crossorigin href="/assistant/assets/doctor-handoff-store-DeQSIF5u.js">
@@ -329,7 +329,7 @@
329
329
  <link rel="modulepreload" crossorigin href="/assistant/assets/desktop-voice-activity-C53ZhMf7.js">
330
330
  <link rel="modulepreload" crossorigin href="/assistant/assets/dictation-overlay-DQnD0C9N.js">
331
331
  <link rel="modulepreload" crossorigin href="/assistant/assets/esm-C-UZ0OO7.js">
332
- <link rel="modulepreload" crossorigin href="/assistant/assets/notifications-pzRj4j4m.js">
332
+ <link rel="modulepreload" crossorigin href="/assistant/assets/notifications-G7qqgf4f.js">
333
333
  <link rel="modulepreload" crossorigin href="/assistant/assets/page-surface-store-CNB4IeOj.js">
334
334
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-subagent-CvC1Sf9s.js">
335
335
  <link rel="modulepreload" crossorigin href="/assistant/assets/avatar-tone-D1ZiIRxb.js">
@@ -362,9 +362,9 @@
362
362
  <link rel="modulepreload" crossorigin href="/assistant/assets/smartphone-BTdDwse2.js">
363
363
  <link rel="modulepreload" crossorigin href="/assistant/assets/sun-DnK4LisT.js">
364
364
  <link rel="modulepreload" crossorigin href="/assistant/assets/workflow-CXyPzVz4.js">
365
- <link rel="modulepreload" crossorigin href="/assistant/assets/routes-DuLrKyjJ.js">
365
+ <link rel="modulepreload" crossorigin href="/assistant/assets/routes-DE2XWIds.js">
366
366
  <link rel="stylesheet" crossorigin href="/assistant/assets/src-CfUWwwYf.css">
367
- <link rel="stylesheet" crossorigin href="/assistant/assets/index-BIhXfUlg.css">
367
+ <link rel="stylesheet" crossorigin href="/assistant/assets/index-Q1K0w5kB.css">
368
368
  <script>window.__VELLUM_CONFIG__={"webUrl":"https://www.vellum.ai","platformUrl":"https://platform.vellum.ai"}</script></head>
369
369
  <body>
370
370
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/web",
3
- "version": "0.11.3-staging.1",
3
+ "version": "0.11.3-staging.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Pre-built web SPA for the Vellum Assistant",
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,l as n,o as r}from"./local-settings-Bx7FsNo5.js";import{r as i,t as a}from"./capture-error-Cw5vs0Ef.js";import{t as o}from"./react-BFJW0bSv.js";import{n as s,t as c}from"./button-BENY-yx_.js";import{d as l,h as u}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as d}from"./QueryClientProvider-CMu7CkQU.js";import{t as f}from"./useQuery-Bz-fbQ-m.js";import{t as p}from"./useMutation-CXGTrp4W.js";import{t as m}from"./jsx-runtime-D3ZM-ToX.js";import{t as h}from"./typography-BeUa5Fd-.js";import{t as g}from"./check-DSgjgwlo.js";import{t as _}from"./circle-alert-De9q5FVd.js";import{t as v}from"./circle-check-q8BVdbgw.js";import{t as y}from"./menu-DKE_-iVc.js";import{t as b}from"./clock-B8umTTHk.js";import{R as x,r as S}from"./src-BMRW2yQf.js";import{t as C}from"./ellipsis-vertical-eVgdKn9z.js";import{t as w}from"./external-link-vwewPjbo.js";import{t as T}from"./info-CXkwGlN_.js";import{t as E}from"./list-O_53kvwx.js";import{t as D}from"./loader-circle-DOtGXcds.js";import{t as O}from"./mail-CYjppw70.js";import{t as k}from"./checkbox-C4x4HEp4.js";import{t as A}from"./plus-DnH9Pjq4.js";import{t as j}from"./search-D2xMZu1P.js";import{t as M}from"./trash-2-BKXSi5Tj.js";import{t as N}from"./triangle-alert-CB4pJgCL.js";import{t as P}from"./notice-C0ifrvvJ.js";import{t as F}from"./tag-DeMzQvCo.js";import{t as I}from"./popover-CAbJ9178.js";import{t as L}from"./input-DmHXRXaB.js";import{t as R}from"./toggle-C-v4x7_A.js";import{t as z}from"./modal-DI63s9MQ.js";import{n as B}from"./toast-BpuLSxyt.js";import{t as V}from"./confirm-dialog-zx8L9sUi.js";import{t as H}from"./select-B8-i-CZ4.js";import{t as U}from"./skeleton-CJJwPIil.js";import{A as W,C as G,I as K,N as ee,P as q,S as J,T as te,_ as Y,a as ne,b as re,c as X,f as ie,g as ae,h as oe,i as se,j as Z,l as ce,m as le,n as ue,o as de,p as fe,r as pe,s as me,t as he,v as ge,x as _e,y as ve}from"./profile-pickers-BSDVzs_G.js";import{A as ye,B as be,C as xe,F as Se,G as Ce,H as we,I as Te,L as Ee,M as De,N as Oe,P as ke,R as Ae,S as je,U as Me,V as Ne,W as Pe,_ as Fe,a as Ie,b as Le,c as Re,d as ze,f as Be,g as Ve,h as He,i as Ue,j as We,k as Ge,l as Ke,m as qe,n as Je,o as Ye,p as Xe,r as Ze,s as Qe,t as $e,u as et,x as tt,y as nt,z as rt}from"./use-sticky-profiles-CVsR9J8_.js";import{t as it}from"./assistant-identity-store-nE-e8KQw.js";import{i as at,n as ot,o as st,r as ct}from"./utils-CAZUrJMu.js";import{i as lt,r as ut}from"./api-errors-BQX1Pzcm.js";import{Jt as dt,On as ft,dr as pt,j as mt,pt as ht,qt as gt,ut as _t}from"./sdk.gen-CBPZ2IdN.js";import{f as vt}from"./platform-detection-C_TK32Dw.js";import{d as yt}from"./routes-iipg2wkc.js";import{i as bt}from"./use-platform-gate-DBRG0Q26.js";import{r as xt}from"./use-is-org-ready-BTUeuhPi.js";import{G as St,J as Ct,K as wt,St as Tt,Wt as Et,Yt as Dt,_ as Ot,d as kt,f as At,g as jt,h as Mt,m as Nt,on as Pt,p as Ft,q as It,u as Lt,wt as Rt,xt as zt}from"./react-query.gen-DxjuNs-5.js";import{n as Bt}from"./use-is-mobile-BP8UePsY.js";import{c as Vt,d as Ht,f as Ut,g as Wt,h as Gt,l as Kt,m as qt,o as Jt,p as Yt,s as Xt,u as Zt,ut as Qt,v as $t,y as en}from"./react-query.gen-DKb3mEwJ.js";import{t as tn}from"./platform-login-notice-3g7rHtc3.js";import{t as nn}from"./android-consumption-only-BkXIkXls.js";import{a as rn,c as an,i as on,n as sn,o as cn}from"./voice-list-ChEr4jqe.js";import{n as ln}from"./use-voice-sample-preview-CVVwbBcE.js";import{t as un}from"./use-active-assistant-id-BvHP5Ojg.js";import{t as dn}from"./detail-shell-rL601Rqo.js";import{a as fn}from"./schedules-kVuR00ra.js";import{t as pn}from"./detail-card-CmSV969e.js";import{n as mn,t as hn}from"./detail-drawer-HN4NsyKg.js";import{t as gn}from"./use-supports-schedule-profile-moves-CuKzMKxy.js";import{t as _n}from"./use-platform-assistant-id-DOBe1pF-.js";import{t as vn}from"./environment-store-CFfbiF-5.js";import{t as yn}from"./stt-language-picker-modal-BVO4V699.js";var Q=e(o(),1),$=m();function bn({mode:e,onChange:t}){return(0,$.jsx)(`div`,{className:`max-w-[280px]`,children:(0,$.jsx)(x,{ariaLabel:`Service mode`,value:e,onChange:t,items:[{value:`managed`,label:`Managed`},{value:`your-own`,label:`Your Own`}]})})}function xn({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,$.jsxs)(pn,{id:e,title:t,subtitle:n,accessory:(0,$.jsx)(bn,{mode:r,onChange:i}),children:[(0,$.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,$.jsx)(`div`,{className:`mt-4`,children:a})]})}function Sn({id:e,title:t,subtitle:n,children:r}){return(0,$.jsxs)(pn,{id:e,title:t,subtitle:n,children:[(0,$.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,$.jsx)(`div`,{className:`mt-4`,children:r})]})}function Cn(){return(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] px-4 py-2.5`,children:[(0,$.jsx)(T,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`}),(0,$.jsxs)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:[`Managed services are metered and deducted from your Vellum account balance.`,` `,(0,$.jsxs)(`a`,{href:`https://www.vellum.ai/docs/pricing`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--primary-base)] hover:underline`,children:[`View pricing`,(0,$.jsx)(w,{className:`h-3.5 w-3.5`})]})]})]})}function wn({status:e,message:t,isLoading:n}){return n?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,children:[(0,$.jsx)(D,{className:`h-3 w-3 animate-spin`}),`Checking domain…`]}):e?e===`verified`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-positive-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-positive-strong)]`,title:`DNS records have been verified. Your domain is ready to send and receive email.`,children:[(0,$.jsx)(g,{className:`h-3 w-3`}),`Domain verified`]}):e===`pending`||e===`not_started`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-mid-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-mid-strong)]`,title:`DNS records have been provisioned. Waiting for the email provider to verify them — this usually takes a few minutes.`,children:[(0,$.jsx)(b,{className:`h-3 w-3`}),`Verifying domain…`]}):(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-negative-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,title:`Domain verification failed. DNS records may not have propagated correctly. You could try releasing and re-registering the domain.`,children:[(0,$.jsx)(_,{className:`h-3 w-3`}),`Verification failed`]}):(0,$.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,title:`Unable to retrieve domain verification status.`,children:`Unknown status`})}function Tn({onClick:e,disabled:t}){return(0,$.jsx)(c,{onClick:e,disabled:t,children:`Save`})}function En({onClick:e,filled:t=!1}){return(0,$.jsx)(c,{variant:t?`danger`:`dangerGhost`,onClick:e,children:`Reset`})}function Dn({guide:e}){return(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(T,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,$.jsx)(`span`,{children:e.description}),(0,$.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[e.linkLabel,(0,$.jsx)(w,{className:`h-3 w-3`})]})]})]})}function On({subdomain:e,onSubdomainChange:t,domainSuffix:n,subdomainPlaceholder:r=`my-assistant`,disabled:i,autoFocus:a,prefix:o,error:s,locked:c,lockedMessage:l}){return(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex h-9 w-full items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${s?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[o,(0,$.jsx)(`input`,{value:e,onChange:e=>t(e.target.value.toLowerCase().trim()),disabled:i||c,readOnly:c,autoFocus:a,placeholder:r,"aria-label":`Subdomain`,"aria-invalid":!!s,className:`h-full min-w-0 flex-1 bg-transparent ${o?`pl-1.5`:`pl-3`} pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none disabled:cursor-not-allowed disabled:opacity-60`}),(0,$.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`.`,n]})]}),s&&(0,$.jsx)(`p`,{className:`mt-1.5 text-body-small-default text-[var(--system-negative-strong)]`,children:s}),c&&l&&(0,$.jsx)(`p`,{className:`mt-1.5 text-body-small-default text-[var(--content-tertiary)]`,children:l})]})}function kn({assistantId:e,assistantHandle:t,emailRootDomain:n}){let r=d(),i=l(),o=vt(),[s,m]=u(),[h,g]=(0,Q.useState)(``),[_,v]=(0,Q.useState)(!1),[y,b]=(0,Q.useState)(null),[x,S]=(0,Q.useState)(``),[C,w]=(0,Q.useState)(null),[T,E]=(0,Q.useState)(!1),[k,A]=(0,Q.useState)(!1),[j,N]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{_||!t||h||(g(t),v(!0))},[t,_,h]);let F=f({...Qt(),enabled:!0}),I=F.data,L=I?.entitlements,R=L?.managed_email===!0,z=!!L&&!R,H=!I&&F.isError&&!F.isFetching,U=f({...Vt({path:{assistant_id:e}}),enabled:!z}),W=f({...Yt({path:{assistant_id:e}}),enabled:!z}),G=U.data?.results?.[0],K=W.data?.results?.[0],ee=G?`${G.subdomain}.${n}`:null,q=f({...Gt({path:{assistant_id:e,id:K?.id??``}}),enabled:!!K?.id,refetchOnWindowFocus:!1}),J=f({...Zt({path:{assistant_id:e,id:G?.id??``}}),enabled:!!G?.id,refetchInterval:e=>{let t=e.state.data?.status;return t===`verified`||t===`failed`?!1:1e4},refetchOnWindowFocus:!0});(0,Q.useEffect)(()=>{s.get(`release`)!==`1`||!G||K||(A(!0),m(e=>{let t=new URLSearchParams(e);return t.delete(`release`),t},{replace:!0}))},[K,G,s,m]);let te=p(Jt()),Y=p(Xt()),ne=p(Ht()),re=p(Ut()),X=(0,Q.useCallback)(()=>{let t={assistant_id:e};r.invalidateQueries({queryKey:Kt({path:t})}),r.invalidateQueries({queryKey:qt({path:t})}),K?.id&&r.invalidateQueries({queryKey:Wt({path:{...t,id:K.id}})}),r.invalidateQueries({queryKey:en()})},[K?.id,e,r]),ie=(0,Q.useCallback)(async()=>{let t=h.trim().toLowerCase();if(!t){b(`Enter a subdomain.`);return}E(!1);try{await te.mutateAsync({path:{assistant_id:e},body:{subdomain:t}}),g(``),b(null),X(),B.success(`Domain ${t}.${n} registered.`)}catch(e){b(lt(e,void 0,`Failed to register domain.`))}},[e,n,X,te,h]),ae=(0,Q.useCallback)(async()=>{let t=x.trim().toLowerCase();if(!t){w(`Enter an email username.`);return}try{await ne.mutateAsync({path:{assistant_id:e},body:{username:t}}),S(``),w(null),X(),B.success(`Email address created.`)}catch(e){w(lt(e,void 0,`Failed to create email address.`))}},[e,X,ne,x]),oe=(0,Q.useCallback)(async()=>{if(K?.id){N(!1);try{await re.mutateAsync({path:{assistant_id:e,id:K.id}}),X(),B.success(`Email address removed.`)}catch(e){a(e,{context:`email_address_delete`}),B.error(`Failed to remove email address.`)}}},[K?.id,e,re,X]),se=(0,Q.useCallback)(async()=>{if(!G?.id)return;if(K){B.error(`Remove the email address first.`);return}A(!1);let t=G.subdomain;try{await Y.mutateAsync({path:{assistant_id:e,id:G.id}}),g(t),X(),B.success(`Domain released.`)}catch(e){a(e,{context:`email_domain_release`}),B.error(`Failed to release domain.`)}},[K,e,Y,G?.id,G?.subdomain,X]);if(F.isLoading)return(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(D,{className:`h-4 w-4 animate-spin`}),`Checking subscription…`]});if(z)return(0,$.jsx)(P,{tone:`info`,icon:(0,$.jsx)(O,{className:`h-4 w-4`,"aria-hidden":!0}),title:`Give your assistant its own email address`,actions:o?void 0:(0,$.jsx)(c,{size:`compact`,onClick:()=>i(yt.plans),children:`Upgrade`}),children:o?nn:(0,$.jsx)($.Fragment,{children:`Upgrade to a plan that includes an email address for your assistant. No provider setup required.`})});let Z=H?(0,$.jsx)(P,{tone:`warning`,title:`Couldn't verify subscription status`,actions:(0,$.jsx)(c,{size:`compact`,variant:`outlined`,onClick:()=>F.refetch(),children:`Retry`}),children:`We couldn't reach the billing service. The form below assumes managed email is enabled for your org — if it isn't, registering a domain will fail.`}):null;return G?K?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[Z,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Address`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:K.address}),(0,$.jsx)(wn,{status:J.data?.status,message:J.data?.message,isLoading:J.isLoading}),(0,$.jsx)(c,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(M,{}),onClick:()=>N(!0),disabled:re.isPending,"aria-label":`Remove email address`})]}),(0,$.jsx)(V,{open:j,title:`Remove Email Address`,message:(0,$.jsxs)($.Fragment,{children:[`Are you sure you want to remove`,` `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:K.address}),`? Your assistant will no longer be able to send or receive email at this address.`]}),confirmLabel:`Remove`,destructive:!0,onConfirm:oe,onCancel:()=>N(!1)})]}),q.data?.usage&&(0,$.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[q.data.usage.sent_today,` /`,` `,q.data.usage.daily_limit,` sent today ·`,` `,q.data.usage.received_today,` received`]})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[Z,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Domain`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:[G.subdomain,`.`,n]}),(0,$.jsx)(wn,{status:J.data?.status,message:J.data?.message,isLoading:J.isLoading}),(0,$.jsx)(c,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(M,{}),onClick:()=>A(!0),disabled:Y.isPending,"aria-label":`Release domain`})]}),(0,$.jsx)(V,{open:k,title:`Release Domain`,message:(0,$.jsxs)($.Fragment,{children:[`Are you sure you want to release`,` `,(0,$.jsxs)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:[G.subdomain,`.`,n]}),`? The subdomain will become available for others to claim.`]}),confirmLabel:`Release`,destructive:!0,onConfirm:se,onCancel:()=>A(!1)})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Email address`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex h-9 min-w-0 flex-1 items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${C?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[(0,$.jsx)(`input`,{value:x,onChange:e=>{S(e.target.value.toLowerCase()),C&&w(null)},placeholder:`hi`,"aria-label":`Email username`,"aria-invalid":!!C,className:`h-full min-w-0 flex-1 bg-transparent pl-3 pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`}),(0,$.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`@`,ee]})]}),(0,$.jsx)(c,{onClick:ae,disabled:ne.isPending||!x.trim(),children:ne.isPending?`Creating…`:`Create`})]}),C&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:C})]})]}):(0,$.jsxs)(`div`,{className:`space-y-3`,children:[Z,(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Subdomain`}),(0,$.jsx)(On,{subdomain:h,onSubdomainChange:e=>{g(e),y&&b(null)},domainSuffix:n,subdomainPlaceholder:`my-assistant`,error:y}),(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Each assistant gets its own subdomain. Lowercase letters, numbers, and hyphens only.`}),(0,$.jsx)(c,{onClick:()=>E(!0),disabled:te.isPending||!h.trim(),children:te.isPending?`Registering…`:`Register`}),(0,$.jsx)(V,{open:T,title:`Set Subdomain`,message:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:h.trim().toLowerCase()||`subdomain`}),` `,`will also become your assistant's public handle. You won't be able to change it once set.`]}),confirmLabel:`Confirm`,onConfirm:ie,onCancel:()=>E(!1)})]})}function An(){let e=un(),r=xt(),{data:o}=f({...$t(),enabled:r}),s=o?.results?.[0]?.handle,c=vn.use.emailRootDomain(),l=bt(),[u,d]=(0,Q.useState)(()=>l===`gated`?`your-own`:le(t(Ue,`managed`),`managed`)),[p,m]=(0,Q.useState)(()=>{let e=t(Ze,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),{platformAssistantId:h,error:g}=_n(e,l===`full`&&u===`managed`),_=h??(g?e:null),y=f({queryKey:[`byoEmailCredential`,e,p],queryFn:async()=>{let{data:t}=await _t({path:{assistant_id:e},body:{service:p,field:`api_key`},throwOnError:!0});return t},enabled:u===`your-own`||l===`gated`,staleTime:6e4,retry:i,meta:{errorContext:`byo_email_credential_check`}});(0,Q.useEffect)(()=>{y.error&&a(y.error,{context:`byo_email_credential_check`,bestEffort:!0})},[y.error]);let b=y.data?.hasSecret===!0,x=(0,Q.useCallback)(e=>{d(e),n(Ue,e)},[]),S=(0,Q.useCallback)(()=>{n(Ze,p),B.success(`Email settings saved.`)},[p]),C=(0,Q.useMemo)(()=>qe.find(e=>e.id===p)??qe[0],[p]),E=(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(T,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,$.jsxs)(`span`,{children:[`Configure `,C.displayName,` via the assistant CLI: ask the assistant to run the`,` `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:C.setupSkill}),` `,`skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`]}),(0,$.jsxs)(`a`,{href:C.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,C.displayName,(0,$.jsx)(w,{className:`h-3 w-3`})]})]})]}),O=(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(H,{value:p,onChange:e=>{(e===`mailgun`||e===`resend`)&&m(e)},options:qe.map(e=>({value:e.id,label:e.displayName}))})]}),b?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--system-positive-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-default)]`,children:[(0,$.jsx)(v,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`span`,{children:[C.displayName,` API key configured. To reconfigure, run the`,` `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:C.setupSkill}),` `,`skill.`]})]}),(0,$.jsxs)(`a`,{href:C.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-body-small-default text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,C.displayName,(0,$.jsx)(w,{className:`h-3 w-3`})]})]}):E,(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsx)(Tn,{onClick:S,disabled:!1})})]});return l===`gated`?(0,$.jsx)(Sn,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,children:O}):(0,$.jsx)(xn,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,mode:u,onModeChange:x,children:u===`managed`?(0,$.jsx)(`div`,{className:`space-y-4`,children:l===`disabled`?(0,$.jsx)(tn,{children:`Log in to the Vellum platform to manage email settings.`}):_===null?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(D,{className:`h-4 w-4 animate-spin`}),`Connecting to the Vellum platform…`]}):(0,$.jsx)(kn,{assistantId:_,assistantHandle:s,emailRootDomain:c})}):O})}function jn(){let e=un();return(0,Q.useCallback)(async(t,n)=>{try{let{data:r}=await pt({path:{assistant_id:e},body:{value:n,type:`api_key`,name:t},throwOnError:!0});X(r)}catch(e){throw e instanceof Error&&e.message===`No assistant found`?B.error(`Assistant not ready. Please try again.`):B.error(`Failed to save ${t} API key. Please try again.`),a(e,{context:`provision_provider_key`}),e}},[e])}function Mn(e){let[t,n]=(0,Q.useState)(void 0);return(0,Q.useEffect)(()=>{t!==void 0&&e===t.value&&n(void 0)},[e,t]),[t===void 0?e:t.value,(0,Q.useCallback)(e=>n(e===void 0?void 0:{value:e}),[])]}var Nn=`0.11.0`;function Pn(){return ot(Nn)}var Fn=`gemini-3.1-flash-image-preview`;function In(){let e=un(),r=d(),i=xt(),{data:o}=f({...Lt({path:{assistant_id:e}}),enabled:i,staleTime:3e4}),s=Dt({onSuccess:t=>{At(r,{path:{assistant_id:e}},t)}}),c=jn(),[l,u]=Mn((0,Q.useMemo)(()=>{if(!o)return t(Ye,`gemini`);let e=o.services?.[`image-generation`];return e?.mode===`managed`?`vellum`:e?.provider||t(`vellum:ai:imageGenProvider`,`gemini`)},[o])),[p,m]=(0,Q.useState)(()=>t(Ie,Fn)),h=tt(l),g=h.includes(p)?p:h[0]??Fn,[_,v]=(0,Q.useState)(``),[y,b]=(0,Q.useState)(!1),x=Ve.map(e=>({value:e,label:Fe[e]??e})),S=(0,Q.useMemo)(()=>tt(l).map(e=>({value:e,label:He[e]??e})),[l]),C=l===`gemini`||l===`openai`,{hasStoredCredential:w}=be({assistantId:e,credentialKind:`api_key`,credentialName:l,enabled:C}),T=u,E=(0,Q.useCallback)(async()=>{b(!0);let t=_.trim(),i=C&&t.length>0;try{i&&await c(je(g),t),await st();let n=l===`vellum`&&!Pn()?{mode:`managed`}:{provider:l,mode:l===`vellum`?`managed`:`your-own`};await s.mutateAsync({path:{assistant_id:e},body:{services:{"image-generation":n}}}).catch(e=>{throw B.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e});try{await ft({path:{assistant_id:e},body:{modelId:g},throwOnError:!0})}catch(e){throw B.error(`Failed to update image generation model. Please try again.`),a(e,{context:`set_image_gen_model`}),e}finally{r.invalidateQueries({queryKey:kt({path:{assistant_id:e}})})}}catch{b(!1);return}b(!1);try{if(n(Ye,l),n(Ie,g),i){let t=rt(e,`api_key`,l);r.setQueryData(t,!0),r.invalidateQueries({queryKey:t}),v(``)}B.success(`Image generation settings saved.`)}catch(e){a(e,{context:`settings-ai-image-gen-persist-local`}),B.error(`Saved, but local preferences could not be written.`)}},[_,l,C,g,e,s,c,r]),O=(0,Q.useCallback)(()=>{v(``),m(Fn),n(Ie,Fn)},[]);return(0,$.jsx)(Sn,{title:`Image Generation`,subtitle:`Configure which model your assistant uses to generate images`,children:(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(H,{"aria-label":`Image generation provider`,value:l,onChange:T,options:x})]}),l===`vellum`&&(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Image generation runs through your Vellum account.`}),C&&(0,$.jsx)(L,{label:`API Key`,type:`password`,value:_,onChange:e=>v(e.target.value),placeholder:ke(l===`openai`?`Enter your OpenAI API key`:`Enter your Gemini API key`,w),fullWidth:!0}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,$.jsx)(H,{"aria-label":`Image generation model`,value:g,onChange:m,options:S})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Tn,{onClick:E,disabled:y}),y&&(0,$.jsx)(D,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),C&&(0,$.jsx)(En,{onClick:O})]})]})})}function Ln({title:e,count:t,action:n,children:r}){return(0,$.jsxs)(`section`,{className:`rounded-xl border border-[var(--border-hover)] bg-[var(--surface-overlay)] px-3 py-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,$.jsx)(h,{variant:`body-large-default`,as:`h3`,className:`text-[var(--content-secondary)]`,children:e}),t==null?null:(0,$.jsxs)(h,{variant:`body-large-default`,as:`span`,"aria-label":`${t} ${e.toLowerCase()}`,className:`text-[var(--content-disabled)]`,children:[`·`,` `,t]})]}),n]}),r==null?null:(0,$.jsx)(`div`,{className:`mt-4 border-t border-[var(--border-base)]`,children:r})]})}function Rn(e){return e.scheduleNames.length>0||e.deferredReminderCount>0||e.scheduleLookupFailed}var zn=5;function Bn(e,t){return`${e} ${t}${e===1?``:`s`}`}function Vn(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(`, `)}, and ${e.at(-1)}`}function Hn(e){let t=e.label||e.name,n=[];e.isActive&&n.push(`is your default profile`),e.callSiteIds.length>0&&n.push(`is used by ${Bn(e.callSiteIds.length,`action override`)}`);let r=[];return e.scheduleNames.length>0&&r.push(Bn(e.scheduleNames.length,`schedule`)),e.deferredReminderCount>0&&r.push(Bn(e.deferredReminderCount,`reminder`)),r.length>0&&n.push(`runs ${Vn(r)}`),n.length===0?`Choose a replacement profile for "${t}". Anything still pointing at it moves there before it is deleted.`:`"${t}" ${Vn(n)}. Pick a replacement below and those references move to it, then "${t}" is deleted.`}function Un({title:e,items:t,mono:n}){return(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(h,{variant:`body-small-default`,as:`p`,className:`text-(--content-tertiary)`,children:e}),(0,$.jsx)(`ul`,{className:`space-y-1 pl-1`,children:t.map(e=>(0,$.jsxs)(`li`,{className:`text-body-small-default text-(--content-secondary)`,children:[`• `,n?(0,$.jsx)(`code`,{children:e}):e]},e))})]})}function Wn({blocked:e,availableReplacements:t,replacement:n,onReplacementChange:r,error:i,saving:a,onClose:o,onConfirm:s}){let l=e?.scheduleNames??[],u=l.slice(0,zn),d=l.length-u.length,f=e!=null&&Rn(e);return(0,$.jsx)(z.Root,{open:e!==null,onOpenChange:e=>{e||o()},children:(0,$.jsxs)(z.Content,{size:`sm`,children:[(0,$.jsx)(z.Header,{children:(0,$.jsx)(z.Title,{children:`Choose a Replacement Profile`})}),(0,$.jsxs)(z.Body,{className:`space-y-4`,children:[e&&(0,$.jsx)(h,{variant:`body-medium-default`,as:`p`,children:Hn(e)}),e&&e.callSiteIds.length>0&&(0,$.jsx)(Un,{title:`Action overrides`,items:e.callSiteIds,mono:!0}),u.length>0&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(Un,{title:`Schedules`,items:u}),d>0&&(0,$.jsxs)(h,{variant:`body-small-default`,as:`p`,className:`pl-1 text-(--content-tertiary)`,children:[`and `,d,` more`]})]}),e?.scheduleLookupFailed&&(0,$.jsx)(h,{variant:`body-small-default`,as:`p`,className:`text-(--system-mid-strong)`,children:`We could not check which schedules use this profile. Any schedule pinned to it moves to the replacement as well.`}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-(--content-tertiary)`,children:`Replacement profile`}),(0,$.jsx)(H,{"aria-label":`Replacement profile`,value:n,onChange:r,placeholder:`Select a replacement…`,options:t.map(e=>{let t=f&&e.status===`disabled`;return{value:e.name,label:pe(e),disabled:t,tooltip:t?`Enable this profile to move schedules onto it.`:void 0}})})]}),i&&(0,$.jsx)(h,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:i})]}),(0,$.jsxs)(z.Footer,{children:[(0,$.jsx)(c,{variant:`ghost`,size:`compact`,onClick:o,children:`Cancel`}),(0,$.jsx)(c,{variant:`primary`,size:`compact`,disabled:!n||a,onClick:s,children:a?`Saving…`:`Reassign and Delete`})]})]})})}function Gn({profile:e,isActiveProfile:t,selected:n,connections:r,deletePending:i=!1,onOpen:a,onMakeActive:o,onSetStatus:l,onDelete:u}){let d=e.source===`managed`,f=e.status===`disabled`,p=e.label??e.name,m=[];e.model&&m.push(ye(e.provider??void 0,e.model,r)),d&&m.push(`Managed by Vellum`);let h=e.availability,g=h?.status===`incomplete`,v=h!=null&&h.status!==`ok`?`${h.message??`This profile's provider is not available.`}${g?` Click to fix.`:``}`:null;return(0,$.jsx)(S,{title:(0,$.jsx)(`span`,{className:f?`opacity-55`:void 0,children:p}),subtitle:m.length>0?m.join(` • `):void 0,onClick:a,showChevron:!1,selected:n,disabled:i,contentAriaLabel:`Open profile ${p}`,trailingInteractive:!0,trailing:(0,$.jsxs)($.Fragment,{children:[v==null?null:(0,$.jsx)(s,{content:v,children:g?(0,$.jsx)(`button`,{type:`button`,onClick:a,"aria-label":v,className:`inline-flex cursor-pointer rounded-sm p-0.5 keyboard-focus:ring-2 keyboard-focus:ring-[var(--ring)]`,children:(0,$.jsx)(_,{className:`h-4 w-4 text-[var(--system-mid-strong)]`,"aria-hidden":`true`})}):(0,$.jsx)(`span`,{className:`inline-flex p-0.5`,tabIndex:0,children:(0,$.jsx)(_,{className:`h-4 w-4 text-[var(--system-mid-strong)]`,"aria-label":v,role:`img`})})}),f?(0,$.jsx)(F,{tone:`neutral`,children:`Disabled`}):null,t?(0,$.jsx)(F,{tone:`positive`,children:`Default`}):null,(0,$.jsxs)(y.Root,{children:[(0,$.jsx)(y.Trigger,{asChild:!0,children:(0,$.jsx)(c,{variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(C,{}),"aria-label":`Actions for ${p}`,disabled:i})}),(0,$.jsxs)(y.Content,{align:`end`,sideOffset:4,children:[(0,$.jsx)(y.Item,{onSelect:a,children:d?`View`:`Edit`}),!t&&!f?(0,$.jsx)(y.Item,{onSelect:o,children:`Make Default`}):null,f?(0,$.jsx)(y.Item,{onSelect:()=>l(!0),children:`Enable`}):d?null:(0,$.jsx)(y.Item,{onSelect:()=>l(!1),children:`Disable`}),d?null:(0,$.jsx)(y.Item,{onSelect:u,className:`text-[var(--system-negative-strong)] data-[highlighted]:text-[var(--system-negative-strong)]`,children:`Delete`})]})]})]})})}var Kn=`0.11.0`;function qn(){return at(Kn)}function Jn(e,t){let n=qn(),{data:r}=f({...St({path:{assistant_id:e}}),enabled:n,staleTime:3e4}),{profiles:i,profileOrder:a}=$e(t?.llm,e);return(0,Q.useMemo)(()=>r==null?{entries:ce(i,a).map(e=>({name:e.name,label:e.label??null,provider:e.provider??null,model:e.model??null,status:e.status===`disabled`?`disabled`:`active`,source:e.source===`managed`?`managed`:`user`,provider_connection:e.provider_connection,availability:null})),isEffectiveCatalog:!1}:{entries:r.profiles,isEffectiveCatalog:!0},[r,i,a])}function Yn(e){let t=d();return Dt({onSuccess:n=>{At(t,{path:{assistant_id:e}},n),t.invalidateQueries({queryKey:wt({path:{assistant_id:e}})}),t.invalidateQueries({queryKey:Nt({path:{assistant_id:e}})})}})}var Xn=`0.10.8`;function Zn(e){return ct(Xn,e)}var Qn=`settings-ai-profile-make-active`,$n=`Failed to set the active profile. Please try again.`;function er(e){let t=Yn(e),n=d(),r=Zn(e),i=Pt({onSuccess:()=>{n.invalidateQueries({queryKey:kt({path:{assistant_id:e}})}),n.invalidateQueries({queryKey:wt({path:{assistant_id:e}})})}});async function o(n,r,i){try{await t.mutateAsync({path:{assistant_id:e},body:{llm:n}})}catch(e){throw a(e,{context:r}),B.error(i),e}}async function s(t){if(!r){await o({activeProfile:t},Qn,$n);return}try{await i.mutateAsync({path:{assistant_id:e},body:{name:t}})}catch(e){let t=ut(e);throw B.error(t??$n),t||a(e,{context:Qn}),e}}return{makeActive:s,setStatus:(e,t)=>o({profiles:{[e]:{status:t?`active`:`disabled`}}},`settings-ai-profile-toggle`,`Failed to update the profile. Please try again.`),deleteProfile:(e,t,n)=>o({profiles:{[e]:null},profileOrder:t.filter(t=>t!==e),...n?.isAdvisor?{advisorProfile:null}:{}},`settings-ai-profile-delete`,`Failed to delete the profile. Please try again.`),patchLlm:o,isPending:t.isPending||i.isPending}}var tr=`The profile was not deleted.`,nr=`Failed to move the schedules. ${tr}`;function rr(e){let t=ut(e);return t?`${/[.!?]$/.test(t)?t:`${t}.`} ${tr}`:nr}function ir(e,t,n){let r=er(e),i=d(),o=me(),s=t?.llm?.activeProfile??null,c=t?.llm?.advisorProfile??null,l=t?.llm?.callSites??{},u=(0,Q.useMemo)(()=>t?.llm?.profiles??{},[t?.llm?.profiles]),f=(0,Q.useMemo)(()=>t?.llm?.profileOrder??[],[t?.llm?.profileOrder]),p=(0,Q.useMemo)(()=>ce(u,f),[u,f]),[m,h]=(0,Q.useState)(null),[g,_]=(0,Q.useState)(null),[v,y]=(0,Q.useState)(``),[b,x]=(0,Q.useState)(!1),[S,C]=(0,Q.useState)(null),w=(0,Q.useRef)(!1);function T(e){let t=p.filter(t=>t.name===e?!1:t.status===`disabled`?!0:he(t,p,{requireOwnProviderAndModel:o})),n=t.filter(e=>e.source!==`managed`||e.name===s);return n.length>0?n:t}function E(e,t){let n=T(e).filter(e=>!t||e.status!==`disabled`);return(n.find(e=>e.name===s)??n[0])?.name??``}async function D(e){try{await r.deleteProfile(e,f,{isAdvisor:e===c}),n?.onDeleted?.(e)}catch{}}async function O(t){let n=u[t]?.label??t,r=t===s,o=Object.entries(l).filter(([e,n])=>e!==`mainAgent`&&n?.profile===t).map(([e])=>e),c=[],d=0,f=!1;if(await gn(e))try{let n=(await i.fetchQuery({...zt({path:{assistant_id:e},query:{inference_profile:t,include_all:`true`}}),retry:!1,staleTime:0})).schedules??[];c=n.filter(e=>!e.isDeferred).map(e=>e.name),d=n.filter(e=>e.isDeferred).length}catch(e){a(e,{context:`settings-ai-profile-delete-schedule-scan`}),f=!0}if(!(r||o.length>0||c.length>0||d>0)&&!f){await D(t);return}let p={name:t,label:n,isActive:r,callSiteIds:o,scheduleNames:c,deferredReminderCount:d,scheduleLookupFailed:f};h(p),y(E(t,Rn(p))),_(null)}function k(e){t==null||w.current||(w.current=!0,C(e),O(e).finally(()=>{w.current=!1,C(null)}))}async function A(){if(!m||!v)return;if(x(!0),_(null),Rn(m))try{await fn(e,m.name,v),await i.invalidateQueries({queryKey:Tt({path:{assistant_id:e}})})}catch(e){a(e,{context:`settings-ai-profile-reassign-schedules`}),_(rr(e)),x(!1);return}let t={};if(m.isActive&&(t.activeProfile=v),m.callSiteIds.length>0){let e={};for(let t of m.callSiteIds)e[t]={profile:v};t.callSites=e}if(Object.keys(t).length>0)try{await r.patchLlm(t,`settings-ai-profile-reassign-delete`,`Failed to reassign references. Please try again.`)}catch{_(`Failed to reassign references. Please try again.`),x(!1);return}let n=m.name;h(null),x(!1),D(n)}return{requestDelete:k,pendingDeleteName:S,blockedDeleteModalProps:{blocked:m,availableReplacements:T(m?.name??null),replacement:v,onReplacementChange:y,error:g,saving:b,onClose:()=>{h(null),_(null)},onConfirm:()=>void A()}}}function ar(){}function or({assistantId:e,config:t,connections:n,selectedProfileName:r,onOpenProfile:i,onCreateProfile:a,onProfileDeleted:o}){let{entries:s}=Jn(e,t),l=er(e),u=ir(e,t,{onDeleted:o}),d=t?.llm?.activeProfile??null;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Ln,{title:`Profiles`,action:(0,$.jsx)(c,{variant:`primary`,onClick:a,leftIcon:(0,$.jsx)(A,{}),disabled:t==null,children:`Create Profile`}),children:t==null?(0,$.jsx)(h,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`Loading profiles…`}):s.length===0?(0,$.jsx)(h,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No profiles yet. Create one to get started.`}):s.map(e=>(0,$.jsx)(Gn,{profile:e,isActiveProfile:e.name===d,selected:e.name===r,connections:n,deletePending:u.pendingDeleteName===e.name,onOpen:()=>i(e.name),onMakeActive:()=>void l.makeActive(e.name).catch(ar),onSetStatus:t=>void l.setStatus(e.name,t).catch(ar),onDelete:()=>u.requestDelete(e.name)},e.name))}),(0,$.jsx)(Wn,{...u.blockedDeleteModalProps})]})}var sr={anthropic:!0,openai:!0,gemini:!0,fireworks:!0,openrouter:!0,vellum:!0,together:!0,"vercel-ai-gateway":!0,minimax:!0,atlascloud:!0,baseten:!0,poolside:!0};function cr(e){return e in sr}function lr(e){let t=e.baseUrl??``;try{e.baseUrl&&(t=new URL(e.baseUrl).host)}catch{}let n=[];t&&n.push(t);let r=e.models?.length??0;return r>0&&n.push(`${r} ${r===1?`model`:`models`}`),e.auth.type===`none`&&n.push(`keyless`),n.join(` · `)}function ur(e){switch(e.auth.type){case`api_key`:return`Own API key`;case`oauth_subscription`:return`ChatGPT subscription`;case`none`:return`No API key needed`;default:return null}}function dr(e){if(e.provider===`vellum`)return`Included with your plan`;if(e.provider===`openai-compatible`)return lr(e);let t=[],n=e.models?.length??K(e.provider).length;n>0&&t.push(`${n} ${n===1?`model`:`models`}`);let r=ur(e);return r&&t.push(r),t.join(` • `)}function fr({connection:e,isDefault:t,supportsDefaultProvider:n,selected:r,isSettingDefault:i,onOpen:a,onSetDefault:o,onDelete:s}){let l=e.isManaged??!1,u=Pe(e),d=cr(e.provider),f=dr(e),p=n&&!t&&d,m=!l&&a!=null,h=!l&&!t,g=p||m||h;return(0,$.jsx)(S,{title:u,subtitle:f.length>0?f:void 0,onClick:a,showChevron:!1,selected:r,contentAriaLabel:a?`Open provider ${u}`:void 0,trailingInteractive:!0,trailing:(0,$.jsxs)($.Fragment,{children:[l?(0,$.jsx)(F,{tone:`neutral`,title:`Runs on Vellum's managed credentials.`,children:`Managed`}):null,t?(0,$.jsx)(F,{tone:`info`,title:`Built-in profiles (Balanced, Quality, Cost, Speed) use this provider.`,children:`Default`}):null,e.provider===`ollama`?(0,$.jsx)(F,{tone:`neutral`,title:`Runs models on this machine.`,children:`Local`}):null,e.provider===`openai-compatible`?(0,$.jsx)(F,{tone:`neutral`,title:`A provider you created, served by an OpenAI-compatible endpoint.`,children:`Custom`}):null,g?(0,$.jsxs)(y.Root,{children:[(0,$.jsx)(y.Trigger,{asChild:!0,children:(0,$.jsx)(c,{variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(C,{}),"aria-label":`Actions for ${u}`})}),(0,$.jsxs)(y.Content,{align:`end`,sideOffset:4,children:[m?(0,$.jsx)(y.Item,{onSelect:a,children:`Edit`}):null,p?(0,$.jsx)(y.Item,{disabled:i,onSelect:o,children:`Set as default`}):null,h?(0,$.jsx)(y.Item,{onSelect:s,className:`text-[var(--system-negative-strong)] data-[highlighted]:text-[var(--system-negative-strong)]`,children:`Delete`}):null]})]}):(0,$.jsx)(`span`,{className:`inline-block w-8`,"aria-hidden":!0})]})})}function pr(e,t){let n=d(),r={path:{assistant_id:e}},i=p({...Ot(),onSuccess:()=>{n.invalidateQueries({queryKey:jt(r)}),n.invalidateQueries({queryKey:kt(r)}),n.invalidateQueries({queryKey:wt(r)})},onError:e=>{a(e,{context:`settings-ai-set-default-provider`}),B.error(`Failed to set the default provider. Please try again.`)}});function o(t){cr(t.provider)&&i.mutate({path:{assistant_id:e},body:{provider:t.provider,connectionName:t.name}})}function s(e){return i.isPending&&i.variables?.body?.connectionName===e}async function c(i){try{let{response:a}=await gt({path:{assistant_id:e,name:i}});a?.ok||a?.status===404?(n.invalidateQueries({queryKey:Ct(r)}),t?.onDeleted?.(i)):a?.status===409?B.error(`This provider is in use by a profile or as the default provider. Update those settings before deleting it.`):B.error(`Failed to delete the provider. Please try again.`)}catch(e){a(e,{context:`settings-ai-provider-delete`}),B.error(`Failed to delete the provider. Please try again.`)}}return{setDefault:o,isSettingDefault:s,deleteConnection:c}}var mr=`0.10.8`;function hr(){return at(mr)}function gr({assistantId:e,selectedConnectionName:t,onOpenConnection:n,onAddProvider:r,onConnectionDeleted:i}){let{data:a,isLoading:o,isError:s}=f(It({path:{assistant_id:e}})),l=hr(),{data:u}=f({...Mt({path:{assistant_id:e}}),enabled:l}),d=l?u?.resolvedConnectionName??null:null,p=pr(e,{onDeleted:i}),m=(0,Q.useMemo)(()=>{let e=a?.connections??[];return[...e.filter(e=>e.provider===W),...e.filter(e=>e.provider!==W)]},[a]);return(0,$.jsx)(Ln,{title:`Providers`,action:(0,$.jsx)(c,{variant:`outlined`,onClick:r,leftIcon:(0,$.jsx)(A,{}),children:`Add Provider`}),children:o?(0,$.jsx)(`div`,{className:`space-y-2 py-2`,children:[1,2,3].map(e=>(0,$.jsx)(U,{className:`h-10 rounded-lg`},e))}):s?(0,$.jsx)(h,{variant:`body-medium-default`,as:`p`,className:`py-4 text-center text-(--system-negative-strong)`,children:`Failed to load providers. Please try again.`}):m.length===0?(0,$.jsx)(h,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No providers yet. Add one to get started.`}):m.map(e=>(0,$.jsx)(fr,{connection:e,isDefault:e.name===d,supportsDefaultProvider:l,selected:e.name===t,isSettingDefault:p.isSettingDefault(e.name),onOpen:e.isManaged??!1?void 0:()=>n(e.name),onSetDefault:()=>p.setDefault(e),onDelete:()=>void p.deleteConnection(e.name)},e.name))})}function _r({panel:e,onOpenPanel:t,onClosePanel:n}){let r=un(),{data:i}=f({...Lt({path:{assistant_id:r}}),staleTime:3e4}),a=hr(),{data:o}=f({...Mt({path:{assistant_id:r}}),enabled:a}),s=o?.availability,{data:l}=f({...It({path:{assistant_id:r}})}),u=l?.connections,d=i?.llm?.callSites??{},p=Object.entries(d).filter(([e,t])=>e!==`mainAgent`&&(t?.profile!=null||t?.provider!=null||t?.model!=null)).length;return(0,$.jsx)(Sn,{title:`Language Model`,subtitle:`Profiles choose which model answers. Providers supply access to it`,children:(0,$.jsxs)(`div`,{className:`space-y-2`,children:[s&&s.status!==`ok`&&(0,$.jsx)(P,{tone:s.status===`unknown`?`warning`:`error`,children:s.message??`Your default provider is not available.`}),r&&(0,$.jsx)(or,{assistantId:r,config:i,connections:u,selectedProfileName:e?.kind===`profile`?e.name:null,onOpenProfile:e=>t({kind:`profile`,name:e}),onCreateProfile:()=>t({kind:`create-profile`}),onProfileDeleted:t=>{e?.kind===`profile`&&e.name===t&&n()}}),r&&(0,$.jsx)(gr,{assistantId:r,selectedConnectionName:e?.kind===`provider`?e.name:null,onOpenConnection:e=>t({kind:`provider`,name:e}),onAddProvider:()=>t({kind:`add-provider`}),onConnectionDeleted:t=>{e?.kind===`provider`&&e.name===t&&n()}}),(0,$.jsx)(Ln,{title:`Overrides`,count:p,action:(0,$.jsx)(c,{variant:`outlined`,onClick:()=>t({kind:`overrides`}),children:`Manage`})})]})})}function vr(e,{onSaved:t}={}){let n=Yn(e),{data:r}=f({...Lt({path:{assistant_id:e}}),staleTime:3e4}),i=(0,Q.useMemo)(()=>r?.llm?.profiles??{},[r?.llm?.profiles]),o=r?.llm?.profileOrder??[];async function s(r,s,c){let l=c?.mode??`replace`,u=!(r in i);if(l===`merge`&&!u){await n.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[r]:s}}}}),t?.();return}let d={profiles:{[r]:s}};if(u&&(d.profileOrder=o.includes(r)?o:[...o,r]),u)await n.mutateAsync({path:{assistant_id:e},body:{llm:d}});else{let t=i[r];await n.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[r]:null}}}});try{await n.mutateAsync({path:{assistant_id:e},body:{llm:d}})}catch(i){throw a(i,{context:`settings-ai-profile-edit-recreate`}),t!=null&&await n.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[r]:t}}}}).catch(()=>{}),i}}u&&B.success(`Profile "${s.label??r}" created`),t?.()}return{saveProfile:s,isPending:n.isPending}}function yr({assistantId:e,profileName:t,onClose:n}){let{data:r}=f({...Lt({path:{assistant_id:e}}),staleTime:3e4}),{data:i}=f({...It({path:{assistant_id:e}})}),a=i?.connections,o=(0,Q.useMemo)(()=>r?.llm?.profiles??{},[r?.llm?.profiles]),s=Object.keys(o),l=(0,Q.useMemo)(()=>{if(t==null)return;let e=o[t];return e?{name:t,...e}:void 0},[t,o]),u=t==null?`create`:l?.source===`managed`||l?.invariant===!0?`view`:`edit`,{saveProfile:d,isPending:p}=vr(e,{onSaved:n}),m=Ge({mode:u,profileName:t??void 0,initialValues:l,existingNames:s,connections:a,assistantId:e,onSave:d}),h=ir(e,r,{onDeleted:()=>n()}),g=t!=null&&h.pendingDeleteName===t,_=t!=null&&r!=null&&!(t in o);(0,Q.useEffect)(()=>{_&&!m.saving&&!p&&n()},[_,m.saving,p,n]);let v=u===`view`;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(dn,{title:m.effectiveMode===`create`?`New Profile`:l?.label??t??`Profile`,closeVariant:`outlined`,onClose:n,headerTrailing:v&&m.effectiveMode!==`create`?(0,$.jsx)(F,{tone:`neutral`,children:`Managed by Vellum`}):null,headerActions:m.effectiveMode!==`create`&&!m.isReadOnly?(0,$.jsx)(c,{variant:`outlined`,size:`compact`,leftIcon:(0,$.jsx)(M,{}),tintColor:`var(--system-negative-strong)`,onClick:()=>{t!=null&&h.requestDelete(t)},disabled:m.saving||g,children:g?`Deleting…`:`Delete`}):null,footer:m.isReadOnly?(0,$.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,$.jsx)(c,{variant:`outlined`,onClick:m.switchToSaveAsNew,disabled:m.saving,children:`Save As New`}),m.hasViewModeChanges?(0,$.jsx)(c,{variant:`primary`,onClick:()=>void m.handleSave(),disabled:m.saving,children:m.saving?`Saving…`:`Save`}):null]}):(0,$.jsx)(`div`,{className:`flex justify-end`,children:(0,$.jsx)(c,{variant:`primary`,onClick:()=>void m.handleSave(),disabled:m.isInvalid||m.saving,children:m.saving?`Saving…`:m.effectiveMode===`create`?`Create Profile`:`Save Changes`})}),children:(0,$.jsx)(We,{editor:m,assistantId:e,connections:a,variant:`panel`})}),(0,$.jsx)(Wn,{...h.blockedDeleteModalProps})]})}function br({value:e,profileOptions:t,disabled:n,onChange:r}){return(0,$.jsx)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-default font-medium text-[var(--content-default)]`,children:`Advisor`}),(0,$.jsx)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`The profile your assistant consults for a second opinion when it wants to check a plan or review its own work.`})]}),(0,$.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:(0,$.jsx)(H,{value:e,onChange:r,options:t,placeholder:`Choose profile…`,className:`w-44`,menuMinWidth:280,menuAlign:`end`,disabled:n})})]})})}var xr=`__custom__`;function Sr(e){return e?!!(e.profile||e.provider||e.model):!1}function Cr(e,t){if(t?.provider||t?.model)return null;let n=e.defaultProfile??e.shippedDefaultProfile;return n?{profile:n,via:t?.profile===n?`override`:`default`}:null}function wr(e,t){let n=Sr(e);return n===Sr(t)?n?(e?.profile??null)===(t?.profile??null)&&(e?.provider??null)===(t?.provider??null)&&(e?.model??null)===(t?.model??null):!0:!1}function Tr(e){return`${e} ${e===1?`action`:`actions`}`}function Er({assistantId:e,callSites:t,domains:n,persistedOverrides:r,orderedProfiles:i,onClose:o,onApplied:s}){let l=Yn(e),u=me(),d=(0,Q.useMemo)(()=>({requireOwnProviderAndModel:u}),[u]),f=(0,Q.useMemo)(()=>{let e=new Map;for(let n of t){let t=Cr(n,r[n.id]);t&&e.set(n.id,t)}return e},[t,r]),p=(0,Q.useMemo)(()=>{let e=new Set(Array.from(f.values(),e=>e.profile));return i.filter(t=>e.has(t.name))},[i,f]),[m,g]=(0,Q.useState)(()=>p[0]?.name??``),[_,v]=(0,Q.useState)(``),[y,b]=(0,Q.useState)(new Set),[x,S]=(0,Q.useState)(!1),C=(0,Q.useMemo)(()=>{let e=new Map(n.map(e=>[e.id,e.displayName]));return t=>e.get(t)??t},[n]),w=(0,Q.useMemo)(()=>t.filter(e=>f.get(e.id)?.profile===m),[t,f,m]),T=(0,Q.useMemo)(()=>w.map(e=>e.id).filter(e=>!y.has(e)),[w,y]),E=(0,Q.useMemo)(()=>p.map(e=>({value:e.name,label:pe(e)})),[p]),O=(0,Q.useMemo)(()=>de(i,[],d).filter(e=>e.name!==m).map(e=>({value:e.name,label:pe(e)})),[i,m,d]),A=oe(i,m),j=oe(i,_),M=y.size===0;function N(e){g(e),b(new Set),e===_&&v(``)}function F(e,t){b(n=>{let r=new Set(n);return t?r.delete(e):r.add(e),r})}async function I(){if(!(!m||!_||T.length===0)){S(!0);try{let t={};for(let e of T)t[e]={profile:_};await l.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:t}}}),B.success(`Updated ${Tr(T.length)} to "${j}".`),s(),o()}catch(e){let t=ut(e);B.error(t??`Failed to update overrides. Please try again.`),t||a(e,{context:`settings-ai-bulk-override-swap`})}finally{S(!1)}}}return(0,$.jsx)(z.Root,{open:!0,onOpenChange:e=>{e||o()},children:(0,$.jsxs)(z.Content,{size:`md`,children:[(0,$.jsx)(z.Header,{children:(0,$.jsx)(z.Title,{children:`Change Action Overrides`})}),(0,$.jsxs)(z.Body,{className:`space-y-4`,children:[(0,$.jsx)(h,{variant:`body-medium-default`,as:`p`,children:`Update the actions that currently use one profile. The result is saved as individual overrides.`}),(0,$.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,$.jsx)(H,{id:`bulk-swap-source`,label:`Currently using`,value:m,onChange:N,options:E}),(0,$.jsx)(H,{id:`bulk-swap-target`,label:`Change to`,value:_,onChange:v,options:O,placeholder:`Select a profile…`})]}),(0,$.jsxs)(P,{tone:`info`,title:`This happens once.`,children:[`It changes the selected actions that use `,A,` today. It does not create an ongoing rule between profiles.`]}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`mb-2 flex items-baseline justify-between gap-2`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(h,{variant:`body-medium-default`,as:`p`,children:[Tr(w.length),` currently`,` `,w.length===1?`uses`:`use`,` `,A]}),(0,$.jsx)(h,{variant:`body-small-default`,as:`p`,className:`text-[color:var(--content-secondary)]`,children:`Choose which actions to update.`})]}),(0,$.jsx)(c,{variant:`ghost`,onClick:()=>b(M?new Set(w.map(e=>e.id)):new Set),children:M?`Clear all`:`Select all`})]}),(0,$.jsx)(`div`,{className:`max-h-72 space-y-1 overflow-y-auto`,children:w.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-[var(--border-base)] px-3 py-2`,children:[(0,$.jsx)(k,{checked:!y.has(e.id),onCheckedChange:t=>F(e.id,t===!0),disabled:x,label:e.displayName,helperText:C(e.domain)}),(0,$.jsx)(`span`,{className:`shrink-0 text-body-small-default text-[color:var(--content-tertiary)]`,children:f.get(e.id)?.via===`override`?`Override`:`Default`})]},e.id))})]})]}),(0,$.jsxs)(z.Footer,{children:[(0,$.jsxs)(h,{variant:`body-small-default`,as:`p`,className:`mr-auto self-center text-[color:var(--content-secondary)]`,children:[Tr(T.length),` will change`]}),(0,$.jsx)(c,{variant:`ghost`,onClick:o,disabled:x,children:`Cancel`}),(0,$.jsx)(c,{variant:`primary`,disabled:!m||!_||T.length===0||x,onClick:()=>void I(),children:x?(0,$.jsx)(D,{className:`h-4 w-4 animate-spin`}):`Apply to ${Tr(T.length)}`})]})]})})}function Dr({id:e,displayName:t,description:n,defaultProfileLabel:r,draft:i,profileOptions:a,onDraftChange:o,onToggle:s}){let c=Sr(i),l=!i||!c?``:i.provider||i.model?xr:i.profile??``,u=l===xr,d=Ne(),f=d[0]??te[0],p=Z(i?.provider)?i.provider:void 0,m=p!==void 0&&d.some(e=>e===p),h=p??f,g=K(h).map(e=>({value:e.id,label:e.displayName})),_=!!i?.provider&&!i?.model;function v(t){t===`__custom__`?o(e,{profile:null,provider:f,model:q(f)??``}):t===``?o(e,null):o(e,{profile:t,provider:null,model:null})}function y(t){let n=q(t)??``;o(e,{...i??{},profile:null,provider:t,model:n})}function b(t){o(e,{...i??{},model:t})}return(0,$.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-default font-medium text-[var(--content-default)]`,children:t}),n&&(0,$.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[n,r&&(0,$.jsxs)(`span`,{className:`ml-1.5 text-body-small-default text-[var(--content-tertiary)] opacity-60`,children:[`· Default: `,r]})]})]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c&&(0,$.jsx)(H,{value:l,onChange:v,options:a,className:`w-44`,menuMinWidth:280,menuAlign:`end`}),(0,$.jsx)(R,{checked:c,onChange:t=>s(e,t),"aria-label":`Override ${t}`})]})]}),c&&u&&(0,$.jsxs)(`div`,{className:`mt-3 space-y-2 border-t border-[var(--border-base)] pt-3`,children:[(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex-1`,children:[(0,$.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(H,{value:h??``,onChange:y,options:[...d.map(e=>({value:e,label:ee[e]??e})),...p&&!m?[{value:p,label:`${ee[p]??p} (unavailable)`}]:[]]})]}),(0,$.jsxs)(`div`,{className:`flex-1`,children:[(0,$.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Model`}),(0,$.jsx)(H,{value:i?.model??``,onChange:b,options:g})]})]}),_&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:`Pick a model`})]})]})}function Or({groups:e,drafts:t,buildProfileOptionsForRow:n,profileLabelFor:r,advisorMatchesSearch:i,onDraftChange:a,onToggle:o}){return(0,$.jsx)(`div`,{className:`space-y-4`,children:e.length===0?i?null:(0,$.jsx)(`p`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No actions match your search.`}):e.map(({domain:e,sites:i})=>(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`mb-2 text-body-small-default font-semibold uppercase tracking-wider text-[var(--content-tertiary)]`,children:e.displayName}),(0,$.jsx)(`div`,{className:`space-y-1`,children:i.map(e=>{let i=(()=>{let n=t[e.id]??null;return!n||!Sr(n)?``:n.provider||n.model?xr:n.profile??``})(),s=e.shippedDefaultProfile??e.defaultProfile,c=s?r(s):null;return(0,$.jsx)(Dr,{id:e.id,displayName:e.displayName,description:e.description,defaultProfileLabel:c,draft:t[e.id]??null,profileOptions:n(i===``||i===`__custom__`?null:i),onDraftChange:a,onToggle:o},e.id)})})]},e.id))})}function kr(e,t){let n={};for(let r of Object.keys(e)){let i=e[r]??null;Sr(i)?n[r]={profile:i?.profile??null,provider:i?.provider??null,model:i?.model??null}:r in t&&t[r]===null&&(n[r]=null)}return n}function Ar(e){let t={};for(let n of Object.keys(e))t[n]=null;return t}function jr({catalogCallSiteIds:e,persistedOverrides:t,persistedAdvisor:n,isSeeded:r}){let[i,a]=(0,Q.useState)({}),[o,s]=(0,Q.useState)(void 0),c=(0,Q.useMemo)(()=>{if(!r)return{};let n={};for(let r of e)if(r in i)n[r]=i[r];else{let e=t[r];n[r]=e?{...e}:{}}return n},[r,e,t,i]),l=o??n,u=l!==n,d=(0,Q.useMemo)(()=>{if(!r)return!1;for(let e of Object.keys(c))if(!wr(c[e],t[e]))return!0;return!1},[r,c,t]);return{drafts:c,advisorProfile:l,advisorDirty:u,callSiteDraftsDirty:d,hasUnsavedDrafts:u||d,hasValidationError:(0,Q.useMemo)(()=>Object.values(c).some(e=>Sr(e)&&!!e?.provider&&!e?.model),[c]),setDraft:(0,Q.useCallback)((e,t)=>{a(n=>({...n,[e]:t}))},[]),setAdvisor:(0,Q.useCallback)(e=>{s(e)},[]),clearEdits:(0,Q.useCallback)(()=>{a({}),s(void 0)},[]),buildSavePatch:(0,Q.useCallback)(()=>kr(c,i),[c,i]),buildResetPatch:(0,Q.useCallback)(()=>Ar(c),[c])}}function Mr({assistantId:e,onClose:t}){let{data:n}=f({...Lt({path:{assistant_id:e}}),staleTime:3e4}),r=(0,Q.useMemo)(()=>n?.llm?.profiles??{},[n?.llm?.profiles]),i=(0,Q.useMemo)(()=>n?.llm?.profileOrder??[],[n?.llm?.profileOrder]),o=(0,Q.useMemo)(()=>n?.llm?.callSites??{},[n?.llm?.callSites]),s=(0,Q.useMemo)(()=>ce(r,i),[r,i]),l=Ne(),u=me(),d=(0,Q.useMemo)(()=>({requireOwnProviderAndModel:u}),[u]),p=Yn(e),[m,h]=(0,Q.useState)(``),[g,v]=(0,Q.useState)(!1),[y,b]=(0,Q.useState)(!1),[x,S]=(0,Q.useState)(!1),{data:C,isLoading:w,isError:T,refetch:E}=f({...Ft({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4,refetchOnWindowFocus:!1}),O=(0,Q.useMemo)(()=>(C?.callSites??[]).filter(e=>e.id!==`mainAgent`),[C]),k=!w&&!T&&!!C,A=!!n,M=k&&A,N=(0,Q.useMemo)(()=>O.map(e=>e.id),[O]),P=n?.llm?.advisorProfile??``,{drafts:F,advisorProfile:I,advisorDirty:R,callSiteDraftsDirty:z,hasUnsavedDrafts:H,hasValidationError:U,setDraft:W,setAdvisor:G,clearEdits:K,buildSavePatch:ee,buildResetPatch:J}=jr({catalogCallSiteIds:N,persistedOverrides:o,persistedAdvisor:P,isSeeded:M}),Y=(0,Q.useMemo)(()=>new Set(N),[N]),re=(0,Q.useCallback)(e=>oe(s,e),[s]),X=(0,Q.useCallback)(e=>({value:e.name,label:pe(e),...ue(e,s,d)===`undispatchable`?{icon:(0,$.jsx)(_,{className:`h-3.5 w-3.5 text-[var(--system-mid-strong)]`}),tooltip:ne(e)}:{}}),[s,d]),ie=(0,Q.useMemo)(()=>de(s,[P],d).map(X),[s,P,X,d]),ae=(0,Q.useMemo)(()=>{let e=m.trim().toLowerCase();return e===``||`advisor`.includes(e)||`second opinion`.includes(e)},[m]),Z=(0,Q.useMemo)(()=>O.some(e=>Cr(e,o[e.id])!==null),[O,o]),le=(0,Q.useMemo)(()=>Object.entries(o).some(([e,t])=>Y.has(e)&&(t?.profile!=null||t?.provider!=null||t?.model!=null)),[o,Y]),fe=(0,Q.useCallback)(e=>[...de(s,[e],d).map(X),{value:xr,label:`Custom`}],[s,X,d]),he=(0,Q.useMemo)(()=>{if(!m.trim())return O;let e=m.toLowerCase();return O.filter(t=>(t.displayName??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||(t.domain??``).toLowerCase().includes(e))},[O,m]),ge=(0,Q.useMemo)(()=>{if(!C)return[];let e=C.domains.map(e=>e.id),t=new Map(C.domains.map(e=>[e.id,e])),n=[];for(let r of e){let e=he.filter(e=>e.domain===r);e.length>0&&n.push({domain:t.get(r),sites:e})}let r=new Set(e),i=he.filter(e=>!r.has(e.domain));return i.length>0&&n.push({domain:{id:`other`,displayName:`Other`},sites:i}),n},[C,he]),_e=(0,Q.useCallback)((e,t)=>{if(!t){W(e,null);return}let n=se(s,O.find(t=>t.id===e)?.defaultProfile,d);if(n)W(e,{profile:n});else{let t=l[0]??te[0];W(e,{provider:t,model:q(t)??``})}},[O,s,l,W,d]),ve=(0,Q.useCallback)(async()=>{v(!0);try{let n=ee();await p.mutateAsync({path:{assistant_id:e},body:{llm:{...z?{callSites:n}:{},...R?{advisorProfile:I}:{}}}}),t(),B.success(`Overrides saved.`)}catch(e){B.error(`Failed to save overrides. Please try again.`),a(e,{context:`call_site_overrides_save`})}finally{v(!1)}},[ee,z,R,I,t,p,e]),ye=(0,Q.useCallback)(async()=>{v(!0);try{let n=J();await p.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),B.success(`Overrides reset.`)}catch(e){B.error(`Failed to reset overrides. Please try again.`),a(e,{context:`call_site_overrides_reset`})}finally{v(!1)}},[J,t,p,e]);return(0,$.jsxs)(dn,{title:`Action Overrides`,closeVariant:`outlined`,onClose:t,footer:(0,$.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[le&&(0,$.jsx)(c,{variant:`outlined`,onClick:()=>b(!0),disabled:g||!M,tintColor:`var(--system-negative-strong)`,className:`mr-auto`,children:`Reset to Defaults`}),(0,$.jsx)(c,{variant:`primary`,onClick:()=>void ve(),disabled:!H||U||g,children:g?(0,$.jsx)(D,{className:`h-4 w-4 animate-spin`}):`Save`})]}),children:[(0,$.jsx)(`p`,{className:`mb-4 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`mb-4 flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsx)(L,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:`Search actions…`,leftIcon:(0,$.jsx)(j,{className:`h-4 w-4`}),fullWidth:!0})}),(0,$.jsx)(c,{variant:`outlined`,onClick:()=>S(!0),disabled:!M||g||H||!Z,title:H?`Save or reset your changes first`:Z?void 0:`No actions currently use a profile`,children:`Bulk change`})]}),A&&ae&&(0,$.jsxs)(`div`,{className:`mb-4`,children:[(0,$.jsx)(`p`,{className:`mb-2 text-body-small-default font-semibold uppercase tracking-wider text-[var(--content-tertiary)]`,children:`Advisor`}),(0,$.jsx)(br,{value:I,profileOptions:ie,disabled:g,onChange:G})]}),w&&(0,$.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,$.jsx)(D,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}),T&&(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-12 text-center`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Couldn't load actions`}),(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Make sure your assistant is running`}),(0,$.jsx)(c,{variant:`outlined`,onClick:()=>void E(),children:`Retry`})]}),!w&&!T&&C&&(0,$.jsx)(Or,{groups:ge,drafts:F,buildProfileOptionsForRow:fe,profileLabelFor:re,advisorMatchesSearch:ae,onDraftChange:W,onToggle:_e})]}),x&&C&&(0,$.jsx)(Er,{assistantId:e,callSites:O,domains:C.domains,persistedOverrides:o,orderedProfiles:s,onClose:()=>S(!1),onApplied:K}),(0,$.jsx)(V,{open:y,title:`Reset to Defaults`,message:`Every action override will be reset and will follow its default. This cannot be undone.`,confirmLabel:`Reset to Defaults`,destructive:!0,onConfirm:()=>{b(!1),ye()},onCancel:()=>b(!1)})]})}function Nr({mode:e,connection:t,assistantId:n,existingNames:r,connections:i,variant:a=`modal`,onSave:o,onCancel:s}){let[l,u]=(0,Q.useState)(t?.label??``),f=t?.name??``,p=t?.provider??`anthropic`,m=t?.auth.type??`api_key`,[g,_]=(0,Q.useState)(()=>t?.auth.type===`api_key`?t.auth.credential:t?``:`credential/anthropic/api_key`),[v,y]=(0,Q.useState)(t?.baseUrl??``),[b,x]=(0,Q.useState)(()=>t?.models?t.models.map(e=>e.id).join(`, `):``),[S,C]=(0,Q.useState)(!1),[w,T]=(0,Q.useState)(null),E=p===`openai-compatible`,[D,O]=(0,Q.useState)(``),[k,A]=(0,Q.useState)(!1),j=d(),M=(0,Q.useMemo)(()=>Me(g),[g]),N=m===`api_key`&&M!==null,{hasStoredCredential:P,isLoading:F}=be({assistantId:n,credentialKind:`credential`,credentialName:M?`${M.service}:${M.field}`:``,enabled:N}),{credentials:I}=Oe({assistantId:n,enabled:m===`api_key`});(0,Q.useEffect)(()=>{let e=t?.provider??`anthropic`;u(t?.label??``),t?.auth.type===`api_key`?_(t.auth.credential):_(t?``:`credential/${e}/api_key`),T(null),y(t?.baseUrl??``),x(t?.models?t.models.map(e=>e.id).join(`, `):``),O(``),A(!1)},[t]);let R=l.trim()!==(t?.label??``).trim(),B=E&&R?Ee(l,i,t?.name):null,V=f.trim().length>0&&B===null;async function H(){if(V){C(!0),T(null);try{let e;if(m===`api_key`){let t=g.trim()||`credential/${p}/api_key`,r=D.trim();if(r){A(!0);try{let e=Me(t);await pt({path:{assistant_id:n},body:e?{type:`credential`,name:`${e.service}:${e.field}`,value:r}:{type:`api_key`,name:p,value:r},throwOnError:!0});let i=rt(n,`credential`,e?`${e.service}:${e.field}`:``);j.setQueryData(i,!0),j.invalidateQueries({queryKey:Rt({path:{assistant_id:n}})})}catch{T(`Failed to save API key. Please try again.`);return}finally{A(!1)}}e={type:`api_key`,credential:t}}else if(t)e=t.auth;else{T(`Nothing to edit. Close and try again.`);return}let r=l.trim()||null,i={auth:e,label:r,...E&&{base_url:v.trim()||null,models:b.trim()?b.split(`,`).map(e=>({id:e.trim()})).filter(e=>e.id):null}},{data:a,error:s,response:c}=await dt({path:{assistant_id:n,name:t?.name??f.trim()},body:i});if(!c?.ok){T(Ce(c?.status,s)??we(c?.status));return}if(!a){T(`Server returned an empty response. Please try again.`);return}o(a)}catch{T(`Failed to save provider. Please try again.`)}finally{C(!1)}}}let U=I.filter(e=>e.service===p),W=e!==`create`&&t?.auth.type===`api_key`,G=U.length>0||W,K=ke(`Enter your API key`,P);if(e===`create`)return(0,$.jsx)(De,{variant:a===`panel`?`inline`:`modal`,assistantId:n,existingNames:r,connections:i,defaultProviderType:p,onCreated:o,onCancel:s});let ee=(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[`Display Name`,` `,(0,$.jsx)(`span`,{className:`text-[var(--content-disabled)]`,children:`(optional)`})]}),(0,$.jsx)(L,{value:l,onChange:e=>u(e.target.value),placeholder:`e.g. My Anthropic Key`,fullWidth:!0}),B?(0,$.jsx)(h,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:Te[B]}):null]}),E&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Base URL`}),(0,$.jsx)(L,{value:v,onChange:e=>y(e.target.value),placeholder:`https://api.example.com/v1`,fullWidth:!0})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Models`}),(0,$.jsx)(L,{value:b,onChange:e=>x(e.target.value),placeholder:`model-1, model-2`,fullWidth:!0}),(0,$.jsx)(h,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:`Comma-separated model identifiers exposed by your endpoint.`})]})]}),m===`api_key`&&(0,$.jsx)(Se,{apiKeyValue:D,onApiKeyChange:O,credential:g,onCredentialChange:_,isLoadingCredential:F,apiKeyPlaceholder:K,provider:p,providerCredentials:U,showAdvancedSection:G,onError:T}),m===`oauth_subscription`&&(0,$.jsx)(Ae,{assistantId:n,onConnected:o}),w&&(0,$.jsx)(h,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:w})]}),q=(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(c,{variant:`ghost`,size:`compact`,onClick:s,children:`Cancel`}),(0,$.jsx)(c,{variant:`primary`,size:`compact`,disabled:!V||S||k,onClick:()=>void H(),children:S?`Saving…`:`Save Changes`})]});return a===`panel`?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[ee,(0,$.jsx)(`div`,{className:`flex justify-end gap-2`,children:q})]}):(0,$.jsxs)(z.Content,{size:`md`,children:[(0,$.jsxs)(z.Header,{children:[(0,$.jsx)(z.Title,{children:`Edit Provider`}),(0,$.jsx)(z.Description,{children:t?`Editing ${Pe(t)}.`:`Edit provider settings.`})]}),(0,$.jsx)(z.Body,{children:ee}),(0,$.jsx)(z.Footer,{children:q})]})}function Pr({assistantId:e,connectionName:t,onClose:n}){let r=d(),{data:i}=f(It({path:{assistant_id:e}})),a=(0,Q.useMemo)(()=>i?.connections??[],[i]),o=(0,Q.useMemo)(()=>t==null?void 0:a.find(e=>e.name===t),[t,a]),s=t!=null&&i!=null&&o==null;(0,Q.useEffect)(()=>{s&&n()},[s,n]);function c(){r.invalidateQueries({queryKey:Ct({path:{assistant_id:e}})}),r.invalidateQueries({queryKey:jt({path:{assistant_id:e}})}),n()}return(0,$.jsx)(dn,{title:o?Pe(o):`Add Provider`,closeVariant:`outlined`,onClose:n,children:t==null||o!=null?(0,$.jsx)(Nr,{mode:o?`edit`:`create`,connection:o,variant:`panel`,assistantId:e,existingNames:a.map(e=>e.name),connections:a,onSave:c,onCancel:n}):null})}var Fr={vellum:{provider:`vellum`},deepgram:{provider:`deepgram`,credentialService:`deepgram`},openai:{provider:`openai-whisper`,credentialService:`openai`}},Ir={vellum:`vellum`,deepgram:`deepgram`,"openai-whisper":`openai`},Lr=`deepgram`;function Rr({assistantId:e,hideSaveButton:r=!1,hideCredentialsGuide:i=!1,onSaveStateChange:a}={}){let o=un(),s=e??o,c=xt(),l=d(),[u]=(0,Q.useState)(()=>nt.filter(e=>!e.requiresNativeDictation||xe())),p=Lr,{data:m}=f({...Lt({path:{assistant_id:s}}),enabled:c,staleTime:3e4}),h=m?.services?.stt,g=h?.mode===`managed`?`vellum`:h?.provider,_=(0,Q.useMemo)(()=>{let e=g?Ir[g]:void 0;if(e&&u.some(t=>t.id===e))return e;let n=t(Re,p);return u.some(e=>e.id===n)?n:p},[g,u,p]),v=!!g,[y,b]=Mn(_),{available:x,currentCode:S,configuredProviderId:C,selectLanguage:w,selecting:T}=rn(s),[E,D]=(0,Q.useState)(!1),O=x&&y===_&&(Fr[y]?.provider===C||!!g&&!Ir[g]),[k,A]=(0,Q.useState)(``),[j,M]=(0,Q.useState)(!1),[P,F]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{let e=t(Re,p);e===`macos-native`&&!u.some(t=>t.id===e)&&n(Re,p)},[u,p]);let I=(0,Q.useMemo)(()=>u.find(e=>e.id===y)??u[0],[u,y]),R=I.apiKeyPlaceholder!==void 0;(0,Q.useEffect)(()=>{M(t(Qe+y,``).length>0),A(``)},[y]);let z=(0,Q.useMemo)(()=>{let e=y!==_,t=k.trim().length>0;return e||t},[y,_,k]),V=(0,Q.useCallback)(async()=>{let e=k.trim();n(Re,y),e.length>0&&n(Qe+y,e);let r=Fr[y];F(!0);try{if(r?.credentialService){let n=e.length>0?e:t(Qe+y,``);if(n.length>0){let{response:e}=await ht({path:{assistant_id:s},body:{service:r.credentialService,field:`api_key`,value:n,label:`${I.displayName} API Key`},throwOnError:!1});if(!e?.ok)throw Error(`Failed to store API key (HTTP ${e?.status??`?`})`)}}if(r&&(y!==_||!v)||g===`vellum`&&y!==`vellum`){let e=r?.provider??Lr,{response:t}=await mt({path:{assistant_id:s},body:{services:{stt:{provider:e,mode:e===`vellum`?`managed`:`your-own`}}},throwOnError:!1});if(!t?.ok)throw Error(`Failed to save configuration (HTTP ${t?.status??`?`})`)}return e.length>0&&M(!0),A(``),l.invalidateQueries({queryKey:kt({path:{assistant_id:s}})}),B.success(`Speech-to-text settings saved`),!0}catch(e){return B.error(e instanceof Error?e.message:`Failed to save speech-to-text settings`),!1}finally{F(!1)}},[s,y,k,I,_,v,g,l]);(0,Q.useEffect)(()=>{a?.({hasChanges:z,saving:P,save:V})},[a,z,P,V]);let U=(0,Q.useCallback)(()=>{n(Qe+y,``),M(!1),A(``)},[y]),W=j?`•••••••• (Enter a new key to replace)`:I.apiKeyPlaceholder;return(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(H,{value:y,onChange:b,options:u.map(e=>({value:e.id,label:e.displayName})),"aria-label":`STT provider`})]}),O&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Spoken language`}),(0,$.jsx)(Je,{"aria-label":`Spoken language`,"aria-haspopup":`dialog`,onClick:()=>D(!0),value:an(S,C)}),(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Applies from your next spoken turn.`}),(0,$.jsx)(yn,{open:E,onOpenChange:D,title:`Spoken language`,currentCode:S,configuredProviderId:C,selectLanguage:w,selecting:T})]}),R&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`API Key`}),(0,$.jsx)(L,{type:`password`,value:k,onChange:e=>A(e.target.value),placeholder:W,fullWidth:!0})]}),I.setupWarning&&(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(N,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-mid-strong)]`}),(0,$.jsx)(`span`,{children:I.setupWarning})]}),!i&&I.credentialsGuide&&(0,$.jsx)(Dn,{guide:I.credentialsGuide}),y===`vellum`&&(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Transcription runs through your Vellum account.`}),(!r||j)&&(0,$.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[!r&&(0,$.jsx)(Tn,{onClick:V,disabled:!z||P}),j&&(0,$.jsx)(En,{onClick:U})]})]})}function zr(){return(0,$.jsx)(Sn,{title:`Speech-to-Text`,subtitle:`Configure how your assistant transcribes speech`,children:(0,$.jsx)(Rr,{})})}async function Br(e){let{provider:t,apiKey:n,voiceId:r,text:i}=e;if(n.trim().length===0)return{kind:`error`,message:`Save an API key for this provider first.`};try{return t===`elevenlabs`?await Vr(n,r,i):t===`deepgram`?await Hr(n,i):t===`fish-audio`?{kind:`unsupported`,message:`Fish Audio TTS is only supported in the desktop app today. Use ElevenLabs or Deepgram to test from the browser.`}:t===`xai`?{kind:`unsupported`,message:`xAI TTS is only supported in the desktop app today. Use ElevenLabs or Deepgram to test from the browser.`}:{kind:`unsupported`,message:`TTS testing for "${t}" is not supported from the browser yet.`}}catch(e){return{kind:`error`,message:e instanceof Error?e.message:`Failed to reach the TTS provider.`}}}async function Vr(e,t,n){let r=t.trim();if(r.length===0)return{kind:`error`,message:`Enter and save a Voice ID before testing ElevenLabs.`};let i=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${encodeURIComponent(r)}?output_format=mp3_44100_128`,{method:`POST`,headers:{"xi-api-key":e,"Content-Type":`application/json`,Accept:`audio/mpeg`},body:JSON.stringify({text:n,model_id:`eleven_turbo_v2_5`})});return i.ok?{kind:`audio`,blob:await i.blob()}:{kind:`error`,message:await Ur(i,`ElevenLabs rejected the request.`)}}async function Hr(e,t){let n=await fetch(`https://api.deepgram.com/v1/speak?model=aura-2-thalia-en`,{method:`POST`,headers:{Authorization:`Token ${e}`,"Content-Type":`application/json`,Accept:`audio/mpeg`},body:JSON.stringify({text:t})});return n.ok?{kind:`audio`,blob:await n.blob()}:{kind:`error`,message:await Ur(n,`Deepgram rejected the request.`)}}async function Ur(e,t){try{let n=await e.text();if(n.length===0)return`${t} (HTTP ${e.status})`;try{let e=JSON.parse(n);if(e&&typeof e==`object`&&`detail`in e&&typeof e.detail==`string`)return e.detail;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message}catch{}return n.slice(0,200)}catch{return`${t} (HTTP ${e.status})`}}function Wr({assistantId:e,value:t,onChange:n,className:r}){let[i,a]=(0,Q.useState)(!1),{voices:o}=cn(e);if(o.length===0)return null;let s=o.find(e=>e.model===t)??o[0];return(0,$.jsxs)(I.Root,{open:i,onOpenChange:a,children:[(0,$.jsx)(I.Trigger,{asChild:!0,children:(0,$.jsx)(Je,{"aria-label":`Voice`,value:s?on(s.description):`Select a voice`,className:r})}),(0,$.jsx)(I.Content,{side:`bottom`,align:`start`,className:`w-[var(--radix-popover-trigger-width)] p-1`,children:(0,$.jsx)(sn,{assistantId:e,value:t,onChange:n,onSelect:()=>a(!1),showSource:!0})})]})}var Gr={elevenlabs:`voiceId`,"fish-audio":`referenceId`,xai:`voiceId`};function Kr({assistantId:e,hideSaveButton:r=!1,hideCredentialsGuide:i=!1,onSaveStateChange:a}={}){let o=un(),s=e??o,l=it.use.name()??`your assistant`,u=xt(),p=d(),{data:m}=f({...Et({path:{assistant_id:s}}),enabled:u,staleTime:1/0}),h=(0,Q.useMemo)(()=>{let e=m?.providers;if(!e)return Le;if(e.some(e=>e.id===`vellum`))return e;let t=Le.find(e=>e.id===`vellum`);return t?[t,...e]:e},[m]),{data:g}=f({...Lt({path:{assistant_id:s}}),enabled:u,staleTime:3e4}),_=g?.services?.tts,v=_?.mode===`managed`?`vellum`:_?.provider,y=`elevenlabs`,b=(0,Q.useMemo)(()=>v??t(`vellum:voice:ttsProvider`,y),[v,y]),x=!!v,[S,C]=Mn(b),[w,T]=(0,Q.useState)(``),[D,O]=(0,Q.useState)(``),[k,A]=(0,Q.useState)(``),[j,M]=(0,Q.useState)(!1),[N,P]=(0,Q.useState)(!1),[F,I]=(0,Q.useState)(!1),{voices:R,defaultModel:z,fetched:V}=ln(s,{enabled:S===`vellum`}),U=_?.providers?.vellum?.model??z??``,[W,G]=Mn(U),K=R.find(e=>e.model===W)??R[0],[ee,q]=(0,Q.useState)(null),J=R.some(e=>e.model===U),te=ee??(V&&U!==``&&!J),Y=(0,Q.useMemo)(()=>h.find(e=>e.id===S)??h[0],[S,h]),ne=S===`vellum`&&Y.supportsVoiceSelection&&W.trim()!==``&&W.trim()!==U,re=(0,Q.useCallback)(e=>{let n=t(Ke+e,``),r=t(ze+e,``);M(n.length>0),O(r),A(r),T(``)},[]);(0,Q.useEffect)(()=>{re(S)},[S,re]);let X=(0,Q.useMemo)(()=>{let e=S!==b,t=w.trim().length>0,n=D.trim()!==k;return e||t||n||ne},[S,b,w,D,k,ne]),ie=(0,Q.useCallback)(async()=>{let e=w.trim(),r=D.trim(),i=Y.id;n(et,i),e.length>0&&n(Ke+i,e),n(ze+i,r);let a=e.length>0?e:t(Ke+i,``),o=Gr[i];I(!0);try{if(a.length>0){let{response:e}=await ht({path:{assistant_id:s},body:{service:i,field:`api_key`,value:a,label:`${Y.displayName} API Key`},throwOnError:!1});if(!e?.ok)throw Error(`Failed to store API key (HTTP ${e?.status??`?`})`)}let e={...S!==b||!x?{provider:i,mode:i===`vellum`?`managed`:`your-own`}:{},...o?{providers:{[i]:{[o]:r}}}:{},...ne?{providers:{vellum:{model:W.trim()}}}:{}};if(Object.keys(e).length>0){let{response:t}=await mt({path:{assistant_id:s},body:{services:{tts:e}},throwOnError:!1});if(!t?.ok)throw Error(`Failed to save configuration (HTTP ${t?.status??`?`})`)}return M(a.length>0),A(r),T(``),p.invalidateQueries({queryKey:kt({path:{assistant_id:s}})}),B.success(`Text-to-speech settings saved`),!0}catch(e){return B.error(e instanceof Error?e.message:`Failed to save text-to-speech settings`),!1}finally{I(!1)}},[s,S,W,ne,w,D,Y,b,x,p]);(0,Q.useEffect)(()=>{a?.({hasChanges:X,saving:F,save:ie})},[a,X,F,ie]);let ae=(0,Q.useCallback)(()=>{n(Ke+S,``),M(!1),T(``)},[S]),oe=(0,Q.useCallback)(async()=>{P(!0);try{let e=t(Ke+S,``),n=w.trim(),r=n.length>0?n:e;if(r.length===0){B.error(`Save an API key for this provider before testing.`);return}let i=t(ze+S,``),a=D.trim(),o=await Br({provider:S,apiKey:r,voiceId:a.length>0?a:i,text:`Hey! It's ${l}. How does this sound?`});if(o.kind!==`audio`){B.error(o.message);return}let s=URL.createObjectURL(o.blob);try{let e=new Audio(s);await e.play(),await new Promise(t=>{e.onended=()=>t(),e.onerror=()=>t()})}finally{URL.revokeObjectURL(s)}}finally{P(!1)}},[l,w,S,D]),se=j?`•••••••• (Enter a new key to replace)`:Y.apiKeyPlaceholder,Z=S===`vellum`,ce=Z&&Y.supportsVoiceSelection,le=(0,$.jsxs)(c,{variant:`link`,size:`compact`,className:`inline-flex h-auto items-center gap-1 px-0 underline [--vbtn-fg:var(--content-tertiary)]`,onClick:()=>{q(!1),R.some(e=>e.model===W)||G(z||R[0]?.model||``)},children:[(0,$.jsx)(E,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),`Choose from catalog`]}),ue=ce&&te&&R.length>0?le:null;return(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(H,{value:S,onChange:C,options:h.map(e=>({value:e.id,label:e.displayName})),"aria-label":`TTS provider`})]}),!Z&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`API Key`}),(0,$.jsx)(L,{type:`password`,value:w,onChange:e=>T(e.target.value),placeholder:se,fullWidth:!0})]}),ce&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Voice`}),te?(0,$.jsx)(L,{type:`text`,value:W,onChange:e=>G(e.target.value),placeholder:`Enter a voice ID`,"aria-label":`Custom voice ID`,fullWidth:!0}):K?(0,$.jsx)(Wr,{assistantId:s,value:W,onChange:G}):V&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`No managed voices are currently available.`})]}),Y.supportsVoiceSelection&&!Z&&(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Voice ID`}),(0,$.jsx)(L,{type:`text`,value:D,onChange:e=>O(e.target.value),placeholder:`Enter a voice ID`,fullWidth:!0})]}),!i&&!Z&&(0,$.jsx)(Dn,{guide:Y.credentialsGuide}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[!Z&&(0,$.jsx)(c,{variant:`outlined`,onClick:oe,disabled:N,children:N?`Testing…`:`Test`}),(0,$.jsxs)(`div`,{className:`ml-auto flex items-center gap-3`,children:[ue,!r&&(0,$.jsx)(Tn,{onClick:ie,disabled:!X||F}),j&&!Z&&(0,$.jsx)(En,{onClick:ae})]})]})]})}function qr(){return(0,$.jsx)(Sn,{id:`text-to-speech`,title:`Text-to-Speech`,subtitle:`Configure how your assistant speaks`,children:(0,$.jsx)(Kr,{})})}var Jr=`default`;function Yr(){let e=un(),i=d(),{data:o}=f({...Lt({path:{assistant_id:e}}),staleTime:3e4}),s=Dt({onSuccess:t=>{At(i,{path:{assistant_id:e}},t)}}),c=jn(),l=(0,Q.useMemo)(()=>o?o.services?.[`web-fetch`]?.provider||t(`vellum:ai:webFetchProvider`,Jr):t(Be,Jr),[o]),[u,p]=(0,Q.useState)(!1),[m,h]=Mn(l),[g,_]=(0,Q.useState)(``),v=re.has(m),{hasStoredCredential:y}=be({assistantId:e,credentialKind:`api_key`,credentialName:m,enabled:v}),b=g.trim().length>0,x=u||v&&!y&&!b||m===l&&!b,S=ke(G[m]??`Enter your API key`,y),C=(0,Q.useCallback)(async()=>{p(!0);let t=g.trim(),r=v&&t.length>0;try{r&&await c(m,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-fetch":{provider:m}}}}).catch(e=>{throw B.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{p(!1);return}p(!1);try{if(n(Be,m),r){let r=ie(m);r&&n(r,t);let a=rt(e,`api_key`,m);i.setQueryData(a,!0),i.invalidateQueries({queryKey:a}),_(``)}B.success(`Web fetch settings saved.`)}catch(e){a(e,{context:`settings-ai-web-fetch-persist-local`}),B.error(`Saved, but local preferences could not be written.`)}},[v,s,c,i,e,g,m]),w=(0,Q.useCallback)(()=>{let e=ie(m);e&&r(e),_(``),h(Jr),n(Be,Jr)},[m,h]);return(0,$.jsx)(Sn,{id:`web-fetch`,title:`Web Fetch`,subtitle:`Configure how your assistant reads individual web pages`,children:(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(H,{value:m,onChange:h,options:J.map(e=>({value:e,label:_e[e]??e}))})]}),v&&(0,$.jsx)(L,{label:`API Key`,type:`password`,value:g,onChange:e=>_(e.target.value),placeholder:S,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Tn,{onClick:C,disabled:x}),u&&(0,$.jsx)(D,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),v&&(0,$.jsx)(En,{onClick:w,filled:!0})]})]})})}var Xr=`0.10.12`;function Zr(){return ot(Xr)}function Qr(){let e=un(),i=d(),o=xt(),{data:s}=f({...Lt({path:{assistant_id:e}}),enabled:o,staleTime:3e4}),c=Dt({onSuccess:t=>{At(i,{path:{assistant_id:e}},t)}}),l=jn(),u=(0,Q.useMemo)(()=>{if(!s)return t(Xe,`inference-provider-native`);let e=s.services?.[`web-search`];return(e?.mode===`managed`&&e?.provider!==`inference-provider-native`?`vellum`:e?.provider)||t(`vellum:ai:webSearchProvider`,`inference-provider-native`)},[s]),[p,m]=(0,Q.useState)(!1),[h,g]=Mn(u),[_,v]=(0,Q.useState)(``),y=ae.has(h),{hasStoredCredential:b}=be({assistantId:e,credentialKind:`api_key`,credentialName:h,enabled:y}),x=_.trim().length>0,S=p||y&&!b&&!x||h===u&&!x,C=ke(ve[h]??`Enter your API key`,b),w=(0,Q.useCallback)(async()=>{m(!0);let t=_.trim(),r=fe(h),o=y&&t.length>0;try{o&&await l(h,t),await st();let n=h===`vellum`?Zr()?{provider:`vellum`,mode:`managed`}:{mode:`managed`}:{provider:h,mode:`your-own`};await c.mutateAsync({path:{assistant_id:e},body:{services:{"web-search":n}}}).catch(e=>{throw B.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{m(!1);return}m(!1);try{if(n(Xe,h),o){r&&n(r,t);let a=rt(e,`api_key`,h);i.setQueryData(a,!0),i.invalidateQueries({queryKey:a}),v(``)}B.success(`Web search settings saved.`)}catch(e){a(e,{context:`settings-ai-web-search-persist-local`}),B.error(`Saved, but local preferences could not be written.`)}},[y,c,l,i,e,_,h]),T=(0,Q.useCallback)(()=>{let e=fe(h);e&&r(e),v(``),g(`inference-provider-native`),n(Xe,`inference-provider-native`)},[h,g]);return(0,$.jsx)(Sn,{title:`Web Search`,subtitle:`Configure how your assistant should search the web`,children:(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(H,{"aria-label":`Web search provider`,value:h,onChange:g,options:ge.map(e=>({value:e,label:Y[e]??e}))})]}),h===`vellum`&&(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Search runs through your Vellum account.`}),y&&(0,$.jsx)(L,{label:`API Key`,type:`password`,value:_,onChange:e=>v(e.target.value),placeholder:C,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Tn,{onClick:w,disabled:S}),p&&(0,$.jsx)(D,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),y&&(0,$.jsx)(En,{onClick:T,filled:!0})]})]})})}function $r(){let e=un(),t=Bt(),[n,r]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{let e=window.location.hash.slice(1);e&&requestAnimationFrame(()=>{document.getElementById(e)?.scrollIntoView({block:`start`})})},[]);let i=(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto`,children:[(0,$.jsx)(Cn,{}),(0,$.jsx)(_r,{panel:n,onOpenPanel:r,onClosePanel:()=>r(null)}),(0,$.jsx)(Qr,{}),(0,$.jsx)(Yr,{}),(0,$.jsx)(An,{}),(0,$.jsx)(In,{}),(0,$.jsx)(qr,{}),(0,$.jsx)(zr,{})]}),a=`${e??`none`}:${n?.kind===`profile`?`profile:${n.name}`:n?.kind===`provider`?`provider:${n.name}`:n?.kind??`closed`}`,o=n?.kind===`provider`||n?.kind===`add-provider`,s=n!=null&&e?n.kind===`overrides`?(0,$.jsx)(Mr,{assistantId:e,onClose:()=>r(null)},a):o?(0,$.jsx)(Pr,{assistantId:e,connectionName:n.kind===`provider`?n.name:null,onClose:()=>r(null)},a):(0,$.jsx)(yr,{assistantId:e,profileName:n.kind===`profile`?n.name:null,onClose:()=>r(null)},a):null;return s&&t?(0,$.jsx)(mn,{children:s}):s?(0,$.jsx)(hn,{storageKey:`aiSettingsDetailDrawerWidth`,detailKey:a,section:i,detail:s}):i}export{$r as AiPage};