@vellumai/web 0.12.3 → 0.12.4-dev.202609231715.8da971c

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 (443) hide show
  1. package/dist/assets/{a2a-invite-YEhyUfHN.js → a2a-invite-DaxUCY1l.js} +1 -1
  2. package/dist/assets/{about-page-DQ4Ec_gj.js → about-page-oZu_0hF8.js} +1 -1
  3. package/dist/assets/{account-page-BghnPvuL.js → account-page-DBlFlvn0.js} +1 -1
  4. package/dist/assets/{account-shell-CT_g1Cvn.js → account-shell-wVNE3kAa.js} +1 -1
  5. package/dist/assets/acp-run-detail-panel-DkMp28Iu.js +3 -0
  6. package/dist/assets/activation-list-route-CFPKs1bf.js +1 -0
  7. package/dist/assets/{activity-redirect-page-XGaUoIu2.js → activity-redirect-page-BlRhry1y.js} +1 -1
  8. package/dist/assets/activity-steps-panel-B89E6ViR.js +1 -0
  9. package/dist/assets/add-credits-modal-BT5dCSKg.js +1 -0
  10. package/dist/assets/{add-credits-modal-DQewP5v-.js → add-credits-modal-DZT4hfUs.js} +1 -1
  11. package/dist/assets/ai-page-BVukTj9s.js +1 -0
  12. package/dist/assets/all-chats-page-route-BqoglC0s.js +1 -0
  13. package/dist/assets/android-billing-handoff-DA2cWc91.js +1 -0
  14. package/dist/assets/{api-key-screen-BQqbHhQW.js → api-key-screen-C_NA3KQJ.js} +1 -1
  15. package/dist/assets/app-BVWxLewL.css +2 -0
  16. package/dist/assets/app-CfGFV3sD.js +392 -0
  17. package/dist/assets/{app-info-_UBZr9dH.js → app-info-CzptuHH3.js} +1 -1
  18. package/dist/assets/archive-redirect-page-DMuzN87F.js +1 -0
  19. package/dist/assets/assistant-handle-modal---Mr7R3r.js +1 -0
  20. package/dist/assets/{assistant-inbox-BTthGy8r.js → assistant-inbox-AFXhJZXf.js} +1 -1
  21. package/dist/assets/{assistant-inbox-afWVgVXS.js → assistant-inbox-D9-fvL29.js} +1 -1
  22. package/dist/assets/{assistant-inbox-DsdFMHPG.js → assistant-inbox-SSCWu9x_.js} +1 -1
  23. package/dist/assets/{assistant-inbox-D9TUdSDf.js → assistant-inbox-i6tAJN5r.js} +1 -1
  24. package/dist/assets/assistant-inbox-page-route-AGg8cU9v.js +8 -0
  25. package/dist/assets/{assistant-inbox-upgrade-body-vP7feu0-.js → assistant-inbox-upgrade-body-B549wuze.js} +1 -1
  26. package/dist/assets/{assistant-status-panel-DyZG5B7d.js → assistant-status-panel-CynbXxZZ.js} +1 -1
  27. package/dist/assets/auth-store-BkOU6-Ys.js +1 -0
  28. package/dist/assets/{auth-welcome-screen-OOkWXm3h.js → auth-welcome-screen-BMkk6nZx.js} +1 -1
  29. package/dist/assets/avatar-bundled-components-D2_j4KBJ.js +1 -0
  30. package/dist/assets/avatar-random-DPIITfU-.js +2 -0
  31. package/dist/assets/{await-org-header-settled-BXDHXjvn.js → await-org-header-settled-Bkd5zTCk.js} +1 -1
  32. package/dist/assets/background-task-detail-panel-vCJtVHBP.js +1 -0
  33. package/dist/assets/billing-page-ChMznMJe.js +3 -0
  34. package/dist/assets/{billing-redirect-page-C8yes4JF.js → billing-redirect-page-BCy8gEgb.js} +1 -1
  35. package/dist/assets/{bookmarks-page-DMD8fJ_4.js → bookmarks-page-DpIzQ7So.js} +1 -1
  36. package/dist/assets/{bundle-confirm-page-NBQ9F6Qf.js → bundle-confirm-page-hZDac-No.js} +1 -1
  37. package/dist/assets/channel-transcript-panel-Cn6q_5fZ.js +1 -0
  38. package/dist/assets/{channels-BuZPelJ-.js → channels-DAUXet4t.js} +1 -1
  39. package/dist/assets/{channels-CuNLefDI.js → channels-DWvlrh9I.js} +1 -1
  40. package/dist/assets/{channels-D8sm_qqv.js → channels-SX3UnweO.js} +1 -1
  41. package/dist/assets/{channels-Ig5E4zAW.js → channels-XU8V0zvw.js} +1 -1
  42. package/dist/assets/channels-page-route-C18mw-qj.js +1 -0
  43. package/dist/assets/chat-BDLVd0M7.js +3 -0
  44. package/dist/assets/chat-BSMzpRUB.js +3 -0
  45. package/dist/assets/chat-DW4M6eWO.js +3 -0
  46. package/dist/assets/chat-info-panel-CkyPYd2I.js +1 -0
  47. package/dist/assets/chat-rkznz1Ws.js +3 -0
  48. package/dist/assets/checkout-continuation-BJe9jnPe.js +1 -0
  49. package/dist/assets/checkout-page-BkX7F3Dj.js +1 -0
  50. package/dist/assets/checkout-return-target-u96uwitK.js +1 -0
  51. package/dist/assets/command-palette-Dheq0M21.js +1 -0
  52. package/dist/assets/command-palette-MuqmAd5M.js +1 -0
  53. package/dist/assets/{command-palette-window-page-B7uBXbJY.js → command-palette-window-page-xTck_0mY.js} +1 -1
  54. package/dist/assets/common-An2w3UcA.js +1 -0
  55. package/dist/assets/common-BZJGmSRH.js +1 -0
  56. package/dist/assets/common-C66VXduW.js +1 -0
  57. package/dist/assets/common-CfTnXmxq.js +1 -0
  58. package/dist/assets/{community-page-B8TI9Wcd.js → community-page-CJ33FRyc.js} +1 -1
  59. package/dist/assets/{companion-accent-ggBv1xjm.js → companion-accent-b2fsYy90.js} +1 -1
  60. package/dist/assets/{companion-dock-zones-page-DK4KtiQ3.js → companion-dock-zones-page-Bt0kQOLQ.js} +1 -1
  61. package/dist/assets/companion-layout-Clamh1rY.js +1 -0
  62. package/dist/assets/{companion-popover-CgAs-3Gu.js → companion-popover-C34BUk4Q.js} +1 -1
  63. package/dist/assets/companion-popover-page-B_AKbogX.js +1 -0
  64. package/dist/assets/companion-surface-BaVVvEyn.js +1 -0
  65. package/dist/assets/companion-surface-page-CS3IgBxP.js +1 -0
  66. package/dist/assets/companion-tour-entry-D4R4elDs.js +1 -0
  67. package/dist/assets/{companion-watch-frame-page-dPkoED3s.js → companion-watch-frame-page-BdcpVWfQ.js} +1 -1
  68. package/dist/assets/connect-page-DHcR_IYK.js +1 -0
  69. package/dist/assets/{consent-controls-DfR6IsHI.js → consent-controls-z4q5wl3o.js} +1 -1
  70. package/dist/assets/contacts-Bgezwr_M.js +1 -0
  71. package/dist/assets/contacts-BiR435DJ.js +1 -0
  72. package/dist/assets/contacts-BwhLAXdB.js +1 -0
  73. package/dist/assets/contacts-D5eMWCyC.js +1 -0
  74. package/dist/assets/contacts-gateway-Do_oSKmh.js +1 -0
  75. package/dist/assets/contacts-page-route-DtNXzmE4.js +1 -0
  76. package/dist/assets/{copy-button-D4V65x9R.js → copy-button-Cru64dNQ.js} +1 -1
  77. package/dist/assets/{credential-entry-page-CC_NFEbF.js → credential-entry-page-kdb5dISB.js} +1 -1
  78. package/dist/assets/credentials-page-asrQ2-wZ.js +1 -0
  79. package/dist/assets/{csv-preview-DWddWd8B.js → csv-preview-DgTnD2wW.js} +2 -2
  80. package/dist/assets/danger-zone-redirect-page-D0PMCNuq.js +1 -0
  81. package/dist/assets/debug-page-XlHWQOYK.js +4 -0
  82. package/dist/assets/deploy-dialogs-Crs2O8of.js +1 -0
  83. package/dist/assets/deploy-dialogs-CvLXAGyd.js +1 -0
  84. package/dist/assets/{desktop-preview-content-DVu8RwqH.js → desktop-preview-content-BtkhOu58.js} +2 -2
  85. package/dist/assets/{desktop-status-D6XhFAXD.js → desktop-status-CqG4Ovvf.js} +1 -1
  86. package/dist/assets/{desktop-viewer-CwGjxDiz.js → desktop-viewer-ClxyQ7vI.js} +2 -2
  87. package/dist/assets/{detail-card-RBkdhZeE.js → detail-card-jaEuy7iJ.js} +1 -1
  88. package/dist/assets/{detail-panel-stop-button-OKauZTzu.js → detail-panel-stop-button-D9mSACk7.js} +1 -1
  89. package/dist/assets/detail-primitives-CDdAJZoz.js +1 -0
  90. package/dist/assets/developer-page-CHfN-ajP.js +1 -0
  91. package/dist/assets/devices-redirect-page-cVpqJSnb.js +1 -0
  92. package/dist/assets/{dictation-overlay-page-DWi_654w.js → dictation-overlay-page-BE6jnKDT.js} +1 -1
  93. package/dist/assets/document-load-BpP8vxSE.js +1 -0
  94. package/dist/assets/{document-load-BImJKE6b.js → document-load-Wt9id_a-.js} +1 -1
  95. package/dist/assets/document-viewer-page-BZ2zLDVk.js +1 -0
  96. package/dist/assets/{emails-page-DRgG2iU-.js → emails-page-WBhFbRwy.js} +1 -1
  97. package/dist/assets/esm-BAbvLrnN.js +2 -0
  98. package/dist/assets/{esm-DOxardAg.js → esm-BmSAJH6a.js} +1 -1
  99. package/dist/assets/esm-BoSfJLuj.js +2 -0
  100. package/dist/assets/{esm-CAEWVAik.js → esm-C1v-VYhH.js} +1 -1
  101. package/dist/assets/esm-CJgWDbDs.js +2 -0
  102. package/dist/assets/esm-Cazntu6m.js +1 -0
  103. package/dist/assets/{esm-CG0ueXyz.js → esm-DQcqu_uH.js} +2 -2
  104. package/dist/assets/esm-QoU_ujjh.js +1 -0
  105. package/dist/assets/esm-_O_c2Bm_.js +2 -0
  106. package/dist/assets/esm-cLcicJ49.js +2 -0
  107. package/dist/assets/{file-diff-view-MJLG55XC.js → file-diff-view-svHpNkRx.js} +1 -1
  108. package/dist/assets/file-view-mode-spEKogxw.js +1 -0
  109. package/dist/assets/general-page-BKtpNo0E.js +2 -0
  110. package/dist/assets/hatching-screen-NeP4DFZn.js +1 -0
  111. package/dist/assets/home-B0KFR8QE.js +1 -0
  112. package/dist/assets/home-BPYWGAAO.js +1 -0
  113. package/dist/assets/home-El2MAf4Z.js +1 -0
  114. package/dist/assets/home-_aCwRRBS.js +1 -0
  115. package/dist/assets/{hosting-screen-DCDIt-t-.js → hosting-screen-DW3hbcu-.js} +1 -1
  116. package/dist/assets/identity-page-route-YAPjlbj2.js +7 -0
  117. package/dist/assets/{inspect-page-xaoUoICP.js → inspect-page-huaW6n94.js} +5 -5
  118. package/dist/assets/integrations-page-35mNRwRt.js +1 -0
  119. package/dist/assets/{intelligence-DBi0b7qu.js → intelligence-BBTJqJDI.js} +1 -1
  120. package/dist/assets/{intelligence-CpXzEjYF.js → intelligence-Bn3Kpv7R.js} +1 -1
  121. package/dist/assets/{intelligence-DGdtAPWo.js → intelligence-Ciw2t9e_.js} +1 -1
  122. package/dist/assets/{intelligence-DNltjvNx.js → intelligence-DavP5Y6I.js} +1 -1
  123. package/dist/assets/intelligence-layout-MatIZxOO.js +1 -0
  124. package/dist/assets/intelligence-layout-slots-store-F8JfDhP4.js +1 -0
  125. package/dist/assets/keyboard-shortcuts-redirect-page-BRy7zza2.js +1 -0
  126. package/dist/assets/{latest-assistant-text-BTp150tH.js → latest-assistant-text-DUlbh8fV.js} +3 -3
  127. package/dist/assets/{library-detail-page-BzSb6IEQ.js → library-detail-page-ByTDQ8z5.js} +1 -1
  128. package/dist/assets/library-page-5foxFhQi.js +1 -0
  129. package/dist/assets/list-detail-navigation-Rjuc11dl.js +1 -0
  130. package/dist/assets/local-mode-CElFr72j.js +1 -0
  131. package/dist/assets/login-page-BiZmE2a7.js +1 -0
  132. package/dist/assets/logout-page-BfXv62Wt.js +1 -0
  133. package/dist/assets/{logs-layout-Xb4wGoWT.js → logs-layout-OnRhUcUc.js} +1 -1
  134. package/dist/assets/{markdown-preview-D0DqF7iz.js → markdown-preview-CEZxAJUV.js} +1 -1
  135. package/dist/assets/{media-preview-DZN2yf7r.js → media-preview-CZWGl0EH.js} +1 -1
  136. package/dist/assets/memory-page-route-CUK7q3q6.js +2 -0
  137. package/dist/assets/{memory-router-playground-page-DAFTIiv5.js → memory-router-playground-page-M8K6_PNq.js} +1 -1
  138. package/dist/assets/message-files-panel-BfpU73Ys.js +1 -0
  139. package/dist/assets/{metric-card-BncToo74.js → metric-card-DYnTPCIU.js} +1 -1
  140. package/dist/assets/native-attachment-pickers-zFEPGfyh.js +1 -0
  141. package/dist/assets/native-file-CBriWnVf.js +1 -0
  142. package/dist/assets/{notifications-page-C3i9p5Vc.js → notifications-page-C445DtgV.js} +1 -1
  143. package/dist/assets/{oauth-complete-page-DgqkoY_m.js → oauth-complete-page-DMZEWz6G.js} +1 -1
  144. package/dist/assets/{oauth-popup-complete-page-BmxSR325.js → oauth-popup-complete-page-D3P7QFgs.js} +1 -1
  145. package/dist/assets/paired-platform-identity-DzCbskL3.js +1 -0
  146. package/dist/assets/{pairing-page-Dsbzq7L8.js → pairing-page-D2kbjgib.js} +1 -1
  147. package/dist/assets/password-reset-page-Ch5p56qr.js +1 -0
  148. package/dist/assets/pdf-file-preview-BPdAxR7K.js +1 -0
  149. package/dist/assets/{peeking-eyes-CnCoikI6.js → peeking-eyes-DSdFFRI2.js} +1 -1
  150. package/dist/assets/personality-page-DmZuOLJ_.js +1 -0
  151. package/dist/assets/{personality-page-DKo_lJxu.js → personality-page-FyNKVqC7.js} +1 -1
  152. package/dist/assets/personality-sliders-DO_lBtRN.js +1 -0
  153. package/dist/assets/plans-page-zXAW9-lx.js +1 -0
  154. package/dist/assets/{platform-loopback-page-BzQhvfv_.js → platform-loopback-page-CkRoEWwC.js} +1 -1
  155. package/dist/assets/plugin-detail-page-BabNKClx.js +1 -0
  156. package/dist/assets/{plugins-page-Dl7GFK6d.js → plugins-page-6oaRR8m5.js} +1 -1
  157. package/dist/assets/plugins-surface-DynreCze.js +1 -0
  158. package/dist/assets/{preview-error-DuDAfoam.js → preview-error-DKdO40lX.js} +1 -1
  159. package/dist/assets/privacy-page-CDVNyBpb.js +1 -0
  160. package/dist/assets/privacy-screen-BD1W9jxj.js +1 -0
  161. package/dist/assets/profile-card-DBxVx9wt.js +1 -0
  162. package/dist/assets/{provider-callback-page-C0UGaWIw.js → provider-callback-page-BEqhXX57.js} +1 -1
  163. package/dist/assets/{provider-key-CbhZiNNN.js → provider-key-DaRizoWp.js} +1 -1
  164. package/dist/assets/{provider-signup-page-Drji-PwC.js → provider-signup-page-CXyET9r0.js} +1 -1
  165. package/dist/assets/{provisioning-targets-DdCpl6ZX.js → provisioning-targets-D0D-d7HN.js} +1 -1
  166. package/dist/assets/{quick-input-page-DmpCyTr4.js → quick-input-page-DhbrOYWy.js} +1 -1
  167. package/dist/assets/referral-modal-BoAdpS_8.js +1 -0
  168. package/dist/assets/referral-modal-S5EHfmMA.js +1 -0
  169. package/dist/assets/{rehype-katex-BYCIqkMD.js → rehype-katex-Dns5lQrg.js} +3 -3
  170. package/dist/assets/{research-mock-page-8RHdSLhH.js → research-mock-page-xNR_sPqT.js} +1 -1
  171. package/dist/assets/research-onboarding-route-7FXezwWU.js +50 -0
  172. package/dist/assets/review-terms-screen-7yMD8KAb.js +1 -0
  173. package/dist/assets/routes-5j1RUsW1.js +1 -0
  174. package/dist/assets/schedules-C6bekGEv.js +1 -0
  175. package/dist/assets/schedules-C9k3AL1g.js +1 -0
  176. package/dist/assets/schedules-Uu_Mur0J.js +1 -0
  177. package/dist/assets/schedules-page-CXmSqzyD.js +1 -0
  178. package/dist/assets/schedules-zwb9ks5-.js +1 -0
  179. package/dist/assets/security-redirect-page-DgA_70-h.js +1 -0
  180. package/dist/assets/select-assistant-screen-C6BmZj6g.js +1 -0
  181. package/dist/assets/{self-hosted-servers-Cmtr5Sxi.js → self-hosted-servers-AgbEWBCr.js} +1 -1
  182. package/dist/assets/service-form-controls-DUFEYInL.js +1 -0
  183. package/dist/assets/{setting-row-DJHlwNfk.js → setting-row-CRAu4BTW.js} +1 -1
  184. package/dist/assets/settings-By29R-tt.js +3 -0
  185. package/dist/assets/settings-DfBMlgCa.js +3 -0
  186. package/dist/assets/settings-dTaAhVzq.js +3 -0
  187. package/dist/assets/{settings-layout-BO2YTV10.js → settings-layout-CmxDfeDf.js} +1 -1
  188. package/dist/assets/settings-seKp77pn.js +3 -0
  189. package/dist/assets/share-feedback-modal-B4W_FLmg.js +1 -0
  190. package/dist/assets/share-feedback-modal-DZ9uiwjm.js +2 -0
  191. package/dist/assets/{sidebar-tree-CTzyarHJ.js → sidebar-tree-aPHhD_be.js} +1 -1
  192. package/dist/assets/{signup-page-BKvCi12D.js → signup-page-BN1Gx0Ky.js} +1 -1
  193. package/dist/assets/{signup-shell-gBjslY90.js → signup-shell-B2EK8BC0.js} +1 -1
  194. package/dist/assets/skill-detail-page-DmKdS927.js +2 -0
  195. package/dist/assets/skill-detail-panel-uQhosWOH.js +1 -0
  196. package/dist/assets/{skill-removal-dialog-CJY2_gFa.js → skill-removal-dialog-w-zWqU7r.js} +1 -1
  197. package/dist/assets/{skills-page-BkT3-aGG.js → skills-page-BZ0r07zl.js} +1 -1
  198. package/dist/assets/{sounds-page-4d7iyYdU.js → sounds-page-DPfJRInb.js} +1 -1
  199. package/dist/assets/{start-screen-BIVBGox6.js → start-screen-AwvND690.js} +1 -1
  200. package/dist/assets/step-detail-header-CBGlco6i.js +1 -0
  201. package/dist/assets/{stt-language-picker-modal-D_LD1BqB.js → stt-language-picker-modal-CE9juVQW.js} +1 -1
  202. package/dist/assets/subagent-detail-panel-Z-Hl2stN.js +1 -0
  203. package/dist/assets/superpowers-page-qQ4PDXrD.js +1 -0
  204. package/dist/assets/{system-events-page-BZ7CDi5p.js → system-events-page-BcoYsopw.js} +1 -1
  205. package/dist/assets/system-events-redirect-page-BTJXC4Jp.js +1 -0
  206. package/dist/assets/teleport-gateway-client-Bcpa3IgC.js +1 -0
  207. package/dist/assets/{text-preview-Nsx4hRjY.js → text-preview-DdcT0SKI.js} +1 -1
  208. package/dist/assets/{theme-stage-page-SR2lpWko.js → theme-stage-page-DaKiMWry.js} +1 -1
  209. package/dist/assets/{tiptap-document-editor-Dugai94Z.js → tiptap-document-editor-C53RskdL.js} +3 -3
  210. package/dist/assets/tool-detail-panel-BfPz5ovC.js +16 -0
  211. package/dist/assets/tool-detail-panel-CB_xOdhf.js +1 -0
  212. package/dist/assets/{trait-cycle-row-BF-99QGB.js → trait-cycle-row-B8UcGJfD.js} +1 -1
  213. package/dist/assets/upgrade-cancel-page-q-PyTo0d.js +1 -0
  214. package/dist/assets/{upgrade-success-page-pgUoRwgU.js → upgrade-success-page-CXnEqRBP.js} +1 -1
  215. package/dist/assets/{usage-redirect-page-gcglHutp.js → usage-redirect-page-DvBIM4I8.js} +1 -1
  216. package/dist/assets/use-app-delete-Dnuto7wi.js +1 -0
  217. package/dist/assets/use-assistant-identity-details-DwuGg7nW.js +1 -0
  218. package/dist/assets/use-checkout-dismiss-refresh-m1t4d_7W.js +1 -0
  219. package/dist/assets/use-edge-swipe-back-DthEomRf.js +1 -0
  220. package/dist/assets/{use-hotkey-recorder-Byjcx16O.js → use-hotkey-recorder-D8V7f8SB.js} +1 -1
  221. package/dist/assets/use-invite-link-dialog-BPFaQiKT.js +1 -0
  222. package/dist/assets/use-plugins-list-DMM3kkvh.js +1 -0
  223. package/dist/assets/use-return-to-short-circuit-Ch7Sqji0.js +1 -0
  224. package/dist/assets/{use-side-list-room-T8KJvH7p.js → use-side-list-room-BT-m_o7Z.js} +1 -1
  225. package/dist/assets/{use-skill-actions-DBpPjM48.js → use-skill-actions-NG2ZGWB6.js} +1 -1
  226. package/dist/assets/{use-skill-detail-files-DdP4ERwy.js → use-skill-detail-files-Em-807-i.js} +1 -1
  227. package/dist/assets/use-supports-credentials-settings-C3jMLms6.js +1 -0
  228. package/dist/assets/use-transcript-message-by-id-DmTV04eT.js +1 -0
  229. package/dist/assets/vendor-DpuHAEdZ.js +129 -0
  230. package/dist/assets/voice-page-fbBRQ5yh.js +1 -0
  231. package/dist/assets/wake-detail-panel-CnxOAifW.js +1 -0
  232. package/dist/assets/{weather-forecast-display-z2cn9Ylw.js → weather-forecast-display-r6enXZ3Y.js} +1 -1
  233. package/dist/assets/{web-Dapt-meP.js → web-By54Ivcu.js} +1 -1
  234. package/dist/assets/{web-CI3vhYW4.js → web-CBvfuYjZ.js} +1 -1
  235. package/dist/assets/{web-Ctv2Az05.js → web-CEiIjkKo.js} +1 -1
  236. package/dist/assets/{web-BYVWYFiV.js → web-CPNYU_D9.js} +1 -1
  237. package/dist/assets/{web-CvkUifWd.js → web-CVXjyRsy.js} +1 -1
  238. package/dist/assets/{web-D2TFV4O3.js → web-d_kM8xE9.js} +1 -1
  239. package/dist/assets/{web-DxZPopg-.js → web-eVQxLC5s.js} +1 -1
  240. package/dist/assets/{web-5CbNg5DV.js → web-ks_fZZXg.js} +1 -1
  241. package/dist/assets/{web-uMYezZUh.js → web-yuyRU-RT.js} +1 -1
  242. package/dist/assets/welcome-screen-BwkRlgk1.js +1 -0
  243. package/dist/assets/workflow-detail-panel-Dh5g5JqU.js +1 -0
  244. package/dist/assets/{workspace-CUWfQ3RP.js → workspace-9r2kxcHn.js} +1 -1
  245. package/dist/assets/{workspace-Dh6SfA9u.js → workspace-B0Skkbqd.js} +1 -1
  246. package/dist/assets/{workspace-DUGmDQIb.js → workspace-BDrZ4yqq.js} +1 -1
  247. package/dist/assets/{workspace-CI_A5iz2.js → workspace-DCcK9LA1.js} +1 -1
  248. package/dist/assets/workspace-page-Q135UsYX.js +1 -0
  249. package/dist/index.html +3 -3
  250. package/package.json +1 -1
  251. package/dist/assets/acp-run-detail-panel-ZMurb2U4.js +0 -3
  252. package/dist/assets/activation-list-route-B6gs5a1E.js +0 -1
  253. package/dist/assets/activity-steps-panel-oPxwforM.js +0 -1
  254. package/dist/assets/add-credits-modal-DPxdUzMN.js +0 -1
  255. package/dist/assets/ai-page-CkRPZ6AS.js +0 -1
  256. package/dist/assets/android-billing-handoff-BsKu5TdI.js +0 -1
  257. package/dist/assets/app-Bt7_4qDf.css +0 -2
  258. package/dist/assets/app-CuJb51Ub.js +0 -392
  259. package/dist/assets/archive-redirect-page-RvHNp7Bj.js +0 -1
  260. package/dist/assets/assistant-handle-modal-BRiG9i6h.js +0 -1
  261. package/dist/assets/assistant-inbox-page-route-bl3sym1B.js +0 -8
  262. package/dist/assets/auth-store-DaELMwxW.js +0 -1
  263. package/dist/assets/avatar-bundled-components-B17wqAfu.js +0 -1
  264. package/dist/assets/avatar-random-pfwnM7gG.js +0 -2
  265. package/dist/assets/background-task-detail-panel-ByKAldw1.js +0 -1
  266. package/dist/assets/billing-page-C8Kct5_W.js +0 -3
  267. package/dist/assets/channel-transcript-panel-CTebK_R-.js +0 -1
  268. package/dist/assets/channels-page-route-DdD8wtc6.js +0 -1
  269. package/dist/assets/chat-BMvgjoaE.js +0 -3
  270. package/dist/assets/chat-CuuC3zzW.js +0 -3
  271. package/dist/assets/chat-Tf6vwiZF.js +0 -3
  272. package/dist/assets/chat-XTdwAIMs.js +0 -3
  273. package/dist/assets/chat-info-panel-ZWQoXKte.js +0 -1
  274. package/dist/assets/checkout-continuation-B4jzmA7d.js +0 -1
  275. package/dist/assets/checkout-page-DXa67FMK.js +0 -1
  276. package/dist/assets/checkout-return-target-BPGhcrkl.js +0 -1
  277. package/dist/assets/command-palette-BA8nwW7R.js +0 -1
  278. package/dist/assets/command-palette-fmZyoBR-.js +0 -1
  279. package/dist/assets/common-9xzLIcrw.js +0 -1
  280. package/dist/assets/common-Bs6eHe6c.js +0 -1
  281. package/dist/assets/common-DqBxs0W6.js +0 -1
  282. package/dist/assets/common-qa5Iw8ye.js +0 -1
  283. package/dist/assets/companion-layout-BTsiJq0U.js +0 -1
  284. package/dist/assets/companion-popover-page-BeUJyhWH.js +0 -1
  285. package/dist/assets/companion-surface-page-3XNMFxTQ.js +0 -1
  286. package/dist/assets/connect-page-DbLeEQxF.js +0 -1
  287. package/dist/assets/contacts-CK3oNIfb.js +0 -1
  288. package/dist/assets/contacts-Du0mkP7C.js +0 -1
  289. package/dist/assets/contacts-MUCkcGvC.js +0 -1
  290. package/dist/assets/contacts-_nz42ZZ_.js +0 -1
  291. package/dist/assets/contacts-gateway-d-y646Z7.js +0 -1
  292. package/dist/assets/contacts-page-route-fdw7hTRm.js +0 -1
  293. package/dist/assets/credentials-page-DB9ZdkHa.js +0 -1
  294. package/dist/assets/danger-zone-redirect-page-CSRwK5IS.js +0 -1
  295. package/dist/assets/debug-page-DhHfz_7g.js +0 -4
  296. package/dist/assets/deploy-dialogs-DR-3t8lu.js +0 -1
  297. package/dist/assets/deploy-dialogs-DjptDCDt.js +0 -1
  298. package/dist/assets/detail-primitives-DUplMiby.js +0 -1
  299. package/dist/assets/developer-page-C2A5rbGd.js +0 -1
  300. package/dist/assets/devices-redirect-page-CEhKfx9w.js +0 -1
  301. package/dist/assets/document-load-DigzYkKe.js +0 -1
  302. package/dist/assets/document-viewer-page-Ba33RQu-.js +0 -1
  303. package/dist/assets/esm-BH0KFYVK.js +0 -2
  304. package/dist/assets/esm-BXFfs0Tk.js +0 -2
  305. package/dist/assets/esm-CT0ZrwJA.js +0 -2
  306. package/dist/assets/esm-KPTngYDV.js +0 -1
  307. package/dist/assets/esm-bM6TjnbQ.js +0 -2
  308. package/dist/assets/esm-baSLKmq7.js +0 -1
  309. package/dist/assets/esm-v_AdtkOG.js +0 -2
  310. package/dist/assets/file-editor-zljxVqM1.js +0 -1
  311. package/dist/assets/general-page-Cpso8KX8.js +0 -2
  312. package/dist/assets/hatching-screen-DxPhFMQU.js +0 -1
  313. package/dist/assets/home-B4mFw6dT.js +0 -1
  314. package/dist/assets/home-BzR8_HQU.js +0 -1
  315. package/dist/assets/home-CYyxII3D.js +0 -1
  316. package/dist/assets/home-CmNwqbst.js +0 -1
  317. package/dist/assets/identity-page-route-BrQVfOp-.js +0 -7
  318. package/dist/assets/integrations-page-CLoQBZkk.js +0 -1
  319. package/dist/assets/intelligence-layout-CaIcPBw8.js +0 -1
  320. package/dist/assets/intelligence-layout-slots-store-DvsrWW-i.js +0 -1
  321. package/dist/assets/keyboard-shortcuts-redirect-page-BPqjRP4K.js +0 -1
  322. package/dist/assets/library-page-CtJ9kssD.js +0 -1
  323. package/dist/assets/local-mode-CaoN0Sn7.js +0 -1
  324. package/dist/assets/login-page-BjrVlKsv.js +0 -1
  325. package/dist/assets/logout-page-DUl9JwnN.js +0 -1
  326. package/dist/assets/memory-page-route-DbTGy5dS.js +0 -2
  327. package/dist/assets/message-files-panel-BuDKGaLT.js +0 -1
  328. package/dist/assets/native-attachment-pickers-AncXy1zz.js +0 -1
  329. package/dist/assets/native-file-DM_uMrba.js +0 -1
  330. package/dist/assets/paired-platform-identity-DGOgilFb.js +0 -1
  331. package/dist/assets/password-reset-page-PdHEN7Fr.js +0 -1
  332. package/dist/assets/pdf-file-preview-CWJ0OMTa.js +0 -1
  333. package/dist/assets/personality-page-DlHUe2qc.js +0 -1
  334. package/dist/assets/personality-sliders-BqmVzcmM.js +0 -1
  335. package/dist/assets/plans-page-BpFMs8mZ.js +0 -1
  336. package/dist/assets/plugin-detail-page-rt0R_AaV.js +0 -1
  337. package/dist/assets/plugins-surface-iPrkdvkP.js +0 -1
  338. package/dist/assets/privacy-page-Bh12czrY.js +0 -1
  339. package/dist/assets/privacy-screen-Cz6H68zD.js +0 -1
  340. package/dist/assets/profile-card-J_samGMh.js +0 -1
  341. package/dist/assets/referral-modal-BSn13lRu.js +0 -1
  342. package/dist/assets/referral-modal-QJAdmDzx.js +0 -1
  343. package/dist/assets/research-onboarding-route-BqvFXKx_.js +0 -50
  344. package/dist/assets/review-terms-screen-CpSlI6us.js +0 -1
  345. package/dist/assets/routes-DRjjKNUc.js +0 -1
  346. package/dist/assets/schedules-BM8Lza7o.js +0 -1
  347. package/dist/assets/schedules-COt7uOT5.js +0 -1
  348. package/dist/assets/schedules-DR6w8i2K.js +0 -1
  349. package/dist/assets/schedules-Dusp4Vm1.js +0 -1
  350. package/dist/assets/schedules-page-B5_qnJEH.js +0 -1
  351. package/dist/assets/security-redirect-page-DDk2mqiF.js +0 -1
  352. package/dist/assets/select-assistant-screen-CFAo9xC-.js +0 -1
  353. package/dist/assets/service-form-controls-DlTzRBdL.js +0 -1
  354. package/dist/assets/settings-B3vTMNhh.js +0 -3
  355. package/dist/assets/settings-C3z9L8MJ.js +0 -3
  356. package/dist/assets/settings-DB7J6r5t.js +0 -3
  357. package/dist/assets/settings-divider-2hwVjQ2t.js +0 -1
  358. package/dist/assets/settings-fUw4hAbD.js +0 -3
  359. package/dist/assets/share-feedback-modal-BCn8wVXT.js +0 -1
  360. package/dist/assets/share-feedback-modal-bqiJ8vPh.js +0 -2
  361. package/dist/assets/skill-detail-page-zLTItuem.js +0 -2
  362. package/dist/assets/skill-detail-panel-_BKlfS5A.js +0 -1
  363. package/dist/assets/subagent-detail-panel-DxQEOvTp.js +0 -1
  364. package/dist/assets/superpowers-page-BjEYHHMk.js +0 -1
  365. package/dist/assets/system-events-redirect-page-DqVcQQuk.js +0 -1
  366. package/dist/assets/tool-detail-panel-Bj8XNtkn.js +0 -16
  367. package/dist/assets/tool-detail-panel-CwG8CQh8.js +0 -1
  368. package/dist/assets/upgrade-cancel-page-CsrYUn80.js +0 -1
  369. package/dist/assets/use-app-delete-6cqgxcYk.js +0 -1
  370. package/dist/assets/use-assistant-identity-details-CE2qbada.js +0 -1
  371. package/dist/assets/use-checkout-dismiss-refresh-DkBaF6E8.js +0 -1
  372. package/dist/assets/use-edge-swipe-back-DkP4tGf3.js +0 -1
  373. package/dist/assets/use-invite-link-dialog-EnK2z5A8.js +0 -1
  374. package/dist/assets/use-plugins-list-B6wYwnD_.js +0 -1
  375. package/dist/assets/use-return-to-short-circuit-H0BQmE_J.js +0 -1
  376. package/dist/assets/use-supports-credentials-settings-bnerf0ml.js +0 -1
  377. package/dist/assets/use-transcript-message-by-id-DMHKS6AX.js +0 -1
  378. package/dist/assets/vendor-CYmPHUS2.js +0 -127
  379. package/dist/assets/voice-page-BSofznRi.js +0 -1
  380. package/dist/assets/wake-detail-panel-BrI4U7x3.js +0 -1
  381. package/dist/assets/welcome-screen-DwN2j4Gh.js +0 -1
  382. package/dist/assets/workflow-detail-panel-nERp7IVc.js +0 -1
  383. package/dist/assets/workspace-page-CAKrqiua.js +0 -1
  384. /package/dist/assets/{account-CGF4YCs6.js → account-B-8yBrwd.js} +0 -0
  385. /package/dist/assets/{account-CJNvbYMo.js → account-DBkQR1N1.js} +0 -0
  386. /package/dist/assets/{account-BTCX8OvN.js → account-DE6rCHc8.js} +0 -0
  387. /package/dist/assets/{account-B6SZEbjB.js → account-sSfQxHuM.js} +0 -0
  388. /package/dist/assets/{activation-BIb8yZib.js → activation-BYAGAleJ.js} +0 -0
  389. /package/dist/assets/{activation-CtKKSwsj.js → activation-Ct7y1aqH.js} +0 -0
  390. /package/dist/assets/{activation-D4Z8d600.js → activation-DNTHICWu.js} +0 -0
  391. /package/dist/assets/{activation-BcmlXlki.js → activation-W1hI1PdH.js} +0 -0
  392. /package/dist/assets/{activation-tasks-BUCVYC6O.js → activation-tasks-B5m_sL_O.js} +0 -0
  393. /package/dist/assets/{activation-tasks-CxKVYvoX.js → activation-tasks-DEC1jM2E.js} +0 -0
  394. /package/dist/assets/{activation-tasks-DIl_NU8H.js → activation-tasks-K8Swziqu.js} +0 -0
  395. /package/dist/assets/{activation-tasks-0CJ2Ckhl.js → activation-tasks-bkadhkI9.js} +0 -0
  396. /package/dist/assets/{app-types-Bhv1QIYY.js → app-types-mYlFcK3s.js} +0 -0
  397. /package/dist/assets/{build.umd-D2Gn4hc9.js → build.umd-C7whurSN.js} +0 -0
  398. /package/dist/assets/{credential-requests-BE0rJ0wR.js → credential-requests-B4x_0nnw.js} +0 -0
  399. /package/dist/assets/{credential-requests-DkdgEuGe.js → credential-requests-BaapKORm.js} +0 -0
  400. /package/dist/assets/{credential-requests-DubAqUiZ.js → credential-requests-COnFKXvE.js} +0 -0
  401. /package/dist/assets/{credential-requests-Cp59Lsj5.js → credential-requests-DEPeKzSn.js} +0 -0
  402. /package/dist/assets/{definitions-DaNVCwWR.js → definitions-EvNC1i1H.js} +0 -0
  403. /package/dist/assets/{definitions-COMG0KSg.js → definitions-RERkHOnv.js} +0 -0
  404. /package/dist/assets/{diff-rows-DXG1Tw8n.js → diff-rows-u_5AB0H5.js} +0 -0
  405. /package/dist/assets/{emoji-catalog-data-CJSzZ2xi.js → emoji-catalog-data-jMbpElmp.js} +0 -0
  406. /package/dist/assets/{format-countdown-V7kp5VfL.js → format-countdown-cp3tMqZi.js} +0 -0
  407. /package/dist/assets/{format-file-size-BW7P6CE0.js → format-file-size-Bcra_NZ3.js} +0 -0
  408. /package/dist/assets/{is-record-dXfGpgI1.js → is-record-VoZP3nYK.js} +0 -0
  409. /package/dist/assets/{library-Cx2cjKPf.js → library-B5XNja29.js} +0 -0
  410. /package/dist/assets/{library-Bf8joD86.js → library-CjCDAAWf.js} +0 -0
  411. /package/dist/assets/{library-DOKbGvUV.js → library-D9jGLprz.js} +0 -0
  412. /package/dist/assets/{library-zJtAtUFf.js → library-cLjSPMCi.js} +0 -0
  413. /package/dist/assets/{link-click-Dui3RyC1.js → link-click-BJkFvMTf.js} +0 -0
  414. /package/dist/assets/{logs-BF5SeNKP.js → logs-AZ4mha9m.js} +0 -0
  415. /package/dist/assets/{logs-B5trKA2g.js → logs-CRnil-WK.js} +0 -0
  416. /package/dist/assets/{logs-xFKvsM90.js → logs-Cg4vxq16.js} +0 -0
  417. /package/dist/assets/{logs-Ax_rHiGT.js → logs-vqSamGoh.js} +0 -0
  418. /package/dist/assets/{machine-sizes-3x95p4n1.js → machine-sizes-DRutdhZf.js} +0 -0
  419. /package/dist/assets/{onboarding-Bcx45nYG.js → onboarding-C1z-jLJK.js} +0 -0
  420. /package/dist/assets/{onboarding-BKY3R-h7.js → onboarding-C7KS832A.js} +0 -0
  421. /package/dist/assets/{onboarding-xZiMELt_.js → onboarding-C9YKERII.js} +0 -0
  422. /package/dist/assets/{onboarding-DPxPqQZZ.js → onboarding-DzxS_RJ6.js} +0 -0
  423. /package/dist/assets/{onboarding-step-layout-B7jTKWhx.js → onboarding-step-layout-BKtqMP5k.js} +0 -0
  424. /package/dist/assets/{pdf-BxHYDuSN.js → pdf-C6b9L8Gs.js} +0 -0
  425. /package/dist/assets/{plugin-attribution-BxpfUKdX.js → plugin-attribution-D1fhXAwm.js} +0 -0
  426. /package/dist/assets/{radio-card-nav-DkCS-TkI.js → radio-card-nav-BIzQ1tVO.js} +0 -0
  427. /package/dist/assets/{remote-web-BNCSZhe7.js → remote-web-Bsrqx8lx.js} +0 -0
  428. /package/dist/assets/{remote-web-D7sTkxyl.js → remote-web-DK5T7c84.js} +0 -0
  429. /package/dist/assets/{remote-web-DBr-nqs0.js → remote-web-DflUd3qH.js} +0 -0
  430. /package/dist/assets/{remote-web-DLWX5CP8.js → remote-web-DjQmynHI.js} +0 -0
  431. /package/dist/assets/{schedules-Dg-sdjRQ.js → schedules-Ce1AhKdK.js} +0 -0
  432. /package/dist/assets/{signup-onboarding-handoff-eYcYQqY4.js → signup-onboarding-handoff-CJ89ezgL.js} +0 -0
  433. /package/dist/assets/{skill-icon-DcBBE55l.js → skill-icon-fqxDMS4y.js} +0 -0
  434. /package/dist/assets/{status-badge-pill-DOZpKLHj.js → status-badge-pill-ADjzXw4Q.js} +0 -0
  435. /package/dist/assets/{terminal-YHk7L5QT.js → terminal-Bey779ed.js} +0 -0
  436. /package/dist/assets/{terminal-C2Mcr7Di.js → terminal-C-Eo61oN.js} +0 -0
  437. /package/dist/assets/{terminal-B2CXYcEa.js → terminal-CKb4q9nz.js} +0 -0
  438. /package/dist/assets/{terminal-B5az4g11.js → terminal-DIh9w1Pi.js} +0 -0
  439. /package/dist/assets/{usage-window-ClzDdz34.js → usage-window-iVdxXzOI.js} +0 -0
  440. /package/dist/assets/{use-debounced-value-Dbgs3rOl.js → use-debounced-value-gcp914ed.js} +0 -0
  441. /package/dist/assets/{use-truncated-blob-text-Ch2wbCLN.js → use-truncated-blob-text-DJ8f4NCd.js} +0 -0
  442. /package/dist/assets/{xterm-BLrzNn2R.js → xterm-CpIeLcXB.js} +0 -0
  443. /package/dist/assets/{xterm-addon-fit-Dcf9juuw.js → xterm-addon-fit-Ba01Tvjs.js} +0 -0
