@vellumai/web 0.12.1-dev.202609141913.5e16607 → 0.12.1-dev.202609142113.d1590bc
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-Cj6bQz4C.js → a2a-invite-i8AQXl-z.js} +1 -1
- package/dist/assets/{about-page-BJVPM7Dq.js → about-page-CGkqxxBs.js} +1 -1
- package/dist/assets/{account-page-CIJjk5V4.js → account-page-DiSzOSwh.js} +1 -1
- package/dist/assets/{account-shell-sZRHf1fP.js → account-shell-BPmj200S.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-Ds9ArOpr.js → acp-run-detail-panel-BvRCFEzJ.js} +1 -1
- package/dist/assets/activation-list-route-CZq__gAN.js +1 -0
- package/dist/assets/{activity-redirect-page-DKNwRtHD.js → activity-redirect-page-BGqsNed4.js} +1 -1
- package/dist/assets/{activity-steps-panel-CJx0BfwS.js → activity-steps-panel-Bxl-qjae.js} +1 -1
- package/dist/assets/{add-credits-modal-CI7VP806.js → add-credits-modal-C0fiphmD.js} +1 -1
- package/dist/assets/add-credits-modal-DRX2CS6S.js +1 -0
- package/dist/assets/ai-page-cwJUbrS-.js +1 -0
- package/dist/assets/android-billing-handoff-C7Jmvp33.js +1 -0
- package/dist/assets/{api-key-screen-DfiREoeU.js → api-key-screen-7KsJUidH.js} +1 -1
- package/dist/assets/{app-DxMy0jwj.js → app-BTYvw9j7.js} +67 -67
- package/dist/assets/{app-info-Dgv7SkZ8.js → app-info-CiNBYe6p.js} +1 -1
- package/dist/assets/archive-redirect-page-bU67mNRe.js +1 -0
- package/dist/assets/assistant-status-panel-BR0fiwFx.js +1 -0
- package/dist/assets/auth-store-B3-zv38u.js +1 -0
- package/dist/assets/{auth-welcome-screen-B0dWyC6l.js → auth-welcome-screen-aYDHX6pt.js} +1 -1
- package/dist/assets/avatar-bundled-components-DBQdWt-_.js +1 -0
- package/dist/assets/avatar-random-DgTCtLWm.js +2 -0
- package/dist/assets/{await-org-header-settled-B94pxaLq.js → await-org-header-settled-BjDbOuPX.js} +1 -1
- package/dist/assets/{background-task-detail-panel-BW1meZPo.js → background-task-detail-panel-D3m2Rx3u.js} +1 -1
- package/dist/assets/billing-page-0fBEtVDQ.js +3 -0
- package/dist/assets/{billing-redirect-page-CnXiJrt4.js → billing-redirect-page-DEXNagS2.js} +1 -1
- package/dist/assets/{bookmarks-page-BQuBfJ7j.js → bookmarks-page-DLnn921J.js} +1 -1
- package/dist/assets/{bundle-confirm-page-kq5S_bwo.js → bundle-confirm-page-CWAZtbPt.js} +1 -1
- package/dist/assets/channel-transcript-panel-D8fVXqxj.js +1 -0
- package/dist/assets/channels-page-route-D7uKwArB.js +1 -0
- package/dist/assets/{chat-C5PndB-4.js → chat-DCVj3tsl.js} +1 -1
- package/dist/assets/{chat-D73b777k.js → chat-DToye7va.js} +1 -1
- package/dist/assets/{chat-BOA6lhRW.js → chat-DmxEcQrf.js} +1 -1
- package/dist/assets/{chat-acUsZfEJ.js → chat-gLL6ftZg.js} +1 -1
- package/dist/assets/chat-info-panel-OqamJ2nl.js +1 -0
- package/dist/assets/{checkout-continuation-Dee-mMCT.js → checkout-continuation-CpF06k20.js} +1 -1
- package/dist/assets/{checkout-page-0c4KiLCm.js → checkout-page-BNakh1SR.js} +1 -1
- package/dist/assets/checkout-return-target-CmeBFKz5.js +1 -0
- package/dist/assets/command-palette-CWUEICjD.js +1 -0
- package/dist/assets/{command-palette-CuYxot_s.js → command-palette-CeS6dSCr.js} +1 -1
- package/dist/assets/{command-palette-window-page-C1nSbisX.js → command-palette-window-page-C46VPZtx.js} +1 -1
- package/dist/assets/{community-page-BeXM3LH-.js → community-page-8lniGwq6.js} +1 -1
- package/dist/assets/{companion-accent-eO1EGNi2.js → companion-accent-zKEHhBKk.js} +1 -1
- package/dist/assets/{companion-dock-zones-page-DsacQUQP.js → companion-dock-zones-page-4WLUZHQE.js} +1 -1
- package/dist/assets/{companion-layout-35k06GTE.js → companion-layout-Bz-abbs8.js} +1 -1
- package/dist/assets/{companion-surface-page-iIN786Vv.js → companion-surface-page-DL6NFXHp.js} +1 -1
- package/dist/assets/{companion-watch-frame-page-dabAlX34.js → companion-watch-frame-page-BgCq6Sum.js} +1 -1
- package/dist/assets/connect-page-dv3-s0yW.js +1 -0
- package/dist/assets/{consent-controls-nPLL-Vy1.js → consent-controls-ByVwHg9G.js} +1 -1
- package/dist/assets/{contacts-gateway-BvTzBPQl.js → contacts-gateway-BmoYU5P_.js} +1 -1
- package/dist/assets/contacts-page-route-BVvZDosS.js +1 -0
- package/dist/assets/{credential-entry-page-Dg7Iprxn.js → credential-entry-page-Cno3_YB6.js} +1 -1
- package/dist/assets/credentials-page-DXcTJXr-.js +1 -0
- package/dist/assets/{csv-preview-CmzA2Sku.js → csv-preview-Cr_CfhY7.js} +1 -1
- package/dist/assets/danger-zone-redirect-page-DA342PL2.js +1 -0
- package/dist/assets/debug-page-CXtFJUMQ.js +4 -0
- package/dist/assets/deploy-dialogs-CrOYEk5m.js +1 -0
- package/dist/assets/{deploy-dialogs-DmW-zLPB.js → deploy-dialogs-D46kbIA6.js} +1 -1
- package/dist/assets/{desktop-panel-DUYr64PK.js → desktop-panel-Cbmf8F-n.js} +2 -2
- package/dist/assets/{desktop-viewer-C0e921iW.js → desktop-viewer-tB0-zRzf.js} +1 -1
- package/dist/assets/{detail-card-Dmr5t1GN.js → detail-card-CaD43ZrD.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-BLVFDcnl.js → detail-panel-stop-button-gNXi_Ts9.js} +1 -1
- package/dist/assets/{detail-primitives-B5ncGbHT.js → detail-primitives-D_WliBqV.js} +1 -1
- package/dist/assets/developer-page-CFIgU8la.js +1 -0
- package/dist/assets/devices-redirect-page-Bhg49OQn.js +1 -0
- package/dist/assets/{dictation-overlay-page-C1kV226n.js → dictation-overlay-page-BsMvl2sj.js} +1 -1
- package/dist/assets/document-load-BFz4XrJ2.js +1 -0
- package/dist/assets/document-load-DcSrXXmj.js +1 -0
- package/dist/assets/{document-viewer-page-BtIzoS1f.js → document-viewer-page-CuM-JsaR.js} +1 -1
- package/dist/assets/emails-page-BhqMGA1p.js +1 -0
- package/dist/assets/{environment-store-CB5ErBSJ.js → environment-store-zuQZDtiM.js} +1 -1
- package/dist/assets/{file-diff-view-CAhMJUai.js → file-diff-view-BiYjBoFT.js} +1 -1
- package/dist/assets/{file-editor-CwN2HFdU.js → file-editor-3inLdtc5.js} +1 -1
- package/dist/assets/general-page-C2yaUqME.js +2 -0
- package/dist/assets/hatching-screen-B2e835Ah.js +1 -0
- package/dist/assets/{hosting-screen-D8ZIsJoR.js → hosting-screen-kZfC0Eub.js} +1 -1
- package/dist/assets/identity-page-route-Ck1Zk5s7.js +7 -0
- package/dist/assets/{inspect-page-CJpOMRNp.js → inspect-page-B0_V5Vg5.js} +5 -5
- package/dist/assets/integrations-page-BoRUHOyC.js +1 -0
- package/dist/assets/intelligence-layout-CArs93NG.js +1 -0
- package/dist/assets/intelligence-layout-slots-store-CCudenSv.js +1 -0
- package/dist/assets/keyboard-shortcuts-redirect-page-CemhKPXj.js +1 -0
- package/dist/assets/{latest-assistant-text-B4u2AiE9.js → latest-assistant-text-C0oJe4mD.js} +1 -1
- package/dist/assets/library-detail-page-D9VLB-K7.js +1 -0
- package/dist/assets/library-page-C2vkWQpe.js +1 -0
- package/dist/assets/local-mode-CNRBGm_3.js +1 -0
- package/dist/assets/login-page-BRBpEBSu.js +1 -0
- package/dist/assets/{logout-page-B8hgZoc9.js → logout-page-ClnC5wEN.js} +1 -1
- package/dist/assets/{logs-layout-DUysuL3y.js → logs-layout-Bw0NQs7l.js} +1 -1
- package/dist/assets/{markdown-preview-DyR2BqGw.js → markdown-preview-DIQceAug.js} +1 -1
- package/dist/assets/{media-preview-Em8syzWu.js → media-preview-Cb_GSGUr.js} +1 -1
- package/dist/assets/{memory-page-route-DzOOlirE.js → memory-page-route-O7F5djFJ.js} +2 -2
- package/dist/assets/memory-router-playground-page-VQyH9fRL.js +1 -0
- package/dist/assets/{message-files-panel-CamSxR4B.js → message-files-panel-CjzHcVvK.js} +1 -1
- package/dist/assets/{metric-card-BuuwtBVI.js → metric-card-CtfHyEHi.js} +1 -1
- package/dist/assets/native-attachment-pickers-CoTqYobC.js +1 -0
- package/dist/assets/native-file-C0eFlRbH.js +1 -0
- package/dist/assets/{notifications-page-D8viomi2.js → notifications-page-a51nGqvZ.js} +1 -1
- package/dist/assets/{oauth-complete-page-Dsm4C9hD.js → oauth-complete-page-Bxvev6zU.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-BupxRxrP.js → oauth-popup-complete-page-drLfs7y-.js} +2 -2
- package/dist/assets/paired-platform-identity-D41L_sNl.js +1 -0
- package/dist/assets/{pairing-page-BbRSlVwS.js → pairing-page-CKIaZfv1.js} +1 -1
- package/dist/assets/password-reset-page-X5fRMCls.js +1 -0
- package/dist/assets/{pdf-file-preview-DCb3ZrgB.js → pdf-file-preview-yruALmHe.js} +1 -1
- package/dist/assets/personality-page-Brq0Ff_Y.js +1 -0
- package/dist/assets/personality-page-xEToUSjw.js +1 -0
- package/dist/assets/personality-sliders-DlOEoZnC.js +1 -0
- package/dist/assets/{plans-page-DmlUsSWE.js → plans-page-D-1GTGmg.js} +1 -1
- package/dist/assets/{platform-loopback-page-BzVt_Muk.js → platform-loopback-page-H7EDPk5C.js} +1 -1
- package/dist/assets/{plugin-detail-page-CrjPj9Ny.js → plugin-detail-page-DG-dqW8Y.js} +1 -1
- package/dist/assets/{plugins-page-DaOlK_74.js → plugins-page-CEG_SE2-.js} +1 -1
- package/dist/assets/plugins-surface-CzTPuG2D.js +1 -0
- package/dist/assets/{preview-error-vNKC-_Ku.js → preview-error-BxxJs_Br.js} +1 -1
- package/dist/assets/privacy-page-BWCQOVuJ.js +1 -0
- package/dist/assets/{privacy-screen-DimQtrs8.js → privacy-screen-ENSxkpiX.js} +1 -1
- package/dist/assets/{provider-callback-page-RbApw_Fy.js → provider-callback-page-uhtnQ4vd.js} +1 -1
- package/dist/assets/{provider-key-DpPX7wVh.js → provider-key-GYC3h_ua.js} +1 -1
- package/dist/assets/{provider-signup-page-CJaJXoJf.js → provider-signup-page-HhyksJMZ.js} +1 -1
- package/dist/assets/{quick-input-page-B3HuqceO.js → quick-input-page-D7EX9WYI.js} +1 -1
- package/dist/assets/{research-mock-page-DMCjkxzO.js → research-mock-page-BMvwJewz.js} +1 -1
- package/dist/assets/research-onboarding-route-DPvupxVy.js +50 -0
- package/dist/assets/{review-terms-screen-Bd-HjWsQ.js → review-terms-screen-QkqfPclc.js} +1 -1
- package/dist/assets/routes-BGrnInRM.js +1 -0
- package/dist/assets/schedules-QsvJ9EAJ.js +1 -0
- package/dist/assets/schedules-page-hqkSwdek.js +1 -0
- package/dist/assets/security-redirect-page-D7uKQ2Mg.js +1 -0
- package/dist/assets/select-assistant-screen-CAYP7ba-.js +1 -0
- package/dist/assets/{self-hosted-servers-B3u9o3gv.js → self-hosted-servers-DDnxxI2_.js} +1 -1
- package/dist/assets/{service-form-controls-DK08HJHP.js → service-form-controls-C1cOQ-im.js} +1 -1
- package/dist/assets/{setting-row-DCNMIFOK.js → setting-row-C0Q_Fq2j.js} +1 -1
- package/dist/assets/{settings-divider-CrsTYYA8.js → settings-divider-BQN825Ck.js} +1 -1
- package/dist/assets/{settings-layout-Db7d5Mos.js → settings-layout-Dh9atc0e.js} +1 -1
- package/dist/assets/share-feedback-modal-CpXF_isk.js +1 -0
- package/dist/assets/{share-feedback-modal-D7GARR0f.js → share-feedback-modal-DRM49ZB6.js} +1 -1
- package/dist/assets/{sidebar-tree-CB3bELX6.js → sidebar-tree-a6N3epHy.js} +1 -1
- package/dist/assets/{signup-page-BpvoG6nX.js → signup-page-BMzlbRGq.js} +1 -1
- package/dist/assets/{signup-shell-6tfevxfj.js → signup-shell-BHXUidkH.js} +1 -1
- package/dist/assets/{skill-detail-page-DgN34ik5.js → skill-detail-page-CjhFsmTB.js} +2 -2
- package/dist/assets/{skill-detail-panel-B_RwRP5K.js → skill-detail-panel-DF7eV_M1.js} +1 -1
- package/dist/assets/{skill-removal-dialog-DFwTH584.js → skill-removal-dialog-BsjFId9V.js} +1 -1
- package/dist/assets/{skills-page-D54HQhjb.js → skills-page-DDhCEWsE.js} +1 -1
- package/dist/assets/sounds-page-BOscbT2g.js +1 -0
- package/dist/assets/{start-screen-JZxJJdOW.js → start-screen-BTcwn0Rq.js} +1 -1
- package/dist/assets/{stt-language-picker-modal-D7x8NqJd.js → stt-language-picker-modal-Cb0Rbnsg.js} +1 -1
- package/dist/assets/subagent-detail-panel-BtBuhr1c.js +1 -0
- package/dist/assets/superpowers-page-BW_6ZBW0.js +1 -0
- package/dist/assets/system-events-page-B6HWfF1o.js +1 -0
- package/dist/assets/system-events-redirect-page-DB2YFarv.js +1 -0
- package/dist/assets/{text-preview-C1NMKaAU.js → text-preview-CjURWwWf.js} +1 -1
- package/dist/assets/{theme-stage-page-CQrjXQDR.js → theme-stage-page-BOTIsKUX.js} +1 -1
- package/dist/assets/{tiptap-document-editor-BHRei95S.js → tiptap-document-editor-DNbRDmaM.js} +1 -1
- package/dist/assets/tool-detail-panel-6Dca1KnP.js +1 -0
- package/dist/assets/tool-detail-panel-DcaXQLTc.js +15 -0
- package/dist/assets/{trait-cycle-row-DQhdJCJ-.js → trait-cycle-row-CeKchpD2.js} +1 -1
- package/dist/assets/{upgrade-cancel-page-C6C4dMOJ.js → upgrade-cancel-page-DX9x5pYM.js} +1 -1
- package/dist/assets/{upgrade-success-page-CC8Q1etX.js → upgrade-success-page-DZPHun5r.js} +1 -1
- package/dist/assets/{usage-redirect-page--upJECGD.js → usage-redirect-page-B4XwvrF5.js} +1 -1
- package/dist/assets/{use-app-delete-B6SYqeZ7.js → use-app-delete-CTAC12GU.js} +1 -1
- package/dist/assets/use-assistant-identity-details-DwY-UTbv.js +1 -0
- package/dist/assets/use-checkout-dismiss-refresh-BFsz2VQH.js +1 -0
- package/dist/assets/{use-edge-swipe-back-BD_Ah2bU.js → use-edge-swipe-back-yu9lVyqu.js} +1 -1
- package/dist/assets/{use-hotkey-recorder-DbV6Cyhk.js → use-hotkey-recorder-BdOIjDrJ.js} +1 -1
- package/dist/assets/use-invite-link-dialog-Dtpx79a6.js +1 -0
- package/dist/assets/{use-platform-assistant-id-BF4WUv0T.js → use-platform-assistant-id-CN0kUO7z.js} +1 -1
- package/dist/assets/{use-return-to-short-circuit-CvAy4AQQ.js → use-return-to-short-circuit-DSRiJl-E.js} +1 -1
- package/dist/assets/{use-side-list-room-yQSI40sv.js → use-side-list-room-CHDictwl.js} +1 -1
- package/dist/assets/{use-skill-actions-nsr480LX.js → use-skill-actions-B_lZHEC6.js} +1 -1
- package/dist/assets/{use-skill-detail-files-MdjMAlCe.js → use-skill-detail-files-N2V2C8HC.js} +1 -1
- package/dist/assets/use-supports-credentials-settings-sDA9skW6.js +1 -0
- package/dist/assets/{use-transcript-message-by-id-sQ_bR9wX.js → use-transcript-message-by-id-D7Llb7KM.js} +1 -1
- package/dist/assets/voice-page-DO8QCdsO.js +1 -0
- package/dist/assets/{wake-detail-panel-Bd36PxOK.js → wake-detail-panel-BRlSf86W.js} +1 -1
- package/dist/assets/{weather-forecast-display-C93-n3xN.js → weather-forecast-display-BIb_fU7z.js} +1 -1
- package/dist/assets/{welcome-screen-CKVwXjBE.js → welcome-screen-VtflUAbg.js} +1 -1
- package/dist/assets/{workflow-detail-panel-BLoKwML7.js → workflow-detail-panel-BIuisJbg.js} +1 -1
- package/dist/assets/workspace-B0l6JUfL.js +1 -0
- package/dist/assets/workspace-B7Vd5NRL.js +1 -0
- package/dist/assets/workspace-BjrEylvz.js +1 -0
- package/dist/assets/workspace-DR2tWF9N.js +1 -0
- package/dist/assets/workspace-page-CGRLvetX.js +1 -0
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/activation-list-route-B30qKxxA.js +0 -1
- package/dist/assets/add-credits-modal-hieez1oi.js +0 -1
- package/dist/assets/ai-page-COCv3iDh.js +0 -1
- package/dist/assets/android-billing-handoff-Do_yAgW0.js +0 -1
- package/dist/assets/archive-redirect-page-DMWMCMyY.js +0 -1
- package/dist/assets/assistant-status-panel-CLZ_RbJF.js +0 -1
- package/dist/assets/auth-store-DNmjNVVJ.js +0 -1
- package/dist/assets/avatar-bundled-components-D02Cc9qY.js +0 -1
- package/dist/assets/avatar-random-BUg7IWMp.js +0 -2
- package/dist/assets/billing-page-xuhzUOlJ.js +0 -3
- package/dist/assets/channel-transcript-panel-BJPFnqaR.js +0 -1
- package/dist/assets/channels-page-route-CfYjH2LF.js +0 -1
- package/dist/assets/chat-info-panel-D0qexb8N.js +0 -1
- package/dist/assets/checkout-return-target-B0GyRUat.js +0 -1
- package/dist/assets/command-palette-Cx7yIXQ_.js +0 -1
- package/dist/assets/connect-page-B60uN-ZC.js +0 -1
- package/dist/assets/contacts-page-route-DzndMePQ.js +0 -1
- package/dist/assets/credentials-page-i7J7SwsS.js +0 -1
- package/dist/assets/danger-zone-redirect-page-B5Tl0pgh.js +0 -1
- package/dist/assets/debug-page-GKgG-G0m.js +0 -4
- package/dist/assets/deploy-dialogs-BKnTLmik.js +0 -1
- package/dist/assets/developer-page-Dbq0603s.js +0 -1
- package/dist/assets/devices-redirect-page-C_y8UcR5.js +0 -1
- package/dist/assets/document-load-BnrvE-C_.js +0 -1
- package/dist/assets/document-load-XHdVVQyo.js +0 -1
- package/dist/assets/emails-page-BmjIvU4y.js +0 -1
- package/dist/assets/general-page-C2U-DG-m.js +0 -2
- package/dist/assets/hatching-screen-BU8TigBJ.js +0 -1
- package/dist/assets/identity-page-route-CR_lDoMi.js +0 -7
- package/dist/assets/integrations-page-CjcidO1m.js +0 -1
- package/dist/assets/intelligence-layout-C3RKPmg0.js +0 -1
- package/dist/assets/intelligence-layout-slots-store-Cc8q31-1.js +0 -1
- package/dist/assets/keyboard-shortcuts-redirect-page-BTaXxkyv.js +0 -1
- package/dist/assets/library-detail-page-vjxO6rCt.js +0 -1
- package/dist/assets/library-page-DMca0L7D.js +0 -1
- package/dist/assets/local-mode-Di1vm0TR.js +0 -1
- package/dist/assets/login-page-Bz2m5Zih.js +0 -1
- package/dist/assets/memory-router-playground-page-DqQgUpVI.js +0 -1
- package/dist/assets/native-attachment-pickers-Co-6a_p5.js +0 -1
- package/dist/assets/native-file-DVLbtjDu.js +0 -1
- package/dist/assets/paired-platform-identity-CblGKBB2.js +0 -1
- package/dist/assets/password-reset-page-1lN0ZVQi.js +0 -1
- package/dist/assets/personality-page-CRhoMs2K.js +0 -1
- package/dist/assets/personality-page-CufOsQwH.js +0 -1
- package/dist/assets/personality-sliders-wbkdQqh4.js +0 -1
- package/dist/assets/plugins-surface-DDTktJOZ.js +0 -1
- package/dist/assets/privacy-page-Dk3CbfNJ.js +0 -1
- package/dist/assets/research-onboarding-route-BbKHByvB.js +0 -50
- package/dist/assets/routes-CipnZZkn.js +0 -1
- package/dist/assets/schedules-l9yD8l1M.js +0 -1
- package/dist/assets/schedules-page-Djqt9Vja.js +0 -1
- package/dist/assets/security-redirect-page-DjXWbz9T.js +0 -1
- package/dist/assets/select-assistant-screen-C-FSTaZC.js +0 -1
- package/dist/assets/share-feedback-modal-CtZMQEye.js +0 -1
- package/dist/assets/sounds-page-Cw8SWT1c.js +0 -1
- package/dist/assets/subagent-detail-panel-buxSyEAP.js +0 -1
- package/dist/assets/superpowers-page-cPWfA0se.js +0 -1
- package/dist/assets/system-events-page-8K2GCQdQ.js +0 -1
- package/dist/assets/system-events-redirect-page-DBbcQGWP.js +0 -1
- package/dist/assets/tool-detail-panel-BmP7AMGA.js +0 -15
- package/dist/assets/tool-detail-panel-JVXpN3YM.js +0 -1
- package/dist/assets/use-assistant-identity-details-CnmR7Be9.js +0 -1
- package/dist/assets/use-checkout-dismiss-refresh-DwlaNKB9.js +0 -1
- package/dist/assets/use-invite-link-dialog-B8DtFj1u.js +0 -1
- package/dist/assets/use-supports-credentials-settings-Db6r5haR.js +0 -1
- package/dist/assets/voice-page-Cfg787uE.js +0 -1
- package/dist/assets/workspace-B7H-ZqBy.js +0 -1
- package/dist/assets/workspace-CU8OrPZ7.js +0 -1
- package/dist/assets/workspace-Cfz5TGM8.js +0 -1
- package/dist/assets/workspace-YGLhaK9w.js +0 -1
- package/dist/assets/workspace-page-HE84odf5.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{$c as t,Ad as n,Bm as r,Bo as i,C as a,Cb as o,Cc as s,Ci as c,Cx as l,Dd as u,Di as d,Eb as f,Ei as p,Fb as m,Go as h,Ho as g,Hy as _,Jc as v,Kb as y,Ko as b,L as x,Mo as S,Qc as ee,R as C,Rb as w,S as te,Sx as T,Tc as ne,Tx as E,Uo as D,Vo as O,Wo as k,Xb as A,Xc as re,Xl as ie,Xr as j,Yc as ae,Z as M,Zc as N,_o as P,al as oe,b as se,bb as F,bx as I,cl as L,cx as ce,dd as le,ed as R,el as ue,fx as z,hb as de,hd as fe,hn as B,hx as V,ib as pe,il as me,kd as he,kp as ge,lc as H,ll as _e,lx as ve,md as ye,nl as be,nx as U,ol as xe,oo as Se,ox as W,pb as Ce,pd as we,qo as Te,rl as Ee,so as G,su as De,td as Oe,tl as ke,tm as Ae,tx as K,wc as je,wg as Me,wi as Ne,x as Pe,xx as q,yx as Fe,z as Ie,zb as Le}from"./app-BTYvw9j7.js";import{Jn as J,N as Y,Zn as X,er as Re,j as Z}from"./vendor-B2dSzLzU.js";import{_ as ze,d as Be,f as Ve,h as He,n as Ue,t as We,x as Ge}from"./react-B9IgSVeK.js";import{Gi as Ke,Gn as qe,Ki as Je,Li as Ye,Lt as Xe,Si as Ze,Tn as Qe,Vi as $e,Yr as et,_t as tt,k as nt,qn as rt,ur as it,vr as at,zn as ot}from"./icons-bnwMda87.js";import{t as st}from"./detail-card-CaD43ZrD.js";import{n as ct,r as lt,t as ut}from"./use-side-list-room-CHDictwl.js";import{a as dt,c as ft,i as pt,n as mt,o as ht,r as gt,s as _t,t as vt,u as yt}from"./use-invite-link-dialog-Dtpx79a6.js";import{t as bt}from"./use-platform-assistant-id-CN0kUO7z.js";import{t as xt}from"./environment-store-zuQZDtiM.js";import{i as St,r as Ct}from"./service-form-controls-C1cOQ-im.js";var Q=e(Ge(),1);function wt(){let{channelId:e}=He(),t=Ve(),{search:n}=Be();return{selected:e,select:(0,Q.useCallback)(e=>{t({pathname:`/assistant/channels/${encodeURIComponent(e)}`,search:n},{replace:!0})},[t,n])}}var $=We();function Tt({channels:e,pluginChannels:t=[],selectedKey:n,onSelect:r}){return(0,$.jsx)(I.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,$.jsx)(I.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[e.map(e=>(0,$.jsx)(Et,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key)),t.map(e=>(0,$.jsx)(Dt,{channel:e,selected:e.key===n,onClick:()=>r(e.key)},e.key))]})})})}function Et({channel:e,selected:t,onClick:n}){let r=e.status===`ready`,i=p(e.key),a=r?`Connected`:`Not connected`;return(0,$.jsx)(A,{asChild:!0,active:t,"aria-label":`${i}, ${a}`,children:(0,$.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,$.jsx)(c,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:i}),(0,$.jsx)(`span`,{className:`flex shrink-0 items-center`,children:(0,$.jsx)(V,{tone:r?`positive`:`neutral`,children:a})})]})})}function Dt({channel:e,selected:t,onClick:n}){let{t:r}=Z(`channels`);return(0,$.jsx)(A,{asChild:!0,active:t,"aria-label":r(`channelAdapterList.pluginChannelAria`,{channel:e.label}),children:(0,$.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,$.jsx)(Ne,{icon:e.icon,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:e.label}),(0,$.jsx)(Xe,{"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,$.jsxs)(`div`,{className:E(`flex flex-col items-center justify-center gap-3 px-4 py-12 text-center`,i),children:[e?(0,$.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-xl bg-[var(--surface-sunken)] text-[var(--content-tertiary)]`,children:e}):null,(0,$.jsx)(`h3`,{className:`text-title-small text-[var(--content-default)]`,children:t}),n?(0,$.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:n}):null,r?(0,$.jsx)(`div`,{className:`mt-1`,children:r}):null]})}var kt={no_one:{labelKey:`channelTrustFloor.noOne.label`,descriptionKey:`channelTrustFloor.noOne.description`,confirm:{titleKey:`channelTrustFloor.noOne.confirmTitle`,messageKey:`channelTrustFloor.noOne.confirmMessage`,actionKey:`channelTrustFloor.noOne.confirmAction`,destructive:!0}},guardian_only:{labelKey:`channelTrustFloor.guardianOnly.label`,descriptionKey:`channelTrustFloor.guardianOnly.description`,confirm:void 0},trusted_contacts:{labelKey:`channelTrustFloor.trustedContacts.label`,descriptionKey:`channelTrustFloor.trustedContacts.description`,confirm:void 0},any_contact:{labelKey:`channelTrustFloor.anyContact.label`,descriptionKey:`channelTrustFloor.anyContact.description`,confirm:{titleKey:`channelTrustFloor.anyContact.confirmTitle`,messageKey:`channelTrustFloor.anyContact.confirmMessage`,actionKey:`channelTrustFloor.anyContact.confirmAction`,destructive:!1}},strangers:{labelKey:`channelTrustFloor.strangers.label`,descriptionKey:`channelTrustFloor.strangers.description`,confirm:{titleKey:`channelTrustFloor.strangers.confirmTitle`,messageKey:`channelTrustFloor.strangers.confirmMessage`,actionKey:`channelTrustFloor.strangers.confirmAction`,destructive:!0}}};function At({assistantDisplayName:e,policy:t,saving:n=!1,loading:r=!1,error:i=!1,onChange:a}){let{t:o}=Z(`channels`),s=t??`trusted_contacts`,c=yt.map(t=>({value:t,label:o(kt[t].labelKey),tooltip:o(kt[t].descriptionKey,{assistant:e})})),[l,u]=(0,Q.useState)(null),d=l?kt[l].confirm:void 0;return(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,$.jsx)(q,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:o(`channelTrustFloor.heading`,{assistant:e})}),r?(0,$.jsx)(q,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:o(`channelTrustFloor.loading`)}):i?(0,$.jsx)(q,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-negative)]`,children:o(`channelTrustFloor.loadFailed`)}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{style:{maxWidth:280},children:(0,$.jsx)(y,{value:s,onChange:e=>{if(kt[e].confirm){u(e);return}a(e)},options:c,disabled:n,"aria-label":o(`channelTrustFloor.selectAria`,{assistant:e})})}),(0,$.jsx)(q,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:o(kt[s].descriptionKey,{assistant:e})}),s===`trusted_contacts`?(0,$.jsx)(Fe,{tone:`info`,className:`max-w-lg`,children:o(`channelTrustFloor.trustedContactsNotice`,{assistant:e})}):null]}),(0,$.jsx)(K,{open:l!==null,title:d?o(d.titleKey):``,message:d?o(d.messageKey):``,confirmLabel:o(d?d.actionKey:`channelTrustFloor.confirmFallback`),destructive:d?.destructive??!1,onConfirm:()=>{l&&a(l),u(null)},onCancel:()=>u(null)})]})}function jt({mode:e,onChange:t}){let{t:n}=Z(`common`);return(0,$.jsx)(`div`,{className:`max-w-[280px]`,children:(0,$.jsx)(W,{ariaLabel:n(`serviceCard.modeToggleAriaLabel`),value:e,onChange:t,items:[{value:`managed`,label:n(`serviceCard.managedLabel`)},{value:`your-own`,label:n(`serviceCard.yourOwnLabel`)}]})})}function Mt({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,$.jsxs)(st,{id:e,title:t,subtitle:n,accessory:(0,$.jsx)(jt,{mode:r,onChange:i}),children:[(0,$.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,$.jsx)(`div`,{className:`mt-4`,children:a})]})}function Nt(e,t){return e===`managed`||e===`your-own`?e:t}function Pt({subdomain:e,onSubdomainChange:t,domainSuffix:n,subdomainPlaceholder:r=`my-assistant`,disabled:i,autoFocus:a,prefix:o,error:s,locked:c,lockedMessage:l}){let{t:u}=Z(`settings`);return(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex h-9 w-full items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${s?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[o,(0,$.jsx)(`input`,{value:e,onChange:e=>t(e.target.value.toLowerCase().trim()),disabled:i||c,readOnly:c,autoFocus:a,placeholder:r,"aria-label":u(`domainField.subdomainAriaLabel`),"aria-invalid":!!s,className:`h-full min-w-0 flex-1 bg-transparent ${o?`pl-1.5`:`pl-3`} pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none disabled:cursor-not-allowed disabled:opacity-60`}),(0,$.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`.`,n]})]}),s&&(0,$.jsx)(`p`,{className:`mt-1.5 text-body-small-default text-[var(--system-negative-strong)]`,children:s}),c&&l&&(0,$.jsx)(`p`,{className:`mt-1.5 text-body-small-default text-[var(--content-tertiary)]`,children:l})]})}function Ft({status:e,isLoading:t}){let{t:n}=Z(`common`);return t?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,children:[(0,$.jsx)(rt,{className:`h-3 w-3 animate-spin`}),n(`domainVerificationChip.checkingDomain`)]}):!e||e===`unknown`?(0,$.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,title:n(`domainVerificationChip.unknownStatusTitle`),children:n(`domainVerificationChip.unknownStatus`)}):e===`verified`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-positive-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-positive-strong)]`,title:n(`domainVerificationChip.verifiedTitle`),children:[(0,$.jsx)(Je,{className:`h-3 w-3`}),n(`domainVerificationChip.domainVerified`)]}):e===`pending`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-mid-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-mid-strong)]`,title:n(`domainVerificationChip.verifyingTitle`),children:[(0,$.jsx)(Ze,{className:`h-3 w-3`}),n(`domainVerificationChip.verifyingDomain`)]}):e===`not_started`?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-negative-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,title:n(`domainVerificationChip.setupRequiredTitle`),children:[(0,$.jsx)($e,{className:`h-3 w-3`}),n(`domainVerificationChip.setupRequired`)]}):(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-negative-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,title:n(`domainVerificationChip.failedTitle`),children:[(0,$.jsx)($e,{className:`h-3 w-3`}),n(`domainVerificationChip.verificationFailed`)]})}var It=`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,Lt=1e4;function Rt(e){return e===`verified`||e===`failed`||e===`not_started`?!1:Lt}function zt({assistantId:e,assistantHandle:r,emailRootDomain:i}){let{t:a}=Z(`channels`),o=Re(),s=Ve(),[c,l]=ze(),[u,d]=(0,Q.useState)(``),[f,p]=(0,Q.useState)(!1),[m,h]=(0,Q.useState)(null),[g,_]=(0,Q.useState)(``),[y,b]=(0,Q.useState)(null),[x,S]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(!1),[te,ne]=(0,Q.useState)(!1),[E,D]=(0,Q.useState)(!1),[O,k]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{f||!r||u||(d(r),p(!0))},[r,f,u]);let A=X({...ie(),enabled:!0}),j=A.data,P=j?.entitlements,se=P?.managed_email===!0,I=!!P&&!se,L=!j&&A.isError&&!A.isFetching,ce=X({...re({path:{assistant_id:e}}),enabled:!I}),le=X({...Ee({path:{assistant_id:e}}),enabled:!I}),R=ce.data?.results?.[0],z=le.data?.results?.[0],de=R?`${R.subdomain}.${i}`:null,fe=X({...oe({path:{assistant_id:e,id:z?.id??``}}),enabled:!!z?.id,refetchOnWindowFocus:!1}),B=X({...ee({path:{assistant_id:e,id:R?.id??``}}),enabled:!!R?.id,refetchInterval:e=>Rt(e.state.data?.status),refetchOnWindowFocus:!0});(0,Q.useEffect)(()=>{c.get(`release`)!==`1`||!R||z||(w(!0),l(e=>{let t=new URLSearchParams(e);return t.delete(`release`),t},{replace:!0}))},[z,R,c,l]);let V=J(v()),ge=J(ae()),H=De(),ve=J(ke()),ye=J(be()),Se=J(n()),W=(0,Q.useCallback)(()=>{let t={assistant_id:e};o.invalidateQueries({queryKey:N({path:t})}),o.invalidateQueries({queryKey:me({path:t})}),z?.id&&o.invalidateQueries({queryKey:xe({path:{...t,id:z.id}})}),o.invalidateQueries({queryKey:_e()})},[z?.id,e,o]),we=M(),Te=Se.mutateAsync,G=(0,Q.useCallback)(()=>{Te({path:{assistant_id:we},body:{channel:`email`}}).catch(()=>{}).finally(()=>{o.invalidateQueries({queryKey:he({path:{assistant_id:we}})})})},[we,o,Te]),Oe=(0,Q.useCallback)(async()=>{let t=u.trim().toLowerCase();if(!t){h(a(`emailManagedContent.enterSubdomainError`));return}S(!1);try{await V.mutateAsync({path:{assistant_id:e},body:{subdomain:t}}),d(``),h(null),W(),U.success(a(`emailManagedContent.domainRegisteredToast`,{domain:`${t}.${i}`}))}catch(e){h(F(e,void 0,a(`emailManagedContent.registerDomainFailedFallback`)))}},[e,i,W,V,u,a]),Ae=(0,Q.useCallback)(async()=>{let t=g.trim().toLowerCase();if(!t){b(a(`emailManagedContent.enterUsernameError`));return}try{await ve.mutateAsync({path:{assistant_id:e},body:{username:t}}),_(``),b(null),W(),G(),U.success(a(`emailManagedContent.emailCreatedToast`))}catch(e){b(F(e,void 0,a(`emailManagedContent.createEmailFailedFallback`)))}},[e,W,G,ve,g,a]),je=(0,Q.useCallback)(async()=>{if(z?.id){ne(!1);try{await ye.mutateAsync({path:{assistant_id:e,id:z.id}}),W(),G(),U.success(a(`emailManagedContent.emailRemovedToast`))}catch(e){Ce(e,{context:`email_address_delete`}),U.error(a(`emailManagedContent.emailRemoveFailedToast`))}}},[z?.id,e,ye,W,G,a]),Me=(0,Q.useCallback)(async()=>{if(!(!R?.id||H.isPending)){k(null);try{let n=await H.mutateAsync({path:{assistant_id:e,id:R.id}});D(!1),ue(o,{path:{assistant_id:e,id:R.id}},n),o.invalidateQueries({queryKey:t({path:{assistant_id:e,id:R.id}})}),U.success(a(`emailManagedContent.repairStartedToast`))}catch(e){Ce(e,{context:`email_domain_provision`});let t=F(e,void 0,a(`emailManagedContent.repairFailedFallback`));k(t),U.error(t)}}},[e,R?.id,H,o,a]),Ne=(0,Q.useCallback)(async()=>{if(!R?.id)return;if(z){U.error(a(`emailManagedContent.removeAddressFirstToast`));return}w(!1);let t=R.subdomain;try{await ge.mutateAsync({path:{assistant_id:e,id:R.id}}),d(t),W(),U.success(a(`emailManagedContent.domainReleasedToast`))}catch(e){Ce(e,{context:`email_domain_release`}),U.error(a(`emailManagedContent.domainReleaseFailedToast`))}},[z,e,ge,R?.id,R?.subdomain,W,a]);if(A.isLoading)return(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(rt,{className:`h-4 w-4 animate-spin`}),a(`emailManagedContent.checkingSubscription`)]});if(I)return(0,$.jsx)(Fe,{tone:`info`,icon:(0,$.jsx)(ot,{className:`h-4 w-4`,"aria-hidden":!0}),title:a(`emailManagedContent.upgradeNoticeTitle`),actions:(0,$.jsx)(T,{size:`compact`,onClick:()=>s(pe.plans),children:a(`emailManagedContent.upgradeButton`)}),children:a(`emailManagedContent.upgradeNoticeBody`)});let Pe=L?(0,$.jsx)(Fe,{tone:`warning`,title:a(`emailManagedContent.subscriptionWarningTitle`),actions:(0,$.jsx)(T,{size:`compact`,variant:`outlined`,onClick:()=>A.refetch(),children:a(`emailManagedContent.retry`)}),children:a(`emailManagedContent.subscriptionWarningBody`)}):null;return R?z?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[Pe,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.addressLabel`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:z.address}),(0,$.jsx)(Ft,{status:B.data?.status,isLoading:B.isLoading}),(0,$.jsx)(T,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(nt,{}),onClick:()=>ne(!0),disabled:ye.isPending,"aria-label":a(`emailManagedContent.removeEmailAriaLabel`)})]}),(0,$.jsx)(K,{open:te,title:a(`emailManagedContent.removeEmailTitle`),message:(0,$.jsx)(Y,{i18nKey:`emailManagedContent.removeEmailConfirmMessage`,ns:`channels`,values:{address:z.address},components:{code:(0,$.jsx)(`code`,{className:It})}}),confirmLabel:a(`emailManagedContent.removeConfirm`),destructive:!0,onConfirm:je,onCancel:()=>ne(!1)})]}),B.data?.status===`not_started`&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Fe,{tone:`warning`,title:a(`emailManagedContent.repairNoticeTitle`),actions:(0,$.jsx)(T,{size:`compact`,onClick:()=>{k(null),D(!0)},disabled:H.isPending,children:H.isPending?a(`emailManagedContent.completingSetup`):a(`emailManagedContent.completeSetup`)}),children:a(`emailManagedContent.repairNoticeBody`)}),(0,$.jsx)(K,{open:E,title:a(`emailManagedContent.repairConfirmTitle`),message:(0,$.jsx)(Y,{i18nKey:`emailManagedContent.repairConfirmMessage`,ns:`channels`,values:{domain:de},components:{code:(0,$.jsx)(`code`,{className:It})}}),confirmLabel:a(`emailManagedContent.completeSetup`),isPending:H.isPending,error:O,onConfirm:()=>{Me()},onCancel:()=>{H.isPending||D(!1)}})]}),fe.data?.usage&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.usageSummary`,{sent:fe.data.usage.sent_today,limit:fe.data.usage.daily_limit,received:fe.data.usage.received_today})})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[Pe,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.domainLabel`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:[R.subdomain,`.`,i]}),(0,$.jsx)(Ft,{status:B.data?.status,isLoading:B.isLoading}),(0,$.jsx)(T,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(nt,{}),onClick:()=>w(!0),disabled:ge.isPending,"aria-label":a(`emailManagedContent.releaseDomainAriaLabel`)})]}),(0,$.jsx)(K,{open:C,title:a(`emailManagedContent.releaseDomainTitle`),message:(0,$.jsx)(Y,{i18nKey:`emailManagedContent.releaseDomainConfirmMessage`,ns:`channels`,values:{domain:`${R.subdomain}.${i}`},components:{code:(0,$.jsx)(`code`,{className:It})}}),confirmLabel:a(`emailManagedContent.releaseConfirm`),destructive:!0,onConfirm:Ne,onCancel:()=>w(!1)})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.emailAddressLabel`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex h-9 min-w-0 flex-1 items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${y?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[(0,$.jsx)(`input`,{value:g,onChange:e=>{_(e.target.value.toLowerCase()),y&&b(null)},placeholder:a(`emailManagedContent.emailUsernamePlaceholder`),"aria-label":a(`emailManagedContent.emailUsernameAriaLabel`),"aria-invalid":!!y,className:`h-full min-w-0 flex-1 bg-transparent pl-3 pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`}),(0,$.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`@`,de]})]}),(0,$.jsx)(T,{onClick:Ae,disabled:ve.isPending||!g.trim(),children:ve.isPending?a(`emailManagedContent.creating`):a(`emailManagedContent.create`)})]}),y&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:y})]})]}):(0,$.jsxs)(`div`,{className:`space-y-3`,children:[Pe,(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:a(`emailManagedContent.subdomainLabel`)}),(0,$.jsx)(Pt,{subdomain:u,onSubdomainChange:e=>{d(e),m&&h(null)},domainSuffix:i,subdomainPlaceholder:a(`emailManagedContent.subdomainExamplePlaceholder`),error:m}),(0,$.jsx)(`p`,{className:`text-body-small-lighter text-[var(--content-tertiary)]`,children:a(`emailManagedContent.subdomainHint`)}),(0,$.jsx)(T,{onClick:()=>S(!0),disabled:V.isPending||!u.trim(),children:V.isPending?a(`emailManagedContent.registering`):a(`emailManagedContent.register`)}),(0,$.jsx)(K,{open:x,title:a(`emailManagedContent.setSubdomainTitle`),message:(0,$.jsx)(Y,{i18nKey:`emailManagedContent.setSubdomainConfirmMessage`,ns:`channels`,values:{subdomain:u.trim().toLowerCase()||a(`emailManagedContent.subdomainFallback`)},components:{code:(0,$.jsx)(`code`,{className:It})}}),confirmLabel:a(`emailManagedContent.confirm`),onConfirm:Oe,onCancel:()=>S(!1)})]})}function Bt(){let{t:e}=Z(`channels`),t=M(),n=Ae(),{data:r}=X({...L(),enabled:n}),i=r?.results?.[0]?.handle,a=xt.use.emailRootDomain(),s=ge(),[c,l]=(0,Q.useState)(()=>s===`gated`?`your-own`:Nt(o(G,`managed`),`managed`)),[u,d]=(0,Q.useState)(()=>{let e=o(Se,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),{platformAssistantId:p,error:m}=bt(t,s===`full`&&c===`managed`),h=p??(m?t:null),g=X({queryKey:[`byoEmailCredential`,t,u],queryFn:async()=>{let{data:e}=await Me({path:{assistant_id:t},body:{service:u,field:`api_key`},throwOnError:!0});return e},enabled:c===`your-own`||s===`gated`,staleTime:6e4,retry:de,meta:{errorContext:`byo_email_credential_check`}});(0,Q.useEffect)(()=>{g.error&&Ce(g.error,{context:`byo_email_credential_check`,bestEffort:!0})},[g.error]);let _=g.data?.hasSecret===!0,v=(0,Q.useCallback)(e=>{l(e),f(G,e)},[]),b=(0,Q.useCallback)(()=>{f(Se,u),U.success(e(`emailChannelSection.saveSuccessToast`))},[u,e]),x=(0,Q.useMemo)(()=>P.find(e=>e.id===u)??P[0],[u]),S=(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(it,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,$.jsx)(`span`,{children:(0,$.jsx)(Y,{i18nKey:`emailChannelSection.setupInstructions`,ns:`channels`,values:{providerName:x.displayName,setupSkill:x.setupSkill},components:{code:(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})}),(0,$.jsxs)(`a`,{href:x.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[e(`emailChannelSection.openProvider`,{providerName:x.displayName}),(0,$.jsx)(et,{className:`h-3 w-3`})]})]})]}),ee=(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:e(`emailChannelSection.providerLabel`)}),(0,$.jsx)(y,{value:u,onChange:e=>{(e===`mailgun`||e===`resend`)&&d(e)},options:P.map(e=>({value:e.id,label:e.displayName}))})]}),_?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--system-positive-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-default)]`,children:[(0,$.jsx)(Ye,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsx)(`span`,{children:(0,$.jsx)(Y,{i18nKey:`emailChannelSection.apiKeyConfigured`,ns:`channels`,values:{providerName:x.displayName,setupSkill:x.setupSkill},components:{code:(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`})}})})]}),(0,$.jsxs)(`a`,{href:x.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-body-small-default text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[e(`emailChannelSection.openProvider`,{providerName:x.displayName}),(0,$.jsx)(et,{className:`h-3 w-3`})]})]}):S,(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsx)(Ct,{onClick:b,disabled:!1})})]});return s===`gated`?(0,$.jsx)(St,{id:`email`,title:e(`emailChannelSection.title`),subtitle:e(`emailChannelSection.subtitle`),children:ee}):(0,$.jsx)(Mt,{id:`email`,title:e(`emailChannelSection.title`),subtitle:e(`emailChannelSection.subtitle`),mode:c,onModeChange:v,children:c===`managed`?(0,$.jsx)(`div`,{className:`space-y-4`,children:s===`disabled`?(0,$.jsx)(B,{children:e(`emailChannelSection.platformLoginNotice`)}):h===null?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(rt,{className:`h-4 w-4 animate-spin`}),e(`emailChannelSection.connecting`)]}):(0,$.jsx)(zt,{assistantId:h,assistantHandle:i,emailRootDomain:a})}):ee})}function Vt({health:e}){let{Icon:t,label:n,tone:r}=d(e);return(0,$.jsx)(V,{tone:r,leftIcon:(0,$.jsx)(t,{}),children:n})}function Ht({address:e,health:t,pending:n,onDisconnect:r}){let{t:i}=Z(`channels`);return(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(Vt,{health:t}),e?(0,$.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e}):null,(0,$.jsx)(`div`,{className:`ml-auto`,children:(0,$.jsx)(T,{type:`button`,variant:`danger`,onClick:r,disabled:!r||n,children:i(n?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}function Ut({children:e}){let{t}=Z(`channels`);return(0,$.jsxs)(I.Root,{children:[(0,$.jsx)(I.Header,{children:(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`img`,{src:j(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),(0,$.jsx)(q,{as:`span`,variant:`body-medium-default`,children:t(`slackChannelCard.setupHeading`)})]})}),(0,$.jsx)(I.Body,{children:e})]})}x.map(e=>e.riskThreshold);var Wt=[`none`,`low`];function Gt(e){if(e!==void 0)return e===`none`?`none`:`low`}var Kt={none:{label:C(`none`).label,sublabel:`asks every time`,tone:`negative`,dotColor:`var(--system-negative-strong)`},low:{label:C(`low`).label,sublabel:`safe lookups`,tone:`warning`,dotColor:`var(--system-mid-strong)`},medium:{label:C(`medium`).label,sublabel:`broader lookups`,tone:`info`,dotColor:`var(--system-info-strong)`},high:{label:C(`high`).label,sublabel:`any lookup`,tone:`positive`,dotColor:`var(--system-positive-strong)`}},qt=[`trusted_contact`,`unverified_contact`,`unknown`];function Jt(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 Yt(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 Xt(e,t,n){let r;for(let i of e)Yt(i,t,n)&&(i.contactType===`trusted_contact`||r===void 0)&&(r=i.threshold);return r}var Zt=`__default__`;function Qt({color:e}){return(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 shrink-0 rounded-full`,style:{backgroundColor:e}})}function $t({tier:e,defaultTier:t,disabled:n,onTierChange:r,onReset:i,"aria-label":a}){let{t:o}=Z(`channels`),s=Gt(e??t??void 0),c=Gt(t??void 0)??null,l=Wt.map(e=>({value:e,label:Kt[e].label,icon:(0,$.jsx)(Qt,{color:Kt[e].dotColor}),suffix:e===c?(0,$.jsx)(`span`,{className:`text-[color:var(--content-tertiary)]`,children:o(`tierPicker.defaultSuffix`)}):void 0,tooltip:Kt[e].sublabel}));return l.unshift({value:Zt,label:`Default`,icon:(0,$.jsx)(Qt,{color:`transparent`}),tooltip:`follows the default level`}),(0,$.jsx)(y,{value:s??``,onChange:e=>{e===Zt||e===c?i():r(e)},options:l,placeholder:o(`tierPicker.defaultPlaceholder`),disabled:n,size:`compact`,menuAlign:`end`,"aria-label":a})}function en(e){return e.type===`dm`?`dm`:e.isPrivate?`private`:`public`}function tn(e){return e.filter(e=>en(e)!==`dm`)}function nn(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===null||en(e)===n)&&(r===``||e.name.toLowerCase().includes(r))).sort((e,t)=>e.name.localeCompare(t.name))}function rn(e){let t={public:0,private:0,dm:0};for(let n of e)t[en(n)]+=1;return t}function an(e){return e.memberCount==null?null:e.memberCount===1?`1 member`:`${e.memberCount} members`}var on=[{value:null,labelKey:`slackChannelList.filterAll`},{value:`public`,labelKey:`slackChannelList.filterPublic`},{value:`private`,labelKey:`slackChannelList.filterPrivate`}],sn={public:at,private:qe},cn=100,ln=new Set;function un({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=ln,onTierChange:d,onTierReset:f}){let{t:p}=Z(`channels`),[m,h]=(0,Q.useState)(``),[g,_]=(0,Q.useState)(null),v=(0,Q.useMemo)(()=>tn(n??[]),[n]),y=(0,Q.useMemo)(()=>nn(v,m,g),[v,m,g]),b=(0,Q.useMemo)(()=>rn(v),[v]);return(0,$.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,$.jsx)(q,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,$.jsx)(Y,{i18nKey:`slackChannelList.presenceHint`,ns:`channels`,values:{handle:t??`@${e}`,assistant:e},components:{invite:(0,$.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`}),remove:(0,$.jsx)(`code`,{className:`text-[color:var(--content-secondary)]`})}})}),r?(0,$.jsx)(q,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.loading`)}):i?(0,$.jsx)(q,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-negative)]`,children:p(`slackChannelList.loadFailed`)}):v.length===0?(0,$.jsx)(Ot,{icon:(0,$.jsx)(at,{className:`h-6 w-6`}),title:p(`slackChannelList.emptyTitle`)}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,$.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,$.jsx)(z,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:p(`slackChannelList.searchPlaceholder`),"aria-label":p(`slackChannelList.searchAria`),leftIcon:(0,$.jsx)(tt,{className:`h-4 w-4`}),fullWidth:!0})}),(0,$.jsx)(`div`,{className:`flex items-center gap-2`,role:`group`,"aria-label":p(`slackChannelList.filterGroupAria`),children:on.map(({value:e,labelKey:t})=>{let n=g===e,r=e===null?v.length:b[e];return(0,$.jsx)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>_(e),className:E(`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`)})})]}),y.length===0?(0,$.jsx)(q,{as:`span`,variant:`body-small-lighter`,className:`py-4 text-center text-[color:var(--content-tertiary)]`,children:p(`slackChannelList.noMatches`)}):y.length>cn?(0,$.jsx)(`div`,{className:`h-96`,children:(0,$.jsx)(Le,{items:y,computeItemKey:(e,t)=>t.id,itemContent:(e,t)=>(0,$.jsx)(dn,{channel:t,pending:u.has(t.id),overridesLoading:c,overridesError:l,defaultTier:o,accessControls:s,tierOverride:a?.[t.id],onTierChange:e=>d?.(t.id,e),onReset:()=>f?.(t.id)}),className:`h-full`})}):(0,$.jsx)(`div`,{className:`max-h-96 overflow-y-auto`,children:y.map(e=>(0,$.jsx)(dn,{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 dn({channel:e,pending:t,overridesLoading:n,overridesError:r,defaultTier:i,accessControls:a,tierOverride:o,onTierChange:s,onReset:c}){let{t:l}=Z(`channels`),u=en(e);if(u===`dm`)return null;let d=sn[u],f=an(e),p=`[&+&]:border-t [&+&]:border-[var(--border-base)]`;return a?(0,$.jsx)(m,{className:p,leading:(0,$.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,subtitle:f??void 0,trailing:(0,$.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,$.jsx)($t,{tier:o,defaultTier:i,disabled:t||n||r,onTierChange:s,onReset:c,"aria-label":l(`slackChannelList.accessAria`,{channel:e.name})})})}):(0,$.jsx)(m,{className:p,leading:(0,$.jsx)(d,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,trailing:f==null?void 0:(0,$.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:f})})}function fn(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 pn({defaultTier:e}){let{t}=Z(`channels`),n=Gt(e??void 0)??null;return(0,$.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-3`,children:(0,$.jsx)(`ul`,{className:`grid gap-x-6 gap-y-3 sm:grid-cols-2`,children:[...Wt].reverse().map(e=>{let r=Kt[e];return(0,$.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,$.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(Qt,{color:r.dotColor}),(0,$.jsx)(q,{as:`span`,variant:`body-small-emphasised`,children:r.label}),e===n?(0,$.jsx)(q,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:t(`slackChannelTierLegend.defaultMarker`)}):null]}),(0,$.jsx)(q,{as:`span`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:fn(e)})]},e)})})})}var mn=[{bucket:`channels`,icon:at,title:`Channels`,description:`Public and private channels`},{bucket:`dm`,icon:Qe,title:`Direct messages`,description:`One-on-one DMs`}];function hn({assistantName:e,globalDefaultTier:t,bucketTiers:n,loading:r,error:i,pendingBuckets:a,onBucketChange:o,onBucketReset:s}){let{t:c}=Z(`channels`);return(0,$.jsxs)(I.Root,{children:[(0,$.jsx)(I.Header,{children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[c(`slackChannelTypeDefaults.heading`),(0,$.jsx)(q,{as:`p`,variant:`body-small-lighter`,className:`text-[color:var(--content-tertiary)]`,children:(0,$.jsx)(Y,{i18nKey:`slackChannelTypeDefaults.subtitle`,ns:`channels`,values:{assistant:e},components:{trustRules:(0,$.jsx)(Ue,{to:pe.settings.privacy,className:`text-[var(--content-link)] underline hover:text-[var(--content-link-hover)]`})}})})]})}),(0,$.jsx)(I.Body,{className:`py-1`,children:mn.map(({bucket:e,icon:l,title:u,description:d})=>{let f=e===`dm`?n?.channels??t:t;return(0,$.jsx)(m,{className:`[&+&]:border-t [&+&]:border-[var(--border-base)]`,leading:(0,$.jsx)(l,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:u,subtitle:d,trailing:(0,$.jsx)(`div`,{className:`w-40 sm:w-48`,children:(0,$.jsx)($t,{tier:n?.[e],defaultTier:f,disabled:r||i||a.has(e),onTierChange:t=>o(e,t),onReset:()=>s(e),"aria-label":c(`slackChannelTypeDefaults.bucketAria`,{bucket:u})})})},e)})}),(0,$.jsx)(I.Footer,{className:`p-0`,children:(0,$.jsx)(pn,{defaultTier:t})})]})}var gn=`0.11.0`;function _n(){return r(gn)}var vn=new Set([404,501]);function yn(e){let t=R(e);return t!==void 0&&vn.has(t)}function bn(e,t,n){return qt.map(r=>({selector:{scope:`channel`,adapter:e,channelExternalId:t},contactType:r,threshold:n}))}function xn(e,t,n){return e.selector.scope===`channel`&&e.selector.adapter===t&&e.selector.channelExternalId===n}function Sn(e,t){return t===`channels`?{scope:`adapter`,adapter:e}:{scope:`channel_type`,adapter:e,channelType:`dm`}}function Cn(e,t,n){let r=Sn(e,t);return qt.map(e=>({selector:r,contactType:e,threshold:n}))}function wn({assistantId:e,adapter:t}){let n=Re(),r=_n()&&!!e,i=(0,Q.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,Q.useMemo)(()=>Te(i),[i]),o=(0,Q.useMemo)(()=>[`channel-permission-resolve`,e,t],[e,t]),s=X({...b(i),enabled:r}),c=s.data?.cells,l=(0,Q.useMemo)(()=>c?Jt(c,t):void 0,[c,t]),u=(0,Q.useMemo)(()=>c?{channels:Xt(c,t,`channels`),dm:Xt(c,t,`dm`)}:void 0,[c,t]),d=X({queryKey:o,queryFn:async()=>{let{data:e}=await fe({...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(bn(t,e,n).map(e=>ye({...i,body:e,throwOnError:!0})))},onMutate:({channelExternalId:e,tier:n})=>f(n=>xn(n,t,e),bn(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),ft(`Failed to save channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),m=J({mutationFn:async({channelExternalId:e})=>{await Promise.all(qt.map(n=>we({...i,body:{selector:{scope:`channel`,adapter:t,channelExternalId:e},contactType:n},throwOnError:!0})))},onMutate:({channelExternalId:e})=>f(n=>xn(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),ft(`Failed to reset channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:a})}),h=J({mutationFn:async({bucket:e,tier:n})=>{await Promise.all(Cn(t,e,n).map(e=>ye({...i,body:e,throwOnError:!0})))},onMutate:({bucket:e,tier:n})=>f(n=>Yt(n,t,e),Cn(t,e,n)),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),ft(`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=Sn(t,e);await Promise.all(qt.map(e=>we({...i,body:{selector:n,contactType:e},throwOnError:!0})))},onMutate:({bucket:e})=>f(n=>Yt(n,t,e),[]),onError:(e,t,r)=>{n.setQueryData(a,r?.previous),ft(`Failed to reset the default`)(e)},onSettled:(e,t,{bucket:r})=>{n.invalidateQueries({queryKey:a}),r===`channels`&&n.invalidateQueries({queryKey:o})}}),_=(0,Q.useMemo)(()=>{let e=new Set;return p.isPending&&p.variables&&e.add(p.variables.channelExternalId),m.isPending&&m.variables&&e.add(m.variables.channelExternalId),e},[p.isPending,p.variables,m.isPending,m.variables]),v=(0,Q.useMemo)(()=>{let e=new Set;return h.isPending&&h.variables&&e.add(h.variables.bucket),g.isPending&&g.variables&&e.add(g.variables.bucket),e},[h.isPending,h.variables,g.isPending,g.variables]);return!r||s.isError&&yn(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 Tn({assistantId:e,assistantDisplayName:t,slackHandle:n}){let{t:r}=Z(`channels`),i=X({...se(e),enabled:!!e,select:e=>e.channels}),a=wn({assistantId:e,adapter:`slack`}),o=X({queryKey:[`thresholds`,e],queryFn:()=>Ie(e),enabled:a.supported&&!!e,staleTime:3e4}).data?.interactive??null,s=a.defaultCellTier===void 0?null:a.defaultCellTier??o,c=(0,$.jsx)(un,{assistantDisplayName:t,slackHandle:n,accessControlsSupported:a.supported,defaultTier:s,channels:i.data,loading:i.isPending,error:i.isError,tierOverrides:a.tierOverrides,tierOverridesLoading:a.isLoading,tierOverridesError:a.isError,pendingChannelIds:a.pendingChannelIds,onTierChange:a.onTierChange,onTierReset:a.onTierReset});return!a.supported||!a.onBucketChange||!a.onBucketReset?(0,$.jsx)(I.Root,{noPadding:!0,clipContents:!0,children:c}):(0,$.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[a.isError?(0,$.jsx)(Fe,{tone:`error`,children:r(`slackChannelSection.overridesLoadFailed`)}):null,(0,$.jsx)(hn,{assistantName:t,globalDefaultTier:o,bucketTiers:a.bucketTiers,loading:a.isLoading,error:a.isError,pendingBuckets:a.pendingBuckets,onBucketChange:a.onBucketChange,onBucketReset:a.onBucketReset}),(0,$.jsx)(I.Root,{noPadding:!0,clipContents:!0,children:(0,$.jsx)(w.Root,{type:`single`,collapsible:!0,children:(0,$.jsxs)(w.Item,{value:`per-channel-overrides`,children:[(0,$.jsxs)(w.Trigger,{className:`group justify-between gap-2 px-4 py-3`,children:[(0,$.jsx)(q,{as:`span`,variant:`body-small-emphasised`,children:r(`slackChannelSection.perChannelOverrides`)}),(0,$.jsx)(Ke,{"aria-hidden":`true`,className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]}),(0,$.jsx)(w.Content,{className:`border-[var(--border-base)] data-[state=open]:border-t`,children:c})]})})})]})}function En({slackHandle:e,health:t,disconnectPending:n=!1,onDisconnect:r,children:i}){let{t:a}=Z(`channels`);return(0,$.jsxs)(I.Root,{children:[(0,$.jsx)(I.Header,{children:(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`img`,{src:j(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),e?(0,$.jsx)(q,{as:`span`,variant:`body-medium-default`,children:e}):null,(0,$.jsx)(Vt,{health:t}),(0,$.jsx)(`div`,{className:`ml-auto`,children:(0,$.jsx)(T,{type:`button`,variant:`ghost`,onClick:r,disabled:!r||n,children:a(n?`connectionCard.disconnecting`:`connectionCard.disconnect`)})})]})}),(0,$.jsx)(I.Body,{children:i})]})}function Dn({threadMode:e,threadModePending:t=!1,onThreadModeChange:n}){let{t:r}=Z(`channels`);return(0,$.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,$.jsx)(q,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:r(`slackThreadBehavior.heading`)}),(0,$.jsxs)(ve,{value:e??`mention_then_thread`,onValueChange:e=>n?.(e),disabled:t||!n,"aria-label":r(`slackThreadBehavior.selectAria`),children:[(0,$.jsx)(ce,{value:`mention_only`,label:r(`slackThreadBehavior.mentionsOnly`),helperText:r(`slackThreadBehavior.mentionsOnlyHelp`)}),(0,$.jsx)(ce,{value:`mention_then_thread`,label:r(`slackThreadBehavior.followThreads`),helperText:r(`slackThreadBehavior.followThreadsHelp`)})]})]})}function On({onSave:e}){let{t}=Z(`channels`),[n,r]=(0,Q.useState)(``),[i,a]=(0,Q.useState)(``),[o,s]=(0,Q.useState)(!1),[c,l]=(0,Q.useState)(null),u=n.trim().length>0&&i.trim().length>0&&!o;return(0,$.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,$.jsx)(z,{label:t(`twilioCredentialEntry.accountSid`),type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,$.jsx)(z,{label:t(`twilioCredentialEntry.authToken`),type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:t(`twilioCredentialEntry.authTokenPlaceholder`),disabled:o,fullWidth:!0}),c?(0,$.jsx)(`p`,{className:`text-label-small-default`,style:{color:`var(--content-negative)`},children:c}):null,(0,$.jsx)(`div`,{children:(0,$.jsx)(T,{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 kn({channel:e,assistantId:t,assistantName:n,assistantDisplayName:r,pending:i,initialManualEntry:o=!1,onSetup:s,onDisconnect:l,onSaveTelegramToken:u,telegramSaveStatus:d,telegramSaveError:f,onSaveDiscordToken:m,discordSaveStatus:h,discordSaveError:g=null,discordInviteUrl:_,onSaveSlackConfig:v,slackSaveStatus:y,slackSaveError:b,slackThreadMode:x,slackThreadModePending:S=!1,onSlackThreadModeChange:ee,onSaveTwilioCredentials:C,policy:w,policySaving:E=!1,policyLoading:D=!1,policyError:O=!1,onPolicyChange:k}){let{t:A}=Z(`channels`),re=e.status===`incomplete`,[ie,j]=(0,Q.useState)(o),ae=e.key===`discord`&&ie&&h===`success`,M=e.configured&&!ae;if(e.key===`email`)return(0,$.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,$.jsx)(Bt,{}),M&&k?(0,$.jsx)(st,{children:(0,$.jsx)(At,{assistantDisplayName:r,policy:w,saving:E,loading:D,error:O,onChange:k})}):null]});if(e.key===`slack`)return(0,$.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[M?(0,$.jsx)(En,{slackHandle:e.address,health:e.health,disconnectPending:i,onDisconnect:l,children:(0,$.jsx)(Dn,{threadMode:x,threadModePending:S,onThreadModeChange:ee})}):(0,$.jsx)(Ut,{children:(0,$.jsx)(a,{assistantId:t,assistantName:n,onSave:v,saveStatus:y,saveError:b})}),M?(0,$.jsx)(Tn,{assistantId:t,assistantDisplayName:r,slackHandle:e.address}):null]});let N=ne[e.key];return(0,$.jsx)(`div`,{className:`flex flex-col gap-4`,children:M?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Ht,{health:e.health,address:e.address,pending:i,onDisconnect:l}),N.hasTrustFloorControl&&k?(0,$.jsx)(At,{assistantDisplayName:r,policy:w,saving:E,loading:D,error:O,onChange:k}):null]}):ie&&e.canManualEntry&&N.credentialForm?(e=>{switch(e){case`slack-wizard`:return null;case`telegram-token`:return(0,$.jsx)(Pe,{assistantId:t,assistantName:n,saveStatus:d,saveError:f,onSave:u});case`discord-token`:return(0,$.jsx)(te,{assistantId:t,assistantName:n,saveStatus:h,saveError:g,onSave:m,..._?{inviteUrl:_}:{}});case`twilio-credentials`:return(0,$.jsx)(On,{onSave:C});default:return e}})(N.credentialForm):(0,$.jsx)(Ot,{icon:(0,$.jsx)(c,{channelId:e.key,className:`h-6 w-6`}),title:A(re?`channelPanel.incompleteTitle`:`channelPanel.disconnectedTitle`,{channel:p(e.key)}),description:re?e.warning??A(`channelPanel.incompleteDescription`,{channel:p(e.key)}):N.disconnectedPitchKey?A(N.disconnectedPitchKey,{assistant:r}):void 0,action:(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,$.jsx)(T,{type:`button`,variant:`outlined`,onClick:s,disabled:!s||i,children:A(i?`channelPanel.opening`:re?`channelPanel.finishSetup`:`channelPanel.setUp`)}),e.canManualEntry&&N.credentialForm?(0,$.jsx)(T,{type:`button`,variant:`link`,onClick:()=>j(!0),children:A(`channelPanel.connectManually`)}):null]})})})}var An=new Set([404,501]),jn=new Set([401,403]);function Mn(e){let t=R(e);return t!==void 0&&An.has(t)?`unsupported`:t!==void 0&&jn.has(t)?`forbidden`:`unreadable`}function Nn(e,t,n){let r=e===`unreadable`?t:n;return r?r instanceof Error&&r.message?r.message:`Something went wrong`:null}function Pn(e,t){let n=Re(),r={assistant_id:e},i=X({...D({path:r}),enabled:!!e,retry:Oe}),a=()=>n.invalidateQueries({queryKey:k({path:r})}),o=J({...g(),onSuccess:a}),s=J({...h(),onSuccess:a}),c=i.data?.sources?.find(e=>e.source===t),l;l=i.isError?Mn(i.error):i.isPending?`loading`:c?c.state:`none`;let u=Nn(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 Fn=`plugin`;function In(e){let t=Re(),n=dt(),r=(0,Q.useMemo)(()=>({path:{assistant_id:e}}),[e]),a=(0,Q.useMemo)(()=>O(r),[r]),o=X({...i(r),enabled:n&&!!e,select:_t}),s=J({mutationFn:t=>ht(e,Fn,t),onSuccess:()=>t.invalidateQueries({queryKey:a}),onError:ft(`Failed to save channel policy`)}),c=(0,Q.useCallback)(e=>{s.mutate(e)},[s]);return n?{policy:o.data?.find(e=>e.channelType===Fn)?.policy,isLoading:o.isPending,isError:o.isError,isSaving:s.isPending,onChange:c}:{policy:void 0,isLoading:!1,isError:!1,isSaving:!1,onChange:void 0}}function Ln({channel:e,assistantId:t,assistantDisplayName:n}){let{t:r}=Z(`channels`),i=Ve(),a=Pn(t,e.plugin),o=In(t);return(0,$.jsxs)(`div`,{className:`relative flex flex-col items-center gap-3 py-10 text-center`,children:[(0,$.jsx)(T,{className:`absolute top-0 right-0`,variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(Xe,{}),tooltip:r(`pluginChannelPanel.navigateToPluginPage`),"aria-label":r(`pluginChannelPanel.navigateToPluginPage`),onClick:()=>i(`/assistant/plugins/${e.plugin}`)}),(0,$.jsx)(Ne,{icon:e.icon,className:`h-8 w-8 text-[color:var(--content-secondary)]`}),(0,$.jsx)(`h3`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e.label}),e.description?(0,$.jsx)(`p`,{className:`max-w-[420px] text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e.description}):null,(0,$.jsx)(Rn,{channel:e,ingress:a}),o.onChange?(0,$.jsx)(`div`,{className:`w-full max-w-[420px] text-left`,children:(0,$.jsx)(At,{assistantDisplayName:n,policy:o.policy,saving:o.isSaving,loading:o.isLoading,error:o.isError,onChange:o.onChange})}):null]})}function Rn({channel:e,ingress:t}){let{t:n}=Z(`channels`);switch(t.status){case`loading`:return(0,$.jsx)(Bn,{children:n(`pluginChannelPanel.ingressLoading`,{channel:e.label})});case`unsupported`:return(0,$.jsx)(Bn,{children:n(`pluginChannelPanel.ingressUnsupported`)});case`forbidden`:return(0,$.jsx)(Bn,{children:n(`pluginChannelPanel.ingressForbidden`)});case`unreadable`:return(0,$.jsxs)(Bn,{children:[n(`pluginChannelPanel.ingressUnreadable`,{channel:e.label}),t.error?` ${t.error}`:``]});case`none`:return(0,$.jsx)(Bn,{children:n(`pluginChannelPanel.ingressNone`,{channel:e.label})});case`pending`:case`approved`:return(0,$.jsx)(zn,{ingress:t})}}function zn({ingress:e}){let{t}=Z(`channels`),n=e.status===`approved`;return(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,$.jsx)(V,{tone:n?`positive`:`neutral`,children:t(n?`pluginChannelPanel.ingressApprovedTag`:`pluginChannelPanel.ingressPendingTag`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(T,{onClick:n?e.revoke:e.approve,disabled:e.deciding,variant:n?`outlined`:`primary`,children:t(n?`pluginChannelPanel.revokeChannel`:`pluginChannelPanel.approveChannel`)}),(0,$.jsx)(l,{content:t(`pluginChannelPanel.approveChannelInfo`),children:(0,$.jsx)(`span`,{tabIndex:0,className:`inline-flex cursor-default p-0.5 text-[color:var(--content-secondary)]`,"aria-label":t(`pluginChannelPanel.approveChannelInfo`),children:(0,$.jsx)(it,{className:`h-4 w-4`,"aria-hidden":`true`})})})]}),e.error?(0,$.jsx)(`p`,{className:`max-w-[420px] text-body-small-default`,style:{color:`var(--system-negative-strong)`},children:e.error}):null]})}function Bn({children:e}){return(0,$.jsx)(`p`,{className:`max-w-[420px] text-body-small-default`,style:{color:`var(--content-secondary)`},children:e})}function Vn({assistantId:e,assistantName:t,channels:n,pluginChannels:r=[],pendingChannelKey:i=null,slackThreadMode:a,slackThreadModePending:o=!1,channelPolicies:s,policySavingKey:c=null,policiesLoading:l=!1,policiesError:u=!1,onChannelPolicyChange:d,onSetup:f,onDisconnect:p,onSaveTelegramToken:m,telegramSaveStatus:h,onSaveDiscordToken:g,discordSaveStatus:_,discordSaveError:v=null,discordInviteUrl:y,telegramSaveError:b,onSaveSlackConfig:x,slackSaveStatus:ee,slackSaveError:C,onSlackThreadModeChange:w,onSaveTwilioCredentials:te,initialChannel:T=null}){let{t:E}=Z(`channels`),{selected:D,select:O}=wt(),[k,A]=(0,Q.useState)(null),{paneRef:re,hasRoomForList:ie,drawerOpen:j,openDrawer:ae,closeDrawer:M}=ut(),[N]=(0,Q.useState)(T);(0,Q.useEffect)(()=>{N&&O(N)},[N,O]);let P=S(t),oe=k?ne[k]:null,se=e=>{O(e),M()},F=r.find(e=>e.key===D),I=F?void 0:n.find(e=>e.key===D)??n[0];if(!I&&!F)return null;let L=F?F.key:I.key,ce=F?(0,$.jsx)(Ln,{channel:F,assistantId:e,assistantDisplayName:P},F.key):(0,$.jsx)(kn,{channel:I,assistantId:e,assistantName:t,assistantDisplayName:P,pending:i===I.key,initialManualEntry:N===I.key,onSetup:f?()=>f(I.key,I.status===`incomplete`):void 0,onDisconnect:p&&I.canDisconnect?()=>A(I.key):void 0,onSaveTelegramToken:m,telegramSaveStatus:h,onSaveDiscordToken:g,discordSaveStatus:_,discordSaveError:v,...y?{discordInviteUrl:y}:{},telegramSaveError:b,onSaveSlackConfig:x,slackSaveStatus:ee,slackSaveError:C,slackThreadMode:a,slackThreadModePending:o,onSlackThreadModeChange:w,onSaveTwilioCredentials:te,policy:s?.[I.key],policySaving:c===I.key,policyLoading:l,policyError:u,onPolicyChange:d?e=>d(I.key,e):void 0},I.key);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{ref:re,className:`flex min-h-0 flex-1 overflow-hidden ${ie?`flex-row gap-6`:`flex-col gap-4`}`,children:[ie?(0,$.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,$.jsx)(Tt,{channels:n,pluginChannels:r,selectedKey:L,onSelect:se})}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`flex items-center`,children:(0,$.jsx)(lt,{onClick:ae})}),(0,$.jsx)(ct,{open:j,onClose:M,title:E(`assistantChannelsList.drawerTitle`),children:(0,$.jsx)(Tt,{channels:n,pluginChannels:r,selectedKey:L,onSelect:se})})]}),(0,$.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:L===`slack`||L===`email`?ce:(0,$.jsx)(st,{children:ce})})]}),(0,$.jsx)(K,{open:k!==null,title:E(`assistantChannelsList.disconnectTitle`,{channel:oe?E(oe.labelKey):``}),message:oe?.disconnectMessageKey?E(oe.disconnectMessageKey):``,confirmLabel:E(`assistantChannelsList.disconnectConfirm`),destructive:!0,onConfirm:()=>{k&&p&&p(k),A(null)},onCancel:()=>A(null)})]})}var Hn=`plugin:`;function Un(e){let{data:t}=X({...u({path:{assistant_id:e}}),enabled:!!e,select:e=>e.channels.filter(e=>e.source?.startsWith(Hn)).map(e=>({plugin:e.id,key:je(e.id),label:e.label,description:e.subtitle,icon:e.icon}))});return t??[]}function Wn(){let[e,t]=ze(),n=e.get(`setup`),r=n&&s(n)?n:null;return(0,Q.useEffect)(()=>{r&&t(e=>(e.delete(`setup`),e),{replace:!0})},[r,t]),r}function Gn({assistantId:e,onStartSetupConversation:t}){let n=le.use.a2aChannel(),r=_.use.name(),i=Wn(),a=vt(e),o=S(r),s=mt({assistantId:e,onStartSetupConversation:t});return(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-6 overflow-hidden`,children:[(0,$.jsx)(Vn,{assistantId:e,assistantName:o,initialChannel:i,pluginChannels:Un(e),...s}),n?(0,$.jsx)(gt,{onClick:a.open}):null,(0,$.jsx)(pt,{open:a.isOpen,assistantId:e,onClose:a.close})]})}function Kn(){let e=Ve(),t=M();return(0,$.jsx)(Gn,{assistantId:t,onStartSetupConversation:t=>{H(e,{prompt:t})}},t)}export{Kn as ChannelsPageRoute};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
var e={saveFailed:`Не удалось сохранить документ. Ваше сообщение сохранено здесь. Попробуйте отправить ещё раз.`,viewConversation:`Открыть беседу`,reopenDocument:`Открыть документ`},t={title:`Подключить Claude Code`,subtitleIdle:`Использование подписки Claude Code`,subtitleStarting:`Запускаем вход...`,subtitleWaiting:`Ждём вход в Claude...`,subtitleExchanging:`Завершаем вход...`,subtitleConnected:`Claude Code подключён, продолжаем...`,subtitlePaste:`Вставка ключа из открывшейся вкладки`,errorFallback:`Не удалось подключить Claude. Повторите попытку.`,connectButton:`Подключить`,saveButton:`Сохранить`,pastePlaceholder:`Ключ`},n={modelLabel:`Модель`},r={backAria:`Назад ко всем шагам`,backTooltip:`Все шаги`,thinkingTitle:`Размышление`},i={title:`Добавить в диалог`,closeAriaLabel:`Закрыть`,camera:`Камера`,gallery:`Фотоплёнка`,files:`Файлы`,pickFailed:`Не удалось добавить этот файл. Повторите попытку.`,tooLarge:`{count, plural, one {# файл слишком большой, чтобы прикрепить} few {# файла слишком большие, чтобы прикрепить} many {# файлов слишком большие, чтобы прикрепить} other {# файла слишком большие, чтобы прикрепить}}`,pickFull:`{count, plural, one {# файл не поместился в эту пачку. Добавление отдельно.} few {# файла не поместились в эту пачку. Добавление отдельно.} many {# файлов не поместились в эту пачку. Добавление отдельно.} other {# файла не поместились в эту пачку. Добавление отдельно.}}`},a={allowAndCreateRule:`Разрешить и создать правило`,trigger:`Другие варианты разрешения`},o={appExported:`Приложение экспортировано`,shareFailed:`Не удалось поделиться приложением`},s={busy:`Рабочий стол занят другим пользователем.`,connecting:`Подключение к рабочему столу…`,failed:`Не удалось запустить рабочий стол.`,lost:`Соединение с рабочим столом потеряно.`,openAria:`Открыть рабочий стол`,reconnectButton:`Переподключиться`,title:`Рабочий стол`,unavailable:`Рабочий стол недоступен для этого ассистента.`,installButton:`Установить рабочий стол`,installDescription:`Установите Google Chrome и компоненты рабочего стола ассистента. Это может занять несколько минут.`,checkingSetup:`Проверка рабочего стола…`,installingPackages:`Установка компонентов рабочего стола…`,installingChrome:`Установка Google Chrome…`,checkingInstall:`Проверка установки…`,installBackground:`Установка продолжится, даже если вы закроете это окно.`,installFailed:`Не удалось завершить установку. Попробуйте ещё раз.`,setupRequestFailed:`Не удалось проверить установку. Подключитесь заново.`,setupUnsupported:`Для установки нужен контейнер Linux x64 или ARM64 с правами администратора.`},c={bulkActionMembersFailed:`Не удалось загрузить все диалоги в этом разделе. Повторите попытку.`},l={dismissLabel:`Скрыть экран сна`,sleeping:`Ваш ассистент спит`,sleepingNamed:`{name} спит`,waking:`Ваш ассистент просыпается…`,wakingNamed:`{name} просыпается…`,woke:`Ваш ассистент только что проснулся`,wokeNamed:`{name} только что проснулся`},u={collapse:`Скрыть ассистентов`,currentAssistant:`{name}, текущий ассистент`,expand:`Сменить ассистента`,switchFailed:`Не удалось сменить ассистента. Повторите попытку.`,switchTo:`Переключиться на {name}`,unnamedAssistant:`Безымянный ассистент`},d={legacyUnavailable:`Предпросмотр недоступен. Содержимое файла не сохранилось в истории чата.`,loadFailed:`Не удалось загрузить предпросмотр.`,pdfLoadFailed:`Не удалось показать этот PDF`},f={cancelUpload:`Отменить загрузку {filename}`,preview:`Предпросмотр {filename}`,remove:`Удалить {filename}`,uploading:`Загрузка {filename}`},p={description:`Где {count, plural, one {# точка разрыва кэша попала} few {# точки разрыва кэша попали} many {# точек разрыва кэша попали} other {# точки разрыва кэша попали}} в префикс этого запроса и какие сегменты прочитали, а какие создали заново.`,estimatedTokens:`≈ {count} токенов`,fullMissBody:`В этом ходе каждый сегмент создали заново. Сравнение с предыдущим ходом в разнице кэша выше, чтобы найти изменившийся блок.`,fullMissTitle:`Полный промах кэша`,loadError:`Не удалось загрузить тело запроса, чтобы нанести точки разрыва кэша.`,loading:`Загружаем тело запроса, чтобы нанести точки разрыва кэша…`,noBreakpoints:`В этом запросе не было точек разрыва кэша: кэш промпта для вызова был выключен.`,splitEstimatedNote:` Разделение «прочитано / создано» считается по размеру сегмента; провайдер сообщает только итоги.`,statusCreated:`Создано заново`,statusRead:`Прочитано из кэша`,statusUnknown:`В кэше`,title:`Точки разрыва кэша`,tokenEstimateNote:`Число токенов оценивается по длине текста.`},m={changedLabel:`Изменено`,changedMessageFallback:`сообщение`,chipMessages:`Сообщения`,chipModel:`Модель`,chipSettings:`Настройки`,chipSystem:`Система`,chipTools:`Инструменты`,currentModelFallback:`эта модель`,description:`Что изменилось с запроса прошлого хода: блок, из-за которого кэш промпта создали заново.`,diffAnyway:`Всё равно сравнить ({lineCount} строк)`,diffLabel:`Разница: {label}`,diffLargeDefault:`Изменённый текст большой, поэтому по умолчанию его не сравнивают.`,diffStillTooLarge:`Всё ещё слишком большой, чтобы сравнивать здесь (больше {maxLines} строк). Вкладка Raw показывает полное тело.`,diffTooLarge:`Изменённый текст слишком большой, чтобы сравнивать здесь. Вкладка Raw показывает полное тело.`,loadPreviousCallError:`Не удалось загрузить предыдущий вызов для сравнения.`,loadingPreviousCall:`Загружаем предыдущий вызов для сравнения…`,messageStatsAppended:`добавлено: {count}`,messageStatsLeading:`Начальные сообщения: {parts}`,messageStatsRemoved:`удалено: {count}`,messageStatsShared:`общих: {count}`,previousModelFallback:`предыдущая модель`,previousPromptUnavailable:`Промпт предыдущего вызова недоступен для сравнения.`,showLess:`Показать меньше`,showMoreDiffLines:`Показать ещё {count} строк разницы`,statusMessagesEarlierBody:`{label} #{index} отличается от прошлого хода, поэтому всё, что кэшировалось после него, в этом ходе обрабатывается заново.`,statusMessagesEarlierTitle:`Изменилось более раннее сообщение`,statusMessagesHistoryBody:`В этом ходе пропало более ранних сообщений: {removedCount} (скорее всего из-за сжатия истории), поэтому кэшированный префикс сообщений больше не совпадает.`,statusMessagesHistoryTitle:`История сообщений изменилась`,statusModelBody:`Этот ход использовал {current}, а предыдущий: {previous}. Другая модель не может переиспользовать прошлый кэш промпта, поэтому весь промпт создаётся заново.`,statusModelTitle:`Модель изменилась`,statusPrefixUnchangedBodyAppended:`Кэшированный префикс совпадает с прошлым ходом, и добавлено новых сообщений: {count}. Промах кэша здесь скорее про истечение TTL, а не про изменённое содержимое.`,statusPrefixUnchangedBodyIdentical:`Кэшированный префикс совпадает с прошлым ходом. Промах кэша здесь скорее про истечение TTL, а не про изменённое содержимое.`,statusPrefixUnchangedTitle:`Префикс промпта не изменился`,statusSettingsBody:`От прошлого хода отличаются только настройки запроса (например, temperature). У большинства провайдеров одного этого недостаточно, чтобы сбросить кэш промпта.`,statusSettingsTitle:`Настройки запроса изменились`,statusSystemBody:`Часть системного промпта изменилась с прошлого хода. Нестабильное содержимое здесь (метка времени, память или блок на каждый ход) заставляет создавать кэш заново каждый ход.`,statusSystemTitle:`Системный промпт изменился`,statusToolsBody:`Набор инструментов или их определения отличаются от прошлого хода. Инструменты стоят в начале кэшированного префикса, поэтому любое изменение здесь пересоздаёт кэш ещё до системного промпта и сообщений.`,statusToolsTitle:`Определения инструментов изменились`,title:`Разница кэша`,unchangedLines:`⋯ без изменений: {count} строк`},h={barAriaLabel:`Разбивка кэша промпта из {total} токенов: {segments} ({percent} из кэша).`,barSegment:`{count} {label}`,cached:`из кэша`,description:`Какая доля промпта этого вызова пришла из кэша промпта.`,segmentCreated:`Создано заново`,segmentFresh:`Новый ввод`,segmentRead:`Прочитано из кэша`,statusFullMissBody:`Ни одна часть промпта этого вызова не была прочитана из кэша.`,statusFullMissReCreatedSuffix:` В этом ходе в кэш записали {count} токенов, но ни один не переиспользовали: обычно так бывает, когда кэшированный префикс изменился с прошлого хода.`,statusFullMissTitle:`Полный промах кэша`,statusHealthyBody:`{percent} промпта этого вызова ({count} токенов) пришло из кэша.`,statusHealthyTitle:`Здоровое переиспользование кэша`,statusPartialBody:`{percent} промпта этого вызова ({count} токенов) пришло из кэша; остальное в этом ходе обработали заново.`,statusPartialTitle:`Частичное переиспользование кэша`,title:`Состояние кэша`,unavailableNote:`Этот вызов не сообщил об использовании кэша промпта.`,unavailableNoteForProvider:`Этот вызов не сообщил об использовании кэша промпта для {provider}.`},g={callCount:`{count, plural, one {# вызов LLM} few {# вызова LLM} many {# вызовов LLM} other {# вызова LLM}}`,callLabel:`Вызов {number}`,compaction:`Сжатие`,cost:`Стоимость`,empty:`Вызовов LLM нет.`,failed:`Ошибка`,latest:`Последний`,navAriaLabel:`Вызовы LLM`,syntheticAgentLoopError:`Ошибка цикла агента`,syntheticAgentLoopErrorWithReason:`Ошибка цикла агента · {reason}`,syntheticYield:`Пауза · сжатие не уместило следующий шаг`,unrecognizedCall:`Неизвестный вызов`},_={captureFailed:`Не удалось сделать фото. Попробуйте ещё раз.`,close:`Закрыть камеру`,flip:`Сменить камеру`,openFailed:`Не удалось открыть камеру.`,shutter:`Сделать фото`,title:`Сделать фото`},v={captureFailed:`Не удалось сделать это фото.`,deviceInUse:`Камеру использует другое приложение.`,noDevice:`Камера не найдена.`,notDelivered:`Переподключение. Сделайте это фото ещё раз.`,permissionDenied:`Доступ к камере для Vellum отключён.`,refused:`Ваш ассистент пока не может получать фото.`,storeFailed:`Не удалось добавить это фото в разговор.`,unknown:`Не удалось открыть камеру.`,unsupported:`Это устройство не может открыть камеру.`,uploadFailed:`Не удалось отправить это фото.`},y={live:`Прямой эфир · Нажмите, чтобы остановить`,liveDescription:`Нажмите, чтобы остановить прямой эфир.`,photo:`Нажмите для фото · Удерживайте для прямого эфира`,photoDescription:`Удерживайте, чтобы начать прямой эфир.`},b={announceLive:`Прямой эфир. {status}`,announceLiveMuted:`Прямой эфир. Без звука. {status}`,announceLiveMutedSpeaking:`Прямой эфир. Без звука. {name} говорит`,announceLiveSpeaking:`Прямой эфир. {name} говорит`,announcePhoto:`Фото. {status}`,announcePhotoMuted:`Фото. Без звука. {status}`,announcePhotoMutedSpeaking:`Фото. Без звука. {name} говорит`,announcePhotoSpeaking:`Фото. {name} говорит`,live:`Прямой эфир`,photo:`Фото`,yourAssistant:`Ваш ассистент`},x={buttonAria:`Параметры отображения камеры`,gateHudDescription:`Панель настройки того, что сохраняет прямой эфир.`,gateHudTitle:`Показатели фильтра кадров`,keptFrameDescription:`Последний кадр, отправленный в эфире, рядом с вашими фото. Отправка продолжается в любом случае.`,keptFrameTitle:`Последний кадр`,title:`Показывать`},S={heading:`Ссылка на сообщение из {channel}`,headingWithSender:`Ссылка на сообщение {sender} в {channel}`,removeAria:`Убрать выбранное сообщение`},C={closeAria:`Закрыть тред в {channel}`,label:`Тред в {channel}`,openAria:`Открыть тред в {channel}`},w={assistantSender:`Ассистент`,closeAria:`Закрыть тред канала`,closeTooltip:`Закрыть`,emptyNoMessageDetail:`{channel} не передаёт Vellum данные по отдельным сообщениям, которые нужны этому виду, поэтому показывать здесь нечего. Откройте разговор в {channel}, чтобы прочитать его целиком.`,emptyThread:`В этом разговоре пока нет сообщений из {channel}.`,namedTitle:`{channel} · {thread}`,noText:`Без текста`,openInChannel:`Открыть в {channel}`,reactionAdded:`Реакция {emoji}`,reactionRemoved:`Реакция {emoji} убрана`,readOnly:`Только чтение`,readOnlyNote:`Это разговор в том виде, в каком он есть в {channel}. Писать можно только в поле ввода Vellum.`,reference:`Сослаться в Vellum`,referenceAria:`Сослаться на это сообщение из {channel} в Vellum`,referenced:`Выбрано`,removeReferenceAria:`Убрать эту ссылку из поля ввода Vellum`,title:`Тред в {channel}`,unknownSender:`Неизвестный отправитель`},T={addToChat:`Добавить в диалог`,askAssistantPlaceholder:`Сообщение для {assistantName}`,endOtherVoiceSession:`Завершить и начать здесь`,goToVoiceSession:`Перейти к ней`},E={appsTitle:`Приложения`,backAria:`Назад к информации о диалоге`,backTooltip:`Информация о диалоге`,closeAria:`Закрыть информацию о диалоге`,empty:`В этом диалоге пока нет материалов`,filesTitle:`Документы и изображения`,framesTitle:`Кадры с камеры`,loadFailed:`Не удалось загрузить материалы`,loadMore:`Загрузить ещё`,openAppAria:`Открыть {name}`,openDocumentAria:`Открыть {name}`,previewAttachmentAria:`Предпросмотр {filename}`,previewFrameAria:`Предпросмотр кадра с камеры`,seeAll:`Показать все`,seeAllAppsAria:`Показать все приложения`,seeAllFilesAria:`Показать все документы и изображения`,seeAllFramesAria:`Показать все кадры с камеры`,title:`Информация о диалоге`},D={compactedMessages:`сжато: {count}`,compactedPreserved:`Сжато / сохранено`,contextTokens:`Токены контекста`,duration:`Длительность`,durationMs:`{count} мс`,emptyBody:`Сжатие относят к вызову, который шёл сразу после него. Если ждал его здесь, проверь, что диалог превысил бюджет контекста прямо перед этим вызовом.`,emptyTitle:`К этому вызову не привязано сжатие`,eventIndex:` · {index} из {totalCount}`,hideSummaryText:`Скрыть текст сводки`,loadFailedDefault:`Не удалось загрузить сжатие.`,loadFailedTitle:`Не удалось загрузить`,loading:`Загрузка сжатия…`,messageRange:`{before} → {after}`,messages:`Сообщения`,outcomeCompacted:`Сжато`,outcomeFailed:`Сжатие не удалось`,outcomeFailedDetail:`Вызов суммаризатора завершился ошибкой, поэтому контекст оставили как есть.`,outcomeNoChange:`Без изменений`,outcomeUnavailable:`Исход недоступен`,outcomeUnavailableDetail:`Подробные метрики до и после для этого сжатия не записали.`,preservedMessages:`сохранено: {count}`,reductionRatio:`в {ratio}× меньше`,retry:`Повторить`,showSummaryText:`Показать текст сводки`,summarizerUsage:`{input} вход / {output} выход`,summaryCost:`Стоимость сводки`,summaryModel:`Модель сводки`,tokenRange:`{before} → {after}`,tokenRangeWithReduction:`{before} → {after} ({reduction})`,trigger:`Триггер`},O={profileSwitchFailed:`Профиль создан, но переключиться на него не удалось`,profileSwitchFallback:`Не удалось сменить профиль. Повторите попытку.`},k={cancelFailed:`Не удалось закрыть форму. Попробуйте ещё раз.`,recordCancelFailed:`Не удалось закрыть форму. Попробуйте ещё раз.`,recordSaveFailed:`Не удалось сохранить контакт. Попробуйте ещё раз.`},A={addingToContact:`Добавление канала для {name}`,markVerified:`Отметить этот адрес как подтверждённый`,markVerifiedHelp:`Подтверждённый адрес может писать вашему ассистенту.`,namePlaceholder:`Имя`,notesLabel:`Заметки`},j={cancel:`Отмена`,channelType:`{channel}:`,contactDeleted:`Контакт удалён`,contactMerged:`Контакты объединены`,contactSaved:`Контакт сохранён`,createTitle:`Добавить контакт`,delete:`Удалить`,deleteTitle:`Удалить {name}?`,deleteWarning:`Вместе с ним удаляются его каналы, и он больше не сможет связаться с вашим ассистентом.`,merge:`Объединить`,mergeDonorChannels:`Переходят от {name}`,mergeSurvivorChannels:`Уже у {name}`,mergeTitle:`Объединить {donor} с {survivor}?`,mergeWarning:`Эти каналы перейдут к {survivor}, а запись {donor} будет удалена.`,nameLabel:`Имя`,namePlaceholder:`Имя`,noChannels:`У этого контакта нет каналов.`,notesLabel:`Заметки`,notesPlaceholder:`Добавить заметку`,save:`Сохранить`,saving:`Сохранение…`,updateTitle:`Обновить: {name}`},M={archive:`В архив`,copyConversation:`Скопировать весь диалог`,copyConversationId:`Скопировать ID диалога`,delete:`Удалить`,forkConversation:`Ответвить диалог`,inspect:`Разобрать диалог`,markRead:`Отметить как прочитанный`,markUnread:`Отметить как непрочитанный`,moveToGroup:`Перенести в группу`,newGroup:`Новая группа…`,openInNewWindow:`Открыть в новом окне`,pin:`Закрепить`,refresh:`Обновить`,removeFromGroup:`Убрать из группы`,rename:`Переименовать`,shareFeedback:`Отправить отзыв`,triggerAriaLabel:`Действия с диалогом`,unarchive:`Вернуть из архива`,unpin:`Открепить`},N={closeAriaLabel:`Закрыть`,title:`Действия с диалогом`},P={ariaLabel:`Ресурсы диалога, {count, plural, one {# элемент} few {# элемента} many {# элементов} other {# элемента}}`,ariaLabelUnavailable:`Ресурсы диалога, не удалось загрузить`,ariaLabelUnseen:`Ресурсы диалога, {count, plural, one {# элемент} few {# элемента} many {# элементов} other {# элемента}} (есть невидимые изменения)`,label:`{count, plural, one {# ресурс} few {# ресурса} many {# ресурсов} other {# ресурса}}`,labelUnavailable:`Не удалось загрузить ресурсы`},F={caption:`Подсказки:`},I={copied:`Скопировано`,copyFailed:`Не удалось скопировать в буфер обмена.`},L={conversationCopied:`ID диалога скопирован в буфер обмена.`,conversationFailed:`Не удалось скопировать ID диалога.`,groupCopied:`ID группы скопирован в буфер обмена.`,groupFailed:`Не удалось скопировать ID группы.`},R={acknowledgment:`Я понимаю, что связанные ресурсы и воспоминания могут сохраниться`,cancel:`Отмена`,confirm:`Удалить`,message:`Удалить «{title}»? Диалог и его сообщения будут удалены навсегда. Связанные ресурсы и воспоминания могут сохраниться. Это действие нельзя отменить.`,title:`Удалить диалог`},z={label:`Это сообщение было удалено`},B={pdfDownloadFailed:`Не удалось скачать PDF`},V={unavailable:`Не удалось открыть беседу документа. Попробуйте ещё раз.`,updateRequired:`Обновите ассистента, чтобы начать связанную беседу.`,prepareFailed:`Не удалось подготовить беседу документа. Ваши изменения сохранены.`,feedbackPrompt:`Пожалуйста, рассмотрите и обработайте мои комментарии к «{title}».`,missing:`Беседа этого документа недоступна. Вы можете продолжить редактирование или начать новую связанную беседу.`,start:`Начать связанную беседу`,retry:`Повторить`,back:`Назад`},H={exportFailed:`Не удалось экспортировать PDF`},U={cancel:`Отмена`,close:`Закрыть`,defaultError:`Не удалось экспортировать данные инспектора.`,descriptionDone:`Скачивание должно было начаться само.`,descriptionError:`Что-то пошло не так при сборе экспорта.`,descriptionRunning:`Собираем тела запросов провайдера и нормализованный контекст. В длинных диалогах это может занять время.`,done:`Готово`,progressAriaLabel:`Прогресс экспорта`,retry:`Повторить`,statusDone:`Готово`,statusPackaging:`Упаковываем ZIP…`,statusProgress:`{completed} из {total} вызовов`,titleDone:`Экспорт готов`,titleError:`Экспорт не удался`,titleRunning:`Экспортируем данные инспектора`},W={failed:`Не удалось скачать файл`},G={archiveAll:`В архив все…`,copyGroupId:`Скопировать ID группы`,deleteGroup:`Удалить группу`,deleteGroupWithConversations:`Удалить группу…`,groupByChannel:`Группировать по каналу`,markAllRead:`Отметить все как прочитанные`,moveSectionDown:`Секцию вниз`,moveSectionUp:`Секцию вверх`,rename:`Переименовать`,ungroup:`Разгруппировать`},K={title:`Действия: {name}`},q={accessDenied:`Инспектор доступен, когда включён флаг Internal Thread Actions.`,allMessages:`Все сообщения`,back:`Назад`,backToConversationAria:`Назад к диалогу`,chooseCall:`Выбор вызова на панели, чтобы разобрать его контекст.`,conversationScopeSubtitle:`Показаны все вызовы LLM, записанные для этого диалога.`,detailLoadFailed:`Не удалось загрузить нормализованный контекст этого вызова.`,emptyBodyConversation:`Либо ни одно сообщение диалога не создал вызов LLM, либо журналы запросов обрезала политика хранения.`,emptyBodyMessage:`Либо это сообщение создал не вызов LLM, либо его журналы запросов обрезала политика хранения.`,emptyTitleConversation:`Для этого диалога нет записанных вызовов LLM.`,emptyTitleMessage:`Для этого сообщения нет записанных вызовов LLM.`,enableLogging:`Включить журнал`,enableLoggingFailed:`Не удалось включить журнал`,enableLoggingFailedWithMessage:`Не удалось включить журнал ({message})`,enabling:`Включаем…`,exportFailed:`Не удалось экспортировать данные инспектора`,exportZip:`Экспорт ZIP`,exportZipAria:`Экспортировать данные инспектора как ZIP`,exporting:`Экспорт…`,filterToMessage:`Фильтр по сообщению:`,llmCallCount:`{count, plural, one {1 вызов LLM} few {# вызова LLM} many {# вызовов LLM} other {# вызова LLM}}`,loadContextFailed:`Не удалось загрузить контекст LLM.`,loadFailedTitle:`Не удалось загрузить`,loading:`Загрузка…`,loggingDisabledBody:`Тела запросов и ответов не записываются, поэтому смотреть нечего. Включение журнала фиксирует следующие вызовы LLM.`,loggingDisabledTitle:`Журнал запросов LLM выключен`,loggingEnabledToast:`Журнал запросов LLM включён`,messageOptionDeepLink:`Сообщение {messageId}`,messageOptionNoText:`{index}. (без текста)`,messageOptionWithPreview:`{index}. {preview}`,retry:`Повторить`,scopedToOneMessage:`Ограничено одним сообщением · `,scopedToTurn:`Ограничено ходом {index} из {count} · `,title:`Инспектор контекста LLM`},J={android:`Голосовой режим уже активен в приложении для Android.`,ios:`Голосовой режим уже активен в приложении для iOS.`,macos:`Голосовой режим уже активен в приложении для Mac.`,unknown:`Голосовой режим уже активен в другом месте.`,web:`Голосовой режим уже активен в другой вкладке браузера.`,windows:`Голосовой режим уже активен в приложении для Windows.`},Y={connecting:`Подключение…`,ending:`Завершение…`,listening:`Слушаю…`,muted:`Без звука`,reconnecting:`Переподключение…`,speaking:`Говорит…`,thinking:`Думает…`},X={chipCode:`Код`,chipProvider:`Провайдер`,chipRequestId:`Request ID`,chipStatus:`Статус`,chipType:`Тип`,chipUpstreamCode:`Код выше по цепочке`,chipUpstreamParam:`Параметр выше по цепочке`,chipUpstreamType:`Тип выше по цепочке`,noResponse:`Провайдер отклонил этот вызов и не вернул ответ.`,title:`Вызов не удался`},Z={pictureInPictureUnavailable:`Картинка в картинке недоступна`},Q={unavailable:`Этот файл здесь недоступен`},$={addOlderPairButton:`+ Добавить более старую пару`,assistantReplyLabel:`[assistant]: ответ`,assistantReplyPlaceholder:`Ответ ассистента, который был до сообщения пользователя ниже.`,configTitle:`Конфиг {paneId}`,conversationalContextTitle:`Контекст диалога (общий для обеих панелей)`,customPromptPlaceholder:`Свой системный промпт маршрутизатора. Доступные подстановки:
|
|
2
2
|
'{ASSISTANT_NAME}, {USER_NAME}, {PAGE_INDEX}'
|
|
3
|
-
Пустое поле берёт встроенный шаблон. «Загрузить по умолчанию» подставляет в поле встроенный текст для правки.`,description:`Прогон маршрутизатора v4 с своими переопределениями уровня и пакета. Только чтение: строки в <code>memory_v2_injection_events</code> и <code>memory_v2_activation_logs</code> не пишутся, состояние активации не меняется. Пустое переопределение берёт живое значение конфига; <code>null</code> явно выключает уровень.`,diffLabel:`Разница`,diffValue:`{shared} общих · {unique} только у этой панели`,effectiveConfig:`Итоговый конфиг`,emaScore:`EMA {score}`,empty:`(пусто)`,emptySelectionHint:`Маршрутизатор вернул пустой выбор. Более точный запрос или ослабление переопределений.`,failedToRunSimulation:`Не удалось запустить симуляцию`,firstTurnAssistantPlaceholder:`Пустое поле: сценарий первого хода.`,inheritActive:`наследовать активный`,inheritActiveWithProfile:`наследовать активный ({profile})`,inheritPlaceholder:`наследовать`,invalidOverrideInput:`Некорректное переопределение`,justArrivedUserLabel:`Только что пришло [user]: сообщение`,lastUserPlaceholder:`например, что выпустить дальше`,legendAOnly:`только A`,legendBOnly:`только B`,legendInBoth:`в обоих`,llmProfilesOverride:`переопределение llm.profiles`,loadDefault:`Загрузить по умолчанию`,loading:`Загрузка…`,noPagesSelected:`Страницы не выбраны`,notAvailable:`Песочница маршрутизатора памяти недоступна.`,nowBlockLabel:`блок '<now>'`,nowDefaultPlaceholder:`Заполнено живым NOW.md. Прави, чтобы проверить другие состояния.`,nowLoadingPlaceholder:`Загрузка текущего NOW.md…`,nullValue:`null`,overrideMustBePositiveInteger:`{fieldName} должен быть положительным целым или 'null' (получено "{value}")`,overrideSuffix:` (переопределение)`,pageCount:`{count, plural, one {# страница} few {# страницы} many {# страниц} other {# страницы}}`,pairLabel:`Пара {index} из {total}`,pairMostRecentSuffix:` · самая свежая`,paneTitle:`Панель {paneId}`,promptModeBundled:`встроенный`,promptModeCustom:`свой`,rawApiExchange:`Сырой обмен API`,recentPairsLabel:`Недавние пары (ассистент, пользователь) · сначала старые`,reloadNowButton:`Перезагрузить живой NOW.md`,removeButton:`Удалить`,requestLabel:`Запрос (панель {paneId})`,reset:`Сбросить`,responseLabel:`Ответ (панель {paneId})`,routerFailure:`Сбой маршрутизатора: {reason}`,runBoth:`Запустить оба`,runPane:`Запустить {paneId}`,running:`Запуск…`,selectedLabel:`Выбрано`,selectedValue:`{count} (живой max_page_ids: {maxPageIds})`,summary:`Сводка`,summaryUserMessageLabel:`Сообщение пользователя`,systemPrompt:`Системный промпт`,systemPromptConfigLabel:`системный промпт`,tier1Label:`уровень 1`,tier2Label:`уровень 2`,tier3Label:`уровень 3 · b{batch}`,title:`Песочница маршрутизатора памяти`,totalCandidatePagesLabel:`Всего страниц-кандидатов`,userMessageLabel:`[user]: сообщение`,userMessagePlaceholder:`Сообщение пользователя.`},ee={afterMergeLabel:`После слияния`,breakdownCAssistantRerank:`c_assistant · rerank Δ_a`,breakdownCAssistantSim:`c_assistant · sim_a`,breakdownCNowSim:`c_now · sim_n`,breakdownCUserRerank:`c_user · rerank Δ_u`,breakdownCUserSim:`c_user · sim_u`,breakdownOwnActivation:`A_o (свой)`,breakdownPriorActivation:`prior · d`,breakdownRerankScaledRaw:`+{scaled} (сырой {raw})`,breakdownScaledRaw:`{scaled} (сырой {raw})`,breakdownSource:`источник`,breakdownSpreadDelta:`spread Δ`,breakdownStatus:`статус`,candidatePoolChosenChip:`выбрана`,candidatePoolNoneBody:`Пул кандидатов для этого хода не записан.`,candidatePoolPassthroughSubtitle:`{poolSize, plural, one {# кандидат передан напрямую} few {# кандидата передано напрямую} many {# кандидатов передано напрямую} other {# кандидата передано напрямую}} без оценки селектора · селектор отключён`,candidatePoolSelectorNotRunBody:`Селектор не запускался в этом ходе.`,candidatePoolSubtitle:`{poolSize, plural, one {# кандидат показан} few {# кандидата показано} many {# кандидатов показано} other {# кандидата показано}} селектору · {selectedCount, plural, one {выбрана # страница} few {выбраны # страницы} many {выбрано # страниц} other {выбрано # страницы}}`,candidatePoolTitle:`Пул кандидатов`,candidateScores:`sem {semantic} · rec {recency}`,carriedPill:`Перенесено: {count}`,conceptActivationsSubtitle:"Сортировка по итоговой активации. Записи навыков идут с префиксом `skills/`; разверни строку, чтобы увидеть разбивку активации.",conceptActivationsTitle:`Активации концептов ({count})`,configCAssistant:`c_assistant`,configCNow:`c_now`,configCUser:`c_user`,configDDecay:`d (затухание)`,configEpsilon:`epsilon`,configHops:`hops`,configKSharpening:`k (обострение)`,configSubtitle:`Веса активации и пороги отбора.`,configTitle:`Конфиг`,configTopK:`top_k`,copyAriaLabel:`Скопировать в буфер обмена`,copyAriaLabelCopied:`Скопировано`,copyButtonCopied:`Скопировано`,copyButtonCopy:`Копировать`,copyErrorMessage:`Не удалось скопировать в буфер обмена.`,copyTitle:`Копировать`,copyTitleCopied:`Скопировано!`,corePill:`Ядро: {count}`,degradationTitle:`Деградация`,fallbackSourcesLabel:`Резервные источники`,hybridSearchLabel:`Гибридный поиск`,inContextPill:`В контексте: {count}`,injectedMemoryContextTitle:`Вставленный контекст памяти`,injectedPill:`Вставлено: {count}`,injectedTokensLabel:`Вставленные токены`,latencyMs:`{ms} мс`,loading:`Загрузка…`,loggedMemorySelectionSubtitle:`Отрисовано из выбора v3, в этот ход не вставлено.`,loggedMemorySelectionTitle:`Записанный выбор памяти`,memoryDisabledDefaultReason:`Для этого хода вспоминание памяти было выключено.`,memoryDisabledTitle:`Память выключена`,missingValue:`-`,modelLabel:`Модель`,no:`Нет`,noDataBody:`Сведения о вспоминании памяти для этого сообщения недоступны.`,noDataTitle:`Нет данных памяти`,noEntriesRanked:`Нет ранжированных записей.`,noPagesSelected:`Страницы не выбраны.`,notInjectedPill:`Не вставлено: {count}`,pageContentLabel:`содержимое страницы`,pageNotFound:`Страница не найдена на диске. Slug может ссылаться на устаревшую запись Qdrant.`,pillMemoryV2:`Memory V2`,pillMemoryV3:`Memory V3`,pillRecallV1:`Recall (v1)`,providerLabel:`Провайдер`,queryContextSubtitle:`Текст, который встроили как поисковый вектор для семантического поиска.`,queryContextTitle:`Контекст запроса`,reasonLabel:`Причина`,retrievalFunnelSubtitle:`Как воспоминания отфильтровали от семантического поиска до вставки.`,retrievalFunnelTitle:`Воронка поиска`,searchDetailsTitle:`Подробности поиска`,selectedLabel:`Выбрано`,selectedPagesSubtitle:`Страницы, которые выбрал v3, с меткой полосы, откуда они пришли, и совпавшего раздела (если полоса поиска его нашла).`,selectedPagesTitle:`Выбранные страницы ({count})`,selectedPill:`Выбрано: {count}`,semanticHitsLabel:`Семантические совпадения`,semanticUnavailableLabel:`Семантика недоступна`,sparseDenseOnly:`Только плотные`,sparseUsed:`Использованы`,sparseVectorsLabel:`Разреженные векторы`,statusActive:`Активно`,statusDegraded:`Деградировано`,statusLabel:`Статус`,statusSubtitle:`Провайдер, модель и задержка этого вспоминания.`,statusTitle:`Статус`,tier1Label:`Уровень 1`,tier2Label:`Уровень 2`,topCandidatesSubtitle:`{count, plural, one {# кандидат, ранжированный по итоговому баллу.} few {# кандидата, ранжированных по итоговому баллу.} many {# кандидатов, ранжированных по итоговому баллу.} other {# кандидата, ранжированных по итоговому баллу.}}`,topCandidatesTitle:`Лучшие кандидаты`,totalLatencyLabel:`Общая задержка`,turnLevelRecallBody:`Вспоминание памяти запускается один раз за ход. Эти данные относятся ко всем вызовам LLM этого сообщения.`,turnLevelRecallTitle:`Вспоминание на уровне хода`,turnPill:`Ход {turn}`,unavailable:`Недоступно`,unknown:`Неизвестно`,v2StatusInContext:`В контексте`,v2StatusInjected:`Вставлено`,v2StatusNotInjected:`Не вставлено`,v2StatusPageMissing:`Страницы нет`,v2TurnBody:`Проход памяти с распространением активации: ранжирует концепты и навыки для этого хода.`,v2TurnTitle:`Память - ход {turn} ({mode})`,v3LiveInjectionBody:`v3 в этом ходе живой источник памяти: блок ниже вставлен в контекст (v2 подавлен).`,v3LiveInjectionTitle:`Memory V3 - живая вставка`,v3LoggedSelectionBody:`v3 не живой источник памяти этого ассистента: эти выборы записали, но в этот ход не вставили; память хода пришла из v2.`,v3LoggedSelectionTitle:`Memory V3 - записанный выбор (не вставлено)`,v3SourceCarried:`перенесено`,v3SourceCore:`ядро`,v3SourceL1L2:`L1+L2`,v3SourceNeedle:`needle`,yes:`Да`},te={bookmark:`Закладка`,copied:`Скопировано`,copy:`Копировать`,copyFailed:`Не удалось скопировать сообщение.`,forkFromHere:`Ответвить отсюда`,inspect:`Просмотр`,loading:`Чтение…`,openInSlack:`Открыть в Slack`,playFailed:`Не удалось прочитать это сообщение.`,readAloud:`Прочитать вслух`,removeBookmark:`Убрать закладку`,retry:`Повторить`,stop:`Остановить`,summarizeUpToHere:`Суммировать досюда`},ne={bookmark:`Закладка`,copied:`Скопировано`,copy:`Копировать`,copyFailed:`Не удалось скопировать сообщение.`,forkFromHere:`Ответвить отсюда`,inspect:`Просмотр`,openInSlack:`Открыть в Slack`,readAloud:`Прочитать вслух`,removeBookmark:`Убрать закладку`,stop:`Остановить`,summarizeUpToHere:`Суммировать досюда`,title:`Действия с сообщением`},re={callOfTotal:`Вызов {number} из {total}`,llmCallCount:`{count, plural, one {1 вызов LLM} few {# вызова LLM} many {# вызовов LLM} other {# вызова LLM}}`,selectCallAria:`Выбор вызова LLM для разбора`,sheetTitle:`Выбор вызова`},ie={cacheTokensLabel:`Токены кэша`,conversationSubtitle:`Накопительные итоги по всем тарифицированным вызовам LLM на сейчас.`,conversationTitle:`Диалог`,createdLabel:`Создано`,durationLabel:`Длительность`,estimatedCostLabel:`Оценочная стоимость`,failedStatus:`Ошибка`,firstTokenKindLabel:`Тип первого токена`,firstTokenLatencySubtitle:`Куда ушло время до первого токена этого хода, по замерам ассистента.`,firstTokenLatencyTitle:`Задержка первого токена`,inputTokensLabel:`Входные токены`,latencyMs:`{ms} мс`,loopExitReasonLabel:`Причина выхода из цикла`,modelLabel:`Модель`,normalizedMetadataSubtitle:`Провайдер, модель, метки времени и счётчики использования.`,normalizedMetadataTitle:`Нормализованные метаданные`,normalizedSummaryUnavailableSubtitle:`У этого вызова всё ещё есть сырые тела запроса и ответа.`,normalizedSummaryUnavailableTitle:`Нормализованная сводка недоступна`,otherLabel:`Другое`,outputTokensLabel:`Выходные токены`,providerLabel:`Провайдер`,requestMessagesLabel:`Сообщения запроса`,statusLabel:`Статус`,stopReasonLabel:`Причина остановки`,toolCallsLabel:`Вызовы инструментов`,toolsAvailableLabel:`Доступные инструменты`,totalCostSoFarLabel:`Стоимость всего на сейчас`,totalToFirstTokenLabel:`Всего до первого токена`,usageSubtitle:`Счётчики токенов и вызовов, нормализованные маршрутом ассистента.`,usageTitle:`Использование`},ae={loadingPdf:`Загрузка PDF`},oe={pageCapNotice:`{count, plural, one {Показана первая страница} few {Показаны первые # страницы} many {Показаны первые # страниц} other {Показаны первые # страницы}}`},se={colors:{green:`Зелёный`,orange:`Оранжевый`,pink:`Розовый`,purple:`Фиолетовый`,teal:`Бирюзовый`,yellow:`Жёлтый`},noColor:`Без цвета`},ce={addCreditsAriaLabel:`Добавить кредиты`,exhausted:`Добавление кредитов для продолжения.`,extraCredits:`Используются дополнительные кредиты`,pctUsed:`использовано {pct}%`,settingsAriaLabel:`Настройки использования и оплаты`,title:`Использование`},le={cannotPreview:`Не удаётся показать этот файл`},ue={markdown:`Показаны первые 512 КБ`,text:`Показаны первые 2 МБ`},de={noPreviewForType:`Нет предпросмотра для этого типа файла`},fe={availableTools:`Доступные инструменты`,bannerNoSections:`У этого вызова ещё нет нормализованных секций промпта.`,bannerSectionsCount:`{count, plural, one {# нормализованная секция запроса в порядке, который вернул маршрут ассистента.} few {# нормализованные секции запроса в порядке, который вернул маршрут ассистента.} many {# нормализованных секций запроса в порядке, который вернул маршрут ассистента.} other {# нормализованные секции запроса в порядке, который вернул маршрут ассистента.}}`,collapseAll:`Свернуть всё`,copyAriaLabel:`Скопировать {title}`,emptyBody:`У этого вызова нет нормализованных секций промпта. Вкладка Raw показывает полное тело запроса.`,emptyTitle:`Нет нормализованных секций промпта`,expandAll:`Развернуть всё`,formatJavaScript:`JavaScript`,formatJson:`JSON`,formatMarkdown:`Markdown`,formatTypeScript:`TypeScript`,noContentAvailable:`Содержимое недоступно.`,promptSectionsTitle:`Секции промпта`},pe={copyRequestPayloadAriaLabel:`Скопировать тело запроса`,copyResponsePayloadAriaLabel:`Скопировать тело ответа`,downloadFailedToast:`Не удалось скачать тело.`,downloadRequestPayloadAriaLabel:`Скачать тело запроса`,downloadResponsePayloadAriaLabel:`Скачать тело ответа`,loadErrorTitle:`Не удалось загрузить сырые тела`,loading:`Загрузка сырых тел…`,payloadRequestFailed:`Запрос тела не удался. Повторите попытку.`,request:`Запрос`,requestPayload:`Тело запроса`,response:`Ответ`,responsePayload:`Тело ответа`,retry:`Повторить`},me={revealFailed:`Не удалось показать {name}.`},he={argumentsPreview:`Предпросмотр аргументов`,copySectionAria:`Скопировать содержимое секции`,kindAssistantText:`Текст ассистента`,kindFunctionResponse:`Ответ функции`,kindReasoning:`Рассуждение`,kindToolCall:`Вызов инструмента`,kindToolResult:`Результат инструмента`,modeResultOnly:`Ответ только с результатом`,modeTextOnly:`Ответ только текстом`,modeToolCalling:`Ответ с вызовом инструмента`,noArgumentsPreview:`Для этого вызова инструмента нет предпросмотра структурированных аргументов.`,noAssistantText:`Для этой секции не записали текст ассистента.`,noSectionsFallback:`У этого ответа нет отрисованных секций. Сырые тела остаются на вкладке Raw, а нормализованные метаданные ответа покажутся, если они есть.`,rawTabHint:`Полное тело провайдера: вкладка Raw для JSON запроса и ответа.`,responseMetadata:`Метаданные ответа`,sectionTitle:`Секция {number}`,sectionUnavailable:`Отрисовка секции недоступна`,stopReasonChip:`Причина остановки: {reason}`,toolChip:`Инструмент: {name}`},ge={message:`Не удалось загрузить диалоги.`,retry:`Попробовать снова`},_e={actionsAria:`Действия навыка`,moreTooltip:`Ещё`},ve={callLink:`Вызов {number}`,emptyBody:`На этой вкладке перечислены все вызовы инструмента <code>skill_load</code> в диалоге. В записанных вызовах LLM их не нашли.`,emptyTitle:`В этом диалоге навыки не загружали`,loadCount:`{count, plural, one {1 загрузка} few {# загрузки} many {# загрузок} other {# загрузки}}`,summaryStats:`{uniqueCount, plural, one {# уникальный навык} few {# уникальных навыка} many {# уникальных навыков} other {# уникальных навыка}} · {totalLoads, plural, one {# вызов загрузки} few {# вызова загрузки} many {# вызовов загрузки} other {# вызова загрузки}}`,summaryTitle:`Навыки, загруженные в этом диалоге`},ye={defaultValue:`по умолчанию: {value}`,inputSchema:`Схема ввода`,intro:`{count, plural, one {# инструмент отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} few {# инструмента отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} many {# инструментов отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} other {# инструмента отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.}}`,noInputSchema:`Нет схемы ввода: этот инструмент не принимает структурированный ввод.`,required:`обязательно`,settings:`Настройки`},be={fileUnavailable:`Файл недоступен для скачивания`,fileUnavailableHostTimeout:`Файл недоступен для скачивания (возможно, истекло время на одобрение файла на хосте)`},xe={authFailed:`Не удалось аутентифицировать пользователя.`},Se={assistantBusy:`Ассистент занят. Повтор, когда закончит отвечать.`,retryFailed:`Не удалось повторить ответ`,summarizeFailed:`Не удалось кратко пересказать диалог`},Ce={commandFailed:`Не удалось выполнить эту команду. Повторите попытку.`,doctorUnavailable:`Doctor недоступен у этого ассистента.`},we={nativeSttNoTranscript:`Нативная диктовка {clientName} не вернула расшифровку. Проверьте нативное распознавание речи в системных настройках и повторите попытку.`},Te={ariaLabel:`Голосовой сеанс`,closeCamera:`Закрыть камеру`,endSessionAria:`Завершить голосовой сеанс`,endSessionTooltip:`Завершить сеанс`,flashAuto:`Автоматическая вспышка`,flashAutoBadge:`А`,flashOff:`Вспышка выключена`,flashOn:`Вспышка включена`,flipCamera:`Сменить камеру`,lightOff:`Фонарик выключен`,lightOn:`Фонарик включён`,minimizeAria:`Свернуть голосовую комнату`,minimizeTooltip:`Свернуть (сеанс продолжится)`,muteAssistant:`Отключить звук ассистента`,muteMicrophone:`Отключить микрофон`,mutedState:`Без звука. {state}`,showCamera:`Показать камеру`,stopLive:`Остановить прямой эфир`,takePhoto:`Сделать фото`,unmuteAssistant:`Включить звук ассистента`,unmuteMicrophone:`Включить микрофон`},Ee={noResponse:`Решил не отвечать`,reactionAddedSelf:`Отреагировал(а) {emoji}`,reactionRemovedSelf:`Убрал(а) реакцию {emoji}`,reactionAdded:`{name} отреагировал(а) {emoji}`,reactionRemoved:`{name} убрал(а) свою реакцию {emoji}`,reactionSomeone:`Кто-то`},De={changes:`Изменения`,command:`Команда`,denied:`Этот вызов инструмента не был одобрен, поэтому он не выполнился.`,emptyOutput:`Инструмент не вернул никаких данных.`,input:`Входные данные`,requestedChanges:`Запрошенные изменения`},Oe={collapse:`Скрыть показатели фильтра кадров`,expand:`Показать показатели фильтра кадров`},ke={commandFinished:`Фоновая команда завершена`,incomingEvent:`Входящее событие`,memoryReview:`Просмотр памяти`,ranOnItsOwn:`Запустился сам`,resumed:`Возобновлено после прерывания`,scheduledRun:`Запуск по расписанию`,watchReview:`Разбор сессии наблюдения`,workflowFinished:`Рабочий процесс завершён`},Ae={close:`Закрыть`,details:`Подробности`,result:`Результат`,runStatus:`Статус запуска`,title:`Разговор возобновлён`,workflow:`Рабочий процесс`},je={doneDiscarded:`Не сохранено`,doneNotRight:`Отмечено как неверное`,doneSaved:`Навык сохранён`,recommended:`Рекомендуем`},Me={restore:`Восстановить доступ`,restoring:`Восстановление...`,restored:`Восстановлено. Модели под управлением Vellum снова работают.`,failedNoAssistant:`Выберите ассистента и повторите попытку.`,failedCannotActHere:`Это приложение не может восстановить учётные данные этого ассистента. Откройте ассистента на компьютере, где он запущен.`,failedReplacementRejected:`Vellum отклонил новые учётные данные. Войдите на платформу Vellum и повторите попытку.`,failedUnconfirmed:`Новые учётные данные сохранены, но Vellum не смог их подтвердить. Возможно, они заработают через некоторое время.`,failedGeneric:`Не удалось восстановить доступ. Повторите попытку через минуту.`},Ne={tooltip:`Говорите вслух в голосовом режиме`},Pe={viewDetails:`Подробности`},Fe={expand:`Развернуть`,collapse:`Свернуть`},Ie={documentChat:e,acpConnectAffordance:t,acpRunChatView:n,activityStepsPanel:r,addToChatSheet:i,allowOptionsMenu:a,appAssetActions:o,assistantDesktop:s,assistantSideMenu:c,assistantSleepStage:l,assistantSwitcher:u,attachmentPreviewModal:d,attachmentTile:f,cacheBreakpointMapCard:p,cacheDiffCard:m,cacheHealthCard:h,callRail:g,cameraDeepLink:_,cameraError:v,cameraShutterHint:y,cameraStatusPill:b,cameraViewOptions:x,channelReferenceChip:S,channelThreadControl:C,channelTranscriptPanel:w,chatComposer:T,chatInfoPanel:E,compactionTab:D,composerSettingsMenu:O,contactActions:k,contactPromptCard:A,contactRecordCard:j,conversationActions:M,conversationActionsSheet:N,conversationAssets:P,conversationStarterDock:F,copyButton:I,copyIdToClipboard:L,deleteConversationConfirmDialog:R,deletedMessageRow:z,documentAssetActions:B,documentConversation:V,documentViewerPage:H,exportProgressModal:U,fileDownload:W,groupActions:G,groupActionsSheet:K,inspectPage:q,liveVoiceBusy:J,liveVoiceStatus:Y,llmCallErrorCard:X,localFileEmbed:Z,localFileLink:Q,memoryRouterPlaygroundPage:$,memoryTab:ee,messageHoverActions:te,messageLongPressActions:ne,mobileCallSelector:re,overviewTab:ie,pdfPageSkeleton:ae,pdfPreview:oe,pinnedAppColorSwatches:se,preferencesUsagePanel:ce,previewError:le,previewTruncationNotice:ue,previewUnsupported:de,promptTab:fe,rawTab:pe,redactedCredentialChip:me,responseTab:he,sidebarConversationError:ge,skillDetailPanel:_e,skillsTab:ve,toolDefinitionsContent:ye,transcriptMessageBody:be,useConversationLoader:xe,useConversationSecondaryActions:Se,useSendMessage:Ce,voiceErrors:we,voiceRoom:Te,transcript:Ee,toolDetailPanel:De,frameGateHud:Oe,wakeCard:ke,wakeDetailPanel:Ae,watchRetroSurface:je,restoreManagedCredentialButton:Me,liveVoiceButton:Ne,cardSurface:Pe,sidebarExpandRow:Fe};export{t as acpConnectAffordance,n as acpRunChatView,r as activityStepsPanel,i as addToChatSheet,a as allowOptionsMenu,o as appAssetActions,s as assistantDesktop,c as assistantSideMenu,l as assistantSleepStage,u as assistantSwitcher,d as attachmentPreviewModal,f as attachmentTile,p as cacheBreakpointMapCard,m as cacheDiffCard,h as cacheHealthCard,g as callRail,_ as cameraDeepLink,v as cameraError,y as cameraShutterHint,b as cameraStatusPill,x as cameraViewOptions,Pe as cardSurface,S as channelReferenceChip,C as channelThreadControl,w as channelTranscriptPanel,T as chatComposer,E as chatInfoPanel,D as compactionTab,O as composerSettingsMenu,k as contactActions,A as contactPromptCard,j as contactRecordCard,M as conversationActions,N as conversationActionsSheet,P as conversationAssets,F as conversationStarterDock,I as copyButton,L as copyIdToClipboard,Ie as default,R as deleteConversationConfirmDialog,z as deletedMessageRow,B as documentAssetActions,e as documentChat,V as documentConversation,H as documentViewerPage,U as exportProgressModal,W as fileDownload,Oe as frameGateHud,G as groupActions,K as groupActionsSheet,q as inspectPage,J as liveVoiceBusy,Ne as liveVoiceButton,Y as liveVoiceStatus,X as llmCallErrorCard,Z as localFileEmbed,Q as localFileLink,$ as memoryRouterPlaygroundPage,ee as memoryTab,te as messageHoverActions,ne as messageLongPressActions,re as mobileCallSelector,ie as overviewTab,ae as pdfPageSkeleton,oe as pdfPreview,se as pinnedAppColorSwatches,ce as preferencesUsagePanel,le as previewError,ue as previewTruncationNotice,de as previewUnsupported,fe as promptTab,pe as rawTab,me as redactedCredentialChip,he as responseTab,Me as restoreManagedCredentialButton,ge as sidebarConversationError,Fe as sidebarExpandRow,_e as skillDetailPanel,ve as skillsTab,ye as toolDefinitionsContent,De as toolDetailPanel,Ee as transcript,be as transcriptMessageBody,xe as useConversationLoader,Se as useConversationSecondaryActions,Ce as useSendMessage,we as voiceErrors,Te as voiceRoom,ke as wakeCard,Ae as wakeDetailPanel,je as watchRetroSurface};
|
|
3
|
+
Пустое поле берёт встроенный шаблон. «Загрузить по умолчанию» подставляет в поле встроенный текст для правки.`,description:`Прогон маршрутизатора v4 с своими переопределениями уровня и пакета. Только чтение: строки в <code>memory_v2_injection_events</code> и <code>memory_v2_activation_logs</code> не пишутся, состояние активации не меняется. Пустое переопределение берёт живое значение конфига; <code>null</code> явно выключает уровень.`,diffLabel:`Разница`,diffValue:`{shared} общих · {unique} только у этой панели`,effectiveConfig:`Итоговый конфиг`,emaScore:`EMA {score}`,empty:`(пусто)`,emptySelectionHint:`Маршрутизатор вернул пустой выбор. Более точный запрос или ослабление переопределений.`,failedToRunSimulation:`Не удалось запустить симуляцию`,firstTurnAssistantPlaceholder:`Пустое поле: сценарий первого хода.`,inheritActive:`наследовать активный`,inheritActiveWithProfile:`наследовать активный ({profile})`,inheritPlaceholder:`наследовать`,invalidOverrideInput:`Некорректное переопределение`,justArrivedUserLabel:`Только что пришло [user]: сообщение`,lastUserPlaceholder:`например, что выпустить дальше`,legendAOnly:`только A`,legendBOnly:`только B`,legendInBoth:`в обоих`,llmProfilesOverride:`переопределение llm.profiles`,loadDefault:`Загрузить по умолчанию`,loading:`Загрузка…`,noPagesSelected:`Страницы не выбраны`,notAvailable:`Песочница маршрутизатора памяти недоступна.`,nowBlockLabel:`блок '<now>'`,nowDefaultPlaceholder:`Заполнено живым NOW.md. Прави, чтобы проверить другие состояния.`,nowLoadingPlaceholder:`Загрузка текущего NOW.md…`,nullValue:`null`,overrideMustBePositiveInteger:`{fieldName} должен быть положительным целым или 'null' (получено "{value}")`,overrideSuffix:` (переопределение)`,pageCount:`{count, plural, one {# страница} few {# страницы} many {# страниц} other {# страницы}}`,pairLabel:`Пара {index} из {total}`,pairMostRecentSuffix:` · самая свежая`,paneTitle:`Панель {paneId}`,promptModeBundled:`встроенный`,promptModeCustom:`свой`,rawApiExchange:`Сырой обмен API`,recentPairsLabel:`Недавние пары (ассистент, пользователь) · сначала старые`,reloadNowButton:`Перезагрузить живой NOW.md`,removeButton:`Удалить`,requestLabel:`Запрос (панель {paneId})`,reset:`Сбросить`,responseLabel:`Ответ (панель {paneId})`,routerFailure:`Сбой маршрутизатора: {reason}`,runBoth:`Запустить оба`,runPane:`Запустить {paneId}`,running:`Запуск…`,selectedLabel:`Выбрано`,selectedValue:`{count} (живой max_page_ids: {maxPageIds})`,summary:`Сводка`,summaryUserMessageLabel:`Сообщение пользователя`,systemPrompt:`Системный промпт`,systemPromptConfigLabel:`системный промпт`,tier1Label:`уровень 1`,tier2Label:`уровень 2`,tier3Label:`уровень 3 · b{batch}`,title:`Песочница маршрутизатора памяти`,totalCandidatePagesLabel:`Всего страниц-кандидатов`,userMessageLabel:`[user]: сообщение`,userMessagePlaceholder:`Сообщение пользователя.`},ee={afterMergeLabel:`После слияния`,breakdownCAssistantRerank:`c_assistant · rerank Δ_a`,breakdownCAssistantSim:`c_assistant · sim_a`,breakdownCNowSim:`c_now · sim_n`,breakdownCUserRerank:`c_user · rerank Δ_u`,breakdownCUserSim:`c_user · sim_u`,breakdownOwnActivation:`A_o (свой)`,breakdownPriorActivation:`prior · d`,breakdownRerankScaledRaw:`+{scaled} (сырой {raw})`,breakdownScaledRaw:`{scaled} (сырой {raw})`,breakdownSource:`источник`,breakdownSpreadDelta:`spread Δ`,breakdownStatus:`статус`,candidatePoolChosenChip:`выбрана`,candidatePoolNoneBody:`Пул кандидатов для этого хода не записан.`,candidatePoolPassthroughSubtitle:`{poolSize, plural, one {# кандидат передан напрямую} few {# кандидата передано напрямую} many {# кандидатов передано напрямую} other {# кандидата передано напрямую}} без оценки селектора · селектор отключён`,candidatePoolSelectorNotRunBody:`Селектор не запускался в этом ходе.`,candidatePoolSubtitle:`{poolSize, plural, one {# кандидат показан} few {# кандидата показано} many {# кандидатов показано} other {# кандидата показано}} селектору · {selectedCount, plural, one {выбрана # страница} few {выбраны # страницы} many {выбрано # страниц} other {выбрано # страницы}}`,candidatePoolTitle:`Пул кандидатов`,candidateScores:`sem {semantic} · rec {recency}`,carriedPill:`Перенесено: {count}`,conceptActivationsSubtitle:"Сортировка по итоговой активации. Записи навыков идут с префиксом `skills/`; разверни строку, чтобы увидеть разбивку активации.",conceptActivationsTitle:`Активации концептов ({count})`,configCAssistant:`c_assistant`,configCNow:`c_now`,configCUser:`c_user`,configDDecay:`d (затухание)`,configEpsilon:`epsilon`,configHops:`hops`,configKSharpening:`k (обострение)`,configSubtitle:`Веса активации и пороги отбора.`,configTitle:`Конфиг`,configTopK:`top_k`,copyAriaLabel:`Скопировать в буфер обмена`,copyAriaLabelCopied:`Скопировано`,copyButtonCopied:`Скопировано`,copyButtonCopy:`Копировать`,copyErrorMessage:`Не удалось скопировать в буфер обмена.`,copyTitle:`Копировать`,copyTitleCopied:`Скопировано!`,corePill:`Ядро: {count}`,degradationTitle:`Деградация`,fallbackSourcesLabel:`Резервные источники`,hybridSearchLabel:`Гибридный поиск`,inContextPill:`В контексте: {count}`,injectedMemoryContextTitle:`Вставленный контекст памяти`,injectedPill:`Вставлено: {count}`,injectedTokensLabel:`Вставленные токены`,latencyMs:`{ms} мс`,loading:`Загрузка…`,loggedMemorySelectionSubtitle:`Отрисовано из выбора v3, в этот ход не вставлено.`,loggedMemorySelectionTitle:`Записанный выбор памяти`,memoryDisabledDefaultReason:`Для этого хода вспоминание памяти было выключено.`,memoryDisabledTitle:`Память выключена`,missingValue:`-`,modelLabel:`Модель`,no:`Нет`,noDataBody:`Сведения о вспоминании памяти для этого сообщения недоступны.`,noDataTitle:`Нет данных памяти`,noEntriesRanked:`Нет ранжированных записей.`,noPagesSelected:`Страницы не выбраны.`,notInjectedPill:`Не вставлено: {count}`,pageContentLabel:`содержимое страницы`,pageNotFound:`Страница не найдена на диске. Slug может ссылаться на устаревшую запись Qdrant.`,pillMemoryV2:`Memory V2`,pillMemoryV3:`Memory V3`,pillRecallV1:`Recall (v1)`,providerLabel:`Провайдер`,queryContextSubtitle:`Текст, который встроили как поисковый вектор для семантического поиска.`,queryContextTitle:`Контекст запроса`,reasonLabel:`Причина`,retrievalFunnelSubtitle:`Как воспоминания отфильтровали от семантического поиска до вставки.`,retrievalFunnelTitle:`Воронка поиска`,searchDetailsTitle:`Подробности поиска`,selectedLabel:`Выбрано`,selectedPagesSubtitle:`Страницы, которые выбрал v3, с меткой полосы, откуда они пришли, и совпавшего раздела (если полоса поиска его нашла).`,selectedPagesTitle:`Выбранные страницы ({count})`,selectedPill:`Выбрано: {count}`,semanticHitsLabel:`Семантические совпадения`,semanticUnavailableLabel:`Семантика недоступна`,sparseDenseOnly:`Только плотные`,sparseUsed:`Использованы`,sparseVectorsLabel:`Разреженные векторы`,statusActive:`Активно`,statusDegraded:`Деградировано`,statusLabel:`Статус`,statusSubtitle:`Провайдер, модель и задержка этого вспоминания.`,statusTitle:`Статус`,tier1Label:`Уровень 1`,tier2Label:`Уровень 2`,topCandidatesSubtitle:`{count, plural, one {# кандидат, ранжированный по итоговому баллу.} few {# кандидата, ранжированных по итоговому баллу.} many {# кандидатов, ранжированных по итоговому баллу.} other {# кандидата, ранжированных по итоговому баллу.}}`,topCandidatesTitle:`Лучшие кандидаты`,totalLatencyLabel:`Общая задержка`,turnLevelRecallBody:`Вспоминание памяти запускается один раз за ход. Эти данные относятся ко всем вызовам LLM этого сообщения.`,turnLevelRecallTitle:`Вспоминание на уровне хода`,turnPill:`Ход {turn}`,unavailable:`Недоступно`,unknown:`Неизвестно`,v2StatusInContext:`В контексте`,v2StatusInjected:`Вставлено`,v2StatusNotInjected:`Не вставлено`,v2StatusPageMissing:`Страницы нет`,v2TurnBody:`Проход памяти с распространением активации: ранжирует концепты и навыки для этого хода.`,v2TurnTitle:`Память - ход {turn} ({mode})`,v3LiveInjectionBody:`v3 в этом ходе живой источник памяти: блок ниже вставлен в контекст (v2 подавлен).`,v3LiveInjectionTitle:`Memory V3 - живая вставка`,v3LoggedSelectionBody:`v3 не живой источник памяти этого ассистента: эти выборы записали, но в этот ход не вставили; память хода пришла из v2.`,v3LoggedSelectionTitle:`Memory V3 - записанный выбор (не вставлено)`,v3SourceCarried:`перенесено`,v3SourceCore:`ядро`,v3SourceL1L2:`L1+L2`,v3SourceNeedle:`needle`,yes:`Да`},te={bookmark:`Закладка`,copied:`Скопировано`,copy:`Копировать`,copyFailed:`Не удалось скопировать сообщение.`,forkFromHere:`Ответвить отсюда`,inspect:`Просмотр`,loading:`Чтение…`,openInSlack:`Открыть в Slack`,playFailed:`Не удалось прочитать это сообщение.`,readAloud:`Прочитать вслух`,removeBookmark:`Убрать закладку`,retry:`Повторить`,stop:`Остановить`,summarizeUpToHere:`Суммировать досюда`},ne={bookmark:`Закладка`,copied:`Скопировано`,copy:`Копировать`,copyFailed:`Не удалось скопировать сообщение.`,forkFromHere:`Ответвить отсюда`,inspect:`Просмотр`,openInSlack:`Открыть в Slack`,readAloud:`Прочитать вслух`,removeBookmark:`Убрать закладку`,stop:`Остановить`,summarizeUpToHere:`Суммировать досюда`,title:`Действия с сообщением`},re={callOfTotal:`Вызов {number} из {total}`,llmCallCount:`{count, plural, one {1 вызов LLM} few {# вызова LLM} many {# вызовов LLM} other {# вызова LLM}}`,selectCallAria:`Выбор вызова LLM для разбора`,sheetTitle:`Выбор вызова`},ie={cacheTokensLabel:`Токены кэша`,conversationSubtitle:`Накопительные итоги по всем тарифицированным вызовам LLM на сейчас.`,conversationTitle:`Диалог`,createdLabel:`Создано`,durationLabel:`Длительность`,estimatedCostLabel:`Оценочная стоимость`,failedStatus:`Ошибка`,firstTokenKindLabel:`Тип первого токена`,firstTokenLatencySubtitle:`Куда ушло время до первого токена этого хода, по замерам ассистента.`,firstTokenLatencyTitle:`Задержка первого токена`,inputTokensLabel:`Входные токены`,latencyMs:`{ms} мс`,loopExitReasonLabel:`Причина выхода из цикла`,modelLabel:`Модель`,normalizedMetadataSubtitle:`Провайдер, модель, метки времени и счётчики использования.`,normalizedMetadataTitle:`Нормализованные метаданные`,normalizedSummaryUnavailableSubtitle:`У этого вызова всё ещё есть сырые тела запроса и ответа.`,normalizedSummaryUnavailableTitle:`Нормализованная сводка недоступна`,otherLabel:`Другое`,outputTokensLabel:`Выходные токены`,providerLabel:`Провайдер`,requestMessagesLabel:`Сообщения запроса`,statusLabel:`Статус`,stopReasonLabel:`Причина остановки`,toolCallsLabel:`Вызовы инструментов`,toolsAvailableLabel:`Доступные инструменты`,totalCostSoFarLabel:`Стоимость всего на сейчас`,totalToFirstTokenLabel:`Всего до первого токена`,usageSubtitle:`Счётчики токенов и вызовов, нормализованные маршрутом ассистента.`,usageTitle:`Использование`},ae={loadingPdf:`Загрузка PDF`},oe={pageCapNotice:`{count, plural, one {Показана первая страница} few {Показаны первые # страницы} many {Показаны первые # страниц} other {Показаны первые # страницы}}`},se={colors:{green:`Зелёный`,orange:`Оранжевый`,pink:`Розовый`,purple:`Фиолетовый`,teal:`Бирюзовый`,yellow:`Жёлтый`},noColor:`Без цвета`},ce={addCreditsAriaLabel:`Добавить кредиты`,exhausted:`Добавление кредитов для продолжения.`,extraCredits:`Используются дополнительные кредиты`,pctUsed:`использовано {pct}%`,settingsAriaLabel:`Настройки использования и оплаты`,title:`Использование`},le={cannotPreview:`Не удаётся показать этот файл`},ue={markdown:`Показаны первые 512 КБ`,text:`Показаны первые 2 МБ`},de={noPreviewForType:`Нет предпросмотра для этого типа файла`},fe={availableTools:`Доступные инструменты`,bannerNoSections:`У этого вызова ещё нет нормализованных секций промпта.`,bannerSectionsCount:`{count, plural, one {# нормализованная секция запроса в порядке, который вернул маршрут ассистента.} few {# нормализованные секции запроса в порядке, который вернул маршрут ассистента.} many {# нормализованных секций запроса в порядке, который вернул маршрут ассистента.} other {# нормализованные секции запроса в порядке, который вернул маршрут ассистента.}}`,collapseAll:`Свернуть всё`,copyAriaLabel:`Скопировать {title}`,emptyBody:`У этого вызова нет нормализованных секций промпта. Вкладка Raw показывает полное тело запроса.`,emptyTitle:`Нет нормализованных секций промпта`,expandAll:`Развернуть всё`,formatJavaScript:`JavaScript`,formatJson:`JSON`,formatMarkdown:`Markdown`,formatTypeScript:`TypeScript`,noContentAvailable:`Содержимое недоступно.`,promptSectionsTitle:`Секции промпта`},pe={copyRequestPayloadAriaLabel:`Скопировать тело запроса`,copyResponsePayloadAriaLabel:`Скопировать тело ответа`,downloadFailedToast:`Не удалось скачать тело.`,downloadRequestPayloadAriaLabel:`Скачать тело запроса`,downloadResponsePayloadAriaLabel:`Скачать тело ответа`,loadErrorTitle:`Не удалось загрузить сырые тела`,loading:`Загрузка сырых тел…`,payloadRequestFailed:`Запрос тела не удался. Повторите попытку.`,request:`Запрос`,requestPayload:`Тело запроса`,response:`Ответ`,responsePayload:`Тело ответа`,retry:`Повторить`},me={revealFailed:`Не удалось показать {name}.`},he={argumentsPreview:`Предпросмотр аргументов`,copySectionAria:`Скопировать содержимое секции`,kindAssistantText:`Текст ассистента`,kindFunctionResponse:`Ответ функции`,kindReasoning:`Рассуждение`,kindToolCall:`Вызов инструмента`,kindToolResult:`Результат инструмента`,modeResultOnly:`Ответ только с результатом`,modeTextOnly:`Ответ только текстом`,modeToolCalling:`Ответ с вызовом инструмента`,noArgumentsPreview:`Для этого вызова инструмента нет предпросмотра структурированных аргументов.`,noAssistantText:`Для этой секции не записали текст ассистента.`,noSectionsFallback:`У этого ответа нет отрисованных секций. Сырые тела остаются на вкладке Raw, а нормализованные метаданные ответа покажутся, если они есть.`,rawTabHint:`Полное тело провайдера: вкладка Raw для JSON запроса и ответа.`,responseMetadata:`Метаданные ответа`,sectionTitle:`Секция {number}`,sectionUnavailable:`Отрисовка секции недоступна`,stopReasonChip:`Причина остановки: {reason}`,toolChip:`Инструмент: {name}`},ge={message:`Не удалось загрузить диалоги.`,retry:`Попробовать снова`},_e={actionsAria:`Действия навыка`,moreTooltip:`Ещё`},ve={callLink:`Вызов {number}`,emptyBody:`На этой вкладке перечислены все вызовы инструмента <code>skill_load</code> в диалоге. В записанных вызовах LLM их не нашли.`,emptyTitle:`В этом диалоге навыки не загружали`,loadCount:`{count, plural, one {1 загрузка} few {# загрузки} many {# загрузок} other {# загрузки}}`,summaryStats:`{uniqueCount, plural, one {# уникальный навык} few {# уникальных навыка} many {# уникальных навыков} other {# уникальных навыка}} · {totalLoads, plural, one {# вызов загрузки} few {# вызова загрузки} many {# вызовов загрузки} other {# вызова загрузки}}`,summaryTitle:`Навыки, загруженные в этом диалоге`},ye={defaultValue:`по умолчанию: {value}`,inputSchema:`Схема ввода`,intro:`{count, plural, one {# инструмент отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} few {# инструмента отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} many {# инструментов отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.} other {# инструмента отправили с этим запросом. Разверни инструмент, чтобы увидеть определение и схему ввода.}}`,noInputSchema:`Нет схемы ввода: этот инструмент не принимает структурированный ввод.`,required:`обязательно`,settings:`Настройки`},be={fileUnavailable:`Файл недоступен для скачивания`,fileUnavailableHostTimeout:`Файл недоступен для скачивания (возможно, истекло время на одобрение файла на хосте)`},xe={authFailed:`Не удалось аутентифицировать пользователя.`},Se={assistantBusy:`Ассистент занят. Повтор, когда закончит отвечать.`,retryFailed:`Не удалось повторить ответ`,summarizeFailed:`Не удалось кратко пересказать диалог`},Ce={commandFailed:`Не удалось выполнить эту команду. Повторите попытку.`,doctorUnavailable:`Doctor недоступен у этого ассистента.`},we={nativeSttNoTranscript:`Нативная диктовка {clientName} не вернула расшифровку. Проверьте нативное распознавание речи в системных настройках и повторите попытку.`},Te={ariaLabel:`Голосовой сеанс`,closeCamera:`Закрыть камеру`,endSessionAria:`Завершить голосовой сеанс`,endSessionTooltip:`Завершить сеанс`,flashAuto:`Автоматическая вспышка`,flashAutoBadge:`А`,flashOff:`Вспышка выключена`,flashOn:`Вспышка включена`,flipCamera:`Сменить камеру`,lightOff:`Фонарик выключен`,lightOn:`Фонарик включён`,minimizeAria:`Свернуть голосовую комнату`,minimizeTooltip:`Свернуть (сеанс продолжится)`,muteAssistant:`Отключить звук ассистента`,muteMicrophone:`Отключить микрофон`,mutedState:`Без звука. {state}`,showCamera:`Показать камеру`,stopLive:`Остановить прямой эфир`,takePhoto:`Сделать фото`,unmuteAssistant:`Включить звук ассистента`,unmuteMicrophone:`Включить микрофон`},Ee={noResponse:`Решил не отвечать`,reactionAddedSelf:`Отреагировал(а) {emoji}`,reactionRemovedSelf:`Убрал(а) реакцию {emoji}`,reactionAdded:`{name} отреагировал(а) {emoji}`,reactionRemoved:`{name} убрал(а) свою реакцию {emoji}`,reactionSomeone:`Кто-то`},De={changes:`Изменения`,command:`Команда`,denied:`Этот вызов инструмента не был одобрен, поэтому он не выполнился.`,emptyOutput:`Инструмент не вернул никаких данных.`,input:`Входные данные`,requestedChanges:`Запрошенные изменения`},Oe={collapse:`Скрыть показатели фильтра кадров`,expand:`Показать показатели фильтра кадров`},ke={commandFinished:`Фоновая команда завершена`,incomingEvent:`Входящее событие`,memoryReview:`Просмотр памяти`,ranOnItsOwn:`Запустился сам`,resumed:`Возобновлено после прерывания`,scheduledRun:`Запуск по расписанию`,watchReview:`Разбор сессии наблюдения`,workflowFinished:`Рабочий процесс завершён`},Ae={close:`Закрыть`,details:`Подробности`,result:`Результат`,runStatus:`Статус запуска`,title:`Разговор возобновлён`,workflow:`Рабочий процесс`},je={doneDiscarded:`Не сохранено`,doneNotRight:`Отмечено как неверное`,doneSaved:`Навык сохранён`,recommended:`Рекомендуем`},Me={restore:`Восстановить доступ`,restoring:`Восстановление...`,restored:`Восстановлено. Модели под управлением Vellum снова работают.`,failedNoAssistant:`Выберите ассистента и повторите попытку.`,failedCannotActHere:`Это приложение не может восстановить учётные данные этого ассистента. Откройте ассистента на компьютере, где он запущен.`,failedReplacementRejected:`Vellum отклонил новые учётные данные. Войдите на платформу Vellum и повторите попытку.`,failedUnconfirmed:`Новые учётные данные сохранены, но Vellum не смог их подтвердить. Возможно, они заработают через некоторое время.`,failedGeneric:`Не удалось восстановить доступ. Повторите попытку через минуту.`},Ne={tooltip:`Говорите вслух в голосовом режиме`},Pe={viewDetails:`Подробности`},Fe={expand:`Развернуть`,collapse:`Свернуть`},Ie={count:`{count, plural, one {# кадр камеры} few {# кадра камеры} many {# кадров камеры} other {# кадра камеры}}`,timeRange:`Сохранено с {first} по {last}`,savedTime:`Сохранено: {time}`,pendingAria:`Кадр камеры, изображение ещё загружается. {time}`,timeUnavailable:`Время недоступно`},Le={documentChat:e,acpConnectAffordance:t,acpRunChatView:n,activityStepsPanel:r,addToChatSheet:i,allowOptionsMenu:a,appAssetActions:o,assistantDesktop:s,assistantSideMenu:c,assistantSleepStage:l,assistantSwitcher:u,attachmentPreviewModal:d,attachmentTile:f,cacheBreakpointMapCard:p,cacheDiffCard:m,cacheHealthCard:h,callRail:g,cameraDeepLink:_,cameraError:v,cameraShutterHint:y,cameraStatusPill:b,cameraViewOptions:x,channelReferenceChip:S,channelThreadControl:C,channelTranscriptPanel:w,chatComposer:T,chatInfoPanel:E,compactionTab:D,composerSettingsMenu:O,contactActions:k,contactPromptCard:A,contactRecordCard:j,conversationActions:M,conversationActionsSheet:N,conversationAssets:P,conversationStarterDock:F,copyButton:I,copyIdToClipboard:L,deleteConversationConfirmDialog:R,deletedMessageRow:z,documentAssetActions:B,documentConversation:V,documentViewerPage:H,exportProgressModal:U,fileDownload:W,groupActions:G,groupActionsSheet:K,inspectPage:q,liveVoiceBusy:J,liveVoiceStatus:Y,llmCallErrorCard:X,localFileEmbed:Z,localFileLink:Q,memoryRouterPlaygroundPage:$,memoryTab:ee,messageHoverActions:te,messageLongPressActions:ne,mobileCallSelector:re,overviewTab:ie,pdfPageSkeleton:ae,pdfPreview:oe,pinnedAppColorSwatches:se,preferencesUsagePanel:ce,previewError:le,previewTruncationNotice:ue,previewUnsupported:de,promptTab:fe,rawTab:pe,redactedCredentialChip:me,responseTab:he,sidebarConversationError:ge,skillDetailPanel:_e,skillsTab:ve,toolDefinitionsContent:ye,transcriptMessageBody:be,useConversationLoader:xe,useConversationSecondaryActions:Se,useSendMessage:Ce,voiceErrors:we,voiceRoom:Te,transcript:Ee,toolDetailPanel:De,frameGateHud:Oe,wakeCard:ke,wakeDetailPanel:Ae,watchRetroSurface:je,restoreManagedCredentialButton:Me,liveVoiceButton:Ne,cardSurface:Pe,sidebarExpandRow:Fe,cameraFrameGrid:Ie};export{t as acpConnectAffordance,n as acpRunChatView,r as activityStepsPanel,i as addToChatSheet,a as allowOptionsMenu,o as appAssetActions,s as assistantDesktop,c as assistantSideMenu,l as assistantSleepStage,u as assistantSwitcher,d as attachmentPreviewModal,f as attachmentTile,p as cacheBreakpointMapCard,m as cacheDiffCard,h as cacheHealthCard,g as callRail,_ as cameraDeepLink,v as cameraError,Ie as cameraFrameGrid,y as cameraShutterHint,b as cameraStatusPill,x as cameraViewOptions,Pe as cardSurface,S as channelReferenceChip,C as channelThreadControl,w as channelTranscriptPanel,T as chatComposer,E as chatInfoPanel,D as compactionTab,O as composerSettingsMenu,k as contactActions,A as contactPromptCard,j as contactRecordCard,M as conversationActions,N as conversationActionsSheet,P as conversationAssets,F as conversationStarterDock,I as copyButton,L as copyIdToClipboard,Le as default,R as deleteConversationConfirmDialog,z as deletedMessageRow,B as documentAssetActions,e as documentChat,V as documentConversation,H as documentViewerPage,U as exportProgressModal,W as fileDownload,Oe as frameGateHud,G as groupActions,K as groupActionsSheet,q as inspectPage,J as liveVoiceBusy,Ne as liveVoiceButton,Y as liveVoiceStatus,X as llmCallErrorCard,Z as localFileEmbed,Q as localFileLink,$ as memoryRouterPlaygroundPage,ee as memoryTab,te as messageHoverActions,ne as messageLongPressActions,re as mobileCallSelector,ie as overviewTab,ae as pdfPageSkeleton,oe as pdfPreview,se as pinnedAppColorSwatches,ce as preferencesUsagePanel,le as previewError,ue as previewTruncationNotice,de as previewUnsupported,fe as promptTab,pe as rawTab,me as redactedCredentialChip,he as responseTab,Me as restoreManagedCredentialButton,ge as sidebarConversationError,Fe as sidebarExpandRow,_e as skillDetailPanel,ve as skillsTab,ye as toolDefinitionsContent,De as toolDetailPanel,Ee as transcript,be as transcriptMessageBody,xe as useConversationLoader,Se as useConversationSecondaryActions,Ce as useSendMessage,we as voiceErrors,Te as voiceRoom,ke as wakeCard,Ae as wakeDetailPanel,je as watchRetroSurface};
|