@vellumai/web 0.11.7 → 0.11.8-staging.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{a2a-invite-CalxmT9U.js → a2a-invite-DqSTflKa.js} +1 -1
- package/dist/assets/{about-page-oelEgoKN.js → about-page-BjnrQu1C.js} +1 -1
- package/dist/assets/account-Bo0GsPWI.js +1 -0
- package/dist/assets/account-D59Pog6a.js +1 -0
- package/dist/assets/{account-page-DoWCrccl.js → account-page-DqP1QsnR.js} +1 -1
- package/dist/assets/{account-shell-D6h6YPdW.js → account-shell-DK0R6Tov.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-BqBDl6QB.js → acp-run-detail-panel-BdtW6qDu.js} +4 -4
- package/dist/assets/activity-redirect-page-BlnIxG-Z.js +1 -0
- package/dist/assets/activity-steps-panel-BSUUY3JD.js +1 -0
- package/dist/assets/{add-credits-modal-Clc-YWYG.js → add-credits-modal-BI2CsQ87.js} +1 -1
- package/dist/assets/ai-page-DGyy3dQE.js +1 -0
- package/dist/assets/android-billing-handoff-DrlrNBbY.js +1 -0
- package/dist/assets/api-key-screen-_UTNn9KJ.js +1 -0
- package/dist/assets/{app-info-BzVdvgJM.js → app-info-BLCdGdH4.js} +1 -1
- package/dist/assets/archive-redirect-page-BLoeX3_F.js +1 -0
- package/dist/assets/assistant-status-panel-YKs5Ubf5.js +1 -0
- package/dist/assets/{auth-welcome-screen-ghh-qFOz.js → auth-welcome-screen-_mWoDKPq.js} +1 -1
- package/dist/assets/avatar-bundled-components-D8WzF-8G.js +1 -0
- package/dist/assets/avatar-random-CjTiNqoZ.js +1 -0
- package/dist/assets/await-org-header-settled-0xMP92NT.js +1 -0
- package/dist/assets/background-task-detail-panel-CUQtiY1y.js +1 -0
- package/dist/assets/billing-page-DScRdoHM.js +3 -0
- package/dist/assets/{billing-redirect-page-DaIhDbvM.js → billing-redirect-page-BmuMF_1f.js} +1 -1
- package/dist/assets/{bookmarks-page-CvCqY1u_.js → bookmarks-page-DutOB8Of.js} +1 -1
- package/dist/assets/{bundle-confirm-page-DuW3Ltpg.js → bundle-confirm-page-CpWjneJj.js} +1 -1
- package/dist/assets/channel-transcript-panel-Dd8N9yEZ.js +1 -0
- package/dist/assets/channels-B8lsoUr6.js +9 -0
- package/dist/assets/channels-D4_Gad55.js +9 -0
- package/dist/assets/channels-page-route--8dnzBPq.js +1 -0
- package/dist/assets/chat-Bff_DY7r.js +3 -0
- package/dist/assets/chat-C2NjPMmK.js +3 -0
- package/dist/assets/chat-CGQw-Yey.js +3 -0
- package/dist/assets/chat-EhD_n50p.js +3 -0
- package/dist/assets/checkout-continuation-CpvBfvVc.js +1 -0
- package/dist/assets/{checkout-page-CpaWMY_L.js → checkout-page-IsznypCf.js} +1 -1
- package/dist/assets/checkout-return-target-DbrgNrrf.js +1 -0
- package/dist/assets/command-palette-BxtSdT49.js +1 -0
- package/dist/assets/{command-palette-window-page-C4vKhArq.js → command-palette-window-page-C-xJ-yX9.js} +1 -1
- package/dist/assets/common-5z_PuGxF.js +1 -0
- package/dist/assets/common-CEn7rBGF.js +1 -0
- package/dist/assets/{community-page-xiwPgo2f.js → community-page-CXHy8Ge9.js} +1 -1
- package/dist/assets/companion-layout-Czzr0lJa.js +1 -0
- package/dist/assets/companion-surface-page-CnvwXfnQ.js +1 -0
- package/dist/assets/connect-page-_NcsEyVj.js +1 -0
- package/dist/assets/{consent-controls-RsRyTWzn.js → consent-controls-C5AN2KN4.js} +1 -1
- package/dist/assets/contacts-B1CxNq6I.js +1 -0
- package/dist/assets/contacts-gateway-CQ4flwOK.js +1 -0
- package/dist/assets/contacts-jdOGgx_y.js +1 -0
- package/dist/assets/contacts-page-route-DyWsRFq5.js +1 -0
- package/dist/assets/{credential-entry-page-CHyGUHNE.js → credential-entry-page-xZF9nHkn.js} +1 -1
- package/dist/assets/credential-requests-BAOvHGUi.js +1 -0
- package/dist/assets/credential-requests-CeqlvkYb.js +1 -0
- package/dist/assets/credentials-page-Cv7KZ5ho.js +1 -0
- package/dist/assets/{csv-preview-D1DFyAyk.js → csv-preview-CbPbBKMc.js} +2 -2
- package/dist/assets/danger-zone-redirect-page-DSW93QrQ.js +1 -0
- package/dist/assets/debug-page-pjDDmKf-.js +4 -0
- package/dist/assets/deploy-dialogs-BbxlNwkW.js +1 -0
- package/dist/assets/{detail-card-BTciodin.js → detail-card-CUnVRct3.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-DvPi_A52.js → detail-panel-stop-button-jUM1oBBe.js} +1 -1
- package/dist/assets/developer-page-DiF8DSCd.js +1 -0
- package/dist/assets/devices-redirect-page-CxnsRMZf.js +1 -0
- package/dist/assets/{dictation-overlay-page-CV5-bWnC.js → dictation-overlay-page-C-LzQvTP.js} +1 -1
- package/dist/assets/{document-viewer-page-B9aeVcPf.js → document-viewer-page-Bq6Y0E7o.js} +1 -1
- package/dist/assets/emails-page-8B6Ly4G5.js +1 -0
- package/dist/assets/environment-store-DJj25KEt.js +1 -0
- package/dist/assets/{esm-BFMxsKfC.js → esm-BM5LKkMa.js} +2 -2
- package/dist/assets/esm-BmuPALKt.js +2 -0
- package/dist/assets/esm-BrAZhW0M.js +2 -0
- package/dist/assets/esm-COwSlx4I.js +2 -0
- package/dist/assets/esm-Ci6ABHVx.js +2 -0
- package/dist/assets/{esm-C8_GJq6u.js → esm-D3dJNih2.js} +1 -1
- package/dist/assets/{esm-BmkPJcrm.js → esm-DC5BUUBD.js} +1 -1
- package/dist/assets/esm-DDyx9ZyD.js +1 -0
- package/dist/assets/esm-DKi5wrhP.js +2 -0
- package/dist/assets/{file-editor-qyflOek_.js → file-editor-DXDNFMLF.js} +1 -1
- package/dist/assets/general-page-DG9ZCp1L.js +1 -0
- package/dist/assets/hatching-screen-DjlxM27X.js +1 -0
- package/dist/assets/home-9eoM_SNy.js +1 -0
- package/dist/assets/home-BhxVuUxm.js +1 -0
- package/dist/assets/home-CSq5yPBw.js +1 -0
- package/dist/assets/home-Dex_kznj.js +1 -0
- package/dist/assets/hosting-screen-CHJV8OKw.js +1 -0
- package/dist/assets/identity-page-route-Dy6BfkON.js +7 -0
- package/dist/assets/index-DJRB6vZU.css +2 -0
- package/dist/assets/index-D_aS89pX.js +370 -0
- package/dist/assets/inspect-page-0gb3Spn6.js +9 -0
- package/dist/assets/integrations-page-Ba79dcjJ.js +1 -0
- package/dist/assets/intelligence-CPhx3_7x.js +5 -0
- package/dist/assets/intelligence-CYj3jKpS.js +5 -0
- package/dist/assets/intelligence-DOcItPm0.js +5 -0
- package/dist/assets/intelligence-DbjVpOZC.js +5 -0
- package/dist/assets/{intelligence-layout-DKknlxHu.js → intelligence-layout-Xz9XcFr1.js} +1 -1
- package/dist/assets/keyboard-shortcuts-redirect-page-C40qrNeb.js +1 -0
- package/dist/assets/{latest-assistant-text-CVRVSoFg.js → latest-assistant-text-DSAZhezZ.js} +2 -2
- package/dist/assets/library-A1mfTMw7.js +1 -0
- package/dist/assets/library-BmjZHtUe.js +1 -0
- package/dist/assets/library-detail-page-B5v9tOTU.js +1 -0
- package/dist/assets/library-page-D-ARkx0z.js +1 -0
- package/dist/assets/{login-page-Bca-1DK6.js → login-page-BVW_Vh56.js} +1 -1
- package/dist/assets/logout-page-D6vp-22y.js +1 -0
- package/dist/assets/logs-CoXwXRSx.js +1 -0
- package/dist/assets/logs-Fi_ec4t8.js +1 -0
- package/dist/assets/{logs-layout-BsqrLQee.js → logs-layout-BA179Y3f.js} +1 -1
- package/dist/assets/markdown-preview-GpDL8mBq.js +1 -0
- package/dist/assets/{media-preview-daMlnyj8.js → media-preview-CDJaS6fc.js} +1 -1
- package/dist/assets/memory-page-route-Cvj55ZjT.js +2 -0
- package/dist/assets/memory-router-playground-page-DUZ0gtBR.js +1 -0
- package/dist/assets/{message-files-panel-D-C9C2PJ.js → message-files-panel-PTrDXJ4i.js} +1 -1
- package/dist/assets/{metric-card-Bij5WGzs.js → metric-card-CWM6vcyu.js} +1 -1
- package/dist/assets/{notifications-page-C6zUs2x1.js → notifications-page-CaZD0MYc.js} +1 -1
- package/dist/assets/{oauth-complete-page-CuNDqPAt.js → oauth-complete-page-Ba3Mx9KI.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-hRc3yLWH.js → oauth-popup-complete-page-BZmU05Vk.js} +2 -2
- package/dist/assets/onboarding-Cfot2yE2.js +1 -0
- package/dist/assets/onboarding-DfVty_iP.js +1 -0
- package/dist/assets/onboarding-gNiy_Bmv.js +1 -0
- package/dist/assets/onboarding-pcCDtWuX.js +1 -0
- package/dist/assets/{page-shell-DtdXurhX.js → page-shell-DLe_v5G-.js} +1 -1
- package/dist/assets/{pairing-page-CwLe0EJV.js → pairing-page-BQ3K7weF.js} +1 -1
- package/dist/assets/password-reset-page-CRZ-73il.js +1 -0
- package/dist/assets/pdf-file-preview-CuTK4AuS.js +1 -0
- package/dist/assets/personality-page-D1G40Yn3.js +1 -0
- package/dist/assets/plans-page-DPXyO50E.js +1 -0
- package/dist/assets/{platform-loopback-page-CgXx1oDQ.js → platform-loopback-page-DKu--uHN.js} +1 -1
- package/dist/assets/plugin-detail-page-CnKTgCyr.js +1 -0
- package/dist/assets/plugins-page-ClQ_3N9E.js +1 -0
- package/dist/assets/preview-error-CyxFuY6O.js +1 -0
- package/dist/assets/privacy-page-u1PH5mYu.js +1 -0
- package/dist/assets/privacy-screen-Da8hwBJF.js +1 -0
- package/dist/assets/{provider-callback-page-DGVehvIp.js → provider-callback-page-M-6o0Pd5.js} +1 -1
- package/dist/assets/{provider-key-CUAJZvaQ.js → provider-key-B_Xu4pqn.js} +1 -1
- package/dist/assets/{provider-signup-page-B5gnrbym.js → provider-signup-page-0j8UCf9F.js} +1 -1
- package/dist/assets/{provisioning-targets-BbLfumae.js → provisioning-targets-CQv-d2hy.js} +1 -1
- package/dist/assets/{quick-input-page-Ccy-FS5S.js → quick-input-page-K0l1m71a.js} +1 -1
- package/dist/assets/rehype-katex-DsHZTQuO.js +259 -0
- package/dist/assets/remote-web-DC-am5Yy.js +1 -0
- package/dist/assets/remote-web-sY-CQsMN.js +1 -0
- package/dist/assets/{research-mock-page-DqfkGU9x.js → research-mock-page-D6T-KFn5.js} +1 -1
- package/dist/assets/research-onboarding-route-CnZboHbK.js +50 -0
- package/dist/assets/review-terms-screen-C2I57d8X.js +1 -0
- package/dist/assets/schedules-0KnLvdZ6.js +1 -0
- package/dist/assets/{schedules-CYD1CzCP.js → schedules-C2HIPzbf.js} +1 -1
- package/dist/assets/schedules-CsCj9HkE.js +1 -0
- package/dist/assets/schedules-DN7BQ5zf.js +1 -0
- package/dist/assets/schedules-DRVrzPSf.js +1 -0
- package/dist/assets/schedules-page-B-c8TkpF.js +1 -0
- package/dist/assets/security-redirect-page-CnA878M5.js +1 -0
- package/dist/assets/select-assistant-screen-DLSi6ldU.js +1 -0
- package/dist/assets/{self-hosted-servers-BHF9gq8j.js → self-hosted-servers-DZ--Hv9v.js} +1 -1
- package/dist/assets/service-form-controls-DlTUj71T.js +1 -0
- package/dist/assets/{setting-row-DRwmii99.js → setting-row-B5QZHkoF.js} +1 -1
- package/dist/assets/settings-BD1QISCO.js +3 -0
- package/dist/assets/settings-C3zYzBq9.js +3 -0
- package/dist/assets/settings-Cvt8QAL2.js +3 -0
- package/dist/assets/settings-divider-F3FqveK-.js +1 -0
- package/dist/assets/settings-layout-Crci2jyE.js +1 -0
- package/dist/assets/settings-zEkYIHEa.js +3 -0
- package/dist/assets/share-feedback-modal-C2COnRnh.js +2 -0
- package/dist/assets/{sidebar-tree-C1t1xfKD.js → sidebar-tree-DzK404Jf.js} +1 -1
- package/dist/assets/{signup-page-Dyhm65FW.js → signup-page-CB-8w0gl.js} +1 -1
- package/dist/assets/{signup-shell-CSThcwPa.js → signup-shell-D9xQLQal.js} +1 -1
- package/dist/assets/skill-detail-page-hNrlnmr1.js +2 -0
- package/dist/assets/skill-detail-panel-DUDHXwZA.js +1 -0
- package/dist/assets/{skill-removal-dialog-bN91N7f8.js → skill-removal-dialog-gdW2aZkn.js} +1 -1
- package/dist/assets/skills-page-CFtShvMb.js +1 -0
- package/dist/assets/sounds-page-CkIUEtSv.js +1 -0
- package/dist/assets/{start-screen-DyyYavfM.js → start-screen-DBgDXlld.js} +1 -1
- package/dist/assets/stt-language-picker-modal-CAakw-eP.js +1 -0
- package/dist/assets/subagent-detail-panel-DS_xxlJF.js +4 -0
- package/dist/assets/superpowers-page-CGIr7ogv.js +1 -0
- package/dist/assets/system-events-page-g_mlVVGo.js +1 -0
- package/dist/assets/system-events-redirect-page-Dv3PuAV5.js +1 -0
- package/dist/assets/terminal-BNpUPBzh.js +1 -0
- package/dist/assets/terminal-DSb_gkKE.js +1 -0
- package/dist/assets/text-preview-D4MWwSA4.js +1 -0
- package/dist/assets/{theme-stage-page-Pcnh0PTQ.js → theme-stage-page-gece5MtY.js} +1 -1
- package/dist/assets/{tiptap-document-editor-ZZmtZ799.js → tiptap-document-editor-CQnnqMvK.js} +3 -3
- package/dist/assets/tool-detail-panel-BvydW69m.js +12 -0
- package/dist/assets/{trait-cycle-row-BWNJ21g4.js → trait-cycle-row-C5vdkh7k.js} +1 -1
- package/dist/assets/upgrade-cancel-page-BgYFSzet.js +1 -0
- package/dist/assets/upgrade-success-page-C6lE5YG0.js +1 -0
- package/dist/assets/usage-redirect-page-BZFXmMmI.js +1 -0
- package/dist/assets/usage-window-Bl8EMpiB.js +1 -0
- package/dist/assets/{use-assistant-identity-details-oVmPdjVe.js → use-assistant-identity-details-B-mZTZFr.js} +1 -1
- package/dist/assets/use-checkout-dismiss-refresh-DqQwfaI3.js +1 -0
- package/dist/assets/use-edge-swipe-back-BN1FCIPJ.js +2 -0
- package/dist/assets/use-hotkey-recorder-DGZHpMeu.js +1 -0
- package/dist/assets/use-invite-link-dialog-BIk7uhnC.js +1 -0
- package/dist/assets/{use-platform-assistant-id-DcVWp7KY.js → use-platform-assistant-id-CLcP1OSp.js} +1 -1
- package/dist/assets/use-return-to-short-circuit-Dc9IrWhB.js +1 -0
- package/dist/assets/{use-side-list-room-DQbUPFcU.js → use-side-list-room-C7h2iBrD.js} +1 -1
- package/dist/assets/use-skill-actions-DWGc43zV.js +1 -0
- package/dist/assets/{use-skill-detail-files-BGIXJykk.js → use-skill-detail-files-BiL03man.js} +1 -1
- package/dist/assets/use-supports-credentials-settings-Bmk31dUN.js +1 -0
- package/dist/assets/use-transcript-message-by-id-BhCGLlt8.js +1 -0
- package/dist/assets/vendor-kNpRDQWe.js +127 -0
- package/dist/assets/voice-page-C0a3qZdD.js +1 -0
- package/dist/assets/{weather-forecast-display-B6j-V-yS.js → weather-forecast-display-uFMDzqaC.js} +1 -1
- package/dist/assets/{web-DL2rv-Fb.js → web-BVZ7Tz6e.js} +1 -1
- package/dist/assets/{web-CE-RjE8i.js → web-Be02fpV9.js} +1 -1
- package/dist/assets/{web-Q8lSPj8Z.js → web-CEMV9s9j.js} +1 -1
- package/dist/assets/{web-Cv_J7__I.js → web-CgJtsMCO.js} +1 -1
- package/dist/assets/{web-DPEGYPrR.js → web-D9pmN_Ii.js} +1 -1
- package/dist/assets/{web-pwf5Vh3V.js → web-D_X6fLKT.js} +1 -1
- package/dist/assets/{web-DDFO9PaS.js → web-Ds-zK9c0.js} +1 -1
- package/dist/assets/{web-Cw24uxYA.js → web-mOIiFuEV.js} +1 -1
- package/dist/assets/{web-kKGZ0Pbn.js → web-zYA24dWM.js} +1 -1
- package/dist/assets/welcome-screen-l8WGeqN3.js +1 -0
- package/dist/assets/workflow-detail-panel-6Ty2arSd.js +1 -0
- package/dist/assets/workspace-BuluZX5F.js +1 -0
- package/dist/assets/workspace-ITbZLAwF.js +1 -0
- package/dist/assets/workspace-page-VmejMKBX.js +1 -0
- package/dist/index.html +42 -15
- package/package.json +1 -1
- package/dist/assets/activity-steps-panel-C5Nlm1Ax.js +0 -1
- package/dist/assets/ai-page-DtRit5K4.js +0 -1
- package/dist/assets/android-billing-handoff-D6KkZQcR.js +0 -1
- package/dist/assets/api-key-screen-BWXzfFaa.js +0 -1
- package/dist/assets/archive-redirect-page-DD3q7S_q.js +0 -1
- package/dist/assets/assistant-status-panel-i2Q5Ng1C.js +0 -1
- package/dist/assets/avatar-random-BEjqLOzH.js +0 -1
- package/dist/assets/background-task-detail-panel-igcj1myW.js +0 -1
- package/dist/assets/billing-page-BtVWtaxz.js +0 -3
- package/dist/assets/channel-transcript-panel-C5dxI2kC.js +0 -1
- package/dist/assets/channels-page-route-CaZZgVvj.js +0 -1
- package/dist/assets/chat-CuSRAhBb.js +0 -3
- package/dist/assets/chat-Dw-Xoh_r.js +0 -3
- package/dist/assets/checkout-continuation-gyr3KRhJ.js +0 -1
- package/dist/assets/checkout-return-target-uGUiSRvm.js +0 -1
- package/dist/assets/command-palette-Dqv1yvzc.js +0 -1
- package/dist/assets/companion-layout-BgFk39Te.js +0 -1
- package/dist/assets/companion-surface-page-BE_GKIQH.js +0 -1
- package/dist/assets/connect-page-1WOW2Uyb.js +0 -1
- package/dist/assets/contacts-gateway-aq64PPDs.js +0 -1
- package/dist/assets/contacts-page-route-fh_BygpY.js +0 -1
- package/dist/assets/credentials-page-u4m5eB0e.js +0 -1
- package/dist/assets/danger-zone-redirect-page-pm7xtA64.js +0 -1
- package/dist/assets/debug-page-BiRFASyO.js +0 -4
- package/dist/assets/deploy-dialogs-BQGFr3pp.js +0 -1
- package/dist/assets/detail-drawer-svbxV7k9.js +0 -1
- package/dist/assets/developer-page-YJ4ePRAY.js +0 -1
- package/dist/assets/devices-redirect-page-Bc3d-ANN.js +0 -1
- package/dist/assets/emails-page-DuxmJeBh.js +0 -1
- package/dist/assets/environment-store-Cb7OK6xz.js +0 -1
- package/dist/assets/esm-BWaPHKOl.js +0 -2
- package/dist/assets/esm-B_9x3_5A.js +0 -2
- package/dist/assets/esm-CvsVyyLL.js +0 -2
- package/dist/assets/esm-D8F0P9NS.js +0 -1
- package/dist/assets/esm-DLD7mc5e.js +0 -2
- package/dist/assets/esm-lFkAo6qR.js +0 -2
- package/dist/assets/general-page-CplJ3sOI.js +0 -1
- package/dist/assets/hatching-screen-tqPPQDHG.js +0 -1
- package/dist/assets/home-BWUNWNMl.js +0 -1
- package/dist/assets/home-DJ6q91Qp.js +0 -1
- package/dist/assets/home-page-route-CMsbxqsW.js +0 -1
- package/dist/assets/hosting-screen-7idZudJ8.js +0 -1
- package/dist/assets/identity-page-route-C4EAb-ac.js +0 -7
- package/dist/assets/index-2ECSWhtU.css +0 -2
- package/dist/assets/index-7XDiAJ-A.js +0 -357
- package/dist/assets/inspect-page-DsXykArJ.js +0 -9
- package/dist/assets/integrations-page-CmMVSsvu.js +0 -1
- package/dist/assets/intelligence-DwVUW6jm.js +0 -5
- package/dist/assets/intelligence-JlruxYAh.js +0 -5
- package/dist/assets/keyboard-shortcuts-redirect-page-CFu5x117.js +0 -1
- package/dist/assets/library-detail-page-CKFkI0QY.js +0 -1
- package/dist/assets/library-page-dIrR1lib.js +0 -1
- package/dist/assets/logout-page-BzAORi0q.js +0 -1
- package/dist/assets/markdown-preview-DLXGytZI.js +0 -1
- package/dist/assets/memory-page-route-CX1I7izG.js +0 -2
- package/dist/assets/memory-router-playground-page-Mk3rfyGO.js +0 -1
- package/dist/assets/onboarding-BbtVI8KM.js +0 -1
- package/dist/assets/onboarding-BoaKLlZ5.js +0 -1
- package/dist/assets/page-empty-state-BrGkTMcK.js +0 -1
- package/dist/assets/password-reset-page-C7qvqEJQ.js +0 -1
- package/dist/assets/pdf-file-preview-DbwHMWey.js +0 -1
- package/dist/assets/personality-page-Ci_b1dH9.js +0 -1
- package/dist/assets/plans-page-CyqILV_j.js +0 -1
- package/dist/assets/plugin-detail-page-CvC_LUz2.js +0 -1
- package/dist/assets/plugins-page-9LuPE9IY.js +0 -1
- package/dist/assets/preview-error-DbAQP8oG.js +0 -1
- package/dist/assets/privacy-page-OIOZKgWi.js +0 -1
- package/dist/assets/privacy-screen-DFnrbIrM.js +0 -1
- package/dist/assets/profile-metadata-Bk4pj7o_.js +0 -1
- package/dist/assets/research-onboarding-route-D3qFv6SM.js +0 -50
- package/dist/assets/review-terms-screen-BD3wP3KC.js +0 -1
- package/dist/assets/schedules-B_SL_iV4.js +0 -1
- package/dist/assets/schedules-DhwNRBkz.js +0 -1
- package/dist/assets/schedules-page-D64tvhuZ.js +0 -1
- package/dist/assets/security-redirect-page-CWR-HICc.js +0 -1
- package/dist/assets/select-assistant-screen-SfWB0oQ2.js +0 -1
- package/dist/assets/service-form-controls-DNfWnjSp.js +0 -1
- package/dist/assets/settings-divider-X9YnFIFQ.js +0 -1
- package/dist/assets/settings-gjWN0WQO.js +0 -3
- package/dist/assets/settings-iLTzqZW8.js +0 -3
- package/dist/assets/settings-layout-C2Um5qit.js +0 -1
- package/dist/assets/share-feedback-modal-BzV03dUO.js +0 -2
- package/dist/assets/skill-detail-page-Cja0k8_e.js +0 -2
- package/dist/assets/skill-detail-panel-BIOL410z.js +0 -1
- package/dist/assets/skills-page-CYogTXmH.js +0 -1
- package/dist/assets/sounds-page-DAy2o3wO.js +0 -1
- package/dist/assets/stt-language-picker-modal-CpGwbd4g.js +0 -1
- package/dist/assets/subagent-detail-panel-330bH7ee.js +0 -4
- package/dist/assets/superpowers-page-D6wv3GWO.js +0 -1
- package/dist/assets/system-events-page-CFN8tMUJ.js +0 -1
- package/dist/assets/system-events-redirect-page-BarOgFkA.js +0 -1
- package/dist/assets/text-preview-CZeqyzdw.js +0 -1
- package/dist/assets/tool-detail-panel-BgCSb_m5.js +0 -12
- package/dist/assets/upgrade-cancel-page-ByVEWPeH.js +0 -1
- package/dist/assets/upgrade-success-page-iAPLJbee.js +0 -1
- package/dist/assets/usage-redirect-page-BHd-7in5.js +0 -1
- package/dist/assets/use-checkout-dismiss-refresh-BO2cN2i8.js +0 -1
- package/dist/assets/use-edge-swipe-back-CzESg8qG.js +0 -2
- package/dist/assets/use-hotkey-recorder-CY089_4p.js +0 -1
- package/dist/assets/use-invite-link-dialog-Ck-LquhT.js +0 -1
- package/dist/assets/use-return-to-short-circuit-NDSwANeI.js +0 -1
- package/dist/assets/use-skill-actions-CNBx-WS1.js +0 -1
- package/dist/assets/use-supports-credentials-settings-C6S_OHMP.js +0 -1
- package/dist/assets/use-transcript-message-by-id-Dqm1PMu3.js +0 -1
- package/dist/assets/vendor-WUN87CSE.js +0 -385
- package/dist/assets/voice-page-nBfEMyWs.js +0 -1
- package/dist/assets/welcome-screen-BrwdmDqM.js +0 -1
- package/dist/assets/workflow-detail-panel-DcTQSyju.js +0 -1
- package/dist/assets/workspace-page-Dwfwnkh5.js +0 -1
- /package/dist/assets/{app-types-BSxLQFrc.js → app-types-CBnv5WGq.js} +0 -0
- /package/dist/assets/{build.umd-CJjt7Lfj.js → build.umd-Dew0cvF9.js} +0 -0
- /package/dist/assets/{definitions-Dz0UVs0Z.js → definitions-B0aFqshm.js} +0 -0
- /package/dist/assets/{definitions-BTBjNf1i.js → definitions-BjIATsKe.js} +0 -0
- /package/dist/assets/{diff-rows-DzBJ95DT.js → diff-rows-BVqSFCjn.js} +0 -0
- /package/dist/assets/{emoji-catalog-data-a3DXKyhe.js → emoji-catalog-data-C12r4S_i.js} +0 -0
- /package/dist/assets/{format-countdown-Cge3iaM1.js → format-countdown-D5ONON7b.js} +0 -0
- /package/dist/assets/{vendor-CfUWwwYf.css → katex-CfUWwwYf.css} +0 -0
- /package/dist/assets/{link-click-DpfLT-iQ.js → link-click-B3w1V7FL.js} +0 -0
- /package/dist/assets/{machine-sizes-C3ptouhz.js → machine-sizes-DfVG31u5.js} +0 -0
- /package/dist/assets/{onboarding-step-layout-BlSoa02H.js → onboarding-step-layout-CjtymnM2.js} +0 -0
- /package/dist/assets/{pdf-fWDhmWcw.js → pdf-DnKvQsrL.js} +0 -0
- /package/dist/assets/{plugin-attribution-c6x0DrZM.js → plugin-attribution-C-EIiue7.js} +0 -0
- /package/dist/assets/{radio-card-nav-DlRweN3g.js → radio-card-nav-Omg0Ffee.js} +0 -0
- /package/dist/assets/{skill-icon-Me8DDEMt.js → skill-icon-Nml5aUXj.js} +0 -0
- /package/dist/assets/{status-badge-pill-BAkXhxwa.js → status-badge-pill-Bg90syHR.js} +0 -0
- /package/dist/assets/{use-truncated-blob-text-DLF_hf3O.js → use-truncated-blob-text-BSWOxKWU.js} +0 -0
- /package/dist/assets/{xterm-DfM4JBPp.js → xterm-DJzhWP7c.js} +0 -0
- /package/dist/assets/{xterm-addon-fit-DuBTfuI9.js → xterm-addon-fit-CNjgHcEW.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Jn as t,er as n,j as r}from"./vendor-kNpRDQWe.js";import{b as i,f as a,g as o,n as s,t as c}from"./react-DPM_L_aA.js";import{tn as l}from"./icons-CSdHOix6.js";import{Cg as u,Dg as d,Fp as f,Hf as p,Pf as m,Up as h,Vf as g,Zf as _,al as v,by as y,iv as b,sg as x,wg as S}from"./index-D_aS89pX.js";import{t as C}from"./checkout-return-target-DbrgNrrf.js";import{n as w,r as T}from"./checkout-continuation-CpvBfvVc.js";var E=e(i(),1),D=c();function O(){S(),p()}function k(){let{t:e}=r(`settings`),i=a(),[c]=o(),f=c.get(`package`)??``,p=(0,E.useMemo)(()=>f?null:u(c),[f,c]),S=m(),k=_(),A=T(),j=w(c,b.plans),M=j===b.plans?e(`checkoutPage.viewPlans`):e(`checkoutPage.continueSetup`),N=n(),{mutateAsync:P}=t(v()),[F,I]=(0,E.useState)(!1),[L,R]=(0,E.useState)(!1),z=(0,E.useRef)(`idle`),B=(0,E.useCallback)(async()=>{z.current=`running`,I(!1),R(!1);let e=C();try{let t=await P({body:p?{target_plan_id:`pro`,confirm:!0,machine_tier:p.machineTier,storage_tier:p.storageTier,credit_tier:p.creditTier,return_target:e}:{target_plan_id:`pro`,package:f,confirm:!0,return_target:e}});if(z.current!==`running`)return;if(t.status===`redirect`&&t.checkout_url){z.current=`handed_off`,d(p?{kind:`custom`,machineTier:p.machineTier,storageTier:p.storageTier,creditTier:p.creditTier}:{kind:`package`,packageKey:f}),g(N),R(e===`native`),x(t.checkout_url);return}z.current=`settled`,O(),i(j===b.plans&&f?b.plansForPackage(f):j,{replace:!0})}catch{if(z.current!==`running`)return;z.current=`settled`,I(!0)}},[j,p,P,i,f,N]),V=(0,E.useCallback)(()=>{if(k===`ready`){B();return}z.current=`idle`,I(!1),R(!1),k===`unavailable`&&h.getState().fetchOrganizations()},[k,B]);return(0,E.useEffect)(()=>{if(!f&&!p||S===`disabled`||S===`gated`||A===`disabled`){if(z.current===`handed_off`)return;z.current=`settled`,O(),i(j,{replace:!0});return}if(!(A!==`enabled`||S!==`full`||z.current!==`idle`)&&k!==`resolving`){if(k===`unavailable`){z.current=`settled`,I(!0);return}B()}},[j,p,S,i,k,f,B,A]),F?(0,D.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4 px-6 text-center`,children:[(0,D.jsx)(`p`,{className:`text-[var(--content-default)]`,children:e(`checkoutPage.checkoutFailedMessage`)}),(0,D.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,D.jsx)(y,{onClick:V,children:e(`checkoutPage.tryAgain`)}),(0,D.jsx)(s,{to:j,onClick:O,className:`text-sm text-[var(--content-tertiary)] underline`,children:M})]})]}):L?(0,D.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4 px-6 text-center`,children:[(0,D.jsx)(`p`,{className:`text-[var(--content-default)]`,children:e(`checkoutPage.awaitingReturnMessage`)}),(0,D.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,D.jsx)(y,{onClick:V,children:e(`checkoutPage.reopenCheckout`)}),(0,D.jsx)(s,{to:j,className:`text-sm text-[var(--content-tertiary)] underline`,children:M})]})]}):(0,D.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-3`,children:[(0,D.jsx)(l,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`,"aria-label":e(`checkoutPage.preparingCheckoutAriaLabel`)}),(0,D.jsx)(`p`,{className:`text-sm text-[var(--content-tertiary)]`,children:e(`checkoutPage.preparingCheckout`)})]})}function A(){let e=a(),[t]=o(),n=w(t,b.settings.usageBilling);return(0,E.useEffect)(()=>{O(),e(n,{replace:!0})},[e,n]),null}function j(){return f()?(0,D.jsx)(A,{}):(0,D.jsx)(k,{})}export{j as CheckoutPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{E as e}from"./vendor-kNpRDQWe.js";import{wp as t}from"./index-D_aS89pX.js";function n(){return t()!==null||e.isNativePlatform()?`native`:`web`}export{n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{_ as t,f as n,g as r,j as i,v as a}from"./vendor-kNpRDQWe.js";import{b as o,t as s,y as c}from"./react-DPM_L_aA.js";import{J as l,i as u,tn as d}from"./icons-CSdHOix6.js";import{$v as f,Lp as p,Qv as m,Yv as h,Zv as g,ba as _,by as v,si as y,ys as b,yy as x}from"./index-D_aS89pX.js";var S=e(o(),1),C=e(c(),1),w=s();function T(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function E(e,t){let n=[...new Set(t??[])].filter(e=>e.length>0).sort((e,t)=>t.length-e.length);if(n.length===0)return e;let r=n.map(T).join(`|`),i=RegExp(`(?<![\\p{L}\\p{N}])(?:${r})(?![\\p{L}\\p{N}])`,`giu`),a=[],o=0;for(let t of e.matchAll(i))a.push(e.slice(o,t.index)),a.push((0,w.jsx)(`span`,{className:`font-medium text-[var(--content-default)]`,children:t[0]},t.index)),o=t.index+t[0].length;return a.length===0?e:(a.push(e.slice(o)),(0,w.jsx)(w.Fragment,{children:a}))}function D({icon:e,title:t,subtitle:n,snippet:r,highlightTokens:i,shortcut:a,isSelected:o,onClick:s,surface:c=`overlay`}){let l=e;return c===`window`?(0,w.jsxs)(`button`,{type:`button`,role:`option`,"aria-current":o?`page`:void 0,"aria-selected":o,"aria-keyshortcuts":a?m(a):void 0,onClick:s,className:[`flex w-full items-center gap-3 rounded-md px-3 text-left text-sm font-medium outline-none transition-colors`,r?`py-1.5`:`h-10`,o?`bg-[var(--surface-active)] text-[var(--content-default)]`:`text-[var(--content-secondary)] hover:bg-[var(--surface-overlay)] hover:text-[var(--content-default)]`].join(` `),children:[l?(0,w.jsx)(l,{size:16,"aria-hidden":!0,className:o?`shrink-0 text-[var(--content-default)]`:`shrink-0 text-[var(--content-tertiary)]`}):null,(0,w.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,w.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,w.jsx)(`span`,{className:`truncate`,children:t}),n?(0,w.jsx)(`span`,{className:`min-w-0 truncate text-xs text-[var(--content-tertiary)]`,children:n}):null,a?(0,w.jsx)(g,{accelerator:a,variant:`inline`,"aria-hidden":!0,className:`ml-auto shrink-0`}):null]}),r?(0,w.jsx)(`span`,{className:`truncate text-xs font-normal text-[var(--content-tertiary)]`,children:E(r,i)}):null]})]}):(0,w.jsx)(h,{icon:e,"aria-keyshortcuts":a?m(a):void 0,label:(0,w.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,w.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,w.jsx)(`span`,{className:`truncate`,children:t}),n?(0,w.jsx)(`span`,{className:`min-w-0 truncate text-[var(--content-tertiary)] text-body-small-default`,children:n}):null,a?(0,w.jsx)(g,{accelerator:a,variant:`inline`,"aria-hidden":!0,className:`ml-auto shrink-0`}):null]}),r?(0,w.jsx)(`span`,{className:`truncate text-[var(--content-tertiary)] text-body-small-default`,children:E(r,i)}):null]}),active:o,onSelect:s,className:r?`h-auto px-3 py-2`:`px-3 py-2`})}var O=`fixed inset-0 z-50 flex flex-col bg-[var(--surface-lift)]`,k={paddingTop:`var(--safe-area-inset-top, env(safe-area-inset-top, 0px))`,paddingBottom:`var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px))`,paddingLeft:`var(--safe-area-inset-left, env(safe-area-inset-left, 0px))`,paddingRight:`var(--safe-area-inset-right, env(safe-area-inset-right, 0px))`},A={...k,pointerEvents:`none`},j=({onKeyDown:e,children:t})=>{let{t:o}=i(),s=a(),c=n(),l=(0,S.useRef)(null);return(0,S.useLayoutEffect)(()=>{if(s)return;let e=document.activeElement;e instanceof HTMLElement&&l.current?.contains(e)&&e.blur()},[s]),(0,w.jsx)(r.div,{ref:l,className:O,style:s?k:A,role:`dialog`,"aria-modal":s?!0:void 0,"aria-hidden":s?void 0:!0,"aria-label":o(`commandPalette.searchAriaLabel`),onKeyDown:e,initial:{y:`100%`,opacity:0},animate:{y:0,opacity:1},exit:{y:`100%`,opacity:0},transition:c?{duration:0}:{duration:.28,ease:[.16,1,.3,1]},children:t})},M=({isOpen:e,onClose:n,query:r,onQueryChange:a,highlightTokens:o,selectedIndex:s,sections:c,isSearching:m=!1,onItemSelect:h,onKeyDown:g,surface:T=`overlay`})=>{let{t:E}=i(),A=b(),M=p(),N=_(),P=y(`commandPalette`),F=P?f(P):null,I=(0,S.useRef)(null),L=(0,S.useRef)(null),R=(0,S.useRef)(null);(0,S.useEffect)(()=>{if(e){let e=requestAnimationFrame(()=>{L.current?.focus()});return()=>cancelAnimationFrame(e)}},[e]),(0,S.useEffect)(()=>{if(!e||!R.current)return;let t=R.current.querySelector(`[aria-current='page']`);t&&t.scrollIntoView({block:`nearest`})},[e,s]);let z=(0,S.useCallback)(e=>{e.target===I.current&&n()},[n]),B=T===`window`,V=A&&!B,H=!N,U=M&&V;if(!e&&!U)return null;let W=0,G=(0,w.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--border-base)] px-4 py-3`,children:[m?(0,w.jsx)(d,{size:16,"aria-hidden":!0,className:`shrink-0 animate-spin text-[var(--content-tertiary)]`}):(0,w.jsx)(l,{size:16,"aria-hidden":!0,className:`shrink-0 text-[var(--content-tertiary)]`}),(0,w.jsx)(`input`,{ref:L,type:`text`,value:r,onChange:e=>a(e.target.value),placeholder:E(`commandPalette.placeholder`),className:B?`min-w-0 flex-1 bg-transparent text-sm font-medium text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`:`min-w-0 flex-1 bg-transparent text-body-medium-lighter text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`,"aria-label":E(`commandPalette.searchAriaLabel`)}),r?V?(0,w.jsx)(`button`,{type:`button`,className:`shrink-0 text-body-medium-lighter text-[var(--content-tertiary)]`,onClick:()=>a(``),"aria-label":E(`commandPalette.clearSearch`),children:E(`commandPalette.clear`)}):B?(0,w.jsx)(`button`,{type:`button`,className:`flex size-7 shrink-0 items-center justify-center rounded-md text-[var(--content-tertiary)] transition-colors hover:bg-[var(--surface-overlay)] hover:text-[var(--content-default)]`,"aria-label":E(`commandPalette.clearSearch`),onClick:()=>a(``),children:(0,w.jsx)(u,{size:16,"aria-hidden":!0})}):(0,w.jsx)(v,{variant:`ghost`,size:`compact`,iconOnly:(0,w.jsx)(u,{}),"aria-label":E(`commandPalette.clearSearch`),onClick:()=>a(``),tintColor:`var(--content-tertiary)`}):H&&F?(0,w.jsx)(`kbd`,{className:B?`shrink-0 rounded-md border border-[var(--border-base)] bg-[var(--surface-active)] px-1.5 py-0.5 text-xs font-medium text-[var(--content-secondary)]`:`shrink-0 rounded-md border border-[var(--border-base)] bg-[var(--surface-active)] px-1.5 py-0.5 text-label-small-default text-[var(--content-tertiary)]`,children:F}):null,V?(0,w.jsx)(v,{variant:`ghost`,size:`compact`,iconOnly:(0,w.jsx)(u,{}),expandOnMobile:!1,"aria-label":E(`commandPalette.closeSearch`),onClick:n,tintColor:`var(--content-tertiary)`}):null]}),K=(0,w.jsx)(`div`,{ref:R,className:V?`flex-1 overflow-y-auto overscroll-contain p-2`:`max-h-[360px] overflow-y-auto overscroll-contain p-2`,role:`listbox`,children:c.length===0?(0,w.jsx)(`div`,{className:`px-3 py-6 text-center`,children:(0,w.jsx)(x,{variant:`body-medium-lighter`,className:`text-[var(--content-tertiary)]`,children:E(m?`commandPalette.searching`:`commandPalette.noResults`)})}):c.map(e=>(0,w.jsxs)(`div`,{role:`group`,"aria-label":e.label,children:[(0,w.jsx)(x,{variant:`label-small-default`,as:`div`,className:B?`px-3 pb-1 pt-2 text-xs font-semibold text-[var(--content-tertiary)]`:`px-3 pb-1 pt-2 text-[var(--content-tertiary)] max-md:text-body-small-default`,children:e.label}),e.items.map(e=>{let t=W++;return(0,w.jsx)(D,{icon:e.icon,title:e.title,subtitle:e.subtitle,snippet:e.snippet,highlightTokens:o,shortcut:H?e.shortcut:void 0,isSelected:t===s,onClick:()=>h?.(e,t),surface:T},e.id)})]},e.id))});if(U)return(0,w.jsx)(t,{children:e?(0,w.jsxs)(j,{onKeyDown:g,children:[G,K]},`command-palette-sheet`):null});if(V)return(0,w.jsxs)(`div`,{className:O,role:`dialog`,"aria-modal":`true`,"aria-label":E(`commandPalette.searchAriaLabel`),onKeyDown:g,style:k,children:[G,K]});let q=(0,w.jsx)(`div`,{ref:I,role:`dialog`,"aria-modal":`true`,"aria-label":E(`commandPalette.ariaLabel`),className:T===`window`?`flex h-full w-full items-start justify-center bg-transparent p-3`:`fixed inset-0 z-50 flex items-start justify-center bg-black/40 pt-[15vh]`,onClick:z,onKeyDown:g,children:(0,w.jsxs)(`div`,{className:`flex w-full max-w-[560px] flex-col overflow-hidden rounded-xl border border-[var(--border-base)] bg-[var(--surface-base)] shadow-xl`,children:[G,K]})});return T===`window`?q:(0,C.createPortal)(q,document.body)};export{M as CommandPalette};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{b as t,t as n}from"./react-DPM_L_aA.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{b as t,t as n}from"./react-DPM_L_aA.js";import{Bf as r,Ff as i,Gi as a,Lf as o,Mi as s,Rr as c,Vp as l,gs as u,io as d,ji as f,l_ as p,zl as m}from"./index-D_aS89pX.js";import{CommandPalette as h}from"./command-palette-BxtSdT49.js";var g=e(t(),1),_=n(),v=()=>void 0,y=e=>void 0,b=e=>{switch(e.id){case`action-new-conversation`:return{kind:`newConversation`};case`action-current-conversation`:return{kind:`currentConversation`};case`action-settings`:return{kind:`openSettings`};case`action-library`:return{kind:`openLibrary`};case`action-intelligence`:return{kind:`openIdentity`};default:return e.id.startsWith(`conv-`)?{kind:`openConversation`,conversationId:e.id.slice(5)}:e.id.startsWith(`search-conv-`)?{kind:`openConversation`,conversationId:e.id.slice(12)}:e.id.startsWith(`search-schedule-`)||e.id.startsWith(`search-contact-`)?{kind:`openIdentity`}:null}};function x(){let e=i.use.sessionStatus(),t=r(),n=o();m(),d(!t),u({sessionStatus:e,hasPlatformSession:n});let x=p.use.assistants(),S=p.use.activeAssistantId(),C=l(),w=(0,g.useMemo)(()=>{let e=C??S;if(!e)return null;let t=x.find(t=>t.id===e);return t?{id:t.id,name:t.name}:null},[C,S,x]),T=w?.id??null,{conversations:E}=a(T,!0),D=(0,g.useCallback)(e=>{let t=b(e);t&&s(t)},[]),{commandPalette:O,mergedSections:k,handleItemSelect:A}=c({assistantId:T,assistantName:w?.name,conversations:E,activeConversationId:void 0,startNewConversation:v,switchConversation:v,navigate:y,navigateToSettings:v,isOpen:!0,onClose:()=>{f()},onItemSelect:D});return(0,_.jsx)(`div`,{className:`h-screen w-screen bg-transparent`,children:(0,_.jsx)(h,{isOpen:!0,surface:`window`,onClose:O.close,query:O.query,onQueryChange:O.setQuery,highlightTokens:O.searchTokens,selectedIndex:O.selectedIndex,sections:k,isSearching:O.isSearching,onItemSelect:A,onKeyDown:O.handleKeyDown})})}export{x as CommandPaletteWindowPage};
|
|
@@ -0,0 +1 @@
|
|
|
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={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={alt:`助手头像`,fallbackLetter:`V`},p={alt:`助手头像`},m={actionsTitle:`{title} 操作`},h={ariaLabel:`命令面板`,clear:`清除`,clearSearch:`清除搜索`,closeSearch:`关闭搜索`,noResults:`无结果`,placeholder:`搜索对话、记忆…`,searchAriaLabel:`搜索`,searching:`正在搜索…`},g={ariaLabel:`介绍您的助手`,done:`知道了`,meet:{body:`我会在您的桌面上,即使 Vellum 不可见。`,title:`这就是我`,titleNamed:`我是 {name}`},menu:{body:`您可以在这里隐藏我或更改我的大小。`,title:`右键点击我`},next:`下一步`,skip:`跳过`,talk:{body:`开始语音对话。`,title:`交谈`},type:{body:`从这里发送消息,并在这里阅读回复。`,title:`输入`}},_={allow:`允许`,deny:`拒绝`,endSession:`结束会话`,goBack:`返回`,messagePlaceholder:`向 {name} 发送消息`,muteAssistant:`静音助手`,muteMicrophone:`静音麦克风`,notNow:`暂不`,send:`发送`,showSummary:`显示摘要`,stopTeaching:`停止教学`,summarizing:`正在摘要`,talk:`交谈`,teach:`教学`,type:`输入`,unmuteAssistant:`取消助手静音`,unmuteMicrophone:`取消麦克风静音`},v={copiedAria:`已复制`,copyFailed:`无法复制文件内容。`,copyFileContentsAria:`复制文件内容`,downloadFileAria:`下载文件`,editFileAria:`编辑文件`},y={cancel:`取消`,create:`创建`,description:`配置一个新助手。它将在后台启动。`,namePlaceholder:`助手名称(可选)`,title:`新助手`,toastSuccess:`新助手已创建。`},b={ariaLabel:`日期范围`,lastDays:`{days, plural, other {过去 # 天}}`},x={delete:`删除`,deleting:`正在删除…`,message:`"{name}" 将被永久删除。`,title:`删除应用`},S={confirmLabel:`让您的助手处理`,confirmLabelNamed:`让 {assistantName} 处理`,message:`"{appName}" 使用后端服务,这些服务无法在静态 Vercel 页面上运行。您的助手可以使用无服务器函数正确部署它。`,messageNamed:`"{appName}" 使用后端服务,这些服务无法在静态 Vercel 页面上运行。{assistantName} 可以使用无服务器函数正确部署它。`,title:`此应用需要完整部署`},C={appExported:`应用已导出`,deployFailed:`部署失败`,deployedToVercel:`已部署到 Vercel`,open:`打开`,shareFailed:`分享应用失败`},w={tooltip:`停止`},T={copied:`已复制`,copy:`复制`},E={stopRecording:`停止录音`},D={ariaLabel:`加入 Vellum Discord 社区`,ctaLong:`加入 Discord`,ctaShort:`加入`,subtitleLong:`与团队交流 - 分享反馈、请求功能、更快获得答案`,subtitleShort:`分享反馈、请求功能、更快获得答案`,title:`加入我们的社区!`},O={instructions:`粘贴您从“机器人”页面复制的机器人令牌。`,botTokenLabel:`机器人令牌`,save:`连接`,saving:`正在连接...`,saved:`已连接。接下来,将机器人添加到服务器。`,botTokenPlaceholder:`MTk4NjIyNDgzNzAyNDU0...`},k={instructions:`打开 Discord 开发者门户并创建一个新应用程序。在其 <resetLine>机器人</resetLine> 页面上,点击“重置令牌”并立即复制令牌:Discord 只显示一次,之后无法再次查看。`,intentsNote:`关闭所有三个特权网关意图。您的助手只读取直接消息和提及它的消息,Discord 将这些消息排除在“消息内容”意图之外。`,openPortal:`打开 Discord 门户`,continue:`我已拥有令牌`},A={instructions:`您的机器人必须加入服务器才能看到任何内容。此链接使用您应用程序“安装”页面上的安装设置。`,openInvite:`添加到服务器`,noAppId:`请先连接机器人令牌,然后返回此处将其添加到服务器。`},j={channelLabel:`Discord`,stepCreate:`创建应用`,stepConnect:`连接`,stepInvite:`添加到服务器`},M={acknowledge:`确认`,acknowledging:`正在确认...`,cleanupBody:`提示您的助手释放空间,以免空间耗尽并进入锁定状态。`,cleanupTitle:`清理模式已激活`,criticalBody:`如果存储空间耗尽,您的助手将进入锁定状态。`,criticalModalDescription:`如果存储空间耗尽,您的助手将进入锁定状态。您应该提示您的助手释放空间或增加存储空间。`,criticalTitle:`存储空间严重不足`,dontShowAgain:`不再显示`,manageStorage:`管理存储`,review:`查看`,upgrade:`升级`,warningBody:`释放空间以避免中断。`,warningBodyWithUpgrade:`释放空间或增加更多存储空间以避免中断。`,warningTitle:`您的存储空间即将耗尽`},N={failed:`下载失败`,revealMac:`在访达中显示`,revealWindows:`在文件资源管理器中显示`,saved:`已保存到“下载”`,started:`下载已开始`,startedDescription:`请在浏览器的下载内容中查找 {filename}。`},P={discard:`放弃`,save:`保存`,saving:`正在保存…`},F={copyAriaLabel:`复制邀请链接`,createFailed:`创建邀请链接失败。请确保您的助手已启用 A2A。`,creating:`正在创建邀请链接…`,done:`完成`,shareHint:`与另一位助手所有者分享此链接以建立连接。`,title:`分享连接链接`,tryAgain:`重试`},I={ariaLabel:`Vellum 在 GitHub 上开源`,ctaAriaLabel:`在 GitHub 上为 Vellum 点赞`,ctaLabel:`为我们点赞`,subtitle:`在 GitHub 上为我们点赞或贡献代码`,title:`Vellum 是开源的`},L={loadError:`此部分无法加载。请重新加载页面重试。`},R={ariaLabel:`下载 macOS 应用`,ctaAriaLabel:`下载 macOS 应用`,ctaLabel:`下载`,subtitle:`电脑使用 · 终端访问 · 原生自动化`,title:`获取 macOS 应用`},z={bannerAria:`下载 {appName} 应用`,bannerAriaGeneric:`下载 Vellum 移动应用`,download:`下载`,downloadAppAria:`下载 {appName} 应用`,downloadAppAriaGeneric:`下载 Vellum 移动应用`,subtitle:`推送通知 · 生物识别登录 · 触觉反馈`,title:`获取 {appName} 应用`,titleGeneric:`获取 Vellum 应用`},B={logoAlt:`Vellum`},V={backToAssistant:`返回您的助手`,badge:`错误 404`,body:`您要查找的页面不存在或可能已移动。`,goBack:`返回`,title:`页面未找到`},H={dismissAria:`关闭`},U={back:`返回`},W={cancel:`取消`,logIn:`登录`},G={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:`用户句柄`},K={created:`个人资料“{name}”已创建`},q={logoAlt:`Vellum`,placeholder:`向 Vellum 提问...`},J={confirm:`移除`,messageOrigin:`这不会影响 {assistantName} 或让您在那里退出登录。它只会忘记此设备上的条目。您可以随时再次添加。`,messagePaired:`这不会影响 {assistantName} 在其主机上的状态。它只会忘记此设备上的配对。您可以随时使用 vellum connect import 再次配对。`,messagePlatform:`这不会删除 {assistantName}。它只会将其从此设备中移除。登录后它将再次可用。`,title:`从该设备移除?`},Y={body:`您的助手正在努力工作,并已达到其当前资源限制。请升级以确保其平稳运行。`,bodyNoUpgrade:`您的助手正在努力工作,并已达到其当前资源限制。`,dontShowAgain:`不再显示`,title:`您的助手需要更多算力`,titleNamed:`{assistantName} 需要更多算力`,upgrade:`升级`},X={confirmLabel:`停用`,message:`这将永久停用此助手及其所有数据。您需要重新完成引导流程才能创建新助手。此操作无法撤销。`,title:`停用助手`},Z={loadingAria:`正在加载`},Q={unnamedAssistant:`该助手`},$={chunkFailBody:`此部分无法加载。可能是网络故障或版本过旧。请重新加载页面重试。`,reload:`重新加载`},ee={confirmMessage:`更新到版本 {version}?更新期间助手将暂时不可用。`,confirmTitle:`更新助手运行时`,later:`稍后`,title:`有新的助手版本可用:{version}`,toastComplete:`更新完成。您的助手运行正常。`,toastFailed:`未能触发更新。请重试。`,update:`更新`},te={ariaLabel:`{name} 操作`},ne={reset:`重置`,save:`保存`},re={label:`分享连接链接`},ie={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:`分享反馈`},ae={loadingAria:`正在加载反馈表单`},oe={close:`关闭`,message:`无法加载反馈表单。`,retry:`重试`},se={closeAria:`关闭`,closeSidebarAria:`关闭侧边栏`,openSidebarAria:`打开侧边栏`},ce={backFrom:`从 {title} 返回`,backToMenu:`返回 {title} 菜单`,navigationAria:`{title} 导航`},le={ariaLabel:`侧边栏导航`},ue={label:`从本次对话中学习`},de={message:`从该助手移除“{name}”?`,remove:`移除`,title:`移除技能`},fe={approvalNotice:`如果 Slack 显示“请求批准”而不是<strong>安装</strong>,则工作区管理员需要先批准该应用。`,createdApp:`我已创建应用`,inSlack:`在 Slack 中:`,stepManifest:`在<strong>或以您自己的方式开始</strong>下,选择<strong>从清单</strong>,然后选择<strong>继续</strong>`,stepPaste:`选择您的工作区并粘贴清单`,stepReview:`审查权限,然后点击<strong>创建并安装</strong>`},pe={appName:`应用名称`,appNamePlaceholder:`我的助手`,copied:`已复制!`,copyManifest:`复制清单`,description:`描述(可选)`,descriptionHelper:`显示在应用的 Slack 个人资料中。`,descriptionPlaceholder:`此助手提供哪些帮助`,intro:`命名您的 Slack 应用并复制其清单。所有权限和设置均已预配置。`,next:`下一步`},me={body:`在新标签页中打开 Slack 以创建应用,然后返回此处查看后续步骤。`,copied:`已复制!`,copyManifest:`复制清单`,manifestCopiedNotice:`您已在此处复制此应用的清单。如果您在此之后复制了其他内容,请在粘贴前再次复制。`,manifestNotCopiedNotice:`您尚未复制此应用的清单。Slack 的创建应用模态框没有其他方式获取它,因此请在粘贴前复制它。`,next:`下一步`,openSlack:`打开 Slack`},he={appTokenLabel:`应用令牌`,botTokenLabel:`机器人令牌`,connectSlack:`连接 Slack`,connecting:`正在连接…`,credentialsSaved:`凭据已保存。`,instructions:`在 Slack 的确认屏幕上,展开 <credentials>您的应用凭据</credentials> 并复制两个令牌。`,skipNotice:`该屏幕还提供命令行演练和 <download>下载应用文件</download> 按钮。请跳过这两项。它们会设置一个独立的本地应用,而此助手只需要这两个令牌。`},ge={channelLabel:`Slack`,copyError:`无法复制清单。请在继续之前重新复制。`,stepConnect:`连接`,stepCreate:`创建`,stepName:`名称`,stepOpen:`打开`},_e={total:`总计:{value}`},ve={reloadApp:`重新加载应用`},ye={dismiss:`忽略`,goToDoctor:`前往诊断`,resumeAssistant:`恢复助手`,retryNow:`立即重试`,wakeUp:`唤醒`},be={allLanguages:`所有语言`,featured:`精选`,languagesAriaLabel:`语言`,noMatch:`无匹配语言。`,searchAriaLabel:`搜索语言`,searchPlaceholder:`搜索语言`,suggested:`建议`},xe={description:`从您下次语音输入开始生效。`},Se={apiKeyLabel:`API 密钥`,apiKeyPlaceholderReplace:`•••••••• (输入新密钥以替换)`,providerAriaLabel:`语音转文本提供商`,providerLabel:`提供商`,saveFailed:`保存语音转文本设置失败`,saveSuccess:`语音转文本设置已保存`,spokenLanguage:`口语语言`,spokenLanguageApplies:`从您下次语音输入开始生效。`,vellumTranscription:`转录通过您的 Vellum 账户运行。`,windowsNativeDisplayName:`Windows 本机听写`,windowsNativeSetupWarning:`需要为您的 Windows 显示语言启用基本语音识别:打开“设置”>“时间和语言”>“语言和区域”,选择显示语言旁边的三个点,选择“语言选项”,然后在“语言功能”下下载“基本语音识别”。`,windowsNativeSubtitle:`Windows 设备上的语音识别,通过 Windows 助手在本地运行。可离线工作,无需 API 密钥。`},Ce={ariaLabel:`子代理 {subagentId}`},we={accessibilityDescription:`允许您的助手代表您点击、输入和控制应用程序。`,accessibilityLabel:`辅助功能`,checking:`正在检查权限...`,dockIcon:`程序坞图标`,microphoneDescription:`允许您的助手捕获音频用于语音输入和录音。`,microphoneLabel:`麦克风`,notificationBadgesDescription:`允许您的助手在 {surface} 上显示未读对话计数。`,notificationBadgesLabel:`通知标记`,notificationsDescription:`允许您的助手发送 macOS 提醒,用于审批、消息和任务更新。`,notificationsLabel:`通知`,notificationsWindowsDescription:`允许您的助手显示 Windows 通知,用于审批、消息和任务更新。`,screenDescription:`允许您的助手在计算机使用任务期间捕获屏幕上下文。`,screenLabel:`屏幕录制`,speechRecognitionDescription:`允许您的助手在设备上将您的语音转录为文本。`,speechRecognitionLabel:`语音识别`,speechRecognitionWindowsDescription:`允许您的助手使用 Windows 语音识别将您的语音转录为文本。`,taskbarIcon:`任务栏图标`,title:`系统权限`},Te={botTokenLabel:`机器人令牌`,connectTelegram:`连接 Telegram`,instructions:`粘贴 BotFather 回复中的令牌。它是 <tokenLine>Use this token to access the HTTP API</tokenLine> 之后的整行内容。`,saving:`正在保存…`,successNotice:`令牌已保存。其余步骤将自动完成。您的助手将在您下次聊天时确认 Telegram 正在发送消息,并确保可以联系到您。`},Ee={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> 之后回复一个令牌`,stepUsername:`给它一个用户名,该用户名必须是唯一的,并以 <strong>bot</strong> 结尾`},De={channelLabel:`Telegram`,copyError:`无法复制名称。请改为在 BotFather 中输入。`,stepConnect:`连接`,stepCreate:`创建机器人`},Oe={recoveryModeBanner:`恢复模式已激活:此会话已连接到调试终端。`},ke={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:`用户在其气泡中的消息。`},Ae={dark:`深色`,label:`主题`,light:`浅色`,system:`系统`,velvet:`丝绒`},je={dismiss:`关闭`,nextTip:`下一条提示`,previousTip:`上一条提示`},Me={apiKey:`API 密钥`,apiKeyRequired:`测试前请为此提供商保存 API 密钥。`,chooseFromCatalog:`从目录中选择`,customVoiceIdAriaLabel:`自定义语音 ID`,noManagedVoices:`目前没有可用的托管语音。`,provider:`提供商`,providerAriaLabel:`TTS 提供商`,saveFailed:`保存文本转语音设置失败`,saved:`文本转语音设置已保存`,test:`测试`,testing:`正在测试…`,voice:`语音`,voiceId:`语音 ID`,voiceIdPlaceholder:`输入语音 ID`},Ne={available:`有可用更新。正在开始下载…`,closeAriaLabel:`关闭`,downloading:`正在下载更新…`,ready:`Vellum {version} 已准备就绪。`,restartToInstall:`重启以安装`,versionFallback:`更新`},Pe={deleteFailed:`删除应用失败`},Fe={copyFailed:`无法复制链接。请在 {url} 打开。`,linkCopied:`链接已复制`,open:`打开`},Ie={setupPrompt:{slack:`我想在 Slack 上联系你。我们来设置一下。`,telegram:`我想在 Telegram 上联系你。我们来设置一下。`,discord:`我想在 Discord 上联系你。我们来设置一下。`,email:`我想给你发邮件。我们来设置你的电子邮件地址。`,phone:`我想能够给你打电话。我们来设置你的电话号码。`},finishPrompt:{slack:`Slack 已设置但无法工作。你能完成它吗?`,telegram:`Telegram 已设置但无法工作。你能完成它吗?`,discord:`Discord 已设置但无法工作。你能完成它吗?`,email:`我的电子邮件地址已设置但无法工作。你能完成它吗?`,phone:`我的电话号码已设置但无法工作。你能完成它吗?`}},Le={addFailed:`收藏消息失败。`,removeFailed:`移除收藏失败。`},Re={exchangeFailed:`请检查粘贴的密钥并重试。`,failed:`连接 Claude 失败。请重试。`,notStarted:`请先启动连接 Claude 流程。`,pasteEmpty:`请粘贴 Claude 页面上显示的代码。`,popupBlocked:`您的浏览器阻止了登录标签页。请允许此站点的弹窗,然后再次点击连接。`,startFailed:`无法启动连接 Claude。请重试。`,timedOut:`等待 Claude 连接超时。请重试。`},ze={accountConnected:`{name} 账户已连接。`,authPopupClosed:`{name} 连接失败:授权弹窗已关闭。`,authorizationError:`{name} 错误:{code}`,authorizationFailed:`{name} 授权失败`,popupBlocked:`弹窗被阻止。请启用弹窗并重试。`,popupClosed:`{name} 连接失败:弹窗已关闭。`,startFailed:`启动 {name} 授权失败。`},Be={blocked:`您的浏览器阻止了助手尝试打开的页面。`,openPage:`打开页面`},Ve={playFailed:`无法播放语音样本。`},He={updated:`主题已更新`},Ue={body:`输入您的 Vercel API 令牌,将应用程序部署为静态页面。`,cancel:`取消`,createToken:`在 Vercel 上创建令牌 →`,save:`保存`,saveFailed:`保存 Vercel 令牌失败。`,saving:`正在保存…`,title:`连接 Vercel`,tokenLabel:`API 令牌`,tokenPlaceholder:`Vercel API 令牌`},We={assistantVoiceAriaLabel:`助手语音`,defaultSuffix:`(默认)`,previewVoice:`预览 {description}`,providerAriaLabel:`语音提供商`,stopPreview:`停止预览`},Ge={ariaLabel:`语音`,selectVoice:`选择语音`},Ke={done:`完成`,title:`语音`},qe={body:`语音提供商、转录和 API 密钥位于<modelsLink>模型与服务</modelsLink>中。`},Je={recommendedOff:`建议关闭`},Ye={developer:`开发者`,file:`文件`,help:`帮助`,view:`视图`},Xe={checkingDomain:`正在检查域名…`,domainVerified:`域名已验证`,failedTitle:`域名验证失败。DNS 记录可能未正确传播。您可以尝试释放并重新注册该域名。`,unknownStatus:`未知状态`,unknownStatusTitle:`无法检索域名验证状态。`,verificationFailed:`验证失败`,verifiedTitle:`DNS 记录已验证。您的域名已准备好发送和接收电子邮件。`,verifyingDomain:`正在验证域名…`,verifyingTitle:`DNS 记录已配置。正在等待电子邮件提供商验证它们 - 这通常需要几分钟。`},Ze={body:`托管服务按量计费,并从您的 Vellum 账户余额中扣除。<link>查看定价</link>`},Qe={managedLabel:`托管`,modeToggleAriaLabel:`服务模式`,yourOwnLabel:`自托管`},$e={previewAlt:`您的助手头像`,download:`下载头像`,prompt:{slack:`下载您的助手头像以上传为应用图标。`,discord:`下载您的助手头像以上传为机器人图标。`,telegram:`下载您的助手头像,然后使用 /setuserpic 发送给 BotFather。`}},et={aboutPage:e,activeAssistantGate:t,addCredentialModal:n,addCreditsModal:r,appCard:i,appNavBar:a,appViewerContainer:o,assistantConnect:s,assistantFeatureFlagStore:c,avatarManagementModal:l,bundleConfirmPage:u,byoVoiceNote:d,chatAvatar:f,chooserAvatarChip:p,collapsibleNavSection:m,commandPalette:h,companionIntro:g,companionSurface:_,contentActionBar:v,createAssistantDialog:y,dateRangeSelect:b,deleteAppDialog:x,deployDialogs:S,deployStore:C,detailPanelStopButton:w,detailPrimitives:T,dictationOverlayPage:E,discordNudgeBanner:D,discordSetupConnectStep:O,discordSetupCreateStep:k,discordSetupInviteStep:A,discordSetupWizard:j,diskPressureBanner:M,downloadFeedback:N,editFooter:P,generateInviteLinkDialog:F,githubNudgeBanner:I,lazyBoundary:L,macosAppBanner:R,nativeAppBanner:z,nativeSplash:B,notFound:V,nudgeChatBanner:H,onboardingBackButton:U,platformLoginNotice:W,profileCard:G,profileQuickAddProvider:K,quickInputPage:q,removeFromDeviceDialog:J,resourcePressureBanner:Y,retireConfirmDialog:X,rootHydrateFallback:Z,rootLayout:Q,routeErrorBoundary:$,runtimeUpgradeBanner:ee,sectionActionsButton:te,serviceFormControls:ne,shareConnectionLinkButton:re,shareFeedbackModal:ie,shareFeedbackModalFallback:ae,shareFeedbackModalLoadError:oe,sideListDrawer:se,sidebarShell:ce,sidebarTree:le,skillLineageLink:ue,skillRemovalDialog:de,slackSetupCreateStep:fe,slackSetupNameStep:pe,slackSetupOpenStep:me,slackSetupTokensStep:he,slackSetupWizard:ge,stackedBarTooltip:_e,startupFailure:ve,statusBanner:ye,sttLanguagePicker:be,sttLanguagePickerModal:xe,sttProviderForm:Se,subagentAvatarChip:Ce,systemPermissionsCard:we,telegramSetupConnectStep:Te,telegramSetupCreateStep:Ee,telegramSetupWizard:De,terminalPanel:Oe,themeStagePage:ke,themeToggle:Ae,tipCard:je,ttsProviderForm:Me,updateToast:Ne,useAppDelete:Pe,useAppDeployment:Fe,useAssistantChannels:Ie,useBookmarks:Le,useConnectClaude:Re,useOauthConnect:ze,useOpenUrlDirectives:Be,useVoiceSamplePreview:Ve,useWorkspaceTheme:He,vercelTokenDialog:Ue,voiceList:We,voicePickerField:Ge,voicePickerModal:Ke,voiceProvidersNote:qe,voiceTranscriptToggles:Je,windowsMenuBar:Ye,domainVerificationChip:Xe,managedServicesBanner:Ze,serviceCard:Qe,channelAvatarDownload:$e};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,$e as channelAvatarDownload,f as chatAvatar,p as chooserAvatarChip,m as collapsibleNavSection,h as commandPalette,g as companionIntro,_ as companionSurface,v as contentActionBar,y as createAssistantDialog,b as dateRangeSelect,et as default,x as deleteAppDialog,S as deployDialogs,C as deployStore,w as detailPanelStopButton,T as detailPrimitives,E as dictationOverlayPage,D as discordNudgeBanner,O as discordSetupConnectStep,k as discordSetupCreateStep,A as discordSetupInviteStep,j as discordSetupWizard,M as diskPressureBanner,Xe as domainVerificationChip,N as downloadFeedback,P as editFooter,F as generateInviteLinkDialog,I as githubNudgeBanner,L as lazyBoundary,R as macosAppBanner,Ze as managedServicesBanner,z as nativeAppBanner,B as nativeSplash,V as notFound,H as nudgeChatBanner,U as onboardingBackButton,W as platformLoginNotice,G as profileCard,K as profileQuickAddProvider,q as quickInputPage,J as removeFromDeviceDialog,Y as resourcePressureBanner,X as retireConfirmDialog,Z as rootHydrateFallback,Q as rootLayout,$ as routeErrorBoundary,ee as runtimeUpgradeBanner,te as sectionActionsButton,Qe as serviceCard,ne as serviceFormControls,re as shareConnectionLinkButton,ie as shareFeedbackModal,ae as shareFeedbackModalFallback,oe as shareFeedbackModalLoadError,se as sideListDrawer,ce as sidebarShell,le as sidebarTree,ue as skillLineageLink,de as skillRemovalDialog,fe as slackSetupCreateStep,pe as slackSetupNameStep,me as slackSetupOpenStep,he as slackSetupTokensStep,ge as slackSetupWizard,_e as stackedBarTooltip,ve as startupFailure,ye as statusBanner,be as sttLanguagePicker,xe as sttLanguagePickerModal,Se as sttProviderForm,Ce as subagentAvatarChip,we as systemPermissionsCard,Te as telegramSetupConnectStep,Ee as telegramSetupCreateStep,De as telegramSetupWizard,Oe as terminalPanel,ke as themeStagePage,Ae as themeToggle,je as tipCard,Me as ttsProviderForm,Ne as updateToast,Pe as useAppDelete,Fe as useAppDeployment,Ie as useAssistantChannels,Le as useBookmarks,Re as useConnectClaude,ze as useOauthConnect,Be as useOpenUrlDirectives,Ve as useVoiceSamplePreview,He as useWorkspaceTheme,Ue as vercelTokenDialog,We as voiceList,Ge as voicePickerField,Ke as voicePickerModal,qe as voiceProvidersNote,Je as voiceTranscriptToggles,Ye as windowsMenuBar};
|
|
@@ -0,0 +1 @@
|
|
|
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={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={alt:`助理頭像`,fallbackLetter:`V`},p={alt:`助理頭像`},m={actionsTitle:`{title} 動作`},h={ariaLabel:`指令面板`,clear:`清除`,clearSearch:`清除搜尋`,closeSearch:`關閉搜尋`,noResults:`沒有結果`,placeholder:`搜尋對話、記憶…`,searchAriaLabel:`搜尋`,searching:`正在搜尋…`},g={ariaLabel:`介紹您的助理`,done:`知道了`,meet:{body:`我會留在您的桌面上,即使 Vellum 沒有顯示。`,title:`這就是我`,titleNamed:`我是 {name}`},menu:{body:`您可以在這裡隱藏我或變更我的大小。`,title:`右鍵點擊我`},next:`下一步`,skip:`跳過`,talk:{body:`開始語音對話。`,title:`交談`},type:{body:`從這裡傳送訊息,並在這裡閱讀回覆。`,title:`輸入`}},_={allow:`允許`,deny:`拒絕`,endSession:`結束會話`,goBack:`返回`,messagePlaceholder:`傳送訊息給 {name}`,muteAssistant:`將助理靜音`,muteMicrophone:`將麥克風靜音`,notNow:`暫不`,send:`傳送`,showSummary:`顯示摘要`,stopTeaching:`停止教學`,summarizing:`正在摘要`,talk:`交談`,teach:`教學`,type:`輸入`,unmuteAssistant:`解除助理靜音`,unmuteMicrophone:`解除麥克風靜音`},v={copiedAria:`已複製`,copyFailed:`無法複製檔案內容。`,copyFileContentsAria:`複製檔案內容`,downloadFileAria:`下載檔案`,editFileAria:`編輯檔案`},y={cancel:`取消`,create:`建立`,description:`佈建一個新助理。它將在背景啟動。`,namePlaceholder:`助理名稱(選填)`,title:`新助理`,toastSuccess:`新助理已建立。`},b={ariaLabel:`日期範圍`,lastDays:`{days, plural, other {過去 # 天}}`},x={delete:`刪除`,deleting:`正在刪除…`,message:`"{name}" 將會被永久移除。`,title:`刪除應用程式`},S={confirmLabel:`讓您的助理處理`,confirmLabelNamed:`讓 {assistantName} 處理`,message:`"{appName}" 使用後端服務,這些服務無法在靜態 Vercel 頁面上運作。您的助理可以使用無伺服器函式正確部署它。`,messageNamed:`"{appName}" 使用後端服務,這些服務無法在靜態 Vercel 頁面上運作。{assistantName} 可以使用無伺服器函式正確部署它。`,title:`此應用程式需要完整部署`},C={appExported:`應用程式已匯出`,deployFailed:`部署失敗`,deployedToVercel:`已部署至 Vercel`,open:`開啟`,shareFailed:`分享應用程式失敗`},w={tooltip:`停止`},T={copied:`已複製`,copy:`複製`},E={stopRecording:`停止錄音`},D={ariaLabel:`加入 Vellum Discord 社群`,ctaLong:`加入 Discord`,ctaShort:`加入`,subtitleLong:`與團隊交流 - 分享意見回饋、提出功能需求、更快獲得解答`,subtitleShort:`分享意見回饋、提出功能需求、更快獲得解答`,title:`加入我們的社群!`},O={instructions:`貼上您從「機器人」頁面複製的機器人金鑰。`,botTokenLabel:`機器人金鑰`,save:`連線`,saving:`正在連線...`,saved:`已連線。接下來,將機器人新增至伺服器。`,botTokenPlaceholder:`MTk4NjIyNDgzNzAyNDU0...`},k={instructions:`開啟 Discord 開發者入口網站並建立新的應用程式。在其 <resetLine>機器人</resetLine> 頁面上,點擊「重設金鑰」並立即複製金鑰:Discord 只會顯示一次,之後無法再次讀取。`,intentsNote:`關閉所有三個特權閘道意圖。您的助理只會讀取直接訊息和提及它的訊息,Discord 將這些訊息排除在「訊息內容」意圖之外。`,openPortal:`開啟 Discord 入口網站`,continue:`我已擁有金鑰`},A={instructions:`您的機器人必須加入伺服器才能看到任何內容。此連結使用您應用程式「安裝」頁面上的安裝設定。`,openInvite:`新增至伺服器`,noAppId:`請先連線機器人金鑰,然後再回來將其新增至伺服器。`},j={channelLabel:`Discord`,stepCreate:`建立應用程式`,stepConnect:`連線`,stepInvite:`新增至伺服器`},M={acknowledge:`確認`,acknowledging:`正在確認...`,cleanupBody:`提示您的助理釋出空間,以免空間用盡並進入鎖定狀態。`,cleanupTitle:`清理模式已啟用`,criticalBody:`如果儲存空間用盡,您的助理將進入鎖定狀態。`,criticalModalDescription:`如果儲存空間用盡,您的助理將進入鎖定狀態。您應該提示您的助理釋出空間或增加儲存空間。`,criticalTitle:`儲存空間嚴重不足`,dontShowAgain:`不再顯示`,manageStorage:`管理儲存空間`,review:`檢閱`,upgrade:`升級`,warningBody:`釋出空間以避免中斷。`,warningBodyWithUpgrade:`釋出空間或增加更多儲存空間以避免中斷。`,warningTitle:`您的儲存空間即將用盡`},N={failed:`下載失敗`,revealMac:`在 Finder 中顯示`,revealWindows:`在檔案總管中顯示`,saved:`已儲存至「下載」`,started:`下載已開始`,startedDescription:`請在瀏覽器的下載內容中尋找 {filename}。`},P={discard:`捨棄`,save:`儲存`,saving:`正在儲存…`},F={copyAriaLabel:`複製邀請連結`,createFailed:`建立邀請連結失敗。請確認您的助理已啟用 A2A。`,creating:`正在建立邀請連結…`,done:`完成`,shareHint:`與另一位助理擁有者分享此連結以建立連線。`,title:`分享連線連結`,tryAgain:`再試一次`},I={ariaLabel:`Vellum 在 GitHub 上是開放原始碼`,ctaAriaLabel:`在 GitHub 上為 Vellum 加星`,ctaLabel:`為我們加星`,subtitle:`在 GitHub 上為我們加星或貢獻`,title:`Vellum 是開放原始碼`},L={loadError:`此區段無法載入。請重新載入頁面再試一次。`},R={ariaLabel:`下載 macOS 應用程式`,ctaAriaLabel:`下載 macOS 應用程式`,ctaLabel:`下載`,subtitle:`電腦使用 · 終端機存取 · 原生自動化`,title:`取得 macOS 應用程式`},z={bannerAria:`下載 {appName} 應用程式`,bannerAriaGeneric:`下載 Vellum 行動應用程式`,download:`下載`,downloadAppAria:`下載 {appName} 應用程式`,downloadAppAriaGeneric:`下載 Vellum 行動應用程式`,subtitle:`推播通知 · 生物辨識登入 · 觸覺回饋`,title:`取得 {appName} 應用程式`,titleGeneric:`取得 Vellum 應用程式`},B={logoAlt:`Vellum`},V={backToAssistant:`返回您的助理`,badge:`錯誤 404`,body:`您要尋找的頁面不存在或可能已移動。`,goBack:`返回`,title:`找不到頁面`},H={dismissAria:`關閉`},U={back:`返回`},W={cancel:`取消`,logIn:`登入`},G={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:`使用者識別名稱`},K={created:`已建立個人資料「{name}」`},q={logoAlt:`Vellum`,placeholder:`詢問 Vellum 任何問題…`},J={confirm:`移除`,messageOrigin:`這不會影響 {assistantName} 或讓您在那裡登出。它只會忘記此裝置上的項目。您可以隨時再次新增。`,messagePaired:`這不會影響 {assistantName} 在其主機上的狀態。它只會忘記此裝置上的配對。您可以隨時使用 vellum connect import 再次配對。`,messagePlatform:`這不會刪除 {assistantName}。它只會將其從此裝置移除。登入後它將再次可用。`,title:`從此裝置移除?`},Y={body:`您的助理正在努力工作並達到其目前的資源限制。請升級以確保其順暢執行。`,bodyNoUpgrade:`您的助理正在努力工作並達到其目前的資源限制。`,dontShowAgain:`不再顯示`,title:`您的助理需要更多資源`,titleNamed:`{assistantName} 需要更多資源`,upgrade:`升級`},X={confirmLabel:`停用`,message:`這將永久停用此助理及其所有資料。您需要再次完成引導流程才能建立新的助理。此動作無法復原。`,title:`停用助理`},Z={loadingAria:`正在載入`},Q={unnamedAssistant:`該助理`},$={chunkFailBody:`此區段無法載入。可能是網路瞬斷或版本過舊。請重新載入頁面再試一次。`,reload:`重新載入`},ee={confirmMessage:`更新至版本 {version}?更新期間助理將暫時無法使用。`,confirmTitle:`更新助理執行環境`,later:`稍後`,title:`有新的助理版本可用:{version}`,toastComplete:`更新完成。您的助理運作正常。`,toastFailed:`無法觸發更新。請再試一次。`,update:`更新`},te={ariaLabel:`{name} 動作`},ne={reset:`重設`,save:`儲存`},re={label:`分享連線連結`},ie={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:`分享意見回饋`},ae={loadingAria:`正在載入意見回饋表單`},oe={close:`關閉`,message:`無法載入意見回饋表單。`,retry:`再試一次`},se={closeAria:`關閉`,closeSidebarAria:`關閉側邊欄`,openSidebarAria:`開啟側邊欄`},ce={backFrom:`從 {title} 返回`,backToMenu:`返回 {title} 選單`,navigationAria:`{title} 導覽`},le={ariaLabel:`側邊欄導覽`},ue={label:`從此對話中學習`},de={message:`從此助理中移除「{name}」?`,remove:`移除`,title:`移除技能`},fe={approvalNotice:`如果 Slack 顯示「請求核准」而非 <strong>安裝</strong>,則工作區管理員需要先核准此應用程式。`,createdApp:`我已建立應用程式`,inSlack:`在 Slack 中:`,stepManifest:`在<strong>或以您自己的方式開始</strong>下方,選擇<strong>從資訊清單</strong>,然後<strong>繼續</strong>`,stepPaste:`選擇您的工作區並貼上資訊清單`,stepReview:`檢閱權限,然後點擊<strong>建立並安裝</strong>`},pe={appName:`應用程式名稱`,appNamePlaceholder:`我的助理`,copied:`已複製!`,copyManifest:`複製資訊清單`,description:`描述 (選填)`,descriptionHelper:`顯示在應用程式的 Slack 個人資料中。`,descriptionPlaceholder:`此助理提供哪些協助`,intro:`為您的 Slack 應用程式命名並複製其資訊清單。所有權限和設定皆已預先配置。`,next:`下一步`},me={body:`在新分頁中開啟 Slack 以建立應用程式,然後返回此處查看後續步驟。`,copied:`已複製!`,copyManifest:`複製資訊清單`,manifestCopiedNotice:`您已在此處複製此應用程式的資訊清單。如果您之後有複製任何其他內容,請在貼上前再次複製。`,manifestNotCopiedNotice:`您尚未複製此應用程式的資訊清單。Slack 的建立應用程式彈出視窗沒有其他方式可以取得,因此請在貼上前複製它。`,next:`下一步`,openSlack:`開啟 Slack`},he={appTokenLabel:`應用程式權杖`,botTokenLabel:`機器人權杖`,connectSlack:`連接 Slack`,connecting:`正在連接…`,credentialsSaved:`憑證已儲存。`,instructions:`在 Slack 的確認畫面中,展開 <credentials>您的應用程式憑證</credentials> 並複製兩個權杖。`,skipNotice:`該畫面也提供命令列逐步說明和一個 <download>下載應用程式檔案</download> 按鈕。請跳過這兩項。它們會設定一個獨立的本機應用程式,而此助理只需要這兩個權杖。`},ge={channelLabel:`Slack`,copyError:`無法複製清單。請在繼續之前重新複製。`,stepConnect:`連接`,stepCreate:`建立`,stepName:`名稱`,stepOpen:`開啟`},_e={total:`總計:{value}`},ve={reloadApp:`重新載入應用程式`},ye={dismiss:`關閉`,goToDoctor:`前往診斷`,resumeAssistant:`恢復助理`,retryNow:`立即重試`,wakeUp:`喚醒`},be={allLanguages:`所有語言`,featured:`精選`,languagesAriaLabel:`語言`,noMatch:`無符合的語言。`,searchAriaLabel:`搜尋語言`,searchPlaceholder:`搜尋語言`,suggested:`建議`},xe={description:`從您下次語音輸入開始生效。`},Se={apiKeyLabel:`API 金鑰`,apiKeyPlaceholderReplace:`•••••••• (輸入新金鑰以取代)`,providerAriaLabel:`語音轉文字提供者`,providerLabel:`提供者`,saveFailed:`儲存語音轉文字設定失敗`,saveSuccess:`語音轉文字設定已儲存`,spokenLanguage:`口說語言`,spokenLanguageApplies:`從您下次語音輸入開始生效。`,vellumTranscription:`轉錄會透過您的 Vellum 帳戶執行。`,windowsNativeDisplayName:`Windows 原生聽寫`,windowsNativeSetupWarning:`需要為您的 Windows 顯示語言啟用基本語音辨識:開啟「設定」>「時間與語言」>「語言與區域」,選取顯示語言旁邊的三個點,選擇「語言選項」,然後在「語言功能」下下載「基本語音辨識」。`,windowsNativeSubtitle:`Windows 裝置上的語音辨識,透過 Windows 輔助程式在本機執行。可離線運作且不需要 API 金鑰。`},Ce={ariaLabel:`子助理 {subagentId}`},we={accessibilityDescription:`允許您的助理代表您點擊、輸入和控制應用程式。`,accessibilityLabel:`輔助使用`,checking:`正在檢查權限...`,dockIcon:`Dock 圖示`,microphoneDescription:`允許您的助理擷取音訊以進行語音輸入和錄音。`,microphoneLabel:`麥克風`,notificationBadgesDescription:`允許您的助理在 {surface} 上顯示未讀對話計數。`,notificationBadgesLabel:`通知標記`,notificationsDescription:`允許您的助理傳送 macOS 警示以進行核准、訊息和任務更新。`,notificationsLabel:`通知`,notificationsWindowsDescription:`允許您的助理顯示 Windows 通知以進行核准、訊息和任務更新。`,screenDescription:`允許您的助理在電腦使用任務期間擷取螢幕內容。`,screenLabel:`螢幕錄影`,speechRecognitionDescription:`允許您的助理在裝置上將您的語音轉錄為文字。`,speechRecognitionLabel:`語音辨識`,speechRecognitionWindowsDescription:`允許您的助理使用 Windows 語音辨識將您的語音轉錄為文字。`,taskbarIcon:`工作列圖示`,title:`系統權限`},Te={botTokenLabel:`機器人權杖`,connectTelegram:`連接 Telegram`,instructions:`貼上 BotFather 回覆中的權杖。它是 <tokenLine>Use this token to access the HTTP API</tokenLine> 之後的整行內容。`,saving:`正在儲存…`,successNotice:`權杖已儲存。其餘部分將自動完成。您的助理會在您下次聊天時確認 Telegram 正在傳送訊息,並確保可以聯絡到您。`},Ee={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> 之後回覆一個權杖`,stepUsername:`給它一個使用者名稱,該名稱必須是唯一的並以 <strong>bot</strong> 結尾`},De={channelLabel:`Telegram`,copyError:`無法複製名稱。請改為在 BotFather 中輸入。`,stepConnect:`連接`,stepCreate:`建立機器人`},Oe={recoveryModeBanner:`復原模式已啟用:此工作階段已連接到偵錯終端機。`},ke={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:`使用者在其對話框中的訊息。`},Ae={dark:`深色`,label:`主題`,light:`淺色`,system:`系統`,velvet:`絲絨`},je={dismiss:`關閉`,nextTip:`下一個提示`,previousTip:`上一個提示`},Me={apiKey:`API 金鑰`,apiKeyRequired:`測試前請為此供應商儲存 API 金鑰。`,chooseFromCatalog:`從目錄中選擇`,customVoiceIdAriaLabel:`自訂語音 ID`,noManagedVoices:`目前沒有可用的受管理語音。`,provider:`供應商`,providerAriaLabel:`TTS 供應商`,saveFailed:`儲存語音轉文字設定失敗`,saved:`語音轉文字設定已儲存`,test:`測試`,testing:`正在測試…`,voice:`語音`,voiceId:`語音 ID`,voiceIdPlaceholder:`輸入語音 ID`},Ne={available:`有可用的更新。正在開始下載…`,closeAriaLabel:`關閉`,downloading:`正在下載更新…`,ready:`Vellum {version} 已備妥。`,restartToInstall:`重新啟動以安裝`,versionFallback:`更新`},Pe={deleteFailed:`刪除應用程式失敗`},Fe={copyFailed:`無法複製連結。請在 {url} 開啟。`,linkCopied:`連結已複製`,open:`開啟`},Ie={setupPrompt:{slack:`我想在 Slack 上聯絡你。我們來設定吧。`,telegram:`我想在 Telegram 上聯絡你。我們來設定吧。`,discord:`我想在 Discord 上聯絡你。我們來設定吧。`,email:`我想寄電子郵件給你。我們來設定你的電子郵件地址。`,phone:`我希望能打電話給你。我們來設定你的電話號碼。`},finishPrompt:{slack:`Slack 已設定但無法運作。你能完成它嗎?`,telegram:`Telegram 已設定但無法運作。你能完成它嗎?`,discord:`Discord 已設定但無法運作。你能完成它嗎?`,email:`我的電子郵件地址已設定但無法運作。你能完成它嗎?`,phone:`我的電話號碼已設定但無法運作。你能完成它嗎?`}},Le={addFailed:`加入書籤失敗。`,removeFailed:`移除書籤失敗。`},Re={exchangeFailed:`檢查貼上的金鑰,然後再試一次。`,failed:`連線 Claude 失敗。請再試一次。`,notStarted:`請先啟動連線 Claude 流程。`,pasteEmpty:`請貼上 Claude 頁面上顯示的程式碼。`,popupBlocked:`您的瀏覽器阻擋了登入分頁。請允許此網站的彈出視窗,然後再按一下「連線」。`,startFailed:`無法啟動連線 Claude。請再試一次。`,timedOut:`等待 Claude 連線逾時。請再試一次。`},ze={accountConnected:`{name} 帳號已連線。`,authPopupClosed:`{name} 連線失敗:授權彈出視窗已關閉。`,authorizationError:`{name} 錯誤:{code}`,authorizationFailed:`{name} 授權失敗`,popupBlocked:`彈出視窗已阻擋。請啟用彈出視窗,然後再試一次。`,popupClosed:`{name} 連線失敗:彈出視窗已關閉。`,startFailed:`無法啟動 {name} 授權。`},Be={blocked:`您的瀏覽器阻擋了助理嘗試開啟的頁面。`,openPage:`開啟頁面`},Ve={playFailed:`無法播放語音樣本。`},He={updated:`主題已更新`},Ue={body:`輸入您的 Vercel API 金鑰,以將應用程式部署為靜態頁面。`,cancel:`取消`,createToken:`在 Vercel 上建立金鑰 →`,save:`儲存`,saveFailed:`無法儲存 Vercel 金鑰。`,saving:`正在儲存…`,title:`連線 Vercel`,tokenLabel:`API 金鑰`,tokenPlaceholder:`Vercel API 金鑰`},We={assistantVoiceAriaLabel:`助理語音`,defaultSuffix:`(預設)`,previewVoice:`預覽 {description}`,providerAriaLabel:`語音提供者`,stopPreview:`停止預覽`},Ge={ariaLabel:`語音`,selectVoice:`選取語音`},Ke={done:`完成`,title:`語音`},qe={body:`語音提供者、轉錄和 API 金鑰位於<modelsLink>模型與服務</modelsLink>中。`},Je={recommendedOff:`建議關閉`},Ye={developer:`開發人員`,file:`檔案`,help:`說明`,view:`檢視`},Xe={checkingDomain:`正在檢查網域…`,domainVerified:`網域已驗證`,failedTitle:`網域驗證失敗。DNS 記錄可能未正確傳播。您可以嘗試釋放並重新註冊網域。`,unknownStatus:`未知狀態`,unknownStatusTitle:`無法擷取網域驗證狀態。`,verificationFailed:`驗證失敗`,verifiedTitle:`DNS 記錄已驗證。您的網域已準備好傳送和接收電子郵件。`,verifyingDomain:`正在驗證網域…`,verifyingTitle:`DNS 記錄已佈建。正在等待電子郵件提供者驗證它們 - 這通常需要幾分鐘。`},Ze={body:`受管服務按用量計費,並從您的 Vellum 帳戶餘額中扣除。<link>檢視定價</link>`},Qe={managedLabel:`受管`,modeToggleAriaLabel:`服務模式`,yourOwnLabel:`自有`},$e={previewAlt:`您的助理頭像`,download:`下載頭像`,prompt:{slack:`下載您的助理頭像,以上傳為應用程式圖示。`,discord:`下載您的助理頭像,以上傳為機器人圖示。`,telegram:`下載您的助理頭像,然後透過 /setuserpic 傳送給 BotFather。`}},et={aboutPage:e,activeAssistantGate:t,addCredentialModal:n,addCreditsModal:r,appCard:i,appNavBar:a,appViewerContainer:o,assistantConnect:s,assistantFeatureFlagStore:c,avatarManagementModal:l,bundleConfirmPage:u,byoVoiceNote:d,chatAvatar:f,chooserAvatarChip:p,collapsibleNavSection:m,commandPalette:h,companionIntro:g,companionSurface:_,contentActionBar:v,createAssistantDialog:y,dateRangeSelect:b,deleteAppDialog:x,deployDialogs:S,deployStore:C,detailPanelStopButton:w,detailPrimitives:T,dictationOverlayPage:E,discordNudgeBanner:D,discordSetupConnectStep:O,discordSetupCreateStep:k,discordSetupInviteStep:A,discordSetupWizard:j,diskPressureBanner:M,downloadFeedback:N,editFooter:P,generateInviteLinkDialog:F,githubNudgeBanner:I,lazyBoundary:L,macosAppBanner:R,nativeAppBanner:z,nativeSplash:B,notFound:V,nudgeChatBanner:H,onboardingBackButton:U,platformLoginNotice:W,profileCard:G,profileQuickAddProvider:K,quickInputPage:q,removeFromDeviceDialog:J,resourcePressureBanner:Y,retireConfirmDialog:X,rootHydrateFallback:Z,rootLayout:Q,routeErrorBoundary:$,runtimeUpgradeBanner:ee,sectionActionsButton:te,serviceFormControls:ne,shareConnectionLinkButton:re,shareFeedbackModal:ie,shareFeedbackModalFallback:ae,shareFeedbackModalLoadError:oe,sideListDrawer:se,sidebarShell:ce,sidebarTree:le,skillLineageLink:ue,skillRemovalDialog:de,slackSetupCreateStep:fe,slackSetupNameStep:pe,slackSetupOpenStep:me,slackSetupTokensStep:he,slackSetupWizard:ge,stackedBarTooltip:_e,startupFailure:ve,statusBanner:ye,sttLanguagePicker:be,sttLanguagePickerModal:xe,sttProviderForm:Se,subagentAvatarChip:Ce,systemPermissionsCard:we,telegramSetupConnectStep:Te,telegramSetupCreateStep:Ee,telegramSetupWizard:De,terminalPanel:Oe,themeStagePage:ke,themeToggle:Ae,tipCard:je,ttsProviderForm:Me,updateToast:Ne,useAppDelete:Pe,useAppDeployment:Fe,useAssistantChannels:Ie,useBookmarks:Le,useConnectClaude:Re,useOauthConnect:ze,useOpenUrlDirectives:Be,useVoiceSamplePreview:Ve,useWorkspaceTheme:He,vercelTokenDialog:Ue,voiceList:We,voicePickerField:Ge,voicePickerModal:Ke,voiceProvidersNote:qe,voiceTranscriptToggles:Je,windowsMenuBar:Ye,domainVerificationChip:Xe,managedServicesBanner:Ze,serviceCard:Qe,channelAvatarDownload:$e};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,$e as channelAvatarDownload,f as chatAvatar,p as chooserAvatarChip,m as collapsibleNavSection,h as commandPalette,g as companionIntro,_ as companionSurface,v as contentActionBar,y as createAssistantDialog,b as dateRangeSelect,et as default,x as deleteAppDialog,S as deployDialogs,C as deployStore,w as detailPanelStopButton,T as detailPrimitives,E as dictationOverlayPage,D as discordNudgeBanner,O as discordSetupConnectStep,k as discordSetupCreateStep,A as discordSetupInviteStep,j as discordSetupWizard,M as diskPressureBanner,Xe as domainVerificationChip,N as downloadFeedback,P as editFooter,F as generateInviteLinkDialog,I as githubNudgeBanner,L as lazyBoundary,R as macosAppBanner,Ze as managedServicesBanner,z as nativeAppBanner,B as nativeSplash,V as notFound,H as nudgeChatBanner,U as onboardingBackButton,W as platformLoginNotice,G as profileCard,K as profileQuickAddProvider,q as quickInputPage,J as removeFromDeviceDialog,Y as resourcePressureBanner,X as retireConfirmDialog,Z as rootHydrateFallback,Q as rootLayout,$ as routeErrorBoundary,ee as runtimeUpgradeBanner,te as sectionActionsButton,Qe as serviceCard,ne as serviceFormControls,re as shareConnectionLinkButton,ie as shareFeedbackModal,ae as shareFeedbackModalFallback,oe as shareFeedbackModalLoadError,se as sideListDrawer,ce as sidebarShell,le as sidebarTree,ue as skillLineageLink,de as skillRemovalDialog,fe as slackSetupCreateStep,pe as slackSetupNameStep,me as slackSetupOpenStep,he as slackSetupTokensStep,ge as slackSetupWizard,_e as stackedBarTooltip,ve as startupFailure,ye as statusBanner,be as sttLanguagePicker,xe as sttLanguagePickerModal,Se as sttProviderForm,Ce as subagentAvatarChip,we as systemPermissionsCard,Te as telegramSetupConnectStep,Ee as telegramSetupCreateStep,De as telegramSetupWizard,Oe as terminalPanel,ke as themeStagePage,Ae as themeToggle,je as tipCard,Me as ttsProviderForm,Ne as updateToast,Pe as useAppDelete,Fe as useAppDeployment,Ie as useAssistantChannels,Le as useBookmarks,Re as useConnectClaude,ze as useOauthConnect,Be as useOpenUrlDirectives,Ve as useVoiceSamplePreview,He as useWorkspaceTheme,Ue as vercelTokenDialog,We as voiceList,Ge as voicePickerField,Ke as voicePickerModal,qe as voiceProvidersNote,Je as voiceTranscriptToggles,Ye as windowsMenuBar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{j as e}from"./vendor-kNpRDQWe.js";import{t}from"./react-DPM_L_aA.js";import{Cn as n,O as r,P as i,Yr as a,di as o,lt as s,m as c,qn as l,xi as u,yn as d}from"./icons-CSdHOix6.js";import{C as f,Ro as p,S as m,by as h,my as g,oi as _,vy as v,w as y}from"./index-D_aS89pX.js";var b=u(`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)(v,{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)(g,{tone:`neutral`,children:[(0,x.jsx)(s,{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:n,icon:r,title:i,subtitle:a,benefits:s,primaryAction:c,secondaryAction:l}){return(0,x.jsx)(v,{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:r}),(0,x.jsx)(`span`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:n})]}),(0,x.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,x.jsx)(`h2`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:i}),(0,x.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:a})]}),(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)(h,{onClick:c.onClick,children:[c.icon,c.label]}),l&&(0,x.jsxs)(h,{variant:`ghost`,onClick:()=>window.open(l.href,`_blank`,`noopener,noreferrer`),children:[l.label,(0,x.jsx)(o,{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)(v,{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)(l,{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:o}=y();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:a,text:t(`communityPage.openSourceBenefitIssues`)},{icon:b,text:t(`communityPage.openSourceBenefitContribute`)}],primaryAction:{label:t(`communityPage.starOnGitHub`),icon:(0,x.jsx)(r,{size:16}),onClick:o},secondaryAction:{label:t(`communityPage.viewSource`),href:f}}),(0,x.jsx)(D,{accentColor:`#5865F2`,label:t(`communityPage.discordLabel`),icon:(0,x.jsx)(_,{size:20}),title:t(`communityPage.discordTitle`),subtitle:t(`communityPage.discordSubtitle`),benefits:[{icon:d,text:t(`communityPage.discordBenefitTeam`)},{icon:i,text:t(`communityPage.discordBenefitFeedback`)},{icon:c,text:t(`communityPage.discordBenefitAnswers`)}],primaryAction:{label:t(`communityPage.joinDiscord`),icon:(0,x.jsx)(_,{size:16,style:{color:`currentColor`}}),onClick:m}})]}),(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)(n,{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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ao as e,Mo as t,jo as n,ko as r}from"./index-D_aS89pX.js";var i=(e,t,n)=>t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom,a=(e,t,{rowHeight:n,cardGrowth:r})=>{let i=r===`up`?t.bottom-n:t.top,a={top:i,bottom:i+n};return t.left>=e.right?{left:e.right,right:t.left,...a}:{left:t.right,right:e.left,...a}},o=(e,{avatar:t,pill:n,rowHeight:r,cardGrowth:o})=>{let s=t=>i(t,e.x,e.y);return s(t)?!0:n===null?!1:s(n)||s(a(t,n,{rowHeight:r,cardGrowth:o}))};function s(i,a){let o=t(a),s=i/2,c=r(i),l=e(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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{f as t,j as n}from"./vendor-kNpRDQWe.js";import{b as r,t as i}from"./react-DPM_L_aA.js";import{Br as a,Ft as o,Gn as s,It as c,Kn as l,Y as u,d,f,fn as p,i as m,li as h,ui as g}from"./icons-CSdHOix6.js";import{$o as _,Do as v,Jo as y,Oo as b,Qo as x,Vv as S,Xo as C,Yo as w,Zo as T,as as ee,dr as te,es as E,is as D,no as ne,ns as re,os as O,qr as k,rs as ie,ts as A}from"./index-D_aS89pX.js";import{n as j,r as M,t as N}from"./companion-layout-Czzr0lJa.js";import{t as P}from"./avatar-bundled-components-D8WzF-8G.js";var F=e(r(),1),I=i(),ae=244,L={meet:{title:`companionIntro.meet.title`,body:`companionIntro.meet.body`},talk:{title:`companionIntro.talk.title`,body:`companionIntro.talk.body`},type:{title:`companionIntro.type.title`,body:`companionIntro.type.body`},menu:{title:`companionIntro.menu.title`,body:`companionIntro.menu.body`}},R=e=>e===`talk`||e===`type`?e:void 0,z=e=>e===null||e===`meet`?null:`hover`;function oe({beat:e,growth:t=`right`,cardGrowth:r=`up`,avatarBox:i=v,optionsBox:a=v,accentHex:o,assistantName:s,cardRef:c,onAdvance:l}){let{t:u}=n(),d=b.indexOf(e),f=d===b.length-1,p=L[e],{inUnits:m,avatarHalf:h,lineAt:g,edgeAt:_,introStepOff:y}=N(i,a),x=m(y(r)),S=_(t,-h),C={top:g(r,0),transform:r===`up`?`translateY(calc(-100% - ${x}px))`:`translateY(${x}px)`};return(0,I.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:ae,...S,...C},onPointerDown:e=>{e.stopPropagation()},children:[(0,I.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,I.jsx)(`p`,{className:`text-[12px] leading-[1.45] text-white/70`,children:u(p.body)}),(0,I.jsxs)(`div`,{className:`flex items-center justify-between pt-0.5`,children:[(0,I.jsx)(`div`,{className:`flex items-center gap-1`,"aria-hidden":!0,children:b.map((e,t)=>(0,I.jsx)(`span`,{className:`size-1.5 rounded-full transition-colors`,style:{backgroundColor:t===d?o??`#5eead4`:`rgba(255,255,255,.2)`}},e))}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1`,children:[!f&&(0,I.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,I.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 se=`#5eead4`,ce=new Set([`transcribing`,`thinking`,`speaking`]),B=`#ff9f45`,V=28,H={hover:112,watching:151,summary:220,call:288},U=316,W=220;function G(e,t){let n=(0,F.useRef)({captureCount:e,watching:t}),[r,i]=(0,F.useState)(0);return(0,F.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 K({phase:e,turns:t=[],assistantName:n=`your assistant`,accentHex:r=se,avatarSrc:i,character:a,hovered:o=!1,growth:s=`right`,avatarBox:c=v,optionsBox:l=v,cardGrowth:u=`up`,rootRef:d,avatarRef:f,onSurfacePointerDown:p,onSurfaceContextMenu:m,spotlight:h,onTalk:g,onType:_,onWatch:y,onSubmit:b,onCancelTyping:x,onAvatarClick:S,working:C=!1,watching:w=!1,watchRetro:T,onWatchRetro:ee,captureCount:te=0,watchEnabled:E=!1,call:D,onControl:ne,intro:re}){let O=e!==`resting`,k=e===`typing`,ie=T===`pending`,A=C||D!==void 0&&ce.has(D.phase),j=G(te,w),M=(0,F.useRef)(null),[P,ae]=(0,F.useState)(null);(0,F.useLayoutEffect)(()=>{let e=M.current;if(!e)return;let t=()=>{ae(e.scrollWidth)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[e]);let L=k?U:O?(P??H[e])+16:0,{scale:R,avatarRel:z,avatarHalf:oe,baseline:V,gap:W,lineAt:K,edgeAt:q}=N(c,l),J=q(s,oe+W),X=k&&u===`down`,Z={width:L,...J,top:K(u,X?V-l:V),transform:X?`none`:`translateY(-100%)`,transitionTimingFunction:`cubic-bezier(.2,.8,.2,1)`},Q=(0,I.jsxs)(I.Fragment,{children:[(A||w||ie)&&(0,I.jsx)(`span`,{className:`companion-working-ring pointer-events-none absolute -inset-0.5 rounded-full`,style:{"--companion-ring-accent":w?B:r},"aria-hidden":!0}),w&&j>0&&(0,I.jsx)(`span`,{className:`companion-capture-pulse pointer-events-none absolute -inset-0.5 rounded-full`,style:{"--companion-ring-accent":B},"aria-hidden":!0},j)]});return(0,I.jsxs)(`div`,{className:`absolute top-0 left-0 origin-top-left`,style:{width:`${100/R}%`,height:`${100/R}%`,transform:`scale(${R})`},children:[(0,I.jsxs)(`div`,{className:`absolute cursor-grab transition-[width] duration-300 select-none will-change-[width] active:cursor-grabbing ${k?`flex rounded-[22px] ${u===`up`?`flex-col`:`flex-col-reverse`}`:`flex h-11 items-center rounded-full ${s===`left`?`justify-end`:``}`}`,style:Z,onPointerDown:p,onContextMenu:m,ref:d,children:[(0,I.jsx)(`span`,{className:`absolute inset-0 border border-white/10 bg-[#17181b]/95 shadow-lg shadow-black/40 transition-opacity duration-200 ${k?`rounded-[22px]`:`rounded-full`}`,style:{opacity:+!!O},"aria-hidden":!0}),k&&t.length>0&&(0,I.jsx)(le,{turns:t}),(0,I.jsx)(`div`,{className:`relative flex h-11 shrink-0 items-center`,style:{paddingInline:8},children:k?(0,I.jsx)(ue,{assistantName:n,watching:w,onSubmit:b,onCancel:x,onWatch:y}):(0,I.jsx)(`div`,{className:`relative flex min-w-0 items-center gap-1 overflow-hidden transition-opacity duration-200`,ref:M,inert:!O,style:{opacity:+!!O,transitionDelay:O?`120ms`:`0ms`},children:e===`call`?(0,I.jsx)(Y,{call:D,watching:w,onControl:ne,onWatch:y}):e===`summary`&&T!==void 0?(0,I.jsx)(pe,{retro:T,onWatchRetro:ee}):(0,I.jsx)(fe,{spotlight:h,watching:w,watchEnabled:E,onTalk:g,onType:_,onWatch:y})})})]}),(0,I.jsx)(de,{accentHex:r,avatarSrc:i,character:a,attentive:o,busy:A,edge:Q,style:{left:`50%`,top:K(u,0),transform:`translate(-50%, -50%)${z===1?``:` scale(${z})`}`},elementRef:f,onPointerDown:p,onContextMenu:m,onClick:S}),re]})}function q({href:e,children:t}){return(0,I.jsx)(`a`,{href:e,className:`underline decoration-white/30 underline-offset-2 hover:decoration-white/60`,onClick:t=>{t.preventDefault(),e!==void 0&&_(e)},onPointerDown:e=>{e.stopPropagation()},children:t})}var J=q;function le({turns:e}){let t=(0,F.useRef)(null);return(0,F.useEffect)(()=>{let e=t.current;e&&(e.scrollTop=e.scrollHeight)},[e]),(0,I.jsx)(`div`,{ref:t,className:`relative flex flex-col gap-1.5 overflow-y-auto px-3 pt-3 pb-1 select-text`,style:{maxHeight:W},children:e.map((e,t)=>{let n=e.role===`user`;return(0,I.jsx)(`div`,{className:`flex shrink-0 ${n?`justify-end`:`justify-start`}`,children:n?(0,I.jsx)(`p`,{className:`max-w-[80%] rounded-lg bg-white/[0.08] px-2.5 py-1.5 text-[12px] leading-[1.45] whitespace-pre-wrap text-white/75`,children:e.text}):(0,I.jsx)(`div`,{"data-theme":`dark`,className:`companion-markdown min-w-0 text-[12px] leading-[1.45] text-white/85`,children:(0,I.jsx)(S,{content:e.text,linkComponent:J})})},`${e.role}-${t}`)})})}function ue({assistantName:e,watching:t,onSubmit:r,onCancel:i,onWatch:a}){let{t:o}=n(),[s,c]=(0,F.useState)(``),l=(0,F.useRef)(null),u=s.trim();(0,F.useEffect)(()=>{l.current?.focus()},[]);let d=()=>{u!==``&&(c(``),r?.(u))};return(0,I.jsxs)(`div`,{className:`relative flex min-w-0 flex-1 items-center gap-1`,children:[(0,I.jsx)(`input`,{ref:l,type:`text`,value:s,placeholder:o(`companionSurface.messagePlaceholder`,{name:e}),onChange:e=>{c(e.target.value)},onKeyDown:e=>{if(e.key===`Enter`){e.preventDefault(),d();return}e.key===`Escape`&&(e.preventDefault(),i?.())},onPointerDown:e=>{e.stopPropagation()},className:`min-w-0 flex-1 bg-transparent text-[12px] text-white/85 select-text placeholder:text-white/40 focus:outline-none`}),t&&(0,I.jsx)(Z,{onWatch:a}),(0,I.jsx)(`button`,{type:`button`,"aria-label":o(u===``?`companionSurface.goBack`:`companionSurface.send`),title:o(u===``?`companionSurface.goBack`:`companionSurface.send`),onClick:u===``?i:d,onPointerDown:e=>{e.stopPropagation()},className:`grid size-7 shrink-0 place-items-center rounded-full bg-white/10 text-white/85 transition-colors hover:bg-white/20`,children:u===``?(0,I.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}):(0,I.jsx)(g,{className:`size-3.5`,"aria-hidden":!0})})]})}function de({accentHex:e,avatarSrc:n,character:r,busy:i=!1,attentive:a=!1,edge:o,style:s,elementRef:c,onPointerDown:l,onContextMenu:u,onClick:d}){let f=t();return(0,I.jsxs)(`div`,{className:`absolute grid size-11 cursor-grab place-items-center active:cursor-grabbing`,style:s,ref:c,onPointerDown:l,onContextMenu:u,onClick:d,children:[o,(0,I.jsxs)(`div`,{className:`companion-avatar-bob relative grid place-items-center`,style:{animation:f?`none`:void 0},children:[(0,I.jsx)(`span`,{className:`companion-glow absolute size-10 rounded-full blur-lg`,style:{background:e,animation:f?`none`:void 0},"aria-hidden":!0}),r===void 0?n===void 0?(0,I.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,I.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,I.jsx)(`div`,{className:`relative drop-shadow-[0_1px_3px_rgba(0,0,0,0.55)]`,children:(0,I.jsx)(k,{components:P,traits:r,size:V,isAssistantBusy:i,attentive:a})})]})]})}function fe({spotlight:e,watching:t=!1,watchEnabled:r=!1,onTalk:i,onType:a,onWatch:o}){let{t:c}=n();return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(Q,{icon:(0,I.jsx)(h,{className:`size-4`}),label:c(`companionSurface.talk`),revealLabel:!0,active:e===`talk`,onClick:i}),(0,I.jsx)(Q,{icon:(0,I.jsx)(p,{className:`size-4`}),label:c(`companionSurface.type`),revealLabel:!0,active:e===`type`,onClick:a}),r?(0,I.jsx)(Q,{icon:(0,I.jsx)(s,{className:`size-4`}),label:c(`companionSurface.teach`),revealLabel:!0,pressed:t,onClick:o}):t&&(0,I.jsx)(Z,{onWatch:o})]})}function pe({retro:e,onWatchRetro:t}){let{t:r}=n();return e===`pending`?(0,I.jsx)(`span`,{className:`ml-1 shrink-0 text-[12px] text-white/85`,children:r(`companionSurface.summarizing`)}):(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(Q,{icon:(0,I.jsx)(u,{className:`size-4`}),label:r(`companionSurface.showSummary`),showLabel:!0,onClick:()=>{t?.(!0)}}),(0,I.jsx)(Q,{icon:(0,I.jsx)(m,{className:`size-4`}),label:r(`companionSurface.notNow`),showLabel:!0,onClick:()=>{t?.(!1)}})]})}function Y({call:e,watching:t,onControl:r,onWatch:i}){let{t:a}=n();if(e!==void 0&&e.approvalRequestId!==``)return(0,I.jsx)(X,{detail:e.detail,requestId:e.approvalRequestId,onControl:r});let s=e===void 0?`Listening`:e.detail||e.label,l=e?.muted??!1,u=e?.outputMuted??!1;return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`span`,{className:`ml-1 max-w-[120px] shrink-0 truncate text-[12px] text-white/85`,children:s}),t&&(0,I.jsx)(Z,{onWatch:i}),(0,I.jsx)(Q,{icon:l?(0,I.jsx)(c,{className:`size-4`}):(0,I.jsx)(o,{className:`size-4`}),label:a(l?`companionSurface.unmuteMicrophone`:`companionSurface.muteMicrophone`),onClick:()=>{r?.(l?`unmuteMicrophone`:`muteMicrophone`)}}),(0,I.jsx)(Q,{icon:u?(0,I.jsx)(d,{className:`size-4`}):(0,I.jsx)(f,{className:`size-4`}),label:a(u?`companionSurface.unmuteAssistant`:`companionSurface.muteAssistant`),onClick:()=>{r?.(u?`unmuteAssistantAudio`:`muteAssistantAudio`)}}),(0,I.jsx)(Q,{icon:(0,I.jsx)(m,{className:`size-4`,strokeWidth:2.5}),label:a(`companionSurface.endSession`),tone:`negative`,onClick:()=>{r?.(`endSession`)}})]})}function X({detail:e,requestId:t,onControl:r}){let{t:i}=n();return(0,I.jsxs)(I.Fragment,{children:[e!==``&&(0,I.jsx)(`span`,{className:`ml-1 max-w-[120px] shrink-0 truncate text-[12px] text-white/85`,children:e}),(0,I.jsx)(Q,{icon:(0,I.jsx)(a,{className:`size-4`}),label:i(`companionSurface.allow`),showLabel:!0,tone:`positive`,onClick:()=>{r?.(`approveRequest`,t)}}),(0,I.jsx)(Q,{icon:(0,I.jsx)(m,{className:`size-4`}),label:i(`companionSurface.deny`),showLabel:!0,tone:`negative`,onClick:()=>{r?.(`denyRequest`,t)}})]})}function Z({onWatch:e}){let{t}=n();return(0,I.jsx)(Q,{icon:(0,I.jsx)(l,{className:`size-4`}),label:t(`companionSurface.stopTeaching`),onClick:e})}function Q({icon:e,label:t,tone:n,showLabel:r=!1,revealLabel:i=!1,active:a=!1,pressed:o,onClick:s}){let c=a||o===!0;return(0,I.jsxs)(`button`,{type:`button`,"aria-label":t,"aria-pressed":o,title:r||i?void 0:t,onClick:s,onPointerDown:e=>{e.stopPropagation()},className:`group flex h-7 shrink-0 items-center gap-1.5 rounded-full px-2 text-[12px] transition-colors hover:bg-white/15 ${c?`bg-white/15`:``} ${n===`negative`?`text-[#ff6b6b]`:n===`positive`?`text-[#5ee08a]`:`text-white/85`}`,children:[e,r&&(0,I.jsx)(`span`,{children:t}),i&&(0,I.jsx)(`span`,{"data-label":c?`pinned`:`hover`,className:c?``:`hidden group-hover:inline`,children:t})]})}var me=3;function $(){let[e,t]=(0,F.useState)(`right`),[n,r]=(0,F.useState)(`up`),[i,a]=(0,F.useState)(v),[o,s]=(0,F.useState)(v),[c,l]=(0,F.useState)(),[u,d]=(0,F.useState)(),[f,p]=(0,F.useState)(null),[m,h]=(0,F.useState)([]),[g,_]=(0,F.useState)(``),[b,S]=(0,F.useState)(!1),[k,N]=(0,F.useState)(!1),[P,ae]=(0,F.useState)(void 0),[L,se]=(0,F.useState)(0),[ce,B]=(0,F.useState)(!1),[V,H]=(0,F.useState)(!1),[U,W]=(0,F.useState)(null),[G,q]=(0,F.useState)(!1),[J,le]=(0,F.useState)(!1),ue=(0,F.useRef)(!1),de=(0,F.useRef)(null),fe=(0,F.useRef)(null),pe=(0,F.useRef)(null),Y=(0,F.useRef)(null),X=(0,F.useRef)(null),Z=(0,F.useRef)(!1);(0,F.useEffect)(()=>{let e=e=>{t(e.growth),r(e.cardGrowth),a(e.avatarBox),s(e.optionsBox??e.avatarBox),l(e.avatarBase64===void 0?void 0:`data:image/png;base64,${e.avatarBase64}`),d(e.character),p(e.call),h(e.turns),_(e.assistantName),S(e.working),N(e.watching===!0),ae(e.watchRetro),se(e.captureCount??0),B(e.watchEnabled===!0),W(e.intro)},n=ee(e);return T().then(t=>{t&&e(t)}),n},[]),(0,F.useEffect)(()=>()=>{A(!1),E(!1)},[]),(0,F.useEffect)(()=>{E(G)},[G]);let Q=e=>{ue.current!==e&&(ue.current=e,A(e))},$=U!==null&&!G&&f===null,he=(0,F.useRef)($);(0,F.useEffect)(()=>{he.current&&!$&&(H(!1),Q(!1)),he.current=$},[$]);let ge=()=>{q(!1),H(!1),Q(!1),le(!1)},_e=z(U),ve=G?`typing`:f===null?k?`watching`:P===void 0?_e??(V?`hover`:`resting`):`summary`:`call`,ye=e=>{if(Y.current!==null&&e.buttons===0&&(Y.current=null),Y.current!==null){let{x:t,y:n}=Y.current;x(e.screenX-t,e.screenY-n),Y.current={x:e.screenX,y:e.screenY};let r=X.current;r!==null&&Math.abs(e.screenX-r.x)+Math.abs(e.screenY-r.y)>me&&(Z.current=!0);return}let t=fe.current;if(!t)return;let r=de.current?.getBoundingClientRect()??null,i=M({x:e.clientX,y:e.clientY},{avatar:t.getBoundingClientRect(),pill:r!==null&&r.width>0?r:null,rowHeight:o,cardGrowth:n}),a=pe.current,s=a!==null&&j(a.getBoundingClientRect(),e.clientX,e.clientY);H(i),Q(i||s)},be=(f!==null&&/^#[0-9a-f]{6}$/i.test(f.accentHex)?f.accentHex:void 0)??ne(null,u??null)??void 0;return(0,I.jsx)(`div`,{className:`relative h-screen w-screen bg-transparent`,onMouseMove:ye,onMouseUp:()=>{Y.current=null},onPointerCancel:()=>{Y.current=null,H(!1),Q(!1)},onMouseLeave:()=>{Y.current===null&&(H(!1),Q(!1))},children:(0,I.jsx)(K,{phase:ve,growth:e,cardGrowth:n,avatarBox:i,optionsBox:o,avatarSrc:c,character:u,hovered:V,accentHex:be,turns:J?m:[],assistantName:g===``?void 0:g,call:f??void 0,working:b,watching:k,watchRetro:P,onWatchRetro:C,captureCount:L,watchEnabled:ce,spotlight:R(U),intro:!$||U===null?null:(0,I.jsx)(oe,{beat:U,growth:e,cardGrowth:n,avatarBox:i,optionsBox:o,accentHex:be,assistantName:g===``?void 0:g,cardRef:pe,onAdvance:w}),rootRef:de,avatarRef:fe,onSurfacePointerDown:e=>{e.button===0&&e.target.closest(`button, a, input, textarea, select, [contenteditable='true']`)===null&&(e.currentTarget.setPointerCapture(e.pointerId),Y.current={x:e.screenX,y:e.screenY},X.current={x:e.screenX,y:e.screenY},Z.current=!1)},onSurfaceContextMenu:e=>{let t=e.target?.closest(`input, textarea, [contenteditable='true']`)!==null,n=(window.getSelection()?.toString().trim().length??0)>0;t||n||(e.preventDefault(),re())},onAvatarClick:()=>{Z.current||y()},onTalk:ie,onWatch:O,onType:()=>{q(!0)},onSubmit:e=>{J||(h([]),le(!0)),D(e,!J)},onCancelTyping:ge,onControl:(e,t)=>{te(t===void 0?{action:e}:{action:e,requestId:t})}})})}export{$ as CompanionSurfacePage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Jn as t,er as n,j as r}from"./vendor-kNpRDQWe.js";import{b as i,f as a,g as o,t as s}from"./react-DPM_L_aA.js";import{on as c,tn as l,v as u}from"./icons-CSdHOix6.js";import{Y as d,by as f,iv as p,ty as m,vy as h,yy as g}from"./index-D_aS89pX.js";import{n as _}from"./a2a-invite-DqSTflKa.js";import{r as v}from"./contacts-gateway-CQ4flwOK.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:d()})}function w({assistantId:e}){let{t:i}=r(`contacts`),s=a(),d=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&&(d.invalidateQueries({predicate:e=>x(e.queryKey)}),e.alreadyConnected?m(i(`connectPage.alreadyConnected`)):m(i(`connectPage.connected`)),s(p.contacts.root))}}),E=(0,y.useCallback)(()=>{s(p.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)(h,{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)(g,{variant:`title-small`,children:i(`connectPage.title`)})]}),(0,b.jsx)(g,{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)(u,{className:`h-4 w-4 shrink-0`}),(0,b.jsx)(g,{variant:`body-small-default`,children:O})]}),(0,b.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,b.jsx)(f,{variant:`primary`,onClick:D,disabled:T.isPending,children:T.isPending?(0,b.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(l,{className:`h-4 w-4 animate-spin`}),i(`actions.connecting`)]}):i(`actions.connect`)}),(0,b.jsx)(f,{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)(h,{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)(u,{className:`h-6 w-6`,style:{color:`var(--system-negative-strong)`}}),(0,b.jsx)(g,{variant:`title-small`,children:i(`connectPage.invalidTitle`)})]}),(0,b.jsx)(g,{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)(f,{variant:`primary`,onClick:E,children:i(`connectPage.goToContacts`)})})]})})})}export{C as ConnectPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{N as e,j as t}from"./vendor-kNpRDQWe.js";import{t as n}from"./react-DPM_L_aA.js";import{iv as r,ly as i,rv as a,vy as o}from"./index-D_aS89pX.js";import{t as s}from"./setting-row-B5QZHkoF.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 o=d[t];return(0,c.jsx)(i,{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:o.text},components:{link:(0,c.jsx)(`a`,{href:a(o.href),target:`_blank`,rel:`noreferrer`,className:`underline`})}})}),"aria-label":o.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:a,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)(o,{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:a,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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={save:`保存`,saving:`正在保存…`,merge:`合并…`,merging:`正在合并…`,delete:`删除`,deleting:`正在删除…`,connect:`连接`,connecting:`正在连接…`,manage:`管理`,disconnect:`断开连接`,disconnecting:`正在断开连接…`,cancel:`取消`,back:`返回`,verify:`验证`,verifying:`正在验证…`,revoke:`撤销`},t={slack:`Slack`,telegram:`Telegram`,whatsapp:`WhatsApp`,a2a:`A2A`,phone:`电话`,email:`电子邮件`,discord:`Discord`},n={nameLabel:`名称`,notesLabel:`备注`,draftName:`新建联系人`,interactions:`{count, plural, other {# 次互动}}`,mergeBlockedNoCandidates:`没有其他联系人可供合并`,mergeBlockedUnsaved:`请先保存更改再合并`},r={title:`联系人`,mergeSucceeded:`联系人已合并`,mergeFailed:`合并联系人失败`,createFailed:`创建联系人失败`,deleteFailed:`删除联系人失败`,saveFailed:`保存联系人失败`,verifyFailed:`验证渠道失败`,rosterLoadFailed:`无法加载工作区名册。请检查 Slack 连接并重试。`,emptyBody:`选择一个联系人`},i={heading:`条目`,addAriaLabel:`添加联系人`,searchPlaceholder:`搜索联系人`,noMatches:`没有匹配的联系人`,add:`添加联系人`,verified:`已验证`,unverified:`未验证`,you:`您`,youNamed:`{name} (您)`,assistantFallback:`您的助手`},a={namePlaceholder:`为此人命名`,notesPlaceholder:`关于此人的可选备注,AI 将会考虑这些备注`,mergeBlockedUnsavedDraft:`请先保存此联系人再合并`,delete:`删除联系人`,linkedAccountsTitle:`关联账户`,linkedAccountsSubtitle:`助手识别此联系人的地方。关联您认识的账户,邀请您不认识的账户。`,deleteConfirmTitle:`删除 {name}?`,deleteConfirmMessage:`此操作将永久删除此联系人及其所有渠道。此操作无法撤消。`},o={title:`权限`,subtitle:`此联系人无需征求您同意即可承担的最高风险。`,inheritLabel:`继承默认设置`,inheritDescription:`此联系人遵循房间和信任等级设置。`,saveFailed:`更新权限失败`,preset:{none:`严格`,low:`保守`,medium:`宽松`,high:`完全访问`},description:{none:`在执行操作前始终询问。不自动批准任何操作。`,low:`自动批准低风险操作,例如网页搜索以及在其工作区中读写文件。`,medium:`自动批准低风险和中等风险操作,例如更改其工作区之外的文件。`,high:`自动批准所有操作,包括高风险和无法识别的命令。您的助手将永远不会请求权限。`}},s={namePlaceholder:`您的姓名`,notesPlaceholder:`关于您自己的备注,AI 将会考虑这些备注`,channelsTitle:`渠道`,channelsSubtitle:`验证后,当您通过这些渠道发送消息时,您的助手将识别出您。`,setupLabel:`验证我`},c={title:`{name} (您的助手)`,channelsTitle:`渠道`,channelsSubtitle:`{name} 可联系到的地方。`},l={disconnectConfirmTitle:`断开 {channel} 的连接?`,disconnectConfirmMessage:`此操作将清除此渠道的存储凭据。您可以稍后重新连接。`},u={linked:`已关联为 @{username}`,linkFailed:`关联账户失败`},d={invalidTitle:`无效的邀请链接`,invalidBody:`您访问的链接缺少必要的参数,无法使用。`,goToContacts:`前往联系人`,title:`连接助手`,body:`接受此链接将在您的助手与发送者的助手之间建立受信任的 A2A 连接。`,alreadyConnected:`已连接`,connected:`已连接!`,errorExpired:`此邀请链接已过期或已被使用。`,errorAlreadyRedeemed:`此邀请已被其他人领取。`,errorSenderNotFound:`找不到发送者的助手。`,errorNotPlatformManaged:`A2A 邀请链接仅支持平台托管的助手。`,errorGeneric:`发生了一些错误。请重试。`},f={connected:`已连接`,verified:`已验证`},p={verifyConfirmTitle:`验证 {channel}`,verifyConfirmMessageContact:`这将把此联系人的 {channel} 渠道标记为已验证。当他们通过此渠道联系您时,您的助手将识别他们。`,verifyConfirmMessageGuardian:`这将把您的 {channel} 渠道标记为已验证。当您通过此渠道联系时,您的助手将识别您。`,verifyAddressLabel:`地址`,verifyAddressPlaceholder:`+12025550123`,verifyAddressMessageContact:`输入此联系人在 {channel} 上使用的标识符。当他们通过此渠道联系您时,您的助手将识别他们。`,verifyAddressMessageGuardian:`输入您在 {channel} 上使用的标识符。当您通过此渠道联系时,您的助手将识别您。`,revokeConfirmTitle:`撤销 {channel}`,revokeConfirmMessage:`这将断开已验证的渠道。该联系人需要重新验证才能再次使用此渠道。`,linkAccount:`关联账户`,setupDefault:`邀请`,loadFailed:`无法加载渠道。请检查您的网络连接并重试。`},m={title:`关联 {channel} 账户`,description:`搜索您的 {channel} 工作区并选择 <contact>{name}</contact> 的账户。`,searchPlaceholder:`按姓名或 @句柄搜索`,searchAriaLabel:`搜索 {channel} 工作区账户`,loading:`正在加载工作区成员…`,noMembers:`未找到工作区成员。`,noMatches:`无匹配成员。`,linking:`正在关联…`,guardianLinkNote:`选择此账户会将其标记为 <emphasis>监护人关联</emphasis>:您为身份担保,无需握手验证。`,inviteInstead:`或者发送邀请`},h={titlePicked:`将“{donor}”合并到 {survivor}?`,titlePicking:`将另一个联系人合并到 {survivor}`,descriptionPicked:`被合并联系人的渠道和备注将转移过来。被合并的联系人将被删除。`,descriptionPicking:`您选择的联系人将被删除。其渠道和备注将添加到此联系人。`,confirm:`合并`,searchPlaceholder:`搜索联系人`,listAriaLabel:`选择要合并的联系人`,empty:`没有其他联系人可供合并。`,donorDeleted:`<donor>“{donor}”</donor> 将被删除。`,channelsMoved:`{count, plural, =0 {没有新渠道会转移到 {survivor}。} one {# 个渠道将转移到 {survivor}:{channels}。} other {# 个渠道将转移到 {survivor}:{channels}。}}`,duplicatesSkipped:`{count, plural, one {有 # 个重复渠道已存在于 {survivor}(已跳过)。} other {有 # 个重复渠道已存在于 {survivor}(已跳过)。}}`,notesAppended:`被合并联系人的备注将被附加。`,irreversible:`此操作无法撤销。`},g={you:`您`,youNamed:`{name} (您)`,thisContact:`此联系人`},_={actions:e,channelType:t,contact:n,contactsPage:r,contactsList:i,contactDetailView:a,contactPermissions:o,guardianDetailView:s,assistantChannelsDetail:c,assistantContactChannels:l,accountLink:u,connectPage:d,channelStatus:f,contactChannelsSection:p,linkAccountDialog:m,contactMergeDialog:h,survivorName:g};export{u as accountLink,e as actions,c as assistantChannelsDetail,l as assistantContactChannels,f as channelStatus,t as channelType,d as connectPage,n as contact,p as contactChannelsSection,a as contactDetailView,h as contactMergeDialog,o as contactPermissions,i as contactsList,r as contactsPage,_ as default,s as guardianDetailView,m as linkAccountDialog,g as survivorName};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Eu as e,Lm as t,Tu as n,_v as r,gv as i,wu as a,yv as o}from"./index-D_aS89pX.js";async function s(t,n){let{data:a,error:s,response:c}=await e({path:{assistant_id:t},body:n,throwOnError:!1});if(r(c,s,`Failed to save contact`),!c.ok||!a?.contact)throw new i(c.status,o(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(r(s,a,`Failed to delete contact`),!s.ok&&s.status!==204)throw new i(s.status,o(a,s,`Failed to delete contact`))}async function l(e,t){let{error:n,response:s}=await a({path:{assistant_id:e,channel_id:t},throwOnError:!1});if(r(s,n,`Failed to verify channel`),!s.ok)throw new i(s.status,o(n,s,`Failed to verify channel`))}async function u(e,t,n){let r=(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(!r)throw new i(409,`That account is already linked to another contact.`);if(r.status===`blocked`)throw new i(409,`That account is blocked for this contact. Unblock it before linking.`);await l(e,r.id)}async function d(e,n){let{data:a,error:s,response:c}=await t.post({url:`/v1/assistants/{assistant_id}/a2a/invites/redeem/`,path:{assistant_id:e},body:{sender_assistant_id:n.senderAssistantId,token:n.token},headers:{"Content-Type":`application/json`},throwOnError:!1});if(r(c,s,`Failed to redeem A2A invite`),!c.ok)throw new i(c.status,o(s,c,`Failed to redeem A2A invite`));return{success:a?.success??!0,alreadyConnected:a?.already_connected,error:a?.error,errorCode:a?.error_code}}export{l as a,s as i,u as n,d as r,c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={save:`儲存`,saving:`正在儲存…`,merge:`合併…`,merging:`正在合併…`,delete:`刪除`,deleting:`正在刪除…`,connect:`連線`,connecting:`正在連線…`,manage:`管理`,disconnect:`中斷連線`,disconnecting:`正在中斷連線…`,cancel:`取消`,back:`返回`,verify:`驗證`,verifying:`正在驗證…`,revoke:`撤銷`},t={slack:`Slack`,telegram:`Telegram`,whatsapp:`WhatsApp`,a2a:`A2A`,phone:`電話`,email:`電子郵件`,discord:`Discord`},n={nameLabel:`名稱`,notesLabel:`備註`,draftName:`新增聯絡人`,interactions:`{count, plural, other {# 次互動}}`,mergeBlockedNoCandidates:`沒有其他聯絡人可供合併`,mergeBlockedUnsaved:`請先儲存您的變更再合併`},r={title:`聯絡人`,mergeSucceeded:`聯絡人已合併`,mergeFailed:`合併聯絡人失敗`,createFailed:`建立聯絡人失敗`,deleteFailed:`刪除聯絡人失敗`,saveFailed:`儲存聯絡人失敗`,verifyFailed:`驗證頻道失敗`,rosterLoadFailed:`無法載入工作區名單。請檢查 Slack 連線並重試。`,emptyBody:`選取一個聯絡人`},i={heading:`項目`,addAriaLabel:`新增聯絡人`,searchPlaceholder:`搜尋聯絡人`,noMatches:`沒有符合的聯絡人`,add:`新增聯絡人`,verified:`已驗證`,unverified:`未驗證`,you:`您`,youNamed:`{name} (您)`,assistantFallback:`您的助理`},a={namePlaceholder:`為此人命名`,notesPlaceholder:`關於此人的選填備註,AI 將會納入考量`,mergeBlockedUnsavedDraft:`請先儲存此聯絡人再合併`,delete:`刪除聯絡人`,linkedAccountsTitle:`已連結的帳號`,linkedAccountsSubtitle:`助理辨識此聯絡人的地方。連結您認識的帳號,邀請您不認識的帳號。`,deleteConfirmTitle:`刪除 {name}?`,deleteConfirmMessage:`這將永久刪除此聯絡人及其所有頻道。此動作無法復原。`},o={title:`權限`,subtitle:`此聯絡人無需徵求您同意即可執行的最高風險動作。`,inheritLabel:`繼承預設值`,inheritDescription:`此聯絡人將遵循房間和信任等級設定。`,saveFailed:`更新權限失敗`,preset:{none:`嚴格`,low:`保守`,medium:`寬鬆`,high:`完全存取`},description:{none:`執行動作前一律詢問。不自動核准任何動作。`,low:`自動核准低風險動作,例如網路搜尋以及在其工作區中讀寫檔案。`,medium:`自動核准低風險和中等風險動作,例如變更其工作區之外的檔案。`,high:`自動核准所有動作,包括高風險和無法辨識的指令。您的助理將永遠不會要求權限。`}},s={namePlaceholder:`您的名稱`,notesPlaceholder:`關於您自己的備註,AI 將會納入考量`,channelsTitle:`頻道`,channelsSubtitle:`驗證後,當您從這些頻道傳送訊息時,您的助理將會辨識出您。`,setupLabel:`驗證我`},c={title:`{name} (您的助理)`,channelsTitle:`頻道`,channelsSubtitle:`{name} 可聯繫到的地方。`},l={disconnectConfirmTitle:`中斷 {channel} 的連線?`,disconnectConfirmMessage:`這將清除此頻道的儲存憑證。您可以稍後重新連線。`},u={linked:`已連結為 @{username}`,linkFailed:`連結帳號失敗`},d={invalidTitle:`無效的邀請連結`,invalidBody:`您所使用的連結缺少必要的參數,因此無法使用。`,goToContacts:`前往聯絡人`,title:`連結助理`,body:`接受此連結將在您的助理與寄件者的助理之間建立受信任的 A2A 連線。`,alreadyConnected:`已連線`,connected:`已連線!`,errorExpired:`此邀請連結已過期或已被使用。`,errorAlreadyRedeemed:`此邀請已被其他人領取。`,errorSenderNotFound:`找不到寄件者的助理。`,errorNotPlatformManaged:`A2A 邀請連結僅支援平台託管的助理。`,errorGeneric:`發生錯誤。請再試一次。`},f={connected:`已連線`,verified:`已驗證`},p={verifyConfirmTitle:`驗證 {channel}`,verifyConfirmMessageContact:`這會將此聯絡人的 {channel} 頻道標記為已驗證。當他們透過此頻道聯絡時,您的助理將會辨識他們。`,verifyConfirmMessageGuardian:`這會將您的 {channel} 頻道標記為已驗證。當您透過此頻道聯絡時,您的助理將會辨識您。`,verifyAddressLabel:`地址`,verifyAddressPlaceholder:`+12025550123`,verifyAddressMessageContact:`輸入此聯絡人在 {channel} 上使用的識別碼。當他們透過此頻道聯絡時,您的助理將會辨識他們。`,verifyAddressMessageGuardian:`輸入您在 {channel} 上使用的識別碼。當您透過此頻道聯絡時,您的助理將會辨識您。`,revokeConfirmTitle:`撤銷 {channel}`,revokeConfirmMessage:`這將會中斷已驗證的頻道。該聯絡人需要重新驗證才能再次使用此頻道。`,linkAccount:`連結帳號`,setupDefault:`邀請`,loadFailed:`無法載入頻道。請檢查您的連線並再試一次。`},m={title:`連結 {channel} 帳號`,description:`搜尋您的 {channel} 工作區並選擇 <contact>{name}</contact> 的帳號。`,searchPlaceholder:`依名稱或 @帳號搜尋`,searchAriaLabel:`搜尋 {channel} 工作區帳號`,loading:`正在載入工作區成員…`,noMembers:`找不到工作區成員。`,noMatches:`無符合成員。`,linking:`正在連結…`,guardianLinkNote:`選擇此帳號會將其標記為 <emphasis>監護人連結</emphasis>:您為身份擔保,無需握手驗證。`,inviteInstead:`或者改為傳送邀請`},h={titlePicked:`將「{donor}」合併到 {survivor}?`,titlePicking:`將另一個聯絡人合併到 {survivor}`,descriptionPicked:`合併聯絡人的頻道和備註將會移轉。該合併聯絡人將會被刪除。`,descriptionPicking:`您選擇的聯絡人將會被刪除。其頻道和備註將會新增到此聯絡人。`,confirm:`合併`,searchPlaceholder:`搜尋聯絡人`,listAriaLabel:`選擇要合併的聯絡人`,empty:`沒有其他聯絡人可供合併。`,donorDeleted:`<donor>「{donor}」</donor> 將會被刪除。`,channelsMoved:`{count, plural, =0 {沒有新的頻道會移轉到 {survivor}。} one {# 個頻道將會移轉到 {survivor}:{channels}。} other {# 個頻道將會移轉到 {survivor}:{channels}。}}`,duplicatesSkipped:`{count, plural, one {有 # 個重複頻道已存在於 {survivor} (已跳過)。} other {有 # 個重複頻道已存在於 {survivor} (已跳過)。}}`,notesAppended:`合併聯絡人的備註將會附加。`,irreversible:`此操作無法復原。`},g={you:`您`,youNamed:`{name} (您)`,thisContact:`此聯絡人`},_={actions:e,channelType:t,contact:n,contactsPage:r,contactsList:i,contactDetailView:a,contactPermissions:o,guardianDetailView:s,assistantChannelsDetail:c,assistantContactChannels:l,accountLink:u,connectPage:d,channelStatus:f,contactChannelsSection:p,linkAccountDialog:m,contactMergeDialog:h,survivorName:g};export{u as accountLink,e as actions,c as assistantChannelsDetail,l as assistantContactChannels,f as channelStatus,t as channelType,d as connectPage,n as contact,p as contactChannelsSection,a as contactDetailView,h as contactMergeDialog,o as contactPermissions,i as contactsList,r as contactsPage,_ as default,s as guardianDetailView,m as linkAccountDialog,g as survivorName};
|
|
@@ -0,0 +1 @@
|
|
|
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-kNpRDQWe.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{J as p,Jt as m,Mr as h,Qr as g,Rt as _,_t as v,bn as y,fi as b,g as x,on as S,pi as C,pt as w,q as T,st as E,tn as D,xi as O}from"./icons-CSdHOix6.js";import{t as k}from"./ellipsis-vertical-npNyglhR.js";import{$a as ee,F as A,Fu as te,Gv as j,Ms as ne,Qu as M,W_ as re,Xu as ie,Y as ae,Yv as N,Zu as oe,ai as se,by as P,dy as F,ey as I,h as ce,ii as L,iv as le,my as R,nf as ue,qm as de,ri as fe,ry as z,tf as pe,ti as B,ty as me,vs as V,vy as H,yu as he,yy as U}from"./index-D_aS89pX.js";import{t as W}from"./detail-card-CUnVRct3.js";import{n as ge,r as _e,t as ve}from"./use-side-list-room-C7h2iBrD.js";import{c as G,i as ye,n as be,r as K,t as xe}from"./use-invite-link-dialog-BIk7uhnC.js";import{a as Se,i as Ce,n as we,t as Te}from"./contacts-gateway-CQ4flwOK.js";var Ee=O(`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=O(`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)(I,{open:a!==null,title:i(`assistantContactChannels.disconnectConfirmTitle`,{channel:a?L(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}=se(e.health);return(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,Y.jsx)(B,{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:L(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)(P,{variant:`danger`,onClick:r,disabled:t,children:i(t?`actions.disconnecting`:`actions.disconnect`)}):(0,Y.jsx)(P,{variant:`outlined`,asChild:!0,children:(0,Y.jsx)(u,{to:`${le.channels}?setup=${e.key}`,children:i(`actions.manage`)})})]}):n?(0,Y.jsx)(P,{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)(R,{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=ee(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=fe(e);if(i)return(0,q.createElement)(i,{size:16,className:n,style:r});switch(t){case`bot`:return(0,Y.jsx)(g,{className:n,style:r});case`hash`:return(0,Y.jsx)(y,{className:n,style:r});case`send`:return(0,Y.jsx)(T,{className:n,style:r});case`phone`:return(0,Y.jsx)(w,{className:n,style:r});case`mail`:return(0,Y.jsx)(m,{className:n,style:r});case`message-square`:return(0,Y.jsx)(_,{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)(I,{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)(h,{className:`h-3 w-3`}),l(`channelStatus.connected`)]}),s?(0,Y.jsx)(P,{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)(h,{className:`h-3 w-3`}),l(`channelStatus.verified`)]}),s?(0,Y.jsx)(P,{variant:`danger`,onClick:s,children:l(`actions.revoke`)}):null]}):u.kind===`unverified`?(0,Y.jsx)(P,{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)(P,{onClick:c,children:[(0,Y.jsx)(S,{className:`h-3.5 w-3.5`}),l(`contactChannelsSection.linkAccount`)]}):null,(0,Y.jsx)(P,{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)(I,{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)(z.Root,{open:!0,onOpenChange:e=>{e||i()},children:(0,Y.jsx)(z.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)(z.Header,{children:(0,Y.jsx)(z.Title,{children:a(`contactChannelsSection.verifyConfirmTitle`,{channel:e.label})})}),(0,Y.jsxs)(z.Body,{className:`flex flex-col gap-3`,children:[(0,Y.jsx)(z.Description,{children:a(n===`contact`?`contactChannelsSection.verifyAddressMessageContact`:`contactChannelsSection.verifyAddressMessageGuardian`,{channel:e.label})}),(0,Y.jsx)(F,{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)(z.Footer,{children:[(0,Y.jsx)(P,{variant:`outlined`,type:`button`,onClick:i,children:a(`actions.cancel`)}),(0,Y.jsx)(P,{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:A.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)(j,{value:a?.id??null,placeholder:r(`contactPermissions.inheritLabel`),disabled:t,onSelectNone:()=>{n(null)},onChange:e=>{let t=A.find(t=>t.id===e);t&&n(t.riskThreshold)},options:[{value:null,label:r(`contactPermissions.inheritLabel`)},...A.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,j=b&&e.channels.length===0&&e.interactionCount===0,ne=D||(b?y(`contact.draftName`):e.displayName),M=y(`contact.interactions`,{count:e.interactionCount});return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Y.jsx)(W,{title:ne,accessory:(0,Y.jsx)(X,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:M,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Y.jsx)(F,{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)(F,{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)(P,{type:`button`,onClick:()=>u({displayName:D,notes:O}),disabled:!te,children:y(t?`actions.saving`:`actions.save`)}),f?(0,Y.jsx)(P,{type:`button`,variant:`outlined`,onClick:f,disabled:!a||j||A||i||t||n,title:a?j?y(`contactDetailView.mergeBlockedUnsavedDraft`):A?y(`contact.mergeBlockedUnsaved`):void 0:y(`contact.mergeBlockedNoCandidates`),children:y(i?`actions.merging`:`actions.merge`)}):null,(0,Y.jsx)(P,{type:`button`,variant:`danger`,onClick:()=>{j?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)(I,{open:T,title:y(`contactDetailView.deleteConfirmTitle`,{name:ne}),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)(z.Root,{open:e,onOpenChange:e=>{!e&&!r&&s()},children:(0,Y.jsxs)(z.Content,{size:`md`,children:[(0,Y.jsxs)(z.Header,{icon:De,children:[(0,Y.jsx)(z.Title,{children:m?c(`contactMergeDialog.titlePicked`,{donor:m.displayName,survivor:h}):c(`contactMergeDialog.titlePicking`,{survivor:h})}),(0,Y.jsx)(z.Description,{children:c(m?`contactMergeDialog.descriptionPicked`:`contactMergeDialog.descriptionPicking`)})]}),(0,Y.jsxs)(z.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)(U,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:i}):null]}),(0,Y.jsx)(z.Footer,{children:m?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(P,{variant:`outlined`,onClick:()=>f(null),disabled:r,leftIcon:(0,Y.jsx)(C,{"aria-hidden":!0}),children:c(`actions.back`)}),(0,Y.jsx)(P,{variant:`danger`,onClick:()=>a(m.id),disabled:r,children:c(r?`actions.merging`:`contactMergeDialog.confirm`)})]}):(0,Y.jsx)(P,{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)(F,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:i(`contactMergeDialog.searchPlaceholder`),leftIcon:(0,Y.jsx)(p,{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)(U,{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)(N,{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)(U,{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)(H.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,Y.jsxs)(H.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)(P,{type:`button`,variant:`ghost`,iconOnly:c?(0,Y.jsx)(D,{className:`animate-spin`,"aria-hidden":!0}):(0,Y.jsx)(E,{"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)(F,{type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:d(`contactsList.searchPlaceholder`),leftIcon:(0,Y.jsx)(p,{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)(P,{type:`button`,variant:`ghost`,onClick:s,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,Y.jsx)(D,{className:`animate-spin`,"aria-hidden":!0}):(0,Y.jsx)(x,{"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)(v,{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)(N,{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)(R,{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)(F,{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)(F,{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)(P,{variant:`primary`,onClick:()=>l({displayName:S||e.displayName,notes:C}),disabled:!T,children:h(t?`actions.saving`:`actions.save`)}),u?(0,Y.jsx)(P,{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`),[m,h]=(0,q.useState)(``);(0,q.useEffect)(()=>{e&&h(``)},[e]);let g=(0,q.useMemo)(()=>dt(i??[],m),[i,m]),_=c!=null;return(0,Y.jsx)(z.Root,{open:e,onOpenChange:e=>!e&&u(),children:(0,Y.jsxs)(z.Content,{size:`sm`,children:[(0,Y.jsxs)(z.Header,{children:[(0,Y.jsx)(z.Title,{children:f(`linkAccountDialog.title`,{channel:t})}),(0,Y.jsx)(z.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)(z.Body,{className:`flex flex-col gap-3`,children:[(0,Y.jsx)(F,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:f(`linkAccountDialog.searchPlaceholder`),"aria-label":f(`linkAccountDialog.searchAriaLabel`,{channel:t}),leftIcon:(0,Y.jsx)(p,{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)(z.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)(P,{variant:`link`,className:`shrink-0`,onClick:d,disabled:_,children:[f(`linkAccountDialog.inviteInstead`),(0,Y.jsx)(b,{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),me.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=he.use.a2aChannel(),c=re.use.name(),u=a(),[f]=l(),p=f.get(`setup`),m=p&&ne(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=ee(c),O=(0,q.useMemo)(()=>({path:{assistant_id:e}}),[e]),k=oe(O),A=i({...ie(O),enabled:!!e,select:e=>e.contacts}),j=be({assistantId:e,onStartSetupConversation:t}),ae=i({...te({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await de({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}),N=ae.data??gt,se=ae.isError,P=A.data,F=(0,q.useMemo)(()=>P?.find(e=>e.role===`guardian`)??null,[P]),I=(0,q.useMemo)(()=>P?.filter(e=>e.role!==`guardian`)??[],[P]),L=(0,q.useMemo)(()=>h.kind===`contact`?P?.find(e=>e.id===h.contactId)??null:null,[P,h]),R=(0,q.useMemo)(()=>!P||!L?[]:P.filter(e=>e.id!==L.id&&e.role!==`guardian`),[P,L]),fe=R.length>0,z=(0,q.useRef)(!!m);(0,q.useEffect)(()=>{z.current||F&&(z.current=!0,g({kind:`contact`,contactId:F.id}))},[F]);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=>{M(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)=>{M(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=>{M(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=>{M(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=ue({onMutate:async()=>{await u.cancelQueries({queryKey:k})},onSuccess:(e,t)=>{let n=e.contact,i=t.body.mergeId;n&&(M(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),me.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=pe({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=N.find(t=>t.id===e);if(!n||Le(n))return;let r=n.setupMessages.contact;r&&t(r)},[N,t]),Pe=(0,q.useCallback)(e=>{if(!t)return;let n=N.find(t=>t.id===e);if(!n||Le(n))return;let r=n.setupMessages.guardian;r&&t(r)},[N,t]),X=n({mutationFn:t=>Se(e,t.channelId),onSuccess:()=>B(),onError:G(r(`contactsPage.verifyFailed`))}),Z=n({mutationFn:t=>{if(!L)throw Error(`No contact selected`);return we(e,{id:L.id,displayName:L.displayName},{type:t.type,address:t.address})},onSuccess:()=>B(),onError:G(r(`contactsPage.verifyFailed`))}),Ie=(0,q.useCallback)((e,t)=>{if(!L)return;let n=t?.trim();if(n){Z.mutate({type:e,address:n});return}let r=L.channels.find(t=>t.type===e&&t.status!==`revoked`);r?.address?.trim()&&X.mutate({channelId:r.id})},[L,Z,X]),Q=mt({assistantId:e,channelType:`slack`,contact:L?{id:L.id,displayName:L.displayName}:null,onLinked:B}),Re=i({...ce(e),enabled:!!e&&Q.dialogOpen,select:e=>e.users}),ze=j.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(!L)return null;let e=L;return U.isPending&&U.variables?.contactId===L.id&&(e={...e,displayName:U.variables.patch.displayName,notes:U.variables.patch.notes}),W.isPending&&W.variables?.contactId===L.id&&(e={...e,autoApproveThreshold:W.variables.autoApproveThreshold}),e},[L,U.isPending,U.variables,W.isPending,W.variables]);if(m)return(0,Y.jsx)(d,{to:`${le.channels}?setup=${m}`,replace:!0});let He={loading:A.isLoading,assistantName:D,guardian:F?{id:F.id,displayName:F.displayName.startsWith(`vellum-principal-`)?``:F.displayName,role:F.role,channelTypes:bt(F.channels,s)}:null,regularContacts:I.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:j.channels,pendingChannelKey:j.pendingChannelKey,onConnect:j.onSetup,onDisconnect:j.onDisconnect}):$?$.role===`guardian`?(0,Y.jsx)(lt,{contact:$,savePending:U.isPending,verifyPending:X.isPending||Z.isPending,mergePending:K.isPending,canMerge:fe,availableChannels:N,channelsLoadFailed:se,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:fe,availableChannels:N,channelsLoadFailed:se,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,{})}),L?(0,Y.jsx)(Qe,{open:T,survivor:L,candidates:R,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:L.id,mergeId:t}}),onClose:Oe}):null,(0,Y.jsx)(pt,{open:Q.dialogOpen,channelLabel:Ae(`slack`),contactName:L?.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=ae();return(0,Y.jsx)(_t,{assistantId:t,onStartSetupConversation:t=>{V(e,{prompt:t})}},t)}export{xt as ContactsPageRoute};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{j as t}from"./vendor-kNpRDQWe.js";import{b as n,t as r}from"./react-DPM_L_aA.js";import{Fr as i,jr as a,pn as o,tn as s}from"./icons-CSdHOix6.js";import{Zp as c,by as l,dy as u,vy as d}from"./index-D_aS89pX.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)(a,{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)(i,{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)(i,{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)(i,{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)(i,{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)(i,{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)(u,{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)(l,{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)(d.Root,{bordered:!0,elevated:!0,padding:`lg`,children:(0,b.jsx)(`div`,{className:`flex flex-col gap-4`,children:A})})})})}export{w as CredentialEntryPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={checkingTitle:`正在检查链接`,checkingBody:`正在查找此凭据请求。`,savedTitle:`凭据已保存`,savedBody:`您可以关闭此标签页并返回对话,助手可以立即使用该凭据。该值无法再次查看。`,invalidTitle:`链接无效`,invalidBody:`此凭据链接无效。请检查是否复制了完整链接,或请求一个新的链接。`,expiredTitle:`链接已过期`,expiredBody:`此凭据链接已过期。链接仅在短时间内有效,请请求一个新的链接并重新输入值。`,usedTitle:`链接已使用`,usedBody:`此凭据链接已使用。每个链接只能使用一次,如果仍需要提供值,请请求一个新的链接。`,storeFailedTitle:`链接不再有效`,storeFailedBody:`助手无法存储凭据,并且为了安全起见,此一次性链接无法重复使用。请请求一个新的链接并在那里重试。`,errorTitle:`出错了`,errorBody:`无法加载凭据请求。请刷新页面重试。`,heading:`提供凭据`,oneTimeEntry:`一次性输入`,instructions:`在下方输入秘密值。它将加密存储在助手中,永不再次显示,并且此链接一旦使用即失效。`,submit:`提交`,expiresIn:`将在 {remaining} ({time}) 后过期。`,valueLabel:`秘密值`,valuePlaceholder:`输入秘密值`},t={credentialEntry:e};export{e as credentialEntry,t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={checkingTitle:`正在檢查連結`,checkingBody:`正在查詢此憑證請求。`,savedTitle:`憑證已儲存`,savedBody:`您可以關閉此分頁並返回對話,助理可以立即使用此憑證。此值無法再次檢視。`,invalidTitle:`連結無效`,invalidBody:`此憑證連結無效。請檢查是否已完整複製連結,或要求新的連結。`,expiredTitle:`連結已過期`,expiredBody:`此憑證連結已過期。連結僅在短時間內有效,請要求新的連結並重新輸入值。`,usedTitle:`連結已使用`,usedBody:`此憑證連結已使用。每個連結僅能使用一次,如果仍需提供值,請要求新的連結。`,storeFailedTitle:`連結不再有效`,storeFailedBody:`助理無法儲存憑證,且為安全起見,此一次性連結無法重複使用。請要求新的連結並重新嘗試。`,errorTitle:`發生錯誤`,errorBody:`無法載入憑證請求。請重新整理頁面再試一次。`,heading:`提供憑證`,oneTimeEntry:`一次性輸入`,instructions:`請在下方輸入秘密值。此值將加密儲存在助理端,永不再次顯示,且此連結一旦使用即失效。`,submit:`提交`,expiresIn:`將於 {remaining} ({time}) 後過期。`,valueLabel:`秘密值`,valuePlaceholder:`輸入秘密值`},t={credentialEntry:e};export{e as credentialEntry,t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Zn as t,er as n,j as r}from"./vendor-kNpRDQWe.js";import{b as i,t as a}from"./react-DPM_L_aA.js";import{Br as o,Gn as s,J as c,Kn as l,on as u,pn as d,st as f,tn as p,tr as m,x as h}from"./icons-CSdHOix6.js";import{J as g,W_ as _,Xf as v,Y as y,ay as b,by as x,dy as S,eg as C,ey as w,fv as ee,gv as T,hv as te,ih as E,my as ne,ng as D,ov as O,q as re,rf as ie,rh as ae,ry as k,t as A,ty as j,vy as M,xy as N,yu as oe}from"./index-D_aS89pX.js";import{t as se}from"./detail-card-CUnVRct3.js";import{t as P}from"./use-supports-credentials-settings-Bmk31dUN.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(O(),{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:o}){let{t:s}=r(`settings`),c=`${e.service}:${e.field}`,l=n||i,f=[e.alias?c:null,e.createdAt?s(`credentialRow.addedMetadata`,{date:z(e.createdAt)}):null].filter(e=>!!e);return(0,L.jsx)(M.Root,{children:(0,L.jsxs)(M.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,L.jsx)(d,{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||c}),(0,L.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center`,children:(0,L.jsx)(V,{assistantId:t,credential:e})}),f.length>0&&(0,L.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-body-medium-lighter text-[var(--content-tertiary)]`,children:f.join(` · `)})]}),(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,L.jsx)(N,{content:s(`credentialRow.generateLinkLabel`),side:`top`,children:(0,L.jsx)(x,{variant:`outlined`,onClick:a,disabled:l,"aria-label":s(`credentialRow.generateLinkAriaLabel`,{name:c}),iconOnly:n?(0,L.jsx)(p,{className:`animate-spin`,"aria-hidden":!0}):(0,L.jsx)(u,{"aria-hidden":!0})})}),(0,L.jsx)(N,{content:s(`credentialRow.deleteLabel`),side:`top`,children:(0,L.jsx)(x,{variant:`dangerOutline`,onClick:o,disabled:l,"aria-label":s(`credentialRow.deleteAriaLabel`,{name:c}),iconOnly:i?(0,L.jsx)(p,{className:`animate-spin`,"aria-hidden":!0}):(0,L.jsx)(h,{"aria-hidden":!0})})})]})]})})}function V({assistantId:e,credential:t}){let{t:n}=r(`settings`),[i,a]=(0,F.useState)(null),[c,u]=(0,F.useState)(!1),[d,f]=(0,F.useState)(!1),h=(0,F.useRef)(null),g=(0,F.useRef)(0),_=`${t.service}:${t.field}`,v=(0,F.useCallback)(()=>{g.current++,a(null),u(!1),f(!1),h.current&&=(clearTimeout(h.current),null)},[]);(0,F.useEffect)(()=>{v()},[t.updatedAt,v]);let y=(0,F.useCallback)(async()=>{let r=++g.current;u(!0);try{let{data:n}=await E({path:{assistant_id:e},body:{service:t.service,field:t.field},throwOnError:!0});g.current===r&&a(n.value)}catch{g.current===r&&j.error(n(`credentialRow.revealFailedToast`,{name:_}))}finally{g.current===r&&u(!1)}},[e,t.service,t.field,_,n]),b=(0,F.useCallback)(()=>{i!=null&&D(i,{errorMessage:n(`credentialRow.copyFailedToast`),onCopied:()=>{f(!0),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>f(!1),R)}})},[i,n]),x=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:()=>x?v():void y(),disabled:c,"aria-label":n(x?`credentialRow.hideValueAriaLabel`:`credentialRow.revealValueAriaLabel`,{name:_}),title:n(x?`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)] ${x?`text-[var(--content-secondary)]`:`select-none text-[var(--content-tertiary)] blur-[3px] hover:blur-[2px]`}`,children:x?i:t.scrubbedValue}),c?(0,L.jsx)(p,{className:`h-3.5 w-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):x?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,onClick:b,"aria-label":n(`credentialRow.copyValueAriaLabel`,{name:_}),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:d?(0,L.jsx)(o,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,L.jsx)(m,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,L.jsx)(`button`,{type:`button`,onClick:v,"aria-label":n(`credentialRow.hideValueAriaLabel`,{name:_}),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)(l,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}):(0,L.jsx)(`button`,{type:`button`,onClick:()=>void y(),"aria-label":n(`credentialRow.revealValueAriaLabel`,{name:_}),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)(s,{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 C.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=y(),t=P(e),n=_.use.assistantId();return _.use.version()!==null&&n===e&&!t?(0,L.jsx)(A,{}):t?(0,L.jsx)(K,{}):null}function K(){let{t:e}=r(`settings`),i=y(),a=n(),o=v(),s=g(i),l=t({queryKey:s,queryFn:async()=>{let{data:e}=await ae({path:{assistant_id:i},body:{},throwOnError:!0});return{credentials:e.credentials,managedCredentials:e.managedCredentials}},enabled:o,retry:te}),h=(0,F.useMemo)(()=>l.data?.credentials??[],[l.data]),_=oe.use.settingsDeveloperNav(),C=(0,F.useMemo)(()=>_?l.data?.managedCredentials??[]:[],[_,l.data]),[T,E]=(0,F.useState)(!1),[O,A]=(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=ie({onSuccess:(t,n)=>{a.invalidateQueries({queryKey:s}),j.success(e(`credentialsPage.deleteSuccessToast`,{name:`${n.body.service}:${n.body.field}`}))},onError:(t,n)=>{let r=ce(t),i=h.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`}),j.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?h.filter(t=>[t.service,t.field,`${t.service}:${t.field}`,t.alias??``].join(` `).toLowerCase().includes(e)):h},[h,N]);(0,F.useEffect)(()=>{h.length<=W&&P(``)},[h.length]),(0,F.useEffect)(()=>{h.length===0&&C.length>0&&A(`managed`)},[h.length,C.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}):j.error(r.error||e(`credentialsPage.generateLinkFailedToast`))}catch(t){j.error(t instanceof Error?t.message:e(`credentialsPage.generateLinkFailedToast`))}finally{q(null)}},he=()=>{let t=G?.url;t&&D(t,{successMessage:e(`credentialsPage.linkCopiedToast`),errorMessage:e(`credentialsPage.linkCopyFailedToast`)})};if(l.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=h.length>0,Q=C.length>0,ge=h.length>W,$=O===`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)(b,{items:ve,value:O,onChange:A,ariaLabel:e(`credentialsPage.credentialSourceAriaLabel`)}):null,_e&&Z?(0,L.jsx)(x,{type:`button`,variant:`primary`,size:`regular`,onClick:()=>E(!0),leftIcon:(0,L.jsx)(f,{"aria-hidden":!0}),children:e(`credentialsPage.addButton`)}):null]}),children:$?(0,L.jsx)(`div`,{className:`space-y-2`,children:C.map(t=>(0,L.jsx)(M.Root,{children:(0,L.jsxs)(M.Body,{padding:`sm`,className:`flex items-center gap-4 px-4`,children:[(0,L.jsx)(d,{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)(ne,{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)(S,{type:`text`,value:N,onChange:e=>P(e.target.value),placeholder:e(`credentialsPage.searchPlaceholder`),"aria-label":e(`credentialsPage.searchAriaLabel`),leftIcon:(0,L.jsx)(c,{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)(d,{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)(x,{type:`button`,variant:`outlined`,size:`compact`,onClick:()=>E(!0),className:`w-full border-dashed`,leftIcon:(0,L.jsx)(f,{"aria-hidden":!0}),children:e(`credentialsPage.addCredentialButton`)})]})}),(0,L.jsx)(w,{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)(w,{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)(re,{open:T,onClose:()=>E(!1)}),(0,L.jsx)(k.Root,{open:G!==null,onOpenChange:e=>{e||K(null)},children:(0,L.jsxs)(k.Content,{size:`sm`,children:[(0,L.jsxs)(k.Header,{icon:u,children:[(0,L.jsx)(k.Title,{children:e(`credentialsPage.oneTimeLinkModalTitle`)}),(0,L.jsx)(k.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)(k.Body,{children:(0,L.jsx)(S,{label:e(`credentialsPage.linkLabel`),type:`text`,readOnly:!0,value:G?.url??``,onFocus:e=>e.currentTarget.select(),fullWidth:!0})}),(0,L.jsx)(k.Footer,{children:(0,L.jsx)(x,{type:`button`,size:`compact`,onClick:he,leftIcon:(0,L.jsx)(m,{"aria-hidden":!0}),children:e(`credentialsPage.copyLinkButton`)})})]})})]})}export{G as CredentialsPage};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{at as t,j as n}from"./vendor-kNpRDQWe.js";import{b as r,t as i}from"./react-DPM_L_aA.js";import{t as a}from"./preview-error-CyxFuY6O.js";import{In as o,yy as s}from"./index-D_aS89pX.js";var c=e(r(),1),l=[`,`,`;`,` `];function u(e){let t=e.trim();return t===``?!1:/^[+-]?(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?$/.test(t)}function d(e,t){let n=0,r=!1,i=!1;for(let a=0;a<e.length;a+=1){let o=e[a];if(r){o===`"`&&(e[a+1]===`"`?a+=1:r=!1),i=!0;continue}if(o===`"`){r=!0,i=!0;continue}if(o===`
|
|
2
2
|
`||o===`\r`){if(i)break;continue}o===t&&(n+=1),i=!0}return n}function f(e){let t=l[0],n=0;for(let r of l){let i=d(e,r);i>n&&(t=r,n=i)}return t}function p(e,t){let n=[],r=[],i=``,a=!1,o=!1,s=()=>{r.push(i),i=``,r.length===1&&r[0]===``||n.push(r),r=[]};for(let c=0;c<e.length;c+=1){let l=e[c];if(a){l===`"`?e[c+1]===`"`?(i+=`"`,c+=1):a=!1:i+=l;continue}if(l===`"`&&i===``){a=!0;continue}if(l===t){r.push(i),i=``;continue}if(l===`\r`||l===`
|
|
3
3
|
`){if(l===`\r`&&e[c+1]===`
|
|
4
|
-
`&&(c+=1),s(),n.length>=5e3)return o=e.slice(c+1).trim()!==``,{records:n,truncated:o};continue}i+=l}return(i!==``||r.length>0)&&s(),{records:n,truncated:o}}function m(e){let t=e[0];return!t||e.length<2||t.some(e=>e.trim()===``||u(e))?!1:e.slice(1).some(e=>e.some(e=>u(e)))}function h(e){let t=e.charCodeAt(0)===65279?e.slice(1):e;if(t.trim()===``)return{headers:null,rows:[],truncated:!1};let{records:n,truncated:r}=p(t,f(t));if(n.length===0)return{headers:null,rows:[],truncated:r};let i=n.reduce((e,t)=>Math.max(e,t.length),0),a=Math.min(i,200),o=i>200,s=n.map(e=>{let t=e.slice(0,a);for(;t.length<a;)t.push(``);return t}),c=m(s);return{headers:c?s[0]:null,rows:c?s.slice(1):s,truncated:r||o}}var g=i(),_=30,v=`border-b border-r border-[var(--border-element)] px-2 py-1 align-top last:border-r-0`,y={Table:({style:e,...t})=>(0,g.jsx)(`table`,{...t,className:`w-full min-w-max border-collapse text-body-small-default text-[var(--content-default)]`,style:e}),TableRow:({item:e,...t})=>(0,g.jsx)(`tr`,{...t})};function b({blob:e,filename:r}){let{t:i}=
|
|
4
|
+
`&&(c+=1),s(),n.length>=5e3)return o=e.slice(c+1).trim()!==``,{records:n,truncated:o};continue}i+=l}return(i!==``||r.length>0)&&s(),{records:n,truncated:o}}function m(e){let t=e[0];return!t||e.length<2||t.some(e=>e.trim()===``||u(e))?!1:e.slice(1).some(e=>e.some(e=>u(e)))}function h(e){let t=e.charCodeAt(0)===65279?e.slice(1):e;if(t.trim()===``)return{headers:null,rows:[],truncated:!1};let{records:n,truncated:r}=p(t,f(t));if(n.length===0)return{headers:null,rows:[],truncated:r};let i=n.reduce((e,t)=>Math.max(e,t.length),0),a=Math.min(i,200),o=i>200,s=n.map(e=>{let t=e.slice(0,a);for(;t.length<a;)t.push(``);return t}),c=m(s);return{headers:c?s[0]:null,rows:c?s.slice(1):s,truncated:r||o}}var g=i(),_=30,v=`border-b border-r border-[var(--border-element)] px-2 py-1 align-top last:border-r-0`,y={Table:({style:e,...t})=>(0,g.jsx)(`table`,{...t,className:`w-full min-w-max border-collapse text-body-small-default text-[var(--content-default)]`,style:e}),TableRow:({item:e,...t})=>(0,g.jsx)(`tr`,{...t})};function b({blob:e,filename:r}){let{t:i}=n(`chat`),[l,u]=(0,c.useState)(null),[d,f]=(0,c.useState)(!1);(0,c.useEffect)(()=>{let t=!1;return u(null),f(!1),e.text().then(e=>{t||u(e)},()=>{t||f(!0)}),()=>{t=!0}},[e]);let p=(0,c.useMemo)(()=>l===null?null:h(l),[l]),m=p?.headers??null,b=(0,c.useCallback)(()=>m===null?null:(0,g.jsx)(`tr`,{children:m.map((e,t)=>(0,g.jsx)(`th`,{scope:`col`,title:e,className:`${v} bg-[var(--surface-sunken)] text-left text-body-small-emphasised`,children:(0,g.jsx)(`span`,{className:`block max-w-[20rem] truncate`,children:e})},t))}),[m]);if(d)return(0,g.jsx)(a,{filename:r});if(p===null)return(0,g.jsx)(o,{});let x=m?.length??p.rows[0]?.length??0;return x===0?(0,g.jsx)(`div`,{role:`status`,className:`flex h-full items-center justify-center p-4`,children:(0,g.jsx)(s,{as:`span`,variant:`body-small-default`,className:`text-[var(--content-tertiary)]`,children:i(`csvPreview.emptyFile`)})}):(0,g.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,g.jsx)(t,{data:p.rows,initialItemCount:Math.min(p.rows.length,_),components:y,fixedHeaderContent:m===null?void 0:b,itemContent:(e,t)=>t.map((e,t)=>(0,g.jsx)(`td`,{title:e,className:v,children:(0,g.jsx)(`span`,{className:`block max-w-[20rem] truncate`,children:e})},t)),className:`min-h-0 flex-1`}),(0,g.jsx)(s,{as:`p`,variant:`label-small-default`,className:`shrink-0 border-t border-[var(--border-element)] px-3 py-1.5 text-[var(--content-tertiary)]`,children:p.truncated?i(`csvPreview.summaryTruncated`,{rows:p.rows.length,columns:x}):i(`csvPreview.summary`,{rows:p.rows.length,columns:x})})]})}export{b as CsvPreview};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{b as t,f as n}from"./react-DPM_L_aA.js";import{iv as r}from"./index-D_aS89pX.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};
|