@@ -1 +1 @@
1
- import{Cx as e,JS as t,LS as n,T_ as r,Xc as i,cn as a,fa as o,ln as s,za as c}from"./app-CuJb51Ub.js";import{j as l}from"./vendor-CYmPHUS2.js";import{f as u,r as d,t as f}from"./react-B9IgSVeK.js";import{D as p,Et as m,Yn as h,i as g,va as _}from"./icons-C0wyat6T.js";var v=f();function y(e){if(e==null)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString(void 0,{month:`short`,day:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0})}function b({t:e}){return(0,v.jsx)(n,{children:(0,v.jsxs)(`div`,{className:`flex min-h-[400px] flex-col items-center justify-center px-6 py-16 text-center`,children:[(0,v.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,v.jsx)(_,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`})}),(0,v.jsx)(`h2`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:e(`bookmarksPage.emptyTitle`)}),(0,v.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:e(`bookmarksPage.emptyDescription`)})]})})}function x({bookmark:e,isFirst:n,onOpen:r,onRemove:i,t:a}){let o=c()(e.conversationTitle),s=e.messageRole!==`user`,l=y(e.createdAt);return(0,v.jsxs)(`div`,{className:`flex items-start gap-3 py-3 ${n?``:`border-t border-[var(--border-base)]`}`,children:[(0,v.jsx)(`span`,{"aria-hidden":!0,className:`mt-1 h-8 w-1 shrink-0 rounded-full`,style:{backgroundColor:s?`var(--content-default)`:`var(--content-tertiary)`}}),(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,v.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:o}),l?(0,v.jsx)(`span`,{className:`shrink-0 text-body-small-default text-[var(--content-tertiary)]`,children:l}):null]}),e.messagePreview?(0,v.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-body-small-default text-[var(--content-tertiary)]`,children:e.messagePreview}):null]}),(0,v.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,v.jsx)(t,{variant:`outlined`,onClick:r,children:a(`bookmarksPage.open`)}),(0,v.jsx)(`button`,{type:`button`,onClick:i,title:a(`bookmarksPage.removeBookmark`),"aria-label":a(`bookmarksPage.removeBookmark`),className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-[var(--content-tertiary)] transition-colors hover:bg-[var(--surface-active)] hover:text-[var(--content-default)]`,children:(0,v.jsx)(g,{className:`h-4 w-4`})})]})]})}function S(){let{t:c}=l(`settings`),f=u(),{bookmarks:g,isLoading:_,isError:y,refetch:S}=s(),C=a(),w=o();return r.use.hydrated()&&!w?(0,v.jsx)(d,{replace:!0,to:e.settings.general}):_?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(`div`,{className:`flex min-h-[400px] items-center justify-center`,children:(0,v.jsx)(h,{className:`h-6 w-6 animate-spin text-[var(--content-disabled)]`})})}):y?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(n,{children:(0,v.jsxs)(`div`,{className:`flex min-h-[400px] flex-col items-center justify-center px-6 py-16 text-center`,children:[(0,v.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--system-negative-weak)]`,children:(0,v.jsx)(p,{className:`h-6 w-6 text-[var(--system-negative-strong)]`})}),(0,v.jsx)(`h2`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:c(`bookmarksPage.errorTitle`)}),(0,v.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:c(`bookmarksPage.errorDescription`)}),(0,v.jsxs)(t,{variant:`outlined`,onClick:S,className:`mt-4`,children:[(0,v.jsx)(m,{className:`h-4 w-4`}),c(`bookmarksPage.retry`)]})]})})}):g.length===0?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(b,{t:c})}):(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(n,{noPadding:!0,className:`px-4`,children:g.map((e,t)=>(0,v.jsx)(x,{bookmark:e,isFirst:t===0,onOpen:()=>i(f,e.conversationId,{messageId:e.messageId}),onRemove:()=>{C(e.messageId,e.conversationId,!0)},t:c},e.id))})})}export{S as BookmarksPage};
1
+ import{Ra as e,aS as t,av as n,dn as r,fn as i,fo as a,jC as o,yC as s,zl as c}from"./app-CfGFV3sD.js";import{E as l}from"./vendor-DpuHAEdZ.js";import{f as u,r as d,t as f}from"./react-B9IgSVeK.js";import{D as p,Et as m,Yn as h,i as g,va as _}from"./icons-C0wyat6T.js";var v=f();function y(e){if(e==null)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString(void 0,{month:`short`,day:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0})}function b({t:e}){return(0,v.jsx)(s,{children:(0,v.jsxs)(`div`,{className:`flex min-h-[400px] flex-col items-center justify-center px-6 py-16 text-center`,children:[(0,v.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,v.jsx)(_,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`})}),(0,v.jsx)(`h2`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:e(`bookmarksPage.emptyTitle`)}),(0,v.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:e(`bookmarksPage.emptyDescription`)})]})})}function x({bookmark:e,isFirst:t,onOpen:n,onRemove:r,t:i}){let s=a()(e.conversationTitle),c=e.messageRole!==`user`,l=y(e.createdAt);return(0,v.jsxs)(`div`,{className:`flex items-start gap-3 py-3 ${t?``:`border-t border-[var(--border-base)]`}`,children:[(0,v.jsx)(`span`,{"aria-hidden":!0,className:`mt-1 h-8 w-1 shrink-0 rounded-full`,style:{backgroundColor:c?`var(--content-default)`:`var(--content-tertiary)`}}),(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,v.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:s}),l?(0,v.jsx)(`span`,{className:`shrink-0 text-body-small-default text-[var(--content-tertiary)]`,children:l}):null]}),e.messagePreview?(0,v.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-body-small-default text-[var(--content-tertiary)]`,children:e.messagePreview}):null]}),(0,v.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,v.jsx)(o,{variant:`outlined`,onClick:n,children:i(`bookmarksPage.open`)}),(0,v.jsx)(`button`,{type:`button`,onClick:r,title:i(`bookmarksPage.removeBookmark`),"aria-label":i(`bookmarksPage.removeBookmark`),className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-[var(--content-tertiary)] transition-colors hover:bg-[var(--surface-active)] hover:text-[var(--content-default)]`,children:(0,v.jsx)(g,{className:`h-4 w-4`})})]})]})}function S(){let{t:a}=l(`settings`),f=u(),{bookmarks:g,isLoading:_,isError:y,refetch:S}=i(),C=r(),w=e();return n.use.hydrated()&&!w?(0,v.jsx)(d,{replace:!0,to:t.settings.general}):_?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(`div`,{className:`flex min-h-[400px] items-center justify-center`,children:(0,v.jsx)(h,{className:`h-6 w-6 animate-spin text-[var(--content-disabled)]`})})}):y?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(s,{children:(0,v.jsxs)(`div`,{className:`flex min-h-[400px] flex-col items-center justify-center px-6 py-16 text-center`,children:[(0,v.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--system-negative-weak)]`,children:(0,v.jsx)(p,{className:`h-6 w-6 text-[var(--system-negative-strong)]`})}),(0,v.jsx)(`h2`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:a(`bookmarksPage.errorTitle`)}),(0,v.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:a(`bookmarksPage.errorDescription`)}),(0,v.jsxs)(o,{variant:`outlined`,onClick:S,className:`mt-4`,children:[(0,v.jsx)(m,{className:`h-4 w-4`}),a(`bookmarksPage.retry`)]})]})})}):g.length===0?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(b,{t:a})}):(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(s,{noPadding:!0,className:`px-4`,children:g.map((e,t)=>(0,v.jsx)(x,{bookmark:e,isFirst:t===0,onOpen:()=>c(f,e.conversationId,{messageId:e.messageId}),onRemove:()=>{C(e.messageId,e.conversationId,!0)},t:a},e.id))})})}export{S as BookmarksPage};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{ho as t}from"./app-CuJb51Ub.js";import{j as n}from"./vendor-CYmPHUS2.js";import{t as r,x as i}from"./react-B9IgSVeK.js";import{t as a}from"./format-file-size-BW7P6CE0.js";var o=e(i(),1),s=r(),c={verified:{label:`Verified`,className:`bg-[var(--system-positive-weak)] text-[var(--system-positive-strong)]`},signed:{label:`Signed`,className:`bg-[var(--system-info-weak)] text-[var(--system-info-strong)]`},unsigned:{label:`Unsigned`,className:`bg-[var(--surface-active)] text-[var(--content-secondary)]`},tampered:{label:`Tampered — signature invalid`,className:`bg-[var(--system-negative-weak)] text-[var(--system-negative-strong)]`}};function l(){let{t:e}=n(),[r,i]=(0,o.useState)(null),[l,u]=(0,o.useState)(!1);if((0,o.useEffect)(()=>{window.vellum?.bundleConfirm?.getData().then(e=>{e&&i(e)})},[]),!r)return(0,s.jsx)(`div`,{className:`flex h-svh w-screen items-center justify-center bg-background text-muted-foreground select-none`,children:e(`bundleConfirmPage.loading`)});let{manifest:d,scanResult:f,signatureResult:p,bundleSizeBytes:m}=r,h=c[p.trustTier],g=p.trustTier===`tampered`,_=f.warnings;return(0,s.jsxs)(`div`,{className:`flex h-svh w-screen flex-col bg-background px-6 pt-14 pb-6 text-foreground select-none`,children:[(0,s.jsxs)(`div`,{className:`flex items-start gap-3`,children:[d.icon?(0,s.jsx)(`span`,{className:`text-5xl leading-none`,children:d.icon}):(0,s.jsx)(`span`,{className:`text-5xl leading-none`,children:`📦`}),(0,s.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,s.jsx)(`h1`,{className:`truncate text-lg font-semibold`,children:d.name}),d.description&&(0,s.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-sm leading-snug`,children:d.description})]})]}),(0,s.jsxs)(`div`,{className:`mt-4 flex items-center gap-2`,children:[(0,s.jsx)(`span`,{className:t(`inline-block rounded-full px-2.5 py-0.5 text-xs font-medium`,h.className),children:h.label}),p.trustTier===`signed`&&p.signerDisplayName&&(0,s.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:e(`bundleConfirmPage.bySigner`,{name:p.signerDisplayName})})]}),(0,s.jsxs)(`dl`,{className:`mt-4 grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-sm`,children:[(0,s.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`bundleConfirmPage.size`)}),(0,s.jsx)(`dd`,{children:a(m)}),(0,s.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`bundleConfirmPage.createdBy`)}),(0,s.jsx)(`dd`,{className:`truncate`,children:d.created_by}),d.capabilities.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`bundleConfirmPage.capabilities`)}),(0,s.jsx)(`dd`,{className:`truncate`,children:d.capabilities.join(`, `)})]})]}),_.length>0&&(0,s.jsxs)(`div`,{className:`mt-4`,children:[(0,s.jsx)(`button`,{type:`button`,className:`text-muted-foreground text-xs font-medium hover:underline`,onClick:()=>u(e=>!e),"aria-expanded":l,children:e(l?`bundleConfirmPage.hideWarnings`:`bundleConfirmPage.showWarnings`,{count:_.length})}),l&&(0,s.jsx)(`ul`,{className:`mt-1.5 space-y-1 text-xs`,children:_.map((e,t)=>(0,s.jsx)(`li`,{className:`rounded bg-[var(--system-mid-weak)] px-2 py-1 text-[var(--system-mid-strong)]`,children:e},t))})]}),(0,s.jsxs)(`div`,{className:`mt-auto flex items-center justify-end gap-3 pt-4`,children:[(0,s.jsx)(`button`,{type:`button`,className:`rounded-md border border-border px-4 py-1.5 text-sm font-medium text-foreground hover:bg-muted`,onClick:()=>window.vellum?.bundleConfirm?.respond(!1),children:e(`bundleConfirmPage.cancel`)}),(0,s.jsx)(`button`,{type:`button`,className:t(`rounded-md px-4 py-1.5 text-sm font-medium text-white`,g?`bg-red-600 hover:bg-red-700`:`bg-primary hover:bg-primary/90`),onClick:()=>window.vellum?.bundleConfirm?.respond(!0),children:e(g?`bundleConfirmPage.installAnyway`:`bundleConfirmPage.install`)})]})]})}export{l as BundleConfirmPage};
1
+ import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Go as t}from"./app-CfGFV3sD.js";import{E as n}from"./vendor-DpuHAEdZ.js";import{t as r,x as i}from"./react-B9IgSVeK.js";import{t as a}from"./format-file-size-Bcra_NZ3.js";var o=e(i(),1),s=r(),c={verified:{label:`Verified`,className:`bg-[var(--system-positive-weak)] text-[var(--system-positive-strong)]`},signed:{label:`Signed`,className:`bg-[var(--system-info-weak)] text-[var(--system-info-strong)]`},unsigned:{label:`Unsigned`,className:`bg-[var(--surface-active)] text-[var(--content-secondary)]`},tampered:{label:`Tampered — signature invalid`,className:`bg-[var(--system-negative-weak)] text-[var(--system-negative-strong)]`}};function l(){let{t:e}=n(),[r,i]=(0,o.useState)(null),[l,u]=(0,o.useState)(!1);if((0,o.useEffect)(()=>{window.vellum?.bundleConfirm?.getData().then(e=>{e&&i(e)})},[]),!r)return(0,s.jsx)(`div`,{className:`flex h-svh w-screen items-center justify-center bg-background text-muted-foreground select-none`,children:e(`bundleConfirmPage.loading`)});let{manifest:d,scanResult:f,signatureResult:p,bundleSizeBytes:m}=r,h=c[p.trustTier],g=p.trustTier===`tampered`,_=f.warnings;return(0,s.jsxs)(`div`,{className:`flex h-svh w-screen flex-col bg-background px-6 pt-14 pb-6 text-foreground select-none`,children:[(0,s.jsxs)(`div`,{className:`flex items-start gap-3`,children:[d.icon?(0,s.jsx)(`span`,{className:`text-5xl leading-none`,children:d.icon}):(0,s.jsx)(`span`,{className:`text-5xl leading-none`,children:`📦`}),(0,s.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,s.jsx)(`h1`,{className:`truncate text-lg font-semibold`,children:d.name}),d.description&&(0,s.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-sm leading-snug`,children:d.description})]})]}),(0,s.jsxs)(`div`,{className:`mt-4 flex items-center gap-2`,children:[(0,s.jsx)(`span`,{className:t(`inline-block rounded-full px-2.5 py-0.5 text-xs font-medium`,h.className),children:h.label}),p.trustTier===`signed`&&p.signerDisplayName&&(0,s.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:e(`bundleConfirmPage.bySigner`,{name:p.signerDisplayName})})]}),(0,s.jsxs)(`dl`,{className:`mt-4 grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-sm`,children:[(0,s.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`bundleConfirmPage.size`)}),(0,s.jsx)(`dd`,{children:a(m)}),(0,s.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`bundleConfirmPage.createdBy`)}),(0,s.jsx)(`dd`,{className:`truncate`,children:d.created_by}),d.capabilities.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`bundleConfirmPage.capabilities`)}),(0,s.jsx)(`dd`,{className:`truncate`,children:d.capabilities.join(`, `)})]})]}),_.length>0&&(0,s.jsxs)(`div`,{className:`mt-4`,children:[(0,s.jsx)(`button`,{type:`button`,className:`text-muted-foreground text-xs font-medium hover:underline`,onClick:()=>u(e=>!e),"aria-expanded":l,children:e(l?`bundleConfirmPage.hideWarnings`:`bundleConfirmPage.showWarnings`,{count:_.length})}),l&&(0,s.jsx)(`ul`,{className:`mt-1.5 space-y-1 text-xs`,children:_.map((e,t)=>(0,s.jsx)(`li`,{className:`rounded bg-[var(--system-mid-weak)] px-2 py-1 text-[var(--system-mid-strong)]`,children:e},t))})]}),(0,s.jsxs)(`div`,{className:`mt-auto flex items-center justify-end gap-3 pt-4`,children:[(0,s.jsx)(`button`,{type:`button`,className:`rounded-md border border-border px-4 py-1.5 text-sm font-medium text-foreground hover:bg-muted`,onClick:()=>window.vellum?.bundleConfirm?.respond(!1),children:e(`bundleConfirmPage.cancel`)}),(0,s.jsx)(`button`,{type:`button`,className:t(`rounded-md px-4 py-1.5 text-sm font-medium text-white`,g?`bg-red-600 hover:bg-red-700`:`bg-primary hover:bg-primary/90`),onClick:()=>window.vellum?.bundleConfirm?.respond(!0),children:e(g?`bundleConfirmPage.installAnyway`:`bundleConfirmPage.install`)})]})]})}export{l as BundleConfirmPage};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Bb as t,Bh as n,Er as r,Hx as i,JS as a,Ja as o,KS as s,Sn as c,Th as l,Ty as u,Ut as d,Vt as f,Zn as p,Zt as m,ar as h,cr as g,er as _,jC as v,oa as y,or as b,pC as x,qS as S,ra as C,sr as w,xC as T,xn as E}from"./app-CfGFV3sD.js";import{E as D}from"./vendor-DpuHAEdZ.js";import{t as O,x as k}from"./react-B9IgSVeK.js";import{Ji as A,Ya as j,Zr as M}from"./icons-C0wyat6T.js";var N=j(`corner-up-left`,[[`path`,{d:`M20 20v-7a4 4 0 0 0-4-4H4`,key:`1nkjon`}],[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}]]),P=e(k(),1),F=O();function I({entry:e,channelLabel:t,assistantName:n,isReferenced:r,onToggleReference:i}){let{t:o}=D(`chat`),c=b(e.timestamp),l=e.role===`user`?o(`channelTranscriptPanel.unknownSender`):n??o(`channelTranscriptPanel.assistantSender`),u=e.provenance.senderName??l,p=e.provenance.reaction;return(0,F.jsxs)(`article`,{"data-reveal-row":``,"data-testid":`channel-transcript-entry`,className:`group flex flex-col gap-1 rounded-lg px-2 py-2 hover:bg-[var(--surface-active)]`,children:[(0,F.jsxs)(`header`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,F.jsx)(T,{as:`span`,variant:`body-small-emphasised`,className:`min-w-0 truncate text-[var(--content-default)]`,children:u}),c?(0,F.jsx)(T,{as:`span`,variant:`body-small-lighter`,title:d(c),className:`shrink-0 text-[var(--content-tertiary)]`,children:f(c)}):null,(0,F.jsx)(`span`,{className:`flex-1`}),w(e)?(0,F.jsx)(v,{variant:`ghost`,size:`compact`,"data-reveal":``,active:r,leftIcon:r?(0,F.jsx)(A,{}):(0,F.jsx)(N,{}),onClick:()=>i(e),"aria-pressed":r,"aria-label":r?o(`channelTranscriptPanel.removeReferenceAria`):o(`channelTranscriptPanel.referenceAria`,{channel:t}),className:`shrink-0`,children:o(r?`channelTranscriptPanel.referenced`:`channelTranscriptPanel.reference`)}):null]}),p?(0,F.jsx)(T,{as:`p`,variant:`body-small-default`,className:`text-[var(--content-secondary)]`,children:o(p.op===`added`?`channelTranscriptPanel.reactionAdded`:`channelTranscriptPanel.reactionRemoved`,{emoji:m(p)})}):(0,F.jsxs)(T,{as:`div`,variant:`body-small-default`,className:`${S} mb-0`,children:[(0,F.jsx)(`span`,{"aria-hidden":`true`,className:s}),(0,F.jsx)(`span`,{className:`${a} whitespace-pre-wrap break-words`,children:e.text||o(`channelTranscriptPanel.noText`)})]})]})}function L({sidecarRef:e,threadName:t,sourceHref:n,entries:r,assistantName:i,referencedEntryId:a,onToggleReference:o,onClose:s}){let{t:c}=D(`chat`),l=y(e.channelId),d=t?c(`channelTranscriptPanel.namedTitle`,{channel:l,thread:t}):c(`channelTranscriptPanel.title`,{channel:l});return(0,F.jsx)(p,{icon:(0,F.jsx)(C,{channelId:e.channelId,className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`}),title:d,headerTrailing:(0,F.jsx)(x,{tone:`neutral`,children:c(`channelTranscriptPanel.readOnly`)}),headerActions:n?(0,F.jsx)(v,{asChild:!0,variant:`outlined`,leftIcon:(0,F.jsx)(M,{}),className:`shrink-0`,children:(0,F.jsx)(`a`,{href:n,target:`_blank`,rel:`noreferrer noopener`,onClick:e=>u(e,n),children:c(`channelTranscriptPanel.openInChannel`,{channel:l})})}):void 0,closeLabel:c(`channelTranscriptPanel.closeAria`),closeTooltip:c(`channelTranscriptPanel.closeTooltip`),onClose:s,children:(0,F.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,F.jsx)(T,{as:`p`,variant:`body-small-lighter`,className:`text-[var(--content-tertiary)]`,children:c(`channelTranscriptPanel.readOnlyNote`,{channel:l})}),r.length===0?(0,F.jsx)(_,{placement:`panel`,children:g(e.channelId)?c(`channelTranscriptPanel.emptyThread`,{channel:l}):c(`channelTranscriptPanel.emptyNoMessageDetail`,{channel:l})}):(0,F.jsx)(`div`,{className:`flex flex-col gap-1`,children:r.map(e=>(0,F.jsx)(I,{entry:e,channelLabel:l,assistantName:i,isReferenced:a===e.id,onToggleReference:o},e.id))})]})})}function R({sidecarRef:e,onClose:a}){let s=t.use.activeAssistantId(),u=n.use.activeConversationId(),{target:d,entries:f}=h({conversationId:u,conversation:o(s,u,!0),messages:r()}),p=i.use.name(),m=E.use.reference(),g=E.use.toggleReference(),_=l(d,e),v=_?f:[],b=y(e.channelId),x=(0,P.useCallback)(e=>{d&&g(c({entry:e,target:d,channelLabel:b}))},[d,g,b]);return(0,F.jsx)(L,{sidecarRef:e,threadName:_?d?.threadName:void 0,sourceHref:_?d?.sourceHref:void 0,entries:v,assistantName:p,referencedEntryId:m?.messageId??null,onToggleReference:x,onClose:a})}export{R as ChannelTranscriptPanel};
@@ -6,4 +6,4 @@ var e={drawerTitle:`渠道`,disconnectTitle:`断开 {channel} 的连接?`,disc
6
6
 
7
7
  这样做可能会给您带来经济损失,并使您面临安全和隐私漏洞。
8
8
 
9
- 请务必谨慎启用。`,confirmAction:`允许陌生人`}},s={heading:`默认访问权限`,subtitle:`{assistant}根据对话类型自行执行操作的程度。单个频道可以在下方覆盖此设置,<trustRules>信任规则</trustRules>则会微调何时进行询问。`,bucketAria:`{bucket}的默认助手访问权限`},c={defaultSuffix:`默认`,defaultPlaceholder:`默认`},l={defaultMarker:`· 默认`},u={overridesLoadFailed:`无法加载访问设置。这些控件在加载完成前将保持禁用状态。请尝试重新打开此页面。`,perChannelOverrides:`频道级覆盖设置`},d={heading:`线程行为`,selectAria:`Slack 线程行为`,mentionsOnly:`仅提及`,mentionsOnlyHelp:`机器人仅在被 @提及 时响应。`,followThreads:`首次提及后跟踪线程`,followThreadsHelp:`在线程中被 @提及后,机器人会监听该线程的其余部分。`},f={presenceHint:`在该 Slack 频道中,使用 <invite>/invite {handle}</invite> 添加,或使用 <remove>/remove {handle}</remove> 移除。此处仅显示 {assistant} 所在的频道。`,loading:`正在加载…`,loadFailed:`无法加载频道。请尝试重新打开此页面。`,emptyTitle:`暂无频道`,searchPlaceholder:`搜索频道`,searchAria:`搜索频道`,filterGroupAria:`按类型筛选频道`,noMatches:`无匹配频道。`,accessAria:`{channel} 中的助手访问权限`,filterAll:`{count, plural, other {全部 (#)}}`,filterPublic:`{count, plural, other {公开 (#)}}`,filterPrivate:`{count, plural, other {私有 (#)}}`},p={accountSid:`账户 SID`,authToken:`身份验证令牌`,authTokenPlaceholder:`Twilio 身份验证令牌`,saving:`正在保存…`,save:`保存`},m={slack:{label:`Slack`,disconnectMessage:`这将清除此助手存储的 Slack 机器人和应用令牌。您可以稍后重新连接。`},telegram:{label:`Telegram`,disconnectMessage:`这将清除此助手存储的 Telegram 机器人令牌。您可以稍后重新连接。`,disconnectedPitch:`连接 Telegram 机器人,以便 {assistant} 可以在 Telegram 上发送和接收消息。`},discord:{label:`Discord`,disconnectedPitch:`连接 Discord 机器人,以便 {assistant} 可以在您的服务器中阅读和回复消息。`,disconnectMessage:`这将清除此助手存储的 Discord 机器人令牌,并且机器人将停止接收消息。您的服务器将保留该机器人,直到您从服务器中将其移除。`},email:{label:`电子邮件`},phone:{label:`电话呼叫`,disconnectMessage:`这将清除此助手存储的 Twilio 凭据。您可以稍后重新连接。`,disconnectedPitch:`连接您的 Twilio 账户,以便 {assistant} 可以拨打和接听电话。`}},h={apiKeyConfigured:`{providerName} API 密钥已配置。要重新配置,请运行 <code>{setupSkill}</code> 技能。`,connecting:`正在连接到 Vellum 平台…`,openProvider:`打开 {providerName}`,platformLoginNotice:`登录 Vellum 平台以管理电子邮件设置。`,providerLabel:`提供商`,saveSuccessToast:`电子邮件设置已保存。`,setupInstructions:`通过助手 CLI 配置 {providerName}:要求助手运行 <code>{setupSkill}</code> 技能。它将引导您存储 API 密钥、检测域并(可选)连接入站 Webhook。`,subtitle:`配置您的助手如何发送和接收电子邮件`,title:`电子邮件`},g={addressLabel:`地址`,checkingSubscription:`正在检查订阅…`,completeSetup:`完成域名设置`,completingSetup:`正在完成设置…`,confirm:`确认`,create:`创建`,createEmailFailedFallback:`创建电子邮件地址失败。`,creating:`正在创建…`,domainLabel:`域名`,domainRegisteredToast:`域名 {domain} 已注册。`,domainReleaseFailedToast:`释放域名失败。`,domainReleasedToast:`域名已释放。`,emailAddressLabel:`电子邮件地址`,emailCreatedToast:`电子邮件地址已创建。`,emailRemoveFailedToast:`删除电子邮件地址失败。`,emailRemovedToast:`电子邮件地址已删除。`,emailUsernameAriaLabel:`电子邮件用户名`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`请输入子域名。`,enterUsernameError:`请输入电子邮件用户名。`,register:`注册`,registerDomainFailedFallback:`注册域名失败。`,registering:`正在注册…`,releaseConfirm:`释放`,releaseDomainAriaLabel:`释放域名`,releaseDomainConfirmMessage:`您确定要释放 <code>{domain}</code> 吗?该子域名将可供其他人认领。`,releaseDomainTitle:`释放域名`,removeAddressFirstToast:`请先删除电子邮件地址。`,removeConfirm:`删除`,removeEmailAriaLabel:`删除电子邮件地址`,removeEmailConfirmMessage:`您确定要删除 <code>{address}</code> 吗?您的助手将无法再通过此地址发送或接收电子邮件。`,removeEmailTitle:`删除电子邮件地址`,repairConfirmMessage:`将保留您现有的电子邮件地址。设置会为 <code>{domain}</code> 联系电子邮件提供商和 DNS。`,repairConfirmTitle:`完成域名设置?`,repairFailedFallback:`无法开始域名设置。请稍后再试。`,repairNoticeBody:`您的电子邮件地址已就绪,但此域名尚未在电子邮件提供商处设置。完成设置后即可开始发送和接收邮件。`,repairNoticeTitle:`需要设置域名`,repairStartedToast:`已开始域名设置。验证通常需要几分钟。`,retry:`重试`,setSubdomainConfirmMessage:`<code>{subdomain}</code> 也将成为您助手的公开句柄。设置后将无法更改。`,setSubdomainTitle:`设置子域名`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`子域名`,subdomainHint:`每个助手都有自己的子域名。仅限小写字母、数字和连字符。`,subdomainLabel:`子域名`,subscriptionWarningBody:`我们无法连接到计费服务。以下表单假定您的组织已启用托管电子邮件。如果未启用,注册域名将失败。`,subscriptionWarningTitle:`无法验证订阅状态`,upgradeButton:`升级`,upgradeNoticeBody:`升级到包含助手电子邮件地址的套餐。无需提供商设置。`,upgradeNoticeTitle:`为您的助手提供专属电子邮件地址`,usageSummary:`今日发送 {sent} / {limit} · 收到 {received}`},_={assistantChannelsList:e,channelAdapterList:t,connectionCard:n,slackChannelCard:r,channelPanel:i,pluginChannelPanel:a,channelTrustFloor:o,slackChannelTypeDefaults:s,tierPicker:c,slackChannelTierLegend:l,slackChannelSection:u,slackThreadBehavior:d,slackChannelList:f,twilioCredentialEntry:p,channelMeta:m,emailChannelSection:h,emailManagedContent:g};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,_ as default,h as emailChannelSection,g as emailManagedContent,a as pluginChannelPanel,r as slackChannelCard,f as slackChannelList,u as slackChannelSection,l as slackChannelTierLegend,s as slackChannelTypeDefaults,d as slackThreadBehavior,c as tierPicker,p as twilioCredentialEntry};
9
+ 请务必谨慎启用。`,confirmAction:`允许陌生人`}},s={heading:`默认访问权限`,subtitle:`{assistant}根据对话类型自行执行操作的程度。单个频道可以在下方覆盖此设置,<trustRules>信任规则</trustRules>则会微调何时进行询问。`,bucketAria:`{bucket}的默认助手访问权限`},c={defaultSuffix:`默认`,defaultPlaceholder:`默认`},l={defaultMarker:`· 默认`},u={overridesLoadFailed:`无法加载访问设置。这些控件在加载完成前将保持禁用状态。请尝试重新打开此页面。`,perChannelOverrides:`频道级覆盖设置`},d={heading:`线程行为`,selectAria:`Slack 线程行为`,mentionsOnly:`仅提及`,mentionsOnlyHelp:`机器人仅在被 @提及 时响应。`,followThreads:`首次提及后跟踪线程`,followThreadsHelp:`在线程中被 @提及后,机器人会监听该线程的其余部分。`},f={presenceHint:`在该 Slack 频道中,使用 <invite>/invite {handle}</invite> 添加,或使用 <remove>/remove {handle}</remove> 移除。此处仅显示 {assistant} 所在的频道。`,loading:`正在加载…`,loadFailed:`无法加载频道。请尝试重新打开此页面。`,emptyTitle:`暂无频道`,searchPlaceholder:`搜索频道`,searchAria:`搜索频道`,filterGroupAria:`按类型筛选频道`,noMatches:`无匹配频道。`,accessAria:`{channel} 中的助手访问权限`,filterAll:`{count, plural, other {全部 (#)}}`,filterPublic:`{count, plural, other {公开 (#)}}`,filterPrivate:`{count, plural, other {私有 (#)}}`},p={accountSid:`账户 SID`,authToken:`身份验证令牌`,authTokenPlaceholder:`Twilio 身份验证令牌`,saving:`正在保存…`,save:`保存`},m={slack:{label:`Slack`,disconnectMessage:`这将清除此助手存储的 Slack 机器人和应用令牌。您可以稍后重新连接。`},telegram:{label:`Telegram`,disconnectMessage:`这将清除此助手存储的 Telegram 机器人令牌。您可以稍后重新连接。`,disconnectedPitch:`连接 Telegram 机器人,以便 {assistant} 可以在 Telegram 上发送和接收消息。`},discord:{label:`Discord`,disconnectedPitch:`连接 Discord 机器人,以便 {assistant} 可以在您的服务器中阅读和回复消息。`,disconnectMessage:`这将清除此助手存储的 Discord 机器人令牌,并且机器人将停止接收消息。您的服务器将保留该机器人,直到您从服务器中将其移除。`},email:{label:`电子邮件`},phone:{label:`电话呼叫`,disconnectMessage:`这将清除此助手存储的 Twilio 凭据。您可以稍后重新连接。`,disconnectedPitch:`连接您的 Twilio 账户,以便 {assistant} 可以拨打和接听电话。`}},h={apiKeyConfigured:`{providerName} API 密钥已配置。要重新配置,请运行 <code>{setupSkill}</code> 技能。`,connecting:`正在连接到 Vellum 平台…`,openProvider:`打开 {providerName}`,platformLoginNotice:`登录 Vellum 平台以管理电子邮件设置。`,providerLabel:`提供商`,saveSuccessToast:`电子邮件设置已保存。`,setupInstructions:`通过助手 CLI 配置 {providerName}:要求助手运行 <code>{setupSkill}</code> 技能。它将引导您存储 API 密钥、检测域并(可选)连接入站 Webhook。`,subtitle:`配置您的助手如何发送和接收电子邮件`,title:`电子邮件`},g={addressLabel:`地址`,checkingSubscription:`正在检查订阅…`,completeSetup:`完成域名设置`,completingSetup:`正在完成设置…`,confirm:`确认`,create:`创建`,createEmailFailedFallback:`创建电子邮件地址失败。`,creating:`正在创建…`,domainLabel:`域名`,domainRegisteredToast:`域名 {domain} 已注册。`,domainReleaseFailedToast:`释放域名失败。`,domainReleasedToast:`域名已释放。`,emailAddressLabel:`电子邮件地址`,emailCreatedToast:`电子邮件地址已创建。`,emailRemoveFailedToast:`删除电子邮件地址失败。`,emailRemovedToast:`电子邮件地址已删除。`,emailUsernameAriaLabel:`电子邮件用户名`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`请输入子域名。`,enterUsernameError:`请输入电子邮件用户名。`,inboxSetupBody:`助手的地址在助手收件箱中创建,其邮件也在那里阅读。打开收件箱以选择地址。`,inboxSetupButton:`打开助手收件箱`,inboxSetupTitle:`在助手收件箱中设置电子邮件`,register:`注册`,registerDomainFailedFallback:`注册域名失败。`,registering:`正在注册…`,releaseConfirm:`释放`,releaseDomainAriaLabel:`释放域名`,releaseDomainConfirmMessage:`您确定要释放 <code>{domain}</code> 吗?该子域名将可供其他人认领。`,releaseDomainTitle:`释放域名`,removeAddressFirstToast:`请先删除电子邮件地址。`,removeConfirm:`删除`,removeEmailAriaLabel:`删除电子邮件地址`,removeEmailConfirmMessage:`您确定要删除 <code>{address}</code> 吗?您的助手将无法再通过此地址发送或接收电子邮件。`,removeEmailTitle:`删除电子邮件地址`,repairConfirmMessage:`将保留您现有的电子邮件地址。设置会为 <code>{domain}</code> 联系电子邮件提供商和 DNS。`,repairConfirmTitle:`完成域名设置?`,repairFailedFallback:`无法开始域名设置。请稍后再试。`,repairNoticeBody:`您的电子邮件地址已就绪,但此域名尚未在电子邮件提供商处设置。完成设置后即可开始发送和接收邮件。`,repairNoticeTitle:`需要设置域名`,repairStartedToast:`已开始域名设置。验证通常需要几分钟。`,retry:`重试`,setSubdomainConfirmMessage:`<code>{subdomain}</code> 也将成为您助手的公开句柄。设置后将无法更改。`,setSubdomainTitle:`设置子域名`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`子域名`,subdomainHint:`每个助手都有自己的子域名。仅限小写字母、数字和连字符。`,subdomainLabel:`子域名`,subscriptionWarningBody:`我们无法连接到计费服务。以下表单假定您的组织已启用托管电子邮件。如果未启用,注册域名将失败。`,subscriptionWarningTitle:`无法验证订阅状态`,upgradeButton:`升级`,upgradeNoticeBody:`升级到包含助手电子邮件地址的套餐。无需提供商设置。`,upgradeNoticeTitle:`为您的助手提供专属电子邮件地址`,usageSummary:`今日发送 {sent} / {limit} · 收到 {received}`},_={assistantChannelsList:e,channelAdapterList:t,connectionCard:n,slackChannelCard:r,channelPanel:i,pluginChannelPanel:a,channelTrustFloor:o,slackChannelTypeDefaults:s,tierPicker:c,slackChannelTierLegend:l,slackChannelSection:u,slackThreadBehavior:d,slackChannelList:f,twilioCredentialEntry:p,channelMeta:m,emailChannelSection:h,emailManagedContent:g};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,_ as default,h as emailChannelSection,g as emailManagedContent,a as pluginChannelPanel,r as slackChannelCard,f as slackChannelList,u as slackChannelSection,l as slackChannelTierLegend,s as slackChannelTypeDefaults,d as slackThreadBehavior,c as tierPicker,p as twilioCredentialEntry};
@@ -6,4 +6,4 @@ Ideal para canales formados solo por personas en las que ya confías.`,confirmAc
6
6
 
7
7
  Hacerlo podría costarte dinero y exponerte a vulnerabilidades de seguridad y privacidad.
8
8
 
9
- Actívalo con extrema precaución.`,confirmAction:`Permitir desconocidos`}},s={heading:`Acceso predeterminado`,subtitle:`Cuánto hace {assistant} por su cuenta, según el tipo de conversación. Cada canal puede anular esto más abajo, y las <trustRules>Reglas de confianza</trustRules> afinan cuándo pregunta.`,bucketAria:`Acceso predeterminado del asistente para {bucket}`},c={defaultSuffix:`predeterminado`,defaultPlaceholder:`Predeterminado`},l={defaultMarker:`· predeterminado`},u={overridesLoadFailed:`No se pudieron cargar los ajustes de acceso. Estos controles seguirán desactivados hasta que se carguen. Prueba a volver a abrir esta página.`,perChannelOverrides:`Anulaciones por canal`},d={heading:`Comportamiento en hilos`,selectAria:`Comportamiento de Slack en hilos`,mentionsOnly:`Solo menciones`,mentionsOnlyHelp:`El bot solo responde cuando se le menciona con @.`,followThreads:`Seguir el hilo tras la primera mención`,followThreadsHelp:`Tras una mención con @ en un hilo, el bot escucha el resto de ese hilo.`},f={presenceHint:`Añádelo con <invite>/invite {handle}</invite> o quítalo con <remove>/remove {handle}</remove> en ese canal de Slack. Aquí solo aparecen los canales en los que está {assistant}.`,loading:`Cargando…`,loadFailed:`No se pudieron cargar los canales. Prueba a volver a abrir esta página.`,emptyTitle:`Aún no hay canales`,searchPlaceholder:`Buscar canales`,searchAria:`Buscar canales`,filterGroupAria:`Filtrar canales por tipo`,noMatches:`Ningún canal coincide.`,accessAria:`Acceso del asistente en {channel}`,filterAll:`{count, plural, one {Todos (#)} other {Todos (#)}}`,filterPublic:`{count, plural, one {Público (#)} other {Públicos (#)}}`,filterPrivate:`{count, plural, one {Privado (#)} other {Privados (#)}}`},p={accountSid:`SID de la cuenta`,authToken:`Token de autenticación`,authTokenPlaceholder:`Token de autenticación de Twilio`,saving:`Guardando…`,save:`Guardar`},m={slack:{label:`Slack`,disconnectMessage:`Esto borra los tokens de bot y de aplicación de Slack guardados para este asistente. Puedes volver a conectarlo más tarde.`},telegram:{label:`Telegram`,disconnectMessage:`Esto borra el token de bot de Telegram guardado para este asistente. Puedes volver a conectarlo más tarde.`,disconnectedPitch:`Conecta un bot de Telegram para que {assistant} pueda enviar y recibir mensajes en Telegram.`},discord:{label:`Discord`,disconnectedPitch:`Conecta un bot de Discord para que {assistant} pueda leer y responder en tu servidor.`,disconnectMessage:`Esto borra el token del bot de Discord de este asistente y el bot deja de recibir mensajes. El bot sigue en tu servidor hasta que lo elimines alli.`},email:{label:`Correo`},phone:{label:`Llamadas telefónicas`,disconnectMessage:`Esto borra las credenciales de Twilio guardadas para este asistente. Puedes volver a conectarlo más tarde.`,disconnectedPitch:`Conecta tu cuenta de Twilio para que {assistant} pueda hacer y contestar llamadas.`}},h={apiKeyConfigured:`Clave API de {providerName} configurada. Para reconfigurar, ejecuta la habilidad <code>{setupSkill}</code>.`,connecting:`Conectando con la plataforma Vellum…`,openProvider:`Abrir {providerName}`,platformLoginNotice:`Inicia sesión en la plataforma Vellum para administrar la configuración de correo.`,providerLabel:`Proveedor`,saveSuccessToast:`Configuración de correo guardada.`,setupInstructions:`Configura {providerName} mediante la CLI del asistente: pídele al asistente que ejecute la habilidad <code>{setupSkill}</code>. Te guiará para guardar la clave API, detectar el dominio y (opcionalmente) configurar un webhook entrante.`,subtitle:`Configura cómo tu asistente envía y recibe correo`,title:`Correo`},g={addressLabel:`Dirección`,checkingSubscription:`Comprobando suscripción…`,completeSetup:`Completar configuración del dominio`,completingSetup:`Completando configuración…`,confirm:`Confirmar`,create:`Crear`,createEmailFailedFallback:`No se pudo crear la dirección de correo.`,creating:`Creando…`,domainLabel:`Dominio`,domainRegisteredToast:`Dominio {domain} registrado.`,domainReleaseFailedToast:`No se pudo liberar el dominio.`,domainReleasedToast:`Dominio liberado.`,emailAddressLabel:`Dirección de correo`,emailCreatedToast:`Dirección de correo creada.`,emailRemoveFailedToast:`No se pudo eliminar la dirección de correo.`,emailRemovedToast:`Dirección de correo eliminada.`,emailUsernameAriaLabel:`Nombre de usuario del correo`,emailUsernamePlaceholder:`hola`,enterSubdomainError:`Introduce un subdominio.`,enterUsernameError:`Introduce un nombre de usuario de correo.`,register:`Registrar`,registerDomainFailedFallback:`No se pudo registrar el dominio.`,registering:`Registrando…`,releaseConfirm:`Liberar`,releaseDomainAriaLabel:`Liberar dominio`,releaseDomainConfirmMessage:`¿Seguro que quieres liberar <code>{domain}</code>? El subdominio quedará disponible para que otros lo reclamen.`,releaseDomainTitle:`Liberar dominio`,removeAddressFirstToast:`Elimina primero la dirección de correo.`,removeConfirm:`Eliminar`,removeEmailAriaLabel:`Eliminar dirección de correo`,removeEmailConfirmMessage:`¿Seguro que quieres eliminar <code>{address}</code>? Tu asistente ya no podrá enviar ni recibir correo en esta dirección.`,removeEmailTitle:`Eliminar dirección de correo`,repairConfirmMessage:`Se conserva tu dirección de correo actual. La configuración contactará al proveedor de correo y al DNS de <code>{domain}</code>.`,repairConfirmTitle:`¿Completar la configuración del dominio?`,repairFailedFallback:`No se pudo iniciar la configuración del dominio. Inténtalo de nuevo en un momento.`,repairNoticeBody:`Tu dirección de correo está lista, pero este dominio aún no está configurado con el proveedor de correo. Completa la configuración para empezar a enviar y recibir correo.`,repairNoticeTitle:`Configuración del dominio requerida`,repairStartedToast:`Se inició la configuración del dominio. La verificación suele tardar unos minutos.`,retry:`Reintentar`,setSubdomainConfirmMessage:`<code>{subdomain}</code> también será el identificador público de tu asistente. No podrás cambiarlo una vez establecido.`,setSubdomainTitle:`Establecer subdominio`,subdomainExamplePlaceholder:`mi-asistente`,subdomainFallback:`subdominio`,subdomainHint:`Cada asistente tiene su propio subdominio. Solo letras minúsculas, números y guiones.`,subdomainLabel:`Subdominio`,subscriptionWarningBody:`No pudimos contactar con el servicio de facturación. El formulario siguiente asume que el correo gestionado está habilitado para tu organización. Si no lo está, registrar un dominio fallará.`,subscriptionWarningTitle:`No se pudo verificar el estado de la suscripción`,upgradeButton:`Mejorar plan`,upgradeNoticeBody:`Mejora a un plan que incluya una dirección de correo para tu asistente. No hace falta configurar un proveedor.`,upgradeNoticeTitle:`Dale a tu asistente su propia dirección de correo`,usageSummary:`{sent} / {limit} enviados hoy · {received} recibidos`},_={assistantChannelsList:e,channelAdapterList:t,connectionCard:n,slackChannelCard:r,channelPanel:i,pluginChannelPanel:a,channelTrustFloor:o,slackChannelTypeDefaults:s,tierPicker:c,slackChannelTierLegend:l,slackChannelSection:u,slackThreadBehavior:d,slackChannelList:f,twilioCredentialEntry:p,channelMeta:m,emailChannelSection:h,emailManagedContent:g};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,_ as default,h as emailChannelSection,g as emailManagedContent,a as pluginChannelPanel,r as slackChannelCard,f as slackChannelList,u as slackChannelSection,l as slackChannelTierLegend,s as slackChannelTypeDefaults,d as slackThreadBehavior,c as tierPicker,p as twilioCredentialEntry};
9
+ Actívalo con extrema precaución.`,confirmAction:`Permitir desconocidos`}},s={heading:`Acceso predeterminado`,subtitle:`Cuánto hace {assistant} por su cuenta, según el tipo de conversación. Cada canal puede anular esto más abajo, y las <trustRules>Reglas de confianza</trustRules> afinan cuándo pregunta.`,bucketAria:`Acceso predeterminado del asistente para {bucket}`},c={defaultSuffix:`predeterminado`,defaultPlaceholder:`Predeterminado`},l={defaultMarker:`· predeterminado`},u={overridesLoadFailed:`No se pudieron cargar los ajustes de acceso. Estos controles seguirán desactivados hasta que se carguen. Prueba a volver a abrir esta página.`,perChannelOverrides:`Anulaciones por canal`},d={heading:`Comportamiento en hilos`,selectAria:`Comportamiento de Slack en hilos`,mentionsOnly:`Solo menciones`,mentionsOnlyHelp:`El bot solo responde cuando se le menciona con @.`,followThreads:`Seguir el hilo tras la primera mención`,followThreadsHelp:`Tras una mención con @ en un hilo, el bot escucha el resto de ese hilo.`},f={presenceHint:`Añádelo con <invite>/invite {handle}</invite> o quítalo con <remove>/remove {handle}</remove> en ese canal de Slack. Aquí solo aparecen los canales en los que está {assistant}.`,loading:`Cargando…`,loadFailed:`No se pudieron cargar los canales. Prueba a volver a abrir esta página.`,emptyTitle:`Aún no hay canales`,searchPlaceholder:`Buscar canales`,searchAria:`Buscar canales`,filterGroupAria:`Filtrar canales por tipo`,noMatches:`Ningún canal coincide.`,accessAria:`Acceso del asistente en {channel}`,filterAll:`{count, plural, one {Todos (#)} other {Todos (#)}}`,filterPublic:`{count, plural, one {Público (#)} other {Públicos (#)}}`,filterPrivate:`{count, plural, one {Privado (#)} other {Privados (#)}}`},p={accountSid:`SID de la cuenta`,authToken:`Token de autenticación`,authTokenPlaceholder:`Token de autenticación de Twilio`,saving:`Guardando…`,save:`Guardar`},m={slack:{label:`Slack`,disconnectMessage:`Esto borra los tokens de bot y de aplicación de Slack guardados para este asistente. Puedes volver a conectarlo más tarde.`},telegram:{label:`Telegram`,disconnectMessage:`Esto borra el token de bot de Telegram guardado para este asistente. Puedes volver a conectarlo más tarde.`,disconnectedPitch:`Conecta un bot de Telegram para que {assistant} pueda enviar y recibir mensajes en Telegram.`},discord:{label:`Discord`,disconnectedPitch:`Conecta un bot de Discord para que {assistant} pueda leer y responder en tu servidor.`,disconnectMessage:`Esto borra el token del bot de Discord de este asistente y el bot deja de recibir mensajes. El bot sigue en tu servidor hasta que lo elimines alli.`},email:{label:`Correo`},phone:{label:`Llamadas telefónicas`,disconnectMessage:`Esto borra las credenciales de Twilio guardadas para este asistente. Puedes volver a conectarlo más tarde.`,disconnectedPitch:`Conecta tu cuenta de Twilio para que {assistant} pueda hacer y contestar llamadas.`}},h={apiKeyConfigured:`Clave API de {providerName} configurada. Para reconfigurar, ejecuta la habilidad <code>{setupSkill}</code>.`,connecting:`Conectando con la plataforma Vellum…`,openProvider:`Abrir {providerName}`,platformLoginNotice:`Inicia sesión en la plataforma Vellum para administrar la configuración de correo.`,providerLabel:`Proveedor`,saveSuccessToast:`Configuración de correo guardada.`,setupInstructions:`Configura {providerName} mediante la CLI del asistente: pídele al asistente que ejecute la habilidad <code>{setupSkill}</code>. Te guiará para guardar la clave API, detectar el dominio y (opcionalmente) configurar un webhook entrante.`,subtitle:`Configura cómo tu asistente envía y recibe correo`,title:`Correo`},g={addressLabel:`Dirección`,checkingSubscription:`Comprobando suscripción…`,completeSetup:`Completar configuración del dominio`,completingSetup:`Completando configuración…`,confirm:`Confirmar`,create:`Crear`,createEmailFailedFallback:`No se pudo crear la dirección de correo.`,creating:`Creando…`,domainLabel:`Dominio`,domainRegisteredToast:`Dominio {domain} registrado.`,domainReleaseFailedToast:`No se pudo liberar el dominio.`,domainReleasedToast:`Dominio liberado.`,emailAddressLabel:`Dirección de correo`,emailCreatedToast:`Dirección de correo creada.`,emailRemoveFailedToast:`No se pudo eliminar la dirección de correo.`,emailRemovedToast:`Dirección de correo eliminada.`,emailUsernameAriaLabel:`Nombre de usuario del correo`,emailUsernamePlaceholder:`hola`,enterSubdomainError:`Introduce un subdominio.`,enterUsernameError:`Introduce un nombre de usuario de correo.`,inboxSetupBody:`La dirección de tu asistente se crea desde la bandeja del asistente, donde se lee su correo. Ábrela para elegir la dirección.`,inboxSetupButton:`Abrir bandeja del asistente`,inboxSetupTitle:`Configura el correo en la bandeja del asistente`,register:`Registrar`,registerDomainFailedFallback:`No se pudo registrar el dominio.`,registering:`Registrando…`,releaseConfirm:`Liberar`,releaseDomainAriaLabel:`Liberar dominio`,releaseDomainConfirmMessage:`¿Seguro que quieres liberar <code>{domain}</code>? El subdominio quedará disponible para que otros lo reclamen.`,releaseDomainTitle:`Liberar dominio`,removeAddressFirstToast:`Elimina primero la dirección de correo.`,removeConfirm:`Eliminar`,removeEmailAriaLabel:`Eliminar dirección de correo`,removeEmailConfirmMessage:`¿Seguro que quieres eliminar <code>{address}</code>? Tu asistente ya no podrá enviar ni recibir correo en esta dirección.`,removeEmailTitle:`Eliminar dirección de correo`,repairConfirmMessage:`Se conserva tu dirección de correo actual. La configuración contactará al proveedor de correo y al DNS de <code>{domain}</code>.`,repairConfirmTitle:`¿Completar la configuración del dominio?`,repairFailedFallback:`No se pudo iniciar la configuración del dominio. Inténtalo de nuevo en un momento.`,repairNoticeBody:`Tu dirección de correo está lista, pero este dominio aún no está configurado con el proveedor de correo. Completa la configuración para empezar a enviar y recibir correo.`,repairNoticeTitle:`Configuración del dominio requerida`,repairStartedToast:`Se inició la configuración del dominio. La verificación suele tardar unos minutos.`,retry:`Reintentar`,setSubdomainConfirmMessage:`<code>{subdomain}</code> también será el identificador público de tu asistente. No podrás cambiarlo una vez establecido.`,setSubdomainTitle:`Establecer subdominio`,subdomainExamplePlaceholder:`mi-asistente`,subdomainFallback:`subdominio`,subdomainHint:`Cada asistente tiene su propio subdominio. Solo letras minúsculas, números y guiones.`,subdomainLabel:`Subdominio`,subscriptionWarningBody:`No pudimos contactar con el servicio de facturación. El formulario siguiente asume que el correo gestionado está habilitado para tu organización. Si no lo está, registrar un dominio fallará.`,subscriptionWarningTitle:`No se pudo verificar el estado de la suscripción`,upgradeButton:`Mejorar plan`,upgradeNoticeBody:`Mejora a un plan que incluya una dirección de correo para tu asistente. No hace falta configurar un proveedor.`,upgradeNoticeTitle:`Dale a tu asistente su propia dirección de correo`,usageSummary:`{sent} / {limit} enviados hoy · {received} recibidos`},_={assistantChannelsList:e,channelAdapterList:t,connectionCard:n,slackChannelCard:r,channelPanel:i,pluginChannelPanel:a,channelTrustFloor:o,slackChannelTypeDefaults:s,tierPicker:c,slackChannelTierLegend:l,slackChannelSection:u,slackThreadBehavior:d,slackChannelList:f,twilioCredentialEntry:p,channelMeta:m,emailChannelSection:h,emailManagedContent:g};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,_ as default,h as emailChannelSection,g as emailManagedContent,a as pluginChannelPanel,r as slackChannelCard,f as slackChannelList,u as slackChannelSection,l as slackChannelTierLegend,s as slackChannelTypeDefaults,d as slackThreadBehavior,c as tierPicker,p as twilioCredentialEntry};
@@ -6,4 +6,4 @@ var e={drawerTitle:`Каналы`,disconnectTitle:`Отключить {channel}?
6
6
 
7
7
  Это может стоить вам денег и открыть уязвимости безопасности и приватности.
8
8
 
9
- Включайте с крайней осторожностью.`,confirmAction:`Разрешить незнакомцев`}},s={heading:`Доступ по умолчанию`,subtitle:`Насколько самостоятельно действует {assistant} в зависимости от типа диалога. Отдельные каналы могут переопределить это ниже, а <trustRules>правила доверия</trustRules> уточняют, когда спрашивать.`,bucketAria:`Доступ ассистента по умолчанию для {bucket}`},c={defaultSuffix:`по умолчанию`,defaultPlaceholder:`По умолчанию`},l={defaultMarker:`· по умолчанию`},u={overridesLoadFailed:`Не удалось загрузить настройки доступа. Эти элементы останутся недоступны, пока данные не загрузятся. Повторите открытие страницы.`,perChannelOverrides:`Переопределения по каналам`},d={heading:`Поведение в ветках`,selectAria:`Поведение Slack в ветках`,mentionsOnly:`Только упоминания`,mentionsOnlyHelp:`Бот отвечает только когда его @упоминают.`,followThreads:`Следить за веткой после первого упоминания`,followThreadsHelp:`После @упоминания в ветке бот слушает остальную ветку.`},f={presenceHint:`Добавление через <invite>/invite {handle}</invite> или удаление через <remove>/remove {handle}</remove> в этом канале Slack. Здесь видны только каналы, в которых есть {assistant}.`,loading:`Загрузка…`,loadFailed:`Не удалось загрузить каналы. Повторите открытие страницы.`,emptyTitle:`Каналов пока нет`,searchPlaceholder:`Поиск каналов`,searchAria:`Поиск каналов`,filterGroupAria:`Фильтр каналов по типу`,noMatches:`Нет подходящих каналов.`,accessAria:`Доступ ассистента в {channel}`,filterAll:`{count, plural, one {Все (#)} few {Все (#)} many {Все (#)} other {Все (#)}}`,filterPublic:`{count, plural, one {Открытые (#)} few {Открытые (#)} many {Открытые (#)} other {Открытые (#)}}`,filterPrivate:`{count, plural, one {Закрытые (#)} few {Закрытые (#)} many {Закрытые (#)} other {Закрытые (#)}}`},p={accountSid:`Account SID`,authToken:`Auth Token`,authTokenPlaceholder:`Auth-токен Twilio`,saving:`Сохранение…`,save:`Сохранить`},m={slack:{label:`Slack`,disconnectMessage:`Это удалит сохранённые токены бота и приложения Slack для этого ассистента. Потом можно подключить снова.`},telegram:{label:`Telegram`,disconnectMessage:`Это удалит сохранённый токен бота Telegram для этого ассистента. Потом можно подключить снова.`,disconnectedPitch:`Подключение бота Telegram, чтобы {assistant} мог отправлять и получать сообщения в Telegram.`},discord:{label:`Discord`,disconnectedPitch:`Подключите бота Discord, чтобы {assistant} мог читать и отвечать на вашем сервере.`,disconnectMessage:`Это удалит сохранённый токен бота Discord, и бот перестанет получать сообщения. На сервере бот останется, пока вы не удалите его там.`},email:{label:`Почта`},phone:{label:`Телефонные звонки`,disconnectMessage:`Это удалит сохранённые учётные данные Twilio для этого ассистента. Потом можно подключить снова.`,disconnectedPitch:`Подключение аккаунта Twilio, чтобы {assistant} мог звонить и отвечать на звонки.`}},h={apiKeyConfigured:`API-ключ {providerName} настроен. Повторная настройка: запуск навыка <code>{setupSkill}</code>.`,connecting:`Подключение к платформе Vellum…`,openProvider:`Открыть {providerName}`,platformLoginNotice:`Вход на платформу Vellum для управления настройками почты.`,providerLabel:`Провайдер`,saveSuccessToast:`Настройки почты сохранены.`,setupInstructions:`Настройка {providerName} через CLI ассистента: запрос ассистенту запустить навык <code>{setupSkill}</code>. Он поможет сохранить API-ключ, определить домен и (по желанию) подключить входящий webhook.`,subtitle:`Настройка отправки и получения почты ассистентом`,title:`Почта`},g={addressLabel:`Адрес`,checkingSubscription:`Проверка подписки…`,completeSetup:`Завершить настройку домена`,completingSetup:`Завершение настройки…`,confirm:`Подтвердить`,create:`Создать`,createEmailFailedFallback:`Не удалось создать адрес почты.`,creating:`Создание…`,domainLabel:`Домен`,domainRegisteredToast:`Домен {domain} зарегистрирован.`,domainReleaseFailedToast:`Не удалось освободить домен.`,domainReleasedToast:`Домен освобождён.`,emailAddressLabel:`Адрес почты`,emailCreatedToast:`Адрес почты создан.`,emailRemoveFailedToast:`Не удалось удалить адрес почты.`,emailRemovedToast:`Адрес почты удалён.`,emailUsernameAriaLabel:`Имя пользователя почты`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`Ввод поддомена.`,enterUsernameError:`Ввод имени пользователя почты.`,register:`Зарегистрировать`,registerDomainFailedFallback:`Не удалось зарегистрировать домен.`,registering:`Регистрация…`,releaseConfirm:`Освободить`,releaseDomainAriaLabel:`Освободить домен`,releaseDomainConfirmMessage:`Точно освободить <code>{domain}</code>? Поддомен станет доступен другим.`,releaseDomainTitle:`Освободить домен`,removeAddressFirstToast:`Сначала удаление адреса почты.`,removeConfirm:`Удалить`,removeEmailAriaLabel:`Удалить адрес почты`,removeEmailConfirmMessage:`Точно удалить <code>{address}</code>? Ассистент больше не сможет отправлять и получать почту на этот адрес.`,removeEmailTitle:`Удалить адрес почты`,repairConfirmMessage:`Текущий адрес почты сохранится. Настройка обратится к почтовому провайдеру и DNS для <code>{domain}</code>.`,repairConfirmTitle:`Завершить настройку домена?`,repairFailedFallback:`Не удалось начать настройку домена. Повторите попытку через минуту.`,repairNoticeBody:`Адрес почты уже есть, но домен ещё не настроен у почтового провайдера. Завершите настройку, чтобы отправлять и получать письма.`,repairNoticeTitle:`Нужна настройка домена`,repairStartedToast:`Настройка домена начата. Проверка обычно занимает несколько минут.`,retry:`Повторить`,setSubdomainConfirmMessage:`<code>{subdomain}</code> также станет публичным идентификатором ассистента. После установки его нельзя сменить.`,setSubdomainTitle:`Задать поддомен`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`поддомен`,subdomainHint:`У каждого ассистента свой поддомен. Только строчные латинские буквы, цифры и дефисы.`,subdomainLabel:`Поддомен`,subscriptionWarningBody:`Не удалось связаться со службой оплаты. Форма ниже считает, что управляемая почта включена для организации. Если это не так, регистрация домена не сработает.`,subscriptionWarningTitle:`Не удалось проверить статус подписки`,upgradeButton:`Повысить план`,upgradeNoticeBody:`Переход на план, в котором у ассистента есть свой адрес почты. Настраивать провайдера не нужно.`,upgradeNoticeTitle:`Адрес почты для ассистента`,usageSummary:`сегодня отправлено {sent} / {limit} · получено {received}`},_={assistantChannelsList:e,channelAdapterList:t,connectionCard:n,slackChannelCard:r,channelPanel:i,pluginChannelPanel:a,channelTrustFloor:o,slackChannelTypeDefaults:s,tierPicker:c,slackChannelTierLegend:l,slackChannelSection:u,slackThreadBehavior:d,slackChannelList:f,twilioCredentialEntry:p,channelMeta:m,emailChannelSection:h,emailManagedContent:g};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,_ as default,h as emailChannelSection,g as emailManagedContent,a as pluginChannelPanel,r as slackChannelCard,f as slackChannelList,u as slackChannelSection,l as slackChannelTierLegend,s as slackChannelTypeDefaults,d as slackThreadBehavior,c as tierPicker,p as twilioCredentialEntry};
9
+ Включайте с крайней осторожностью.`,confirmAction:`Разрешить незнакомцев`}},s={heading:`Доступ по умолчанию`,subtitle:`Насколько самостоятельно действует {assistant} в зависимости от типа диалога. Отдельные каналы могут переопределить это ниже, а <trustRules>правила доверия</trustRules> уточняют, когда спрашивать.`,bucketAria:`Доступ ассистента по умолчанию для {bucket}`},c={defaultSuffix:`по умолчанию`,defaultPlaceholder:`По умолчанию`},l={defaultMarker:`· по умолчанию`},u={overridesLoadFailed:`Не удалось загрузить настройки доступа. Эти элементы останутся недоступны, пока данные не загрузятся. Повторите открытие страницы.`,perChannelOverrides:`Переопределения по каналам`},d={heading:`Поведение в ветках`,selectAria:`Поведение Slack в ветках`,mentionsOnly:`Только упоминания`,mentionsOnlyHelp:`Бот отвечает только когда его @упоминают.`,followThreads:`Следить за веткой после первого упоминания`,followThreadsHelp:`После @упоминания в ветке бот слушает остальную ветку.`},f={presenceHint:`Добавление через <invite>/invite {handle}</invite> или удаление через <remove>/remove {handle}</remove> в этом канале Slack. Здесь видны только каналы, в которых есть {assistant}.`,loading:`Загрузка…`,loadFailed:`Не удалось загрузить каналы. Повторите открытие страницы.`,emptyTitle:`Каналов пока нет`,searchPlaceholder:`Поиск каналов`,searchAria:`Поиск каналов`,filterGroupAria:`Фильтр каналов по типу`,noMatches:`Нет подходящих каналов.`,accessAria:`Доступ ассистента в {channel}`,filterAll:`{count, plural, one {Все (#)} few {Все (#)} many {Все (#)} other {Все (#)}}`,filterPublic:`{count, plural, one {Открытые (#)} few {Открытые (#)} many {Открытые (#)} other {Открытые (#)}}`,filterPrivate:`{count, plural, one {Закрытые (#)} few {Закрытые (#)} many {Закрытые (#)} other {Закрытые (#)}}`},p={accountSid:`Account SID`,authToken:`Auth Token`,authTokenPlaceholder:`Auth-токен Twilio`,saving:`Сохранение…`,save:`Сохранить`},m={slack:{label:`Slack`,disconnectMessage:`Это удалит сохранённые токены бота и приложения Slack для этого ассистента. Потом можно подключить снова.`},telegram:{label:`Telegram`,disconnectMessage:`Это удалит сохранённый токен бота Telegram для этого ассистента. Потом можно подключить снова.`,disconnectedPitch:`Подключение бота Telegram, чтобы {assistant} мог отправлять и получать сообщения в Telegram.`},discord:{label:`Discord`,disconnectedPitch:`Подключите бота Discord, чтобы {assistant} мог читать и отвечать на вашем сервере.`,disconnectMessage:`Это удалит сохранённый токен бота Discord, и бот перестанет получать сообщения. На сервере бот останется, пока вы не удалите его там.`},email:{label:`Почта`},phone:{label:`Телефонные звонки`,disconnectMessage:`Это удалит сохранённые учётные данные Twilio для этого ассистента. Потом можно подключить снова.`,disconnectedPitch:`Подключение аккаунта Twilio, чтобы {assistant} мог звонить и отвечать на звонки.`}},h={apiKeyConfigured:`API-ключ {providerName} настроен. Повторная настройка: запуск навыка <code>{setupSkill}</code>.`,connecting:`Подключение к платформе Vellum…`,openProvider:`Открыть {providerName}`,platformLoginNotice:`Вход на платформу Vellum для управления настройками почты.`,providerLabel:`Провайдер`,saveSuccessToast:`Настройки почты сохранены.`,setupInstructions:`Настройка {providerName} через CLI ассистента: запрос ассистенту запустить навык <code>{setupSkill}</code>. Он поможет сохранить API-ключ, определить домен и (по желанию) подключить входящий webhook.`,subtitle:`Настройка отправки и получения почты ассистентом`,title:`Почта`},g={addressLabel:`Адрес`,checkingSubscription:`Проверка подписки…`,completeSetup:`Завершить настройку домена`,completingSetup:`Завершение настройки…`,confirm:`Подтвердить`,create:`Создать`,createEmailFailedFallback:`Не удалось создать адрес почты.`,creating:`Создание…`,domainLabel:`Домен`,domainRegisteredToast:`Домен {domain} зарегистрирован.`,domainReleaseFailedToast:`Не удалось освободить домен.`,domainReleasedToast:`Домен освобождён.`,emailAddressLabel:`Адрес почты`,emailCreatedToast:`Адрес почты создан.`,emailRemoveFailedToast:`Не удалось удалить адрес почты.`,emailRemovedToast:`Адрес почты удалён.`,emailUsernameAriaLabel:`Имя пользователя почты`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`Ввод поддомена.`,enterUsernameError:`Ввод имени пользователя почты.`,inboxSetupBody:`Адрес ассистента создаётся в разделе «Почта ассистента», где читается его почта. Откройте его, чтобы выбрать адрес.`,inboxSetupButton:`Открыть почту ассистента`,inboxSetupTitle:`Настройте почту в разделе «Почта ассистента»`,register:`Зарегистрировать`,registerDomainFailedFallback:`Не удалось зарегистрировать домен.`,registering:`Регистрация…`,releaseConfirm:`Освободить`,releaseDomainAriaLabel:`Освободить домен`,releaseDomainConfirmMessage:`Точно освободить <code>{domain}</code>? Поддомен станет доступен другим.`,releaseDomainTitle:`Освободить домен`,removeAddressFirstToast:`Сначала удаление адреса почты.`,removeConfirm:`Удалить`,removeEmailAriaLabel:`Удалить адрес почты`,removeEmailConfirmMessage:`Точно удалить <code>{address}</code>? Ассистент больше не сможет отправлять и получать почту на этот адрес.`,removeEmailTitle:`Удалить адрес почты`,repairConfirmMessage:`Текущий адрес почты сохранится. Настройка обратится к почтовому провайдеру и DNS для <code>{domain}</code>.`,repairConfirmTitle:`Завершить настройку домена?`,repairFailedFallback:`Не удалось начать настройку домена. Повторите попытку через минуту.`,repairNoticeBody:`Адрес почты уже есть, но домен ещё не настроен у почтового провайдера. Завершите настройку, чтобы отправлять и получать письма.`,repairNoticeTitle:`Нужна настройка домена`,repairStartedToast:`Настройка домена начата. Проверка обычно занимает несколько минут.`,retry:`Повторить`,setSubdomainConfirmMessage:`<code>{subdomain}</code> также станет публичным идентификатором ассистента. После установки его нельзя сменить.`,setSubdomainTitle:`Задать поддомен`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`поддомен`,subdomainHint:`У каждого ассистента свой поддомен. Только строчные латинские буквы, цифры и дефисы.`,subdomainLabel:`Поддомен`,subscriptionWarningBody:`Не удалось связаться со службой оплаты. Форма ниже считает, что управляемая почта включена для организации. Если это не так, регистрация домена не сработает.`,subscriptionWarningTitle:`Не удалось проверить статус подписки`,upgradeButton:`Повысить план`,upgradeNoticeBody:`Переход на план, в котором у ассистента есть свой адрес почты. Настраивать провайдера не нужно.`,upgradeNoticeTitle:`Адрес почты для ассистента`,usageSummary:`сегодня отправлено {sent} / {limit} · получено {received}`},_={assistantChannelsList:e,channelAdapterList:t,connectionCard:n,slackChannelCard:r,channelPanel:i,pluginChannelPanel:a,channelTrustFloor:o,slackChannelTypeDefaults:s,tierPicker:c,slackChannelTierLegend:l,slackChannelSection:u,slackThreadBehavior:d,slackChannelList:f,twilioCredentialEntry:p,channelMeta:m,emailChannelSection:h,emailManagedContent:g};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,_ as default,h as emailChannelSection,g as emailManagedContent,a as pluginChannelPanel,r as slackChannelCard,f as slackChannelList,u as slackChannelSection,l as slackChannelTierLegend,s as slackChannelTypeDefaults,d as slackThreadBehavior,c as tierPicker,p as twilioCredentialEntry};
@@ -6,4 +6,4 @@ var e={drawerTitle:`頻道`,disconnectTitle:`中斷 {channel} 的連線?`,disc
6
6
 
7
7
  這樣做可能會讓您蒙受金錢損失,並使您面臨安全和隱私漏洞。
8
8
 
9
- 請務必謹慎啟用。`,confirmAction:`允許陌生人`}},s={heading:`預設存取權`,subtitle:`{assistant} 根據對話類型自行執行的程度。個別頻道可以在下方覆寫此設定,而 <trustRules>信任規則</trustRules> 則會微調何時進行詢問。`,bucketAria:`{bucket} 的預設助理存取權`},c={defaultSuffix:`預設`,defaultPlaceholder:`預設`},l={defaultMarker:`· 預設`},u={overridesLoadFailed:`無法載入存取設定。這些控制項在載入完成前將保持停用狀態。請嘗試重新開啟此頁面。`,perChannelOverrides:`每個頻道的覆寫設定`},d={heading:`執行緒行為`,selectAria:`Slack 執行緒行為`,mentionsOnly:`僅提及`,mentionsOnlyHelp:`機器人僅在被 @提及時回應。`,followThreads:`首次提及後追蹤執行緒`,followThreadsHelp:`在執行緒中被 @提及後,機器人會監聽該執行緒的其餘部分。`},f={presenceHint:`在該 Slack 頻道中,使用 <invite>/invite {handle}</invite> 新增,或使用 <remove>/remove {handle}</remove> 移除。此處僅顯示 {assistant} 所在的頻道。`,loading:`正在載入…`,loadFailed:`無法載入頻道。請嘗試重新開啟此頁面。`,emptyTitle:`尚未有頻道`,searchPlaceholder:`搜尋頻道`,searchAria:`搜尋頻道`,filterGroupAria:`依類型篩選頻道`,noMatches:`無符合的頻道。`,accessAria:`{channel} 中的助理存取權`,filterAll:`{count, plural, other {全部 (#)}}`,filterPublic:`{count, plural, other {公開 (#)}}`,filterPrivate:`{count, plural, other {私人 (#)}}`},p={accountSid:`帳號 SID`,authToken:`驗證權杖`,authTokenPlaceholder:`Twilio 驗證權杖`,saving:`正在儲存…`,save:`儲存`},m={slack:{label:`Slack`,disconnectMessage:`這會清除此助理儲存的 Slack 機器人與應用程式權杖。您可以稍後重新連線。`},telegram:{label:`Telegram`,disconnectMessage:`這會清除此助理儲存的 Telegram 機器人權杖。您可以稍後重新連線。`,disconnectedPitch:`連線 Telegram 機器人,讓 {assistant} 可以在 Telegram 上傳送及接收訊息。`},discord:{label:`Discord`,disconnectedPitch:`連線 Discord 機器人,讓 {assistant} 可以在您的伺服器中讀取及回覆。`,disconnectMessage:`這會清除此助理儲存的 Discord 機器人權杖,且機器人將停止接收訊息。您的伺服器會保留該機器人,直到您從伺服器中移除為止。`},email:{label:`電子郵件`},phone:{label:`電話通話`,disconnectMessage:`這會清除此助理儲存的 Twilio 憑證。您可以稍後重新連線。`,disconnectedPitch:`連線您的 Twilio 帳號,讓 {assistant} 可以撥打及接聽電話。`}},h={apiKeyConfigured:`{providerName} API 金鑰已設定。若要重新設定,請執行 <code>{setupSkill}</code> 技能。`,connecting:`正在連線至 Vellum 平台…`,openProvider:`開啟 {providerName}`,platformLoginNotice:`登入 Vellum 平台以管理電子郵件設定。`,providerLabel:`供應商`,saveSuccessToast:`電子郵件設定已儲存。`,setupInstructions:`透過助理 CLI 設定 {providerName}:要求助理執行 <code>{setupSkill}</code> 技能。它會引導您儲存 API 金鑰、偵測網域,以及 (選用) 設定傳入 Webhook。`,subtitle:`設定您的助理如何傳送及接收電子郵件`,title:`電子郵件`},g={addressLabel:`地址`,checkingSubscription:`正在檢查訂閱…`,completeSetup:`完成網域設定`,completingSetup:`正在完成設定…`,confirm:`確認`,create:`建立`,createEmailFailedFallback:`建立電子郵件地址失敗。`,creating:`正在建立…`,domainLabel:`網域`,domainRegisteredToast:`網域 {domain} 已註冊。`,domainReleaseFailedToast:`釋出網域失敗。`,domainReleasedToast:`網域已釋出。`,emailAddressLabel:`電子郵件地址`,emailCreatedToast:`電子郵件地址已建立。`,emailRemoveFailedToast:`移除電子郵件地址失敗。`,emailRemovedToast:`電子郵件地址已移除。`,emailUsernameAriaLabel:`電子郵件使用者名稱`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`請輸入子網域。`,enterUsernameError:`請輸入電子郵件使用者名稱。`,register:`註冊`,registerDomainFailedFallback:`註冊網域失敗。`,registering:`正在註冊…`,releaseConfirm:`釋出`,releaseDomainAriaLabel:`釋出網域`,releaseDomainConfirmMessage:`您確定要釋出 <code>{domain}</code> 嗎?此子網域將可供其他人認領。`,releaseDomainTitle:`釋出網域`,removeAddressFirstToast:`請先移除電子郵件地址。`,removeConfirm:`移除`,removeEmailAriaLabel:`移除電子郵件地址`,removeEmailConfirmMessage:`您確定要移除 <code>{address}</code> 嗎?您的助理將無法再透過此地址傳送或接收電子郵件。`,removeEmailTitle:`移除電子郵件地址`,repairConfirmMessage:`將保留您現有的電子郵件地址。設定會為 <code>{domain}</code> 聯絡電子郵件供應商和 DNS。`,repairConfirmTitle:`完成網域設定?`,repairFailedFallback:`無法開始網域設定。請稍後再試。`,repairNoticeBody:`您的電子郵件地址已就緒,但此網域尚未在電子郵件供應商處設定。完成設定後即可開始傳送和接收郵件。`,repairNoticeTitle:`需要設定網域`,repairStartedToast:`已開始網域設定。驗證通常需要幾分鐘。`,retry:`重試`,setSubdomainConfirmMessage:`<code>{subdomain}</code> 也將成為您助理的公開識別碼。設定後便無法變更。`,setSubdomainTitle:`設定子網域`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`子網域`,subdomainHint:`每個助理都有自己的子網域。僅限小寫字母、數字和連字號。`,subdomainLabel:`子網域`,subscriptionWarningBody:`我們無法連線至帳務服務。以下表單假設您的組織已啟用受管理的電子郵件。如果未啟用,註冊網域將會失敗。`,subscriptionWarningTitle:`無法驗證訂閱狀態`,upgradeButton:`升級`,upgradeNoticeBody:`升級至包含助理電子郵件地址的方案。無需供應商設定。`,upgradeNoticeTitle:`為您的助理提供專屬電子郵件地址`,usageSummary:`今日已傳送 {sent} / {limit} · 已接收 {received}`},_={assistantChannelsList:e,channelAdapterList:t,connectionCard:n,slackChannelCard:r,channelPanel:i,pluginChannelPanel:a,channelTrustFloor:o,slackChannelTypeDefaults:s,tierPicker:c,slackChannelTierLegend:l,slackChannelSection:u,slackThreadBehavior:d,slackChannelList:f,twilioCredentialEntry:p,channelMeta:m,emailChannelSection:h,emailManagedContent:g};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,_ as default,h as emailChannelSection,g as emailManagedContent,a as pluginChannelPanel,r as slackChannelCard,f as slackChannelList,u as slackChannelSection,l as slackChannelTierLegend,s as slackChannelTypeDefaults,d as slackThreadBehavior,c as tierPicker,p as twilioCredentialEntry};
9
+ 請務必謹慎啟用。`,confirmAction:`允許陌生人`}},s={heading:`預設存取權`,subtitle:`{assistant} 根據對話類型自行執行的程度。個別頻道可以在下方覆寫此設定,而 <trustRules>信任規則</trustRules> 則會微調何時進行詢問。`,bucketAria:`{bucket} 的預設助理存取權`},c={defaultSuffix:`預設`,defaultPlaceholder:`預設`},l={defaultMarker:`· 預設`},u={overridesLoadFailed:`無法載入存取設定。這些控制項在載入完成前將保持停用狀態。請嘗試重新開啟此頁面。`,perChannelOverrides:`每個頻道的覆寫設定`},d={heading:`執行緒行為`,selectAria:`Slack 執行緒行為`,mentionsOnly:`僅提及`,mentionsOnlyHelp:`機器人僅在被 @提及時回應。`,followThreads:`首次提及後追蹤執行緒`,followThreadsHelp:`在執行緒中被 @提及後,機器人會監聽該執行緒的其餘部分。`},f={presenceHint:`在該 Slack 頻道中,使用 <invite>/invite {handle}</invite> 新增,或使用 <remove>/remove {handle}</remove> 移除。此處僅顯示 {assistant} 所在的頻道。`,loading:`正在載入…`,loadFailed:`無法載入頻道。請嘗試重新開啟此頁面。`,emptyTitle:`尚未有頻道`,searchPlaceholder:`搜尋頻道`,searchAria:`搜尋頻道`,filterGroupAria:`依類型篩選頻道`,noMatches:`無符合的頻道。`,accessAria:`{channel} 中的助理存取權`,filterAll:`{count, plural, other {全部 (#)}}`,filterPublic:`{count, plural, other {公開 (#)}}`,filterPrivate:`{count, plural, other {私人 (#)}}`},p={accountSid:`帳號 SID`,authToken:`驗證權杖`,authTokenPlaceholder:`Twilio 驗證權杖`,saving:`正在儲存…`,save:`儲存`},m={slack:{label:`Slack`,disconnectMessage:`這會清除此助理儲存的 Slack 機器人與應用程式權杖。您可以稍後重新連線。`},telegram:{label:`Telegram`,disconnectMessage:`這會清除此助理儲存的 Telegram 機器人權杖。您可以稍後重新連線。`,disconnectedPitch:`連線 Telegram 機器人,讓 {assistant} 可以在 Telegram 上傳送及接收訊息。`},discord:{label:`Discord`,disconnectedPitch:`連線 Discord 機器人,讓 {assistant} 可以在您的伺服器中讀取及回覆。`,disconnectMessage:`這會清除此助理儲存的 Discord 機器人權杖,且機器人將停止接收訊息。您的伺服器會保留該機器人,直到您從伺服器中移除為止。`},email:{label:`電子郵件`},phone:{label:`電話通話`,disconnectMessage:`這會清除此助理儲存的 Twilio 憑證。您可以稍後重新連線。`,disconnectedPitch:`連線您的 Twilio 帳號,讓 {assistant} 可以撥打及接聽電話。`}},h={apiKeyConfigured:`{providerName} API 金鑰已設定。若要重新設定,請執行 <code>{setupSkill}</code> 技能。`,connecting:`正在連線至 Vellum 平台…`,openProvider:`開啟 {providerName}`,platformLoginNotice:`登入 Vellum 平台以管理電子郵件設定。`,providerLabel:`供應商`,saveSuccessToast:`電子郵件設定已儲存。`,setupInstructions:`透過助理 CLI 設定 {providerName}:要求助理執行 <code>{setupSkill}</code> 技能。它會引導您儲存 API 金鑰、偵測網域,以及 (選用) 設定傳入 Webhook。`,subtitle:`設定您的助理如何傳送及接收電子郵件`,title:`電子郵件`},g={addressLabel:`地址`,checkingSubscription:`正在檢查訂閱…`,completeSetup:`完成網域設定`,completingSetup:`正在完成設定…`,confirm:`確認`,create:`建立`,createEmailFailedFallback:`建立電子郵件地址失敗。`,creating:`正在建立…`,domainLabel:`網域`,domainRegisteredToast:`網域 {domain} 已註冊。`,domainReleaseFailedToast:`釋出網域失敗。`,domainReleasedToast:`網域已釋出。`,emailAddressLabel:`電子郵件地址`,emailCreatedToast:`電子郵件地址已建立。`,emailRemoveFailedToast:`移除電子郵件地址失敗。`,emailRemovedToast:`電子郵件地址已移除。`,emailUsernameAriaLabel:`電子郵件使用者名稱`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`請輸入子網域。`,enterUsernameError:`請輸入電子郵件使用者名稱。`,inboxSetupBody:`助理的地址在助理收件匣中建立,其郵件也在那裡閱讀。開啟收件匣以選擇地址。`,inboxSetupButton:`開啟助理收件匣`,inboxSetupTitle:`在助理收件匣中設定電子郵件`,register:`註冊`,registerDomainFailedFallback:`註冊網域失敗。`,registering:`正在註冊…`,releaseConfirm:`釋出`,releaseDomainAriaLabel:`釋出網域`,releaseDomainConfirmMessage:`您確定要釋出 <code>{domain}</code> 嗎?此子網域將可供其他人認領。`,releaseDomainTitle:`釋出網域`,removeAddressFirstToast:`請先移除電子郵件地址。`,removeConfirm:`移除`,removeEmailAriaLabel:`移除電子郵件地址`,removeEmailConfirmMessage:`您確定要移除 <code>{address}</code> 嗎?您的助理將無法再透過此地址傳送或接收電子郵件。`,removeEmailTitle:`移除電子郵件地址`,repairConfirmMessage:`將保留您現有的電子郵件地址。設定會為 <code>{domain}</code> 聯絡電子郵件供應商和 DNS。`,repairConfirmTitle:`完成網域設定?`,repairFailedFallback:`無法開始網域設定。請稍後再試。`,repairNoticeBody:`您的電子郵件地址已就緒,但此網域尚未在電子郵件供應商處設定。完成設定後即可開始傳送和接收郵件。`,repairNoticeTitle:`需要設定網域`,repairStartedToast:`已開始網域設定。驗證通常需要幾分鐘。`,retry:`重試`,setSubdomainConfirmMessage:`<code>{subdomain}</code> 也將成為您助理的公開識別碼。設定後便無法變更。`,setSubdomainTitle:`設定子網域`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`子網域`,subdomainHint:`每個助理都有自己的子網域。僅限小寫字母、數字和連字號。`,subdomainLabel:`子網域`,subscriptionWarningBody:`我們無法連線至帳務服務。以下表單假設您的組織已啟用受管理的電子郵件。如果未啟用,註冊網域將會失敗。`,subscriptionWarningTitle:`無法驗證訂閱狀態`,upgradeButton:`升級`,upgradeNoticeBody:`升級至包含助理電子郵件地址的方案。無需供應商設定。`,upgradeNoticeTitle:`為您的助理提供專屬電子郵件地址`,usageSummary:`今日已傳送 {sent} / {limit} · 已接收 {received}`},_={assistantChannelsList:e,channelAdapterList:t,connectionCard:n,slackChannelCard:r,channelPanel:i,pluginChannelPanel:a,channelTrustFloor:o,slackChannelTypeDefaults:s,tierPicker:c,slackChannelTierLegend:l,slackChannelSection:u,slackThreadBehavior:d,slackChannelList:f,twilioCredentialEntry:p,channelMeta:m,emailChannelSection:h,emailManagedContent:g};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,_ as default,h as emailChannelSection,g as emailManagedContent,a as pluginChannelPanel,r as slackChannelCard,f as slackChannelList,u as slackChannelSection,l as slackChannelTierLegend,s as slackChannelTypeDefaults,d as slackThreadBehavior,c as tierPicker,p as twilioCredentialEntry};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{$f as t,$s as n,Ad as r,Bl as i,C as a,Cf as o,Cn as s,Cu as c,Cy as l,D as u,DS as d,Du as f,E as p,Es as m,Eu as h,FC as g,Ff as _,Fh as v,Gi as y,H as b,HS as x,Hx as ee,If as S,Ih as C,Ki as w,LS as T,Lf as E,Lh as te,Mp as D,Mu as O,Mv as k,NC as A,Nh as ne,Np as j,Nv as M,O as re,Ou as N,Ph as P,Pv as ie,QS as F,Qf as ae,Rf as I,S as L,Sf as oe,Sg as R,Su as se,T as z,TC as ce,Tu as le,U as B,Ui as ue,VS as V,Vm as de,W as H,YS as U,ZS as fe,Zf as pe,_u as me,aS as he,ac as ge,av as _e,b as W,bu as ve,dC as ye,ec as be,ep as xe,gS as Se,hs as Ce,iC as we,ia as Te,ic as Ee,jC as G,jp as De,ju as Oe,jv as ke,kp as Ae,ku as je,mS as Me,ms as Ne,nc as Pe,nh as Fe,nt as Ie,oa as Le,oc as Re,pC as ze,qs as Be,rC as Ve,ra as He,rc as Ue,sC as We,sa as Ge,tC as Ke,tc as qe,vC as Je,vS as Ye,vu as Xe,wS as Ze,wi as Qe,wu as $e,x as et,xC as K,xS as tt,xu as nt,xv as rt,y as it,yC as q,yS as at,yd as ot,yu as st,zf as ct}from"./app-CfGFV3sD.js";import{$n as J,E as Y,O as X,Xn as Z,nr as lt}from"./vendor-DpuHAEdZ.js";import{_ as ut,d as dt,f as ft,h as pt,n as mt,t as ht,x as gt}from"./react-B9IgSVeK.js";import{A as _t,Dn as vt,Ji as yt,Rt as bt,Ui as xt,Vn as St,Yn as Ct,Zr as wt,br as Tt,fr as Et,on as Dt,qi as Ot,qn as kt,vt as At,wi as jt,zi as Mt}from"./icons-C0wyat6T.js";import{n as Nt,t as Pt}from"./assistant-inbox-upgrade-body-B549wuze.js";import{t as Ft}from"./detail-card-jaEuy7iJ.js";import{t as It}from"./assistant-handle-modal---Mr7R3r.js";import{n as Lt,r as Rt,t as zt}from"./use-side-list-room-BT-m_o7Z.js";import{i as Bt,r as Vt}from"./service-form-controls-DUFEYInL.js";import{i as Ht,n as Ut,r as Wt,t as Gt}from"./use-invite-link-dialog-BPFaQiKT.js";var Q=e(gt(),1);function Kt(){let{channelId:e}=pt(),t=ft(),{search:n}=dt();return{selected:e,select:(0,Q.useCallback)(e=>{t({pathname:`/assistant/channels/${encodeURIComponent(e)}`,search:n},{replace:!0})},[t,n])}}var $=ht();function qt({channels:e,pluginChannels:t=[],selectedKey:n,onSelect:r}){return(0,$.jsx)(q.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,$.jsx)(q.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[e.map(e=>(0,$.jsx)(Jt,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key)),t.map(e=>(0,$.jsx)(Yt,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key))]})})})}function Jt({channel:e,selected:t,onClick:n}){let r=e.status===`ready`,i=Le(e.key),a=r?`Connected`:`Not connected`;return(0,$.jsx)(ce,{asChild:!0,active:t,"aria-label":`${i}, ${a}`,children:(0,$.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,$.jsx)(He,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:i}),(0,$.jsx)(`span`,{className:`flex shrink-0 items-center`,children:(0,$.jsx)(ze,{tone:r?`positive`:`neutral`,children:a})})]})})}function Yt({channel:e,selected:t,onClick:n}){let{t:r}=Y(`channels`);return(0,$.jsx)(ce,{asChild:!0,active:t,"aria-label":r(`channelAdapterList.pluginChannelAria`,{channel:e.label}),children:(0,$.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,$.jsx)(Te,{icon:e.icon,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:e.label}),(0,$.jsx)(bt,{"aria-hidden":!0,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`})]})})}function Xt({icon:e,title:t,description:n,action:r,className:i}){return(0,$.jsxs)(`div`,{className:g(`flex flex-col items-center justify-center gap-3 px-4 py-12 text-center`,i),children:[e?(0,$.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-xl bg-[var(--surface-sunken)] text-[var(--content-tertiary)]`,children:e}):null,(0,$.jsx)(`h3`,{className:`text-title-small text-[var(--content-default)]`,children:t}),n?(0,$.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:n}):null,r?(0,$.jsx)(`div`,{className:`mt-1`,children:r}):null]})}var Zt=[`no_one`,`guardian_only`,`trusted_contacts`,`any_contact`,`strangers`],Qt=new Set([`platform`,`a2a`]),$t=new Set([`vellum`,`whatsapp`]);function en(e){return $t.has(e)}var tn={no_one:{labelKey:`channelTrustFloor.noOne.label`,descriptionKey:`channelTrustFloor.noOne.description`,confirm:{titleKey:`channelTrustFloor.noOne.confirmTitle`,messageKey:`channelTrustFloor.noOne.confirmMessage`,actionKey:`channelTrustFloor.noOne.confirmAction`,destructive:!0}},guardian_only:{labelKey:`channelTrustFloor.guardianOnly.label`,descriptionKey:`channelTrustFloor.guardianOnly.description`,confirm:void 0},trusted_contacts:{labelKey:`channelTrustFloor.trustedContacts.label`,descriptionKey:`channelTrustFloor.trustedContacts.description`,confirm:void 0},any_contact:{labelKey:`channelTrustFloor.anyContact.label`,descriptionKey:`channelTrustFloor.anyContact.description`,confirm:{titleKey:`channelTrustFloor.anyContact.confirmTitle`,messageKey:`channelTrustFloor.anyContact.confirmMessage`,actionKey:`channelTrustFloor.anyContact.confirmAction`,destructive:!1}},strangers:{labelKey:`channelTrustFloor.strangers.label`,descriptionKey:`channelTrustFloor.strangers.description`,confirm:{titleKey:`channelTrustFloor.strangers.confirmTitle`,messageKey:`channelTrustFloor.strangers.confirmMessage`,actionKey:`channelTrustFloor.strangers.confirmAction`,destructive:!0}}};function nn({assistantDisplayName:e,policy:t,saving:n=!1,loading:r=!1,error:i=!1,onChange:a}){let{t:o}=Y(`channels`),s=t??`trusted_contacts`,c=Zt.map(t=>({value:t,label:o(tn[t].labelKey),tooltip:o(tn[t].descriptionKey,{assistant:e})})),[l,u]=(0,Q.useState)(null),d=l?tn[l].confirm:void 0;return(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,$.jsx)(K,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:o(`channelTrustFloor.heading`,{assistant:e})}),r?(0,$.jsx)(K,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:o(`channelTrustFloor.loading`)}):i?(0,$.jsx)(K,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--system-negative-strong)]`,children:o(`channelTrustFloor.loadFailed`)}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{style:{maxWidth:280},children:(0,$.jsx)(U,{value:s,onChange:e=>{if(tn[e].confirm){u(e);return}a(e)},options:c,disabled:n,"aria-label":o(`channelTrustFloor.selectAria`,{assistant:e})})}),(0,$.jsx)(K,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:o(tn[s].descriptionKey,{assistant:e})}),s===`trusted_contacts`?(0,$.jsx)(Je,{tone:`info`,className:`max-w-lg`,children:o(`channelTrustFloor.trustedContactsNotice`,{assistant:e})}):null]}),(0,$.jsx)(fe,{open:l!==null,title:d?o(d.titleKey):``,message:d?o(d.messageKey):``,confirmLabel:o(d?d.actionKey:`channelTrustFloor.confirmFallback`),destructive:d?.destructive??!1,onConfirm:()=>{l&&a(l),u(null)},onCancel:()=>u(null)})]})}function rn({mode:e,onChange:t}){let{t:n}=Y(`common`);return(0,$.jsx)(`div`,{className:`max-w-[280px]`,children:(0,$.jsx)(Ke,{ariaLabel:n(`serviceCard.modeToggleAriaLabel`),value:e,onChange:t,items:[{value:`managed`,label:n(`serviceCard.managedLabel`)},{value:`your-own`,label:n(`serviceCard.yourOwnLabel`)}]})})}function an({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,$.jsxs)(Ft,{id:e,title:t,subtitle:n,accessory:(0,$.jsx)(rn,{mode:r,onChange:i}),children:[(0,$.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,$.jsx)(`div`,{className:`mt-4`,children:a})]})}function on(e,t){return e===`managed`||e===`your-own`?e:t}function sn({align:e=`center`}){let{t}=Y(`assistant-inbox`),{hidden:n,restore:r}=ue();return n?(0,$.jsxs)(`div`,{className:g(`flex flex-wrap items-center gap-x-2 gap-y-1 text-body-small-lighter text-[var(--content-tertiary)]`,e===`center`?`justify-center`:`justify-start`),children:[(0,$.jsx)(`span`,{children:t(`inboxRailRestore.hiddenNote`)}),(0,$.jsx)(G,{variant:`ghost`,size:`compact`,leftIcon:(0,$.jsx)(Dt,{}),onClick:()=>{r(),F.success(t(`inboxRailRestore.restoredToast`))},children:t(`inboxRailRestore.restoreButton`)})]}):null}function cn({subdomain:e,onSubdomainChange:t,domainSuffix:n,subdomainPlaceholder:r=`my-assistant`,disabled:i,autoFocus:a,prefix:o,error:s,locked:c,lockedMessage:l}){let{t:u}=Y(`settings`);return(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex h-9 w-full items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${s?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[o,(0,$.jsx)(`input`,{value:e,onChange:e=>t(e.target.value.toLowerCase().trim()),disabled:i||c,readOnly:c,autoFocus:a,placeholder:r,"aria-label":u(`domainField.subdomainAriaLabel`),"aria-invalid":!!s,className:`h-full min-w-0 flex-1 bg-transparent ${o?`pl-1.5`:`pl-3`} pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none disabled:cursor-not-allowed disabled:opacity-60`}),(0,$.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`.`,n]})]}),s&&(0,$.jsx)(`p`,{className:`mt-1.5 text-body-small-default text-[var(--system-negative-strong)]`,children:s}),c&&l&&(0,$.jsx)(`p`,{className:`mt-1.5 text-body-small-default text-[var(--content-tertiary)]`,children:l})]})}function ln({status:e,isLoading:t}){let{t:n}=Y(`common`);return t?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,children:[(0,$.jsx)(Ct,{className:`h-3 w-3 animate-spin`}),n(`domainVerificationChip.checkingDomain`)]}):!e||e===`unknown`?(0,$.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,title:n(`domainVerificationChip.unknownStatusTitle`),children:n(`domainVerificationChip.unknownStatus`)}):e===`verified`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-positive-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-positive-strong)]`,title:n(`domainVerificationChip.verifiedTitle`),children:[(0,$.jsx)(yt,{className:`h-3 w-3`}),n(`domainVerificationChip.domainVerified`)]}):e===`pending`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-mid-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-mid-strong)]`,title:n(`domainVerificationChip.verifyingTitle`),children:[(0,$.jsx)(jt,{className:`h-3 w-3`}),n(`domainVerificationChip.verifyingDomain`)]}):e===`not_started`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-negative-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,title:n(`domainVerificationChip.setupRequiredTitle`),children:[(0,$.jsx)(xt,{className:`h-3 w-3`}),n(`domainVerificationChip.setupRequired`)]}):(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-negative-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,title:n(`domainVerificationChip.failedTitle`),children:[(0,$.jsx)(xt,{className:`h-3 w-3`}),n(`domainVerificationChip.verificationFailed`)]})}var un=`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,dn=1e4;function fn(e){return e===`verified`||e===`failed`||e===`not_started`?!1:dn}function pn({assistantId:e,assistantHandle:n,emailRootDomain:i}){let{t:a}=Y(`channels`),o=lt(),s=ft(),[l,u]=ut(),[d,p]=(0,Q.useState)(``),[m,g]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(null),[y,b]=(0,Q.useState)(``),[x,S]=(0,Q.useState)(null),[C,w]=(0,Q.useState)(!1),[T,E]=(0,Q.useState)(!1),[te,D]=(0,Q.useState)(!1),[k,A]=(0,Q.useState)(!1),[ne,j]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{m||!n||d||(p(n),g(!0))},[n,m,d]);let M=J({...ot(),enabled:!0}),re=M.data,P=re?.entitlements,ie=P?.managed_email===!0,ae=!!P&&!ie,I=!re&&M.isError&&!M.isFetching,L=J({...st({path:{assistant_id:e}}),enabled:!ae}),oe=J({...h({path:{assistant_id:e}}),enabled:!ae}),R=L.data?.results?.[0],z=oe.data?.results?.[0],ce=R?`${R.subdomain}.${i}`:null,B=J({...N({path:{assistant_id:e,id:z?.id??``}}),enabled:!!z?.id,refetchOnWindowFocus:!1}),ue=J({...nt({path:{assistant_id:e,id:R?.id??``}}),enabled:!!R?.id,refetchInterval:e=>fn(e.state.data?.status),refetchOnWindowFocus:!0});(0,Q.useEffect)(()=>{l.get(`release`)!==`1`||!R||z||(E(!0),u(e=>{let t=new URLSearchParams(e);return t.delete(`release`),t},{replace:!0}))},[z,R,l,u]);let V=Z(me()),de=Z(Xe()),H=r(),U=Z($e()),pe=Z(le()),ge=Z(xe()),W=(0,Q.useCallback)(()=>{let t={assistant_id:e};o.invalidateQueries({queryKey:ve({path:t})}),o.invalidateQueries({queryKey:f({path:t})}),z?.id&&o.invalidateQueries({queryKey:je({path:{...t,id:z.id}})}),o.invalidateQueries({queryKey:O()})},[z?.id,e,o]),ye=Ie(),be=ee.use.name(),Se=_e.use.assistantInbox(),Ce=It(ye),we=ge.mutateAsync,Te=(0,Q.useCallback)(()=>{we({path:{assistant_id:ye},body:{channel:`email`}}).catch(()=>{}).finally(()=>{o.invalidateQueries({queryKey:t({path:{assistant_id:ye}})})})},[ye,o,we]),Ee=(0,Q.useCallback)(async()=>{let t=d.trim().toLowerCase();if(!t){v(a(`emailManagedContent.enterSubdomainError`));return}w(!1);try{await V.mutateAsync({path:{assistant_id:e},body:{subdomain:t}}),p(``),v(null),W(),F.success(a(`emailManagedContent.domainRegisteredToast`,{domain:`${t}.${i}`}))}catch(e){v(tt(e,void 0,a(`emailManagedContent.registerDomainFailedFallback`)))}},[e,i,W,V,d,a]),De=(0,Q.useCallback)(async()=>{let t=y.trim().toLowerCase();if(!t){S(a(`emailManagedContent.enterUsernameError`));return}try{await U.mutateAsync({path:{assistant_id:e},body:{username:t}}),b(``),S(null),W(),Te(),F.success(a(`emailManagedContent.emailCreatedToast`))}catch(e){S(tt(e,void 0,a(`emailManagedContent.createEmailFailedFallback`)))}},[e,W,Te,U,y,a]),Oe=(0,Q.useCallback)(async()=>{if(z?.id){D(!1);try{await pe.mutateAsync({path:{assistant_id:e,id:z.id}}),W(),Te(),F.success(a(`emailManagedContent.emailRemovedToast`))}catch(e){Me(e,{context:`email_address_delete`}),F.error(a(`emailManagedContent.emailRemoveFailedToast`))}}},[z?.id,e,pe,W,Te,a]),ke=(0,Q.useCallback)(async()=>{if(!(!R?.id||H.isPending)){j(null);try{let t=await H.mutateAsync({path:{assistant_id:e,id:R.id}});A(!1),c(o,{path:{assistant_id:e,id:R.id}},t),o.invalidateQueries({queryKey:se({path:{assistant_id:e,id:R.id}})}),F.success(a(`emailManagedContent.repairStartedToast`))}catch(e){Me(e,{context:`email_domain_provision`});let t=tt(e,void 0,a(`emailManagedContent.repairFailedFallback`));j(t),F.error(t)}}},[e,R?.id,H,o,a]),Ae=(0,Q.useCallback)(async()=>{if(!R?.id)return;if(z){F.error(a(`emailManagedContent.removeAddressFirstToast`));return}E(!1);let t=R.subdomain;try{await de.mutateAsync({path:{assistant_id:e,id:R.id}}),p(t),W(),F.success(a(`emailManagedContent.domainReleasedToast`))}catch(e){Me(e,{context:`email_domain_release`}),F.error(a(`emailManagedContent.domainReleaseFailedToast`))}},[z,e,de,R?.id,R?.subdomain,W,a]);if(M.isLoading)return(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(Ct,{className:`h-4 w-4 animate-spin`}),a(`emailManagedContent.checkingSubscription`)]});if(ae&&Se)return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Pt,{assistantId:ye,assistantName:be??``,handle:n??``,rootDomain:i,onEditHandle:Ce.openModal??void 0,onUpgrade:()=>s(he.plans),onSeePlans:()=>s(he.plans),footnote:(0,$.jsx)(sn,{align:`start`}),align:`start`}),Ce.modal]});if(ae)return(0,$.jsx)(Je,{tone:`info`,icon:(0,$.jsx)(St,{className:`h-4 w-4`,"aria-hidden":!0}),title:a(`emailManagedContent.upgradeNoticeTitle`),actions:(0,$.jsx)(G,{size:`compact`,onClick:()=>s(he.plans),children:a(`emailManagedContent.upgradeButton`)}),children:a(`emailManagedContent.upgradeNoticeBody`)});let Ne=I?(0,$.jsx)(Je,{tone:`warning`,title:a(`emailManagedContent.subscriptionWarningTitle`),actions:(0,$.jsx)(G,{size:`compact`,variant:`outlined`,onClick:()=>M.refetch(),children:a(`emailManagedContent.retry`)}),children:a(`emailManagedContent.subscriptionWarningBody`)}):null,Pe=Se?(0,$.jsx)(Je,{tone:`info`,icon:(0,$.jsx)(St,{className:`h-4 w-4`,"aria-hidden":!0}),title:a(`emailManagedContent.inboxSetupTitle`),actions:(0,$.jsx)(G,{size:`compact`,onClick:()=>s(he.assistantInbox),"data-testid":`email-inbox-setup-button`,children:a(`emailManagedContent.inboxSetupButton`)}),children:a(`emailManagedContent.inboxSetupBody`)}):null;return R?z?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[Ne,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.addressLabel`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:z.address}),(0,$.jsx)(ln,{status:ue.data?.status,isLoading:ue.isLoading}),(0,$.jsx)(G,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(_t,{}),onClick:()=>D(!0),disabled:pe.isPending,"aria-label":a(`emailManagedContent.removeEmailAriaLabel`)})]}),(0,$.jsx)(fe,{open:te,title:a(`emailManagedContent.removeEmailTitle`),message:(0,$.jsx)(X,{i18nKey:`emailManagedContent.removeEmailConfirmMessage`,ns:`channels`,values:{address:z.address},components:{code:(0,$.jsx)(`code`,{className:un})}}),confirmLabel:a(`emailManagedContent.removeConfirm`),destructive:!0,onConfirm:Oe,onCancel:()=>D(!1)})]}),ue.data?.status===`not_started`&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Je,{tone:`warning`,title:a(`emailManagedContent.repairNoticeTitle`),actions:(0,$.jsx)(G,{size:`compact`,onClick:()=>{j(null),A(!0)},disabled:H.isPending,children:H.isPending?a(`emailManagedContent.completingSetup`):a(`emailManagedContent.completeSetup`)}),children:a(`emailManagedContent.repairNoticeBody`)}),(0,$.jsx)(fe,{open:k,title:a(`emailManagedContent.repairConfirmTitle`),message:(0,$.jsx)(X,{i18nKey:`emailManagedContent.repairConfirmMessage`,ns:`channels`,values:{domain:ce},components:{code:(0,$.jsx)(`code`,{className:un})}}),confirmLabel:a(`emailManagedContent.completeSetup`),isPending:H.isPending,error:ne,onConfirm:()=>{ke()},onCancel:()=>{H.isPending||A(!1)}})]}),B.data?.usage&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.usageSummary`,{sent:B.data.usage.sent_today,limit:B.data.usage.daily_limit,received:B.data.usage.received_today})})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[Ne,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.domainLabel`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:[R.subdomain,`.`,i]}),(0,$.jsx)(ln,{status:ue.data?.status,isLoading:ue.isLoading}),(0,$.jsx)(G,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(_t,{}),onClick:()=>E(!0),disabled:de.isPending,"aria-label":a(`emailManagedContent.releaseDomainAriaLabel`)})]}),(0,$.jsx)(fe,{open:T,title:a(`emailManagedContent.releaseDomainTitle`),message:(0,$.jsx)(X,{i18nKey:`emailManagedContent.releaseDomainConfirmMessage`,ns:`channels`,values:{domain:`${R.subdomain}.${i}`},components:{code:(0,$.jsx)(`code`,{className:un})}}),confirmLabel:a(`emailManagedContent.releaseConfirm`),destructive:!0,onConfirm:Ae,onCancel:()=>E(!1)})]}),Pe??(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.emailAddressLabel`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex h-9 min-w-0 flex-1 items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${x?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[(0,$.jsx)(`input`,{value:y,onChange:e=>{b(e.target.value.toLowerCase()),x&&S(null)},placeholder:a(`emailManagedContent.emailUsernamePlaceholder`),"aria-label":a(`emailManagedContent.emailUsernameAriaLabel`),"aria-invalid":!!x,className:`h-full min-w-0 flex-1 bg-transparent pl-3 pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`}),(0,$.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`@`,ce]})]}),(0,$.jsx)(G,{onClick:De,disabled:U.isPending||!y.trim(),children:U.isPending?a(`emailManagedContent.creating`):a(`emailManagedContent.create`)})]}),x&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:x})]})]}):Pe?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[Ne,Pe]}):(0,$.jsxs)(`div`,{className:`space-y-3`,children:[Ne,(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.subdomainLabel`)}),(0,$.jsx)(cn,{subdomain:d,onSubdomainChange:e=>{p(e),_&&v(null)},domainSuffix:i,subdomainPlaceholder:a(`emailManagedContent.subdomainExamplePlaceholder`),error:_}),(0,$.jsx)(`p`,{className:`text-body-small-lighter text-[var(--content-tertiary)]`,children:a(`emailManagedContent.subdomainHint`)}),(0,$.jsx)(G,{onClick:()=>w(!0),disabled:V.isPending||!d.trim(),children:V.isPending?a(`emailManagedContent.registering`):a(`emailManagedContent.register`)}),(0,$.jsx)(fe,{open:C,title:a(`emailManagedContent.setSubdomainTitle`),message:(0,$.jsx)(X,{i18nKey:`emailManagedContent.setSubdomainConfirmMessage`,ns:`channels`,values:{subdomain:d.trim().toLowerCase()||a(`emailManagedContent.subdomainFallback`)},components:{code:(0,$.jsx)(`code`,{className:un})}}),confirmLabel:a(`emailManagedContent.confirm`),onConfirm:Ee,onCancel:()=>w(!1)})]})}function mn(){let{t:e}=Y(`channels`),t=Ie(),n=de(),{data:r}=J({...Oe(),enabled:n}),i=r?.results?.[0]?.handle,a=y.use.emailRootDomain(),o=Fe(),[c,u]=(0,Q.useState)(()=>o===`gated`?`your-own`:on(Ze(Ce,`managed`),`managed`)),[f,p]=(0,Q.useState)(()=>{let e=Ze(Ne,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),{platformAssistantId:h,error:g}=w(t,o===`full`&&c===`managed`),_=h??(g?t:null),v=J({queryKey:[`byoEmailCredential`,t,f],queryFn:async()=>{let{data:e}=await rt({path:{assistant_id:t},body:{service:f,field:`api_key`},throwOnError:!0});return e},enabled:c===`your-own`||o===`gated`,staleTime:6e4,retry:Se,meta:{errorContext:`byo_email_credential_check`}});(0,Q.useEffect)(()=>{v.error&&Me(v.error,{context:`byo_email_credential_check`,bestEffort:!0})},[v.error]);let b=v.data?.hasSecret===!0,x=_e.use.assistantInbox(),S=Nt(ee.use.name()??``),{data:C}=J({...ot(),enabled:x&&n&&o===`full`}),T=x&&o===`full`&&c===`managed`&&_!==null&&!!C?.entitlements&&C.entitlements.managed_email!==!0,E=(0,Q.useCallback)(e=>{u(e),d(Ce,e)},[]),te=(0,Q.useCallback)(()=>{d(Ne,f),F.success(e(`emailChannelSection.saveSuccessToast`))},[f,e]),D=(0,Q.useMemo)(()=>m.find(e=>e.id===f)??m[0],[f]),O=(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(Et,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,$.jsx)(`span`,{children:(0,$.jsx)(X,{i18nKey:`emailChannelSection.setupInstructions`,ns:`channels`,values:{providerName:D.displayName,setupSkill:D.setupSkill},components:{code:(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})}),(0,$.jsxs)(l,{href:D.docsUrl,tone:`default`,className:`inline-flex items-center gap-1`,glyph:!1,children:[e(`emailChannelSection.openProvider`,{providerName:D.displayName}),(0,$.jsx)(wt,{className:`h-3 w-3`})]})]})]}),k=(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:e(`emailChannelSection.providerLabel`)}),(0,$.jsx)(U,{value:f,onChange:e=>{(e===`mailgun`||e===`resend`)&&p(e)},options:m.map(e=>({value:e.id,label:e.displayName}))})]}),b?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--system-positive-weak)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-default)]`,children:[(0,$.jsx)(Mt,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsx)(`span`,{children:(0,$.jsx)(X,{i18nKey:`emailChannelSection.apiKeyConfigured`,ns:`channels`,values:{providerName:D.displayName,setupSkill:D.setupSkill},components:{code:(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})})]}),(0,$.jsxs)(l,{href:D.docsUrl,tone:`default`,className:`inline-flex items-center gap-1 text-body-small-default`,glyph:!1,children:[e(`emailChannelSection.openProvider`,{providerName:D.displayName}),(0,$.jsx)(wt,{className:`h-3 w-3`})]})]}):O,(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsx)(Vt,{onClick:te,disabled:!1})})]});return o===`gated`?(0,$.jsx)(Bt,{id:`email`,title:e(`emailChannelSection.title`),subtitle:e(`emailChannelSection.subtitle`),children:k}):(0,$.jsx)(an,{id:`email`,title:T?S.title:e(`emailChannelSection.title`),subtitle:T?S.subtitle:e(`emailChannelSection.subtitle`),mode:c,onModeChange:E,children:c===`managed`?(0,$.jsx)(`div`,{className:`space-y-4`,children:o===`disabled`?(0,$.jsx)(s,{children:e(`emailChannelSection.platformLoginNotice`)}):_===null?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(Ct,{className:`h-4 w-4 animate-spin`}),e(`emailChannelSection.connecting`)]}):(0,$.jsx)(pn,{assistantId:_,assistantHandle:i,emailRootDomain:a})}):k})}function hn({health:e}){let{Icon:t,label:n,tone:r}=Ge(e);return(0,$.jsx)(ze,{tone:r,leftIcon:(0,$.jsx)(t,{}),children:n})}function gn({address:e,health:t,pending:n,onDisconnect:r}){let{t:i}=Y(`channels`);return(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(hn,{health:t}),e?(0,$.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e}):null,(0,$.jsx)(`div`,{className:`ml-auto`,children:(0,$.jsx)(G,{type:`button`,variant:`danger`,onClick:r,disabled:!r||n,children:i(n?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}function _n({children:e}){let{t}=Y(`channels`);return(0,$.jsxs)(q.Root,{children:[(0,$.jsx)(q.Header,{children:(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`img`,{src:Qe(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),(0,$.jsx)(K,{as:`span`,variant:`body-medium-default`,children:t(`slackChannelCard.setupHeading`)})]})}),(0,$.jsx)(q.Body,{children:e})]})}b.map(e=>e.riskThreshold);var vn=[`none`,`low`];function yn(e){if(e!==void 0)return e===`none`?`none`:`low`}var bn={none:{label:B(`none`).label,sublabel:`asks every time`,tone:`negative`,dotColor:`var(--system-negative-strong)`},low:{label:B(`low`).label,sublabel:`safe lookups`,tone:`warning`,dotColor:`var(--system-mid-strong)`},medium:{label:B(`medium`).label,sublabel:`broader lookups`,tone:`info`,dotColor:`var(--system-info-strong)`},high:{label:B(`high`).label,sublabel:`any lookup`,tone:`positive`,dotColor:`var(--system-positive-strong)`}},xn=[`trusted_contact`,`unverified_contact`,`unknown`];function Sn(e,t){let n={};for(let r of e){if(r.selector.scope!==`channel`||r.selector.adapter!==t)continue;let e=r.selector.channelExternalId;e&&(r.contactType===`trusted_contact`||!(e in n))&&(n[e]=r.threshold)}return n}function Cn(e,t,n){return n===`channels`?e.selector.scope===`adapter`&&e.selector.adapter===t:e.selector.scope===`channel_type`&&e.selector.adapter===t&&e.selector.channelType===`dm`}function wn(e,t,n){let r;for(let i of e)Cn(i,t,n)&&(i.contactType===`trusted_contact`||r===void 0)&&(r=i.threshold);return r}var Tn=`__default__`;function En({color:e}){return(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 shrink-0 rounded-full`,style:{backgroundColor:e}})}function Dn({tier:e,defaultTier:t,disabled:n,onTierChange:r,onReset:i,"aria-label":a}){let{t:o}=Y(`channels`),s=yn(e??t??void 0),c=yn(t??void 0)??null,l=vn.map(e=>({value:e,label:bn[e].label,icon:(0,$.jsx)(En,{color:bn[e].dotColor}),suffix:e===c?(0,$.jsx)(`span`,{className:`text-[color:var(--content-tertiary)]`,children:o(`tierPicker.defaultSuffix`)}):void 0,tooltip:bn[e].sublabel}));return l.unshift({value:Tn,label:`Default`,icon:(0,$.jsx)(En,{color:`transparent`}),tooltip:`follows the default level`}),(0,$.jsx)(U,{value:s??``,onChange:e=>{e===Tn||e===c?i():r(e)},options:l,placeholder:o(`tierPicker.defaultPlaceholder`),disabled:n,size:`compact`,menuAlign:`end`,"aria-label":a})}function On(e){return e.type===`dm`?`dm`:e.isPrivate?`private`:`public`}function kn(e){return e.filter(e=>On(e)!==`dm`)}function An(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===null||On(e)===n)&&(r===``||e.name.toLowerCase().includes(r))).sort((e,t)=>e.name.localeCompare(t.name))}function jn(e){let t={public:0,private:0,dm:0};for(let n of e)t[On(n)]+=1;return t}function Mn(e){return e.memberCount==null?null:e.memberCount===1?`1 member`:`${e.memberCount} members`}var Nn=[{value:null,labelKey:`slackChannelList.filterAll`},{value:`public`,labelKey:`slackChannelList.filterPublic`},{value:`private`,labelKey:`slackChannelList.filterPrivate`}],Pn={public:Tt,private:kt},Fn=100,In=new Set;function Ln({assistantDisplayName:e,slackHandle:t,channels:n,loading:r=!1,error:i=!1,tierOverrides:a,defaultTier:o=null,accessControlsSupported:s=!0,tierOverridesLoading:c=!1,tierOverridesError:l=!1,pendingChannelIds:u=In,onTierChange:d,onTierReset:f}){let{t:p}=Y(`channels`),[m,h]=(0,Q.useState)(``),[_,v]=(0,Q.useState)(null),y=(0,Q.useMemo)(()=>kn(n??[]),[n]),b=(0,Q.useMemo)(()=>An(y,m,_),[y,m,_]),ee=(0,Q.useMemo)(()=>jn(y),[y]);return(0,$.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,$.jsx)(K,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,$.jsx)(X,{i18nKey:`slackChannelList.presenceHint`,ns:`channels`,values:{handle:t??`@${e}`,assistant:e},components:{invite:(0,$.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`}),remove:(0,$.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`})}})}),r?(0,$.jsx)(K,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.loading`)}):i?(0,$.jsx)(K,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--system-negative-strong)]`,children:p(`slackChannelList.loadFailed`)}):y.length===0?(0,$.jsx)(Xt,{icon:(0,$.jsx)(Tt,{className:`h-6 w-6`}),title:p(`slackChannelList.emptyTitle`)}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,$.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,$.jsx)(We,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:p(`slackChannelList.searchPlaceholder`),"aria-label":p(`slackChannelList.searchAria`),leftIcon:(0,$.jsx)(At,{className:`h-4 w-4`}),fullWidth:!0})}),(0,$.jsx)(`div`,{className:`flex items-center gap-2`,role:`group`,"aria-label":p(`slackChannelList.filterGroupAria`),children:Nn.map(({value:e,labelKey:t})=>{let n=_===e,r=e===null?y.length:ee[e];return(0,$.jsx)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>v(e),className:g(`inline-flex h-6 items-center rounded-full px-2.5 text-body-small-emphasised leading-none transition-colors`,n?`bg-[var(--content-default)] text-[var(--surface-base)]`:`bg-[var(--tag-bg-neutral)] text-[color:var(--content-secondary)] hover:text-[color:var(--content-default)]`),children:p(t,{count:r})},e??`all`)})})]}),b.length===0?(0,$.jsx)(K,{as:`span`,variant:`body-small-lighter`,className:`py-4 text-center text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.noMatches`)}):b.length>Fn?(0,$.jsx)(`div`,{className:`h-96`,children:(0,$.jsx)(x,{items:b,computeItemKey:(e,t)=>t.id,itemContent:(e,t)=>(0,$.jsx)(Rn,{channel:t,pending:u.has(t.id),overridesLoading:c,overridesError:l,defaultTier:o,accessControls:s,tierOverride:a?.[t.id],onTierChange:e=>d?.(t.id,e),onReset:()=>f?.(t.id)}),className:`h-full`})}):(0,$.jsx)(`div`,{className:`max-h-96 overflow-y-auto`,children:b.map(e=>(0,$.jsx)(Rn,{channel:e,pending:u.has(e.id),overridesLoading:c,overridesError:l,defaultTier:o,accessControls:s,tierOverride:a?.[e.id],onTierChange:t=>d?.(e.id,t),onReset:()=>f?.(e.id)},e.id))})]})]})}function Rn({channel:e,pending:t,overridesLoading:n,overridesError:r,defaultTier:i,accessControls:a,tierOverride:o,onTierChange:s,onReset:c}){let{t:l}=Y(`channels`),u=On(e);if(u===`dm`)return null;let d=Pn[u],f=Mn(e),p=`[&+&]:border-t [&+&]:border-[var(--border-base)]`;return a?(0,$.jsx)(T,{className:p,leading:(0,$.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,subtitle:f??void 0,trailing:(0,$.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,$.jsx)(Dn,{tier:o,defaultTier:i,disabled:t||n||r,onTierChange:s,onReset:c,"aria-label":l(`slackChannelList.accessAria`,{channel:e.name})})})}):(0,$.jsx)(T,{className:p,leading:(0,$.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,trailing:f==null?void 0:(0,$.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:f})})}function zn(e){return e===`none`?`Asks before every action, even a web search.`:`Asks before anything beyond looking things up and saving files in its own workspace.`}function Bn({defaultTier:e}){let{t}=Y(`channels`),n=yn(e??void 0)??null;return(0,$.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-3`,children:(0,$.jsx)(`ul`,{className:`grid gap-x-6 gap-y-3 sm:grid-cols-2`,children:[...vn].reverse().map(e=>{let r=bn[e];return(0,$.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,$.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(En,{color:r.dotColor}),(0,$.jsx)(K,{as:`span`,variant:`body-small-emphasised`,children:r.label}),e===n?(0,$.jsx)(K,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:t(`slackChannelTierLegend.defaultMarker`)}):null]}),(0,$.jsx)(K,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:zn(e)})]},e)})})})}var Vn=[{bucket:`channels`,icon:Tt,title:`Channels`,description:`Public and private channels`},{bucket:`dm`,icon:vt,title:`Direct messages`,description:`One-on-one DMs`}];function Hn({assistantName:e,globalDefaultTier:t,bucketTiers:n,loading:r,error:i,pendingBuckets:a,onBucketChange:o,onBucketReset:s}){let{t:c}=Y(`channels`);return(0,$.jsxs)(q.Root,{children:[(0,$.jsx)(q.Header,{children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[c(`slackChannelTypeDefaults.heading`),(0,$.jsx)(K,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,$.jsx)(X,{i18nKey:`slackChannelTypeDefaults.subtitle`,ns:`channels`,values:{assistant:e},components:{trustRules:(0,$.jsx)(mt,{to:he.settings.privacy,className:ye()})}})})]})}),(0,$.jsx)(q.Body,{className:`py-1`,children:Vn.map(({bucket:e,icon:l,title:u,description:d})=>{let f=e===`dm`?n?.channels??t:t;return(0,$.jsx)(T,{className:`[&+&]:border-t [&+&]:border-[var(--border-base)]`,leading:(0,$.jsx)(l,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:u,subtitle:d,trailing:(0,$.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,$.jsx)(Dn,{tier:n?.[e],defaultTier:f,disabled:r||i||a.has(e),onTierChange:t=>o(e,t),onReset:()=>s(e),"aria-label":c(`slackChannelTypeDefaults.bucketAria`,{bucket:u})})})},e)})}),(0,$.jsx)(q.Footer,{className:`p-0`,children:(0,$.jsx)(Bn,{defaultTier:t})})]})}var Un=`0.11.0`;function Wn(){return R(Un)}var Gn=new Set([404,501]);function Kn(e){let t=oe(e);return t!==void 0&&Gn.has(t)}function qn(e,t,n){return xn.map(r=>({selector:{scope:`channel`,adapter:e,channelExternalId:t},contactType:r,threshold:n}))}function Jn(e,t,n){return e.selector.scope===`channel`&&e.selector.adapter===t&&e.selector.channelExternalId===n}function Yn(e,t){return t===`channels`?{scope:`adapter`,adapter:e}:{scope:`channel_type`,adapter:e,channelType:`dm`}}function Xn(e,t,n){let r=Yn(e,t);return xn.map(e=>({selector:r,contactType:e,threshold:n}))}function Zn({assistantId:e,adapter:t}){let n=lt(),r=Wn()&&!!e,i=(0,Q.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,Q.useMemo)(()=>Re(i),[i]),o=(0,Q.useMemo)(()=>[`channel-permission-resolve`,e,t],[e,t]),s=J({...ge(i),enabled:r}),c=s.data?.cells,l=(0,Q.useMemo)(()=>c?Sn(c,t):void 0,[c,t]),u=(0,Q.useMemo)(()=>c?{channels:wn(c,t,`channels`),dm:wn(c,t,`dm`)}:void 0,[c,t]),d=J({queryKey:o,queryFn:async()=>{let{data:e}=await ct({...i,body:{adapter:t,contactType:`trusted_contact`},throwOnError:!0});return e.resolved?.threshold??null},enabled:r,retry:!1,staleTime:3e4}),f=(e,t)=>{let r=n.getQueryData(a),i=Date.now();return n.setQueryData(a,n=>({cells:[...(n?.cells??[]).filter(t=>!e(t)),...t.map(e=>({...e,updatedAt:i}))]})),{previous:r}},p=Z({mutationFn:async({channelExternalId:e,tier:n})=>{await Promise.all(qn(t,e,n).map(e=>I({...i,body:e,throwOnError:!0})))},onMutate:({channelExternalId:e,tier:n})=>f(n=>Jn(n,t,e),qn(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),Ht(`Failed to save channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),m=Z({mutationFn:async({channelExternalId:e})=>{await Promise.all(xn.map(n=>E({...i,body:{selector:{scope:`channel`,adapter:t,channelExternalId:e},contactType:n},throwOnError:!0})))},onMutate:({channelExternalId:e})=>f(n=>Jn(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),Ht(`Failed to reset channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),h=Z({mutationFn:async({bucket:e,tier:n})=>{await Promise.all(Xn(t,e,n).map(e=>I({...i,body:e,throwOnError:!0})))},onMutate:({bucket:e,tier:n})=>f(n=>Cn(n,t,e),Xn(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),Ht(`Failed to save the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:o})}}),g=Z({mutationFn:async({bucket:e})=>{let n=Yn(t,e);await Promise.all(xn.map(e=>E({...i,body:{selector:n,contactType:e},throwOnError:!0})))},onMutate:({bucket:e})=>f(n=>Cn(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),Ht(`Failed to reset the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:o})}}),_=(0,Q.useMemo)(()=>{let e=new Set;return p.isPending&&p.variables&&e.add(p.variables.channelExternalId),m.isPending&&m.variables&&e.add(m.variables.channelExternalId),e},[p.isPending,p.variables,m.isPending,m.variables]),v=(0,Q.useMemo)(()=>{let e=new Set;return h.isPending&&h.variables&&e.add(h.variables.bucket),g.isPending&&g.variables&&e.add(g.variables.bucket),e},[h.isPending,h.variables,g.isPending,g.variables]);return!r||s.isError&&Kn(s.error)?{supported:!1,tierOverrides:void 0,defaultCellTier:void 0,bucketTiers:void 0,pendingChannelIds:new Set,pendingBuckets:new Set,isLoading:!1,isError:!1,onTierChange:void 0,onTierReset:void 0,onBucketChange:void 0,onBucketReset:void 0}:{supported:!0,tierOverrides:l,defaultCellTier:d.data,bucketTiers:u,pendingChannelIds:_,pendingBuckets:v,isLoading:s.isPending,isError:s.isError,onTierChange:(e,t)=>p.mutate({channelExternalId:e,tier:t}),onTierReset:e=>{l?.[e]!==void 0&&m.mutate({channelExternalId:e})},onBucketChange:(e,t)=>h.mutate({bucket:e,tier:t}),onBucketReset:e=>{u?.[e]!==void 0&&g.mutate({bucket:e})}}}function Qn({assistantId:e,assistantDisplayName:t,slackHandle:n}){let{t:r}=Y(`channels`),i=J({...z(e),enabled:!!e,select:e=>e.channels}),a=Zn({assistantId:e,adapter:`slack`}),o=J({queryKey:[`thresholds`,e],queryFn:()=>H(e),enabled:a.supported&&!!e,staleTime:3e4}).data?.interactive??null,s=a.defaultCellTier===void 0?null:a.defaultCellTier??o,c=(0,$.jsx)(Ln,{assistantDisplayName:t,slackHandle:n,accessControlsSupported:a.supported,defaultTier:s,channels:i.data,loading:i.isPending,error:i.isError,tierOverrides:a.tierOverrides,tierOverridesLoading:a.isLoading,tierOverridesError:a.isError,pendingChannelIds:a.pendingChannelIds,onTierChange:a.onTierChange,onTierReset:a.onTierReset});return!a.supported||!a.onBucketChange||!a.onBucketReset?(0,$.jsx)(q.Root,{noPadding:!0,clipContents:!0,children:c}):(0,$.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[a.isError?(0,$.jsx)(Je,{tone:`error`,children:r(`slackChannelSection.overridesLoadFailed`)}):null,(0,$.jsx)(Hn,{assistantName:t,globalDefaultTier:o,bucketTiers:a.bucketTiers,loading:a.isLoading,error:a.isError,pendingBuckets:a.pendingBuckets,onBucketChange:a.onBucketChange,onBucketReset:a.onBucketReset}),(0,$.jsx)(q.Root,{noPadding:!0,clipContents:!0,children:(0,$.jsx)(V.Root,{type:`single`,collapsible:!0,children:(0,$.jsxs)(V.Item,{value:`per-channel-overrides`,children:[(0,$.jsxs)(V.Trigger,{className:`group justify-between gap-2 px-4 py-3`,children:[(0,$.jsx)(K,{as:`span`,variant:`body-small-emphasised`,children:r(`slackChannelSection.perChannelOverrides`)}),(0,$.jsx)(Ot,{"aria-hidden":`true`,className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]}),(0,$.jsx)(V.Content,{className:`border-[var(--border-base)] data-[state=open]:border-t`,children:c})]})})})]})}function $n({slackHandle:e,health:t,disconnectPending:n=!1,onDisconnect:r,children:i}){let{t:a}=Y(`channels`);return(0,$.jsxs)(q.Root,{children:[(0,$.jsx)(q.Header,{children:(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`img`,{src:Qe(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),e?(0,$.jsx)(K,{as:`span`,variant:`body-medium-default`,children:e}):null,(0,$.jsx)(hn,{health:t}),(0,$.jsx)(`div`,{className:`ml-auto`,children:(0,$.jsx)(G,{type:`button`,variant:`ghost`,onClick:r,disabled:!r||n,children:a(n?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}),(0,$.jsx)(q.Body,{children:i})]})}function er({threadMode:e,threadModePending:t=!1,onThreadModeChange:n}){let{t:r}=Y(`channels`);return(0,$.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,$.jsx)(K,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:r(`slackThreadBehavior.heading`)}),(0,$.jsxs)(we,{value:e??`mention_then_thread`,onValueChange:e=>n?.(e),disabled:t||!n,"aria-label":r(`slackThreadBehavior.selectAria`),children:[(0,$.jsx)(Ve,{value:`mention_only`,label:r(`slackThreadBehavior.mentionsOnly`),helperText:r(`slackThreadBehavior.mentionsOnlyHelp`)}),(0,$.jsx)(Ve,{value:`mention_then_thread`,label:r(`slackThreadBehavior.followThreads`),helperText:r(`slackThreadBehavior.followThreadsHelp`)})]})]})}function tr({onSave:e}){let{t}=Y(`channels`),[n,r]=(0,Q.useState)(``),[i,a]=(0,Q.useState)(``),[o,s]=(0,Q.useState)(!1),[c,l]=(0,Q.useState)(null),u=n.trim().length>0&&i.trim().length>0&&!o;return(0,$.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,$.jsx)(We,{label:t(`twilioCredentialEntry.accountSid`),type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,$.jsx)(We,{label:t(`twilioCredentialEntry.authToken`),type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:t(`twilioCredentialEntry.authTokenPlaceholder`),disabled:o,fullWidth:!0}),c?(0,$.jsx)(`p`,{className:`text-label-small-default`,style:{color:`var(--system-negative-strong)`},children:c}):null,(0,$.jsx)(`div`,{children:(0,$.jsx)(G,{type:`button`,onClick:async()=>{if(!(!e||!u)){s(!0),l(null);try{await e(n.trim(),i.trim()),r(``),a(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{s(!1)}}},disabled:!u,children:t(o?`twilioCredentialEntry.saving`:`twilioCredentialEntry.save`)})})]})}function nr({channel:e,assistantId:t,assistantName:n,assistantDisplayName:r,pending:i,initialManualEntry:a=!1,onSetup:o,onDisconnect:s,onSaveTelegramToken:c,telegramSaveStatus:l,telegramSaveError:d,onSaveDiscordToken:f,discordSaveStatus:m,discordSaveError:h=null,discordInviteUrl:g,onSaveSlackConfig:_,slackSaveStatus:v,slackSaveError:y,slackThreadMode:b,slackThreadModePending:x=!1,onSlackThreadModeChange:ee,onSaveTwilioCredentials:S,policy:C,policySaving:w=!1,policyLoading:T=!1,policyError:E=!1,onPolicyChange:D}){let{t:O}=Y(`channels`),k=e.status===`incomplete`,[A,ne]=(0,Q.useState)(a),j=e.key===`discord`&&A&&m===`success`,M=e.configured&&!j;if(e.key===`email`)return(0,$.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,$.jsx)(mn,{}),M&&D?(0,$.jsx)(Ft,{children:(0,$.jsx)(nn,{assistantDisplayName:r,policy:C,saving:w,loading:T,error:E,onChange:D})}):null]});if(e.key===`slack`)return(0,$.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[M?(0,$.jsx)($n,{slackHandle:e.address,health:e.health,disconnectPending:i,onDisconnect:s,children:(0,$.jsx)(er,{threadMode:b,threadModePending:x,onThreadModeChange:ee})}):(0,$.jsx)(_n,{children:(0,$.jsx)(re,{assistantId:t,assistantName:n,onSave:_,saveStatus:v,saveError:y})}),M?(0,$.jsx)(Qn,{assistantId:t,assistantDisplayName:r,slackHandle:e.address}):null]});let N=te[e.key];return(0,$.jsx)(`div`,{className:`flex flex-col gap-4`,children:M?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(gn,{health:e.health,address:e.address,pending:i,onDisconnect:s}),N.hasTrustFloorControl&&D?(0,$.jsx)(nn,{assistantDisplayName:r,policy:C,saving:w,loading:T,error:E,onChange:D}):null]}):A&&e.canManualEntry&&N.credentialForm?(e=>{switch(e){case`slack-wizard`:return null;case`telegram-token`:return(0,$.jsx)(p,{assistantId:t,assistantName:n,saveStatus:l,saveError:d,onSave:c});case`discord-token`:return(0,$.jsx)(u,{assistantId:t,assistantName:n,saveStatus:m,saveError:h,onSave:f,...g?{inviteUrl:g}:{}});case`twilio-credentials`:return(0,$.jsx)(tr,{onSave:S});default:return e}})(N.credentialForm):(0,$.jsx)(Xt,{icon:(0,$.jsx)(He,{channelId:e.key,className:`h-6 w-6`}),title:O(k?`channelPanel.incompleteTitle`:`channelPanel.disconnectedTitle`,{channel:Le(e.key)}),description:k?e.warning??O(`channelPanel.incompleteDescription`,{channel:Le(e.key)}):N.disconnectedPitchKey?O(N.disconnectedPitchKey,{assistant:r}):void 0,action:(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,$.jsx)(G,{type:`button`,variant:`outlined`,onClick:o,disabled:!o||i,children:O(i?`channelPanel.opening`:k?`channelPanel.finishSetup`:`channelPanel.setUp`)}),e.canManualEntry&&N.credentialForm?(0,$.jsx)(G,{type:`button`,variant:`link`,onClick:()=>ne(!0),children:O(`channelPanel.connectManually`)}):null]})})})}var rr=new Set([404,501]),ir=new Set([401,403]);function ar(e){let t=oe(e);return t!==void 0&&rr.has(t)?`unsupported`:t!==void 0&&ir.has(t)?`forbidden`:`unreadable`}function or(e,t,n){let r=e===`unreadable`?t:n;return r?r instanceof Error&&r.message?r.message:`Something went wrong`:null}function sr(e,t){let n=lt(),r={assistant_id:e},i=J({...Pe({path:r}),enabled:!!e,retry:o}),a=()=>n.invalidateQueries({queryKey:Ue({path:r})}),s=Z({...qe(),onSuccess:a}),c=Z({...Ee(),onSuccess:a}),l=i.data?.sources?.find(e=>e.source===t),u;u=i.isError?ar(i.error):i.isPending?`loading`:l?l.state:`none`;let d=or(u,i.error,s.error??c.error);return{status:u,paths:l?.routes?.map(e=>({path:e.publicPath,approvalGoverned:e.signer!==`vellum`,deliversInbound:e.deliversInbound===!0}))??[],deciding:s.isPending||c.isPending,approve:()=>{l?.digest&&s.mutate({path:{...r,source:t},body:{digest:l.digest}})},revoke:()=>c.mutate({path:{...r,source:t}}),error:d}}function cr(e){return typeof e==`string`&&Zt.includes(e)}function lr(e){return Qt.has(e)}function ur(e){return(e?.policies??[]).filter(e=>!lr(e.channelType)&&!en(e.channelType)).map(e=>({...e,policy:cr(e.policy)?e.policy:`trusted_contacts`}))}async function dr(e,t,n,r){if(lr(t))throw new Ye(403,`Channel "${t}" is internal and is not user-configurable.`);let{data:i,error:a,response:o}=await S({path:{assistant_id:e,channel_type:t},body:{policy:n,note:r??null},throwOnError:!1});if(at(o,a,`Failed to save channel policy.`),!o.ok)throw new Ye(o.status,tt(a,o,`Failed to save channel policy.`));if(!i?.policy)throw new Ye(500,`Gateway returned no policy in response.`);return i.policy}var fr=`0.10.0`;function pr(){return R(fr)}var mr=`plugin`;function hr(e){let t=lt(),r=pr(),i=(0,Q.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,Q.useMemo)(()=>be(i),[i]),o=J({...n(i),enabled:r&&!!e,select:ur}),s=Z({mutationFn:t=>dr(e,mr,t),onSuccess:()=>t.invalidateQueries({queryKey:a}),onError:Ht(`Failed to save channel policy`)}),c=(0,Q.useCallback)(e=>{s.mutate(e)},[s]);return r?{policy:o.data?.find(e=>e.channelType===mr)?.policy,isLoading:o.isPending,isError:o.isError,isSaving:s.isPending,onChange:c}:{policy:void 0,isLoading:!1,isError:!1,isSaving:!1,onChange:void 0}}function gr({channel:e,assistantId:t,assistantDisplayName:n}){let{t:r}=Y(`channels`),i=ft(),a=sr(t,e.plugin),o=hr(t);return(0,$.jsxs)(`div`,{className:`relative flex flex-col items-center gap-3 py-10 text-center`,children:[(0,$.jsx)(G,{className:`absolute top-0 right-0`,variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(bt,{}),tooltip:r(`pluginChannelPanel.navigateToPluginPage`),"aria-label":r(`pluginChannelPanel.navigateToPluginPage`),onClick:()=>i(`/assistant/plugins/${e.plugin}`)}),(0,$.jsx)(Te,{icon:e.icon,className:`h-8 w-8 text-[color:var(--content-secondary)]`}),(0,$.jsx)(`h3`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e.label}),e.description?(0,$.jsx)(`p`,{className:`max-w-[420px] text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e.description}):null,(0,$.jsx)(_r,{channel:e,ingress:a}),o.onChange?(0,$.jsx)(`div`,{className:`w-full max-w-[420px] text-left`,children:(0,$.jsx)(nn,{assistantDisplayName:n,policy:o.policy,saving:o.isSaving,loading:o.isLoading,error:o.isError,onChange:o.onChange})}):null]})}function _r({channel:e,ingress:t}){let{t:n}=Y(`channels`);switch(t.status){case`loading`:return(0,$.jsx)(yr,{children:n(`pluginChannelPanel.ingressLoading`,{channel:e.label})});case`unsupported`:return(0,$.jsx)(yr,{children:n(`pluginChannelPanel.ingressUnsupported`)});case`forbidden`:return(0,$.jsx)(yr,{children:n(`pluginChannelPanel.ingressForbidden`)});case`unreadable`:return(0,$.jsxs)(yr,{children:[n(`pluginChannelPanel.ingressUnreadable`,{channel:e.label}),t.error?` ${t.error}`:``]});case`none`:return(0,$.jsx)(yr,{children:n(`pluginChannelPanel.ingressNone`,{channel:e.label})});case`pending`:case`approved`:return(0,$.jsx)(vr,{ingress:t})}}function vr({ingress:e}){let{t}=Y(`channels`),n=e.status===`approved`;return(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,$.jsx)(ze,{tone:n?`positive`:`neutral`,children:t(n?`pluginChannelPanel.ingressApprovedTag`:`pluginChannelPanel.ingressPendingTag`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(G,{onClick:n?e.revoke:e.approve,disabled:e.deciding,variant:n?`outlined`:`primary`,children:t(n?`pluginChannelPanel.revokeChannel`:`pluginChannelPanel.approveChannel`)}),(0,$.jsx)(A,{content:t(`pluginChannelPanel.approveChannelInfo`),children:(0,$.jsx)(`span`,{tabIndex:0,className:`inline-flex cursor-default p-0.5 text-[color:var(--content-secondary)]`,"aria-label":t(`pluginChannelPanel.approveChannelInfo`),children:(0,$.jsx)(Et,{className:`h-4 w-4`,"aria-hidden":`true`})})})]}),e.error?(0,$.jsx)(`p`,{className:`max-w-[420px] text-body-small-default`,style:{color:`var(--system-negative-strong)`},children:e.error}):null]})}function yr({children:e}){return(0,$.jsx)(`p`,{className:`max-w-[420px] text-body-small-default`,style:{color:`var(--content-secondary)`},children:e})}function br({assistantId:e,assistantName:t,channels:n,pluginChannels:r=[],pendingChannelKey:i=null,slackThreadMode:a,slackThreadModePending:o=!1,channelPolicies:s,policySavingKey:c=null,policiesLoading:l=!1,policiesError:u=!1,onChannelPolicyChange:d,onSetup:f,onDisconnect:p,onSaveTelegramToken:m,telegramSaveStatus:h,onSaveDiscordToken:g,discordSaveStatus:_,discordSaveError:v=null,discordInviteUrl:y,telegramSaveError:b,onSaveSlackConfig:x,slackSaveStatus:ee,slackSaveError:S,onSlackThreadModeChange:C,onSaveTwilioCredentials:w,initialChannel:T=null}){let{t:E}=Y(`channels`),{selected:D,select:O}=Kt(),[k,A]=(0,Q.useState)(null),{paneRef:ne,hasRoomForList:j,drawerOpen:M,openDrawer:re,closeDrawer:N}=zt(),[P]=(0,Q.useState)(T);(0,Q.useEffect)(()=>{P&&O(P)},[P,O]);let ie=Be(t),F=k?te[k]:null,ae=e=>{O(e),N()},I=r.find(e=>e.key===D),L=I?void 0:n.find(e=>e.key===D)??n[0];if(!L&&!I)return null;let oe=I?I.key:L.key,R=I?(0,$.jsx)(gr,{channel:I,assistantId:e,assistantDisplayName:ie},I.key):(0,$.jsx)(nr,{channel:L,assistantId:e,assistantName:t,assistantDisplayName:ie,pending:i===L.key,initialManualEntry:P===L.key,onSetup:f?()=>f(L.key,L.status===`incomplete`):void 0,onDisconnect:p&&L.canDisconnect?()=>A(L.key):void 0,onSaveTelegramToken:m,telegramSaveStatus:h,onSaveDiscordToken:g,discordSaveStatus:_,discordSaveError:v,...y?{discordInviteUrl:y}:{},telegramSaveError:b,onSaveSlackConfig:x,slackSaveStatus:ee,slackSaveError:S,slackThreadMode:a,slackThreadModePending:o,onSlackThreadModeChange:C,onSaveTwilioCredentials:w,policy:s?.[L.key],policySaving:c===L.key,policyLoading:l,policyError:u,onPolicyChange:d?e=>d(L.key,e):void 0},L.key);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{ref:ne,className:`flex min-h-0 flex-1 overflow-hidden ${j?`flex-row gap-6`:`flex-col gap-4`}`,children:[j?(0,$.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,$.jsx)(qt,{channels:n,pluginChannels:r,selectedKey:oe,onSelect:ae})}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`flex items-center`,children:(0,$.jsx)(Rt,{onClick:re})}),(0,$.jsx)(Lt,{open:M,onClose:N,title:E(`assistantChannelsList.drawerTitle`),children:(0,$.jsx)(qt,{channels:n,pluginChannels:r,selectedKey:oe,onSelect:ae})})]}),(0,$.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:oe===`slack`||oe===`email`?R:(0,$.jsx)(Ft,{children:R})})]}),(0,$.jsx)(fe,{open:k!==null,title:E(`assistantChannelsList.disconnectTitle`,{channel:F?E(F.labelKey):``}),message:F?.disconnectMessageKey?E(F.disconnectMessageKey):``,confirmLabel:E(`assistantChannelsList.disconnectConfirm`),destructive:!0,onConfirm:()=>{k&&p&&p(k),A(null)},onCancel:()=>A(null)})]})}var xr=`plugin:`;function Sr(e){let{data:t}=J({...pe({path:{assistant_id:e}}),enabled:!!e,select:e=>e.channels.filter(e=>e.source?.startsWith(xr)).map(e=>({plugin:e.id,key:C(e.id),label:e.label,description:e.subtitle,icon:e.icon}))});return t??[]}function Cr(e){let t=lt(),r=pr(),i=(0,Q.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,Q.useMemo)(()=>be(i),[i]),o=J({...n(i),enabled:r,select:ur}),s=(0,Q.useMemo)(()=>{let e={};for(let t of o.data??[])v(t.channelType)&&(e[t.channelType]=t.policy);return e},[o.data]),c=Z({mutationFn:({channelKey:t,policy:n})=>dr(e,t,n),onSuccess:()=>t.invalidateQueries({queryKey:a}),onError:Ht(`Failed to save channel policy`)}),l=(0,Q.useCallback)((e,t)=>{c.mutate({channelKey:e,policy:t})},[c]);return r?{policies:s,savingKey:c.isPending?c.variables?.channelKey??null:null,isLoading:o.isPending,isError:o.isError,onChange:l}:{policies:void 0,savingKey:null,isLoading:!1,isError:!1,onChange:void 0}}var wr=`0.11.5-dev.202608242314.38e0513`;function Tr(){return R(wr)}var Er=`0.11.5-dev.202608252008.65007aa`;function Dr(){return R(Er)}var Or={slack:k,telegram:M,discord:ke,email:void 0,phone:ie},kr={slack:`useAssistantChannels.setupPrompt.slack`,telegram:`useAssistantChannels.setupPrompt.telegram`,discord:`useAssistantChannels.setupPrompt.discord`,email:`useAssistantChannels.setupPrompt.email`,phone:`useAssistantChannels.setupPrompt.phone`},Ar={slack:`useAssistantChannels.finishPrompt.slack`,telegram:`useAssistantChannels.finishPrompt.telegram`,discord:`useAssistantChannels.finishPrompt.discord`,email:`useAssistantChannels.finishPrompt.email`,phone:`useAssistantChannels.finishPrompt.phone`},jr=15e3;function Mr({assistantId:e,onStartSetupConversation:n}){let{t:r}=Y(`common`),i=lt(),o=(0,Q.useMemo)(()=>({path:{assistant_id:e}}),[e]),s=(0,Q.useMemo)(()=>t(o),[o]),c=Tr(),l=Dr(),u=(0,Q.useMemo)(()=>Nr(c),[c]),d=J({...ae(o),enabled:!!e,refetchInterval:jr,select:e=>e.snapshots}),f=(0,Q.useMemo)(()=>Pr(d.data??[],u,l),[d.data,u,l]),p=f.some(e=>e.key===`slack`&&e.configured),m=J({...De(o),enabled:p,select:e=>e.threadMode}),h=Cr(e),g=(0,Q.useCallback)(()=>i.invalidateQueries({queryKey:s}),[i,s]),_=Z({mutationFn:async t=>{let n=Or[t];if(!n)throw Error(`No route clears ${t} credentials.`);await n({path:{assistant_id:e},throwOnError:!0})},onSettled:(t,n,r)=>{g(),r===`slack`&&a(i,e)}}),v=W({assistantId:e}),y=et({assistantId:e}),b=J({...Ae(o),enabled:!!e&&l}),x=L({assistantId:e}),ee=it({assistantId:e}),S=Z({...j(),onSuccess:()=>{i.invalidateQueries({queryKey:D(o)})}}),C=y.mutate,w=(0,Q.useCallback)(e=>{C(e)},[C]),T=v.mutate,E=(0,Q.useCallback)(e=>{T(e)},[T]),te=x.mutate,O=(0,Q.useCallback)((e,t)=>{te({botToken:e,appToken:t})},[te]),k=S.mutate,A=(0,Q.useCallback)(t=>{k({path:{assistant_id:e},body:{threadMode:t}})},[k,e]),ne=ee.mutateAsync,M=(0,Q.useCallback)(async(e,t)=>{await ne({accountSid:e,authToken:t})},[ne]),re=(0,Q.useCallback)((e,t=!1)=>{n&&n(r(t?Ar[e]:kr[e]))},[n,r]),N=_.mutate,P=(0,Q.useCallback)(e=>{N(e)},[N]);return{channels:f,pendingChannelKey:_.isPending?_.variables??null:null,slackThreadMode:m.data,slackThreadModePending:S.isPending,channelPolicies:h.policies,policySavingKey:h.savingKey,policiesLoading:h.isLoading,policiesError:h.isError,onChannelPolicyChange:h.onChange,onSetup:n?re:void 0,onDisconnect:P,onSaveTelegramToken:E,telegramSaveStatus:v.status,telegramSaveError:v.error?.message??null,onSaveDiscordToken:w,discordSaveStatus:y.status,discordSaveError:y.error?.message??null,discordInviteUrl:y.data?.data?.inviteUrl??b.data?.inviteUrl,onSaveSlackConfig:O,slackSaveStatus:x.status,slackSaveError:x.error?.message??null,onSlackThreadModeChange:A,onSaveTwilioCredentials:M}}function Nr(e){return e?ne:ne.filter(e=>e!==`discord`)}function Pr(e,t,n){let r=new Map;for(let t of e)r.set(t.channel,t);return t.map(e=>{let t=r.get(e);return{key:e,status:Fr(t),configured:P(t),canDisconnect:Or[e]!==void 0&&(e!==`discord`||n),canManualEntry:te[e].credentialForm!==void 0&&(e!==`discord`||n),health:t?.health,address:t?.channelHandle??void 0}})}function Fr(e){return e?e.ready?`ready`:e.setupStatus===`not_configured`?`not_configured`:`incomplete`:`not_configured`}function Ir(){let[e,t]=ut(),n=e.get(`setup`),r=n&&v(n)?n:null;return(0,Q.useEffect)(()=>{r&&t(e=>(e.delete(`setup`),e),{replace:!0})},[r,t]),r}function Lr({assistantId:e,onStartSetupConversation:t}){let n=_.use.a2aChannel(),r=ee.use.name(),i=Ir(),a=Gt(e),o=Be(r),s=Mr({assistantId:e,onStartSetupConversation:t});return(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-6 overflow-hidden`,children:[(0,$.jsx)(br,{assistantId:e,assistantName:o,initialChannel:i,pluginChannels:Sr(e),...s}),n?(0,$.jsx)(Ut,{onClick:a.open}):null,(0,$.jsx)(Wt,{open:a.isOpen,assistantId:e,onClose:a.close})]})}function Rr(){let e=ft(),t=Ie();return(0,$.jsx)(Lr,{assistantId:t,onStartSetupConversation:t=>{i(e,{prompt:t})}},t)}export{Rr as ChannelsPageRoute};
@@ -0,0 +1,3 @@
1
+ var e={heading:`{count, plural, one {Pregunta} other {Preguntas}}`},t={saveFailed:`No se pudo guardar el documento. Tu mensaje sigue aquí. Intenta enviarlo de nuevo.`,viewConversation:`Ver conversación`,reopenDocument:`Reabrir documento`},n={plan:`Plan`},r={atTime:`a las {time}`,cancelled:`Cancelado`,completed:`Completado`,refused:`Rechazado`,runFailed:`La ejecución falló`,stoppedLimitReached:`Detenido: se alcanzó el límite`},i={hideRaw:`Ocultar entrada/salida en bruto`,rawInput:`Entrada en bruto`,rawOutput:`Salida en bruto`,showRaw:`Mostrar entrada/salida en bruto`},a={connectButton:`Conectar`,dismissButton:`Descartar`,errorFallback:`No se pudo conectar Claude. Inténtalo de nuevo.`,pastePlaceholder:`Pega tu clave`,saveButton:`Guardar`,subtitleConnected:`Claude Code conectado, continuando...`,subtitleExchanging:`Completando el inicio de sesión...`,subtitleIdle:`Usa tu suscripción a Claude Code`,subtitlePaste:`Pega la clave de la pestaña que se abrió`,subtitleStarting:`Preparando el inicio de sesión...`,subtitleWaiting:`Esperando el inicio de sesión de Claude...`,title:`Conectar Claude Code`},o={backToConversationAria:`Volver a la conversación`,backTooltip:`Volver`,closeRunDetail:`Cerrar el detalle de la ejecución`,goToNewest:`Ir al más reciente`,inputLabel:`Entrada`,modelLabel:`Modelo`,objective:`Objetivo`,outputLabel:`Salida`,sendSteerAria:`Enviar instrucción de orientación`,steerAria:`Instrucción de orientación`,steerPlaceholder:`Orientar la ejecución…`,stopRunAria:`Detener la ejecución`},s={retryConfirm:`Reintentar`,retryMessage:`Se descartará la última respuesta y se generará de nuevo. Esto no se puede deshacer.`,retryTitle:`¿Reintentar esta respuesta?`,startingFirst:`Iniciando tu primera conversación…`,stillWorking:`Tu asistente sigue trabajando…`,summarizeConfirm:`Resumir`,summarizeMessage:`El asistente resumirá la conversación hasta este punto y solo llevará el resumen en su memoria de trabajo a partir de ahora. Los mensajes siguen visibles y nunca se eliminan.`,summarizeTitle:`¿Resumir hasta aquí?`,takingLonger:`Tu asistente está tardando más de lo esperado.`,tryAgain:`Reintentar`},c={confirm:`Marcar todo como hecho`,message:`{count, plural, one {¿Marcar como hecha la conversación en “{groupName}”? Sale de la barra lateral y te espera en Todos los chats, donde puedes reabrirla.} other {¿Marcar como hechas las # conversaciones en “{groupName}”? Salen de la barra lateral y te esperan en Todos los chats, donde puedes reabrirlas.}}`,title:`Marcar todo como hecho`},l={title:`Detalles de la actividad`},u={backAria:`Volver a todos los pasos`,backTooltip:`Todos los pasos`,closeSteps:`Cerrar pasos`,screenshotAria:`Vista previa de la captura de pantalla de {activity}`,screenshotFallbackAria:`Vista previa de la captura de pantalla del ordenador`,screenshotFallbackTitle:`Captura de pantalla del ordenador`,screenshotTitle:`Captura de pantalla de {activity}`,viewThinkingAria:`Ver razonamiento`},d={unavailable:`La captura de pantalla más reciente no está disponible.`,unavailableShowingPrevious:`La captura de pantalla más reciente no está disponible. Se muestra la captura anterior.`,updating:`Actualizando la captura de pantalla...`},f={camera:`Cámara`,closeAriaLabel:`Cerrar`,files:`Archivos`,gallery:`Fototeca`,pickFailed:`No se pudo añadir ese archivo. Inténtalo de nuevo.`,pickFull:`{count, plural, one {# archivo no cupo en este lote. Añádelo por separado.} other {# archivos no cupieron en este lote. Añádelos por separado.}}`,title:`Añadir al chat`,tooLarge:`{count, plural, one {# archivo es demasiado grande para adjuntarlo} other {# archivos son demasiado grandes para adjuntarlos}}`},p={allowAndCreateRule:`Permitir y crear regla`,trigger:`Más opciones para permitir`},m={appExported:`Aplicación exportada`,shareFailed:`No se pudo compartir la aplicación`},h={confirm:`Archivar todo`,message:`{count, plural, one {¿Archivar la conversación en “{groupName}”? Las conversaciones archivadas salen de la barra lateral. Puedes encontrarlas después buscando “is:archived”.} other {¿Archivar las # conversaciones en “{groupName}”? Las conversaciones archivadas salen de la barra lateral. Puedes encontrarlas después buscando “is:archived”.}}`,title:`Archivar todo`},g={earlierActivity:`Actividad anterior`},_={click:`Haciendo clic`,type:`Escribiendo`,keyPress:`Pulsando una tecla`,scroll:`Desplazando`,drag:`Arrastrando`,hover:`Pasando el cursor`,observe:`Observando`,navigate:`Navegando`,terminal:`Ejecutando un comando`},v={band:{previous30Days:`Últimos 30 días`,previous7Days:`Últimos 7 días`,today:`Hoy`,yesterday:`Ayer`},chip:{all:`Todos`,background:`En segundo plano`,done:`Hecho`},doneMeta:`Hecho · {time}`,empty:`Aún no hay chats aquí.`,filterAria:`Filtrar chats`,loadError:`No se pudieron cargar tus chats.`,loading:`Cargando chats`,noMatches:`Ningún chat coincide con «{query}».`,retry:`Reintentar`,searchPlaceholder:`Buscar chats`,title:`Todos los chats`},y={mode:{computerUse:`Sesión de ordenador`,browser:`Sesión del navegador`,liveVision:`Sesión de visión en directo`,ambient:`Sesión ambiental`},durationSeconds:`{count, plural, one {# s} other {# s}}`,durationMinutes:`{count, plural, one {# min} other {# min}}`,working:`Trabajando`,workingWithDuration:`Trabajando · {duration}`,waiting:`Esperando`,waitingWithDuration:`Esperando · {duration}`,finishing:`Finalizando`,finishingWithDuration:`Finalizando · {duration}`,completedWithDurationAndEnd:`{duration} · Finalizó a las {endTime}`,completedWithDuration:`{duration}`,completedWithEnd:`Finalizó a las {endTime}`,interrupted:`Interrumpida`,interruptedWithDurationAndEnd:`Interrumpida · {duration} · Finalizó a las {endTime}`,interruptedWithDurationAndLastActivity:`Interrumpida · {duration} · Última actividad a las {lastActivityTime}`,interruptedWithLastActivity:`Interrumpida · Última actividad a las {lastActivityTime}`,interruptedWithEnd:`Interrumpida · Finalizó a las {endTime}`,disconnected:`Conexión perdida`,disconnectedWithDurationAndLastActivity:`Conexión perdida · {duration} · Última actividad a las {lastActivityTime}`,disconnectedWithLastActivity:`Conexión perdida · Última actividad a las {lastActivityTime}`,timingUnavailable:`Horario no disponible`},b={fitView:`Ajustar`,panView:`Desplazar`,controlView:`Controlar`,panHint:`Arrastra para desplazarte. Toca para hacer clic.`,hideAria:`Ocultar escritorio virtual`,closeAria:`Cerrar vista previa del escritorio virtual`,moveAria:`Mover vista previa del escritorio virtual (teclas de flecha)`,resizeAria:`Cambiar tamaño de la vista previa del escritorio virtual (teclas de flecha)`,expandAria:`Ampliar escritorio virtual`,busy:`Otro usuario está usando el escritorio virtual.`,connecting:`Conectando con el escritorio virtual…`,failed:`No se pudo iniciar el escritorio virtual.`,lost:`Se perdió la conexión con el escritorio virtual.`,openAria:`Abrir el escritorio virtual de {name}`,openUnnamedAria:`Abrir escritorio virtual`,reconnectButton:`Reconectar`,title:`Escritorio`,unavailable:`El escritorio virtual no está disponible en este asistente.`,checkingSetup:`Comprobando el escritorio virtual…`,setupRequestFailed:`No se pudo comprobar la instalación. Vuelve a conectar para intentarlo de nuevo.`},x={newChat:`Chat nuevo`},S={bulkActionMembersFailed:`No se pudieron cargar todas las conversaciones de esta sección. Inténtalo de nuevo.`,closeNavAria:`Cerrar navegación`,navAria:`Navegación del asistente`,search:`Buscar`,searchShortcut:`Buscar ({shortcut})`},C={dismissLabel:`Ocultar la pantalla de reposo`,sleeping:`Tu asistente está durmiendo`,sleepingNamed:`{name} está durmiendo`,waking:`Tu asistente se está despertando…`,wakingNamed:`{name} se está despertando…`,woke:`Tu asistente acaba de despertarse`,wokeNamed:`{name} acaba de despertarse`},w={collapse:`Ocultar asistentes`,currentAssistant:`{name}, asistente actual`,expand:`Cambiar de asistente`,switchFailed:`No se pudo cambiar de asistente. Inténtalo de nuevo.`,switchTo:`Cambiar a {name}`,unnamedAssistant:`Asistente sin nombre`},T={removeAria:`Eliminar {filename}`},E={download:`Descargar`,downloadAria:`Descargar {filename}`},D={cancelUploadAria:`Cancelar la carga de {filename}`,uploadingTitle:`Subiendo {filename}`},O={moreTitle:`{count} más`,showAllAria:`Mostrar todos los archivos ({count} más)`},k={closePreviewAria:`Cerrar vista previa`,downloadAria:`Descargar {filename}`,downloadLabel:`Descargar`,legacyUnavailable:`Vista previa no disponible. El contenido del archivo no se conservó en el historial del chat.`,loadFailed:`No se pudo cargar la vista previa.`,nextAttachmentAria:`Adjunto siguiente`,pdfLoadFailed:`No se pudo mostrar este PDF`,previewAria:`Vista previa de {filename}`,previousAttachmentAria:`Adjunto anterior`},A={cancelUpload:`Cancelar la subida de {filename}`,preview:`Vista previa de {filename}`,remove:`Quitar {filename}`,uploading:`Subiendo {filename}`},j={closeDetail:`Cerrar detalle de la tarea`,command:`Comando`,exitCode:`Código de salida: {code}`,output:`Salida`,stopCommandAria:`Detener comando`},M={dismiss:`Descartar`},N={description:`Dónde {count, plural, one {cayó # punto de corte de caché} other {cayeron # puntos de corte de caché}} en el prefijo de esta solicitud, y qué segmentos se leyeron frente a los que se volvieron a crear.`,estimatedTokens:`≈ {count} tokens`,fullMissBody:`Todos los segmentos se volvieron a crear en este turno. Compara con el turno anterior en la diferencia de caché de arriba para encontrar el bloque que cambió.`,fullMissTitle:`Fallo total de caché`,loadError:`No se pudo cargar la carga de la solicitud para mapear los puntos de corte de caché.`,loading:`Cargando la carga de la solicitud para mapear los puntos de corte de caché…`,noBreakpoints:`Esta solicitud no tenía puntos de corte de caché: la caché del prompt estaba desactivada para la llamada.`,splitEstimatedNote:` La división leído/creado se atribuye por tamaño de segmento; el proveedor solo informa los totales.`,statusCreated:`Vuelto a crear`,statusRead:`Leído de la caché`,statusUnknown:`En caché`,title:`Puntos de corte de caché`,tokenEstimateNote:`Los recuentos de tokens se estiman a partir de la longitud del texto.`},P={changedLabel:`Cambiado`,changedMessageFallback:`un mensaje`,chipMessages:`Mensajes`,chipModel:`Modelo`,chipSettings:`Configuración`,chipSystem:`Sistema`,chipTools:`Herramientas`,currentModelFallback:`este modelo`,description:`Qué cambió desde la solicitud del turno anterior: el bloque que volvió a crear la caché del prompt.`,diffAnyway:`Comparar de todos modos ({lineCount} líneas)`,diffLabel:`{label} diff`,diffLargeDefault:`El texto cambiado es grande, así que no se compara por defecto.`,diffStillTooLarge:`Sigue siendo demasiado grande para comparar aquí (más de {maxLines} líneas). Abre la pestaña Raw para ver la carga completa.`,diffTooLarge:`El texto cambiado es demasiado grande para comparar aquí. Abre la pestaña Raw para ver la carga completa.`,loadPreviousCallError:`No se pudo cargar la llamada anterior para comparar.`,loadingPreviousCall:`Cargando la llamada anterior para comparar…`,messageStatsAppended:`{count} añadido(s)`,messageStatsLeading:`Mensajes iniciales: {parts}`,messageStatsRemoved:`{count} eliminado(s)`,messageStatsShared:`{count} compartido(s)`,previousModelFallback:`el modelo anterior`,previousPromptUnavailable:`El prompt de la llamada anterior no está disponible para comparar.`,showLess:`Mostrar menos`,showMoreDiffLines:`Mostrar {count} línea(s) de diferencia más`,statusMessagesEarlierBody:`{label} #{index} difiere del turno anterior, así que todo lo que estaba en caché después se vuelve a procesar en este turno.`,statusMessagesEarlierTitle:`Un mensaje anterior cambió`,statusMessagesHistoryBody:`Faltan {removedCount} mensaje(s) anterior(es) en este turno (probablemente por compactación del historial), así que el prefijo de mensajes en caché ya no coincide.`,statusMessagesHistoryTitle:`Historial de mensajes cambiado`,statusModelBody:`Este turno usó {current}, pero el turno anterior usó {previous}. Un modelo distinto no puede reutilizar la caché del prompt anterior, así que todo el prompt se vuelve a crear.`,statusModelTitle:`Modelo cambiado`,statusPrefixUnchangedBodyAppended:`El prefijo en caché coincide con el turno anterior y se añadieron {count} mensaje(s) nuevo(s). Un fallo de caché aquí apunta a la caducidad del TTL de la caché, no a contenido cambiado.`,statusPrefixUnchangedBodyIdentical:`El prefijo en caché es idéntico al del turno anterior. Un fallo de caché aquí apunta a la caducidad del TTL de la caché, no a contenido cambiado.`,statusPrefixUnchangedTitle:`Prefijo del prompt sin cambios`,statusSettingsBody:`Solo la configuración de la solicitud (p. ej., temperatura) difiere del turno anterior. En la mayoría de proveedores, esto por sí solo no invalida la caché del prompt.`,statusSettingsTitle:`Configuración de la solicitud cambiada`,statusSystemBody:`Parte del prompt del sistema cambió desde el turno anterior. El contenido volátil aquí (una marca de tiempo, memoria o un bloque por turno) vuelve a crear la caché en cada turno.`,statusSystemTitle:`Prompt del sistema cambiado`,statusToolsBody:`El conjunto de herramientas o sus definiciones difieren del turno anterior. Las herramientas están al inicio del prefijo en caché, así que cualquier cambio aquí vuelve a crear la caché antes de llegar al prompt del sistema y a los mensajes.`,statusToolsTitle:`Definiciones de herramientas cambiadas`,title:`Diferencia de caché`,unchangedLines:`⋯ {count} línea(s) sin cambios`},F={barAriaLabel:`Desglose de la caché del prompt de {total} tokens: {segments} ({percent} en caché).`,barSegment:`{count} {label}`,cached:`en caché`,description:`Cuánto del prompt de esta llamada se sirvió desde la caché del prompt.`,segmentCreated:`Vuelto a crear`,segmentFresh:`Entrada nueva`,segmentRead:`Leído de la caché`,statusFullMissBody:`Ninguna parte del prompt de esta llamada se leyó de la caché.`,statusFullMissReCreatedSuffix:` Se escribieron {count} tokens en la caché en este turno, pero no se reutilizó ninguno; esto suele significar que el prefijo en caché cambió desde el turno anterior.`,statusFullMissTitle:`Fallo total de caché`,statusHealthyBody:`El {percent} del prompt de esta llamada ({count} tokens) se sirvió desde la caché.`,statusHealthyTitle:`Reutilización saludable de la caché`,statusPartialBody:`El {percent} del prompt de esta llamada ({count} tokens) se sirvió desde la caché; el resto se volvió a procesar en este turno.`,statusPartialTitle:`Reutilización parcial de la caché`,title:`Estado de la caché`,unavailableNote:`Esta llamada no informó del uso de la caché del prompt.`,unavailableNoteForProvider:`Esta llamada no informó del uso de la caché del prompt para {provider}.`},I={callCount:`{count, plural, one {# llamada LLM} other {# llamadas LLM}}`,callLabel:`Llamada {number}`,compaction:`Compactación`,cost:`Costo`,empty:`No hay llamadas LLM registradas.`,failed:`Fallida`,latest:`Más reciente`,navAriaLabel:`Llamadas LLM`,syntheticAgentLoopError:`Error del bucle del agente`,syntheticAgentLoopErrorWithReason:`Error del bucle del agente · {reason}`,syntheticYield:`Rendimiento · la compactación no cupo en el siguiente paso`,unrecognizedCall:`Llamada no reconocida`},L={eventsRecorded:`{count, plural, one {# evento} other {# eventos}} registrados.`},R={captureFailed:`No se pudo tomar esa foto. Inténtalo de nuevo.`,close:`Cerrar cámara`,flip:`Cambiar de cámara`,openFailed:`No se pudo abrir la cámara.`,shutter:`Tomar foto`,title:`Tomar una foto`},z={captureFailed:`No se pudo tomar esa foto.`,deviceInUse:`Otra aplicación está usando la cámara.`,noDevice:`No se encontró ninguna cámara.`,notDelivered:`Reconectando. Toma esa foto de nuevo.`,permissionDenied:`El acceso a la cámara está desactivado para Vellum.`,refused:`Tu asistente todavía no puede recibir fotos.`,storeFailed:`No se pudo añadir esa foto a la conversación.`,unknown:`No se pudo abrir la cámara.`,unsupported:`Este dispositivo no puede abrir una cámara.`,uploadFailed:`No se pudo enviar esa foto.`},B={live:`En vivo · Toca para detener`,liveDescription:`Toca para detener el video en vivo.`,photo:`Toca para foto · Mantén para en vivo`,photoDescription:`Mantén pulsado para iniciar el video en vivo.`},V={announceLive:`En vivo. {status}`,announceLiveMuted:`En vivo. Silenciado. {status}`,announceLiveMutedSpeaking:`En vivo. Silenciado. {name} está hablando`,announceLiveSpeaking:`En vivo. {name} está hablando`,announcePhoto:`Foto. {status}`,announcePhotoMuted:`Foto. Silenciado. {status}`,announcePhotoMutedSpeaking:`Foto. Silenciado. {name} está hablando`,announcePhotoSpeaking:`Foto. {name} está hablando`,live:`En vivo`,photo:`Foto`,yourAssistant:`Tu asistente`},H={buttonAria:`Opciones de vista de la cámara`,gateHudDescription:`El panel de ajuste de lo que conserva el modo en vivo.`,gateHudTitle:`Lectura del filtro de fotogramas`,keptFrameDescription:`El último fotograma enviado en vivo, junto a tus fotos. El envío continúa igualmente.`,keptFrameTitle:`Último fotograma`,title:`Mostrar`},U={tasksProgress:`{completed} / {total} tareas`,viewDetails:`Ver detalles`},W={heading:`Haciendo referencia a un mensaje de {channel}`,headingWithSender:`Haciendo referencia a {sender} en {channel}`,removeAria:`Quitar el mensaje referenciado`},G={accountSid:`SID de la cuenta`,accountSidPlaceholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,authToken:`Token de autenticación`,authTokenPlaceholder:`Token de autenticación de Twilio`,close:`Cerrar`,closeSetupAria:`Cerrar el panel de configuración`,connectedHeading:`{channel} está conectado`,credentialsSaved:`Credenciales guardadas. Vuelve al chat para terminar la configuración.`,phoneConnected:`Tu asistente ya puede hacer llamadas telefónicas con Twilio.`,phoneLabel:`Teléfono`,save:`Guardar`,saving:`Guardando…`,settingsTitle:`Ajustes de {channel}`,setupTitle:`Configuración de {channel}`,slackConnected:`Tu asistente ya puede recibir mensajes en Slack.`,telegramConnected:`Tu asistente ya puede recibir mensajes en Telegram.`,twilioIntro:`Introduce tus credenciales de Twilio desde la <consoleLink>consola de Twilio</consoleLink>. Después de guardar, vuelve al chat. Tu asistente terminará de configurar tu número de teléfono y los webhooks.`,discordConnected:`Discord esta conectado. Anade el bot a un servidor y empezara a responder alli.`},K={closeAria:`Cerrar el hilo de {channel}`,label:`Hilo de {channel}`,openAria:`Abrir el hilo de {channel}`},q={assistantSender:`Asistente`,closeAria:`Cerrar el hilo del canal`,closeTooltip:`Cerrar`,emptyNoMessageDetail:`{channel} no envía a Vellum los detalles por mensaje que necesita esta vista, así que no hay nada que mostrar aquí. Abre la conversación en {channel} para leerla completa.`,emptyThread:`Todavía no hay mensajes de {channel} en esta conversación.`,namedTitle:`{channel} · {thread}`,noText:`Sin contenido de texto`,openInChannel:`Abrir en {channel}`,reactionAdded:`Reaccionó con {emoji}`,reactionRemoved:`Quitó la reacción {emoji}`,readOnly:`Solo lectura`,readOnlyNote:`Esta es la conversación tal como está en {channel}. El campo de escritura de Vellum es el único lugar donde puedes escribir.`,reference:`Referenciar en Vellum`,referenceAria:`Referenciar este mensaje de {channel} en Vellum`,referenced:`Referenciado`,removeReferenceAria:`Quitar esta referencia del campo de escritura de Vellum`,title:`Hilo de {channel}`,unknownSender:`Remitente desconocido`},J={attachFileAria:`Adjuntar archivo`,dismiss:`Descartar`,removeAria:`Quitar {filename}`},Y={dropFiles:`Suelta archivos para adjuntarlos`},X={addToChat:`Añadir al chat`,askAssistantPlaceholder:`Pregunta a {assistantName}`,configureVoice:`Configurar la voz`,endOtherVoiceSession:`Finalizar y empezar aquí`,goToVoiceSession:`Ir a la sesión`,recording:`Grabando`,sendMessage:`Enviar mensaje`,stopGenerating:`Detener la generación`,transcribing:`Transcribiendo`,transcribingEllipsis:`Transcribiendo…`,typeToSend:`Escribe un mensaje para enviarlo`,uploadingAttachments:`Subiendo archivos adjuntos…`},Z={archived:`[Archivado]`,done:`[Hecho]`,newChat:`Chat nuevo`},Q={appsTitle:`Apps`,backAria:`Volver a la información del chat`,backTooltip:`Información del chat`,closeAria:`Cerrar la información del chat`,empty:`Aún no hay recursos en este chat`,filesTitle:`Documentos e imágenes`,framesTitle:`Fotogramas de la cámara`,loadFailed:`No se pudieron cargar los recursos`,loadMore:`Cargar más`,openAppAria:`Abrir {name}`,openDocumentAria:`Abrir {name}`,previewAttachmentAria:`Vista previa de {filename}`,previewFrameAria:`Vista previa del fotograma de la cámara`,seeAll:`Ver todo`,seeAllAppsAria:`Ver todas las apps`,seeAllFilesAria:`Ver todos los documentos e imágenes`,seeAllFramesAria:`Ver todos los fotogramas de la cámara`,title:`Información del chat`,retry:`Reintentar`,retrySourceAria:`Reintentar {source}`,documentsSource:`Documentos`,attachmentsSource:`Archivos adjuntos`,sourceLoading:`Cargando {source}…`,sourceLoadFailed:`No se pudo cargar: {source}.`,sourceRefreshFailed:`No se pudo actualizar: {source}. Se muestran los resultados guardados.`,sourcePageFailed:`No se pudieron cargar más elementos de {source}.`,framesUnsupported:`La clasificación de fotogramas de cámara no está disponible en esta versión del asistente.`,loadedHistory:`Los archivos adjuntos solo incluyen el historial de chat cargado.`},$={navigationAria:`Navegación`},ee={backAria:`Atrás (Ctrl+[)`,forwardAria:`Adelante (Ctrl+])`,openNavigationAria:`Abrir navegación`,searchAria:`Buscar (Ctrl+K)`,toggleSidebarAria:`Mostrar u ocultar la barra lateral`},te={expandImageAria:`Ampliar imagen`,expandImageAriaWithAlt:`Ampliar imagen: {alt}`,imageFailed:`No se pudo cargar la imagen`,imageFailedWithAlt:`No se pudo cargar la imagen ({alt})`,loadingImage:`Cargando imagen…`,loadingImageWithAlt:`Cargando imagen… ({alt})`},ne={connecting:`Conectando…`,connectingStuck:`Todavía se está conectando a tu asistente; parece que algo se ha quedado atascado. Inténtalo de nuevo, o actualiza la página si sigue ocurriendo.`,retryNow:`Reintentar ahora`,selfHostedUnreachable:`No se pudo contactar con tu asistente autoalojado. Asegúrate de que el asistente esté en ejecución e inténtalo de nuevo.`,tryAgain:`Intentar de nuevo`},re={askTheDoctor:`Preguntar al Doctor`,goToDoctor:`Ir al Doctor`,openPage:`Abrir página`,suggestionFallback:`Sugerencia`,copyCliFix:`Copiar corrección de CLI`},ie={applyTo:`Aplicar a`,cancel:`Cancelar`,createTitle:`Crear regla de confianza`,description:`Las llamadas a herramientas que coincidan usan el nivel de riesgo de esta regla, para que tu tolerancia de aprobación pueda autoaprobarlas.`,editTitle:`Editar regla de confianza`,narrowerScopeAria:`Alcance más estrecho`,orNarrowScope:`O reduce el alcance:`,save:`Guardar`,saveAsNew:`Guardar como nueva`,saveRule:`Guardar regla`,saving:`Guardando…`,suggested:`Sugerido: {risk}`,treatAs:`Tratar como`},ae={continue:`Continuar`,recommended:`Recomendado`},oe={broomAria:`escoba`,hatchHint:`Podrás crear un nuevo asistente cuando esto termine.`,hintAlmostDone:`Casi listo…`,hintCleaning:`Limpiando tu asistente…`,hintWrapping:`Cerrando todo…`,timeoutBody:`Prueba a ejecutar Vellum Doctor para diagnosticar el problema, o <communityLink>pregunta a la comunidad</communityLink> para pedir ayuda.`,timeoutTitle:`La limpieza está tardando más de lo esperado`,title:`Limpiando tu asistente…`,warningAria:`advertencia`},se={turn:`Hice clic en {label}. ¿Y ahora qué?`},ce={noConversations:`No hay conversaciones`},le={ariaLabel:`Compactación automática en pausa`,message:`Compactación automática en pausa: una conversación larga puede desbordarse. Usa /compact para compactar manualmente.`},ue={compactedMessages:`{count} compactados`,compactedPreserved:`Compactados / preservados`,contextTokens:`Tokens de contexto`,duration:`Duración`,durationMs:`{count} ms`,emptyBody:`Una compactación se atribuye a la llamada que se ejecutó justo después. Si esperas una aquí, verifica que la conversación superó su presupuesto de contexto justo antes de esta llamada.`,emptyTitle:`Ninguna compactación está asociada a esta llamada`,eventIndex:` · {index} de {totalCount}`,hideSummaryText:`Ocultar texto del resumen`,loadFailedDefault:`No se pudo cargar la compactación.`,loadFailedTitle:`Error al cargar`,loading:`Cargando compactación…`,messageRange:`{before} → {after}`,messages:`Mensajes`,outcomeCompacted:`Compactado`,outcomeFailed:`Compactación fallida`,outcomeFailedDetail:`La llamada del resumidor falló, por lo que el contexto quedó intacto.`,outcomeNoChange:`Sin cambios`,outcomeUnavailable:`Resultado no disponible`,outcomeUnavailableDetail:`No se registraron métricas detalladas antes/después para esta compactación.`,preservedMessages:`{count} preservados`,reductionRatio:`{ratio}× más pequeño`,retry:`Reintentar`,showSummaryText:`Mostrar texto del resumen`,summarizerUsage:`{input} entrada / {output} salida`,summaryCost:`Costo del resumen`,summaryModel:`Modelo de resumen`,tokenRange:`{before} → {after}`,tokenRangeWithReduction:`{before} → {after} ({reduction})`,trigger:`Disparador`},de={draftRestored:`Borrador restaurado de tu sesión anterior.`,waitingUpload:`{count, plural, one {Esperando a que termine de subirse el adjunto antes de enviar.} other {Esperando a que terminen de subirse # adjuntos antes de enviar.}}`},fe={allowMicrophone:`Permitir micrófono`,openSettings:`Abrir configuración`},pe={blockedTitle:`Mensaje no enviado. Parece que contiene una clave de API.`,body:`Las credenciales enviadas en el chat son visibles en la transcripción. Guárdala de forma segura en su lugar.`,dismiss:`Descartar`,sendAnyway:`Enviar de todos modos`,storeSecurely:`Guardar de forma segura`,warningTitle:`Esto parece una clave de API`},me={accessAria:`Acceso del asistente: {label}`,assistantAccess:`Acceso del asistente`,assistantAccessTitle:`Acceso del asistente`,compactAria:`Acceso del asistente y perfil del modelo`,compactAriaWithSummary:`Acceso del asistente y perfil del modelo: {summary}`,defaultLabel:`{label} (predeterminado)`,defaultSuffix:`(predeterminado)`,loadingProfiles:`Cargando perfiles…`,modelProfile:`Perfil del modelo`,modelProfileTitle:`Perfil del modelo`,profileAria:`Perfil del modelo: {label}`,profileAriaFallback:`Perfil del modelo`,profileSwitchFailed:`Perfil creado, pero no se pudo cambiar a él`,profileSwitchFallback:`No se pudo cambiar de perfil. Inténtalo de nuevo.`,quickAdd:`Nuevo modelo`},he={submitFailed:`No se pudo enviar la confirmación. Inténtalo de nuevo.`,submitFailedRuleAvailable:`No se pudo enviar la confirmación, pero aún puedes crear una regla.`},ge={allow:`Permitir`,deny:`Denegar`,hideDetails:`Ocultar detalles`,showDetails:`Mostrar detalles`,titleFallback:`Confirmación necesaria`,toolLabel:`Herramienta:`},_e={cancelFailed:`No se pudo descartar el formulario. Inténtalo de nuevo.`,recordCancelFailed:`No se pudo descartar el formulario. Inténtalo de nuevo.`,recordSaveFailed:`No se pudo guardar el contacto. Inténtalo de nuevo.`,saveFailed:`No se pudo guardar el contacto. Inténtalo de nuevo.`},ve={addContact:`Añadir un contacto`,addingToContact:`Añadiendo un canal a {name}`,cancel:`Cancelar`,contactSaved:`Contacto guardado`,enterAddress:`Introduce la dirección de {channel}`,markVerified:`Marcar esta dirección como verificada`,markVerifiedHelp:`Una dirección verificada puede enviar mensajes a tu asistente.`,namePlaceholder:`Nombre`,notesLabel:`Notas`,save:`Guardar`,saving:`Guardando…`},ye={cancel:`Cancelar`,channelType:`{channel}:`,contactDeleted:`Contacto eliminado`,contactMerged:`Contactos combinados`,contactSaved:`Contacto guardado`,createTitle:`Añadir un contacto`,delete:`Eliminar`,deleteTitle:`¿Eliminar a {name}?`,deleteWarning:`Esto también elimina sus canales, por lo que ya no podrá contactar con tu asistente.`,merge:`Combinar`,mergeDonorChannels:`Se trasladan de {name}`,mergeSurvivorChannels:`Ya están en {name}`,mergeTitle:`¿Combinar a {donor} con {survivor}?`,mergeWarning:`Estos canales pasan a {survivor} y se elimina el registro de {donor}.`,nameLabel:`Nombre`,namePlaceholder:`Nombre`,noChannels:`Este contacto no tiene canales.`,notesLabel:`Notas`,notesPlaceholder:`Añadir una nota`,save:`Guardar`,saving:`Guardando…`,updateTitle:`Actualizar a {name}`},be={clearContext:`Borrar contexto`,compactsHint:`{name} compacta<br></br>su contexto automáticamente.`,compactsHintInline:`{name} compacta el contexto automáticamente`,defaultAssistantName:`Tu asistente`,label:`Ventana de contexto:`,percentFull:`{percentage} % lleno`,ringAria:`Ventana de contexto al {percentage} %`,title:`Ventana de contexto`,tokensUsed:`{used} / {max} tokens usados`},xe={archive:`Archivar`,copyConversation:`Copiar conversación completa`,copyConversationId:`Copiar ID de conversación`,delete:`Eliminar`,done:`Hecho`,forkConversation:`Bifurcar conversación`,inspect:`Analizar conversación`,markAsDone:`Marcar como hecho`,markRead:`Marcar como leída`,markUnread:`Marcar como no leída`,moveToGroup:`Mover al grupo`,newDocument:`Nuevo documento`,newDocumentFailed:`No se pudo crear el documento. Inténtalo de nuevo.`,newGroup:`Nuevo grupo…`,openInNewWindow:`Abrir en una ventana nueva`,pin:`Fijar`,refresh:`Actualizar`,removeFromGroup:`Quitar del grupo`,rename:`Cambiar nombre`,reopen:`Reabrir`,shareFeedback:`Enviar comentarios`,triggerAriaLabel:`Acciones de conversación`,unarchive:`Desarchivar`,unpin:`Dejar de fijar`},Se={closeAriaLabel:`Cerrar`,title:`Acciones de conversación`},Ce={delete:`Eliminar`,downloadPdf:`Descargar PDF`,exportAsVellum:`Exportar como archivo .vellum`,open:`Abrir`,optionsFor:`Opciones para {name}`,pin:`Anclar`,share:`Compartir`,unpin:`Desanclar`},we={ariaLabel:`Recursos de la conversación, {count, plural, one {# elemento} other {# elementos}}`,ariaLabelUnavailable:`Recursos de la conversación, no se pudieron cargar`,ariaLabelUnseen:`Recursos de la conversación, {count, plural, one {# elemento} other {# elementos}} (cambios sin ver)`,label:`{count, plural, one {# recurso} other {# recursos}}`,labelUnavailable:`No se pudieron cargar los recursos`,labelPartial:`No se pudieron cargar algunos recursos`,ariaLabelPartial:`Recursos de la conversación, algunos no se pudieron cargar`,labelLoaded:`{count, plural, one {# recurso cargado} other {# recursos cargados}}`,ariaLabelLoaded:`Recursos de la conversación, {count, plural, one {# elemento cargado} other {# elementos cargados}}`,ariaLabelLoadedUnseen:`Recursos de la conversación, {count, plural, one {# elemento cargado} other {# elementos cargados}} (cambios sin ver)`},Te={caption:`Prueba algunas sugerencias:`},Ee={sendAria:`Enviar: {label}`},De={copied:`Copiado`,copy:`Copiar`},Oe={conversationCopied:`ID de conversación copiado al portapapeles.`,conversationFailed:`No se pudo copiar el ID de conversación.`,groupCopied:`ID de grupo copiado al portapapeles.`,groupFailed:`No se pudo copiar el ID de grupo.`},ke={balanceAria:`{balance} créditos`,balanceShort:`{balance} c`,credits:`Créditos`},Ae={loginToAddCredits:`Inicia sesión en la plataforma Vellum para agregar créditos.`},je={emptyFile:`Este archivo está vacío`,summary:`{rows} filas x {columns} columnas`,summaryTruncated:`{rows} filas x {columns} columnas (truncado)`},Me={skipConfirmTitle:`¿Omitir el límite de créditos de hoy?`,skipError:`No se pudo omitir el límite de hoy. Inténtalo de nuevo.`,skipForToday:`Omitir por hoy`,subtitle:`El gasto de créditos de Vellum está pausado hasta que tu límite se reinicie a las {resetPhrase}.`,title:`Límite diario de créditos alcanzado`},Ne={acknowledgment:`Entiendo que los recursos y recuerdos relacionados pueden seguir existiendo`,cancel:`Cancelar`,confirm:`Eliminar`,message:`¿Eliminar “{title}”? Esto borra la conversación y sus mensajes de forma permanente. Los recursos y recuerdos relacionados pueden seguir existiendo. Esta acción no se puede deshacer.`,title:`Eliminar conversación`},Pe={label:`Este mensaje fue eliminado`},Fe={pdfDownloadFailed:`No se pudo descargar el PDF`},Ie={send:`Enviar`,sending:`Enviando…`},Le={addCommentPlaceholder:`Agregar un comentario…`,closeAria:`Cerrar el panel de comentarios`,empty:`Aún no hay comentarios`,loading:`Cargando comentarios…`,submitFeedback:`Enviar comentarios`,title:`Comentarios`},Re={assistantMonogram:`V`,authorAssistant:`Asistente`,authorYou:`Tú`,deleteCommentAria:`Eliminar comentario`,jumpToHighlight:`Ir al texto resaltado`,open:`Abierto`,reopen:`Reabrir`,reply:`Responder`,replyPlaceholder:`Escribe una respuesta…`,resolve:`Resolver`,resolved:`Resuelto`},ze={openAria:`Abrir {name}`},Be={openAria:`Abrir {name}`},Ve={close:`Cerrar`,closeDocumentAria:`Cerrar documento`,comments:`Comentarios`,export:`Exportar`,hideComments:`Ocultar comentarios`,menuAria:`Opciones del documento`,rename:`Cambiar nombre`,renameFailed:`No se pudo cambiar el nombre del documento.`,renameSave:`Guardar`,renameTitle:`Cambiar el nombre del documento`,saved:`Guardado`,saving:`Guardando…`,wordCount:`{count, plural, one {# palabra} other {# palabras}}`},He={unavailable:`No se puede abrir la conversación del documento. Inténtalo de nuevo.`,updateRequired:`Actualiza tu asistente para iniciar una conversación vinculada.`,prepareFailed:`No se pudo preparar la conversación del documento. Tus cambios siguen disponibles.`,feedbackPrompt:`Revisa y atiende mis comentarios sobre "{title}".`,missing:`La conversación de este documento no está disponible. Puedes seguir editando o iniciar una nueva conversación vinculada.`,start:`Iniciar una conversación vinculada`,retry:`Intentar de nuevo`,back:`Volver`},Ue={exportFailed:`No se pudo exportar el PDF`,notFound:`Documento no encontrado.`},We={collapse:`Contraer`,titleFallback:`Contenido dinámico`},Ge={cancel:`Cancelar`,close:`Cerrar`,defaultError:`No se pudieron exportar los datos del inspector.`,descriptionDone:`La descarga debería haber comenzado automáticamente.`,descriptionError:`Algo salió mal al recopilar la exportación.`,descriptionRunning:`Recopilando cargas del proveedor y contexto normalizado. Esto puede tardar un momento en conversaciones largas.`,done:`Listo`,progressAriaLabel:`Progreso de exportación`,retry:`Reintentar`,statusDone:`Listo`,statusPackaging:`Empaquetando ZIP…`,statusProgress:`{completed} de {total} llamadas`,titleDone:`Exportación completa`,titleError:`Error al exportar`,titleRunning:`Exportando datos del inspector`},Ke={diffForAria:`Diferencias de {path}`},qe={failed:`No se pudo descargar el archivo`},Je={closePreviewAria:`Cerrar previsualización`,closeTooltip:`Cerrar`,download:`Descargar`,downloadAria:`Descargar {name}`,loadError:`No se pudo cargar este archivo`,overLimit:`{size}, por encima del límite de previsualización de {limit}`,tooLarge:`Este archivo es demasiado grande para previsualizar`,tryAgain:`Reintentar`},Ye={accepted:`Aceptados: {types}`,dropHint:`Arrastra y suelta archivos aquí, o haz clic para explorar`,maxSize:`Tamaño máximo: {size}`,removeFile:`Eliminar {name}`,upload:`Subir`,uploading:`Subiendo...`},Xe={secureHint:`Este valor se enviará de forma segura y no se guardará en tu navegador.`,selectPlaceholder:`Seleccionar...`},Ze={collapse:`Ocultar la lectura del filtro de fotogramas`,expand:`Mostrar la lectura del filtro de fotogramas`},Qe={archiveAll:`Archivar todas…`,copyGroupId:`Copiar ID del grupo`,deleteGroup:`Eliminar grupo`,deleteGroupWithConversations:`Eliminar grupo…`,groupByChannel:`Agrupar por canal`,markAllAsDone:`Marcar todo como hecho…`,markAllRead:`Marcar todas como leídas`,moveSectionDown:`Bajar sección`,moveSectionUp:`Subir sección`,rename:`Cambiar nombre`,ungroup:`Desagrupar`},$e={title:`Acciones de {name}`},et={create:`Crear`,newTitle:`Grupo nuevo`,renameTitle:`Renombrar grupo`,save:`Guardar`},tt={next:`Siguiente`,showMeAround:`Muéstrame cómo funciona`,skipTour:`Omitir recorrido`},nt={ariaLabel:`Plugins del chat, {count} activos`,costCaption:`Cambiar la configuración de plugins puede generar costes altos.`,countLabel:`{count, plural, one {# plugin} other {# plugins}}`,manage:`Administrar`,plugins:`Plugins`},rt={stop:`Detener`},it={accessDenied:`El inspector está disponible cuando la marca Internal Thread Actions está habilitada.`,allMessages:`Todos los mensajes`,back:`Volver`,backToConversationAria:`Volver a la conversación`,chooseCall:`Elige una llamada de la barra lateral para inspeccionar su contexto.`,conversationScopeSubtitle:`Mostrando cada llamada LLM registrada en esta conversación.`,detailLoadFailed:`No se pudo cargar el contexto normalizado de esta llamada.`,emptyBodyConversation:`Ningún mensaje de la conversación fue producido por una llamada LLM o los registros de solicitud fueron recortados por retención.`,emptyBodyMessage:`Este mensaje no fue producido por una llamada LLM o sus registros de solicitud fueron recortados por retención.`,emptyTitleConversation:`No hay llamadas LLM registradas para esta conversación.`,emptyTitleMessage:`No hay llamadas LLM registradas para este mensaje.`,enableLogging:`Habilitar registro`,enableLoggingFailed:`No se pudo habilitar el registro`,enableLoggingFailedWithMessage:`No se pudo habilitar el registro ({message})`,enabling:`Habilitando…`,exportFailed:`No se pudieron exportar los datos del inspector`,exportZip:`Exportar ZIP`,exportZipAria:`Exportar datos del inspector como ZIP`,exporting:`Exportando…`,filterToMessage:`Filtrar por mensaje:`,llmCallCount:`{count, plural, one {1 llamada LLM} other {# llamadas LLM}}`,loadContextFailed:`No se pudo cargar el contexto LLM.`,loadFailedTitle:`Error al cargar`,loading:`Cargando…`,loggingDisabledBody:`Las cargas útiles de solicitud y respuesta no se están registrando, así que no hay nada que inspeccionar. Habilita el registro para capturar futuras llamadas LLM.`,loggingDisabledTitle:`El registro de solicitudes LLM está desactivado`,loggingEnabledToast:`Registro de solicitudes LLM habilitado`,messageOptionDeepLink:`Mensaje {messageId}`,messageOptionNoText:`{index}. (sin texto)`,messageOptionWithPreview:`{index}. {preview}`,retry:`Reintentar`,scopedToOneMessage:`Limitado a un mensaje · `,scopedToTurn:`Limitado al turno {index} de {count} · `,title:`Inspector de contexto LLM`},at={android:`La voz ya está activa en la aplicación de Android.`,ios:`La voz ya está activa en la aplicación de iOS.`,macos:`La voz ya está activa en la aplicación de Mac.`,unknown:`La voz ya está activa en otro lugar.`,web:`La voz ya está activa en otra pestaña del navegador.`,windows:`La voz ya está activa en la aplicación de Windows.`},ot={startVoiceMode:`Iniciar el modo de voz`,tooltip:`Habla en voz alta con el modo de voz`},st={connecting:`Conectando…`,ending:`Finalizando…`,listening:`Escuchando…`,muted:`Silenciado`,reconnecting:`Reconectando…`,speaking:`Hablando…`,thinking:`Pensando…`,working:`Trabajando en ello…`},ct={chipCode:`Código`,chipProvider:`Proveedor`,chipRequestId:`ID de solicitud`,chipStatus:`Estado`,chipType:`Tipo`,chipUpstreamCode:`Código ascendente`,chipUpstreamParam:`Parámetro ascendente`,chipUpstreamType:`Tipo ascendente`,noResponse:`El proveedor rechazó esta llamada y no devolvió respuesta.`,title:`Llamada fallida`},lt={loadingAria:`Cargando {label}`,pictureInPictureUnavailable:`Imagen sobre imagen no está disponible`},ut={closePreview:`Cerrar vista previa: {filename}`,fileOptions:`Opciones del archivo: {filename}`,openInWorkspace:`Abrir en el espacio de trabajo: {filename}`,openPreview:`Abrir vista previa: {filename}`,unavailable:`Este archivo no está disponible aquí`,unavailableLabel:`Archivo no disponible: {filename}`,viewImage:`Ver imagen: {filename}`},dt={download:`Descargar`,fileActionsAria:`Acciones del archivo`,goToFile:`Ir al archivo`,pictureInPicture:`Imagen en imagen`},ft={addCredits:`Añadir créditos`,ariaLabel:`Tus créditos se están agotando. {detail}`,subtitle:`Añade créditos para evitar una interrupción.`,title:`Tus créditos se están agotando`},pt={body:`El espacio de trabajo de tu asistente está conectado actualmente a un terminal de depuración. El chat no está disponible en el modo de recuperación.`,loginHint:`Inicia sesión en la plataforma Vellum para salir del modo de recuperación.`,resume:`Reanudar asistente`,title:`Asistente en modo de recuperación`},mt={body:`El chat no está disponible mientras el mantenimiento está activo.`,goToDebug:`Ir a ajustes de depuración`,title:`El asistente está en modo de recuperación`},ht={addOlderPairButton:`+ Añadir par más antiguo`,assistantReplyLabel:`[assistant]: respuesta`,assistantReplyPlaceholder:`Respuesta del asistente que precedió al mensaje del usuario de abajo.`,configTitle:`Configuración {paneId}`,conversationalContextTitle:`Contexto conversacional (compartido por ambos paneles)`,customPromptPlaceholder:`Prompt del sistema del enrutador personalizado. Marcadores de posición disponibles:
2
+ '{ASSISTANT_NAME}, {USER_NAME}, {PAGE_INDEX}'
3
+ Déjalo en blanco para usar la plantilla incluida. "Cargar predeterminado" rellena el área de texto con el cuerpo incluido para editar.`,description:`Ejecuta en seco el enrutador v4 con anulaciones personalizadas de nivel/lote. Solo lectura: no se escriben filas en <code>memory_v2_injection_events</code> ni en <code>memory_v2_activation_logs</code>, y no se modifica el estado de activación. Deja una anulación en blanco para heredar el valor de configuración activo; escribe <code>null</code> para desactivar explícitamente un nivel.`,diffLabel:`Diferencia`,diffValue:`{shared} compartidas · {unique} exclusivas de este panel`,effectiveConfig:`Configuración efectiva`,emaScore:`EMA {score}`,empty:`(vacío)`,emptySelectionHint:`El enrutador devolvió una selección vacía. Prueba una consulta más específica o relaja los valores de anulación.`,failedToRunSimulation:`No se pudo ejecutar la simulación`,firstTurnAssistantPlaceholder:`Déjalo en blanco para un escenario de primer turno.`,inheritActive:`heredar activo`,inheritActiveWithProfile:`heredar activo ({profile})`,inheritPlaceholder:`heredar`,invalidOverrideInput:`Entrada de anulación no válida`,justArrivedUserLabel:`[user]: mensaje recién llegado`,lastUserPlaceholder:`p. ej. qué deberíamos lanzar después`,legendAOnly:`solo A`,legendBOnly:`solo B`,legendInBoth:`en ambos`,llmProfilesOverride:`anulación de llm.profiles`,loadDefault:`Cargar predeterminado`,loading:`Cargando…`,noPagesSelected:`No se seleccionaron páginas`,notAvailable:`El patio de pruebas del enrutador de memoria no está disponible.`,nowBlockLabel:`bloque '<now>'`,nowDefaultPlaceholder:`Rellenado con el NOW.md activo. Edita para probar estados alternativos.`,nowLoadingPlaceholder:`Cargando NOW.md actual…`,nullValue:`null`,overrideMustBePositiveInteger:`{fieldName} debe ser un entero positivo o 'null' (se obtuvo "{value}")`,overrideSuffix:` (anulación)`,pageCount:`{count, plural, one {# página} other {# páginas}}`,pairLabel:`Par {index} de {total}`,pairMostRecentSuffix:` · más reciente`,paneTitle:`Panel {paneId}`,promptModeBundled:`incluido`,promptModeCustom:`personalizado`,rawApiExchange:`Intercambio de API sin procesar`,recentPairsLabel:`Pares recientes (asistente, usuario) · más antiguos primero`,reloadNowButton:`Recargar NOW.md activo`,removeButton:`Eliminar`,requestLabel:`Solicitud (panel {paneId})`,reset:`Restablecer`,responseLabel:`Respuesta (panel {paneId})`,routerFailure:`Fallo del enrutador: {reason}`,runBoth:`Ejecutar ambos`,runPane:`Ejecutar {paneId}`,running:`Ejecutando…`,selectedLabel:`Seleccionadas`,selectedValue:`{count} (max_page_ids activo: {maxPageIds})`,summary:`Resumen`,summaryUserMessageLabel:`Mensaje del usuario`,systemPrompt:`Prompt del sistema`,systemPromptConfigLabel:`prompt del sistema`,tier1Label:`nivel 1`,tier2Label:`nivel 2`,tier3Label:`nivel 3 · b{batch}`,title:`Patio de pruebas del enrutador de memoria`,totalCandidatePagesLabel:`Total de páginas candidatas`,userMessageLabel:`[user]: mensaje`,userMessagePlaceholder:`Mensaje del usuario.`},gt={afterMergeLabel:`Tras la fusión`,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 (propio)`,breakdownPriorActivation:`prior · d`,breakdownRerankScaledRaw:`+{scaled} (bruto {raw})`,breakdownScaledRaw:`{scaled} (bruto {raw})`,breakdownSource:`fuente`,breakdownSpreadDelta:`spread Δ`,breakdownStatus:`estado`,candidatePoolChosenChip:`seleccionada`,candidatePoolNoneBody:`No se registró ningún grupo de candidatos para este turno.`,candidatePoolPassthroughSubtitle:`{poolSize, plural, one {# candidato admitido directamente} other {# candidatos admitidos directamente}} sin evaluación del selector · selector desactivado`,candidatePoolSelectorNotRunBody:`El selector no se ejecutó en este turno.`,candidatePoolSubtitle:`{poolSize, plural, one {# candidato mostrado} other {# candidatos mostrados}} al selector · {selectedCount, plural, one {# página seleccionada} other {# páginas seleccionadas}}`,candidatePoolTitle:`Grupo de candidatos`,candidateScores:`sem {semantic} · rec {recency}`,carriedPill:`Arrastradas: {count}`,conceptActivationsSubtitle:"Ordenadas por activación final. Las entradas de habilidades aparecen con el prefijo `skills/`; expande una fila para ver el desglose de activación.",conceptActivationsTitle:`Activaciones de conceptos ({count})`,configCAssistant:`c_assistant`,configCNow:`c_now`,configCUser:`c_user`,configDDecay:`d (decaimiento)`,configEpsilon:`epsilon`,configHops:`saltos`,configKSharpening:`k (agudización)`,configSubtitle:`Pesos de activación y umbrales de selección.`,configTitle:`Configuración`,configTopK:`top_k`,copyAriaLabel:`Copiar al portapapeles`,copyAriaLabelCopied:`Copiado`,copyButtonCopied:`Copiado`,copyButtonCopy:`Copiar`,copyErrorMessage:`No se pudo copiar al portapapeles.`,copyTitle:`Copiar`,copyTitleCopied:`¡Copiado!`,corePill:`Núcleo: {count}`,degradationTitle:`Degradación`,fallbackSourcesLabel:`Fuentes de respaldo`,hybridSearchLabel:`Búsqueda híbrida`,inContextPill:`En contexto: {count}`,injectedMemoryContextTitle:`Contexto de memoria inyectado`,injectedPill:`Inyectados: {count}`,injectedTokensLabel:`Tokens inyectados`,latencyMs:`{ms} ms`,loading:`Cargando…`,loggedMemorySelectionSubtitle:`Renderizado desde la selección v3, no inyectado en este turno.`,loggedMemorySelectionTitle:`Selección de memoria registrada`,memoryDisabledDefaultReason:`La recuperación de memoria se desactivó para este turno.`,memoryDisabledTitle:`Memoria desactivada`,missingValue:`-`,modelLabel:`Modelo`,no:`No`,noDataBody:`La información de recuperación de memoria no está disponible para este mensaje.`,noDataTitle:`Sin datos de memoria`,noEntriesRanked:`No hay entradas clasificadas.`,noPagesSelected:`No hay páginas seleccionadas.`,notInjectedPill:`No inyectados: {count}`,pageContentLabel:`contenido de la página`,pageNotFound:`Página no encontrada en disco. El slug puede hacer referencia a una entrada obsoleta de Qdrant.`,pillMemoryV2:`Memoria V2`,pillMemoryV3:`Memoria V3`,pillRecallV1:`Recuperación (v1)`,providerLabel:`Proveedor`,queryContextSubtitle:`El texto incrustado como vector de búsqueda para la recuperación semántica.`,queryContextTitle:`Contexto de consulta`,reasonLabel:`Motivo`,retrievalFunnelSubtitle:`Cómo se filtraron las memorias desde la búsqueda semántica hasta la inyección.`,retrievalFunnelTitle:`Embudo de recuperación`,searchDetailsTitle:`Detalles de búsqueda`,selectedLabel:`Seleccionadas`,selectedPagesSubtitle:`Páginas que v3 seleccionó, etiquetadas por el carril que las mostró y la sección coincidente (cuando un carril de búsqueda mostró una).`,selectedPagesTitle:`Páginas seleccionadas ({count})`,selectedPill:`Seleccionadas: {count}`,semanticHitsLabel:`Coincidencias semánticas`,semanticUnavailableLabel:`Semántica no disponible`,sparseDenseOnly:`Solo densos`,sparseUsed:`Usados`,sparseVectorsLabel:`Vectores dispersos`,statusActive:`Activo`,statusDegraded:`Degradado`,statusLabel:`Estado`,statusSubtitle:`Proveedor, modelo y latencia de esta recuperación.`,statusTitle:`Estado`,tier1Label:`Nivel 1`,tier2Label:`Nivel 2`,topCandidatesSubtitle:`{count, plural, one {# candidato clasificado por puntuación final.} other {# candidatos clasificados por puntuación final.}}`,topCandidatesTitle:`Mejores candidatos`,totalLatencyLabel:`Latencia total`,turnLevelRecallBody:`La recuperación de memoria se ejecuta una vez por turno. Estos datos se aplican a todas las llamadas LLM de este mensaje.`,turnLevelRecallTitle:`Recuperación por turno`,turnPill:`Turno {turn}`,unavailable:`No disponible`,unknown:`Desconocido`,v2StatusInContext:`En contexto`,v2StatusInjected:`Inyectado`,v2StatusNotInjected:`No inyectado`,v2StatusPageMissing:`Página no encontrada`,v2TurnBody:`Paso de memoria por activación en cascada que clasifica conceptos y habilidades para este turno.`,v2TurnTitle:`Memoria - turno {turn} ({mode})`,v3LiveInjectionBody:`v3 es la fuente de memoria en vivo en este turno: el bloque de abajo se inyectó en el contexto (v2 suprimido).`,v3LiveInjectionTitle:`Memoria V3 - inyección en vivo`,v3LoggedSelectionBody:`v3 no es la fuente de memoria en vivo para este asistente: estas selecciones se registraron pero no se inyectaron en este turno; la memoria del turno provino de v2.`,v3LoggedSelectionTitle:`Memoria V3 - selección registrada (no inyectada)`,v3SourceCarried:`arrastrada`,v3SourceCore:`núcleo`,v3SourceL1L2:`L1+L2`,v3SourceNeedle:`aguja`,yes:`Sí`},_t={closeAria:`Cerrar archivos`,empty:`No hay archivos en este mensaje`,title:`Archivos`},vt={bookmark:`Marcador`,copied:`Copiado`,copy:`Copiar`,copyFailed:`No se pudo copiar el mensaje.`,forkFromHere:`Bifurcar desde aquí`,inspect:`Inspeccionar`,loading:`Leyendo…`,openInSlack:`Abrir en Slack`,playFailed:`No se pudo leer este mensaje.`,readAloud:`Leer en voz alta`,removeBookmark:`Quitar marcador`,retry:`Reintentar`,stop:`Detener`,summarizeUpToHere:`Resumir hasta aquí`},yt={bookmark:`Marcar`,copied:`Copiado`,copy:`Copiar`,copyFailed:`No se pudo copiar el mensaje.`,forkFromHere:`Bifurcar desde aquí`,inspect:`Inspeccionar`,openInSlack:`Abrir en Slack`,readAloud:`Leer en voz alta`,removeBookmark:`Quitar marcador`,stop:`Detener`,summarizeUpToHere:`Resumir hasta aquí`,title:`Acciones del mensaje`},bt={cancel:`Cancelar`,continue:`Continuar`,description:`La entrada de voz requiere acceso al micrófono. El audio lo transcribe tu proveedor de voz a texto configurado, o el dictado integrado del dispositivo cuando no hay proveedor.`,title:`Acceso al micrófono`},xt={ariaLabel:`Se requiere una clave API`,body:`Añade una clave API en Ajustes → Modelos y servicios para empezar a chatear.`,dismiss:`Descartar`,dismissAria:`Descartar la alerta de clave API requerida`,openSettings:`Abrir ajustes`,title:`Se requiere una clave API`},St={callOfTotal:`Llamada {number} de {total}`,llmCallCount:`{count, plural, one {1 llamada LLM} other {# llamadas LLM}}`,selectCallAria:`Seleccionar una llamada LLM para inspeccionar`,sheetTitle:`Seleccionar una llamada`},Ct={dismissAria:`Descartar`,unknownCommandNudge:`Este comando no se reconoció. <ruleLink>Crea una regla</ruleLink> para clasificarlo la próxima vez.`,viewSteps:`Ver pasos`},wt={cancel:`Cancelar`,icon:`Icono`,name:`Nombre`,noIcon:`Sin icono`},Tt={heading:`Añadir plugins para el chat nuevo`,managePlugins:`Administrar plugins`,showAll:`Mostrar todos (+{count})`,showLess:`Mostrar menos`,tooltip:`Elige qué plugins puede usar este chat. Tu selección se aplica al enviar el primer mensaje y permanece con esta conversación.`},Et={managePlugins:`Gestionar plugins`},Dt={approvalAria:`Acerca de la aprobación del asistente`,approvalTooltip:`{name} nunca actúa en tu nombre sin tu aprobación`,connect:`Conectar`,connectTitle:`Conectar {name}`,connected:`Conectado`,defaultDescription:`Conecta {name} para que pueda usarlo en esta tarea.`,dismiss:`Descartar`,missingDetails:`Faltan detalles del asistente o del proveedor.`,tenantHostInvalid:`Introduce un {label} válido, por ejemplo {placeholder}`,thisAccount:`esta cuenta`,waiting:`Esperando...`,yourAssistant:`Tu asistente`},Ot={continue:`Continuar`,helpWithHeading:`¿En qué puedo ayudarte?`,letsChat:`Hablemos`,other:`Otro`,otherPlaceholder:`¿Con qué necesitas ayuda?`,selectAll:`Selecciona todas las que correspondan`,somethingElse:`otra cosa`,specific:`Tengo algo concreto`},kt={message:`La conversación de la que esta se ramificó se eliminó, así que los mensajes anteriores al punto de ramificación ya no están. Todo lo enviado desde entonces sigue intacto.`},At={cacheTokensLabel:`Tokens de caché`,conversationSubtitle:`Totales acumulados de cada llamada LLM con precio hasta ahora.`,conversationTitle:`Conversación`,createdLabel:`Creado`,durationLabel:`Duración`,estimatedCostLabel:`Costo estimado`,failedStatus:`Fallido`,firstTokenKindLabel:`Tipo de primer token`,firstTokenLatencySubtitle:`Dónde se fue el tiempo hasta el primer token de este turno, medido por el asistente.`,firstTokenLatencyTitle:`Latencia del primer token`,inputTokensLabel:`Tokens de entrada`,latencyMs:`{ms} ms`,loopExitReasonLabel:`Motivo de salida del bucle`,modelLabel:`Modelo`,normalizedMetadataSubtitle:`Proveedor, modelo, marcas de tiempo y recuentos de uso.`,normalizedMetadataTitle:`Metadatos normalizados`,normalizedSummaryUnavailableSubtitle:`Esta llamada aún tiene cargas útiles de solicitud y respuesta sin procesar.`,normalizedSummaryUnavailableTitle:`Resumen normalizado no disponible`,otherLabel:`Otro`,outputTokensLabel:`Tokens de salida`,providerLabel:`Proveedor`,requestMessagesLabel:`Mensajes de solicitud`,statusLabel:`Estado`,stopReasonLabel:`Motivo de parada`,toolCallsLabel:`Llamadas a herramientas`,toolsAvailableLabel:`Herramientas disponibles`,totalCostSoFarLabel:`Costo total hasta ahora`,totalToFirstTokenLabel:`Total hasta el primer token`,usageSubtitle:`Recuentos de tokens y llamadas normalizados por la ruta del asistente.`,usageTitle:`Uso`},jt={formStepsAria:`Pasos del formulario`},Mt={loadingPdf:`Cargando PDF`},Nt={pageCapNotice:`{count, plural, one {Mostrando la primera página} other {Mostrando las primeras # páginas}}`},Pt={startedAt:`Comenzó a las {time}`},Ft={colors:{green:`Verde`,orange:`Naranja`,pink:`Rosa`,purple:`Morado`,teal:`Turquesa`,yellow:`Amarillo`},noColor:`Sin color`},It={unpin:`Dejar de fijar`,unpinAria:`Dejar de fijar {name}`},Lt={disableAria:`Desactivar {name} para este chat`,enableAria:`Activar {name} para este chat`},Rt={admin:`Admin`,earnCredits:`Gana créditos gratis`,preferences:`Preferencias`,settings:`Ajustes`,shareFeedback:`Compartir comentarios`},zt={addCreditsAriaLabel:`Añadir créditos`,exhausted:`Añade créditos para continuar.`,extraCredits:`Usando créditos de uso adicional`,pctUsed:`{pct}% usado`,settingsAriaLabel:`Ajustes de uso y facturación`,title:`Uso`},Bt={cannotPreview:`No se puede previsualizar este archivo`},Vt={download:`Descargar`,downloadAria:`Descargar {filename}`},Ht={loadingPreview:`Cargando vista previa`},Ut={markdown:`Mostrando los primeros 512 KB`,text:`Mostrando los primeros 2 MB`},Wt={downloadFile:`Descargar archivo`,goToFile:`Ir al archivo`,noPreviewForType:`No hay vista previa para este tipo de archivo`},Gt={agentsLabel:`Agentes`,agentsToggleAria:`Agentes: {running, plural, =0 {ninguno en curso} one {# en curso} other {# en curso}}, {completed, plural, =0 {ninguno terminado} one {# terminado} other {# terminados}}`,railAria:`Progreso`,stepCounter:`{current} de {total}`,title:`Progreso`,titleFinished:`Terminado`,titleStopped:`Detenido`},Kt={noActiveSession:`No hay ninguna sesión activa. Inténtalo de nuevo.`},qt={availableTools:`Herramientas disponibles`,bannerNoSections:`Esta llamada aún no tiene secciones de prompt normalizadas.`,bannerSectionsCount:`{count, plural, one {# sección de solicitud normalizada mostrada en el orden devuelto por la ruta del asistente.} other {# secciones de solicitud normalizadas mostradas en el orden devuelto por la ruta del asistente.}}`,collapseAll:`Contraer todo`,copyAriaLabel:`Copiar {title}`,emptyBody:`Esta llamada no tiene secciones de prompt normalizadas. Usa la pestaña Raw para inspeccionar la carga útil completa de la solicitud.`,emptyTitle:`Sin secciones de prompt normalizadas`,expandAll:`Expandir todo`,formatJavaScript:`JavaScript`,formatJson:`JSON`,formatMarkdown:`Markdown`,formatTypeScript:`TypeScript`,noContentAvailable:`No hay contenido disponible.`,promptSectionsTitle:`Secciones del prompt`},Jt={body:`Añade fondos con tu proveedor o baja el límite de tokens del modelo.`,title:`Tu clave de API necesita créditos`},Yt={refreshing:`Actualizando`},Xt={submitFailed:`No se pudo enviar tu respuesta. Inténtalo de nuevo.`},Zt={expandAria:`Reabrir pregunta`,minimizeAria:`Minimizar pregunta`,nextQuestionAria:`Pregunta siguiente`,optionAria:`Opción {number}: {label}`,previousQuestionAria:`Pregunta anterior`,position:`{current} de {total}`,sendResponseAria:`Enviar respuesta`,skip:`Omitir`,skipAria:`Omitir esta pregunta`,skipped:`Omitida`,skippedHint:`Omitida: elige una opción para anular`,typeDifferentAnswerAria:`Escribe una respuesta diferente`,typeSomethingElsePlaceholder:`Algo más`},Qt={cancelAll:`Cancelar todos`,cancelAllAria:`Cancelar todos los mensajes en cola`,cancelAria:`Cancelar mensaje en cola`,editAria:`Editar mensaje en cola`,pushToAgentAria:`Enviar al agente`,queueHeading:`Cola · {count}`,showActionsAria:`Mostrar acciones del mensaje en cola`},$t={addToChat:`Añadir al chat`,ariaLabel:`Citar y responder`,cancel:`Cancelar`,placeholder:`Escribe tu respuesta…`},en={input:`Entrada sin procesar`,output:`Salida sin procesar`},tn={copyRequestPayloadAriaLabel:`Copiar carga de la solicitud`,copyResponsePayloadAriaLabel:`Copiar carga de la respuesta`,downloadFailedToast:`No se pudo descargar la carga.`,downloadRequestPayloadAriaLabel:`Descargar carga de la solicitud`,downloadResponsePayloadAriaLabel:`Descargar carga de la respuesta`,loadErrorTitle:`No se pudieron cargar las cargas sin procesar`,loading:`Cargando cargas sin procesar…`,payloadRequestFailed:`La solicitud de la carga falló. Inténtalo de nuevo.`,request:`Solicitud`,requestPayload:`Carga de la solicitud`,response:`Respuesta`,responsePayload:`Carga de la respuesta`,retry:`Reintentar`},nn={clickToReveal:`Haz clic para revelar`,clickToRevealTitle:`{label} · haz clic para revelar`,copyValue:`Copiar valor`,copyValueAria:`Copiar valor de {name}`,hideValue:`Ocultar valor`,hideValueAria:`Ocultar valor de {name}`,redacted:`Redactado`,redactedTitle:`Redactado: este valor no está vinculado a una credencial guardada`,redactionMarkerTitle:`Marcador de redacción: no verificado por el asistente`,revealFailed:`No se pudo revelar {name}.`,revealValueAria:`Revelar valor de {name}`},rn={retryAria:`Reintentar actualización`},an={save:`Guardar`,title:`Renombrar conversación`},on={defaultStatus:`Buscando en la web para conocerte.`,heading:`Conociéndote…`,reading:`Leyendo <title>{title}</title><domain> · {domain}</domain>`,searchingFor:`Buscando <query>“{query}”</query>`,warmingUp:`Preparando la búsqueda…`},sn={editRemovalAria:`Editar eliminación`,keepIt:`Conservarlo`,removeAria:`Eliminar`,sources:`Fuentes`,whyRemove:`¿Por qué eliminar esto?`},cn={heading:`Conociéndote…`,mockNote:`(mock: el flujo en vivo muestra aquí el feed de actividad de búsqueda)`,resultsTitle:`Esto es lo que sé de ti. Puedes quitar lo que no sea cierto:`},ln={body:`Esto es lo que sé de ti. Puedes quitar lo que no sea cierto:`,loading:`Conociéndote…`},un={continue:`Continuar`,emptyBody:`Esta vez no pude armar un perfil limpio. Podemos conocernos sobre la marcha.`,emptyTitle:`Empecemos de una vez.`},dn={heading:`Así podría ayudarte para empezar:`},fn={argumentsPreview:`Vista previa de argumentos`,copySectionAria:`Copiar contenido de la sección`,kindAssistantText:`Texto del asistente`,kindFunctionResponse:`Respuesta de función`,kindReasoning:`Razonamiento`,kindToolCall:`Llamada de herramienta`,kindToolResult:`Resultado de herramienta`,modeResultOnly:`Respuesta solo de resultado`,modeTextOnly:`Respuesta solo de texto`,modeToolCalling:`Respuesta con llamada de herramienta`,noArgumentsPreview:`No hay vista previa de argumentos estructurados disponible para esta llamada de herramienta.`,noAssistantText:`No se capturó texto del asistente para esta sección.`,noSectionsFallback:`Esta respuesta no tiene secciones renderizadas. Las cargas útiles sin procesar siguen disponibles en la pestaña Raw, y cualquier metadato de respuesta normalizado se mostrará cuando esté presente.`,rawTabHint:`¿Necesitas la carga útil completa del proveedor? Abre la pestaña Raw para el JSON de solicitud y respuesta.`,responseMetadata:`Metadatos de respuesta`,sectionTitle:`Sección {number}`,sectionUnavailable:`Renderizado de sección no disponible`,stopReasonChip:`Motivo de parada: {reason}`,toolChip:`Herramienta: {name}`},pn={saveFailed:`No se pudo guardar la regla de confianza. Inténtalo de nuevo.`},mn={aria:`Ir al mensaje más reciente`,label:`Ir al más reciente`},hn={submitFailed:`No se pudo enviar el secreto. Inténtalo de nuevo.`},gn={showValue:`Mostrar valor`,hideValue:`Ocultar valor`,cancel:`Cancelar`,domains:`Dominios: {list}`,placeholder:`Introduce el valor secreto...`,save:`Guardar`,savedSecurely:`Guardado de forma segura`,saving:`Guardando...`,secretValueFallback:`Valor secreto`,sendOnce:`Enviar una vez (sin guardar)`,sending:`Enviando...`,storedSecurelyNote:`Esta información se guarda de forma segura en tu dispositivo y no se envía a ningún servidor. La IA nunca ve este valor.`,title:`Credencial segura`,tools:`Herramientas: {list}`},_n={body:`Las conversaciones de asistentes autoalojados aún no están disponibles desde la web. Gestiona tu asistente desde ajustes.`,openSettings:`Abrir ajustes`,title:`Asistente autoalojado`},vn={settingUp:`Configurando tu asistente…`},yn={yourAssistant:`Tu asistente`},bn={newChat:`Chat nuevo`},xn={label:`Volver arriba`},Sn={message:`No se pudieron cargar tus conversaciones.`,retry:`Reintentar`},Cn={loadingAria:`Cargando conversaciones`},wn={newGroup:`Grupo nuevo…`},Tn={label:`Ver todos los chats`},En={doneEmptyBody:`Los chats que marcas como hechos te esperan en Todos los chats.`,doneEmptyTitle:`Todo al día.`,emptyBody:`Inicia un chat nuevo y aparecerá aquí.`,emptyTitle:`Aún no hay chats.`},Dn={webSearch:`Búsqueda web`},On={actionsAria:`Acciones de habilidad`,closeDetails:`Cerrar detalles de la habilidad`,goToSkill:`Ir a la habilidad`,loadError:`No se pudo cargar esta habilidad. Puede que se haya eliminado.`,moreTooltip:`Más`,removeSkill:`Eliminar habilidad`,titleFallback:`Habilidad`},kn={runningSuffix:` · en ejecución`,unnamedTool:`Herramienta de habilidad`},An={view:`Ver`},jn={failed:`No se pudo cargar`,loading:`Cargando habilidad…`,loadingAria:`Cargando habilidad`,notApproved:`No aprobada`,provides:`Proporciona`,unnamedSkill:`Habilidad`,usedSkill:`Habilidad usada`},Mn={fromSkill:`De {name}`},Nn={callLink:`Llamada {number}`,emptyBody:`Esta pestaña enumera cada llamada de herramienta <code>skill_load</code> en la conversación. No se detectó ninguna en las llamadas LLM capturadas.`,emptyTitle:`No se cargaron habilidades en esta conversación`,loadCount:`{count, plural, one {1 carga} other {# cargas}}`,summaryStats:`{uniqueCount, plural, one {# habilidad única} other {# habilidades únicas}} · {totalLoads, plural, one {# llamada de carga} other {# llamadas de carga}}`,summaryTitle:`Habilidades cargadas en esta conversación`},Pn={editReplyAria:`Editar respuesta`,removeQuoteAria:`Quitar cita`,typeReplyPlaceholder:`Escribe tu respuesta…`},Fn={successToast:`Guardado de forma segura. La clave nunca entró en el chat.`},In={backToTimelineAria:`Volver a la línea de tiempo`,backTooltip:`Atrás`,closeDetail:`Cerrar detalle del subagente`,input:`Entrada`,noEventsYet:`Aún no hay eventos`,objective:`Objetivo`,output:`Salida`,stopSubagentAria:`Detener subagente`,timeline:`Línea de tiempo`},Ln={viewReasoning:`Ver el razonamiento`,viewSearchDetails:`Ver detalles de la búsqueda`,viewSearchError:`Ver error de la búsqueda`,viewToolDetails:`Ver detalles de la herramienta`,workedFor:`Trabajó durante {duration}`},Rn={stopSubagentAria:`Detener subagente`},zn={openAria:`Abrir sugerencia: {title}`},Bn={closeAria:`Cerrar`,letsDoIt:`¡Hagámoslo!`,thingsWeCanDo:`Cosas que podemos hacer:`,whatWellNeed:`Esto es lo que necesitaremos:`},Vn={scrollForMore:`Desplázate hacia abajo para ver más`},Hn={submitFailed:`No se pudo enviar. Inténtalo de nuevo.`},Un={cancelled:`Cancelado`,displayFailed:`No se pudo mostrar este contenido.`,displayFailedNamed:`No se pudo mostrar "{title}".`,done:`Hecho`,unknownSurface:`Superficie desconocida`,unsupportedType:`Tipo de superficie no admitido: {type}`},Wn={copied:`Copiado`,copy:`Copiar`,copyAria:`Copiar tabla como markdown`,copyFailed:`No se pudo copiar la tabla.`,table:`Tabla`},Gn={continue:`Continuar`,defaultTitle:`¿En qué puedo ayudarte?`,other:`Otro`,otherPlaceholder:`Describe con qué necesitas ayuda...`,selectAll:`Selecciona todas las que correspondan`,somethingElse:`otra cosa distinta`},Kn={loadFailed:`No se pudo cargar la vista previa.`,tooLarge:`El archivo es demasiado grande para previsualizarlo en línea.`},qn={reply:`Responder`},Jn={title:`Pensando`},Yn={adding:`Añadiendo…`,comment:`Comentar`,feedbackPlaceholder:`Añade tu comentario…`},Xn={allow:`Permitir`,confirmationRequired:`Se requiere confirmación`,copyOutput:`Copiar salida`,deny:`Denegar`,hideDetails:`Ocultar detalles`,output:`Salida`,showDetails:`Mostrar detalles`,technicalDetails:`Detalles técnicos`,toolLatency:`Latencia de la herramienta:`,toolName:`Nombre de la herramienta`},Zn={defaultValue:`predeterminado: {value}`,inputSchema:`Esquema de entrada`,intro:`{count, plural, one {# herramienta enviada con esta solicitud. Expande una herramienta para ver su definición y esquema de entrada.} other {# herramientas enviadas con esta solicitud. Expande una herramienta para ver su definición y esquema de entrada.}}`,noInputSchema:`Sin esquema de entrada: esta herramienta no acepta entrada estructurada.`,required:`obligatorio`,settings:`Configuración`},Qn={changes:`Cambios`,closeAria:`Cerrar detalles de la herramienta`,command:`Comando`,denied:`Esta llamada a la herramienta no se aprobó, así que no se ejecutó.`,emptyOutput:`La herramienta no devolvió ninguna salida.`,output:`Salida`,requestedChanges:`Cambios solicitados`,running:`Ejecutando…`},$n={parameters:`Parámetros`,moreCount:`{count, plural, one {# más en Entrada sin procesar} other {# más en Entrada sin procesar}}`},er={moreCount:`{count, plural, one {# más en Salida sin procesar} other {# más en Salida sin procesar}}`},tr={copyValue:`Copiar {label}`},nr={openAria:`Abrir {label}`,viewDetailsAria:`Ver detalles: {label}`},rr={fileUnavailable:`El archivo no está disponible para descargar`,fileUnavailableHostTimeout:`El archivo no está disponible para descargar (puede que la aprobación del archivo en el host haya caducado)`,stopCommand:`Detener comando`,stopRun:`Detener ejecución`,stopWorkflow:`Detener flujo de trabajo`},ir={thinking:`Pensando`,working:`Trabajando`},ar={authFailed:`No se pudo autenticar al usuario.`},or={assistantBusy:`Tu asistente está ocupado. Inténtalo de nuevo cuando termine de responder.`,retryFailed:`No se pudo reintentar la respuesta`,summarizeFailed:`No se pudo resumir la conversación`},sr={commandFailed:`No se pudo ejecutar ese comando. Inténtalo de nuevo.`,doctorUnavailable:`El Doctor no está disponible en este asistente.`},cr={downloadFile:`Descargar archivo`,goToFile:`Ir al archivo`},lr={sketching:`Bocetando un visual...`},ur={visual:`Visual`},dr={ariaLabel:`Sesión de voz`,endSession:`Finalizar la sesión de voz`,muteAssistant:`Silenciar el asistente`,muteMicrophone:`Silenciar el micrófono`,muted:`Silenciado`,openVoiceRoom:`Abrir la sala de voz`,unmuteAssistant:`Activar el audio del asistente`,unmuteMicrophone:`Activar el micrófono`},fr={seed:`Hola, acabo de iniciar una conversación de voz contigo. Este mensaje se envía automáticamente. Salúdame en una frase corta y luego pregúntame en qué quiero trabajar.`},pr={selectionUnavailable:`No se pudo leer el texto seleccionado. No se pegó nada. Vuelve a seleccionar el texto e inténtalo de nuevo; puedes copiar tus palabras dictadas.`,nativeSttNoTranscript:`El dictado nativo de {clientName} no devolvió una transcripción. Revisa el reconocimiento de voz nativo en los ajustes del sistema e inténtalo de nuevo.`},mr={backAria:`Atrás`,description:`Una conversación hablada, manos libres, con {name}.`,listeningLanguage:`Idioma de escucha`,listeningLanguageApplies:`Se aplica a partir de tu próximo turno hablado.`,liveCaptions:`Activa los subtítulos en vivo cuando quieras.`,muteMic:`Silencia el micrófono sin terminar la sesión.`,speakNaturally:`Habla con naturalidad y {name} responde en voz alta.`,startTalking:`Empezar a hablar`,title:`Modo de voz`,voiceSettings:`Ajustes de voz`,yourAssistant:`tu asistente`},hr={unavailable:`Elegir una voz no está disponible para este asistente ahora mismo.`},gr={ariaLabel:`Sesión de voz`,closeCamera:`Cerrar la cámara`,endSessionAria:`Finalizar la sesión de voz`,endSessionTooltip:`Finalizar sesión`,flashAuto:`Flash automático`,flashAutoBadge:`A`,flashOff:`Flash desactivado`,flashOn:`Flash activado`,flipCamera:`Voltear la cámara`,lightOff:`Luz apagada`,lightOn:`Luz encendida`,minimizeAria:`Minimizar la sala de voz`,minimizeTooltip:`Minimizar (la sesión sigue activa)`,muteAssistant:`Silenciar el asistente`,muteMicrophone:`Silenciar el micrófono`,mutedState:`Silenciado. {state}`,showCamera:`Mostrar la cámara`,stopLive:`Detener en vivo`,takePhoto:`Tomar una foto`,unmuteAssistant:`Activar el audio del asistente`,unmuteMicrophone:`Activar el micrófono`},_r={dismiss:`Descartar`,endSession:`Terminar sesión de voz`,goToThreadAria:`Ir al hilo de la sesión de voz`,groupAria:`Sesión de voz`,muteAssistant:`Silenciar asistente`,muteMic:`Silenciar micrófono`,unmuteAssistant:`Activar sonido del asistente`,unmuteMic:`Activar micrófono`},vr={muted:`Silenciado`},yr={commandFinished:`Comando en segundo plano finalizado`,incomingEvent:`Evento entrante`,memoryReview:`Revisión de la memoria`,ranOnItsOwn:`Se ejecutó por su cuenta`,resumed:`Reanudado tras una interrupción`,scheduledRun:`Ejecución programada`,watchReview:`Revisión de la sesión de observación`,workflowFinished:`Flujo de trabajo finalizado`},br={details:`Detalles`,result:`Resultado`,runStatus:`Estado de la ejecución`,title:`La conversación se activó`,workflow:`Flujo de trabajo`,closeAria:`Cerrar detalles`},xr={celsius:`°C`,fahrenheit:`°F`,feelsLike:`Sensación térmica {temp}°`,highLow:`Máx:{high}° Mín:{low}°`,now:`Ahora`},Sr={fetchFailed:`La obtención falló.`,mayRequireJavaScript:`Es posible que esta página necesite JavaScript para mostrarlo todo, así que puede faltar parte del contenido.`,startIndexPastEnd:`La lectura empezó después del final de esta página, así que no se leyó nada.`,truncated:`Solo se leyó parte de esta página.`},Cr={noSources:`No se encontraron fuentes.`,query:`Consulta`,sources:`Fuentes`,sourcesWithCount:`Fuentes ({count})`},wr={moreCount:`+{count} más`},Tr={after:`Después`,before:`Antes`,notSet:`Sin definir`,removed:`Eliminado`},Er={agents:`Agentes`,back:`Atrás`,backToSubagentsAria:`Volver a los subagentes`,closeDetail:`Cerrar el detalle del flujo de trabajo`,input:`Entrada`,noSubagentsYet:`Aún no hay subagentes`,output:`Salida`,stopWorkflow:`Detener flujo de trabajo`,subagents:`Subagentes`},Dr={input:`Entrada`,noPromptSummary:`Sin resumen del prompt`,noResultSummary:`Sin resumen del resultado`,output:`Salida`,prompt:`Prompt`,result:`Resultado`,running:`En ejecución…`},Or={cancelledAria:`Cancelado`,openDetailsAria:`Abrir detalles de {title}`},kr={openTitle:`Abrir {path}`},Ar={noResponse:`Decidió no responder`,reactionAddedSelf:`Reaccionó con {emoji}`,reactionRemovedSelf:`Quitó la reacción {emoji}`,reactionAdded:`{name} reaccionó con {emoji}`,reactionRemoved:`{name} quitó su reacción {emoji}`,reactionSomeone:`Alguien`},jr={doneDiscarded:`No se guardó`,doneNotRight:`Marcado como incorrecto`,doneSaved:`Habilidad guardada`,recommended:`Recomendado`},Mr={restore:`Restaurar acceso`,restoring:`Restaurando...`,restored:`Restaurado. Los modelos gestionados por Vellum vuelven a funcionar.`,failedNoAssistant:`Selecciona un asistente y vuelve a intentarlo.`,failedCannotActHere:`Esta aplicación no puede restaurar la credencial de este asistente. Abre el asistente en el equipo que lo ejecuta.`,failedReplacementRejected:`Vellum rechazó la credencial de reemplazo. Inicia sesión en la plataforma Vellum y vuelve a intentarlo.`,failedUnconfirmed:`El reemplazo se guardó, pero no se pudo confirmar con Vellum. Puede que empiece a funcionar en breve.`,failedGeneric:`No se pudo restaurar el acceso. Inténtalo de nuevo en un momento.`},Nr={expand:`Expandir`,collapse:`Contraer`},Pr={count:`{count, plural, one {# fotograma de cámara} other {# fotogramas de cámara}}`,timeRange:`Guardados de {first} a {last}`,savedTime:`Guardado: {time}`,pendingAria:`Fotograma de cámara, la imagen aún se está cargando. {time}`,timeUnavailable:`Hora no disponible`},Fr={showPreview:`Mostrar vista previa en directo`,needsHelp:`El escritorio virtual necesita tu ayuda.`,stepIn:`Intervenir`,done:`Listo`,skip:`Omitir`,showMore:`Mostrar más`,showLess:`Mostrar menos`},Ir={saved:`Guardado`,saving:`Guardando`,notSaved:`No guardado`},Lr={searchedFor:`Se buscó`,scope:`{depth} · {sources}`,answer:`Respuesta`,evidence:`{count, plural, one {# resultado} other {# resultados}}`,noEvidence:`No apareció nada relevante.`,degraded:`No se pudo buscar por completo en algunos lugares`,degradedSource:`{source}: {error}`},Rr={source:`{source, select, memory {Memoria} conversations {Conversaciones} workspace {Archivos del espacio de trabajo} other {{source}}}`,depth:`{depth, select, fast {Búsqueda rápida} standard {Búsqueda estándar} deep {Búsqueda profunda} other {Búsqueda}}`},zr={askQuestionDetail:e,documentChat:t,acpChatPlanBlock:n,acpChatTerminalBlock:r,acpChatToolCard:i,acpConnectAffordance:a,acpRunChatView:o,activeChatView:s,markAllDoneConfirmDialog:c,mobileDetailSheet:l,activityStepsPanel:u,computerUseScreenshotPreview:d,addToChatSheet:f,allowOptionsMenu:p,appAssetActions:m,archiveAllConfirmDialog:h,assistantContentDisclosure:g,actionDisplay:_,allChatsPage:v,sessionGroupRow:y,assistantDesktop:b,assistantNavItem:x,assistantSideMenu:S,assistantSleepStage:C,assistantSwitcher:w,attachmentChip:T,attachmentDownloadOverlay:E,attachmentLoadingChip:D,attachmentOverflowSquare:O,attachmentPreviewModal:k,attachmentTile:A,backgroundTaskDetailPanel:j,billingErrorBanner:M,cacheBreakpointMapCard:N,cacheDiffCard:P,cacheHealthCard:F,callRail:I,callSummarySurface:L,cameraDeepLink:R,cameraError:z,cameraShutterHint:B,cameraStatusPill:V,cameraViewOptions:H,cardSurface:U,channelReferenceChip:W,channelSetupPanel:G,channelThreadControl:K,channelTranscriptPanel:q,chatAttachments:J,chatBody:Y,chatComposer:X,chatConversationHeader:Z,chatInfoPanel:Q,chatLayout:$,chatLayoutHeader:ee,chatMarkdownMessage:te,chatPage:ne,chatRouteContent:re,chatRuleEditorModal:ie,choiceSurface:ae,cleanupScreen:oe,coachmarkPress:se,collapsedGroupIcon:ce,compactionCircuitOpenBanner:le,compactionTab:ue,composerDraftNotices:de,composerNotices:fe,composerSecretNotice:pe,composerSettingsMenu:me,confirmationActions:he,confirmationPromptCard:ge,contactActions:_e,contactPromptCard:ve,contactRecordCard:ye,contextWindowIndicator:be,conversationActions:xe,conversationActionsSheet:Se,conversationAssetActions:Ce,conversationAssets:we,conversationStarterDock:Te,conversationStarterGrid:Ee,copyBlockSurface:De,copyIdToClipboard:Oe,creditsCard:ke,creditsUpsellCard:Ae,csvPreview:je,dailyLimitBanner:Me,deleteConversationConfirmDialog:Ne,deletedMessageRow:Pe,documentAssetActions:Fe,documentCommentForm:Ie,documentCommentPanel:Le,documentCommentThread:Re,documentPreviewSurface:ze,documentReopenLink:Be,documentViewerContainer:Ve,documentConversation:He,documentViewerPage:Ue,dynamicPageSurface:We,exportProgressModal:Ge,fileDiffView:Ke,fileDownload:qe,filePreviewContainer:Je,fileUploadSurface:Ye,formSurface:Xe,frameGateHud:Ze,groupActions:Qe,groupActionsSheet:$e,groupNameDialogFromStore:et,inChatOnboardingController:tt,inChatPluginPill:nt,inlineProcessCard:rt,inspectPage:it,liveVoiceBusy:at,liveVoiceButton:ot,liveVoiceStatus:st,llmCallErrorCard:ct,localFileEmbed:lt,localFileLink:ut,localFileMenu:dt,lowBalanceBanner:ft,maintenanceModeBanner:pt,maintenanceRecoveryCard:mt,memoryRouterPlaygroundPage:ht,memoryTab:gt,messageFilesPanel:_t,messageHoverActions:vt,messageLongPressActions:yt,micPermissionPrimer:bt,missingApiKeyBanner:xt,mobileCallSelector:St,multiActivityGroup:Ct,nameInputDialog:wt,newChatPluginsPicker:Tt,newChatPluginsSection:Et,oauthConnectSurface:Dt,onboardingChoiceCard:Ot,orphanedHistoryNotice:kt,overviewTab:At,pageTabs:jt,pdfPageSkeleton:Mt,pdfPreview:Nt,phaseGroupedStepList:Pt,pinnedAppColorSwatches:Ft,pinnedAppNavItem:It,pluginPill:Lt,preferencesMenu:Rt,preferencesUsagePanel:zt,previewError:Bt,previewMessageCard:Vt,previewSkeleton:Ht,previewTruncationNotice:Ut,previewUnsupported:Wt,progressRail:Gt,promptSubmission:Kt,promptTab:qt,providerBillingBanner:Jt,pullRefreshSpinner:Yt,questionActions:Xt,questionPromptCard:Zt,queuedMessagesDrawer:Qt,quoteReplyBubble:$t,rawDisclosure:en,rawTab:tn,redactedCredentialChip:nn,refreshFeedbackPill:rn,renameDialogFromStore:an,researchActivityFeed:on,researchFactsCard:sn,researchMockPage:cn,researchResultsOverlay:ln,researchResultsView:un,researchSuggestions:dn,responseTab:fn,ruleEditorActions:pn,scrollToLatestButton:mn,secretActions:hn,secretPromptCard:gn,selfHostedScreen:_n,setupScreen:vn,sideMenuBuiltInNav:yn,sideMenuOverlayBottomColumn:bn,sidebarBackToTop:xn,sidebarConversationError:Sn,sidebarConversationSkeleton:Cn,sidebarListContextMenu:wn,sidebarSectionViewAll:Tn,chatsSection:En,singleActivity:Dn,skillDetailPanel:On,skillExecuteDetail:kn,skillLoadCard:An,skillLoadDetail:jn,skillToolList:Mn,skillsTab:Nn,stagedQuotesStrip:Pn,storeCredentialDialog:Fn,subagentDetailPanel:In,subagentPhaseTimeline:Ln,subagentSpawnGroup:Rn,suggestionCard:zn,suggestionDetailPanel:Bn,suggestionLibrary:Vn,surfaceActions:Hn,surfaceRouter:Un,tableSurface:Wn,taskPreferencesSurface:Gn,textPreview:Kn,textSelectionPopover:qn,thinkingDetail:Jn,tiptapDocumentEditor:Yn,toolCallChip:Xn,toolDefinitionsContent:Zn,toolDetailPanel:Qn,toolInputParameters:$n,toolOutputSection:er,valueFields:tr,toolStepPill:nr,transcriptMessageBody:rr,transcriptRow:ir,useConversationLoader:ar,useConversationSecondaryActions:or,useSendMessage:sr,vellumFileActionModal:cr,visualPlaceholder:lr,visualSurface:ur,voiceComposerBar:dr,voiceEntryGreeting:fr,voiceErrors:pr,voiceFirstRunCard:mr,voicePickerSurface:hr,voiceRoom:gr,voiceSessionPill:_r,voiceSessionPillHost:vr,wakeCard:yr,wakeDetailPanel:br,weatherForecastDisplay:xr,webFetchDetailView:Sr,webSearchDetailView:Cr,webSearchStepRow:wr,workResultSurface:Tr,workflowDetailPanel:Er,workflowLeafDetail:Dr,workflowSubagentRow:Or,workspacePathLink:kr,transcript:Ar,watchRetroSurface:jr,restoreManagedCredentialButton:Mr,sidebarExpandRow:Nr,cameraFrameGrid:Pr,desktopHelpCard:Fr,rememberDetail:Ir,recallDetail:Lr,recallLabels:Rr};export{n as acpChatPlanBlock,r as acpChatTerminalBlock,i as acpChatToolCard,a as acpConnectAffordance,o as acpRunChatView,_ as actionDisplay,s as activeChatView,u as activityStepsPanel,f as addToChatSheet,v as allChatsPage,p as allowOptionsMenu,m as appAssetActions,h as archiveAllConfirmDialog,e as askQuestionDetail,g as assistantContentDisclosure,b as assistantDesktop,x as assistantNavItem,S as assistantSideMenu,C as assistantSleepStage,w as assistantSwitcher,T as attachmentChip,E as attachmentDownloadOverlay,D as attachmentLoadingChip,O as attachmentOverflowSquare,k as attachmentPreviewModal,A as attachmentTile,j as backgroundTaskDetailPanel,M as billingErrorBanner,N as cacheBreakpointMapCard,P as cacheDiffCard,F as cacheHealthCard,I as callRail,L as callSummarySurface,R as cameraDeepLink,z as cameraError,Pr as cameraFrameGrid,B as cameraShutterHint,V as cameraStatusPill,H as cameraViewOptions,U as cardSurface,W as channelReferenceChip,G as channelSetupPanel,K as channelThreadControl,q as channelTranscriptPanel,J as chatAttachments,Y as chatBody,X as chatComposer,Z as chatConversationHeader,Q as chatInfoPanel,$ as chatLayout,ee as chatLayoutHeader,te as chatMarkdownMessage,ne as chatPage,re as chatRouteContent,ie as chatRuleEditorModal,En as chatsSection,ae as choiceSurface,oe as cleanupScreen,se as coachmarkPress,ce as collapsedGroupIcon,le as compactionCircuitOpenBanner,ue as compactionTab,de as composerDraftNotices,fe as composerNotices,pe as composerSecretNotice,me as composerSettingsMenu,d as computerUseScreenshotPreview,he as confirmationActions,ge as confirmationPromptCard,_e as contactActions,ve as contactPromptCard,ye as contactRecordCard,be as contextWindowIndicator,xe as conversationActions,Se as conversationActionsSheet,Ce as conversationAssetActions,we as conversationAssets,Te as conversationStarterDock,Ee as conversationStarterGrid,De as copyBlockSurface,Oe as copyIdToClipboard,ke as creditsCard,Ae as creditsUpsellCard,je as csvPreview,Me as dailyLimitBanner,zr as default,Ne as deleteConversationConfirmDialog,Pe as deletedMessageRow,Fr as desktopHelpCard,Fe as documentAssetActions,t as documentChat,Ie as documentCommentForm,Le as documentCommentPanel,Re as documentCommentThread,He as documentConversation,ze as documentPreviewSurface,Be as documentReopenLink,Ve as documentViewerContainer,Ue as documentViewerPage,We as dynamicPageSurface,Ge as exportProgressModal,Ke as fileDiffView,qe as fileDownload,Je as filePreviewContainer,Ye as fileUploadSurface,Xe as formSurface,Ze as frameGateHud,Qe as groupActions,$e as groupActionsSheet,et as groupNameDialogFromStore,tt as inChatOnboardingController,nt as inChatPluginPill,rt as inlineProcessCard,it as inspectPage,at as liveVoiceBusy,ot as liveVoiceButton,st as liveVoiceStatus,ct as llmCallErrorCard,lt as localFileEmbed,ut as localFileLink,dt as localFileMenu,ft as lowBalanceBanner,pt as maintenanceModeBanner,mt as maintenanceRecoveryCard,c as markAllDoneConfirmDialog,ht as memoryRouterPlaygroundPage,gt as memoryTab,_t as messageFilesPanel,vt as messageHoverActions,yt as messageLongPressActions,bt as micPermissionPrimer,xt as missingApiKeyBanner,St as mobileCallSelector,l as mobileDetailSheet,Ct as multiActivityGroup,wt as nameInputDialog,Tt as newChatPluginsPicker,Et as newChatPluginsSection,Dt as oauthConnectSurface,Ot as onboardingChoiceCard,kt as orphanedHistoryNotice,At as overviewTab,jt as pageTabs,Mt as pdfPageSkeleton,Nt as pdfPreview,Pt as phaseGroupedStepList,Ft as pinnedAppColorSwatches,It as pinnedAppNavItem,Lt as pluginPill,Rt as preferencesMenu,zt as preferencesUsagePanel,Bt as previewError,Vt as previewMessageCard,Ht as previewSkeleton,Ut as previewTruncationNotice,Wt as previewUnsupported,Gt as progressRail,Kt as promptSubmission,qt as promptTab,Jt as providerBillingBanner,Yt as pullRefreshSpinner,Xt as questionActions,Zt as questionPromptCard,Qt as queuedMessagesDrawer,$t as quoteReplyBubble,en as rawDisclosure,tn as rawTab,Lr as recallDetail,Rr as recallLabels,nn as redactedCredentialChip,rn as refreshFeedbackPill,Ir as rememberDetail,an as renameDialogFromStore,on as researchActivityFeed,sn as researchFactsCard,cn as researchMockPage,ln as researchResultsOverlay,un as researchResultsView,dn as researchSuggestions,fn as responseTab,Mr as restoreManagedCredentialButton,pn as ruleEditorActions,mn as scrollToLatestButton,hn as secretActions,gn as secretPromptCard,_n as selfHostedScreen,y as sessionGroupRow,vn as setupScreen,yn as sideMenuBuiltInNav,bn as sideMenuOverlayBottomColumn,xn as sidebarBackToTop,Sn as sidebarConversationError,Cn as sidebarConversationSkeleton,Nr as sidebarExpandRow,wn as sidebarListContextMenu,Tn as sidebarSectionViewAll,Dn as singleActivity,On as skillDetailPanel,kn as skillExecuteDetail,An as skillLoadCard,jn as skillLoadDetail,Mn as skillToolList,Nn as skillsTab,Pn as stagedQuotesStrip,Fn as storeCredentialDialog,In as subagentDetailPanel,Ln as subagentPhaseTimeline,Rn as subagentSpawnGroup,zn as suggestionCard,Bn as suggestionDetailPanel,Vn as suggestionLibrary,Hn as surfaceActions,Un as surfaceRouter,Wn as tableSurface,Gn as taskPreferencesSurface,Kn as textPreview,qn as textSelectionPopover,Jn as thinkingDetail,Yn as tiptapDocumentEditor,Xn as toolCallChip,Zn as toolDefinitionsContent,Qn as toolDetailPanel,$n as toolInputParameters,er as toolOutputSection,nr as toolStepPill,Ar as transcript,rr as transcriptMessageBody,ir as transcriptRow,ar as useConversationLoader,or as useConversationSecondaryActions,sr as useSendMessage,tr as valueFields,cr as vellumFileActionModal,lr as visualPlaceholder,ur as visualSurface,dr as voiceComposerBar,fr as voiceEntryGreeting,pr as voiceErrors,mr as voiceFirstRunCard,hr as voicePickerSurface,gr as voiceRoom,_r as voiceSessionPill,vr as voiceSessionPillHost,yr as wakeCard,br as wakeDetailPanel,jr as watchRetroSurface,xr as weatherForecastDisplay,Sr as webFetchDetailView,Cr as webSearchDetailView,wr as webSearchStepRow,Tr as workResultSurface,Er as workflowDetailPanel,Dr as workflowLeafDetail,Or as workflowSubagentRow,kr as workspacePathLink};