@vellumai/web 0.11.5-staging.1 → 0.11.5-staging.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/dist/assets/{Trans-Ayy2zoN6.js → Trans-CM5UUgDt.js} +1 -1
  2. package/dist/assets/{a2a-invite-BnytH07i.js → a2a-invite-CduLLtki.js} +1 -1
  3. package/dist/assets/{account-page-fksftFTI.js → account-page-CSJOSKzD.js} +1 -1
  4. package/dist/assets/{account-shell-Cm4mAmQ1.js → account-shell-WRaiE1O8.js} +1 -1
  5. package/dist/assets/{acp-run-detail-panel-DpY-2IUp.js → acp-run-detail-panel-gR77X6Xm.js} +1 -1
  6. package/dist/assets/{activity-steps-panel-D9L-wNUS.js → activity-steps-panel-BglLu7wx.js} +1 -1
  7. package/dist/assets/{add-credential-modal-D2dFz_aq.js → add-credential-modal-DgoBqgwB.js} +1 -1
  8. package/dist/assets/{add-credits-modal-CmRWmR5E.js → add-credits-modal-BNab_7H9.js} +1 -1
  9. package/dist/assets/{ai-page-DSvzyRcE.js → ai-page-CLAFnWl5.js} +1 -1
  10. package/dist/assets/{api-key-screen-8g2vhXCU.js → api-key-screen-CS0KZgP6.js} +1 -1
  11. package/dist/assets/{app-card-Cz7zkQT3.js → app-card-C7c3c4l4.js} +1 -1
  12. package/dist/assets/{archive-redirect-page-ClPbJzqu.js → archive-redirect-page-DZkHnLmA.js} +1 -1
  13. package/dist/assets/{assistant-feature-flag-store-DPde0AIx.js → assistant-feature-flag-store-CdXRp9pV.js} +1 -1
  14. package/dist/assets/{assistant-status-panel-uGuW1yZK.js → assistant-status-panel-BogBdYLj.js} +1 -1
  15. package/dist/assets/auth-store-iNnDaLgR.js +2 -0
  16. package/dist/assets/{auth-welcome-screen-Da31gKxW.js → auth-welcome-screen-BoiE47Sg.js} +1 -1
  17. package/dist/assets/{avatar-random-BL7Gu5qp.js → avatar-random-C7t2cN3Y.js} +1 -1
  18. package/dist/assets/{background-task-detail-panel-CxmesGo1.js → background-task-detail-panel-BeXbhHLZ.js} +1 -1
  19. package/dist/assets/{billing-page-EthbxOpl.js → billing-page-PuFxEptl.js} +3 -3
  20. package/dist/assets/{billing-redirect-page-DbvbLo7I.js → billing-redirect-page-BFDitQeE.js} +1 -1
  21. package/dist/assets/bookmarks-page-DY_CJ4I3.js +1 -0
  22. package/dist/assets/{browser-DH4V-FME.js → browser--x9YKXWo.js} +2 -2
  23. package/dist/assets/{build-state-DjZj1PEB.js → build-state-Dtia1Hnq.js} +1 -1
  24. package/dist/assets/{button-VkxVX0DM.js → button-C8CGr0T0.js} +1 -1
  25. package/dist/assets/{channels-page-route-DzS1In-E.js → channels-page-route-WZWPUfRo.js} +1 -1
  26. package/dist/assets/{chat-markdown-message-FJAu4s2A.js → chat-markdown-message-JeYI9m3i.js} +1 -1
  27. package/dist/assets/{checkbox-BkYoVUtf.js → checkbox-BWX_Dnge.js} +1 -1
  28. package/dist/assets/checkout-continuation-B-A9SoHt.js +1 -0
  29. package/dist/assets/{checkout-page-WkiUwe7y.js → checkout-page-BYHPD7UJ.js} +1 -1
  30. package/dist/assets/checkout-return-target-DnT91-Y_.js +1 -0
  31. package/dist/assets/{client-feature-flag-store-o8FXKc-R.js → client-feature-flag-store-DuVzcD-V.js} +1 -1
  32. package/dist/assets/{client-perf-EM-2B6Ha.js → client-perf-Bg-CBIVj.js} +1 -1
  33. package/dist/assets/{command-palette-Tz8bW1Zb.js → command-palette-C8JWMyiC.js} +1 -1
  34. package/dist/assets/{command-palette-window-page-CICaRPRP.js → command-palette-window-page-C8vw0yIO.js} +1 -1
  35. package/dist/assets/common-gaw6OefS.js +1 -0
  36. package/dist/assets/{community-page-CuJypGVc.js → community-page-DvR4X6k9.js} +1 -1
  37. package/dist/assets/companion-surface-page-iknPQRTu.js +1 -0
  38. package/dist/assets/{composer-settings-xBD4cVBI.js → composer-settings-B84-FOM1.js} +1 -1
  39. package/dist/assets/{confirm-dialog--7V28331.js → confirm-dialog-DYmL6FRe.js} +1 -1
  40. package/dist/assets/{connect-page-Dkitufkv.js → connect-page-CKAizrWr.js} +1 -1
  41. package/dist/assets/consent-DgQeejGe.js +1 -0
  42. package/dist/assets/{consent-controls-D7wjMU4g.js → consent-controls-V9Wca6TV.js} +1 -1
  43. package/dist/assets/{contacts-page-route-Dsb5c0ov.js → contacts-page-route-BceswcoE.js} +1 -1
  44. package/dist/assets/{conversation-cache-DJbtcDiW.js → conversation-cache-CuEQRyqi.js} +1 -1
  45. package/dist/assets/{conversation-navigation-Cg1rXwwx.js → conversation-navigation-CfOyMc6W.js} +1 -1
  46. package/dist/assets/{conversation-queries-YVB1UbYl.js → conversation-queries-CtAFZgFP.js} +1 -1
  47. package/dist/assets/{conversation-selection-CRqFjCDm.js → conversation-selection-ZuF7NVBR.js} +1 -1
  48. package/dist/assets/{copy-to-clipboard-wnEkIu5M.js → copy-to-clipboard-yufQqRBL.js} +1 -1
  49. package/dist/assets/{credential-entry-page-DvSQvCah.js → credential-entry-page-B0NYTomQ.js} +1 -1
  50. package/dist/assets/{credentials-page-qE6ZVx_g.js → credentials-page-DfOet7SI.js} +1 -1
  51. package/dist/assets/{csv-preview-CmccW-uE.js → csv-preview-QUU-h2MX.js} +1 -1
  52. package/dist/assets/{danger-zone-redirect-page-D9ysYxNl.js → danger-zone-redirect-page-B_ZMX7ns.js} +1 -1
  53. package/dist/assets/{debug-page-BUP88wEB.js → debug-page-DXvFlnqh.js} +1 -1
  54. package/dist/assets/{deploy-dialogs-DB5LzYcq.js → deploy-dialogs-ilUtMpvf.js} +1 -1
  55. package/dist/assets/{deploy-store-wUa1-kTk.js → deploy-store-C_y0BvwK.js} +1 -1
  56. package/dist/assets/{detail-card-DBxsIpmu.js → detail-card-DwBporBs.js} +1 -1
  57. package/dist/assets/{detail-drawer-PnkAA_sr.js → detail-drawer-Di5V_iLf.js} +1 -1
  58. package/dist/assets/{detail-shell-BpJzTGvM.js → detail-shell-CcrQic9y.js} +1 -1
  59. package/dist/assets/developer-page-B_LQmpH7.js +1 -0
  60. package/dist/assets/{devices-redirect-page-B1K9-KDL.js → devices-redirect-page-BD0VY17t.js} +1 -1
  61. package/dist/assets/{diagnostics-D82Xy5aG.js → diagnostics-BcQgahbk.js} +1 -1
  62. package/dist/assets/dist-BFOJNO7w.js +1 -0
  63. package/dist/assets/{dist-D94ZMew1.js → dist-BsGO-mS7.js} +1 -1
  64. package/dist/assets/{dist-CzN28mbE.js → dist-DN2Wju98.js} +1 -1
  65. package/dist/assets/{dist--4Bbb2u3.js → dist-eCSUXDGk.js} +1 -1
  66. package/dist/assets/{doctor-handoff-store-DsMgYJHu.js → doctor-handoff-store-B_RlFFKC.js} +1 -1
  67. package/dist/assets/{document-viewer-container-RskGQW6t.js → document-viewer-container-D3aPjnj8.js} +2 -2
  68. package/dist/assets/{document-viewer-page-CbpsmQWC.js → document-viewer-page-CvQXX7Mp.js} +1 -1
  69. package/dist/assets/{emails-page-_5YOJc7e.js → emails-page-DbAVQ_jC.js} +1 -1
  70. package/dist/assets/esm-4Bnaz5rU.js +2 -0
  71. package/dist/assets/{esm-BNARxlDM.js → esm-C4VoH46A.js} +1 -1
  72. package/dist/assets/{esm-D5OjXPP0.js → esm-CrXbhSov.js} +2 -2
  73. package/dist/assets/{esm-BRNK_0Y3.js → esm-Cz8_Dotd.js} +1 -1
  74. package/dist/assets/esm-DBGqhIh5.js +1 -0
  75. package/dist/assets/esm-DXPZZih3.js +2 -0
  76. package/dist/assets/esm-DcJxSeV0.js +2 -0
  77. package/dist/assets/{esm-8NN8IH0k.js → esm-Ddv_MyHw.js} +2 -2
  78. package/dist/assets/esm-Do2zrCWJ.js +2 -0
  79. package/dist/assets/esm-DrXV9mo-.js +2 -0
  80. package/dist/assets/{external-anchor-BQjaNMxT.js → external-anchor-owoORewf.js} +1 -1
  81. package/dist/assets/feature-flag-catalog-C1y2RUth.js +1 -0
  82. package/dist/assets/feed-item-status-actions-C3JfFvZc.js +1 -0
  83. package/dist/assets/{file-editor-DQtez5BN.js → file-editor-CeYfWNBz.js} +1 -1
  84. package/dist/assets/{file-markdown-CFQG2IW9.js → file-markdown-B9G_TXX-.js} +1 -1
  85. package/dist/assets/{first-run-scope-Cs-NWmVG.js → first-run-scope-MD-rEgje.js} +1 -1
  86. package/dist/assets/{format-usd-Dv-VJP5v.js → format-usd-BYzA1eMJ.js} +1 -1
  87. package/dist/assets/{funnel-events-DEzFt9ac.js → funnel-events-ClGpFDNM.js} +1 -1
  88. package/dist/assets/general-page-CzDlVoNx.js +1 -0
  89. package/dist/assets/{haptics-BR_zMLz2.js → haptics-F-nvqKYf.js} +2 -2
  90. package/dist/assets/{hatching-screen-BKmwq_y2.js → hatching-screen-FgNbjXOt.js} +1 -1
  91. package/dist/assets/{home-page-route-BWF6O6BN.js → home-page-route-C7Aeo-Mg.js} +1 -1
  92. package/dist/assets/{hosting-screen-BI8jdpYg.js → hosting-screen-CLVRdDiX.js} +1 -1
  93. package/dist/assets/{i18n-7Z5ghN39.js → i18n-C3bX3mTs.js} +1 -1
  94. package/dist/assets/{identity-page-route-pCMyDEEU.js → identity-page-route-CHncFua2.js} +1 -1
  95. package/dist/assets/index-C7hCfQpd.css +2 -0
  96. package/dist/assets/{index-CffZ8_I1.js → index-DS0PEdhO.js} +5 -5
  97. package/dist/assets/{ingest-BubkTA7j.js → ingest-C1wiUm1l.js} +1 -1
  98. package/dist/assets/{input-DkgpMeG9.js → input-DlkBtbxm.js} +1 -1
  99. package/dist/assets/{inspect-page-2b2xMjZ-.js → inspect-page-CNLiZXRt.js} +3 -3
  100. package/dist/assets/{installed-plugins-query-CmlpXeFG.js → installed-plugins-query-DQKwv-Iz.js} +1 -1
  101. package/dist/assets/{integrations-page-C6SEZlRH.js → integrations-page-B9SHiomg.js} +1 -1
  102. package/dist/assets/{intelligence-layout-BltAdOWl.js → intelligence-layout-BoW8JbDc.js} +1 -1
  103. package/dist/assets/internal-thread-actions-C0S_b7cx.js +1 -0
  104. package/dist/assets/{invalidate-memory-queries-C_LpIe-7.js → invalidate-memory-queries-uk2gV1m0.js} +1 -1
  105. package/dist/assets/{invalidate-plugin-queries-DpWKL6e1.js → invalidate-plugin-queries-CI1Cseau.js} +1 -1
  106. package/dist/assets/{keyboard-shortcuts-redirect-page-BZAeBBT5.js → keyboard-shortcuts-redirect-page-BY3Va4w9.js} +1 -1
  107. package/dist/assets/{latest-assistant-text-C8nmvw4v.js → latest-assistant-text-fXT5Jkt8.js} +1 -1
  108. package/dist/assets/{library-detail-page-BTDRSSKy.js → library-detail-page-CX92FKAK.js} +1 -1
  109. package/dist/assets/{library-page-GoqUkn2E.js → library-page-D2v2j-WU.js} +1 -1
  110. package/dist/assets/{list-row-D1odQOMJ.js → list-row-6uedKE84.js} +1 -1
  111. package/dist/assets/{local-runtime-upgrade-BTtW-R95.js → local-runtime-upgrade-BpvLk3HN.js} +1 -1
  112. package/dist/assets/{login-flow-DIQYXP6A.js → login-flow-BYBqjDap.js} +1 -1
  113. package/dist/assets/{login-page-hY9FaC1m.js → login-page-fl8rgXFq.js} +1 -1
  114. package/dist/assets/{logout-page-mVYiyZFE.js → logout-page-DLjLy7Hp.js} +1 -1
  115. package/dist/assets/{logs-layout-_ycf1xan.js → logs-layout-Du4o-HeH.js} +1 -1
  116. package/dist/assets/{markdown-preview-CzYn25XC.js → markdown-preview-ukYPAksc.js} +1 -1
  117. package/dist/assets/{memory-page-route-CA8ygLKs.js → memory-page-route-CvKjQ2FE.js} +1 -1
  118. package/dist/assets/{memory-router-playground-page-B8rj0dNA.js → memory-router-playground-page-Dh8zVze9.js} +1 -1
  119. package/dist/assets/{menu-noj9Ohcf.js → menu-Ci8JeI2H.js} +1 -1
  120. package/dist/assets/{message-files-panel-COyAxMPi.js → message-files-panel-DEAC2iCY.js} +1 -1
  121. package/dist/assets/{messages-BhT6U312.js → messages-D5oI1yRV.js} +1 -1
  122. package/dist/assets/{metric-card-BQ-q7_9N.js → metric-card-YqtdN5uX.js} +1 -1
  123. package/dist/assets/{modal-UYNawsIu.js → modal-DN_Uwwkg.js} +1 -1
  124. package/dist/assets/native-anchor-C13W_dF5.js +1 -0
  125. package/dist/assets/{native-biometric-Dk_rOSjU.js → native-biometric-DzQYY-Z2.js} +1 -1
  126. package/dist/assets/{native-file-Dt4IC5xP.js → native-file-qM32rSz7.js} +2 -2
  127. package/dist/assets/{navigation-resolver-Cb4Lilq5.js → navigation-resolver-B6QxHAa5.js} +1 -1
  128. package/dist/assets/{not-found-CV2fs1T6.js → not-found-DXwfp4Yf.js} +1 -1
  129. package/dist/assets/{notifications-DZCtGip1.js → notifications-DMNpr3pt.js} +1 -1
  130. package/dist/assets/{notifications-page-BZmovm97.js → notifications-page-DD-175gq.js} +1 -1
  131. package/dist/assets/{oauth-complete-page-BTWKsjld.js → oauth-complete-page-DBDWL3aD.js} +1 -1
  132. package/dist/assets/{oauth-connection-utils-9aKLpLet.js → oauth-connection-utils-dPIUOXze.js} +1 -1
  133. package/dist/assets/{oauth-popup-complete-page-Dn7v4THp.js → oauth-popup-complete-page-Dv0482xp.js} +1 -1
  134. package/dist/assets/{onboarding-layout-81jlZ1Nr.js → onboarding-layout-CYgAi-S1.js} +1 -1
  135. package/dist/assets/{open-workspace-file-CINDRVEK.js → open-workspace-file-Ca9gUjoQ.js} +2 -2
  136. package/dist/assets/{operational-status-D9ExUyuP.js → operational-status-DVK3_kD_.js} +1 -1
  137. package/dist/assets/{page-shell-DEN0SqaR.js → page-shell-nVp2ogSk.js} +1 -1
  138. package/dist/assets/{pairing-page-CUdrYuE6.js → pairing-page-CLNSXQ7A.js} +1 -1
  139. package/dist/assets/{password-reset-page-BkX1L0-o.js → password-reset-page-BNw-K6vZ.js} +1 -1
  140. package/dist/assets/{personality-page-C6Fs2NDZ.js → personality-page-axIG9Tu_.js} +1 -1
  141. package/dist/assets/{plans-page-CtUDk34m.js → plans-page-DQu9C86N.js} +1 -1
  142. package/dist/assets/{platform-detection-CuBj2s81.js → platform-detection-C-a_Mru0.js} +1 -1
  143. package/dist/assets/{platform-login-notice-V5xsGsbM.js → platform-login-notice-Dmq_2Akt.js} +1 -1
  144. package/dist/assets/{platform-loopback-page-07jf3mNj.js → platform-loopback-page-B0UOR3ct.js} +1 -1
  145. package/dist/assets/{plugin-detail-page-hHTbKbVT.js → plugin-detail-page-2ySPND3h.js} +1 -1
  146. package/dist/assets/{plugins-page-Cg5tKwHZ.js → plugins-page-D7jLWtXv.js} +1 -1
  147. package/dist/assets/popover-B_nY8VYI.js +1 -0
  148. package/dist/assets/{prefs-D-MNCWeN.js → prefs-BFDWWNwd.js} +1 -1
  149. package/dist/assets/{preview-error-UT2_K5co.js → preview-error-B7qHC1Y4.js} +1 -1
  150. package/dist/assets/{privacy-page-CN-sgiHL.js → privacy-page-B-FaZv9p.js} +1 -1
  151. package/dist/assets/{privacy-screen-WnmVno78.js → privacy-screen-Ng4c4whW.js} +1 -1
  152. package/dist/assets/{provider-callback-page-CZfGxI4n.js → provider-callback-page-CwYFxjk3.js} +1 -1
  153. package/dist/assets/{provider-signup-page-By9jDuQZ.js → provider-signup-page-BORU3SZe.js} +1 -1
  154. package/dist/assets/{push-registration-CHsDMNLd.js → push-registration-CyLSsbG5.js} +2 -2
  155. package/dist/assets/{remove-from-device-dialog-C0oKQcpu.js → remove-from-device-dialog-Bpy0yOG4.js} +1 -1
  156. package/dist/assets/{research-facts-CVSPPobz.js → research-facts-DzELMLzK.js} +1 -1
  157. package/dist/assets/{research-mock-page-Du5tkfLD.js → research-mock-page-BkcbRMpS.js} +1 -1
  158. package/dist/assets/{research-onboarding-route-1Gr9h1zU.js → research-onboarding-route-BlBSSOiI.js} +1 -1
  159. package/dist/assets/{research-results-view-D300rmPl.js → research-results-view-D1hOhfTP.js} +1 -1
  160. package/dist/assets/{retire-confirm-dialog-Dj9Jz__k.js → retire-confirm-dialog-Zwo-Sjrc.js} +1 -1
  161. package/dist/assets/{review-terms-screen-CgaEflP1.js → review-terms-screen-DmNdg_zJ.js} +1 -1
  162. package/dist/assets/routes-BaPyKuTq.js +24 -0
  163. package/dist/assets/{runtime-upgrade-banner-DeZvRYKI.js → runtime-upgrade-banner-bHSGkzwB.js} +2 -2
  164. package/dist/assets/{sandbox-bridge-DJb4AAAd.js → sandbox-bridge-BcJiBmUR.js} +1 -1
  165. package/dist/assets/{schedules-D1Qj_LW9.js → schedules-CgwiGq3x.js} +1 -1
  166. package/dist/assets/{schedules-page-yQdICdi-.js → schedules-page-Ca_u2KkZ.js} +1 -1
  167. package/dist/assets/{section-membership-BLXUZceV.js → section-membership-CJlFrKoM.js} +1 -1
  168. package/dist/assets/{security-redirect-page-C1UvbW-C.js → security-redirect-page-eZ_C_Wf0.js} +1 -1
  169. package/dist/assets/{select-D133FK9g.js → select-DJDG9pwU.js} +1 -1
  170. package/dist/assets/select-assistant-screen-DSLQRer8.js +1 -0
  171. package/dist/assets/{self-hosted-servers-DbufWkqP.js → self-hosted-servers-DJIKPu90.js} +1 -1
  172. package/dist/assets/settings-BY8t4asx.js +1 -0
  173. package/dist/assets/{settings-divider-Cps8oOmA.js → settings-divider-BCyO1zmM.js} +1 -1
  174. package/dist/assets/{settings-layout-BIJoqFh0.js → settings-layout-Cv8u2dv7.js} +1 -1
  175. package/dist/assets/{settings-navigation-CBm-xDCe.js → settings-navigation-R6E3Weed.js} +1 -1
  176. package/dist/assets/{share-feedback-modal-CNyAJFsA.js → share-feedback-modal-COH8zwku.js} +2 -2
  177. package/dist/assets/{sidebar-tree-D2xvxqPq.js → sidebar-tree-Bfvk_uAR.js} +1 -1
  178. package/dist/assets/{signup-page-CTjLMOgF.js → signup-page-BsMK6h9P.js} +1 -1
  179. package/dist/assets/{site-favicon-MMcieZs1.js → site-favicon-Bu9L02gb.js} +1 -1
  180. package/dist/assets/{skill-detail-page-33xPKTfo.js → skill-detail-page-D9WBRKuf.js} +1 -1
  181. package/dist/assets/{skill-detail-panel-DicPuAYf.js → skill-detail-panel-kCMadngl.js} +1 -1
  182. package/dist/assets/{skills-CAW10RD_.js → skills-C3-ibGUo.js} +1 -1
  183. package/dist/assets/{skills-page-DtcZVUgk.js → skills-page-BMYP4Xi0.js} +1 -1
  184. package/dist/assets/{sounds-page-B1xgQyur.js → sounds-page-Du1t_S8A.js} +1 -1
  185. package/dist/assets/{src-Ch3HTlFm.js → src-DMnnfLrU.js} +2 -2
  186. package/dist/assets/{start-screen-1HZMKOoC.js → start-screen-I5HBKHT6.js} +1 -1
  187. package/dist/assets/{status-badge-pill-C8kQPvkY.js → status-badge-pill-w-ULYfRy.js} +1 -1
  188. package/dist/assets/{stt-language-picker-modal-0Y0jfxfK.js → stt-language-picker-modal-Cq76JJex.js} +1 -1
  189. package/dist/assets/{subagent-detail-panel-cG6QAznG.js → subagent-detail-panel-DP4dB-Dz.js} +1 -1
  190. package/dist/assets/{subagent-store-Bho3BXWd.js → subagent-store-Bn8k7JMr.js} +1 -1
  191. package/dist/assets/{superpowers-page-CMB1OtM0.js → superpowers-page-COTkr31c.js} +1 -1
  192. package/dist/assets/{swipe-action-reveal-Dj3B2k-t.js → swipe-action-reveal-CQY9DSup.js} +1 -1
  193. package/dist/assets/{system-events-page-XOi-gc2G.js → system-events-page-CvoSQs7q.js} +1 -1
  194. package/dist/assets/{system-events-redirect-page-BrQ1djZt.js → system-events-redirect-page-BjnwAn9h.js} +1 -1
  195. package/dist/assets/{tag-Ddzwz3ij.js → tag-D2QYCm1p.js} +1 -1
  196. package/dist/assets/{telegram-setup-wizard-D0bxOb5-.js → telegram-setup-wizard-6UP2MTrh.js} +1 -1
  197. package/dist/assets/{text-preview-D78CT11A.js → text-preview-BG__pDe7.js} +1 -1
  198. package/dist/assets/{theme-stage-page-DPIaeTEy.js → theme-stage-page-YfsM529J.js} +1 -1
  199. package/dist/assets/{tiptap-document-editor-DjSqTI1f.js → tiptap-document-editor-BM6zL6R7.js} +2 -2
  200. package/dist/assets/{toast-ZCXyBjoj.js → toast-CHtrY-GO.js} +1 -1
  201. package/dist/assets/{tool-detail-panel-D8Zr9tQz.js → tool-detail-panel-_LC-zFuo.js} +1 -1
  202. package/dist/assets/{transcript-message-body-shared-DKncF4vA.js → transcript-message-body-shared-D8cmJP1C.js} +1 -1
  203. package/dist/assets/{trust-rules-api-JydQ2uwR.js → trust-rules-api-CE_KJOp2.js} +1 -1
  204. package/dist/assets/{upgrade-cancel-page-gyvvmc_X.js → upgrade-cancel-page-DyLSvLsm.js} +1 -1
  205. package/dist/assets/{upgrade-success-page-_86uG48f.js → upgrade-success-page-BRPyFCq4.js} +1 -1
  206. package/dist/assets/{usage-redirect-page-DheTMqmF.js → usage-redirect-page-C4O5a5QM.js} +1 -1
  207. package/dist/assets/use-app-theme-BMyUWfBR.js +1 -0
  208. package/dist/assets/{use-assistant-identity-details-DUPitZAF.js → use-assistant-identity-details-C3sH1daz.js} +1 -1
  209. package/dist/assets/{use-attachment-preview-Y4kLa4bZ.js → use-attachment-preview-BUJ9CHqr.js} +2 -2
  210. package/dist/assets/{use-attachment-squares-C8jwl-uP.js → use-attachment-squares-CFAezuph.js} +1 -1
  211. package/dist/assets/{use-bookmarks-D-YUJTtH.js → use-bookmarks--Hn0Ty3s.js} +1 -1
  212. package/dist/assets/{use-checkout-dismiss-refresh-DVs2FMHj.js → use-checkout-dismiss-refresh-CTdb-p9h.js} +1 -1
  213. package/dist/assets/{use-command-palette-sections-BBglPqI8.js → use-command-palette-sections-_F3pQkoi.js} +1 -1
  214. package/dist/assets/{use-copy-to-clipboard-CBJ6pmkd.js → use-copy-to-clipboard-BPX7B4SE.js} +1 -1
  215. package/dist/assets/{use-edge-swipe-C-5S-Uf_.js → use-edge-swipe-CJYjm94h.js} +1 -1
  216. package/dist/assets/{use-edge-swipe-back-BO5FNCGw.js → use-edge-swipe-back-L6kJ84LI.js} +2 -2
  217. package/dist/assets/{use-edit-app-Mv9eDXyB.js → use-edit-app-C0wNLJT8.js} +1 -1
  218. package/dist/assets/{use-invite-link-dialog-Dn0_apkq.js → use-invite-link-dialog-B1oz9iwD.js} +1 -1
  219. package/dist/assets/{use-is-org-ready-CXChKRKk.js → use-is-org-ready-CEB5IRpO.js} +1 -1
  220. package/dist/assets/{use-onboarding-login-LxAfxxq4.js → use-onboarding-login-DSP8WCFe.js} +1 -1
  221. package/dist/assets/{use-platform-assistant-id-DGkEazpv.js → use-platform-assistant-id-n0Yl5uUG.js} +1 -1
  222. package/dist/assets/{use-platform-gate-dRg4Iaxg.js → use-platform-gate-DNfLk9Xd.js} +1 -1
  223. package/dist/assets/{use-return-to-short-circuit-BxcUEcT0.js → use-return-to-short-circuit-CY3AuCF9.js} +1 -1
  224. package/dist/assets/{use-save-twilio-credentials-cvialhOy.js → use-save-twilio-credentials-BWaLXE4J.js} +1 -1
  225. package/dist/assets/{use-side-list-room-B4aMMgSM.js → use-side-list-room-CO7nxluQ.js} +1 -1
  226. package/dist/assets/{use-skill-actions-BJnqKPy2.js → use-skill-actions-D7CK9Jhy.js} +1 -1
  227. package/dist/assets/{use-skill-detail-files-Dr4hogsT.js → use-skill-detail-files-Cop9LnVd.js} +1 -1
  228. package/dist/assets/{use-sticky-profiles-BzJCyWjh.js → use-sticky-profiles-D3ybBRfX.js} +1 -1
  229. package/dist/assets/{use-stt-language-selection-CqvYwuRJ.js → use-stt-language-selection-Dkm4Uq69.js} +1 -1
  230. package/dist/assets/{use-subagent-card-data-Ck-rTbqy.js → use-subagent-card-data-DbKFX1Jc.js} +1 -1
  231. package/dist/assets/{use-swipe-horizontal-DqSSUt1N.js → use-swipe-horizontal-BwZ0yvoM.js} +1 -1
  232. package/dist/assets/use-touch-mobile-CaIiM-us.js +1 -0
  233. package/dist/assets/use-transcript-message-by-id-BbJqGOYZ.js +1 -0
  234. package/dist/assets/{use-transcript-messages-D2DbIxRi.js → use-transcript-messages-Bp4Jsfks.js} +1 -1
  235. package/dist/assets/{use-voice-sample-preview-DgOqv2M7.js → use-voice-sample-preview-4vpwPGNW.js} +1 -1
  236. package/dist/assets/{useTranslation-CJMg4EBF.js → useTranslation-CCDbxnME.js} +1 -1
  237. package/dist/assets/{voice-page-Cle_chtc.js → voice-page--99ik4mV.js} +1 -1
  238. package/dist/assets/{voice-providers-note-CtAmFnWb.js → voice-providers-note-7m0LvxmN.js} +1 -1
  239. package/dist/assets/{web-B3W2e_Vh.js → web-0-rqi4je.js} +1 -1
  240. package/dist/assets/{web-Dc65176I.js → web-8fcyoNsL.js} +1 -1
  241. package/dist/assets/{web-CY247JIt.js → web-DCamMnI1.js} +1 -1
  242. package/dist/assets/{web-67Khnm-P.js → web-DIlEhBsT.js} +1 -1
  243. package/dist/assets/{web-B1q1ICxT.js → web-Do_X9zWq.js} +1 -1
  244. package/dist/assets/{web-BTPJ9E5m.js → web-DsVO-tkH.js} +1 -1
  245. package/dist/assets/{web-BCijmPgJ.js → web-UN0kX9ic.js} +1 -1
  246. package/dist/assets/{web-DRglVskM.js → web-aW1scjmM.js} +1 -1
  247. package/dist/assets/{web-BLn6q1jU.js → web-eVpCzMlE.js} +1 -1
  248. package/dist/assets/{welcome-screen-BLOCzpJp.js → welcome-screen-Drdb1oS6.js} +1 -1
  249. package/dist/assets/{workflow-detail-panel-C2uCVk6h.js → workflow-detail-panel-DS9_MRNg.js} +1 -1
  250. package/dist/assets/{workspace-page-DDLacEWd.js → workspace-page-CPDwYVlW.js} +1 -1
  251. package/dist/assets/{workspace-tree-query-yJYR72mM.js → workspace-tree-query-DzYz0-QE.js} +1 -1
  252. package/dist/index.html +118 -118
  253. package/package.json +1 -1
  254. package/dist/assets/auth-store-DHZaL7sV.js +0 -2
  255. package/dist/assets/bookmarks-page-d8nnNDbX.js +0 -1
  256. package/dist/assets/checkout-continuation-Dy6JhKe2.js +0 -1
  257. package/dist/assets/checkout-return-target-DL3gHGhi.js +0 -1
  258. package/dist/assets/common-p0vxUnEQ.js +0 -1
  259. package/dist/assets/companion-surface-page-mFuAra3C.js +0 -1
  260. package/dist/assets/consent-B28ImHdT.js +0 -1
  261. package/dist/assets/developer-page-EXPzzlyV.js +0 -1
  262. package/dist/assets/dist-DMYOKN8y.js +0 -1
  263. package/dist/assets/esm-0I5Dlpfv.js +0 -2
  264. package/dist/assets/esm-3UB7kHQk.js +0 -1
  265. package/dist/assets/esm-ByRflon4.js +0 -2
  266. package/dist/assets/esm-CQSb4ucv.js +0 -2
  267. package/dist/assets/esm-Cg0JWVKA.js +0 -2
  268. package/dist/assets/esm-DRm8O1kL.js +0 -2
  269. package/dist/assets/feature-flag-catalog-BE_ZpOEG.js +0 -1
  270. package/dist/assets/feed-item-status-actions-Cz3H5a6L.js +0 -1
  271. package/dist/assets/general-page-B9DgYoMz.js +0 -1
  272. package/dist/assets/index-ClaG_N2S.css +0 -2
  273. package/dist/assets/internal-thread-actions-DNd3HO_g.js +0 -1
  274. package/dist/assets/native-anchor-BrkS1YE6.js +0 -1
  275. package/dist/assets/popover-D3A6cIyW.js +0 -1
  276. package/dist/assets/routes-DyzEBtxt.js +0 -24
  277. package/dist/assets/select-assistant-screen-Bo3KgcFM.js +0 -1
  278. package/dist/assets/settings-CNNFT1Oh.js +0 -1
  279. package/dist/assets/use-app-theme-CMwGeP40.js +0 -1
  280. package/dist/assets/use-touch-mobile-Dr8DcEJC.js +0 -1
  281. package/dist/assets/use-transcript-message-by-id-NAxAU6wP.js +0 -1
  282. /package/dist/assets/{dist-RzxQVwj7.js → dist-D7UWVopK.js} +0 -0
  283. /package/dist/assets/{native-deep-link-D1B4PPZo.js → native-deep-link-IwasVyFQ.js} +0 -0
  284. /package/dist/assets/{onboarding-store-CXXioE_U.js → onboarding-store-9CMrOvS2.js} +0 -0
  285. /package/dist/assets/{react-query.gen-OpeDEMIm.js → react-query.gen-CYP-Tn4K.js} +0 -0
  286. /package/dist/assets/{routes-Bj1LYNBZ.js → routes-yNhBxUSb.js} +0 -0
  287. /package/dist/assets/{theme-preferences-DYqPKXf4.js → theme-preferences-CAlH0BJX.js} +0 -0
  288. /package/dist/assets/{typed-storage-CMa-TZhF.js → typed-storage-BNw603jr.js} +0 -0
  289. /package/dist/assets/{use-assistant-avatar-By4FjR0h.js → use-assistant-avatar-adekIS8v.js} +0 -0
