@vellumai/web 0.12.5 → 0.12.6-dev.202609292116.41f7caa
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.
- package/dist/assets/{a2a-invite-2DFcr5cK.js → a2a-invite-BqJCnNzz.js} +1 -1
- package/dist/assets/{about-page-CPNBbifd.js → about-page-Dx28I-9k.js} +1 -1
- package/dist/assets/{account-page-CJ_VtU8O.js → account-page-uJQccwrY.js} +1 -1
- package/dist/assets/{account-shell-DxLEvbei.js → account-shell-DbFFiZZ6.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-CB_kEsnS.js → acp-run-detail-panel-Dn3QQGzZ.js} +3 -3
- package/dist/assets/activation-list-route-C4Ak3BxB.js +1 -0
- package/dist/assets/{activity-redirect-page-BIjoWTCA.js → activity-redirect-page-D_y1Lnpr.js} +1 -1
- package/dist/assets/activity-steps-panel-CqiPC7hg.js +1 -0
- package/dist/assets/add-credits-modal-COKVwX6j.js +1 -0
- package/dist/assets/{add-credits-modal-LuPOq4kF.js → add-credits-modal-gw7o01xg.js} +1 -1
- package/dist/assets/ai-page-DpWJeGbk.js +1 -0
- package/dist/assets/all-chats-page-route-CgLfR07p.js +1 -0
- package/dist/assets/{android-billing-handoff-Q1a-ZHj3.js → android-billing-handoff-B0HTtkNJ.js} +1 -1
- package/dist/assets/{animated-stat-square--YG74D1T.js → animated-stat-square-8dUQcT94.js} +1 -1
- package/dist/assets/{api-key-screen-CYEJaUQl.js → api-key-screen-dAn_hT64.js} +1 -1
- package/dist/assets/app-L206Azo1.js +399 -0
- package/dist/assets/{app-info-zQFV6PZi.js → app-info-jaAZTMcQ.js} +1 -1
- package/dist/assets/app-k-MZKaP4.css +2 -0
- package/dist/assets/archive-redirect-page-DIo7L9n0.js +1 -0
- package/dist/assets/assistant-handle-modal-CyPwkAl5.js +1 -0
- package/dist/assets/assistant-inbox-CAvCHzi9.js +1 -0
- package/dist/assets/assistant-inbox-CQdSXLLi.js +1 -0
- package/dist/assets/assistant-inbox-DslyrhIn.js +1 -0
- package/dist/assets/assistant-inbox-page-route-DFenEww4.js +8 -0
- package/dist/assets/assistant-inbox-qWeVmA1L.js +1 -0
- package/dist/assets/{assistant-status-panel-Db_tR-He.js → assistant-status-panel-B2-5FdBn.js} +1 -1
- package/dist/assets/auth-store-Bs9KUkYb.js +1 -0
- package/dist/assets/{auth-welcome-screen-CCmw8K2q.js → auth-welcome-screen-BcyM5p8r.js} +1 -1
- package/dist/assets/avatar-bundled-components-B9AGitYS.js +1 -0
- package/dist/assets/{avatar-random-ChM4pm8c.js → avatar-random-D9W7QKfh.js} +2 -2
- package/dist/assets/{await-org-header-settled-D7gXGNkp.js → await-org-header-settled-DJ3GoxFC.js} +1 -1
- package/dist/assets/background-task-detail-panel-BmVteIh9.js +1 -0
- package/dist/assets/billing-page-9dhdFGdW.js +3 -0
- package/dist/assets/{billing-redirect-page-CPoe8Fxo.js → billing-redirect-page-izSQM-nI.js} +1 -1
- package/dist/assets/bookmarks-page-IIcbpGCy.js +1 -0
- package/dist/assets/{bundle-confirm-page--s00f5SK.js → bundle-confirm-page-BcTr069z.js} +1 -1
- package/dist/assets/channel-transcript-panel-C5ML_yKy.js +1 -0
- package/dist/assets/{channels--clRukQ0.js → channels-BMnoL5SH.js} +3 -3
- package/dist/assets/{channels-DQENwioX.js → channels-CsbKXJZc.js} +3 -3
- package/dist/assets/{channels-Db0nSBfX.js → channels-Cz7YAOIH.js} +3 -3
- package/dist/assets/channels-page-route-hI-XTfhR.js +1 -0
- package/dist/assets/{channels-qdy8pjzY.js → channels-vNXfvsPT.js} +3 -3
- package/dist/assets/chat-B-bp0-NQ.js +5 -0
- package/dist/assets/chat-CnCdRXp6.js +5 -0
- package/dist/assets/chat-CpeJ9iZR.js +5 -0
- package/dist/assets/chat-QePVo41-.js +5 -0
- package/dist/assets/chat-info-panel-C_GU_Jv-.js +1 -0
- package/dist/assets/{checkout-continuation-DV6qqLmB.js → checkout-continuation-xT-05Elg.js} +1 -1
- package/dist/assets/{checkout-page-CDszxDKy.js → checkout-page-BiZ8nLJk.js} +1 -1
- package/dist/assets/checkout-return-target-CMJ__qAk.js +1 -0
- package/dist/assets/{command-palette-CvSDYYKx.js → command-palette-CERoe_19.js} +1 -1
- package/dist/assets/command-palette-CUGH6THH.js +1 -0
- package/dist/assets/{command-palette-window-page-vfJ8M15E.js → command-palette-window-page-BVptH1AG.js} +1 -1
- package/dist/assets/common-BdQfnACd.js +1 -0
- package/dist/assets/common-IoqtSg0p.js +1 -0
- package/dist/assets/common-LOT1T5DR.js +1 -0
- package/dist/assets/common-kmi6H4cg.js +1 -0
- package/dist/assets/{community-page-Dnrsh7JC.js → community-page-BQyEE7Xw.js} +1 -1
- package/dist/assets/{companion-accent-CbS8BVae.js → companion-accent-DKPM6oFW.js} +1 -1
- package/dist/assets/{companion-dock-zones-page-CRsK4Pv9.js → companion-dock-zones-page-BeMJI0JM.js} +1 -1
- package/dist/assets/{companion-layout-DCGXuvsw.js → companion-layout-CXLXnCMv.js} +1 -1
- package/dist/assets/companion-popover-We8nY0kC.js +1 -0
- package/dist/assets/companion-popover-page-CHm6dSOQ.js +1 -0
- package/dist/assets/companion-surface-BVT9xkls.js +1 -0
- package/dist/assets/companion-surface-page-D65DjszQ.js +1 -0
- package/dist/assets/{companion-tour-entry-C3txdrPi.js → companion-tour-entry-DhB70v5T.js} +1 -1
- package/dist/assets/{companion-watch-frame-page-CxWQHVyd.js → companion-watch-frame-page-B9lHcylQ.js} +1 -1
- package/dist/assets/{connect-page-BnIPLsIl.js → connect-page-C8PBXKJ9.js} +1 -1
- package/dist/assets/{consent-controls-CzokWb_V.js → consent-controls-C2ccIKI4.js} +1 -1
- package/dist/assets/contacts-gateway-BNtogVks.js +1 -0
- package/dist/assets/contacts-page-route-B68IXC25.js +1 -0
- package/dist/assets/{copy-button-CDraE4Q7.js → copy-button-CUPJb1cH.js} +1 -1
- package/dist/assets/{credential-entry-page-CISniD8g.js → credential-entry-page-CJSq74Nm.js} +1 -1
- package/dist/assets/credentials-page-DiOU5eL1.js +1 -0
- package/dist/assets/csv-preview-BRbZOFO7.js +1 -0
- package/dist/assets/danger-zone-redirect-page-EbSYRee5.js +1 -0
- package/dist/assets/debug-page-Cl3v9VT9.js +4 -0
- package/dist/assets/deploy-dialogs-Bmx4Xvkr.js +1 -0
- package/dist/assets/{deploy-dialogs-HsxdyBbf.js → deploy-dialogs-DopKPqKO.js} +1 -1
- package/dist/assets/{desktop-preview-content-CV1cf7mU.js → desktop-preview-content-D7W-Ypu_.js} +2 -2
- package/dist/assets/{desktop-status-DEExfNSz.js → desktop-status-C8Ewgn28.js} +1 -1
- package/dist/assets/{desktop-viewer-D7Wghl4J.js → desktop-viewer-DFeSPld1.js} +2 -2
- package/dist/assets/{detail-card-C7tTQwmv.js → detail-card-B5ZmYki3.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-DnqOX8hL.js → detail-panel-stop-button-CavPaPv6.js} +1 -1
- package/dist/assets/{detail-primitives-wlzeidYY.js → detail-primitives-Brn7ATn1.js} +1 -1
- package/dist/assets/developer-page-3pxnPYDT.js +1 -0
- package/dist/assets/devices-redirect-page-BfCTPud1.js +1 -0
- package/dist/assets/{dictation-overlay-page-DOBCTXi_.js → dictation-overlay-page-DR_CXikR.js} +1 -1
- package/dist/assets/document-load-9K-naRPf.js +1 -0
- package/dist/assets/document-load-BYw5TMZT.js +1 -0
- package/dist/assets/document-viewer-page-BFaGJdAV.js +1 -0
- package/dist/assets/emails-page-CNtgKFiA.js +1 -0
- package/dist/assets/esm-5n5jSt3e.js +2 -0
- package/dist/assets/esm-B5HvNA2f.js +1 -0
- package/dist/assets/esm-BVAuvmyr.js +2 -0
- package/dist/assets/esm-CIgMNIdz.js +1 -0
- package/dist/assets/{esm-C7rWJED9.js → esm-COgrn4oo.js} +2 -2
- package/dist/assets/esm-CvOYazPQ.js +2 -0
- package/dist/assets/{esm-CpIArsrD.js → esm-DFoZ6rpj.js} +1 -1
- package/dist/assets/{esm-u_EeTLJS.js → esm-DPwp_tyY.js} +1 -1
- package/dist/assets/esm-DetZupO7.js +2 -0
- package/dist/assets/esm-DpDUzGbk.js +2 -0
- package/dist/assets/{file-diff-view-Cl9aJla4.js → file-diff-view-DN8YNueZ.js} +1 -1
- package/dist/assets/{file-view-mode-B1UgDONH.js → file-view-mode-DJGREYgR.js} +1 -1
- package/dist/assets/general-page-DnZU6qWf.js +2 -0
- package/dist/assets/hatching-screen-0LfnJSl6.js +1 -0
- package/dist/assets/{hosting-screen-CYbWPSH7.js → hosting-screen-DdGPIb6D.js} +1 -1
- package/dist/assets/identity-page-route-DlAZsSGD.js +7 -0
- package/dist/assets/inspect-page-B3zW_oAc.js +8 -0
- package/dist/assets/integrations-page-CbGvesBB.js +1 -0
- package/dist/assets/intelligence-B6UWzaf0.js +5 -0
- package/dist/assets/intelligence-DFW_P1Fv.js +5 -0
- package/dist/assets/intelligence-DXMdwG0t.js +5 -0
- package/dist/assets/intelligence-DaVJutXG.js +5 -0
- package/dist/assets/intelligence-layout-Bl3fM7gJ.js +1 -0
- package/dist/assets/intelligence-layout-slots-store-C8WE9Cx_.js +1 -0
- package/dist/assets/jszip.min-CDIVkZfG.js +2 -0
- package/dist/assets/keyboard-shortcuts-redirect-page-Dk8BO0Tb.js +1 -0
- package/dist/assets/{latest-assistant-text-C5_QcZxG.js → latest-assistant-text-C4G5IUE6.js} +3 -3
- package/dist/assets/{library-detail-page-lz31jiv2.js → library-detail-page-xqUyBUE_.js} +1 -1
- package/dist/assets/library-page-DBL9qHPX.js +1 -0
- package/dist/assets/local-mode-6LjNtmfs.js +1 -0
- package/dist/assets/login-page-0p8Bxu7Y.js +1 -0
- package/dist/assets/logout-page-DJZI_hMb.js +1 -0
- package/dist/assets/{logs-layout-DtEdDxuo.js → logs-layout-UAha1hek.js} +1 -1
- package/dist/assets/markdown-preview-B4KQVGdl.js +1 -0
- package/dist/assets/{media-preview-WLwNLylQ.js → media-preview-C2pH11yh.js} +1 -1
- package/dist/assets/memory-page-route-DaHB939a.js +2 -0
- package/dist/assets/{memory-router-playground-page-BW7vZW_9.js → memory-router-playground-page-kvDDKn_i.js} +1 -1
- package/dist/assets/message-files-panel-C-AdodUz.js +1 -0
- package/dist/assets/mutation-error-CeEB2_2a.js +1 -0
- package/dist/assets/native-attachment-pickers-CqZLg7Ns.js +1 -0
- package/dist/assets/native-file-DykqRIZ0.js +1 -0
- package/dist/assets/{notifications-page-CJRzep02.js → notifications-page-ieZgypEG.js} +1 -1
- package/dist/assets/{oauth-complete-page-ocdI_rC8.js → oauth-complete-page--SOurjUj.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-HK8d4Spc.js → oauth-popup-complete-page-CV0LXI7x.js} +2 -2
- package/dist/assets/paired-platform-identity-CscBbAl4.js +1 -0
- package/dist/assets/{pairing-page-DnBwkmV0.js → pairing-page-FXQtocMu.js} +1 -1
- package/dist/assets/password-reset-page-B137KhAK.js +1 -0
- package/dist/assets/pdf-file-preview-FBFne06k.js +1 -0
- package/dist/assets/{peeking-eyes-D9tXm8Sg.js → peeking-eyes-C3X1d6Jj.js} +1 -1
- package/dist/assets/{permission-guide-page-z6AAkvY2.js → permission-guide-page-Bjpyg9oD.js} +1 -1
- package/dist/assets/{permission-setup-DQzKLhBn.js → permission-setup-CnNekawu.js} +1 -1
- package/dist/assets/{personality-page-CzJKC8lv.js → personality-page-BWPFRDJG.js} +1 -1
- package/dist/assets/{personality-page-CKLYnk7H.js → personality-page-Rx-nh3Ne.js} +1 -1
- package/dist/assets/{personality-sliders-Dd3JGL5I.js → personality-sliders-HdKFf1i4.js} +1 -1
- package/dist/assets/plans-page-nfISMtye.js +1 -0
- package/dist/assets/{platform-loopback-page-BC5gtTbI.js → platform-loopback-page-BP0G_ztE.js} +1 -1
- package/dist/assets/{plugin-detail-page-Dre4KSYH.js → plugin-detail-page-DbItYQby.js} +1 -1
- package/dist/assets/{plugins-page-BJhR5JYi.js → plugins-page-Hq3oY2fy.js} +1 -1
- package/dist/assets/plugins-surface-Dck0e-ah.js +1 -0
- package/dist/assets/{preview-error-BSpmr-KH.js → preview-error-mzmIBuDp.js} +1 -1
- package/dist/assets/privacy-page-DrGMNIzy.js +1 -0
- package/dist/assets/{privacy-screen-CRkWqj_4.js → privacy-screen-BjNTrl-k.js} +1 -1
- package/dist/assets/profile-card-CFx29l8Z.js +1 -0
- package/dist/assets/{provider-callback-page-xSMG5fuv.js → provider-callback-page-B_32d7qH.js} +1 -1
- package/dist/assets/{provider-key-CY2sGv7V.js → provider-key-Bf9RPK5P.js} +1 -1
- package/dist/assets/{provider-signup-page-CYvh6GNB.js → provider-signup-page-CILfQS1c.js} +1 -1
- package/dist/assets/{provisioning-targets-C2xXAoS3.js → provisioning-targets-CihW-82c.js} +1 -1
- package/dist/assets/quick-input-page-9Aa-I5Jm.js +1 -0
- package/dist/assets/referral-modal-B1MpSvCh.js +1 -0
- package/dist/assets/referral-modal-ZvutbMfX.js +1 -0
- package/dist/assets/{rehype-katex-BydagpFm.js → rehype-katex-DWUGzNKD.js} +1 -1
- package/dist/assets/{research-mock-page-BdpSM2ZV.js → research-mock-page-AtmzjNYP.js} +1 -1
- package/dist/assets/research-onboarding-route-Y-TTyxVg.js +50 -0
- package/dist/assets/{review-terms-screen-DXYmPnS3.js → review-terms-screen-DJaFYp0A.js} +1 -1
- package/dist/assets/routes-BUMn_QCA.js +1 -0
- package/dist/assets/schedules-Bz8iDaf2.js +1 -0
- package/dist/assets/schedules-page-Bm1hx4Rp.js +1 -0
- package/dist/assets/security-redirect-page-D9u3RNnM.js +1 -0
- package/dist/assets/select-assistant-screen-D6s2S_mN.js +1 -0
- package/dist/assets/{self-hosted-servers-ByTPcaPx.js → self-hosted-servers-Bujh6uz1.js} +1 -1
- package/dist/assets/{service-form-controls-DtPD00wU.js → service-form-controls-BVUtB8em.js} +1 -1
- package/dist/assets/{setting-row-CaZDTGD2.js → setting-row-G5E8kZ77.js} +1 -1
- package/dist/assets/settings-Bh67VJVe.js +3 -0
- package/dist/assets/settings-ClEDqshB.js +3 -0
- package/dist/assets/settings-DDU54LDK.js +3 -0
- package/dist/assets/settings-k5uhZfPH.js +3 -0
- package/dist/assets/{settings-layout-DNdADVFk.js → settings-layout-Dqptdfa0.js} +1 -1
- package/dist/assets/share-feedback-modal-BDMiaPdp.js +1 -0
- package/dist/assets/share-feedback-modal-DUGbfI-F.js +2 -0
- package/dist/assets/{sidebar-tree-BTeywUnh.js → sidebar-tree-d7yHMhKO.js} +1 -1
- package/dist/assets/{signup-page-C3giBlX2.js → signup-page-iIwgiYLt.js} +1 -1
- package/dist/assets/{signup-shell-GSIPLhaj.js → signup-shell-BsnQcu-H.js} +1 -1
- package/dist/assets/{skill-detail-page-Deqf_hR_.js → skill-detail-page-B9n_8p-e.js} +2 -2
- package/dist/assets/{skill-detail-panel-Dxor1hrH.js → skill-detail-panel-Ds1D2oXa.js} +1 -1
- package/dist/assets/{skill-removal-dialog-BT--h1By.js → skill-removal-dialog-DGnkBffV.js} +1 -1
- package/dist/assets/{skills-page-KhBWpqn3.js → skills-page-B1R4k0DA.js} +1 -1
- package/dist/assets/sounds-page-DY9ghZGS.js +1 -0
- package/dist/assets/{start-screen-xL6YeEfA.js → start-screen-DVLLsyQx.js} +1 -1
- package/dist/assets/step-detail-header-DCnA2diF.js +1 -0
- package/dist/assets/{stt-language-picker-modal-oMpmGSKQ.js → stt-language-picker-modal-CcOxx6Ya.js} +1 -1
- package/dist/assets/subagent-detail-panel-DhzPKaSQ.js +1 -0
- package/dist/assets/superpowers-page-BonJfWrJ.js +1 -0
- package/dist/assets/system-events-page-D1OpBJh0.js +1 -0
- package/dist/assets/system-events-redirect-page-CLwAecl9.js +1 -0
- package/dist/assets/tabular-grid-DFivz0zL.js +4 -0
- package/dist/assets/{teleport-gateway-client-ZoYt4yRw.js → teleport-gateway-client-D_meDM-z.js} +1 -1
- package/dist/assets/{text-preview-C4goqoCR.js → text-preview-cMFQ3_2N.js} +1 -1
- package/dist/assets/{theme-stage-page-wBctgsW9.js → theme-stage-page-BHdquTO3.js} +1 -1
- package/dist/assets/tiptap-document-editor-0AZ7iqXI.js +323 -0
- package/dist/assets/tool-detail-panel-BZXB85iB.js +1 -0
- package/dist/assets/tool-detail-panel-Bk8CASIG.js +16 -0
- package/dist/assets/trait-cycle-row-pVT4gz4r.js +1 -0
- package/dist/assets/upgrade-cancel-page-Dc9yxkkJ.js +1 -0
- package/dist/assets/{upgrade-success-page-Dj6egC1G.js → upgrade-success-page-D8wxBq77.js} +1 -1
- package/dist/assets/{usage-redirect-page-Cc7zOqgH.js → usage-redirect-page-B4d-QKUd.js} +1 -1
- package/dist/assets/use-app-delete-DdJsUHf2.js +1 -0
- package/dist/assets/use-assistant-identity-details-DiOh0Z-W.js +1 -0
- package/dist/assets/use-async-read-DcRLxtMN.js +1 -0
- package/dist/assets/use-channel-trust-floors-uxjklf_l.js +1 -0
- package/dist/assets/use-checkout-dismiss-refresh-DXJf2M-l.js +1 -0
- package/dist/assets/use-edge-swipe-back-CyYozI-D.js +1 -0
- package/dist/assets/{use-hotkey-recorder-BIhIsp-5.js → use-hotkey-recorder-CdE79CTu.js} +1 -1
- package/dist/assets/use-invite-link-dialog-BAfg4kHK.js +1 -0
- package/dist/assets/{use-plugins-list-DPWrP6Mv.js → use-plugins-list-Df-xtL5g.js} +1 -1
- package/dist/assets/use-return-to-short-circuit-Cvy2GrRU.js +1 -0
- package/dist/assets/use-side-list-room-Vb9dmLHc.js +1 -0
- package/dist/assets/{use-skill-actions-CMoU5oFT.js → use-skill-actions-BkmdVbdv.js} +1 -1
- package/dist/assets/use-skill-detail-files-BuP8DzLj.js +1 -0
- package/dist/assets/use-supports-credentials-settings-DExbyP-z.js +1 -0
- package/dist/assets/use-truncated-blob-text-D6z6oSIj.js +1 -0
- package/dist/assets/{vendor-DwMhK7fD.js → vendor-DLH51Vjf.js} +2 -2
- package/dist/assets/voice-page-C0VkALkp.js +1 -0
- package/dist/assets/{wake-detail-panel-B6BImUJo.js → wake-detail-panel-t34mQQR0.js} +1 -1
- package/dist/assets/{weather-forecast-display-BvUd--wf.js → weather-forecast-display-BwKDcZod.js} +1 -1
- package/dist/assets/{web-BdtEBL9W.js → web-BlKAJber.js} +1 -1
- package/dist/assets/{web-DWCtm3Fa.js → web-BmoVVmPZ.js} +1 -1
- package/dist/assets/{web-CvVbfNxJ.js → web-C2Y5uOI1.js} +1 -1
- package/dist/assets/{web-BKRoBxLG.js → web-CAi9YePi.js} +1 -1
- package/dist/assets/{web-CRTiMRVg.js → web-D0qh5Vlp.js} +1 -1
- package/dist/assets/{web-670bTFck.js → web-D5UHHnMG.js} +1 -1
- package/dist/assets/{web-Bn_Atf7m.js → web-DZvE04fg.js} +1 -1
- package/dist/assets/{web-De7Tg__X.js → web-Xy5dhNHF.js} +1 -1
- package/dist/assets/{web-CkhfYAPu.js → web-vcW3se1t.js} +1 -1
- package/dist/assets/welcome-screen--gg4wkMq.js +1 -0
- package/dist/assets/{workflow-detail-panel-DMYrbO29.js → workflow-detail-panel-CK1YIy_U.js} +1 -1
- package/dist/assets/{workspace-DEyW7hRw.js → workspace-Bcvg2VfS.js} +1 -1
- package/dist/assets/{workspace-DBdJJFv1.js → workspace-BscXtFFU.js} +1 -1
- package/dist/assets/{workspace-D3zXycM9.js → workspace-C-huZiu_.js} +1 -1
- package/dist/assets/{workspace-Pqj10WV1.js → workspace-P8HaFDdu.js} +1 -1
- package/dist/assets/workspace-page-CYlqMYcs.js +1 -0
- package/dist/assets/workspace-page-Cdm9g2X4.css +1 -0
- package/dist/assets/xlsx-preview-pU_VmixR.js +1 -0
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/assets/activation-list-route-CGW4JxwN.js +0 -1
- package/dist/assets/activity-steps-panel-DMQrQxtA.js +0 -1
- package/dist/assets/add-credits-modal-Dv7XHwyy.js +0 -1
- package/dist/assets/ai-page-BYnMIWGK.js +0 -1
- package/dist/assets/all-chats-page-route-nS138Vap.js +0 -1
- package/dist/assets/app-Dy5YEvtr.css +0 -2
- package/dist/assets/app-XG_RF2yi.js +0 -392
- package/dist/assets/archive-redirect-page-DQbvA1Z-.js +0 -1
- package/dist/assets/assistant-handle-modal-CbatcZHT.js +0 -1
- package/dist/assets/assistant-inbox-BVZYdGmg.js +0 -1
- package/dist/assets/assistant-inbox-C7KwxuUh.js +0 -1
- package/dist/assets/assistant-inbox-CWwUcdtm.js +0 -1
- package/dist/assets/assistant-inbox-DanBUV86.js +0 -1
- package/dist/assets/assistant-inbox-page-route-CxI0ViyX.js +0 -8
- package/dist/assets/assistant-inbox-upgrade-body-UUuOySwQ.js +0 -1
- package/dist/assets/auth-store-CpGZaJMT.js +0 -1
- package/dist/assets/avatar-bundled-components-BOhrT2YY.js +0 -1
- package/dist/assets/background-task-detail-panel-BfpAZAV7.js +0 -1
- package/dist/assets/billing-page-D4Aw0uK5.js +0 -3
- package/dist/assets/bookmarks-page-DabizPXt.js +0 -1
- package/dist/assets/channel-transcript-panel-kIskgOQO.js +0 -1
- package/dist/assets/channels-page-route-DBYtimrU.js +0 -1
- package/dist/assets/chat-BVa_KpRl.js +0 -3
- package/dist/assets/chat-DyOtzKbX.js +0 -3
- package/dist/assets/chat-DzcU4zE3.js +0 -3
- package/dist/assets/chat-info-panel-C8-aLnsR.js +0 -1
- package/dist/assets/chat-mAV3L8rd.js +0 -3
- package/dist/assets/checkout-return-target-kOAtAdtD.js +0 -1
- package/dist/assets/command-palette-xzqumNt2.js +0 -1
- package/dist/assets/common-BRa3t-Qr.js +0 -1
- package/dist/assets/common-Bcn9GM7_.js +0 -1
- package/dist/assets/common-Bu_tPNUV.js +0 -1
- package/dist/assets/common-CrjPApCQ.js +0 -1
- package/dist/assets/companion-popover-BsoxqJOP.js +0 -1
- package/dist/assets/companion-popover-page-B-tbPgw2.js +0 -1
- package/dist/assets/companion-surface-Lu_Uj_QW.js +0 -1
- package/dist/assets/companion-surface-page-Cu5KYGHm.js +0 -1
- package/dist/assets/contacts-gateway-CXKsci-d.js +0 -1
- package/dist/assets/contacts-page-route-rxGvMBYc.js +0 -1
- package/dist/assets/credentials-page-CY8AWXDI.js +0 -1
- package/dist/assets/csv-preview-CIYuh6hO.js +0 -4
- package/dist/assets/danger-zone-redirect-page-CvReBloK.js +0 -1
- package/dist/assets/debug-page-Bi_rgZ5l.js +0 -4
- package/dist/assets/deploy-dialogs-C2piFvJp.js +0 -1
- package/dist/assets/developer-page-BCRjXz1c.js +0 -1
- package/dist/assets/devices-redirect-page-7ye90eAr.js +0 -1
- package/dist/assets/document-load-C2pkXMId.js +0 -1
- package/dist/assets/document-load-D-wTWGym.js +0 -1
- package/dist/assets/document-viewer-page-DOzOlaOx.js +0 -1
- package/dist/assets/emails-page-BcGsKx08.js +0 -1
- package/dist/assets/esm-B3c9HRrJ.js +0 -1
- package/dist/assets/esm-BcmYCUdH.js +0 -1
- package/dist/assets/esm-C7d56N3O.js +0 -2
- package/dist/assets/esm-CES6iqL5.js +0 -2
- package/dist/assets/esm-D_-u4jbN.js +0 -2
- package/dist/assets/esm-Djziw8jC.js +0 -2
- package/dist/assets/esm-MIO2TRVG.js +0 -2
- package/dist/assets/general-page-D5BxF2Og.js +0 -2
- package/dist/assets/hatching-screen-6FiOHAnm.js +0 -1
- package/dist/assets/identity-page-route-B7hLB4vt.js +0 -7
- package/dist/assets/inspect-page-Q3Uns0YC.js +0 -9
- package/dist/assets/integrations-page-C--xdzQF.js +0 -1
- package/dist/assets/intelligence-B5O7fjSX.js +0 -5
- package/dist/assets/intelligence-CJubLSea.js +0 -5
- package/dist/assets/intelligence-Keptjtmz.js +0 -5
- package/dist/assets/intelligence-Qk3SkKdZ.js +0 -5
- package/dist/assets/intelligence-layout-5NiOjPJY.js +0 -1
- package/dist/assets/intelligence-layout-slots-store-DTzofJ6x.js +0 -1
- package/dist/assets/keyboard-shortcuts-redirect-page-BXubnemT.js +0 -1
- package/dist/assets/library-page-Cqt_PX2Z.js +0 -1
- package/dist/assets/local-mode-BdKYdq-q.js +0 -1
- package/dist/assets/login-page-BcSmXRpH.js +0 -1
- package/dist/assets/logout-page-BiLyA8KS.js +0 -1
- package/dist/assets/markdown-preview-BZ0peNgQ.js +0 -1
- package/dist/assets/memory-page-route-ULkaZxE1.js +0 -2
- package/dist/assets/message-files-panel-CjeAStji.js +0 -1
- package/dist/assets/native-attachment-pickers-DyuoT-EL.js +0 -1
- package/dist/assets/native-file-xbQpY6mL.js +0 -1
- package/dist/assets/paired-platform-identity-BPPyfzDM.js +0 -1
- package/dist/assets/password-reset-page-B6LfA1PC.js +0 -1
- package/dist/assets/pdf-file-preview-BICwIHq3.js +0 -1
- package/dist/assets/plans-page-DDs81rnq.js +0 -1
- package/dist/assets/plugins-surface-B99o65kn.js +0 -1
- package/dist/assets/privacy-page-BUf0Wrj1.js +0 -1
- package/dist/assets/profile-card-BDi2Aa7O.js +0 -1
- package/dist/assets/quick-input-page-Lfrb-P2b.js +0 -1
- package/dist/assets/referral-modal--kTnJAWn.js +0 -1
- package/dist/assets/referral-modal-Bk5N1oeX.js +0 -1
- package/dist/assets/research-onboarding-route-DLbIS8Fh.js +0 -50
- package/dist/assets/routes-CJexmSc5.js +0 -1
- package/dist/assets/schedules-B_xQSD0K.js +0 -1
- package/dist/assets/schedules-page--mjVQq8F.js +0 -1
- package/dist/assets/security-redirect-page-CJJqdMen.js +0 -1
- package/dist/assets/select-assistant-screen-CWrLBgEC.js +0 -1
- package/dist/assets/settings-CF0G96O8.js +0 -3
- package/dist/assets/settings-D9aUsORh.js +0 -3
- package/dist/assets/settings-XqI4_biG.js +0 -3
- package/dist/assets/settings-ooHvceam.js +0 -3
- package/dist/assets/share-feedback-modal-BcKnGtHL.js +0 -2
- package/dist/assets/share-feedback-modal-DF6Y_Ddr.js +0 -1
- package/dist/assets/sounds-page-DTRSATq6.js +0 -1
- package/dist/assets/step-detail-header-q2pswG-E.js +0 -1
- package/dist/assets/subagent-detail-panel-BbfzXdX1.js +0 -1
- package/dist/assets/superpowers-page-Bew1AAic.js +0 -1
- package/dist/assets/system-events-page-CyvA59Rb.js +0 -1
- package/dist/assets/system-events-redirect-page-BlGZqWyR.js +0 -1
- package/dist/assets/tiptap-document-editor-9k3KCMGt.js +0 -288
- package/dist/assets/tool-detail-panel-BXJOMwEr.js +0 -1
- package/dist/assets/tool-detail-panel-D3kcmDuC.js +0 -16
- package/dist/assets/trait-cycle-row-Bj1z4vx9.js +0 -1
- package/dist/assets/upgrade-cancel-page-B8aHpJFd.js +0 -1
- package/dist/assets/use-app-delete-S-DdyUwn.js +0 -1
- package/dist/assets/use-assistant-identity-details-DT3Hy4pf.js +0 -1
- package/dist/assets/use-checkout-dismiss-refresh-DV7QRuSY.js +0 -1
- package/dist/assets/use-edge-swipe-back-BCvtCYFp.js +0 -1
- package/dist/assets/use-invite-link-dialog-DQEUmYHq.js +0 -1
- package/dist/assets/use-return-to-short-circuit-BVGVwuLm.js +0 -1
- package/dist/assets/use-side-list-room-DH5gDKs9.js +0 -1
- package/dist/assets/use-skill-detail-files-19-kefs2.js +0 -1
- package/dist/assets/use-supports-credentials-settings-Bq2yot1y.js +0 -1
- package/dist/assets/use-transcript-message-by-id-KYGOx3D6.js +0 -1
- package/dist/assets/use-truncated-blob-text-CDefp8f8.js +0 -1
- package/dist/assets/voice-page-Cuy1oc6q.js +0 -1
- package/dist/assets/welcome-screen-CtVGX2aV.js +0 -1
- package/dist/assets/workspace-page-DGL905Oc.css +0 -1
- package/dist/assets/workspace-page-DPWYRJjr.js +0 -1
- /package/dist/assets/{account-D4OPUTsf.js → account-BkxBMG9Z.js} +0 -0
- /package/dist/assets/{account-CWns4ijX.js → account-D5JdUO7K.js} +0 -0
- /package/dist/assets/{account-Bw0R0qmf.js → account-DYG79724.js} +0 -0
- /package/dist/assets/{account-DRmtnBwA.js → account-OIF2BHH7.js} +0 -0
- /package/dist/assets/{activation-yBddbC_l.js → activation-C91KPzrh.js} +0 -0
- /package/dist/assets/{activation-B2l-9khI.js → activation-Dd7eAIHs.js} +0 -0
- /package/dist/assets/{activation-DFSXprIj.js → activation-ReimSfhn.js} +0 -0
- /package/dist/assets/{activation-tasks-CtXF2Vl5.js → activation-tasks-D4dorV2v.js} +0 -0
- /package/dist/assets/{activation-tasks-BxNciLGi.js → activation-tasks-efxGWsFw.js} +0 -0
- /package/dist/assets/{activation-hs4bfeIr.js → activation-tasks-rViOqW7C.js} +0 -0
- /package/dist/assets/{activation-tasks-CkV5q5W-.js → activation-tasks-wtMwJ0EV.js} +0 -0
- /package/dist/assets/{activation-tasks-_AV6IbqR.js → activation-yoBQ36AY.js} +0 -0
- /package/dist/assets/{app-types-Cp5xNgLa.js → app-types-BoY_FOAH.js} +0 -0
- /package/dist/assets/{build.umd-xFoDWj7a.js → build.umd-B0ATW5UM.js} +0 -0
- /package/dist/assets/{contacts-BOyvHuKQ.js → contacts-BTmOfEVL.js} +0 -0
- /package/dist/assets/{contacts-D9eUSi1v.js → contacts-Cxz-DyYF.js} +0 -0
- /package/dist/assets/{contacts-DI6Vm6_I.js → contacts-DgC-8PHB.js} +0 -0
- /package/dist/assets/{contacts-CGbSO0P2.js → contacts-mijLgegD.js} +0 -0
- /package/dist/assets/{credential-requests-D99txrmf.js → credential-requests-CmFaXPwz.js} +0 -0
- /package/dist/assets/{credential-requests-qknzN9Mx.js → credential-requests-D3J3i5oa.js} +0 -0
- /package/dist/assets/{credential-requests-DK4G8G2K.js → credential-requests-gl4lfjL4.js} +0 -0
- /package/dist/assets/{credential-requests-Dzg6decX.js → credential-requests-h908NRpv.js} +0 -0
- /package/dist/assets/{definitions-CK0CSdwt.js → definitions-BUCExH-9.js} +0 -0
- /package/dist/assets/{definitions-Dj7uajgZ.js → definitions-DpZNNWA7.js} +0 -0
- /package/dist/assets/{diff-rows-D2cn4P1P.js → diff-rows-BqSnRbXL.js} +0 -0
- /package/dist/assets/{format-countdown-DY9yAH8I.js → format-countdown-l7vj-IPm.js} +0 -0
- /package/dist/assets/{format-file-size-Bcra_NZ3.js → format-file-size-zh148z6P.js} +0 -0
- /package/dist/assets/{home-BB2e5zTF.js → home-BI-fzzA0.js} +0 -0
- /package/dist/assets/{home-BdhZ2Mul.js → home-BZGFmZ0D.js} +0 -0
- /package/dist/assets/{home-Dt1BT4nR.js → home-CM9kRnjx.js} +0 -0
- /package/dist/assets/{home-f_uK9LuK.js → home-D4Knhe9B.js} +0 -0
- /package/dist/assets/{library-C4DGNfcw.js → library-CFGvGWZt.js} +0 -0
- /package/dist/assets/{library-k7fqLDBW.js → library-CmSFUt9r.js} +0 -0
- /package/dist/assets/{library-Oxba_f5f.js → library-D26ezl8B.js} +0 -0
- /package/dist/assets/{library-C5DNj-EA.js → library-Dv9w5D8Z.js} +0 -0
- /package/dist/assets/{list-detail-navigation-ChFNCRwF.js → list-detail-navigation-BwyoNgJy.js} +0 -0
- /package/dist/assets/{logs-CD6c3Qbe.js → logs-5jFWrQRx.js} +0 -0
- /package/dist/assets/{logs-C6ZoCtQZ.js → logs-BJTGRcSn.js} +0 -0
- /package/dist/assets/{logs-KivR04Gt.js → logs-BPrpYBp7.js} +0 -0
- /package/dist/assets/{logs-B40JNDv6.js → logs-BpX8Zuzb.js} +0 -0
- /package/dist/assets/{machine-sizes-CMoW5pTp.js → machine-sizes-srbag24Q.js} +0 -0
- /package/dist/assets/{onboarding-C8F6iiWB.js → onboarding-B9_JitSg.js} +0 -0
- /package/dist/assets/{onboarding-BgghY4z9.js → onboarding-BrS1fcVE.js} +0 -0
- /package/dist/assets/{onboarding-Cu2BL5Gf.js → onboarding-Cx2yoeE5.js} +0 -0
- /package/dist/assets/{onboarding-DUMoGvPA.js → onboarding-cBGAfB74.js} +0 -0
- /package/dist/assets/{onboarding-step-layout-Dno4htl_.js → onboarding-step-layout-BsqZaEHR.js} +0 -0
- /package/dist/assets/{pdf-BBv0SSch.js → pdf-_tTrkaWt.js} +0 -0
- /package/dist/assets/{plugin-attribution-CafUjnE5.js → plugin-attribution-RBBRvghI.js} +0 -0
- /package/dist/assets/{radio-card-nav-D8mG9zPL.js → radio-card-nav-Br8358Zh.js} +0 -0
- /package/dist/assets/{remote-web-zZ_CvLha.js → remote-web-42kFkA33.js} +0 -0
- /package/dist/assets/{remote-web-Z2ZrpLiX.js → remote-web-CFPdQIeJ.js} +0 -0
- /package/dist/assets/{remote-web-GfnsuSpi.js → remote-web-DFX945w2.js} +0 -0
- /package/dist/assets/{remote-web-k77r5FEH.js → remote-web-DkzrBzGi.js} +0 -0
- /package/dist/assets/{schedules-DftKmK4y.js → schedules-Bk7XGnqS.js} +0 -0
- /package/dist/assets/{schedules-D8r5WhAS.js → schedules-CGU7CKaM.js} +0 -0
- /package/dist/assets/{schedules-Bv4k8rLW.js → schedules-J687h0Fh.js} +0 -0
- /package/dist/assets/{schedules-CcyISAUi.js → schedules-JnprnWDo.js} +0 -0
- /package/dist/assets/{signup-onboarding-handoff-BIo7lFvP.js → signup-onboarding-handoff-4Gqmsxpv.js} +0 -0
- /package/dist/assets/{status-badge-pill-qGQ5gRiz.js → status-badge-pill-TVPV4D5e.js} +0 -0
- /package/dist/assets/{terminal-BXOFqnbv.js → terminal-BV6xg9ZA.js} +0 -0
- /package/dist/assets/{terminal-CbK5xKQc.js → terminal-BjOF3LBT.js} +0 -0
- /package/dist/assets/{terminal-BXlYUd_i.js → terminal-CYHsl1AH.js} +0 -0
- /package/dist/assets/{terminal-BurYUC3M.js → terminal-Cxm0NKaj.js} +0 -0
- /package/dist/assets/{usage-window-BzmtusAQ.js → usage-window-DJWFtBw1.js} +0 -0
- /package/dist/assets/{use-debounced-value-DS3f___V.js → use-debounced-value-CiNn3pzA.js} +0 -0
- /package/dist/assets/{xterm-DTHu4t4D.js → xterm-Pyzkt_-B.js} +0 -0
- /package/dist/assets/{xterm-addon-fit-DVhKDxY7.js → xterm-addon-fit-HaY_WHvm.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Yo as t}from"./app-L206Azo1.js";import{E as n}from"./vendor-DLH51Vjf.js";import{t as r,x as i}from"./react-B9IgSVeK.js";import{t as a}from"./format-file-size-zh148z6P.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{$C as t,Dr as n,HC as r,Hh as i,Ht as a,PC as o,Qa as s,Qn as c,Vy as l,Wt as u,Xt as d,bn as f,cr as p,dC as m,iS as h,lC as g,la as _,lr as v,nx as y,oa as b,or as x,rg as S,sr as C,tr as w,uC as T,yn as E}from"./app-L206Azo1.js";import{E as D}from"./vendor-DLH51Vjf.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:n,assistantName:i,isReferenced:o,onToggleReference:s}){let{t:c}=D(`chat`),l=C(e.timestamp),f=e.role===`user`?c(`channelTranscriptPanel.unknownSender`):i??c(`channelTranscriptPanel.assistantSender`),h=e.provenance.senderName??f,_=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)(r,{as:`span`,variant:`body-small-emphasised`,className:`min-w-0 truncate text-[var(--content-default)]`,children:h}),l?(0,F.jsx)(r,{as:`span`,variant:`body-small-lighter`,title:u(l),className:`shrink-0 text-[var(--content-tertiary)]`,children:a(l)}):null,(0,F.jsx)(`span`,{className:`flex-1`}),p(e)?(0,F.jsx)(t,{variant:`ghost`,size:`compact`,"data-reveal":``,active:o,leftIcon:o?(0,F.jsx)(A,{}):(0,F.jsx)(N,{}),onClick:()=>s(e),"aria-pressed":o,"aria-label":o?c(`channelTranscriptPanel.removeReferenceAria`):c(`channelTranscriptPanel.referenceAria`,{channel:n}),className:`shrink-0`,children:c(o?`channelTranscriptPanel.referenced`:`channelTranscriptPanel.reference`)}):null]}),_?(0,F.jsx)(r,{as:`p`,variant:`body-small-default`,className:`text-[var(--content-secondary)]`,children:c(_.op===`added`?`channelTranscriptPanel.reactionAdded`:`channelTranscriptPanel.reactionRemoved`,{emoji:d(_)})}):(0,F.jsxs)(r,{as:`div`,variant:`body-small-default`,className:`${T} mb-0`,children:[(0,F.jsx)(`span`,{"aria-hidden":`true`,className:g}),(0,F.jsx)(`span`,{className:`${m} whitespace-pre-wrap break-words`,children:e.text||c(`channelTranscriptPanel.noText`)})]})]})}function L({sidecarRef:e,threadName:n,sourceHref:i,entries:a,assistantName:s,referencedEntryId:u,onToggleReference:d,onClose:f}){let{t:p}=D(`chat`),m=_(e.channelId),h=n?p(`channelTranscriptPanel.namedTitle`,{channel:m,thread:n}):p(`channelTranscriptPanel.title`,{channel:m});return(0,F.jsx)(c,{icon:(0,F.jsx)(b,{channelId:e.channelId,className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`}),title:h,headerTrailing:(0,F.jsx)(o,{tone:`neutral`,children:p(`channelTranscriptPanel.readOnly`)}),headerActions:i?(0,F.jsx)(t,{asChild:!0,variant:`outlined`,leftIcon:(0,F.jsx)(M,{}),className:`shrink-0`,children:(0,F.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer noopener`,onClick:e=>l(e,i),children:p(`channelTranscriptPanel.openInChannel`,{channel:m})})}):void 0,closeLabel:p(`channelTranscriptPanel.closeAria`),closeTooltip:p(`channelTranscriptPanel.closeTooltip`),onClose:f,children:(0,F.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,F.jsx)(r,{as:`p`,variant:`body-small-lighter`,className:`text-[var(--content-tertiary)]`,children:p(`channelTranscriptPanel.readOnlyNote`,{channel:m})}),a.length===0?(0,F.jsx)(w,{placement:`panel`,children:v(e.channelId)?p(`channelTranscriptPanel.emptyThread`,{channel:m}):p(`channelTranscriptPanel.emptyNoMessageDetail`,{channel:m})}):(0,F.jsx)(`div`,{className:`flex flex-col gap-1`,children:a.map(e=>(0,F.jsx)(I,{entry:e,channelLabel:m,assistantName:s,isReferenced:u===e.id,onToggleReference:d},e.id))})]})})}function R({sidecarRef:e,onClose:t}){let r=y.use.activeAssistantId(),a=S.use.activeConversationId(),{target:o,entries:c}=x({conversationId:a,conversation:s(r,a,!0),messages:n()}),l=h.use.name(),u=E.use.reference(),d=E.use.toggleReference(),p=i(o,e),m=p?c:[],g=_(e.channelId),v=(0,P.useCallback)(e=>{o&&d(f({entry:e,target:o,channelLabel:g}))},[o,d,g]);return(0,F.jsx)(L,{sidecarRef:e,threadName:p?o?.threadName:void 0,sourceHref:p?o?.sourceHref:void 0,entries:m,assistantName:l,referencedEntryId:u?.messageId??null,onToggleReference:v,onClose:t})}export{R as ChannelTranscriptPanel};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var e={drawerTitle:`Каналы`,disconnectTitle:`Отключить {channel}?`,disconnectConfirm:`Отключить`},t={pluginChannelAria:`{channel}, из плагина`},n={connected:`Подключено`,reconnecting:`Переподключение…`,statusUnavailable:`Статус недоступен`,disconnecting:`Отключение…`,disconnect:`Отключить`},r={setupHeading:`Настройка Slack`},i={incompleteTitle:`{channel} ещё не работает`,disconnectedTitle:`{channel} не подключён`,incompleteDescription:`{channel} настроен, но сообщения ещё не доставляет. Ассистент может продолжить настройку и сказать, что не так.`,opening:`Открываем…`,finishSetup:`Закончить настройку с ассистентом`,setUp:`Настроить`,connectManually:`или подключить вручную`},a={navigateToPluginPage:`Перейти на страницу плагина`,ingressLoading:`Проверяем, кто может достучаться до {channel}…`,ingressUnsupported:`Шлюз этого ассистента не сообщает о входящих разрешениях, поэтому здесь нечего решать.`,ingressForbidden:`Смотреть и менять входящие разрешения может только опекун этого ассистента.`,ingressUnreadable:`Не удалось прочитать входящее разрешение для {channel}.`,ingressNone:`Шлюз не видит объявления входящего доступа для {channel}, поэтому пока нечего одобрять.`,ingressApprovedTag:`Входящий доступ одобрен`,ingressPendingTag:`Входящий доступ ждёт одобрения`,approveChannel:`Одобрить канал`,revokeChannel:`Отозвать канал`,approveChannelInfo:`Одобрение этого канала открывает доступ к ассистенту для запросов, которые отправляют провайдеры этого канала`},o={heading:`Кто может писать {assistant}`,loading:`Загрузка…`,loadFailed:`Не удалось загрузить эту настройку. Повторите открытие страницы.`,selectAria:`Кто может писать {assistant}`,trustedContactsNotice
|
|
1
|
+
var e={drawerTitle:`Каналы`,disconnectTitle:`Отключить {channel}?`,disconnectConfirm:`Отключить`},t={pluginChannelAria:`{channel}, из плагина`},n={connected:`Подключено`,reconnecting:`Переподключение…`,statusUnavailable:`Статус недоступен`,disconnecting:`Отключение…`,disconnect:`Отключить`},r={setupHeading:`Настройка Slack`},i={incompleteTitle:`{channel} ещё не работает`,disconnectedTitle:`{channel} не подключён`,incompleteDescription:`{channel} настроен, но сообщения ещё не доставляет. Ассистент может продолжить настройку и сказать, что не так.`,opening:`Открываем…`,finishSetup:`Закончить настройку с ассистентом`,setUp:`Настроить`,connectManually:`или подключить вручную`},a={navigateToPluginPage:`Перейти на страницу плагина`,ingressLoading:`Проверяем, кто может достучаться до {channel}…`,ingressUnsupported:`Шлюз этого ассистента не сообщает о входящих разрешениях, поэтому здесь нечего решать.`,ingressForbidden:`Смотреть и менять входящие разрешения может только опекун этого ассистента.`,ingressUnreadable:`Не удалось прочитать входящее разрешение для {channel}.`,ingressNone:`Шлюз не видит объявления входящего доступа для {channel}, поэтому пока нечего одобрять.`,ingressApprovedTag:`Входящий доступ одобрен`,ingressPendingTag:`Входящий доступ ждёт одобрения`,approveChannel:`Одобрить канал`,revokeChannel:`Отозвать канал`,approveChannelInfo:`Одобрение этого канала открывает доступ к ассистенту для запросов, которые отправляют провайдеры этого канала`},o={heading:`Кто может писать {assistant}`,loading:`Загрузка…`,loadFailed:`Не удалось загрузить эту настройку. Повторите открытие страницы.`,selectAria:`Кто может писать {assistant}`,trustedContactsNotice:`Всех остальных, даже коллег в общем канале, сначала просят пройти проверку, а вы получаете уведомление. Подтвердить людей заранее можно в Контактах.`,confirmFallback:`Подтвердить`,noOne:{label:`Никто`,description:`Никто не может писать {assistant} в этом канале: блокируются все сообщения, включая ваши.`,confirmTitle:`Заблокировать все сообщения?`,confirmMessage:`Значение «Никто» жёстко отклоняет все входящие сообщения этого канала, включая ваши собственные.
|
|
2
2
|
|
|
3
|
-
Это можно отменить в любой момент.`,confirmAction:`Заблокировать все`},guardianOnly:{label:`Только вы`,description:`Писать {assistant} можете только вы. Всем остальным отказано.`},trustedContacts:{label:`Подтверждённые контакты`,description:`Писать {assistant} можете вы и подтверждённые вами
|
|
3
|
+
Это можно отменить в любой момент.`,confirmAction:`Заблокировать все`},guardianOnly:{label:`Только вы`,description:`Писать {assistant} можете только вы. Всем остальным отказано.`},trustedContacts:{label:`Подтверждённые контакты`,description:`Писать {assistant} можете вы и подтверждённые вами контакты.`},anyContact:{label:`Любой контакт`,description:`Писать {assistant} можете вы и любой известный контакт, включая ещё не подтверждённые. Незнакомцев сначала просят пройти проверку.`,confirmTitle:`Разрешить любой контакт?`,confirmMessage:`«Любой контакт» допускает всех распознанных участников этого канала (в том числе ожидающих, неподтверждённых), а не только подтверждённые контакты.
|
|
4
4
|
|
|
5
5
|
Лучше всего подходит для каналов, где есть только люди, которым вы уже доверяете.`,confirmAction:`Разрешить любой контакт`},strangers:{label:`Незнакомцы`,description:`Писать {assistant} может кто угодно, включая совершенно незнакомых людей.`,confirmTitle:`Разрешить незнакомцев?`,confirmMessage:`Точно разрешить незнакомцам обращаться к вашему ассистенту через этот канал?
|
|
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:`Завершение настройки…`,
|
|
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:`Завершение настройки…`,copiedAddress:`Скопировано`,copyAddressAriaLabel:`Скопировать адрес`,copyAddressFailed:`Не удалось скопировать адрес.`,domainLabel:`Домен`,domainReleaseFailedToast:`Не удалось освободить домен.`,domainReleasedToast:`Домен освобождён.`,emailRemoveFailedToast:`Не удалось удалить адрес почты.`,emailRemovedToast:`Адрес почты удалён.`,inboxSetupBody:`Адрес ассистента создаётся в разделе «Почта ассистента», где читается его почта. Откройте его, чтобы выбрать адрес.`,inboxSetupButton:`Открыть почту ассистента`,inboxSetupTitle:`Настройте почту в разделе «Почта ассистента»`,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:`Повторить`,subscriptionWarningBody:`Не удалось связаться со службой оплаты. Форма ниже считает, что управляемая почта включена для организации. Если это не так, регистрация домена не сработает.`,subscriptionWarningTitle:`Не удалось проверить статус подписки`,usageSummary:`сегодня отправлено {sent} / {limit} · получено {received}`},_={title:`Настройки почты`,description:`Адрес ассистента и кто может ему писать.`},v={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,emailSettingsModal:_};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,v as default,h as emailChannelSection,g as emailManagedContent,_ as emailSettingsModal,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};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var e={drawerTitle:`Canales`,disconnectTitle:`¿Desconectar {channel}?`,disconnectConfirm:`Desconectar`},t={pluginChannelAria:`{channel}, de un plugin`},n={connected:`Conectado`,reconnecting:`Reconectando…`,statusUnavailable:`Estado no disponible`,disconnecting:`Desconectando…`,disconnect:`Desconectar`},r={setupHeading:`Configuración de Slack`},i={incompleteTitle:`{channel} aún no funciona`,disconnectedTitle:`{channel} no está conectado`,incompleteDescription:`{channel} está configurado pero todavía no entrega mensajes. Tu asistente puede retomar donde se quedó la configuración y decirte qué falla.`,opening:`Abriendo…`,finishSetup:`Terminar la configuración con tu asistente`,setUp:`Configurar`,connectManually:`o conectar manualmente`},a={navigateToPluginPage:`Ir a la página del plugin`,ingressLoading:`Comprobando quién puede contactar con {channel}…`,ingressUnsupported:`La puerta de enlace de este asistente no informa de las aprobaciones de entrada, así que aquí no hay nada que decidir.`,ingressForbidden:`Solo el guardián de este asistente puede ver o cambiar las aprobaciones de entrada.`,ingressUnreadable:`No se pudo leer la aprobación de entrada de {channel}.`,ingressNone:`La puerta de enlace no ve ninguna declaración de entrada para {channel}, así que todavía no hay nada que aprobar.`,ingressApprovedTag:`Entrada aprobada`,ingressPendingTag:`Entrada pendiente de aprobación`,approveChannel:`Aprobar canal`,revokeChannel:`Revocar canal`,approveChannelInfo:`Aprobar este canal significa que abres el acceso a tu asistente a las solicitudes enviadas específicamente por los proveedores de este canal`},o={heading:`Quién puede escribir a {assistant}`,loading:`Cargando…`,loadFailed:`No se pudo cargar este ajuste. Prueba a volver a abrir esta página.`,selectAria:`Quién puede escribir a {assistant}`,trustedContactsNotice:`
|
|
1
|
+
var e={drawerTitle:`Canales`,disconnectTitle:`¿Desconectar {channel}?`,disconnectConfirm:`Desconectar`},t={pluginChannelAria:`{channel}, de un plugin`},n={connected:`Conectado`,reconnecting:`Reconectando…`,statusUnavailable:`Estado no disponible`,disconnecting:`Desconectando…`,disconnect:`Desconectar`},r={setupHeading:`Configuración de Slack`},i={incompleteTitle:`{channel} aún no funciona`,disconnectedTitle:`{channel} no está conectado`,incompleteDescription:`{channel} está configurado pero todavía no entrega mensajes. Tu asistente puede retomar donde se quedó la configuración y decirte qué falla.`,opening:`Abriendo…`,finishSetup:`Terminar la configuración con tu asistente`,setUp:`Configurar`,connectManually:`o conectar manualmente`},a={navigateToPluginPage:`Ir a la página del plugin`,ingressLoading:`Comprobando quién puede contactar con {channel}…`,ingressUnsupported:`La puerta de enlace de este asistente no informa de las aprobaciones de entrada, así que aquí no hay nada que decidir.`,ingressForbidden:`Solo el guardián de este asistente puede ver o cambiar las aprobaciones de entrada.`,ingressUnreadable:`No se pudo leer la aprobación de entrada de {channel}.`,ingressNone:`La puerta de enlace no ve ninguna declaración de entrada para {channel}, así que todavía no hay nada que aprobar.`,ingressApprovedTag:`Entrada aprobada`,ingressPendingTag:`Entrada pendiente de aprobación`,approveChannel:`Aprobar canal`,revokeChannel:`Revocar canal`,approveChannelInfo:`Aprobar este canal significa que abres el acceso a tu asistente a las solicitudes enviadas específicamente por los proveedores de este canal`},o={heading:`Quién puede escribir a {assistant}`,loading:`Cargando…`,loadFailed:`No se pudo cargar este ajuste. Prueba a volver a abrir esta página.`,selectAria:`Quién puede escribir a {assistant}`,trustedContactsNotice:`A cualquier otra persona, incluso un compañero de un canal compartido, se le pide verificarse primero, y se te notifica. Puedes verificar personas por adelantado en Contactos.`,confirmFallback:`Confirmar`,noOne:{label:`Nadie`,description:`Nadie puede escribir a {assistant} en este canal: se bloquean todos los mensajes, incluidos los tuyos.`,confirmTitle:`¿Bloquear todos los mensajes?`,confirmMessage:`Poner este canal en “Nadie” rechaza de plano todos los mensajes entrantes, incluidos los tuyos.
|
|
2
2
|
|
|
3
|
-
Puedes revertirlo en cualquier momento.`,confirmAction:`Bloquear todo`},guardianOnly:{label:`Solo tú`,description:`Solo tú puedes escribir a {assistant}. Todos los demás son rechazados.`},trustedContacts:{label:`Contactos verificados`,description:`Tú y
|
|
3
|
+
Puedes revertirlo en cualquier momento.`,confirmAction:`Bloquear todo`},guardianOnly:{label:`Solo tú`,description:`Solo tú puedes escribir a {assistant}. Todos los demás son rechazados.`},trustedContacts:{label:`Contactos verificados`,description:`Tú y tus contactos verificados pueden escribir a {assistant}.`},anyContact:{label:`Cualquier contacto`,description:`Tú y cualquier contacto conocido pueden escribir a {assistant}, incluidos contactos que aún no has verificado. A los desconocidos se les pide verificarse primero.`,confirmTitle:`¿Permitir cualquier contacto?`,confirmMessage:`“Cualquier contacto” admite a todos los contactos detectados en este canal (incluidos los pendientes sin verificar), no solo a tus contactos verificados.
|
|
4
4
|
|
|
5
5
|
Ideal para canales formados solo por personas en las que ya confías.`,confirmAction:`Permitir cualquier contacto`},strangers:{label:`Desconocidos`,description:`Cualquiera puede escribir a {assistant}, incluidos completos desconocidos.`,confirmTitle:`¿Permitir desconocidos?`,confirmMessage:`¿Seguro que quieres permitir que desconocidos contacten con tu asistente por este canal?
|
|
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…`,
|
|
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…`,copiedAddress:`Copiado`,copyAddressAriaLabel:`Copiar dirección`,copyAddressFailed:`No se pudo copiar la dirección.`,domainLabel:`Dominio`,domainReleaseFailedToast:`No se pudo liberar el dominio.`,domainReleasedToast:`Dominio liberado.`,emailRemoveFailedToast:`No se pudo eliminar la dirección de correo.`,emailRemovedToast:`Dirección de correo eliminada.`,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`,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`,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`,usageSummary:`{sent} / {limit} enviados hoy · {received} recibidos`},_={title:`Ajustes del correo`,description:`La dirección de tu asistente y quién puede escribirle.`},v={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,emailSettingsModal:_};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,v as default,h as emailChannelSection,g as emailManagedContent,_ as emailSettingsModal,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};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var e={drawerTitle:`渠道`,disconnectTitle:`断开 {channel} 的连接?`,disconnectConfirm:`断开连接`},t={pluginChannelAria:`{channel},来自插件`},n={connected:`已连接`,reconnecting:`正在重新连接…`,statusUnavailable:`状态不可用`,disconnecting:`正在断开连接…`,disconnect:`断开连接`},r={setupHeading:`Slack 设置`},i={incompleteTitle:`{channel} 尚未正常工作`,disconnectedTitle:`{channel} 未连接`,incompleteDescription:`{channel} 已设置,但尚未发送消息。您的助手可以从设置中断处继续,并告诉您问题所在。`,opening:`正在打开…`,finishSetup:`使用您的助手完成设置`,setUp:`设置`,connectManually:`或手动连接`},a={navigateToPluginPage:`导航到插件页面`,ingressLoading:`正在检查谁可以访问 {channel}…`,ingressUnsupported:`此助手的网关不报告入口批准,因此此处无需决定。`,ingressForbidden:`只有此助手的守护者才能查看或更改入口批准。`,ingressUnreadable:`无法读取 {channel} 的入口批准。`,ingressNone:`网关未发现 {channel} 的入口声明,因此尚未有任何可批准的内容。`,ingressApprovedTag:`入口已批准`,ingressPendingTag:`入口待批准`,approveChannel:`批准渠道`,revokeChannel:`撤销渠道`,approveChannelInfo:`批准此渠道意味着您将向您的助手开放访问权限,以处理此渠道背后提供商发送的特定请求`},o={heading:`谁可以向{assistant}发送消息`,loading:`正在加载…`,loadFailed:`无法加载此设置。请尝试重新打开此页面。`,selectAria:`谁可以向{assistant}发送消息`,trustedContactsNotice
|
|
1
|
+
var e={drawerTitle:`渠道`,disconnectTitle:`断开 {channel} 的连接?`,disconnectConfirm:`断开连接`},t={pluginChannelAria:`{channel},来自插件`},n={connected:`已连接`,reconnecting:`正在重新连接…`,statusUnavailable:`状态不可用`,disconnecting:`正在断开连接…`,disconnect:`断开连接`},r={setupHeading:`Slack 设置`},i={incompleteTitle:`{channel} 尚未正常工作`,disconnectedTitle:`{channel} 未连接`,incompleteDescription:`{channel} 已设置,但尚未发送消息。您的助手可以从设置中断处继续,并告诉您问题所在。`,opening:`正在打开…`,finishSetup:`使用您的助手完成设置`,setUp:`设置`,connectManually:`或手动连接`},a={navigateToPluginPage:`导航到插件页面`,ingressLoading:`正在检查谁可以访问 {channel}…`,ingressUnsupported:`此助手的网关不报告入口批准,因此此处无需决定。`,ingressForbidden:`只有此助手的守护者才能查看或更改入口批准。`,ingressUnreadable:`无法读取 {channel} 的入口批准。`,ingressNone:`网关未发现 {channel} 的入口声明,因此尚未有任何可批准的内容。`,ingressApprovedTag:`入口已批准`,ingressPendingTag:`入口待批准`,approveChannel:`批准渠道`,revokeChannel:`撤销渠道`,approveChannelInfo:`批准此渠道意味着您将向您的助手开放访问权限,以处理此渠道背后提供商发送的特定请求`},o={heading:`谁可以向{assistant}发送消息`,loading:`正在加载…`,loadFailed:`无法加载此设置。请尝试重新打开此页面。`,selectAria:`谁可以向{assistant}发送消息`,trustedContactsNotice:`其他任何人(即使是共享频道中的队友)都会被要求先验证,并且您会收到通知。您可以在“联系人”中提前验证人员。`,confirmFallback:`确认`,noOne:{label:`无人`,description:`无人可以在此频道向{assistant}发送消息:包括您在内的所有消息都将被阻止。`,confirmTitle:`阻止所有消息?`,confirmMessage:`将此频道设置为“无人”将严格拒绝所有入站消息,包括您发送的消息。
|
|
2
2
|
|
|
3
|
-
您可以随时撤销此操作。`,confirmAction:`阻止所有`},guardianOnly:{label:`仅您`,description:`只有您可以向{assistant}发送消息。其他所有人都会被拒绝。`},trustedContacts:{label:`已验证联系人`,description
|
|
3
|
+
您可以随时撤销此操作。`,confirmAction:`阻止所有`},guardianOnly:{label:`仅您`,description:`只有您可以向{assistant}发送消息。其他所有人都会被拒绝。`},trustedContacts:{label:`已验证联系人`,description:`您和您已验证的联系人可以向{assistant}发送消息。`},anyContact:{label:`任何联系人`,description:`您和任何已知联系人都可以向{assistant}发送消息,包括您尚未验证的联系人。陌生人会被要求先验证。`,confirmTitle:`允许任何联系人?`,confirmMessage:`“任何联系人”允许此频道中的所有匹配联系人(包括待处理、未验证的联系人),而不仅仅是您已验证的联系人。
|
|
4
4
|
|
|
5
5
|
最适合仅由您已信任的人员组成的频道。`,confirmAction:`允许任何联系人`},strangers:{label:`陌生人`,description:`任何人都可以向{assistant}发送消息,包括完全陌生的用户。`,confirmTitle:`允许陌生人?`,confirmMessage:`您确定要允许陌生人通过此频道联系您的助手吗?
|
|
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:`正在完成设置…`,
|
|
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:`正在完成设置…`,copiedAddress:`已复制`,copyAddressAriaLabel:`复制地址`,copyAddressFailed:`无法复制地址。`,domainLabel:`域名`,domainReleaseFailedToast:`释放域名失败。`,domainReleasedToast:`域名已释放。`,emailRemoveFailedToast:`删除电子邮件地址失败。`,emailRemovedToast:`电子邮件地址已删除。`,inboxSetupBody:`助手的地址在助手收件箱中创建,其邮件也在那里阅读。打开收件箱以选择地址。`,inboxSetupButton:`打开助手收件箱`,inboxSetupTitle:`在助手收件箱中设置电子邮件`,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:`重试`,subscriptionWarningBody:`我们无法连接到计费服务。以下表单假定您的组织已启用托管电子邮件。如果未启用,注册域名将失败。`,subscriptionWarningTitle:`无法验证订阅状态`,usageSummary:`今日发送 {sent} / {limit} · 收到 {received}`},_={title:`邮件设置`,description:`助手的地址以及谁可以给它发消息。`},v={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,emailSettingsModal:_};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,v as default,h as emailChannelSection,g as emailManagedContent,_ as emailSettingsModal,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{$C as t,$f as n,$h as r,AS as i,Ai as a,BC as o,BS as s,C as c,Ci as l,Cs as u,D as d,E as f,Fd as p,H as m,HC as h,Ju as g,Jv as _,KC as v,Lv as y,MC as b,MS as x,Ni as S,O as C,OC as w,PC as T,Pi as E,Ps as D,Qh as O,Rf as k,S as A,Ss as j,T as M,TC as N,U as P,W as F,WS as I,Xh as L,Xp as ee,Xv as R,Yp as te,Yv as z,Zf as B,Zh as V,Zp as ne,aC as re,ah as ie,b as ae,bh as oe,dc as se,eC as ce,eg as le,ep as ue,fC as de,fc as fe,gc as pe,hC as me,hc as he,hp as ge,iC as H,iS as _e,iw as ve,la as ye,lc as be,mC as xe,mc as Se,mp as Ce,nt as we,oa as Te,pc as Ee,pp as De,qp as Oe,qv as ke,sa as Ae,tc as je,tp as Me,tu as Ne,tw as Pe,ua as Fe,uc as Ie,vC as Le,wC as Re,x as ze,xS as Be,xn as Ve,y as He,zC as Ue,zf as We,zg as Ge,zy as Ke}from"./app-L206Azo1.js";import{$n as U,E as W,O as G,Xn as K,nr as q}from"./vendor-DLH51Vjf.js";import{_ as qe,d as Je,f as Ye,h as Xe,n as Ze,t as Qe,x as $e}from"./react-B9IgSVeK.js";import{Dn as et,Rt as tt,Yn as nt,Zr as rt,br as it,fr as at,qi as ot,qn as st,vt as ct,zi as lt}from"./icons-C0wyat6T.js";import{t as ut}from"./detail-card-B5ZmYki3.js";import{a as dt,i as ft,n as pt,o as mt,r as ht,t as gt}from"./use-channel-trust-floors-uxjklf_l.js";import{t as J}from"./mutation-error-CeEB2_2a.js";import{a as _t,i as vt,n as yt,r as bt,t as xt}from"./use-invite-link-dialog-BAfg4kHK.js";import{t as St}from"./use-side-list-room-Vb9dmLHc.js";import{i as Ct,r as wt}from"./service-form-controls-BVUtB8em.js";var Y=e($e(),1);function Tt(){let{channelId:e}=Xe(),t=Ye(),{search:n}=Je();return{selected:e,select:(0,Y.useCallback)(e=>{t({pathname:`/assistant/channels/${encodeURIComponent(e)}`,search:n},{replace:!0})},[t,n])}}var X=Qe();function Et({channels:e,pluginChannels:t=[],selectedKey:n,onSelect:r}){return(0,X.jsx)(o.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,X.jsx)(o.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[e.map(e=>(0,X.jsx)(Dt,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key)),t.map(e=>(0,X.jsx)(Ot,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key))]})})})}function Dt({channel:e,selected:t,onClick:n}){let r=e.status===`ready`,i=ye(e.key),a=r?`Connected`:`Not connected`;return(0,X.jsx)(v,{asChild:!0,active:t,"aria-label":`${i}, ${a}`,children:(0,X.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,X.jsx)(Te,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:i}),(0,X.jsx)(`span`,{className:`flex shrink-0 items-center`,children:(0,X.jsx)(T,{tone:r?`positive`:`neutral`,children:a})})]})})}function Ot({channel:e,selected:t,onClick:n}){let{t:r}=W(`channels`);return(0,X.jsx)(v,{asChild:!0,active:t,"aria-label":r(`channelAdapterList.pluginChannelAria`,{channel:e.label}),children:(0,X.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,X.jsx)(Ae,{icon:e.icon,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:e.label}),(0,X.jsx)(tt,{"aria-hidden":!0,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`})]})})}function kt({icon:e,title:t,description:n,action:r,className:i}){return(0,X.jsxs)(`div`,{className:ve(`flex flex-col items-center justify-center gap-3 px-4 py-12 text-center`,i),children:[e?(0,X.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,X.jsx)(`h3`,{className:`text-title-small text-[var(--content-default)]`,children:t}),n?(0,X.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:n}):null,r?(0,X.jsx)(`div`,{className:`mt-1`,children:r}):null]})}function At({mode:e,onChange:t}){let{t:n}=W(`common`);return(0,X.jsx)(`div`,{className:`max-w-[280px]`,children:(0,X.jsx)(Le,{ariaLabel:n(`serviceCard.modeToggleAriaLabel`),value:e,onChange:t,items:[{value:`managed`,label:n(`serviceCard.managedLabel`)},{value:`your-own`,label:n(`serviceCard.yourOwnLabel`)}]})})}function jt({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,X.jsxs)(ut,{id:e,title:t,subtitle:n,accessory:(0,X.jsx)(At,{mode:r,onChange:i}),children:[(0,X.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,X.jsx)(`div`,{className:`mt-4`,children:a})]})}function Mt(e,t){return e===`managed`||e===`your-own`?e:t}function Nt(){let{t:e}=W(`channels`),t=we(),n=ie(),{data:r}=U({...g(),enabled:n}),o=r?.results?.[0]?.handle,c=S.use.emailRootDomain(),l=oe(),[d,f]=(0,Y.useState)(()=>l===`gated`?`your-own`:Mt(s(u,`managed`),`managed`)),[m,h]=(0,Y.useState)(()=>{let e=s(j,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),{platformAssistantId:_,error:v}=E(t,l===`full`&&d===`managed`),b=_??(v?t:null),C=U({queryKey:[`byoEmailCredential`,t,m],queryFn:async()=>{let{data:e}=await y({path:{assistant_id:t},body:{service:m,field:`api_key`},throwOnError:!0});return e},enabled:d===`your-own`||l===`gated`,staleTime:6e4,retry:x,meta:{errorContext:`byo_email_credential_check`}});(0,Y.useEffect)(()=>{C.error&&i(C.error,{context:`byo_email_credential_check`,bestEffort:!0})},[C.error]);let w=C.data?.hasSecret===!0,T=a(_e.use.name()??``),{data:O}=U({...p(),enabled:n&&l===`full`}),k=l===`full`&&d===`managed`&&b!==null&&!!O?.entitlements&&O.entitlements.managed_email!==!0,A=(0,Y.useCallback)(e=>{f(e),I(u,e)},[]),M=(0,Y.useCallback)(()=>{I(j,m),me.success(e(`emailChannelSection.saveSuccessToast`))},[m,e]),N=(0,Y.useMemo)(()=>D.find(e=>e.id===m)??D[0],[m]),P=(0,X.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,X.jsx)(at,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)(`span`,{children:(0,X.jsx)(G,{i18nKey:`emailChannelSection.setupInstructions`,ns:`channels`,values:{providerName:N.displayName,setupSkill:N.setupSkill},components:{code:(0,X.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})}),(0,X.jsxs)(Ke,{href:N.docsUrl,tone:`default`,className:`inline-flex items-center gap-1`,glyph:!1,children:[e(`emailChannelSection.openProvider`,{providerName:N.displayName}),(0,X.jsx)(rt,{className:`h-3 w-3`})]})]})]}),F=(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:e(`emailChannelSection.providerLabel`)}),(0,X.jsx)(de,{value:m,onChange:e=>{(e===`mailgun`||e===`resend`)&&h(e)},options:D.map(e=>({value:e.id,label:e.displayName}))})]}),w?(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.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,X.jsx)(lt,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,X.jsx)(`span`,{children:(0,X.jsx)(G,{i18nKey:`emailChannelSection.apiKeyConfigured`,ns:`channels`,values:{providerName:N.displayName,setupSkill:N.setupSkill},components:{code:(0,X.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})})]}),(0,X.jsxs)(Ke,{href:N.docsUrl,tone:`default`,className:`inline-flex items-center gap-1 text-body-small-default`,glyph:!1,children:[e(`emailChannelSection.openProvider`,{providerName:N.displayName}),(0,X.jsx)(rt,{className:`h-3 w-3`})]})]}):P,(0,X.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,X.jsx)(wt,{onClick:M,disabled:!1})})]});return l===`gated`?(0,X.jsx)(Ct,{id:`email`,title:e(`emailChannelSection.title`),subtitle:e(`emailChannelSection.subtitle`),children:F}):(0,X.jsx)(jt,{id:`email`,title:k?T.title:e(`emailChannelSection.title`),subtitle:k?T.subtitle:e(`emailChannelSection.subtitle`),mode:d,onModeChange:A,children:d===`managed`?(0,X.jsx)(`div`,{className:`space-y-4`,children:l===`disabled`?(0,X.jsx)(Ve,{children:e(`emailChannelSection.platformLoginNotice`)}):b===null?(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,X.jsx)(nt,{className:`h-4 w-4 animate-spin`}),e(`emailChannelSection.connecting`)]}):(0,X.jsx)(dt,{assistantId:b,assistantHandle:o,emailRootDomain:c})}):F})}function Pt({health:e}){let{Icon:t,label:n,tone:r}=Fe(e);return(0,X.jsx)(T,{tone:r,leftIcon:(0,X.jsx)(t,{}),children:n})}function Ft({address:e,health:n,pending:r,onDisconnect:i}){let{t:a}=W(`channels`);return(0,X.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,X.jsx)(Pt,{health:n}),e?(0,X.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e}):null,(0,X.jsx)(`div`,{className:`ml-auto`,children:(0,X.jsx)(t,{type:`button`,variant:`danger`,onClick:i,disabled:!i||r,children:a(r?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}function It({children:e}){let{t}=W(`channels`);return(0,X.jsxs)(o.Root,{children:[(0,X.jsx)(o.Header,{children:(0,X.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,X.jsx)(`img`,{src:l(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),(0,X.jsx)(h,{as:`span`,variant:`body-medium-default`,children:t(`slackChannelCard.setupHeading`)})]})}),(0,X.jsx)(o.Body,{children:e})]})}m.map(e=>e.riskThreshold);var Lt=[`none`,`low`];function Rt(e){if(e!==void 0)return e===`none`?`none`:`low`}var Z={none:{label:P(`none`).label,sublabel:`asks every time`,tone:`negative`,dotColor:`var(--system-negative-strong)`},low:{label:P(`low`).label,sublabel:`safe lookups`,tone:`warning`,dotColor:`var(--system-mid-strong)`},medium:{label:P(`medium`).label,sublabel:`broader lookups`,tone:`info`,dotColor:`var(--system-info-strong)`},high:{label:P(`high`).label,sublabel:`any lookup`,tone:`positive`,dotColor:`var(--system-positive-strong)`}},Q=[`trusted_contact`,`unverified_contact`,`unknown`];function zt(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 Bt(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 Vt(e,t,n){let r;for(let i of e)Bt(i,t,n)&&(i.contactType===`trusted_contact`||r===void 0)&&(r=i.threshold);return r}var Ht=`__default__`;function Ut({color:e}){return(0,X.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 shrink-0 rounded-full`,style:{backgroundColor:e}})}function Wt({tier:e,defaultTier:t,disabled:n,onTierChange:r,onReset:i,"aria-label":a}){let{t:o}=W(`channels`),s=Rt(e??t??void 0),c=Rt(t??void 0)??null,l=Lt.map(e=>({value:e,label:Z[e].label,icon:(0,X.jsx)(Ut,{color:Z[e].dotColor}),suffix:e===c?(0,X.jsx)(`span`,{className:`text-[color:var(--content-tertiary)]`,children:o(`tierPicker.defaultSuffix`)}):void 0,tooltip:Z[e].sublabel}));return l.unshift({value:Ht,label:`Default`,icon:(0,X.jsx)(Ut,{color:`transparent`}),tooltip:`follows the default level`}),(0,X.jsx)(de,{value:s??``,onChange:e=>{e===Ht||e===c?i():r(e)},options:l,placeholder:o(`tierPicker.defaultPlaceholder`),disabled:n,size:`compact`,menuAlign:`end`,"aria-label":a})}function Gt(e){return e.type===`dm`?`dm`:e.isPrivate?`private`:`public`}function Kt(e){return e.filter(e=>Gt(e)!==`dm`)}function qt(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===null||Gt(e)===n)&&(r===``||e.name.toLowerCase().includes(r))).sort((e,t)=>e.name.localeCompare(t.name))}function Jt(e){let t={public:0,private:0,dm:0};for(let n of e)t[Gt(n)]+=1;return t}function Yt(e){return e.memberCount==null?null:e.memberCount===1?`1 member`:`${e.memberCount} members`}var Xt=[{value:null,labelKey:`slackChannelList.filterAll`},{value:`public`,labelKey:`slackChannelList.filterPublic`},{value:`private`,labelKey:`slackChannelList.filterPrivate`}],Zt={public:it,private:st},Qt=100,$t=new Set;function en({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=$t,onTierChange:d,onTierReset:f}){let{t:p}=W(`channels`),[m,g]=(0,Y.useState)(``),[_,v]=(0,Y.useState)(null),y=(0,Y.useMemo)(()=>Kt(n??[]),[n]),b=(0,Y.useMemo)(()=>qt(y,m,_),[y,m,_]),x=(0,Y.useMemo)(()=>Jt(y),[y]);return(0,X.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,X.jsx)(h,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,X.jsx)(G,{i18nKey:`slackChannelList.presenceHint`,ns:`channels`,values:{handle:t??`@${e}`,assistant:e},components:{invite:(0,X.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`}),remove:(0,X.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`})}})}),r?(0,X.jsx)(h,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.loading`)}):i?(0,X.jsx)(h,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--system-negative-strong)]`,children:p(`slackChannelList.loadFailed`)}):y.length===0?(0,X.jsx)(kt,{icon:(0,X.jsx)(it,{className:`h-6 w-6`}),title:p(`slackChannelList.emptyTitle`)}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,X.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,X.jsx)(w,{type:`search`,value:m,onChange:e=>g(e.target.value),placeholder:p(`slackChannelList.searchPlaceholder`),"aria-label":p(`slackChannelList.searchAria`),leftIcon:(0,X.jsx)(ct,{className:`h-4 w-4`}),fullWidth:!0})}),(0,X.jsx)(`div`,{className:`flex items-center gap-2`,role:`group`,"aria-label":p(`slackChannelList.filterGroupAria`),children:Xt.map(({value:e,labelKey:t})=>{let n=_===e,r=e===null?y.length:x[e];return(0,X.jsx)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>v(e),className:ve(`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,X.jsx)(h,{as:`span`,variant:`body-small-lighter`,className:`py-4 text-center text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.noMatches`)}):b.length>Qt?(0,X.jsx)(`div`,{className:`h-96`,children:(0,X.jsx)(re,{items:b,computeItemKey:(e,t)=>t.id,itemContent:(e,t)=>(0,X.jsx)(tn,{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,X.jsx)(`div`,{className:`max-h-96 overflow-y-auto`,children:b.map(e=>(0,X.jsx)(tn,{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 tn({channel:e,pending:t,overridesLoading:n,overridesError:r,defaultTier:i,accessControls:a,tierOverride:o,onTierChange:s,onReset:c}){let{t:l}=W(`channels`),u=Gt(e);if(u===`dm`)return null;let d=Zt[u],f=Yt(e),p=`[&+&]:border-t [&+&]:border-[var(--border-base)]`;return a?(0,X.jsx)(ce,{className:p,leading:(0,X.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,subtitle:f??void 0,trailing:(0,X.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,X.jsx)(Wt,{tier:o,defaultTier:i,disabled:t||n||r,onTierChange:s,onReset:c,"aria-label":l(`slackChannelList.accessAria`,{channel:e.name})})})}):(0,X.jsx)(ce,{className:p,leading:(0,X.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,trailing:f==null?void 0:(0,X.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:f})})}function nn(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 rn({defaultTier:e}){let{t}=W(`channels`),n=Rt(e??void 0)??null;return(0,X.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-3`,children:(0,X.jsx)(`ul`,{className:`grid gap-x-6 gap-y-3 sm:grid-cols-2`,children:[...Lt].reverse().map(e=>{let r=Z[e];return(0,X.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(Ut,{color:r.dotColor}),(0,X.jsx)(h,{as:`span`,variant:`body-small-emphasised`,children:r.label}),e===n?(0,X.jsx)(h,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:t(`slackChannelTierLegend.defaultMarker`)}):null]}),(0,X.jsx)(h,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:nn(e)})]},e)})})})}var an=[{bucket:`channels`,icon:it,title:`Channels`,description:`Public and private channels`},{bucket:`dm`,icon:et,title:`Direct messages`,description:`One-on-one DMs`}];function on({assistantName:e,globalDefaultTier:t,bucketTiers:n,loading:r,error:i,pendingBuckets:a,onBucketChange:s,onBucketReset:c}){let{t:l}=W(`channels`);return(0,X.jsxs)(o.Root,{children:[(0,X.jsx)(o.Header,{children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[l(`slackChannelTypeDefaults.heading`),(0,X.jsx)(h,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,X.jsx)(G,{i18nKey:`slackChannelTypeDefaults.subtitle`,ns:`channels`,values:{assistant:e},components:{trustRules:(0,X.jsx)(Ze,{to:Be.settings.privacy,className:b()})}})})]})}),(0,X.jsx)(o.Body,{className:`py-1`,children:an.map(({bucket:e,icon:o,title:u,description:d})=>{let f=e===`dm`?n?.channels??t:t;return(0,X.jsx)(ce,{className:`[&+&]:border-t [&+&]:border-[var(--border-base)]`,leading:(0,X.jsx)(o,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:u,subtitle:d,trailing:(0,X.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,X.jsx)(Wt,{tier:n?.[e],defaultTier:f,disabled:r||i||a.has(e),onTierChange:t=>s(e,t),onReset:()=>c(e),"aria-label":l(`slackChannelTypeDefaults.bucketAria`,{bucket:u})})})},e)})}),(0,X.jsx)(o.Footer,{className:`p-0`,children:(0,X.jsx)(rn,{defaultTier:t})})]})}var sn=`0.11.0`;function cn(){return Ge(sn)}var ln=new Set([404,501]);function un(e){let t=k(e);return t!==void 0&&ln.has(t)}function dn(e,t,n){return Q.map(r=>({selector:{scope:`channel`,adapter:e,channelExternalId:t},contactType:r,threshold:n}))}function fn(e,t,n){return e.selector.scope===`channel`&&e.selector.adapter===t&&e.selector.channelExternalId===n}function pn(e,t){return t===`channels`?{scope:`adapter`,adapter:e}:{scope:`channel_type`,adapter:e,channelType:`dm`}}function mn(e,t,n){let r=pn(e,t);return Q.map(e=>({selector:r,contactType:e,threshold:n}))}function hn({assistantId:e,adapter:t}){let r=q(),i=cn()&&!!e,a=(0,Y.useMemo)(()=>({path:{assistant_id:e}}),[e]),o=(0,Y.useMemo)(()=>pe(a),[a]),s=(0,Y.useMemo)(()=>[`channel-permission-resolve`,e,t],[e,t]),c=U({...he(a),enabled:i}),l=c.data?.cells,u=(0,Y.useMemo)(()=>l?zt(l,t):void 0,[l,t]),d=(0,Y.useMemo)(()=>l?{channels:Vt(l,t,`channels`),dm:Vt(l,t,`dm`)}:void 0,[l,t]),f=U({queryKey:s,queryFn:async()=>{let{data:e}=await Me({...a,body:{adapter:t,contactType:`trusted_contact`},throwOnError:!0});return e.resolved?.threshold??null},enabled:i,retry:!1,staleTime:3e4}),p=(e,t)=>{let n=r.getQueryData(o),i=Date.now();return r.setQueryData(o,n=>({cells:[...(n?.cells??[]).filter(t=>!e(t)),...t.map(e=>({...e,updatedAt:i}))]})),{previous:n}},m=K({mutationFn:async({channelExternalId:e,tier:n})=>{await Promise.all(dn(t,e,n).map(e=>ue({...a,body:e,throwOnError:!0})))},onMutate:({channelExternalId:e,tier:n})=>p(n=>fn(n,t,e),dn(t,e,n)),onError:(e,t,n)=>{r.setQueryData(o,n?.previous),J(`Failed to save channel settings`)(e)},onSettled:()=>r.invalidateQueries({queryKey:o})}),h=K({mutationFn:async({channelExternalId:e})=>{await Promise.all(Q.map(r=>n({...a,body:{selector:{scope:`channel`,adapter:t,channelExternalId:e},contactType:r},throwOnError:!0})))},onMutate:({channelExternalId:e})=>p(n=>fn(n,t,e),[]),onError:(e,t,n)=>{r.setQueryData(o,n?.previous),J(`Failed to reset channel settings`)(e)},onSettled:()=>r.invalidateQueries({queryKey:o})}),g=K({mutationFn:async({bucket:e,tier:n})=>{await Promise.all(mn(t,e,n).map(e=>ue({...a,body:e,throwOnError:!0})))},onMutate:({bucket:e,tier:n})=>p(n=>Bt(n,t,e),mn(t,e,n)),onError:(e,t,n)=>{r.setQueryData(o,n?.previous),J(`Failed to save the default`)(e)},onSettled:(e,t,{bucket:n})=>{r.invalidateQueries({queryKey:o}),n===`channels`&&r.invalidateQueries({queryKey:s})}}),_=K({mutationFn:async({bucket:e})=>{let r=pn(t,e);await Promise.all(Q.map(e=>n({...a,body:{selector:r,contactType:e},throwOnError:!0})))},onMutate:({bucket:e})=>p(n=>Bt(n,t,e),[]),onError:(e,t,n)=>{r.setQueryData(o,n?.previous),J(`Failed to reset the default`)(e)},onSettled:(e,t,{bucket:n})=>{r.invalidateQueries({queryKey:o}),n===`channels`&&r.invalidateQueries({queryKey:s})}}),v=(0,Y.useMemo)(()=>{let e=new Set;return m.isPending&&m.variables&&e.add(m.variables.channelExternalId),h.isPending&&h.variables&&e.add(h.variables.channelExternalId),e},[m.isPending,m.variables,h.isPending,h.variables]),y=(0,Y.useMemo)(()=>{let e=new Set;return g.isPending&&g.variables&&e.add(g.variables.bucket),_.isPending&&_.variables&&e.add(_.variables.bucket),e},[g.isPending,g.variables,_.isPending,_.variables]);return!i||c.isError&&un(c.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:u,defaultCellTier:f.data,bucketTiers:d,pendingChannelIds:v,pendingBuckets:y,isLoading:c.isPending,isError:c.isError,onTierChange:(e,t)=>m.mutate({channelExternalId:e,tier:t}),onTierReset:e=>{u?.[e]!==void 0&&h.mutate({channelExternalId:e})},onBucketChange:(e,t)=>g.mutate({bucket:e,tier:t}),onBucketReset:e=>{d?.[e]!==void 0&&_.mutate({bucket:e})}}}function gn({assistantId:e,assistantDisplayName:t,slackHandle:n}){let{t:r}=W(`channels`),i=U({...M(e),enabled:!!e,select:e=>e.channels}),a=hn({assistantId:e,adapter:`slack`}),s=U({queryKey:[`thresholds`,e],queryFn:()=>F(e),enabled:a.supported&&!!e,staleTime:3e4}).data?.interactive??null,c=a.defaultCellTier===void 0?null:a.defaultCellTier??s,l=(0,X.jsx)(en,{assistantDisplayName:t,slackHandle:n,accessControlsSupported:a.supported,defaultTier:c,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,X.jsx)(o.Root,{noPadding:!0,clipContents:!0,children:l}):(0,X.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[a.isError?(0,X.jsx)(Ue,{tone:`error`,children:r(`slackChannelSection.overridesLoadFailed`)}):null,(0,X.jsx)(on,{assistantName:t,globalDefaultTier:s,bucketTiers:a.bucketTiers,loading:a.isLoading,error:a.isError,pendingBuckets:a.pendingBuckets,onBucketChange:a.onBucketChange,onBucketReset:a.onBucketReset}),(0,X.jsx)(o.Root,{noPadding:!0,clipContents:!0,children:(0,X.jsx)(H.Root,{type:`single`,collapsible:!0,children:(0,X.jsxs)(H.Item,{value:`per-channel-overrides`,children:[(0,X.jsxs)(H.Trigger,{className:`group justify-between gap-2 px-4 py-3`,children:[(0,X.jsx)(h,{as:`span`,variant:`body-small-emphasised`,children:r(`slackChannelSection.perChannelOverrides`)}),(0,X.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,X.jsx)(H.Content,{className:`border-[var(--border-base)] data-[state=open]:border-t`,children:l})]})})})]})}function _n({slackHandle:e,health:n,disconnectPending:r=!1,onDisconnect:i,children:a}){let{t:s}=W(`channels`);return(0,X.jsxs)(o.Root,{children:[(0,X.jsx)(o.Header,{children:(0,X.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,X.jsx)(`img`,{src:l(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),e?(0,X.jsx)(h,{as:`span`,variant:`body-medium-default`,children:e}):null,(0,X.jsx)(Pt,{health:n}),(0,X.jsx)(`div`,{className:`ml-auto`,children:(0,X.jsx)(t,{type:`button`,variant:`ghost`,onClick:i,disabled:!i||r,children:s(r?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}),(0,X.jsx)(o.Body,{children:a})]})}function vn({threadMode:e,threadModePending:t=!1,onThreadModeChange:n}){let{t:r}=W(`channels`);return(0,X.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,X.jsx)(h,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:r(`slackThreadBehavior.heading`)}),(0,X.jsxs)(N,{value:e??`mention_then_thread`,onValueChange:e=>n?.(e),disabled:t||!n,"aria-label":r(`slackThreadBehavior.selectAria`),children:[(0,X.jsx)(Re,{value:`mention_only`,label:r(`slackThreadBehavior.mentionsOnly`),helperText:r(`slackThreadBehavior.mentionsOnlyHelp`)}),(0,X.jsx)(Re,{value:`mention_then_thread`,label:r(`slackThreadBehavior.followThreads`),helperText:r(`slackThreadBehavior.followThreadsHelp`)})]})]})}function yn({onSave:e}){let{t:n}=W(`channels`),[r,i]=(0,Y.useState)(``),[a,o]=(0,Y.useState)(``),[s,c]=(0,Y.useState)(!1),[l,u]=(0,Y.useState)(null),d=r.trim().length>0&&a.trim().length>0&&!s;return(0,X.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,X.jsx)(w,{label:n(`twilioCredentialEntry.accountSid`),type:`text`,value:r,onChange:e=>i(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:s,fullWidth:!0}),(0,X.jsx)(w,{label:n(`twilioCredentialEntry.authToken`),type:`password`,value:a,onChange:e=>o(e.target.value),placeholder:n(`twilioCredentialEntry.authTokenPlaceholder`),disabled:s,fullWidth:!0}),l?(0,X.jsx)(`p`,{className:`text-label-small-default`,style:{color:`var(--system-negative-strong)`},children:l}):null,(0,X.jsx)(`div`,{children:(0,X.jsx)(t,{type:`button`,onClick:async()=>{if(!(!e||!d)){c(!0),u(null);try{await e(r.trim(),a.trim()),i(``),o(``)}catch(e){u(e instanceof Error?e.message:`Failed to save`)}finally{c(!1)}}},disabled:!d,children:n(s?`twilioCredentialEntry.saving`:`twilioCredentialEntry.save`)})})]})}function bn({channel:e,assistantId:n,assistantName:r,assistantDisplayName:i,pending:a,initialManualEntry:o=!1,onSetup:s,onDisconnect:c,onSaveTelegramToken:l,telegramSaveStatus:u,telegramSaveError:p,onSaveDiscordToken:m,discordSaveStatus:h,discordSaveError:g=null,discordInviteUrl:_,onSaveSlackConfig:v,slackSaveStatus:y,slackSaveError:b,slackThreadMode:x,slackThreadModePending:S=!1,onSlackThreadModeChange:w,onSaveTwilioCredentials:T,policy:E,policySaving:D=!1,policyLoading:O=!1,policyError:k=!1,onPolicyChange:A}){let{t:j}=W(`channels`),M=e.status===`incomplete`,[N,P]=(0,Y.useState)(o),F=e.key===`discord`&&N&&h===`success`,I=e.configured&&!F;if(e.key===`email`)return(0,X.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,X.jsx)(Nt,{}),I&&A?(0,X.jsx)(ut,{children:(0,X.jsx)(mt,{assistantDisplayName:i,policy:E,saving:D,loading:O,error:k,onChange:A})}):null]});if(e.key===`slack`)return(0,X.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[I?(0,X.jsx)(_n,{slackHandle:e.address,health:e.health,disconnectPending:a,onDisconnect:c,children:(0,X.jsx)(vn,{threadMode:x,threadModePending:S,onThreadModeChange:w})}):(0,X.jsx)(It,{children:(0,X.jsx)(C,{assistantId:n,assistantName:r,onSave:v,saveStatus:y,saveError:b})}),I?(0,X.jsx)(gn,{assistantId:n,assistantDisplayName:i,slackHandle:e.address}):null]});let L=le[e.key];return(0,X.jsx)(`div`,{className:`flex flex-col gap-4`,children:I?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Ft,{health:e.health,address:e.address,pending:a,onDisconnect:c}),L.hasTrustFloorControl&&A?(0,X.jsx)(mt,{assistantDisplayName:i,policy:E,saving:D,loading:O,error:k,onChange:A}):null]}):N&&e.canManualEntry&&L.credentialForm?(e=>{switch(e){case`slack-wizard`:return null;case`telegram-token`:return(0,X.jsx)(f,{assistantId:n,assistantName:r,saveStatus:u,saveError:p,onSave:l});case`discord-token`:return(0,X.jsx)(d,{assistantId:n,assistantName:r,saveStatus:h,saveError:g,onSave:m,..._?{inviteUrl:_}:{}});case`twilio-credentials`:return(0,X.jsx)(yn,{onSave:T});default:return e}})(L.credentialForm):(0,X.jsx)(kt,{icon:(0,X.jsx)(Te,{channelId:e.key,className:`h-6 w-6`}),title:j(M?`channelPanel.incompleteTitle`:`channelPanel.disconnectedTitle`,{channel:ye(e.key)}),description:M?e.warning??j(`channelPanel.incompleteDescription`,{channel:ye(e.key)}):L.disconnectedPitchKey?j(L.disconnectedPitchKey,{assistant:i}):void 0,action:(0,X.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,X.jsx)(t,{type:`button`,variant:`outlined`,onClick:s,disabled:!s||a,children:j(a?`channelPanel.opening`:M?`channelPanel.finishSetup`:`channelPanel.setUp`)}),e.canManualEntry&&L.credentialForm?(0,X.jsx)(t,{type:`button`,variant:`link`,onClick:()=>P(!0),children:j(`channelPanel.connectManually`)}):null]})})})}var xn=new Set([404,501]),Sn=new Set([401,403]);function Cn(e){let t=k(e);return t!==void 0&&xn.has(t)?`unsupported`:t!==void 0&&Sn.has(t)?`forbidden`:`unreadable`}function wn(e,t,n){let r=e===`unreadable`?t:n;return r?r instanceof Error&&r.message?r.message:`Something went wrong`:null}function Tn(e,t){let n=q(),r={assistant_id:e},i=U({...fe({path:r}),enabled:!!e,retry:We}),a=()=>n.invalidateQueries({queryKey:Ee({path:r})}),o=K({...se(),onSuccess:a}),s=K({...Se(),onSuccess:a}),c=i.data?.sources?.find(e=>e.source===t),l;l=i.isError?Cn(i.error):i.isPending?`loading`:c?c.state:`none`;let u=wn(l,i.error,o.error??s.error);return{status:l,paths:c?.routes?.map(e=>({path:e.publicPath,approvalGoverned:e.signer!==`vellum`,deliversInbound:e.deliversInbound===!0}))??[],deciding:o.isPending||s.isPending,approve:()=>{c?.digest&&o.mutate({path:{...r,source:t},body:{digest:c.digest}})},revoke:()=>s.mutate({path:{...r,source:t}}),error:u}}var En=`plugin`;function Dn(e){let t=q(),n=pt(),r=(0,Y.useMemo)(()=>({path:{assistant_id:e}}),[e]),i=(0,Y.useMemo)(()=>Ie(r),[r]),a=U({...be(r),enabled:n&&!!e,select:ft}),o=K({mutationFn:t=>ht(e,En,t),onSuccess:()=>t.invalidateQueries({queryKey:i}),onError:J(`Failed to save channel policy`)}),s=(0,Y.useCallback)(e=>{o.mutate(e)},[o]);return n?{policy:a.data?.find(e=>e.channelType===En)?.policy,isLoading:a.isPending,isError:a.isError,isSaving:o.isPending,onChange:s}:{policy:void 0,isLoading:!1,isError:!1,isSaving:!1,onChange:void 0}}function On({channel:e,assistantId:n,assistantDisplayName:r}){let{t:i}=W(`channels`),a=Ye(),o=Tn(n,e.plugin),s=Dn(n);return(0,X.jsxs)(`div`,{className:`relative flex flex-col items-center gap-3 py-10 text-center`,children:[(0,X.jsx)(t,{className:`absolute top-0 right-0`,variant:`ghost`,size:`compact`,iconOnly:(0,X.jsx)(tt,{}),tooltip:i(`pluginChannelPanel.navigateToPluginPage`),"aria-label":i(`pluginChannelPanel.navigateToPluginPage`),onClick:()=>a(`/assistant/plugins/${e.plugin}`)}),(0,X.jsx)(Ae,{icon:e.icon,className:`h-8 w-8 text-[color:var(--content-secondary)]`}),(0,X.jsx)(`h3`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e.label}),e.description?(0,X.jsx)(`p`,{className:`max-w-[420px] text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e.description}):null,(0,X.jsx)(kn,{channel:e,ingress:o}),s.onChange?(0,X.jsx)(`div`,{className:`w-full max-w-[420px] text-left`,children:(0,X.jsx)(mt,{assistantDisplayName:r,policy:s.policy,saving:s.isSaving,loading:s.isLoading,error:s.isError,onChange:s.onChange})}):null]})}function kn({channel:e,ingress:t}){let{t:n}=W(`channels`);switch(t.status){case`loading`:return(0,X.jsx)($,{children:n(`pluginChannelPanel.ingressLoading`,{channel:e.label})});case`unsupported`:return(0,X.jsx)($,{children:n(`pluginChannelPanel.ingressUnsupported`)});case`forbidden`:return(0,X.jsx)($,{children:n(`pluginChannelPanel.ingressForbidden`)});case`unreadable`:return(0,X.jsxs)($,{children:[n(`pluginChannelPanel.ingressUnreadable`,{channel:e.label}),t.error?` ${t.error}`:``]});case`none`:return(0,X.jsx)($,{children:n(`pluginChannelPanel.ingressNone`,{channel:e.label})});case`pending`:case`approved`:return(0,X.jsx)(An,{ingress:t})}}function An({ingress:e}){let{t:n}=W(`channels`),r=e.status===`approved`;return(0,X.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,X.jsx)(T,{tone:r?`positive`:`neutral`,children:n(r?`pluginChannelPanel.ingressApprovedTag`:`pluginChannelPanel.ingressPendingTag`)}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(t,{onClick:r?e.revoke:e.approve,disabled:e.deciding,variant:r?`outlined`:`primary`,children:n(r?`pluginChannelPanel.revokeChannel`:`pluginChannelPanel.approveChannel`)}),(0,X.jsx)(Pe,{content:n(`pluginChannelPanel.approveChannelInfo`),children:(0,X.jsx)(`span`,{tabIndex:0,className:`inline-flex cursor-default p-0.5 text-[color:var(--content-secondary)]`,"aria-label":n(`pluginChannelPanel.approveChannelInfo`),children:(0,X.jsx)(at,{className:`h-4 w-4`,"aria-hidden":`true`})})})]}),e.error?(0,X.jsx)(`p`,{className:`max-w-[420px] text-body-small-default`,style:{color:`var(--system-negative-strong)`},children:e.error}):null]})}function $({children:e}){return(0,X.jsx)(`p`,{className:`max-w-[420px] text-body-small-default`,style:{color:`var(--content-secondary)`},children:e})}function jn({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:S,slackSaveError:C,onSlackThreadModeChange:w,onSaveTwilioCredentials:T,initialChannel:E=null}){let{t:D}=W(`channels`),{selected:O,select:k}=Tt(),[A,j]=(0,Y.useState)(null),{paneRef:M,hasRoomForList:N,drawerOpen:P,openDrawer:F,closeDrawer:I}=St(),[L]=(0,Y.useState)(E);(0,Y.useEffect)(()=>{L&&k(L)},[L,k]);let ee=je(t),R=A?le[A]:null,te=e=>{k(e),I()},z=r.find(e=>e.key===O),B=z?void 0:n.find(e=>e.key===O)??n[0];if(!B&&!z)return null;let V=z?z.key:B.key,ne=z?(0,X.jsx)(On,{channel:z,assistantId:e,assistantDisplayName:ee},z.key):(0,X.jsx)(bn,{channel:B,assistantId:e,assistantName:t,assistantDisplayName:ee,pending:i===B.key,initialManualEntry:L===B.key,onSetup:f?()=>f(B.key,B.status===`incomplete`):void 0,onDisconnect:p&&B.canDisconnect?()=>j(B.key):void 0,onSaveTelegramToken:m,telegramSaveStatus:h,onSaveDiscordToken:g,discordSaveStatus:_,discordSaveError:v,...y?{discordInviteUrl:y}:{},telegramSaveError:b,onSaveSlackConfig:x,slackSaveStatus:S,slackSaveError:C,slackThreadMode:a,slackThreadModePending:o,onSlackThreadModeChange:w,onSaveTwilioCredentials:T,policy:s?.[B.key],policySaving:c===B.key,policyLoading:l,policyError:u,onPolicyChange:d?e=>d(B.key,e):void 0},B.key);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{ref:M,className:`flex min-h-0 flex-1 overflow-hidden ${N?`flex-row gap-6`:`flex-col gap-4`}`,children:[N?(0,X.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,X.jsx)(Et,{channels:n,pluginChannels:r,selectedKey:V,onSelect:te})}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`flex items-center`,children:(0,X.jsx)(_t,{onClick:F})}),(0,X.jsx)(vt,{open:P,onClose:I,title:D(`assistantChannelsList.drawerTitle`),children:(0,X.jsx)(Et,{channels:n,pluginChannels:r,selectedKey:V,onSelect:te})})]}),(0,X.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:V===`slack`||V===`email`?ne:(0,X.jsx)(ut,{children:ne})})]}),(0,X.jsx)(xe,{open:A!==null,title:D(`assistantChannelsList.disconnectTitle`,{channel:R?D(R.labelKey):``}),message:R?.disconnectMessageKey?D(R.disconnectMessageKey):``,confirmLabel:D(`assistantChannelsList.disconnectConfirm`),destructive:!0,onConfirm:()=>{A&&p&&p(A),j(null)},onCancel:()=>j(null)})]})}var Mn=`plugin:`;function Nn(e){let{data:t}=U({...De({path:{assistant_id:e}}),enabled:!!e,select:e=>e.channels.filter(e=>e.source?.startsWith(Mn)).map(e=>({plugin:e.id,key:r(e.id),label:e.label,description:e.subtitle,icon:e.icon}))});return t??[]}var Pn=`0.11.5-dev.202608242314.38e0513`;function Fn(){return Ge(Pn)}var In=`0.11.5-dev.202608252008.65007aa`;function Ln(){return Ge(In)}var Rn={slack:_,telegram:z,discord:ke,email:void 0,phone:R},zn={slack:`useAssistantChannels.setupPrompt.slack`,telegram:`useAssistantChannels.setupPrompt.telegram`,discord:`useAssistantChannels.setupPrompt.discord`,email:`useAssistantChannels.setupPrompt.email`,phone:`useAssistantChannels.setupPrompt.phone`},Bn={slack:`useAssistantChannels.finishPrompt.slack`,telegram:`useAssistantChannels.finishPrompt.telegram`,discord:`useAssistantChannels.finishPrompt.discord`,email:`useAssistantChannels.finishPrompt.email`,phone:`useAssistantChannels.finishPrompt.phone`},Vn=15e3;function Hn({assistantId:e,onStartSetupConversation:t}){let{t:n}=W(`common`),r=q(),i=(0,Y.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,Y.useMemo)(()=>ge(i),[i]),o=Fn(),s=Ln(),l=(0,Y.useMemo)(()=>Un(o),[o]),u=U({...Ce(i),enabled:!!e,refetchInterval:Vn,select:e=>e.snapshots}),d=(0,Y.useMemo)(()=>Wn(u.data??[],l,s),[u.data,l,s]),f=d.some(e=>e.key===`slack`&&e.configured),p=U({...te(i),enabled:f,select:e=>e.threadMode}),m=gt(e),h=(0,Y.useCallback)(()=>r.invalidateQueries({queryKey:a}),[r,a]),g=K({mutationFn:async t=>{let n=Rn[t];if(!n)throw Error(`No route clears ${t} credentials.`);await n({path:{assistant_id:e},throwOnError:!0})},onSettled:(t,n,i)=>{h(),i===`slack`&&c(r,e)}}),_=ae({assistantId:e}),v=ze({assistantId:e}),y=U({...Oe(i),enabled:!!e&&s}),b=A({assistantId:e}),x=He({assistantId:e}),S=K({...ne(),onSuccess:()=>{r.invalidateQueries({queryKey:ee(i)})}}),C=v.mutate,w=(0,Y.useCallback)(e=>{C(e)},[C]),T=_.mutate,E=(0,Y.useCallback)(e=>{T(e)},[T]),D=b.mutate,O=(0,Y.useCallback)((e,t)=>{D({botToken:e,appToken:t})},[D]),k=S.mutate,j=(0,Y.useCallback)(t=>{k({path:{assistant_id:e},body:{threadMode:t}})},[k,e]),M=x.mutateAsync,N=(0,Y.useCallback)(async(e,t)=>{await M({accountSid:e,authToken:t})},[M]),P=(0,Y.useCallback)((e,r=!1)=>{t&&t(n(r?Bn[e]:zn[e]))},[t,n]),F=g.mutate,I=(0,Y.useCallback)(e=>{F(e)},[F]);return{channels:d,pendingChannelKey:g.isPending?g.variables??null:null,slackThreadMode:p.data,slackThreadModePending:S.isPending,channelPolicies:m.policies,policySavingKey:m.savingKey,policiesLoading:m.isLoading,policiesError:m.isError,onChannelPolicyChange:m.onChange,onSetup:t?P:void 0,onDisconnect:I,onSaveTelegramToken:E,telegramSaveStatus:_.status,telegramSaveError:_.error?.message??null,onSaveDiscordToken:w,discordSaveStatus:v.status,discordSaveError:v.error?.message??null,discordInviteUrl:v.data?.data?.inviteUrl??y.data?.inviteUrl,onSaveSlackConfig:O,slackSaveStatus:b.status,slackSaveError:b.error?.message??null,onSlackThreadModeChange:j,onSaveTwilioCredentials:N}}function Un(e){return e?L:L.filter(e=>e!==`discord`)}function Wn(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:Gn(t),configured:V(t),canDisconnect:Rn[e]!==void 0&&(e!==`discord`||n),canManualEntry:le[e].credentialForm!==void 0&&(e!==`discord`||n),health:t?.health,address:t?.channelHandle??void 0}})}function Gn(e){return e?e.ready?`ready`:e.setupStatus===`not_configured`?`not_configured`:`incomplete`:`not_configured`}function Kn(){let[e,t]=qe(),n=e.get(`setup`),r=n&&O(n)?n:null;return(0,Y.useEffect)(()=>{r&&t(e=>(e.delete(`setup`),e),{replace:!0})},[r,t]),r}function qn({assistantId:e,onStartSetupConversation:t}){let n=B.use.a2aChannel(),r=_e.use.name(),i=Kn(),a=xt(e),o=je(r),s=Hn({assistantId:e,onStartSetupConversation:t});return(0,X.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-6 overflow-hidden`,children:[(0,X.jsx)(jn,{assistantId:e,assistantName:o,initialChannel:i,pluginChannels:Nn(e),...s}),n?(0,X.jsx)(yt,{onClick:a.open}):null,(0,X.jsx)(bt,{open:a.isOpen,assistantId:e,onClose:a.close})]})}function Jn(){let e=Ye(),t=we();return(0,X.jsx)(qn,{assistantId:t,onStartSetupConversation:t=>{Ne(e,{prompt:t})}},t)}export{Jn as ChannelsPageRoute};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var e={drawerTitle:`頻道`,disconnectTitle:`中斷 {channel} 的連線?`,disconnectConfirm:`中斷連線`},t={pluginChannelAria:`{channel},來自外掛程式`},n={connected:`已連線`,reconnecting:`正在重新連線…`,statusUnavailable:`狀態無法使用`,disconnecting:`正在中斷連線…`,disconnect:`中斷連線`},r={setupHeading:`Slack 設定`},i={incompleteTitle:`{channel} 尚未正常運作`,disconnectedTitle:`{channel} 尚未連線`,incompleteDescription:`{channel} 已設定,但尚未傳送訊息。您的助理可以從設定中斷處繼續,並告訴您問題所在。`,opening:`正在開啟…`,finishSetup:`使用您的助理完成設定`,setUp:`設定`,connectManually:`或手動連線`},a={navigateToPluginPage:`前往外掛程式頁面`,ingressLoading:`正在檢查誰可以存取 {channel}…`,ingressUnsupported:`此助理的閘道未回報入口核准,因此此處無需決定。`,ingressForbidden:`只有此助理的監護人才能查看或變更入口核准。`,ingressUnreadable:`無法讀取 {channel} 的入口核准。`,ingressNone:`閘道未發現 {channel} 的入口宣告,因此尚未有任何可核准的內容。`,ingressApprovedTag:`入口已核准`,ingressPendingTag:`入口等待核准`,approveChannel:`核准頻道`,revokeChannel:`撤銷頻道`,approveChannelInfo:`核准此頻道表示您將開放您的助理存取權限,以處理此頻道背後提供者傳送的特定請求`},o={heading:`誰可以傳送訊息給 {assistant}`,loading:`正在載入…`,loadFailed:`無法載入此設定。請嘗試重新開啟此頁面。`,selectAria:`誰可以傳送訊息給 {assistant}`,trustedContactsNotice
|
|
1
|
+
var e={drawerTitle:`頻道`,disconnectTitle:`中斷 {channel} 的連線?`,disconnectConfirm:`中斷連線`},t={pluginChannelAria:`{channel},來自外掛程式`},n={connected:`已連線`,reconnecting:`正在重新連線…`,statusUnavailable:`狀態無法使用`,disconnecting:`正在中斷連線…`,disconnect:`中斷連線`},r={setupHeading:`Slack 設定`},i={incompleteTitle:`{channel} 尚未正常運作`,disconnectedTitle:`{channel} 尚未連線`,incompleteDescription:`{channel} 已設定,但尚未傳送訊息。您的助理可以從設定中斷處繼續,並告訴您問題所在。`,opening:`正在開啟…`,finishSetup:`使用您的助理完成設定`,setUp:`設定`,connectManually:`或手動連線`},a={navigateToPluginPage:`前往外掛程式頁面`,ingressLoading:`正在檢查誰可以存取 {channel}…`,ingressUnsupported:`此助理的閘道未回報入口核准,因此此處無需決定。`,ingressForbidden:`只有此助理的監護人才能查看或變更入口核准。`,ingressUnreadable:`無法讀取 {channel} 的入口核准。`,ingressNone:`閘道未發現 {channel} 的入口宣告,因此尚未有任何可核准的內容。`,ingressApprovedTag:`入口已核准`,ingressPendingTag:`入口等待核准`,approveChannel:`核准頻道`,revokeChannel:`撤銷頻道`,approveChannelInfo:`核准此頻道表示您將開放您的助理存取權限,以處理此頻道背後提供者傳送的特定請求`},o={heading:`誰可以傳送訊息給 {assistant}`,loading:`正在載入…`,loadFailed:`無法載入此設定。請嘗試重新開啟此頁面。`,selectAria:`誰可以傳送訊息給 {assistant}`,trustedContactsNotice:`其他任何人(即使是共享頻道中的隊友)都會被要求先驗證,並且您會收到通知。您可以在「聯絡人」中提前驗證人員。`,confirmFallback:`確認`,noOne:{label:`無人`,description:`無人可以在此頻道傳送訊息給 {assistant}:包括您在內的所有訊息都將被封鎖。`,confirmTitle:`封鎖所有訊息?`,confirmMessage:`將此頻道設定為「無人」將嚴格拒絕所有傳入訊息,包括您傳送的訊息。
|
|
2
2
|
|
|
3
|
-
您可以隨時撤銷此操作。`,confirmAction:`封鎖所有`},guardianOnly:{label:`僅限您`,description:`只有您可以傳送訊息給 {assistant}。其他所有人將被拒絕。`},trustedContacts:{label:`已驗證聯絡人`,description
|
|
3
|
+
您可以隨時撤銷此操作。`,confirmAction:`封鎖所有`},guardianOnly:{label:`僅限您`,description:`只有您可以傳送訊息給 {assistant}。其他所有人將被拒絕。`},trustedContacts:{label:`已驗證聯絡人`,description:`您和您已驗證的聯絡人可以傳送訊息給 {assistant}。`},anyContact:{label:`任何聯絡人`,description:`您和任何已知聯絡人都可以傳送訊息給 {assistant},包括您尚未驗證的聯絡人。陌生人將被要求先驗證。`,confirmTitle:`允許任何聯絡人?`,confirmMessage:`「任何聯絡人」允許此頻道中的所有符合條件的聯絡人(包括待處理、未驗證的聯絡人),而不僅僅是您已驗證的聯絡人。
|
|
4
4
|
|
|
5
5
|
最適合僅由您已信任的人員組成的頻道。`,confirmAction:`允許任何聯絡人`},strangers:{label:`陌生人`,description:`任何人都可以傳送訊息給 {assistant},包括完全陌生的使用者。`,confirmTitle:`允許陌生人?`,confirmMessage:`您確定要允許陌生人透過此頻道聯絡您的助理嗎?
|
|
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:`正在完成設定…`,
|
|
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:`正在完成設定…`,copiedAddress:`已複製`,copyAddressAriaLabel:`複製地址`,copyAddressFailed:`無法複製地址。`,domainLabel:`網域`,domainReleaseFailedToast:`釋出網域失敗。`,domainReleasedToast:`網域已釋出。`,emailRemoveFailedToast:`移除電子郵件地址失敗。`,emailRemovedToast:`電子郵件地址已移除。`,inboxSetupBody:`助理的地址在助理收件匣中建立,其郵件也在那裡閱讀。開啟收件匣以選擇地址。`,inboxSetupButton:`開啟助理收件匣`,inboxSetupTitle:`在助理收件匣中設定電子郵件`,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:`重試`,subscriptionWarningBody:`我們無法連線至帳務服務。以下表單假設您的組織已啟用受管理的電子郵件。如果未啟用,註冊網域將會失敗。`,subscriptionWarningTitle:`無法驗證訂閱狀態`,usageSummary:`今日已傳送 {sent} / {limit} · 已接收 {received}`},_={title:`郵件設定`,description:`助理的地址以及誰可以傳訊息給它。`},v={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,emailSettingsModal:_};export{e as assistantChannelsList,t as channelAdapterList,m as channelMeta,i as channelPanel,o as channelTrustFloor,n as connectionCard,v as default,h as emailChannelSection,g as emailManagedContent,_ as emailSettingsModal,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,5 @@
|
|
|
1
|
+
var e={close:`Закрыть все чаты`,openChat:`Перейти к чату`,doneLabel:`{title}, завершён`,unread:`Не прочитано`,running:`Выполняется`,needsAttention:`Требует внимания`,runningCount:`{count, plural, one {# задача выполняется} few {# задачи выполняются} many {# задач выполняются} other {# задачи выполняются}}`},t={heading:`{count, plural, one {Вопрос} few {Вопроса} many {Вопросов} other {Вопроса}}`},n={showValue:`Показать значение`,hideValue:`Скрыть значение`},r={saveFailed:`Не удалось сохранить документ. Ваше сообщение сохранено здесь. Попробуйте отправить ещё раз.`,viewConversation:`Открыть беседу`,reopenDocument:`Открыть документ`},i={title:`Подключить Claude Code`,dismissButton:`Скрыть`,subtitleIdle:`Использование подписки Claude Code`,subtitleStarting:`Запускаем вход...`,subtitleWaiting:`Ждём вход в Claude...`,subtitleExchanging:`Завершаем вход...`,subtitleConnected:`Claude Code подключён, продолжаем...`,subtitlePaste:`Вставка ключа из открывшейся вкладки`,errorFallback:`Не удалось подключить Claude. Повторите попытку.`,connectButton:`Подключить`,saveButton:`Сохранить`,pastePlaceholder:`Ключ`},a={modelLabel:`Модель`},o={title:`Сведения о действии`},s={backAria:`Назад ко всем шагам`,backTooltip:`Все шаги`,screenshotAria:`Открыть снимок экрана: {activity}`,screenshotFallbackAria:`Открыть снимок экрана компьютера`,screenshotFallbackTitle:`Снимок экрана компьютера`,screenshotTitle:`Снимок экрана: {activity}`},c={unavailable:`Последний снимок экрана недоступен.`,unavailableShowingPrevious:`Последний снимок экрана недоступен. Показан предыдущий снимок.`,updating:`Обновление снимка экрана...`},l={title:`Добавить в диалог`,closeAriaLabel:`Закрыть`,camera:`Камера`,gallery:`Фотоплёнка`,files:`Файлы`,pickFailed:`Не удалось добавить этот файл. Повторите попытку.`,tooLarge:`{count, plural, one {# файл слишком большой, чтобы прикрепить} few {# файла слишком большие, чтобы прикрепить} many {# файлов слишком большие, чтобы прикрепить} other {# файла слишком большие, чтобы прикрепить}}`,pickFull:`{count, plural, one {# файл не поместился в эту пачку. Добавление отдельно.} few {# файла не поместились в эту пачку. Добавление отдельно.} many {# файлов не поместились в эту пачку. Добавление отдельно.} other {# файла не поместились в эту пачку. Добавление отдельно.}}`},u={allowAndCreateRule:`Разрешить и создать правило`,trigger:`Другие варианты разрешения`},d={appExported:`Приложение экспортировано`,shareFailed:`Не удалось поделиться приложением`},f={click:`Нажатие`,type:`Ввод текста`,keyPress:`Нажатие клавиши`,scroll:`Прокрутка`,drag:`Перетаскивание`,hover:`Наведение`,observe:`Просмотр`,navigate:`Навигация`,terminal:`Выполнение команды`},p={mode:{computerUse:`Сеанс работы с компьютером`,browser:`Сеанс браузера`,liveVision:`Сеанс видеопросмотра`,ambient:`Фоновый сеанс`},durationSeconds:`{count, plural, one {# сек} few {# сек} many {# сек} other {# сек}}`,durationMinutes:`{count, plural, one {# мин} few {# мин} many {# мин} other {# мин}}`,working:`Работаю`,workingWithDuration:`Работаю · {duration}`,waiting:`Ожидание`,waitingWithDuration:`Ожидание · {duration}`,finishing:`Завершение`,finishingWithDuration:`Завершение · {duration}`,completedWithDurationAndEnd:`{duration} · Завершено в {endTime}`,completedWithDuration:`{duration}`,completedWithEnd:`Завершено в {endTime}`,interrupted:`Прервано`,interruptedWithDurationAndEnd:`Прервано · {duration} · Завершено в {endTime}`,interruptedWithDurationAndLastActivity:`Прервано · {duration} · Последняя активность в {lastActivityTime}`,interruptedWithLastActivity:`Прервано · Последняя активность в {lastActivityTime}`,interruptedWithEnd:`Прервано · Завершено в {endTime}`,disconnected:`Соединение потеряно`,disconnectedWithDurationAndLastActivity:`Соединение потеряно · {duration} · Последняя активность в {lastActivityTime}`,disconnectedWithLastActivity:`Соединение потеряно · Последняя активность в {lastActivityTime}`,timingUnavailable:`Данные о времени недоступны`},m={fitView:`Вписать`,panView:`Обзор`,controlView:`Управление`,panHint:`Перетаскивайте для обзора. Коснитесь для щелчка.`,hideAria:`Скрыть виртуальный рабочий стол`,closeAria:`Закрыть предпросмотр виртуального рабочего стола`,moveAria:`Переместить предпросмотр виртуального рабочего стола (клавиши со стрелками)`,resizeAria:`Изменить размер предпросмотра виртуального рабочего стола (клавиши со стрелками)`,expandAria:`Развернуть виртуальный рабочий стол`,busy:`Виртуальный рабочий стол занят другим пользователем.`,connecting:`Подключение к виртуальному рабочему столу…`,failed:`Не удалось запустить виртуальный рабочий стол.`,lost:`Соединение с виртуальным рабочим столом потеряно.`,openAria:`Открыть виртуальный рабочий стол {name}`,openUnnamedAria:`Открыть виртуальный рабочий стол`,reconnectButton:`Переподключиться`,title:`Рабочий стол`,unavailable:`Виртуальный рабочий стол недоступен для этого ассистента.`,checkingSetup:`Проверка виртуального рабочего стола…`,setupRequestFailed:`Не удалось проверить рабочий стол. Подключитесь заново.`},h={bulkActionMembersFailed:`Не удалось загрузить все диалоги в этом разделе. Повторите попытку.`},g={dismissLabel:`Скрыть экран сна`,sleeping:`Ваш ассистент спит`,sleepingNamed:`{name} спит`,waking:`Ваш ассистент просыпается…`,wakingNamed:`{name} просыпается…`,woke:`Ваш ассистент только что проснулся`,wokeNamed:`{name} только что проснулся`},_={collapse:`Скрыть ассистентов`,currentAssistant:`{name}, текущий ассистент`,expand:`Сменить ассистента`,switchFailed:`Не удалось сменить ассистента. Повторите попытку.`,switchTo:`Переключиться на {name}`,unnamedAssistant:`Безымянный ассистент`},v={legacyUnavailable:`Предпросмотр недоступен. Содержимое файла не сохранилось в истории чата.`,loadFailed:`Не удалось загрузить предпросмотр.`,pdfLoadFailed:`Не удалось показать этот PDF`},y={cancelUpload:`Отменить загрузку {filename}`,preview:`Предпросмотр {filename}`,remove:`Удалить {filename}`,uploading:`Загрузка {filename}`},b={description:`Где {count, plural, one {# точка разрыва кэша попала} few {# точки разрыва кэша попали} many {# точек разрыва кэша попали} other {# точки разрыва кэша попали}} в префикс этого запроса и какие сегменты прочитали, а какие создали заново.`,estimatedTokens:`≈ {count} токенов`,fullMissBody:`В этом ходе каждый сегмент создали заново. Сравнение с предыдущим ходом в разнице кэша выше, чтобы найти изменившийся блок.`,fullMissTitle:`Полный промах кэша`,loadError:`Не удалось загрузить тело запроса, чтобы нанести точки разрыва кэша.`,loading:`Загружаем тело запроса, чтобы нанести точки разрыва кэша…`,noBreakpoints:`В этом запросе не было точек разрыва кэша: кэш промпта для вызова был выключен.`,splitEstimatedNote:` Разделение «прочитано / создано» считается по размеру сегмента; провайдер сообщает только итоги.`,statusCreated:`Создано заново`,statusRead:`Прочитано из кэша`,statusUnknown:`В кэше`,title:`Точки разрыва кэша`,tokenEstimateNote:`Число токенов оценивается по длине текста.`},x={changedLabel:`Изменено`,changedMessageFallback:`сообщение`,chipMessages:`Сообщения`,chipModel:`Модель`,chipSettings:`Настройки`,chipSystem:`Система`,chipTools:`Инструменты`,currentModelFallback:`эта модель`,description:`Что изменилось с запроса прошлого хода: блок, из-за которого кэш промпта создали заново.`,diffAnyway:`Всё равно сравнить ({lineCount} строк)`,diffLabel:`Разница: {label}`,diffLargeDefault:`Изменённый текст большой, поэтому по умолчанию его не сравнивают.`,diffStillTooLarge:`Всё ещё слишком большой, чтобы сравнивать здесь (больше {maxLines} строк). Вкладка Raw показывает полное тело.`,diffTooLarge:`Изменённый текст слишком большой, чтобы сравнивать здесь. Вкладка Raw показывает полное тело.`,loadPreviousCallError:`Не удалось загрузить предыдущий вызов для сравнения.`,loadingPreviousCall:`Загружаем предыдущий вызов для сравнения…`,messageStatsAppended:`добавлено: {count}`,messageStatsLeading:`Начальные сообщения: {parts}`,messageStatsRemoved:`удалено: {count}`,messageStatsShared:`общих: {count}`,previousModelFallback:`предыдущая модель`,previousPromptUnavailable:`Промпт предыдущего вызова недоступен для сравнения.`,showLess:`Показать меньше`,showMoreDiffLines:`Показать ещё {count} строк разницы`,statusMessagesEarlierBody:`{label} #{index} отличается от прошлого хода, поэтому всё, что кэшировалось после него, в этом ходе обрабатывается заново.`,statusMessagesEarlierTitle:`Изменилось более раннее сообщение`,statusMessagesHistoryBody:`В этом ходе пропало более ранних сообщений: {removedCount} (скорее всего из-за сжатия истории), поэтому кэшированный префикс сообщений больше не совпадает.`,statusMessagesHistoryTitle:`История сообщений изменилась`,statusModelBody:`Этот ход использовал {current}, а предыдущий: {previous}. Другая модель не может переиспользовать прошлый кэш промпта, поэтому весь промпт создаётся заново.`,statusModelTitle:`Модель изменилась`,statusPrefixUnchangedBodyAppended:`Кэшированный префикс совпадает с прошлым ходом, и добавлено новых сообщений: {count}. Промах кэша здесь скорее про истечение TTL, а не про изменённое содержимое.`,statusPrefixUnchangedBodyIdentical:`Кэшированный префикс совпадает с прошлым ходом. Промах кэша здесь скорее про истечение TTL, а не про изменённое содержимое.`,statusPrefixUnchangedTitle:`Префикс промпта не изменился`,statusSettingsBody:`От прошлого хода отличаются только настройки запроса (например, temperature). У большинства провайдеров одного этого недостаточно, чтобы сбросить кэш промпта.`,statusSettingsTitle:`Настройки запроса изменились`,statusSystemBody:`Часть системного промпта изменилась с прошлого хода. Нестабильное содержимое здесь (метка времени, память или блок на каждый ход) заставляет создавать кэш заново каждый ход.`,statusSystemTitle:`Системный промпт изменился`,statusToolsBody:`Набор инструментов или их определения отличаются от прошлого хода. Инструменты стоят в начале кэшированного префикса, поэтому любое изменение здесь пересоздаёт кэш ещё до системного промпта и сообщений.`,statusToolsTitle:`Определения инструментов изменились`,title:`Разница кэша`,unchangedLines:`⋯ без изменений: {count} строк`},S={barAriaLabel:`Разбивка кэша промпта из {total} токенов: {segments} ({percent} из кэша).`,barSegment:`{count} {label}`,cached:`из кэша`,description:`Какая доля промпта этого вызова пришла из кэша промпта.`,segmentCreated:`Создано заново`,segmentFresh:`Новый ввод`,segmentRead:`Прочитано из кэша`,statusFullMissBody:`Ни одна часть промпта этого вызова не была прочитана из кэша.`,statusFullMissReCreatedSuffix:` В этом ходе в кэш записали {count} токенов, но ни один не переиспользовали: обычно так бывает, когда кэшированный префикс изменился с прошлого хода.`,statusFullMissTitle:`Полный промах кэша`,statusHealthyBody:`{percent} промпта этого вызова ({count} токенов) пришло из кэша.`,statusHealthyTitle:`Здоровое переиспользование кэша`,statusPartialBody:`{percent} промпта этого вызова ({count} токенов) пришло из кэша; остальное в этом ходе обработали заново.`,statusPartialTitle:`Частичное переиспользование кэша`,title:`Состояние кэша`,unavailableNote:`Этот вызов не сообщил об использовании кэша промпта.`,unavailableNoteForProvider:`Этот вызов не сообщил об использовании кэша промпта для {provider}.`},C={callCount:`{count, plural, one {# вызов LLM} few {# вызова LLM} many {# вызовов LLM} other {# вызова LLM}}`,callLabel:`Вызов {number}`,compaction:`Сжатие`,cost:`Стоимость`,empty:`Вызовов LLM нет.`,failed:`Ошибка`,latest:`Последний`,navAriaLabel:`Вызовы LLM`,syntheticAgentLoopError:`Ошибка цикла агента`,syntheticAgentLoopErrorWithReason:`Ошибка цикла агента · {reason}`,syntheticYield:`Пауза · сжатие не уместило следующий шаг`,unrecognizedCall:`Неизвестный вызов`},w={captureFailed:`Не удалось сделать фото. Попробуйте ещё раз.`,close:`Закрыть камеру`,flip:`Сменить камеру`,openFailed:`Не удалось открыть камеру.`,shutter:`Сделать фото`,title:`Сделать фото`},T={captureFailed:`Не удалось сделать это фото.`,deviceInUse:`Камеру использует другое приложение.`,noDevice:`Камера не найдена.`,notDelivered:`Переподключение. Сделайте это фото ещё раз.`,permissionDenied:`Доступ к камере для Vellum отключён.`,refused:`Ваш ассистент пока не может получать фото.`,storeFailed:`Не удалось добавить это фото в разговор.`,unknown:`Не удалось открыть камеру.`,unsupported:`Это устройство не может открыть камеру.`,uploadFailed:`Не удалось отправить это фото.`},E={close:`Закрыть`,gotIt:`Понятно`,liveBody:`{name} смотрит, пока вы двигаете камеру. Просто говорите о том, что видит {name}.`,liveBodyDesktop:`{name} смотрит, пока вы двигаете камеру. Просто говорите о том, что видит {name}. Остановить можно в любой момент.`,liveTag:`Эфир`,liveTitle:`Прямой эфир`,photoBody:`Сделайте снимок. {name} видит только этот один снимок.`,photoTitle:`Фото`,privacy:`Всё, что видит {name}, остаётся в собственном приватном рабочем пространстве {name}. Эфир заканчивается, когда вы закрываете камеру.`,subtitle:`Выберите, как {name} видит то, на что вы наводите камеру. Переключить можно в любой момент.`,title:`Фото или прямой эфир?`,tryLive:`Попробовать эфир`,tryLiveDesktop:`Попробовать эфир`,yourAssistant:`ваш ассистент`},D={live:`Прямой эфир · Нажмите, чтобы остановить`,liveDescription:`Нажмите, чтобы остановить прямой эфир.`,photo:`Нажмите для фото · Удерживайте для прямого эфира`,photoDescription:`Удерживайте, чтобы начать прямой эфир.`},O={announceLive:`Прямой эфир. {status}`,announceLiveMuted:`Прямой эфир. Без звука. {status}`,announceLiveMutedSpeaking:`Прямой эфир. Без звука. {name} говорит`,announceLiveSpeaking:`Прямой эфир. {name} говорит`,announcePhoto:`Фото. {status}`,announcePhotoMuted:`Фото. Без звука. {status}`,announcePhotoMutedSpeaking:`Фото. Без звука. {name} говорит`,announcePhotoSpeaking:`Фото. {name} говорит`,live:`Прямой эфир`,photo:`Фото`,yourAssistant:`Ваш ассистент`},k={buttonAria:`Параметры отображения камеры`,gateHudDescription:`Отладочный слой: как прямой эфир выбирает, какие кадры отправлять.`,gateHudTitle:`Настройка фильтра кадров`,howItWorks:`Как работают «Фото» и «Прямой эфир»`,keptFrameDescription:`Показывает последний кадр, отправленный в эфире.`,keptFrameTitle:`Последний отправленный кадр`,title:`Показывать`},A={heading:`Ссылка на сообщение из {channel}`,headingWithSender:`Ссылка на сообщение {sender} в {channel}`,removeAria:`Убрать выбранное сообщение`},j={closeAria:`Закрыть тред в {channel}`,label:`Тред в {channel}`,openAria:`Открыть тред в {channel}`},M={assistantSender:`Ассистент`,closeAria:`Закрыть тред канала`,closeTooltip:`Закрыть`,emptyNoMessageDetail:`{channel} не передаёт Vellum данные по отдельным сообщениям, которые нужны этому виду, поэтому показывать здесь нечего. Откройте разговор в {channel}, чтобы прочитать его целиком.`,emptyThread:`В этом разговоре пока нет сообщений из {channel}.`,namedTitle:`{channel} · {thread}`,noText:`Без текста`,openInChannel:`Открыть в {channel}`,reactionAdded:`Реакция {emoji}`,reactionRemoved:`Реакция {emoji} убрана`,readOnly:`Только чтение`,readOnlyNote:`Это разговор в том виде, в каком он есть в {channel}. Писать можно только в поле ввода Vellum.`,reference:`Сослаться в Vellum`,referenceAria:`Сослаться на это сообщение из {channel} в Vellum`,referenced:`Выбрано`,removeReferenceAria:`Убрать эту ссылку из поля ввода Vellum`,title:`Тред в {channel}`,unknownSender:`Неизвестный отправитель`},N={addToChat:`Добавить в диалог`,askAssistantPlaceholder:`Сообщение для {assistantName}`,endOtherVoiceSession:`Завершить и начать здесь`,goToVoiceSession:`Перейти к ней`},P={appsTitle:`Приложения`,backAria:`Назад к информации о диалоге`,backTooltip:`Информация о диалоге`,closeAria:`Закрыть информацию о диалоге`,empty:`В этом диалоге пока нет материалов`,filesTitle:`Документы и изображения`,framesTitle:`Кадры с камеры`,loadFailed:`Не удалось загрузить материалы`,loadMore:`Загрузить ещё`,openAppAria:`Открыть {name}`,openDocumentAria:`Открыть {name}`,previewAttachmentAria:`Предпросмотр {filename}`,previewFrameAria:`Предпросмотр кадра с камеры`,seeAll:`Показать все`,seeAllAppsAria:`Показать все приложения`,seeAllFilesAria:`Показать все документы и изображения`,seeAllFramesAria:`Показать все кадры с камеры`,title:`Информация о диалоге`,retry:`Повторить`,retrySourceAria:`Повторить загрузку: {source}`,documentsSource:`Документы`,attachmentsSource:`Вложения`,sourceLoading:`Загрузка: {source}…`,sourceLoadFailed:`Не удалось загрузить: {source}.`,sourceRefreshFailed:`Не удалось обновить: {source}. Показаны сохранённые результаты.`,sourcePageFailed:`Не удалось загрузить следующие элементы: {source}.`,framesUnsupported:`Классификация кадров камеры недоступна в этой версии помощника.`,loadedHistory:`Вложения взяты только из загруженной истории чата.`},F={compactedMessages:`сжато: {count}`,compactedPreserved:`Сжато / сохранено`,contextTokens:`Токены контекста`,duration:`Длительность`,durationMs:`{count} мс`,emptyBody:`Сжатие относят к вызову, который шёл сразу после него. Если ждал его здесь, проверь, что диалог превысил бюджет контекста прямо перед этим вызовом.`,emptyTitle:`К этому вызову не привязано сжатие`,eventIndex:` · {index} из {totalCount}`,hideSummaryText:`Скрыть текст сводки`,loadFailedDefault:`Не удалось загрузить сжатие.`,loadFailedTitle:`Не удалось загрузить`,loading:`Загрузка сжатия…`,messageRange:`{before} → {after}`,messages:`Сообщения`,outcomeCompacted:`Сжато`,outcomeFailed:`Сжатие не удалось`,outcomeFailedDetail:`Вызов суммаризатора завершился ошибкой, поэтому контекст оставили как есть.`,outcomeNoChange:`Без изменений`,outcomeUnavailable:`Исход недоступен`,outcomeUnavailableDetail:`Подробные метрики до и после для этого сжатия не записали.`,preservedMessages:`сохранено: {count}`,reductionRatio:`в {ratio}× меньше`,retry:`Повторить`,showSummaryText:`Показать текст сводки`,summarizerUsage:`{input} вход / {output} выход`,summaryCost:`Стоимость сводки`,summaryModel:`Модель сводки`,tokenRange:`{before} → {after}`,tokenRangeWithReduction:`{before} → {after} ({reduction})`,trigger:`Триггер`},I={autoPreview:`Авто · {profile}`,profileSwitchFailed:`Профиль создан, но переключиться на него не удалось`,profileSwitchFallback:`Не удалось сменить профиль. Повторите попытку.`},L={cancelFailed:`Не удалось закрыть форму. Попробуйте ещё раз.`,recordCancelFailed:`Не удалось закрыть форму. Попробуйте ещё раз.`,recordSaveFailed:`Не удалось сохранить контакт. Попробуйте ещё раз.`},R={addingToContact:`Добавление канала для {name}`,markVerified:`Отметить этот адрес как подтверждённый`,markVerifiedHelp:`Подтверждённый адрес может писать вашему ассистенту.`,namePlaceholder:`Имя`,notesLabel:`Заметки`},z={cancel:`Отмена`,channelType:`{channel}:`,contactDeleted:`Контакт удалён`,contactMerged:`Контакты объединены`,contactSaved:`Контакт сохранён`,createTitle:`Добавить контакт`,delete:`Удалить`,deleteTitle:`Удалить {name}?`,deleteWarning:`Вместе с ним удаляются его каналы, и он больше не сможет связаться с вашим ассистентом.`,merge:`Объединить`,mergeDonorChannels:`Переходят от {name}`,mergeSurvivorChannels:`Уже у {name}`,mergeTitle:`Объединить {donor} с {survivor}?`,mergeWarning:`Эти каналы перейдут к {survivor}, а запись {donor} будет удалена.`,nameLabel:`Имя`,namePlaceholder:`Имя`,noChannels:`У этого контакта нет каналов.`,notesLabel:`Заметки`,notesPlaceholder:`Добавить заметку`,save:`Сохранить`,saving:`Сохранение…`,updateTitle:`Обновить: {name}`},B={archive:`В архив`,copyConversation:`Скопировать весь диалог`,copyConversationId:`Скопировать ID диалога`,delete:`Удалить`,forkConversation:`Ответвить диалог`,inspect:`Разобрать диалог`,markRead:`Отметить как прочитанный`,markUnread:`Отметить как непрочитанный`,moveToGroup:`Перенести в группу`,newGroup:`Новая группа…`,openInNewWindow:`Открыть в новом окне`,pin:`Закрепить`,refresh:`Обновить`,removeFromGroup:`Убрать из группы`,rename:`Переименовать`,shareFeedback:`Отправить отзыв`,triggerAriaLabel:`Действия с диалогом`,unarchive:`Вернуть из архива`,unpin:`Открепить`},V={closeAriaLabel:`Закрыть`,title:`Действия с диалогом`},H={ariaLabel:`Ресурсы диалога, {count, plural, one {# элемент} few {# элемента} many {# элементов} other {# элемента}}`,ariaLabelUnavailable:`Ресурсы диалога, не удалось загрузить`,ariaLabelUnseen:`Ресурсы диалога, {count, plural, one {# элемент} few {# элемента} many {# элементов} other {# элемента}} (есть невидимые изменения)`,label:`{count, plural, one {# ресурс} few {# ресурса} many {# ресурсов} other {# ресурса}}`,labelUnavailable:`Не удалось загрузить ресурсы`,labelPartial:`Не удалось загрузить некоторые ресурсы`,ariaLabelPartial:`Ресурсы беседы, некоторые не удалось загрузить`,labelLoaded:`{count, plural, one {# загруженный ресурс} few {# загруженных ресурса} many {# загруженных ресурсов} other {# загруженного ресурса}}`,ariaLabelLoaded:`Ресурсы беседы, {count, plural, one {# загруженный элемент} few {# загруженных элемента} many {# загруженных элементов} other {# загруженного элемента}}`,ariaLabelLoadedUnseen:`Ресурсы беседы, {count, plural, one {# загруженный элемент} few {# загруженных элемента} many {# загруженных элементов} other {# загруженного элемента}} (непросмотренные изменения)`},U={caption:`Подсказки:`},W={conversationCopied:`ID диалога скопирован в буфер обмена.`,conversationFailed:`Не удалось скопировать ID диалога.`,groupCopied:`ID группы скопирован в буфер обмена.`,groupFailed:`Не удалось скопировать ID группы.`},G={acknowledgment:`Я понимаю, что связанные ресурсы и воспоминания могут сохраниться`,cancel:`Отмена`,confirm:`Удалить`,message:`Удалить «{title}»? Диалог и его сообщения будут удалены навсегда. Связанные ресурсы и воспоминания могут сохраниться. Это действие нельзя отменить.`,title:`Удалить диалог`},K={label:`Это сообщение было удалено`},q={pdfDownloadFailed:`Не удалось скачать PDF`},J={unavailable:`Не удалось открыть беседу документа. Попробуйте ещё раз.`,updateRequired:`Обновите ассистента, чтобы начать связанную беседу.`,prepareFailed:`Не удалось подготовить беседу документа. Ваши изменения сохранены.`,feedbackPrompt:`Пожалуйста, рассмотрите и обработайте мои комментарии к «{title}».`,missing:`Беседа этого документа недоступна. Вы можете продолжить редактирование или начать новую связанную беседу.`,start:`Начать связанную беседу`,retry:`Повторить`,back:`Назад`},Y={exportFailed:`Не удалось экспортировать PDF`},X={cancel:`Отмена`,close:`Закрыть`,defaultError:`Не удалось экспортировать данные инспектора.`,descriptionDone:`Скачивание должно было начаться само.`,descriptionError:`Что-то пошло не так при сборе экспорта.`,descriptionRunning:`Собираем тела запросов провайдера и нормализованный контекст. В длинных диалогах это может занять время.`,done:`Готово`,progressAriaLabel:`Прогресс экспорта`,retry:`Повторить`,statusDone:`Готово`,statusPackaging:`Упаковываем ZIP…`,statusProgress:`{completed} из {total} вызовов`,titleDone:`Экспорт готов`,titleError:`Экспорт не удался`,titleRunning:`Экспортируем данные инспектора`},Z={failed:`Не удалось скачать файл`},Q={archiveAll:`В архив все…`,copyGroupId:`Скопировать ID группы`,deleteGroup:`Удалить группу`,deleteGroupWithConversations:`Удалить группу…`,groupByChannel:`Группировать по каналу`,markAllRead:`Отметить все как прочитанные`,moveSectionDown:`Секцию вниз`,moveSectionUp:`Секцию вверх`,rename:`Переименовать`,ungroup:`Разгруппировать`},$={title:`Действия: {name}`},ee={accessDenied:`Инспектор доступен, когда включён флаг Internal Thread Actions.`,allMessages:`Все сообщения`,back:`Назад`,backToConversationAria:`Назад к диалогу`,chooseCall:`Выбор вызова на панели, чтобы разобрать его контекст.`,conversationScopeSubtitle:`Показаны все вызовы LLM, записанные для этого диалога.`,detailLoadFailed:`Не удалось загрузить нормализованный контекст этого вызова.`,emptyBodyConversation:`Либо ни одно сообщение диалога не создал вызов LLM, либо журналы запросов обрезала политика хранения.`,emptyBodyMessage:`Либо это сообщение создал не вызов LLM, либо его журналы запросов обрезала политика хранения.`,emptyTitleConversation:`Для этого диалога нет записанных вызовов LLM.`,emptyTitleMessage:`Для этого сообщения нет записанных вызовов LLM.`,enableLogging:`Включить журнал`,enableLoggingFailed:`Не удалось включить журнал`,enableLoggingFailedWithMessage:`Не удалось включить журнал ({message})`,enabling:`Включаем…`,exportFailed:`Не удалось экспортировать данные инспектора`,exportZip:`Экспорт ZIP`,exportZipAria:`Экспортировать данные инспектора как ZIP`,exporting:`Экспорт…`,filterToMessage:`Фильтр по сообщению:`,llmCallCount:`{count, plural, one {1 вызов LLM} few {# вызова LLM} many {# вызовов LLM} other {# вызова LLM}}`,loadContextFailed:`Не удалось загрузить контекст LLM.`,loadFailedTitle:`Не удалось загрузить`,loading:`Загрузка…`,loggingDisabledBody:`Тела запросов и ответов не записываются, поэтому смотреть нечего. Включение журнала фиксирует следующие вызовы LLM.`,loggingDisabledTitle:`Журнал запросов LLM выключен`,loggingEnabledToast:`Журнал запросов LLM включён`,messageOptionDeepLink:`Сообщение {messageId}`,messageOptionNoText:`{index}. (без текста)`,messageOptionWithPreview:`{index}. {preview}`,retry:`Повторить`,scopedToOneMessage:`Ограничено одним сообщением · `,scopedToTurn:`Ограничено ходом {index} из {count} · `,title:`Инспектор контекста LLM`},te={android:`Голосовой режим уже активен в приложении для Android.`,ios:`Голосовой режим уже активен в приложении для iOS.`,macos:`Голосовой режим уже активен в приложении для Mac.`,unknown:`Голосовой режим уже активен в другом месте.`,web:`Голосовой режим уже активен в другой вкладке браузера.`,windows:`Голосовой режим уже активен в приложении для Windows.`},ne={connecting:`Подключение…`,ending:`Завершение…`,listening:`Слушаю…`,muted:`Без звука`,reconnecting:`Переподключение…`,speaking:`Говорит…`,thinking:`Думает…`,working:`Работаю над этим…`},re={chipCode:`Код`,chipProvider:`Провайдер`,chipRequestId:`Request ID`,chipStatus:`Статус`,chipType:`Тип`,chipUpstreamCode:`Код выше по цепочке`,chipUpstreamParam:`Параметр выше по цепочке`,chipUpstreamType:`Тип выше по цепочке`,noResponse:`Провайдер отклонил этот вызов и не вернул ответ.`,title:`Вызов не удался`},ie={pictureInPictureUnavailable:`Картинка в картинке недоступна`},ae={closePreview:`Закрыть предпросмотр: {filename}`,fileOptions:`Действия с файлом: {filename}`,openInWorkspace:`Открыть в рабочем пространстве: {filename}`,openPreview:`Открыть предпросмотр: {filename}`,unavailable:`Этот файл здесь недоступен`,unavailableLabel:`Файл недоступен: {filename}`,viewImage:`Просмотреть изображение: {filename}`},oe={addOlderPairButton:`+ Добавить более старую пару`,assistantReplyLabel:`[assistant]: ответ`,assistantReplyPlaceholder:`Ответ ассистента, который был до сообщения пользователя ниже.`,configTitle:`Конфиг {paneId}`,conversationalContextTitle:`Контекст диалога (общий для обеих панелей)`,customPromptPlaceholder:`Свой системный промпт маршрутизатора. Доступные подстановки:
|
|
2
|
+
'{ASSISTANT_NAME}, {USER_NAME}, {PAGE_INDEX}'
|
|
3
|
+
Пустое поле берёт встроенный шаблон. «Загрузить по умолчанию» подставляет в поле встроенный текст для правки.`,description:`Прогон маршрутизатора v4 с своими переопределениями уровня и пакета. Только чтение: строки в <code>memory_v2_injection_events</code> и <code>memory_v2_activation_logs</code> не пишутся, состояние активации не меняется. Пустое переопределение берёт живое значение конфига; <code>null</code> явно выключает уровень.`,diffLabel:`Разница`,diffValue:`{shared} общих · {unique} только у этой панели`,effectiveConfig:`Итоговый конфиг`,emaScore:`EMA {score}`,empty:`(пусто)`,emptySelectionHint:`Маршрутизатор вернул пустой выбор. Более точный запрос или ослабление переопределений.`,failedToRunSimulation:`Не удалось запустить симуляцию`,firstTurnAssistantPlaceholder:`Пустое поле: сценарий первого хода.`,inheritActive:`наследовать активный`,inheritActiveWithProfile:`наследовать активный ({profile})`,inheritPlaceholder:`наследовать`,invalidOverrideInput:`Некорректное переопределение`,justArrivedUserLabel:`Только что пришло [user]: сообщение`,lastUserPlaceholder:`например, что выпустить дальше`,legendAOnly:`только A`,legendBOnly:`только B`,legendInBoth:`в обоих`,llmProfilesOverride:`переопределение llm.profiles`,loadDefault:`Загрузить по умолчанию`,loading:`Загрузка…`,noPagesSelected:`Страницы не выбраны`,notAvailable:`Песочница маршрутизатора памяти недоступна.`,nowBlockLabel:`блок '<now>'`,nowDefaultPlaceholder:`Заполнено живым NOW.md. Прави, чтобы проверить другие состояния.`,nowLoadingPlaceholder:`Загрузка текущего NOW.md…`,nullValue:`null`,overrideMustBePositiveInteger:`{fieldName} должен быть положительным целым или 'null' (получено "{value}")`,overrideSuffix:` (переопределение)`,pageCount:`{count, plural, one {# страница} few {# страницы} many {# страниц} other {# страницы}}`,pairLabel:`Пара {index} из {total}`,pairMostRecentSuffix:` · самая свежая`,paneTitle:`Панель {paneId}`,promptModeBundled:`встроенный`,promptModeCustom:`свой`,rawApiExchange:`Сырой обмен API`,recentPairsLabel:`Недавние пары (ассистент, пользователь) · сначала старые`,reloadNowButton:`Перезагрузить живой NOW.md`,removeButton:`Удалить`,requestLabel:`Запрос (панель {paneId})`,reset:`Сбросить`,responseLabel:`Ответ (панель {paneId})`,routerFailure:`Сбой маршрутизатора: {reason}`,runBoth:`Запустить оба`,runPane:`Запустить {paneId}`,running:`Запуск…`,selectedLabel:`Выбрано`,selectedValue:`{count} (живой max_page_ids: {maxPageIds})`,summary:`Сводка`,summaryUserMessageLabel:`Сообщение пользователя`,systemPrompt:`Системный промпт`,systemPromptConfigLabel:`системный промпт`,tier1Label:`уровень 1`,tier2Label:`уровень 2`,tier3Label:`уровень 3 · b{batch}`,title:`Песочница маршрутизатора памяти`,totalCandidatePagesLabel:`Всего страниц-кандидатов`,userMessageLabel:`[user]: сообщение`,userMessagePlaceholder:`Сообщение пользователя.`},se={afterMergeLabel:`После слияния`,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 (свой)`,breakdownPriorActivation:`prior · d`,breakdownRerankScaledRaw:`+{scaled} (сырой {raw})`,breakdownScaledRaw:`{scaled} (сырой {raw})`,breakdownSource:`источник`,breakdownSpreadDelta:`spread Δ`,breakdownStatus:`статус`,candidatePoolChosenChip:`выбрана`,candidatePoolNoneBody:`Пул кандидатов для этого хода не записан.`,candidatePoolPassthroughSubtitle:`{poolSize, plural, one {# кандидат передан напрямую} few {# кандидата передано напрямую} many {# кандидатов передано напрямую} other {# кандидата передано напрямую}} без оценки селектора · селектор отключён`,candidatePoolSelectorNotRunBody:`Селектор не запускался в этом ходе.`,candidatePoolSubtitle:`{poolSize, plural, one {# кандидат показан} few {# кандидата показано} many {# кандидатов показано} other {# кандидата показано}} селектору · {selectedCount, plural, one {выбрана # страница} few {выбраны # страницы} many {выбрано # страниц} other {выбрано # страницы}}`,candidatePoolTitle:`Пул кандидатов`,candidateScores:`sem {semantic} · rec {recency}`,carriedPill:`Перенесено: {count}`,conceptActivationsSubtitle:"Сортировка по итоговой активации. Записи навыков идут с префиксом `skills/`; разверни строку, чтобы увидеть разбивку активации.",conceptActivationsTitle:`Активации концептов ({count})`,configCAssistant:`c_assistant`,configCNow:`c_now`,configCUser:`c_user`,configDDecay:`d (затухание)`,configEpsilon:`epsilon`,configHops:`hops`,configKSharpening:`k (обострение)`,configSubtitle:`Веса активации и пороги отбора.`,configTitle:`Конфиг`,configTopK:`top_k`,copyAriaLabel:`Скопировать в буфер обмена`,copyAriaLabelCopied:`Скопировано`,copyButtonCopied:`Скопировано`,copyButtonCopy:`Копировать`,copyErrorMessage:`Не удалось скопировать в буфер обмена.`,copyTitle:`Копировать`,copyTitleCopied:`Скопировано!`,corePill:`Ядро: {count}`,degradationTitle:`Деградация`,fallbackSourcesLabel:`Резервные источники`,hybridSearchLabel:`Гибридный поиск`,inContextPill:`В контексте: {count}`,injectedMemoryContextTitle:`Вставленный контекст памяти`,injectedPill:`Вставлено: {count}`,injectedTokensLabel:`Вставленные токены`,latencyMs:`{ms} мс`,loading:`Загрузка…`,loggedMemorySelectionSubtitle:`Отрисовано из выбора v3, в этот ход не вставлено.`,loggedMemorySelectionTitle:`Записанный выбор памяти`,memoryDisabledDefaultReason:`Для этого хода вспоминание памяти было выключено.`,memoryDisabledTitle:`Память выключена`,missingValue:`-`,modelLabel:`Модель`,no:`Нет`,noDataBody:`Сведения о вспоминании памяти для этого сообщения недоступны.`,noDataTitle:`Нет данных памяти`,noEntriesRanked:`Нет ранжированных записей.`,noPagesSelected:`Страницы не выбраны.`,notInjectedPill:`Не вставлено: {count}`,pageContentLabel:`содержимое страницы`,pageNotFound:`Страница не найдена на диске. Slug может ссылаться на устаревшую запись Qdrant.`,pillMemoryV2:`Memory V2`,pillMemoryV3:`Memory V3`,pillRecallV1:`Recall (v1)`,providerLabel:`Провайдер`,queryContextSubtitle:`Текст, который встроили как поисковый вектор для семантического поиска.`,queryContextTitle:`Контекст запроса`,reasonLabel:`Причина`,retrievalFunnelSubtitle:`Как воспоминания отфильтровали от семантического поиска до вставки.`,retrievalFunnelTitle:`Воронка поиска`,searchDetailsTitle:`Подробности поиска`,selectedLabel:`Выбрано`,selectedPagesSubtitle:`Страницы, которые выбрал v3, с меткой полосы, откуда они пришли, и совпавшего раздела (если полоса поиска его нашла).`,selectedPagesTitle:`Выбранные страницы ({count})`,selectedPill:`Выбрано: {count}`,semanticHitsLabel:`Семантические совпадения`,semanticUnavailableLabel:`Семантика недоступна`,sparseDenseOnly:`Только плотные`,sparseUsed:`Использованы`,sparseVectorsLabel:`Разреженные векторы`,statusActive:`Активно`,statusDegraded:`Деградировано`,statusLabel:`Статус`,statusSubtitle:`Провайдер, модель и задержка этого вспоминания.`,statusTitle:`Статус`,tier1Label:`Уровень 1`,tier2Label:`Уровень 2`,topCandidatesSubtitle:`{count, plural, one {# кандидат, ранжированный по итоговому баллу.} few {# кандидата, ранжированных по итоговому баллу.} many {# кандидатов, ранжированных по итоговому баллу.} other {# кандидата, ранжированных по итоговому баллу.}}`,topCandidatesTitle:`Лучшие кандидаты`,totalLatencyLabel:`Общая задержка`,turnLevelRecallBody:`Вспоминание памяти запускается один раз за ход. Эти данные относятся ко всем вызовам LLM этого сообщения.`,turnLevelRecallTitle:`Вспоминание на уровне хода`,turnPill:`Ход {turn}`,unavailable:`Недоступно`,unknown:`Неизвестно`,v2StatusInContext:`В контексте`,v2StatusInjected:`Вставлено`,v2StatusNotInjected:`Не вставлено`,v2StatusPageMissing:`Страницы нет`,v2TurnBody:`Проход памяти с распространением активации: ранжирует концепты и навыки для этого хода.`,v2TurnTitle:`Память - ход {turn} ({mode})`,v3LiveInjectionBody:`v3 в этом ходе живой источник памяти: блок ниже вставлен в контекст (v2 подавлен).`,v3LiveInjectionTitle:`Memory V3 - живая вставка`,v3LoggedSelectionBody:`v3 не живой источник памяти этого ассистента: эти выборы записали, но в этот ход не вставили; память хода пришла из v2.`,v3LoggedSelectionTitle:`Memory V3 - записанный выбор (не вставлено)`,v3SourceCarried:`перенесено`,v3SourceCore:`ядро`,v3SourceL1L2:`L1+L2`,v3SourceNeedle:`needle`,yes:`Да`},ce={autoRouted:`Авто · {profile}`,bookmark:`Закладка`,copied:`Скопировано`,copy:`Копировать`,copyFailed:`Не удалось скопировать сообщение.`,forkFromHere:`Ответвить отсюда`,inspect:`Просмотр`,loading:`Чтение…`,openInSlack:`Открыть в Slack`,playFailed:`Не удалось прочитать это сообщение.`,readAloud:`Прочитать вслух`,removeBookmark:`Убрать закладку`,retry:`Повторить`,stop:`Остановить`,summarizeUpToHere:`Суммировать досюда`},le={bookmark:`Закладка`,copied:`Скопировано`,copy:`Копировать`,copyFailed:`Не удалось скопировать сообщение.`,forkFromHere:`Ответвить отсюда`,inspect:`Просмотр`,openInSlack:`Открыть в Slack`,readAloud:`Прочитать вслух`,removeBookmark:`Убрать закладку`,stop:`Остановить`,summarizeUpToHere:`Суммировать досюда`,title:`Действия с сообщением`},ue={callOfTotal:`Вызов {number} из {total}`,llmCallCount:`{count, plural, one {1 вызов LLM} few {# вызова LLM} many {# вызовов LLM} other {# вызова LLM}}`,selectCallAria:`Выбор вызова LLM для разбора`,sheetTitle:`Выбор вызова`},de={runSummary:{completed:`Завершено`,failed:`Ошибка`,toolsFailed:`{count, plural, one {# инструмент завершился с ошибкой} few {# инструмента завершились с ошибкой} many {# инструментов завершились с ошибкой} other {# инструмента завершились с ошибкой}}`,workedFor:`Работа заняла {duration}`,workedUnderSecond:`Работа заняла меньше секунды`,working:`Работаю`,workingFor:`Работаю уже {duration}`}},fe={checking:`Проверяю: {place}`,updating:`Обновляю: {place}`,using:`Использую: {place}`,working:`Работаю`,showWorkAria:`Показать ход работы: {label}`,showStepsAria:`Показать шаги этого ответа: {summary}`,place:{files:`Файлы`,terminal:`Терминал`,memory:`Память`,web:`интернет`,mac:`ваш Mac`}},pe={cacheTokensLabel:`Токены кэша`,conversationSubtitle:`Накопительные итоги по всем тарифицированным вызовам LLM на сейчас.`,conversationTitle:`Диалог`,createdLabel:`Создано`,durationLabel:`Длительность`,estimatedCostLabel:`Оценочная стоимость`,failedStatus:`Ошибка`,firstTokenKindLabel:`Тип первого токена`,firstTokenLatencySubtitle:`Куда ушло время до первого токена этого хода, по замерам ассистента.`,firstTokenLatencyTitle:`Задержка первого токена`,inputTokensLabel:`Входные токены`,latencyMs:`{ms} мс`,loopExitReasonLabel:`Причина выхода из цикла`,modelLabel:`Модель`,normalizedMetadataSubtitle:`Провайдер, модель, метки времени и счётчики использования.`,normalizedMetadataTitle:`Нормализованные метаданные`,normalizedSummaryUnavailableSubtitle:`У этого вызова всё ещё есть сырые тела запроса и ответа.`,normalizedSummaryUnavailableTitle:`Нормализованная сводка недоступна`,otherLabel:`Другое`,outputTokensLabel:`Выходные токены`,providerLabel:`Провайдер`,requestMessagesLabel:`Сообщения запроса`,statusLabel:`Статус`,stopReasonLabel:`Причина остановки`,toolCallsLabel:`Вызовы инструментов`,toolsAvailableLabel:`Доступные инструменты`,totalCostSoFarLabel:`Стоимость всего на сейчас`,totalToFirstTokenLabel:`Всего до первого токена`,usageSubtitle:`Счётчики токенов и вызовов, нормализованные маршрутом ассистента.`,usageTitle:`Использование`},me={loadingPdf:`Загрузка PDF`},he={pageCapNotice:`{count, plural, one {Показана первая страница} few {Показаны первые # страницы} many {Показаны первые # страниц} other {Показаны первые # страницы}}`},ge={colors:{green:`Зелёный`,orange:`Оранжевый`,pink:`Розовый`,purple:`Фиолетовый`,teal:`Бирюзовый`,yellow:`Жёлтый`},noColor:`Без цвета`},_e={earnCredits:`Заработать бесплатные кредиты`},ve={addCreditsAriaLabel:`Добавить кредиты`,dailyExhausted:`Дневной лимит исчерпан. Добавьте кредиты, чтобы продолжить.`,dailyTitle:`Дневное использование`,exhausted:`Добавление кредитов для продолжения.`,extraCredits:`Используются дополнительные кредиты`,pctUsed:`использовано {pct}%`,settingsAriaLabel:`Настройки использования и оплаты`,title:`Использование`},ye={cannotPreview:`Не удаётся показать этот файл`},be={markdown:`Показаны первые 512 КБ`,text:`Показаны первые 2 МБ`},xe={noPreviewForType:`Нет предпросмотра для этого типа файла`},Se={availableTools:`Доступные инструменты`,bannerNoSections:`У этого вызова ещё нет нормализованных секций промпта.`,bannerSectionsCount:`{count, plural, one {# нормализованная секция запроса в порядке, который вернул маршрут ассистента.} few {# нормализованные секции запроса в порядке, который вернул маршрут ассистента.} many {# нормализованных секций запроса в порядке, который вернул маршрут ассистента.} other {# нормализованные секции запроса в порядке, который вернул маршрут ассистента.}}`,collapseAll:`Свернуть всё`,copyAriaLabel:`Скопировать {title}`,emptyBody:`У этого вызова нет нормализованных секций промпта. Вкладка Raw показывает полное тело запроса.`,emptyTitle:`Нет нормализованных секций промпта`,expandAll:`Развернуть всё`,formatJavaScript:`JavaScript`,formatJson:`JSON`,formatMarkdown:`Markdown`,formatTypeScript:`TypeScript`,noContentAvailable:`Содержимое недоступно.`,promptSectionsTitle:`Секции промпта`},Ce={input:`Исходные входные данные`,output:`Исходные выходные данные`},we={copyRequestPayloadAriaLabel:`Скопировать тело запроса`,copyResponsePayloadAriaLabel:`Скопировать тело ответа`,downloadFailedToast:`Не удалось скачать тело.`,downloadRequestPayloadAriaLabel:`Скачать тело запроса`,downloadResponsePayloadAriaLabel:`Скачать тело ответа`,loadErrorTitle:`Не удалось загрузить сырые тела`,loading:`Загрузка сырых тел…`,payloadRequestFailed:`Запрос тела не удался. Повторите попытку.`,request:`Запрос`,requestPayload:`Тело запроса`,response:`Ответ`,responsePayload:`Тело ответа`,retry:`Повторить`},Te={revealFailed:`Не удалось показать {name}.`},Ee={argumentsPreview:`Предпросмотр аргументов`,copySectionAria:`Скопировать содержимое секции`,kindAssistantText:`Текст ассистента`,kindFunctionResponse:`Ответ функции`,kindReasoning:`Рассуждение`,kindToolCall:`Вызов инструмента`,kindToolResult:`Результат инструмента`,modeResultOnly:`Ответ только с результатом`,modeTextOnly:`Ответ только текстом`,modeToolCalling:`Ответ с вызовом инструмента`,noArgumentsPreview:`Для этого вызова инструмента нет предпросмотра структурированных аргументов.`,noAssistantText:`Для этой секции не записали текст ассистента.`,noSectionsFallback:`У этого ответа нет отрисованных секций. Сырые тела остаются на вкладке Raw, а нормализованные метаданные ответа покажутся, если они есть.`,rawTabHint:`Полное тело провайдера: вкладка Raw для JSON запроса и ответа.`,responseMetadata:`Метаданные ответа`,sectionTitle:`Секция {number}`,sectionUnavailable:`Отрисовка секции недоступна`,stopReasonChip:`Причина остановки: {reason}`,toolChip:`Инструмент: {name}`},De={message:`Не удалось загрузить диалоги.`,retry:`Попробовать снова`},Oe={actionsAria:`Действия навыка`,moreTooltip:`Ещё`},ke={failed:`Не удалось загрузить`,loading:`Загрузка навыка…`,loadingAria:`Загрузка навыка`,notApproved:`Не одобрено`,provides:`Предоставляет`,unnamedSkill:`Навык`,usedSkill:`Использованный навык`},Ae={callLink:`Вызов {number}`,emptyBody:`На этой вкладке перечислены все вызовы инструмента <code>skill_load</code> в диалоге. В записанных вызовах LLM их не нашли.`,emptyTitle:`В этом диалоге навыки не загружали`,loadCount:`{count, plural, one {1 загрузка} few {# загрузки} many {# загрузок} other {# загрузки}}`,summaryStats:`{uniqueCount, plural, one {# уникальный навык} few {# уникальных навыка} many {# уникальных навыков} other {# уникальных навыка}} · {totalLoads, plural, one {# вызов загрузки} few {# вызова загрузки} many {# вызовов загрузки} other {# вызова загрузки}}`,summaryTitle:`Навыки, загруженные в этом диалоге`},je={table:`Таблица`},Me={title:`Размышление`},Ne={defaultValue:`по умолчанию: {value}`,inputSchema:`Схема ввода`,intro:`{count, plural, one {# инструмент отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} few {# инструмента отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} many {# инструментов отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} other {# инструмента отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.}}`,noInputSchema:`Нет схемы ввода: этот инструмент не принимает структурированный ввод.`,required:`обязательно`,settings:`Настройки`},Pe={fileUnavailable:`Файл недоступен для скачивания`,fileUnavailableHostTimeout:`Файл недоступен для скачивания (возможно, истекло время на одобрение файла на хосте)`},Fe={authFailed:`Не удалось аутентифицировать пользователя.`},Ie={assistantBusy:`Ассистент занят. Повтор, когда закончит отвечать.`,retryFailed:`Не удалось повторить ответ`,summarizeFailed:`Не удалось кратко пересказать диалог`},Le={commandFailed:`Не удалось выполнить эту команду. Повторите попытку.`,doctorUnavailable:`Doctor недоступен у этого ассистента.`},Re={nativeSttNoTranscript:`Нативная диктовка {clientName} не вернула расшифровку. Проверьте нативное распознавание речи в системных настройках и повторите попытку.`},ze={ariaLabel:`Голосовой сеанс`,closeCamera:`Закрыть камеру`,endSessionAria:`Завершить голосовой сеанс`,endSessionTooltip:`Завершить сеанс`,flashAuto:`Автоматическая вспышка`,flashAutoBadge:`А`,flashOff:`Вспышка выключена`,flashOn:`Вспышка включена`,flipCamera:`Сменить камеру`,lightOff:`Фонарик выключен`,lightOn:`Фонарик включён`,minimizeAria:`Свернуть голосовую комнату`,minimizeTooltip:`Свернуть (сеанс продолжится)`,muteAssistant:`Отключить звук ассистента`,muteMicrophone:`Отключить микрофон`,mutedState:`Без звука. {state}`,showCamera:`Показать камеру`,stopLive:`Остановить прямой эфир`,takePhoto:`Сделать фото`,unmuteAssistant:`Включить звук ассистента`,unmuteMicrophone:`Включить микрофон`},Be={noResponse:`Решил не отвечать`,reactionAddedSelf:`Отреагировал(а) {emoji}`,reactionRemovedSelf:`Убрал(а) реакцию {emoji}`,reactionAdded:`{name} отреагировал(а) {emoji}`,reactionRemoved:`{name} убрал(а) свою реакцию {emoji}`,reactionSomeone:`Кто-то`},Ve={output:`Вывод`,changes:`Изменения`,command:`Команда`,denied:`Этот вызов инструмента не был одобрен, поэтому он не выполнился.`,emptyOutput:`Инструмент не вернул никаких данных.`,requestedChanges:`Запрошенные изменения`},He={parameters:`Параметры`,moreCount:`{count, plural, one {Ещё # в «Исходные входные данные»} few {Ещё # в «Исходные входные данные»} many {Ещё # в «Исходные входные данные»} other {Ещё # в «Исходные входные данные»}}`},Ue={moreCount:`{count, plural, one {Ещё # в «Исходные выходные данные»} few {Ещё # в «Исходные выходные данные»} many {Ещё # в «Исходные выходные данные»} other {Ещё # в «Исходные выходные данные»}}`},We={copyValue:`Скопировать {label}`},Ge={collapse:`Скрыть показатели фильтра кадров`,expand:`Показать показатели фильтра кадров`},Ke={commandFinished:`Фоновая команда завершена`,incomingEvent:`Входящее событие`,memoryReview:`Просмотр памяти`,ranOnItsOwn:`Запустился сам`,resumed:`Возобновлено после прерывания`,scheduledRun:`Запуск по расписанию`,watchReview:`Разбор сессии наблюдения`,workflowFinished:`Рабочий процесс завершён`},qe={details:`Подробности`,result:`Результат`,runStatus:`Статус запуска`,title:`Разговор возобновлён`,workflow:`Рабочий процесс`,closeAria:`Закрыть подробности`},Je={doneDiscarded:`Не сохранено`,doneNotRight:`Отмечено как неверное`,doneSaved:`Навык сохранён`,recommended:`Рекомендуем`},Ye={restore:`Восстановить доступ`,restoring:`Восстановление...`,restored:`Восстановлено. Модели под управлением Vellum снова работают.`,failedNoAssistant:`Выберите ассистента и повторите попытку.`,failedCannotActHere:`Это приложение не может восстановить учётные данные этого ассистента. Откройте ассистента на компьютере, где он запущен.`,failedReplacementRejected:`Vellum отклонил новые учётные данные. Войдите на платформу Vellum и повторите попытку.`,failedUnconfirmed:`Новые учётные данные сохранены, но Vellum не смог их подтвердить. Возможно, они заработают через некоторое время.`,failedGeneric:`Не удалось восстановить доступ. Повторите попытку через минуту.`},Xe={tooltip:`Говорите вслух в голосовом режиме`},Ze={viewDetails:`Подробности`},Qe={expand:`Развернуть`,collapse:`Свернуть`},$e={count:`{count, plural, one {# кадр камеры} few {# кадра камеры} many {# кадров камеры} other {# кадра камеры}}`,timeRange:`Сохранено с {first} по {last}`,savedTime:`Сохранено: {time}`,pendingAria:`Кадр камеры, изображение ещё загружается. {time}`,timeUnavailable:`Время недоступно`},et={showPreview:`Показать трансляцию`,needsHelp:`Виртуальному рабочему столу нужна ваша помощь.`,stepIn:`Вмешаться`,done:`Готово`,skip:`Пропустить`,showMore:`Показать больше`,showLess:`Показать меньше`},tt={collapse:`Свернуть`},nt={removeFile:`Удалить {name}`},rt={saved:`Сохранено`,saving:`Сохранение`,notSaved:`Не сохранено`},it={searchedFor:`Запрос`,scope:`{depth} · {sources}`,answer:`Ответ`,evidence:`{count, plural, one {# результат} few {# результата} many {# результатов} other {# результата}}`,noEvidence:`Ничего подходящего не нашлось.`,degraded:`Некоторые места не удалось просмотреть полностью`,degradedSource:`{source}: {error}`},at={source:`{source, select, memory {Память} conversations {Беседы} workspace {Файлы рабочей области} other {{source}}}`,depth:`{depth, select, fast {Быстрый поиск} standard {Обычный поиск} deep {Глубокий поиск} other {Поиск}}`},ot={unnamedTool:`Инструмент навыка`},st={doneEmptyBody:`Чаты, отмеченные как выполненные, ждут вас в разделе «Все чаты».`,doneEmptyTitle:`Всё разобрано.`,emptyBody:`Начните новый чат, и он появится здесь.`,emptyTitle:`Чатов пока нет.`},ct={label:`Все чаты`},lt={addCredits:`Добавить кредиты`,subtitle:`Вы использовали бесплатный лимит на сегодня. Он сбросится в {resetPhrase}. Обновите план или добавьте кредиты, чтобы продолжить.`,title:`Дневной бесплатный лимит исчерпан`,viewPlans:`Посмотреть планы`},ut={noSubject:`(без темы)`,captionReceived:`Получено · От {name} · {date}`,captionReceivedUndated:`Получено · От {name}`,captionSent:`Отправлено · Кому: {name} · {date}`,captionSentUndated:`Отправлено · Кому: {name}`,tooltip:`{subject}
|
|
4
|
+
{caption}`,removeAria:`Убрать письмо {subject}`},dt={noSubject:`(без темы)`,captionReceived:`Получено · От {name} · {date}`,captionReceivedUndated:`Получено · От {name}`,captionSent:`Отправлено · Кому: {name} · {date}`,captionSentUndated:`Отправлено · Кому: {name}`,tooltip:`{subject}
|
|
5
|
+
{caption}`,openAria:`Открыть письмо {subject} в почте`},ft={title:`Настройки чатов`,description:`Управляйте автоматическим завершением чатов и уведомлениями об ответах этого ассистента на всех устройствах.`,autoArchive:`Автоматически архивировать чаты`,autoArchiveHelper:`Помечает неактивные чаты как завершённые, включая те, для которых этот срок уже истёк. Завершённые чаты остаются в списке всех чатов.`,timeToArchive:`Срок до архивации`,days:`{count, plural, one {# день} few {# дня} many {# дней} other {# дня}}`,notifications:`Уведомления об ответах`,notificationsHelper:`Получайте уведомления об ответах в чатах, которые вы не просматриваете.`,cancel:`Отмена`,confirm:`Подтвердить`,saving:`Сохранение…`,loading:`Загрузка настроек чатов…`,retry:`Повторить`,loadError:`Не удалось загрузить настройки чатов. Попробуйте ещё раз.`,saveError:`Не удалось сохранить настройки чатов. Ваши изменения сохранены в этой форме. Нажмите «Подтвердить», чтобы повторить попытку.`,unsupported:`Обновите этого ассистента, чтобы использовать настройки чатов.`},pt={label:`Почта`,unpin:`Открепить Почту`},mt={adding:`Добавление…`,blockquote:`Цитата`,bold:`Жирный`,bulletList:`Маркированный список`,code:`Код`,comment:`Комментарий`,feedbackPlaceholder:`Добавьте отзыв…`,heading1:`Заголовок 1`,heading2:`Заголовок 2`,heading3:`Заголовок 3`,italic:`Курсив`,link:`Ссылка`,linkAddress:`Адрес ссылки`,linkApply:`Применить ссылку`,linkInvalid:`Укажите веб-адрес или адрес электронной почты`,linkPlaceholder:`Вставьте или введите ссылку`,linkRemove:`Удалить ссылку`,orderedList:`Нумерованный список`,paragraph:`Текст`,placeholder:`Начните писать…`,remoteEditConflict:`Ваши правки сохранены там, где ассистент изменил тот же текст, поэтому часть его правки не применена.`,strike:`Зачёркнутый`,textStyle:`Стиль текста: {style}`,toolbarAria:`Форматирование`},ht={comments:`Комментарии`,commentsWithOpenCount:`{count, plural, one {Комментарии, # открытый} few {Комментарии, # открытых} many {Комментарии, # открытых} other {Комментарии, # открытых}}`},gt={title:`Начать голосовой чат?`,detail:`Вы использовали сочетание клавиш для голосового чата. Микрофон будет включён для разговора с ассистентом, даже когда вы используете другое приложение. Завершите звонок, чтобы отключить прослушивание.`,confirm:`Продолжить`,cancel:`Отмена`,always:`Всегда начинать`},_t={allChatsPage:e,askQuestionDetail:t,secretPromptCard:n,documentChat:r,acpConnectAffordance:i,acpRunChatView:a,mobileDetailSheet:o,activityStepsPanel:s,computerUseScreenshotPreview:c,addToChatSheet:l,allowOptionsMenu:u,appAssetActions:d,actionDisplay:f,sessionGroupRow:p,assistantDesktop:m,assistantSideMenu:h,assistantSleepStage:g,assistantSwitcher:_,attachmentPreviewModal:v,attachmentTile:y,cacheBreakpointMapCard:b,cacheDiffCard:x,cacheHealthCard:S,callRail:C,cameraDeepLink:w,cameraError:T,cameraExplainer:E,cameraShutterHint:D,cameraStatusPill:O,cameraViewOptions:k,channelReferenceChip:A,channelThreadControl:j,channelTranscriptPanel:M,chatComposer:N,chatInfoPanel:P,compactionTab:F,composerSettingsMenu:I,contactActions:L,contactPromptCard:R,contactRecordCard:z,conversationActions:B,conversationActionsSheet:V,conversationAssets:H,conversationStarterDock:U,copyIdToClipboard:W,deleteConversationConfirmDialog:G,deletedMessageRow:K,documentAssetActions:q,documentConversation:J,documentViewerPage:Y,exportProgressModal:X,fileDownload:Z,groupActions:Q,groupActionsSheet:$,inspectPage:ee,liveVoiceBusy:te,liveVoiceStatus:ne,llmCallErrorCard:re,localFileEmbed:ie,localFileLink:ae,memoryRouterPlaygroundPage:oe,memoryTab:se,messageHoverActions:ce,messageLongPressActions:le,mobileCallSelector:ue,multiActivityGroup:de,quietTurnProgress:fe,overviewTab:pe,pdfPageSkeleton:me,pdfPreview:he,pinnedAppColorSwatches:ge,preferencesMenu:_e,preferencesUsagePanel:ve,previewError:ye,previewTruncationNotice:be,previewUnsupported:xe,promptTab:Se,rawDisclosure:Ce,rawTab:we,redactedCredentialChip:Te,responseTab:Ee,sidebarConversationError:De,skillDetailPanel:Oe,skillLoadDetail:ke,skillsTab:Ae,tableSurface:je,thinkingDetail:Me,toolDefinitionsContent:Ne,transcriptMessageBody:Pe,useConversationLoader:Fe,useConversationSecondaryActions:Ie,useSendMessage:Le,voiceErrors:Re,voiceRoom:ze,transcript:Be,toolDetailPanel:Ve,toolInputParameters:He,toolOutputSection:Ue,valueFields:We,frameGateHud:Ge,wakeCard:Ke,wakeDetailPanel:qe,watchRetroSurface:Je,restoreManagedCredentialButton:Ye,liveVoiceButton:Xe,cardSurface:Ze,sidebarExpandRow:Qe,cameraFrameGrid:$e,desktopHelpCard:et,dynamicPageSurface:tt,fileUploadSurface:nt,rememberDetail:rt,recallDetail:it,recallLabels:at,skillExecuteDetail:ot,chatsSection:st,sidebarSectionViewAll:ct,freeTierDailyLimitBanner:lt,emailReferenceChip:ut,emailReferenceCard:dt,chatsSettingsModal:ft,emailNavItem:pt,tiptapDocumentEditor:mt,documentViewerContainer:ht,voiceShortcutConfirmation:gt};export{i as acpConnectAffordance,a as acpRunChatView,f as actionDisplay,s as activityStepsPanel,l as addToChatSheet,e as allChatsPage,u as allowOptionsMenu,d as appAssetActions,t as askQuestionDetail,m as assistantDesktop,h as assistantSideMenu,g as assistantSleepStage,_ as assistantSwitcher,v as attachmentPreviewModal,y as attachmentTile,b as cacheBreakpointMapCard,x as cacheDiffCard,S as cacheHealthCard,C as callRail,w as cameraDeepLink,T as cameraError,E as cameraExplainer,$e as cameraFrameGrid,D as cameraShutterHint,O as cameraStatusPill,k as cameraViewOptions,Ze as cardSurface,A as channelReferenceChip,j as channelThreadControl,M as channelTranscriptPanel,N as chatComposer,P as chatInfoPanel,st as chatsSection,ft as chatsSettingsModal,F as compactionTab,I as composerSettingsMenu,c as computerUseScreenshotPreview,L as contactActions,R as contactPromptCard,z as contactRecordCard,B as conversationActions,V as conversationActionsSheet,H as conversationAssets,U as conversationStarterDock,W as copyIdToClipboard,_t as default,G as deleteConversationConfirmDialog,K as deletedMessageRow,et as desktopHelpCard,q as documentAssetActions,r as documentChat,J as documentConversation,ht as documentViewerContainer,Y as documentViewerPage,tt as dynamicPageSurface,pt as emailNavItem,dt as emailReferenceCard,ut as emailReferenceChip,X as exportProgressModal,Z as fileDownload,nt as fileUploadSurface,Ge as frameGateHud,lt as freeTierDailyLimitBanner,Q as groupActions,$ as groupActionsSheet,ee as inspectPage,te as liveVoiceBusy,Xe as liveVoiceButton,ne as liveVoiceStatus,re as llmCallErrorCard,ie as localFileEmbed,ae as localFileLink,oe as memoryRouterPlaygroundPage,se as memoryTab,ce as messageHoverActions,le as messageLongPressActions,ue as mobileCallSelector,o as mobileDetailSheet,de as multiActivityGroup,pe as overviewTab,me as pdfPageSkeleton,he as pdfPreview,ge as pinnedAppColorSwatches,_e as preferencesMenu,ve as preferencesUsagePanel,ye as previewError,be as previewTruncationNotice,xe as previewUnsupported,Se as promptTab,fe as quietTurnProgress,Ce as rawDisclosure,we as rawTab,it as recallDetail,at as recallLabels,Te as redactedCredentialChip,rt as rememberDetail,Ee as responseTab,Ye as restoreManagedCredentialButton,n as secretPromptCard,p as sessionGroupRow,De as sidebarConversationError,Qe as sidebarExpandRow,ct as sidebarSectionViewAll,Oe as skillDetailPanel,ot as skillExecuteDetail,ke as skillLoadDetail,Ae as skillsTab,je as tableSurface,Me as thinkingDetail,mt as tiptapDocumentEditor,Ne as toolDefinitionsContent,Ve as toolDetailPanel,He as toolInputParameters,Ue as toolOutputSection,Be as transcript,Pe as transcriptMessageBody,Fe as useConversationLoader,Ie as useConversationSecondaryActions,Le as useSendMessage,We as valueFields,Re as voiceErrors,ze as voiceRoom,gt as voiceShortcutConfirmation,Ke as wakeCard,qe as wakeDetailPanel,Je as watchRetroSurface};
|