@vellumai/web 0.12.6-staging.1 → 0.12.6-staging.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{a2a-invite-DvNtJAR3.js → a2a-invite-DLiMk0tx.js} +1 -1
- package/dist/assets/{about-page-C1cvW4yO.js → about-page-CiMOdcNb.js} +1 -1
- package/dist/assets/{account-page-Bgjf5RI6.js → account-page-TK116SOZ.js} +1 -1
- package/dist/assets/{account-shell-DRn4zar4.js → account-shell-81SeJquZ.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-BrqZK5yq.js → acp-run-detail-panel-CmPXAFIy.js} +1 -1
- package/dist/assets/{activation-list-route-BSzFk01N.js → activation-list-route-CI0Q1kuF.js} +1 -1
- package/dist/assets/{activity-redirect-page-C9vyj4s3.js → activity-redirect-page-C_U_6GGf.js} +1 -1
- package/dist/assets/{activity-steps-panel-UE22AUHt.js → activity-steps-panel-C4gojUTz.js} +1 -1
- package/dist/assets/add-credits-modal-Cx2D0qMT.js +1 -0
- package/dist/assets/{add-credits-modal-BJdNKyZn.js → add-credits-modal-DckEY84t.js} +1 -1
- package/dist/assets/{ai-page-BRcEoO4h.js → ai-page-BmHi1DMy.js} +1 -1
- package/dist/assets/{all-chats-page-route-Cdywc2Lw.js → all-chats-page-route-Bar5pmkt.js} +1 -1
- package/dist/assets/{android-billing-handoff-DHmIdr3k.js → android-billing-handoff-CBj4G7HW.js} +1 -1
- package/dist/assets/{animated-stat-square-De3doWUf.js → animated-stat-square-Dh0clEOc.js} +1 -1
- package/dist/assets/{api-key-screen-D46IlNCg.js → api-key-screen-CEZN1wmw.js} +1 -1
- package/dist/assets/{app-CnOToYzw.css → app-6IVvZ0HU.css} +1 -1
- package/dist/assets/{app-4aEhon_S.js → app-D0NlDYsG.js} +17 -17
- package/dist/assets/{app-info-BEZIXj2r.js → app-info-D4RcR6ew.js} +1 -1
- package/dist/assets/{archive-redirect-page-f-tQTBcO.js → archive-redirect-page-BzkHSKVl.js} +1 -1
- package/dist/assets/{assistant-handle-modal-D2Fs4sCC.js → assistant-handle-modal-CH_OHdcF.js} +1 -1
- package/dist/assets/assistant-inbox-page-route-B6wflkJF.js +8 -0
- package/dist/assets/{assistant-status-panel-DHEoS1o_.js → assistant-status-panel-DwkD7W_2.js} +1 -1
- package/dist/assets/auth-store-MTbC_MGl.js +1 -0
- package/dist/assets/{auth-welcome-screen-BGeyvWeV.js → auth-welcome-screen-DCozLA-c.js} +1 -1
- package/dist/assets/avatar-bundled-components-BzBQbsbk.js +1 -0
- package/dist/assets/{avatar-random-D2smfcQG.js → avatar-random-DITwNAON.js} +2 -2
- package/dist/assets/{await-org-header-settled-DLSu8FLl.js → await-org-header-settled-qqVu2-4K.js} +1 -1
- package/dist/assets/{background-task-detail-panel-BZGjlvvR.js → background-task-detail-panel-DKAy68TE.js} +1 -1
- package/dist/assets/{billing-page-CEL1j7Pd.js → billing-page-CKfb20qY.js} +3 -3
- package/dist/assets/{billing-redirect-page-D0rxZiKb.js → billing-redirect-page-2osoPYFq.js} +1 -1
- package/dist/assets/{bookmarks-page-3DBCCW9Z.js → bookmarks-page-BjXRVnIe.js} +1 -1
- package/dist/assets/{bundle-confirm-page-DqZwqwSV.js → bundle-confirm-page-CrdckyMV.js} +1 -1
- package/dist/assets/{channel-transcript-panel-CFWSmMFa.js → channel-transcript-panel-BuZfEA7U.js} +1 -1
- package/dist/assets/{channels-Bj0jbmsg.js → channels--GWixc4A.js} +3 -3
- package/dist/assets/{channels-CrHSbYG5.js → channels-BJA5o10X.js} +3 -3
- package/dist/assets/{channels-B-C6ns2I.js → channels-BWlMRtuu.js} +3 -3
- package/dist/assets/{channels-DS5qwHtC.js → channels-BchiOW8d.js} +3 -3
- package/dist/assets/{channels-page-route-nwdK8POV.js → channels-page-route-Cg7kY8Ai.js} +1 -1
- package/dist/assets/{chat-info-panel-4xiBaedR.js → chat-info-panel-DL7X3eOQ.js} +1 -1
- package/dist/assets/{checkout-continuation-DiZjXso_.js → checkout-continuation-CY40TSs-.js} +1 -1
- package/dist/assets/{checkout-page-CpXe7B0Y.js → checkout-page-B0xOGseN.js} +1 -1
- package/dist/assets/checkout-return-target-gl5H9x5u.js +1 -0
- package/dist/assets/command-palette-BLiF3fyX.js +1 -0
- package/dist/assets/{command-palette-BwJ1qkwj.js → command-palette-CQYESNwG.js} +1 -1
- package/dist/assets/{command-palette-window-page-s0d4qct2.js → command-palette-window-page-BB81RrWx.js} +1 -1
- package/dist/assets/{community-page-BxJhxO_B.js → community-page-BtRNJxo9.js} +1 -1
- package/dist/assets/{companion-accent-IfLn8Bat.js → companion-accent-DPZ9Nluh.js} +1 -1
- package/dist/assets/{companion-dock-zones-page-BZ_Xjx9t.js → companion-dock-zones-page-U9kZSVxS.js} +1 -1
- package/dist/assets/{companion-layout-B32ZeRsg.js → companion-layout-DjM8056C.js} +1 -1
- package/dist/assets/{companion-popover-DJZq3u_E.js → companion-popover-DwgXZsMW.js} +1 -1
- package/dist/assets/{companion-popover-page-BUuymP2G.js → companion-popover-page-CcdLMpdW.js} +1 -1
- package/dist/assets/{companion-surface-BiEC15j-.js → companion-surface-Da1cTcgR.js} +1 -1
- package/dist/assets/{companion-surface-page-1aPG3-pV.js → companion-surface-page--6xuXTFM.js} +1 -1
- package/dist/assets/{companion-tour-entry-CT1inXph.js → companion-tour-entry-GiftNvIY.js} +1 -1
- package/dist/assets/{companion-watch-frame-page-CccglwW8.js → companion-watch-frame-page-BboeANE6.js} +1 -1
- package/dist/assets/{connect-page-CU5kFWwu.js → connect-page-BqlDwAok.js} +1 -1
- package/dist/assets/{consent-controls-BU14rUBI.js → consent-controls-DtYOOcoG.js} +1 -1
- package/dist/assets/{contacts-gateway-lKGtK3Rt.js → contacts-gateway-BUQHi3Rm.js} +1 -1
- package/dist/assets/{contacts-page-route-Dsl49Gyj.js → contacts-page-route-CapX1klb.js} +1 -1
- package/dist/assets/{copy-button-DTTBuV2S.js → copy-button-5QB6tIZi.js} +1 -1
- package/dist/assets/{credential-entry-page-Bcru96sp.js → credential-entry-page-C2yTTqSI.js} +1 -1
- package/dist/assets/{credentials-page-vIwKR2Br.js → credentials-page-DTZCc_jM.js} +1 -1
- package/dist/assets/{csv-preview-DC4egHwn.js → csv-preview-Dg1E9gcw.js} +1 -1
- package/dist/assets/{danger-zone-redirect-page-R5BXWtEi.js → danger-zone-redirect-page-BxnmBzTy.js} +1 -1
- package/dist/assets/{debug-page-BZtacr2-.js → debug-page-Cv3_hpaB.js} +1 -1
- package/dist/assets/deploy-dialogs-7jGhK4l2.js +1 -0
- package/dist/assets/{deploy-dialogs-B3_x3fxQ.js → deploy-dialogs-Dy1YiAUx.js} +1 -1
- package/dist/assets/{desktop-preview-content-CKM5RXGD.js → desktop-preview-content-_hBA655n.js} +2 -2
- package/dist/assets/{desktop-status-DvjcbwTJ.js → desktop-status-t3wLUynb.js} +1 -1
- package/dist/assets/{desktop-viewer-BMPa6Aex.js → desktop-viewer-Zm7K7Goi.js} +1 -1
- package/dist/assets/{detail-card-Dmas0G3E.js → detail-card-BhbwKaee.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-DkHGogvW.js → detail-panel-stop-button-BR-k5Xmc.js} +1 -1
- package/dist/assets/{detail-primitives-DMIwvBhc.js → detail-primitives-Dgh4IUh2.js} +1 -1
- package/dist/assets/{developer-page-B6e5nSkG.js → developer-page-BeATC5qR.js} +1 -1
- package/dist/assets/{devices-redirect-page-mofL9eFw.js → devices-redirect-page-BjQ3ITZg.js} +1 -1
- package/dist/assets/{dictation-overlay-page-CwDjZbE1.js → dictation-overlay-page-Dy5vIWxC.js} +1 -1
- package/dist/assets/document-load-B7bN8N4u.js +1 -0
- package/dist/assets/{document-load-DoRmIVja.js → document-load-Ca8B9f1j.js} +1 -1
- package/dist/assets/{document-viewer-page-CQUX0aEC.js → document-viewer-page-BXGQ3JBX.js} +1 -1
- package/dist/assets/{emails-page-DwAhlaQg.js → emails-page-DJBdc2in.js} +1 -1
- package/dist/assets/{file-diff-view-BezobneE.js → file-diff-view-C6IviiAg.js} +1 -1
- package/dist/assets/{file-view-mode-jU2cqUIy.js → file-view-mode-CusGxTrO.js} +1 -1
- package/dist/assets/{general-page-doMlZdWO.js → general-page-BFn9KhSd.js} +1 -1
- package/dist/assets/{hatching-screen-D5uYMUSk.js → hatching-screen-BPBDkDXC.js} +1 -1
- package/dist/assets/{hosting-screen-N04Vxm7m.js → hosting-screen-C_1tvRyn.js} +1 -1
- package/dist/assets/{identity-page-route-DYaWHWV4.js → identity-page-route-CBYR7Ik7.js} +1 -1
- package/dist/assets/{inspect-page-Day-dKxu.js → inspect-page-C1_GK1MG.js} +3 -3
- package/dist/assets/{integrations-page-BepnHU85.js → integrations-page-tVNddBNW.js} +1 -1
- package/dist/assets/{intelligence-layout-8z9eS22i.js → intelligence-layout-B2AmY2BP.js} +1 -1
- package/dist/assets/{intelligence-layout-slots-store-J-MoKCmF.js → intelligence-layout-slots-store-D6qaMstC.js} +1 -1
- package/dist/assets/{keyboard-shortcuts-redirect-page-CtGxfm3n.js → keyboard-shortcuts-redirect-page-DCra2iW7.js} +1 -1
- package/dist/assets/{latest-assistant-text-Chtu1E3p.js → latest-assistant-text-BvuWjv7_.js} +1 -1
- package/dist/assets/{library-detail-page-BU3HVzyr.js → library-detail-page-DPas89E0.js} +1 -1
- package/dist/assets/{library-page-Co-CAon1.js → library-page-D9RL3HDn.js} +1 -1
- package/dist/assets/local-mode-BM0aWB6A.js +1 -0
- package/dist/assets/{login-page-bUkrHHVA.js → login-page-EuF3D2nA.js} +1 -1
- package/dist/assets/{logout-page-D2ibyaux.js → logout-page-BNacG6Tt.js} +1 -1
- package/dist/assets/{logs-layout-DpQF78Kt.js → logs-layout-DnsMzvJ_.js} +1 -1
- package/dist/assets/{markdown-preview-CId4qJWy.js → markdown-preview-C2Z0FRTc.js} +1 -1
- package/dist/assets/{media-preview-C1XFdtRz.js → media-preview-BcSPsOfs.js} +1 -1
- package/dist/assets/{memory-page-route--WvX90Lh.js → memory-page-route-CX33STIW.js} +1 -1
- package/dist/assets/{memory-router-playground-page-BX6jtqI2.js → memory-router-playground-page-DgzlohIX.js} +1 -1
- package/dist/assets/{message-files-panel-BWQX_2Z_.js → message-files-panel-Dc5JcFJT.js} +1 -1
- package/dist/assets/mutation-error-Bpj2rO9W.js +1 -0
- package/dist/assets/native-attachment-pickers-BEdhcWFZ.js +1 -0
- package/dist/assets/native-file-uymdgwvc.js +1 -0
- package/dist/assets/{notifications-page-CgWLXf5V.js → notifications-page-BXm0OpJB.js} +1 -1
- package/dist/assets/{oauth-complete-page-DZlImmvw.js → oauth-complete-page-D0ymRcSM.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-C1Dc5fk0.js → oauth-popup-complete-page-8iZS6PLm.js} +1 -1
- package/dist/assets/paired-platform-identity-BumKYxOS.js +1 -0
- package/dist/assets/{pairing-page-Dhcr9SjD.js → pairing-page-ClXvlMJw.js} +1 -1
- package/dist/assets/password-reset-page-C4ulvC0x.js +1 -0
- package/dist/assets/{pdf-file-preview-D_ClglAA.js → pdf-file-preview-Bl5mk1_3.js} +1 -1
- package/dist/assets/{permission-guide-page-DHZIzkOy.js → permission-guide-page-BbHEjtyD.js} +1 -1
- package/dist/assets/{permission-setup-Dmd2zFPe.js → permission-setup-3fJQB-KB.js} +1 -1
- package/dist/assets/{personality-page-BhAHEnK3.js → personality-page-BTNI4eG5.js} +1 -1
- package/dist/assets/{personality-page-CE8DlY9y.js → personality-page-CFaJc26z.js} +1 -1
- package/dist/assets/{personality-sliders-pVdEr3Fn.js → personality-sliders-CJrh8-AP.js} +1 -1
- package/dist/assets/{plans-page-CkIK_N4U.js → plans-page-DSDYvUo5.js} +1 -1
- package/dist/assets/{platform-loopback-page-C0s9CAsp.js → platform-loopback-page-BDR7i_cY.js} +1 -1
- package/dist/assets/{plugin-detail-page-C9zJ32IV.js → plugin-detail-page-BJfIO-HZ.js} +1 -1
- package/dist/assets/{plugins-page-Cf_vJwd8.js → plugins-page-b9i4h7rI.js} +1 -1
- package/dist/assets/plugins-surface-5VJsSvrd.js +1 -0
- package/dist/assets/{preview-error-Cxcn_uOl.js → preview-error-BKpqKOCK.js} +1 -1
- package/dist/assets/{privacy-page-v0Bl1gUD.js → privacy-page-CWwydiKF.js} +1 -1
- package/dist/assets/{privacy-screen-DZWucyGJ.js → privacy-screen-GBRjX2Y3.js} +1 -1
- package/dist/assets/{profile-card-jvtX_IRJ.js → profile-card-ClUTN6Rc.js} +1 -1
- package/dist/assets/{provider-callback-page-DadzY3GT.js → provider-callback-page-0z-aomMf.js} +1 -1
- package/dist/assets/{provider-key-DUY2mZm5.js → provider-key-DTk8I67Q.js} +1 -1
- package/dist/assets/{provider-signup-page-BMjPqmWY.js → provider-signup-page-BKlREM_2.js} +1 -1
- package/dist/assets/{quick-input-page-CSBA98SR.js → quick-input-page-Ddg_UlmO.js} +1 -1
- package/dist/assets/referral-modal-Bx__UjCU.js +1 -0
- package/dist/assets/{referral-modal-0EhqMTDP.js → referral-modal-DZObiadq.js} +1 -1
- package/dist/assets/{research-mock-page-pdYsSAXo.js → research-mock-page-CutRQF5f.js} +1 -1
- package/dist/assets/{research-onboarding-route-DQDC7A-X.js → research-onboarding-route-DBQZHDC7.js} +1 -1
- package/dist/assets/{review-terms-screen-D9ZsDaFc.js → review-terms-screen-dBbWlnXP.js} +1 -1
- package/dist/assets/routes-DEGM-k2Y.js +1 -0
- package/dist/assets/{schedules-BZK7XLW4.js → schedules-0KQuWZ-V.js} +1 -1
- package/dist/assets/{schedules-page-DzosmuUG.js → schedules-page-BvbL-8N9.js} +1 -1
- package/dist/assets/{security-redirect-page-BfEf2yb3.js → security-redirect-page-CH4u9S3v.js} +1 -1
- package/dist/assets/{select-assistant-screen-ByEWxket.js → select-assistant-screen-C5892FeX.js} +1 -1
- package/dist/assets/{self-hosted-servers-BnexEHid.js → self-hosted-servers-C__IKdzk.js} +1 -1
- package/dist/assets/{service-form-controls-L7ipWS7W.js → service-form-controls-CjcwqBZf.js} +1 -1
- package/dist/assets/{setting-row-CqsRGW0M.js → setting-row-oSonbOdy.js} +1 -1
- package/dist/assets/{settings-layout-dtUgeZGT.js → settings-layout-Cf0NuysH.js} +1 -1
- package/dist/assets/{share-feedback-modal-CICNVpZG.js → share-feedback-modal-C7IjV0PW.js} +1 -1
- package/dist/assets/share-feedback-modal-DjrtiKSJ.js +1 -0
- package/dist/assets/{sidebar-tree-CVlGLFk1.js → sidebar-tree-BLqbyk5v.js} +1 -1
- package/dist/assets/{signup-page-BawjjAk9.js → signup-page-BTkcbn24.js} +1 -1
- package/dist/assets/{signup-shell-C4zWZKlP.js → signup-shell-DrGfLGsz.js} +1 -1
- package/dist/assets/{skill-detail-page-BR1VzP5J.js → skill-detail-page-DZ_FXWFT.js} +1 -1
- package/dist/assets/{skill-detail-panel-Ch4YwxDI.js → skill-detail-panel-xL20TJgL.js} +1 -1
- package/dist/assets/{skill-removal-dialog-ph42N7Fl.js → skill-removal-dialog-C4WF7sn9.js} +1 -1
- package/dist/assets/{skills-page-B54_bM3G.js → skills-page-C0ikFeI-.js} +1 -1
- package/dist/assets/{sounds-page-B5dZjlPM.js → sounds-page-BYZulvt8.js} +1 -1
- package/dist/assets/{start-screen-c_PymAl2.js → start-screen-CjIOV9Ig.js} +1 -1
- package/dist/assets/{step-detail-header-ygmZC0KS.js → step-detail-header-BsK4vZvH.js} +1 -1
- package/dist/assets/{stt-language-picker-modal-CMFxMa9N.js → stt-language-picker-modal-ArB52Kbp.js} +1 -1
- package/dist/assets/{subagent-detail-panel-BS4IYvJn.js → subagent-detail-panel-Cqr5RNAr.js} +1 -1
- package/dist/assets/{superpowers-page-DKB6-Ybz.js → superpowers-page-CM-_gkRq.js} +1 -1
- package/dist/assets/{system-events-page-B44LpDTv.js → system-events-page-q1CCjaae.js} +1 -1
- package/dist/assets/{system-events-redirect-page-C62wCy1z.js → system-events-redirect-page-D0nYClwA.js} +1 -1
- package/dist/assets/{tabular-grid-D5w2zPZ2.js → tabular-grid-ClRQmbrS.js} +1 -1
- package/dist/assets/{teleport-gateway-client-B8BG_rTx.js → teleport-gateway-client-BCQlm0IG.js} +1 -1
- package/dist/assets/{text-preview-Ofuqm3k1.js → text-preview-DisLM6Ix.js} +1 -1
- package/dist/assets/{theme-stage-page--f110ocQ.js → theme-stage-page-B4lCVU0g.js} +1 -1
- package/dist/assets/{tiptap-document-editor-hK0z9JkB.js → tiptap-document-editor-NU9u7Q3B.js} +1 -1
- package/dist/assets/tool-detail-panel-BZPy9LTd.js +1 -0
- package/dist/assets/{tool-detail-panel-B58LHS7C.js → tool-detail-panel-BgULoaCP.js} +1 -1
- package/dist/assets/{trait-cycle-row-Bn8sB1ll.js → trait-cycle-row-h6tNq4lj.js} +1 -1
- package/dist/assets/{upgrade-cancel-page-YlN6tF2j.js → upgrade-cancel-page-CSFfsg3T.js} +1 -1
- package/dist/assets/{upgrade-success-page-B1qO-4bt.js → upgrade-success-page-Bb9vkeFS.js} +1 -1
- package/dist/assets/{usage-redirect-page-B_r-Rjza.js → usage-redirect-page-DxSTmtpM.js} +1 -1
- package/dist/assets/{use-app-delete-C3OP3RL_.js → use-app-delete-CyCUfXGp.js} +1 -1
- package/dist/assets/{use-assistant-identity-details-CgpWYPrD.js → use-assistant-identity-details-ft05GaL-.js} +1 -1
- package/dist/assets/use-channel-trust-floors-DeIos7Sw.js +1 -0
- package/dist/assets/{use-checkout-dismiss-refresh-CxHKmnto.js → use-checkout-dismiss-refresh-CVLzCRhG.js} +1 -1
- package/dist/assets/{use-edge-swipe-back-D0Hv2Vbo.js → use-edge-swipe-back-kH1IWvhn.js} +1 -1
- package/dist/assets/{use-hotkey-recorder-CPwPHbVu.js → use-hotkey-recorder-B0ho6P1Q.js} +1 -1
- package/dist/assets/{use-invite-link-dialog-YrW4BryT.js → use-invite-link-dialog-BWTyTo38.js} +1 -1
- package/dist/assets/{use-plugins-list-DbtoYlBb.js → use-plugins-list-Dg7cmWWy.js} +1 -1
- package/dist/assets/{use-return-to-short-circuit-DIiSf2mw.js → use-return-to-short-circuit-DZLF2zb8.js} +1 -1
- package/dist/assets/{use-side-list-room-DF3yxstr.js → use-side-list-room-Bm4W05s8.js} +1 -1
- package/dist/assets/{use-skill-actions-C-MM5fH5.js → use-skill-actions-BDB6OPDL.js} +1 -1
- package/dist/assets/{use-skill-detail-files-BC8o1y4B.js → use-skill-detail-files-DOJu82AO.js} +1 -1
- package/dist/assets/use-supports-credentials-settings-VPsbB7QL.js +1 -0
- package/dist/assets/{use-transcript-message-by-id-yY3_Y5YT.js → use-transcript-message-by-id-ImJNR0ZS.js} +1 -1
- package/dist/assets/{voice-page-C6plqSbB.js → voice-page-D6iJnwpE.js} +1 -1
- package/dist/assets/{wake-detail-panel-ByOMpvzL.js → wake-detail-panel-BBCXrrwt.js} +1 -1
- package/dist/assets/{weather-forecast-display-wWI7BbOq.js → weather-forecast-display-D38nUHK1.js} +1 -1
- package/dist/assets/{welcome-screen-BrWlqKCU.js → welcome-screen-CUh7JIoK.js} +1 -1
- package/dist/assets/{workflow-detail-panel-Tur0cTTa.js → workflow-detail-panel-Cle_xFav.js} +1 -1
- package/dist/assets/{workspace-page-BC6DuJ6j.js → workspace-page-BhdFaoFV.js} +1 -1
- package/dist/assets/{xlsx-preview-QwpwZ8Ls.js → xlsx-preview-DVein85j.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/add-credits-modal-CTwFNbFw.js +0 -1
- package/dist/assets/assistant-inbox-page-route-BNxtQgVH.js +0 -8
- package/dist/assets/auth-store-Ck9VwH27.js +0 -1
- package/dist/assets/avatar-bundled-components-BvhWO4x6.js +0 -1
- package/dist/assets/checkout-return-target-BMk9sOs5.js +0 -1
- package/dist/assets/command-palette-vN1QduVf.js +0 -1
- package/dist/assets/deploy-dialogs-gl-8Gfwg.js +0 -1
- package/dist/assets/document-load-vorRpGY8.js +0 -1
- package/dist/assets/local-mode-BDAFwrps.js +0 -1
- package/dist/assets/mutation-error-1lzyVoa-.js +0 -1
- package/dist/assets/native-attachment-pickers-C9F0ZR30.js +0 -1
- package/dist/assets/native-file-_gmszDPP.js +0 -1
- package/dist/assets/paired-platform-identity-CLNgDq2A.js +0 -1
- package/dist/assets/password-reset-page-DwD-Tr9u.js +0 -1
- package/dist/assets/plugins-surface-tkjP75qI.js +0 -1
- package/dist/assets/referral-modal-DpPM4ySm.js +0 -1
- package/dist/assets/routes--G7bm1Kz.js +0 -1
- package/dist/assets/share-feedback-modal-CVfT5Isv.js +0 -1
- package/dist/assets/tool-detail-panel-hGcjKO-7.js +0 -1
- package/dist/assets/use-channel-trust-floors-oeRMVBZa.js +0 -1
- package/dist/assets/use-supports-credentials-settings-C5z3u-mM.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DS as e}from"./app-
|
|
1
|
+
import{DS as e}from"./app-D0NlDYsG.js";import{_ as t,d as n,r,t as i}from"./react-B9IgSVeK.js";var a=i();function o(){let[i]=t(),{hash:o}=n(),s=i.toString();return(0,a.jsx)(r,{replace:!0,to:`${e.settings.usage}${s?`?${s}`:``}${o}`})}export{o as BillingRedirectPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DS as e,Dv as t,Ga as n,KC as r,aw as i,dn as a,ru as o,un as s,yo as c}from"./app-
|
|
1
|
+
import{DS as e,Dv as t,Ga as n,KC as r,aw as i,dn as a,ru as o,un as s,yo as c}from"./app-D0NlDYsG.js";import{E as l}from"./vendor-CtXGFqsu.js";import{f as u,r as d,t as f}from"./react-B9IgSVeK.js";import{D as p,Et as m,Yn as h,i as g,va as _}from"./icons-C0wyat6T.js";var v=f();function y(e){if(e==null)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString(void 0,{month:`short`,day:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0})}function b({t:e}){return(0,v.jsx)(r,{children:(0,v.jsxs)(`div`,{className:`flex min-h-[400px] flex-col items-center justify-center px-6 py-16 text-center`,children:[(0,v.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,v.jsx)(_,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`})}),(0,v.jsx)(`h2`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:e(`bookmarksPage.emptyTitle`)}),(0,v.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:e(`bookmarksPage.emptyDescription`)})]})})}function x({bookmark:e,isFirst:t,onOpen:n,onRemove:r,t:a}){let o=c()(e.conversationTitle),s=e.messageRole!==`user`,l=y(e.createdAt);return(0,v.jsxs)(`div`,{className:`flex items-start gap-3 py-3 ${t?``:`border-t border-[var(--border-base)]`}`,children:[(0,v.jsx)(`span`,{"aria-hidden":!0,className:`mt-1 h-8 w-1 shrink-0 rounded-full`,style:{backgroundColor:s?`var(--content-default)`:`var(--content-tertiary)`}}),(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,v.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:o}),l?(0,v.jsx)(`span`,{className:`shrink-0 text-body-small-default text-[var(--content-tertiary)]`,children:l}):null]}),e.messagePreview?(0,v.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-body-small-default text-[var(--content-tertiary)]`,children:e.messagePreview}):null]}),(0,v.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,v.jsx)(i,{variant:`outlined`,onClick:n,children:a(`bookmarksPage.open`)}),(0,v.jsx)(i,{variant:`ghost`,iconOnly:(0,v.jsx)(g,{}),iconOnlyGlyphClassName:`[&_svg]:size-4`,expandOnMobile:!1,onClick:r,tooltip:a(`bookmarksPage.removeBookmark`),"aria-label":a(`bookmarksPage.removeBookmark`)})]})]})}function S(){let{t:c}=l(`settings`),f=u(),{bookmarks:g,isLoading:_,isError:y,refetch:S}=a(),C=s(),w=n();return t.use.hydrated()&&!w?(0,v.jsx)(d,{replace:!0,to:e.settings.general}):_?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(`div`,{className:`flex min-h-[400px] items-center justify-center`,children:(0,v.jsx)(h,{className:`h-6 w-6 animate-spin text-[var(--content-disabled)]`})})}):y?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(r,{children:(0,v.jsxs)(`div`,{className:`flex min-h-[400px] flex-col items-center justify-center px-6 py-16 text-center`,children:[(0,v.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--system-negative-weak)]`,children:(0,v.jsx)(p,{className:`h-6 w-6 text-[var(--system-negative-strong)]`})}),(0,v.jsx)(`h2`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:c(`bookmarksPage.errorTitle`)}),(0,v.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:c(`bookmarksPage.errorDescription`)}),(0,v.jsxs)(i,{variant:`outlined`,onClick:S,className:`mt-4`,children:[(0,v.jsx)(m,{className:`h-4 w-4`}),c(`bookmarksPage.retry`)]})]})})}):g.length===0?(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(b,{t:c})}):(0,v.jsx)(`div`,{className:`w-full`,children:(0,v.jsx)(r,{noPadding:!0,className:`px-4`,children:g.map((e,t)=>(0,v.jsx)(x,{bookmark:e,isFirst:t===0,onOpen:()=>o(f,e.conversationId,{messageId:e.messageId}),onRemove:()=>{C(e.messageId,e.conversationId,!0)},t:c},e.id))})})}export{S as BookmarksPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Qo as t}from"./app-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Qo as t}from"./app-D0NlDYsG.js";import{E as n}from"./vendor-CtXGFqsu.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};
|
package/dist/assets/{channel-transcript-panel-CFWSmMFa.js → channel-transcript-panel-BuZfEA7U.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{BC as t,Bt as n,Ht as r,JC as i,Jh as a,Sn as o,Xt as s,_C as c,aw as l,cr as u,cx as d,dr as f,er as p,fa as m,gC as h,hC as g,kr as _,la as v,lg as y,lr as b,qy as x,rr as S,to as C,uS as w,ur as T,xn as E}from"./app-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{BC as t,Bt as n,Ht as r,JC as i,Jh as a,Sn as o,Xt as s,_C as c,aw as l,cr as u,cx as d,dr as f,er as p,fa as m,gC as h,hC as g,kr as _,la as v,lg as y,lr as b,qy as x,rr as S,to as C,uS as w,ur as T,xn as E}from"./app-D0NlDYsG.js";import{E as D}from"./vendor-CtXGFqsu.js";import{t as O,x as k}from"./react-B9IgSVeK.js";import{Ji as A,Ya as j,Zr as M}from"./icons-C0wyat6T.js";var N=j(`corner-up-left`,[[`path`,{d:`M20 20v-7a4 4 0 0 0-4-4H4`,key:`1nkjon`}],[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}]]),P=e(k(),1),F=O();function I({entry:e,channelLabel:t,assistantName:a,isReferenced:o,onToggleReference:u}){let{t:d}=D(`chat`),f=b(e.timestamp),p=e.role===`user`?d(`channelTranscriptPanel.unknownSender`):a??d(`channelTranscriptPanel.assistantSender`),m=e.provenance.senderName??p,_=e.provenance.reaction;return(0,F.jsxs)(`article`,{"data-reveal-row":``,"data-testid":`channel-transcript-entry`,className:`group flex flex-col gap-1 rounded-lg px-2 py-2 hover:bg-[var(--surface-active)]`,children:[(0,F.jsxs)(`header`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,F.jsx)(i,{as:`span`,variant:`body-small-emphasised`,className:`min-w-0 truncate text-[var(--content-default)]`,children:m}),f?(0,F.jsx)(i,{as:`span`,variant:`body-small-lighter`,title:r(f),className:`shrink-0 text-[var(--content-tertiary)]`,children:n(f)}):null,(0,F.jsx)(`span`,{className:`flex-1`}),T(e)?(0,F.jsx)(l,{variant:`ghost`,size:`compact`,"data-reveal":``,active:o,leftIcon:o?(0,F.jsx)(A,{}):(0,F.jsx)(N,{}),onClick:()=>u(e),"aria-pressed":o,"aria-label":o?d(`channelTranscriptPanel.removeReferenceAria`):d(`channelTranscriptPanel.referenceAria`,{channel:t}),className:`shrink-0`,children:d(o?`channelTranscriptPanel.referenced`:`channelTranscriptPanel.reference`)}):null]}),_?(0,F.jsx)(i,{as:`p`,variant:`body-small-default`,className:`text-[var(--content-secondary)]`,children:d(_.op===`added`?`channelTranscriptPanel.reactionAdded`:`channelTranscriptPanel.reactionRemoved`,{emoji:s(_)})}):(0,F.jsxs)(i,{as:`div`,variant:`body-small-default`,className:`${h} mb-0`,children:[(0,F.jsx)(`span`,{"aria-hidden":`true`,className:g}),(0,F.jsx)(`span`,{className:`${c} whitespace-pre-wrap break-words`,children:e.text||d(`channelTranscriptPanel.noText`)})]})]})}function L({sidecarRef:e,threadName:n,sourceHref:r,entries:a,assistantName:o,referencedEntryId:s,onToggleReference:c,onClose:u}){let{t:d}=D(`chat`),h=m(e.channelId),g=n?d(`channelTranscriptPanel.namedTitle`,{channel:h,thread:n}):d(`channelTranscriptPanel.title`,{channel:h});return(0,F.jsx)(p,{icon:(0,F.jsx)(v,{channelId:e.channelId,className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`}),title:g,headerTrailing:(0,F.jsx)(t,{tone:`neutral`,children:d(`channelTranscriptPanel.readOnly`)}),headerActions:r?(0,F.jsx)(l,{asChild:!0,variant:`outlined`,leftIcon:(0,F.jsx)(M,{}),className:`shrink-0`,children:(0,F.jsx)(`a`,{href:r,target:`_blank`,rel:`noreferrer noopener`,onClick:e=>x(e,r),children:d(`channelTranscriptPanel.openInChannel`,{channel:h})})}):void 0,closeLabel:d(`channelTranscriptPanel.closeAria`),closeTooltip:d(`channelTranscriptPanel.closeTooltip`),onClose:u,children:(0,F.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,F.jsx)(i,{as:`p`,variant:`body-small-lighter`,className:`text-[var(--content-tertiary)]`,children:d(`channelTranscriptPanel.readOnlyNote`,{channel:h})}),a.length===0?(0,F.jsx)(S,{placement:`panel`,children:f(e.channelId)?d(`channelTranscriptPanel.emptyThread`,{channel:h}):d(`channelTranscriptPanel.emptyNoMessageDetail`,{channel:h})}):(0,F.jsx)(`div`,{className:`flex flex-col gap-1`,children:a.map(e=>(0,F.jsx)(I,{entry:e,channelLabel:h,assistantName:o,isReferenced:s===e.id,onToggleReference:c},e.id))})]})})}function R({sidecarRef:e,onClose:t}){let n=d.use.activeAssistantId(),r=y.use.activeConversationId(),{target:i,entries:s}=u({conversationId:r,conversation:C(n,r,!0),messages:_()}),c=w.use.name(),l=E.use.reference(),f=E.use.toggleReference(),p=a(i,e),h=p?s:[],g=m(e.channelId),v=(0,P.useCallback)(e=>{i&&f(o({entry:e,target:i,channelLabel:g}))},[i,f,g]);return(0,F.jsx)(L,{sidecarRef:e,threadName:p?i?.threadName:void 0,sourceHref:p?i?.sourceHref:void 0,entries:h,assistantName:c,referencedEntryId:l?.messageId??null,onToggleReference:v,onClose:t})}export{R as ChannelTranscriptPanel};
|
|
@@ -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…`,confirm:`Confirmar`,create:`Crear`,createEmailFailedFallback:`No se pudo crear la dirección de correo.`,creating:`Creando…`,domainLabel:`Dominio`,domainRegisteredToast:`Dominio {domain} registrado.`,domainReleaseFailedToast:`No se pudo liberar el dominio.`,domainReleasedToast:`Dominio liberado.`,emailAddressLabel:`Dirección de correo`,emailCreatedToast:`Dirección de correo creada.`,emailRemoveFailedToast:`No se pudo eliminar la dirección de correo.`,emailRemovedToast:`Dirección de correo eliminada.`,emailUsernameAriaLabel:`Nombre de usuario del correo`,emailUsernamePlaceholder:`hola`,enterSubdomainError:`Introduce un subdominio.`,enterUsernameError:`Introduce un nombre de usuario de correo.`,inboxSetupBody:`La dirección de tu asistente se crea desde la bandeja del asistente, donde se lee su correo. Ábrela para elegir la dirección.`,inboxSetupButton:`Abrir bandeja del asistente`,inboxSetupTitle:`Configura el correo en la bandeja del asistente`,register:`Registrar`,registerDomainFailedFallback:`No se pudo registrar el dominio.`,registering:`Registrando…`,releaseConfirm:`Liberar`,releaseDomainAriaLabel:`Liberar dominio`,releaseDomainConfirmMessage:`¿Seguro que quieres liberar <code>{domain}</code>? El subdominio quedará disponible para que otros lo reclamen.`,releaseDomainTitle:`Liberar dominio`,removeAddressFirstToast:`Elimina primero la dirección de correo.`,removeConfirm:`Eliminar`,removeEmailAriaLabel:`Eliminar dirección de correo`,removeEmailConfirmMessage:`¿Seguro que quieres eliminar <code>{address}</code>? Tu asistente ya no podrá enviar ni recibir correo en esta dirección.`,removeEmailTitle:`Eliminar dirección de correo`,repairConfirmMessage:`Se conserva tu dirección de correo actual. La configuración contactará al proveedor de correo y al DNS de <code>{domain}</code>.`,repairConfirmTitle:`¿Completar la configuración del dominio?`,repairFailedFallback:`No se pudo iniciar la configuración del dominio. Inténtalo de nuevo en un momento.`,repairNoticeBody:`Tu dirección de correo está lista, pero este dominio aún no está configurado con el proveedor de correo. Completa la configuración para empezar a enviar y recibir correo.`,repairNoticeTitle:`Configuración del dominio requerida`,repairStartedToast:`Se inició la configuración del dominio. La verificación suele tardar unos minutos.`,retry:`Reintentar`,setSubdomainConfirmMessage:`<code>{subdomain}</code> también será el identificador público de tu asistente. No podrás cambiarlo una vez establecido.`,setSubdomainTitle:`Establecer subdominio`,subdomainExamplePlaceholder:`mi-asistente`,subdomainFallback:`subdominio`,subdomainHint:`Cada asistente tiene su propio subdominio. Solo letras minúsculas, números y guiones.`,subdomainLabel:`Subdominio`,subscriptionWarningBody:`No pudimos contactar con el servicio de facturación. El formulario siguiente asume que el correo gestionado está habilitado para tu organización. Si no lo está, registrar un dominio fallará.`,subscriptionWarningTitle:`No se pudo verificar el estado de la suscripción`,upgradeButton:`Mejorar plan`,upgradeNoticeBody:`Mejora a un plan que incluya una dirección de correo para tu asistente. No hace falta configurar un proveedor.`,upgradeNoticeTitle:`Dale a tu asistente su propia dirección de correo`,usageSummary:`{sent} / {limit} enviados hoy · {received} recibidos`},_={title:`Ajustes del correo`,description:`La dirección de tu asistente
|
|
9
|
+
Actívalo con extrema precaución.`,confirmAction:`Permitir desconocidos`}},s={heading:`Acceso predeterminado`,subtitle:`Cuánto hace {assistant} por su cuenta, según el tipo de conversación. Cada canal puede anular esto más abajo, y las <trustRules>Reglas de confianza</trustRules> afinan cuándo pregunta.`,bucketAria:`Acceso predeterminado del asistente para {bucket}`},c={defaultSuffix:`predeterminado`,defaultPlaceholder:`Predeterminado`},l={defaultMarker:`· predeterminado`},u={overridesLoadFailed:`No se pudieron cargar los ajustes de acceso. Estos controles seguirán desactivados hasta que se carguen. Prueba a volver a abrir esta página.`,perChannelOverrides:`Anulaciones por canal`},d={heading:`Comportamiento en hilos`,selectAria:`Comportamiento de Slack en hilos`,mentionsOnly:`Solo menciones`,mentionsOnlyHelp:`El bot solo responde cuando se le menciona con @.`,followThreads:`Seguir el hilo tras la primera mención`,followThreadsHelp:`Tras una mención con @ en un hilo, el bot escucha el resto de ese hilo.`},f={presenceHint:`Añádelo con <invite>/invite {handle}</invite> o quítalo con <remove>/remove {handle}</remove> en ese canal de Slack. Aquí solo aparecen los canales en los que está {assistant}.`,loading:`Cargando…`,loadFailed:`No se pudieron cargar los canales. Prueba a volver a abrir esta página.`,emptyTitle:`Aún no hay canales`,searchPlaceholder:`Buscar canales`,searchAria:`Buscar canales`,filterGroupAria:`Filtrar canales por tipo`,noMatches:`Ningún canal coincide.`,accessAria:`Acceso del asistente en {channel}`,filterAll:`{count, plural, one {Todos (#)} other {Todos (#)}}`,filterPublic:`{count, plural, one {Público (#)} other {Públicos (#)}}`,filterPrivate:`{count, plural, one {Privado (#)} other {Privados (#)}}`},p={accountSid:`SID de la cuenta`,authToken:`Token de autenticación`,authTokenPlaceholder:`Token de autenticación de Twilio`,saving:`Guardando…`,save:`Guardar`},m={slack:{label:`Slack`,disconnectMessage:`Esto borra los tokens de bot y de aplicación de Slack guardados para este asistente. Puedes volver a conectarlo más tarde.`},telegram:{label:`Telegram`,disconnectMessage:`Esto borra el token de bot de Telegram guardado para este asistente. Puedes volver a conectarlo más tarde.`,disconnectedPitch:`Conecta un bot de Telegram para que {assistant} pueda enviar y recibir mensajes en Telegram.`},discord:{label:`Discord`,disconnectedPitch:`Conecta un bot de Discord para que {assistant} pueda leer y responder en tu servidor.`,disconnectMessage:`Esto borra el token del bot de Discord de este asistente y el bot deja de recibir mensajes. El bot sigue en tu servidor hasta que lo elimines alli.`},email:{label:`Correo`},phone:{label:`Llamadas telefónicas`,disconnectMessage:`Esto borra las credenciales de Twilio guardadas para este asistente. Puedes volver a conectarlo más tarde.`,disconnectedPitch:`Conecta tu cuenta de Twilio para que {assistant} pueda hacer y contestar llamadas.`}},h={apiKeyConfigured:`Clave API de {providerName} configurada. Para reconfigurar, ejecuta la habilidad <code>{setupSkill}</code>.`,connecting:`Conectando con la plataforma Vellum…`,openProvider:`Abrir {providerName}`,platformLoginNotice:`Inicia sesión en la plataforma Vellum para administrar la configuración de correo.`,providerLabel:`Proveedor`,saveSuccessToast:`Configuración de correo guardada.`,setupInstructions:`Configura {providerName} mediante la CLI del asistente: pídele al asistente que ejecute la habilidad <code>{setupSkill}</code>. Te guiará para guardar la clave API, detectar el dominio y (opcionalmente) configurar un webhook entrante.`,subtitle:`Configura cómo tu asistente envía y recibe correo`,title:`Correo`},g={addressLabel:`Dirección`,checkingSubscription:`Comprobando suscripción…`,completeSetup:`Completar configuración del dominio`,completingSetup:`Completando configuración…`,confirm:`Confirmar`,copiedAddress:`Copiado`,copyAddressAriaLabel:`Copiar dirección`,copyAddressFailed:`No se pudo copiar la dirección.`,create:`Crear`,createEmailFailedFallback:`No se pudo crear la dirección de correo.`,creating:`Creando…`,domainLabel:`Dominio`,domainRegisteredToast:`Dominio {domain} registrado.`,domainReleaseFailedToast:`No se pudo liberar el dominio.`,domainReleasedToast:`Dominio liberado.`,emailAddressLabel:`Dirección de correo`,emailCreatedToast:`Dirección de correo creada.`,emailRemoveFailedToast:`No se pudo eliminar la dirección de correo.`,emailRemovedToast:`Dirección de correo eliminada.`,emailUsernameAriaLabel:`Nombre de usuario del correo`,emailUsernamePlaceholder:`hola`,enterSubdomainError:`Introduce un subdominio.`,enterUsernameError:`Introduce un nombre de usuario de correo.`,inboxSetupBody:`La dirección de tu asistente se crea desde la bandeja del asistente, donde se lee su correo. Ábrela para elegir la dirección.`,inboxSetupButton:`Abrir bandeja del asistente`,inboxSetupTitle:`Configura el correo en la bandeja del asistente`,register:`Registrar`,registerDomainFailedFallback:`No se pudo registrar el dominio.`,registering:`Registrando…`,releaseConfirm:`Liberar`,releaseDomainAriaLabel:`Liberar dominio`,releaseDomainConfirmMessage:`¿Seguro que quieres liberar <code>{domain}</code>? El subdominio quedará disponible para que otros lo reclamen.`,releaseDomainTitle:`Liberar dominio`,removeAddressFirstToast:`Elimina primero la dirección de correo.`,removeConfirm:`Eliminar`,removeEmailAriaLabel:`Eliminar dirección de correo`,removeEmailConfirmMessage:`¿Seguro que quieres eliminar <code>{address}</code>? Tu asistente ya no podrá enviar ni recibir correo en esta dirección.`,removeEmailTitle:`Eliminar dirección de correo`,repairConfirmMessage:`Se conserva tu dirección de correo actual. La configuración contactará al proveedor de correo y al DNS de <code>{domain}</code>.`,repairConfirmTitle:`¿Completar la configuración del dominio?`,repairFailedFallback:`No se pudo iniciar la configuración del dominio. Inténtalo de nuevo en un momento.`,repairNoticeBody:`Tu dirección de correo está lista, pero este dominio aún no está configurado con el proveedor de correo. Completa la configuración para empezar a enviar y recibir correo.`,repairNoticeTitle:`Configuración del dominio requerida`,repairStartedToast:`Se inició la configuración del dominio. La verificación suele tardar unos minutos.`,retry:`Reintentar`,setSubdomainConfirmMessage:`<code>{subdomain}</code> también será el identificador público de tu asistente. No podrás cambiarlo una vez establecido.`,setSubdomainTitle:`Establecer subdominio`,subdomainExamplePlaceholder:`mi-asistente`,subdomainFallback:`subdominio`,subdomainHint:`Cada asistente tiene su propio subdominio. Solo letras minúsculas, números y guiones.`,subdomainLabel:`Subdominio`,subscriptionWarningBody:`No pudimos contactar con el servicio de facturación. El formulario siguiente asume que el correo gestionado está habilitado para tu organización. Si no lo está, registrar un dominio fallará.`,subscriptionWarningTitle:`No se pudo verificar el estado de la suscripción`,upgradeButton:`Mejorar plan`,upgradeNoticeBody:`Mejora a un plan que incluya una dirección de correo para tu asistente. No hace falta configurar un proveedor.`,upgradeNoticeTitle:`Dale a tu asistente su propia dirección de correo`,usageSummary:`{sent} / {limit} enviados hoy · {received} recibidos`},_={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:`正在完成设置…`,confirm:`确认`,create:`创建`,createEmailFailedFallback:`创建电子邮件地址失败。`,creating:`正在创建…`,domainLabel:`域名`,domainRegisteredToast:`域名 {domain} 已注册。`,domainReleaseFailedToast:`释放域名失败。`,domainReleasedToast:`域名已释放。`,emailAddressLabel:`电子邮件地址`,emailCreatedToast:`电子邮件地址已创建。`,emailRemoveFailedToast:`删除电子邮件地址失败。`,emailRemovedToast:`电子邮件地址已删除。`,emailUsernameAriaLabel:`电子邮件用户名`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`请输入子域名。`,enterUsernameError:`请输入电子邮件用户名。`,inboxSetupBody:`助手的地址在助手收件箱中创建,其邮件也在那里阅读。打开收件箱以选择地址。`,inboxSetupButton:`打开助手收件箱`,inboxSetupTitle:`在助手收件箱中设置电子邮件`,register:`注册`,registerDomainFailedFallback:`注册域名失败。`,registering:`正在注册…`,releaseConfirm:`释放`,releaseDomainAriaLabel:`释放域名`,releaseDomainConfirmMessage:`您确定要释放 <code>{domain}</code> 吗?该子域名将可供其他人认领。`,releaseDomainTitle:`释放域名`,removeAddressFirstToast:`请先删除电子邮件地址。`,removeConfirm:`删除`,removeEmailAriaLabel:`删除电子邮件地址`,removeEmailConfirmMessage:`您确定要删除 <code>{address}</code> 吗?您的助手将无法再通过此地址发送或接收电子邮件。`,removeEmailTitle:`删除电子邮件地址`,repairConfirmMessage:`将保留您现有的电子邮件地址。设置会为 <code>{domain}</code> 联系电子邮件提供商和 DNS。`,repairConfirmTitle:`完成域名设置?`,repairFailedFallback:`无法开始域名设置。请稍后再试。`,repairNoticeBody:`您的电子邮件地址已就绪,但此域名尚未在电子邮件提供商处设置。完成设置后即可开始发送和接收邮件。`,repairNoticeTitle:`需要设置域名`,repairStartedToast:`已开始域名设置。验证通常需要几分钟。`,retry:`重试`,setSubdomainConfirmMessage:`<code>{subdomain}</code> 也将成为您助手的公开句柄。设置后将无法更改。`,setSubdomainTitle:`设置子域名`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`子域名`,subdomainHint:`每个助手都有自己的子域名。仅限小写字母、数字和连字符。`,subdomainLabel:`子域名`,subscriptionWarningBody:`我们无法连接到计费服务。以下表单假定您的组织已启用托管电子邮件。如果未启用,注册域名将失败。`,subscriptionWarningTitle:`无法验证订阅状态`,upgradeButton:`升级`,upgradeNoticeBody:`升级到包含助手电子邮件地址的套餐。无需提供商设置。`,upgradeNoticeTitle:`为您的助手提供专属电子邮件地址`,usageSummary:`今日发送 {sent} / {limit} · 收到 {received}`},_={title:`邮件设置`,description
|
|
9
|
+
请务必谨慎启用。`,confirmAction:`允许陌生人`}},s={heading:`默认访问权限`,subtitle:`{assistant}根据对话类型自行执行操作的程度。单个频道可以在下方覆盖此设置,<trustRules>信任规则</trustRules>则会微调何时进行询问。`,bucketAria:`{bucket}的默认助手访问权限`},c={defaultSuffix:`默认`,defaultPlaceholder:`默认`},l={defaultMarker:`· 默认`},u={overridesLoadFailed:`无法加载访问设置。这些控件在加载完成前将保持禁用状态。请尝试重新打开此页面。`,perChannelOverrides:`频道级覆盖设置`},d={heading:`线程行为`,selectAria:`Slack 线程行为`,mentionsOnly:`仅提及`,mentionsOnlyHelp:`机器人仅在被 @提及 时响应。`,followThreads:`首次提及后跟踪线程`,followThreadsHelp:`在线程中被 @提及后,机器人会监听该线程的其余部分。`},f={presenceHint:`在该 Slack 频道中,使用 <invite>/invite {handle}</invite> 添加,或使用 <remove>/remove {handle}</remove> 移除。此处仅显示 {assistant} 所在的频道。`,loading:`正在加载…`,loadFailed:`无法加载频道。请尝试重新打开此页面。`,emptyTitle:`暂无频道`,searchPlaceholder:`搜索频道`,searchAria:`搜索频道`,filterGroupAria:`按类型筛选频道`,noMatches:`无匹配频道。`,accessAria:`{channel} 中的助手访问权限`,filterAll:`{count, plural, other {全部 (#)}}`,filterPublic:`{count, plural, other {公开 (#)}}`,filterPrivate:`{count, plural, other {私有 (#)}}`},p={accountSid:`账户 SID`,authToken:`身份验证令牌`,authTokenPlaceholder:`Twilio 身份验证令牌`,saving:`正在保存…`,save:`保存`},m={slack:{label:`Slack`,disconnectMessage:`这将清除此助手存储的 Slack 机器人和应用令牌。您可以稍后重新连接。`},telegram:{label:`Telegram`,disconnectMessage:`这将清除此助手存储的 Telegram 机器人令牌。您可以稍后重新连接。`,disconnectedPitch:`连接 Telegram 机器人,以便 {assistant} 可以在 Telegram 上发送和接收消息。`},discord:{label:`Discord`,disconnectedPitch:`连接 Discord 机器人,以便 {assistant} 可以在您的服务器中阅读和回复消息。`,disconnectMessage:`这将清除此助手存储的 Discord 机器人令牌,并且机器人将停止接收消息。您的服务器将保留该机器人,直到您从服务器中将其移除。`},email:{label:`电子邮件`},phone:{label:`电话呼叫`,disconnectMessage:`这将清除此助手存储的 Twilio 凭据。您可以稍后重新连接。`,disconnectedPitch:`连接您的 Twilio 账户,以便 {assistant} 可以拨打和接听电话。`}},h={apiKeyConfigured:`{providerName} API 密钥已配置。要重新配置,请运行 <code>{setupSkill}</code> 技能。`,connecting:`正在连接到 Vellum 平台…`,openProvider:`打开 {providerName}`,platformLoginNotice:`登录 Vellum 平台以管理电子邮件设置。`,providerLabel:`提供商`,saveSuccessToast:`电子邮件设置已保存。`,setupInstructions:`通过助手 CLI 配置 {providerName}:要求助手运行 <code>{setupSkill}</code> 技能。它将引导您存储 API 密钥、检测域并(可选)连接入站 Webhook。`,subtitle:`配置您的助手如何发送和接收电子邮件`,title:`电子邮件`},g={addressLabel:`地址`,checkingSubscription:`正在检查订阅…`,completeSetup:`完成域名设置`,completingSetup:`正在完成设置…`,confirm:`确认`,copiedAddress:`已复制`,copyAddressAriaLabel:`复制地址`,copyAddressFailed:`无法复制地址。`,create:`创建`,createEmailFailedFallback:`创建电子邮件地址失败。`,creating:`正在创建…`,domainLabel:`域名`,domainRegisteredToast:`域名 {domain} 已注册。`,domainReleaseFailedToast:`释放域名失败。`,domainReleasedToast:`域名已释放。`,emailAddressLabel:`电子邮件地址`,emailCreatedToast:`电子邮件地址已创建。`,emailRemoveFailedToast:`删除电子邮件地址失败。`,emailRemovedToast:`电子邮件地址已删除。`,emailUsernameAriaLabel:`电子邮件用户名`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`请输入子域名。`,enterUsernameError:`请输入电子邮件用户名。`,inboxSetupBody:`助手的地址在助手收件箱中创建,其邮件也在那里阅读。打开收件箱以选择地址。`,inboxSetupButton:`打开助手收件箱`,inboxSetupTitle:`在助手收件箱中设置电子邮件`,register:`注册`,registerDomainFailedFallback:`注册域名失败。`,registering:`正在注册…`,releaseConfirm:`释放`,releaseDomainAriaLabel:`释放域名`,releaseDomainConfirmMessage:`您确定要释放 <code>{domain}</code> 吗?该子域名将可供其他人认领。`,releaseDomainTitle:`释放域名`,removeAddressFirstToast:`请先删除电子邮件地址。`,removeConfirm:`删除`,removeEmailAriaLabel:`删除电子邮件地址`,removeEmailConfirmMessage:`您确定要删除 <code>{address}</code> 吗?您的助手将无法再通过此地址发送或接收电子邮件。`,removeEmailTitle:`删除电子邮件地址`,repairConfirmMessage:`将保留您现有的电子邮件地址。设置会为 <code>{domain}</code> 联系电子邮件提供商和 DNS。`,repairConfirmTitle:`完成域名设置?`,repairFailedFallback:`无法开始域名设置。请稍后再试。`,repairNoticeBody:`您的电子邮件地址已就绪,但此域名尚未在电子邮件提供商处设置。完成设置后即可开始发送和接收邮件。`,repairNoticeTitle:`需要设置域名`,repairStartedToast:`已开始域名设置。验证通常需要几分钟。`,retry:`重试`,setSubdomainConfirmMessage:`<code>{subdomain}</code> 也将成为您助手的公开句柄。设置后将无法更改。`,setSubdomainTitle:`设置子域名`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`子域名`,subdomainHint:`每个助手都有自己的子域名。仅限小写字母、数字和连字符。`,subdomainLabel:`子域名`,subscriptionWarningBody:`我们无法连接到计费服务。以下表单假定您的组织已启用托管电子邮件。如果未启用,注册域名将失败。`,subscriptionWarningTitle:`无法验证订阅状态`,upgradeButton:`升级`,upgradeNoticeBody:`升级到包含助手电子邮件地址的套餐。无需提供商设置。`,upgradeNoticeTitle:`为您的助手提供专属电子邮件地址`,usageSummary:`今日发送 {sent} / {limit} · 收到 {received}`},_={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:`頻道`,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:`正在完成設定…`,confirm:`確認`,create:`建立`,createEmailFailedFallback:`建立電子郵件地址失敗。`,creating:`正在建立…`,domainLabel:`網域`,domainRegisteredToast:`網域 {domain} 已註冊。`,domainReleaseFailedToast:`釋出網域失敗。`,domainReleasedToast:`網域已釋出。`,emailAddressLabel:`電子郵件地址`,emailCreatedToast:`電子郵件地址已建立。`,emailRemoveFailedToast:`移除電子郵件地址失敗。`,emailRemovedToast:`電子郵件地址已移除。`,emailUsernameAriaLabel:`電子郵件使用者名稱`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`請輸入子網域。`,enterUsernameError:`請輸入電子郵件使用者名稱。`,inboxSetupBody:`助理的地址在助理收件匣中建立,其郵件也在那裡閱讀。開啟收件匣以選擇地址。`,inboxSetupButton:`開啟助理收件匣`,inboxSetupTitle:`在助理收件匣中設定電子郵件`,register:`註冊`,registerDomainFailedFallback:`註冊網域失敗。`,registering:`正在註冊…`,releaseConfirm:`釋出`,releaseDomainAriaLabel:`釋出網域`,releaseDomainConfirmMessage:`您確定要釋出 <code>{domain}</code> 嗎?此子網域將可供其他人認領。`,releaseDomainTitle:`釋出網域`,removeAddressFirstToast:`請先移除電子郵件地址。`,removeConfirm:`移除`,removeEmailAriaLabel:`移除電子郵件地址`,removeEmailConfirmMessage:`您確定要移除 <code>{address}</code> 嗎?您的助理將無法再透過此地址傳送或接收電子郵件。`,removeEmailTitle:`移除電子郵件地址`,repairConfirmMessage:`將保留您現有的電子郵件地址。設定會為 <code>{domain}</code> 聯絡電子郵件供應商和 DNS。`,repairConfirmTitle:`完成網域設定?`,repairFailedFallback:`無法開始網域設定。請稍後再試。`,repairNoticeBody:`您的電子郵件地址已就緒,但此網域尚未在電子郵件供應商處設定。完成設定後即可開始傳送和接收郵件。`,repairNoticeTitle:`需要設定網域`,repairStartedToast:`已開始網域設定。驗證通常需要幾分鐘。`,retry:`重試`,setSubdomainConfirmMessage:`<code>{subdomain}</code> 也將成為您助理的公開識別碼。設定後便無法變更。`,setSubdomainTitle:`設定子網域`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`子網域`,subdomainHint:`每個助理都有自己的子網域。僅限小寫字母、數字和連字號。`,subdomainLabel:`子網域`,subscriptionWarningBody:`我們無法連線至帳務服務。以下表單假設您的組織已啟用受管理的電子郵件。如果未啟用,註冊網域將會失敗。`,subscriptionWarningTitle:`無法驗證訂閱狀態`,upgradeButton:`升級`,upgradeNoticeBody:`升級至包含助理電子郵件地址的方案。無需供應商設定。`,upgradeNoticeTitle:`為您的助理提供專屬電子郵件地址`,usageSummary:`今日已傳送 {sent} / {limit} · 已接收 {received}`},_={title:`郵件設定`,description
|
|
9
|
+
請務必謹慎啟用。`,confirmAction:`允許陌生人`}},s={heading:`預設存取權`,subtitle:`{assistant} 根據對話類型自行執行的程度。個別頻道可以在下方覆寫此設定,而 <trustRules>信任規則</trustRules> 則會微調何時進行詢問。`,bucketAria:`{bucket} 的預設助理存取權`},c={defaultSuffix:`預設`,defaultPlaceholder:`預設`},l={defaultMarker:`· 預設`},u={overridesLoadFailed:`無法載入存取設定。這些控制項在載入完成前將保持停用狀態。請嘗試重新開啟此頁面。`,perChannelOverrides:`每個頻道的覆寫設定`},d={heading:`執行緒行為`,selectAria:`Slack 執行緒行為`,mentionsOnly:`僅提及`,mentionsOnlyHelp:`機器人僅在被 @提及時回應。`,followThreads:`首次提及後追蹤執行緒`,followThreadsHelp:`在執行緒中被 @提及後,機器人會監聽該執行緒的其餘部分。`},f={presenceHint:`在該 Slack 頻道中,使用 <invite>/invite {handle}</invite> 新增,或使用 <remove>/remove {handle}</remove> 移除。此處僅顯示 {assistant} 所在的頻道。`,loading:`正在載入…`,loadFailed:`無法載入頻道。請嘗試重新開啟此頁面。`,emptyTitle:`尚未有頻道`,searchPlaceholder:`搜尋頻道`,searchAria:`搜尋頻道`,filterGroupAria:`依類型篩選頻道`,noMatches:`無符合的頻道。`,accessAria:`{channel} 中的助理存取權`,filterAll:`{count, plural, other {全部 (#)}}`,filterPublic:`{count, plural, other {公開 (#)}}`,filterPrivate:`{count, plural, other {私人 (#)}}`},p={accountSid:`帳號 SID`,authToken:`驗證權杖`,authTokenPlaceholder:`Twilio 驗證權杖`,saving:`正在儲存…`,save:`儲存`},m={slack:{label:`Slack`,disconnectMessage:`這會清除此助理儲存的 Slack 機器人與應用程式權杖。您可以稍後重新連線。`},telegram:{label:`Telegram`,disconnectMessage:`這會清除此助理儲存的 Telegram 機器人權杖。您可以稍後重新連線。`,disconnectedPitch:`連線 Telegram 機器人,讓 {assistant} 可以在 Telegram 上傳送及接收訊息。`},discord:{label:`Discord`,disconnectedPitch:`連線 Discord 機器人,讓 {assistant} 可以在您的伺服器中讀取及回覆。`,disconnectMessage:`這會清除此助理儲存的 Discord 機器人權杖,且機器人將停止接收訊息。您的伺服器會保留該機器人,直到您從伺服器中移除為止。`},email:{label:`電子郵件`},phone:{label:`電話通話`,disconnectMessage:`這會清除此助理儲存的 Twilio 憑證。您可以稍後重新連線。`,disconnectedPitch:`連線您的 Twilio 帳號,讓 {assistant} 可以撥打及接聽電話。`}},h={apiKeyConfigured:`{providerName} API 金鑰已設定。若要重新設定,請執行 <code>{setupSkill}</code> 技能。`,connecting:`正在連線至 Vellum 平台…`,openProvider:`開啟 {providerName}`,platformLoginNotice:`登入 Vellum 平台以管理電子郵件設定。`,providerLabel:`供應商`,saveSuccessToast:`電子郵件設定已儲存。`,setupInstructions:`透過助理 CLI 設定 {providerName}:要求助理執行 <code>{setupSkill}</code> 技能。它會引導您儲存 API 金鑰、偵測網域,以及 (選用) 設定傳入 Webhook。`,subtitle:`設定您的助理如何傳送及接收電子郵件`,title:`電子郵件`},g={addressLabel:`地址`,checkingSubscription:`正在檢查訂閱…`,completeSetup:`完成網域設定`,completingSetup:`正在完成設定…`,confirm:`確認`,copiedAddress:`已複製`,copyAddressAriaLabel:`複製地址`,copyAddressFailed:`無法複製地址。`,create:`建立`,createEmailFailedFallback:`建立電子郵件地址失敗。`,creating:`正在建立…`,domainLabel:`網域`,domainRegisteredToast:`網域 {domain} 已註冊。`,domainReleaseFailedToast:`釋出網域失敗。`,domainReleasedToast:`網域已釋出。`,emailAddressLabel:`電子郵件地址`,emailCreatedToast:`電子郵件地址已建立。`,emailRemoveFailedToast:`移除電子郵件地址失敗。`,emailRemovedToast:`電子郵件地址已移除。`,emailUsernameAriaLabel:`電子郵件使用者名稱`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`請輸入子網域。`,enterUsernameError:`請輸入電子郵件使用者名稱。`,inboxSetupBody:`助理的地址在助理收件匣中建立,其郵件也在那裡閱讀。開啟收件匣以選擇地址。`,inboxSetupButton:`開啟助理收件匣`,inboxSetupTitle:`在助理收件匣中設定電子郵件`,register:`註冊`,registerDomainFailedFallback:`註冊網域失敗。`,registering:`正在註冊…`,releaseConfirm:`釋出`,releaseDomainAriaLabel:`釋出網域`,releaseDomainConfirmMessage:`您確定要釋出 <code>{domain}</code> 嗎?此子網域將可供其他人認領。`,releaseDomainTitle:`釋出網域`,removeAddressFirstToast:`請先移除電子郵件地址。`,removeConfirm:`移除`,removeEmailAriaLabel:`移除電子郵件地址`,removeEmailConfirmMessage:`您確定要移除 <code>{address}</code> 嗎?您的助理將無法再透過此地址傳送或接收電子郵件。`,removeEmailTitle:`移除電子郵件地址`,repairConfirmMessage:`將保留您現有的電子郵件地址。設定會為 <code>{domain}</code> 聯絡電子郵件供應商和 DNS。`,repairConfirmTitle:`完成網域設定?`,repairFailedFallback:`無法開始網域設定。請稍後再試。`,repairNoticeBody:`您的電子郵件地址已就緒,但此網域尚未在電子郵件供應商處設定。完成設定後即可開始傳送和接收郵件。`,repairNoticeTitle:`需要設定網域`,repairStartedToast:`已開始網域設定。驗證通常需要幾分鐘。`,retry:`重試`,setSubdomainConfirmMessage:`<code>{subdomain}</code> 也將成為您助理的公開識別碼。設定後便無法變更。`,setSubdomainTitle:`設定子網域`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`子網域`,subdomainHint:`每個助理都有自己的子網域。僅限小寫字母、數字和連字號。`,subdomainLabel:`子網域`,subscriptionWarningBody:`我們無法連線至帳務服務。以下表單假設您的組織已啟用受管理的電子郵件。如果未啟用,註冊網域將會失敗。`,subscriptionWarningTitle:`無法驗證訂閱狀態`,upgradeButton:`升級`,upgradeNoticeBody:`升級至包含助理電子郵件地址的方案。無需供應商設定。`,upgradeNoticeTitle:`為您的助理提供專屬電子郵件地址`,usageSummary:`今日已傳送 {sent} / {limit} · 已接收 {received}`},_={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:`Каналы`,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:`Завершение настройки…`,confirm:`Подтвердить`,create:`Создать`,createEmailFailedFallback:`Не удалось создать адрес почты.`,creating:`Создание…`,domainLabel:`Домен`,domainRegisteredToast:`Домен {domain} зарегистрирован.`,domainReleaseFailedToast:`Не удалось освободить домен.`,domainReleasedToast:`Домен освобождён.`,emailAddressLabel:`Адрес почты`,emailCreatedToast:`Адрес почты создан.`,emailRemoveFailedToast:`Не удалось удалить адрес почты.`,emailRemovedToast:`Адрес почты удалён.`,emailUsernameAriaLabel:`Имя пользователя почты`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`Ввод поддомена.`,enterUsernameError:`Ввод имени пользователя почты.`,inboxSetupBody:`Адрес ассистента создаётся в разделе «Почта ассистента», где читается его почта. Откройте его, чтобы выбрать адрес.`,inboxSetupButton:`Открыть почту ассистента`,inboxSetupTitle:`Настройте почту в разделе «Почта ассистента»`,register:`Зарегистрировать`,registerDomainFailedFallback:`Не удалось зарегистрировать домен.`,registering:`Регистрация…`,releaseConfirm:`Освободить`,releaseDomainAriaLabel:`Освободить домен`,releaseDomainConfirmMessage:`Точно освободить <code>{domain}</code>? Поддомен станет доступен другим.`,releaseDomainTitle:`Освободить домен`,removeAddressFirstToast:`Сначала удаление адреса почты.`,removeConfirm:`Удалить`,removeEmailAriaLabel:`Удалить адрес почты`,removeEmailConfirmMessage:`Точно удалить <code>{address}</code>? Ассистент больше не сможет отправлять и получать почту на этот адрес.`,removeEmailTitle:`Удалить адрес почты`,repairConfirmMessage:`Текущий адрес почты сохранится. Настройка обратится к почтовому провайдеру и DNS для <code>{domain}</code>.`,repairConfirmTitle:`Завершить настройку домена?`,repairFailedFallback:`Не удалось начать настройку домена. Повторите попытку через минуту.`,repairNoticeBody:`Адрес почты уже есть, но домен ещё не настроен у почтового провайдера. Завершите настройку, чтобы отправлять и получать письма.`,repairNoticeTitle:`Нужна настройка домена`,repairStartedToast:`Настройка домена начата. Проверка обычно занимает несколько минут.`,retry:`Повторить`,setSubdomainConfirmMessage:`<code>{subdomain}</code> также станет публичным идентификатором ассистента. После установки его нельзя сменить.`,setSubdomainTitle:`Задать поддомен`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`поддомен`,subdomainHint:`У каждого ассистента свой поддомен. Только строчные латинские буквы, цифры и дефисы.`,subdomainLabel:`Поддомен`,subscriptionWarningBody:`Не удалось связаться со службой оплаты. Форма ниже считает, что управляемая почта включена для организации. Если это не так, регистрация домена не сработает.`,subscriptionWarningTitle:`Не удалось проверить статус подписки`,upgradeButton:`Повысить план`,upgradeNoticeBody:`Переход на план, в котором у ассистента есть свой адрес почты. Настраивать провайдера не нужно.`,upgradeNoticeTitle:`Адрес почты для ассистента`,usageSummary:`сегодня отправлено {sent} / {limit} · получено {received}`},_={title:`Настройки почты`,description:`Адрес
|
|
9
|
+
Включайте с крайней осторожностью.`,confirmAction:`Разрешить незнакомцев`}},s={heading:`Доступ по умолчанию`,subtitle:`Насколько самостоятельно действует {assistant} в зависимости от типа диалога. Отдельные каналы могут переопределить это ниже, а <trustRules>правила доверия</trustRules> уточняют, когда спрашивать.`,bucketAria:`Доступ ассистента по умолчанию для {bucket}`},c={defaultSuffix:`по умолчанию`,defaultPlaceholder:`По умолчанию`},l={defaultMarker:`· по умолчанию`},u={overridesLoadFailed:`Не удалось загрузить настройки доступа. Эти элементы останутся недоступны, пока данные не загрузятся. Повторите открытие страницы.`,perChannelOverrides:`Переопределения по каналам`},d={heading:`Поведение в ветках`,selectAria:`Поведение Slack в ветках`,mentionsOnly:`Только упоминания`,mentionsOnlyHelp:`Бот отвечает только когда его @упоминают.`,followThreads:`Следить за веткой после первого упоминания`,followThreadsHelp:`После @упоминания в ветке бот слушает остальную ветку.`},f={presenceHint:`Добавление через <invite>/invite {handle}</invite> или удаление через <remove>/remove {handle}</remove> в этом канале Slack. Здесь видны только каналы, в которых есть {assistant}.`,loading:`Загрузка…`,loadFailed:`Не удалось загрузить каналы. Повторите открытие страницы.`,emptyTitle:`Каналов пока нет`,searchPlaceholder:`Поиск каналов`,searchAria:`Поиск каналов`,filterGroupAria:`Фильтр каналов по типу`,noMatches:`Нет подходящих каналов.`,accessAria:`Доступ ассистента в {channel}`,filterAll:`{count, plural, one {Все (#)} few {Все (#)} many {Все (#)} other {Все (#)}}`,filterPublic:`{count, plural, one {Открытые (#)} few {Открытые (#)} many {Открытые (#)} other {Открытые (#)}}`,filterPrivate:`{count, plural, one {Закрытые (#)} few {Закрытые (#)} many {Закрытые (#)} other {Закрытые (#)}}`},p={accountSid:`Account SID`,authToken:`Auth Token`,authTokenPlaceholder:`Auth-токен Twilio`,saving:`Сохранение…`,save:`Сохранить`},m={slack:{label:`Slack`,disconnectMessage:`Это удалит сохранённые токены бота и приложения Slack для этого ассистента. Потом можно подключить снова.`},telegram:{label:`Telegram`,disconnectMessage:`Это удалит сохранённый токен бота Telegram для этого ассистента. Потом можно подключить снова.`,disconnectedPitch:`Подключение бота Telegram, чтобы {assistant} мог отправлять и получать сообщения в Telegram.`},discord:{label:`Discord`,disconnectedPitch:`Подключите бота Discord, чтобы {assistant} мог читать и отвечать на вашем сервере.`,disconnectMessage:`Это удалит сохранённый токен бота Discord, и бот перестанет получать сообщения. На сервере бот останется, пока вы не удалите его там.`},email:{label:`Почта`},phone:{label:`Телефонные звонки`,disconnectMessage:`Это удалит сохранённые учётные данные Twilio для этого ассистента. Потом можно подключить снова.`,disconnectedPitch:`Подключение аккаунта Twilio, чтобы {assistant} мог звонить и отвечать на звонки.`}},h={apiKeyConfigured:`API-ключ {providerName} настроен. Повторная настройка: запуск навыка <code>{setupSkill}</code>.`,connecting:`Подключение к платформе Vellum…`,openProvider:`Открыть {providerName}`,platformLoginNotice:`Вход на платформу Vellum для управления настройками почты.`,providerLabel:`Провайдер`,saveSuccessToast:`Настройки почты сохранены.`,setupInstructions:`Настройка {providerName} через CLI ассистента: запрос ассистенту запустить навык <code>{setupSkill}</code>. Он поможет сохранить API-ключ, определить домен и (по желанию) подключить входящий webhook.`,subtitle:`Настройка отправки и получения почты ассистентом`,title:`Почта`},g={addressLabel:`Адрес`,checkingSubscription:`Проверка подписки…`,completeSetup:`Завершить настройку домена`,completingSetup:`Завершение настройки…`,confirm:`Подтвердить`,copiedAddress:`Скопировано`,copyAddressAriaLabel:`Скопировать адрес`,copyAddressFailed:`Не удалось скопировать адрес.`,create:`Создать`,createEmailFailedFallback:`Не удалось создать адрес почты.`,creating:`Создание…`,domainLabel:`Домен`,domainRegisteredToast:`Домен {domain} зарегистрирован.`,domainReleaseFailedToast:`Не удалось освободить домен.`,domainReleasedToast:`Домен освобождён.`,emailAddressLabel:`Адрес почты`,emailCreatedToast:`Адрес почты создан.`,emailRemoveFailedToast:`Не удалось удалить адрес почты.`,emailRemovedToast:`Адрес почты удалён.`,emailUsernameAriaLabel:`Имя пользователя почты`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`Ввод поддомена.`,enterUsernameError:`Ввод имени пользователя почты.`,inboxSetupBody:`Адрес ассистента создаётся в разделе «Почта ассистента», где читается его почта. Откройте его, чтобы выбрать адрес.`,inboxSetupButton:`Открыть почту ассистента`,inboxSetupTitle:`Настройте почту в разделе «Почта ассистента»`,register:`Зарегистрировать`,registerDomainFailedFallback:`Не удалось зарегистрировать домен.`,registering:`Регистрация…`,releaseConfirm:`Освободить`,releaseDomainAriaLabel:`Освободить домен`,releaseDomainConfirmMessage:`Точно освободить <code>{domain}</code>? Поддомен станет доступен другим.`,releaseDomainTitle:`Освободить домен`,removeAddressFirstToast:`Сначала удаление адреса почты.`,removeConfirm:`Удалить`,removeEmailAriaLabel:`Удалить адрес почты`,removeEmailConfirmMessage:`Точно удалить <code>{address}</code>? Ассистент больше не сможет отправлять и получать почту на этот адрес.`,removeEmailTitle:`Удалить адрес почты`,repairConfirmMessage:`Текущий адрес почты сохранится. Настройка обратится к почтовому провайдеру и DNS для <code>{domain}</code>.`,repairConfirmTitle:`Завершить настройку домена?`,repairFailedFallback:`Не удалось начать настройку домена. Повторите попытку через минуту.`,repairNoticeBody:`Адрес почты уже есть, но домен ещё не настроен у почтового провайдера. Завершите настройку, чтобы отправлять и получать письма.`,repairNoticeTitle:`Нужна настройка домена`,repairStartedToast:`Настройка домена начата. Проверка обычно занимает несколько минут.`,retry:`Повторить`,setSubdomainConfirmMessage:`<code>{subdomain}</code> также станет публичным идентификатором ассистента. После установки его нельзя сменить.`,setSubdomainTitle:`Задать поддомен`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`поддомен`,subdomainHint:`У каждого ассистента свой поддомен. Только строчные латинские буквы, цифры и дефисы.`,subdomainLabel:`Поддомен`,subscriptionWarningBody:`Не удалось связаться со службой оплаты. Форма ниже считает, что управляемая почта включена для организации. Если это не так, регистрация домена не сработает.`,subscriptionWarningTitle:`Не удалось проверить статус подписки`,upgradeButton:`Повысить план`,upgradeNoticeBody:`Переход на план, в котором у ассистента есть свой адрес почты. Настраивать провайдера не нужно.`,upgradeNoticeTitle:`Адрес почты для ассистента`,usageSummary:`сегодня отправлено {sent} / {limit} · получено {received}`},_={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 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{$v as t,AC as n,BC as r,Bd as i,C as a,Cn as o,D as s,DS as c,Dv as l,E as u,Ei as d,Es as f,GC as p,Gg as m,Gy as h,H as g,IS as _,Ii as v,JC as y,KC as b,KS as x,Li as S,Ls as C,Ni as w,O as T,PC as E,QC as D,Qp as O,Qu as k,RC as A,RS as j,S as M,T as N,Th as P,Ts as F,U as I,Uf as L,Uv as ee,W as R,Wf as z,XS as B,_c as V,ag as H,ap as te,aw as U,b as ne,bC as re,bp as ie,dC as ae,em as oe,ey as se,fa as ce,fc as le,gc as ue,hc as de,ic as fe,ig as pe,ip as me,iu as he,jC as ge,la as _e,mc as ve,ng as ye,nm as be,np as xe,nt as Se,ny as Ce,oC as we,og as Te,op as Ee,pa as De,pc as Oe,rg as ke,sw as Ae,tm as je,ty as Me,uC as W,uS as Ne,ua as Pe,uh as Fe,uw as Ie,vC as Le,vc as Re,vp as ze,wC as Be,x as Ve,xC as He,y as Ue,yc as We,yp as Ge}from"./app-4aEhon_S.js";import{$n as G,E as K,O as q,Xn as J,nr as Y}from"./vendor-CtXGFqsu.js";import{_ as Ke,d as qe,f as Je,h as Ye,n as Xe,t as Ze,x as Qe}from"./react-B9IgSVeK.js";import{Dn as $e,Rt as et,Yn as tt,Zr as nt,br as rt,fr as it,qi as at,qn as ot,vt as st,zi as ct}from"./icons-C0wyat6T.js";import{t as lt}from"./detail-card-Dmas0G3E.js";import{a as ut,i as dt,n as ft,o as pt,r as mt,t as ht}from"./use-channel-trust-floors-oeRMVBZa.js";import{t as X}from"./mutation-error-1lzyVoa-.js";import{a as gt,i as _t,n as vt,r as yt,t as bt}from"./use-invite-link-dialog-YrW4BryT.js";import{t as xt}from"./use-side-list-room-DF3yxstr.js";import{i as St,r as Ct}from"./service-form-controls-L7ipWS7W.js";var Z=e(Qe(),1);function wt(){let{channelId:e}=Ye(),t=Je(),{search:n}=qe();return{selected:e,select:(0,Z.useCallback)(e=>{t({pathname:`/assistant/channels/${encodeURIComponent(e)}`,search:n},{replace:!0})},[t,n])}}var Q=Ze();function Tt({channels:e,pluginChannels:t=[],selectedKey:n,onSelect:r}){return(0,Q.jsx)(b.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,Q.jsx)(b.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[e.map(e=>(0,Q.jsx)(Et,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key)),t.map(e=>(0,Q.jsx)(Dt,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key))]})})})}function Et({channel:e,selected:t,onClick:n}){let i=e.status===`ready`,a=ce(e.key),o=i?`Connected`:`Not connected`;return(0,Q.jsx)(D,{asChild:!0,active:t,"aria-label":`${a}, ${o}`,children:(0,Q.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,Q.jsx)(_e,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:a}),(0,Q.jsx)(`span`,{className:`flex shrink-0 items-center`,children:(0,Q.jsx)(r,{tone:i?`positive`:`neutral`,children:o})})]})})}function Dt({channel:e,selected:t,onClick:n}){let{t:r}=K(`channels`);return(0,Q.jsx)(D,{asChild:!0,active:t,"aria-label":r(`channelAdapterList.pluginChannelAria`,{channel:e.label}),children:(0,Q.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,Q.jsx)(Pe,{icon:e.icon,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:e.label}),(0,Q.jsx)(et,{"aria-hidden":!0,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`})]})})}function Ot({icon:e,title:t,description:n,action:r,className:i}){return(0,Q.jsxs)(`div`,{className:Ie(`flex flex-col items-center justify-center gap-3 px-4 py-12 text-center`,i),children:[e?(0,Q.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,Q.jsx)(`h3`,{className:`text-title-small text-[var(--content-default)]`,children:t}),n?(0,Q.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:n}):null,r?(0,Q.jsx)(`div`,{className:`mt-1`,children:r}):null]})}function kt({mode:e,onChange:t}){let{t:n}=K(`common`);return(0,Q.jsx)(`div`,{className:`max-w-[280px]`,children:(0,Q.jsx)(Be,{ariaLabel:n(`serviceCard.modeToggleAriaLabel`),value:e,onChange:t,items:[{value:`managed`,label:n(`serviceCard.managedLabel`)},{value:`your-own`,label:n(`serviceCard.yourOwnLabel`)}]})})}function At({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,Q.jsxs)(lt,{id:e,title:t,subtitle:n,accessory:(0,Q.jsx)(kt,{mode:r,onChange:i}),children:[(0,Q.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,Q.jsx)(`div`,{className:`mt-4`,children:a})]})}function jt(e,t){return e===`managed`||e===`your-own`?e:t}function Mt(){let{t:e}=K(`channels`),t=Se(),n=Fe(),{data:r}=G({...k(),enabled:n}),a=r?.results?.[0]?.handle,s=v.use.emailRootDomain(),c=P(),[u,d]=(0,Z.useState)(()=>c===`gated`?`your-own`:jt(x(f,`managed`),`managed`)),[p,m]=(0,Z.useState)(()=>{let e=x(F,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),{platformAssistantId:g,error:y}=S(t,c===`full`&&u===`managed`),b=g??(y?t:null),T=G({queryKey:[`byoEmailCredential`,t,p],queryFn:async()=>{let{data:e}=await ee({path:{assistant_id:t},body:{service:p,field:`api_key`},throwOnError:!0});return e},enabled:u===`your-own`||c===`gated`,staleTime:6e4,retry:j,meta:{errorContext:`byo_email_credential_check`}});(0,Z.useEffect)(()=>{T.error&&_(T.error,{context:`byo_email_credential_check`,bestEffort:!0})},[T.error]);let E=T.data?.hasSecret===!0,D=l.use.assistantInbox(),O=w(Ne.use.name()??``),{data:A}=G({...i(),enabled:D&&n&&c===`full`}),M=D&&c===`full`&&u===`managed`&&b!==null&&!!A?.entitlements&&A.entitlements.managed_email!==!0,N=(0,Z.useCallback)(e=>{d(e),B(f,e)},[]),I=(0,Z.useCallback)(()=>{B(F,p),He.success(e(`emailChannelSection.saveSuccessToast`))},[p,e]),L=(0,Z.useMemo)(()=>C.find(e=>e.id===p)??C[0],[p]),R=(0,Q.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,Q.jsx)(it,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsx)(`span`,{children:(0,Q.jsx)(q,{i18nKey:`emailChannelSection.setupInstructions`,ns:`channels`,values:{providerName:L.displayName,setupSkill:L.setupSkill},components:{code:(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})}),(0,Q.jsxs)(h,{href:L.docsUrl,tone:`default`,className:`inline-flex items-center gap-1`,glyph:!1,children:[e(`emailChannelSection.openProvider`,{providerName:L.displayName}),(0,Q.jsx)(nt,{className:`h-3 w-3`})]})]})]}),z=(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:e(`emailChannelSection.providerLabel`)}),(0,Q.jsx)(Le,{value:p,onChange:e=>{(e===`mailgun`||e===`resend`)&&m(e)},options:C.map(e=>({value:e.id,label:e.displayName}))})]}),E?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.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,Q.jsx)(ct,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsx)(`span`,{children:(0,Q.jsx)(q,{i18nKey:`emailChannelSection.apiKeyConfigured`,ns:`channels`,values:{providerName:L.displayName,setupSkill:L.setupSkill},components:{code:(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})})]}),(0,Q.jsxs)(h,{href:L.docsUrl,tone:`default`,className:`inline-flex items-center gap-1 text-body-small-default`,glyph:!1,children:[e(`emailChannelSection.openProvider`,{providerName:L.displayName}),(0,Q.jsx)(nt,{className:`h-3 w-3`})]})]}):R,(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Q.jsx)(Ct,{onClick:I,disabled:!1})})]});return c===`gated`?(0,Q.jsx)(St,{id:`email`,title:e(`emailChannelSection.title`),subtitle:e(`emailChannelSection.subtitle`),children:z}):(0,Q.jsx)(At,{id:`email`,title:M?O.title:e(`emailChannelSection.title`),subtitle:M?O.subtitle:e(`emailChannelSection.subtitle`),mode:u,onModeChange:N,children:u===`managed`?(0,Q.jsx)(`div`,{className:`space-y-4`,children:c===`disabled`?(0,Q.jsx)(o,{children:e(`emailChannelSection.platformLoginNotice`)}):b===null?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(tt,{className:`h-4 w-4 animate-spin`}),e(`emailChannelSection.connecting`)]}):(0,Q.jsx)(ut,{assistantId:b,assistantHandle:a,emailRootDomain:s})}):z})}function Nt({health:e}){let{Icon:t,label:n,tone:i}=De(e);return(0,Q.jsx)(r,{tone:i,leftIcon:(0,Q.jsx)(t,{}),children:n})}function Pt({address:e,health:t,pending:n,onDisconnect:r}){let{t:i}=K(`channels`);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(Nt,{health:t}),e?(0,Q.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e}):null,(0,Q.jsx)(`div`,{className:`ml-auto`,children:(0,Q.jsx)(U,{type:`button`,variant:`danger`,onClick:r,disabled:!r||n,children:i(n?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}function Ft({children:e}){let{t}=K(`channels`);return(0,Q.jsxs)(b.Root,{children:[(0,Q.jsx)(b.Header,{children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`img`,{src:d(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),(0,Q.jsx)(y,{as:`span`,variant:`body-medium-default`,children:t(`slackChannelCard.setupHeading`)})]})}),(0,Q.jsx)(b.Body,{children:e})]})}g.map(e=>e.riskThreshold);var It=[`none`,`low`];function Lt(e){if(e!==void 0)return e===`none`?`none`:`low`}var Rt={none:{label:I(`none`).label,sublabel:`asks every time`,tone:`negative`,dotColor:`var(--system-negative-strong)`},low:{label:I(`low`).label,sublabel:`safe lookups`,tone:`warning`,dotColor:`var(--system-mid-strong)`},medium:{label:I(`medium`).label,sublabel:`broader lookups`,tone:`info`,dotColor:`var(--system-info-strong)`},high:{label:I(`high`).label,sublabel:`any lookup`,tone:`positive`,dotColor:`var(--system-positive-strong)`}},zt=[`trusted_contact`,`unverified_contact`,`unknown`];function Bt(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 Vt(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 Ht(e,t,n){let r;for(let i of e)Vt(i,t,n)&&(i.contactType===`trusted_contact`||r===void 0)&&(r=i.threshold);return r}var Ut=`__default__`;function Wt({color:e}){return(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 shrink-0 rounded-full`,style:{backgroundColor:e}})}function Gt({tier:e,defaultTier:t,disabled:n,onTierChange:r,onReset:i,"aria-label":a}){let{t:o}=K(`channels`),s=Lt(e??t??void 0),c=Lt(t??void 0)??null,l=It.map(e=>({value:e,label:Rt[e].label,icon:(0,Q.jsx)(Wt,{color:Rt[e].dotColor}),suffix:e===c?(0,Q.jsx)(`span`,{className:`text-[color:var(--content-tertiary)]`,children:o(`tierPicker.defaultSuffix`)}):void 0,tooltip:Rt[e].sublabel}));return l.unshift({value:Ut,label:`Default`,icon:(0,Q.jsx)(Wt,{color:`transparent`}),tooltip:`follows the default level`}),(0,Q.jsx)(Le,{value:s??``,onChange:e=>{e===Ut||e===c?i():r(e)},options:l,placeholder:o(`tierPicker.defaultPlaceholder`),disabled:n,size:`compact`,menuAlign:`end`,"aria-label":a})}function Kt(e){return e.type===`dm`?`dm`:e.isPrivate?`private`:`public`}function qt(e){return e.filter(e=>Kt(e)!==`dm`)}function Jt(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===null||Kt(e)===n)&&(r===``||e.name.toLowerCase().includes(r))).sort((e,t)=>e.name.localeCompare(t.name))}function Yt(e){let t={public:0,private:0,dm:0};for(let n of e)t[Kt(n)]+=1;return t}function Xt(e){return e.memberCount==null?null:e.memberCount===1?`1 member`:`${e.memberCount} members`}var Zt=[{value:null,labelKey:`slackChannelList.filterAll`},{value:`public`,labelKey:`slackChannelList.filterPublic`},{value:`private`,labelKey:`slackChannelList.filterPrivate`}],Qt={public:rt,private:ot},$t=100,en=new Set;function tn({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=en,onTierChange:d,onTierReset:f}){let{t:p}=K(`channels`),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(null),v=(0,Z.useMemo)(()=>qt(n??[]),[n]),b=(0,Z.useMemo)(()=>Jt(v,m,g),[v,m,g]),x=(0,Z.useMemo)(()=>Yt(v),[v]);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,Q.jsx)(y,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,Q.jsx)(q,{i18nKey:`slackChannelList.presenceHint`,ns:`channels`,values:{handle:t??`@${e}`,assistant:e},components:{invite:(0,Q.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`}),remove:(0,Q.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`})}})}),r?(0,Q.jsx)(y,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.loading`)}):i?(0,Q.jsx)(y,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--system-negative-strong)]`,children:p(`slackChannelList.loadFailed`)}):v.length===0?(0,Q.jsx)(Ot,{icon:(0,Q.jsx)(rt,{className:`h-6 w-6`}),title:p(`slackChannelList.emptyTitle`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,Q.jsx)(E,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:p(`slackChannelList.searchPlaceholder`),"aria-label":p(`slackChannelList.searchAria`),leftIcon:(0,Q.jsx)(st,{className:`h-4 w-4`}),fullWidth:!0})}),(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,role:`group`,"aria-label":p(`slackChannelList.filterGroupAria`),children:Zt.map(({value:e,labelKey:t})=>{let n=g===e,r=e===null?v.length:x[e];return(0,Q.jsx)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>_(e),className:Ie(`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,Q.jsx)(y,{as:`span`,variant:`body-small-lighter`,className:`py-4 text-center text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.noMatches`)}):b.length>$t?(0,Q.jsx)(`div`,{className:`h-96`,children:(0,Q.jsx)(ae,{items:b,computeItemKey:(e,t)=>t.id,itemContent:(e,t)=>(0,Q.jsx)(nn,{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,Q.jsx)(`div`,{className:`max-h-96 overflow-y-auto`,children:b.map(e=>(0,Q.jsx)(nn,{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 nn({channel:e,pending:t,overridesLoading:n,overridesError:r,defaultTier:i,accessControls:a,tierOverride:o,onTierChange:s,onReset:c}){let{t:l}=K(`channels`),u=Kt(e);if(u===`dm`)return null;let d=Qt[u],f=Xt(e),p=`[&+&]:border-t [&+&]:border-[var(--border-base)]`;return a?(0,Q.jsx)(we,{className:p,leading:(0,Q.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,subtitle:f??void 0,trailing:(0,Q.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,Q.jsx)(Gt,{tier:o,defaultTier:i,disabled:t||n||r,onTierChange:s,onReset:c,"aria-label":l(`slackChannelList.accessAria`,{channel:e.name})})})}):(0,Q.jsx)(we,{className:p,leading:(0,Q.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,trailing:f==null?void 0:(0,Q.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:f})})}function rn(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 an({defaultTier:e}){let{t}=K(`channels`),n=Lt(e??void 0)??null;return(0,Q.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-3`,children:(0,Q.jsx)(`ul`,{className:`grid gap-x-6 gap-y-3 sm:grid-cols-2`,children:[...It].reverse().map(e=>{let r=Rt[e];return(0,Q.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(Wt,{color:r.dotColor}),(0,Q.jsx)(y,{as:`span`,variant:`body-small-emphasised`,children:r.label}),e===n?(0,Q.jsx)(y,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:t(`slackChannelTierLegend.defaultMarker`)}):null]}),(0,Q.jsx)(y,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:rn(e)})]},e)})})})}var on=[{bucket:`channels`,icon:rt,title:`Channels`,description:`Public and private channels`},{bucket:`dm`,icon:$e,title:`Direct messages`,description:`One-on-one DMs`}];function sn({assistantName:e,globalDefaultTier:t,bucketTiers:n,loading:r,error:i,pendingBuckets:a,onBucketChange:o,onBucketReset:s}){let{t:l}=K(`channels`);return(0,Q.jsxs)(b.Root,{children:[(0,Q.jsx)(b.Header,{children:(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[l(`slackChannelTypeDefaults.heading`),(0,Q.jsx)(y,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,Q.jsx)(q,{i18nKey:`slackChannelTypeDefaults.subtitle`,ns:`channels`,values:{assistant:e},components:{trustRules:(0,Q.jsx)(Xe,{to:c.settings.privacy,className:A()})}})})]})}),(0,Q.jsx)(b.Body,{className:`py-1`,children:on.map(({bucket:e,icon:c,title:u,description:d})=>{let f=e===`dm`?n?.channels??t:t;return(0,Q.jsx)(we,{className:`[&+&]:border-t [&+&]:border-[var(--border-base)]`,leading:(0,Q.jsx)(c,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:u,subtitle:d,trailing:(0,Q.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,Q.jsx)(Gt,{tier:n?.[e],defaultTier:f,disabled:r||i||a.has(e),onTierChange:t=>o(e,t),onReset:()=>s(e),"aria-label":l(`slackChannelTypeDefaults.bucketAria`,{bucket:u})})})},e)})}),(0,Q.jsx)(b.Footer,{className:`p-0`,children:(0,Q.jsx)(an,{defaultTier:t})})]})}var cn=`0.11.0`;function ln(){return m(cn)}var un=new Set([404,501]);function dn(e){let t=L(e);return t!==void 0&&un.has(t)}function fn(e,t,n){return zt.map(r=>({selector:{scope:`channel`,adapter:e,channelExternalId:t},contactType:r,threshold:n}))}function pn(e,t,n){return e.selector.scope===`channel`&&e.selector.adapter===t&&e.selector.channelExternalId===n}function mn(e,t){return t===`channels`?{scope:`adapter`,adapter:e}:{scope:`channel_type`,adapter:e,channelType:`dm`}}function hn(e,t,n){let r=mn(e,t);return zt.map(e=>({selector:r,contactType:e,threshold:n}))}function gn({assistantId:e,adapter:t}){let n=Y(),r=ln()&&!!e,i=(0,Z.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,Z.useMemo)(()=>We(i),[i]),o=(0,Z.useMemo)(()=>[`channel-permission-resolve`,e,t],[e,t]),s=G({...Re(i),enabled:r}),c=s.data?.cells,l=(0,Z.useMemo)(()=>c?Bt(c,t):void 0,[c,t]),u=(0,Z.useMemo)(()=>c?{channels:Ht(c,t,`channels`),dm:Ht(c,t,`dm`)}:void 0,[c,t]),d=G({queryKey:o,queryFn:async()=>{let{data:e}=await Ee({...i,body:{adapter:t,contactType:`trusted_contact`},throwOnError:!0});return e.resolved?.threshold??null},enabled:r,retry:!1,staleTime:3e4}),f=(e,t)=>{let r=n.getQueryData(a),i=Date.now();return n.setQueryData(a,n=>({cells:[...(n?.cells??[]).filter(t=>!e(t)),...t.map(e=>({...e,updatedAt:i}))]})),{previous:r}},p=J({mutationFn:async({channelExternalId:e,tier:n})=>{await Promise.all(fn(t,e,n).map(e=>te({...i,body:e,throwOnError:!0})))},onMutate:({channelExternalId:e,tier:n})=>f(n=>pn(n,t,e),fn(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),X(`Failed to save channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),m=J({mutationFn:async({channelExternalId:e})=>{await Promise.all(zt.map(n=>me({...i,body:{selector:{scope:`channel`,adapter:t,channelExternalId:e},contactType:n},throwOnError:!0})))},onMutate:({channelExternalId:e})=>f(n=>pn(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),X(`Failed to reset channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),h=J({mutationFn:async({bucket:e,tier:n})=>{await Promise.all(hn(t,e,n).map(e=>te({...i,body:e,throwOnError:!0})))},onMutate:({bucket:e,tier:n})=>f(n=>Vt(n,t,e),hn(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),X(`Failed to save the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:o})}}),g=J({mutationFn:async({bucket:e})=>{let n=mn(t,e);await Promise.all(zt.map(e=>me({...i,body:{selector:n,contactType:e},throwOnError:!0})))},onMutate:({bucket:e})=>f(n=>Vt(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),X(`Failed to reset the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:o})}}),_=(0,Z.useMemo)(()=>{let e=new Set;return p.isPending&&p.variables&&e.add(p.variables.channelExternalId),m.isPending&&m.variables&&e.add(m.variables.channelExternalId),e},[p.isPending,p.variables,m.isPending,m.variables]),v=(0,Z.useMemo)(()=>{let e=new Set;return h.isPending&&h.variables&&e.add(h.variables.bucket),g.isPending&&g.variables&&e.add(g.variables.bucket),e},[h.isPending,h.variables,g.isPending,g.variables]);return!r||s.isError&&dn(s.error)?{supported:!1,tierOverrides:void 0,defaultCellTier:void 0,bucketTiers:void 0,pendingChannelIds:new Set,pendingBuckets:new Set,isLoading:!1,isError:!1,onTierChange:void 0,onTierReset:void 0,onBucketChange:void 0,onBucketReset:void 0}:{supported:!0,tierOverrides:l,defaultCellTier:d.data,bucketTiers:u,pendingChannelIds:_,pendingBuckets:v,isLoading:s.isPending,isError:s.isError,onTierChange:(e,t)=>p.mutate({channelExternalId:e,tier:t}),onTierReset:e=>{l?.[e]!==void 0&&m.mutate({channelExternalId:e})},onBucketChange:(e,t)=>h.mutate({bucket:e,tier:t}),onBucketReset:e=>{u?.[e]!==void 0&&g.mutate({bucket:e})}}}function _n({assistantId:e,assistantDisplayName:t,slackHandle:n}){let{t:r}=K(`channels`),i=G({...N(e),enabled:!!e,select:e=>e.channels}),a=gn({assistantId:e,adapter:`slack`}),o=G({queryKey:[`thresholds`,e],queryFn:()=>R(e),enabled:a.supported&&!!e,staleTime:3e4}).data?.interactive??null,s=a.defaultCellTier===void 0?null:a.defaultCellTier??o,c=(0,Q.jsx)(tn,{assistantDisplayName:t,slackHandle:n,accessControlsSupported:a.supported,defaultTier:s,channels:i.data,loading:i.isPending,error:i.isError,tierOverrides:a.tierOverrides,tierOverridesLoading:a.isLoading,tierOverridesError:a.isError,pendingChannelIds:a.pendingChannelIds,onTierChange:a.onTierChange,onTierReset:a.onTierReset});return!a.supported||!a.onBucketChange||!a.onBucketReset?(0,Q.jsx)(b.Root,{noPadding:!0,clipContents:!0,children:c}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[a.isError?(0,Q.jsx)(p,{tone:`error`,children:r(`slackChannelSection.overridesLoadFailed`)}):null,(0,Q.jsx)(sn,{assistantName:t,globalDefaultTier:o,bucketTiers:a.bucketTiers,loading:a.isLoading,error:a.isError,pendingBuckets:a.pendingBuckets,onBucketChange:a.onBucketChange,onBucketReset:a.onBucketReset}),(0,Q.jsx)(b.Root,{noPadding:!0,clipContents:!0,children:(0,Q.jsx)(W.Root,{type:`single`,collapsible:!0,children:(0,Q.jsxs)(W.Item,{value:`per-channel-overrides`,children:[(0,Q.jsxs)(W.Trigger,{className:`group justify-between gap-2 px-4 py-3`,children:[(0,Q.jsx)(y,{as:`span`,variant:`body-small-emphasised`,children:r(`slackChannelSection.perChannelOverrides`)}),(0,Q.jsx)(at,{"aria-hidden":`true`,className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]}),(0,Q.jsx)(W.Content,{className:`border-[var(--border-base)] data-[state=open]:border-t`,children:c})]})})})]})}function vn({slackHandle:e,health:t,disconnectPending:n=!1,onDisconnect:r,children:i}){let{t:a}=K(`channels`);return(0,Q.jsxs)(b.Root,{children:[(0,Q.jsx)(b.Header,{children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`img`,{src:d(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),e?(0,Q.jsx)(y,{as:`span`,variant:`body-medium-default`,children:e}):null,(0,Q.jsx)(Nt,{health:t}),(0,Q.jsx)(`div`,{className:`ml-auto`,children:(0,Q.jsx)(U,{type:`button`,variant:`ghost`,onClick:r,disabled:!r||n,children:a(n?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}),(0,Q.jsx)(b.Body,{children:i})]})}function yn({threadMode:e,threadModePending:t=!1,onThreadModeChange:r}){let{t:i}=K(`channels`);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(y,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:i(`slackThreadBehavior.heading`)}),(0,Q.jsxs)(ge,{value:e??`mention_then_thread`,onValueChange:e=>r?.(e),disabled:t||!r,"aria-label":i(`slackThreadBehavior.selectAria`),children:[(0,Q.jsx)(n,{value:`mention_only`,label:i(`slackThreadBehavior.mentionsOnly`),helperText:i(`slackThreadBehavior.mentionsOnlyHelp`)}),(0,Q.jsx)(n,{value:`mention_then_thread`,label:i(`slackThreadBehavior.followThreads`),helperText:i(`slackThreadBehavior.followThreadsHelp`)})]})]})}function bn({onSave:e}){let{t}=K(`channels`),[n,r]=(0,Z.useState)(``),[i,a]=(0,Z.useState)(``),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(null),u=n.trim().length>0&&i.trim().length>0&&!o;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(E,{label:t(`twilioCredentialEntry.accountSid`),type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,Q.jsx)(E,{label:t(`twilioCredentialEntry.authToken`),type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:t(`twilioCredentialEntry.authTokenPlaceholder`),disabled:o,fullWidth:!0}),c?(0,Q.jsx)(`p`,{className:`text-label-small-default`,style:{color:`var(--system-negative-strong)`},children:c}):null,(0,Q.jsx)(`div`,{children:(0,Q.jsx)(U,{type:`button`,onClick:async()=>{if(!(!e||!u)){s(!0),l(null);try{await e(n.trim(),i.trim()),r(``),a(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{s(!1)}}},disabled:!u,children:t(o?`twilioCredentialEntry.saving`:`twilioCredentialEntry.save`)})})]})}function xn({channel:e,assistantId:t,assistantName:n,assistantDisplayName:r,pending:i,initialManualEntry:a=!1,onSetup:o,onDisconnect:c,onSaveTelegramToken:l,telegramSaveStatus:d,telegramSaveError:f,onSaveDiscordToken:p,discordSaveStatus:m,discordSaveError:h=null,discordInviteUrl:g,onSaveSlackConfig:_,slackSaveStatus:v,slackSaveError:y,slackThreadMode:b,slackThreadModePending:x=!1,onSlackThreadModeChange:S,onSaveTwilioCredentials:C,policy:w,policySaving:E=!1,policyLoading:D=!1,policyError:O=!1,onPolicyChange:k}){let{t:A}=K(`channels`),j=e.status===`incomplete`,[M,N]=(0,Z.useState)(a),P=e.key===`discord`&&M&&m===`success`,F=e.configured&&!P;if(e.key===`email`)return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsx)(Mt,{}),F&&k?(0,Q.jsx)(lt,{children:(0,Q.jsx)(pt,{assistantDisplayName:r,policy:w,saving:E,loading:D,error:O,onChange:k})}):null]});if(e.key===`slack`)return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[F?(0,Q.jsx)(vn,{slackHandle:e.address,health:e.health,disconnectPending:i,onDisconnect:c,children:(0,Q.jsx)(yn,{threadMode:b,threadModePending:x,onThreadModeChange:S})}):(0,Q.jsx)(Ft,{children:(0,Q.jsx)(T,{assistantId:t,assistantName:n,onSave:_,saveStatus:v,saveError:y})}),F?(0,Q.jsx)(_n,{assistantId:t,assistantDisplayName:r,slackHandle:e.address}):null]});let I=Te[e.key];return(0,Q.jsx)(`div`,{className:`flex flex-col gap-4`,children:F?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Pt,{health:e.health,address:e.address,pending:i,onDisconnect:c}),I.hasTrustFloorControl&&k?(0,Q.jsx)(pt,{assistantDisplayName:r,policy:w,saving:E,loading:D,error:O,onChange:k}):null]}):M&&e.canManualEntry&&I.credentialForm?(e=>{switch(e){case`slack-wizard`:return null;case`telegram-token`:return(0,Q.jsx)(u,{assistantId:t,assistantName:n,saveStatus:d,saveError:f,onSave:l});case`discord-token`:return(0,Q.jsx)(s,{assistantId:t,assistantName:n,saveStatus:m,saveError:h,onSave:p,...g?{inviteUrl:g}:{}});case`twilio-credentials`:return(0,Q.jsx)(bn,{onSave:C});default:return e}})(I.credentialForm):(0,Q.jsx)(Ot,{icon:(0,Q.jsx)(_e,{channelId:e.key,className:`h-6 w-6`}),title:A(j?`channelPanel.incompleteTitle`:`channelPanel.disconnectedTitle`,{channel:ce(e.key)}),description:j?e.warning??A(`channelPanel.incompleteDescription`,{channel:ce(e.key)}):I.disconnectedPitchKey?A(I.disconnectedPitchKey,{assistant:r}):void 0,action:(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,Q.jsx)(U,{type:`button`,variant:`outlined`,onClick:o,disabled:!o||i,children:A(i?`channelPanel.opening`:j?`channelPanel.finishSetup`:`channelPanel.setUp`)}),e.canManualEntry&&I.credentialForm?(0,Q.jsx)(U,{type:`button`,variant:`link`,onClick:()=>N(!0),children:A(`channelPanel.connectManually`)}):null]})})})}var Sn=new Set([404,501]),Cn=new Set([401,403]);function wn(e){let t=L(e);return t!==void 0&&Sn.has(t)?`unsupported`:t!==void 0&&Cn.has(t)?`forbidden`:`unreadable`}function Tn(e,t,n){let r=e===`unreadable`?t:n;return r?r instanceof Error&&r.message?r.message:`Something went wrong`:null}function En(e,t){let n=Y(),r={assistant_id:e},i=G({...de({path:r}),enabled:!!e,retry:z}),a=()=>n.invalidateQueries({queryKey:ue({path:r})}),o=J({...ve(),onSuccess:a}),s=J({...V(),onSuccess:a}),c=i.data?.sources?.find(e=>e.source===t),l;l=i.isError?wn(i.error):i.isPending?`loading`:c?c.state:`none`;let u=Tn(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 Dn=`plugin`;function On(e){let t=Y(),n=ft(),r=(0,Z.useMemo)(()=>({path:{assistant_id:e}}),[e]),i=(0,Z.useMemo)(()=>Oe(r),[r]),a=G({...le(r),enabled:n&&!!e,select:dt}),o=J({mutationFn:t=>mt(e,Dn,t),onSuccess:()=>t.invalidateQueries({queryKey:i}),onError:X(`Failed to save channel policy`)}),s=(0,Z.useCallback)(e=>{o.mutate(e)},[o]);return n?{policy:a.data?.find(e=>e.channelType===Dn)?.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 kn({channel:e,assistantId:t,assistantDisplayName:n}){let{t:r}=K(`channels`),i=Je(),a=En(t,e.plugin),o=On(t);return(0,Q.jsxs)(`div`,{className:`relative flex flex-col items-center gap-3 py-10 text-center`,children:[(0,Q.jsx)(U,{className:`absolute top-0 right-0`,variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(et,{}),tooltip:r(`pluginChannelPanel.navigateToPluginPage`),"aria-label":r(`pluginChannelPanel.navigateToPluginPage`),onClick:()=>i(`/assistant/plugins/${e.plugin}`)}),(0,Q.jsx)(Pe,{icon:e.icon,className:`h-8 w-8 text-[color:var(--content-secondary)]`}),(0,Q.jsx)(`h3`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e.label}),e.description?(0,Q.jsx)(`p`,{className:`max-w-[420px] text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e.description}):null,(0,Q.jsx)(An,{channel:e,ingress:a}),o.onChange?(0,Q.jsx)(`div`,{className:`w-full max-w-[420px] text-left`,children:(0,Q.jsx)(pt,{assistantDisplayName:n,policy:o.policy,saving:o.isSaving,loading:o.isLoading,error:o.isError,onChange:o.onChange})}):null]})}function An({channel:e,ingress:t}){let{t:n}=K(`channels`);switch(t.status){case`loading`:return(0,Q.jsx)($,{children:n(`pluginChannelPanel.ingressLoading`,{channel:e.label})});case`unsupported`:return(0,Q.jsx)($,{children:n(`pluginChannelPanel.ingressUnsupported`)});case`forbidden`:return(0,Q.jsx)($,{children:n(`pluginChannelPanel.ingressForbidden`)});case`unreadable`:return(0,Q.jsxs)($,{children:[n(`pluginChannelPanel.ingressUnreadable`,{channel:e.label}),t.error?` ${t.error}`:``]});case`none`:return(0,Q.jsx)($,{children:n(`pluginChannelPanel.ingressNone`,{channel:e.label})});case`pending`:case`approved`:return(0,Q.jsx)(jn,{ingress:t})}}function jn({ingress:e}){let{t}=K(`channels`),n=e.status===`approved`;return(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,Q.jsx)(r,{tone:n?`positive`:`neutral`,children:t(n?`pluginChannelPanel.ingressApprovedTag`:`pluginChannelPanel.ingressPendingTag`)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(U,{onClick:n?e.revoke:e.approve,disabled:e.deciding,variant:n?`outlined`:`primary`,children:t(n?`pluginChannelPanel.revokeChannel`:`pluginChannelPanel.approveChannel`)}),(0,Q.jsx)(Ae,{content:t(`pluginChannelPanel.approveChannelInfo`),children:(0,Q.jsx)(`span`,{tabIndex:0,className:`inline-flex cursor-default p-0.5 text-[color:var(--content-secondary)]`,"aria-label":t(`pluginChannelPanel.approveChannelInfo`),children:(0,Q.jsx)(it,{className:`h-4 w-4`,"aria-hidden":`true`})})})]}),e.error?(0,Q.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,Q.jsx)(`p`,{className:`max-w-[420px] text-body-small-default`,style:{color:`var(--content-secondary)`},children:e})}function Mn({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}=K(`channels`),{selected:O,select:k}=wt(),[A,j]=(0,Z.useState)(null),{paneRef:M,hasRoomForList:N,drawerOpen:P,openDrawer:F,closeDrawer:I}=xt(),[L]=(0,Z.useState)(E);(0,Z.useEffect)(()=>{L&&k(L)},[L,k]);let ee=fe(t),R=A?Te[A]:null,z=e=>{k(e),I()},B=r.find(e=>e.key===O),V=B?void 0:n.find(e=>e.key===O)??n[0];if(!V&&!B)return null;let H=B?B.key:V.key,te=B?(0,Q.jsx)(kn,{channel:B,assistantId:e,assistantDisplayName:ee},B.key):(0,Q.jsx)(xn,{channel:V,assistantId:e,assistantName:t,assistantDisplayName:ee,pending:i===V.key,initialManualEntry:L===V.key,onSetup:f?()=>f(V.key,V.status===`incomplete`):void 0,onDisconnect:p&&V.canDisconnect?()=>j(V.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?.[V.key],policySaving:c===V.key,policyLoading:l,policyError:u,onPolicyChange:d?e=>d(V.key,e):void 0},V.key);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.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,Q.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,Q.jsx)(Tt,{channels:n,pluginChannels:r,selectedKey:H,onSelect:z})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`flex items-center`,children:(0,Q.jsx)(gt,{onClick:F})}),(0,Q.jsx)(_t,{open:P,onClose:I,title:D(`assistantChannelsList.drawerTitle`),children:(0,Q.jsx)(Tt,{channels:n,pluginChannels:r,selectedKey:H,onSelect:z})})]}),(0,Q.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:H===`slack`||H===`email`?te:(0,Q.jsx)(lt,{children:te})})]}),(0,Q.jsx)(re,{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 Nn=`plugin:`;function Pn(e){let{data:t}=G({...ze({path:{assistant_id:e}}),enabled:!!e,select:e=>e.channels.filter(e=>e.source?.startsWith(Nn)).map(e=>({plugin:e.id,key:H(e.id),label:e.label,description:e.subtitle,icon:e.icon}))});return t??[]}var Fn=`0.11.5-dev.202608242314.38e0513`;function In(){return m(Fn)}var Ln=`0.11.5-dev.202608252008.65007aa`;function Rn(){return m(Ln)}var zn={slack:se,telegram:Me,discord:t,email:void 0,phone:Ce},Bn={slack:`useAssistantChannels.setupPrompt.slack`,telegram:`useAssistantChannels.setupPrompt.telegram`,discord:`useAssistantChannels.setupPrompt.discord`,email:`useAssistantChannels.setupPrompt.email`,phone:`useAssistantChannels.setupPrompt.phone`},Vn={slack:`useAssistantChannels.finishPrompt.slack`,telegram:`useAssistantChannels.finishPrompt.telegram`,discord:`useAssistantChannels.finishPrompt.discord`,email:`useAssistantChannels.finishPrompt.email`,phone:`useAssistantChannels.finishPrompt.phone`},Hn=15e3;function Un({assistantId:e,onStartSetupConversation:t}){let{t:n}=K(`common`),r=Y(),i=(0,Z.useMemo)(()=>({path:{assistant_id:e}}),[e]),o=(0,Z.useMemo)(()=>ie(i),[i]),s=In(),c=Rn(),l=(0,Z.useMemo)(()=>Wn(s),[s]),u=G({...Ge(i),enabled:!!e,refetchInterval:Hn,select:e=>e.snapshots}),d=(0,Z.useMemo)(()=>Gn(u.data??[],l,c),[u.data,l,c]),f=d.some(e=>e.key===`slack`&&e.configured),p=G({...oe(i),enabled:f,select:e=>e.threadMode}),m=ht(e),h=(0,Z.useCallback)(()=>r.invalidateQueries({queryKey:o}),[r,o]),g=J({mutationFn:async t=>{let n=zn[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`&&a(r,e)}}),_=ne({assistantId:e}),v=Ve({assistantId:e}),y=G({...O(i),enabled:!!e&&c}),b=M({assistantId:e}),x=Ue({assistantId:e}),S=J({...be(),onSuccess:()=>{r.invalidateQueries({queryKey:je(i)})}}),C=v.mutate,w=(0,Z.useCallback)(e=>{C(e)},[C]),T=_.mutate,E=(0,Z.useCallback)(e=>{T(e)},[T]),D=b.mutate,k=(0,Z.useCallback)((e,t)=>{D({botToken:e,appToken:t})},[D]),A=S.mutate,j=(0,Z.useCallback)(t=>{A({path:{assistant_id:e},body:{threadMode:t}})},[A,e]),N=x.mutateAsync,P=(0,Z.useCallback)(async(e,t)=>{await N({accountSid:e,authToken:t})},[N]),F=(0,Z.useCallback)((e,r=!1)=>{t&&t(n(r?Vn[e]:Bn[e]))},[t,n]),I=g.mutate,L=(0,Z.useCallback)(e=>{I(e)},[I]);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?F:void 0,onDisconnect:L,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:k,slackSaveStatus:b.status,slackSaveError:b.error?.message??null,onSlackThreadModeChange:j,onSaveTwilioCredentials:P}}function Wn(e){return e?ye:ye.filter(e=>e!==`discord`)}function Gn(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:Kn(t),configured:ke(t),canDisconnect:zn[e]!==void 0&&(e!==`discord`||n),canManualEntry:Te[e].credentialForm!==void 0&&(e!==`discord`||n),health:t?.health,address:t?.channelHandle??void 0}})}function Kn(e){return e?e.ready?`ready`:e.setupStatus===`not_configured`?`not_configured`:`incomplete`:`not_configured`}function qn(){let[e,t]=Ke(),n=e.get(`setup`),r=n&&pe(n)?n:null;return(0,Z.useEffect)(()=>{r&&t(e=>(e.delete(`setup`),e),{replace:!0})},[r,t]),r}function Jn({assistantId:e,onStartSetupConversation:t}){let n=xe.use.a2aChannel(),r=Ne.use.name(),i=qn(),a=bt(e),o=fe(r),s=Un({assistantId:e,onStartSetupConversation:t});return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-6 overflow-hidden`,children:[(0,Q.jsx)(Mn,{assistantId:e,assistantName:o,initialChannel:i,pluginChannels:Pn(e),...s}),n?(0,Q.jsx)(vt,{onClick:a.open}):null,(0,Q.jsx)(yt,{open:a.isOpen,assistantId:e,onClose:a.close})]})}function Yn(){let e=Je(),t=Se();return(0,Q.jsx)(Jn,{assistantId:t,onStartSetupConversation:t=>{he(e,{prompt:t})}},t)}export{Yn as ChannelsPageRoute};
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{$v as t,AC as n,BC as r,Bd as i,C as a,Cn as o,D as s,DS as c,Dv as l,E as u,Ei as d,Es as f,GC as p,Gg as m,Gy as h,H as g,IS as _,Ii as v,JC as y,KC as b,KS as x,Li as S,Ls as C,Ni as w,O as T,PC as E,QC as D,Qp as O,Qu as k,RC as A,RS as j,S as M,T as N,Th as P,Ts as F,U as I,Uf as L,Uv as ee,W as R,Wf as z,XS as B,_c as V,ag as H,ap as te,aw as U,b as ne,bC as re,bp as ie,dC as ae,em as oe,ey as se,fa as ce,fc as le,gc as ue,hc as de,ic as fe,ig as pe,ip as me,iu as he,jC as ge,la as _e,mc as ve,ng as ye,nm as be,np as xe,nt as Se,ny as Ce,oC as we,og as Te,op as Ee,pa as De,pc as Oe,rg as ke,sw as Ae,tm as je,ty as Me,uC as W,uS as Ne,ua as Pe,uh as Fe,uw as Ie,vC as Le,vc as Re,vp as ze,wC as Be,x as Ve,xC as He,y as Ue,yc as We,yp as Ge}from"./app-D0NlDYsG.js";import{$n as G,E as K,O as q,Xn as J,nr as Y}from"./vendor-CtXGFqsu.js";import{_ as Ke,d as qe,f as Je,h as Ye,n as Xe,t as Ze,x as Qe}from"./react-B9IgSVeK.js";import{Dn as $e,Rt as et,Yn as tt,Zr as nt,br as rt,fr as it,qi as at,qn as ot,vt as st,zi as ct}from"./icons-C0wyat6T.js";import{t as lt}from"./detail-card-BhbwKaee.js";import{a as ut,i as dt,n as ft,o as pt,r as mt,t as ht}from"./use-channel-trust-floors-DeIos7Sw.js";import{t as X}from"./mutation-error-Bpj2rO9W.js";import{a as gt,i as _t,n as vt,r as yt,t as bt}from"./use-invite-link-dialog-BWTyTo38.js";import{t as xt}from"./use-side-list-room-Bm4W05s8.js";import{i as St,r as Ct}from"./service-form-controls-CjcwqBZf.js";var Z=e(Qe(),1);function wt(){let{channelId:e}=Ye(),t=Je(),{search:n}=qe();return{selected:e,select:(0,Z.useCallback)(e=>{t({pathname:`/assistant/channels/${encodeURIComponent(e)}`,search:n},{replace:!0})},[t,n])}}var Q=Ze();function Tt({channels:e,pluginChannels:t=[],selectedKey:n,onSelect:r}){return(0,Q.jsx)(b.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,Q.jsx)(b.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[e.map(e=>(0,Q.jsx)(Et,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key)),t.map(e=>(0,Q.jsx)(Dt,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key))]})})})}function Et({channel:e,selected:t,onClick:n}){let i=e.status===`ready`,a=ce(e.key),o=i?`Connected`:`Not connected`;return(0,Q.jsx)(D,{asChild:!0,active:t,"aria-label":`${a}, ${o}`,children:(0,Q.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,Q.jsx)(_e,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:a}),(0,Q.jsx)(`span`,{className:`flex shrink-0 items-center`,children:(0,Q.jsx)(r,{tone:i?`positive`:`neutral`,children:o})})]})})}function Dt({channel:e,selected:t,onClick:n}){let{t:r}=K(`channels`);return(0,Q.jsx)(D,{asChild:!0,active:t,"aria-label":r(`channelAdapterList.pluginChannelAria`,{channel:e.label}),children:(0,Q.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,Q.jsx)(Pe,{icon:e.icon,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:e.label}),(0,Q.jsx)(et,{"aria-hidden":!0,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`})]})})}function Ot({icon:e,title:t,description:n,action:r,className:i}){return(0,Q.jsxs)(`div`,{className:Ie(`flex flex-col items-center justify-center gap-3 px-4 py-12 text-center`,i),children:[e?(0,Q.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,Q.jsx)(`h3`,{className:`text-title-small text-[var(--content-default)]`,children:t}),n?(0,Q.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:n}):null,r?(0,Q.jsx)(`div`,{className:`mt-1`,children:r}):null]})}function kt({mode:e,onChange:t}){let{t:n}=K(`common`);return(0,Q.jsx)(`div`,{className:`max-w-[280px]`,children:(0,Q.jsx)(Be,{ariaLabel:n(`serviceCard.modeToggleAriaLabel`),value:e,onChange:t,items:[{value:`managed`,label:n(`serviceCard.managedLabel`)},{value:`your-own`,label:n(`serviceCard.yourOwnLabel`)}]})})}function At({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,Q.jsxs)(lt,{id:e,title:t,subtitle:n,accessory:(0,Q.jsx)(kt,{mode:r,onChange:i}),children:[(0,Q.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,Q.jsx)(`div`,{className:`mt-4`,children:a})]})}function jt(e,t){return e===`managed`||e===`your-own`?e:t}function Mt(){let{t:e}=K(`channels`),t=Se(),n=Fe(),{data:r}=G({...k(),enabled:n}),a=r?.results?.[0]?.handle,s=v.use.emailRootDomain(),c=P(),[u,d]=(0,Z.useState)(()=>c===`gated`?`your-own`:jt(x(f,`managed`),`managed`)),[p,m]=(0,Z.useState)(()=>{let e=x(F,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),{platformAssistantId:g,error:y}=S(t,c===`full`&&u===`managed`),b=g??(y?t:null),T=G({queryKey:[`byoEmailCredential`,t,p],queryFn:async()=>{let{data:e}=await ee({path:{assistant_id:t},body:{service:p,field:`api_key`},throwOnError:!0});return e},enabled:u===`your-own`||c===`gated`,staleTime:6e4,retry:j,meta:{errorContext:`byo_email_credential_check`}});(0,Z.useEffect)(()=>{T.error&&_(T.error,{context:`byo_email_credential_check`,bestEffort:!0})},[T.error]);let E=T.data?.hasSecret===!0,D=l.use.assistantInbox(),O=w(Ne.use.name()??``),{data:A}=G({...i(),enabled:D&&n&&c===`full`}),M=D&&c===`full`&&u===`managed`&&b!==null&&!!A?.entitlements&&A.entitlements.managed_email!==!0,N=(0,Z.useCallback)(e=>{d(e),B(f,e)},[]),I=(0,Z.useCallback)(()=>{B(F,p),He.success(e(`emailChannelSection.saveSuccessToast`))},[p,e]),L=(0,Z.useMemo)(()=>C.find(e=>e.id===p)??C[0],[p]),R=(0,Q.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,Q.jsx)(it,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsx)(`span`,{children:(0,Q.jsx)(q,{i18nKey:`emailChannelSection.setupInstructions`,ns:`channels`,values:{providerName:L.displayName,setupSkill:L.setupSkill},components:{code:(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})}),(0,Q.jsxs)(h,{href:L.docsUrl,tone:`default`,className:`inline-flex items-center gap-1`,glyph:!1,children:[e(`emailChannelSection.openProvider`,{providerName:L.displayName}),(0,Q.jsx)(nt,{className:`h-3 w-3`})]})]})]}),z=(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:e(`emailChannelSection.providerLabel`)}),(0,Q.jsx)(Le,{value:p,onChange:e=>{(e===`mailgun`||e===`resend`)&&m(e)},options:C.map(e=>({value:e.id,label:e.displayName}))})]}),E?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.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,Q.jsx)(ct,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsx)(`span`,{children:(0,Q.jsx)(q,{i18nKey:`emailChannelSection.apiKeyConfigured`,ns:`channels`,values:{providerName:L.displayName,setupSkill:L.setupSkill},components:{code:(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})})]}),(0,Q.jsxs)(h,{href:L.docsUrl,tone:`default`,className:`inline-flex items-center gap-1 text-body-small-default`,glyph:!1,children:[e(`emailChannelSection.openProvider`,{providerName:L.displayName}),(0,Q.jsx)(nt,{className:`h-3 w-3`})]})]}):R,(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Q.jsx)(Ct,{onClick:I,disabled:!1})})]});return c===`gated`?(0,Q.jsx)(St,{id:`email`,title:e(`emailChannelSection.title`),subtitle:e(`emailChannelSection.subtitle`),children:z}):(0,Q.jsx)(At,{id:`email`,title:M?O.title:e(`emailChannelSection.title`),subtitle:M?O.subtitle:e(`emailChannelSection.subtitle`),mode:u,onModeChange:N,children:u===`managed`?(0,Q.jsx)(`div`,{className:`space-y-4`,children:c===`disabled`?(0,Q.jsx)(o,{children:e(`emailChannelSection.platformLoginNotice`)}):b===null?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(tt,{className:`h-4 w-4 animate-spin`}),e(`emailChannelSection.connecting`)]}):(0,Q.jsx)(ut,{assistantId:b,assistantHandle:a,emailRootDomain:s})}):z})}function Nt({health:e}){let{Icon:t,label:n,tone:i}=De(e);return(0,Q.jsx)(r,{tone:i,leftIcon:(0,Q.jsx)(t,{}),children:n})}function Pt({address:e,health:t,pending:n,onDisconnect:r}){let{t:i}=K(`channels`);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(Nt,{health:t}),e?(0,Q.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e}):null,(0,Q.jsx)(`div`,{className:`ml-auto`,children:(0,Q.jsx)(U,{type:`button`,variant:`danger`,onClick:r,disabled:!r||n,children:i(n?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}function Ft({children:e}){let{t}=K(`channels`);return(0,Q.jsxs)(b.Root,{children:[(0,Q.jsx)(b.Header,{children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`img`,{src:d(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),(0,Q.jsx)(y,{as:`span`,variant:`body-medium-default`,children:t(`slackChannelCard.setupHeading`)})]})}),(0,Q.jsx)(b.Body,{children:e})]})}g.map(e=>e.riskThreshold);var It=[`none`,`low`];function Lt(e){if(e!==void 0)return e===`none`?`none`:`low`}var Rt={none:{label:I(`none`).label,sublabel:`asks every time`,tone:`negative`,dotColor:`var(--system-negative-strong)`},low:{label:I(`low`).label,sublabel:`safe lookups`,tone:`warning`,dotColor:`var(--system-mid-strong)`},medium:{label:I(`medium`).label,sublabel:`broader lookups`,tone:`info`,dotColor:`var(--system-info-strong)`},high:{label:I(`high`).label,sublabel:`any lookup`,tone:`positive`,dotColor:`var(--system-positive-strong)`}},zt=[`trusted_contact`,`unverified_contact`,`unknown`];function Bt(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 Vt(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 Ht(e,t,n){let r;for(let i of e)Vt(i,t,n)&&(i.contactType===`trusted_contact`||r===void 0)&&(r=i.threshold);return r}var Ut=`__default__`;function Wt({color:e}){return(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 shrink-0 rounded-full`,style:{backgroundColor:e}})}function Gt({tier:e,defaultTier:t,disabled:n,onTierChange:r,onReset:i,"aria-label":a}){let{t:o}=K(`channels`),s=Lt(e??t??void 0),c=Lt(t??void 0)??null,l=It.map(e=>({value:e,label:Rt[e].label,icon:(0,Q.jsx)(Wt,{color:Rt[e].dotColor}),suffix:e===c?(0,Q.jsx)(`span`,{className:`text-[color:var(--content-tertiary)]`,children:o(`tierPicker.defaultSuffix`)}):void 0,tooltip:Rt[e].sublabel}));return l.unshift({value:Ut,label:`Default`,icon:(0,Q.jsx)(Wt,{color:`transparent`}),tooltip:`follows the default level`}),(0,Q.jsx)(Le,{value:s??``,onChange:e=>{e===Ut||e===c?i():r(e)},options:l,placeholder:o(`tierPicker.defaultPlaceholder`),disabled:n,size:`compact`,menuAlign:`end`,"aria-label":a})}function Kt(e){return e.type===`dm`?`dm`:e.isPrivate?`private`:`public`}function qt(e){return e.filter(e=>Kt(e)!==`dm`)}function Jt(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===null||Kt(e)===n)&&(r===``||e.name.toLowerCase().includes(r))).sort((e,t)=>e.name.localeCompare(t.name))}function Yt(e){let t={public:0,private:0,dm:0};for(let n of e)t[Kt(n)]+=1;return t}function Xt(e){return e.memberCount==null?null:e.memberCount===1?`1 member`:`${e.memberCount} members`}var Zt=[{value:null,labelKey:`slackChannelList.filterAll`},{value:`public`,labelKey:`slackChannelList.filterPublic`},{value:`private`,labelKey:`slackChannelList.filterPrivate`}],Qt={public:rt,private:ot},$t=100,en=new Set;function tn({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=en,onTierChange:d,onTierReset:f}){let{t:p}=K(`channels`),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(null),v=(0,Z.useMemo)(()=>qt(n??[]),[n]),b=(0,Z.useMemo)(()=>Jt(v,m,g),[v,m,g]),x=(0,Z.useMemo)(()=>Yt(v),[v]);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,Q.jsx)(y,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,Q.jsx)(q,{i18nKey:`slackChannelList.presenceHint`,ns:`channels`,values:{handle:t??`@${e}`,assistant:e},components:{invite:(0,Q.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`}),remove:(0,Q.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`})}})}),r?(0,Q.jsx)(y,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.loading`)}):i?(0,Q.jsx)(y,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--system-negative-strong)]`,children:p(`slackChannelList.loadFailed`)}):v.length===0?(0,Q.jsx)(Ot,{icon:(0,Q.jsx)(rt,{className:`h-6 w-6`}),title:p(`slackChannelList.emptyTitle`)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,Q.jsx)(E,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:p(`slackChannelList.searchPlaceholder`),"aria-label":p(`slackChannelList.searchAria`),leftIcon:(0,Q.jsx)(st,{className:`h-4 w-4`}),fullWidth:!0})}),(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,role:`group`,"aria-label":p(`slackChannelList.filterGroupAria`),children:Zt.map(({value:e,labelKey:t})=>{let n=g===e,r=e===null?v.length:x[e];return(0,Q.jsx)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>_(e),className:Ie(`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,Q.jsx)(y,{as:`span`,variant:`body-small-lighter`,className:`py-4 text-center text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.noMatches`)}):b.length>$t?(0,Q.jsx)(`div`,{className:`h-96`,children:(0,Q.jsx)(ae,{items:b,computeItemKey:(e,t)=>t.id,itemContent:(e,t)=>(0,Q.jsx)(nn,{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,Q.jsx)(`div`,{className:`max-h-96 overflow-y-auto`,children:b.map(e=>(0,Q.jsx)(nn,{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 nn({channel:e,pending:t,overridesLoading:n,overridesError:r,defaultTier:i,accessControls:a,tierOverride:o,onTierChange:s,onReset:c}){let{t:l}=K(`channels`),u=Kt(e);if(u===`dm`)return null;let d=Qt[u],f=Xt(e),p=`[&+&]:border-t [&+&]:border-[var(--border-base)]`;return a?(0,Q.jsx)(we,{className:p,leading:(0,Q.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,subtitle:f??void 0,trailing:(0,Q.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,Q.jsx)(Gt,{tier:o,defaultTier:i,disabled:t||n||r,onTierChange:s,onReset:c,"aria-label":l(`slackChannelList.accessAria`,{channel:e.name})})})}):(0,Q.jsx)(we,{className:p,leading:(0,Q.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,trailing:f==null?void 0:(0,Q.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:f})})}function rn(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 an({defaultTier:e}){let{t}=K(`channels`),n=Lt(e??void 0)??null;return(0,Q.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-3`,children:(0,Q.jsx)(`ul`,{className:`grid gap-x-6 gap-y-3 sm:grid-cols-2`,children:[...It].reverse().map(e=>{let r=Rt[e];return(0,Q.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(Wt,{color:r.dotColor}),(0,Q.jsx)(y,{as:`span`,variant:`body-small-emphasised`,children:r.label}),e===n?(0,Q.jsx)(y,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:t(`slackChannelTierLegend.defaultMarker`)}):null]}),(0,Q.jsx)(y,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:rn(e)})]},e)})})})}var on=[{bucket:`channels`,icon:rt,title:`Channels`,description:`Public and private channels`},{bucket:`dm`,icon:$e,title:`Direct messages`,description:`One-on-one DMs`}];function sn({assistantName:e,globalDefaultTier:t,bucketTiers:n,loading:r,error:i,pendingBuckets:a,onBucketChange:o,onBucketReset:s}){let{t:l}=K(`channels`);return(0,Q.jsxs)(b.Root,{children:[(0,Q.jsx)(b.Header,{children:(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[l(`slackChannelTypeDefaults.heading`),(0,Q.jsx)(y,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,Q.jsx)(q,{i18nKey:`slackChannelTypeDefaults.subtitle`,ns:`channels`,values:{assistant:e},components:{trustRules:(0,Q.jsx)(Xe,{to:c.settings.privacy,className:A()})}})})]})}),(0,Q.jsx)(b.Body,{className:`py-1`,children:on.map(({bucket:e,icon:c,title:u,description:d})=>{let f=e===`dm`?n?.channels??t:t;return(0,Q.jsx)(we,{className:`[&+&]:border-t [&+&]:border-[var(--border-base)]`,leading:(0,Q.jsx)(c,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:u,subtitle:d,trailing:(0,Q.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,Q.jsx)(Gt,{tier:n?.[e],defaultTier:f,disabled:r||i||a.has(e),onTierChange:t=>o(e,t),onReset:()=>s(e),"aria-label":l(`slackChannelTypeDefaults.bucketAria`,{bucket:u})})})},e)})}),(0,Q.jsx)(b.Footer,{className:`p-0`,children:(0,Q.jsx)(an,{defaultTier:t})})]})}var cn=`0.11.0`;function ln(){return m(cn)}var un=new Set([404,501]);function dn(e){let t=L(e);return t!==void 0&&un.has(t)}function fn(e,t,n){return zt.map(r=>({selector:{scope:`channel`,adapter:e,channelExternalId:t},contactType:r,threshold:n}))}function pn(e,t,n){return e.selector.scope===`channel`&&e.selector.adapter===t&&e.selector.channelExternalId===n}function mn(e,t){return t===`channels`?{scope:`adapter`,adapter:e}:{scope:`channel_type`,adapter:e,channelType:`dm`}}function hn(e,t,n){let r=mn(e,t);return zt.map(e=>({selector:r,contactType:e,threshold:n}))}function gn({assistantId:e,adapter:t}){let n=Y(),r=ln()&&!!e,i=(0,Z.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,Z.useMemo)(()=>We(i),[i]),o=(0,Z.useMemo)(()=>[`channel-permission-resolve`,e,t],[e,t]),s=G({...Re(i),enabled:r}),c=s.data?.cells,l=(0,Z.useMemo)(()=>c?Bt(c,t):void 0,[c,t]),u=(0,Z.useMemo)(()=>c?{channels:Ht(c,t,`channels`),dm:Ht(c,t,`dm`)}:void 0,[c,t]),d=G({queryKey:o,queryFn:async()=>{let{data:e}=await Ee({...i,body:{adapter:t,contactType:`trusted_contact`},throwOnError:!0});return e.resolved?.threshold??null},enabled:r,retry:!1,staleTime:3e4}),f=(e,t)=>{let r=n.getQueryData(a),i=Date.now();return n.setQueryData(a,n=>({cells:[...(n?.cells??[]).filter(t=>!e(t)),...t.map(e=>({...e,updatedAt:i}))]})),{previous:r}},p=J({mutationFn:async({channelExternalId:e,tier:n})=>{await Promise.all(fn(t,e,n).map(e=>te({...i,body:e,throwOnError:!0})))},onMutate:({channelExternalId:e,tier:n})=>f(n=>pn(n,t,e),fn(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),X(`Failed to save channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),m=J({mutationFn:async({channelExternalId:e})=>{await Promise.all(zt.map(n=>me({...i,body:{selector:{scope:`channel`,adapter:t,channelExternalId:e},contactType:n},throwOnError:!0})))},onMutate:({channelExternalId:e})=>f(n=>pn(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),X(`Failed to reset channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),h=J({mutationFn:async({bucket:e,tier:n})=>{await Promise.all(hn(t,e,n).map(e=>te({...i,body:e,throwOnError:!0})))},onMutate:({bucket:e,tier:n})=>f(n=>Vt(n,t,e),hn(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),X(`Failed to save the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:o})}}),g=J({mutationFn:async({bucket:e})=>{let n=mn(t,e);await Promise.all(zt.map(e=>me({...i,body:{selector:n,contactType:e},throwOnError:!0})))},onMutate:({bucket:e})=>f(n=>Vt(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),X(`Failed to reset the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:o})}}),_=(0,Z.useMemo)(()=>{let e=new Set;return p.isPending&&p.variables&&e.add(p.variables.channelExternalId),m.isPending&&m.variables&&e.add(m.variables.channelExternalId),e},[p.isPending,p.variables,m.isPending,m.variables]),v=(0,Z.useMemo)(()=>{let e=new Set;return h.isPending&&h.variables&&e.add(h.variables.bucket),g.isPending&&g.variables&&e.add(g.variables.bucket),e},[h.isPending,h.variables,g.isPending,g.variables]);return!r||s.isError&&dn(s.error)?{supported:!1,tierOverrides:void 0,defaultCellTier:void 0,bucketTiers:void 0,pendingChannelIds:new Set,pendingBuckets:new Set,isLoading:!1,isError:!1,onTierChange:void 0,onTierReset:void 0,onBucketChange:void 0,onBucketReset:void 0}:{supported:!0,tierOverrides:l,defaultCellTier:d.data,bucketTiers:u,pendingChannelIds:_,pendingBuckets:v,isLoading:s.isPending,isError:s.isError,onTierChange:(e,t)=>p.mutate({channelExternalId:e,tier:t}),onTierReset:e=>{l?.[e]!==void 0&&m.mutate({channelExternalId:e})},onBucketChange:(e,t)=>h.mutate({bucket:e,tier:t}),onBucketReset:e=>{u?.[e]!==void 0&&g.mutate({bucket:e})}}}function _n({assistantId:e,assistantDisplayName:t,slackHandle:n}){let{t:r}=K(`channels`),i=G({...N(e),enabled:!!e,select:e=>e.channels}),a=gn({assistantId:e,adapter:`slack`}),o=G({queryKey:[`thresholds`,e],queryFn:()=>R(e),enabled:a.supported&&!!e,staleTime:3e4}).data?.interactive??null,s=a.defaultCellTier===void 0?null:a.defaultCellTier??o,c=(0,Q.jsx)(tn,{assistantDisplayName:t,slackHandle:n,accessControlsSupported:a.supported,defaultTier:s,channels:i.data,loading:i.isPending,error:i.isError,tierOverrides:a.tierOverrides,tierOverridesLoading:a.isLoading,tierOverridesError:a.isError,pendingChannelIds:a.pendingChannelIds,onTierChange:a.onTierChange,onTierReset:a.onTierReset});return!a.supported||!a.onBucketChange||!a.onBucketReset?(0,Q.jsx)(b.Root,{noPadding:!0,clipContents:!0,children:c}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[a.isError?(0,Q.jsx)(p,{tone:`error`,children:r(`slackChannelSection.overridesLoadFailed`)}):null,(0,Q.jsx)(sn,{assistantName:t,globalDefaultTier:o,bucketTiers:a.bucketTiers,loading:a.isLoading,error:a.isError,pendingBuckets:a.pendingBuckets,onBucketChange:a.onBucketChange,onBucketReset:a.onBucketReset}),(0,Q.jsx)(b.Root,{noPadding:!0,clipContents:!0,children:(0,Q.jsx)(W.Root,{type:`single`,collapsible:!0,children:(0,Q.jsxs)(W.Item,{value:`per-channel-overrides`,children:[(0,Q.jsxs)(W.Trigger,{className:`group justify-between gap-2 px-4 py-3`,children:[(0,Q.jsx)(y,{as:`span`,variant:`body-small-emphasised`,children:r(`slackChannelSection.perChannelOverrides`)}),(0,Q.jsx)(at,{"aria-hidden":`true`,className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]}),(0,Q.jsx)(W.Content,{className:`border-[var(--border-base)] data-[state=open]:border-t`,children:c})]})})})]})}function vn({slackHandle:e,health:t,disconnectPending:n=!1,onDisconnect:r,children:i}){let{t:a}=K(`channels`);return(0,Q.jsxs)(b.Root,{children:[(0,Q.jsx)(b.Header,{children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`img`,{src:d(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),e?(0,Q.jsx)(y,{as:`span`,variant:`body-medium-default`,children:e}):null,(0,Q.jsx)(Nt,{health:t}),(0,Q.jsx)(`div`,{className:`ml-auto`,children:(0,Q.jsx)(U,{type:`button`,variant:`ghost`,onClick:r,disabled:!r||n,children:a(n?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}),(0,Q.jsx)(b.Body,{children:i})]})}function yn({threadMode:e,threadModePending:t=!1,onThreadModeChange:r}){let{t:i}=K(`channels`);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(y,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:i(`slackThreadBehavior.heading`)}),(0,Q.jsxs)(ge,{value:e??`mention_then_thread`,onValueChange:e=>r?.(e),disabled:t||!r,"aria-label":i(`slackThreadBehavior.selectAria`),children:[(0,Q.jsx)(n,{value:`mention_only`,label:i(`slackThreadBehavior.mentionsOnly`),helperText:i(`slackThreadBehavior.mentionsOnlyHelp`)}),(0,Q.jsx)(n,{value:`mention_then_thread`,label:i(`slackThreadBehavior.followThreads`),helperText:i(`slackThreadBehavior.followThreadsHelp`)})]})]})}function bn({onSave:e}){let{t}=K(`channels`),[n,r]=(0,Z.useState)(``),[i,a]=(0,Z.useState)(``),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(null),u=n.trim().length>0&&i.trim().length>0&&!o;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(E,{label:t(`twilioCredentialEntry.accountSid`),type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,Q.jsx)(E,{label:t(`twilioCredentialEntry.authToken`),type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:t(`twilioCredentialEntry.authTokenPlaceholder`),disabled:o,fullWidth:!0}),c?(0,Q.jsx)(`p`,{className:`text-label-small-default`,style:{color:`var(--system-negative-strong)`},children:c}):null,(0,Q.jsx)(`div`,{children:(0,Q.jsx)(U,{type:`button`,onClick:async()=>{if(!(!e||!u)){s(!0),l(null);try{await e(n.trim(),i.trim()),r(``),a(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{s(!1)}}},disabled:!u,children:t(o?`twilioCredentialEntry.saving`:`twilioCredentialEntry.save`)})})]})}function xn({channel:e,assistantId:t,assistantName:n,assistantDisplayName:r,pending:i,initialManualEntry:a=!1,onSetup:o,onDisconnect:c,onSaveTelegramToken:l,telegramSaveStatus:d,telegramSaveError:f,onSaveDiscordToken:p,discordSaveStatus:m,discordSaveError:h=null,discordInviteUrl:g,onSaveSlackConfig:_,slackSaveStatus:v,slackSaveError:y,slackThreadMode:b,slackThreadModePending:x=!1,onSlackThreadModeChange:S,onSaveTwilioCredentials:C,policy:w,policySaving:E=!1,policyLoading:D=!1,policyError:O=!1,onPolicyChange:k}){let{t:A}=K(`channels`),j=e.status===`incomplete`,[M,N]=(0,Z.useState)(a),P=e.key===`discord`&&M&&m===`success`,F=e.configured&&!P;if(e.key===`email`)return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsx)(Mt,{}),F&&k?(0,Q.jsx)(lt,{children:(0,Q.jsx)(pt,{assistantDisplayName:r,policy:w,saving:E,loading:D,error:O,onChange:k})}):null]});if(e.key===`slack`)return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[F?(0,Q.jsx)(vn,{slackHandle:e.address,health:e.health,disconnectPending:i,onDisconnect:c,children:(0,Q.jsx)(yn,{threadMode:b,threadModePending:x,onThreadModeChange:S})}):(0,Q.jsx)(Ft,{children:(0,Q.jsx)(T,{assistantId:t,assistantName:n,onSave:_,saveStatus:v,saveError:y})}),F?(0,Q.jsx)(_n,{assistantId:t,assistantDisplayName:r,slackHandle:e.address}):null]});let I=Te[e.key];return(0,Q.jsx)(`div`,{className:`flex flex-col gap-4`,children:F?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Pt,{health:e.health,address:e.address,pending:i,onDisconnect:c}),I.hasTrustFloorControl&&k?(0,Q.jsx)(pt,{assistantDisplayName:r,policy:w,saving:E,loading:D,error:O,onChange:k}):null]}):M&&e.canManualEntry&&I.credentialForm?(e=>{switch(e){case`slack-wizard`:return null;case`telegram-token`:return(0,Q.jsx)(u,{assistantId:t,assistantName:n,saveStatus:d,saveError:f,onSave:l});case`discord-token`:return(0,Q.jsx)(s,{assistantId:t,assistantName:n,saveStatus:m,saveError:h,onSave:p,...g?{inviteUrl:g}:{}});case`twilio-credentials`:return(0,Q.jsx)(bn,{onSave:C});default:return e}})(I.credentialForm):(0,Q.jsx)(Ot,{icon:(0,Q.jsx)(_e,{channelId:e.key,className:`h-6 w-6`}),title:A(j?`channelPanel.incompleteTitle`:`channelPanel.disconnectedTitle`,{channel:ce(e.key)}),description:j?e.warning??A(`channelPanel.incompleteDescription`,{channel:ce(e.key)}):I.disconnectedPitchKey?A(I.disconnectedPitchKey,{assistant:r}):void 0,action:(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,Q.jsx)(U,{type:`button`,variant:`outlined`,onClick:o,disabled:!o||i,children:A(i?`channelPanel.opening`:j?`channelPanel.finishSetup`:`channelPanel.setUp`)}),e.canManualEntry&&I.credentialForm?(0,Q.jsx)(U,{type:`button`,variant:`link`,onClick:()=>N(!0),children:A(`channelPanel.connectManually`)}):null]})})})}var Sn=new Set([404,501]),Cn=new Set([401,403]);function wn(e){let t=L(e);return t!==void 0&&Sn.has(t)?`unsupported`:t!==void 0&&Cn.has(t)?`forbidden`:`unreadable`}function Tn(e,t,n){let r=e===`unreadable`?t:n;return r?r instanceof Error&&r.message?r.message:`Something went wrong`:null}function En(e,t){let n=Y(),r={assistant_id:e},i=G({...de({path:r}),enabled:!!e,retry:z}),a=()=>n.invalidateQueries({queryKey:ue({path:r})}),o=J({...ve(),onSuccess:a}),s=J({...V(),onSuccess:a}),c=i.data?.sources?.find(e=>e.source===t),l;l=i.isError?wn(i.error):i.isPending?`loading`:c?c.state:`none`;let u=Tn(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 Dn=`plugin`;function On(e){let t=Y(),n=ft(),r=(0,Z.useMemo)(()=>({path:{assistant_id:e}}),[e]),i=(0,Z.useMemo)(()=>Oe(r),[r]),a=G({...le(r),enabled:n&&!!e,select:dt}),o=J({mutationFn:t=>mt(e,Dn,t),onSuccess:()=>t.invalidateQueries({queryKey:i}),onError:X(`Failed to save channel policy`)}),s=(0,Z.useCallback)(e=>{o.mutate(e)},[o]);return n?{policy:a.data?.find(e=>e.channelType===Dn)?.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 kn({channel:e,assistantId:t,assistantDisplayName:n}){let{t:r}=K(`channels`),i=Je(),a=En(t,e.plugin),o=On(t);return(0,Q.jsxs)(`div`,{className:`relative flex flex-col items-center gap-3 py-10 text-center`,children:[(0,Q.jsx)(U,{className:`absolute top-0 right-0`,variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(et,{}),tooltip:r(`pluginChannelPanel.navigateToPluginPage`),"aria-label":r(`pluginChannelPanel.navigateToPluginPage`),onClick:()=>i(`/assistant/plugins/${e.plugin}`)}),(0,Q.jsx)(Pe,{icon:e.icon,className:`h-8 w-8 text-[color:var(--content-secondary)]`}),(0,Q.jsx)(`h3`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e.label}),e.description?(0,Q.jsx)(`p`,{className:`max-w-[420px] text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e.description}):null,(0,Q.jsx)(An,{channel:e,ingress:a}),o.onChange?(0,Q.jsx)(`div`,{className:`w-full max-w-[420px] text-left`,children:(0,Q.jsx)(pt,{assistantDisplayName:n,policy:o.policy,saving:o.isSaving,loading:o.isLoading,error:o.isError,onChange:o.onChange})}):null]})}function An({channel:e,ingress:t}){let{t:n}=K(`channels`);switch(t.status){case`loading`:return(0,Q.jsx)($,{children:n(`pluginChannelPanel.ingressLoading`,{channel:e.label})});case`unsupported`:return(0,Q.jsx)($,{children:n(`pluginChannelPanel.ingressUnsupported`)});case`forbidden`:return(0,Q.jsx)($,{children:n(`pluginChannelPanel.ingressForbidden`)});case`unreadable`:return(0,Q.jsxs)($,{children:[n(`pluginChannelPanel.ingressUnreadable`,{channel:e.label}),t.error?` ${t.error}`:``]});case`none`:return(0,Q.jsx)($,{children:n(`pluginChannelPanel.ingressNone`,{channel:e.label})});case`pending`:case`approved`:return(0,Q.jsx)(jn,{ingress:t})}}function jn({ingress:e}){let{t}=K(`channels`),n=e.status===`approved`;return(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,Q.jsx)(r,{tone:n?`positive`:`neutral`,children:t(n?`pluginChannelPanel.ingressApprovedTag`:`pluginChannelPanel.ingressPendingTag`)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(U,{onClick:n?e.revoke:e.approve,disabled:e.deciding,variant:n?`outlined`:`primary`,children:t(n?`pluginChannelPanel.revokeChannel`:`pluginChannelPanel.approveChannel`)}),(0,Q.jsx)(Ae,{content:t(`pluginChannelPanel.approveChannelInfo`),children:(0,Q.jsx)(`span`,{tabIndex:0,className:`inline-flex cursor-default p-0.5 text-[color:var(--content-secondary)]`,"aria-label":t(`pluginChannelPanel.approveChannelInfo`),children:(0,Q.jsx)(it,{className:`h-4 w-4`,"aria-hidden":`true`})})})]}),e.error?(0,Q.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,Q.jsx)(`p`,{className:`max-w-[420px] text-body-small-default`,style:{color:`var(--content-secondary)`},children:e})}function Mn({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}=K(`channels`),{selected:O,select:k}=wt(),[A,j]=(0,Z.useState)(null),{paneRef:M,hasRoomForList:N,drawerOpen:P,openDrawer:F,closeDrawer:I}=xt(),[L]=(0,Z.useState)(E);(0,Z.useEffect)(()=>{L&&k(L)},[L,k]);let ee=fe(t),R=A?Te[A]:null,z=e=>{k(e),I()},B=r.find(e=>e.key===O),V=B?void 0:n.find(e=>e.key===O)??n[0];if(!V&&!B)return null;let H=B?B.key:V.key,te=B?(0,Q.jsx)(kn,{channel:B,assistantId:e,assistantDisplayName:ee},B.key):(0,Q.jsx)(xn,{channel:V,assistantId:e,assistantName:t,assistantDisplayName:ee,pending:i===V.key,initialManualEntry:L===V.key,onSetup:f?()=>f(V.key,V.status===`incomplete`):void 0,onDisconnect:p&&V.canDisconnect?()=>j(V.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?.[V.key],policySaving:c===V.key,policyLoading:l,policyError:u,onPolicyChange:d?e=>d(V.key,e):void 0},V.key);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.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,Q.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,Q.jsx)(Tt,{channels:n,pluginChannels:r,selectedKey:H,onSelect:z})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`flex items-center`,children:(0,Q.jsx)(gt,{onClick:F})}),(0,Q.jsx)(_t,{open:P,onClose:I,title:D(`assistantChannelsList.drawerTitle`),children:(0,Q.jsx)(Tt,{channels:n,pluginChannels:r,selectedKey:H,onSelect:z})})]}),(0,Q.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:H===`slack`||H===`email`?te:(0,Q.jsx)(lt,{children:te})})]}),(0,Q.jsx)(re,{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 Nn=`plugin:`;function Pn(e){let{data:t}=G({...ze({path:{assistant_id:e}}),enabled:!!e,select:e=>e.channels.filter(e=>e.source?.startsWith(Nn)).map(e=>({plugin:e.id,key:H(e.id),label:e.label,description:e.subtitle,icon:e.icon}))});return t??[]}var Fn=`0.11.5-dev.202608242314.38e0513`;function In(){return m(Fn)}var Ln=`0.11.5-dev.202608252008.65007aa`;function Rn(){return m(Ln)}var zn={slack:se,telegram:Me,discord:t,email:void 0,phone:Ce},Bn={slack:`useAssistantChannels.setupPrompt.slack`,telegram:`useAssistantChannels.setupPrompt.telegram`,discord:`useAssistantChannels.setupPrompt.discord`,email:`useAssistantChannels.setupPrompt.email`,phone:`useAssistantChannels.setupPrompt.phone`},Vn={slack:`useAssistantChannels.finishPrompt.slack`,telegram:`useAssistantChannels.finishPrompt.telegram`,discord:`useAssistantChannels.finishPrompt.discord`,email:`useAssistantChannels.finishPrompt.email`,phone:`useAssistantChannels.finishPrompt.phone`},Hn=15e3;function Un({assistantId:e,onStartSetupConversation:t}){let{t:n}=K(`common`),r=Y(),i=(0,Z.useMemo)(()=>({path:{assistant_id:e}}),[e]),o=(0,Z.useMemo)(()=>ie(i),[i]),s=In(),c=Rn(),l=(0,Z.useMemo)(()=>Wn(s),[s]),u=G({...Ge(i),enabled:!!e,refetchInterval:Hn,select:e=>e.snapshots}),d=(0,Z.useMemo)(()=>Gn(u.data??[],l,c),[u.data,l,c]),f=d.some(e=>e.key===`slack`&&e.configured),p=G({...oe(i),enabled:f,select:e=>e.threadMode}),m=ht(e),h=(0,Z.useCallback)(()=>r.invalidateQueries({queryKey:o}),[r,o]),g=J({mutationFn:async t=>{let n=zn[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`&&a(r,e)}}),_=ne({assistantId:e}),v=Ve({assistantId:e}),y=G({...O(i),enabled:!!e&&c}),b=M({assistantId:e}),x=Ue({assistantId:e}),S=J({...be(),onSuccess:()=>{r.invalidateQueries({queryKey:je(i)})}}),C=v.mutate,w=(0,Z.useCallback)(e=>{C(e)},[C]),T=_.mutate,E=(0,Z.useCallback)(e=>{T(e)},[T]),D=b.mutate,k=(0,Z.useCallback)((e,t)=>{D({botToken:e,appToken:t})},[D]),A=S.mutate,j=(0,Z.useCallback)(t=>{A({path:{assistant_id:e},body:{threadMode:t}})},[A,e]),N=x.mutateAsync,P=(0,Z.useCallback)(async(e,t)=>{await N({accountSid:e,authToken:t})},[N]),F=(0,Z.useCallback)((e,r=!1)=>{t&&t(n(r?Vn[e]:Bn[e]))},[t,n]),I=g.mutate,L=(0,Z.useCallback)(e=>{I(e)},[I]);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?F:void 0,onDisconnect:L,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:k,slackSaveStatus:b.status,slackSaveError:b.error?.message??null,onSlackThreadModeChange:j,onSaveTwilioCredentials:P}}function Wn(e){return e?ye:ye.filter(e=>e!==`discord`)}function Gn(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:Kn(t),configured:ke(t),canDisconnect:zn[e]!==void 0&&(e!==`discord`||n),canManualEntry:Te[e].credentialForm!==void 0&&(e!==`discord`||n),health:t?.health,address:t?.channelHandle??void 0}})}function Kn(e){return e?e.ready?`ready`:e.setupStatus===`not_configured`?`not_configured`:`incomplete`:`not_configured`}function qn(){let[e,t]=Ke(),n=e.get(`setup`),r=n&&pe(n)?n:null;return(0,Z.useEffect)(()=>{r&&t(e=>(e.delete(`setup`),e),{replace:!0})},[r,t]),r}function Jn({assistantId:e,onStartSetupConversation:t}){let n=xe.use.a2aChannel(),r=Ne.use.name(),i=qn(),a=bt(e),o=fe(r),s=Un({assistantId:e,onStartSetupConversation:t});return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-6 overflow-hidden`,children:[(0,Q.jsx)(Mn,{assistantId:e,assistantName:o,initialChannel:i,pluginChannels:Pn(e),...s}),n?(0,Q.jsx)(vt,{onClick:a.open}):null,(0,Q.jsx)(yt,{open:a.isOpen,assistantId:e,onClose:a.close})]})}function Yn(){let e=Je(),t=Se();return(0,Q.jsx)(Jn,{assistantId:t,onStartSetupConversation:t=>{he(e,{prompt:t})}},t)}export{Yn as ChannelsPageRoute};
|