@@ -7,4 +7,4 @@ Run it in the background and tell me when it's done, or if something blocks.`,v1
7
7
 
8
8
  Run it in the background and tell me when it's done, or if something blocks.`,enable:`Turn my memory back on. I'd like you to start remembering things from our conversations again.`}}},fn={actions:{continue:`Continue`,back:`Back`,forward:`Forward`,cancel:`Cancel`,start:`Start`,add:`Add`,adding:`Adding…`,connect:`Connect`,connecting:`Connecting…`,tryAgain:`Try again`,remove:`Remove {value}`,logIn:`Log In`,logOut:`Log out`,loginToUse:`Log in to use`,downloadMacApp:`Download the macOS app`,claim:`Claim`,skipForNow:`Skip for now`,starting:`Starting…`},welcome:{title:`Welcome to Vellum`,body:`Your own personal intelligence is just a step away.`,continueWithoutAccount:`Continue without account`},startScreen:{createAssistant:`Create your assistant`},privacyScreen:{title:`Before You Start`,body:`Choose your privacy preferences. You can update these anytime in the Settings.`,skipToChat:`Skip to chat`},hostingScreen:{title:`Hosting`,body:`Choose where you want your assistant to live.`,needHelp:`Need help deciding?`,optionsAriaLabel:`Hosting options`},apiKeyScreen:{title:`Connect a Model Provider`,body:`Choose the model provider your assistant should use.`,providerLabel:`Provider`,modelLabel:`Model`,baseUrlLabel:`Base URL`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,modelsHelp:`Comma-separated model identifiers exposed by your endpoint.`,apiKeyLabel:`{provider} API Key`,apiKeyPlaceholder:`Enter your API key`,noKeyPrompt:`Don't have it?`,getKeyLink:`Get an API key here`},selectAssistantScreen:{title:`Choose an Assistant`,listAriaLabel:`Assistants`,createNew:`Create a new assistant`,connectRemote:`Connect a remote assistant`,addRemote:`Add a remote assistant`,unnamedAssistant:`the assistant`,connectingToAssistant:`Connecting to your assistant…`,rowActionsAriaLabel:`Actions for {name}`,removeFromDevice:`Remove from this device…`,selfHosted:`Self-hosted`,selfHostedWithHost:`Self-hosted · {host}`,currentWithHost:`Current · {host}`,remoteWithHost:`Remote · {host}`},hatchingScreen:{apiKeyFailed:`Your API key didn't work`,genericFailure:`Something went wrong`,localFallbackPitch:`Get started today with a local assistant`,updateApiKey:`Update API key`,ready:`Your assistant is ready!`,waking:`Waking up…`,wakingBody:`Hang tight, your assistant will have a few questions for you once it's up.`,progressAriaLabel:`Assistant startup progress`,phase:{initializing:`Getting things ready…`,provisioning:`Setting up your assistant…`,connecting:`Connecting to your assistant…`,resizing:`Setting up your machine…`,ready:`Ready`}},addRemoteOriginDialog:{title:`Add a Remote Assistant`,body:`Paste the https link your assistant’s pairing page gave you.`,addressLabel:`Assistant address`},connectAssistantDialog:{importedTitle:`Pairing Imported`,importedBody:`This pairing is access-only: its access expires and cannot renew itself. Re-run vellum pair on the assistant’s machine and import the new bundle when it expires.`,title:`Connect a Remote Assistant`,bundleLabel:`Pairing bundle`,nameLabel:`Name (optional)`,instruction:`On the assistant’s machine, run <code>vellum pair --url https://...</code> and paste the bundle here.`},connectRecoveryDialog:{repairTitle:`Repair Assistant?`,repairBody:`Repairing re-provisions this assistant’s authentication token. Any other devices or browser sessions connected to it will be signed out and need to reconnect.`,repairConfirm:`Repair`,authFailedTitle:`Can’t Authenticate Assistant`,authFailedBody:`The authentication token for {name} is missing or can no longer be refreshed, so this assistant can’t be connected. You can repair it, retire it, or pick a different assistant.`,wakeAndRepair:`Wake & Repair`,retire:`Retire Assistant`},consentControls:{whatsChanged:`What's changed`,privacyPreferences:`Privacy preferences`,analyticsLabel:`Share Analytics`,analyticsHelp:`Send aggregated product usage data`,diagnosticsLabel:`Share Diagnostics`,diagnosticsHelp:`Send crash reports, conversation traces, and session replay data`,agreements:`Agreements`,agreeTo:`I agree to the <link>{policy}</link>`},onboardingAutocomplete:{addOption:`Add “{value}”`,enterHint:`↵ Enter`,freeTextHint:`Type anything and press ↵ to add your own`},stepIndicator:{ariaLabel:`Step {current} of {total}`},googleCalendar:{authorizationFailed:`Failed to start Google Calendar authorization.`},introductionScreen:{greetingNamed:`Hey, {name}!`,greeting:`Hey!`,introNamed:`I’m {name}, your new AI assistant.`,intro:`I’m your new AI assistant.`},pitchStep:{setupLine:`You’ve used AI that just answers questions.`,helpLine:`The more I help,`,punchLine:`I’m different.`,betterLine:`the better I get,`,lessLine:`and the less you have to do.`},createPersonalityStep:{title:`Create my personality`,lockedBody:`Personality locked, chat with your assistant to make any more updates`,axisAriaLabel:`{left} to {right}`,axes:{companionCoworker:{left:`Companion`,right:`Coworker`},genzBoomer:{left:`Gen Z`,right:`Baby Boomer`},executeCollaborate:{left:`Independent`,right:`Collaborative`},playfulSerious:{left:`Playful`,right:`Serious`},politeUnfiltered:{left:`Polite`,right:`Unfiltered`}}},giveMeAFaceScreen:{title:`Give me a face and a name`,previousCharacter:`Previous character`,nextCharacter:`Next character`,namePlaceholder:`Name your assistant`,nameAriaLabel:`Assistant name`,editName:`Edit name`,shuffle:`Shuffle name and appearance`,hearVoice:`Hear my voice`,stopVoice:`Stop the voice sample`},integrationStep:{title:`Here are some free credits<br></br> to get started.`},researchOnboardingScreen:{title:`Let's start with you.`,body:`A few details so I can get to know you.`,firstNameLabel:`What should I call you?`,firstNamePlaceholder:`Your name`,lastNameLabel:`And your last name?`,lastNamePlaceholder:`Your last name (optional)`,roleLabel:`Your role`,rolePlaceholder:`What do you do for work?`,hobbiesLabel:`Any hobbies?`,hobbiesPlaceholder:`Cars, books, growing tomatoes?`},letsChatTomorrowStep:{wakingTitle:`Waking up`,missingScopeTitle:`Access not enabled`,title:`Let me make this easy`,wakingBody:`Your assistant is getting ready`,missingScopeBody:`Check the box next to the Google Calendar permission so I can book the check-in.`,body:`Connect your Google Calendar so I can find time to check in and start helping.`,startingAssistant:`Starting assistant…`,waitingAuthorization:`Waiting for authorization…`,connectCalendar:`Connect Calendar →`},existingAssistantStep:{titleNamed:`{name} is already up and running`,title:`Your assistant is already up and running`,bodyNamed:`You two have history: a personality, memories, and past conversations. Running setup again would overwrite who {name} is now.`,body:`You two have history: a personality, memories, and past conversations. Running setup again would overwrite who your assistant is now.`,keepNamed:`Keep {name} and start chatting`,keep:`Keep your assistant and start chatting`,redoNamed:`Start over and rebuild {name}'s personality`,redo:`Start over and rebuild its personality`},checkinConnectScreen:{title:`Let's chat tomorrow`,body:`Add a meeting in your calendar so we can pick up where we left off.`,permissionBody:`{name} will add a single Day 2 Check-in event. It gets permission to manage your calendar events and see your email address, not your inbox or files, and you can disconnect at any time.`,unnamedAssistant:`your assistant`,waitingAuthorization:`Waiting for authorization...`,connectGoogleCalendar:`Connect Google Calendar`},meetingCreatedStep:{titleWithTime:`Check-in scheduled for tomorrow at {time}!`,title:`Check-in scheduled!`},lookingYouUpStep:{searching:`Searching the web to get to know you…`,readingProfiles:`Reading public profiles…`,skimming:`Skimming the highlights…`,connectingDots:`Connecting the dots…`,piecing:`Piecing it together…`,almostThere:`Almost there…`},finishingUpStep:{updatingPersonality:`Updating my personality…`,findingVoice:`Finding my voice…`,gettingIntoCharacter:`Getting into character…`,almostThere:`Almost there…`},researchResultsStep:{title:`This is what I found about you`,bodyLoadingWithClaims:`Still checking the rest. You can review these as they come in.`,bodyReadyWithClaims:`I searched the web. Feel free to remove anything that isn’t true.`,bodyLoadingEmpty:`Still putting this together…`,bodyReadyEmpty:`I didn’t turn up much, we can fill it in as we chat.`,removeClaim:`Remove "{claim}"`,notMe:`This is not me`,stillSearching:`Still searching…`},suggestionsStep:{title:`Here’s what we could do first`,pickOne:`Pick one to jump in, or start your own thing. <skip>Skip to Chat</skip>`,loading:`Putting together a few ideas…`,alreadySetUp:`Already set up the <plugins></plugins> {count, plural, one {plugin} other {plugins}} to help with your work`,listAnd:` and `,listCommaAnd:`, and `,listComma:`, `,fallbacks:{brief:{suggestion:`I'll pull together a quick brief on what's new in your field`,prompt:`Give me a quick brief on what's new in my field right now.`},weekly:{suggestion:`I'll send a weekly briefing on news in your space`,prompt:`Set up a weekly briefing on news in my space.`},week:{suggestion:`I'll help you get on top of your week`,prompt:`Help me get on top of my week.`},draft:{suggestion:`I'll draft something from a few rough notes`,prompt:`Draft something from a few rough notes I'll give you.`}}},letsChatReadyStep:{title:`You’re all set`,setupNote:`I’ve set myself up with plugins around who you are.`,letsChat:`Let's chat`}},pn={pairingPage:{openInApp:`Open in the Vellum app`,continueInBrowser:`Continue in this browser`,pairingCode:`Pairing code`,expiresAt:`Expires {time}.`,cancel:`Cancel`}},mn={terminalToolbar:{heading:`Terminal`,recoveryTitle:`Recovery Mode active, session connected to the debug terminal`,recoveryTag:`Recovery`,clearTitle:`Clear terminal output`,clear:`Clear`,disconnectTitle:`Disconnect terminal session`,disconnect:`Disconnect`,connectTitle:`Connect terminal session`,connect:`Connect`,statusAria:`Terminal status: {status}`},terminalStatus:{idle:`Idle`,connecting:`Connecting`,connected:`Connected`,reconnecting:`Reconnecting`,error:`Error`,closed:`Closed`},terminalConsole:{consoleAria:`Terminal console`}},hn={workspaceTree:{heading:`Files`,newFile:`New File`,newFolder:`New Folder`,delete:`Delete`,rename:`Rename`,renaming:`Renaming…`,create:`Create`,creating:`Creating…`,creatingHeading:`Create new`,createTriggerAria:`Create new file or folder`,createTriggerTitle:`New file or folder`,nameLabel:`Name`,nameError:`Enter a single file or folder name without slashes.`,cancel:`Cancel`,sortByNameAria:`Sort by name`,sortBySizeAria:`Sort by size`,sortedBySizeTitle:`Sorted by size, switch to name`,sortedByNameTitle:`Sorted by name, switch to size`,hideHiddenAria:`Hide hidden files`,showHiddenAria:`Show hidden files`,searchPlaceholder:`Search files`,clearSearchAria:`Clear search`,noFilesFound:`No files found`,deleteFolderTitle:`Delete Folder`,deleteFileTitle:`Delete File`,deleteFileMessage:`Are you sure you want to delete <name>{name}</name>? This cannot be undone.`,deleteFolderMessage:`Are you sure you want to delete <name>{name}</name> and all of its contents? This cannot be undone.`,deleting:`Deleting…`},workspaceBrowser:{drawerTitle:`Files`},workspaceFileViewer:{download:`Download`,downloading:`Downloading…`,downloadFailed:`Download failed. Try again.`,preview:`Preview`,source:`Source`,modifiedLabel:`Modified:`,selectAFile:`Select a file to view`,browseFiles:`Browse files`,fileNotFound:`File not found`,saveFailed:`Save failed`,downloadAria:`Download {name}`}},gn={activityStepsPanel:{backAria:`Back to all steps`,backTooltip:`All steps`},addToChatSheet:{title:`Add to chat`,closeAriaLabel:`Close`,camera:`Camera`,gallery:`Photo Library`,files:`Files`,pickFailed:`Could not add that file. Please try again.`,tooLarge:`{count, plural, one {# file is too large to attach} other {# files are too large to attach}}`,pickFull:`{count, plural, one {# file did not fit in this batch. Add it on its own.} other {# files did not fit in this batch. Add them separately.}}`},allowOptionsMenu:{allowAndCreateRule:`Allow & Create Rule`,trigger:`More allow options`},appAssetActions:{appExported:`App exported`,shareFailed:`Failed to share app`},assistantSideMenu:{bulkActionMembersFailed:`Couldn't load every conversation in this section. Try again.`},assistantSwitcher:{collapse:`Hide assistants`,currentAssistant:`{name}, current assistant`,expand:`Switch assistant`,switchFailed:`Couldn't switch assistants. Try again.`,switchTo:`Switch to {name}`,unnamedAssistant:`Unnamed assistant`},cacheBreakpointMapCard:{description:`Where the {count, plural, one {# cache breakpoint} other {# cache breakpoints}} fell across this request's prefix, and which segments were read versus re-created.`,estimatedTokens:`≈ {count} tokens`,fullMissBody:`Every segment was re-created this turn. Compare with the previous turn in the cache diff above to find the block that changed.`,fullMissTitle:`Full cache miss`,loadError:`Couldn't load the request payload to map cache breakpoints.`,loading:`Loading the request payload to map cache breakpoints…`,noBreakpoints:`This request carried no cache breakpoints - prompt caching was disabled for the call.`,splitEstimatedNote:` The read/created split is attributed by segment size; the provider reports only the totals.`,statusCreated:`Re-created`,statusRead:`Read from cache`,statusUnknown:`Cached`,title:`Cache breakpoints`,tokenEstimateNote:`Token counts are estimated from text length.`},cacheDiffCard:{changedLabel:`Changed`,changedMessageFallback:`a message`,chipMessages:`Messages`,chipModel:`Model`,chipSettings:`Settings`,chipSystem:`System`,chipTools:`Tools`,currentModelFallback:`this model`,description:`What changed since the previous turn's request - the block that re-created the prompt cache.`,diffAnyway:`Diff anyway ({lineCount} lines)`,diffLabel:`{label} diff`,diffLargeDefault:`The changed text is large, so it isn't diffed by default.`,diffStillTooLarge:`Still too large to diff here (over {maxLines} lines) - open the Raw tab for the full payload.`,diffTooLarge:`The changed text is too large to diff here - open the Raw tab for the full payload.`,loadPreviousCallError:`Couldn't load the previous call to diff against.`,loadingPreviousCall:`Loading the previous call to compare…`,messageStatsAppended:`{count} appended`,messageStatsLeading:`Leading messages: {parts}`,messageStatsRemoved:`{count} removed`,messageStatsShared:`{count} shared`,previousModelFallback:`the previous model`,previousPromptUnavailable:`The previous call's prompt isn't available to compare.`,showLess:`Show less`,showMoreDiffLines:`Show {count} more diff line(s)`,statusMessagesEarlierBody:`{label} #{index} differs from the previous turn, so everything cached after it is re-processed this turn.`,statusMessagesEarlierTitle:`An earlier message changed`,statusMessagesHistoryBody:`{removedCount} earlier message(s) are gone this turn (likely history compaction), so the cached message prefix no longer matches.`,statusMessagesHistoryTitle:`Message history changed`,statusModelBody:`This turn used {current} but the previous turn used {previous}. A different model can't reuse the previous prompt cache, so the whole prompt is re-created.`,statusModelTitle:`Model changed`,statusPrefixUnchangedBodyAppended:`The cached prefix matches the previous turn and {count} new message(s) were appended. A cache miss here points to cache TTL expiry rather than changed content.`,statusPrefixUnchangedBodyIdentical:`The cached prefix is identical to the previous turn. A cache miss here points to cache TTL expiry rather than changed content.`,statusPrefixUnchangedTitle:`Prompt prefix unchanged`,statusSettingsBody:`Only request settings (e.g. temperature) differ from the previous turn. For most providers this alone won't bust the prompt cache.`,statusSettingsTitle:`Request settings changed`,statusSystemBody:`Part of the system prompt changed since the previous turn. Volatile content here - a timestamp, memory, or a per-turn block - re-creates the cache every turn.`,statusSystemTitle:`System prompt changed`,statusToolsBody:`The tool set or its definitions differ from the previous turn. Tools sit at the front of the cached prefix, so any change here re-creates the cache before it reaches the system prompt and messages.`,statusToolsTitle:`Tool definitions changed`,title:`Cache diff`,unchangedLines:`⋯ {count} unchanged line(s)`},cacheHealthCard:{barAriaLabel:`Prompt cache breakdown of {total} tokens: {segments} ({percent} cached).`,barSegment:`{count} {label}`,cached:`cached`,description:`How much of this call's prompt was served from the prompt cache.`,segmentCreated:`Re-created`,segmentFresh:`Fresh input`,segmentRead:`Read from cache`,statusFullMissBody:`None of this call's prompt was read from cache.`,statusFullMissReCreatedSuffix:` {count} tokens were written to the cache this turn but none were reused - this usually means the cached prefix changed since the previous turn.`,statusFullMissTitle:`Full cache miss`,statusHealthyBody:`{percent} of this call's prompt ({count} tokens) was served from cache.`,statusHealthyTitle:`Healthy cache reuse`,statusPartialBody:`{percent} of this call's prompt ({count} tokens) was served from cache; the rest was re-processed this turn.`,statusPartialTitle:`Partial cache reuse`,title:`Cache health`,unavailableNote:`This call didn't report prompt-cache usage.`,unavailableNoteForProvider:`This call didn't report prompt-cache usage for {provider}.`},callRail:{callCount:`{count, plural, one {# LLM call} other {# LLM calls}}`,callLabel:`Call {number}`,compaction:`Compaction`,cost:`Cost`,empty:`No LLM calls recorded.`,failed:`Failed`,latest:`Latest`,navAriaLabel:`LLM calls`,syntheticAgentLoopError:`Agent loop error`,syntheticAgentLoopErrorWithReason:`Agent loop error · {reason}`,syntheticYield:`Yield · compaction couldn't fit next step`,unrecognizedCall:`Unrecognized call`},chatComposer:{addToChat:`Add to chat`,askAssistantPlaceholder:`Ask {assistantName}`},compactionTab:{compactedMessages:`{count} compacted`,compactedPreserved:`Compacted / preserved`,contextTokens:`Context tokens`,duration:`Duration`,durationMs:`{count} ms`,emptyBody:`A compaction is attributed to the call that ran right after it. If you expect one here, check that the conversation crossed its context budget just before this call.`,emptyTitle:`No compaction is tied to this call`,eventIndex:` · {index} of {totalCount}`,hideSummaryText:`Hide summary text`,loadFailedDefault:`Failed to load compaction.`,loadFailedTitle:`Failed to load`,loading:`Loading compaction…`,messageRange:`{before} → {after}`,messages:`Messages`,outcomeCompacted:`Compacted`,outcomeFailed:`Compaction failed`,outcomeFailedDetail:`The summarizer call errored, so the context was left intact.`,outcomeNoChange:`No change`,outcomeUnavailable:`Outcome unavailable`,outcomeUnavailableDetail:`Detailed before/after metrics weren't recorded for this compaction.`,preservedMessages:`{count} preserved`,reductionRatio:`{ratio}× smaller`,retry:`Retry`,showSummaryText:`Show summary text`,summarizerUsage:`{input} in / {output} out`,summaryCost:`Summary cost`,summaryModel:`Summary model`,tokenRange:`{before} → {after}`,tokenRangeWithReduction:`{before} → {after} ({reduction})`,trigger:`Trigger`},composerSettingsMenu:{profileSwitchFailed:`Profile created, but couldn't switch to it`,profileSwitchFallback:`Failed to switch profile. Please try again.`},conversationActions:{archive:`Archive`,copyConversation:`Copy Full Conversation`,copyConversationId:`Copy conversation ID`,forkConversation:`Fork Conversation`,inspect:`Analyze Conversation`,markRead:`Mark as read`,markUnread:`Mark as unread`,moveToGroup:`Move to group`,newGroup:`New group…`,openInNewWindow:`Open in New Window`,pin:`Pin`,refresh:`Refresh`,removeFromGroup:`Remove from group`,rename:`Rename`,shareFeedback:`Share Feedback`,triggerAriaLabel:`Conversation actions`,unarchive:`Unarchive`,unpin:`Unpin`},conversationActionsSheet:{closeAriaLabel:`Close`,title:`Conversation Actions`},conversationAssets:{ariaLabel:`Conversation assets, {count, plural, one {# item} other {# items}}`,ariaLabelUnseen:`Conversation assets, {count, plural, one {# item} other {# items}} (unseen changes)`,heading:`Assets`,label:`{count, plural, one {# asset} other {# assets}}`},conversationStarterDock:{caption:`Try some suggestions:`},copyButton:{copied:`Copied`,copyFailed:`Could not copy to the clipboard.`},copyIdToClipboard:{conversationCopied:`Conversation ID copied to clipboard.`,conversationFailed:`Couldn't copy the conversation ID.`,groupCopied:`Group ID copied to clipboard.`,groupFailed:`Couldn't copy the group ID.`},detailPanelStopButton:{tooltip:`Stop`},documentAssetActions:{pdfDownloadFailed:`Failed to download PDF`},exportProgressModal:{cancel:`Cancel`,close:`Close`,defaultError:`Failed to export inspector data.`,descriptionDone:`Your download should have started automatically.`,descriptionError:`Something went wrong while collecting the export.`,descriptionRunning:`Collecting provider payloads and normalized context. This can take a moment for long conversations.`,done:`Done`,progressAriaLabel:`Export progress`,retry:`Retry`,statusDone:`Done`,statusPackaging:`Packaging ZIP…`,statusProgress:`{completed} of {total} calls`,titleDone:`Export complete`,titleError:`Export failed`,titleRunning:`Exporting inspector data`},fileDownload:{failed:`Failed to download file`},groupActions:{archiveAll:`Archive All…`,copyGroupId:`Copy group ID`,deleteGroup:`Delete group`,deleteGroupWithConversations:`Delete group…`,groupByChannel:`Group by channel`,markAllRead:`Mark All as Read`,moveSectionDown:`Move Section Down`,moveSectionUp:`Move Section Up`,rename:`Rename`,ungroup:`Ungroup`},groupActionsSheet:{title:`{name} actions`},inspectPage:{accessDenied:`Inspector is available when the Internal Thread Actions feature flag is enabled.`,allMessages:`All messages`,back:`Back`,backToConversationAria:`Back to conversation`,chooseCall:`Choose a call from the rail to inspect its context.`,conversationScopeSubtitle:`Showing every LLM call recorded for this conversation.`,detailLoadFailed:`Failed to load this call’s normalized context.`,emptyBodyConversation:`Either no message in the conversation was produced by an LLM call or the request logs were trimmed by retention.`,emptyBodyMessage:`Either this message wasn’t produced by an LLM call or its request logs were trimmed by retention.`,emptyTitleConversation:`No LLM calls recorded for this conversation.`,emptyTitleMessage:`No LLM calls recorded for this message.`,enableLogging:`Enable logging`,enableLoggingFailed:`Failed to enable logging`,enableLoggingFailedWithMessage:`Failed to enable logging ({message})`,enabling:`Enabling…`,exportFailed:`Failed to export inspector data`,exportZip:`Export ZIP`,exportZipAria:`Export inspector data as ZIP`,exporting:`Exporting…`,filterToMessage:`Filter to message:`,llmCallCount:`{count, plural, one {1 LLM call} other {# LLM calls}}`,loadContextFailed:`Failed to load LLM context.`,loadFailedTitle:`Failed to load`,loading:`Loading…`,loggingDisabledBody:`Request and response payloads aren’t being recorded, so there’s nothing to inspect. Enable logging to capture future LLM calls.`,loggingDisabledTitle:`LLM request logging is off`,loggingEnabledToast:`LLM request logging enabled`,messageOptionDeepLink:`Message {messageId}`,messageOptionNoText:`{index}. (no text)`,messageOptionWithPreview:`{index}. {preview}`,retry:`Retry`,scopedToOneMessage:`Scoped to one message · `,scopedToTurn:`Scoped to turn {index} of {count} · `,title:`LLM Context Inspector`},llmCallErrorCard:{chipCode:`Code`,chipProvider:`Provider`,chipRequestId:`Request ID`,chipStatus:`Status`,chipType:`Type`,chipUpstreamCode:`Upstream code`,chipUpstreamParam:`Upstream param`,chipUpstreamType:`Upstream type`,noResponse:`The provider rejected this call and returned no response.`,title:`Call failed`},localFileEmbed:{pictureInPictureUnavailable:`Picture in Picture isn't available`},localFileLink:{unavailable:`This file isn't available here`},memoryRouterPlaygroundPage:{addOlderPairButton:`+ Add older pair`,assistantReplyLabel:`[assistant]: reply`,assistantReplyPlaceholder:`Assistant's reply that came before the user message below.`,configTitle:`Config {paneId}`,conversationalContextTitle:`Conversational context (shared by both panes)`,customPromptPlaceholder:`Custom router system prompt. Available placeholders:
