@vellumai/web 0.12.1 → 0.12.2-staging.3
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/THIRD-PARTY-LICENSES.md +486 -0
- package/dist/assets/a2a-invite-C-d__v0P.js +1 -0
- package/dist/assets/about-page-BMTVVfA2.js +1 -0
- package/dist/assets/account-page-Bu04CQvW.js +1 -0
- package/dist/assets/account-shell-0TviHaBf.js +1 -0
- package/dist/assets/acp-run-detail-panel-w4reCx6D.js +3 -0
- package/dist/assets/activation-B2g-Oe-r.js +1 -0
- package/dist/assets/activation-dc_gRGWQ.js +1 -0
- package/dist/assets/activation-list-route-CSuVtIeq.js +1 -0
- package/dist/assets/activation-tasks-C5NV7wu7.js +1 -0
- package/dist/assets/activation-tasks-CvYLTc0s.js +1 -0
- package/dist/assets/activity-redirect-page-Cgmmb8Rc.js +1 -0
- package/dist/assets/activity-steps-panel-C26DS_qd.js +1 -0
- package/dist/assets/add-credits-modal-Byhxttdb.js +1 -0
- package/dist/assets/add-credits-modal-IIKnKS9l.js +1 -0
- package/dist/assets/ai-page-_iWq21vC.js +1 -0
- package/dist/assets/android-billing-handoff-BVx_2Qs0.js +1 -0
- package/dist/assets/api-key-screen-xui6n8NR.js +1 -0
- package/dist/assets/app-BNL3dwNm.css +2 -0
- package/dist/assets/app-DFXcEvsi.js +392 -0
- package/dist/assets/app-info-4gR8gnBC.js +1 -0
- package/dist/assets/archive-redirect-page-D1zUz-Kn.js +1 -0
- package/dist/assets/assistant-status-panel-B-woG0mJ.js +1 -0
- package/dist/assets/auth-store-BFk7tSVA.js +1 -0
- package/dist/assets/auth-welcome-screen-BsYIoTpq.js +1 -0
- package/dist/assets/avatar-bundled-components-B-TO2nC_.js +1 -0
- package/dist/assets/avatar-random-DTCQMspt.js +2 -0
- package/dist/assets/await-org-header-settled-euao9G4w.js +1 -0
- package/dist/assets/background-task-detail-panel-Bm7wkZ5w.js +1 -0
- package/dist/assets/billing-page-BkUfkbYS.js +3 -0
- package/dist/assets/billing-redirect-page-A8_L7A4l.js +1 -0
- package/dist/assets/bookmarks-page-Db3QFcDm.js +1 -0
- package/dist/assets/bundle-confirm-page-Cnb49ExR.js +1 -0
- package/dist/assets/channel-transcript-panel-DFDoSX5e.js +1 -0
- package/dist/assets/{channels-BIVOatvA.js → channels-BnJWh26Z.js} +1 -1
- package/dist/assets/{channels-C9mCB0CJ.js → channels-LgPH3TQp.js} +1 -1
- package/dist/assets/{channels-CDirkQc7.js → channels-QZtdATsC.js} +1 -1
- package/dist/assets/{channels-BCLfuOUD.js → channels-itxMVi8q.js} +1 -1
- package/dist/assets/channels-page-route-9NljMyj4.js +1 -0
- package/dist/assets/chat-8C19KXOV.js +3 -0
- package/dist/assets/chat-B8bCjQZ1.js +3 -0
- package/dist/assets/chat-BMyAegHU.js +3 -0
- package/dist/assets/chat-info-panel-BENFQ0tW.js +1 -0
- package/dist/assets/chat-k0ASlCf6.js +3 -0
- package/dist/assets/checkout-continuation-C38t4ayV.js +1 -0
- package/dist/assets/checkout-page-B6HAgaEv.js +1 -0
- package/dist/assets/checkout-return-target-CrM-Nhda.js +1 -0
- package/dist/assets/command-palette-BIYpDozl.js +1 -0
- package/dist/assets/command-palette-Dj-GW7dm.js +1 -0
- package/dist/assets/command-palette-window-page-BMC7dzK0.js +1 -0
- package/dist/assets/common-CaTw6iFT.js +1 -0
- package/dist/assets/common-DvY3wB2D.js +1 -0
- package/dist/assets/common-HddDknEB.js +1 -0
- package/dist/assets/common-l4KEHlw1.js +1 -0
- package/dist/assets/community-page-BxDoLG0_.js +1 -0
- package/dist/assets/companion-accent-pu5Xu8Z6.js +1 -0
- package/dist/assets/companion-dock-zones-page-BEfMdIVO.js +1 -0
- package/dist/assets/companion-layout-Ye64fIzN.js +1 -0
- package/dist/assets/companion-popover-Bs6A6445.js +1 -0
- package/dist/assets/companion-popover-page-7jpYeiIN.js +1 -0
- package/dist/assets/companion-surface-page-BrMY3X-F.js +1 -0
- package/dist/assets/companion-watch-frame-page-Bk0N7E-g.js +1 -0
- package/dist/assets/connect-page-Bf8bYBAk.js +1 -0
- package/dist/assets/consent-controls-N6cnmytV.js +1 -0
- package/dist/assets/contacts-gateway-C_BunUUf.js +1 -0
- package/dist/assets/contacts-page-route-DIxMGBde.js +1 -0
- package/dist/assets/credential-entry-page-2ek7NaCu.js +1 -0
- package/dist/assets/credentials-page-D3PvFMgc.js +1 -0
- package/dist/assets/{csv-preview-DDWd92MO.js → csv-preview-BB-EmIxC.js} +2 -2
- package/dist/assets/danger-zone-redirect-page-BVmYzrKj.js +1 -0
- package/dist/assets/debug-page-CJOt0BAt.js +4 -0
- package/dist/assets/deploy-dialogs-BSCor8jx.js +1 -0
- package/dist/assets/deploy-dialogs-DY0pTVu1.js +1 -0
- package/dist/assets/desktop-preview-content-BIp4Vpgt.js +2 -0
- package/dist/assets/desktop-status-CHoj8auj.js +1 -0
- package/dist/assets/desktop-viewer-86gYrlm2.js +5 -0
- package/dist/assets/detail-card-CGafPdBQ.js +1 -0
- package/dist/assets/detail-panel-stop-button-BqhRaB6y.js +1 -0
- package/dist/assets/detail-primitives-DIBzx3XJ.js +1 -0
- package/dist/assets/developer-page-p4Ylxemb.js +1 -0
- package/dist/assets/devices-redirect-page-BcyaUgzH.js +1 -0
- package/dist/assets/dictation-overlay-page-C9yEcxKh.js +1 -0
- package/dist/assets/{diff-rows-6HtO6KNr.js → diff-rows-Bf-wMfUA.js} +1 -1
- package/dist/assets/document-load-B9O1A5E9.js +1 -0
- package/dist/assets/document-load-CZeb0od7.js +1 -0
- package/dist/assets/document-viewer-page-L_O7lYHa.js +1 -0
- package/dist/assets/{ellipsis-vertical-BMOhP0Zs.js → ellipsis-vertical-Dbz00Lo-.js} +1 -1
- package/dist/assets/emails-page-fgZebuJ7.js +1 -0
- package/dist/assets/environment-store-7mW8BRRm.js +1 -0
- package/dist/assets/{esm-krw2tVOJ.js → esm-BRap8C09.js} +1 -1
- package/dist/assets/esm-BarLUlPV.js +2 -0
- package/dist/assets/{esm-hPUUgGy5.js → esm-BfMa-HX2.js} +2 -2
- package/dist/assets/esm-C19uvbek.js +2 -0
- package/dist/assets/{esm-DUr8Sd7e.js → esm-C8i-Nf3-.js} +1 -1
- package/dist/assets/esm-CI79f_VT.js +2 -0
- package/dist/assets/esm-CtAM062C.js +1 -0
- package/dist/assets/esm-DGqMBGum.js +1 -0
- package/dist/assets/esm-DYrMpsGJ.js +2 -0
- package/dist/assets/esm-Y7e1KRCK.js +2 -0
- package/dist/assets/{file-diff-view-EiQSECOw.js → file-diff-view-B9dRfPbB.js} +1 -1
- package/dist/assets/file-editor-DtbuATs6.js +1 -0
- package/dist/assets/general-page-iMRa5Ucp.js +2 -0
- package/dist/assets/hatching-screen-C9GXGQ2P.js +1 -0
- package/dist/assets/hosting-screen-D8bCW4Uz.js +1 -0
- package/dist/assets/icons-QG1KAFmx.js +1 -0
- package/dist/assets/identity-page-route-D0fpi7db.js +7 -0
- package/dist/assets/inspect-page-C2T5Wpgw.js +9 -0
- package/dist/assets/integrations-page-3cwkXYyq.js +1 -0
- package/dist/assets/{intelligence-xiqKApFj.js → intelligence-8J0ZD9Ph.js} +1 -1
- package/dist/assets/{intelligence-s33k1wI2.js → intelligence-C2fySq4l.js} +1 -1
- package/dist/assets/{intelligence-Db527yzW.js → intelligence-DFMbHITq.js} +1 -1
- package/dist/assets/{intelligence-Bla65nm5.js → intelligence-dNqws_vC.js} +1 -1
- package/dist/assets/intelligence-layout-jyahyAWu.js +1 -0
- package/dist/assets/intelligence-layout-slots-store-CI7IhmZv.js +1 -0
- package/dist/assets/keyboard-shortcuts-redirect-page-Bcl-FjyB.js +1 -0
- package/dist/assets/{latest-assistant-text-mcgHfCbd.js → latest-assistant-text-HB3-JTrf.js} +1 -1
- package/dist/assets/library-detail-page-DTptYQAF.js +1 -0
- package/dist/assets/library-page-D0OfVER_.js +1 -0
- package/dist/assets/local-mode-Dve-u3Zf.js +1 -0
- package/dist/assets/login-page-BA3GjFvS.js +1 -0
- package/dist/assets/logout-page-Dp--IQJm.js +1 -0
- package/dist/assets/logs-layout-C4SjgNAl.js +1 -0
- package/dist/assets/markdown-preview-CBu26q1U.js +1 -0
- package/dist/assets/media-preview-CrddXQMc.js +1 -0
- package/dist/assets/memory-page-route-BzLfpam9.js +2 -0
- package/dist/assets/memory-router-playground-page-CP0Eurny.js +1 -0
- package/dist/assets/message-files-panel-CDzpeEx4.js +1 -0
- package/dist/assets/metric-card-Dkx47Ug0.js +1 -0
- package/dist/assets/native-attachment-pickers-DVsB4Q0l.js +1 -0
- package/dist/assets/native-file-BKR4KkJt.js +1 -0
- package/dist/assets/notifications-page-1r0ehmHL.js +1 -0
- package/dist/assets/{oauth-complete-page-_act6krk.js → oauth-complete-page-D8yKCOVn.js} +2 -2
- package/dist/assets/{oauth-popup-complete-page-D9d5IH9z.js → oauth-popup-complete-page-DzPqlG80.js} +2 -2
- package/dist/assets/onboarding-4AB8OdqK.js +1 -0
- package/dist/assets/onboarding-Bv6Vw7rT.js +1 -0
- package/dist/assets/onboarding-C9uVVsD1.js +1 -0
- package/dist/assets/onboarding-CFxxcqra.js +1 -0
- package/dist/assets/paired-platform-identity-C4IGgtxq.js +1 -0
- package/dist/assets/pairing-page-DhmG1Tkg.js +1 -0
- package/dist/assets/password-reset-page-7yc-z_Pf.js +1 -0
- package/dist/assets/{pdf-B2KVp4ZG.js → pdf-DZqed7HH.js} +1 -1
- package/dist/assets/pdf-file-preview-ElX646lL.js +1 -0
- package/dist/assets/{peeking-eyes-DNBQeifP.js → peeking-eyes-DJkKQl-G.js} +1 -1
- package/dist/assets/personality-page-BqW5uuDF.js +1 -0
- package/dist/assets/personality-page-DXW5MuRz.js +1 -0
- package/dist/assets/personality-sliders-BuInNb35.js +1 -0
- package/dist/assets/plans-page-B87o5Bm-.js +1 -0
- package/dist/assets/platform-loopback-page--ynU4rVO.js +1 -0
- package/dist/assets/plugin-detail-page-lbmmlIpx.js +1 -0
- package/dist/assets/plugins-page-BM44sOv4.js +1 -0
- package/dist/assets/plugins-surface-2i_lZYet.js +1 -0
- package/dist/assets/preview-error-B6mdXJ98.js +1 -0
- package/dist/assets/privacy-page-BqqU59zB.js +1 -0
- package/dist/assets/privacy-screen-CW2gbeYL.js +1 -0
- package/dist/assets/provider-callback-page-PVHvQXqC.js +1 -0
- package/dist/assets/provider-key-fvCko3IH.js +1 -0
- package/dist/assets/provider-signup-page-D6kN0d9F.js +1 -0
- package/dist/assets/{provisioning-targets-BZJdjS_6.js → provisioning-targets-B5flnyHy.js} +1 -1
- package/dist/assets/quick-input-page-DMs0592w.js +1 -0
- package/dist/assets/{react-DPM_L_aA.js → react-B9IgSVeK.js} +1 -1
- package/dist/assets/referral-modal-C5ePy9XT.js +1 -0
- package/dist/assets/referral-modal-VQ2vsPTh.js +1 -0
- package/dist/assets/{rehype-katex-qwWAif3X.js → rehype-katex-Bp74Wkmo.js} +1 -1
- package/dist/assets/research-mock-page-D3X9Fw83.js +1 -0
- package/dist/assets/research-onboarding-route-Bk2Zl9y9.js +50 -0
- package/dist/assets/review-terms-screen-CU9h0Gz5.js +1 -0
- package/dist/assets/routes-NC2Xyogy.js +1 -0
- package/dist/assets/schedules-Cslj2E_n.js +1 -0
- package/dist/assets/schedules-page-7QBCwWLg.js +1 -0
- package/dist/assets/security-redirect-page-D6C5fIZt.js +1 -0
- package/dist/assets/select-assistant-screen-BO9WTRBj.js +1 -0
- package/dist/assets/self-hosted-servers-sqp6RgAQ.js +1 -0
- package/dist/assets/service-form-controls-C5nQsTzh.js +1 -0
- package/dist/assets/setting-row-Dqextrfj.js +1 -0
- package/dist/assets/settings-C-QPO0as.js +3 -0
- package/dist/assets/settings-D9OIWncF.js +3 -0
- package/dist/assets/settings-DGQfZ51D.js +3 -0
- package/dist/assets/settings-divider-D-IFmB_l.js +1 -0
- package/dist/assets/settings-gxBTr-j9.js +3 -0
- package/dist/assets/settings-layout-Bh7MaZ4H.js +1 -0
- package/dist/assets/share-feedback-modal-D44y3KhU.js +1 -0
- package/dist/assets/share-feedback-modal-DsaGXNnY.js +2 -0
- package/dist/assets/sidebar-tree-BgVhUiEU.js +1 -0
- package/dist/assets/signup-page-CzQJSqzn.js +1 -0
- package/dist/assets/signup-shell-C1cGo11n.js +1 -0
- package/dist/assets/skill-detail-page-BN8Rwzuu.js +2 -0
- package/dist/assets/skill-detail-panel-DVrh3t_h.js +1 -0
- package/dist/assets/skill-icon-DLqnaRMf.js +1 -0
- package/dist/assets/skill-removal-dialog-CkduZswH.js +1 -0
- package/dist/assets/skills-page-DS76T-t4.js +1 -0
- package/dist/assets/sounds-page-Bqrv7A7h.js +1 -0
- package/dist/assets/start-screen-Cz9LflKA.js +1 -0
- package/dist/assets/{status-badge-pill-DsYKTPMw.js → status-badge-pill-Dw3L9IOE.js} +1 -1
- package/dist/assets/stt-language-picker-modal-Ckz32Oh1.js +1 -0
- package/dist/assets/subagent-detail-panel-C2AI9zu4.js +1 -0
- package/dist/assets/superpowers-page-CMOvPhlc.js +1 -0
- package/dist/assets/system-events-page-D0fUUNzD.js +1 -0
- package/dist/assets/system-events-redirect-page-Dr4-w7Y1.js +1 -0
- package/dist/assets/text-preview-DozGQuv6.js +1 -0
- package/dist/assets/theme-stage-page-CcBBPfjV.js +1 -0
- package/dist/assets/{tiptap-document-editor-7zjNquKo.js → tiptap-document-editor-Db4_RKhj.js} +30 -30
- package/dist/assets/tool-detail-panel-CNNnmtM6.js +15 -0
- package/dist/assets/tool-detail-panel-PjXqpW5b.js +1 -0
- package/dist/assets/trait-cycle-row-C1uqLkCi.js +1 -0
- package/dist/assets/upgrade-cancel-page-CKZWRtvT.js +1 -0
- package/dist/assets/upgrade-success-page-CkXzT8Ty.js +1 -0
- package/dist/assets/usage-redirect-page-CRrl2BDL.js +1 -0
- package/dist/assets/use-app-delete-CFfw_T0x.js +1 -0
- package/dist/assets/use-assistant-identity-details-CGJTkSlu.js +1 -0
- package/dist/assets/use-checkout-dismiss-refresh-DB9VdW8-.js +1 -0
- package/dist/assets/use-edge-swipe-back-DYPOVsUT.js +1 -0
- package/dist/assets/use-hotkey-recorder-Cj-vFxW2.js +1 -0
- package/dist/assets/use-invite-link-dialog-B4f3yyUN.js +1 -0
- package/dist/assets/use-platform-assistant-id-D8KGJAMf.js +1 -0
- package/dist/assets/use-return-to-short-circuit-Db6fiXSQ.js +1 -0
- package/dist/assets/use-side-list-room-CSNBqjJu.js +1 -0
- package/dist/assets/use-skill-actions-BNpUjvgz.js +1 -0
- package/dist/assets/use-skill-detail-files-C5BA-Phb.js +1 -0
- package/dist/assets/use-supports-credentials-settings-DIKVOLU1.js +1 -0
- package/dist/assets/use-transcript-message-by-id-ZVUnXf5k.js +1 -0
- package/dist/assets/{use-truncated-blob-text-B50a7Mkr.js → use-truncated-blob-text-BArL-keL.js} +1 -1
- package/dist/assets/vendor-DYOeoIwg.js +127 -0
- package/dist/assets/voice-page-DDLtbhsC.js +1 -0
- package/dist/assets/wake-detail-panel-C5K2zAvp.js +1 -0
- package/dist/assets/weather-forecast-display-CWGsPOa9.js +1 -0
- package/dist/assets/{web-ykYrL9yl.js → web-7w3Y8MVH.js} +1 -1
- package/dist/assets/{web-BkmK5STh.js → web-B_ZkQa17.js} +1 -1
- package/dist/assets/{web-BpX3Y-_s.js → web-Bb3bM_rE.js} +1 -1
- package/dist/assets/{web-Bulr9QQn.js → web-CQyztjRg.js} +1 -1
- package/dist/assets/{web-y4PoIMXz.js → web-CkN0uo01.js} +1 -1
- package/dist/assets/{web-CeDxhWFH.js → web-DZd0e2iR.js} +1 -1
- package/dist/assets/{web-9D8isJOk.js → web-DpFmNxr1.js} +1 -1
- package/dist/assets/{web-C_Ui7gb5.js → web-ZV0_2EZ9.js} +1 -1
- package/dist/assets/{web-CaauzE8c.js → web-ocPGQzbv.js} +1 -1
- package/dist/assets/welcome-screen-DuUuJIJ2.js +1 -0
- package/dist/assets/workflow-detail-panel-D6ip8R9Y.js +1 -0
- package/dist/assets/workspace-CrT6IjXz.js +1 -0
- package/dist/assets/workspace-D-j7Q1o1.js +1 -0
- package/dist/assets/workspace-DOerIby3.js +1 -0
- package/dist/assets/workspace-Db-P5zkL.js +1 -0
- package/dist/assets/workspace-page-D_4QLZh3.js +1 -0
- package/dist/images/integrations/ATTRIBUTION.md +6 -6
- package/dist/images/integrations/quickbooks.svg +1 -0
- package/dist/images/integrations/shopify.svg +1 -0
- package/dist/index.html +6 -6
- package/package.json +1 -1
- package/dist/assets/a2a-invite-DOlvPnsj.js +0 -1
- package/dist/assets/about-page-CAHLo_IM.js +0 -1
- package/dist/assets/account-page-CR9m-bbG.js +0 -1
- package/dist/assets/account-shell-CfKMHHXQ.js +0 -1
- package/dist/assets/acp-run-detail-panel-BBEBzZSw.js +0 -3
- package/dist/assets/activation-list-route-WkR2XN13.js +0 -1
- package/dist/assets/activation-tasks-BJZEpFIy.js +0 -1
- package/dist/assets/activation-tasks-Bk658x3i.js +0 -1
- package/dist/assets/activation-tasks-K8Swziqu.js +0 -1
- package/dist/assets/activation-tasks-wz108byj.js +0 -1
- package/dist/assets/activity-redirect-page-D5jSj1d4.js +0 -1
- package/dist/assets/activity-steps-panel-C91mUEgr.js +0 -1
- package/dist/assets/add-credits-modal-BtOBq6__.js +0 -1
- package/dist/assets/ai-page-BjjHb_KN.js +0 -1
- package/dist/assets/android-billing-handoff-C_65hbFm.js +0 -1
- package/dist/assets/api-key-screen-DAWDc1tS.js +0 -1
- package/dist/assets/app-info--nQmKvGC.js +0 -1
- package/dist/assets/archive-redirect-page-BlzqQ5_P.js +0 -1
- package/dist/assets/assistant-status-panel-CXq4xqak.js +0 -1
- package/dist/assets/auth-welcome-screen-YynWXFYd.js +0 -1
- package/dist/assets/avatar-random-T8euI8sG.js +0 -2
- package/dist/assets/await-org-header-settled-DzQQ7QxL.js +0 -1
- package/dist/assets/background-task-detail-panel-DGc2RnBm.js +0 -1
- package/dist/assets/billing-page-eSvbiGuR.js +0 -3
- package/dist/assets/billing-redirect-page-BAtaOafH.js +0 -1
- package/dist/assets/bookmarks-page-UeYoXk3X.js +0 -1
- package/dist/assets/bundle-confirm-page-CrNXSEwP.js +0 -1
- package/dist/assets/channel-transcript-panel-BdOlGjnN.js +0 -1
- package/dist/assets/channels-page-route-CTDjdZZV.js +0 -1
- package/dist/assets/chat-BOrB9oHu.js +0 -3
- package/dist/assets/chat-C1MeXG-2.js +0 -3
- package/dist/assets/chat-CWzsWu23.js +0 -3
- package/dist/assets/chat-eAA7-NU8.js +0 -3
- package/dist/assets/chat-info-panel-CIcb19Yz.js +0 -1
- package/dist/assets/checkout-continuation-DCEWSKgL.js +0 -1
- package/dist/assets/checkout-page-CjZEKzRZ.js +0 -1
- package/dist/assets/checkout-return-target-RlOhwSvu.js +0 -1
- package/dist/assets/command-palette-D2wqOJue.js +0 -1
- package/dist/assets/command-palette-window-page-Bg2nuHq5.js +0 -1
- package/dist/assets/common-BztqCOmk.js +0 -1
- package/dist/assets/common-DTjszpuj.js +0 -1
- package/dist/assets/common-DmcKuTke.js +0 -1
- package/dist/assets/common-Hpbr_vpQ.js +0 -1
- package/dist/assets/community-page-BLhzGTuy.js +0 -1
- package/dist/assets/companion-accent-gsn9VuVB.js +0 -1
- package/dist/assets/companion-layout-BES0UfBy.js +0 -1
- package/dist/assets/companion-surface-page-kl9ej_zQ.js +0 -1
- package/dist/assets/companion-watch-frame-page-CX0lYK6Y.js +0 -1
- package/dist/assets/connect-page-8LGXfYwr.js +0 -1
- package/dist/assets/consent-controls-BRXg7A0b.js +0 -1
- package/dist/assets/contacts-gateway-Cm83W9Sw.js +0 -1
- package/dist/assets/contacts-page-route-YdSPP6ct.js +0 -1
- package/dist/assets/credential-entry-page-B0E7m9Ka.js +0 -1
- package/dist/assets/credentials-page-KL8TseTX.js +0 -1
- package/dist/assets/danger-zone-redirect-page-CeG41nRv.js +0 -1
- package/dist/assets/debug-page-Cq9veQE7.js +0 -4
- package/dist/assets/deploy-dialogs-DiKerPg3.js +0 -1
- package/dist/assets/detail-card-B0OGBJ1-.js +0 -1
- package/dist/assets/detail-panel-stop-button-B6n2CDuJ.js +0 -1
- package/dist/assets/detail-primitives-MMaUWytS.js +0 -1
- package/dist/assets/developer-page--7O3Jeje.js +0 -1
- package/dist/assets/devices-redirect-page-De4zPGBG.js +0 -1
- package/dist/assets/dictation-overlay-page-BebL8Sje.js +0 -1
- package/dist/assets/document-viewer-page-R_dKhaWy.js +0 -1
- package/dist/assets/emails-page-CqVlJ1LT.js +0 -1
- package/dist/assets/environment-store-yY-PFyNj.js +0 -1
- package/dist/assets/esm-CEQ5-BPY.js +0 -2
- package/dist/assets/esm-CZUymCSO.js +0 -1
- package/dist/assets/esm-DyNBzk7k.js +0 -2
- package/dist/assets/esm-V26rZBqv.js +0 -2
- package/dist/assets/esm-VDGp8N8o.js +0 -2
- package/dist/assets/esm-bBYOtNIe.js +0 -2
- package/dist/assets/file-editor-B_RqvjQp.js +0 -1
- package/dist/assets/general-page-DZ2OQRcR.js +0 -2
- package/dist/assets/hatching-screen-BsUtOe4T.js +0 -1
- package/dist/assets/hosting-screen-CnZGwkfa.js +0 -1
- package/dist/assets/icons-xHdc0dPY.js +0 -1
- package/dist/assets/identity-page-route-DojUio39.js +0 -7
- package/dist/assets/index-CleA12ha.js +0 -379
- package/dist/assets/index-_KUyDosG.css +0 -2
- package/dist/assets/inspect-page-BE_JG1N4.js +0 -9
- package/dist/assets/integrations-page-KDXF3d-g.js +0 -1
- package/dist/assets/intelligence-layout-STvbMPLB.js +0 -1
- package/dist/assets/intelligence-layout-slots-store-DMLOaMGU.js +0 -1
- package/dist/assets/keyboard-shortcuts-redirect-page-DXaUnoFR.js +0 -1
- package/dist/assets/library-detail-page-CCmvUHtD.js +0 -1
- package/dist/assets/library-page-DlTszOAL.js +0 -1
- package/dist/assets/login-page-CUNLD9gj.js +0 -1
- package/dist/assets/logout-page-DcyTUY-b.js +0 -1
- package/dist/assets/logs-layout-BqkRgpwq.js +0 -1
- package/dist/assets/markdown-preview-CG-FNmRz.js +0 -1
- package/dist/assets/media-preview-CCq9FQiT.js +0 -1
- package/dist/assets/memory-page-route-BHUAp-C2.js +0 -2
- package/dist/assets/memory-router-playground-page-Dt9vB83b.js +0 -1
- package/dist/assets/message-files-panel-DpvaRorj.js +0 -1
- package/dist/assets/metric-card-CgEc3VST.js +0 -1
- package/dist/assets/notifications-page-kX-DNd3J.js +0 -1
- package/dist/assets/onboarding-8Qvub-HF.js +0 -1
- package/dist/assets/onboarding-BqMOEnu1.js +0 -1
- package/dist/assets/onboarding-Do0E1QsF.js +0 -1
- package/dist/assets/onboarding-ml_qpGn-.js +0 -1
- package/dist/assets/pairing-page-DJRUbeSZ.js +0 -1
- package/dist/assets/password-reset-page-Cegloo1P.js +0 -1
- package/dist/assets/pdf-file-preview-3kkKGH7o.js +0 -1
- package/dist/assets/personality-page-CmZHiyRo.js +0 -1
- package/dist/assets/personality-page-DjPVfIFL.js +0 -1
- package/dist/assets/personality-sliders-D0p9kgNx.js +0 -1
- package/dist/assets/plans-page-CCY1BUZx.js +0 -1
- package/dist/assets/platform-loopback-page-vdNjdoVw.js +0 -1
- package/dist/assets/plugin-detail-page-Co0YswmF.js +0 -1
- package/dist/assets/plugins-page-DxCCY6yP.js +0 -1
- package/dist/assets/preview-error-DyczP1Cl.js +0 -1
- package/dist/assets/privacy-page-nfyEw6V_.js +0 -1
- package/dist/assets/privacy-screen-CSYkxRBc.js +0 -1
- package/dist/assets/provider-callback-page-Cms4b36-.js +0 -1
- package/dist/assets/provider-key-B2zz48-r.js +0 -1
- package/dist/assets/provider-signup-page-nO1KOWei.js +0 -1
- package/dist/assets/quick-input-page-CtMMOIj7.js +0 -1
- package/dist/assets/research-mock-page-TkBJ2Xzt.js +0 -1
- package/dist/assets/research-onboarding-route-BBvprgLG.js +0 -50
- package/dist/assets/review-terms-screen-CdlPmf8I.js +0 -1
- package/dist/assets/schedules-BH4Qj3v_.js +0 -1
- package/dist/assets/schedules-page-BwWZDVOO.js +0 -1
- package/dist/assets/security-redirect-page-BflZPXbv.js +0 -1
- package/dist/assets/select-assistant-screen-s2j8iyBA.js +0 -1
- package/dist/assets/self-hosted-servers-BbfoTPnN.js +0 -1
- package/dist/assets/service-form-controls-B4TOUC0S.js +0 -1
- package/dist/assets/setting-row-DqAfZdv2.js +0 -1
- package/dist/assets/settings-C63GjmJb.js +0 -3
- package/dist/assets/settings-CrvJCEjH.js +0 -3
- package/dist/assets/settings-D4bcxNIG.js +0 -3
- package/dist/assets/settings-Dn888InQ.js +0 -3
- package/dist/assets/settings-divider-CM41jU8r.js +0 -1
- package/dist/assets/settings-layout-dXTKjyLn.js +0 -1
- package/dist/assets/share-feedback-modal-Bf_f-1Md.js +0 -2
- package/dist/assets/sidebar-tree-Bk7IUERw.js +0 -1
- package/dist/assets/signup-page-C-3fDL0D.js +0 -1
- package/dist/assets/signup-shell-DqL_hfoj.js +0 -1
- package/dist/assets/skill-detail-page-CVduyZVJ.js +0 -2
- package/dist/assets/skill-detail-panel-BxZAnZbg.js +0 -1
- package/dist/assets/skill-icon-FPL5xeRb.js +0 -1
- package/dist/assets/skill-removal-dialog-D3tHR3Ld.js +0 -1
- package/dist/assets/skills-page-C-0iE9BV.js +0 -1
- package/dist/assets/sounds-page-_EVUXllQ.js +0 -1
- package/dist/assets/start-screen-yHd9KDX3.js +0 -1
- package/dist/assets/stt-language-picker-modal-BUc9OzaG.js +0 -1
- package/dist/assets/subagent-detail-panel-rXvn591h.js +0 -1
- package/dist/assets/superpowers-page-BZt2aSZX.js +0 -1
- package/dist/assets/system-events-page-C8lfUiSV.js +0 -1
- package/dist/assets/system-events-redirect-page-8LxoBVmn.js +0 -1
- package/dist/assets/text-preview-DW6f8CZi.js +0 -1
- package/dist/assets/theme-stage-page-DzWIjgFX.js +0 -1
- package/dist/assets/tool-detail-panel-UBD8L_LV.js +0 -15
- package/dist/assets/trait-cycle-row-CSwys30K.js +0 -1
- package/dist/assets/upgrade-cancel-page-o-OcUT1B.js +0 -1
- package/dist/assets/upgrade-success-page-D2BicwBj.js +0 -1
- package/dist/assets/usage-redirect-page-BmlaczMS.js +0 -1
- package/dist/assets/use-app-delete-B8jp3vIE.js +0 -1
- package/dist/assets/use-assistant-identity-details-BRqAQ7pS.js +0 -1
- package/dist/assets/use-checkout-dismiss-refresh-DX3GymbX.js +0 -1
- package/dist/assets/use-edge-swipe-back-CbTl-FwD.js +0 -2
- package/dist/assets/use-hotkey-recorder-BKNmxbXj.js +0 -1
- package/dist/assets/use-invite-link-dialog-Daa3jhkP.js +0 -1
- package/dist/assets/use-platform-assistant-id-Dj8c4xX-.js +0 -1
- package/dist/assets/use-return-to-short-circuit-DusBrJ_h.js +0 -1
- package/dist/assets/use-side-list-room-3ENOwQ0t.js +0 -1
- package/dist/assets/use-skill-actions-BjY9oa7a.js +0 -1
- package/dist/assets/use-skill-detail-files-kPuMdyDL.js +0 -1
- package/dist/assets/use-supports-credentials-settings-BuLaPijC.js +0 -1
- package/dist/assets/use-transcript-message-by-id-DOMa4nxw.js +0 -1
- package/dist/assets/vendor-C_e0Rl2s.js +0 -127
- package/dist/assets/voice-page-DuWSfI5B.js +0 -1
- package/dist/assets/wake-detail-panel-D34xuHov.js +0 -1
- package/dist/assets/weather-forecast-display-D1iB5UK2.js +0 -1
- package/dist/assets/welcome-screen-Dw3nj99H.js +0 -1
- package/dist/assets/workflow-detail-panel-BbS4Uq2Q.js +0 -1
- package/dist/assets/workspace-B3qxH51y.js +0 -1
- package/dist/assets/workspace-BUMgSIAc.js +0 -1
- package/dist/assets/workspace-DBbRFlwk.js +0 -1
- package/dist/assets/workspace-LUczKAWY.js +0 -1
- package/dist/assets/workspace-page-CmL3AaIw.js +0 -1
- /package/dist/assets/{account-Diu-bFrX.js → account-1POZPT9m.js} +0 -0
- /package/dist/assets/{account-DDtCvPF5.js → account-BBvlSFcW.js} +0 -0
- /package/dist/assets/{account-BF5lrfyX.js → account-DV-tB0oh.js} +0 -0
- /package/dist/assets/{account-Bxy_vX-K.js → account-n9xXc949.js} +0 -0
- /package/dist/assets/{activation-BYAGAleJ.js → activation-BtZhlZ_s.js} +0 -0
- /package/dist/assets/{activation-CEdyqKUu.js → activation-CaYos65l.js} +0 -0
- /package/dist/assets/{activation-DEdwceum.js → activation-tasks-CzjUeEj1.js} +0 -0
- /package/dist/assets/{activation-DF1oj8j7.js → activation-tasks-D057dozu.js} +0 -0
- /package/dist/assets/{app-types-Dij41aJ8.js → app-types-2kvircdH.js} +0 -0
- /package/dist/assets/{build.umd-BrZECSr1.js → build.umd-BWfbInTw.js} +0 -0
- /package/dist/assets/{contacts-4xLilqUA.js → contacts-D6N3gRLL.js} +0 -0
- /package/dist/assets/{contacts-CnVtG-pl.js → contacts-DP3Crat5.js} +0 -0
- /package/dist/assets/{contacts-DE8gWrSn.js → contacts-X4REeAsN.js} +0 -0
- /package/dist/assets/{contacts-DIgSZ4hU.js → contacts-yIhQlpq2.js} +0 -0
- /package/dist/assets/{credential-requests-CPxFLVT9.js → credential-requests-1WDcifE6.js} +0 -0
- /package/dist/assets/{credential-requests-Qe84hNEC.js → credential-requests-D6SU6G2Z.js} +0 -0
- /package/dist/assets/{credential-requests-BFLeXf78.js → credential-requests-DKbR-6qV.js} +0 -0
- /package/dist/assets/{credential-requests-lDkcsmmB.js → credential-requests-DrJdsdeJ.js} +0 -0
- /package/dist/assets/{definitions-BTebkxyz.js → definitions-DhwHuMC5.js} +0 -0
- /package/dist/assets/{definitions-BjZOswgM.js → definitions-Qg1-j0J7.js} +0 -0
- /package/dist/assets/{emoji-catalog-data-QQIw94Eu.js → emoji-catalog-data-Yyjk_IDu.js} +0 -0
- /package/dist/assets/{format-countdown-C-J64lue.js → format-countdown-BEyU91h0.js} +0 -0
- /package/dist/assets/{format-file-size-Daiq0gMr.js → format-file-size-CEqN0m2h.js} +0 -0
- /package/dist/assets/{home-CCUv41ef.js → home-CQRYKQ5-.js} +0 -0
- /package/dist/assets/{home-BteaphB_.js → home-DQz-gw5J.js} +0 -0
- /package/dist/assets/{home-tbbkVcjW.js → home-jvtY7w4T.js} +0 -0
- /package/dist/assets/{home-DO7A2tVm.js → home-uZ5Qvj6E.js} +0 -0
- /package/dist/assets/{library-DuuiJut6.js → library-BXLScXI1.js} +0 -0
- /package/dist/assets/{library-ClpjgmQn.js → library-D7tisF9R.js} +0 -0
- /package/dist/assets/{library-BhC14-NO.js → library-IMXA70AZ.js} +0 -0
- /package/dist/assets/{library-BRmAQI9e.js → library-gTJv7Oz7.js} +0 -0
- /package/dist/assets/{link-click-e-Fdx5JV.js → link-click-BYgcUBN3.js} +0 -0
- /package/dist/assets/{logs-NHN9-mUP.js → logs-DV_rbeyU.js} +0 -0
- /package/dist/assets/{logs-CQYFdGa_.js → logs-gUmqmCAe.js} +0 -0
- /package/dist/assets/{logs-SCSd0kUm.js → logs-itULWBC4.js} +0 -0
- /package/dist/assets/{logs-DwYHebVx.js → logs-ji3E1A5W.js} +0 -0
- /package/dist/assets/{machine-sizes-DadN4uVk.js → machine-sizes-Cyr9sICv.js} +0 -0
- /package/dist/assets/{onboarding-step-layout-COS57xjn.js → onboarding-step-layout-XiwLE8P3.js} +0 -0
- /package/dist/assets/{plugin-attribution-zkdgIHRG.js → plugin-attribution-B2jD5Q1N.js} +0 -0
- /package/dist/assets/{radio-card-nav-DCE3wYLZ.js → radio-card-nav-BtZq6gZp.js} +0 -0
- /package/dist/assets/{remote-web-BIYYINs1.js → remote-web-BClKYDvU.js} +0 -0
- /package/dist/assets/{remote-web-D3chXkbO.js → remote-web-BTqxQIZY.js} +0 -0
- /package/dist/assets/{remote-web-DfCFOpuR.js → remote-web-BqE5HtVx.js} +0 -0
- /package/dist/assets/{remote-web-CSrWAyIC.js → remote-web-Cy9y7nTE.js} +0 -0
- /package/dist/assets/{schedules-BBaBmcJG.js → schedules-BZCt6hXe.js} +0 -0
- /package/dist/assets/{schedules-CpR8IZ0O.js → schedules-Capmqn71.js} +0 -0
- /package/dist/assets/{schedules-CjtoHUii.js → schedules-DDJ36QQM.js} +0 -0
- /package/dist/assets/{schedules-jUeeTvGp.js → schedules-DO26F1mH.js} +0 -0
- /package/dist/assets/{signup-onboarding-handoff-DsARDCO5.js → signup-onboarding-handoff-CEICxhlG.js} +0 -0
- /package/dist/assets/{terminal-BkBRbIo0.js → terminal-1uiH9Lk0.js} +0 -0
- /package/dist/assets/{terminal-DOjJsvsr.js → terminal-BKHabeoN.js} +0 -0
- /package/dist/assets/{terminal-BDTudyuW.js → terminal-CWSI_cvE.js} +0 -0
- /package/dist/assets/{terminal-DzafX5hx.js → terminal-DHtM2WSE.js} +0 -0
- /package/dist/assets/{usage-window-C3F8jUQI.js → usage-window-DA_JAjjs.js} +0 -0
- /package/dist/assets/{xterm-BQMgK3JF.js → xterm-DuUTQzS6.js} +0 -0
- /package/dist/assets/{xterm-addon-fit-Cb7BiyPE.js → xterm-addon-fit-DuSb5pvT.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={build:`构建`,tagline:`您的 Mac AI 助手`,version:`版本`},t={connecting:`正在连接到您的助手…`,logIn:`登录`,logOut:`注销`},n={cancel:`取消`,credentialSaved:`凭据已保存。`,description:`添加 API 密钥或令牌,以便工具和集成可以使用它。`,fieldLabel:`字段`,fieldPlaceholder:`例如 api_token`,labelOptional:`标签(可选)`,labelPlaceholder:`例如 GitHub 个人访问令牌`,save:`保存`,saveFailed:`保存凭据失败`,serviceLabel:`服务`,servicePlaceholder:`例如 github`,title:`添加凭据`,valueLabel:`值`,valuePlaceholder:`输入秘密值`},r={amount:`金额`,cancel:`取消`,configureAutoReload:`配置自动充值`,continue:`继续`,description:`您将被重定向到 Stripe 完成支付。`,title:`添加点数`},i={openApp:`打开应用`,pin:`置顶`,previewTitle:`{name} 预览`,unpin:`取消置顶`},a={close:`关闭`,copyLink:`复制链接`,deploy:`部署`,deployToVercel:`部署到 Vercel`,deployToVercelSubtitle:`发布为静态页面`,deployedCopyLinkAria:`已部署到 Vercel,复制链接`,deployedCopyLinkTooltip:`已部署:复制链接`,deployedToVercel:`已部署到 Vercel`,deploying:`正在部署…`,edit:`编辑`,expandApp:`展开应用`,fullscreen:`全屏`,openApp:`打开应用`,redeploy:`重新部署`,redeploySubtitle:`发布当前版本`,share:`分享`,shareAndDeploy:`分享并部署`,shareExportSubtitle:`导出为 .vellum 文件`,sharing:`正在分享…`},o={exitFullscreen:`退出全屏`},s={failed:`连接助手失败。`},c={updateFailed:`无法更新“{label}”。您的更改已恢复。`},l={accent:`强调色`,accentAutomatic:`自动`,accentPickerLabel:`强调色`,accentReset:`重置`,body:`身体`,color:`颜色`,eyes:`眼睛`,keepUploadedDescription:`保存角色会替换它`,keepUploadedLabel:`保留您上传的图片`,loadError:`无法加载头像组件。请确保您的助手正在运行。`,name:`名称`,next:`下一个 {label}`,previous:`上一个 {label}`,randomize:`随机化`,save:`保存`,saving:`正在保存…`,title:`更新头像`,uploadImage:`上传图片`,uploadedAlt:`已上传头像`,useCharacterDescription:`从我们内置的头像中选择`,useCharacterLabel:`改用角色`},u={bySigner:`由 {name}`,cancel:`取消`,capabilities:`功能`,createdBy:`创建者`,hideWarnings:`隐藏警告 ({count})`,install:`安装`,installAnyway:`仍然安装`,loading:`正在加载...`,showWarnings:`显示警告 ({count})`,size:`大小`},d={body:`您的助手通过您自己配置的提供商进行语音交互。请在<settingsLink>模型与服务</settingsLink>中设置其语音。`},f={verifyTitle:`最后一步:确认您的身份`,verifyAction:`验证我`,verifyBody:`您的助手还不知道哪个 {channel} 账号是您的,所以暂时不会回复您。在聊天中说“在 {channel} 上验证我”即可完成。`,verifyActionBody:`您的助手还不知道哪个 {channel} 账号是您的,所以暂时不会回复您。它会在聊天中陪您完成。`,verifiedTitle:`身份已验证`,verifiedBody:`您的助手已识别您的 {channel} 账号,会回复您。一切就绪。`},p={alt:`助手头像`,fallbackLetter:`V`},m={alt:`助手头像`},h={actionsTitle:`{title} 操作`},g={ariaLabel:`命令面板`,clear:`清除`,clearSearch:`清除搜索`,closeSearch:`关闭搜索`,noResults:`无结果`,placeholder:`搜索对话、记忆…`,searchAriaLabel:`搜索`,searching:`正在搜索…`},_={ariaLabel:`介绍您的助手`,done:`知道了`,meet:{body:`我会在您的桌面上,即使 Vellum 不可见。`,title:`这就是我`,titleNamed:`我是 {name}`},menu:{body:`您可以在这里隐藏我或更改我的大小。`,title:`右键点击我`},next:`下一步`,skip:`跳过`,talk:{body:`开始语音对话。`,title:`交谈`}},v={allow:`允许`,calling:`正在呼叫…`,callingNamed:`正在呼叫 {name}…`,captureKind:`来源类型`,captureNothing:`没有可显示的内容`,capturePicker:`教学来源`,captureScreen:`屏幕 {n}`,captureScreens:`屏幕`,captureTabs:`Chrome 标签页`,captureWindows:`窗口`,deny:`拒绝`,draw:`绘制`,drawTools:`绘图工具`,drawFreehand:`自由绘制`,drawLine:`直线`,drawBox:`方框`,drawCircle:`圆形`,endSession:`结束会话`,muteAssistant:`静音助手`,muteMicrophone:`静音麦克风`,notNow:`暂不`,offerCopy:`复制`,offerDiscard:`丢弃`,offerHeard:`{app} 已粘贴了那段`,offerNowhere:`没有地方可以放`,offerQuit:`退出 {app}`,offerUse:`使用 Vellum 的版本`,offerVersion:`Vellum 听到的是`,openVellum:`打开 Vellum`,share:`共享`,sharePicker:`共享来源`,showSummary:`显示摘要`,stopTeaching:`停止教学`,summarizing:`正在摘要`,talk:`交谈`,teach:`教学`,unmuteAssistant:`取消助手静音`,unmuteMicrophone:`取消麦克风静音`,dictating:`正在聆听`,dictatingTranscribing:`正在思考`},y={sharingScreen:`正在分享你的屏幕`,sharingScreenNamed:`正在与 {name} 分享你的屏幕`,sharingWindow:`正在分享一个窗口`,sharingWindowNamed:`正在与 {name} 分享一个窗口`,teaching:`正在教学`,teachingNamed:`正在教 {name}`},b={copiedAria:`已复制`,copyFailed:`无法复制文件内容。`,copyFileContentsAria:`复制文件内容`,downloadFileAria:`下载文件`,editFileAria:`编辑文件`},x={cancel:`取消`,create:`创建`,description:`配置一个新助手。它将在后台启动。`,namePlaceholder:`助手名称(可选)`,title:`新助手`,toastSuccess:`新助手已创建。`},S={ariaLabel:`日期范围`,lastDays:`{days, plural, other {过去 # 天}}`},C={delete:`删除`,deleting:`正在删除…`,message:`"{name}" 将被永久删除。`,title:`删除应用`},w={confirmLabel:`让您的助手处理`,confirmLabelNamed:`让 {assistantName} 处理`,message:`"{appName}" 使用后端服务,这些服务无法在静态 Vercel 页面上运行。您的助手可以使用无服务器函数正确部署它。`,messageNamed:`"{appName}" 使用后端服务,这些服务无法在静态 Vercel 页面上运行。{assistantName} 可以使用无服务器函数正确部署它。`,title:`此应用需要完整部署`},T={appExported:`应用已导出`,deployFailed:`部署失败`,deployedToVercel:`已部署到 Vercel`,open:`打开`,shareFailed:`分享应用失败`},E={tooltip:`停止`},D={copied:`已复制`,copy:`复制`,showLess:`显示更少`,showMore:`显示更多`},O={stopRecording:`停止录音`},k={ariaLabel:`加入 Vellum Discord 社区`,ctaLong:`加入 Discord`,ctaShort:`加入`,subtitleLong:`与团队交流 - 分享反馈、请求功能、更快获得答案`,subtitleShort:`分享反馈、请求功能、更快获得答案`,title:`加入我们的社区!`},A={instructions:`粘贴您从“机器人”页面复制的机器人令牌。`,verificationNoticeTitle:`请忽略“验证您的应用”页面`,verificationNoticeBody:`Discord 对每个新应用都会显示它。只有超过 100 个服务器时才有意义。`,botTokenLabel:`机器人令牌`,save:`连接`,saving:`正在连接...`,saved:`已连接。接下来,将机器人添加到服务器。`,botTokenPlaceholder:`MTk4NjIyNDgzNzAyNDU0...`},j={inPortal:`在 Discord 开发者门户中:`,stepCreateApp:`点击<strong>New Application</strong>,并用您助手的名字命名应用:`,copyName:`复制名称`,copied:`已复制!`,stepAppIcon:`可选:下载头像,然后在<strong>一般信息</strong>页面上传为应用图标。`,stepResetToken:`前往应用菜单中的<strong>机器人</strong>页面,点击<strong>重置令牌</strong>并立即复制令牌。Discord 只显示一次。`,stepIntentsOff:`在同一页面,保持三个<strong>特权网关意图</strong>开关全部关闭。您的助手不需要它们:它只读取私信和提及它的消息。`,openPortal:`打开 Discord 门户`,continue:`我已拥有令牌`},M={connectedTitle:`机器人已添加`,connectedBody:`令牌已保存,机器人已加入您的服务器。Discord 这边已完成。`},N={instructions:`机器人加入服务器前什么都看不到、也无法回复。打开链接,选择您的服务器并批准。`,openInvite:`添加到服务器`,confirmJoined:`我已添加机器人`,noAppId:`请先连接机器人令牌,然后返回此处将其添加到服务器。`},P={channelLabel:`Discord`,stepCreate:`创建应用`,stepConnect:`连接`,stepInvite:`添加到服务器`,stepFinish:`完成`,copyError:`无法复制名称。请改为在 Discord 中输入。`},F={acknowledge:`确认`,acknowledging:`正在确认...`,cleanupBody:`提示您的助手释放空间,以免空间耗尽并进入锁定状态。`,cleanupTitle:`清理模式已激活`,criticalBody:`如果存储空间耗尽,您的助手将进入锁定状态。`,criticalModalDescription:`如果存储空间耗尽,您的助手将进入锁定状态。您应该提示您的助手释放空间或增加存储空间。`,criticalTitle:`存储空间严重不足`,dontShowAgain:`不再显示`,manageStorage:`管理存储`,review:`查看`,upgrade:`升级`,warningBody:`释放空间以避免中断。`,warningBodyWithUpgrade:`释放空间或增加更多存储空间以避免中断。`,warningTitle:`您的存储空间即将耗尽`},I={failed:`下载失败`,revealMac:`在访达中显示`,revealWindows:`在文件资源管理器中显示`,saved:`已保存到“下载”`,started:`下载已开始`,startedDescription:`请在浏览器的下载内容中查找 {filename}。`},L={discard:`放弃`,save:`保存`,saving:`正在保存…`},R={copyAriaLabel:`复制邀请链接`,createFailed:`创建邀请链接失败。请确保您的助手已启用 A2A。`,creating:`正在创建邀请链接…`,done:`完成`,shareHint:`与另一位助手所有者分享此链接以建立连接。`,title:`分享连接链接`,tryAgain:`重试`},z={ariaLabel:`Vellum 在 GitHub 上开源`,ctaAriaLabel:`在 GitHub 上为 Vellum 点赞`,ctaLabel:`为我们点赞`,subtitle:`在 GitHub 上为我们点赞或贡献代码`,title:`Vellum 是开源的`},B={loadError:`此部分无法加载。请重新加载页面重试。`},V={goToConversation:`前往对话`},H={ariaLabel:`下载 macOS 应用`,ctaAriaLabel:`下载 macOS 应用`,ctaLabel:`下载`,subtitle:`电脑使用 · 终端访问 · 原生自动化`,title:`获取 macOS 应用`},U={bannerAria:`下载 {appName} 应用`,bannerAriaGeneric:`下载 Vellum 移动应用`,download:`下载`,downloadAppAria:`下载 {appName} 应用`,downloadAppAriaGeneric:`下载 Vellum 移动应用`,subtitle:`推送通知 · 生物识别登录 · 触觉反馈`,title:`获取 {appName} 应用`,titleGeneric:`获取 Vellum 应用`},W={backToAssistant:`返回您的助手`,badge:`错误 404`,body:`您要查找的页面不存在或可能已移动。`,goBack:`返回`,title:`页面未找到`},G={dismissAria:`关闭`},K={back:`返回`},q={cancel:`取消`,logIn:`登录`},J={assistantHandleIdleEmpty:`您的助手尚未设置句柄,请设置一个以便提及。`,assistantHandleLabel:`助手句柄`,assistantHandleUpdated:`助手句柄已更新。`,available:`可用`,availableHelper:`可用。`,checkAvailabilityFailed:`无法检查可用性。`,checkingAvailability:`正在检查可用性…`,chooseDifferentHandle:`请选择一个不同的句柄。`,emailLabel:`电子邮件`,handleHelper:`小写字母、数字、连字符和下划线。3–30个字符。`,handleLocked:`您的助手句柄已锁定,因为它被用作其电子邮件子域名。要更改它,请先<releaseLink>释放子域名</releaseLink>。`,loading:`正在加载您的个人资料…`,notAvailable:`不可用`,profileUpdated:`个人资料已更新。`,save:`保存`,saved:`已保存`,saving:`正在保存…`,subtitle:`管理您的账户详情和偏好设置。`,title:`个人资料`,userHandleIdleAutoGenerated:`您的句柄是在注册时自动生成的 - 请选择一个您喜欢的。`,userHandleLabel:`用户句柄`},Y={created:`个人资料“{name}”已创建`},X={logoAlt:`Vellum`,placeholder:`向 Vellum 提问...`},Z={confirm:`移除`,messageOrigin:`这不会影响 {assistantName} 或让您在那里退出登录。它只会忘记此设备上的条目。您可以随时再次添加。`,messagePaired:`这不会影响 {assistantName} 在其主机上的状态。它只会忘记此设备上的配对。您可以随时使用 vellum connect import 再次配对。`,messagePlatform:`这不会删除 {assistantName}。它只会将其从此设备中移除。登录后它将再次可用。`,title:`从该设备移除?`},Q={body:`您的助手正在努力工作,并已达到其当前资源限制。请升级以确保其平稳运行。`,bodyNoUpgrade:`您的助手正在努力工作,并已达到其当前资源限制。`,dontShowAgain:`不再显示`,title:`您的助手需要更多算力`,titleNamed:`{assistantName} 需要更多算力`,upgrade:`升级`},$={confirmLabel:`停用`,message:`这将永久停用此助手及其所有数据。您需要重新完成引导流程才能创建新助手。此操作无法撤销。`,title:`停用助手`},ee={loadingAria:`正在加载`},te={unnamedAssistant:`该助手`},ne={chunkFailBody:`此部分无法加载。可能是网络故障或版本过旧。请重新加载页面重试。`,reload:`重新加载`},re={confirmMessage:`更新到版本 {version}?更新期间助手将暂时不可用。`,confirmTitle:`更新助手运行时`,later:`稍后`,title:`有新的助手版本可用:{version}`,toastComplete:`更新完成。您的助手运行正常。`,toastFailed:`未能触发更新。请重试。`,update:`更新`},ie={ariaLabel:`{name} 操作`},ae={reset:`重置`,save:`保存`},oe={label:`分享连接链接`},se={aboutDiagnosticsAria:`关于诊断信息`,addFiles:`添加文件`,adminOnlyHint:`仅限管理员 - 在本地构建诊断存档并下载,而不是提交反馈或通知 Slack。`,attachments:`附件`,bugTip:`提示:在我们的 <discordLink>Discord 社区</discordLink> 发布问题可获得更快的支持`,cancel:`取消`,category:`类别`,closeAria:`关闭`,diagnosticsTooltip:`诊断信息包括浏览器上下文、助手日志和时间戳,绝不包含密码或凭据。`,downloadDiagnostics:`直接下载诊断信息`,downloadDiagnosticsAria:`直接下载诊断信息`,downloadDiagnosticsButton:`下载诊断信息`,dropFiles:`拖放文件以附加…`,email:`电子邮件`,featureTip:`提示:在我们的 <roadmapLink>公开路线图</roadmapLink> 上为功能投票`,includeConversation:`包含最近的对话`,includeConversationAria:`包含最近的对话`,includeDiagnostics:`包含诊断信息`,includeDiagnosticsAria:`包含浏览器诊断信息`,messageLabelBug:`哪里出错了?`,messageLabelFeature:`描述您的想法`,messageLabelOther:`您有什么想法?`,messagePlaceholderBug:`您预期会发生什么,实际发生了什么?`,messagePlaceholderFeature:`这将为您解决什么问题?`,messagePlaceholderOther:`分享您的想法...`,preparingDiagnostics:`正在准备诊断信息…`,reasonBugReport:`错误报告`,reasonFeatureRequest:`功能请求`,reasonOther:`其他`,removeAttachmentAria:`移除 {name}`,sendingFeedback:`正在发送反馈…`,submit:`提交`,timeRange:`时间范围`,timeRangeAllTime:`所有时间`,timeRangeAria:`诊断信息时间范围`,timeRangePast24Hours:`过去 24 小时`,timeRangePastHour:`过去一小时`,title:`分享反馈`},ce={loadingAria:`正在加载反馈表单`},le={close:`关闭`,message:`无法加载反馈表单。`,retry:`重试`},ue={closeAria:`关闭`,closeSidebarAria:`关闭侧边栏`,openSidebarAria:`打开侧边栏`},de={backFrom:`从 {title} 返回`,backToMenu:`返回 {title} 菜单`,navigationAria:`{title} 导航`},fe={ariaLabel:`侧边栏导航`},pe={label:`从本次对话中学习`},me={message:`从该助手移除“{name}”?`,remove:`移除`,title:`移除技能`},he={approvalNotice:`如果 Slack 显示“请求批准”而不是<strong>安装</strong>,则工作区管理员需要先批准该应用。`,createdApp:`我已创建应用`,inSlack:`在 Slack 中:`,stepManifest:`在<strong>或以您自己的方式开始</strong>下,选择<strong>从清单</strong>,然后选择<strong>继续</strong>`,stepPaste:`选择您的工作区并粘贴清单`,stepReview:`审查权限,然后点击<strong>创建并安装</strong>`},ge={appName:`应用名称`,appNamePlaceholder:`我的助手`,copied:`已复制!`,copyManifest:`复制清单`,description:`描述(可选)`,descriptionHelper:`显示在应用的 Slack 个人资料中。`,descriptionPlaceholder:`此助手提供哪些帮助`,intro:`命名您的 Slack 应用并复制其清单。所有权限和设置均已预配置。`,next:`下一步`},_e={body:`在新标签页中打开 Slack 以创建应用,然后返回此处查看后续步骤。`,copied:`已复制!`,copyManifest:`复制清单`,manifestCopiedNotice:`您已在此处复制此应用的清单。如果您在此之后复制了其他内容,请在粘贴前再次复制。`,manifestNotCopiedNotice:`您尚未复制此应用的清单。Slack 的创建应用模态框没有其他方式获取它,因此请在粘贴前复制它。`,next:`下一步`,openSlack:`打开 Slack`},ve={appTokenLabel:`应用令牌`,botTokenLabel:`机器人令牌`,connectSlack:`连接 Slack`,connecting:`正在连接…`,credentialsSaved:`凭据已保存`,instructions:`在 Slack 的确认屏幕上,展开 <credentials>您的应用凭据</credentials> 并复制两个 Token。`,skipNotice:`该屏幕还提供命令行演练和 <download>下载应用文件</download> 按钮。请跳过这两项。它们会设置一个独立的本地应用,而此助手只需要这两个 Token。`,savedBody:`两个 Token都已保存。Slack 这边已完成。`},ye={channelLabel:`Slack`,copyError:`无法复制清单。请在继续之前重新复制。`,stepConnect:`连接`,stepCreate:`创建`,stepName:`名称`,stepOpen:`打开`},be={total:`总计:{value}`},xe={reloadApp:`重新加载应用`},Se={reconnecting:`正在重新连接到你的助手…`,dismiss:`忽略`,goToDoctor:`前往诊断`,resumeAssistant:`恢复助手`,retryNow:`立即重试`,wakeUp:`唤醒`},Ce={allLanguages:`所有语言`,featured:`精选`,languagesAriaLabel:`语言`,noMatch:`无匹配语言。`,searchAriaLabel:`搜索语言`,searchPlaceholder:`搜索语言`,suggested:`建议`},we={description:`从您下次语音输入开始生效。`},Te={apiKeyLabel:`API 密钥`,apiKeyPlaceholderReplace:`•••••••• (输入新密钥以替换)`,providerAriaLabel:`语音转文本提供商`,providerLabel:`提供商`,saveFailed:`保存语音转文本设置失败`,saveSuccess:`语音转文本设置已保存`,spokenLanguage:`口语语言`,spokenLanguageApplies:`从您下次语音输入开始生效。`,vellumTranscription:`转录通过您的 Vellum 账户运行。`,windowsNativeDisplayName:`Windows 本机听写`,windowsNativeSetupWarning:`需要为您的 Windows 显示语言启用基本语音识别:打开“设置”>“时间和语言”>“语言和区域”,选择显示语言旁边的三个点,选择“语言选项”,然后在“语言功能”下下载“基本语音识别”。`,windowsNativeSubtitle:`Windows 设备上的语音识别,通过 Windows 助手在本地运行。可离线工作,无需 API 密钥。`},Ee={ariaLabel:`子代理 {subagentId}`},De={accessibilityDescription:`允许您的助手代表您点击、输入和控制应用程序。`,accessibilityLabel:`辅助功能`,checking:`正在检查权限...`,dockIcon:`程序坞图标`,microphoneDescription:`允许您的助手捕获音频用于语音输入和录音。`,microphoneLabel:`麦克风`,notificationBadgesDescription:`允许您的助手在 {surface} 上显示未读对话计数。`,notificationBadgesLabel:`通知标记`,notificationsDescription:`允许您的助手发送 macOS 提醒,用于审批、消息和任务更新。`,notificationsLabel:`通知`,notificationsWindowsDescription:`允许您的助手显示 Windows 通知,用于审批、消息和任务更新。`,screenDescription:`允许您的助手在计算机使用任务期间捕获屏幕上下文。`,screenLabel:`屏幕录制`,speechRecognitionDescription:`允许您的助手在设备上将您的语音转录为文本。`,speechRecognitionLabel:`语音识别`,speechRecognitionWindowsDescription:`允许您的助手使用 Windows 语音识别将您的语音转录为文本。`,taskbarIcon:`任务栏图标`,title:`系统权限`},Oe={botTokenLabel:`机器人令牌`,connectTelegram:`连接 Telegram`,instructions:`粘贴 BotFather 回复中的令牌。它是 <tokenLine>Use this token to access the HTTP API</tokenLine> 之后的整行内容。`,saving:`正在保存…`,savedTitle:`令牌已保存`,savedBody:`机器人令牌已保存。Telegram 这边已完成。`},ke={copied:`已复制!`,copyName:`复制名称`,displayNameHint:`对于显示名称,<strong>{suggestedName}</strong> 可使此机器人与您的助手匹配。用户名是独立的,不必匹配。`,inBotFather:`在 BotFather 中:`,intro:`Telegram 机器人通过向 <strong>@BotFather</strong> 发送消息来创建。打开它,按照提示操作,然后带着它给您的令牌回来。`,next:`下一步`,openBotFather:`打开 BotFather`,stepDisplayName:`给它一个显示名称,这是人们在聊天中看到的名称`,stepSendNewBot:`发送 <strong>/newbot</strong>`,stepTokenReply:`BotFather 会在 <strong>Use this token to access the HTTP API</strong> 之后回复一个 Token`,stepUsername:`给它一个用户名,该用户名必须是唯一的,并以 <strong>bot</strong> 结尾`},Ae={channelLabel:`Telegram`,copyError:`无法复制名称。请改为在 BotFather 中输入。`,stepConnect:`连接`,stepCreate:`创建机器人`},je={recoveryModeBanner:`恢复模式已激活:此会话已连接到调试终端。`},Me={accentFill:`强调色填充`,activeBorder:`活动边框`,activeSurface:`活动表面`,assistantBubble:`助手回复,在页面表面全宽渲染。`,buttonDisabled:`禁用`,buttonPrimary:`主要`,buttonSecondary:`次要`,chatAssistant1:`完成。摘要已准备就绪。收入稳步增长,上季度标记的两个风险已解决,我已将值得展示的三张图表提取到单独的页面中。`,chatAssistant2:`已安排在上午9点。我将包含图表和一个段落版本,供在手机上快速浏览的人查看。`,chatUser1:`你能在明天的会议前总结一下季度报告吗?`,chatUser2:`太好了。早上发给团队。`,composerPlaceholder:`给你的助手发消息`,faintText:`淡文本 - 斜坡上最后一个清晰可见的步骤。`,inputFilled:`已输入到字段中的文本。`,inputPlaceholder:`空字段中的占位符`,newConversation:`新对话`,overlaySurface:`叠加表面`,primaryText:`主要文本 - 应用的主要阅读表面。`,quietText:`安静文本 - 元数据和时间戳。`,raisedCard:`凸起卡片`,raisedCardBody:`凸起表面位于面板和页面背景之上。`,samplerTitle:`主题样本`,secondaryText:`次要文本 - 辅助文案和描述。`,sectionAccent:`强调色`,sectionButtons:`按钮`,sectionInputs:`输入`,sectionMessages:`消息`,sectionSurfaces:`表面和边框`,sectionText:`文本`,send:`发送`,subtleDivider:`此线上方的细分隔线。`,tertiaryText:`三级文本 - 字幕、标签和占位符。`,userBubble:`用户在其气泡中的消息。`},Ne={dark:`深色`,label:`主题`,light:`浅色`,system:`系统`,velvet:`丝绒`},Pe={computerUseBodyLinux:`在这台电脑上,我可以处理文件、终端和浏览器。`,computerUseBodyMacos:`在此 Mac 上,我可以为您控制应用和桌面。`,computerUseBodyWindows:`在此电脑上,我可以为您控制应用和桌面。`,computerUseTitleLinux:`让我使用这台电脑`,computerUseTitleMacos:`让我使用您的 Mac`,computerUseTitleWindows:`让我使用您的电脑`,dismiss:`关闭`,nextTip:`下一条提示`,pluginsBodyLinux:`从个人理财副驾驶到每日家庭简报。`,pluginsBodyMacos:`从个人理财副驾驶到常驻 MacBook 刘海区域的模式。`,pluginsBodyWindows:`从个人理财副驾驶到每日家庭简报。`,quickInputBody:`按 {shortcut} 即可从任何应用向我发送快捷消息。`,quickInputBodyWithoutShortcut:`使用快捷输入即可从任何应用向我发送快捷消息。`,previousTip:`上一条提示`},Fe={apiKey:`API 密钥`,apiKeyRequired:`测试前请为此提供商保存 API 密钥。`,chooseFromCatalog:`从目录中选择`,customVoiceIdAriaLabel:`自定义语音 ID`,noManagedVoices:`目前没有可用的托管语音。`,provider:`提供商`,providerAriaLabel:`TTS 提供商`,saveFailed:`保存文本转语音设置失败`,saved:`文本转语音设置已保存`,test:`测试`,testing:`正在测试…`,voice:`语音`,voiceId:`语音 ID`,voiceIdPlaceholder:`输入语音 ID`},Ie={available:`有可用更新。正在开始下载…`,closeAriaLabel:`关闭`,downloading:`正在下载更新…`,ready:`Vellum {version} 已准备就绪。`,restartToInstall:`重启以安装`,versionFallback:`更新`},Le={deleteFailed:`删除应用失败`},Re={copyFailed:`无法复制链接。请在 {url} 打开。`,linkCopied:`链接已复制`,open:`打开`},ze={setupPrompt:{slack:`我想在 Slack 上联系你。我们来设置一下。`,telegram:`我想在 Telegram 上联系你。我们来设置一下。`,discord:`我想在 Discord 上联系你。我们来设置一下。`,email:`我想给你发邮件。我们来设置你的电子邮件地址。`,phone:`我想能够给你打电话。我们来设置你的电话号码。`},finishPrompt:{slack:`Slack 已设置但无法工作。你能完成它吗?`,telegram:`Telegram 已设置但无法工作。你能完成它吗?`,discord:`Discord 已设置但无法工作。你能完成它吗?`,email:`我的电子邮件地址已设置但无法工作。你能完成它吗?`,phone:`我的电话号码已设置但无法工作。你能完成它吗?`}},Be={addFailed:`收藏消息失败。`,removeFailed:`移除收藏失败。`},Ve={exchangeFailed:`请检查粘贴的密钥并重试。`,failed:`连接 Claude 失败。请重试。`,notStarted:`请先启动连接 Claude 流程。`,pasteEmpty:`请粘贴 Claude 页面上显示的代码。`,popupBlocked:`您的浏览器阻止了登录标签页。请允许此站点的弹窗,然后再次点击连接。`,startFailed:`无法启动连接 Claude。请重试。`,timedOut:`等待 Claude 连接超时。请重试。`},He={accountConnected:`{name} 账户已连接。`,authorizationError:`{name} 错误:{code}`,authorizationFailed:`{name} 授权失败`,popupBlocked:`弹窗被阻止。请启用弹窗并重试。`,startFailed:`启动 {name} 授权失败。`,startFailedWithReason:`启动 {name} 授权失败:{reason}`},Ue={blocked:`您的浏览器阻止了助手尝试打开的页面。`,openPage:`打开页面`},We={playFailed:`无法播放语音样本。`},Ge={updated:`主题已更新`},Ke={body:`输入您的 Vercel API 令牌,将应用程序部署为静态页面。`,cancel:`取消`,createToken:`在 Vercel 上创建令牌 →`,save:`保存`,saveFailed:`保存 Vercel 令牌失败。`,saving:`正在保存…`,title:`连接 Vercel`,tokenLabel:`API 令牌`,tokenPlaceholder:`Vercel API 令牌`},qe={assistantVoiceAriaLabel:`助手语音`,defaultSuffix:`(默认)`,previewVoice:`预览 {description}`,providerAriaLabel:`语音提供商`,stopPreview:`停止预览`},Je={ariaLabel:`语音`,selectVoice:`选择语音`},Ye={done:`完成`,title:`语音`},Xe={body:`语音提供商、转录和 API 密钥位于<modelsLink>模型与服务</modelsLink>中。`},Ze={recommendedOff:`建议关闭`,userTranscriptLabel:`显示你说的话`,userTranscriptDescription:`在你说话时实时转录文字。`,assistantTranscriptLabel:`显示助手说的话`,assistantTranscriptDescription:`在语音回复旁同步显示文本。`},Qe={developer:`开发者`,file:`文件`,help:`帮助`,view:`视图`},$e={checkingDomain:`正在检查域名…`,domainVerified:`域名已验证`,failedTitle:`域名验证失败。DNS 记录可能未正确传播。您可以尝试释放并重新注册该域名。`,unknownStatus:`未知状态`,unknownStatusTitle:`无法检索域名验证状态。`,verificationFailed:`验证失败`,verifiedTitle:`DNS 记录已验证。您的域名已准备好发送和接收电子邮件。`,verifyingDomain:`正在验证域名…`,verifyingTitle:`DNS 记录已配置。正在等待电子邮件提供商验证它们 - 这通常需要几分钟。`},et={body:`托管服务按量计费,并从您的 Vellum 账户余额中扣除。<link>查看定价</link>`},tt={managedLabel:`托管`,modeToggleAriaLabel:`服务模式`,yourOwnLabel:`自托管`},nt={previewAlt:`您的助手头像`,download:`下载头像`,prompt:{slack:`下载您的助手头像以上传为应用图标。`,discord:`下载您的助手头像以上传为机器人图标。`,telegram:`下载您的助手头像,然后使用 /setuserpic 发送给 BotFather。`}},rt={strict:{label:`严格`,description:`执行任何操作前均需确认。不自动批准任何操作。`},conservative:{label:`保守`,description:`自动批准低风险操作,例如网络搜索以及在其自身工作区中读写文件。`},relaxed:{label:`宽松`,description:`自动批准低风险与中等风险操作,例如修改其工作区之外的文件。`},fullAccess:{label:`完全访问`,description:`自动批准所有操作,包括高风险和无法识别的命令。助手将绝不请求权限确认。`}},it={everyHours:`每 {count} 小时`,everyMinutes:`每 {count} 分钟`,retrospectiveSubtitle:`在对话活动后触发`},at={aboutPage:e,activeAssistantGate:t,addCredentialModal:n,addCreditsModal:r,appCard:i,appNavBar:a,appViewerContainer:o,assistantConnect:s,assistantFeatureFlagStore:c,avatarManagementModal:l,bundleConfirmPage:u,byoVoiceNote:d,channelSetupCompleteNotice:f,chatAvatar:p,chooserAvatarChip:m,collapsibleNavSection:h,commandPalette:g,companionIntro:_,companionSurface:v,companionWatchFramePage:y,contentActionBar:b,createAssistantDialog:x,dateRangeSelect:S,deleteAppDialog:C,deployDialogs:w,deployStore:T,detailPanelStopButton:E,detailPrimitives:D,dictationOverlayPage:O,discordNudgeBanner:k,discordSetupConnectStep:A,discordSetupCreateStep:j,discordSetupFinishStep:M,discordSetupInviteStep:N,discordSetupWizard:P,diskPressureBanner:F,downloadFeedback:I,editFooter:L,generateInviteLinkDialog:R,githubNudgeBanner:z,lazyBoundary:B,localNotification:V,macosAppBanner:H,nativeAppBanner:U,notFound:W,nudgeChatBanner:G,onboardingBackButton:K,platformLoginNotice:q,profileCard:J,profileQuickAddProvider:Y,quickInputPage:X,removeFromDeviceDialog:Z,resourcePressureBanner:Q,retireConfirmDialog:$,rootHydrateFallback:ee,rootLayout:te,routeErrorBoundary:ne,runtimeUpgradeBanner:re,sectionActionsButton:ie,serviceFormControls:ae,shareConnectionLinkButton:oe,shareFeedbackModal:se,shareFeedbackModalFallback:ce,shareFeedbackModalLoadError:le,sideListDrawer:ue,sidebarShell:de,sidebarTree:fe,skillLineageLink:pe,skillRemovalDialog:me,slackSetupCreateStep:he,slackSetupNameStep:ge,slackSetupOpenStep:_e,slackSetupTokensStep:ve,slackSetupWizard:ye,stackedBarTooltip:be,startupFailure:xe,statusBanner:Se,sttLanguagePicker:Ce,sttLanguagePickerModal:we,sttProviderForm:Te,subagentAvatarChip:Ee,systemPermissionsCard:De,telegramSetupConnectStep:Oe,telegramSetupCreateStep:ke,telegramSetupWizard:Ae,terminalPanel:je,themeStagePage:Me,themeToggle:Ne,tipCard:Pe,ttsProviderForm:Fe,updateToast:Ie,useAppDelete:Le,useAppDeployment:Re,useAssistantChannels:ze,useBookmarks:Be,useConnectClaude:Ve,useOauthConnect:He,useOpenUrlDirectives:Ue,useVoiceSamplePreview:We,useWorkspaceTheme:Ge,vercelTokenDialog:Ke,voiceList:qe,voicePickerField:Je,voicePickerModal:Ye,voiceProvidersNote:Xe,voiceTranscriptToggles:Ze,windowsMenuBar:Qe,domainVerificationChip:$e,managedServicesBanner:et,serviceCard:tt,channelAvatarDownload:nt,thresholdPresets:rt,scheduleFormatters:it};export{e as aboutPage,t as activeAssistantGate,n as addCredentialModal,r as addCreditsModal,i as appCard,a as appNavBar,o as appViewerContainer,s as assistantConnect,c as assistantFeatureFlagStore,l as avatarManagementModal,u as bundleConfirmPage,d as byoVoiceNote,nt as channelAvatarDownload,f as channelSetupCompleteNotice,p as chatAvatar,m as chooserAvatarChip,h as collapsibleNavSection,g as commandPalette,_ as companionIntro,v as companionSurface,y as companionWatchFramePage,b as contentActionBar,x as createAssistantDialog,S as dateRangeSelect,at as default,C as deleteAppDialog,w as deployDialogs,T as deployStore,E as detailPanelStopButton,D as detailPrimitives,O as dictationOverlayPage,k as discordNudgeBanner,A as discordSetupConnectStep,j as discordSetupCreateStep,M as discordSetupFinishStep,N as discordSetupInviteStep,P as discordSetupWizard,F as diskPressureBanner,$e as domainVerificationChip,I as downloadFeedback,L as editFooter,R as generateInviteLinkDialog,z as githubNudgeBanner,B as lazyBoundary,V as localNotification,H as macosAppBanner,et as managedServicesBanner,U as nativeAppBanner,W as notFound,G as nudgeChatBanner,K as onboardingBackButton,q as platformLoginNotice,J as profileCard,Y as profileQuickAddProvider,X as quickInputPage,Z as removeFromDeviceDialog,Q as resourcePressureBanner,$ as retireConfirmDialog,ee as rootHydrateFallback,te as rootLayout,ne as routeErrorBoundary,re as runtimeUpgradeBanner,it as scheduleFormatters,ie as sectionActionsButton,tt as serviceCard,ae as serviceFormControls,oe as shareConnectionLinkButton,se as shareFeedbackModal,ce as shareFeedbackModalFallback,le as shareFeedbackModalLoadError,ue as sideListDrawer,de as sidebarShell,fe as sidebarTree,pe as skillLineageLink,me as skillRemovalDialog,he as slackSetupCreateStep,ge as slackSetupNameStep,_e as slackSetupOpenStep,ve as slackSetupTokensStep,ye as slackSetupWizard,be as stackedBarTooltip,xe as startupFailure,Se as statusBanner,Ce as sttLanguagePicker,we as sttLanguagePickerModal,Te as sttProviderForm,Ee as subagentAvatarChip,De as systemPermissionsCard,Oe as telegramSetupConnectStep,ke as telegramSetupCreateStep,Ae as telegramSetupWizard,je as terminalPanel,Me as themeStagePage,Ne as themeToggle,rt as thresholdPresets,Pe as tipCard,Fe as ttsProviderForm,Ie as updateToast,Le as useAppDelete,Re as useAppDeployment,ze as useAssistantChannels,Be as useBookmarks,Ve as useConnectClaude,He as useOauthConnect,Ue as useOpenUrlDirectives,We as useVoiceSamplePreview,Ge as useWorkspaceTheme,Ke as vercelTokenDialog,qe as voiceList,Je as voicePickerField,Ye as voicePickerModal,Xe as voiceProvidersNote,Ze as voiceTranscriptToggles,Qe as windowsMenuBar};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={build:`Compilación`,tagline:`Asistente de IA para tu Mac`,version:`Versión`},t={connecting:`Conectando con tu asistente…`,logIn:`Iniciar sesión`,logOut:`Cerrar sesión`},n={cancel:`Cancelar`,credentialSaved:`Credencial guardada.`,description:`Añade una clave API o un token para que las herramientas e integraciones lo usen.`,fieldLabel:`Campo`,fieldPlaceholder:`p. ej. api_token`,labelOptional:`Etiqueta (opcional)`,labelPlaceholder:`p. ej. token de acceso personal de GitHub`,save:`Guardar`,saveFailed:`No se pudo guardar la credencial`,serviceLabel:`Servicio`,servicePlaceholder:`p. ej. github`,title:`Añadir credencial`,valueLabel:`Valor`,valuePlaceholder:`Introduce el valor secreto`},r={amount:`Importe`,cancel:`Cancelar`,configureAutoReload:`Configurar la recarga automática`,continue:`Continuar`,description:`Se te redirigirá a Stripe para completar el pago.`,title:`Añadir créditos`},i={openApp:`Abrir app`,pin:`Fijar`,previewTitle:`Vista previa de {name}`,unpin:`Desfijar`},a={close:`Cerrar`,copyLink:`Copiar enlace`,deploy:`Desplegar`,deployToVercel:`Desplegar en Vercel`,deployToVercelSubtitle:`Publicar como página estática`,deployedCopyLinkAria:`Desplegada en Vercel, copiar enlace`,deployedCopyLinkTooltip:`Desplegada: copiar enlace`,deployedToVercel:`Desplegada en Vercel`,deploying:`Desplegando…`,edit:`Editar`,expandApp:`Expandir app`,fullscreen:`Pantalla completa`,openApp:`Abrir app`,redeploy:`Volver a desplegar`,redeploySubtitle:`Publicar la versión actual`,share:`Compartir`,shareAndDeploy:`Compartir y desplegar`,shareExportSubtitle:`Exportar como archivo .vellum`,sharing:`Compartiendo…`},o={exitFullscreen:`Salir de pantalla completa`},s={failed:`No se pudo conectar con el asistente.`},c={updateFailed:`No se pudo actualizar "{label}". Se revirtió el cambio.`},l={accent:`Acento`,accentAutomatic:`Automático`,accentPickerLabel:`Color de acento`,accentReset:`Restablecer`,body:`Cuerpo`,color:`Color`,eyes:`Ojos`,keepUploadedDescription:`Guardar el personaje la reemplaza`,keepUploadedLabel:`Conservar tu imagen subida`,loadError:`No se pudieron cargar los componentes del avatar. Asegúrate de que tu asistente esté en ejecución.`,name:`Nombre`,next:`Siguiente {label}`,previous:`Anterior {label}`,randomize:`Aleatorio`,save:`Guardar`,saving:`Guardando…`,title:`Actualizar avatar`,uploadImage:`Subir imagen`,uploadedAlt:`Avatar subido`,useCharacterDescription:`Elige entre nuestros avatares integrados`,useCharacterLabel:`Usar un personaje en su lugar`},u={bySigner:`por {name}`,cancel:`Cancelar`,capabilities:`Capacidades`,createdBy:`Creado por`,hideWarnings:`Ocultar advertencias ({count})`,install:`Instalar`,installAnyway:`Instalar de todos modos`,loading:`Cargando...`,showWarnings:`Mostrar advertencias ({count})`,size:`Tamaño`},d={body:`Tu asistente habla a través de un proveedor que configuraste tú. Define su voz en <settingsLink>Modelos y servicios</settingsLink>.`},f={verifyTitle:`Último paso: confirma que eres tú`,verifyAction:`Verificarme`,verifyBody:`Tu asistente aún no sabe cuál cuenta de {channel} es la tuya, así que no te responderá. Di "verifícame en {channel}" en el chat para terminar.`,verifyActionBody:`Tu asistente aún no sabe cuál cuenta de {channel} es la tuya, así que no te responderá. Lo termina contigo en el chat.`,verifiedTitle:`Identidad verificada`,verifiedBody:`Tu asistente conoce tu cuenta de {channel} y te responderá. Todo listo.`},p={alt:`Avatar del asistente`,fallbackLetter:`V`},m={alt:`Avatar del asistente`},h={actionsTitle:`Acciones de {title}`},g={ariaLabel:`Paleta de comandos`,clear:`Borrar`,clearSearch:`Borrar búsqueda`,closeSearch:`Cerrar búsqueda`,noResults:`Sin resultados`,placeholder:`Buscar conversaciones, recuerdos…`,searchAriaLabel:`Buscar`,searching:`Buscando…`},_={ariaLabel:`Te presento a tu compañero`,done:`Entendido`,meet:{body:`Me quedo en tu escritorio, aunque Vellum no esté a la vista.`,title:`Este soy yo`,titleNamed:`Soy {name}`},menu:{body:`Ahí puedes ocultarme o cambiar mi tamaño.`,title:`Haz clic derecho sobre mí`},next:`Siguiente`,skip:`Omitir`,talk:{body:`Inicia una conversación por voz.`,title:`Talk`}},v={allow:`Permitir`,calling:`Llamando…`,callingNamed:`Llamando a {name}…`,captureKind:`Tipo de fuente`,captureNothing:`Nada que mostrar`,capturePicker:`Qué enseñar`,captureScreen:`Pantalla {n}`,captureScreens:`Pantallas`,captureTabs:`Pestañas de Chrome`,captureWindows:`Ventanas`,deny:`Denegar`,draw:`Dibujar`,drawTools:`Herramienta de dibujo`,drawFreehand:`Mano alzada`,drawLine:`Línea`,drawBox:`Recuadro`,drawCircle:`Círculo`,endSession:`Finalizar sesión`,muteAssistant:`Silenciar asistente`,muteMicrophone:`Silenciar micrófono`,notNow:`Ahora no`,offerCopy:`Copiar`,offerDiscard:`Descartar`,offerHeard:`{app} pegó eso`,offerNowhere:`No hay dónde ponerlas`,offerQuit:`Salir de {app}`,offerUse:`Usar la de Vellum`,offerVersion:`Vellum oyó`,openVellum:`Abrir Vellum`,share:`Compartir`,sharePicker:`Qué compartir`,showSummary:`Mostrar resumen`,stopTeaching:`Dejar de enseñar`,summarizing:`Resumiendo`,talk:`Hablar`,teach:`Enseñar`,unmuteAssistant:`Activar sonido del asistente`,unmuteMicrophone:`Activar micrófono`},y={sharingScreen:`Compartiendo tu pantalla`,sharingScreenNamed:`Compartiendo tu pantalla con {name}`,sharingWindow:`Compartiendo una ventana`,sharingWindowNamed:`Compartiendo una ventana con {name}`,teaching:`Enseñando`,teachingNamed:`Enseñando a {name}`},b={copiedAria:`Copiado`,copyFailed:`No se pudo copiar el contenido del archivo.`,copyFileContentsAria:`Copiar contenido del archivo`,downloadFileAria:`Descargar archivo`,editFileAria:`Editar archivo`},x={cancel:`Cancelar`,create:`Crear`,description:`Provisiona un asistente nuevo. Se iniciará en segundo plano.`,namePlaceholder:`Nombre del asistente (opcional)`,title:`Nuevo asistente`,toastSuccess:`Nuevo asistente creado.`},S={ariaLabel:`Rango de fechas`,lastDays:`{days, plural, one {Último # día} other {Últimos # días}}`},C={delete:`Eliminar`,deleting:`Eliminando…`,message:`"{name}" se eliminará de forma permanente.`,title:`Eliminar app`},w={confirmLabel:`Deja que tu asistente se encargue`,confirmLabelNamed:`Deja que {assistantName} se encargue`,message:`"{appName}" usa servicios de backend que no funcionarán en una página estática de Vercel. Tu asistente puede desplegarla correctamente con funciones serverless.`,messageNamed:`"{appName}" usa servicios de backend que no funcionarán en una página estática de Vercel. {assistantName} puede desplegarla correctamente con funciones serverless.`,title:`Esta app necesita un despliegue completo`},T={appExported:`Aplicación exportada`,deployFailed:`No se pudo desplegar`,deployedToVercel:`Desplegada en Vercel`,open:`Abrir`,shareFailed:`No se pudo compartir la aplicación`},E={tooltip:`Detener`},D={copied:`Copiado`,copy:`Copiar`,showLess:`Mostrar menos`,showMore:`Mostrar más`},O={stopRecording:`Detener grabación`},k={ariaLabel:`Únete a la comunidad de Discord de Vellum`,ctaLong:`Unirse a Discord`,ctaShort:`Unirse`,subtitleLong:`Habla con el equipo: comparte comentarios, solicita funciones y obtén respuestas más rápido`,subtitleShort:`Comparte comentarios, solicita funciones y obtén respuestas más rápido`,title:`¡Únete a nuestra comunidad!`},A={instructions:`Pega el token del bot que copiaste de la página Bot.`,verificationNoticeTitle:`Ignora la página "Verify your App"`,verificationNoticeBody:`Discord la muestra a cada app nueva. Solo importa a partir de 100 servidores.`,botTokenLabel:`Token del bot`,save:`Conectar`,saving:`Conectando...`,saved:`Conectado. Ahora añade el bot a un servidor.`,botTokenPlaceholder:`MTk4NjIyNDgzNzAyNDU0...`},j={inPortal:`En el portal de desarrolladores de Discord:`,stepCreateApp:`Pulsa <strong>New Application</strong> y ponle a la app el nombre de tu asistente:`,copyName:`Copiar nombre`,copied:`¡Copiado!`,stepAppIcon:`Opcional: descarga el avatar y súbelo en <strong>General Information</strong> como icono de la app.`,stepResetToken:`Ve a la página <strong>Bot</strong> en el menú de la app, pulsa <strong>Reset Token</strong> y copia el token de inmediato. Discord solo lo muestra una vez.`,stepIntentsOff:`En la misma página, deja apagados los tres interruptores de <strong>Privileged Gateway Intents</strong>. Tu asistente no los necesita: solo lee mensajes directos y mensajes que lo mencionan.`,openPortal:`Abrir el portal de Discord`,continue:`Ya tengo mi token`},M={connectedTitle:`Bot añadido`,connectedBody:`El token está guardado y el bot ya está en tu servidor. La parte de Discord está lista.`},N={instructions:`Tu bot no puede ver ni responder nada hasta que entre en un servidor. Abre el enlace, elige tu servidor y aprueba.`,openInvite:`Añadir a un servidor`,confirmJoined:`Ya añadí el bot`,noAppId:`Conecta primero un token del bot y vuelve para añadirlo a un servidor.`},P={channelLabel:`Discord`,stepCreate:`Crear app`,stepConnect:`Conectar`,stepInvite:`Añadir al servidor`,stepFinish:`Finalizar`,copyError:`No se pudo copiar el nombre. Escríbelo en Discord en su lugar.`},F={acknowledge:`Reconocer`,acknowledging:`Reconociendo...`,cleanupBody:`Pide a tu asistente que libere espacio antes de que se agote y entre en un estado bloqueado.`,cleanupTitle:`El modo de limpieza está activo`,criticalBody:`Tu asistente entrará en un estado bloqueado si se queda sin almacenamiento.`,criticalModalDescription:`Tu asistente entrará en un estado bloqueado si se queda sin almacenamiento. Debes pedir a tu asistente que libere espacio o aumentar tu almacenamiento.`,criticalTitle:`El almacenamiento está críticamente bajo`,dontShowAgain:`No mostrar de nuevo`,manageStorage:`Gestionar almacenamiento`,review:`Revisar`,upgrade:`Mejorar plan`,warningBody:`Libera espacio para evitar interrupciones.`,warningBodyWithUpgrade:`Libera espacio o añade más almacenamiento para evitar interrupciones.`,warningTitle:`Tu almacenamiento está casi lleno`},I={failed:`No se pudo descargar el archivo`,revealMac:`Mostrar en Finder`,revealWindows:`Mostrar en el Explorador de archivos`,saved:`Guardado en Descargas`,started:`Descarga iniciada`,startedDescription:`Busca {filename} en las descargas de tu navegador.`},L={discard:`Descartar`,save:`Guardar`,saving:`Guardando…`},R={copyAriaLabel:`Copiar enlace de invitación`,createFailed:`No se pudo crear el enlace de invitación. Asegúrate de que A2A esté habilitado para tu asistente.`,creating:`Creando enlace de invitación…`,done:`Listo`,shareHint:`Comparte este enlace con otro propietario de asistente para establecer una conexión.`,title:`Compartir enlace de conexión`,tryAgain:`Reintentar`},z={ariaLabel:`Vellum es de código abierto en GitHub`,ctaAriaLabel:`Dar una estrella a Vellum en GitHub`,ctaLabel:`Danos una estrella`,subtitle:`Danos una estrella en GitHub o contribuye`,title:`Vellum es de código abierto`},B={loadError:`Esta sección no se pudo cargar. Recarga la página para intentarlo de nuevo.`},V={goToConversation:`Ir a la conversación`},H={ariaLabel:`Descargar la app de macOS`,ctaAriaLabel:`Descargar la app de macOS`,ctaLabel:`Descargar`,subtitle:`Uso del ordenador · acceso a terminal · automatización nativa`,title:`Consigue la app de macOS`},U={bannerAria:`Descargar la app de {appName}`,bannerAriaGeneric:`Descargar la app móvil de Vellum`,download:`Descargar`,downloadAppAria:`Descargar la app de {appName}`,downloadAppAriaGeneric:`Descargar la app móvil de Vellum`,subtitle:`Notificaciones push · inicio biométrico · háptica`,title:`Obtén la app de {appName}`,titleGeneric:`Obtén la app de Vellum`},W={backToAssistant:`Volver a tu asistente`,badge:`Error 404`,body:`La página que buscas no existe o puede haberse movido.`,goBack:`Atrás`,title:`Página no encontrada`},G={dismissAria:`Descartar`},K={back:`Atrás`},q={cancel:`Cancelar`,logIn:`Iniciar sesión`},J={assistantHandleIdleEmpty:`Tu asistente aún no tiene identificador; reclama uno para poder mencionarlo.`,assistantHandleLabel:`Identificador del asistente`,assistantHandleUpdated:`Identificador del asistente actualizado.`,available:`Disponible`,availableHelper:`Disponible.`,checkAvailabilityFailed:`No se pudo comprobar la disponibilidad.`,checkingAvailability:`Comprobando disponibilidad…`,chooseDifferentHandle:`Elige un identificador diferente.`,emailLabel:`Correo electrónico`,handleHelper:`Letras minúsculas, dígitos, guiones y guiones bajos. De 3 a 30 caracteres.`,handleLocked:`El identificador de tu asistente está bloqueado porque se usa como su subdominio de correo. Para cambiarlo, <releaseLink>libera el subdominio</releaseLink> primero.`,loading:`Cargando tu perfil…`,notAvailable:`No disponible`,profileUpdated:`Perfil actualizado.`,save:`Guardar`,saved:`Guardado`,saving:`Guardando…`,subtitle:`Gestiona los detalles y las preferencias de tu cuenta.`,title:`Perfil`,userHandleIdleAutoGenerated:`Tu identificador se generó automáticamente al registrarte; elige uno que te guste.`,userHandleLabel:`Identificador de usuario`},Y={created:`Perfil "{name}" creado`},X={logoAlt:`Vellum`,placeholder:`Pregunta lo que quieras a Vellum...`},Z={confirm:`Eliminar`,messageOrigin:`Esto no afectará a {assistantName} ni cerrará tu sesión allí. Solo olvida la entrada en este dispositivo. Puedes añadirla de nuevo cuando quieras.`,messagePaired:`Esto no afectará a {assistantName} en su máquina anfitriona. Solo olvida el emparejamiento en este dispositivo. Puedes emparejarlo de nuevo cuando quieras con vellum connect import.`,messagePlatform:`Esto no eliminará a {assistantName}. Solo lo quita de este dispositivo. Al iniciar sesión volverá a estar disponible.`,title:`¿Eliminar de este dispositivo?`},Q={body:`Tu asistente está trabajando duro y está alcanzando sus límites de recursos actuales. Mejora tu plan para que siga funcionando sin problemas.`,bodyNoUpgrade:`Tu asistente está trabajando duro y está alcanzando sus límites de recursos actuales.`,dontShowAgain:`No mostrar de nuevo`,title:`Tu asistente necesita más potencia`,titleNamed:`{assistantName} necesita más potencia`,upgrade:`Mejorar plan`},$={confirmLabel:`Retirar`,message:`Esto retirará de forma permanente este asistente y todos sus datos. Tendrás que volver a completar el flujo de incorporación para crear uno nuevo. Esta acción no se puede deshacer.`,title:`Retirar asistente`},ee={loadingAria:`Cargando`},te={unnamedAssistant:`el asistente`},ne={chunkFailBody:`Esta sección no se pudo cargar. Probablemente un fallo de red o una versión antigua. Recarga la página para intentarlo de nuevo.`,reload:`Recargar`},re={confirmMessage:`¿Actualizar a la versión {version}? El asistente no estará disponible brevemente durante la actualización.`,confirmTitle:`Actualizar el runtime del asistente`,later:`Más tarde`,title:`Nueva versión del asistente disponible: {version}`,toastComplete:`Actualización completa. Tu asistente está en buen estado.`,toastFailed:`No se pudo iniciar la actualización. Inténtalo de nuevo.`,update:`Actualizar`},ie={ariaLabel:`Acciones de {name}`},ae={reset:`Restablecer`,save:`Guardar`},oe={label:`Compartir enlace de conexión`},se={aboutDiagnosticsAria:`Acerca de los diagnósticos`,addFiles:`Añadir archivos`,adminOnlyHint:`Solo para administradores: crea el archivo de diagnósticos en local y lo descarga en lugar de enviar comentarios o notificar a Slack.`,attachments:`Adjuntos`,bugTip:`Consejo: obtén soporte más rápido publicando en nuestra <discordLink>comunidad de Discord</discordLink>`,cancel:`Cancelar`,category:`Categoría`,closeAria:`Cerrar`,diagnosticsTooltip:`Los diagnósticos incluyen el contexto del navegador, los registros del asistente y marcas de tiempo; nunca contraseñas ni credenciales.`,downloadDiagnostics:`Descargar diagnósticos directamente`,downloadDiagnosticsAria:`Descargar diagnósticos directamente`,downloadDiagnosticsButton:`Descargar diagnósticos`,dropFiles:`Suelta archivos para adjuntarlos…`,email:`Correo electrónico`,featureTip:`Consejo: vota funciones en nuestro <roadmapLink>roadmap público</roadmapLink>`,includeConversation:`Incluir la conversación más reciente`,includeConversationAria:`Incluir la conversación más reciente`,includeDiagnostics:`Incluir diagnósticos`,includeDiagnosticsAria:`Incluir diagnósticos del navegador`,messageLabelBug:`¿Qué salió mal?`,messageLabelFeature:`Describe tu idea`,messageLabelOther:`¿Qué tienes en mente?`,messagePlaceholderBug:`¿Qué esperabas que ocurriera y qué ocurrió en su lugar?`,messagePlaceholderFeature:`¿Qué problema te resolvería esto?`,messagePlaceholderOther:`Comparte tus pensamientos...`,preparingDiagnostics:`Preparando diagnósticos…`,reasonBugReport:`Informe de error`,reasonFeatureRequest:`Solicitud de función`,reasonOther:`Otro`,removeAttachmentAria:`Eliminar {name}`,sendingFeedback:`Enviando comentarios…`,submit:`Enviar`,timeRange:`Intervalo de tiempo`,timeRangeAllTime:`Todo el tiempo`,timeRangeAria:`Intervalo de tiempo de diagnósticos`,timeRangePast24Hours:`Últimas 24 horas`,timeRangePastHour:`Última hora`,title:`Compartir comentarios`},ce={loadingAria:`Cargando el formulario de comentarios`},le={close:`Cerrar`,message:`No se pudo cargar el formulario de comentarios.`,retry:`Reintentar`},ue={closeAria:`Cerrar`,closeSidebarAria:`Cerrar barra lateral`,openSidebarAria:`Abrir barra lateral`},de={backFrom:`Volver desde {title}`,backToMenu:`Volver al menú de {title}`,navigationAria:`Navegación de {title}`},fe={ariaLabel:`Navegación de la barra lateral`},pe={label:`Aprendido de esta conversación`},me={message:`¿Quitar "{name}" de este asistente?`,remove:`Quitar`,title:`Quitar skill`},he={approvalNotice:`Si Slack muestra “Request approval” en lugar de <strong>Install</strong>, un administrador del espacio de trabajo debe aprobar la app primero.`,createdApp:`He creado la app`,inSlack:`En Slack:`,stepManifest:`En <strong>Or start your own way</strong>, elige <strong>From a manifest</strong> y luego <strong>Continue</strong>`,stepPaste:`Elige tu espacio de trabajo y pega el manifiesto`,stepReview:`Revisa los permisos y haz clic en <strong>Create and Install</strong>`},ge={appName:`Nombre de la app`,appNamePlaceholder:`Mi asistente`,copied:`¡Copiado!`,copyManifest:`Copiar manifiesto`,description:`Descripción (opcional)`,descriptionHelper:`Se muestra en el perfil de Slack de la app.`,descriptionPlaceholder:`En qué ayuda este asistente`,intro:`Ponle nombre a tu app de Slack y copia su manifiesto. Todos los permisos y ajustes vienen preconfigurados.`,next:`Siguiente`},_e={body:`Abre Slack en una pestaña nueva para crear la app y vuelve aquí para los pasos siguientes.`,copied:`¡Copiado!`,copyManifest:`Copiar manifiesto`,manifestCopiedNotice:`Copiaste el manifiesto de esta app aquí. Si has copiado algo desde entonces, cópialo de nuevo antes de pegar.`,manifestNotCopiedNotice:`Aún no has copiado el manifiesto de esta app. El modal de crear app de Slack no tiene otra forma de obtenerlo, así que cópialo antes de pegar.`,next:`Siguiente`,openSlack:`Abrir Slack`},ve={appTokenLabel:`Token de la app`,botTokenLabel:`Token del bot`,connectSlack:`Conectar Slack`,connecting:`Conectando…`,credentialsSaved:`Credenciales guardadas`,instructions:`En la pantalla de confirmación de Slack, expande <credentials>Your app credentials</credentials> y copia ambos tokens.`,skipNotice:`Esa pantalla también ofrece una guía por línea de comandos y un botón <download>Download app files</download>. Omite ambos. Configuran una app local aparte, y este asistente solo necesita los dos tokens.`,savedBody:`Ambos tokens están guardados. La parte de Slack está lista.`},ye={channelLabel:`Slack`,copyError:`No se pudo copiar el manifiesto. Cópialo de nuevo antes de continuar.`,stepConnect:`Conectar`,stepCreate:`Crear`,stepName:`Nombre`,stepOpen:`Abrir`},be={total:`Total: {value}`},xe={reloadApp:`Recargar app`},Se={reconnecting:`Reconectando con tu asistente…`,dismiss:`Descartar`,goToDoctor:`Ir a Doctor`,resumeAssistant:`Reanudar asistente`,retryNow:`Reintentar ahora`,wakeUp:`Despertar`},Ce={allLanguages:`Todos los idiomas`,featured:`Destacados`,languagesAriaLabel:`Idiomas`,noMatch:`Ningún idioma coincide.`,searchAriaLabel:`Buscar idiomas`,searchPlaceholder:`Buscar idiomas`,suggested:`Sugerido`},we={description:`Se aplica desde tu próximo turno hablado.`},Te={apiKeyLabel:`Clave de API`,apiKeyPlaceholderReplace:`•••••••• (Introduce una clave nueva para reemplazarla)`,providerAriaLabel:`Proveedor de STT`,providerLabel:`Proveedor`,saveFailed:`No se pudieron guardar los ajustes de voz a texto`,saveSuccess:`Ajustes de voz a texto guardados`,spokenLanguage:`Idioma hablado`,spokenLanguageApplies:`Se aplica a partir de tu próximo turno hablado.`,vellumTranscription:`La transcripción se realiza a través de tu cuenta de Vellum.`,windowsNativeDisplayName:`Dictado nativo de Windows`,windowsNativeSetupWarning:`Requiere Reconocimiento de voz básico para el idioma de visualización de Windows: abre Configuración > Hora e idioma > Idioma y región, selecciona los tres puntos junto al idioma de visualización, elige Opciones de idioma y, en Características de idioma, descarga Reconocimiento de voz básico.`,windowsNativeSubtitle:`Reconocimiento de voz integrado de Windows, ejecutado localmente mediante el asistente nativo de Windows. Funciona sin conexión y no necesita una clave de API.`},Ee={ariaLabel:`Subagente {subagentId}`},De={accessibilityDescription:`Permite que tu asistente haga clic, escriba y controle apps en tu nombre.`,accessibilityLabel:`Accesibilidad`,checking:`Comprobando permisos...`,dockIcon:`icono del Dock`,microphoneDescription:`Permite que tu asistente capture audio para entrada de voz y grabaciones.`,microphoneLabel:`Micrófono`,notificationBadgesDescription:`Permite que tu asistente muestre el recuento de conversaciones no vistas en el {surface}.`,notificationBadgesLabel:`Insignias de notificación`,notificationsDescription:`Permite que tu asistente envíe alertas de macOS para aprobaciones, mensajes y actualizaciones de tareas.`,notificationsLabel:`Notificaciones`,notificationsWindowsDescription:`Permite que tu asistente muestre notificaciones de Windows para aprobaciones, mensajes y actualizaciones de tareas.`,screenDescription:`Permite que tu asistente capture el contexto de la pantalla durante tareas de uso del ordenador.`,screenLabel:`Grabación de pantalla`,speechRecognitionDescription:`Permite que tu asistente transcriba tu voz a texto en el dispositivo.`,speechRecognitionLabel:`Reconocimiento de voz`,speechRecognitionWindowsDescription:`Permite que tu asistente transcriba tu voz a texto con el reconocimiento de voz de Windows.`,taskbarIcon:`icono de la barra de tareas`,title:`Permisos del sistema`},Oe={botTokenLabel:`Token del bot`,connectTelegram:`Conectar Telegram`,instructions:`Pega el token de la respuesta de BotFather. Es la línea completa después de <tokenLine>Use this token to access the HTTP API</tokenLine>.`,saving:`Guardando…`,savedTitle:`Token guardado`,savedBody:`El token del bot está guardado. La parte de Telegram está lista.`},ke={copied:`¡Copiado!`,copyName:`Copiar nombre`,displayNameHint:`Para el nombre visible, <strong>{suggestedName}</strong> mantiene este bot alineado con tu asistente. El nombre de usuario es independiente y no tiene que coincidir.`,inBotFather:`En BotFather:`,intro:`Los bots de Telegram se crean enviando un mensaje a <strong>@BotFather</strong>. Ábrelo, sigue las indicaciones y vuelve con el token que te dé.`,next:`Siguiente`,openBotFather:`Abrir BotFather`,stepDisplayName:`Dale un nombre visible, que es lo que la gente ve en el chat`,stepSendNewBot:`Envía <strong>/newbot</strong>`,stepTokenReply:`BotFather responde con un token después de <strong>Use this token to access the HTTP API</strong>`,stepUsername:`Dale un nombre de usuario, que debe ser único y terminar en <strong>bot</strong>`},Ae={channelLabel:`Telegram`,copyError:`No se pudo copiar el nombre. Escríbelo en BotFather en su lugar.`,stepConnect:`Conectar`,stepCreate:`Crear bot`},je={recoveryModeBanner:`Modo de recuperación activo: esta sesión está conectada al terminal de depuración.`},Me={accentFill:`Relleno de acento`,activeBorder:`Borde activo`,activeSurface:`Superficie activa`,assistantBubble:`Una respuesta del asistente, a ancho completo sobre la superficie de la página.`,buttonDisabled:`Deshabilitado`,buttonPrimary:`Principal`,buttonSecondary:`Secundario`,chatAssistant1:`Listo. El resumen está preparado. Los ingresos crecieron de forma constante, los dos riesgos señalados del trimestre pasado están resueltos y reuní en una página aparte los tres gráficos que conviene mostrar.`,chatAssistant2:`Programado para las 9:00. Incluiré los gráficos y una versión de un párrafo para quien lo revise en el teléfono.`,chatUser1:`¿Puedes resumir el informe trimestral antes de la reunión de mañana?`,chatUser2:`Perfecto. Envíalo al equipo por la mañana.`,composerPlaceholder:`Escribe a tu asistente`,faintText:`Texto tenue: el último escalón legible de la rampa.`,inputFilled:`Texto que alguien ya ha escrito en un campo.`,inputPlaceholder:`Un marcador de posición en un campo vacío`,newConversation:`Nueva conversación`,overlaySurface:`Superficie de superposición`,primaryText:`Texto principal: la superficie de lectura principal de la app.`,quietText:`Texto discreto: metadatos y marcas de tiempo.`,raisedCard:`Tarjeta elevada`,raisedCardBody:`Las superficies elevadas se sitúan por encima de los paneles y del fondo de la página.`,samplerTitle:`Muestreador de tema`,secondaryText:`Texto secundario: textos de apoyo y descripciones.`,sectionAccent:`Acento`,sectionButtons:`Botones`,sectionInputs:`Campos`,sectionMessages:`Mensajes`,sectionSurfaces:`Superficies y bordes`,sectionText:`Texto`,send:`Enviar`,subtleDivider:`Divisor sutil encima de esta línea.`,tertiaryText:`Texto terciario: pies de foto, etiquetas y marcadores de posición.`,userBubble:`Un mensaje del usuario, en su burbuja.`},Ne={dark:`Oscuro`,label:`Tema`,light:`Claro`,system:`Sistema`,velvet:`Velvet`},Pe={computerUseBodyLinux:`En este ordenador puedo trabajar con archivos, el terminal y el navegador.`,computerUseBodyMacos:`En este Mac puedo controlar aplicaciones y el escritorio por ti.`,computerUseBodyWindows:`En este PC puedo controlar aplicaciones y el escritorio por ti.`,computerUseTitleLinux:`Déjame usar este ordenador`,computerUseTitleMacos:`Déjame usar tu Mac`,computerUseTitleWindows:`Déjame usar tu PC`,dismiss:`Descartar`,nextTip:`Consejo siguiente`,pluginsBodyLinux:`Desde un copiloto de finanzas personales hasta un resumen familiar diario.`,pluginsBodyMacos:`Desde un copiloto de finanzas personales hasta un modo que vive en la muesca de tu MacBook.`,pluginsBodyWindows:`Desde un copiloto de finanzas personales hasta un resumen familiar diario.`,quickInputBody:`Pulsa {shortcut} para enviarme un mensaje rápido desde cualquier aplicación.`,quickInputBodyWithoutShortcut:`Envíame un mensaje rápido desde cualquier aplicación usando Entrada rápida.`,previousTip:`Consejo anterior`},Fe={apiKey:`Clave de API`,apiKeyRequired:`Guarda una clave de API para este proveedor antes de probar.`,chooseFromCatalog:`Elegir del catálogo`,customVoiceIdAriaLabel:`ID de voz personalizado`,noManagedVoices:`No hay voces gestionadas disponibles en este momento.`,provider:`Proveedor`,providerAriaLabel:`Proveedor de TTS`,saveFailed:`No se pudieron guardar los ajustes de texto a voz`,saved:`Ajustes de texto a voz guardados`,test:`Probar`,testing:`Probando…`,voice:`Voz`,voiceId:`ID de voz`,voiceIdPlaceholder:`Introduce un ID de voz`},Ie={available:`Actualización disponible. Iniciando descarga…`,closeAriaLabel:`Cerrar`,downloading:`Descargando actualización…`,ready:`Vellum {version} está listo.`,restartToInstall:`Reiniciar para instalar`,versionFallback:`actualización`},Le={deleteFailed:`No se pudo eliminar la app`},Re={copyFailed:`No se pudo copiar el enlace. Ábrelo en {url}`,linkCopied:`Enlace copiado`,open:`Abrir`},ze={setupPrompt:{slack:`Quiero comunicarme contigo por Slack. Vamos a configurarlo.`,telegram:`Quiero comunicarme contigo por Telegram. Vamos a configurarlo.`,discord:`Quiero comunicarme contigo por Discord. Vamos a configurarlo.`,email:`Quiero enviarte correos. Vamos a configurar tu dirección de correo.`,phone:`Quiero poder llamarte. Vamos a conseguirte un número de teléfono.`},finishPrompt:{slack:`Slack está configurado pero no funciona. ¿Puedes terminarlo?`,telegram:`Telegram está configurado pero no funciona. ¿Puedes terminarlo?`,discord:`Discord está configurado pero no funciona. ¿Puedes terminarlo?`,email:`Mi dirección de correo está configurada pero no funciona. ¿Puedes terminarla?`,phone:`Mi número de teléfono está configurado pero no funciona. ¿Puedes terminarlo?`}},Be={addFailed:`No se pudo marcar el mensaje.`,removeFailed:`No se pudo quitar el marcador.`},Ve={exchangeFailed:`Comprueba la clave pegada e inténtalo de nuevo.`,failed:`No se pudo conectar Claude. Inténtalo de nuevo.`,notStarted:`Primero inicia el flujo de Connect Claude.`,pasteEmpty:`Pega el código que se muestra en la página de Claude.`,popupBlocked:`Tu navegador bloqueó la pestaña de inicio de sesión. Permite las ventanas emergentes para este sitio y vuelve a hacer clic en Conectar.`,startFailed:`No se pudo iniciar Connect Claude. Inténtalo de nuevo.`,timedOut:`Se agotó el tiempo de espera para conectar Claude. Inténtalo de nuevo.`},He={accountConnected:`Cuenta de {name} conectada.`,authorizationError:`Error de {name}: {code}`,authorizationFailed:`La autorización de {name} falló`,popupBlocked:`Ventana emergente bloqueada. Permite las ventanas emergentes e inténtalo de nuevo.`,startFailed:`No se pudo iniciar la autorización de {name}.`,startFailedWithReason:`No se pudo iniciar la autorización de {name}: {reason}`},Ue={blocked:`Tu navegador bloqueó una página que el asistente intentó abrir.`,openPage:`Abrir página`},We={playFailed:`No se pudo reproducir la muestra de voz.`},Ge={updated:`Tema actualizado`},Ke={body:`Introduce tu token de API de Vercel para publicar apps como páginas estáticas.`,cancel:`Cancelar`,createToken:`Crear un token en Vercel →`,save:`Guardar`,saveFailed:`No se pudo guardar el token de Vercel.`,saving:`Guardando…`,title:`Conectar Vercel`,tokenLabel:`Token de API`,tokenPlaceholder:`Token de API de Vercel`},qe={assistantVoiceAriaLabel:`Voz del asistente`,defaultSuffix:`(predeterminada)`,previewVoice:`Vista previa de {description}`,providerAriaLabel:`Proveedor de voz`,stopPreview:`Detener vista previa`},Je={ariaLabel:`Voz`,selectVoice:`Selecciona una voz`},Ye={done:`Listo`,title:`Voces`},Xe={body:`Los proveedores de voz, la transcripción y las claves de API están en <modelsLink>Modelos y servicios</modelsLink>.`},Ze={recommendedOff:`Recomendado desactivado`},Qe={developer:`Desarrollador`,file:`Archivo`,help:`Ayuda`,view:`Ver`},$e={checkingDomain:`Comprobando dominio…`,domainVerified:`Dominio verificado`,failedTitle:`La verificación del dominio falló. Es posible que los registros DNS no se hayan propagado correctamente. Puedes intentar liberar y volver a registrar el dominio.`,unknownStatus:`Estado desconocido`,unknownStatusTitle:`No se pudo obtener el estado de verificación del dominio.`,verificationFailed:`Verificación fallida`,verifiedTitle:`Los registros DNS se han verificado. Tu dominio está listo para enviar y recibir correo.`,verifyingDomain:`Verificando dominio…`,verifyingTitle:`Los registros DNS se han aprovisionado. Esperando a que el proveedor de correo los verifique; esto suele tardar unos minutos.`},et={body:`Los servicios administrados se miden y se deducen del saldo de tu cuenta de Vellum. <link>Ver precios</link>`},tt={managedLabel:`Administrado`,modeToggleAriaLabel:`Modo de servicio`,yourOwnLabel:`Propio`},nt={aboutPage:e,activeAssistantGate:t,addCredentialModal:n,addCreditsModal:r,appCard:i,appNavBar:a,appViewerContainer:o,assistantConnect:s,assistantFeatureFlagStore:c,avatarManagementModal:l,bundleConfirmPage:u,byoVoiceNote:d,channelSetupCompleteNotice:f,chatAvatar:p,chooserAvatarChip:m,collapsibleNavSection:h,commandPalette:g,companionIntro:_,companionSurface:v,companionWatchFramePage:y,contentActionBar:b,createAssistantDialog:x,dateRangeSelect:S,deleteAppDialog:C,deployDialogs:w,deployStore:T,detailPanelStopButton:E,detailPrimitives:D,dictationOverlayPage:O,discordNudgeBanner:k,discordSetupConnectStep:A,discordSetupCreateStep:j,discordSetupFinishStep:M,discordSetupInviteStep:N,discordSetupWizard:P,diskPressureBanner:F,downloadFeedback:I,editFooter:L,generateInviteLinkDialog:R,githubNudgeBanner:z,lazyBoundary:B,localNotification:V,macosAppBanner:H,nativeAppBanner:U,notFound:W,nudgeChatBanner:G,onboardingBackButton:K,platformLoginNotice:q,profileCard:J,profileQuickAddProvider:Y,quickInputPage:X,removeFromDeviceDialog:Z,resourcePressureBanner:Q,retireConfirmDialog:$,rootHydrateFallback:ee,rootLayout:te,routeErrorBoundary:ne,runtimeUpgradeBanner:re,sectionActionsButton:ie,serviceFormControls:ae,shareConnectionLinkButton:oe,shareFeedbackModal:se,shareFeedbackModalFallback:ce,shareFeedbackModalLoadError:le,sideListDrawer:ue,sidebarShell:de,sidebarTree:fe,skillLineageLink:pe,skillRemovalDialog:me,slackSetupCreateStep:he,slackSetupNameStep:ge,slackSetupOpenStep:_e,slackSetupTokensStep:ve,slackSetupWizard:ye,stackedBarTooltip:be,startupFailure:xe,statusBanner:Se,sttLanguagePicker:Ce,sttLanguagePickerModal:we,sttProviderForm:Te,subagentAvatarChip:Ee,systemPermissionsCard:De,telegramSetupConnectStep:Oe,telegramSetupCreateStep:ke,telegramSetupWizard:Ae,terminalPanel:je,themeStagePage:Me,themeToggle:Ne,tipCard:Pe,ttsProviderForm:Fe,updateToast:Ie,useAppDelete:Le,useAppDeployment:Re,useAssistantChannels:ze,useBookmarks:Be,useConnectClaude:Ve,useOauthConnect:He,useOpenUrlDirectives:Ue,useVoiceSamplePreview:We,useWorkspaceTheme:Ge,vercelTokenDialog:Ke,voiceList:qe,voicePickerField:Je,voicePickerModal:Ye,voiceProvidersNote:Xe,voiceTranscriptToggles:Ze,windowsMenuBar:Qe,domainVerificationChip:$e,managedServicesBanner:et,serviceCard:tt};export{e as aboutPage,t as activeAssistantGate,n as addCredentialModal,r as addCreditsModal,i as appCard,a as appNavBar,o as appViewerContainer,s as assistantConnect,c as assistantFeatureFlagStore,l as avatarManagementModal,u as bundleConfirmPage,d as byoVoiceNote,f as channelSetupCompleteNotice,p as chatAvatar,m as chooserAvatarChip,h as collapsibleNavSection,g as commandPalette,_ as companionIntro,v as companionSurface,y as companionWatchFramePage,b as contentActionBar,x as createAssistantDialog,S as dateRangeSelect,nt as default,C as deleteAppDialog,w as deployDialogs,T as deployStore,E as detailPanelStopButton,D as detailPrimitives,O as dictationOverlayPage,k as discordNudgeBanner,A as discordSetupConnectStep,j as discordSetupCreateStep,M as discordSetupFinishStep,N as discordSetupInviteStep,P as discordSetupWizard,F as diskPressureBanner,$e as domainVerificationChip,I as downloadFeedback,L as editFooter,R as generateInviteLinkDialog,z as githubNudgeBanner,B as lazyBoundary,V as localNotification,H as macosAppBanner,et as managedServicesBanner,U as nativeAppBanner,W as notFound,G as nudgeChatBanner,K as onboardingBackButton,q as platformLoginNotice,J as profileCard,Y as profileQuickAddProvider,X as quickInputPage,Z as removeFromDeviceDialog,Q as resourcePressureBanner,$ as retireConfirmDialog,ee as rootHydrateFallback,te as rootLayout,ne as routeErrorBoundary,re as runtimeUpgradeBanner,ie as sectionActionsButton,tt as serviceCard,ae as serviceFormControls,oe as shareConnectionLinkButton,se as shareFeedbackModal,ce as shareFeedbackModalFallback,le as shareFeedbackModalLoadError,ue as sideListDrawer,de as sidebarShell,fe as sidebarTree,pe as skillLineageLink,me as skillRemovalDialog,he as slackSetupCreateStep,ge as slackSetupNameStep,_e as slackSetupOpenStep,ve as slackSetupTokensStep,ye as slackSetupWizard,be as stackedBarTooltip,xe as startupFailure,Se as statusBanner,Ce as sttLanguagePicker,we as sttLanguagePickerModal,Te as sttProviderForm,Ee as subagentAvatarChip,De as systemPermissionsCard,Oe as telegramSetupConnectStep,ke as telegramSetupCreateStep,Ae as telegramSetupWizard,je as terminalPanel,Me as themeStagePage,Ne as themeToggle,Pe as tipCard,Fe as ttsProviderForm,Ie as updateToast,Le as useAppDelete,Re as useAppDeployment,ze as useAssistantChannels,Be as useBookmarks,Ve as useConnectClaude,He as useOauthConnect,Ue as useOpenUrlDirectives,We as useVoiceSamplePreview,Ge as useWorkspaceTheme,Ke as vercelTokenDialog,qe as voiceList,Je as voicePickerField,Ye as voicePickerModal,Xe as voiceProvidersNote,Ze as voiceTranscriptToggles,Qe as windowsMenuBar};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./vendor-C_e0Rl2s.js";import{t}from"./react-DPM_L_aA.js";import{Fa as n,H as r,Q as i,Rt as a,Yr as o,da as s,hr as c,qa as l,v as u,xr as d}from"./icons-xHdc0dPY.js";import{A as f,Go as p,M as m,db as h,j as g,ob as _,pb as v,ui as y}from"./index-CleA12ha.js";var b=l(`git-pull-request`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`line`,{x1:`6`,x2:`6`,y1:`9`,y2:`21`,key:`rroup`}]]),x=t();function S({size:e=24,className:t,style:n}){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,x.jsx)(`path`,{d:`M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12`})})}function C({size:e=24,className:t,style:n}){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,x.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`})})}function w({size:e=24,className:t,style:n}){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,x.jsx)(`path`,{d:`M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814ZM9.545 15.568V8.432L15.818 12l-6.273 3.568Z`})})}function T({t:e}){return(0,x.jsx)(h,{padding:`lg`,className:`bg-[var(--surface-lift)]`,children:(0,x.jsxs)(`div`,{className:`relative`,children:[(0,x.jsx)(`div`,{className:`pointer-events-none absolute -right-16 -top-16 h-64 w-64 rounded-full opacity-30 blur-3xl`,style:{background:`radial-gradient(circle, var(--system-mid-weak) 0%, transparent 70%)`},"aria-hidden":!0}),(0,x.jsxs)(`div`,{className:`relative flex flex-col items-start gap-3`,children:[(0,x.jsxs)(_,{tone:`neutral`,children:[(0,x.jsx)(a,{className:`h-3.5 w-3.5`}),e(`communityPage.heroTag`)]}),(0,x.jsx)(`h1`,{className:`text-[28px] font-semibold leading-tight tracking-tight text-[var(--content-emphasised)]`,children:e(`communityPage.heroTitle`)}),(0,x.jsx)(`p`,{className:`max-w-xl text-body-medium-default text-[color:var(--content-tertiary)]`,children:e(`communityPage.heroDescription`)})]})]})})}function E({icon:e,text:t}){return(0,x.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,x.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md bg-[var(--surface-base)]`,children:(0,x.jsx)(e,{size:14,className:`text-[var(--content-secondary)]`,"aria-hidden":!0})}),(0,x.jsx)(`span`,{className:`text-body-medium-lighter text-[color:var(--content-secondary)]`,children:t})]})}function D({accentColor:e,iconColor:t=`var(--aux-white)`,label:r,icon:i,title:a,subtitle:o,benefits:s,primaryAction:c,secondaryAction:l}){return(0,x.jsx)(h,{padding:`lg`,className:`flex-1`,children:(0,x.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,x.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,x.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:e,color:t},children:i}),(0,x.jsx)(`span`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:r})]}),(0,x.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,x.jsx)(`h2`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:a}),(0,x.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:o})]}),(0,x.jsx)(`ul`,{className:`flex flex-col gap-3`,children:s.map(({icon:e,text:t})=>(0,x.jsx)(E,{icon:e,text:t},t))}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsxs)(v,{onClick:c.onClick,children:[c.icon,c.label]}),l&&(0,x.jsxs)(v,{variant:`ghost`,onClick:()=>window.open(l.href,`_blank`,`noopener,noreferrer`),children:[l.label,(0,x.jsx)(n,{className:`h-3.5 w-3.5`})]})]})]})})}function O({icon:e,iconBg:t,iconColor:n=`white`,title:r,description:i,href:a}){return(0,x.jsx)(`a`,{href:a,target:`_blank`,rel:`noopener noreferrer`,className:`flex flex-1 cursor-pointer`,children:(0,x.jsx)(h,{className:`flex-1 transition-shadow hover:shadow-md`,padding:`lg`,children:(0,x.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,x.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,x.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:t,color:n},children:e}),(0,x.jsx)(o,{size:14,className:`text-[var(--content-tertiary)]`,"aria-hidden":!0})]}),(0,x.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,x.jsx)(`span`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:r}),(0,x.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:i})]})]})})})}function k(){let{t}=e(`settings`),{handleStar:n}=m();return(0,x.jsxs)(`div`,{className:`space-y-6`,children:[(0,x.jsx)(T,{t}),(0,x.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-2`,children:[(0,x.jsx)(D,{accentColor:`var(--content-emphasised)`,iconColor:`var(--surface-base)`,label:t(`communityPage.openSourceLabel`),icon:(0,x.jsx)(S,{size:20}),title:t(`communityPage.openSourceTitle`),subtitle:t(`communityPage.openSourceSubtitle`),benefits:[{icon:r,text:t(`communityPage.openSourceBenefitStar`)},{icon:s,text:t(`communityPage.openSourceBenefitIssues`)},{icon:b,text:t(`communityPage.openSourceBenefitContribute`)}],primaryAction:{label:t(`communityPage.starOnGitHub`),icon:(0,x.jsx)(r,{size:16}),onClick:n},secondaryAction:{label:t(`communityPage.viewSource`),href:g}}),(0,x.jsx)(D,{accentColor:`#5865F2`,label:t(`communityPage.discordLabel`),icon:(0,x.jsx)(y,{size:20}),title:t(`communityPage.discordTitle`),subtitle:t(`communityPage.discordSubtitle`),benefits:[{icon:c,text:t(`communityPage.discordBenefitTeam`)},{icon:i,text:t(`communityPage.discordBenefitFeedback`)},{icon:u,text:t(`communityPage.discordBenefitAnswers`)}],primaryAction:{label:t(`communityPage.joinDiscord`),icon:(0,x.jsx)(y,{size:16,style:{color:`currentColor`}}),onClick:f}})]}),(0,x.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,x.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:t(`communityPage.moreFromVellum`)}),(0,x.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-3`,children:[(0,x.jsx)(O,{icon:(0,x.jsx)(d,{size:20}),iconBg:`#22c55e`,title:t(`communityPage.communityHubTitle`),description:t(`communityPage.communityHubDescription`),href:p}),(0,x.jsx)(O,{icon:(0,x.jsx)(C,{size:20}),iconBg:`var(--content-default)`,iconColor:`var(--surface-base)`,title:t(`communityPage.followOnXTitle`),description:t(`communityPage.followOnXDescription`),href:`https://x.com/vellum_ai`}),(0,x.jsx)(O,{icon:(0,x.jsx)(w,{size:20}),iconBg:`#ef4444`,title:t(`communityPage.youtubeChannelTitle`),description:t(`communityPage.youtubeChannelDescription`),href:`https://www.youtube.com/@Vellum_AI`})]})]})]})}export{k as CommunityPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ep as e}from"./index-CleA12ha.js";var t=`#5eead4`,n=/^#[0-9a-f]{6}$/i;function r(e){return e!==void 0&&n.test(e)?e:void 0}function i(t,n,i){return(t===null?void 0:r(t.accentHex))??r(n)??e(i?.color)??void 0}export{i as n,t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{iu as e,nu as t,ru as n,tu as r}from"./index-CleA12ha.js";var i=(e,t,n)=>t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom,a=(e,t)=>{let n={top:t.top,bottom:t.bottom};return t.left>=e.right?{left:e.right,right:t.left,...n}:{left:t.right,right:e.left,...n}},o=(e,{avatar:t,pill:n})=>{let r=t=>i(t,e.x,e.y);return r(t)?!0:n===null?!1:r(n)||r(a(t,n))};function s(i,a){let o=e(a),s=i/2,c=r(i),l=t(i,a),u=n(i,a),d=e=>e/o,f=Math.max(s,a-c),p=Math.max(s,c);return{scale:o,avatarRel:i/a,avatarHalf:s,baseline:c,gap:l,inUnits:d,lineAt:(e,t)=>e===`up`?`calc(100% - ${d(u-t)}px)`:`${d(u+t)}px`,edgeAt:(e,t)=>{let n=d(t),r=n<0?`calc(50% - ${-n}px)`:`calc(50% + ${n}px)`;return e===`left`?{right:r}:{left:r}},introStepOff:e=>(e===`up`?f:p)+l}}export{i as n,o as r,s as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{f as t,g as n,j as r}from"./vendor-C_e0Rl2s.js";import{b as i,t as a}from"./react-DPM_L_aA.js";import{Cn as o,Jr as s,Ki as c,Na as l,Oi as u,Sn as d,W as f,Wa as p,Xt as m,_n as h,i as g,m as _,p as v,qa as y,qr as b,yt as x}from"./icons-xHdc0dPY.js";import{$l as S,As as ee,Oi as C,Ss as w,Zy as T,_s as E,as as te,bs as D,cs as ne,dn as O,ds as re,eu as k,fs as ie,hs as ae,ii as oe,ls as se,ms as ce,os as le,ps as ue,sb as de,us as fe,vs as pe,xs as me,ys as he}from"./index-CleA12ha.js";import{n as A,r as ge,t as j}from"./companion-layout-BES0UfBy.js";import{n as M}from"./companion-accent-gsn9VuVB.js";var _e=y(`screen-share`,[[`path`,{d:`M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3`,key:`i8wdob`}],[`path`,{d:`M8 21h8`,key:`1ev6f3`}],[`path`,{d:`M12 17v4`,key:`1riwvh`}],[`path`,{d:`m17 8 5-5`,key:`fqif7o`}],[`path`,{d:`M17 3h5v5`,key:`1o3tu8`}]]),N=y(`slash`,[[`path`,{d:`M22 2 2 22`,key:`y4kqgn`}]]),P=e(i(),1),F=a(),ve=460,I=3,ye=88,be=3,L=[`screens`,`tabs`,`windows`],xe=(e,t)=>t===`screens`?e.displays.length:t===`tabs`?e.tabs.length:e.windows.length,Se=e=>L.find(t=>xe(e,t)>0)??`screens`,R=e=>e.kind===`display`?`display-${e.displayId}`:`window-${e.windowId}`;function Ce({sources:e,captureThumbnail:t,cardGrowth:n=`up`,avatarBox:i=S,optionsBox:a=S,cardRef:o,label:s,onPick:c}){let{t:l}=r(),{inUnits:u,lineAt:d,introStepOff:f}=j(i,a),p=u(f(n)),m={left:`50%`,top:d(n,0),transform:n===`up`?`translate(-50%, calc(-100% - ${p}px))`:`translate(-50%, ${p}px)`},g=e===null?[]:L.filter(t=>xe(e,t)>0),_=e!==null&&g.length===0,[v,y]=(0,P.useState)(null),b=e===null?`screens`:v!==null&&g.includes(v)?v:Se(e),x=(0,P.useMemo)(()=>e===null?[]:b===`screens`?e.displays.map(e=>{let t={kind:`display`,displayId:e.displayId};return{key:R(t),target:t}}):b===`windows`?e.windows.map(e=>{let t={kind:`window`,windowId:e.windowId};return{key:R(t),target:t}}):[],[b,e]),[ee,C]=(0,P.useState)(new Map),w=(0,P.useRef)(new Set),E=(0,P.useRef)(0),te=(0,P.useRef)(!1);(0,P.useEffect)(()=>(te.current=!0,()=>{te.current=!1}),[]),(0,P.useEffect)(()=>{w.current=new Set,E.current+=1,C(new Map),y(null)},[e]);let D=(0,P.useRef)(null);(0,P.useEffect)(()=>{D.current!==null&&(D.current.scrollTop=0)},[b]),(0,P.useEffect)(()=>{if(t!==void 0)for(let{key:e,target:n}of x){if(w.current.has(e))continue;w.current.add(e);let r=E.current,i=t=>{!te.current||r!==E.current||C(n=>new Map(n).set(e,t))};t(n).then(i,()=>{i(null)})}},[t,x]);let ne=e=>t===void 0?null:ee.get(e),O=e=>l(e===`screens`?`companionSurface.captureScreens`:e===`tabs`?`companionSurface.captureTabs`:`companionSurface.captureWindows`);return(0,F.jsxs)(`div`,{ref:o,role:`group`,"aria-label":s??l(`companionSurface.capturePicker`),"data-companion-capture-picker":!0,"data-theme":`dark`,className:`absolute flex flex-col rounded-2xl border border-white/10 bg-[#17181b]/95 p-1.5 shadow-lg shadow-black/40`,style:{width:ve,...m},onPointerDown:e=>{e.stopPropagation()},children:[g.length>1&&(0,F.jsx)(T,{className:`mx-auto mb-1.5 w-auto shrink-0`,items:g.map(e=>({value:e,label:O(e)})),value:b,ariaLabel:l(`companionSurface.captureKind`),onChange:y}),(0,F.jsx)(de,{ref:D,className:`max-h-48 flex-col px-0.5`,size:24,fadeEdges:`end`,hideScrollBar:!0,children:(0,F.jsxs)(`div`,{className:`flex flex-col`,"data-slot":`capture-sources`,children:[e===null&&(0,F.jsx)(V,{}),e!==null&&b===`screens`&&(0,F.jsx)(z,{children:e.displays.map(e=>{let t=l(`companionSurface.captureScreen`,{n:e.index+1}),n=R({kind:`display`,displayId:e.displayId});return(0,F.jsx)(we,{title:t,ariaLabel:t,answer:ne(n),fallback:(0,F.jsx)(h,{className:`size-5 text-white/40`,"aria-hidden":!0}),onClick:()=>{c?.({kind:`display`,displayId:e.displayId})}},n)})}),e!==null&&b===`windows`&&(0,F.jsx)(z,{children:e.windows.map(e=>{let t=R({kind:`window`,windowId:e.windowId}),n=e.title===``?e.app:e.title;return(0,F.jsx)(we,{title:n,ariaLabel:e.title===``?n:`${n} (${e.app})`,answer:ne(t),fallback:(0,F.jsx)(B,{icon:e.icon,large:!0}),icon:(0,F.jsx)(B,{icon:e.icon}),onClick:()=>{c?.({kind:`window`,windowId:e.windowId})}},t)})}),e!==null&&b===`tabs`&&(0,F.jsx)(`div`,{className:`flex flex-col`,children:e.tabs.map(e=>(0,F.jsx)(Te,{icon:(0,F.jsx)(B,{icon:e.icon}),title:e.title,onClick:()=>{c?.({kind:`tab`,chromeWindowId:e.chromeWindowId,tabIndex:e.tabIndex})}},`tab-${e.chromeWindowId}-${e.tabIndex}`))}),_&&(0,F.jsx)(`span`,{className:`px-2 py-3 text-[12px] text-white/50`,children:l(`companionSurface.captureNothing`)})]})})]})}function z({children:e}){return(0,F.jsx)(`div`,{className:`grid gap-1.5 py-0.5`,style:{gridTemplateColumns:`repeat(${I}, minmax(0, 1fr))`},children:e})}function we({title:e,ariaLabel:t,answer:n,fallback:r,icon:i,onClick:a}){return(0,F.jsxs)(`button`,{type:`button`,"aria-label":t,"data-slot":`capture-source`,className:`group flex min-w-0 flex-col gap-1 rounded-lg p-1 text-left transition-colors outline-none hover:bg-white/10 focus-visible:ring-1 focus-visible:ring-white/40 focus-visible:ring-inset active:bg-white/15`,onClick:a,children:[(0,F.jsx)(`span`,{"data-slot":`capture-preview`,className:`flex items-center justify-center overflow-hidden rounded-md bg-black/40 ring-1 ring-white/10 ${n===void 0?`animate-pulse`:``}`,style:{height:ye},children:n==null?r:(0,F.jsx)(`img`,{src:n,alt:``,draggable:!1,className:`max-h-full max-w-full object-contain`})}),(0,F.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1`,children:[i,(0,F.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[11px] text-white/75 group-hover:text-white/90`,children:e})]})]})}function Te({icon:e,title:t,onClick:n}){return(0,F.jsxs)(`button`,{type:`button`,"aria-label":t,"data-slot":`capture-source`,className:`flex h-8 w-full shrink-0 items-center gap-2 rounded-lg px-2 text-left text-[12px] text-white/85 transition-colors outline-none hover:bg-white/10 focus-visible:ring-1 focus-visible:ring-white/40 focus-visible:ring-inset active:bg-white/15`,onClick:n,children:[e,(0,F.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t})]})}function B({icon:e,large:t=!1}){return(0,F.jsx)(`span`,{className:`flex shrink-0 items-center justify-center overflow-hidden ring-1 ring-white/10 ${t?`size-7 rounded-lg`:`size-3.5 rounded-[4px]`}`,children:e===void 0?(0,F.jsx)(p,{className:t?`size-5 text-white/40`:`size-3 text-white/70`,"aria-hidden":!0}):(0,F.jsx)(`img`,{src:e,alt:``,className:`size-full`,draggable:!1})})}function V(){return(0,F.jsx)(z,{children:Array.from({length:be},(e,t)=>(0,F.jsxs)(`div`,{className:`flex flex-col gap-1 p-1`,"aria-hidden":!0,children:[(0,F.jsx)(`span`,{className:`animate-pulse rounded-md bg-white/10`,style:{height:ye}}),(0,F.jsx)(`span`,{className:`h-2 animate-pulse rounded-full bg-white/10`,style:{width:t===0?`70%`:`45%`}})]},t))})}var Ee=260;function H({offer:e,growth:t=`right`,cardGrowth:n=`up`,avatarBox:i=S,optionsBox:a=S,cardRef:o,onAnswer:s}){let{t:c}=r(),l=e.reason===`claimed`?c(`companionSurface.offerVersion`):c(`companionSurface.offerNowhere`),{inUnits:u,avatarHalf:d,lineAt:f,edgeAt:p,introStepOff:m}=j(i,a),h=u(m(n)),g=p(t,-d),_={top:f(n,0),transform:n===`up`?`translateY(calc(-100% - ${h}px))`:`translateY(${h}px)`};return(0,F.jsxs)(`div`,{ref:o,role:`group`,"aria-label":l,"data-companion-dictation-offer":!0,className:`absolute flex flex-col gap-2 rounded-2xl border border-white/10 bg-[#17181b]/95 px-3.5 py-3 shadow-lg shadow-black/40`,style:{width:Ee,...g,..._},onPointerDown:e=>{e.stopPropagation()},children:[(0,F.jsx)(`p`,{className:`text-[11px] font-medium tracking-wide text-white/45 uppercase select-none`,children:l}),(0,F.jsx)(de,{className:`max-h-40 flex-col`,size:20,fadeEdges:`end`,hideScrollBar:!0,children:(0,F.jsx)(`p`,{dir:`auto`,className:`text-[13px] leading-[1.45] text-white/90`,children:e.text})}),(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-1 pt-0.5`,children:[(0,F.jsx)(`button`,{type:`button`,className:`h-7 rounded-full px-2.5 text-[12px] text-white/55 transition-colors hover:bg-white/10 hover:text-white/80`,onClick:()=>s?.(`dismiss`),children:e.reason===`claimed`?c(`companionSurface.notNow`):c(`companionSurface.offerDiscard`)}),e.reason===`claimed`?(0,F.jsx)(`button`,{type:`button`,className:`h-7 rounded-full px-2.5 text-[12px] text-white/70 transition-colors hover:bg-white/10 hover:text-white`,onClick:()=>s?.(`quit`),children:c(`companionSurface.offerQuit`,{app:e.app})}):null,(0,F.jsx)(`button`,{type:`button`,className:`h-7 rounded-full bg-white/15 px-3 text-[12px] text-white transition-colors hover:bg-white/25`,onClick:()=>s?.(e.reason===`claimed`?`use`:`copy`),children:e.reason===`claimed`?c(`companionSurface.offerUse`):c(`companionSurface.offerCopy`)})]})]})}var De=244,U={meet:{title:`companionIntro.meet.title`,body:`companionIntro.meet.body`},talk:{title:`companionIntro.talk.title`,body:`companionIntro.talk.body`},menu:{title:`companionIntro.menu.title`,body:`companionIntro.menu.body`}},Oe=e=>e===`talk`?e:void 0,ke=e=>e===null||e===`meet`?null:`hover`;function Ae({beat:e,growth:t=`right`,cardGrowth:n=`up`,avatarBox:i=S,optionsBox:a=S,accentHex:o,assistantName:s,cardRef:c,onAdvance:l}){let{t:u}=r(),d=k.indexOf(e),f=d===k.length-1,p=U[e],{inUnits:m,avatarHalf:h,lineAt:g,edgeAt:_,introStepOff:v}=j(i,a),y=m(v(n)),b=_(t,-h),x={top:g(n,0),transform:n===`up`?`translateY(calc(-100% - ${y}px))`:`translateY(${y}px)`};return(0,F.jsxs)(`div`,{ref:c,role:`group`,"aria-label":u(`companionIntro.ariaLabel`),className:`absolute flex flex-col gap-2 rounded-2xl border border-white/10 bg-[#17181b]/95 px-3.5 py-3 shadow-lg shadow-black/40`,style:{width:De,...b,...x},onPointerDown:e=>{e.stopPropagation()},children:[(0,F.jsx)(`p`,{className:`line-clamp-2 text-[13px] leading-tight font-medium text-white`,children:e===`meet`&&s!==void 0?u(`companionIntro.meet.titleNamed`,{name:s}):u(p.title)}),(0,F.jsx)(`p`,{className:`text-[12px] leading-[1.45] text-white/70`,children:u(p.body)}),(0,F.jsxs)(`div`,{className:`flex items-center justify-between pt-0.5`,children:[(0,F.jsx)(`div`,{className:`flex items-center gap-1`,"aria-hidden":!0,children:k.map((e,t)=>(0,F.jsx)(`span`,{className:`size-1.5 rounded-full transition-colors`,style:{backgroundColor:t===d?o??`#5eead4`:`rgba(255,255,255,.2)`}},e))}),(0,F.jsxs)(`div`,{className:`flex items-center gap-1`,children:[!f&&(0,F.jsx)(`button`,{type:`button`,className:`h-7 rounded-full px-2.5 text-[12px] text-white/55 transition-colors hover:bg-white/10 hover:text-white/80`,onClick:()=>l?.(`dismiss`),children:u(`companionIntro.skip`)}),(0,F.jsx)(`button`,{type:`button`,className:`h-7 rounded-full bg-white/15 px-3 text-[12px] text-white transition-colors hover:bg-white/25`,onClick:()=>l?.(`next`),children:u(f?`companionIntro.done`:`companionIntro.next`)})]})]})]})}var W={min:3,max:10},G=(e=Math.random)=>{let t=e();return t<1/3?`top`:t<2/3?`topLeft`:`topRight`},je=1600,Me=.22,Ne=.04,K=4,Pe=(e,t)=>{let n=Math.min(.95,Math.max(.25,e.eyeCenterFrac+e.eyeHalfFrac+Ne)),r=Math.min(t,24,14/n),i=r*n;return{size:r,exposed:i,clip:{width:r+2*K,height:i+K},rest:i+2}},Fe=(e,t=Math.random)=>(e.min+t()*(e.max-e.min))*1e3;function q(e,t=W){let[n,r]=(0,P.useState)(0),{min:i,max:a}=t;return(0,P.useEffect)(()=>{if(!e)return;let t,n=()=>{t=setTimeout(()=>{r(e=>e+1),n()},Fe({min:i,max:a}))};return n(),()=>{clearTimeout(t)}},[e,i,a]),n}var Ie=(e,t,n={width:0,height:0})=>{let r=e===`topLeft`?n.width/4:e===`topRight`?n.width*3/4:n.width/2;return{slot:{width:t.width,height:t.height,bottom:`100%`,left:r-t.width/2}}};function J({character:e,capsule:r,enabled:i,held:a=!1,edge:o,interval:s=W,className:c,style:l}){let u=t(),d=(0,P.useMemo)(()=>O(C,e),[e]),f=q(i&&!a&&!u&&d!==null,s),[p,m]=(0,P.useState)(!1),[h,g]=(0,P.useState)(`top`);if((0,P.useEffect)(()=>{if(f===0)return;g(G()),m(!0);let e=setTimeout(()=>{m(!1)},je);return()=>{clearTimeout(e)}},[f]),d===null||u)return null;let _=Pe(d,r.width),v=a||p,y=o??h,b=Ie(y,_.clip,r);return(0,F.jsx)(`div`,{className:`companion-peek ${c??``}`,style:{width:r.width,height:r.height,...l},"data-risen":v,"data-edge":y,"aria-hidden":!0,children:(0,F.jsx)(`div`,{className:`absolute`,style:b.slot,children:(0,F.jsx)(`div`,{className:`absolute inset-0 overflow-hidden`,children:(0,F.jsx)(n.div,{className:`absolute left-1/2`,style:{width:_.size,height:_.size,marginLeft:-_.size/2,top:_.clip.height-_.exposed},initial:{y:_.rest},animate:{y:v?0:_.rest},transition:a?{duration:0}:v?{type:`spring`,stiffness:280,damping:14}:{duration:Me,ease:`easeIn`},children:(0,F.jsx)(oe,{components:C,traits:e,size:_.size})})})})})}var Le=`#5eead4`,Re=new Set([`transcribing`,`thinking`,`speaking`]),ze=28,Y={idle:{width:64,height:14},closing:ze,rim:2,bloom:4},Be=Y.idle,Ve=(e,t,n)=>[`inset 0 0 0 ${t}px color-mix(in srgb, ${e} 78%, transparent)`,`0 0 ${n}px color-mix(in srgb, ${e} 85%, transparent)`,`0 0 ${n*4}px color-mix(in srgb, ${e} 42%, transparent)`,`0 8px 24px rgba(0, 0, 0, 0.45)`].join(`, `),He=244,Ue=200,We=120,X={watching:40,summary:220,dictating:He+32,offer:Ue+32,call:4+We+180};function Ge({phase:e,assistantName:n=``,accentHex:i=Le,avatarSrc:a,character:o,hovered:s=!1,growth:c=`right`,avatarBox:l=S,optionsBox:u=S,cardGrowth:d=`up`,rootRef:f,restingPillRef:p,avatarRef:m,onSurfacePointerDown:h,onSurfaceContextMenu:g,spotlight:_,onWatch:v,onTeach:y,picking:b=!1,sharing:x=!1,shareEnabled:ee=!1,sharePicking:C=!1,onShare:w,onStopShare:T,annotating:E=!1,annotationTool:te,onAnnotationTool:D,drawToolsRef:ne,onAnnotate:O,onAvatarClick:re,working:k=!1,watching:ie=!1,watchRetro:ae,onWatchRetro:oe,dictationOffer:se,offer:ce,watchEnabled:le=!1,dictating:ue,dictationText:de=``,call:fe,onControl:pe,intro:me,picker:he}){let{t:A}=r(),ge=e!==`resting`,M=e===`call`||e===`dictating`||e===`offer`||e===`summary`||e===`watching`,[_e,N]=(0,P.useState)(!1);(0,P.useEffect)(()=>{if(e!==`hover`){N(!1);return}let t=setTimeout(()=>{N(!0)},500);return()=>{clearTimeout(t)}},[e]);let ve=_===`talk`||e===`hover`&&_e,I=ae===`pending`,ye=k||fe!==void 0&&Re.has(fe.phase),be=t(),L=(0,P.useRef)(null),[xe,Se]=(0,P.useState)(null);(0,P.useLayoutEffect)(()=>{let e=L.current;if(!e)return;let t=()=>{Se(e.scrollWidth)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[e]);let{scale:R,avatarRel:Ce,avatarHalf:z,baseline:we,gap:Te,inUnits:B,lineAt:V,edgeAt:Ee}=j(l,u),H=e===`call`,De=M?(xe??X[e])+16:0,U=Ee(c,z+Te),Oe=l/S,ke=ge?{width:Y.closing*Oe,height:Y.closing*Oe}:Y.idle,Ae=me!=null,W=H?{width:De,left:`50%`,top:V(d,0),transform:`translate(-50%, -50%)`,transitionTimingFunction:`cubic-bezier(.2,.8,.2,1)`}:{width:De,...U,top:V(d,we),transform:`translateY(-100%)`,transitionTimingFunction:`cubic-bezier(.2,.8,.2,1)`},G=H?`calc(50% - ${De/2+B(z+Te)}px)`:`50%`;return(0,F.jsxs)(`div`,{className:`absolute top-0 left-0 origin-top-left`,style:{width:`${100/R}%`,height:`${100/R}%`,transform:`scale(${R})`},children:[(0,F.jsxs)(`div`,{className:`absolute flex h-11 cursor-grab items-center rounded-full transition-[width] duration-300 select-none will-change-[width] active:cursor-grabbing ${!H&&c===`left`?`justify-end`:``}`,style:W,onPointerDown:h,onContextMenu:g,ref:f,children:[(0,F.jsx)(`span`,{className:`absolute inset-0 rounded-full border border-white/10 bg-[#17181b]/95 shadow-lg shadow-black/40 transition-opacity duration-200`,style:{opacity:+!!M},"aria-hidden":!0}),H&&(0,F.jsx)(`span`,{className:`companion-working-ring pointer-events-none absolute -inset-0.5 rounded-full transition-opacity duration-200`,style:{opacity:+!!M,"--companion-ring-accent":i},"aria-hidden":!0}),(0,F.jsx)(`div`,{className:`relative flex h-11 shrink-0 items-center`,style:{paddingInline:8},children:(0,F.jsx)(`div`,{className:`flex min-w-0 items-center gap-1 overflow-hidden transition-opacity duration-200`,ref:L,inert:!M,style:{opacity:+!!M,transitionDelay:M?`120ms`:`0ms`},children:e===`call`?(0,F.jsx)(Q,{call:fe,assistantName:n,watching:ie,watchEnabled:le,picking:b,sharing:x,shareEnabled:ee,sharePicking:C,annotating:E,annotationTool:te,cardGrowth:d,drawToolsRef:ne,onAnnotationTool:D,onControl:pe,onWatch:v,onTeach:y,onShare:w,onStopShare:T,onAnnotate:O}):e===`dictating`&&ue!==void 0?(0,F.jsx)(Ye,{dictating:ue,dictationText:de}):e===`summary`&&ae!==void 0?(0,F.jsx)($e,{retro:ae,onWatchRetro:oe}):e===`offer`&&se!==void 0?(0,F.jsx)(Xe,{offer:se}):(0,F.jsx)(Ze,{watching:ie,onWatch:v})})})]}),(0,F.jsx)(`div`,{className:`absolute cursor-grab active:cursor-grabbing`,style:{width:B(Y.idle.width),height:B(Y.idle.height),pointerEvents:ge?`none`:void 0,left:`50%`,top:V(d,0),transform:`translate(-50%, -50%)`},onPointerDown:h,onContextMenu:g,ref:p,"aria-hidden":!0,children:(0,F.jsx)(`div`,{className:`absolute top-1/2 left-1/2 rounded-full transition-[width,height,opacity] duration-300`,style:{width:B(ke.width),height:B(ke.height),transform:`translate(-50%, -50%)`,transitionTimingFunction:`cubic-bezier(.2,.8,.2,1)`,transitionProperty:be?`opacity`:void 0,boxShadow:Ve(i,B(Y.rim),B(Y.bloom)),opacity:+!ge}})}),(0,F.jsx)(qe,{className:ve?`opacity-100`:`opacity-0`,"data-companion-name":ve?`shown`:`hidden`,style:{left:`50%`,top:V(d,0),transform:`translate(-50%, calc(-100% - ${B(z)}px - 4px))`},label:A(`companionSurface.talk`)}),(0,F.jsx)(Je,{label:A(e===`call`?`companionSurface.openVellum`:`companionSurface.talk`),accentHex:i,avatarSrc:a,character:o,attentive:s,busy:ye||ie||I,collapsed:!ge&&!Ae,restingScale:S/l,style:{left:G,top:V(d,0),transform:`translate(-50%, -50%)${Ce===1?``:` scale(${Ce})`}`,transition:be?void 0:`left 300ms cubic-bezier(.2,.8,.2,1)`},elementRef:m,onPointerDown:h,onContextMenu:g,onClick:re}),me,he,ce]})}var Ke=`rgba(28, 28, 30, 0.55)`,Z=`backdrop-blur-md backdrop-saturate-150`;function qe({className:e,style:t,label:n,...r}){return(0,F.jsxs)(`span`,{className:`pointer-events-none absolute rounded-md px-2 py-1 text-[11px] font-medium whitespace-nowrap text-white/90 shadow-md shadow-black/30 transition-opacity duration-200 ${Z} ${e}`,style:{...t,backgroundColor:Ke},"aria-hidden":!0,...r,children:[n,(0,F.jsx)(`span`,{className:`absolute top-full left-1/2 h-1.5 w-2.5 -translate-x-1/2 ${Z}`,style:{backgroundColor:Ke,clipPath:`polygon(0 0, 100% 0, 50% 100%)`},"aria-hidden":!0})]})}function Je({accentHex:e,avatarSrc:n,character:r,busy:i=!1,attentive:a=!1,collapsed:o=!1,restingScale:s=1,label:c,style:l,elementRef:u,onPointerDown:d,onContextMenu:f,onClick:p}){let m=t();return(0,F.jsxs)(`div`,{role:`button`,"aria-label":c,className:`absolute grid size-11 cursor-grab place-items-center active:cursor-grabbing`,style:l,ref:u,onPointerDown:d,onContextMenu:f,onClick:p,children:[r===void 0?null:(0,F.jsx)(J,{character:r,capsule:Be,enabled:o&&!i,className:`absolute top-1/2 left-1/2 transition-opacity duration-200`,style:{transform:`translate(-50%, -50%) scale(${s})`,opacity:+!!o}}),(0,F.jsx)(`div`,{className:`transition-[opacity,transform] duration-300`,style:{opacity:+!o,transform:o?`scale(0.35)`:`scale(1)`,transitionTimingFunction:`cubic-bezier(.2,.8,.2,1)`,transitionProperty:m?`opacity`:void 0},children:(0,F.jsx)(`div`,{className:`companion-avatar-bob relative grid place-items-center`,style:{animation:m?`none`:void 0},children:r===void 0?n===void 0?(0,F.jsx)(`span`,{className:`relative size-7 rounded-full drop-shadow-[0_1px_3px_rgba(0,0,0,0.55)]`,style:{background:e},"aria-hidden":!0}):(0,F.jsx)(`img`,{src:n,alt:``,draggable:!1,className:`relative size-7 rounded-full object-contain drop-shadow-[0_1px_3px_rgba(0,0,0,0.55)] [-webkit-user-drag:none]`}):(0,F.jsx)(`div`,{className:`relative drop-shadow-[0_1px_3px_rgba(0,0,0,0.55)]`,children:(0,F.jsx)(oe,{components:C,traits:r,size:ze,isAssistantBusy:i,attentive:a})})})})]})}function Ye({dictating:e,dictationText:t}){let{t:n}=r(),i=t.trim();return(0,F.jsxs)(`div`,{className:`flex h-7 shrink-0 items-center gap-2 px-1`,children:[(0,F.jsx)(l,{className:`size-4 shrink-0`,"aria-hidden":!0}),i?(0,F.jsx)(`span`,{dir:`auto`,className:`flex justify-end overflow-hidden text-[12px] whitespace-nowrap text-white/85`,style:{width:He},children:(0,F.jsx)(`span`,{className:`shrink-0`,children:i})}):(0,F.jsx)(`span`,{className:`truncate text-[12px] text-white/85`,style:{width:He},children:n(e===`listening`?`companionSurface.dictating`:`companionSurface.dictatingTranscribing`)})]})}function Xe({offer:e}){let{t}=r();return(0,F.jsxs)(`div`,{className:`flex h-7 shrink-0 items-center gap-2 px-1`,children:[(0,F.jsx)(l,{className:`size-4 shrink-0`,"aria-hidden":!0}),(0,F.jsx)(`span`,{className:`truncate text-[12px] text-white/85`,style:{width:Ue},children:e.reason===`claimed`?t(`companionSurface.offerHeard`,{app:e.app}):t(`companionSurface.offerNowhere`)})]})}function Ze({watching:e=!1,onWatch:t}){return(0,F.jsx)(F.Fragment,{children:e&&(0,F.jsx)(at,{onWatch:t})})}function Qe({watching:e,watchEnabled:t,picking:n,onWatch:i,onTeach:a}){let{t:o}=r();return t?(0,F.jsx)($,{icon:(0,F.jsx)(b,{className:`size-4`}),label:o(`companionSurface.teach`),pressed:e||n,onClick:e?i:a??i}):e?(0,F.jsx)(at,{onWatch:i}):null}function $e({retro:e,onWatchRetro:t}){let{t:n}=r();return e===`pending`?(0,F.jsx)(`span`,{className:`ml-1 shrink-0 text-[12px] text-white/85`,children:n(`companionSurface.summarizing`)}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)($,{icon:(0,F.jsx)(x,{className:`size-4`}),label:n(`companionSurface.showSummary`),showLabel:!0,onClick:()=>{t?.(!0)}}),(0,F.jsx)($,{icon:(0,F.jsx)(g,{className:`size-4`}),label:n(`companionSurface.notNow`),showLabel:!0,onClick:()=>{t?.(!1)}})]})}function Q({call:e,assistantName:t,watching:n,watchEnabled:i,picking:a,sharing:s,shareEnabled:c,sharePicking:l,annotating:u,annotationTool:f,cardGrowth:p,drawToolsRef:m,onAnnotationTool:h,onControl:g,onWatch:y,onTeach:b,onShare:x,onStopShare:S,onAnnotate:ee}){let{t:C}=r();if(e===void 0)return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`span`,{className:`ml-1 max-w-[160px] shrink-0 truncate text-[12px] text-white/85`,children:t===``?C(`companionSurface.calling`):C(`companionSurface.callingNamed`,{name:t})}),(0,F.jsx)(Qe,{watching:n,watchEnabled:i,picking:a,onWatch:y,onTeach:b}),(0,F.jsx)(rt,{onControl:g})]});if(e.approvalRequestId!==``)return(0,F.jsx)(it,{detail:e.detail,requestId:e.approvalRequestId,onControl:g});let w=e.detail||e.label,{muted:T,outputMuted:E}=e;return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`span`,{className:`ml-1 shrink-0 truncate text-[12px] text-white/85`,style:{width:We},children:w}),(0,F.jsx)(Qe,{watching:n,watchEnabled:i,picking:a,onWatch:y,onTeach:b}),(0,F.jsx)(et,{sharing:s,shareEnabled:c,sharePicking:l,onShare:x,onStopShare:S}),(0,F.jsx)(tt,{sharing:s,annotating:u,tool:f,cardGrowth:p,toolsRef:m,onAnnotate:ee,onTool:h}),(0,F.jsx)($,{icon:T?(0,F.jsx)(o,{className:`size-4`}):(0,F.jsx)(d,{className:`size-4`}),label:C(T?`companionSurface.unmuteMicrophone`:`companionSurface.muteMicrophone`),onClick:()=>{g?.(T?`unmuteMicrophone`:`muteMicrophone`)}}),(0,F.jsx)($,{icon:E?(0,F.jsx)(v,{className:`size-4`}):(0,F.jsx)(_,{className:`size-4`}),label:C(E?`companionSurface.unmuteAssistant`:`companionSurface.muteAssistant`),onClick:()=>{g?.(E?`unmuteAssistantAudio`:`muteAssistantAudio`)}}),(0,F.jsx)(rt,{onControl:g})]})}function et({sharing:e,shareEnabled:t,sharePicking:n,onShare:i,onStopShare:a}){let{t:o}=r();return!t&&!e?null:(0,F.jsx)($,{icon:(0,F.jsx)(_e,{className:`size-4`}),label:o(`companionSurface.share`),pressed:e||n,onClick:e?a:i})}function tt({sharing:e,annotating:t,tool:n,cardGrowth:i,toolsRef:a,onAnnotate:o,onTool:s}){let{t:c}=r();return e?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)($,{icon:(0,F.jsx)(m,{className:`size-4`}),label:c(`companionSurface.draw`),pressed:t,className:`companion-draw-anchor`,onClick:()=>{o?.(!t)}}),t&&n!==void 0&&(0,F.jsx)(nt,{tool:n,cardGrowth:i,toolsRef:a,onTool:s})]}):null}function nt({tool:e,cardGrowth:t,toolsRef:n,onTool:i}){let{t:a}=r(),o=[{tool:`freehand`,icon:(0,F.jsx)(m,{className:`size-4`}),label:a(`companionSurface.drawFreehand`)},{tool:`line`,icon:(0,F.jsx)(N,{className:`size-4`}),label:a(`companionSurface.drawLine`)},{tool:`box`,icon:(0,F.jsx)(f,{className:`size-4`}),label:a(`companionSurface.drawBox`)},{tool:`circle`,icon:(0,F.jsx)(u,{className:`size-4`}),label:a(`companionSurface.drawCircle`)}];return(0,F.jsx)(`div`,{className:`companion-draw-tools absolute flex -translate-x-1/2 items-center gap-0.5 rounded-full border border-white/10 bg-[#17181b]/95 p-0.5 shadow-lg shadow-black/40 ${t===`up`?`companion-draw-tools-above`:`companion-draw-tools-below`}`,role:`group`,"aria-label":a(`companionSurface.drawTools`),"data-testid":`companion-draw-tools`,ref:n,onPointerDown:e=>{e.stopPropagation()},children:o.map(t=>(0,F.jsx)($,{icon:t.icon,label:t.label,pressed:e===t.tool,onClick:()=>{i?.(t.tool)}},t.tool))})}function rt({onControl:e}){let{t}=r();return(0,F.jsx)($,{icon:(0,F.jsx)(g,{className:`size-4`,strokeWidth:2.5}),label:t(`companionSurface.endSession`),tone:`negative`,onClick:()=>{e?.(`endSession`)}})}function it({detail:e,requestId:t,onControl:n}){let{t:i}=r();return(0,F.jsxs)(F.Fragment,{children:[e!==``&&(0,F.jsx)(`span`,{className:`ml-1 max-w-[120px] shrink-0 truncate text-[12px] text-white/85`,children:e}),(0,F.jsx)($,{icon:(0,F.jsx)(c,{className:`size-4`}),label:i(`companionSurface.allow`),showLabel:!0,tone:`positive`,onClick:()=>{n?.(`approveRequest`,t)}}),(0,F.jsx)($,{icon:(0,F.jsx)(g,{className:`size-4`}),label:i(`companionSurface.deny`),showLabel:!0,tone:`negative`,onClick:()=>{n?.(`denyRequest`,t)}})]})}function at({onWatch:e}){let{t}=r();return(0,F.jsx)($,{icon:(0,F.jsx)(s,{className:`size-4`}),label:t(`companionSurface.stopTeaching`),onClick:e})}var ot=`-translate-y-[calc(50%+22px)]`;function $({icon:e,label:t,tone:n,showLabel:r=!1,pressed:i,className:a=``,onClick:o}){return(0,F.jsxs)(`button`,{type:`button`,"aria-label":t,"aria-pressed":i,onClick:o,onPointerDown:e=>{e.stopPropagation()},className:`group flex h-7 shrink-0 items-center justify-center gap-1.5 rounded-full px-2 text-[12px] transition-colors hover:bg-white/15 ${a} ${i===!0?`bg-white/15`:``} ${n===`negative`?`text-[#ff6b6b]`:n===`positive`?`text-[#5ee08a]`:`text-white/85`}`,children:[e,r?(0,F.jsx)(`span`,{children:t}):(0,F.jsx)(qe,{label:t,className:`opacity-0 group-hover:opacity-100 ${ot}`,"data-label":`hover`})]})}var st=3;function ct(){let{t:e}=r(),[t,n]=(0,P.useState)(`right`),[i,a]=(0,P.useState)(`up`),[o,s]=(0,P.useState)(S),[c,l]=(0,P.useState)(S),[u,d]=(0,P.useState)(),[f,p]=(0,P.useState)(),[m,h]=(0,P.useState)(),[g,_]=(0,P.useState)(null),[v,y]=(0,P.useState)(!1),[b,x]=(0,P.useState)(void 0),[C,T]=(0,P.useState)(``),[O,k]=(0,P.useState)(``),[oe,de]=(0,P.useState)(!1),[j,_e]=(0,P.useState)(!1),[N,ve]=(0,P.useState)(void 0),[I,ye]=(0,P.useState)(void 0),[be,L]=(0,P.useState)(!1),[xe,Se]=(0,P.useState)(!1),[R,z]=(0,P.useState)(void 0),[we,Te]=(0,P.useState)(!1),[B,V]=(0,P.useState)(!1),[Ee,De]=(0,P.useState)(void 0),[U,W]=(0,P.useState)(!1),[G,je]=(0,P.useState)(`teach`),[Me,Ne]=(0,P.useState)(null),K=(0,P.useRef)(0),[Pe,Fe]=(0,P.useState)(!1),[q,Ie]=(0,P.useState)(null),J=(0,P.useRef)(!1),Le=(0,P.useRef)(null),Re=(0,P.useRef)(null),ze=(0,P.useRef)(null),Y=(0,P.useRef)(null),Be=(0,P.useRef)(null),Ve=(0,P.useRef)(null),He=(0,P.useRef)(null),Ue=(0,P.useRef)(!1),We=(0,P.useCallback)(e=>{He.current=e,e===null&&Ue.current&&(Ue.current=!1,J.current=!1,E(!1))},[]),X=(0,P.useRef)(null),Ke=(0,P.useRef)(null),Z=(0,P.useRef)(!1);(0,P.useEffect)(()=>{let e=e=>{n(e.growth),a(e.cardGrowth),s(e.avatarBox),l(e.optionsBox??e.avatarBox),d(e.avatarBase64===void 0?void 0:`data:image/png;base64,${e.avatarBase64}`),p(e.character),h(e.accentHex),_(e.call),y(e.dialing===!0),k(e.assistantName),de(e.working),_e(e.watching===!0),x(e.dictating),T(e.dictationText??``),ve(e.watchRetro),ye(e.dictationOffer),L(e.watchEnabled===!0),Se(e.watchTargets===!0),z(e.screenShare),Te(e.screenShareEnabled===!0),V(e.annotating===!0),De(e.annotationTool),Ie(e.intro)},t=me(e);return re().then(t=>{t&&e(t)}),t},[]),(0,P.useEffect)(()=>()=>{E(!1)},[]);let qe=g!==null||v,Je=R!==void 0;(0,P.useEffect)(()=>{qe||(K.current+=1,W(!1))},[qe]),(0,P.useEffect)(()=>{j&&G===`teach`&&(K.current+=1,W(!1))},[j,G]),(0,P.useEffect)(()=>{Je&&G===`share`&&(K.current+=1,W(!1))},[Je,G]);let Ye=(e,t)=>{Ne(null),je(e),W(!0);let n=++K.current;ie().then(e=>{if(n===K.current){if(e!==null){Ne(e);return}W(!1),t()}})},Xe=()=>{if(!xe){w();return}if(U&&G===`teach`){K.current+=1,W(!1);return}Ye(`teach`,w)},Ze=()=>{if(U&&G===`share`){K.current+=1,W(!1);return}Ye(`share`,()=>void 0)};(0,P.useEffect)(()=>{!U&&J.current&&(J.current=!1,E(!1))},[U]),(0,P.useEffect)(()=>{I===void 0&&J.current&&(J.current=!1,E(!1))},[I]);let Qe=e=>{if(K.current+=1,W(!1),G===`share`){pe(e);return}w(e)},$e=e=>{J.current!==e&&(J.current=e,E(e))},Q=q!==null&&g===null&&!v,et=(0,P.useRef)(Q);(0,P.useEffect)(()=>{et.current&&!Q&&(Fe(!1),$e(!1)),et.current=Q},[Q]);let tt=ke(q),nt=g!==null||v?`call`:b===void 0?I===void 0?j?`watching`:N===void 0?tt??(Pe?`hover`:`resting`):`summary`:`offer`:`dictating`,rt=e=>{if(X.current!==null&&e.buttons===0&&(X.current=null),X.current!==null){let{x:t,y:n}=X.current;ue(e.screenX-t,e.screenY-n),X.current={x:e.screenX,y:e.screenY};let r=Ke.current;r!==null&&Math.abs(e.screenX-r.x)+Math.abs(e.screenY-r.y)>st&&(Z.current=!0);return}let t=ze.current;if(!t)return;let n=Le.current?.getBoundingClientRect()??null,r=Re.current?.getBoundingClientRect()??null,i=n!==null&&n.width>0?n:r!==null&&r.width>0?r:null,a=ge({x:e.clientX,y:e.clientY},{avatar:t.getBoundingClientRect(),pill:i}),o=Y.current,s=o!==null&&A(o.getBoundingClientRect(),e.clientX,e.clientY),c=Ve.current,l=c!==null&&A(c.getBoundingClientRect(),e.clientX,e.clientY),u=Be.current,d=u!==null&&A(u.getBoundingClientRect(),e.clientX,e.clientY),f=He.current,p=f!==null&&A(f.getBoundingClientRect(),e.clientX,e.clientY);Fe(a),Ue.current=p,$e(a||s||d||l||p)},it=M(g,m,f);return(0,F.jsx)(`div`,{className:`relative h-screen w-screen bg-transparent`,onMouseMove:rt,onMouseUp:()=>{X.current=null},onPointerCancel:()=>{X.current=null,Fe(!1),$e(!1)},onMouseLeave:()=>{X.current===null&&(Fe(!1),$e(!1))},children:(0,F.jsx)(Ge,{phase:nt,growth:t,cardGrowth:i,avatarBox:o,optionsBox:c,avatarSrc:u,character:f,hovered:Pe,accentHex:it,call:g??void 0,assistantName:O,dictating:b,dictationText:C,working:oe,watching:j,watchRetro:N,onWatchRetro:se,dictationOffer:I,offer:I===void 0?null:(0,F.jsx)(H,{offer:I,growth:t,cardGrowth:i,avatarBox:o,optionsBox:c,cardRef:Ve,onAnswer:e=>{ne(e,I.id)}}),watchEnabled:be,spotlight:Oe(q),intro:!Q||q===null?null:(0,F.jsx)(Ae,{beat:q,growth:t,cardGrowth:i,avatarBox:o,optionsBox:c,accentHex:it,assistantName:O===``?void 0:O,cardRef:Y,onAdvance:le}),rootRef:Le,restingPillRef:Re,avatarRef:ze,onSurfacePointerDown:e=>{e.button===0&&e.target.closest(`button, a`)===null&&(e.currentTarget.setPointerCapture(e.pointerId),X.current={x:e.screenX,y:e.screenY},Ke.current={x:e.screenX,y:e.screenY},Z.current=!1)},onSurfaceContextMenu:e=>{(window.getSelection()?.toString().trim().length??0)>0||(e.preventDefault(),he())},onAvatarClick:()=>{if(!Z.current){if(g!==null||v){te();return}D()}},onWatch:()=>{w()},onTeach:Xe,picking:U&&G===`teach`,sharing:Je,shareEnabled:we,sharePicking:U&&G===`share`,onShare:Ze,onStopShare:()=>{pe()},annotating:B,onAnnotate:e=>{ce(e)},annotationTool:Ee,onAnnotationTool:e=>{ae(e)},drawToolsRef:We,picker:U?(0,F.jsx)(Ce,{sources:Me,captureThumbnail:fe,cardGrowth:i,avatarBox:o,optionsBox:c,cardRef:Be,label:G===`share`?e(`companionSurface.sharePicker`):void 0,onPick:Qe}):null,onControl:(e,t)=>{ee(t===void 0?{action:e}:{action:e,requestId:t})}})})}export{ct as CompanionSurfacePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{j as t}from"./vendor-C_e0Rl2s.js";import{b as n,t as r}from"./react-DPM_L_aA.js";import{Ql as i,Zl as a,ds as o,gs as s,ss as c,xs as l}from"./index-CleA12ha.js";import{n as u}from"./companion-accent-gsn9VuVB.js";var d=e(n(),1);function f(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}function p(e,t){return Math.round(e*1e3)*73856093^Math.round(t*1e3)*19349663}function m(e,t){if(e.length<2)return``;let n=n=>t?e[(n+e.length)%e.length]:e[Math.min(Math.max(n,0),e.length-1)],r=n(0),i=`M ${h(r.x)} ${h(r.y)}`,a=t?e.length:e.length-1;for(let e=0;e<a;e+=1){let t=n(e-1),r=n(e),a=n(e+1),o=n(e+2),s={x:r.x+(a.x-t.x)/6,y:r.y+(a.y-t.y)/6},c={x:a.x-(o.x-r.x)/6,y:a.y-(o.y-r.y)/6};i+=` C ${h(s.x)} ${h(s.y)}, ${h(c.x)} ${h(c.y)}, ${h(a.x)} ${h(a.y)}`}return t?`${i} Z`:i}function h(e){return Math.round(e*100)/100}var g=.09,_=.05,v=.028;function y(e){return Math.min(Math.max(e,0),g)}var b=1.5;b-Math.SQRT2*(b-1);function x(e,t){let n=Math.min(t*b,Math.min(e.width,e.height)/2+t),r=n-t,i=r,a=e.width-r,o=r,s=e.height-r,c={x:Math.max(a-i,0),y:Math.max(s-o,0)},l=Math.PI*n/2,u=[l,c.x,l,c.y,l,c.x,l,c.y],d=u.reduce((e,t)=>e+t,0),f=[{centre:{x:i,y:o},from:Math.PI},{centre:{x:a,y:o},from:-Math.PI/2},{centre:{x:a,y:s},from:0},{centre:{x:i,y:s},from:Math.PI/2}];return{at:e=>{let t=e%1*d;t<0&&(t+=d);for(let e=0;e<u.length;e+=1){let r=u[e];if(t>r&&e<u.length-1){t-=r;continue}let c=r===0?0:Math.min(t/r,1),l=f[e/2];if(e%2==0){let e=l.from+Math.PI/2*c;return{x:l.centre.x+Math.cos(e)*n,y:l.centre.y+Math.sin(e)*n}}let[d,p]=[[{x:i,y:o-n},{x:a,y:o-n}],[{x:a+n,y:o},{x:a+n,y:s}],[{x:a,y:s+n},{x:i,y:s+n}],[{x:i-n,y:s},{x:i-n,y:o}]][(e-1)/2];return{x:d.x+(p.x-d.x)*c,y:d.y+(p.y-d.y)*c}}return{x:0,y:0}},length:d}}function S(e,t){let n=t.padding??8,r={x:e.width/2,y:e.height/2},i=x(e,n),a=y(t.strength),o=f(t.seed),s=[];for(let e=0;e<=13;e+=1){let t=i.at(.18+1.055*e/13),n={x:t.x-r.x,y:t.y-r.y},c=Math.hypot(n.x,n.y)||1,l=o()*a*c;s.push({x:t.x+n.x/c*l,y:t.y+n.y/c*l})}return s}function C(e,t){return m(S(e,t),!1)}function w(e){let t=e.gap??10,n=y(e.strength),r=f(e.seed),i=e.length+t,a=Math.max(28,e.length*.55),o=a/2,s={x:o,y:i},c={x:o,y:t},l=r()<.5?-1:1,u=a*.17*l,d=e=>({x:(1-e)*(1-e)*s.x+2*(1-e)*e*(o+u)+e*e*c.x,y:(1-e)*(1-e)*s.y+2*(1-e)*e*((s.y+c.y)/2)+e*e*c.y}),p=[];for(let e=0;e<=9;e+=1){let t=e/9,i=d(t),o=(1-t)*(1-t),s=(r()-.5)*2*n*a*o;p.push({x:i.x+s,y:i.y})}let g=d(1-1/9),_=Math.atan2(c.y-g.y,c.x-g.x),v=Math.max(11,e.length*.3),b=.42,x=`M ${h(c.x+Math.cos(_-Math.PI+b)*v)} ${h(c.y+Math.sin(_-Math.PI+b)*v)} L ${h(c.x)} ${h(c.y)} L ${h(c.x+Math.cos(_-Math.PI-b)*v)} ${h(c.y+Math.sin(_-Math.PI-b)*v)}`;return{shaft:m(p,!1),head:x,width:a,height:i}}function T(){let[e,t]=(0,d.useState)(()=>({width:typeof window>`u`?0:window.innerWidth,height:typeof window>`u`?0:window.innerHeight}));return(0,d.useEffect)(()=>{let e=()=>{t({width:window.innerWidth,height:window.innerHeight})};return e(),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`resize`,e)}},[]),e}var E=r(),D=.6,O=10,k=52,A=10,j=k+A,M=10,N=8;function P(e,t){let n=e.kind===`point`?j:0,r=e.kind===`point`?e.y:e.y+e.height,i=e.kind===`point`?0:e.width,a=(1-r)*t-n,o=e.y*t-n;return{above:a<58&&o>a,trailing:e.x+i>D}}function F(e,t,n){let r=n?1-e.y:e.kind===`point`?e.y:e.y+e.height,i=Math.max(t-58,0),a=e.kind===`point`?k:0;return Math.round(Math.min(r*t+a+O,i))}function I(e){let t=Math.min(Math.max(e,0),1)*100;return`${Number(t.toFixed(4))}%`}function L(e){let t=e.kind===`region`?`${e.width},${e.height}`:`point`;return`${e.kind},${e.x},${e.y},${t},${e.caption??``}`}function R({mark:e,box:t}){let n=Math.max(e.width*t.width,1),r=Math.max(e.height*t.height,1),i=M+N,a=C({width:n,height:r},{strength:_,seed:p(e.x,e.y),padding:M});return(0,E.jsxs)(`svg`,{className:`companion-coachmark`,"data-testid":`companion-coachmark`,"aria-hidden":`true`,viewBox:`${-i} ${-i} ${n+i*2} ${r+i*2}`,width:n+i*2,height:r+i*2,style:{left:Math.round(e.x*t.width-i),top:Math.round(e.y*t.height-i)},children:[(0,E.jsx)(`path`,{className:`companion-coachmark-halo`,d:a}),(0,E.jsx)(`path`,{className:`companion-coachmark-ink`,d:a})]})}function z({mark:e,above:t,box:n}){let r=w({length:k,approach:t?`above`:`below`,strength:v,seed:p(e.x,e.y),gap:A});return(0,E.jsxs)(`svg`,{className:`companion-coachmark-pointer`,"data-testid":`companion-coachmark-pointer`,"data-above":t?``:void 0,"aria-hidden":`true`,viewBox:`0 0 ${r.width} ${r.height}`,width:r.width,height:r.height,style:{left:Math.round(e.x*n.width-r.width/2),top:Math.round(e.y*n.height-(t?r.height:0)),...t?{"--companion-coachmark-turn":`rotate(180deg)`}:{}},children:[(0,E.jsx)(`path`,{className:`companion-coachmark-halo`,d:r.shaft}),(0,E.jsx)(`path`,{className:`companion-coachmark-halo`,d:r.head}),(0,E.jsx)(`path`,{className:`companion-coachmark-ink`,d:r.shaft}),(0,E.jsx)(`path`,{className:`companion-coachmark-ink`,d:r.head})]})}function B({marks:e,ink:t}){let n=T();return(0,E.jsx)(`div`,{className:`pointer-events-none fixed inset-0`,"data-testid":`companion-coachmarks`,style:{"--companion-ring-accent":t},role:`presentation`,children:e.map(e=>{let{above:t,trailing:r}=P(e,n.height),i=`${F(e,n.height,t)}px`;return(0,E.jsxs)(d.Fragment,{children:[e.kind===`region`?(0,E.jsx)(R,{mark:e,box:n}):(0,E.jsx)(z,{mark:e,above:t,box:n}),e.caption!==void 0&&e.caption!==``&&(0,E.jsx)(`div`,{className:`companion-coachmark-caption`,"data-testid":`companion-coachmark-caption`,"data-above":t?``:void 0,"data-trailing":r?``:void 0,style:{...r?{right:I(1-(e.kind===`region`?e.x+e.width:e.x))}:{left:I(e.x)},...t?{bottom:i}:{top:i},maxWidth:I(.4)},children:e.caption})]},L(e))})})}var V=4500,H=e=>Math.min(Math.max(e,0),1);function U(e,t,n){switch(e){case`line`:return[t,n];case`box`:return[t,{x:n.x,y:t.y},n,{x:t.x,y:n.y},t];case`circle`:{let e=(t.x+n.x)/2,r=(t.y+n.y)/2,i=Math.abs(n.x-t.x)/2,a=Math.abs(n.y-t.y)/2;return Array.from({length:49},(t,n)=>{let o=n/48*Math.PI*2;return{x:e+i*Math.cos(o),y:r+a*Math.sin(o)}})}}}function W(e,t,n){let r=(t.x-e.x)*n,i=t.y-e.y;return r*r+i*i>=a**2}var G=`<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/><path d="m15 5 4 4"/>`;function K(e){let t=`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round"><g stroke="#ffffff" stroke-width="4">${G}</g><g stroke="${e}" stroke-width="2">${G}</g></svg>`;return`url("data:image/svg+xml,${encodeURIComponent(t)}") 2 22, crosshair`}function q({ink:e,tool:t=`freehand`}){let[n,r]=(0,d.useState)([]),a=(0,d.useRef)([]),o=(0,d.useRef)(null),l=(0,d.useRef)({x:0,y:0}),u=(0,d.useRef)(!1),f=(0,d.useRef)(0),p=(0,d.useRef)(new Set),m=T(),h=m.height===0?1:m.width/m.height,g=(0,d.useRef)(e);(0,d.useEffect)(()=>{g.current=e},[e]),(0,d.useEffect)(()=>{let e=p.current;return()=>{for(let t of e)clearTimeout(t);e.clear(),o.current!==null&&(o.current=null,c(`released`,[],g.current))}},[]);let _=(0,d.useCallback)(e=>{a.current=e,r(e)},[]),v=e=>({x:m.width===0?0:H(e.clientX/m.width),y:m.height===0?0:H(e.clientY/m.height)}),y=()=>{o.current===null&&(u.current=!0,s(!0))},b=()=>{u.current&&(u.current=!1,s(!1))},x=t=>{if(b(),o.current!==null)return;t.currentTarget.setPointerCapture(t.pointerId);let n=f.current++;o.current=n;let r=v(t);l.current=r,_([...a.current,{id:n,points:[r],spent:!1}]),c(`drawing`,[],e)},S=e=>{b();let n=o.current;if(n===null)return;let r=v(e),i=a.current.find(e=>e.id===n);if(i===void 0)return;let s=i.points[i.points.length-1];s!==void 0&&!W(s,r,h)||_(a.current.map(e=>e.id===n?{...e,points:t===`freehand`?[...e.points,r].slice(-512):U(t,l.current,r)}:e))},C=t=>{if(o.current===null)return;o.current=null,t.currentTarget.hasPointerCapture(t.pointerId)&&t.currentTarget.releasePointerCapture(t.pointerId);let n=a.current.map(e=>({...e,spent:!0}));_(n),c(`released`,n.slice(-24).map(e=>({points:e.points})),e);let r=new Set(n.map(e=>e.id)),i=setTimeout(()=>{p.current.delete(i),_(a.current.filter(e=>!r.has(e.id)))},V+900);p.current.add(i)},w=i*Math.min(m.width,m.height),D=(0,d.useMemo)(()=>K(e),[e]);return(0,E.jsx)(`svg`,{className:`companion-share-annotation fixed inset-0 h-full w-full`,style:{cursor:t===`freehand`?D:`crosshair`,"--companion-ink-hold":`${V}ms`,"--companion-ink-fade":`900ms`},"data-testid":`companion-share-annotation`,"data-tool":t,role:`presentation`,onPointerDown:x,onPointerMove:S,onPointerUp:C,onPointerCancel:C,onWheel:y,children:n.map(t=>(0,E.jsx)(J,{stroke:t,box:m,width:w,ink:e},t.id))})}function J({stroke:e,box:t,width:n,ink:r}){let i=e.spent?`companion-share-ink companion-share-ink-spent`:`companion-share-ink`,a=e.points[0];return e.points.length===1&&a!==void 0?(0,E.jsx)(`circle`,{className:i,cx:a.x*t.width,cy:a.y*t.height,r:n/2,fill:r}):(0,E.jsx)(`polyline`,{className:i,points:e.points.map(e=>`${e.x*t.width},${e.y*t.height}`).join(` `),fill:`none`,stroke:r,strokeWidth:n,strokeLinecap:`round`,strokeLinejoin:`round`})}function Y(e,t){return e?{kind:`teaching`}:t===void 0?null:{kind:`sharing`,target:t}}function X({read:e,assistantName:n,style:r}){let{t:i}=t(),a=n!==``,o=e.kind===`teaching`?a?i(`companionWatchFramePage.teachingNamed`,{name:n}):i(`companionWatchFramePage.teaching`):e.target.kind===`display`?a?i(`companionWatchFramePage.sharingScreenNamed`,{name:n}):i(`companionWatchFramePage.sharingScreen`):a?i(`companionWatchFramePage.sharingWindowNamed`,{name:n}):i(`companionWatchFramePage.sharingWindow`);return(0,E.jsxs)(`div`,{className:`companion-watch-frame-label`,"data-testid":`companion-watch-frame-label`,"data-read":e.kind,style:r,children:[(0,E.jsx)(`span`,{className:`companion-watch-frame-label-dot`}),o]})}function Z(e,t){let n=(0,d.useRef)({captureCount:e,watching:t}),[r,i]=(0,d.useState)(0);return(0,d.useEffect)(()=>{let r=n.current;if(n.current={captureCount:e,watching:t},!t){i(0);return}r.watching&&e>r.captureCount&&i(e=>e+1)},[e,t]),r}function Q(){let[e,t]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=l(t);return o().then(e=>{e&&t(e)}),e},[]);let n=e?.watching===!0,r=e?.screenShare!==void 0,i=Y(n,e?.screenShare),a=i!==null,s=Z(e?.captureCount??0,n),c=u(e?.call??null,e?.accentHex,e?.character),f=c===void 0?void 0:{"--companion-ring-accent":c},p=e?.frameInsetTop??0,m=p>0?{...f,"--companion-frame-inset":`${p}px`}:f,h=e?.annotating===!0,g=r&&!n?e?.coachmarks??[]:[];return(0,E.jsxs)(`div`,{className:`pointer-events-none h-screen w-screen bg-transparent`,role:`presentation`,"aria-hidden":!0,children:[a&&(0,E.jsx)(`div`,{className:`companion-watch-frame fixed inset-0`,style:f}),i!==null&&(0,E.jsx)(X,{read:i,assistantName:e?.assistantName??``,style:m}),n&&s>0&&(0,E.jsx)(`div`,{className:`companion-watch-frame-flash fixed inset-0`,style:f},s),h&&(0,E.jsx)(q,{ink:c??`#5eead4`,tool:e?.annotationTool}),g.length>0&&(0,E.jsx)(B,{marks:g,ink:c??`#5eead4`})]})}export{Q as CompanionWatchFramePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Jn as t,er as n,j as r}from"./vendor-C_e0Rl2s.js";import{b as i,f as a,g as o,t as s}from"./react-DPM_L_aA.js";import{$n as c,E as l,qn as u}from"./icons-xHdc0dPY.js";import{Xv as d,db as f,fb as p,pb as m,qy as h,rt as g}from"./index-CleA12ha.js";import{n as _}from"./a2a-invite-DOlvPnsj.js";import{r as v}from"./contacts-gateway-Cm83W9Sw.js";var y=e(i(),1),b=s();function x(e){let t=e[0];return typeof t==`object`&&!!t&&t._id===`contactsGet`}function S(e){switch(e){case`expired`:case`not_found`:return`connectPage.errorExpired`;case`already_redeemed_by_other`:return`connectPage.errorAlreadyRedeemed`;case`sender_not_found`:return`connectPage.errorSenderNotFound`;case`not_platform_managed`:return`connectPage.errorNotPlatformManaged`;default:return null}}function C(){return(0,b.jsx)(w,{assistantId:g()})}function w({assistantId:e}){let{t:i}=r(`contacts`),s=a(),g=n(),[C]=o(),w=(0,y.useMemo)(()=>_(C),[C]),T=t({mutationFn:()=>{if(!w)throw Error(`Invalid invite link`);return v(e,{senderAssistantId:w.senderAssistantId,token:w.token})},onSuccess:e=>{e.success&&(g.invalidateQueries({predicate:e=>x(e.queryKey)}),e.alreadyConnected?h(i(`connectPage.alreadyConnected`)):h(i(`connectPage.connected`)),s(d.contacts.root))}}),E=(0,y.useCallback)(()=>{s(d.contacts.root)},[s]),D=(0,y.useCallback)(()=>{T.mutate()},[T]),O=(0,y.useMemo)(()=>{if(T.isError)return T.error instanceof Error?T.error.message:i(`connectPage.errorGeneric`);if(T.data&&!T.data.success){let e=S(T.data.errorCode);return e?i(e):T.data.error||i(`connectPage.errorGeneric`)}return null},[T.isError,T.error,T.data,i]);return w?(0,b.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,b.jsx)(f,{className:`w-full max-w-md`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(c,{className:`h-6 w-6`,style:{color:`var(--content-secondary)`}}),(0,b.jsx)(p,{variant:`title-small`,children:i(`connectPage.title`)})]}),(0,b.jsx)(p,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:i(`connectPage.body`)}),O&&(0,b.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md p-3`,style:{backgroundColor:`var(--surface-negative-subtle)`,color:`var(--system-negative-strong)`},children:[(0,b.jsx)(l,{className:`h-4 w-4 shrink-0`}),(0,b.jsx)(p,{variant:`body-small-default`,children:O})]}),(0,b.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,b.jsx)(m,{variant:`primary`,onClick:D,disabled:T.isPending,children:T.isPending?(0,b.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(u,{className:`h-4 w-4 animate-spin`}),i(`actions.connecting`)]}):i(`actions.connect`)}),(0,b.jsx)(m,{variant:`outlined`,onClick:E,disabled:T.isPending,children:i(`actions.cancel`)})]})]})})}):(0,b.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,b.jsx)(f,{className:`w-full max-w-md`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(l,{className:`h-6 w-6`,style:{color:`var(--system-negative-strong)`}}),(0,b.jsx)(p,{variant:`title-small`,children:i(`connectPage.invalidTitle`)})]}),(0,b.jsx)(p,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:i(`connectPage.invalidBody`)}),(0,b.jsx)(`div`,{className:`flex gap-2 pt-2`,children:(0,b.jsx)(m,{variant:`primary`,onClick:E,children:i(`connectPage.goToContacts`)})})]})})})}export{C as ConnectPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{N as e,j as t}from"./vendor-C_e0Rl2s.js";import{t as n}from"./react-DPM_L_aA.js";import{Xv as r,Yv as i,db as a,tb as o}from"./index-CleA12ha.js";import{t as s}from"./setting-row-DqAfZdv2.js";var c=n(),l=[`[&_button[data-state=checked]]:bg-[var(--primary-base)]`,`[&_svg]:text-[var(--content-inset)]`,`[&_button[data-state=unchecked]]:bg-[var(--surface-base)]`,`[&_button[data-state=unchecked]]:border-[var(--border-element)]`].join(` `),u=`mb-2.5 ml-1 text-body-small-default font-medium uppercase tracking-wider text-[var(--content-tertiary)]`,d={privacy:{href:r.docs.legal.privacyPolicy,text:`Privacy and AI Data Sharing Policy`,aria:`I agree to the Privacy and AI Data Sharing Policy`},tos:{href:r.docs.legal.termsOfUse,text:`Terms of Service`,aria:`I agree to the Terms of Service`}};function f({kind:t,checked:n,onChange:r}){let a=d[t];return(0,c.jsx)(o,{checked:n,onCheckedChange:e=>r(e===!0),label:(0,c.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:(0,c.jsx)(e,{i18nKey:`consentControls.agreeTo`,ns:`onboarding`,values:{policy:a.text},components:{link:(0,c.jsx)(`a`,{href:i(a.href),target:`_blank`,rel:`noreferrer`,className:`underline`})}})}),"aria-label":a.aria,className:l})}function p(){return(0,c.jsx)(`div`,{className:`h-px bg-[var(--surface-active)] dark:bg-[var(--surface-lift)]`})}function m({notes:e}){let{t:n}=t(`onboarding`);return!e||e.length===0?null:(0,c.jsxs)(`div`,{className:`rounded-r-md border-l-2 border-[var(--content-secondary)] bg-[var(--surface-base)] py-3 pl-3.5 pr-3.5`,children:[(0,c.jsx)(`p`,{className:`text-body-small-default font-medium text-[var(--content-secondary)]`,children:n(`consentControls.whatsChanged`)}),e.length===1?(0,c.jsx)(`p`,{className:`mt-1.5 text-body-medium-lighter text-[var(--content-default)]`,children:e[0]}):(0,c.jsx)(`ul`,{className:`mt-2 flex flex-col gap-1.5`,children:e.map(e=>(0,c.jsxs)(`li`,{className:`flex gap-2.5 text-body-medium-lighter text-[var(--content-default)]`,children:[(0,c.jsx)(`span`,{"aria-hidden":!0,className:`mt-[0.5em] h-1 w-1 flex-none rounded-full bg-[var(--content-tertiary)]`}),(0,c.jsx)(`span`,{children:e})]},e))})]})}function h({electron:e,showAnalytics:n=!0,showDiagnostics:r=!0,shareAnalytics:i,shareDiagnostics:o,onShareAnalyticsChange:l,onShareDiagnosticsChange:d,className:f,style:m}){let{t:h}=t(`onboarding`);return(0,c.jsxs)(`section`,{className:f,style:m,children:[(0,c.jsx)(`p`,{className:u,children:h(`consentControls.privacyPreferences`)}),(0,c.jsx)(a,{padding:e?`sm`:`md`,className:`w-full`,children:(0,c.jsxs)(`div`,{className:`flex flex-col ${e?`gap-3`:`gap-4`}`,children:[n&&(0,c.jsx)(s,{label:h(`consentControls.analyticsLabel`),helperText:h(`consentControls.analyticsHelp`),checked:i,onChange:l}),n&&r&&(0,c.jsx)(p,{}),r&&(0,c.jsx)(s,{label:h(`consentControls.diagnosticsLabel`),helperText:h(`consentControls.diagnosticsHelp`),checked:o,onChange:d})]})})]})}function g({electron:e,showPrivacy:n=!0,showTos:r=!0,privacyConsent:i,tosAccepted:a,onPrivacyChange:o,onTosChange:s,privacyNotes:l,tosNotes:d,className:p,style:h}){let{t:g}=t(`onboarding`);return(0,c.jsxs)(`section`,{className:p,style:h,children:[(0,c.jsx)(`p`,{className:u,children:g(`consentControls.agreements`)}),(0,c.jsxs)(`div`,{className:`flex flex-col pl-2 ${e?`gap-3.5`:`gap-4`}`,children:[n&&(0,c.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,c.jsx)(m,{notes:l}),(0,c.jsx)(f,{kind:`privacy`,checked:i,onChange:o})]}),r&&(0,c.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,c.jsx)(m,{notes:d}),(0,c.jsx)(f,{kind:`tos`,checked:a,onChange:s})]})]})]})}export{h as n,g as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Qu as e,Xu as t,Zu as n,cy as r,dy as i,gh as a,ly as o}from"./index-CleA12ha.js";async function s(t,n){let{data:a,error:s,response:c}=await e({path:{assistant_id:t},body:n,throwOnError:!1});if(o(c,s,`Failed to save contact`),!c.ok||!a?.contact)throw new r(c.status,i(s,c,`Failed to save contact`));return a.contact}async function c(e,t){let{error:a,response:s}=await n({path:{assistant_id:e,contact_id:t},throwOnError:!1});if(o(s,a,`Failed to delete contact`),!s.ok&&s.status!==204)throw new r(s.status,i(a,s,`Failed to delete contact`))}async function l(e,n){let{error:a,response:s}=await t({path:{assistant_id:e,channel_id:n},throwOnError:!1});if(o(s,a,`Failed to verify channel`),!s.ok)throw new r(s.status,i(a,s,`Failed to verify channel`))}async function u(e,t,n){let i=(await s(e,{id:t.id,displayName:t.displayName,channels:[{type:n.type,address:n.address}]})).channels.find(e=>e.type===n.type&&e.address.toLowerCase()===n.address.toLowerCase());if(!i)throw new r(409,`That account is already linked to another contact.`);if(i.status===`blocked`)throw new r(409,`That account is blocked for this contact. Unblock it before linking.`);await l(e,i.id)}async function d(e,t){let{data:n,error:s,response:c}=await a.post({url:`/v1/assistants/{assistant_id}/a2a/invites/redeem/`,path:{assistant_id:e},body:{sender_assistant_id:t.senderAssistantId,token:t.token},headers:{"Content-Type":`application/json`},throwOnError:!1});if(o(c,s,`Failed to redeem A2A invite`),!c.ok)throw new r(c.status,i(s,c,`Failed to redeem A2A invite`));return{success:n?.success??!0,alreadyConnected:n?.already_connected,error:n?.error,errorCode:n?.error_code}}export{l as a,s as i,u as n,d as r,c as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{I as t,Jn as n,N as r,Zn as i,er as a,j as o}from"./vendor-C_e0Rl2s.js";import{b as s,f as c,g as l,n as u,r as d,t as f}from"./react-DPM_L_aA.js";import{$n as p,Gt as m,Ia as h,It as g,La as _,Ri as v,Tn as y,Xt as b,_t as x,b as S,gt as C,ha as w,qa as T,qn as E,vr as D,zn as O}from"./icons-xHdc0dPY.js";import{t as k}from"./ellipsis-vertical-BMOhP0Zs.js";import{Af as ee,Cd as A,Fv as te,Gu as ne,Ky as j,Ly as M,Ps as N,Td as P,U as F,Vy as re,Xv as ie,Ys as ae,Yy as I,ai as L,ci as oe,db as R,fb as z,fo as se,kf as ce,kh as le,li as ue,ob as de,pb as B,qy as fe,rb as V,rt as H,sd as pe,si as U,wd as me,x as he}from"./index-CleA12ha.js";import{t as W}from"./detail-card-B0OGBJ1-.js";import{n as ge,r as _e,t as ve}from"./use-side-list-room-3ENOwQ0t.js";import{c as G,i as ye,n as be,r as K,t as xe}from"./use-invite-link-dialog-Daa3jhkP.js";import{a as Se,i as Ce,n as we,t as Te}from"./contacts-gateway-Cm83W9Sw.js";var Ee=T(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),De=T(`git-merge`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]),q=e(s(),1),Oe=new Set([`slack`]);function J(e){return e.status===`verified`||e.status===`active`&&e.verifiedAt!=null}function ke(e){switch(e){case`slack`:return`channelType.slack`;case`telegram`:return`channelType.telegram`;case`discord`:return`channelType.discord`;case`whatsapp`:return`channelType.whatsapp`;case`a2a`:return`channelType.a2a`;case`phone`:return`channelType.phone`;case`email`:return`channelType.email`;default:return null}}function Ae(e){let n=ke(e.toLowerCase());return n?t(n,{ns:`contacts`}):e}var je=`New Contact`;function Me(e){return e===je}var Y=f();function Ne({channels:e,pendingChannelKey:t=null,onConnect:n,onDisconnect:r}){let{t:i}=o(`contacts`),[a,s]=(0,q.useState)(null);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`flex flex-col`,children:e.map((e,i)=>(0,Y.jsxs)(`div`,{children:[i>0?(0,Y.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}):null,(0,Y.jsx)(Pe,{channel:e,pending:t===e.key,onConnect:n?()=>n(e.key):void 0,onDisconnect:r&&e.canDisconnect?()=>s(e.key):void 0})]},e.key))}),(0,Y.jsx)(j,{open:a!==null,title:i(`assistantContactChannels.disconnectConfirmTitle`,{channel:a?oe(a):``}),message:i(`assistantContactChannels.disconnectConfirmMessage`),confirmLabel:i(`actions.disconnect`),destructive:!0,onConfirm:()=>{a&&r&&r(a),s(null)},onCancel:()=>s(null)})]})}function Pe({channel:e,pending:t,onConnect:n,onDisconnect:r}){let{t:i}=o(`contacts`),a=e.configured,{Icon:s,label:c}=ue(e.health);return(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,Y.jsx)(L,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,Y.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:oe(e.key)}),a&&e.address?(0,Y.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,Y.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:a?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,Y.jsx)(s,{className:`h-3 w-3`}),c]}),r?(0,Y.jsx)(B,{variant:`danger`,onClick:r,disabled:t,children:i(t?`actions.disconnecting`:`actions.disconnect`)}):(0,Y.jsx)(B,{variant:`outlined`,asChild:!0,children:(0,Y.jsx)(u,{to:`${ie.channels}?setup=${e.key}`,children:i(`actions.manage`)})})]}):n?(0,Y.jsx)(B,{variant:`outlined`,onClick:n,disabled:t,children:i(`actions.connect`)}):null})]})}function X({role:e,contactType:t}){let{label:n,tone:r}=Z(e,t);return(0,Y.jsx)(de,{tone:r,children:n})}function Z(e,t){switch(e){case`guardian`:return{label:`Guardian`,tone:`positive`};case`assistant`:return{label:`Assistant`,tone:`negative`};default:return t===`assistant`?{label:`Assistant`,tone:`negative`}:{label:`Human`,tone:`warning`}}}function Fe({assistantName:e,...t}){let{t:n}=o(`contacts`),r=se(e);return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Y.jsx)(W,{title:n(`assistantChannelsDetail.title`,{name:r}),accessory:(0,Y.jsx)(X,{role:`assistant`}),compactAccessory:!0}),(0,Y.jsx)(W,{title:n(`assistantChannelsDetail.channelsTitle`),subtitle:n(`assistantChannelsDetail.channelsSubtitle`,{name:r}),children:(0,Y.jsx)(Ne,{...t})})]})}var Ie=new Set([`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`]);function Q(e){return Ie.has(e)}function Le(e){return typeof e.source==`string`&&e.source.startsWith(`plugin:`)}function Re(e){return e.supportsVerification||Le(e)}function ze(e){return!!e?.address?.trim()}function Be(e,t){return e.id===`a2a`?t&&t.status!==`revoked`?{kind:`connected`}:{kind:`setup`}:t!=null&&J(t)?{kind:`verified`}:t?.status===`blocked`?{kind:`none`}:t&&t.status!==`revoked`||Le(e)?{kind:`unverified`}:{kind:`setup`}}function Ve(e,t,n){let r=[],i=new Set;if(e)for(let t of e)t.id===`a2a`&&!n||(r.push(t),i.add(t.id));for(let e of t)e.status===`revoked`||i.has(e.type)||e.type===`a2a`&&!n||Q(e.type)&&(r.push({id:e.type,source:`default`,label:e.type.charAt(0).toUpperCase()+e.type.slice(1),subtitle:``,icon:`help-circle`,supportsVerification:!1,setupMessages:{guardian:``,contact:``}}),i.add(e.type));return r}function $({channelId:e,name:t,className:n,style:r}){let i=U(e);if(i)return(0,q.createElement)(i,{size:16,className:n,style:r});switch(t){case`bot`:return(0,Y.jsx)(w,{className:n,style:r});case`hash`:return(0,Y.jsx)(D,{className:n,style:r});case`send`:return(0,Y.jsx)(C,{className:n,style:r});case`phone`:return(0,Y.jsx)(m,{className:n,style:r});case`mail`:return(0,Y.jsx)(O,{className:n,style:r});case`message-square`:return(0,Y.jsx)(y,{className:n,style:r});default:return(0,Y.jsx)(Ee,{className:n,style:r})}}function He({contactChannels:e,availableChannels:t,channelsLoadFailed:n,a2aEnabled:r,setupLabel:i,verifyLoading:a,verifySubject:s=`self`,onSetupChannel:c,onVerifyChannel:l,onRevokeChannel:u,onLinkAccount:d}){let{t:f}=o(`contacts`),[p,m]=(0,q.useState)(null),[h,g]=(0,q.useState)(null),_=new Map;for(let t of e)t.status!==`revoked`&&(_.has(t.type)||_.set(t.type,t));let v=e=>{p&&(l?.(p.info.id,e),m(null))},y=Ve(t,e,r);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-col`,children:[n&&(0,Y.jsx)(`div`,{className:`px-1 py-2 text-sm`,style:{color:`var(--content-secondary)`},role:`status`,children:f(`contactChannelsSection.loadFailed`)}),y.map((e,t)=>{let n=_.get(e.id);return(0,Y.jsxs)(`div`,{children:[t>0&&(0,Y.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,Y.jsx)(Ue,{info:e,existing:n,setupLabel:i??f(`contactChannelsSection.setupDefault`),verifyLoading:a,onSetup:c?()=>c(e.id):void 0,onVerify:l&&Re(e)?()=>m({info:e,existing:n}):void 0,onRevoke:u&&n?()=>g({channelId:n.id,channel:e}):void 0,onLinkAccount:d&&Oe.has(e.id)?()=>d(e.id):void 0})]},e.id)})]}),p?(0,Y.jsx)(We,{info:p.info,existing:p.existing,verifySubject:s,onConfirm:v,onCancel:()=>m(null)}):null,h&&(0,Y.jsx)(j,{open:!0,title:f(`contactChannelsSection.revokeConfirmTitle`,{channel:h.channel.label}),message:f(`contactChannelsSection.revokeConfirmMessage`),confirmLabel:f(`actions.revoke`),destructive:!0,onConfirm:()=>{u?.(h.channelId,h.channel.id),g(null)},onCancel:()=>g(null)})]})}function Ue({info:e,existing:t,setupLabel:n,verifyLoading:r,onSetup:i,onVerify:a,onRevoke:s,onLinkAccount:c}){let{t:l}=o(`contacts`),u=Be(e,t);return(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,Y.jsx)($,{channelId:e.id,name:e.icon,className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,Y.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),t?.address?(0,Y.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.address}):null,(0,Y.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:u.kind===`connected`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,Y.jsx)(v,{className:`h-3 w-3`}),l(`channelStatus.connected`)]}),s?(0,Y.jsx)(B,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`verified`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,Y.jsx)(v,{className:`h-3 w-3`}),l(`channelStatus.verified`)]}),s?(0,Y.jsx)(B,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`unverified`?(0,Y.jsx)(B,{variant:`outlined`,onClick:a,disabled:!a||r,children:l(r?`actions.verifying`:`actions.verify`)}):u.kind===`setup`?e.id===`a2a`?null:(0,Y.jsxs)(Y.Fragment,{children:[c?(0,Y.jsxs)(B,{onClick:c,children:[(0,Y.jsx)(p,{className:`h-3.5 w-3.5`}),l(`contactChannelsSection.linkAccount`)]}):null,(0,Y.jsx)(B,{variant:`outlined`,onClick:i,disabled:!i,children:n})]}):null})]})}function We({info:e,existing:t,verifySubject:n,onConfirm:r,onCancel:i}){let{t:a}=o(`contacts`),[s,c]=(0,q.useState)(t?.address?.trim()??``),l=(0,q.useRef)(null),u=(0,q.useId)(),d=s.trim();return ze(t)?(0,Y.jsx)(j,{open:!0,title:a(`contactChannelsSection.verifyConfirmTitle`,{channel:e.label}),message:a(n===`contact`?`contactChannelsSection.verifyConfirmMessageContact`:`contactChannelsSection.verifyConfirmMessageGuardian`,{channel:e.label}),confirmLabel:a(`actions.verify`),onConfirm:()=>{r()},onCancel:i}):(0,Y.jsx)(I.Root,{open:!0,onOpenChange:e=>{e||i()},children:(0,Y.jsx)(I.Content,{size:`sm`,hideCloseButton:!0,onOpenAutoFocus:e=>{e.preventDefault(),l.current?.focus()},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),i()},children:(0,Y.jsxs)(`form`,{className:`flex flex-col`,onSubmit:e=>{e.preventDefault(),d.length!==0&&r(d)},children:[(0,Y.jsx)(I.Header,{children:(0,Y.jsx)(I.Title,{children:a(`contactChannelsSection.verifyConfirmTitle`,{channel:e.label})})}),(0,Y.jsxs)(I.Body,{className:`flex flex-col gap-3`,children:[(0,Y.jsx)(I.Description,{children:a(n===`contact`?`contactChannelsSection.verifyAddressMessageContact`:`contactChannelsSection.verifyAddressMessageGuardian`,{channel:e.label})}),(0,Y.jsx)(V,{ref:l,id:u,label:a(`contactChannelsSection.verifyAddressLabel`),type:`text`,value:s,onChange:e=>{c(e.target.value)},placeholder:a(`contactChannelsSection.verifyAddressPlaceholder`),autoComplete:`off`,spellCheck:!1,fullWidth:!0})]}),(0,Y.jsxs)(I.Footer,{children:[(0,Y.jsx)(B,{variant:`outlined`,type:`button`,onClick:i,children:a(`actions.cancel`)}),(0,Y.jsx)(B,{type:`submit`,disabled:d.length===0,children:a(`actions.verify`)})]})]})})})}function Ge(e){return e===`none`||e===`low`||e===`medium`||e===`high`}function Ke(e,t){switch(t){case`none`:return e(`contactPermissions.preset.none`);case`low`:return e(`contactPermissions.preset.low`);case`medium`:return e(`contactPermissions.preset.medium`);case`high`:return e(`contactPermissions.preset.high`)}}function qe(e,t){if(t===null)return e(`contactPermissions.inheritDescription`);switch(t){case`none`:return e(`contactPermissions.description.none`);case`low`:return e(`contactPermissions.description.low`);case`medium`:return e(`contactPermissions.description.medium`);case`high`:return e(`contactPermissions.description.high`)}}function Je(e){return e.role!==`guardian`&&e.contactType!==`assistant`}function Ye({contact:e,pending:t,onAutoApproveThresholdChange:n}){let{t:r}=o(`contacts`),i=Ge(e.autoApproveThreshold)?e.autoApproveThreshold:null,a=i===null?null:F.find(e=>e.riskThreshold===i);return(0,Y.jsx)(W,{title:r(`contactPermissions.title`),subtitle:r(`contactPermissions.subtitle`),children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,"data-testid":`contact-permissions`,children:[(0,Y.jsx)(`div`,{style:{maxWidth:280},children:(0,Y.jsx)(M,{value:a?.id??null,placeholder:r(`contactPermissions.inheritLabel`),disabled:t,onSelectNone:()=>{n(null)},onChange:e=>{let t=F.find(t=>t.id===e);t&&n(t.riskThreshold)},options:[{value:null,label:r(`contactPermissions.inheritLabel`)},...F.map(e=>{let t=e.icon;return{value:e.id,label:Ke(r,e.riskThreshold),icon:(0,Y.jsx)(t,{className:`h-3.5 w-3.5`})}})]})}),(0,Y.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:qe(r,i)})]})})}function Xe(e){return(0,Y.jsx)(Ze,{...e},e.contact.id)}function Ze({contact:e,savePending:t,deletePending:n,verifyPending:r,mergePending:i=!1,canMerge:a=!1,availableChannels:s,channelsLoadFailed:c,a2aEnabled:l,onSave:u,onDelete:d,onMerge:f,onSetupChannel:p,onVerifyChannel:m,onRevokeChannel:h,onLinkAccount:g,pendingAutoApproveThreshold:_,onAutoApproveThresholdChange:v}){let{t:y}=o(`contacts`),b=Me(e.displayName),[x,S]=(0,q.useState)(b?``:e.displayName),[C,w]=(0,q.useState)(e.notes??``),[T,E]=(0,q.useState)(!1),D=x.trim(),O=C.trim(),k=b?``:e.displayName,ee=e.notes??``,A=D!==k||O!==ee,te=D.length>0&&A&&!t&&!n,ne=b&&e.channels.length===0&&e.interactionCount===0,M=D||(b?y(`contact.draftName`):e.displayName),N=y(`contact.interactions`,{count:e.interactionCount});return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Y.jsx)(W,{title:M,accessory:(0,Y.jsx)(X,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:N,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Y.jsx)(V,{label:y(`contact.nameLabel`),type:`text`,value:x,onChange:e=>S(e.target.value),placeholder:y(`contactDetailView.namePlaceholder`),autoFocus:b,disabled:t||n,fullWidth:!0}),(0,Y.jsx)(V,{label:y(`contact.notesLabel`),type:`text`,value:C,onChange:e=>w(e.target.value),placeholder:y(`contactDetailView.notesPlaceholder`),disabled:t||n,fullWidth:!0}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Y.jsx)(B,{type:`button`,onClick:()=>u({displayName:D,notes:O}),disabled:!te,children:y(t?`actions.saving`:`actions.save`)}),f?(0,Y.jsx)(B,{type:`button`,variant:`outlined`,onClick:f,disabled:!a||ne||A||i||t||n,title:a?ne?y(`contactDetailView.mergeBlockedUnsavedDraft`):A?y(`contact.mergeBlockedUnsaved`):void 0:y(`contact.mergeBlockedNoCandidates`),children:y(i?`actions.merging`:`actions.merge`)}):null,(0,Y.jsx)(B,{type:`button`,variant:`danger`,onClick:()=>{ne?d():E(!0)},disabled:n,children:y(n?`actions.deleting`:`contactDetailView.delete`)})]})]})}),(0,Y.jsx)(W,{title:y(`contactDetailView.linkedAccountsTitle`),subtitle:y(`contactDetailView.linkedAccountsSubtitle`),children:(0,Y.jsx)(He,{contactChannels:e.channels,availableChannels:s,channelsLoadFailed:c,a2aEnabled:l,verifyLoading:r,verifySubject:`contact`,onSetupChannel:p,onVerifyChannel:m,onRevokeChannel:h,onLinkAccount:g})}),Je(e)&&v?(0,Y.jsx)(Ye,{contact:e,pending:_,onAutoApproveThresholdChange:v}):null,(0,Y.jsx)(j,{open:T,title:y(`contactDetailView.deleteConfirmTitle`,{name:M}),message:y(`contactDetailView.deleteConfirmMessage`),confirmLabel:y(`actions.delete`),destructive:!0,onConfirm:()=>{E(!1),d()},onCancel:()=>E(!1)})]})}function Qe(e){return(0,Y.jsx)($e,{...e},`${e.survivor.id}:${e.open?`open`:`closed`}`)}function $e({open:e,survivor:t,candidates:n,pending:r,errorMessage:i,onMerge:a,onClose:s}){let{t:c}=o(`contacts`),[l,u]=(0,q.useState)(``),[d,f]=(0,q.useState)(null);(0,q.useEffect)(()=>{d&&!n.some(e=>e.id===d)&&f(null)},[n,d]);let p=(0,q.useMemo)(()=>{let e=l.trim().toLowerCase();return e?n.filter(t=>t.displayName.toLowerCase().includes(e)):n},[n,l]),m=d?n.find(e=>e.id===d)??null:null,h=it(t);return(0,Y.jsx)(I.Root,{open:e,onOpenChange:e=>{!e&&!r&&s()},children:(0,Y.jsxs)(I.Content,{size:`md`,children:[(0,Y.jsxs)(I.Header,{icon:De,children:[(0,Y.jsx)(I.Title,{children:m?c(`contactMergeDialog.titlePicked`,{donor:m.displayName,survivor:h}):c(`contactMergeDialog.titlePicking`,{survivor:h})}),(0,Y.jsx)(I.Description,{children:c(m?`contactMergeDialog.descriptionPicked`:`contactMergeDialog.descriptionPicking`)})]}),(0,Y.jsxs)(I.Body,{className:`flex flex-col gap-3`,children:[m?(0,Y.jsx)(nt,{survivor:t,donor:m}):n.length===0?(0,Y.jsx)(rt,{}):(0,Y.jsx)(et,{search:l,onSearch:u,candidates:p,onPick:f}),i?(0,Y.jsx)(z,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:i}):null]}),(0,Y.jsx)(I.Footer,{children:m?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(B,{variant:`outlined`,onClick:()=>f(null),disabled:r,leftIcon:(0,Y.jsx)(_,{"aria-hidden":!0}),children:c(`actions.back`)}),(0,Y.jsx)(B,{variant:`danger`,onClick:()=>a(m.id),disabled:r,children:c(r?`actions.merging`:`contactMergeDialog.confirm`)})]}):(0,Y.jsx)(B,{variant:`outlined`,onClick:s,disabled:r,children:c(`actions.cancel`)})})]})})}function et({search:e,onSearch:t,candidates:n,onPick:r}){let{t:i}=o(`contacts`);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(V,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:i(`contactMergeDialog.searchPlaceholder`),leftIcon:(0,Y.jsx)(x,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}),(0,Y.jsx)(`div`,{className:`flex max-h-[320px] min-h-[120px] flex-col gap-1 overflow-y-auto`,role:`listbox`,"aria-label":i(`contactMergeDialog.listAriaLabel`),children:n.length===0?(0,Y.jsx)(z,{as:`p`,variant:`body-small-default`,className:`px-3 py-4 text-center text-(--content-tertiary)`,children:i(`contactsList.noMatches`)}):n.map(e=>(0,Y.jsx)(tt,{contact:e,onPick:()=>r(e.id)},e.id))})]})}function tt({contact:e,onPick:t}){let n=ot(e).join(` | `)||void 0;return(0,Y.jsx)(re,{asChild:!0,children:(0,Y.jsx)(`button`,{type:`button`,onClick:t,role:`option`,"aria-selected":`false`,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:(0,Y.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,Y.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e.displayName}),n?(0,Y.jsx)(`span`,{className:`truncate text-body-small-default text-(--content-tertiary)`,children:n}):null]})})})}function nt({survivor:e,donor:t}){let{t:n}=o(`contacts`),i=it(e),{moved:a,duplicates:s}=at(e,t);return(0,Y.jsxs)(`ul`,{className:`flex flex-col gap-2 text-body-medium-lighter text-(--content-secondary)`,children:[(0,Y.jsx)(`li`,{children:(0,Y.jsx)(r,{i18nKey:`contactMergeDialog.donorDeleted`,ns:`contacts`,values:{donor:t.displayName},components:{donor:(0,Y.jsx)(`span`,{className:`text-(--content-default)`})}})}),(0,Y.jsx)(`li`,{children:n(`contactMergeDialog.channelsMoved`,{count:a.length,survivor:i,channels:a.map(e=>Ae(e.type)).join(`, `)})}),s.length>0?(0,Y.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.duplicatesSkipped`,{count:s.length,survivor:i})}):null,t.notes?(0,Y.jsx)(`li`,{children:n(`contactMergeDialog.notesAppended`)}):null,(0,Y.jsx)(`li`,{className:`text-(--content-tertiary)`,children:n(`contactMergeDialog.irreversible`)})]})}function rt(){let{t:e}=o(`contacts`);return(0,Y.jsx)(z,{as:`p`,variant:`body-medium-lighter`,className:`px-3 py-6 text-center text-(--content-tertiary)`,children:e(`contactMergeDialog.empty`)})}function it(e){return e.role===`guardian`?!e.displayName||e.displayName.startsWith(`vellum-principal-`)?t(`survivorName.you`,{ns:`contacts`}):t(`survivorName.youNamed`,{ns:`contacts`,name:e.displayName}):e.displayName||t(`survivorName.thisContact`,{ns:`contacts`})}function at(e,t){let n=[],r=[];for(let i of t.channels)i.status!==`revoked`&&(e.channels.some(e=>e.type===i.type&&e.address.toLowerCase()===i.address.toLowerCase())?r.push(i):n.push(i));return{moved:n,duplicates:r}}function ot(e){let t=new Set,n=[];for(let r of e.channels){if(r.status===`revoked`)continue;let e=r.type.toLowerCase();t.has(e)||(t.add(e),n.push(Ae(e)))}return n}function st({loading:e,guardian:t,assistantName:n,regularContacts:r,selection:i,onSelect:a,onAddContact:s,addingContact:c=!1,search:l,onSearchChange:u}){let{t:d}=o(`contacts`),f=l.trim()?r.filter(e=>e.displayName.toLowerCase().includes(l.trim().toLowerCase())):r;return(0,Y.jsx)(R.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,Y.jsxs)(R.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:d(`contactsList.heading`)}),(0,Y.jsx)(B,{type:`button`,variant:`ghost`,iconOnly:c?(0,Y.jsx)(E,{className:`animate-spin`,"aria-hidden":!0}):(0,Y.jsx)(g,{"aria-hidden":!0}),onClick:s,disabled:c,"aria-label":d(`contactsList.addAriaLabel`),tintColor:`var(--content-secondary)`})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t?(0,Y.jsx)(ct,{name:t.displayName?d(`contactsList.youNamed`,{name:t.displayName}):d(`contactsList.you`),role:t.role,channelTypes:t.channelTypes,selected:i?.kind===`contact`&&i.contactId===t.id,onClick:()=>a({kind:`contact`,contactId:t.id}),trailingIcon:`pencil`}):null,(0,Y.jsx)(ct,{name:n?.trim()||d(`contactsList.assistantFallback`),role:`assistant`,selected:i?.kind===`assistant`,onClick:()=>a({kind:`assistant`}),trailingIcon:`more`})]}),(0,Y.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),r.length>0?(0,Y.jsx)(V,{type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:d(`contactsList.searchPlaceholder`),leftIcon:(0,Y.jsx)(x,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,r.length>0?(0,Y.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto flex flex-col gap-1`,children:[f.map(e=>(0,Y.jsx)(ct,{name:e.displayName,role:e.role,contactType:e.contactType,channelTypes:e.channelTypes,verified:e.verified,selected:i?.kind===`contact`&&i.contactId===e.id,onClick:()=>a({kind:`contact`,contactId:e.id}),trailingIcon:`more`},e.id)),f.length===0?(0,Y.jsx)(`p`,{className:`px-3 py-4 text-center text-body-small-default`,style:{color:`var(--content-tertiary)`},children:d(`contactsList.noMatches`)}):null]}):e?null:(0,Y.jsx)(B,{type:`button`,variant:`ghost`,onClick:s,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,Y.jsx)(E,{className:`animate-spin`,"aria-hidden":!0}):(0,Y.jsx)(S,{"aria-hidden":!0}),children:d(`contactsList.add`)})]})})}function ct({name:e,role:t,contactType:n,channelTypes:r,selected:i,onClick:a,trailingIcon:s,verified:c}){let{t:l}=o(`contacts`),u=r&&r.length>0?r.join(` | `):void 0,d=s===`pencil`?(0,Y.jsx)(b,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):s===`more`?(0,Y.jsx)(k,{className:`h-3.5 w-3.5 text-[color:var(--content-tertiary)]`,"aria-hidden":!0}):void 0;return(0,Y.jsx)(re,{asChild:!0,active:i,children:(0,Y.jsxs)(`button`,{type:`button`,onClick:a,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,Y.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,Y.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e}),u?(0,Y.jsx)(`span`,{className:`truncate text-body-small-default`,style:{color:`var(--content-tertiary)`},children:u}):null]}),(0,Y.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1`,children:[c===void 0?null:(0,Y.jsx)(de,{tone:c?`positive`:`neutral`,children:l(c?`contactsList.verified`:`contactsList.unverified`)}),(0,Y.jsx)(X,{role:t,contactType:n}),d]})]})})}function lt(e){return(0,Y.jsx)(ut,{...e},e.contact.id)}function ut({contact:e,savePending:t,verifyPending:n,mergePending:r=!1,canMerge:i=!1,availableChannels:a,channelsLoadFailed:s,a2aEnabled:c,onSave:l,onMerge:u,onSetupChannel:d,onVerifyChannel:f,onRevokeChannel:p,onGenerateInviteLink:m}){let{t:h}=o(`contacts`),g=e.displayName.startsWith(`vellum-principal-`),_=g?``:e.displayName,[v,y]=(0,q.useState)(_),[b,x]=(0,q.useState)(e.notes??``),S=v.trim(),C=b.trim(),w=S!==_.trim()||C!==(e.notes??``).trim(),T=w&&!t,E=h(`contact.interactions`,{count:e.interactionCount});return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Y.jsx)(W,{title:g?h(`contactsList.you`):h(`contactsList.youNamed`,{name:e.displayName}),accessory:(0,Y.jsx)(X,{role:`guardian`}),compactAccessory:!0,subtitle:E,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Y.jsx)(V,{label:h(`contact.nameLabel`),type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:h(`guardianDetailView.namePlaceholder`),disabled:t,fullWidth:!0}),(0,Y.jsx)(V,{label:h(`contact.notesLabel`),type:`text`,value:b,onChange:e=>x(e.target.value),placeholder:h(`guardianDetailView.notesPlaceholder`),disabled:t,fullWidth:!0}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Y.jsx)(B,{variant:`primary`,onClick:()=>l({displayName:S||e.displayName,notes:C}),disabled:!T,children:h(t?`actions.saving`:`actions.save`)}),u?(0,Y.jsx)(B,{variant:`outlined`,onClick:u,disabled:!i||w||r||t,title:i?w?h(`contact.mergeBlockedUnsaved`):void 0:h(`contact.mergeBlockedNoCandidates`),children:h(r?`actions.merging`:`actions.merge`)}):null]})]})}),(0,Y.jsx)(W,{title:h(`guardianDetailView.channelsTitle`),subtitle:h(`guardianDetailView.channelsSubtitle`),children:(0,Y.jsx)(He,{contactChannels:e.channels,availableChannels:a,channelsLoadFailed:s,a2aEnabled:c,setupLabel:h(`guardianDetailView.setupLabel`),verifyLoading:n,onSetupChannel:d,onVerifyChannel:f,onRevokeChannel:p})}),m?(0,Y.jsx)(K,{onClick:m}):null]})}function dt(e,t){let n=t.trim().toLowerCase().replace(/^@/,``);return n===``?e:e.filter(e=>e.displayName.toLowerCase().includes(n)||e.username.toLowerCase().includes(n))}function ft(e){let t=e.trim().split(/\s+/).filter(Boolean);return`${t[0]?.[0]??`?`}${t.length>1?t[t.length-1]?.[0]??``:``}`.toUpperCase()}function pt({open:e,channelLabel:t,contactName:n,accounts:i,loading:a,errorMessage:s,pendingAccountId:c,onPick:l,onClose:u,onInviteInstead:d}){let{t:f}=o(`contacts`),[p,m]=(0,q.useState)(``);(0,q.useEffect)(()=>{e&&m(``)},[e]);let g=(0,q.useMemo)(()=>dt(i??[],p),[i,p]),_=c!=null;return(0,Y.jsx)(I.Root,{open:e,onOpenChange:e=>!e&&u(),children:(0,Y.jsxs)(I.Content,{size:`sm`,children:[(0,Y.jsxs)(I.Header,{children:[(0,Y.jsx)(I.Title,{children:f(`linkAccountDialog.title`,{channel:t})}),(0,Y.jsx)(I.Description,{children:(0,Y.jsx)(r,{i18nKey:`linkAccountDialog.description`,ns:`contacts`,values:{channel:t,name:n},components:{contact:(0,Y.jsx)(`span`,{className:`text-[color:var(--content-default)]`})}})})]}),(0,Y.jsxs)(I.Body,{className:`flex flex-col gap-3`,children:[(0,Y.jsx)(V,{type:`search`,value:p,onChange:e=>m(e.target.value),placeholder:f(`linkAccountDialog.searchPlaceholder`),"aria-label":f(`linkAccountDialog.searchAriaLabel`,{channel:t}),leftIcon:(0,Y.jsx)(x,{className:`h-4 w-4`}),fullWidth:!0}),s?(0,Y.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-negative)]`,children:s}):null,(0,Y.jsx)(`div`,{className:`max-h-80 overflow-y-auto`,children:a?(0,Y.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:f(`linkAccountDialog.loading`)}):g.length===0?(0,Y.jsx)(`p`,{className:`py-4 text-center text-body-small-default text-[color:var(--content-tertiary)]`,children:(i?.length??0)===0?f(`linkAccountDialog.noMembers`):f(`linkAccountDialog.noMatches`)}):(0,Y.jsx)(`ul`,{className:`flex flex-col`,children:g.map(e=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>l(e),disabled:_,className:`flex w-full cursor-pointer items-center gap-3 rounded-md px-2 py-2 text-left transition-colors hover:bg-[var(--surface-overlay)] disabled:cursor-not-allowed disabled:opacity-60`,children:[e.imageUrl?(0,Y.jsx)(`img`,{src:e.imageUrl,alt:``,className:`h-8 w-8 shrink-0 rounded-full`}):(0,Y.jsx)(`span`,{"aria-hidden":`true`,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--tag-bg-neutral)] text-body-small-emphasised text-[color:var(--content-secondary)]`,children:ft(e.displayName)}),(0,Y.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,Y.jsx)(`span`,{className:`truncate text-body-medium-default text-[color:var(--content-default)]`,children:e.displayName}),(0,Y.jsxs)(`span`,{className:`truncate text-body-small-default text-[color:var(--content-tertiary)]`,children:[`@`,e.username]})]}),c===e.id?(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 text-body-small-default text-[color:var(--content-tertiary)]`,children:f(`linkAccountDialog.linking`)}):null]})},e.id))})})]}),(0,Y.jsxs)(I.Footer,{className:`items-center justify-between gap-3 border-t border-[var(--border-base)]`,children:[(0,Y.jsx)(`p`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:(0,Y.jsx)(r,{i18nKey:`linkAccountDialog.guardianLinkNote`,ns:`contacts`,components:{emphasis:(0,Y.jsx)(`span`,{className:`text-[color:var(--content-secondary)]`})}})}),d?(0,Y.jsxs)(B,{variant:`link`,className:`shrink-0`,onClick:d,disabled:_,children:[f(`linkAccountDialog.inviteInstead`),(0,Y.jsx)(h,{className:`h-3.5 w-3.5`})]}):null]})]})})}function mt({assistantId:e,channelType:r,contact:i,onLinked:a}){let[o,s]=(0,q.useState)(!1),c=n({mutationFn:t=>we(e,t.contact,{type:r,address:t.account.id}),onSuccess:(e,n)=>{s(!1),fe.success(t(`accountLink.linked`,{ns:`contacts`,username:n.account.username})),a()}}),l=(0,q.useCallback)(()=>{c.reset(),s(!0)},[c]),u=(0,q.useCallback)(()=>{c.isPending||(c.reset(),s(!1))},[c]),d=(0,q.useCallback)(e=>{!i||c.isPending||c.mutate({contact:i,account:e})},[i,c]);return{channelType:r,dialogOpen:o,open:l,close:u,linkErrorMessage:c.error instanceof Error?c.error.message:c.error?t(`accountLink.linkFailed`,{ns:`contacts`}):null,pendingAccountId:c.isPending?c.variables.account.id:null,pick:d}}var ht=[{id:`slack`,source:`default`,label:`Slack`,subtitle:`Message your assistant from Slack`,icon:`hash`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Slack. Can you help me set that up?`,contact:`I'd like to verify a contact's Slack identity. Can you walk me through it?`}},{id:`telegram`,source:`default`,label:`Telegram`,subtitle:`Message your assistant from Telegram`,icon:`send`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Telegram. Can you help me set that up?`,contact:`I'd like to verify a contact's Telegram identity. Can you walk me through it?`}},{id:`phone`,source:`default`,label:`Phone Calling`,subtitle:`Call or text your assistant via phone`,icon:`phone`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian for phone calls. Can you help me set that up?`,contact:`I'd like to verify a contact's phone number. Can you help me set that up?`}}],gt=[];function _t({assistantId:e,onStartSetupConversation:t}){let{t:r}=o(`contacts`),s=ne.use.a2aChannel(),c=te.use.name(),u=a(),[f]=l(),p=f.get(`setup`),m=p&&ae(p)?p:null,[h,g]=(0,q.useState)({kind:`assistant`}),_=xe(e),{paneRef:v,hasRoomForList:y,drawerOpen:b,openDrawer:x,closeDrawer:S}=ve(),[C,w]=(0,q.useState)(``),[T,E]=(0,q.useState)(!1),D=se(c),O=(0,q.useMemo)(()=>({path:{assistant_id:e}}),[e]),k=me(O),j=i({...A(O),enabled:!!e,select:e=>e.contacts}),M=be({assistantId:e,onStartSetupConversation:t}),N=i({...pe({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await le({path:{assistant_id:e},signal:t,throwOnError:!1});if(i?.status===404)return{channels:ht};if(!i||!i.ok)throw r??Error(`Failed to fetch channel availability`);return n},select:e=>e.channels}),F=N.data??gt,re=N.isError,I=j.data,L=(0,q.useMemo)(()=>I?.find(e=>e.role===`guardian`)??null,[I]),oe=(0,q.useMemo)(()=>I?.filter(e=>e.role!==`guardian`)??[],[I]),R=(0,q.useMemo)(()=>h.kind===`contact`?I?.find(e=>e.id===h.contactId)??null:null,[I,h]),z=(0,q.useMemo)(()=>!I||!R?[]:I.filter(e=>e.id!==R.id&&e.role!==`guardian`),[I,R]),ue=z.length>0,de=(0,q.useRef)(!!m);(0,q.useEffect)(()=>{de.current||L&&(de.current=!0,g({kind:`contact`,contactId:L.id}))},[L]);let B=(0,q.useCallback)(()=>u.invalidateQueries({queryKey:k}),[u,k]),V=n({mutationFn:()=>Ce(e,{displayName:je}),onMutate:async()=>{await u.cancelQueries({queryKey:k})},onSuccess:e=>{P(u,O,t=>t?{...t,contacts:[...t.contacts,e]}:void 0),g({kind:`contact`,contactId:e.id})},onError:G(r(`contactsPage.createFailed`)),onSettled:()=>B()}),H=n({mutationFn:t=>Te(e,t),onSuccess:(e,t)=>{P(u,O,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==t)}:void 0),g({kind:`assistant`})},onError:G(r(`contactsPage.deleteFailed`)),onSettled:()=>B()}),U=n({mutationFn:({contactId:t,patch:n})=>Ce(e,{id:t,displayName:n.displayName,notes:n.notes}),onSuccess:e=>{P(u,O,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onError:G(r(`contactsPage.saveFailed`)),onSettled:()=>B()}),W=n({mutationFn:({contactId:t,displayName:n,autoApproveThreshold:r})=>Ce(e,{id:t,displayName:n,autoApproveThreshold:r}),onSuccess:e=>{P(u,O,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onError:G(r(`contactPermissions.saveFailed`)),onSettled:()=>B()}),K=ee({onMutate:async()=>{await u.cancelQueries({queryKey:k})},onSuccess:(e,t)=>{let n=e.contact,i=t.body.mergeId;n&&(P(u,O,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==i).map(e=>e.id===n.id?n:e)}:void 0),g({kind:`contact`,contactId:n.id})),E(!1),fe.success(r(`contactsPage.mergeSucceeded`))},onSettled:()=>B()}),Ee=(0,q.useCallback)(e=>{g(e),S(),E(!1),K.reset()},[S,K]),De=(0,q.useCallback)(()=>{K.reset(),E(!0)},[K]),Oe=(0,q.useCallback)(()=>{K.isPending||(E(!1),K.reset())},[K]),J=ce({onSuccess:()=>B()}),ke=(0,q.useCallback)((t,n)=>{J.mutate({path:{assistant_id:e,contactChannelId:t},body:{status:`revoked`}})},[J,e]),Me=(0,q.useCallback)(()=>{V.isPending||V.mutate()},[V]),Ne=(0,q.useCallback)(e=>{if(!t)return;let n=F.find(t=>t.id===e);if(!n||Le(n))return;let r=n.setupMessages.contact;r&&t(r)},[F,t]),Pe=(0,q.useCallback)(e=>{if(!t)return;let n=F.find(t=>t.id===e);if(!n||Le(n))return;let r=n.setupMessages.guardian;r&&t(r)},[F,t]),X=n({mutationFn:t=>Se(e,t.channelId),onSuccess:()=>B(),onError:G(r(`contactsPage.verifyFailed`))}),Z=n({mutationFn:t=>{if(!R)throw Error(`No contact selected`);return we(e,{id:R.id,displayName:R.displayName},{type:t.type,address:t.address})},onSuccess:()=>B(),onError:G(r(`contactsPage.verifyFailed`))}),Ie=(0,q.useCallback)((e,t)=>{if(!R)return;let n=t?.trim();if(n){Z.mutate({type:e,address:n});return}let r=R.channels.find(t=>t.type===e&&t.status!==`revoked`);r?.address?.trim()&&X.mutate({channelId:r.id})},[R,Z,X]),Q=mt({assistantId:e,channelType:`slack`,contact:R?{id:R.id,displayName:R.displayName}:null,onLinked:B}),Re=i({...he(e),enabled:!!e&&Q.dialogOpen,select:e=>e.users}),ze=M.channels.some(e=>e.key===`slack`&&e.configured),Be=(0,q.useCallback)(e=>{e===Q.channelType&&Q.open()},[Q]),Ve=H.isPending?H.variables:null,$=(0,q.useMemo)(()=>{if(!R)return null;let e=R;return U.isPending&&U.variables?.contactId===R.id&&(e={...e,displayName:U.variables.patch.displayName,notes:U.variables.patch.notes}),W.isPending&&W.variables?.contactId===R.id&&(e={...e,autoApproveThreshold:W.variables.autoApproveThreshold}),e},[R,U.isPending,U.variables,W.isPending,W.variables]);if(m)return(0,Y.jsx)(d,{to:`${ie.channels}?setup=${m}`,replace:!0});let He={loading:j.isLoading,assistantName:D,guardian:L?{id:L.id,displayName:L.displayName.startsWith(`vellum-principal-`)?``:L.displayName,role:L.role,channelTypes:bt(L.channels,s)}:null,regularContacts:oe.filter(e=>e.id!==Ve).map(e=>({id:e.id,displayName:e.displayName,role:e.role,contactType:e.contactType,channelTypes:bt(e.channels,s),verified:yt(e.channels)})),selection:h,onAddContact:Me,addingContact:V.isPending,search:C,onSearchChange:w};return(0,Y.jsxs)(`div`,{ref:v,className:`flex min-h-0 flex-1 overflow-hidden ${y?`flex-row gap-6`:`flex-col gap-4`}`,children:[y?(0,Y.jsx)(`aside`,{className:`min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch`,children:(0,Y.jsx)(st,{...He,onSelect:Ee})}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`flex items-center`,children:(0,Y.jsx)(_e,{onClick:x})}),(0,Y.jsx)(ge,{open:b,onClose:S,title:r(`contactsPage.title`),children:(0,Y.jsx)(st,{...He,onSelect:Ee})})]}),(0,Y.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:h.kind===`assistant`||h.kind===`contact`&&h.contactId===Ve?(0,Y.jsx)(Fe,{assistantName:D,channels:M.channels,pendingChannelKey:M.pendingChannelKey,onConnect:M.onSetup,onDisconnect:M.onDisconnect}):$?$.role===`guardian`?(0,Y.jsx)(lt,{contact:$,savePending:U.isPending,verifyPending:X.isPending||Z.isPending,mergePending:K.isPending,canMerge:ue,availableChannels:F,channelsLoadFailed:re,a2aEnabled:s,onSave:e=>{U.mutate({contactId:$.id,patch:e})},onMerge:De,onSetupChannel:t?Pe:void 0,onVerifyChannel:Ie,onRevokeChannel:ke,onGenerateInviteLink:s?_.open:void 0}):(0,Y.jsx)(Xe,{contact:$,savePending:U.isPending,deletePending:H.isPending,verifyPending:X.isPending||Z.isPending,mergePending:K.isPending,canMerge:ue,availableChannels:F,channelsLoadFailed:re,a2aEnabled:s,onSave:e=>{U.mutate({contactId:$.id,patch:e})},onDelete:()=>{H.mutate($.id)},onMerge:De,onSetupChannel:t?Ne:void 0,onVerifyChannel:Ie,onRevokeChannel:ke,onLinkAccount:ze?Be:void 0,pendingAutoApproveThreshold:W.isPending,onAutoApproveThresholdChange:e=>{W.mutate({contactId:$.id,displayName:$.displayName,autoApproveThreshold:e})}}):(0,Y.jsx)(vt,{})}),R?(0,Y.jsx)(Qe,{open:T,survivor:R,candidates:z,pending:K.isPending,errorMessage:K.error instanceof Error?K.error.message:K.error?r(`contactsPage.mergeFailed`):null,onMerge:t=>K.mutate({path:{assistant_id:e},body:{keepId:R.id,mergeId:t}}),onClose:Oe}):null,(0,Y.jsx)(pt,{open:Q.dialogOpen,channelLabel:Ae(`slack`),contactName:R?.displayName??``,accounts:Re.data,loading:Re.isLoading,errorMessage:Re.isError?r(`contactsPage.rosterLoadFailed`):Q.linkErrorMessage,pendingAccountId:Q.pendingAccountId,onPick:Q.pick,onClose:Q.close,onInviteInstead:t?()=>{Q.close(),Ne(Q.channelType)}:void 0}),(0,Y.jsx)(ye,{open:_.isOpen,assistantId:e,onClose:_.close})]})}function vt(){let{t:e}=o(`contacts`);return(0,Y.jsx)(`div`,{className:`flex h-full items-center justify-center py-16`,children:(0,Y.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e(`contactsPage.emptyBody`)})})}function yt(e){return e.some(e=>e.status!==`revoked`&&(e.type===`a2a`||J(e)))}function bt(e,t){let n=new Set,r=[];for(let i of e){if(i.status===`revoked`)continue;let e=i.type.toLowerCase();n.has(e)||e===`a2a`&&!t||(n.add(e),r.push(Ae(e)))}return r}function xt(){let e=c(),t=H();return(0,Y.jsx)(_t,{assistantId:t,onStartSetupConversation:t=>{N(e,{prompt:t})}},t)}export{xt as ContactsPageRoute};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{j as t}from"./vendor-C_e0Rl2s.js";import{b as n,t as r}from"./react-DPM_L_aA.js";import{Li as i,Vi as a,lr as o,qn as s}from"./icons-xHdc0dPY.js";import{Am as c,db as l,pb as u,rb as d}from"./index-CleA12ha.js";var f=e(n(),1),p=`/v1/credential-requests/peek`,m=`/v1/credential-requests/submit`;function h(e){return e>0xe8d4a51000?e:e*1e3}function g(e){let t=e?.error?.code;return t===`INVALID`?`invalid`:t===`EXPIRED`?`expired`:t===`USED`?`used`:null}function _(e){let t=e;return typeof t?.service==`string`&&typeof t.field==`string`&&(t.label===null||typeof t.label==`string`)&&typeof t.expiresAt==`number`}async function v(e,t){let n=await fetch(c(p),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e}),signal:t}),r=await n.json().catch(()=>null);return n.ok&&_(r)?{status:`ok`,request:r}:n.status===404?{status:g(r)??`invalid`}:{status:`error`}}async function y(e,t,n){let r=await fetch(c(m),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,value:t}),signal:n});if(r.ok)return{status:`ok`};let i=await r.json().catch(()=>null);return r.status===404?{status:g(i)??`invalid`}:r.status===502?{status:`store-failed`}:{status:`error`}}var b=r();function x(e){let[t,n]=(0,f.useState)(()=>Date.now());return(0,f.useEffect)(()=>{let t=setInterval(()=>n(Date.now()),e);return()=>clearInterval(t)},[e]),t}function S(e){let t=Math.max(0,Math.ceil(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}h ${r}m`:r>0?`${r}m ${i}s`:`${i}s`}function C({icon:e,title:t,children:n}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e,(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:t})]}),(0,b.jsx)(`p`,{className:`text-sm leading-6 text-[var(--content-secondary)]`,children:n})]})}function w(){let{t:e}=t(`credential-requests`),[n]=(0,f.useState)(()=>new URLSearchParams(window.location.hash.replace(/^#/,``)).get(`token`)?.trim()||new URLSearchParams(window.location.search).get(`token`)?.trim()||null),[r,c]=(0,f.useState)({kind:`loading`}),[p,m]=(0,f.useState)(``),[g,_]=(0,f.useState)(!1),[w,T]=(0,f.useState)(null),E=x(1e3);(0,f.useEffect)(()=>{let e=new URL(window.location.href),t=new URLSearchParams(e.hash.replace(/^#/,``));if(!t.has(`token`)&&!e.searchParams.has(`token`))return;e.searchParams.delete(`token`),t.delete(`token`);let n=t.toString();window.history.replaceState(window.history.state,``,`${e.pathname}${e.search}${n?`#${n}`:``}`)},[]),(0,f.useEffect)(()=>{if(!n){c({kind:`invalid`});return}let e=new AbortController;return(async()=>{let t=await v(n,e.signal).catch(()=>({status:`error`}));e.signal.aborted||(t.status===`ok`?c({kind:`form`,request:t.request}):c({kind:t.status}))})(),()=>{e.abort()}},[n]);let D=async e=>{if(e.preventDefault(),!n||r.kind!==`form`||!p.trim()||g)return;_(!0),T(null);let t=await y(n,p).catch(()=>({status:`error`}));switch(_(!1),t.status){case`ok`:m(``),c({kind:`success`});break;case`invalid`:case`expired`:case`used`:c({kind:t.status});break;case`store-failed`:m(``),c({kind:`store-failed`});break;case`error`:T(`Something went wrong while submitting. Check your connection and try again.`);break}},O=r.kind===`form`?h(r.request.expiresAt):null,k=r.kind===`form`&&O!==null&&O>E,A;if(r.kind===`loading`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(s,{className:`h-5 w-5 animate-spin text-blue-600`,"aria-hidden":!0}),title:e(`credentialEntry.checkingTitle`),children:e(`credentialEntry.checkingBody`)});else if(r.kind===`success`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(i,{className:`h-5 w-5 text-green-600`,"aria-hidden":!0}),title:e(`credentialEntry.savedTitle`),children:e(`credentialEntry.savedBody`)});else if(r.kind===`invalid`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.invalidTitle`),children:e(`credentialEntry.invalidBody`)});else if(r.kind===`expired`||r.kind===`form`&&!k)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.expiredTitle`),children:e(`credentialEntry.expiredBody`)});else if(r.kind===`used`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.usedTitle`),children:e(`credentialEntry.usedBody`)});else if(r.kind===`store-failed`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.storeFailedTitle`),children:e(`credentialEntry.storeFailedBody`)});else if(r.kind===`error`)A=(0,b.jsx)(C,{icon:(0,b.jsx)(a,{className:`h-5 w-5 text-red-600`,"aria-hidden":!0}),title:e(`credentialEntry.errorTitle`),children:e(`credentialEntry.errorBody`)});else{let{request:t}=r,n=`${t.service}:${t.field}`,i=(O??0)-E;A=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(o,{className:`h-5 w-5 text-blue-600`,"aria-hidden":!0}),(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:e(`credentialEntry.heading`)})]}),(0,b.jsxs)(`div`,{className:`rounded-md border border-[var(--border-subtle)] bg-[var(--background-muted)] p-4`,children:[(0,b.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:t.label||n}),(0,b.jsxs)(`p`,{className:`mt-1 font-mono text-body-small-default text-[var(--content-tertiary)]`,children:[t.label?`${n} · `:``,e(`credentialEntry.oneTimeEntry`)]})]}),(0,b.jsx)(`p`,{className:`text-sm leading-6 text-[var(--content-secondary)]`,children:e(`credentialEntry.instructions`)}),(0,b.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:e=>void D(e),children:[(0,b.jsx)(d,{label:e(`credentialEntry.valueLabel`),type:`password`,value:p,onChange:e=>m(e.target.value),placeholder:e(`credentialEntry.valuePlaceholder`),autoComplete:`off`,autoFocus:!0,fullWidth:!0,errorText:w??void 0}),(0,b.jsx)(u,{type:`submit`,disabled:g||!p.trim(),leftIcon:g?(0,b.jsx)(s,{className:`animate-spin`,"aria-hidden":!0}):void 0,children:e(`credentialEntry.submit`)})]}),(0,b.jsx)(`p`,{className:`text-xs text-[var(--content-tertiary)]`,children:e(`credentialEntry.expiresIn`,{remaining:S(i),time:new Date(O??0).toLocaleTimeString()})})]})}return(0,b.jsx)(`main`,{className:`flex min-h-svh items-center justify-center bg-[var(--background-default)] px-6 py-10 text-[var(--content-primary)]`,children:(0,b.jsx)(`div`,{className:`w-full max-w-md`,children:(0,b.jsx)(l.Root,{bordered:!0,elevated:!0,padding:`lg`,children:(0,b.jsx)(`div`,{className:`flex flex-col gap-4`,children:A})})})})}export{w as CredentialEntryPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Zn as t,er as n,j as r}from"./vendor-C_e0Rl2s.js";import{b as i,t as a}from"./react-DPM_L_aA.js";import{$n as o,It as s,Jr as c,Ki as l,_t as u,k as d,lr as f,qn as p,qr as m,si as h}from"./icons-xHdc0dPY.js";import{Bh as g,Fv as _,Gu as v,Ig as y,Ky as b,Qv as x,Rg as S,Yy as C,Zy as w,cy as T,db as E,iy as ee,jf as te,kp as ne,mb as D,nt as O,ob as re,oy as ie,pb as k,qy as A,rb as j,rt as M,t as N,tt as ae,zh as oe}from"./index-CleA12ha.js";import{t as se}from"./detail-card-B0OGBJ1-.js";import{t as P}from"./use-supports-credentials-settings-BuLaPijC.js";var F=e(i(),1),I=`CREDENTIAL_IN_USE`;function ce(e){if(!(e instanceof T)||e.code!==I)return null;let t=e.details;if(!t||typeof t!=`object`||!(`connections`in t))return null;let{connections:n}=t;return!Array.isArray(n)||!n.every(e=>typeof e==`string`)?null:n}function le(e){return new Intl.ListFormat(x(),{style:`long`,type:`conjunction`}).format(e)}var L=a(),R=1500;function z(e){if(!e)return``;try{return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}catch{return``}}function B({credential:e,assistantId:t,generatingLink:n,deleting:i,onGenerateLink:a,onDelete:s}){let{t:c}=r(`settings`),l=`${e.service}:${e.field}`,u=n||i,m=[e.alias?l:null,e.createdAt?c(`credentialRow.addedMetadata`,{date:z(e.createdAt)}):null].filter(e=>!!e);return(0,L.jsx)(E.Root,{children:(0,L.jsxs)(E.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,L.jsx)(f,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,L.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,L.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:e.alias||l}),(0,L.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center`,children:(0,L.jsx)(V,{assistantId:t,credential:e})}),m.length>0&&(0,L.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:m.join(` · `)})]}),(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,L.jsx)(D,{content:c(`credentialRow.generateLinkLabel`),side:`top`,children:(0,L.jsx)(k,{variant:`outlined`,onClick:a,disabled:u,"aria-label":c(`credentialRow.generateLinkAriaLabel`,{name:l}),iconOnly:n?(0,L.jsx)(p,{className:`animate-spin`,"aria-hidden":!0}):(0,L.jsx)(o,{"aria-hidden":!0})})}),(0,L.jsx)(D,{content:c(`credentialRow.deleteLabel`),side:`top`,children:(0,L.jsx)(k,{variant:`dangerOutline`,onClick:s,disabled:u,"aria-label":c(`credentialRow.deleteAriaLabel`,{name:l}),iconOnly:i?(0,L.jsx)(p,{className:`animate-spin`,"aria-hidden":!0}):(0,L.jsx)(d,{"aria-hidden":!0})})})]})]})})}function V({assistantId:e,credential:t}){let{t:n}=r(`settings`),[i,a]=(0,F.useState)(null),[o,s]=(0,F.useState)(!1),[u,d]=(0,F.useState)(!1),f=(0,F.useRef)(null),_=(0,F.useRef)(0),v=`${t.service}:${t.field}`,y=(0,F.useCallback)(()=>{_.current++,a(null),s(!1),d(!1),f.current&&=(clearTimeout(f.current),null)},[]);(0,F.useEffect)(()=>{y()},[t.updatedAt,y]);let b=(0,F.useCallback)(async()=>{let r=++_.current;s(!0);try{let{data:n}=await g({path:{assistant_id:e},body:{service:t.service,field:t.field},throwOnError:!0});_.current===r&&a(n.value)}catch{_.current===r&&A.error(n(`credentialRow.revealFailedToast`,{name:v}))}finally{_.current===r&&s(!1)}},[e,t.service,t.field,v,n]),x=(0,F.useCallback)(()=>{i!=null&&S(i,{errorMessage:n(`credentialRow.copyFailedToast`),onCopied:()=>{d(!0),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>d(!1),R)}})},[i,n]),C=i!==null;return t.hasSecret?(0,L.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5 align-middle font-mono text-body-medium-lighter`,children:[(0,L.jsx)(`button`,{type:`button`,onClick:()=>C?y():void b(),disabled:o,"aria-label":n(C?`credentialRow.hideValueAriaLabel`:`credentialRow.revealValueAriaLabel`,{name:v}),title:n(C?`credentialRow.hideValueTitle`:`credentialRow.clickToRevealTitle`),"data-private":!0,className:`min-w-0 truncate rounded-sm text-left transition-[filter,color] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)] ${C?`text-[var(--content-secondary)]`:`select-none text-[var(--content-tertiary)] blur-[3px] hover:blur-[2px]`}`,children:C?i:t.scrubbedValue}),o?(0,L.jsx)(p,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):C?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,onClick:x,"aria-label":n(`credentialRow.copyValueAriaLabel`,{name:v}),title:n(`credentialRow.copyValueTitle`),className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:u?(0,L.jsx)(l,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,L.jsx)(h,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,L.jsx)(`button`,{type:`button`,onClick:y,"aria-label":n(`credentialRow.hideValueAriaLabel`,{name:v}),title:n(`credentialRow.hideValueTitle`),className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,L.jsx)(c,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,L.jsx)(`button`,{type:`button`,onClick:()=>void b(),"aria-label":n(`credentialRow.revealValueAriaLabel`,{name:v}),title:n(`credentialRow.clickToRevealTitle`),className:`shrink-0 rounded-sm p-0.5 text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-focus)]`,children:(0,L.jsx)(m,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,L.jsx)(`span`,{className:`min-w-0 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:t.scrubbedValue})}function H(e){return e>0xe8d4a51000?e:e*1e3}async function U(e,t){let{data:n,response:r}=await y.post({url:`/v1/assistants/{assistant_id}/credential-requests`,path:{assistant_id:e},body:t});if(!r?.ok)throw Error(`Failed to create credential request: ${r?.status}`);return n}var W=6;function G(){let e=M(),t=P(e),n=_.use.assistantId();return _.use.version()!==null&&n===e&&!t?(0,L.jsx)(N,{}):t?(0,L.jsx)(K,{}):null}function K(){let{t:e}=r(`settings`),i=M(),a=n(),c=ne(),l=O(i),d=t({queryKey:l,queryFn:async()=>{let{data:e}=await oe({path:{assistant_id:i},body:{},throwOnError:!0});return{credentials:e.credentials,managedCredentials:e.managedCredentials}},enabled:c,retry:ie}),m=(0,F.useMemo)(()=>d.data?.credentials??[],[d.data]),g=v.use.settingsDeveloperNav(),_=(0,F.useMemo)(()=>g?d.data?.managedCredentials??[]:[],[g,d.data]),[y,x]=(0,F.useState)(!1),[T,D]=(0,F.useState)(`own`),[N,P]=(0,F.useState)(``),[I,R]=(0,F.useState)(null),[z,V]=(0,F.useState)(null),[G,K]=(0,F.useState)(null),[ue,q]=(0,F.useState)(null),J=te({onSuccess:(t,n)=>{a.invalidateQueries({queryKey:l}),A.success(e(`credentialsPage.deleteSuccessToast`,{name:`${n.body.service}:${n.body.field}`}))},onError:(t,n)=>{let r=ce(t),i=m.find(e=>e.service===n.body.service&&e.field===n.body.field);if(r&&i){V({credential:i,connections:r});return}ee(t,{context:`credentials-delete`}),A.error(t.message||e(`credentialsPage.deleteErrorToast`))}}),de=J.isPending?`${J.variables?.body?.service}:${J.variables?.body?.field}`:null,Y=(0,F.useMemo)(()=>{let e=N.trim().toLowerCase();return e?m.filter(t=>[t.service,t.field,`${t.service}:${t.field}`,t.alias??``].join(` `).toLowerCase().includes(e)):m},[m,N]);(0,F.useEffect)(()=>{m.length<=W&&P(``)},[m.length]),(0,F.useEffect)(()=>{m.length===0&&_.length>0&&D(`managed`)},[m.length,_.length]);let X=(e,t)=>{J.mutate({path:{assistant_id:i},body:{service:e.service,field:e.field,...t?{force:!0}:{}}})},fe=()=>{let e=I;R(null),e&&X(e,!1)},pe=()=>{let e=z;V(null),e&&X(e.credential,!0)},me=async t=>{let n=`${t.service}:${t.field}`;q(n);try{let r=await U(i,{service:t.service,field:t.field,label:t.alias??void 0});r.ok&&r.url?K({name:n,url:r.url,expiresAt:r.expiresAt??null}):A.error(r.error||e(`credentialsPage.generateLinkFailedToast`))}catch(t){A.error(t instanceof Error?t.message:e(`credentialsPage.generateLinkFailedToast`))}finally{q(null)}},he=()=>{let t=G?.url;t&&S(t,{successMessage:e(`credentialsPage.linkCopiedToast`),errorMessage:e(`credentialsPage.linkCopyFailedToast`)})};if(d.isLoading)return(0,L.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,L.jsx)(p,{className:`h-5 w-5 animate-spin text-[var(--content-disabled)]`})});let Z=m.length>0,Q=_.length>0,ge=m.length>W,$=T===`managed`&&Q,_e=!$,ve=[{value:`own`,label:e(`credentialsPage.segmentYourOwn`)},{value:`managed`,label:e(`credentialsPage.segmentManaged`)}];return(0,L.jsxs)(`div`,{className:`space-y-4`,children:[(0,L.jsx)(se,{title:e(`credentialsPage.title`),subtitle:e($?`credentialsPage.subtitleManaged`:`credentialsPage.subtitleOwn`),accessory:(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Q?(0,L.jsx)(w,{items:ve,value:T,onChange:D,ariaLabel:e(`credentialsPage.credentialSourceAriaLabel`)}):null,_e&&Z?(0,L.jsx)(k,{type:`button`,variant:`primary`,size:`regular`,onClick:()=>x(!0),leftIcon:(0,L.jsx)(s,{"aria-hidden":!0}),children:e(`credentialsPage.addButton`)}):null]}),children:$?(0,L.jsx)(`div`,{className:`space-y-2`,children:_.map(t=>(0,L.jsx)(E.Root,{children:(0,L.jsxs)(E.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,L.jsx)(f,{className:`h-5 w-5 shrink-0 text-[var(--content-secondary)]`,"aria-hidden":!0}),(0,L.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,L.jsx)(`p`,{className:`truncate text-title-small text-[var(--content-default)]`,children:t.provider}),(0,L.jsxs)(`p`,{className:`truncate text-body-medium-lighter text-[var(--content-tertiary)]`,children:[t.accountInfo??t.handle,` · `,t.status]})]}),(0,L.jsx)(re,{tone:`neutral`,children:e(`credentialsPage.managedTag`)})]})},t.handle))}):(0,L.jsxs)(`div`,{className:`space-y-4`,children:[Z?(0,L.jsxs)(`div`,{className:`space-y-3`,children:[ge?(0,L.jsx)(j,{type:`text`,value:N,onChange:e=>P(e.target.value),placeholder:e(`credentialsPage.searchPlaceholder`),"aria-label":e(`credentialsPage.searchAriaLabel`),leftIcon:(0,L.jsx)(u,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,Y.length===0?(0,L.jsx)(`p`,{className:`px-1 py-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:e(`credentialsPage.noMatch`,{query:N.trim()})}):(0,L.jsx)(`div`,{className:`space-y-2`,children:Y.map(e=>{let t=`${e.service}:${e.field}`;return(0,L.jsx)(B,{credential:e,assistantId:i,generatingLink:ue===t,deleting:de===t,onGenerateLink:()=>void me(e),onDelete:()=>R(e)},e.credentialId??t)})})]}):(0,L.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-6 py-12 text-center`,children:[(0,L.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,L.jsx)(f,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`,"aria-hidden":!0})}),(0,L.jsx)(`h3`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:e(`credentialsPage.emptyTitle`)}),(0,L.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:e(`credentialsPage.emptySubtitle`)})]}),Z?null:(0,L.jsx)(k,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>x(!0),className:`w-full border-dashed`,leftIcon:(0,L.jsx)(s,{"aria-hidden":!0}),children:e(`credentialsPage.addCredentialButton`)})]})}),(0,L.jsx)(b,{open:I!==null,title:e(`credentialsPage.deleteConfirmTitle`),message:I?e(`credentialsPage.deleteConfirmMessage`,{name:`${I.service}:${I.field}`}):``,confirmLabel:e(`credentialsPage.deleteConfirmLabel`),destructive:!0,onConfirm:fe,onCancel:()=>R(null)}),(0,L.jsx)(b,{open:z!==null,title:e(`credentialsPage.inUseTitle`),message:z?e(`credentialsPage.inUseMessage`,{count:z.connections.length,name:`${z.credential.service}:${z.credential.field}`,connections:le(z.connections)}):``,confirmLabel:e(`credentialsPage.inUseConfirmLabel`),destructive:!0,onConfirm:pe,onCancel:()=>V(null)}),(0,L.jsx)(ae,{open:y,onClose:()=>x(!1)}),(0,L.jsx)(C.Root,{open:G!==null,onOpenChange:e=>{e||K(null)},children:(0,L.jsxs)(C.Content,{size:`sm`,children:[(0,L.jsxs)(C.Header,{icon:o,children:[(0,L.jsx)(C.Title,{children:e(`credentialsPage.oneTimeLinkModalTitle`)}),(0,L.jsx)(C.Description,{children:G?e(`credentialsPage.oneTimeLinkModalDescription`,{name:G.name,expiresClause:G.expiresAt===null?``:e(`credentialsPage.oneTimeLinkModalExpiresClause`,{expiresAt:new Date(H(G.expiresAt)).toLocaleString()})}):``})]}),(0,L.jsx)(C.Body,{children:(0,L.jsx)(j,{label:e(`credentialsPage.linkLabel`),type:`text`,readOnly:!0,value:G?.url??``,onFocus:e=>e.currentTarget.select(),fullWidth:!0})}),(0,L.jsx)(C.Footer,{children:(0,L.jsx)(k,{type:`button`,size:`compact`,onClick:he,leftIcon:(0,L.jsx)(h,{"aria-hidden":!0}),children:e(`credentialsPage.copyLinkButton`)})})]})})]})}export{G as CredentialsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{b as t,f as n}from"./react-DPM_L_aA.js";import{Xv as r}from"./index-CleA12ha.js";var i=e(t(),1);function a(){let e=n();return(0,i.useEffect)(()=>{e(r.settings.general,{replace:!0})},[e]),null}export{a as DangerZoneRedirectPage};
|