9
9
  '{ASSISTANT_NAME}, {USER_NAME}, {PAGE_INDEX}'
10
- Leave blank to use the bundled template. "Load default" seeds the textarea with the bundled body for editing.`,description:`Dry-run the v4 router with custom tier/batch overrides. Read-only - no rows are written to <code>memory_v2_injection_events</code> or <code>memory_v2_activation_logs</code>, and no activation state is mutated. Leave an override blank to inherit the live config value; enter <code>null</code> to explicitly disable a tier.`,diffLabel:`Diff`,diffValue:`{shared} shared · {unique} unique to this pane`,effectiveConfig:`Effective config`,emaScore:`EMA {score}`,empty:`(empty)`,emptySelectionHint:`The router returned an empty selection. Try a more specific query, or relax the override values.`,failedToRunSimulation:`Failed to run simulation`,firstTurnAssistantPlaceholder:`Leave blank for a first-turn scenario.`,inheritActive:`inherit active`,inheritActiveWithProfile:`inherit active ({profile})`,inheritPlaceholder:`inherit`,invalidOverrideInput:`Invalid override input`,justArrivedUserLabel:`Just-arrived [user]: message`,lastUserPlaceholder:`e.g. what should we ship next`,legendAOnly:`A only`,legendBOnly:`B only`,legendInBoth:`in both`,llmProfilesOverride:`llm.profiles override`,loadDefault:`Load default`,loading:`Loading…`,noPagesSelected:`No pages selected`,notAvailable:`Memory router playground is not available.`,nowBlockLabel:`'<now>' block`,nowDefaultPlaceholder:`Pre-filled with the live NOW.md. Edit to test alternate states.`,nowLoadingPlaceholder:`Loading current NOW.md…`,nullValue:`null`,overrideMustBePositiveInteger:`{fieldName} must be a positive integer or 'null' (got "{value}")`,overrideSuffix:` (override)`,pageCount:`{count, plural, one {# page} other {# pages}}`,pairLabel:`Pair {index} of {total}`,pairMostRecentSuffix:` · most recent`,paneTitle:`Pane {paneId}`,promptModeBundled:`bundled`,promptModeCustom:`custom`,rawApiExchange:`Raw API exchange`,recentPairsLabel:`Recent (assistant, user) pairs · oldest first`,reloadNowButton:`Reload live NOW.md`,removeButton:`Remove`,requestLabel:`Request (Pane {paneId})`,reset:`Reset`,responseLabel:`Response (Pane {paneId})`,routerFailure:`Router failure: {reason}`,runBoth:`Run both`,runPane:`Run {paneId}`,running:`Running…`,selectedLabel:`Selected`,selectedValue:`{count} (live max_page_ids: {maxPageIds})`,summary:`Summary`,summaryUserMessageLabel:`User message`,systemPrompt:`System prompt`,systemPromptConfigLabel:`system prompt`,tier1Label:`tier 1`,tier2Label:`tier 2`,tier3Label:`tier 3 · b{batch}`,title:`Memory Router Playground`,totalCandidatePagesLabel:`Total candidate pages`,userMessageLabel:`[user]: message`,userMessagePlaceholder:`User's message.`},memoryTab:{afterMergeLabel:`After merge`,breakdownCAssistantRerank:`c_assistant · rerank Δ_a`,breakdownCAssistantSim:`c_assistant · sim_a`,breakdownCNowSim:`c_now · sim_n`,breakdownCUserRerank:`c_user · rerank Δ_u`,breakdownCUserSim:`c_user · sim_u`,breakdownOwnActivation:`A_o (own)`,breakdownPriorActivation:`prior · d`,breakdownRerankScaledRaw:`+{scaled} (raw {raw})`,breakdownScaledRaw:`{scaled} (raw {raw})`,breakdownSource:`source`,breakdownSpreadDelta:`spread Δ`,breakdownStatus:`status`,candidateScores:`sem {semantic} · rec {recency}`,carriedPill:`Carried: {count}`,conceptActivationsSubtitle:"Sorted by final activation. Skill entries appear with the `skills/` slug prefix; expand a row for the activation breakdown.",conceptActivationsTitle:`Concept activations ({count})`,configCAssistant:`c_assistant`,configCNow:`c_now`,configCUser:`c_user`,configDDecay:`d (decay)`,configEpsilon:`epsilon`,configHops:`hops`,configKSharpening:`k (sharpening)`,configSubtitle:`Activation weights and selection thresholds.`,configTitle:`Config`,configTopK:`top_k`,copyAriaLabel:`Copy to clipboard`,copyAriaLabelCopied:`Copied`,copyButtonCopied:`Copied`,copyButtonCopy:`Copy`,copyErrorMessage:`Couldn't copy to clipboard.`,copyTitle:`Copy`,copyTitleCopied:`Copied!`,corePill:`Core: {count}`,degradationTitle:`Degradation`,fallbackSourcesLabel:`Fallback sources`,hybridSearchLabel:`Hybrid search`,inContextPill:`In context: {count}`,injectedMemoryContextTitle:`Injected memory context`,injectedPill:`Injected: {count}`,injectedTokensLabel:`Injected tokens`,latencyMs:`{ms} ms`,loading:`Loading…`,loggedMemorySelectionSubtitle:`Rendered from the v3 selection, not injected this turn.`,loggedMemorySelectionTitle:`Logged memory selection`,memoryDisabledDefaultReason:`Memory recall was disabled for this turn.`,memoryDisabledTitle:`Memory disabled`,missingValue:`-`,modelLabel:`Model`,no:`No`,noDataBody:`Memory recall information is not available for this message.`,noDataTitle:`No memory data`,noEntriesRanked:`No entries ranked.`,noPagesSelected:`No pages selected.`,notInjectedPill:`Not injected: {count}`,pageContentLabel:`page content`,pageNotFound:`Page not found on disk. Slug may reference a stale Qdrant entry.`,pillMemoryV2:`Memory V2`,pillMemoryV3:`Memory V3`,pillRecallV1:`Recall (v1)`,pinnedChip:`pinned`,pinnedPill:`Pinned: {count}`,providerLabel:`Provider`,queryContextSubtitle:`The text embedded as the search vector for semantic retrieval.`,queryContextTitle:`Query context`,reasonLabel:`Reason`,retrievalFunnelSubtitle:`How memories were filtered from semantic search to injection.`,retrievalFunnelTitle:`Retrieval funnel`,searchDetailsTitle:`Search details`,selectedLabel:`Selected`,selectedPagesSubtitle:`Pages v3 selected, tagged by the lane that surfaced them and the matched section (when a finder lane surfaced one).`,selectedPagesTitle:`Selected pages ({count})`,selectedPill:`Selected: {count}`,semanticHitsLabel:`Semantic hits`,semanticUnavailableLabel:`Semantic unavailable`,sparseDenseOnly:`Dense only`,sparseUsed:`Used`,sparseVectorsLabel:`Sparse vectors`,statusActive:`Active`,statusDegraded:`Degraded`,statusLabel:`Status`,statusSubtitle:`Provider, model, and latency for this recall.`,statusTitle:`Status`,tier1Label:`Tier 1`,tier2Label:`Tier 2`,topCandidatesSubtitle:`{count, plural, one {# candidate ranked by final score.} other {# candidates ranked by final score.}}`,topCandidatesTitle:`Top candidates`,totalLatencyLabel:`Total latency`,turnLevelRecallBody:`Memory recall runs once per turn. This data applies to all LLM calls for this message.`,turnLevelRecallTitle:`Turn-level recall`,turnPill:`Turn {turn}`,unavailable:`Unavailable`,unknown:`Unknown`,v2StatusInContext:`In context`,v2StatusInjected:`Injected`,v2StatusNotInjected:`Not injected`,v2StatusPageMissing:`Page missing`,v2TurnBody:`Spreading-activation memory pass that ranks concepts and skills for this turn.`,v2TurnTitle:`Memory - turn {turn} ({mode})`,v3LiveInjectionBody:`v3 is the live memory source this turn: the block below was injected into context (v2 suppressed).`,v3LiveInjectionTitle:`Memory V3 - live injection`,v3LoggedSelectionBody:`v3 is not the live memory source for this assistant: these selections were logged but not injected this turn; the turn's memory came from v2.`,v3LoggedSelectionTitle:`Memory V3 - logged selection (not injected)`,v3SourceCarried:`carried`,v3SourceCore:`core`,v3SourceL1L2:`L1+L2`,v3SourceNeedle:`needle`,yes:`Yes`},mobileCallSelector:{callOfTotal:`Call {number} of {total}`,llmCallCount:`{count, plural, one {1 LLM call} other {# LLM calls}}`,selectCallAria:`Select an LLM call to inspect`,sheetTitle:`Select a call`},overviewTab:{cacheTokensLabel:`Cache tokens`,conversationSubtitle:`Running totals across every priced LLM call so far.`,conversationTitle:`Conversation`,createdLabel:`Created`,durationLabel:`Duration`,estimatedCostLabel:`Estimated cost`,failedStatus:`Failed`,firstTokenKindLabel:`First token kind`,firstTokenLatencySubtitle:`Where this turn's time-to-first-token went, measured by the assistant.`,firstTokenLatencyTitle:`First-token latency`,inputTokensLabel:`Input tokens`,latencyMs:`{ms} ms`,loopExitReasonLabel:`Loop exit reason`,modelLabel:`Model`,normalizedMetadataSubtitle:`Provider, model, timestamps, and usage counts.`,normalizedMetadataTitle:`Normalized metadata`,normalizedSummaryUnavailableSubtitle:`This call still has raw request and response payloads.`,normalizedSummaryUnavailableTitle:`Normalized summary unavailable`,otherLabel:`Other`,outputTokensLabel:`Output tokens`,providerLabel:`Provider`,requestMessagesLabel:`Request messages`,statusLabel:`Status`,stopReasonLabel:`Stop reason`,toolCallsLabel:`Tool calls`,toolsAvailableLabel:`Tools available`,totalCostSoFarLabel:`Total cost so far`,totalToFirstTokenLabel:`Total to first token`,usageSubtitle:`Token and call counts normalized by the assistant route.`,usageTitle:`Usage`},pinnedAppColorSwatches:{colors:{green:`Green`,orange:`Orange`,pink:`Pink`,purple:`Purple`,teal:`Teal`,yellow:`Yellow`},noColor:`No color`},preferencesUsagePanel:{addCreditsAriaLabel:`Add credits`,exhausted:`Add credits to continue.`,pctUsed:`{pct}% used`,resets:`Resets {date}`,settingsAriaLabel:`Usage and billing settings`,title:`Usage`},promptTab:{availableTools:`Available tools`,bannerNoSections:`This call has no normalized prompt sections yet.`,bannerSectionsCount:`{count, plural, one {# normalized request section shown in the order returned by the assistant route.} other {# normalized request sections shown in the order returned by the assistant route.}}`,collapseAll:`Collapse all`,copyAriaLabel:`Copy {title}`,emptyBody:`This call has no normalized prompt sections. Use the Raw tab to inspect the full request payload.`,emptyTitle:`No normalized prompt sections`,expandAll:`Expand all`,formatJavaScript:`JavaScript`,formatJson:`JSON`,formatMarkdown:`Markdown`,formatTypeScript:`TypeScript`,noContentAvailable:`No content available.`,promptSectionsTitle:`Prompt sections`},rawTab:{copyRequestPayloadAriaLabel:`Copy request payload`,copyResponsePayloadAriaLabel:`Copy response payload`,downloadFailedToast:`Failed to download the payload.`,downloadRequestPayloadAriaLabel:`Download request payload`,downloadResponsePayloadAriaLabel:`Download response payload`,loadErrorTitle:`Couldn't load raw payloads`,loading:`Loading raw payloads…`,payloadRequestFailed:`The payload request failed. Try again.`,request:`Request`,requestPayload:`Request payload`,response:`Response`,responsePayload:`Response payload`,retry:`Retry`},redactedCredentialChip:{revealFailed:`Couldn't reveal {name}.`},responseTab:{argumentsPreview:`Arguments preview`,copySectionAria:`Copy section content`,kindAssistantText:`Assistant text`,kindFunctionResponse:`Function response`,kindReasoning:`Reasoning`,kindToolCall:`Tool call`,kindToolResult:`Tool result`,modeResultOnly:`Result-only response`,modeTextOnly:`Text-only response`,modeToolCalling:`Tool-calling response`,noArgumentsPreview:`No structured arguments preview is available for this tool call.`,noAssistantText:`No assistant text was captured for this section.`,noSectionsFallback:`This response has no rendered sections. Raw payloads remain available in the Raw tab, and any normalized response metadata will still be shown when present.`,rawTabHint:`Need the full provider payload? Open the Raw tab for request and response JSON.`,responseMetadata:`Response metadata`,sectionTitle:`Section {number}`,sectionUnavailable:`Section rendering unavailable`,stopReasonChip:`Stop reason: {reason}`,toolChip:`Tool: {name}`},sidebarConversationError:{message:`Your conversations failed to load.`,retry:`Try again`},skillDetailPanel:{actionsAria:`Skill actions`,moreTooltip:`More`},skillsTab:{callLink:`Call {number}`,emptyBody:`This tab lists every <code>skill_load</code> tool call across the conversation. None were detected in the captured LLM calls.`,emptyTitle:`No skills were loaded in this conversation`,loadCount:`{count, plural, one {1 load} other {# loads}}`,summaryStats:`{uniqueCount, plural, one {# unique skill} other {# unique skills}} · {totalLoads, plural, one {# load call} other {# load calls}}`,summaryTitle:`Skills loaded in this conversation`},toolDefinitionsContent:{defaultValue:`default: {value}`,inputSchema:`Input schema`,intro:`{count, plural, one {# tool} other {# tools}} sent with this request. Expand a tool to see its definition and input schema.`,noInputSchema:`No input schema - this tool takes no structured input.`,required:`required`,settings:`Settings`},transcriptMessageBody:{fileUnavailable:`File not available for download`,fileUnavailableHostTimeout:`File not available for download (host file approval may have timed out)`},useConversationLoader:{authFailed:`Failed to authenticate user.`},useConversationSecondaryActions:{assistantBusy:`Your assistant is busy. Try again when it finishes replying.`,retryFailed:`Couldn't retry the response`,summarizeFailed:`Couldn't summarize the conversation`},useSendMessage:{commandFailed:`Couldn't run that command. Please try again.`,doctorUnavailable:`The Doctor isn't available on this assistant.`}},_n={addCreditsModal:{configureAutoReload:`Configure Auto-Reload`},notFound:{badge:`Error 404`,title:`Page not found`,body:`The page you're looking for doesn't exist or may have moved.`,backToAssistant:`Back to your assistant`,goBack:`Go back`},resourcePressureBanner:{title:`Resource utilization is high`,body:`Your assistant has been using elevated resources for an extended period, upgrade to power up your assistant.`,bodyNoUpgrade:`Your assistant has been using elevated resources for an extended period.`,upgrade:`Upgrade`,dontShowAgain:`Don't show again`},sectionActionsButton:{ariaLabel:`{name} actions`},windowsMenuBar:{file:`File`,view:`View`,developer:`Developer`,help:`Help`}},vn={schedulesPanel:{pastToggle:`Past ({count, number})`,loadFailed:`Failed to load schedules.`,retry:`Retry`,emptyTitle:`No schedules yet`,emptyDescription:`Ask your assistant to set one up, or create one yourself.`,newConversation:`New Conversation`,emptyActionsSeparator:`or`,createSchedule:`Create schedule`,useProfileForAll:`Use {profile} for all schedules`,oneTimeHeading:`One-time`},scheduleSummaryCard:{costLoading:`Loading cost`,costCaption:`spent in the last {days, plural, one {# day} other {# days}}`,minimize:`Minimize {title}`,expand:`Expand`},scheduleDetail:{close:`Close`,closeAria:`Close schedule details`,details:`Details`,status:`Status`,toggleAria:`Toggle {name}`,nextRun:`Next run`,lastRun:`Last run`,cadence:`Cadence`,mode:`Mode`,modelProfile:`Model profile`,modelProfileWorkflowNote:`Each step of a workflow picks its own model, so this schedule has no model setting to change.`,chooseModel:`Choose a model`,modelChangeFailed:`Failed to change the model.`,costLabel:`{days, number} Day Cost`,runsLabel:`{days, number} Day Runs`,conversations:`Conversations`,conversation:`Conversation`,conversationArchived:`(archived)`,conversationUnavailable:`(unavailable)`,output:`Output`,error:`Error`,openRunConversationAria:`Open conversation for run at {time}`,toggleRunDetailsAria:`Toggle details for run at {time}`,noRunsYet:`No runs yet.`,recentRuns:`Recent runs`,managedByPlugin:`Managed by plugin {plugin}`,managedByPluginPaused:`Managed by plugin {plugin} · off, {reason}`,delete:`Delete`,deleteConfirmMessage:`Delete "{name}"? This can't be undone.`,cancel:`Cancel`,confirmDelete:`Yes, delete`,viewUsage:`View usage`,turnOnToRun:`Turn this schedule on to run it`,running:`Running…`,runNow:`Run now`,runFailed:`Failed to run schedule.`,deleteFailed:`Failed to delete schedule.`,toggleFailed:`Failed to toggle schedule.`,notUsedForWorkflow:`Not used for workflow runs`,enabled:`Enabled`,disabled:`Disabled`},systemTaskDetail:{openMemorySettings:`Open Memory settings`,turnOnMemory:`Turn on Memory`,memorySettings:`Memory settings`,fallbackModelProfile:`Default (system task model)`,repeats:`Repeats`,nameHeartbeat:`Heartbeat`,nameConsolidation:`Consolidation`,nameRetrospective:`Memory retrospective`,statusManagedOn:`On · Managed by Memory`,statusPaused:`Paused`,pausedRetrospectiveSwitchedOff:`Retrospectives are turned off. Turn them back on under Memory in settings.`,pausedRetrospective:`Memory is off, so retrospectives are paused. Turn Memory back on to resume them.`,pausedConsolidation:`Memory is off, so consolidation is paused. Turn Memory back on to resume consolidation.`},scheduleRow:{toggleAria:`Toggle {name}`},scheduleDisarmReason:{userDisabled:`turned off by you`,pluginRemoved:`plugin removed`,pluginDisabled:`plugin disabled`,declarationRemoved:`removed from plugin`,declarationDisabled:`paused by plugin`}},yn={advisorProfileRow:{chooseProfilePlaceholder:`Choose profile…`,description:`The profile your assistant consults for a second opinion when it wants to check a plan or review its own work.`,title:`Advisor`},aiProviderPicker:{defaultEntryMeta:`Default`},autoTopUpCard:{connectCardBanner:`Auto-reload requires you to connect a credit card.`,disableError:`Failed to disable auto-reload. Please try again.`,loadError:`Failed to load auto-reload configuration.`,toggleLabel:`Enable auto-reload`,updateError:`Failed to save auto-reload settings. Please try again.`},autoTopUpDisableConfirm:{message:`Auto-reload will stop. Any saved payment method stays on file.`,title:`Disable auto-reload?`},billingOnboardingModal:{backgroundConfirmContinue:`Continue`,backgroundConfirmKeepWaiting:`Keep waiting`,backgroundConfirmTitle:`Continue in the background?`},billingPage:{billingTab:`Billing`,billingUnavailable:`Billing isn't available for the current assistant state.`,finishSetupBody:`Your assistant's email address hasn't been set up yet.`,finishSetupButton:`Finish setup`,finishSetupTitle:`Finish setting up your {plan} plan`,loadingBilling:`Loading billing…`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,usageTab:`Usage`},billingPanel:{addCreditsButton:`Add Credits`,balanceLabel:`Credits`,earnCreditsButton:`Earn Free Credits`,lowBalanceToggle:`Custom Low Balance Alert`,subtitle:`Quick overview of your balances and other things`,title:`Credits`},billingStatusHandler:{successToast:`Payment received! Your credit balance will update shortly.`,topUpCancelToast:`Checkout was cancelled. No credits were added.`,upgradeCancelToast:`Upgrade canceled. No changes to your plan.`},bookmarksPage:{emptyDescription:`Hover any message and click the bookmark icon to save it here.`,emptyTitle:`No bookmarks`,errorDescription:`Something went wrong. Please try again.`,errorTitle:`Failed to load bookmarks`,open:`Open`,removeBookmark:`Remove bookmark`,retry:`Retry`,untitledConversation:`Untitled conversation`},bulkOverrideSwapModal:{affectedSummary:`{count, plural, one {# action currently uses {profile}} other {# actions currently use {profile}}}`,applyTo:`{count, plural, one {Apply to # action} other {Apply to # actions}}`,cancel:`Cancel`,changeToLabel:`Change to`,chooseActions:`Choose which actions to update.`,clearAll:`Clear all`,currentlyUsingLabel:`Currently using`,intro:`Update the actions that currently use one profile. The result is saved as individual overrides.`,noticeBody:`It changes the selected actions that use {sourceLabel} today. It does not create an ongoing rule between profiles.`,noticeTitle:`This happens once.`,selectAll:`Select all`,successToast:`Updated {count, plural, one {# action} other {# actions}} to "{targetLabel}".`,targetPlaceholder:`Select a profile…`,title:`Change Action Overrides`,updateFailedToast:`Failed to update overrides. Please try again.`,viaDefault:`Default`,viaOverride:`Override`,willChange:`{count, plural, one {# action will change} other {# actions will change}}`},callSiteOverridesRow:{defaultProfileSuffix:`· Default: {label}`,modelLabel:`Model`,overrideAriaLabel:`Override {displayName}`,pickModelError:`Pick a model`,providerLabel:`Provider`,unavailableOption:`{name} (unavailable)`},chatgptOauthSection:{completeFailed:`Failed to complete sign-in. Please try again.`,completeSignIn:`Complete Sign In`,completingSignIn:`Completing sign-in...`,connected:`ChatGPT subscription connected successfully.`,intro:`Connect your ChatGPT subscription to use OpenAI models without an API key.`,invalidUrl:`Invalid URL. Please paste the full URL from the address bar.`,missingCode:`The URL is missing the authorization code. Make sure you copied the full URL.`,missingState:`The URL is missing the state parameter. Make sure you copied the full URL.`,pasteUrlError:`Please paste the URL from the error page.`,signInButton:`Sign in with ChatGPT`,startFailed:`Failed to start ChatGPT sign-in. Please try again.`,startingSignIn:`Starting sign-in...`,step1Idle:`1. Click "Sign in with ChatGPT" below to open a popup`,step1PasteUrl:`1. Click "Sign in with ChatGPT" to open a popup`,step2:`2. Sign in, then you'll land on an error page - that's expected`,step3:`3. Copy the full URL from that page's address bar and paste it below`,tryAgain:`Try Again`,urlPlaceholder:`Paste callback URL here...`},checkoutBonusModal:{body:`Claim a one-time {amount} credit and we'll add it straight to your account balance. No payment required.`,claim:`Claim {amount} in credits`,decline:`No thanks`,errorToast:`Could not add the credits. Please try again.`,grantedToast:`{amount} in credits added to your account.`,title:`Here's {amount} on us`,unavailableToast:`This offer is no longer available.`},checkoutPage:{awaitingReturnMessage:`Checkout opened in your browser. Finish there to complete your upgrade.`,checkoutFailedMessage:`We couldn't start your checkout. Please try again.`,continueSetup:`Continue setup`,preparingCheckout:`Preparing checkout…`,preparingCheckoutAriaLabel:`Preparing checkout`,reopenCheckout:`Reopen checkout`,tryAgain:`Try again`,viewPlans:`View plans`},communityPage:{communityHubDescription:`Showcases, guides, and projects shared by the community.`,communityHubTitle:`Community Hub`,discordBenefitAnswers:`Get answers faster from the community`,discordBenefitFeedback:`Share feedback and request features`,discordBenefitTeam:`Talk directly with the team`,discordLabel:`Discord`,discordSubtitle:`Talk to the team, share feedback, request features, and get answers faster.`,discordTitle:`Join our community`,followOnXDescription:`Product updates, releases, and behind-the-scenes.`,followOnXTitle:`Follow on X`,heroDescription:`Vellum is built in the open with a growing community of developers, designers, and tinkerers. Here's how to get involved.`,heroTag:`Community`,heroTitle:`Build with us, in the open.`,joinDiscord:`Join Discord`,moreFromVellum:`More from Vellum`,openSourceBenefitContribute:`Contribute fixes and new features`,openSourceBenefitIssues:`Open issues and report bugs`,openSourceBenefitStar:`Star the repo to follow updates`,openSourceLabel:`Open Source`,openSourceSubtitle:`Read the source, star the repo, and contribute fixes and features on GitHub.`,openSourceTitle:`Vellum is open source`,starOnGitHub:`Star on GitHub`,viewSource:`View source`,youtubeChannelDescription:`Walkthroughs, tutorials, and product deep-dives.`,youtubeChannelTitle:`YouTube channel`},completeState:{assistantFallbackName:`your assistant`,returnTo:`Return to {assistantName}`,title:`You're all set!`},credentialsPage:{deleteConfirmLabel:`Delete`,deleteConfirmMessage:`Delete {name}? Tools and integrations using it will lose access.`,deleteConfirmTitle:`Delete credential`,deleteErrorToast:`Failed to delete credential`,deleteSuccessToast:`Deleted {name}.`,inUseConfirmLabel:`Delete anyway`,inUseMessage:`{count, plural, one {{name} is the credential that the connection {connections} uses to send requests. Deleting it stops that connection from answering until you add a new credential.} other {{name} is the credential that the connections {connections} use to send requests. Deleting it stops those connections from answering until you add a new credential.}}`,inUseTitle:`Credential is in use`},customPlanModal:{cancel:`Cancel`,comparedToPrevious:`{delta} compared to previous ({previous})`,continue:`Continue`,creditBundleAriaLabel:`Credit bundle`,creditBundlePlaceholder:`Select a credit bundle`,creditsDocsAriaLabel:`Learn more about credit bundles`,creditsLabel:`Bundle some credits:`,learnMore:`Learn more`,machineSizeAriaLabel:`Machine size`,machineSizeDocsAriaLabel:`Learn more about machine sizes`,machineSizeLabel:`Select a machine size:`,machineSizePlaceholder:`Select a machine size`,recap:`Recap`,storageAriaLabel:`Storage`,storageDocsAriaLabel:`Learn more about storage`,storageLabel:`Select storage:`,storagePlaceholder:`Select storage`,subtitle:`Just better.`,title:`Create a custom plan`,totalBilledMonthly:`Total · Billed monthly`,yourSelection:`Your selection:`},customPlanRow:{configure:`Configure`,currentPlanTag:`Your Current Plan`,genericDescriptor:`Select custom CPU power, Ram and Storage. Or just throw in some tokens.`,prompt:`Need something more tailored to your needs?`,title:`Custom Plan`},dailyCreditLimitCard:{requiredNote:`A daily credit limit is required while auto-reload is enabled.`,toggleLabel:`Daily Credit Limit`},developerPage:{sectionsAriaLabel:`Developer sections`,tabFeatureFlags:`Feature Flags`,tabLifecycle:`Assistant Lifecycle`,tabMemory:`Memory`,tabSentry:`Sentry Testing`},domainStep:{continue:`Continue`,domainLockedMessage:`This domain has been set and cannot be changed.`,domainSetRedirecting:`Domain set - redirecting…`,handleImmutableNotice:`You won't be able to change the handle once set.`,handleLabel:`Handle (public)`,machineBusyNotice:`Your assistant is restarting - you can set the domain in a moment.`,next:`Next`,prefixLabel:`Prefix`,registerSubdomainFailed:`Couldn't register that subdomain. Try a different one.`,skip:`Skip`,subtitle:`Set up an email for your assistant.`,title:`Assistant Email`},emailManagedContent:{addressLabel:`Address`,checkingSubscription:`Checking subscription…`,confirm:`Confirm`,create:`Create`,createEmailFailedFallback:`Failed to create email address.`,creating:`Creating…`,domainLabel:`Domain`,domainRegisteredToast:`Domain {domain} registered.`,domainReleaseFailedToast:`Failed to release domain.`,domainReleasedToast:`Domain released.`,emailAddressLabel:`Email address`,emailCreatedToast:`Email address created.`,emailRemoveFailedToast:`Failed to remove email address.`,emailRemovedToast:`Email address removed.`,emailUsernameAriaLabel:`Email username`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`Enter a subdomain.`,enterUsernameError:`Enter an email username.`,register:`Register`,registerDomainFailedFallback:`Failed to register domain.`,registering:`Registering…`,releaseConfirm:`Release`,releaseDomainAriaLabel:`Release domain`,releaseDomainConfirmMessage:`Are you sure you want to release <code>{domain}</code>? The subdomain will become available for others to claim.`,releaseDomainTitle:`Release Domain`,removeAddressFirstToast:`Remove the email address first.`,removeConfirm:`Remove`,removeEmailAriaLabel:`Remove email address`,removeEmailConfirmMessage:`Are you sure you want to remove <code>{address}</code>? Your assistant will no longer be able to send or receive email at this address.`,removeEmailTitle:`Remove Email Address`,retry:`Retry`,setSubdomainConfirmMessage:`<code>{subdomain}</code> will also become your assistant's public handle. You won't be able to change it once set.`,setSubdomainTitle:`Set Subdomain`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`subdomain`,subdomainHint:`Each assistant gets its own subdomain. Lowercase letters, numbers, and hyphens only.`,subdomainLabel:`Subdomain`,subscriptionWarningBody:`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.`,subscriptionWarningTitle:`Couldn't verify subscription status`,upgradeButton:`Upgrade`,upgradeNoticeBody:`Upgrade to a plan that includes an email address for your assistant. No provider setup required.`,upgradeNoticeTitle:`Give your assistant its own email address`,usageSummary:`{sent} / {limit} sent today · {received} received`},emailServiceCard:{apiKeyConfigured:`{providerName} API key configured. To reconfigure, run the <code>{setupSkill}</code> skill.`,connecting:`Connecting to the Vellum platform…`,openProvider:`Open {providerName}`,platformLoginNotice:`Log in to the Vellum platform to manage email settings.`,providerLabel:`Provider`,saveSuccessToast:`Email settings saved.`,setupInstructions:`Configure {providerName} via the assistant CLI: ask the assistant to run the <code>{setupSkill}</code> skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`,subtitle:`Configure how your assistant sends and receives email`,title:`Email`},errorStates:{fetchErrorTitle:`Couldn't reach billing`,goToBilling:`Go to billing`},freeDowngradeConfirmModal:{bodyCancelOnly:`You'll be taken to Stripe to cancel your subscription.`,bodyWithFeatures:`Downgrading removes the following Pro features. You'll be taken to Stripe to cancel your subscription.`,cancel:`Cancel`,confirm:`Downgrade to Base`,title:`Downgrade to Base?`},generalPage:{chooseAssistant:`Choose Assistant`,computeResourcesLoginNotice:`Log in to the Vellum platform to manage compute resources.`,computeResourcesSubtitle:`Monitor resource usage and manage your assistant's compute profile.`,computeResourcesTitle:`Compute & Resources`,current:`Current`,customize:`Customize`,dangerZoneTitle:`Danger Zone`,preferencesSubtitle:`Customize how Vellum looks and behaves on this device.`,preferencesTitle:`Preferences`,retireAssistantDescription:`Permanently retire this assistant and delete all associated data.`,retireAssistantLoginNotice:`Log in to the Vellum platform to retire this assistant.`,retireAssistantTitle:`Retire Assistant`,sleepPolicyLoginNotice:`Log in to the Vellum platform to manage sleep policy.`,sleepPolicySubtitle:`Control how long this assistant stays awake when idle.`,sleepPolicyTitle:`Sleep Policy`,switchAssistantSubtitle:`Choose which assistant this device is connected to.`,switchAssistantTitle:`Switch Assistant`,twoFactorDescription:`Require a code from an authenticator app when you sign in.`,twoFactorLoginNotice:`Log in to the Vellum platform to manage two-factor authentication.`,twoFactorTitle:`Two-Factor Authentication`,updateWindow:`Update Window`,updatesLoginNotice:`Log in to the Vellum platform to manage software updates.`,versionSubtitle:`Manage your assistant's software version and updates.`,versionTitle:`Version`},imageGenerationCard:{activeModelLabel:`Active Model`,apiKeyLabel:`API Key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,geminiApiKeyPlaceholder:`Enter your Gemini API key`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,modelAriaLabel:`Image generation model`,modelUpdateFailedToast:`Failed to update image generation model. Please try again.`,openaiApiKeyPlaceholder:`Enter your OpenAI API key`,providerAriaLabel:`Image generation provider`,providerLabel:`Provider`,savedToast:`Image generation settings saved.`,subtitle:`Configure which model your assistant uses to generate images`,title:`Image Generation`,vellumNote:`Image generation runs through your Vellum account.`},integrationsPage:{accountConnectedToast:`{providerLabel} account connected successfully.`,accountConnectedToastGeneric:`Account connected successfully.`,connectFailedToast:`Failed to connect {providerLabel}.`,connectFailedToastGeneric:`Failed to connect. Please try again.`,emptyAllEnabledTitle:`All Integrations Are Enabled`,emptyDefaultSubtitle:`Check your connection and try again.`,emptyDefaultTitle:`No Integrations Available`,emptyEnabledSubtitle:`Connect an integration to get started.`,emptyEnabledTitle:`No Enabled Integrations`,emptyNotEnabledSubtitle:`All available integrations have been connected.`,emptySearchSubtitle:`No integrations matched "{query}"`,emptySearchTitle:`No integrations matched`,filterAll:`All`,filterAriaLabel:`Filter integrations`,filterEnabled:`Enabled`,filterNotEnabled:`Not Enabled`,loadFailed:`Failed to load integrations. Please try again.`,loading:`Loading...`,noAssistant:`No assistant found. Hatch an assistant to connect integrations.`,oauthErrorDenied:`Authorization was denied. Please try again.`,oauthErrorExchangeFailed:`Failed to complete authorization. Please try again.`,oauthErrorIdentityFailed:`Failed to verify account identity. Please try again.`,oauthErrorStateExpired:`Authorization expired. Please try again.`,oauthErrorStateInvalid:`Authorization state was invalid. Please try again.`,searchAriaLabel:`Search integrations`,searchPlaceholder:`Search Integrations`,tabMcp:`MCP`,tabOAuth:`OAuth`,tipBanner:`<tip>Tip:</tip> You can enable integrations by mentioning them in chat.`},invoicesTable:{hideButton:`Hide Invoices`,showButton:`Show Invoices`,title:`Invoices`},languageModelCard:{defaultProviderUnavailable:`Your default provider is not available.`,manage:`Manage`,overridesTitle:`Overrides`,subtitle:`Profiles choose which model answers. Providers supply access to it`,title:`Language Model`},listeningLanguageCard:{change:`Change`,subtitle:`The language you speak to your assistant. Applies from your next spoken turn.`,title:`Listening language`},manageProfilesBlockedDeleteModal:{actionOverridesTitle:`Action overrides`,cancel:`Cancel`,clauseActionOverrides:`is used by {count, plural, one {# action override} other {# action overrides}}`,clauseDefaultProfile:`is your default profile`,clauseRunsBoth:`runs {schedules, plural, one {# schedule} other {# schedules}} and {reminders, plural, one {# reminder} other {# reminders}}`,clauseRunsReminders:`runs {count, plural, one {# reminder} other {# reminders}}`,clauseRunsSchedules:`runs {count, plural, one {# schedule} other {# schedules}}`,disabledTargetTooltip:`Enable this profile to move schedules onto it.`,moreSchedules:`and {count} more`,reassignAndDelete:`Reassign and Delete`,replacementLabel:`Replacement profile`,replacementPlaceholder:`Select a replacement…`,saving:`Saving…`,scheduleLookupFailed:`We could not check which schedules use this profile. Any schedule pinned to it moves to the replacement as well.`,schedulesTitle:`Schedules`,summaryNoReferences:`Choose a replacement profile for "{display}". Anything still pointing at it moves there before it is deleted.`,summaryOneClause:`"{display}" {clause1}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,summaryThreeClauses:`"{display}" {clause1}, {clause2}, and {clause3}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,summaryTwoClauses:`"{display}" {clause1} and {clause2}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,title:`Choose a Replacement Profile`},mcpAddServerModal:{addServer:`Add Server`,adding:`Adding...`,apiKeyHeaderPlaceholder:`X-API-Key`,apiKeyLabel:`API key`,apiKeyPlaceholder:`sk_...`,argsLabel:`Arguments (space-separated)`,argsPlaceholder:`--port 3000`,authApiKey:`API Key`,authBearer:`Bearer Token`,authNone:`None`,authOAuth:`OAuth`,authenticationLabel:`Authentication`,bearerPlaceholder:`tok_...`,bearerTokenLabel:`Bearer token`,cancel:`Cancel`,commandLabel:`Command`,commandPlaceholder:`npx -y @modelcontextprotocol/server-example`,description:`Connect to a Model Context Protocol server to extend available tools.`,headerNameLabel:`Header name`,namePlaceholder:`my-server`,oauthHint:`OAuth credentials will be configured through a browser-based authorization flow after the server is added.`,serverNameLabel:`Server name`,serverUrlLabel:`Server URL`,title:`Add MCP Server`,transportLabel:`Transport`,transportSse:`SSE`,transportStdio:`Stdio (command)`,transportStreamableHttp:`Streamable HTTP`,urlPlaceholder:`https://example.com/mcp`},mcpPage:{addServerButton:`Add Server`,emptyAddSubtitle:`Add an MCP server to extend your assistant with external tools.`,emptyChatSubtitle:`Chat with your assistant to set up an MCP server.`,emptyTitle:`No MCP Servers`,loadError:`Failed to load MCP servers. Check that an assistant is running.`,loading:`Loading MCP servers...`,reloadAriaLabel:`Reload MCP servers`,reloadTooltip:`Reload all servers`,removeDialogConfirm:`Remove`,removeDialogMessage:`Are you sure you want to remove "{serverId}"? This will disconnect all tools provided by this server.`,removeDialogTitle:`Remove MCP Server`,setupPrompt:`Help me set up an MCP server to extend you with external tools.`,subtitle:`Manage Model Context Protocol server connections and their registered tools.`,title:`MCP Servers`,toastAddFailed:`Failed to add {name}`,toastAdded:`Added {name}`,toastAlreadyAuthenticated:`{serverId} is already authenticated`,toastAuthFailed:`Authentication failed for {serverId}`,toastAuthPollingFailed:`Authentication polling failed for {serverId}`,toastAuthStartFailed:`Failed to start authentication for {serverId}`,toastAuthTimedOut:`Authentication timed out for {serverId}`,toastAuthenticatedSuccess:`{serverId} authenticated successfully`,toastDisableFailed:`Failed to disable {serverId}`,toastEnableFailed:`Failed to enable {serverId}`,toastOAuthRevokeFailed:`Failed to revoke OAuth for {serverId}`,toastOAuthRevoked:`OAuth credentials revoked for {serverId}`,toastReloadFailed:`Failed to reload MCP servers`,toastReloadSuccess:`MCP servers reloaded`,toastRemoveFailed:`Failed to remove {serverId}`,toastRemoved:`Removed {serverId}`,toastUpdateFailed:`Failed to update {serverId}`,toastUpdated:`Updated {serverId}`,totalTokens:`~{count} total tokens`,totalTools:`{count, plural, one {# total tool} other {# total tools}}`},mcpServerCard:{authenticate:`Authenticate`,authenticating:`Authenticating...`,configure:`Configure`,configureTooltip:`Configure`,estimatedTokens:`~{count} tokens`,oauthBadge:`OAuth`,reAuth:`Re-auth`,reAuthTooltip:`Re-authenticate OAuth`,registeredTools:`{count, plural, one {# registered tool} other {# registered tools}}`,removeServerAriaLabel:`Remove {serverId}`,removeServerTooltip:`Remove server`,revoke:`Revoke`,revokeOAuthTooltip:`Revoke OAuth credentials`,revoking:`Revoking...`,statusConnected:`Connected`,statusDisabled:`Disabled`,statusError:`Error`,statusNeedsAuth:`Needs Auth`,toggleDisableAriaLabel:`Disable {serverId}`,toggleEnableAriaLabel:`Enable {serverId}`,toolCount:`{count, plural, one {# tool} other {# tools}}`,toolTokensAbbrev:`~{count} tok`},mcpServerDetailModal:{apiKey:`API key`,apiKeyPlaceholder:`sk_...`,apiKeyPlaceholderKeep:`•••••••• (leave blank to keep current)`,authApiKey:`API Key`,authBearerToken:`Bearer Token`,authNone:`None`,authentication:`Authentication`,bearerToken:`Bearer token`,bearerTokenPlaceholder:`tok_...`,bearerTokenPlaceholderKeep:`•••••••• (leave blank to keep current)`,cancel:`Cancel`,defaultRiskLevel:`Default risk level`,description:`{transport} transport · {status}`,emptyDescription:`-`,headerName:`Header name`,headerNamePlaceholder:`X-API-Key`,oauthBadge:`OAuth`,oauthManagedHint:`managed via OAuth flow`,registeredToolsHeading:`Registered tools ({count})`,riskHigh:`High`,riskLow:`Low`,riskMedium:`Medium`,save:`Save`,saving:`Saving...`,tableDescription:`Description`,tableTokens:`Tokens`,tableTool:`Tool`,tokenOverhead:`Total estimated token overhead: ~{count} tokens`,toolEstimatedTokens:`~{count}`},notificationsPage:{description:`Manage how Vellum notifies you on this Android device.`,title:`Notifications`},overridesCallSiteList:{emptySearch:`No actions match your search.`},overridesDetailPanel:{advisorSection:`Advisor`,bulkChange:`Bulk change`,bulkChangeNoCandidatesTitle:`No actions currently use a profile`,bulkChangeUnsavedTitle:`Save or reset your changes first`,customProfileOption:`Custom`,description:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`,loadErrorHint:`Make sure your assistant is running`,loadErrorTitle:`Couldn't load actions`,otherDomain:`Other`,overridesResetToast:`Overrides reset.`,overridesSavedToast:`Overrides saved.`,resetConfirmMessage:`Every action override will be reset and will follow its default. This cannot be undone.`,resetFailedToast:`Failed to reset overrides. Please try again.`,resetToDefaults:`Reset to Defaults`,retry:`Retry`,save:`Save`,saveFailedToast:`Failed to save overrides. Please try again.`,searchPlaceholder:`Search actions…`,title:`Action Overrides`},packageSwitchConfirmModal:{cancel:`Cancel`},pairDeviceCard:{copyError:`Could not copy the pairing address.`,generateButton:`Generate pairing QR`,generateButtonMinting:`Generating…`,generateButtonRegenerate:`Generate new code`,noTunnelBody:"On this computer, run `vellum tunnel --provider tailscale` (or another provider). Its address appears here.",noTunnelTitle:`No tunnel detected`,publicUrlHelper:`The https address your devices can reach this assistant at (your Tailscale URL, or another tunnel's).`,publicUrlHelperTunnel:"This address comes from `vellum tunnel` on this computer. Edit it if your devices reach this assistant at a different URL.",publicUrlLabel:`Public URL`,publicUrlPlaceholder:`https://your-assistant.ts.net`,subtitle:`Scan with another device's camera, or open the link on it, to use {name} there.`,subtitleFallbackName:`this assistant`,title:`Pair a device`},pairDeviceClient:{connectivityHint:"If a scan can't connect, make sure a tunnel is running on the host (`vellum tunnel`) and the public URL points at it, then generate a new code.",httpError:`Pairing failed (HTTP {status}).`,networkError:`Couldn't reach the assistant. Make sure it's running and try again.`,unexpectedResponse:`The assistant returned an unexpected response.`},pairDeviceReady:{copiedButton:`Copied`,copyButton:`Copy`,expiredBody:`Generate a new code to pair a device.`,expiredTitle:`This pairing code expired.`,expiresIn:`Expires in {time} · single-use.`,qrTitle:`Device pairing QR code`,singleUse:`Single-use.`},pairDeviceUrl:{loopback:`This is a loopback address other devices can't reach. Enter the assistant's public https URL.`,nonHttps:`The URL must use https so your devices can connect securely.`,serviceFallbackName:`the tunnel provider`,serviceWebsite:"This is {service}'s website, not your assistant's address. Run `vellum tunnel` on the host to get one.",unparseable:`Enter a valid URL, e.g. https://your-assistant.ts.net.`},pairedDevicesSection:{confirmMessage:`The {platform} device {hash} loses access to this assistant. Its access tokens are invalidated immediately; that device must be paired again from this machine to reconnect.`,confirmTitle:`Revoke this device?`,dateUnknown:`unknown`,datesLine:`Paired {paired} · Last used {lastUsed}`,hostRevokeDisabledTitle:`This is this machine's own credential; revoking it would lock the host out of the assistant.`,platformUnknown:`Unknown`,revokeButton:`Revoke`,thisMachine:`This machine`,title:`Paired devices ({count})`},paymentMethodsCard:{addButton:`Add Payment Method`,empty:`No payment method on file. Add one to use auto-reload.`,loadError:`Failed to load payment methods.`,loading:`Loading…`,removeConfirmCancel:`Keep card`,removeConfirmConfirm:`Remove`,removeConfirmMessage:`Removing your card will turn off auto-reload.`,removeConfirmPending:`Removing…`,removeConfirmTitle:`Remove payment method?`,removeError:`Failed to remove the payment method. Please try again.`,subtitle:`Payment methods linked to your account.`,title:`Payment Methods`},pendingPairingRequests:{approveButton:`Approve`,denyButton:`Deny`,instruction:`A device is asking to use this assistant. Approve a request only after confirming its code matches the one shown on the requesting device.`,requestedMeta:`Requested {when} from {ip}`,requestedMetaHost:`Requested {when} from this computer`,title:`Pairing requests`},planCard:{usageBalanceAddCredits:`Add`,usageBalanceExhausted:`Add credits to continue using your assistant`,usageBalancePctUsed:`{pct}% used`,usageBalanceResets:`Resets {date}`,usageBalanceTitle:`Usage Balance`,usageChip:`{name} usage, reset monthly`},planColumnCard:{currentPlan:`Current Plan`,includes:`Includes:`,recommended:`Recommended`},plansPage:{alreadyOnPlanToast:`You're already on this plan.`,back:`Back`,billedMonthlyCaption:`Billed monthly`,cancelAnytimeFooter:`You can cancel or change your plan anytime you want. To learn more <docsLink>Read our Docs.</docsLink>`,checkoutFailedToast:`Failed to start the upgrade checkout. Please try again.`,downgradeTo:`Downgrade to {name}`,featureComputer:`{machine} Computer`,featureCreditsIncluded:`{amount} in credits included`,featureStorage:`{gib} GB Storage`,foreverCaption:`Forever`,freeFeaturePayAsYouGo:`Pay-as-you-go credits`,freeFeatureSmallComputer:`Small Computer`,freeFeatureStorage:`{gib} GB Storage`,freePriceLabel:`Free`,heading:`Give your assistant more power`,loadingPlansAriaLabel:`Loading plans`,planUpdatedToast:`Plan updated.`,startFreeCta:`Start Free`,subheading:`Choose the level that matches how much you want it to take on.`},privacyPage:{llmLogRetentionDescription:`How long to keep LLM request and response logs on this device. These logs record the prompts and completions sent to model providers and are used for debugging. Shorter retention improves privacy; longer retention helps troubleshoot issues.`,llmLogRetentionLabel:`LLM Request Log Retention`,retentionDontRetain:`Don't retain`,retentionKeepForever:`Keep forever`,retentionNinetyDays:`90 days`,retentionOneDay:`1 day`,retentionOneHour:`1 hour`,retentionSevenDays:`7 days`,retentionThirtyDays:`30 days`,shareAnalyticsHelper:`Send aggregated product usage data`,shareAnalyticsLabel:`Share Analytics`,shareDiagnosticsHelper:`Send crash reports, conversation traces, and session replay data`,shareDiagnosticsLabel:`Share Diagnostics`,subtitleWithPolicy:`View details about what data we collect and how it's used in our <policyLink>privacy policy</policyLink>.`,title:`Privacy`},profileAdvancedParams:{contextWindowLabel:`Context Window`,defaultValueLabel:`Default · {value}`,effortLabel:`Effort`,effortSegmentDefault:`default`,enableExtendedThinkingLabel:`Enable extended thinking`,maxOutputTokensLabel:`Max Output Tokens`,reset:`Reset`,snapshotsHint:`Fields left at their default are saved with the values shown and won't change if the assistant defaults change later.`,speedLabel:`Speed`,streamThinkingTokensLabel:`Stream thinking tokens`,temperatureLabel:`Temperature`,thinkingLevelInheritHint:`(default = inherit)`,thinkingLevelLabel:`Thinking level`,tokensAriaLabel:`{label} (tokens)`,topPLabel:`Top P`,verbosityLabel:`Verbosity`},profileDetailPanel:{createProfile:`Create Profile`,defaultTitle:`Profile`,delete:`Delete`,deleting:`Deleting…`,managedTag:`Managed by Vellum`,newProfileTitle:`New Profile`,save:`Save`,saveAsNew:`Save As New`,saveChanges:`Save Changes`,saving:`Saving…`},profileEditor:{subscriptionSteeringHint:`Your ChatGPT subscription is available as the ChatGPT provider.`},profileEditorFields:{activeLabel:`Active`,addApiKey:`Add API key`,advanced:`Advanced`,createNewProvider:`+ Create new provider`,descriptionLabel:`Description <optional>(optional)</optional>`,descriptionPlaceholder:`Describe when to use this profile`,displayNameLabel:`Display Name`,displayNamePlaceholder:`e.g. Fast & Cheap`,keyLabel:`Key`,keyPlaceholder:`e.g. fast-cheap`,nameLabel:`Name`,newProviderNote:`New provider connection will show up in the Providers section.`,providerLabel:`Provider`,selectProviderPlaceholder:`Select a provider…`,setUp:`Set up`},profileEditorModal:{cancel:`Cancel`,close:`Close`,editProfileTitle:`Edit Profile`,newProfileTitle:`New Profile`,platformTag:`Platform`,profileFallbackTitle:`Profile`,save:`Save`,saveAsNew:`Save As New`,saving:`Saving…`},profileEditorProviderSection:{chooseFromList:`Choose from list`,connectionNotFound:`This profile referenced a credential that no longer exists. Saving resets it to use the provider's available key.`,customModelAriaLabel:`Custom model ID`,customModelPlaceholder:`provider/model-id`,enterCustomModelIdHint:`Enter the exact model identifier your provider expects. It's sent to the connection as-is.`,enterCustomModelIdOption:`Enter a custom model ID…`,modelAriaLabel:`Model`,modelEmptyConfigureConnectionHint:`No models available. Configure models on the provider connection first.`,modelEmptyConfigureConnectionPlaceholder:`Configure models on connection`,modelEmptyNoProviderPlaceholder:`Select a provider first`,modelEmptyUnknownHint:`No models are available for this provider in this app version. Update the app, or enter a custom model ID.`,modelEmptyUnknownPlaceholder:`No models available`,modelLabel:`Model`,noProviderConnectionsHint:`No provider connections. Open Providers to add one.`,providerLabel:`Provider`,providerNotFoundSuffix:`(not found)`,selectModelError:`Select a model.`,selectModelPlaceholder:`Select a model`,selectProviderPlaceholder:`Select a provider…`},profileRow:{actionsAriaLabel:`Actions for {displayName}`,defaultTag:`Default`,delete:`Delete`,disable:`Disable`,disabledTag:`Disabled`,edit:`Edit`,enable:`Enable`,makeDefault:`Make Default`,managedByVellum:`Managed by Vellum`,openProfileAriaLabel:`Open profile {displayName}`,providerUnavailableDefault:`This profile's provider is not available.`,providerUnavailableFixable:`{message} Click to fix.`,view:`View`},profilesSection:{createProfile:`Create Profile`,emptyState:`No profiles yet. Create one to get started.`,loading:`Loading profiles…`,title:`Profiles`},providerCreateForm:{add:`Add`,addNamed:`Add {name}`,addProviderDescription:`Choose a provider and paste its API key.`,addProviderTitle:`Add Provider`,advanced:`Advanced`,apiKeyPlaceholder:`Enter your API key`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.x.ai/v1`,baseUrlPlaceholderOllama:`http://127.0.0.1:11434/v1`,baseUrlHintOllama:`Leave blank to use the local Ollama default, or enter a remote or non-default host.`,cancel:`Cancel`,customProviderHint:`Custom providers connect to any endpoint that serves the OpenAI-compatible API - xAI, Groq, LM Studio, vLLM, and similar.`,customProviderOption:`Custom provider`,displayNameLabel:`Display Name <optional>(optional)</optional>`,displayNamePlaceholder:`e.g. My Anthropic Key`,emptyServerResponse:`Server returned an empty response. Please try again.`,enterApiKeyOrCredential:`Enter an API key or select an existing credential.`,failedSaveApiKey:`Failed to save API key. Please try again.`,failedSaveProvider:`Failed to save provider. Please try again.`,localEndpointHint:`Leave the key empty for local endpoints - they connect keyless.`,modelsHint:`Comma-separated model identifiers exposed by your endpoint.`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,nameLabel:`Name`,namePlaceholder:`xAI`,providerAriaLabel:`Provider`,providerConnectedToast:`Provider connected`,providerLabel:`Provider`,saving:`Saving…`,useChatgptSignIn:`Use the "Sign in with ChatGPT" button to connect your subscription.`},providerDetailPanel:{addProviderTitle:`Add Provider`},providerEditorApiKeySection:{advanced:`Advanced`,apiKeyLabel:`API Key`,cancel:`Cancel`,credentialReferenceAriaLabel:`Credential reference`,credentialReferenceLabel:`Credential Reference`,credentialReferenceSuffix:`· Credential reference`,loading:`Loading…`,newCredential:`+ New Credential`,newCredentialNameLabel:`New Credential Name`,newCredentialPlaceholder:`e.g. team-key`,use:`Use`},providerEditorContent:{apiKeyPlaceholder:`Enter your API key`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.example.com/v1`,baseUrlPlaceholderOllama:`http://127.0.0.1:11434/v1`,baseUrlHintOllama:`Leave blank to use the local Ollama default, or enter a remote or non-default host.`,cancel:`Cancel`,displayNameLabel:`Display Name <optional>(optional)</optional>`,displayNamePlaceholder:`e.g. My Anthropic Key`,editProviderSettingsFallback:`Edit provider settings.`,editProviderTitle:`Edit Provider`,editingConnection:`Editing {name}.`,emptyServerResponse:`Server returned an empty response. Please try again.`,failedSaveApiKey:`Failed to save API key. Please try again.`,failedSaveProvider:`Failed to save provider. Please try again.`,modelsHint:`Comma-separated model identifiers exposed by your endpoint.`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,nothingToEdit:`Nothing to edit. Close and try again.`,saveChanges:`Save Changes`,saving:`Saving…`},providerRow:{actionsAriaLabel:`Actions for {displayName}`,customTag:`Custom`,customTagTitle:`A provider you created, served by an OpenAI-compatible endpoint.`,defaultTag:`Default`,defaultTagTitle:`Built-in profiles (Balanced, Quality, Cost, Speed) use this provider.`,delete:`Delete`,edit:`Edit`,localTag:`Local`,localTagTitle:`Runs models on this machine.`,managedTag:`Managed`,managedTagTitle:`Runs on Vellum's managed credentials.`,openProviderAriaLabel:`Open provider {displayName}`,setAsDefault:`Set as default`},providersSection:{addProvider:`Add Provider`,empty:`No providers yet. Add one to get started.`,loadError:`Failed to load providers. Please try again.`,title:`Providers`},provisioningState:{allDoneStatus:`All done!`,confirmingCaption:`This might take a couple seconds.`,continueInBackground:`Continue in the background`,creditsChip:`{count} credits`,dimensionsComplete:`{dimensions} complete`,goToBilling:`Go to billing`,machineLabel:`Machine`,packageChip:`{name} package`,planReadyStatus:`Your plan is ready`,retryInBackground:`Retry in the background`,srOnlyTo:`to`,stalledCaption:`This may take a couple of minutes.`,statusComplete:`Complete`,statusPending:`Pending`,storageLabel:`Storage`,takingLongerStatus:`This is taking longer than expected`,tryAgain:`Try again`,waitingCaptionLong:`Still working. This can take a minute or two.`,waitingCaptionShort:`This might take a couple seconds.`},sharedUi:{checkingDomain:`Checking domain…`,domainVerified:`Domain verified`,failedTitle:`Domain verification failed. DNS records may not have propagated correctly. You could try releasing and re-registering the domain.`,managedLabel:`Managed`,managedServicesBanner:`Managed services are metered and deducted from your Vellum account balance. <link>View pricing</link>`,modeToggleAriaLabel:`Service mode`,unknownStatus:`Unknown status`,unknownStatusTitle:`Unable to retrieve domain verification status.`,verificationFailed:`Verification failed`,verifiedTitle:`DNS records have been verified. Your domain is ready to send and receive email.`,verifyingDomain:`Verifying domain…`,verifyingTitle:`DNS records have been provisioned. Waiting for the email provider to verify them - this usually takes a few minutes.`,yourOwnLabel:`Your Own`},soundsSections:{addSound:`Add sound`,allSoundsAdded:`All sounds added`,defaultBlip:`Default Blip`,enableEvent:`Enable {eventName}`,enableSoundEffects:`Enable sound effects`,enableSoundEffectsDescription:`Master switch for every event-driven sound.`,noSoundFiles:`No sound files yet. Drop audio files into data/sounds/ in your workspace.`,preview:`Preview`,previewDefaultBlip:`Preview default blip`,previewSoundAriaLabel:`Preview {filename}`,removeSoundAriaLabel:`Remove {filename}`,soundEventCharacterPoke:`Character Poke`,soundEventMessageSent:`Message Sent`,soundEventNeedsInput:`Needs Input`,soundEventNewConversation:`New Conversation`,soundEventNotification:`Notification`,soundEventRandom:`Random`,soundEventTaskComplete:`Task Complete`,soundEventTaskFailed:`Task Failed`,soundEventsDescription:`Add one or more sounds per event. When multiple are configured, one plays at random.`,soundEventsTitle:`Sound Events`,volume:`Volume`,volumeAriaLabel:`Sound effect volume`},speechToTextCard:{subtitle:`Configure how your assistant transcribes speech`,title:`Speech-to-Text`},textToSpeechCard:{subtitle:`Configure how your assistant speaks`,title:`Text-to-Speech`},upgradeCancelPage:{billingUnavailable:`Billing isn't available for the current assistant state.`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,redirectingBody:`Returning you to billing settings…`,returnToBilling:`Return to billing`,title:`Upgrade canceled`},upgradeSuccessPage:{cantConfirmUpgrade:`We can't confirm your upgrade for the current assistant. Return to billing to retry.`,fetchErrorBody:`We hit a problem checking your subscription. Your upgrade may still be processing. Return to billing to refresh.`,fetchErrorTitle:`Couldn't reach billing`,finalizingBody:`Stripe is confirming your subscription. This usually takes a few seconds.`,finalizingTitle:`Finalizing your upgrade…`,goToBilling:`Go to billing`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,processingFallback:`We're processing your upgrade. Refresh in a moment to see your new plan.`,successBody:`Your Pro plan is active. You'll be redirected back to billing in a moment.`,welcomeTitle:`Welcome to Pro`},usageTab:{analyzeCostsButton:`Analyze costs with assistant`,breakdownTitle:`Breakdown`,cacheCreatedLabel:`Cache Created`,cacheReadLabel:`Cache Read`,costAssistantSubtitle:`Review recent spend and tune model profile choices.`,costAssistantTitle:`Cost assistant`,costLabel:`Cost`,dailyTrend:`Daily Trend`,dailyTrendBy:`Daily Trend by {group}`,directInputTokensLabel:`Direct Input Tokens`,failedToLoadUsage:`Failed to load usage.`,groupByActor:`Actor`,groupByConversation:`Conversation`,groupByModel:`Model`,groupByProfile:`Profile`,groupByProvider:`Provider`,groupBySchedule:`Schedule`,groupByTask:`Action`,groupColumnLabel:`Group`,hourlyTrend:`Hourly Trend`,hourlyTrendBy:`Hourly Trend by {group}`,inferenceUsageTitle:`Inference Usage`,llmCallsLabel:`LLM Calls`,noBreakdownDataSubtitle:`No usage recorded for this grouping`,noBreakdownDataTitle:`No breakdown data`,optimizeSettingsButton:`Optimize settings`,outputTokensLabel:`Output Tokens`,percentOfTotalLabel:`% of total`,range30d:`Last 30 days`,range7d:`Last 7 days`,range90d:`Last 90 days`,rangeAll:`All time`,rangeToday:`Today`,rangeYesterday:`Yesterday`,retry:`Retry`,title:`Usage`,tokensLabel:`Tokens`,totalsAriaLabel:`Totals`,turnsLabel:`Turns`,unknownSchedule:`Unknown schedule ({scheduleId})`},usageTrendChart:{noDailyData:`No daily data`,noHourlyData:`No hourly data`,noUsageInRange:`No usage recorded in this time range`,total:`Total`},useDaemonConfig:{assistantNotReadyToast:`Assistant not ready. Please try again.`,saveApiKeyFailedToast:`Failed to save {providerName} API key. Please try again.`},usePairDevice:{mintErrorFallback:`Something went wrong while generating the code.`},usePendingPairingRequests:{actionErrorFallback:`Something went wrong. Try again.`,denyAlreadyApproved:`This request was already approved somewhere else, so the deny didn't take effect and the device is now paired.`,pollErrorFallback:`Something went wrong while checking for pairing requests.`},useProfileSave:{createdToast:`Profile "{name}" created`},useProviderActions:{deleteFailedToast:`Failed to delete the provider. Please try again.`,deleteInUseToast:`This provider is in use by a profile or as the default provider. Update those settings before deleting it.`,setDefaultFailedToast:`Failed to set the default provider. Please try again.`},voicePage:{activationKeyLabel:`Shortcut:`,allowMicrophoneAccess:`Allow Microphone Access`,captionsSubtitle:`Show live text of what you and the assistant say during a voice conversation.`,captionsTitle:`Captions`,customKey:`Custom`,defaultBadge:`Default`,enableVoiceShortcut:`Enable voice mode shortcut`,fnKeyLabel:`Fn`,fnRefusedNote:`Fn needs Input Monitoring. Grant it in System Settings, or set a custom shortcut.`,focusedTabNote:`The shortcut only works while this tab is focused, and browsers may intercept some chords (e.g. Ctrl+T) before the page can see them. For a shortcut that works anywhere, use the Vellum desktop app.`,grantMicrophoneAccessHint:`Grant microphone access to list your available input devices.`,interruptSensitivityAriaLabel:`Interrupt sensitivity`,interruptSensitivityDescription:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,interruptSensitivityHigh:`High`,interruptSensitivityLabel:`Interrupt sensitivity`,interruptSensitivityLow:`Low`,interruptSensitivityMedium:`Medium`,microphoneAriaLabel:`Microphone`,microphoneFallbackLabel:`Microphone {index}`,microphoneSubtitle:`Which input device is used for dictation and voice conversations.`,microphoneTitle:`Microphone`,pauseBeforeReplyAriaLabel:`Pause before reply`,pauseBeforeReplyDescription:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,pauseBeforeReplyLabel:`Pause before reply`,pressShortcut:`Press a shortcut…`,recommendedBadge:`Recommended`,recordingPrompt:`Press a chord or keystroke…`,resetToDefaults:`Reset to defaults`,savedMicrophone:`Saved microphone`,savedMicrophoneNotConnected:`Saved microphone (not connected)`,sectionCaptionsHeading:`Captions`,sectionInputDescription:`How you talk to your assistant.`,sectionInputHeading:`Input`,sectionOutputDescription:`How your assistant sounds.`,sectionOutputHeading:`Output`,shortcutChordHint:`Hold a modifier (Cmd, Ctrl, Option, or Shift) and press a key.`,shortcutConflict:`Already used by {command}`,speechServicesBannerLink:`Set it up in Models & Services`,speechServicesBannerPrompt:`Want to use your own API key for STT or TTS, or set a custom voice?`,systemDefault:`System Default`,turnTakingSubtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations. Under push to talk, the key decides.`,turnTakingTitle:`Turn taking`,voiceShortcutSubtitle:`Press the shortcut to start or end a voice conversation, from anywhere in the app.`,voiceShortcutSubtitleDesktop:`Global shortcut for starting/ending a voice conversation.`,voiceShortcutTitle:`Voice Mode Shortcut`},voicePickerCard:{changeButton:`Change`,creditsNote:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`,title:`Voice`,titleWithName:`{name}'s Voice`},webFetchCard:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter your API key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,providerLabel:`Provider`,savedToast:`Web fetch settings saved.`,subtitle:`Configure how your assistant reads individual web pages`,title:`Web Fetch`},webSearchCard:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter your API key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,providerAriaLabel:`Web search provider`,providerLabel:`Provider`,savedToast:`Web search settings saved.`,subtitle:`Configure how your assistant should search the web`,title:`Web Search`,vellumNote:`Search runs through your Vellum account.`}},Z=[`common`,`chat`,`schedules`,`account`,`channels`,`settings`,`workspace`,`terminal`,`remote-web`,`credential-requests`,`logs`,`library`,`home`,`contacts`,`onboarding`,`intelligence`],bn=`common`,xn=[`en`,`es`];function Q(e){return typeof e==`string`&&xn.includes(e)}function Sn(e){for(let t of e){let e=t.trim().toLowerCase();if(e===``)continue;if(Q(e))return e;let n=e.split(`-`)[0];if(Q(n))return n}return`en`}var $={common:_n,chat:gn,schedules:vn,account:rn,channels:an,settings:yn,workspace:hn,terminal:mn,"remote-web":pn,"credential-requests":sn,logs:un,library:ln,home:cn,contacts:on,onboarding:fn,intelligence:dn},Cn={es:{common:()=>r(()=>import(`./common-p0vxUnEQ.js`),[]),chat:()=>r(()=>import(`./chat-QLQLsbFK.js`),[]),schedules:()=>r(()=>import(`./schedules-BXXSRQs5.js`),[]),account:()=>r(()=>import(`./account-BuiU7DuB.js`),[]),channels:()=>r(()=>import(`./channels-DFBLDFWh.js`),[]),settings:()=>r(()=>import(`./settings-CNNFT1Oh.js`),[]),workspace:()=>r(()=>import(`./workspace-Ch5zHBn1.js`),[]),terminal:()=>r(()=>import(`./terminal-Dily8RM4.js`),[]),"remote-web":()=>r(()=>import(`./remote-web-BX-aNmAz.js`),[]),"credential-requests":()=>r(()=>import(`./credential-requests-CpHxMIMS.js`),[]),logs:()=>r(()=>import(`./logs-BsCB67bq.js`),[]),library:()=>r(()=>import(`./library-Da5KVeDF.js`),[]),home:()=>r(()=>import(`./home-ySv5rBLy.js`),[]),contacts:()=>r(()=>import(`./contacts-BQcl-1XL.js`),[]),onboarding:()=>r(()=>import(`./onboarding-DwRWKhM_.js`),[]),intelligence:()=>r(()=>import(`./intelligence-C7DYXerF.js`),[])}};async function wn(e){if(e===`en`)return $;let t=Cn[e],n=await Promise.all(Z.map(async e=>[e,(await t[e]()).default]));return Object.fromEntries(n)}function Tn(e,t){return{lng:e,fallbackLng:`en`,ns:[...Z],defaultNS:bn,resources:t,interpolation:{escapeValue:!1},returnNull:!1}}function En(){if(typeof navigator>`u`)return[];let e=navigator.languages;return Array.isArray(e)&&e.length>0?[...e]:navigator.language?[navigator.language]:[]}function Dn(){let e=t(`locale`,``);return Q(e)?e:Sn(En())}function On(e){if(typeof document>`u`)return;document.documentElement.lang=e;let t;try{let n=new Intl.Locale(e);t=n.getTextInfo?.().direction??n.textInfo?.direction}catch{t=void 0}document.documentElement.dir=t===`rtl`?`rtl`:`ltr`}async function kn(e){let t=Z.filter(t=>!F.hasResourceBundle(e,t));if(t.length===0)return;let n=await wn(e);for(let r of t)F.addResourceBundle(e,r,n[r],!0,!0)}function An(e,t){n(e,{context:`i18n_catalog_load`,level:`warning`,tags:{locale:t}})}async function jn(){let e=Dn();if(F.isInitialized)try{return await Mn(e),e}catch(t){return An(t,e),Nn()}let t={en:$},n=`en`;if(e!==`en`)try{t[e]=await wn(e),n=e}catch(t){An(t,e)}return await F.use(new nn).use(Oe).init(Tn(n,t)),On(n),n}async function Mn(t){await kn(t),await F.changeLanguage(t),e(`locale`,t),On(t)}function Nn(){let e=F.resolvedLanguage??F.language;return Q(e)?e:`en`}export{Se as a,we as i,jn as n,k as o,De as r,ve as s,Nn as t};
10
+ Leave blank to use the bundled template. "Load default" seeds the textarea with the bundled body for editing.`,description:`Dry-run the v4 router with custom tier/batch overrides. Read-only - no rows are written to <code>memory_v2_injection_events</code> or <code>memory_v2_activation_logs</code>, and no activation state is mutated. Leave an override blank to inherit the live config value; enter <code>null</code> to explicitly disable a tier.`,diffLabel:`Diff`,diffValue:`{shared} shared · {unique} unique to this pane`,effectiveConfig:`Effective config`,emaScore:`EMA {score}`,empty:`(empty)`,emptySelectionHint:`The router returned an empty selection. Try a more specific query, or relax the override values.`,failedToRunSimulation:`Failed to run simulation`,firstTurnAssistantPlaceholder:`Leave blank for a first-turn scenario.`,inheritActive:`inherit active`,inheritActiveWithProfile:`inherit active ({profile})`,inheritPlaceholder:`inherit`,invalidOverrideInput:`Invalid override input`,justArrivedUserLabel:`Just-arrived [user]: message`,lastUserPlaceholder:`e.g. what should we ship next`,legendAOnly:`A only`,legendBOnly:`B only`,legendInBoth:`in both`,llmProfilesOverride:`llm.profiles override`,loadDefault:`Load default`,loading:`Loading…`,noPagesSelected:`No pages selected`,notAvailable:`Memory router playground is not available.`,nowBlockLabel:`'<now>' block`,nowDefaultPlaceholder:`Pre-filled with the live NOW.md. Edit to test alternate states.`,nowLoadingPlaceholder:`Loading current NOW.md…`,nullValue:`null`,overrideMustBePositiveInteger:`{fieldName} must be a positive integer or 'null' (got "{value}")`,overrideSuffix:` (override)`,pageCount:`{count, plural, one {# page} other {# pages}}`,pairLabel:`Pair {index} of {total}`,pairMostRecentSuffix:` · most recent`,paneTitle:`Pane {paneId}`,promptModeBundled:`bundled`,promptModeCustom:`custom`,rawApiExchange:`Raw API exchange`,recentPairsLabel:`Recent (assistant, user) pairs · oldest first`,reloadNowButton:`Reload live NOW.md`,removeButton:`Remove`,requestLabel:`Request (Pane {paneId})`,reset:`Reset`,responseLabel:`Response (Pane {paneId})`,routerFailure:`Router failure: {reason}`,runBoth:`Run both`,runPane:`Run {paneId}`,running:`Running…`,selectedLabel:`Selected`,selectedValue:`{count} (live max_page_ids: {maxPageIds})`,summary:`Summary`,summaryUserMessageLabel:`User message`,systemPrompt:`System prompt`,systemPromptConfigLabel:`system prompt`,tier1Label:`tier 1`,tier2Label:`tier 2`,tier3Label:`tier 3 · b{batch}`,title:`Memory Router Playground`,totalCandidatePagesLabel:`Total candidate pages`,userMessageLabel:`[user]: message`,userMessagePlaceholder:`User's message.`},memoryTab:{afterMergeLabel:`After merge`,breakdownCAssistantRerank:`c_assistant · rerank Δ_a`,breakdownCAssistantSim:`c_assistant · sim_a`,breakdownCNowSim:`c_now · sim_n`,breakdownCUserRerank:`c_user · rerank Δ_u`,breakdownCUserSim:`c_user · sim_u`,breakdownOwnActivation:`A_o (own)`,breakdownPriorActivation:`prior · d`,breakdownRerankScaledRaw:`+{scaled} (raw {raw})`,breakdownScaledRaw:`{scaled} (raw {raw})`,breakdownSource:`source`,breakdownSpreadDelta:`spread Δ`,breakdownStatus:`status`,candidateScores:`sem {semantic} · rec {recency}`,carriedPill:`Carried: {count}`,conceptActivationsSubtitle:"Sorted by final activation. Skill entries appear with the `skills/` slug prefix; expand a row for the activation breakdown.",conceptActivationsTitle:`Concept activations ({count})`,configCAssistant:`c_assistant`,configCNow:`c_now`,configCUser:`c_user`,configDDecay:`d (decay)`,configEpsilon:`epsilon`,configHops:`hops`,configKSharpening:`k (sharpening)`,configSubtitle:`Activation weights and selection thresholds.`,configTitle:`Config`,configTopK:`top_k`,copyAriaLabel:`Copy to clipboard`,copyAriaLabelCopied:`Copied`,copyButtonCopied:`Copied`,copyButtonCopy:`Copy`,copyErrorMessage:`Couldn't copy to clipboard.`,copyTitle:`Copy`,copyTitleCopied:`Copied!`,corePill:`Core: {count}`,degradationTitle:`Degradation`,fallbackSourcesLabel:`Fallback sources`,hybridSearchLabel:`Hybrid search`,inContextPill:`In context: {count}`,injectedMemoryContextTitle:`Injected memory context`,injectedPill:`Injected: {count}`,injectedTokensLabel:`Injected tokens`,latencyMs:`{ms} ms`,loading:`Loading…`,loggedMemorySelectionSubtitle:`Rendered from the v3 selection, not injected this turn.`,loggedMemorySelectionTitle:`Logged memory selection`,memoryDisabledDefaultReason:`Memory recall was disabled for this turn.`,memoryDisabledTitle:`Memory disabled`,missingValue:`-`,modelLabel:`Model`,no:`No`,noDataBody:`Memory recall information is not available for this message.`,noDataTitle:`No memory data`,noEntriesRanked:`No entries ranked.`,noPagesSelected:`No pages selected.`,notInjectedPill:`Not injected: {count}`,pageContentLabel:`page content`,pageNotFound:`Page not found on disk. Slug may reference a stale Qdrant entry.`,pillMemoryV2:`Memory V2`,pillMemoryV3:`Memory V3`,pillRecallV1:`Recall (v1)`,pinnedChip:`pinned`,pinnedPill:`Pinned: {count}`,providerLabel:`Provider`,queryContextSubtitle:`The text embedded as the search vector for semantic retrieval.`,queryContextTitle:`Query context`,reasonLabel:`Reason`,retrievalFunnelSubtitle:`How memories were filtered from semantic search to injection.`,retrievalFunnelTitle:`Retrieval funnel`,searchDetailsTitle:`Search details`,selectedLabel:`Selected`,selectedPagesSubtitle:`Pages v3 selected, tagged by the lane that surfaced them and the matched section (when a finder lane surfaced one).`,selectedPagesTitle:`Selected pages ({count})`,selectedPill:`Selected: {count}`,semanticHitsLabel:`Semantic hits`,semanticUnavailableLabel:`Semantic unavailable`,sparseDenseOnly:`Dense only`,sparseUsed:`Used`,sparseVectorsLabel:`Sparse vectors`,statusActive:`Active`,statusDegraded:`Degraded`,statusLabel:`Status`,statusSubtitle:`Provider, model, and latency for this recall.`,statusTitle:`Status`,tier1Label:`Tier 1`,tier2Label:`Tier 2`,topCandidatesSubtitle:`{count, plural, one {# candidate ranked by final score.} other {# candidates ranked by final score.}}`,topCandidatesTitle:`Top candidates`,totalLatencyLabel:`Total latency`,turnLevelRecallBody:`Memory recall runs once per turn. This data applies to all LLM calls for this message.`,turnLevelRecallTitle:`Turn-level recall`,turnPill:`Turn {turn}`,unavailable:`Unavailable`,unknown:`Unknown`,v2StatusInContext:`In context`,v2StatusInjected:`Injected`,v2StatusNotInjected:`Not injected`,v2StatusPageMissing:`Page missing`,v2TurnBody:`Spreading-activation memory pass that ranks concepts and skills for this turn.`,v2TurnTitle:`Memory - turn {turn} ({mode})`,v3LiveInjectionBody:`v3 is the live memory source this turn: the block below was injected into context (v2 suppressed).`,v3LiveInjectionTitle:`Memory V3 - live injection`,v3LoggedSelectionBody:`v3 is not the live memory source for this assistant: these selections were logged but not injected this turn; the turn's memory came from v2.`,v3LoggedSelectionTitle:`Memory V3 - logged selection (not injected)`,v3SourceCarried:`carried`,v3SourceCore:`core`,v3SourceL1L2:`L1+L2`,v3SourceNeedle:`needle`,yes:`Yes`},mobileCallSelector:{callOfTotal:`Call {number} of {total}`,llmCallCount:`{count, plural, one {1 LLM call} other {# LLM calls}}`,selectCallAria:`Select an LLM call to inspect`,sheetTitle:`Select a call`},overviewTab:{cacheTokensLabel:`Cache tokens`,conversationSubtitle:`Running totals across every priced LLM call so far.`,conversationTitle:`Conversation`,createdLabel:`Created`,durationLabel:`Duration`,estimatedCostLabel:`Estimated cost`,failedStatus:`Failed`,firstTokenKindLabel:`First token kind`,firstTokenLatencySubtitle:`Where this turn's time-to-first-token went, measured by the assistant.`,firstTokenLatencyTitle:`First-token latency`,inputTokensLabel:`Input tokens`,latencyMs:`{ms} ms`,loopExitReasonLabel:`Loop exit reason`,modelLabel:`Model`,normalizedMetadataSubtitle:`Provider, model, timestamps, and usage counts.`,normalizedMetadataTitle:`Normalized metadata`,normalizedSummaryUnavailableSubtitle:`This call still has raw request and response payloads.`,normalizedSummaryUnavailableTitle:`Normalized summary unavailable`,otherLabel:`Other`,outputTokensLabel:`Output tokens`,providerLabel:`Provider`,requestMessagesLabel:`Request messages`,statusLabel:`Status`,stopReasonLabel:`Stop reason`,toolCallsLabel:`Tool calls`,toolsAvailableLabel:`Tools available`,totalCostSoFarLabel:`Total cost so far`,totalToFirstTokenLabel:`Total to first token`,usageSubtitle:`Token and call counts normalized by the assistant route.`,usageTitle:`Usage`},pinnedAppColorSwatches:{colors:{green:`Green`,orange:`Orange`,pink:`Pink`,purple:`Purple`,teal:`Teal`,yellow:`Yellow`},noColor:`No color`},preferencesUsagePanel:{addCreditsAriaLabel:`Add credits`,exhausted:`Add credits to continue.`,pctUsed:`{pct}% used`,resets:`Resets {date}`,settingsAriaLabel:`Usage and billing settings`,title:`Usage`},promptTab:{availableTools:`Available tools`,bannerNoSections:`This call has no normalized prompt sections yet.`,bannerSectionsCount:`{count, plural, one {# normalized request section shown in the order returned by the assistant route.} other {# normalized request sections shown in the order returned by the assistant route.}}`,collapseAll:`Collapse all`,copyAriaLabel:`Copy {title}`,emptyBody:`This call has no normalized prompt sections. Use the Raw tab to inspect the full request payload.`,emptyTitle:`No normalized prompt sections`,expandAll:`Expand all`,formatJavaScript:`JavaScript`,formatJson:`JSON`,formatMarkdown:`Markdown`,formatTypeScript:`TypeScript`,noContentAvailable:`No content available.`,promptSectionsTitle:`Prompt sections`},rawTab:{copyRequestPayloadAriaLabel:`Copy request payload`,copyResponsePayloadAriaLabel:`Copy response payload`,downloadFailedToast:`Failed to download the payload.`,downloadRequestPayloadAriaLabel:`Download request payload`,downloadResponsePayloadAriaLabel:`Download response payload`,loadErrorTitle:`Couldn't load raw payloads`,loading:`Loading raw payloads…`,payloadRequestFailed:`The payload request failed. Try again.`,request:`Request`,requestPayload:`Request payload`,response:`Response`,responsePayload:`Response payload`,retry:`Retry`},redactedCredentialChip:{revealFailed:`Couldn't reveal {name}.`},responseTab:{argumentsPreview:`Arguments preview`,copySectionAria:`Copy section content`,kindAssistantText:`Assistant text`,kindFunctionResponse:`Function response`,kindReasoning:`Reasoning`,kindToolCall:`Tool call`,kindToolResult:`Tool result`,modeResultOnly:`Result-only response`,modeTextOnly:`Text-only response`,modeToolCalling:`Tool-calling response`,noArgumentsPreview:`No structured arguments preview is available for this tool call.`,noAssistantText:`No assistant text was captured for this section.`,noSectionsFallback:`This response has no rendered sections. Raw payloads remain available in the Raw tab, and any normalized response metadata will still be shown when present.`,rawTabHint:`Need the full provider payload? Open the Raw tab for request and response JSON.`,responseMetadata:`Response metadata`,sectionTitle:`Section {number}`,sectionUnavailable:`Section rendering unavailable`,stopReasonChip:`Stop reason: {reason}`,toolChip:`Tool: {name}`},sidebarConversationError:{message:`Your conversations failed to load.`,retry:`Try again`},skillDetailPanel:{actionsAria:`Skill actions`,moreTooltip:`More`},skillsTab:{callLink:`Call {number}`,emptyBody:`This tab lists every <code>skill_load</code> tool call across the conversation. None were detected in the captured LLM calls.`,emptyTitle:`No skills were loaded in this conversation`,loadCount:`{count, plural, one {1 load} other {# loads}}`,summaryStats:`{uniqueCount, plural, one {# unique skill} other {# unique skills}} · {totalLoads, plural, one {# load call} other {# load calls}}`,summaryTitle:`Skills loaded in this conversation`},toolDefinitionsContent:{defaultValue:`default: {value}`,inputSchema:`Input schema`,intro:`{count, plural, one {# tool} other {# tools}} sent with this request. Expand a tool to see its definition and input schema.`,noInputSchema:`No input schema - this tool takes no structured input.`,required:`required`,settings:`Settings`},transcriptMessageBody:{fileUnavailable:`File not available for download`,fileUnavailableHostTimeout:`File not available for download (host file approval may have timed out)`},useConversationLoader:{authFailed:`Failed to authenticate user.`},useConversationSecondaryActions:{assistantBusy:`Your assistant is busy. Try again when it finishes replying.`,retryFailed:`Couldn't retry the response`,summarizeFailed:`Couldn't summarize the conversation`},useSendMessage:{commandFailed:`Couldn't run that command. Please try again.`,doctorUnavailable:`The Doctor isn't available on this assistant.`}},_n={addCreditsModal:{configureAutoReload:`Configure Auto-Reload`},companionIntro:{ariaLabel:`Introducing your companion`,meet:{title:`This is me`,titleNamed:`I’m {name}`,body:`I stay on your desktop, even when Vellum isn’t visible.`},talk:{title:`Talk`,body:`Start a voice conversation.`},type:{title:`Type`,body:`Send a message from here and read the reply here too.`},menu:{title:`Right-click me`,body:`That’s where you hide me or change my size.`},skip:`Skip`,next:`Next`,done:`Got it`},notFound:{badge:`Error 404`,title:`Page not found`,body:`The page you're looking for doesn't exist or may have moved.`,backToAssistant:`Back to your assistant`,goBack:`Go back`},resourcePressureBanner:{title:`Resource utilization is high`,body:`Your assistant has been using elevated resources for an extended period, upgrade to power up your assistant.`,bodyNoUpgrade:`Your assistant has been using elevated resources for an extended period.`,upgrade:`Upgrade`,dontShowAgain:`Don't show again`},sectionActionsButton:{ariaLabel:`{name} actions`},windowsMenuBar:{file:`File`,view:`View`,developer:`Developer`,help:`Help`}},vn={schedulesPanel:{pastToggle:`Past ({count, number})`,loadFailed:`Failed to load schedules.`,retry:`Retry`,emptyTitle:`No schedules yet`,emptyDescription:`Ask your assistant to set one up, or create one yourself.`,newConversation:`New Conversation`,emptyActionsSeparator:`or`,createSchedule:`Create schedule`,useProfileForAll:`Use {profile} for all schedules`,oneTimeHeading:`One-time`},scheduleSummaryCard:{costLoading:`Loading cost`,costCaption:`spent in the last {days, plural, one {# day} other {# days}}`,minimize:`Minimize {title}`,expand:`Expand`},scheduleDetail:{close:`Close`,closeAria:`Close schedule details`,details:`Details`,status:`Status`,toggleAria:`Toggle {name}`,nextRun:`Next run`,lastRun:`Last run`,cadence:`Cadence`,mode:`Mode`,modelProfile:`Model profile`,modelProfileWorkflowNote:`Each step of a workflow picks its own model, so this schedule has no model setting to change.`,chooseModel:`Choose a model`,modelChangeFailed:`Failed to change the model.`,costLabel:`{days, number} Day Cost`,runsLabel:`{days, number} Day Runs`,conversations:`Conversations`,conversation:`Conversation`,conversationArchived:`(archived)`,conversationUnavailable:`(unavailable)`,output:`Output`,error:`Error`,openRunConversationAria:`Open conversation for run at {time}`,toggleRunDetailsAria:`Toggle details for run at {time}`,noRunsYet:`No runs yet.`,recentRuns:`Recent runs`,managedByPlugin:`Managed by plugin {plugin}`,managedByPluginPaused:`Managed by plugin {plugin} · off, {reason}`,delete:`Delete`,deleteConfirmMessage:`Delete "{name}"? This can't be undone.`,cancel:`Cancel`,confirmDelete:`Yes, delete`,viewUsage:`View usage`,turnOnToRun:`Turn this schedule on to run it`,running:`Running…`,runNow:`Run now`,runFailed:`Failed to run schedule.`,deleteFailed:`Failed to delete schedule.`,toggleFailed:`Failed to toggle schedule.`,notUsedForWorkflow:`Not used for workflow runs`,enabled:`Enabled`,disabled:`Disabled`},systemTaskDetail:{openMemorySettings:`Open Memory settings`,turnOnMemory:`Turn on Memory`,memorySettings:`Memory settings`,fallbackModelProfile:`Default (system task model)`,repeats:`Repeats`,nameHeartbeat:`Heartbeat`,nameConsolidation:`Consolidation`,nameRetrospective:`Memory retrospective`,statusManagedOn:`On · Managed by Memory`,statusPaused:`Paused`,pausedRetrospectiveSwitchedOff:`Retrospectives are turned off. Turn them back on under Memory in settings.`,pausedRetrospective:`Memory is off, so retrospectives are paused. Turn Memory back on to resume them.`,pausedConsolidation:`Memory is off, so consolidation is paused. Turn Memory back on to resume consolidation.`},scheduleRow:{toggleAria:`Toggle {name}`},scheduleDisarmReason:{userDisabled:`turned off by you`,pluginRemoved:`plugin removed`,pluginDisabled:`plugin disabled`,declarationRemoved:`removed from plugin`,declarationDisabled:`paused by plugin`}},yn={advisorProfileRow:{chooseProfilePlaceholder:`Choose profile…`,description:`The profile your assistant consults for a second opinion when it wants to check a plan or review its own work.`,title:`Advisor`},aiProviderPicker:{defaultEntryMeta:`Default`},autoTopUpCard:{connectCardBanner:`Auto-reload requires you to connect a credit card.`,disableError:`Failed to disable auto-reload. Please try again.`,loadError:`Failed to load auto-reload configuration.`,toggleLabel:`Enable auto-reload`,updateError:`Failed to save auto-reload settings. Please try again.`},autoTopUpDisableConfirm:{message:`Auto-reload will stop. Any saved payment method stays on file.`,title:`Disable auto-reload?`},billingOnboardingModal:{backgroundConfirmContinue:`Continue`,backgroundConfirmKeepWaiting:`Keep waiting`,backgroundConfirmTitle:`Continue in the background?`},billingPage:{billingTab:`Billing`,billingUnavailable:`Billing isn't available for the current assistant state.`,finishSetupBody:`Your assistant's email address hasn't been set up yet.`,finishSetupButton:`Finish setup`,finishSetupTitle:`Finish setting up your {plan} plan`,loadingBilling:`Loading billing…`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,usageTab:`Usage`},billingPanel:{addCreditsButton:`Add Credits`,balanceLabel:`Credits`,earnCreditsButton:`Earn Free Credits`,lowBalanceToggle:`Custom Low Balance Alert`,subtitle:`Quick overview of your balances and other things`,title:`Credits`},billingStatusHandler:{successToast:`Payment received! Your credit balance will update shortly.`,topUpCancelToast:`Checkout was cancelled. No credits were added.`,upgradeCancelToast:`Upgrade canceled. No changes to your plan.`},bookmarksPage:{emptyDescription:`Hover any message and click the bookmark icon to save it here.`,emptyTitle:`No bookmarks`,errorDescription:`Something went wrong. Please try again.`,errorTitle:`Failed to load bookmarks`,open:`Open`,removeBookmark:`Remove bookmark`,retry:`Retry`,untitledConversation:`Untitled conversation`},bulkOverrideSwapModal:{affectedSummary:`{count, plural, one {# action currently uses {profile}} other {# actions currently use {profile}}}`,applyTo:`{count, plural, one {Apply to # action} other {Apply to # actions}}`,cancel:`Cancel`,changeToLabel:`Change to`,chooseActions:`Choose which actions to update.`,clearAll:`Clear all`,currentlyUsingLabel:`Currently using`,intro:`Update the actions that currently use one profile. The result is saved as individual overrides.`,noticeBody:`It changes the selected actions that use {sourceLabel} today. It does not create an ongoing rule between profiles.`,noticeTitle:`This happens once.`,selectAll:`Select all`,successToast:`Updated {count, plural, one {# action} other {# actions}} to "{targetLabel}".`,targetPlaceholder:`Select a profile…`,title:`Change Action Overrides`,updateFailedToast:`Failed to update overrides. Please try again.`,viaDefault:`Default`,viaOverride:`Override`,willChange:`{count, plural, one {# action will change} other {# actions will change}}`},callSiteOverridesRow:{defaultProfileSuffix:`· Default: {label}`,modelLabel:`Model`,overrideAriaLabel:`Override {displayName}`,pickModelError:`Pick a model`,providerLabel:`Provider`,unavailableOption:`{name} (unavailable)`},chatgptOauthSection:{completeFailed:`Failed to complete sign-in. Please try again.`,completeSignIn:`Complete Sign In`,completingSignIn:`Completing sign-in...`,connected:`ChatGPT subscription connected successfully.`,intro:`Connect your ChatGPT subscription to use OpenAI models without an API key.`,invalidUrl:`Invalid URL. Please paste the full URL from the address bar.`,missingCode:`The URL is missing the authorization code. Make sure you copied the full URL.`,missingState:`The URL is missing the state parameter. Make sure you copied the full URL.`,pasteUrlError:`Please paste the URL from the error page.`,signInButton:`Sign in with ChatGPT`,startFailed:`Failed to start ChatGPT sign-in. Please try again.`,startingSignIn:`Starting sign-in...`,step1Idle:`1. Click "Sign in with ChatGPT" below to open a popup`,step1PasteUrl:`1. Click "Sign in with ChatGPT" to open a popup`,step2:`2. Sign in, then you'll land on an error page - that's expected`,step3:`3. Copy the full URL from that page's address bar and paste it below`,tryAgain:`Try Again`,urlPlaceholder:`Paste callback URL here...`},checkoutBonusModal:{body:`Claim a one-time {amount} credit and we'll add it straight to your account balance. No payment required.`,claim:`Claim {amount} in credits`,decline:`No thanks`,errorToast:`Could not add the credits. Please try again.`,grantedToast:`{amount} in credits added to your account.`,title:`Here's {amount} on us`,unavailableToast:`This offer is no longer available.`},checkoutPage:{awaitingReturnMessage:`Checkout opened in your browser. Finish there to complete your upgrade.`,checkoutFailedMessage:`We couldn't start your checkout. Please try again.`,continueSetup:`Continue setup`,preparingCheckout:`Preparing checkout…`,preparingCheckoutAriaLabel:`Preparing checkout`,reopenCheckout:`Reopen checkout`,tryAgain:`Try again`,viewPlans:`View plans`},communityPage:{communityHubDescription:`Showcases, guides, and projects shared by the community.`,communityHubTitle:`Community Hub`,discordBenefitAnswers:`Get answers faster from the community`,discordBenefitFeedback:`Share feedback and request features`,discordBenefitTeam:`Talk directly with the team`,discordLabel:`Discord`,discordSubtitle:`Talk to the team, share feedback, request features, and get answers faster.`,discordTitle:`Join our community`,followOnXDescription:`Product updates, releases, and behind-the-scenes.`,followOnXTitle:`Follow on X`,heroDescription:`Vellum is built in the open with a growing community of developers, designers, and tinkerers. Here's how to get involved.`,heroTag:`Community`,heroTitle:`Build with us, in the open.`,joinDiscord:`Join Discord`,moreFromVellum:`More from Vellum`,openSourceBenefitContribute:`Contribute fixes and new features`,openSourceBenefitIssues:`Open issues and report bugs`,openSourceBenefitStar:`Star the repo to follow updates`,openSourceLabel:`Open Source`,openSourceSubtitle:`Read the source, star the repo, and contribute fixes and features on GitHub.`,openSourceTitle:`Vellum is open source`,starOnGitHub:`Star on GitHub`,viewSource:`View source`,youtubeChannelDescription:`Walkthroughs, tutorials, and product deep-dives.`,youtubeChannelTitle:`YouTube channel`},completeState:{assistantFallbackName:`your assistant`,returnTo:`Return to {assistantName}`,title:`You're all set!`},credentialsPage:{deleteConfirmLabel:`Delete`,deleteConfirmMessage:`Delete {name}? Tools and integrations using it will lose access.`,deleteConfirmTitle:`Delete credential`,deleteErrorToast:`Failed to delete credential`,deleteSuccessToast:`Deleted {name}.`,inUseConfirmLabel:`Delete anyway`,inUseMessage:`{count, plural, one {{name} is the credential that the connection {connections} uses to send requests. Deleting it stops that connection from answering until you add a new credential.} other {{name} is the credential that the connections {connections} use to send requests. Deleting it stops those connections from answering until you add a new credential.}}`,inUseTitle:`Credential is in use`},customPlanModal:{cancel:`Cancel`,comparedToPrevious:`{delta} compared to previous ({previous})`,continue:`Continue`,creditBundleAriaLabel:`Credit bundle`,creditBundlePlaceholder:`Select a credit bundle`,creditsDocsAriaLabel:`Learn more about credit bundles`,creditsLabel:`Bundle some credits:`,learnMore:`Learn more`,machineSizeAriaLabel:`Machine size`,machineSizeDocsAriaLabel:`Learn more about machine sizes`,machineSizeLabel:`Select a machine size:`,machineSizePlaceholder:`Select a machine size`,recap:`Recap`,storageAriaLabel:`Storage`,storageDocsAriaLabel:`Learn more about storage`,storageLabel:`Select storage:`,storagePlaceholder:`Select storage`,subtitle:`Just better.`,title:`Create a custom plan`,totalBilledMonthly:`Total · Billed monthly`,yourSelection:`Your selection:`},customPlanRow:{configure:`Configure`,currentPlanTag:`Your Current Plan`,genericDescriptor:`Select custom CPU power, Ram and Storage. Or just throw in some tokens.`,prompt:`Need something more tailored to your needs?`,title:`Custom Plan`},dailyCreditLimitCard:{requiredNote:`A daily credit limit is required while auto-reload is enabled.`,toggleLabel:`Daily Credit Limit`},developerPage:{sectionsAriaLabel:`Developer sections`,tabFeatureFlags:`Feature Flags`,tabLifecycle:`Assistant Lifecycle`,tabMemory:`Memory`,tabSentry:`Sentry Testing`},domainStep:{continue:`Continue`,domainLockedMessage:`This domain has been set and cannot be changed.`,domainSetRedirecting:`Domain set - redirecting…`,handleImmutableNotice:`You won't be able to change the handle once set.`,handleLabel:`Handle (public)`,machineBusyNotice:`Your assistant is restarting - you can set the domain in a moment.`,next:`Next`,prefixLabel:`Prefix`,registerSubdomainFailed:`Couldn't register that subdomain. Try a different one.`,skip:`Skip`,subtitle:`Set up an email for your assistant.`,title:`Assistant Email`},emailManagedContent:{addressLabel:`Address`,checkingSubscription:`Checking subscription…`,confirm:`Confirm`,create:`Create`,createEmailFailedFallback:`Failed to create email address.`,creating:`Creating…`,domainLabel:`Domain`,domainRegisteredToast:`Domain {domain} registered.`,domainReleaseFailedToast:`Failed to release domain.`,domainReleasedToast:`Domain released.`,emailAddressLabel:`Email address`,emailCreatedToast:`Email address created.`,emailRemoveFailedToast:`Failed to remove email address.`,emailRemovedToast:`Email address removed.`,emailUsernameAriaLabel:`Email username`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`Enter a subdomain.`,enterUsernameError:`Enter an email username.`,register:`Register`,registerDomainFailedFallback:`Failed to register domain.`,registering:`Registering…`,releaseConfirm:`Release`,releaseDomainAriaLabel:`Release domain`,releaseDomainConfirmMessage:`Are you sure you want to release <code>{domain}</code>? The subdomain will become available for others to claim.`,releaseDomainTitle:`Release Domain`,removeAddressFirstToast:`Remove the email address first.`,removeConfirm:`Remove`,removeEmailAriaLabel:`Remove email address`,removeEmailConfirmMessage:`Are you sure you want to remove <code>{address}</code>? Your assistant will no longer be able to send or receive email at this address.`,removeEmailTitle:`Remove Email Address`,retry:`Retry`,setSubdomainConfirmMessage:`<code>{subdomain}</code> will also become your assistant's public handle. You won't be able to change it once set.`,setSubdomainTitle:`Set Subdomain`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`subdomain`,subdomainHint:`Each assistant gets its own subdomain. Lowercase letters, numbers, and hyphens only.`,subdomainLabel:`Subdomain`,subscriptionWarningBody:`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.`,subscriptionWarningTitle:`Couldn't verify subscription status`,upgradeButton:`Upgrade`,upgradeNoticeBody:`Upgrade to a plan that includes an email address for your assistant. No provider setup required.`,upgradeNoticeTitle:`Give your assistant its own email address`,usageSummary:`{sent} / {limit} sent today · {received} received`},emailServiceCard:{apiKeyConfigured:`{providerName} API key configured. To reconfigure, run the <code>{setupSkill}</code> skill.`,connecting:`Connecting to the Vellum platform…`,openProvider:`Open {providerName}`,platformLoginNotice:`Log in to the Vellum platform to manage email settings.`,providerLabel:`Provider`,saveSuccessToast:`Email settings saved.`,setupInstructions:`Configure {providerName} via the assistant CLI: ask the assistant to run the <code>{setupSkill}</code> skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`,subtitle:`Configure how your assistant sends and receives email`,title:`Email`},errorStates:{fetchErrorTitle:`Couldn't reach billing`,goToBilling:`Go to billing`},freeDowngradeConfirmModal:{bodyCancelOnly:`You'll be taken to Stripe to cancel your subscription.`,bodyWithFeatures:`Downgrading removes the following Pro features. You'll be taken to Stripe to cancel your subscription.`,cancel:`Cancel`,confirm:`Downgrade to Base`,title:`Downgrade to Base?`},generalPage:{chooseAssistant:`Choose Assistant`,computeResourcesLoginNotice:`Log in to the Vellum platform to manage compute resources.`,computeResourcesSubtitle:`Monitor resource usage and manage your assistant's compute profile.`,computeResourcesTitle:`Compute & Resources`,current:`Current`,customize:`Customize`,dangerZoneTitle:`Danger Zone`,preferencesSubtitle:`Customize how Vellum looks and behaves on this device.`,preferencesTitle:`Preferences`,retireAssistantDescription:`Permanently retire this assistant and delete all associated data.`,retireAssistantLoginNotice:`Log in to the Vellum platform to retire this assistant.`,retireAssistantTitle:`Retire Assistant`,sleepPolicyLoginNotice:`Log in to the Vellum platform to manage sleep policy.`,sleepPolicySubtitle:`Control how long this assistant stays awake when idle.`,sleepPolicyTitle:`Sleep Policy`,switchAssistantSubtitle:`Choose which assistant this device is connected to.`,switchAssistantTitle:`Switch Assistant`,twoFactorDescription:`Require a code from an authenticator app when you sign in.`,twoFactorLoginNotice:`Log in to the Vellum platform to manage two-factor authentication.`,twoFactorTitle:`Two-Factor Authentication`,updateWindow:`Update Window`,updatesLoginNotice:`Log in to the Vellum platform to manage software updates.`,versionSubtitle:`Manage your assistant's software version and updates.`,versionTitle:`Version`},imageGenerationCard:{activeModelLabel:`Active Model`,apiKeyLabel:`API Key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,geminiApiKeyPlaceholder:`Enter your Gemini API key`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,modelAriaLabel:`Image generation model`,modelUpdateFailedToast:`Failed to update image generation model. Please try again.`,openaiApiKeyPlaceholder:`Enter your OpenAI API key`,providerAriaLabel:`Image generation provider`,providerLabel:`Provider`,savedToast:`Image generation settings saved.`,subtitle:`Configure which model your assistant uses to generate images`,title:`Image Generation`,vellumNote:`Image generation runs through your Vellum account.`},integrationsPage:{accountConnectedToast:`{providerLabel} account connected successfully.`,accountConnectedToastGeneric:`Account connected successfully.`,connectFailedToast:`Failed to connect {providerLabel}.`,connectFailedToastGeneric:`Failed to connect. Please try again.`,emptyAllEnabledTitle:`All Integrations Are Enabled`,emptyDefaultSubtitle:`Check your connection and try again.`,emptyDefaultTitle:`No Integrations Available`,emptyEnabledSubtitle:`Connect an integration to get started.`,emptyEnabledTitle:`No Enabled Integrations`,emptyNotEnabledSubtitle:`All available integrations have been connected.`,emptySearchSubtitle:`No integrations matched "{query}"`,emptySearchTitle:`No integrations matched`,filterAll:`All`,filterAriaLabel:`Filter integrations`,filterEnabled:`Enabled`,filterNotEnabled:`Not Enabled`,loadFailed:`Failed to load integrations. Please try again.`,loading:`Loading...`,noAssistant:`No assistant found. Hatch an assistant to connect integrations.`,oauthErrorDenied:`Authorization was denied. Please try again.`,oauthErrorExchangeFailed:`Failed to complete authorization. Please try again.`,oauthErrorIdentityFailed:`Failed to verify account identity. Please try again.`,oauthErrorStateExpired:`Authorization expired. Please try again.`,oauthErrorStateInvalid:`Authorization state was invalid. Please try again.`,searchAriaLabel:`Search integrations`,searchPlaceholder:`Search Integrations`,tabMcp:`MCP`,tabOAuth:`OAuth`,tipBanner:`<tip>Tip:</tip> You can enable integrations by mentioning them in chat.`},invoicesTable:{hideButton:`Hide Invoices`,showButton:`Show Invoices`,title:`Invoices`},languageModelCard:{defaultProviderUnavailable:`Your default provider is not available.`,manage:`Manage`,overridesTitle:`Overrides`,subtitle:`Profiles choose which model answers. Providers supply access to it`,title:`Language Model`},listeningLanguageCard:{change:`Change`,subtitle:`The language you speak to your assistant. Applies from your next spoken turn.`,title:`Listening language`},manageProfilesBlockedDeleteModal:{actionOverridesTitle:`Action overrides`,cancel:`Cancel`,clauseActionOverrides:`is used by {count, plural, one {# action override} other {# action overrides}}`,clauseDefaultProfile:`is your default profile`,clauseRunsBoth:`runs {schedules, plural, one {# schedule} other {# schedules}} and {reminders, plural, one {# reminder} other {# reminders}}`,clauseRunsReminders:`runs {count, plural, one {# reminder} other {# reminders}}`,clauseRunsSchedules:`runs {count, plural, one {# schedule} other {# schedules}}`,disabledTargetTooltip:`Enable this profile to move schedules onto it.`,moreSchedules:`and {count} more`,reassignAndDelete:`Reassign and Delete`,replacementLabel:`Replacement profile`,replacementPlaceholder:`Select a replacement…`,saving:`Saving…`,scheduleLookupFailed:`We could not check which schedules use this profile. Any schedule pinned to it moves to the replacement as well.`,schedulesTitle:`Schedules`,summaryNoReferences:`Choose a replacement profile for "{display}". Anything still pointing at it moves there before it is deleted.`,summaryOneClause:`"{display}" {clause1}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,summaryThreeClauses:`"{display}" {clause1}, {clause2}, and {clause3}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,summaryTwoClauses:`"{display}" {clause1} and {clause2}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,title:`Choose a Replacement Profile`},mcpAddServerModal:{addServer:`Add Server`,adding:`Adding...`,apiKeyHeaderPlaceholder:`X-API-Key`,apiKeyLabel:`API key`,apiKeyPlaceholder:`sk_...`,argsLabel:`Arguments (space-separated)`,argsPlaceholder:`--port 3000`,authApiKey:`API Key`,authBearer:`Bearer Token`,authNone:`None`,authOAuth:`OAuth`,authenticationLabel:`Authentication`,bearerPlaceholder:`tok_...`,bearerTokenLabel:`Bearer token`,cancel:`Cancel`,commandLabel:`Command`,commandPlaceholder:`npx -y @modelcontextprotocol/server-example`,description:`Connect to a Model Context Protocol server to extend available tools.`,headerNameLabel:`Header name`,namePlaceholder:`my-server`,oauthHint:`OAuth credentials will be configured through a browser-based authorization flow after the server is added.`,serverNameLabel:`Server name`,serverUrlLabel:`Server URL`,title:`Add MCP Server`,transportLabel:`Transport`,transportSse:`SSE`,transportStdio:`Stdio (command)`,transportStreamableHttp:`Streamable HTTP`,urlPlaceholder:`https://example.com/mcp`},mcpPage:{addServerButton:`Add Server`,emptyAddSubtitle:`Add an MCP server to extend your assistant with external tools.`,emptyChatSubtitle:`Chat with your assistant to set up an MCP server.`,emptyTitle:`No MCP Servers`,loadError:`Failed to load MCP servers. Check that an assistant is running.`,loading:`Loading MCP servers...`,reloadAriaLabel:`Reload MCP servers`,reloadTooltip:`Reload all servers`,removeDialogConfirm:`Remove`,removeDialogMessage:`Are you sure you want to remove "{serverId}"? This will disconnect all tools provided by this server.`,removeDialogTitle:`Remove MCP Server`,setupPrompt:`Help me set up an MCP server to extend you with external tools.`,subtitle:`Manage Model Context Protocol server connections and their registered tools.`,title:`MCP Servers`,toastAddFailed:`Failed to add {name}`,toastAdded:`Added {name}`,toastAlreadyAuthenticated:`{serverId} is already authenticated`,toastAuthFailed:`Authentication failed for {serverId}`,toastAuthPollingFailed:`Authentication polling failed for {serverId}`,toastAuthStartFailed:`Failed to start authentication for {serverId}`,toastAuthTimedOut:`Authentication timed out for {serverId}`,toastAuthenticatedSuccess:`{serverId} authenticated successfully`,toastDisableFailed:`Failed to disable {serverId}`,toastEnableFailed:`Failed to enable {serverId}`,toastOAuthRevokeFailed:`Failed to revoke OAuth for {serverId}`,toastOAuthRevoked:`OAuth credentials revoked for {serverId}`,toastReloadFailed:`Failed to reload MCP servers`,toastReloadSuccess:`MCP servers reloaded`,toastRemoveFailed:`Failed to remove {serverId}`,toastRemoved:`Removed {serverId}`,toastUpdateFailed:`Failed to update {serverId}`,toastUpdated:`Updated {serverId}`,totalTokens:`~{count} total tokens`,totalTools:`{count, plural, one {# total tool} other {# total tools}}`},mcpServerCard:{authenticate:`Authenticate`,authenticating:`Authenticating...`,configure:`Configure`,configureTooltip:`Configure`,estimatedTokens:`~{count} tokens`,oauthBadge:`OAuth`,reAuth:`Re-auth`,reAuthTooltip:`Re-authenticate OAuth`,registeredTools:`{count, plural, one {# registered tool} other {# registered tools}}`,removeServerAriaLabel:`Remove {serverId}`,removeServerTooltip:`Remove server`,revoke:`Revoke`,revokeOAuthTooltip:`Revoke OAuth credentials`,revoking:`Revoking...`,statusConnected:`Connected`,statusDisabled:`Disabled`,statusError:`Error`,statusNeedsAuth:`Needs Auth`,toggleDisableAriaLabel:`Disable {serverId}`,toggleEnableAriaLabel:`Enable {serverId}`,toolCount:`{count, plural, one {# tool} other {# tools}}`,toolTokensAbbrev:`~{count} tok`},mcpServerDetailModal:{apiKey:`API key`,apiKeyPlaceholder:`sk_...`,apiKeyPlaceholderKeep:`•••••••• (leave blank to keep current)`,authApiKey:`API Key`,authBearerToken:`Bearer Token`,authNone:`None`,authentication:`Authentication`,bearerToken:`Bearer token`,bearerTokenPlaceholder:`tok_...`,bearerTokenPlaceholderKeep:`•••••••• (leave blank to keep current)`,cancel:`Cancel`,defaultRiskLevel:`Default risk level`,description:`{transport} transport · {status}`,emptyDescription:`-`,headerName:`Header name`,headerNamePlaceholder:`X-API-Key`,oauthBadge:`OAuth`,oauthManagedHint:`managed via OAuth flow`,registeredToolsHeading:`Registered tools ({count})`,riskHigh:`High`,riskLow:`Low`,riskMedium:`Medium`,save:`Save`,saving:`Saving...`,tableDescription:`Description`,tableTokens:`Tokens`,tableTool:`Tool`,tokenOverhead:`Total estimated token overhead: ~{count} tokens`,toolEstimatedTokens:`~{count}`},notificationsPage:{description:`Manage how Vellum notifies you on this Android device.`,title:`Notifications`},overridesCallSiteList:{emptySearch:`No actions match your search.`},overridesDetailPanel:{advisorSection:`Advisor`,bulkChange:`Bulk change`,bulkChangeNoCandidatesTitle:`No actions currently use a profile`,bulkChangeUnsavedTitle:`Save or reset your changes first`,customProfileOption:`Custom`,description:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`,loadErrorHint:`Make sure your assistant is running`,loadErrorTitle:`Couldn't load actions`,otherDomain:`Other`,overridesResetToast:`Overrides reset.`,overridesSavedToast:`Overrides saved.`,resetConfirmMessage:`Every action override will be reset and will follow its default. This cannot be undone.`,resetFailedToast:`Failed to reset overrides. Please try again.`,resetToDefaults:`Reset to Defaults`,retry:`Retry`,save:`Save`,saveFailedToast:`Failed to save overrides. Please try again.`,searchPlaceholder:`Search actions…`,title:`Action Overrides`},packageSwitchConfirmModal:{cancel:`Cancel`},pairDeviceCard:{copyError:`Could not copy the pairing address.`,generateButton:`Generate pairing QR`,generateButtonMinting:`Generating…`,generateButtonRegenerate:`Generate new code`,noTunnelMore:`Other providers and options: <code>{command}</code>`,noTunnelNext:`The tunnel prints an https address. Paste it into Public URL below, and leave the tunnel running while you pair and use other devices.`,noTunnelTitle:`Open a tunnel first`,noTunnelWhy:`Other devices reach {name} over the internet through a tunnel from this computer. In a terminal here, run:`,publicUrlHelper:`The https address your devices can reach this assistant at (your Tailscale URL, or another tunnel's).`,publicUrlHelperTunnel:"This address comes from `vellum tunnel` on this computer. Edit it if your devices reach this assistant at a different URL.",publicUrlLabel:`Public URL`,publicUrlPlaceholder:`https://your-assistant.ts.net`,subtitle:`Scan with another device's camera, or open the link on it, to use {name} there.`,subtitleFallbackName:`this assistant`,title:`Pair a device`},pairDeviceClient:{connectivityHint:"If a scan can't connect, make sure a tunnel is running on the host (`vellum tunnel`) and the public URL points at it, then generate a new code.",httpError:`Pairing failed (HTTP {status}).`,networkError:`Couldn't reach the assistant. Make sure it's running and try again.`,unexpectedResponse:`The assistant returned an unexpected response.`},pairDeviceReady:{copiedButton:`Copied`,copyButton:`Copy`,expiredBody:`Generate a new code to pair a device.`,expiredTitle:`This pairing code expired.`,expiresIn:`Expires in {time} · single-use.`,qrTitle:`Device pairing QR code`,singleUse:`Single-use.`},pairDeviceUrl:{loopback:`This is a loopback address other devices can't reach. Enter the assistant's public https URL.`,nonHttps:`The URL must use https so your devices can connect securely.`,serviceFallbackName:`the tunnel provider`,serviceWebsite:"This is {service}'s website, not your assistant's address. Run `vellum tunnel` on the host to get one.",unparseable:`Enter a valid URL, e.g. https://your-assistant.ts.net.`},pairedDevicesSection:{confirmMessage:`The {platform} device {hash} loses access to this assistant. Its access tokens are invalidated immediately; that device must be paired again from this machine to reconnect.`,confirmTitle:`Revoke this device?`,dateUnknown:`unknown`,datesLine:`Paired {paired} · Last used {lastUsed}`,hostRevokeDisabledTitle:`This is this machine's own credential; revoking it would lock the host out of the assistant.`,platformUnknown:`Unknown`,revokeButton:`Revoke`,thisMachine:`This machine`,title:`Paired devices ({count})`},paymentMethodsCard:{addButton:`Add Payment Method`,empty:`No payment method on file. Add one to use auto-reload.`,loadError:`Failed to load payment methods.`,loading:`Loading…`,removeConfirmCancel:`Keep card`,removeConfirmConfirm:`Remove`,removeConfirmMessage:`Removing your card will turn off auto-reload.`,removeConfirmPending:`Removing…`,removeConfirmTitle:`Remove payment method?`,removeError:`Failed to remove the payment method. Please try again.`,subtitle:`Payment methods linked to your account.`,title:`Payment Methods`},pendingPairingRequests:{approveButton:`Approve`,denyButton:`Deny`,instruction:`A device is asking to use this assistant. Approve a request only after confirming its code matches the one shown on the requesting device.`,requestedMeta:`Requested {when} from {ip}`,requestedMetaHost:`Requested {when} from this computer`,title:`Pairing requests`},planCard:{usageBalanceAddCredits:`Add`,usageBalanceExhausted:`Add credits to continue using your assistant`,usageBalancePctUsed:`{pct}% used`,usageBalanceResets:`Resets {date}`,usageBalanceTitle:`Usage Balance`,usageChip:`{name} usage, reset monthly`},planColumnCard:{currentPlan:`Current Plan`,includes:`Includes:`,recommended:`Recommended`},plansPage:{alreadyOnPlanToast:`You're already on this plan.`,back:`Back`,billedMonthlyCaption:`Billed monthly`,cancelAnytimeFooter:`You can cancel or change your plan anytime you want. To learn more <docsLink>Read our Docs.</docsLink>`,checkoutFailedToast:`Failed to start the upgrade checkout. Please try again.`,downgradeTo:`Downgrade to {name}`,featureComputer:`{machine} Computer`,featureCreditsIncluded:`{amount} in credits included`,featureStorage:`{gib} GB Storage`,foreverCaption:`Forever`,freeFeaturePayAsYouGo:`Pay-as-you-go credits`,freeFeatureSmallComputer:`Small Computer`,freeFeatureStorage:`{gib} GB Storage`,freePriceLabel:`Free`,heading:`Give your assistant more power`,loadingPlansAriaLabel:`Loading plans`,planUpdatedToast:`Plan updated.`,startFreeCta:`Start Free`,subheading:`Choose the level that matches how much you want it to take on.`},privacyPage:{llmLogRetentionDescription:`How long to keep LLM request and response logs on this device. These logs record the prompts and completions sent to model providers and are used for debugging. Shorter retention improves privacy; longer retention helps troubleshoot issues.`,llmLogRetentionLabel:`LLM Request Log Retention`,retentionDontRetain:`Don't retain`,retentionKeepForever:`Keep forever`,retentionNinetyDays:`90 days`,retentionOneDay:`1 day`,retentionOneHour:`1 hour`,retentionSevenDays:`7 days`,retentionThirtyDays:`30 days`,shareAnalyticsHelper:`Send aggregated product usage data`,shareAnalyticsLabel:`Share Analytics`,shareDiagnosticsHelper:`Send crash reports, conversation traces, and session replay data`,shareDiagnosticsLabel:`Share Diagnostics`,subtitleWithPolicy:`View details about what data we collect and how it's used in our <policyLink>privacy policy</policyLink>.`,title:`Privacy`},profileAdvancedParams:{contextWindowLabel:`Context Window`,defaultValueLabel:`Default · {value}`,effortLabel:`Effort`,effortSegmentDefault:`default`,enableExtendedThinkingLabel:`Enable extended thinking`,maxOutputTokensLabel:`Max Output Tokens`,reset:`Reset`,snapshotsHint:`Fields left at their default are saved with the values shown and won't change if the assistant defaults change later.`,speedLabel:`Speed`,streamThinkingTokensLabel:`Stream thinking tokens`,temperatureLabel:`Temperature`,thinkingLevelInheritHint:`(default = inherit)`,thinkingLevelLabel:`Thinking level`,tokensAriaLabel:`{label} (tokens)`,topPLabel:`Top P`,verbosityLabel:`Verbosity`},profileDetailPanel:{createProfile:`Create Profile`,defaultTitle:`Profile`,delete:`Delete`,deleting:`Deleting…`,managedTag:`Managed by Vellum`,newProfileTitle:`New Profile`,save:`Save`,saveAsNew:`Save As New`,saveChanges:`Save Changes`,saving:`Saving…`},profileEditor:{subscriptionSteeringHint:`Your ChatGPT subscription is available as the ChatGPT provider.`},profileEditorFields:{activeLabel:`Active`,addApiKey:`Add API key`,advanced:`Advanced`,createNewProvider:`+ Create new provider`,descriptionLabel:`Description <optional>(optional)</optional>`,descriptionPlaceholder:`Describe when to use this profile`,displayNameLabel:`Display Name`,displayNamePlaceholder:`e.g. Fast & Cheap`,keyLabel:`Key`,keyPlaceholder:`e.g. fast-cheap`,nameLabel:`Name`,newProviderNote:`New provider connection will show up in the Providers section.`,providerLabel:`Provider`,selectProviderPlaceholder:`Select a provider…`,setUp:`Set up`},profileEditorModal:{cancel:`Cancel`,close:`Close`,editProfileTitle:`Edit Profile`,newProfileTitle:`New Profile`,platformTag:`Platform`,profileFallbackTitle:`Profile`,save:`Save`,saveAsNew:`Save As New`,saving:`Saving…`},profileEditorProviderSection:{chooseFromList:`Choose from list`,connectionNotFound:`This profile referenced a credential that no longer exists. Saving resets it to use the provider's available key.`,customModelAriaLabel:`Custom model ID`,customModelPlaceholder:`provider/model-id`,enterCustomModelIdHint:`Enter the exact model identifier your provider expects. It's sent to the connection as-is.`,enterCustomModelIdOption:`Enter a custom model ID…`,modelAriaLabel:`Model`,modelEmptyConfigureConnectionHint:`No models available. Configure models on the provider connection first.`,modelEmptyConfigureConnectionPlaceholder:`Configure models on connection`,modelEmptyNoProviderPlaceholder:`Select a provider first`,modelEmptyUnknownHint:`No models are available for this provider in this app version. Update the app, or enter a custom model ID.`,modelEmptyUnknownPlaceholder:`No models available`,modelLabel:`Model`,noProviderConnectionsHint:`No provider connections. Open Providers to add one.`,providerLabel:`Provider`,providerNotFoundSuffix:`(not found)`,selectModelError:`Select a model.`,selectModelPlaceholder:`Select a model`,selectProviderPlaceholder:`Select a provider…`},profileRow:{actionsAriaLabel:`Actions for {displayName}`,defaultTag:`Default`,delete:`Delete`,disable:`Disable`,disabledTag:`Disabled`,edit:`Edit`,enable:`Enable`,makeDefault:`Make Default`,managedByVellum:`Managed by Vellum`,openProfileAriaLabel:`Open profile {displayName}`,providerUnavailableDefault:`This profile's provider is not available.`,providerUnavailableFixable:`{message} Click to fix.`,view:`View`},profilesSection:{createProfile:`Create Profile`,emptyState:`No profiles yet. Create one to get started.`,loading:`Loading profiles…`,title:`Profiles`},providerCreateForm:{add:`Add`,addNamed:`Add {name}`,addProviderDescription:`Choose a provider and paste its API key.`,addProviderTitle:`Add Provider`,advanced:`Advanced`,apiKeyPlaceholder:`Enter your API key`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.x.ai/v1`,baseUrlPlaceholderOllama:`http://127.0.0.1:11434/v1`,baseUrlHintOllama:`Leave blank to use the local Ollama default, or enter a remote or non-default host.`,cancel:`Cancel`,customProviderHint:`Custom providers connect to any endpoint that serves the OpenAI-compatible API - xAI, Groq, LM Studio, vLLM, and similar.`,customProviderOption:`Custom provider`,displayNameLabel:`Display Name <optional>(optional)</optional>`,displayNamePlaceholder:`e.g. My Anthropic Key`,emptyServerResponse:`Server returned an empty response. Please try again.`,enterApiKeyOrCredential:`Enter an API key or select an existing credential.`,failedSaveApiKey:`Failed to save API key. Please try again.`,failedSaveProvider:`Failed to save provider. Please try again.`,localEndpointHint:`Leave the key empty for local endpoints - they connect keyless.`,modelsHint:`Comma-separated model identifiers exposed by your endpoint.`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,nameLabel:`Name`,namePlaceholder:`xAI`,providerAriaLabel:`Provider`,providerConnectedToast:`Provider connected`,providerLabel:`Provider`,saving:`Saving…`,useChatgptSignIn:`Use the "Sign in with ChatGPT" button to connect your subscription.`},providerDetailPanel:{addProviderTitle:`Add Provider`},providerEditorApiKeySection:{advanced:`Advanced`,apiKeyLabel:`API Key`,cancel:`Cancel`,credentialReferenceAriaLabel:`Credential reference`,credentialReferenceLabel:`Credential Reference`,credentialReferenceSuffix:`· Credential reference`,loading:`Loading…`,newCredential:`+ New Credential`,newCredentialNameLabel:`New Credential Name`,newCredentialPlaceholder:`e.g. team-key`,use:`Use`},providerEditorContent:{apiKeyPlaceholder:`Enter your API key`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.example.com/v1`,baseUrlPlaceholderOllama:`http://127.0.0.1:11434/v1`,baseUrlHintOllama:`Leave blank to use the local Ollama default, or enter a remote or non-default host.`,cancel:`Cancel`,displayNameLabel:`Display Name <optional>(optional)</optional>`,displayNamePlaceholder:`e.g. My Anthropic Key`,editProviderSettingsFallback:`Edit provider settings.`,editProviderTitle:`Edit Provider`,editingConnection:`Editing {name}.`,emptyServerResponse:`Server returned an empty response. Please try again.`,failedSaveApiKey:`Failed to save API key. Please try again.`,failedSaveProvider:`Failed to save provider. Please try again.`,modelsHint:`Comma-separated model identifiers exposed by your endpoint.`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,nothingToEdit:`Nothing to edit. Close and try again.`,saveChanges:`Save Changes`,saving:`Saving…`},providerRow:{actionsAriaLabel:`Actions for {displayName}`,customTag:`Custom`,customTagTitle:`A provider you created, served by an OpenAI-compatible endpoint.`,defaultTag:`Default`,defaultTagTitle:`Built-in profiles (Balanced, Quality, Cost, Speed) use this provider.`,delete:`Delete`,edit:`Edit`,localTag:`Local`,localTagTitle:`Runs models on this machine.`,managedTag:`Managed`,managedTagTitle:`Runs on Vellum's managed credentials.`,openProviderAriaLabel:`Open provider {displayName}`,setAsDefault:`Set as default`},providersSection:{addProvider:`Add Provider`,empty:`No providers yet. Add one to get started.`,loadError:`Failed to load providers. Please try again.`,title:`Providers`},provisioningState:{allDoneStatus:`All done!`,confirmingCaption:`This might take a couple seconds.`,continueInBackground:`Continue in the background`,creditsChip:`{count} credits`,dimensionsComplete:`{dimensions} complete`,goToBilling:`Go to billing`,machineLabel:`Machine`,packageChip:`{name} package`,planReadyStatus:`Your plan is ready`,retryInBackground:`Retry in the background`,srOnlyTo:`to`,stalledCaption:`This may take a couple of minutes.`,statusComplete:`Complete`,statusPending:`Pending`,storageLabel:`Storage`,takingLongerStatus:`This is taking longer than expected`,tryAgain:`Try again`,waitingCaptionLong:`Still working. This can take a minute or two.`,waitingCaptionShort:`This might take a couple seconds.`},sharedUi:{checkingDomain:`Checking domain…`,domainVerified:`Domain verified`,failedTitle:`Domain verification failed. DNS records may not have propagated correctly. You could try releasing and re-registering the domain.`,managedLabel:`Managed`,managedServicesBanner:`Managed services are metered and deducted from your Vellum account balance. <link>View pricing</link>`,modeToggleAriaLabel:`Service mode`,unknownStatus:`Unknown status`,unknownStatusTitle:`Unable to retrieve domain verification status.`,verificationFailed:`Verification failed`,verifiedTitle:`DNS records have been verified. Your domain is ready to send and receive email.`,verifyingDomain:`Verifying domain…`,verifyingTitle:`DNS records have been provisioned. Waiting for the email provider to verify them - this usually takes a few minutes.`,yourOwnLabel:`Your Own`},soundsSections:{addSound:`Add sound`,allSoundsAdded:`All sounds added`,defaultBlip:`Default Blip`,enableEvent:`Enable {eventName}`,enableSoundEffects:`Enable sound effects`,enableSoundEffectsDescription:`Master switch for every event-driven sound.`,noSoundFiles:`No sound files yet. Drop audio files into data/sounds/ in your workspace.`,preview:`Preview`,previewDefaultBlip:`Preview default blip`,previewSoundAriaLabel:`Preview {filename}`,removeSoundAriaLabel:`Remove {filename}`,soundEventCharacterPoke:`Character Poke`,soundEventMessageSent:`Message Sent`,soundEventNeedsInput:`Needs Input`,soundEventNewConversation:`New Conversation`,soundEventNotification:`Notification`,soundEventRandom:`Random`,soundEventTaskComplete:`Task Complete`,soundEventTaskFailed:`Task Failed`,soundEventsDescription:`Add one or more sounds per event. When multiple are configured, one plays at random.`,soundEventsTitle:`Sound Events`,volume:`Volume`,volumeAriaLabel:`Sound effect volume`},speechToTextCard:{subtitle:`Configure how your assistant transcribes speech`,title:`Speech-to-Text`},textToSpeechCard:{subtitle:`Configure how your assistant speaks`,title:`Text-to-Speech`},upgradeCancelPage:{billingUnavailable:`Billing isn't available for the current assistant state.`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,redirectingBody:`Returning you to billing settings…`,returnToBilling:`Return to billing`,title:`Upgrade canceled`},upgradeSuccessPage:{cantConfirmUpgrade:`We can't confirm your upgrade for the current assistant. Return to billing to retry.`,fetchErrorBody:`We hit a problem checking your subscription. Your upgrade may still be processing. Return to billing to refresh.`,fetchErrorTitle:`Couldn't reach billing`,finalizingBody:`Stripe is confirming your subscription. This usually takes a few seconds.`,finalizingTitle:`Finalizing your upgrade…`,goToBilling:`Go to billing`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,processingFallback:`We're processing your upgrade. Refresh in a moment to see your new plan.`,successBody:`Your Pro plan is active. You'll be redirected back to billing in a moment.`,welcomeTitle:`Welcome to Pro`},usageTab:{analyzeCostsButton:`Analyze costs with assistant`,breakdownTitle:`Breakdown`,cacheCreatedLabel:`Cache Created`,cacheReadLabel:`Cache Read`,costAssistantSubtitle:`Review recent spend and tune model profile choices.`,costAssistantTitle:`Cost assistant`,costLabel:`Cost`,dailyTrend:`Daily Trend`,dailyTrendBy:`Daily Trend by {group}`,directInputTokensLabel:`Direct Input Tokens`,failedToLoadUsage:`Failed to load usage.`,groupByActor:`Actor`,groupByConversation:`Conversation`,groupByModel:`Model`,groupByProfile:`Profile`,groupByProvider:`Provider`,groupBySchedule:`Schedule`,groupByTask:`Action`,groupColumnLabel:`Group`,hourlyTrend:`Hourly Trend`,hourlyTrendBy:`Hourly Trend by {group}`,inferenceUsageTitle:`Inference Usage`,llmCallsLabel:`LLM Calls`,noBreakdownDataSubtitle:`No usage recorded for this grouping`,noBreakdownDataTitle:`No breakdown data`,optimizeSettingsButton:`Optimize settings`,outputTokensLabel:`Output Tokens`,percentOfTotalLabel:`% of total`,range30d:`Last 30 days`,range7d:`Last 7 days`,range90d:`Last 90 days`,rangeAll:`All time`,rangeToday:`Today`,rangeYesterday:`Yesterday`,retry:`Retry`,title:`Usage`,tokensLabel:`Tokens`,totalsAriaLabel:`Totals`,turnsLabel:`Turns`,unknownSchedule:`Unknown schedule ({scheduleId})`},usageTrendChart:{noDailyData:`No daily data`,noHourlyData:`No hourly data`,noUsageInRange:`No usage recorded in this time range`,total:`Total`},useDaemonConfig:{assistantNotReadyToast:`Assistant not ready. Please try again.`,saveApiKeyFailedToast:`Failed to save {providerName} API key. Please try again.`},usePairDevice:{mintErrorFallback:`Something went wrong while generating the code.`},usePendingPairingRequests:{actionErrorFallback:`Something went wrong. Try again.`,denyAlreadyApproved:`This request was already approved somewhere else, so the deny didn't take effect and the device is now paired.`,pollErrorFallback:`Something went wrong while checking for pairing requests.`},useProfileSave:{createdToast:`Profile "{name}" created`},useProviderActions:{deleteFailedToast:`Failed to delete the provider. Please try again.`,deleteInUseToast:`This provider is in use by a profile or as the default provider. Update those settings before deleting it.`,setDefaultFailedToast:`Failed to set the default provider. Please try again.`},voicePage:{activationKeyLabel:`Shortcut:`,allowMicrophoneAccess:`Allow Microphone Access`,captionsSubtitle:`Show live text of what you and the assistant say during a voice conversation.`,captionsTitle:`Captions`,customKey:`Custom`,defaultBadge:`Default`,enableVoiceShortcut:`Enable voice mode shortcut`,fnKeyLabel:`Fn`,fnRefusedNote:`Fn needs Input Monitoring. Grant it in System Settings, or set a custom shortcut.`,focusedTabNote:`The shortcut only works while this tab is focused, and browsers may intercept some chords (e.g. Ctrl+T) before the page can see them. For a shortcut that works anywhere, use the Vellum desktop app.`,grantMicrophoneAccessHint:`Grant microphone access to list your available input devices.`,interruptSensitivityAriaLabel:`Interrupt sensitivity`,interruptSensitivityDescription:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,interruptSensitivityHigh:`High`,interruptSensitivityLabel:`Interrupt sensitivity`,interruptSensitivityLow:`Low`,interruptSensitivityMedium:`Medium`,microphoneAriaLabel:`Microphone`,microphoneFallbackLabel:`Microphone {index}`,microphoneSubtitle:`Which input device is used for dictation and voice conversations.`,microphoneTitle:`Microphone`,pauseBeforeReplyAriaLabel:`Pause before reply`,pauseBeforeReplyDescription:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,pauseBeforeReplyLabel:`Pause before reply`,pressShortcut:`Press a shortcut…`,recommendedBadge:`Recommended`,recordingPrompt:`Press a chord or keystroke…`,resetToDefaults:`Reset to defaults`,savedMicrophone:`Saved microphone`,savedMicrophoneNotConnected:`Saved microphone (not connected)`,sectionCaptionsHeading:`Captions`,sectionInputDescription:`How you talk to your assistant.`,sectionInputHeading:`Input`,sectionOutputDescription:`How your assistant sounds.`,sectionOutputHeading:`Output`,shortcutChordHint:`Hold a modifier (Cmd, Ctrl, Option, or Shift) and press a key.`,shortcutConflict:`Already used by {command}`,speechServicesBannerLink:`Set it up in Models & Services`,speechServicesBannerPrompt:`Want to use your own API key for STT or TTS, or set a custom voice?`,systemDefault:`System Default`,turnTakingSubtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations. Under push to talk, the key decides.`,turnTakingTitle:`Turn taking`,voiceShortcutSubtitle:`Press the shortcut to start or end a voice conversation, from anywhere in the app.`,voiceShortcutSubtitleDesktop:`Global shortcut for starting/ending a voice conversation.`,voiceShortcutTitle:`Voice Mode Shortcut`},voicePickerCard:{changeButton:`Change`,creditsNote:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`,title:`Voice`,titleWithName:`{name}'s Voice`},webFetchCard:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter your API key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,providerLabel:`Provider`,savedToast:`Web fetch settings saved.`,subtitle:`Configure how your assistant reads individual web pages`,title:`Web Fetch`},webSearchCard:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter your API key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,providerAriaLabel:`Web search provider`,providerLabel:`Provider`,savedToast:`Web search settings saved.`,subtitle:`Configure how your assistant should search the web`,title:`Web Search`,vellumNote:`Search runs through your Vellum account.`}},Z=[`common`,`chat`,`schedules`,`account`,`channels`,`settings`,`workspace`,`terminal`,`remote-web`,`credential-requests`,`logs`,`library`,`home`,`contacts`,`onboarding`,`intelligence`],bn=`common`,xn=[`en`,`es`];function Q(e){return typeof e==`string`&&xn.includes(e)}function Sn(e){for(let t of e){let e=t.trim().toLowerCase();if(e===``)continue;if(Q(e))return e;let n=e.split(`-`)[0];if(Q(n))return n}return`en`}var $={common:_n,chat:gn,schedules:vn,account:rn,channels:an,settings:yn,workspace:hn,terminal:mn,"remote-web":pn,"credential-requests":sn,logs:un,library:ln,home:cn,contacts:on,onboarding:fn,intelligence:dn},Cn={es:{common:()=>r(()=>import(`./common-gaw6OefS.js`),[]),chat:()=>r(()=>import(`./chat-QLQLsbFK.js`),[]),schedules:()=>r(()=>import(`./schedules-BXXSRQs5.js`),[]),account:()=>r(()=>import(`./account-BuiU7DuB.js`),[]),channels:()=>r(()=>import(`./channels-DFBLDFWh.js`),[]),settings:()=>r(()=>import(`./settings-BY8t4asx.js`),[]),workspace:()=>r(()=>import(`./workspace-Ch5zHBn1.js`),[]),terminal:()=>r(()=>import(`./terminal-Dily8RM4.js`),[]),"remote-web":()=>r(()=>import(`./remote-web-BX-aNmAz.js`),[]),"credential-requests":()=>r(()=>import(`./credential-requests-CpHxMIMS.js`),[]),logs:()=>r(()=>import(`./logs-BsCB67bq.js`),[]),library:()=>r(()=>import(`./library-Da5KVeDF.js`),[]),home:()=>r(()=>import(`./home-ySv5rBLy.js`),[]),contacts:()=>r(()=>import(`./contacts-BQcl-1XL.js`),[]),onboarding:()=>r(()=>import(`./onboarding-DwRWKhM_.js`),[]),intelligence:()=>r(()=>import(`./intelligence-C7DYXerF.js`),[])}};async function wn(e){if(e===`en`)return $;let t=Cn[e],n=await Promise.all(Z.map(async e=>[e,(await t[e]()).default]));return Object.fromEntries(n)}function Tn(e,t){return{lng:e,fallbackLng:`en`,ns:[...Z],defaultNS:bn,resources:t,interpolation:{escapeValue:!1},returnNull:!1}}function En(){if(typeof navigator>`u`)return[];let e=navigator.languages;return Array.isArray(e)&&e.length>0?[...e]:navigator.language?[navigator.language]:[]}function Dn(){let e=t(`locale`,``);return Q(e)?e:Sn(En())}function On(e){if(typeof document>`u`)return;document.documentElement.lang=e;let t;try{let n=new Intl.Locale(e);t=n.getTextInfo?.().direction??n.textInfo?.direction}catch{t=void 0}document.documentElement.dir=t===`rtl`?`rtl`:`ltr`}async function kn(e){let t=Z.filter(t=>!F.hasResourceBundle(e,t));if(t.length===0)return;let n=await wn(e);for(let r of t)F.addResourceBundle(e,r,n[r],!0,!0)}function An(e,t){n(e,{context:`i18n_catalog_load`,level:`warning`,tags:{locale:t}})}async function jn(){let e=Dn();if(F.isInitialized)try{return await Mn(e),e}catch(t){return An(t,e),Nn()}let t={en:$},n=`en`;if(e!==`en`)try{t[e]=await wn(e),n=e}catch(t){An(t,e)}return await F.use(new nn).use(Oe).init(Tn(n,t)),On(n),n}async function Mn(t){await kn(t),await F.changeLanguage(t),e(`locale`,t),On(t)}function Nn(){let e=F.resolvedLanguage??F.language;return Q(e)?e:`en`}export{Se as a,we as i,jn as n,k as o,De as r,ve as s,Nn as t};
@@ -1,4 +1,4 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-VkxVX0DM.js";import{t as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./jsx-runtime-BJ8jcmzB.js";import{t as s}from"./card-DUsAeHUS.js";import{t as c}from"./createLucideIcon-B-ZPaMbU.js";import{t as l}from"./brain-9Csfs96f.js";import{t as u}from"./calendar-DUfSq9XY.js";import{t as d}from"./chevron-left-D29BeQ4x.js";import{t as f}from"./chevron-right-DTpkwA4e.js";import{n as p,t as m}from"./animate-1rkqw0bf.js";import{t as h}from"./folder-open-Cz-3FN-E.js";import{t as g}from"./layout-grid-CBeP_IMO.js";import{t as _}from"./pencil-RFB2IyLT.js";import{t as v}from"./sparkles-DvB22tVW.js";import{t as y}from"./upload-Bilfs1g8.js";import{t as b}from"./users-BHqL5Ion.js";import{n as x,t as S}from"./installed-plugins-query-CmlpXeFG.js";import"./src-Ch3HTlFm.js";import{t as C}from"./modal-UYNawsIu.js";import{n as w}from"./toast-ZCXyBjoj.js";import{t as T}from"./assistant-identity-store-DrQJhZh3.js";import{s as E}from"./i18n-7Z5ghN39.js";import{t as D}from"./useTranslation-CJMg4EBF.js";import{d as O,r as k}from"./routes-Bj1LYNBZ.js";import{h as A}from"./platform-detection-CuBj2s81.js";import{a as j,n as M,o as ee,r as N}from"./use-assistant-avatar-By4FjR0h.js";import{C as P,N as F,Nt as I,Sn as L,Tt as R,c as z,r as B}from"./react-query.gen-OpeDEMIm.js";import{n as te,t as V}from"./get-memory-stats-U9zVanzc.js";import{t as ne}from"./plugins-surface-CLatmeTO.js";import{t as H}from"./proxy-C_GXGfwL.js";import{t as U}from"./use-reduced-motion-DzXyVFAi.js";import{n as W,t as re}from"./eye-bbox-BpNolORP.js";import{r as G}from"./avatar-tone-Dp4coAkE.js";import{t as K}from"./chat-avatar-DInCdP5z.js";import{t as q}from"./use-element-size-Cgo4THI9.js";import{t as ie}from"./avatar-renderer-DvM-sFyU.js";import{t as ae}from"./use-active-assistant-id-BFE4r9Rp.js";import{t as J}from"./schedules-D1Qj_LW9.js";import{t as oe}from"./page-shell-DEN0SqaR.js";import{a as se,o as ce,s as le}from"./latest-assistant-text-C8nmvw4v.js";import{a as ue,i as de,n as fe,r as pe,s as me,t as he}from"./use-assistant-identity-details-DUPitZAF.js";var ge=c(`radio`,[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),Y=e(t(),1),X=o();function Z(e,t,n){return n===`forward`?(e+1)%t:(e-1+t)%t}function _e({open:e,onClose:t,assistantId:r,components:i,traits:a,customImageUrl:o,onSaveCharacter:s,onUploadImage:c,assistantName:l,onRenameSubmit:u,isRenaming:d=!1}){let f=(0,Y.useRef)(null),[m,h]=(0,Y.useState)(null),[g,_]=(0,Y.useState)(!1),v=i??m,[b,x]=(0,Y.useState)(0),[S,w]=(0,Y.useState)(0),[T,E]=(0,Y.useState)(0),[D,O]=(0,Y.useState)(`character`),[k,A]=(0,Y.useState)(null),[M,P]=(0,Y.useState)(!1),[F,I]=(0,Y.useState)(!1),[L,R]=(0,Y.useState)(l??``),z=k??o,B=!!z;(0,Y.useEffect)(()=>{e&&R(l??``)},[e,l]);let te=(0,Y.useRef)(!1);(0,Y.useEffect)(()=>{e&&!te.current&&O(o?`custom`:`character`),te.current=e},[e,o]),(0,Y.useEffect)(()=>{if(e)if(v&&a){let e=v.bodyShapes.findIndex(e=>e.id===a.bodyShape),t=v.eyeStyles.findIndex(e=>e.id===a.eyeStyle),n=v.colors.findIndex(e=>e.id===a.color);x(e>=0?e:0),w(t>=0?t:0),E(n>=0?n:0)}else x(0),w(0),E(0)},[e,v,a]),(0,Y.useEffect)(()=>{if(!e||v||g)return;let t=!1;return _(!0),N(r).then(e=>{t||(h(e),_(!1))}),()=>{t=!0}},[e,v,g,r]),(0,Y.useEffect)(()=>{if(k)return()=>{URL.revokeObjectURL(k)}},[k]),(0,Y.useEffect)(()=>{e||A(null)},[e]);let V=L.trim(),ne=!!u&&V.length>0&&V!==(l??``),H=(0,Y.useCallback)(()=>{v&&(O(`character`),x(Math.floor(Math.random()*v.bodyShapes.length)),w(Math.floor(Math.random()*v.eyeStyles.length)),E(Math.floor(Math.random()*v.colors.length)))},[v]),U=(0,Y.useCallback)(()=>{f.current?.click()},[]),W=(0,Y.useCallback)(async e=>{let t=e.target.files?.[0];if(!t)return;I(!0);let n=await ee(r,t);I(!1),n&&(c(),A(URL.createObjectURL(t)),O(`custom`)),f.current&&(f.current.value=``)},[r,c]),re=(0,Y.useCallback)(async e=>{if(e.preventDefault(),!(M||d)){if(ne&&u&&u(V),v&&D===`character`){let e={bodyShape:v.bodyShapes[b].id,eyeStyle:v.eyeStyles[S].id,color:v.colors[T].id};P(!0);try{await j(r,e),A(null),s(e)}finally{P(!1)}}t()}},[M,d,ne,u,V,v,D,b,S,T,r,s,t]),G=v?.bodyShapes[b],K=v?.eyeStyles[S],q=v?.colors[T],ae=D===`custom`&&B,J=l!==void 0&&u?(0,X.jsx)(ve,{value:L,onChange:R,disabled:d}):null;return(0,X.jsx)(C.Root,{open:e,onOpenChange:e=>!e&&t(),children:(0,X.jsxs)(C.Content,{size:`sm`,children:[(0,X.jsx)(C.Header,{children:(0,X.jsx)(C.Title,{children:`Update Avatar`})}),(0,X.jsxs)(`form`,{className:`flex min-h-0 flex-1 flex-col`,onSubmit:re,children:[(0,X.jsx)(C.Body,{className:`space-y-4`,children:ae?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`flex justify-center`,children:(0,X.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,X.jsx)(`img`,{src:z,alt:`Uploaded avatar`,className:`h-40 w-40 rounded-xl object-cover`})})}),(0,X.jsxs)(`div`,{className:`space-y-3`,children:[J,(0,X.jsx)(ye,{label:`Use a character instead`,description:`Pick from our built-in avatars`,onClick:()=>O(`character`),thumbnail:v&&G&&K&&q?(0,X.jsx)(ie,{components:v,bodyShapeId:G.id,eyeStyleId:K.id,colorId:q.id,size:32}):(0,X.jsx)(p,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})})]})]}):v?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`flex justify-center`,children:(0,X.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,X.jsx)(ie,{components:v,bodyShapeId:G.id,eyeStyleId:K.id,colorId:q.id,size:160})})}),(0,X.jsxs)(`div`,{className:`space-y-3`,children:[J,(0,X.jsx)(be,{label:`Body`,value:G.id,onPrev:()=>x(Z(b,v.bodyShapes.length,`backward`)),onNext:()=>x(Z(b,v.bodyShapes.length,`forward`))}),(0,X.jsx)(be,{label:`Eyes`,value:K.id,onPrev:()=>w(Z(S,v.eyeStyles.length,`backward`)),onNext:()=>w(Z(S,v.eyeStyles.length,`forward`))}),(0,X.jsx)(be,{label:`Color`,value:q.id,colorHex:q.hex,onPrev:()=>E(Z(T,v.colors.length,`backward`)),onNext:()=>E(Z(T,v.colors.length,`forward`))})]}),B&&(0,X.jsx)(ye,{label:`Keep your uploaded image`,description:`Saving the character replaces it`,onClick:()=>O(`custom`),thumbnail:(0,X.jsx)(`img`,{src:z,alt:``,className:`h-8 w-8 rounded-md object-cover`})})]}):(0,X.jsxs)(X.Fragment,{children:[J,g?(0,X.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,X.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-tertiary)]`})}):(0,X.jsx)(`div`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-quiet)]`,children:`Unable to load avatar components. Make sure your assistant is running.`})]})}),(0,X.jsxs)(C.Footer,{className:`justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(n,{type:`button`,variant:`outlined`,iconOnly:(0,X.jsx)(p,{}),"aria-label":`Randomize`,tooltip:`Randomize`,onClick:H,disabled:!v}),(0,X.jsx)(n,{type:`button`,variant:`outlined`,iconOnly:(0,X.jsx)(y,{}),"aria-label":`Upload image`,tooltip:`Upload image`,onClick:U,disabled:F})]}),(0,X.jsx)(n,{type:`submit`,variant:`primary`,disabled:M||d||F,children:M||d?`Saving…`:`Save`})]})]}),(0,X.jsx)(`input`,{ref:f,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif`,className:`hidden`,onChange:W})]})})}function ve({value:e,onChange:t,disabled:n}){return(0,X.jsxs)(`label`,{className:`flex items-center justify-between gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,X.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:`Name`}),(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,X.jsx)(`div`,{className:`flex min-w-[80px] items-center justify-center`,children:(0,X.jsx)(`input`,{value:e,onChange:e=>t(e.target.value),disabled:n,maxLength:40,size:8,placeholder:`Name`,"aria-label":`Name`,className:`h-7 min-w-0 field-sizing-content bg-transparent text-center text-body-medium-default text-[var(--content-strong)] outline-none placeholder:text-[var(--content-tertiary)] disabled:cursor-not-allowed disabled:opacity-60`})}),(0,X.jsx)(`span`,{"aria-hidden":!0,className:`h-7 w-7 shrink-0`})]})]})}function ye({label:e,description:t,thumbnail:n,onClick:r}){return(0,X.jsxs)(`button`,{type:`button`,onClick:r,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2 text-left transition-colors hover:bg-[var(--surface-hover)]`,children:[(0,X.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded-md bg-[var(--surface-sunken)]`,children:n}),(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`span`,{className:`block truncate text-body-medium-default text-[var(--content-strong)]`,children:e}),(0,X.jsx)(`span`,{className:`block truncate text-body-small-default text-[var(--content-quiet)]`,children:t})]}),(0,X.jsx)(f,{className:`h-4 w-4 shrink-0 text-[var(--content-quiet)]`})]})}function be({label:e,value:t,colorHex:n,onPrev:r,onNext:i}){return(0,X.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,X.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:e}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Previous ${e.toLowerCase()}`,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,X.jsx)(d,{className:`h-4 w-4`})}),(0,X.jsxs)(`div`,{className:`flex min-w-[80px] items-center justify-center gap-2`,children:[n&&(0,X.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-[var(--border-element)]`,style:{backgroundColor:n}}),(0,X.jsx)(`span`,{className:`text-body-medium-default capitalize text-[var(--content-strong)]`,children:t})]}),(0,X.jsx)(`button`,{type:`button`,onClick:i,"aria-label":`Next ${e.toLowerCase()}`,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,X.jsx)(f,{className:`h-4 w-4`})})]})]})}function xe(e){let t=e.trim();return`<system-message>
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-C8CGr0T0.js";import{t as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-EuRl-wrW.js";import{t as a}from"./useQuery-CTSuec5b.js";import{t as o}from"./jsx-runtime-BJ8jcmzB.js";import{t as s}from"./card-DUsAeHUS.js";import{t as c}from"./createLucideIcon-B-ZPaMbU.js";import{t as l}from"./brain-9Csfs96f.js";import{t as u}from"./calendar-DUfSq9XY.js";import{t as d}from"./chevron-left-D29BeQ4x.js";import{t as f}from"./chevron-right-DTpkwA4e.js";import{n as p,t as m}from"./animate-1rkqw0bf.js";import{t as h}from"./folder-open-Cz-3FN-E.js";import{t as g}from"./layout-grid-CBeP_IMO.js";import{t as _}from"./pencil-RFB2IyLT.js";import{t as v}from"./sparkles-DvB22tVW.js";import{t as y}from"./upload-Bilfs1g8.js";import{t as b}from"./users-BHqL5Ion.js";import{n as x,t as S}from"./installed-plugins-query-DQKwv-Iz.js";import"./src-DMnnfLrU.js";import{t as C}from"./modal-DN_Uwwkg.js";import{n as w}from"./toast-CHtrY-GO.js";import{t as T}from"./assistant-identity-store-DrQJhZh3.js";import{s as E}from"./i18n-C3bX3mTs.js";import{t as D}from"./useTranslation-CCDbxnME.js";import{d as O,r as k}from"./routes-yNhBxUSb.js";import{h as A}from"./platform-detection-C-a_Mru0.js";import{a as j,n as M,o as ee,r as N}from"./use-assistant-avatar-adekIS8v.js";import{C as P,N as F,Nt as I,Sn as L,Tt as R,c as z,r as B}from"./react-query.gen-CYP-Tn4K.js";import{n as te,t as V}from"./get-memory-stats-U9zVanzc.js";import{t as ne}from"./plugins-surface-CLatmeTO.js";import{t as H}from"./proxy-C_GXGfwL.js";import{t as U}from"./use-reduced-motion-DzXyVFAi.js";import{n as W,t as re}from"./eye-bbox-BpNolORP.js";import{r as G}from"./avatar-tone-Dp4coAkE.js";import{t as K}from"./chat-avatar-DInCdP5z.js";import{t as q}from"./use-element-size-Cgo4THI9.js";import{t as ie}from"./avatar-renderer-DvM-sFyU.js";import{t as ae}from"./use-active-assistant-id-BFE4r9Rp.js";import{t as J}from"./schedules-CgwiGq3x.js";import{t as oe}from"./page-shell-nVp2ogSk.js";import{a as se,o as ce,s as le}from"./latest-assistant-text-fXT5Jkt8.js";import{a as ue,i as de,n as fe,r as pe,s as me,t as he}from"./use-assistant-identity-details-C3sH1daz.js";var ge=c(`radio`,[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),Y=e(t(),1),X=o();function Z(e,t,n){return n===`forward`?(e+1)%t:(e-1+t)%t}function _e({open:e,onClose:t,assistantId:r,components:i,traits:a,customImageUrl:o,onSaveCharacter:s,onUploadImage:c,assistantName:l,onRenameSubmit:u,isRenaming:d=!1}){let f=(0,Y.useRef)(null),[m,h]=(0,Y.useState)(null),[g,_]=(0,Y.useState)(!1),v=i??m,[b,x]=(0,Y.useState)(0),[S,w]=(0,Y.useState)(0),[T,E]=(0,Y.useState)(0),[D,O]=(0,Y.useState)(`character`),[k,A]=(0,Y.useState)(null),[M,P]=(0,Y.useState)(!1),[F,I]=(0,Y.useState)(!1),[L,R]=(0,Y.useState)(l??``),z=k??o,B=!!z;(0,Y.useEffect)(()=>{e&&R(l??``)},[e,l]);let te=(0,Y.useRef)(!1);(0,Y.useEffect)(()=>{e&&!te.current&&O(o?`custom`:`character`),te.current=e},[e,o]),(0,Y.useEffect)(()=>{if(e)if(v&&a){let e=v.bodyShapes.findIndex(e=>e.id===a.bodyShape),t=v.eyeStyles.findIndex(e=>e.id===a.eyeStyle),n=v.colors.findIndex(e=>e.id===a.color);x(e>=0?e:0),w(t>=0?t:0),E(n>=0?n:0)}else x(0),w(0),E(0)},[e,v,a]),(0,Y.useEffect)(()=>{if(!e||v||g)return;let t=!1;return _(!0),N(r).then(e=>{t||(h(e),_(!1))}),()=>{t=!0}},[e,v,g,r]),(0,Y.useEffect)(()=>{if(k)return()=>{URL.revokeObjectURL(k)}},[k]),(0,Y.useEffect)(()=>{e||A(null)},[e]);let V=L.trim(),ne=!!u&&V.length>0&&V!==(l??``),H=(0,Y.useCallback)(()=>{v&&(O(`character`),x(Math.floor(Math.random()*v.bodyShapes.length)),w(Math.floor(Math.random()*v.eyeStyles.length)),E(Math.floor(Math.random()*v.colors.length)))},[v]),U=(0,Y.useCallback)(()=>{f.current?.click()},[]),W=(0,Y.useCallback)(async e=>{let t=e.target.files?.[0];if(!t)return;I(!0);let n=await ee(r,t);I(!1),n&&(c(),A(URL.createObjectURL(t)),O(`custom`)),f.current&&(f.current.value=``)},[r,c]),re=(0,Y.useCallback)(async e=>{if(e.preventDefault(),!(M||d)){if(ne&&u&&u(V),v&&D===`character`){let e={bodyShape:v.bodyShapes[b].id,eyeStyle:v.eyeStyles[S].id,color:v.colors[T].id};P(!0);try{await j(r,e),A(null),s(e)}finally{P(!1)}}t()}},[M,d,ne,u,V,v,D,b,S,T,r,s,t]),G=v?.bodyShapes[b],K=v?.eyeStyles[S],q=v?.colors[T],ae=D===`custom`&&B,J=l!==void 0&&u?(0,X.jsx)(ve,{value:L,onChange:R,disabled:d}):null;return(0,X.jsx)(C.Root,{open:e,onOpenChange:e=>!e&&t(),children:(0,X.jsxs)(C.Content,{size:`sm`,children:[(0,X.jsx)(C.Header,{children:(0,X.jsx)(C.Title,{children:`Update Avatar`})}),(0,X.jsxs)(`form`,{className:`flex min-h-0 flex-1 flex-col`,onSubmit:re,children:[(0,X.jsx)(C.Body,{className:`space-y-4`,children:ae?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`flex justify-center`,children:(0,X.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,X.jsx)(`img`,{src:z,alt:`Uploaded avatar`,className:`h-40 w-40 rounded-xl object-cover`})})}),(0,X.jsxs)(`div`,{className:`space-y-3`,children:[J,(0,X.jsx)(ye,{label:`Use a character instead`,description:`Pick from our built-in avatars`,onClick:()=>O(`character`),thumbnail:v&&G&&K&&q?(0,X.jsx)(ie,{components:v,bodyShapeId:G.id,eyeStyleId:K.id,colorId:q.id,size:32}):(0,X.jsx)(p,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})})]})]}):v?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`flex justify-center`,children:(0,X.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,X.jsx)(ie,{components:v,bodyShapeId:G.id,eyeStyleId:K.id,colorId:q.id,size:160})})}),(0,X.jsxs)(`div`,{className:`space-y-3`,children:[J,(0,X.jsx)(be,{label:`Body`,value:G.id,onPrev:()=>x(Z(b,v.bodyShapes.length,`backward`)),onNext:()=>x(Z(b,v.bodyShapes.length,`forward`))}),(0,X.jsx)(be,{label:`Eyes`,value:K.id,onPrev:()=>w(Z(S,v.eyeStyles.length,`backward`)),onNext:()=>w(Z(S,v.eyeStyles.length,`forward`))}),(0,X.jsx)(be,{label:`Color`,value:q.id,colorHex:q.hex,onPrev:()=>E(Z(T,v.colors.length,`backward`)),onNext:()=>E(Z(T,v.colors.length,`forward`))})]}),B&&(0,X.jsx)(ye,{label:`Keep your uploaded image`,description:`Saving the character replaces it`,onClick:()=>O(`custom`),thumbnail:(0,X.jsx)(`img`,{src:z,alt:``,className:`h-8 w-8 rounded-md object-cover`})})]}):(0,X.jsxs)(X.Fragment,{children:[J,g?(0,X.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,X.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-tertiary)]`})}):(0,X.jsx)(`div`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-quiet)]`,children:`Unable to load avatar components. Make sure your assistant is running.`})]})}),(0,X.jsxs)(C.Footer,{className:`justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(n,{type:`button`,variant:`outlined`,iconOnly:(0,X.jsx)(p,{}),"aria-label":`Randomize`,tooltip:`Randomize`,onClick:H,disabled:!v}),(0,X.jsx)(n,{type:`button`,variant:`outlined`,iconOnly:(0,X.jsx)(y,{}),"aria-label":`Upload image`,tooltip:`Upload image`,onClick:U,disabled:F})]}),(0,X.jsx)(n,{type:`submit`,variant:`primary`,disabled:M||d||F,children:M||d?`Saving…`:`Save`})]})]}),(0,X.jsx)(`input`,{ref:f,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif`,className:`hidden`,onChange:W})]})})}function ve({value:e,onChange:t,disabled:n}){return(0,X.jsxs)(`label`,{className:`flex items-center justify-between gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,X.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:`Name`}),(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,X.jsx)(`div`,{className:`flex min-w-[80px] items-center justify-center`,children:(0,X.jsx)(`input`,{value:e,onChange:e=>t(e.target.value),disabled:n,maxLength:40,size:8,placeholder:`Name`,"aria-label":`Name`,className:`h-7 min-w-0 field-sizing-content bg-transparent text-center text-body-medium-default text-[var(--content-strong)] outline-none placeholder:text-[var(--content-tertiary)] disabled:cursor-not-allowed disabled:opacity-60`})}),(0,X.jsx)(`span`,{"aria-hidden":!0,className:`h-7 w-7 shrink-0`})]})]})}function ye({label:e,description:t,thumbnail:n,onClick:r}){return(0,X.jsxs)(`button`,{type:`button`,onClick:r,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2 text-left transition-colors hover:bg-[var(--surface-hover)]`,children:[(0,X.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded-md bg-[var(--surface-sunken)]`,children:n}),(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`span`,{className:`block truncate text-body-medium-default text-[var(--content-strong)]`,children:e}),(0,X.jsx)(`span`,{className:`block truncate text-body-small-default text-[var(--content-quiet)]`,children:t})]}),(0,X.jsx)(f,{className:`h-4 w-4 shrink-0 text-[var(--content-quiet)]`})]})}function be({label:e,value:t,colorHex:n,onPrev:r,onNext:i}){return(0,X.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,X.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:e}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Previous ${e.toLowerCase()}`,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,X.jsx)(d,{className:`h-4 w-4`})}),(0,X.jsxs)(`div`,{className:`flex min-w-[80px] items-center justify-center gap-2`,children:[n&&(0,X.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-[var(--border-element)]`,style:{backgroundColor:n}}),(0,X.jsx)(`span`,{className:`text-body-medium-default capitalize text-[var(--content-strong)]`,children:t})]}),(0,X.jsx)(`button`,{type:`button`,onClick:i,"aria-label":`Next ${e.toLowerCase()}`,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,X.jsx)(f,{className:`h-4 w-4`})})]})]})}function xe(e){let t=e.trim();return`<system-message>
2
2
  The user renamed you: your name is now ${t}.
3
3
 
4
4
  Update IDENTITY.md so its name line reads exactly \`- **Name:** ${t}\`. This is a rename only — keep everything else in IDENTITY.md and SOUL.md exactly as it is, and do not touch users/ (that is your user's profile, not your identity). If your name appears elsewhere in those files, update those mentions to ${t} too.