@vellumai/web 0.11.3-staging.1 → 0.11.3-staging.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{access-BEF4g5Xz.js → access-RDaLlBt5.js} +1 -1
- package/dist/assets/{account-page-CjBQhkfo.js → account-page-JyXn859b.js} +1 -1
- package/dist/assets/{account-shell-BwGiy59u.js → account-shell-DuR-x14B.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-BPcNCjiL.js → acp-run-detail-panel-BsGRKgJi.js} +1 -1
- package/dist/assets/{activity-steps-panel-DhuSLpCc.js → activity-steps-panel-DGS78a-e.js} +1 -1
- package/dist/assets/ai-page-84Y9c_q2.js +1 -0
- package/dist/assets/{api-key-screen-D1j3oper.js → api-key-screen-vFF5CrFw.js} +1 -1
- package/dist/assets/{app-card-BBt0ilaM.js → app-card-Df-Gy7pD.js} +1 -1
- package/dist/assets/{assistant-status-panel-DnkQ1jrJ.js → assistant-status-panel-C92c678g.js} +1 -1
- package/dist/assets/{auth-store-CPVpJ_c7.js → auth-store-BJdkkmzu.js} +1 -1
- package/dist/assets/{avatar-random-BHVo9v-a.js → avatar-random-BiLhcs1I.js} +1 -1
- package/dist/assets/{background-task-detail-panel-CyVrsboL.js → background-task-detail-panel-Dq1DgR5i.js} +1 -1
- package/dist/assets/billing-page-CAFoZYGH.js +3 -0
- package/dist/assets/{bookmarks-page-M8X5Jj_q.js → bookmarks-page-EeUOpkIO.js} +1 -1
- package/dist/assets/{build-state-DGpOoR0F.js → build-state-DJaFMxtL.js} +1 -1
- package/dist/assets/channels-page-route-DS9XLjMy.js +9 -0
- package/dist/assets/{chat-markdown-message-Dr9rA1lM.js → chat-markdown-message-C6oOqDdl.js} +1 -1
- package/dist/assets/{checkout-page-CQdvMHxx.js → checkout-page-BqIlZAum.js} +1 -1
- package/dist/assets/{command-palette-DjHOOk8U.js → command-palette-D6aRon6x.js} +1 -1
- package/dist/assets/{command-palette-window-page-msewbnL1.js → command-palette-window-page-B1jt_AiM.js} +1 -1
- package/dist/assets/{common-BUQt6ee_.js → common-wFfOb0rN.js} +1 -1
- package/dist/assets/{composer-settings-veIRzcPS.js → composer-settings-Du4kV9LG.js} +1 -1
- package/dist/assets/{contacts-page-route-Caog1niM.js → contacts-page-route-B4eanbVf.js} +1 -1
- package/dist/assets/{conversation-navigation-DqU55C7j.js → conversation-navigation-gR_RLe1J.js} +1 -1
- package/dist/assets/{conversation-queries-Bh_7RMKd.js → conversation-queries-Bx_JApUN.js} +1 -1
- package/dist/assets/{credentials-page-D3H8KP0a.js → credentials-page-BLMs_5u_.js} +1 -1
- package/dist/assets/{csv-preview-Crel8fKb.js → csv-preview-B0xuZwnc.js} +1 -1
- package/dist/assets/{debug-page-By8-4Cjy.js → debug-page-7plKE23B.js} +2 -2
- package/dist/assets/{deploy-dialogs-Dak-wWO4.js → deploy-dialogs-Bjz3OS-8.js} +1 -1
- package/dist/assets/{deploy-store-0HlKHhLJ.js → deploy-store-BGcHwvB5.js} +1 -1
- package/dist/assets/{detail-card-CmSV969e.js → detail-card-hWrhardR.js} +1 -1
- package/dist/assets/{detail-drawer-HN4NsyKg.js → detail-drawer-s-zfqqMy.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-DV6U5A7y.js → detail-panel-stop-button-CC6QoK-R.js} +1 -1
- package/dist/assets/{detail-shell-rL601Rqo.js → detail-shell-PCaxY4Tf.js} +1 -1
- package/dist/assets/{developer-page-Bgg8qW6q.js → developer-page-CV5m0xk-.js} +1 -1
- package/dist/assets/{document-viewer-container-BkKmz-ar.js → document-viewer-container-wjJ6ACJv.js} +2 -2
- package/dist/assets/{document-viewer-page-B-jAUGAO.js → document-viewer-page-C8YfZSmS.js} +1 -1
- package/dist/assets/{emails-page-B0r-ksKy.js → emails-page-BqvrSqnK.js} +1 -1
- package/dist/assets/{file-editor-BQUkusyI.js → file-editor-DOnVeKOG.js} +1 -1
- package/dist/assets/file-markdown-CGC6ZrPT.js +2 -0
- package/dist/assets/{first-run-scope-U5LrdMhR.js → first-run-scope-DKd0ZevK.js} +1 -1
- package/dist/assets/{general-page-Ce41M2hE.js → general-page-C7kX0xLP.js} +1 -1
- package/dist/assets/{hatching-screen-TI6k1_Q2.js → hatching-screen-Dws0nCOf.js} +1 -1
- package/dist/assets/{home-page-route-D6oL1pWj.js → home-page-route-Qs5WbFPD.js} +1 -1
- package/dist/assets/home-tool-permission-card-Do3YeiVC.js +1 -0
- package/dist/assets/{hosting-screen-CGkMm-2o.js → hosting-screen-BJB_azfa.js} +1 -1
- package/dist/assets/identity-page-route-uZNXQbMq.js +7 -0
- package/dist/assets/{index-3KliM4Ki.js → index-DRExgbkb.js} +1 -1
- package/dist/assets/index-Q1K0w5kB.css +2 -0
- package/dist/assets/{inspect-page-DD024DeO.js → inspect-page-C1dITgHA.js} +3 -3
- package/dist/assets/integration-icon-R8opqT3n.js +1 -0
- package/dist/assets/integrations-page-D4EH9FG0.js +1 -0
- package/dist/assets/{intelligence-layout-DOTYC75R.js → intelligence-layout-ByKfD_gm.js} +1 -1
- package/dist/assets/{library-detail-page-B2C4hPSd.js → library-detail-page-BciW_57s.js} +1 -1
- package/dist/assets/{library-page-Y2NwunY9.js → library-page-CMO0VZux.js} +1 -1
- package/dist/assets/{local-runtime-upgrade-12Yco-XF.js → local-runtime-upgrade-CXKbgZ4c.js} +1 -1
- package/dist/assets/{login-flow-fmfcNxyU.js → login-flow-CN5J4YsY.js} +1 -1
- package/dist/assets/{login-page-HFoMsSuP.js → login-page-5jtwkaF1.js} +1 -1
- package/dist/assets/{logout-page-B_3PiI2q.js → logout-page-Bz0x8UvE.js} +1 -1
- package/dist/assets/{logs-layout-7JGOJ0Gg.js → logs-layout-B_GC1zBM.js} +1 -1
- package/dist/assets/{memory-page-route-Cf8FoT6z.js → memory-page-route-BtL6zJZb.js} +1 -1
- package/dist/assets/{memory-router-playground-page-B4vWmkYZ.js → memory-router-playground-page-e4uW8QiT.js} +1 -1
- package/dist/assets/{message-files-panel-B8NzbXp3.js → message-files-panel-DxmbSrm8.js} +1 -1
- package/dist/assets/{messages-JRZkqLeA.js → messages-DSdy6Lfi.js} +1 -1
- package/dist/assets/{metric-card-Ba-Ju2sO.js → metric-card-BSJPacNm.js} +1 -1
- package/dist/assets/{mobile-sidebar-drawer-B0rTd7jy.js → mobile-sidebar-drawer-BGHwfePU.js} +1 -1
- package/dist/assets/{multi-activity-group-5OxVs26d.js → multi-activity-group-D_OVaru-.js} +1 -1
- package/dist/assets/{not-found-zOjj1km-.js → not-found-ClBCK2Sg.js} +1 -1
- package/dist/assets/{notifications-pzRj4j4m.js → notifications-G7qqgf4f.js} +1 -1
- package/dist/assets/{notifications-page-DTTyILgl.js → notifications-page-AW-ftrs5.js} +1 -1
- package/dist/assets/{open-workspace-file-FgLn-SuR.js → open-workspace-file-DViQQLp4.js} +2 -2
- package/dist/assets/{page-shell-DH240m1W.js → page-shell-Tpt9AIL2.js} +1 -1
- package/dist/assets/pairing-page-CGoWIhv7.js +1 -0
- package/dist/assets/{personality-page-B1BQNH7w.js → personality-page-avdvL3Dx.js} +1 -1
- package/dist/assets/{plans-page-B8oZfefa.js → plans-page-CdNdqHks.js} +1 -1
- package/dist/assets/{platform-login-notice-3g7rHtc3.js → platform-login-notice-BEDBlins.js} +1 -1
- package/dist/assets/{platform-loopback-page-DwnkFF3M.js → platform-loopback-page-DcHVugCF.js} +1 -1
- package/dist/assets/{plugin-detail-page-BrrXgSIx.js → plugin-detail-page-CnlqMl6e.js} +1 -1
- package/dist/assets/plugins-surface-C5i913ST.js +1 -0
- package/dist/assets/{preview-error-Di5TH4XQ.js → preview-error-CVMngD78.js} +1 -1
- package/dist/assets/{privacy-page-4LAU5IqF.js → privacy-page-CfJXPReU.js} +1 -1
- package/dist/assets/{privacy-screen-CNnBXznE.js → privacy-screen-4GElE18b.js} +1 -1
- package/dist/assets/{profile-pickers-BSDVzs_G.js → profile-pickers-ChG4_Gpc.js} +1 -1
- package/dist/assets/{provider-callback-page-CpfaqAgJ.js → provider-callback-page-rNJpxKm4.js} +1 -1
- package/dist/assets/{provider-key-C9asexKh.js → provider-key-BZOH9D9k.js} +1 -1
- package/dist/assets/{provider-signup-page-MukjbwOQ.js → provider-signup-page-BG-fVW-J.js} +1 -1
- package/dist/assets/{push-registration-CqXBOPNb.js → push-registration-C0GXHrCj.js} +1 -1
- package/dist/assets/{remove-from-device-dialog-DY5o8eIg.js → remove-from-device-dialog-BGqwuQw9.js} +1 -1
- package/dist/assets/{research-onboarding-route-BIY3OCwG.js → research-onboarding-route-s_8BLTOQ.js} +1 -1
- package/dist/assets/{retire-confirm-dialog-CgOoh5RG.js → retire-confirm-dialog-Bm7A3sZF.js} +1 -1
- package/dist/assets/{review-terms-screen-BA2I_7F2.js → review-terms-screen-CpWYZlRr.js} +1 -1
- package/dist/assets/routes-DE2XWIds.js +23 -0
- package/dist/assets/{runtime-upgrade-banner-9KhcwQWy.js → runtime-upgrade-banner-DtzsX2m0.js} +1 -1
- package/dist/assets/{sandbox-bridge-B6h4B0qp.js → sandbox-bridge-WZhWtkZd.js} +1 -1
- package/dist/assets/schedules-page-Cfala7Km.js +1 -0
- package/dist/assets/select-assistant-screen-BqObBI5Z.js +1 -0
- package/dist/assets/self-hosted-servers-DFgP80iG.js +1 -0
- package/dist/assets/{settings-divider-D_vHiuYw.js → settings-divider-Dyvf7Uk6.js} +1 -1
- package/dist/assets/{settings-layout-CINtkHJR.js → settings-layout-DfPO11SQ.js} +1 -1
- package/dist/assets/{settings-navigation-CHeVLLWI.js → settings-navigation-C1wEuU56.js} +1 -1
- package/dist/assets/{share-feedback-modal-BWez_NtT.js → share-feedback-modal-Ctgazbnj.js} +1 -1
- package/dist/assets/{sidebar-tree-aLYbZLvm.js → sidebar-tree-VXRWtsy4.js} +1 -1
- package/dist/assets/{signup-page-CiW0Chx7.js → signup-page-CLf-r4oP.js} +1 -1
- package/dist/assets/{site-favicon-B5ilr8wL.js → site-favicon-DfuXzZcN.js} +1 -1
- package/dist/assets/{skill-detail-page-T24C6W33.js → skill-detail-page-ChpWru-e.js} +2 -2
- package/dist/assets/{skill-detail-panel-BOPQ16Vg.js → skill-detail-panel-DU0bdJUl.js} +1 -1
- package/dist/assets/{skills-C2mjxWRN.js → skills-B4bfakyU.js} +1 -1
- package/dist/assets/{src-BMRW2yQf.js → src-DyqTPMO2.js} +1 -1
- package/dist/assets/{stt-language-picker-modal-BVO4V699.js → stt-language-picker-modal-BiWHaqFq.js} +1 -1
- package/dist/assets/{subagent-detail-panel-BCDOrwh3.js → subagent-detail-panel-Gi0UOlsn.js} +1 -1
- package/dist/assets/{subagent-store-BOpi4xxB.js → subagent-store-9SqF-NFa.js} +1 -1
- package/dist/assets/superpowers-page-nHT_hb33.js +1 -0
- package/dist/assets/{system-events-page-Bgo88uzO.js → system-events-page-Bfpn0HzE.js} +1 -1
- package/dist/assets/{telegram-setup-wizard-B3MHpy56.js → telegram-setup-wizard-GetgaQy5.js} +1 -1
- package/dist/assets/{text-preview-CPYq3og6.js → text-preview-CEL0P-WV.js} +1 -1
- package/dist/assets/{theme-stage-page-B6C95R4X.js → theme-stage-page-CEBFiy-u.js} +1 -1
- package/dist/assets/{tiptap-document-editor-By4wlOTs.js → tiptap-document-editor-DPkcv0pe.js} +1 -1
- package/dist/assets/{tool-detail-panel-E_gP0j1r.js → tool-detail-panel-84bl2nI3.js} +1 -1
- package/dist/assets/typed-storage-lk6_tW16.js +1 -0
- package/dist/assets/{upgrade-cancel-page-DCiT0Rqi.js → upgrade-cancel-page-DNteIqqS.js} +1 -1
- package/dist/assets/{upgrade-success-page-DLs3viaj.js → upgrade-success-page-CAeO4QtE.js} +1 -1
- package/dist/assets/{use-assistant-avatar-Dk975wdP.js → use-assistant-avatar-Dd-EU1FC.js} +1 -1
- package/dist/assets/{use-assistant-identity-details-DyvMGaA7.js → use-assistant-identity-details-DqiKjphK.js} +1 -1
- package/dist/assets/{use-attachment-preview-DjrcSin2.js → use-attachment-preview-B4PALbqs.js} +1 -1
- package/dist/assets/{use-attachment-squares-DHH1eTI4.js → use-attachment-squares-C-9Rz-8O.js} +1 -1
- package/dist/assets/{use-bookmarks-Wg8ueMhb.js → use-bookmarks-BWGVUg59.js} +1 -1
- package/dist/assets/{use-checkout-dismiss-refresh-wuwzKwo_.js → use-checkout-dismiss-refresh-BGeYbYii.js} +1 -1
- package/dist/assets/{use-command-palette-sections-CzHbFhwD.js → use-command-palette-sections-D3aj-BzX.js} +1 -1
- package/dist/assets/{use-edge-swipe-back-9-2nUEK7.js → use-edge-swipe-back-BGq52vVr.js} +2 -2
- package/dist/assets/{use-edit-app-PiQBQ9vN.js → use-edit-app-u-kyfEFX.js} +1 -1
- package/dist/assets/{use-invite-link-dialog-C6rYwhqr.js → use-invite-link-dialog-Ccf_XNV3.js} +1 -1
- package/dist/assets/{use-is-org-ready-BTUeuhPi.js → use-is-org-ready-CQntk0MX.js} +1 -1
- package/dist/assets/{use-onboarding-login-BXw1Fcg3.js → use-onboarding-login-Cw_9Ydsv.js} +1 -1
- package/dist/assets/{use-platform-assistant-id-DOBe1pF-.js → use-platform-assistant-id-DMP9urFb.js} +1 -1
- package/dist/assets/{use-platform-gate-DBRG0Q26.js → use-platform-gate-2lhRAyKS.js} +1 -1
- package/dist/assets/{use-return-to-short-circuit-Bl1RwuwD.js → use-return-to-short-circuit-Dm5PWev2.js} +1 -1
- package/dist/assets/{use-skill-actions-kLsl5L01.js → use-skill-actions-BopRxJ9x.js} +1 -1
- package/dist/assets/{use-sticky-profiles-CVsR9J8_.js → use-sticky-profiles-5cPu_MUo.js} +1 -1
- package/dist/assets/{use-subagent-card-data-BeUTFQdm.js → use-subagent-card-data-VnA5x24X.js} +1 -1
- package/dist/assets/{use-supports-bookmarks-FmvOAxKu.js → use-supports-bookmarks-z9pfj1Rm.js} +1 -1
- package/dist/assets/use-supports-credentials-settings-CEPArXBW.js +1 -0
- package/dist/assets/{use-transcript-message-by-id-C7L609Lk.js → use-transcript-message-by-id-DCOlEJjY.js} +1 -1
- package/dist/assets/{use-transcript-messages-BAG92dqc.js → use-transcript-messages-BEpY7uG4.js} +1 -1
- package/dist/assets/{use-voice-sample-preview-CVVwbBcE.js → use-voice-sample-preview-CzqJYPiZ.js} +1 -1
- package/dist/assets/{utils-CAZUrJMu.js → utils-CVoSWh7U.js} +1 -1
- package/dist/assets/{viewer-store-BhqBXvNu.js → viewer-store-CayI6XWh.js} +1 -1
- package/dist/assets/{voice-list-ChEr4jqe.js → voice-list-BS2BNjKN.js} +1 -1
- package/dist/assets/{voice-page-CkdnjoLc.js → voice-page-B7t0g-1X.js} +1 -1
- package/dist/assets/{voice-providers-note-DC4nbaBx.js → voice-providers-note-Cv7vCsDI.js} +1 -1
- package/dist/assets/{welcome-screen-BTnikex6.js → welcome-screen-eqR0DNzE.js} +1 -1
- package/dist/assets/{workflow-detail-panel-Bf6rP5UH.js → workflow-detail-panel-Dlj8i7AM.js} +1 -1
- package/dist/assets/{workspace-page-C8EUvGJ4.js → workspace-page-CAbshSeb.js} +1 -1
- package/dist/images/integrations/ATTRIBUTION.md +72 -0
- package/dist/images/integrations/airtable.svg +1 -0
- package/dist/images/integrations/asana.svg +1 -0
- package/dist/images/integrations/discord.svg +1 -0
- package/dist/images/integrations/dropbox.svg +1 -0
- package/dist/images/integrations/hubspot.svg +1 -0
- package/dist/images/integrations/salesforce.svg +5 -0
- package/dist/images/integrations/sanity.svg +1 -0
- package/dist/images/integrations/spotify.svg +1 -0
- package/dist/images/integrations/telegram.svg +1 -0
- package/dist/images/integrations/todoist.svg +1 -0
- package/dist/images/integrations/x.svg +1 -0
- package/dist/index.html +57 -57
- package/package.json +1 -1
- package/dist/assets/ai-page-CsufGyQ4.js +0 -1
- package/dist/assets/billing-page-CvZZTRHS.js +0 -3
- package/dist/assets/channels-page-route-Dj500t-M.js +0 -9
- package/dist/assets/file-markdown-DMq6D4CV.js +0 -2
- package/dist/assets/home-tool-permission-card-DG7KNyYY.js +0 -1
- package/dist/assets/identity-page-route-CLUGVFIg.js +0 -7
- package/dist/assets/index-BIhXfUlg.css +0 -2
- package/dist/assets/integration-icon-BaoRF0qI.js +0 -1
- package/dist/assets/integrations-page-Dygny-c2.js +0 -1
- package/dist/assets/pairing-page-Tun2QZT0.js +0 -1
- package/dist/assets/plugins-surface-B4NuEVD_.js +0 -1
- package/dist/assets/routes-DuLrKyjJ.js +0 -23
- package/dist/assets/schedules-page-CchXRGaR.js +0 -1
- package/dist/assets/select-assistant-screen-BHf9p-NL.js +0 -1
- package/dist/assets/superpowers-page-bOpdIXSO.js +0 -1
- package/dist/assets/typed-storage-UYklH-m5.js +0 -1
- package/dist/assets/use-supports-credentials-settings-BGgnzFf0.js +0 -1
- package/dist/assets/use-supports-schedule-profile-moves-CuKzMKxy.js +0 -1
- /package/dist/assets/{profile-metadata-DutSLpwl.js → profile-metadata-DgH7VoVU.js} +0 -0
- /package/dist/assets/{start-screen-zLwb2fyf.js → start-screen-CXUDtHbL.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./capture-error-Cw5vs0Ef.js";import"./src-BMRW2yQf.js";import{n as t}from"./toast-BpuLSxyt.js";import{n,t as r}from"./create-selectors-DBgi9gD3.js";import{t as i}from"./api-errors-BQX1Pzcm.js";import{St as a,n as o,wt as s}from"./sdk.gen-CBPZ2IdN.js";import{t as c}from"./open-workspace-file-FgLn-SuR.js";import{o as l}from"./workspace-path-links-Dal5QJ_L.js";var u=new Map;function d(e,t){return`${e}::${t}`}function f(e,t){let n=d(e,t),r=u.get(n);return r??(r=o({path:{assistant_id:e,id:t},throwOnError:!0}).then(e=>e.data.html).catch(e=>{throw u.delete(n),e}),u.set(n,r)),r}function p(e,t,n){u.set(d(e,t),Promise.resolve(n))}function m(e,t){u.delete(d(e,t))}var h=r(n()(e=>({changedDocuments:{},markDocumentChanged:(t,n)=>{e(e=>{let r=e.changedDocuments[t];if(r?.has(n))return e;let i=new Set(r);return i.add(n),{changedDocuments:{...e.changedDocuments,[t]:i}}})},clearDocument:(t,n)=>{e(e=>{let r=e.changedDocuments[t];if(!r?.has(n))return e;let i=new Set(r);i.delete(n);let a={...e.changedDocuments};return i.size===0?delete a[t]:a[t]=i,{changedDocuments:a}})},clearDocumentEverywhere:t=>{e(e=>{let n={},r=!1;for(let[i,a]of Object.entries(e.changedDocuments)){if(!a.has(t)){n[i]=a;continue}r=!0;let e=new Set(a);e.delete(t),e.size>0&&(n[i]=e)}return r?{changedDocuments:n}:e})},clearConversation:t=>{e(e=>{if(e.changedDocuments[t]===void 0)return e;let n={...e.changedDocuments};return delete n[t],{changedDocuments:n}})}})));function g(e,t){return t===null?!1:(e.changedDocuments[t]?.size??0)>0}function _(e){return g({changedDocuments:h.use.changedDocuments()},e)}function v(e){if(typeof e!=`object`||!e)return!1;let t=e.error;if(typeof t!=`object`||!t||t.code!==`NOT_FOUND`)return!1;let n=t.message;return typeof n==`string`&&n.startsWith(`App not found`)}function y(e){return e instanceof i&&e.status<500&&e.message?e.message:`Couldn't open this file`}var b=[`File not found`,`The file backing this document no longer exists`];function x(e){return!(e instanceof i)||e.status!==404?!1:!b.some(t=>e.message.startsWith(t))}function S(e,t){let n=e.mainView;return n===`document`||n===`subagent-detail`||n===`tool-detail`||n===`activity-steps`||n===`message-files`||n===`workflow-detail`||n===`acp-run-detail`||n===`background-task-detail`||n===`skill-detail`||n===`channel-setup`?e[t]:n}function C(e,t){return e===null||e.source!==t.source?!1:e.source===`document`&&t.source===`document`?e.surfaceId===t.surfaceId:e.source===`document`||t.source===`document`?!1:e.workspacePath===t.workspacePath}function w(e,t){return e.messageId!=null||t.messageId!=null?e.messageId===t.messageId&&e.groupIndex===t.groupIndex:e.toolCalls[0]?.id===t.toolCalls[0]?.id}function T(e,t){return e.messageId===t.messageId}function E(e,t){return t.messageId==null?e.thinkingText===t.thinkingText:e.messageId===t.messageId&&e.thinkingGroupIndex===t.thinkingGroupIndex&&e.thinkingItemIndex===t.thinkingItemIndex}var D={mainView:`chat`,activeAppId:null,openedAppState:null,activeDocumentTarget:null,openedDocumentState:null,isAppMinimized:!1,intelligenceTab:`identity`,viewBeforeDocument:`chat`,activeSubagentId:null,viewBeforeSubagentDetail:`chat`,activeToolDetail:null,viewBeforeToolDetail:`chat`,activeActivitySteps:null,viewBeforeActivitySteps:`chat`,activeMessageFiles:null,viewBeforeMessageFiles:`chat`,activeWorkflowRunId:null,viewBeforeWorkflowDetail:`chat`,activeAcpRunId:null,viewBeforeAcpRunDetail:`chat`,activeBackgroundTaskId:null,viewBeforeBackgroundTaskDetail:`chat`,activeSkillDetailId:null,viewBeforeSkillDetail:`chat`,activeChannelSetup:null,viewBeforeChannelSetup:`chat`,ruleEditorRequestSeq:0,ruleEditorRequestToolCallId:null},O=r(n()((n,r)=>({...D,setMainView:e=>{r().mainView!==e&&n({mainView:e})},setIntelligenceTab:e=>{r().intelligenceTab!==e&&n({intelligenceTab:e})},openApp:e=>{n({mainView:`app`,activeAppId:e,openedAppState:null,isAppMinimized:!1})},loadApp:async(t,i)=>{n({mainView:`app`,activeAppId:i,openedAppState:null,isAppMinimized:!1});try{let{data:e}=await o({path:{assistant_id:t,id:i},throwOnError:!0});if(r().activeAppId!==i)return;n({openedAppState:{appId:e.appId,dirName:e.dirName,name:e.name,html:e.html}}),p(t,e.appId,e.html)}catch(t){if(r().activeAppId!==i)return;v(t)||e(t,{context:`openApp`}),n({mainView:`chat`,activeAppId:null,openedAppState:null})}},setLoadedApp:e=>{n({openedAppState:e})},handleAppLoadFailed:()=>{n({mainView:`chat`,activeAppId:null,openedAppState:null})},closeApp:()=>{n({mainView:`chat`,activeAppId:null,openedAppState:null,isAppMinimized:!1})},toggleAppMinimized:()=>{n({isAppMinimized:!r().isAppMinimized})},minimizeApp:()=>{n({isAppMinimized:!0})},handleAppUnpinned:e=>{let t=r();return t.activeAppId!==e||t.mainView!==`app`&&t.mainView!==`app-editing`?!1:(r().closeApp(),!0)},enterAppEditing:()=>{n({mainView:`app-editing`})},exitAppEditing:()=>{n({mainView:`app`})},openSubagentDetail:e=>{n({mainView:`subagent-detail`,activeSubagentId:e,viewBeforeSubagentDetail:S(r(),`viewBeforeSubagentDetail`)})},closeSubagentDetail:()=>{n({mainView:r().viewBeforeSubagentDetail,activeSubagentId:null})},openWorkflowDetail:e=>{n({mainView:`workflow-detail`,activeWorkflowRunId:e,viewBeforeWorkflowDetail:S(r(),`viewBeforeWorkflowDetail`)})},closeWorkflowDetail:()=>{n({mainView:r().viewBeforeWorkflowDetail,activeWorkflowRunId:null})},openAcpRunDetail:e=>{n({mainView:`acp-run-detail`,activeAcpRunId:e,viewBeforeAcpRunDetail:S(r(),`viewBeforeAcpRunDetail`)})},closeAcpRunDetail:()=>{n({mainView:r().viewBeforeAcpRunDetail,activeAcpRunId:null})},openBackgroundTaskDetail:e=>{n({mainView:`background-task-detail`,activeBackgroundTaskId:e,viewBeforeBackgroundTaskDetail:S(r(),`viewBeforeBackgroundTaskDetail`)})},closeBackgroundTaskDetail:()=>{n({mainView:r().viewBeforeBackgroundTaskDetail,activeBackgroundTaskId:null})},openSkillDetail:e=>{n({mainView:`skill-detail`,activeSkillDetailId:e,viewBeforeSkillDetail:S(r(),`viewBeforeSkillDetail`)})},closeSkillDetail:()=>{n({mainView:r().viewBeforeSkillDetail,activeSkillDetailId:null})},openProcessDetail:({kind:e,id:t})=>{switch(e){case`subagent`:r().openSubagentDetail(t);return;case`workflow`:r().openWorkflowDetail(t);return;case`acp-run`:r().openAcpRunDetail(t);return;case`background-task`:r().openBackgroundTaskDetail(t);return;default:}},closeActiveOverlay:()=>{switch(r().mainView){case`document`:return r().closeDocument(),!0;case`subagent-detail`:return r().closeSubagentDetail(),!0;case`tool-detail`:return r().closeToolDetail(),!0;case`activity-steps`:return r().closeActivitySteps(),!0;case`message-files`:return r().closeMessageFiles(),!0;case`workflow-detail`:return r().closeWorkflowDetail(),!0;case`acp-run-detail`:return r().closeAcpRunDetail(),!0;case`background-task-detail`:return r().closeBackgroundTaskDetail(),!0;case`skill-detail`:return r().closeSkillDetail(),!0;case`channel-setup`:return r().closeChannelSetup(),!0;default:return!1}},openChannelSetup:e=>{n({mainView:`channel-setup`,activeChannelSetup:e,viewBeforeChannelSetup:S(r(),`viewBeforeChannelSetup`)})},closeChannelSetup:()=>{n({mainView:r().viewBeforeChannelSetup,activeChannelSetup:null})},openToolDetail:e=>{n({mainView:`tool-detail`,activeToolDetail:e,viewBeforeToolDetail:S(r(),`viewBeforeToolDetail`)})},toggleToolDetail:e=>{let t=r(),n=t.activeToolDetail;t.mainView===`tool-detail`&&n!=null&&(e.kind===`thinking`?n.kind===`thinking`&&E(n,e):n.kind!==`thinking`&&n.toolCallId===e.toolCallId)?r().closeToolDetail():r().openToolDetail(e)},closeToolDetail:()=>{n({mainView:r().viewBeforeToolDetail,activeToolDetail:null})},requestRuleEditor:e=>{e&&n(t=>({ruleEditorRequestSeq:t.ruleEditorRequestSeq+1,ruleEditorRequestToolCallId:e}))},openActivitySteps:e=>{n({mainView:`activity-steps`,activeActivitySteps:e,viewBeforeActivitySteps:S(r(),`viewBeforeActivitySteps`)})},toggleActivitySteps:e=>{let t=r(),n=t.activeActivitySteps;t.mainView===`activity-steps`&&n!=null&&w(n,e)?r().closeActivitySteps():r().openActivitySteps(e)},closeActivitySteps:()=>{n({mainView:r().viewBeforeActivitySteps,activeActivitySteps:null})},openMessageFiles:e=>{n({mainView:`message-files`,activeMessageFiles:e,viewBeforeMessageFiles:S(r(),`viewBeforeMessageFiles`)})},toggleMessageFiles:e=>{let t=r(),n=t.activeMessageFiles;t.mainView===`message-files`&&n!=null&&T(n,e)?r().closeMessageFiles():r().openMessageFiles(e)},closeMessageFiles:()=>{n({mainView:r().viewBeforeMessageFiles,activeMessageFiles:null})},clearTranscriptPanelPayloads:()=>{n({activeMessageFiles:null,activeActivitySteps:null,activeToolDetail:null})},openDocument:()=>{n({mainView:`document`,openedDocumentState:null,viewBeforeDocument:S(r(),`viewBeforeDocument`)})},loadDocument:async(e,t)=>{let i=S(r(),`viewBeforeDocument`),o={source:`document`,surfaceId:t};n({mainView:`document`,activeDocumentTarget:o,openedDocumentState:null,viewBeforeDocument:i});try{let{data:s}=await a({path:{assistant_id:e,id:t},throwOnError:!0});if(!C(r().activeDocumentTarget,o))return;if(!s){n({mainView:i,activeDocumentTarget:null,openedDocumentState:null});return}n({openedDocumentState:{source:`document`,surfaceId:s.surfaceId,conversationId:s.conversationId,documentName:s.title??`Untitled`,content:s.content??``,workspacePath:s.workspacePath}}),h.getState().clearDocumentEverywhere(s.surfaceId)}catch{if(!C(r().activeDocumentTarget,o))return;n({mainView:i,activeDocumentTarget:null,openedDocumentState:null})}},loadWorkspaceFileDocument:async(e,i,a)=>{let o=S(r(),`viewBeforeDocument`),l={source:`workspace-file`,workspacePath:i};n({mainView:`document`,activeDocumentTarget:l,openedDocumentState:null,viewBeforeDocument:o});let u=e=>{if(C(r().activeDocumentTarget,l)){if(n({mainView:o,activeDocumentTarget:null,openedDocumentState:null}),x(e)){c(i);return}t.error(y(e))}};try{let{data:t}=await s({path:{assistant_id:e},body:{path:i,conversationId:a},throwOnError:!0});if(!C(r().activeDocumentTarget,l))return;if(!t){u(null);return}n({activeDocumentTarget:{source:`document`,surfaceId:t.surfaceId},openedDocumentState:{source:`document`,surfaceId:t.surfaceId,conversationId:t.conversationId,documentName:t.title||`Untitled`,content:t.content??``,workspacePath:t.workspacePath}}),h.getState().clearDocumentEverywhere(t.surfaceId)}catch(e){u(e)}},openWorkspaceFilePreview:(e,t)=>{n({mainView:`document`,activeDocumentTarget:{source:`workspace-file-preview`,workspacePath:e},openedDocumentState:{source:`workspace-file-preview`,workspacePath:e,documentName:l(e),previewKind:t},viewBeforeDocument:S(r(),`viewBeforeDocument`)})},setLoadedDocument:e=>{n({openedDocumentState:e})},updateDocumentContent:(e,t,i)=>{let a=r().openedDocumentState;if(!a||a.source!==`document`||a.surfaceId!==e)return;let o=i===`append`?a.content+t:t;n({openedDocumentState:{...a,content:o}})},handleDocumentLoadFailed:()=>{n({mainView:r().viewBeforeDocument,activeDocumentTarget:null,openedDocumentState:null})},closeDocument:()=>{n({mainView:r().viewBeforeDocument,activeDocumentTarget:null,openedDocumentState:null})},reset:()=>n({...D})})));export{_ as a,f as c,O as i,p as l,T as n,h as o,E as r,m as s,w as t};
|
|
1
|
+
import{t as e}from"./capture-error-Cw5vs0Ef.js";import"./src-DyqTPMO2.js";import{n as t}from"./toast-BpuLSxyt.js";import{n,t as r}from"./create-selectors-DBgi9gD3.js";import{t as i}from"./api-errors-BQX1Pzcm.js";import{St as a,n as o,wt as s}from"./sdk.gen-CBPZ2IdN.js";import{t as c}from"./open-workspace-file-DViQQLp4.js";import{o as l}from"./workspace-path-links-Dal5QJ_L.js";var u=new Map;function d(e,t){return`${e}::${t}`}function f(e,t){let n=d(e,t),r=u.get(n);return r??(r=o({path:{assistant_id:e,id:t},throwOnError:!0}).then(e=>e.data.html).catch(e=>{throw u.delete(n),e}),u.set(n,r)),r}function p(e,t,n){u.set(d(e,t),Promise.resolve(n))}function m(e,t){u.delete(d(e,t))}var h=r(n()(e=>({changedDocuments:{},markDocumentChanged:(t,n)=>{e(e=>{let r=e.changedDocuments[t];if(r?.has(n))return e;let i=new Set(r);return i.add(n),{changedDocuments:{...e.changedDocuments,[t]:i}}})},clearDocument:(t,n)=>{e(e=>{let r=e.changedDocuments[t];if(!r?.has(n))return e;let i=new Set(r);i.delete(n);let a={...e.changedDocuments};return i.size===0?delete a[t]:a[t]=i,{changedDocuments:a}})},clearDocumentEverywhere:t=>{e(e=>{let n={},r=!1;for(let[i,a]of Object.entries(e.changedDocuments)){if(!a.has(t)){n[i]=a;continue}r=!0;let e=new Set(a);e.delete(t),e.size>0&&(n[i]=e)}return r?{changedDocuments:n}:e})},clearConversation:t=>{e(e=>{if(e.changedDocuments[t]===void 0)return e;let n={...e.changedDocuments};return delete n[t],{changedDocuments:n}})}})));function g(e,t){return t===null?!1:(e.changedDocuments[t]?.size??0)>0}function _(e){return g({changedDocuments:h.use.changedDocuments()},e)}function v(e){if(typeof e!=`object`||!e)return!1;let t=e.error;if(typeof t!=`object`||!t||t.code!==`NOT_FOUND`)return!1;let n=t.message;return typeof n==`string`&&n.startsWith(`App not found`)}function y(e){return e instanceof i&&e.status<500&&e.message?e.message:`Couldn't open this file`}var b=[`File not found`,`The file backing this document no longer exists`];function x(e){return!(e instanceof i)||e.status!==404?!1:!b.some(t=>e.message.startsWith(t))}function S(e,t){let n=e.mainView;return n===`document`||n===`subagent-detail`||n===`tool-detail`||n===`activity-steps`||n===`message-files`||n===`workflow-detail`||n===`acp-run-detail`||n===`background-task-detail`||n===`skill-detail`||n===`channel-setup`?e[t]:n}function C(e,t){return e===null||e.source!==t.source?!1:e.source===`document`&&t.source===`document`?e.surfaceId===t.surfaceId:e.source===`document`||t.source===`document`?!1:e.workspacePath===t.workspacePath}function w(e,t){return e.messageId!=null||t.messageId!=null?e.messageId===t.messageId&&e.groupIndex===t.groupIndex:e.toolCalls[0]?.id===t.toolCalls[0]?.id}function T(e,t){return e.messageId===t.messageId}function E(e,t){return t.messageId==null?e.thinkingText===t.thinkingText:e.messageId===t.messageId&&e.thinkingGroupIndex===t.thinkingGroupIndex&&e.thinkingItemIndex===t.thinkingItemIndex}var D={mainView:`chat`,activeAppId:null,openedAppState:null,activeDocumentTarget:null,openedDocumentState:null,isAppMinimized:!1,intelligenceTab:`identity`,viewBeforeDocument:`chat`,activeSubagentId:null,viewBeforeSubagentDetail:`chat`,activeToolDetail:null,viewBeforeToolDetail:`chat`,activeActivitySteps:null,viewBeforeActivitySteps:`chat`,activeMessageFiles:null,viewBeforeMessageFiles:`chat`,activeWorkflowRunId:null,viewBeforeWorkflowDetail:`chat`,activeAcpRunId:null,viewBeforeAcpRunDetail:`chat`,activeBackgroundTaskId:null,viewBeforeBackgroundTaskDetail:`chat`,activeSkillDetailId:null,viewBeforeSkillDetail:`chat`,activeChannelSetup:null,viewBeforeChannelSetup:`chat`,ruleEditorRequestSeq:0,ruleEditorRequestToolCallId:null},O=r(n()((n,r)=>({...D,setMainView:e=>{r().mainView!==e&&n({mainView:e})},setIntelligenceTab:e=>{r().intelligenceTab!==e&&n({intelligenceTab:e})},openApp:e=>{n({mainView:`app`,activeAppId:e,openedAppState:null,isAppMinimized:!1})},loadApp:async(t,i)=>{n({mainView:`app`,activeAppId:i,openedAppState:null,isAppMinimized:!1});try{let{data:e}=await o({path:{assistant_id:t,id:i},throwOnError:!0});if(r().activeAppId!==i)return;n({openedAppState:{appId:e.appId,dirName:e.dirName,name:e.name,html:e.html}}),p(t,e.appId,e.html)}catch(t){if(r().activeAppId!==i)return;v(t)||e(t,{context:`openApp`}),n({mainView:`chat`,activeAppId:null,openedAppState:null})}},setLoadedApp:e=>{n({openedAppState:e})},handleAppLoadFailed:()=>{n({mainView:`chat`,activeAppId:null,openedAppState:null})},closeApp:()=>{n({mainView:`chat`,activeAppId:null,openedAppState:null,isAppMinimized:!1})},toggleAppMinimized:()=>{n({isAppMinimized:!r().isAppMinimized})},minimizeApp:()=>{n({isAppMinimized:!0})},handleAppUnpinned:e=>{let t=r();return t.activeAppId!==e||t.mainView!==`app`&&t.mainView!==`app-editing`?!1:(r().closeApp(),!0)},enterAppEditing:()=>{n({mainView:`app-editing`})},exitAppEditing:()=>{n({mainView:`app`})},openSubagentDetail:e=>{n({mainView:`subagent-detail`,activeSubagentId:e,viewBeforeSubagentDetail:S(r(),`viewBeforeSubagentDetail`)})},closeSubagentDetail:()=>{n({mainView:r().viewBeforeSubagentDetail,activeSubagentId:null})},openWorkflowDetail:e=>{n({mainView:`workflow-detail`,activeWorkflowRunId:e,viewBeforeWorkflowDetail:S(r(),`viewBeforeWorkflowDetail`)})},closeWorkflowDetail:()=>{n({mainView:r().viewBeforeWorkflowDetail,activeWorkflowRunId:null})},openAcpRunDetail:e=>{n({mainView:`acp-run-detail`,activeAcpRunId:e,viewBeforeAcpRunDetail:S(r(),`viewBeforeAcpRunDetail`)})},closeAcpRunDetail:()=>{n({mainView:r().viewBeforeAcpRunDetail,activeAcpRunId:null})},openBackgroundTaskDetail:e=>{n({mainView:`background-task-detail`,activeBackgroundTaskId:e,viewBeforeBackgroundTaskDetail:S(r(),`viewBeforeBackgroundTaskDetail`)})},closeBackgroundTaskDetail:()=>{n({mainView:r().viewBeforeBackgroundTaskDetail,activeBackgroundTaskId:null})},openSkillDetail:e=>{n({mainView:`skill-detail`,activeSkillDetailId:e,viewBeforeSkillDetail:S(r(),`viewBeforeSkillDetail`)})},closeSkillDetail:()=>{n({mainView:r().viewBeforeSkillDetail,activeSkillDetailId:null})},openProcessDetail:({kind:e,id:t})=>{switch(e){case`subagent`:r().openSubagentDetail(t);return;case`workflow`:r().openWorkflowDetail(t);return;case`acp-run`:r().openAcpRunDetail(t);return;case`background-task`:r().openBackgroundTaskDetail(t);return;default:}},closeActiveOverlay:()=>{switch(r().mainView){case`document`:return r().closeDocument(),!0;case`subagent-detail`:return r().closeSubagentDetail(),!0;case`tool-detail`:return r().closeToolDetail(),!0;case`activity-steps`:return r().closeActivitySteps(),!0;case`message-files`:return r().closeMessageFiles(),!0;case`workflow-detail`:return r().closeWorkflowDetail(),!0;case`acp-run-detail`:return r().closeAcpRunDetail(),!0;case`background-task-detail`:return r().closeBackgroundTaskDetail(),!0;case`skill-detail`:return r().closeSkillDetail(),!0;case`channel-setup`:return r().closeChannelSetup(),!0;default:return!1}},openChannelSetup:e=>{n({mainView:`channel-setup`,activeChannelSetup:e,viewBeforeChannelSetup:S(r(),`viewBeforeChannelSetup`)})},closeChannelSetup:()=>{n({mainView:r().viewBeforeChannelSetup,activeChannelSetup:null})},openToolDetail:e=>{n({mainView:`tool-detail`,activeToolDetail:e,viewBeforeToolDetail:S(r(),`viewBeforeToolDetail`)})},toggleToolDetail:e=>{let t=r(),n=t.activeToolDetail;t.mainView===`tool-detail`&&n!=null&&(e.kind===`thinking`?n.kind===`thinking`&&E(n,e):n.kind!==`thinking`&&n.toolCallId===e.toolCallId)?r().closeToolDetail():r().openToolDetail(e)},closeToolDetail:()=>{n({mainView:r().viewBeforeToolDetail,activeToolDetail:null})},requestRuleEditor:e=>{e&&n(t=>({ruleEditorRequestSeq:t.ruleEditorRequestSeq+1,ruleEditorRequestToolCallId:e}))},openActivitySteps:e=>{n({mainView:`activity-steps`,activeActivitySteps:e,viewBeforeActivitySteps:S(r(),`viewBeforeActivitySteps`)})},toggleActivitySteps:e=>{let t=r(),n=t.activeActivitySteps;t.mainView===`activity-steps`&&n!=null&&w(n,e)?r().closeActivitySteps():r().openActivitySteps(e)},closeActivitySteps:()=>{n({mainView:r().viewBeforeActivitySteps,activeActivitySteps:null})},openMessageFiles:e=>{n({mainView:`message-files`,activeMessageFiles:e,viewBeforeMessageFiles:S(r(),`viewBeforeMessageFiles`)})},toggleMessageFiles:e=>{let t=r(),n=t.activeMessageFiles;t.mainView===`message-files`&&n!=null&&T(n,e)?r().closeMessageFiles():r().openMessageFiles(e)},closeMessageFiles:()=>{n({mainView:r().viewBeforeMessageFiles,activeMessageFiles:null})},clearTranscriptPanelPayloads:()=>{n({activeMessageFiles:null,activeActivitySteps:null,activeToolDetail:null})},openDocument:()=>{n({mainView:`document`,openedDocumentState:null,viewBeforeDocument:S(r(),`viewBeforeDocument`)})},loadDocument:async(e,t)=>{let i=S(r(),`viewBeforeDocument`),o={source:`document`,surfaceId:t};n({mainView:`document`,activeDocumentTarget:o,openedDocumentState:null,viewBeforeDocument:i});try{let{data:s}=await a({path:{assistant_id:e,id:t},throwOnError:!0});if(!C(r().activeDocumentTarget,o))return;if(!s){n({mainView:i,activeDocumentTarget:null,openedDocumentState:null});return}n({openedDocumentState:{source:`document`,surfaceId:s.surfaceId,conversationId:s.conversationId,documentName:s.title??`Untitled`,content:s.content??``,workspacePath:s.workspacePath}}),h.getState().clearDocumentEverywhere(s.surfaceId)}catch{if(!C(r().activeDocumentTarget,o))return;n({mainView:i,activeDocumentTarget:null,openedDocumentState:null})}},loadWorkspaceFileDocument:async(e,i,a)=>{let o=S(r(),`viewBeforeDocument`),l={source:`workspace-file`,workspacePath:i};n({mainView:`document`,activeDocumentTarget:l,openedDocumentState:null,viewBeforeDocument:o});let u=e=>{if(C(r().activeDocumentTarget,l)){if(n({mainView:o,activeDocumentTarget:null,openedDocumentState:null}),x(e)){c(i);return}t.error(y(e))}};try{let{data:t}=await s({path:{assistant_id:e},body:{path:i,conversationId:a},throwOnError:!0});if(!C(r().activeDocumentTarget,l))return;if(!t){u(null);return}n({activeDocumentTarget:{source:`document`,surfaceId:t.surfaceId},openedDocumentState:{source:`document`,surfaceId:t.surfaceId,conversationId:t.conversationId,documentName:t.title||`Untitled`,content:t.content??``,workspacePath:t.workspacePath}}),h.getState().clearDocumentEverywhere(t.surfaceId)}catch(e){u(e)}},openWorkspaceFilePreview:(e,t)=>{n({mainView:`document`,activeDocumentTarget:{source:`workspace-file-preview`,workspacePath:e},openedDocumentState:{source:`workspace-file-preview`,workspacePath:e,documentName:l(e),previewKind:t},viewBeforeDocument:S(r(),`viewBeforeDocument`)})},setLoadedDocument:e=>{n({openedDocumentState:e})},updateDocumentContent:(e,t,i)=>{let a=r().openedDocumentState;if(!a||a.source!==`document`||a.surfaceId!==e)return;let o=i===`append`?a.content+t:t;n({openedDocumentState:{...a,content:o}})},handleDocumentLoadFailed:()=>{n({mainView:r().viewBeforeDocument,activeDocumentTarget:null,openedDocumentState:null})},closeDocument:()=>{n({mainView:r().viewBeforeDocument,activeDocumentTarget:null,openedDocumentState:null})},reset:()=>n({...D})})));export{_ as a,f as c,O as i,p as l,T as n,h as o,E as r,m as s,w as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-BENY-yx_.js";import{n as r}from"./QueryClientProvider-CMu7CkQU.js";import{t as i}from"./useQuery-Bz-fbQ-m.js";import{t as a}from"./jsx-runtime-D3ZM-ToX.js";import{t as o}from"./cn-DFWryB3N.js";import{t as s}from"./check-DSgjgwlo.js";import"./src-BMRW2yQf.js";import{t as c}from"./search-D2xMZu1P.js";import{t as l}from"./square-CE8V_WXJ.js";import{t as u}from"./volume-2-CyoXrHNM.js";import{t as d}from"./input-DmHXRXaB.js";import{n as f}from"./toast-BpuLSxyt.js";import{t as p}from"./select-B8-i-CZ4.js";import{j as m}from"./sdk.gen-CBPZ2IdN.js";import{r as h}from"./use-is-org-ready-BTUeuhPi.js";import{Ht as g,Wt as _,d as v,u as y}from"./react-query.gen-DxjuNs-5.js";import{n as b,t as x}from"./use-voice-sample-preview-CVVwbBcE.js";var S=e(t(),1);function C(e){return e.nativeLabel?`${e.label} (${e.nativeLabel})`:e.label}var w=`multi`,T=[{code:``,label:`English (default)`,description:`Speech recognition defaults to English.`},{code:w,label:`Multilingual`,description:`Follows you between languages mid-sentence: English, Spanish, French, German, Hindi, Russian, Portuguese, Japanese, Italian, and Dutch.`},{code:`ar`,label:`Arabic`,nativeLabel:`العربية`,extended:!0},{code:`be`,label:`Belarusian`,nativeLabel:`Беларуская`,extended:!0},{code:`bn`,label:`Bengali`,nativeLabel:`বাংলা`,extended:!0},{code:`bs`,label:`Bosnian`,nativeLabel:`Bosanski`,extended:!0},{code:`bg`,label:`Bulgarian`,nativeLabel:`Български`,extended:!0},{code:`ca`,label:`Catalan`,nativeLabel:`Català`,extended:!0},{code:`zh`,label:`Chinese`,nativeLabel:`中文`,extended:!0},{code:`hr`,label:`Croatian`,nativeLabel:`Hrvatski`,extended:!0},{code:`cs`,label:`Czech`,nativeLabel:`Čeština`,extended:!0},{code:`da`,label:`Danish`,nativeLabel:`Dansk`,extended:!0},{code:`nl`,label:`Dutch`,nativeLabel:`Nederlands`},{code:`et`,label:`Estonian`,nativeLabel:`Eesti`,extended:!0},{code:`fi`,label:`Finnish`,nativeLabel:`Suomi`,extended:!0},{code:`fr`,label:`French`,nativeLabel:`Français`},{code:`de`,label:`German`,nativeLabel:`Deutsch`},{code:`el`,label:`Greek`,nativeLabel:`Ελληνικά`,extended:!0},{code:`gu`,label:`Gujarati`,nativeLabel:`ગુજરાતી`,extended:!0},{code:`he`,label:`Hebrew`,nativeLabel:`עברית`,extended:!0},{code:`hi`,label:`Hindi`,nativeLabel:`हिन्दी`},{code:`hu`,label:`Hungarian`,nativeLabel:`Magyar`,extended:!0},{code:`id`,label:`Indonesian`,nativeLabel:`Bahasa Indonesia`,extended:!0},{code:`it`,label:`Italian`,nativeLabel:`Italiano`},{code:`ja`,label:`Japanese`,nativeLabel:`日本語`},{code:`kn`,label:`Kannada`,nativeLabel:`ಕನ್ನಡ`,extended:!0},{code:`ko`,label:`Korean`,nativeLabel:`한국어`,extended:!0},{code:`lv`,label:`Latvian`,nativeLabel:`Latviešu`,extended:!0},{code:`lt`,label:`Lithuanian`,nativeLabel:`Lietuvių`,extended:!0},{code:`mk`,label:`Macedonian`,nativeLabel:`Македонски`,extended:!0},{code:`ms`,label:`Malay`,nativeLabel:`Bahasa Melayu`,extended:!0},{code:`mr`,label:`Marathi`,nativeLabel:`मराठी`,extended:!0},{code:`no`,label:`Norwegian`,nativeLabel:`Norsk`,extended:!0},{code:`fa`,label:`Persian`,nativeLabel:`فارسی`,extended:!0},{code:`pl`,label:`Polish`,nativeLabel:`Polski`,extended:!0},{code:`pt`,label:`Portuguese`,nativeLabel:`Português`},{code:`ro`,label:`Romanian`,nativeLabel:`Română`,extended:!0},{code:`ru`,label:`Russian`,nativeLabel:`Русский`},{code:`sr`,label:`Serbian`,nativeLabel:`Српски`,extended:!0},{code:`sk`,label:`Slovak`,nativeLabel:`Slovenčina`,extended:!0},{code:`sl`,label:`Slovenian`,nativeLabel:`Slovenščina`,extended:!0},{code:`es`,label:`Spanish`,nativeLabel:`Español`},{code:`sv`,label:`Swedish`,nativeLabel:`Svenska`,extended:!0},{code:`tl`,label:`Tagalog`,extended:!0},{code:`ta`,label:`Tamil`,nativeLabel:`தமிழ்`,extended:!0},{code:`te`,label:`Telugu`,nativeLabel:`తెలుగు`,extended:!0},{code:`th`,label:`Thai`,nativeLabel:`ไทย`,extended:!0},{code:`tr`,label:`Turkish`,nativeLabel:`Türkçe`,extended:!0},{code:`uk`,label:`Ukrainian`,nativeLabel:`Українська`,extended:!0},{code:`ur`,label:`Urdu`,nativeLabel:`اردو`,extended:!0},{code:`vi`,label:`Vietnamese`,nativeLabel:`Tiếng Việt`,extended:!0}],E=new Set([`deepgram`,`vellum`]),D=new Set([`deepgram`,`vellum`]),O=new Set([`xai`]),k=new Set([`deepgram`,`vellum`]),A={code:``,label:`Auto-detect (default)`,description:`xAI identifies the spoken language natively. Picking a specific language pins it; returning to auto-detect requires clearing services.stt.language outside this picker.`},j={code:`en`,label:`English`};function M(e,t){let n=D.has(t)?T:T.filter(e=>!e.extended),r=E.has(t)?n:n.filter(e=>e.code!==w),i=O.has(t)?r.flatMap(e=>e.code===``?[A,j]:[e]):r,a=k.has(t)?i.flatMap(e=>e.code===``?[j]:[e]):i;return a.some(t=>t.code===e)?a:[...a,{code:e,label:`${e} (custom)`}]}function N(e,t,n){let r=M(e,t),i=[],a=e=>{!i.includes(e)&&r.some(t=>t.code===e)&&i.push(e)};return a(e),a(``),a(w),a(`en`),n!=null&&a(n),{featured:i.map(e=>r.find(t=>t.code===e)),rest:r.filter(e=>!i.includes(e.code)).sort((e,t)=>e.label.localeCompare(t.label))}}function P(e,t){let n=t.trim().toLowerCase();return n.length===0||e.label.toLowerCase().includes(n)||e.nativeLabel&&e.nativeLabel.toLowerCase().includes(n)?!0:e.code.toLowerCase().startsWith(n)}function F(e,t){let n=M(e,t).find(t=>t.code===e);return n?C(n):e}function I(e){if(!e)return null;let t=e.toLowerCase().split(`-`)[0];return t===`en`?null:T.find(e=>e.code===t)??null}function L(e,t,n=``){let r=I(e);return!r||n===r.code?null:r.extended?D.has(t)?r.code:null:n===`multi`||n===``&&O.has(t)?null:E.has(t)?w:r.code}var R=a();function z(e,t){return`${e}-option-${t.code===``?`default`:t.code}`}function B({currentCode:e,configuredProviderId:t,suggestedCode:n,selectLanguage:r,selecting:i,onDone:a}){let l=(0,S.useId)(),u=`${l}-listbox`,f=(0,S.useRef)(null),p=(0,S.useRef)(null),[m,h]=(0,S.useState)(``),[g,_]=(0,S.useState)(-1),v=(0,S.useMemo)(()=>N(e,t,n),[e,t,n]),y=m.trim().length>0,b=(0,S.useMemo)(()=>{let e=[...v.featured,...v.rest];return y?e.filter(e=>P(e,m)):e},[v,y,m]);(0,S.useEffect)(()=>{f.current?.focus()},[]),(0,S.useEffect)(()=>{p.current?.querySelector(`[role="option"][aria-selected="true"]`)?.scrollIntoView({block:`nearest`})},[]),(0,S.useEffect)(()=>{if(g<0)return;let e=b[g];e&&document.getElementById(z(l,e))?.scrollIntoView({block:`nearest`})},[g,b,l]);let x=e=>{r(e),a()},w=e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(e.preventDefault(),b.length===0)return;_(t=>e.key===`ArrowDown`?Math.min(t+1,b.length-1):Math.max(t-1,0));return}if(e.key===`Enter`){let t=b[g]??(y?b[0]:void 0);t&&(e.preventDefault(),x(t.code))}},T=g>=0?b[g]:null,E=t=>{let r=t.code===e,i=t===T,a=n!=null&&t.code===n&&t.code!==e;return(0,R.jsxs)(`button`,{id:z(l,t),type:`button`,role:`option`,"aria-selected":r,tabIndex:-1,"data-active":i||void 0,onClick:()=>x(t.code),className:o(`flex w-full cursor-pointer items-center gap-2 rounded-md px-3 py-2.5 text-left transition-colors`,r?`bg-[var(--surface-active)]`:i?`bg-[var(--surface-hover)]`:`hover:bg-[var(--surface-hover)]`),children:[(0,R.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default text-[var(--content-default)]`,children:[C(t),t.description&&(0,R.jsx)(`span`,{className:`block truncate text-label-small-default text-[var(--content-tertiary)]`,children:t.description})]}),a&&(0,R.jsx)(`span`,{className:`shrink-0 text-label-small-default text-[var(--content-tertiary)]`,children:`Suggested`}),r&&(0,R.jsx)(s,{"aria-hidden":!0,className:`size-4 shrink-0 text-[var(--system-positive-strong)]`})]},t.code)},D=(e,t)=>(0,R.jsx)(`div`,{id:e,role:`presentation`,className:`px-3 pt-2 pb-1 text-label-small-default text-[var(--content-tertiary)]`,children:t});return(0,R.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-2`,children:[(0,R.jsx)(d,{ref:f,role:`combobox`,"aria-expanded":!0,"aria-controls":u,"aria-activedescendant":T?z(l,T):void 0,"aria-autocomplete":`list`,"aria-label":`Search languages`,placeholder:`Search languages`,leftIcon:(0,R.jsx)(c,{className:`size-4`}),value:m,onChange:e=>{h(e.target.value),_(e.target.value.trim().length>0?0:-1)},onKeyDown:w,fullWidth:!0}),(0,R.jsx)(`div`,{ref:p,id:u,role:`listbox`,"aria-label":`Languages`,"aria-busy":i,className:o(`flex max-h-[50vh] flex-col overflow-y-auto`,i&&`opacity-70`),children:y?b.length>0?b.map(E):(0,R.jsx)(`p`,{className:`px-3 py-2.5 text-body-medium-default text-[var(--content-tertiary)]`,children:`No languages match.`}):(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{role:`group`,"aria-labelledby":`${l}-featured`,children:[D(`${l}-featured`,`Featured`),v.featured.map(E)]}),(0,R.jsxs)(`div`,{role:`group`,"aria-labelledby":`${l}-all`,children:[D(`${l}-all`,`All languages`),v.rest.map(E)]})]})})]})}function V({assistantId:e,configuredValue:t,buildPatchBody:n,failureMessage:i}){let a=r(),[o,s]=(0,S.useState)(!1),[c,l]=(0,S.useState)(null),u=c??t,d=(0,S.useRef)(Promise.resolve()),p=(0,S.useRef)(0);return{currentValue:u,selecting:o,select:(0,S.useCallback)(t=>{if(!e||t===u)return;let r=++p.current;l(t),s(!0),d.current=d.current.then(async()=>{try{let{response:r}=await m({path:{assistant_id:e},body:await n(t),throwOnError:!1});if(!r?.ok){f.error(i);return}await a.invalidateQueries({queryKey:v({path:{assistant_id:e}})})}catch{f.error(i)}finally{r===p.current&&(l(null),s(!1))}})},[e,u,n,i,a])}}var H=e=>({services:{tts:{providers:{vellum:{model:e}}}}});function U(e){let t=h()&&!!e,{data:n}=i({..._({path:{assistant_id:e??``}}),enabled:t,staleTime:1/0,retry:!1}),{data:r}=i({...y({path:{assistant_id:e??``}}),enabled:t,staleTime:3e4}),a=r?.services?.tts,o=a?.mode===`managed`||a?.provider===`vellum`,s=n?.providers?.find(e=>e.id===`vellum`)?.supportsVoiceSelection===!0,{voices:c,defaultModel:l}=b(e,{enabled:t&&o}),u=t&&o&&s&&c.length>0,d=t&&!!r&&!o,{currentValue:f,selecting:p,select:m}=V({assistantId:e,configuredValue:a?.providers?.vellum?.model??l??c[0]?.model??``,buildPatchBody:H,failureMessage:`Couldn't change the voice just now. Try again.`});return{available:u,isByok:d,voices:c,currentModel:f,defaultModel:l??``,selectModel:m,selecting:p}}function W(e,t){return t||(k.has(e)?`en`:``)}var G=e=>({services:{stt:{language:e===``?`en`:e}}});function K(e){let t=h()&&!!e,{data:n}=i({...g({path:{assistant_id:e??``}}),enabled:t,staleTime:1/0,retry:!1}),{data:r}=i({...y({path:{assistant_id:e??``}}),enabled:t,staleTime:3e4}),a=r?.services?.stt,o=a?.mode===`managed`?`vellum`:a?.provider??`deepgram`,s=n?.providers?.find(e=>e.id===o)?.languageSelection===`manual`,c=t&&!!r&&s,{currentValue:l,selecting:u,select:d}=V({assistantId:e,configuredValue:W(o,a?.language),buildPatchBody:G,failureMessage:`Couldn't change the language just now. Try again.`});return{available:c,currentCode:l,configuredProviderId:o,selectLanguage:d,selecting:u}}var q={deepgram:`Deepgram`,elevenlabs:`ElevenLabs`},J=`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`;function Y(e){let t=e.indexOf(` · `);return t===-1?{traits:e,accent:``}:{accent:e.slice(0,t),traits:e.slice(t+3)}}function X(e){let{traits:t}=Y(e);return t.charAt(0).toUpperCase()+t.slice(1)}function Z(e){let t=new Map;for(let n of e){let{accent:e}=Y(n.description),r=e||`Other`,i=t.get(r);i?i.push(n):t.set(r,[n])}return[...t.entries()].sort((e,t)=>e[0].localeCompare(t[0])).map(([e,t])=>({accent:e,voices:[...t].sort((e,t)=>Y(e.description).traits.localeCompare(Y(t.description).traits))}))}function Q({description:e,className:t}){let{accent:n}=Y(e);return(0,R.jsxs)(`span`,{className:o(`truncate`,t),children:[X(e),n&&(0,R.jsx)(`span`,{className:`text-[var(--content-tertiary)]`,children:` · ${n}`})]})}function $({assistantId:e,heading:t,className:r,onSelect:i,value:a,onChange:c,showSource:d=!1,filterBySource:f=!1}){let{available:m,voices:h,currentModel:g,defaultModel:_,selectModel:v,selecting:y}=U(e),b=a!==void 0&&c!==void 0,C=b?a:g,w=e=>{b?c(e):v(e),i?.()},T=(0,S.useMemo)(()=>{let e=new Set,t=[];for(let n of h)e.has(n.source)||(e.add(n.source),t.push(n.source));return t.sort((e,t)=>(q[e]??e).localeCompare(q[t]??t))},[h]),[E,D]=(0,S.useState)(null),O=h.find(e=>e.model===C)?.source,k=f?E??O??T[0]??null:null,A=f&&T.length>1,j=(0,S.useMemo)(()=>Z(k?h.filter(e=>e.source===k):h),[h,k]),{previewingModel:M,play:N,stop:P}=x(),F=(0,S.useRef)(null);(0,S.useEffect)(()=>{F.current?.scrollIntoView?.({block:`nearest`})},[]);let I=h.length>0;return(b?!I:!m)?null:(0,R.jsxs)(`div`,{className:o(`flex flex-col gap-2`,t&&`border-t border-[var(--border-subtle)] pt-3`,r),children:[t&&(0,R.jsx)(`span`,{className:`text-label-medium-default text-[var(--content-secondary)]`,children:t}),A&&(0,R.jsx)(`div`,{className:`px-1 pb-1`,children:(0,R.jsx)(p,{value:k??``,onChange:D,options:T.map(e=>({value:e,label:q[e]??e})),"aria-label":`Voice provider`})}),(0,R.jsx)(`div`,{role:`listbox`,"aria-label":`Assistant voice`,className:o(`flex flex-col overflow-y-auto`,f?`max-h-[60vh]`:`max-h-80`,y&&`pointer-events-none opacity-70`),children:j.map(e=>(0,R.jsxs)(`div`,{role:`group`,"aria-label":e.accent,children:[(0,R.jsx)(`div`,{className:`px-3 pb-1 pt-3 text-label-small-default text-[var(--content-tertiary)]`,children:e.accent}),e.voices.map(e=>{let t=e.model===C,r=M===e.model,i=e.model===_;return(0,R.jsxs)(`div`,{ref:t?F:void 0,role:`option`,"aria-selected":t,onClick:()=>w(e.model),className:o(`group flex cursor-pointer items-center gap-2 rounded-md px-3 py-2.5 transition-colors`,t?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`),children:[(0,R.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default text-[var(--content-default)]`,children:[X(e.description),i&&(0,R.jsxs)(`span`,{className:`text-[var(--content-tertiary)]`,children:[` `,`(default)`]})]}),d&&!f&&(0,R.jsx)(`span`,{className:`shrink-0 text-body-small-default text-[var(--content-tertiary)]`,children:q[e.source]??e.source}),(0,R.jsxs)(`div`,{className:`relative flex size-7 shrink-0 items-center justify-center`,children:[e.sampleUrl!==``&&(0,R.jsx)(n,{variant:`ghost`,size:`compact`,iconOnly:r?(0,R.jsx)(l,{}):(0,R.jsx)(u,{}),"aria-label":r?`Stop preview`:`Preview ${e.description}`,className:o(`absolute inset-0 transition-opacity`,r?`opacity-100`:`opacity-0 group-hover:opacity-100 focus-visible:opacity-100 touch-mobile:opacity-100`),onClick:t=>{t.stopPropagation(),r?P():N(e)}}),t&&(0,R.jsx)(s,{"aria-hidden":!0,className:o(`pointer-events-none size-4 text-[var(--system-positive-strong)] transition-opacity`,r?`opacity-0`:e.sampleUrl===``?`opacity-100`:`opacity-100 group-hover:opacity-0 group-focus-within:opacity-0`)})]})]},e.model)})]},e.accent))})]})}export{K as a,F as c,X as i,L as l,$ as n,U as o,J as r,B as s,Q as t};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-BENY-yx_.js";import{n as r}from"./QueryClientProvider-CMu7CkQU.js";import{t as i}from"./useQuery-Bz-fbQ-m.js";import{t as a}from"./jsx-runtime-D3ZM-ToX.js";import{t as o}from"./cn-DFWryB3N.js";import{t as s}from"./check-DSgjgwlo.js";import"./src-DyqTPMO2.js";import{t as c}from"./search-D2xMZu1P.js";import{t as l}from"./square-CE8V_WXJ.js";import{t as u}from"./volume-2-CyoXrHNM.js";import{t as d}from"./input-DmHXRXaB.js";import{n as f}from"./toast-BpuLSxyt.js";import{t as p}from"./select-B8-i-CZ4.js";import{j as m}from"./sdk.gen-CBPZ2IdN.js";import{r as h}from"./use-is-org-ready-CQntk0MX.js";import{Ht as g,Wt as _,d as v,u as y}from"./react-query.gen-DxjuNs-5.js";import{n as b,t as x}from"./use-voice-sample-preview-CzqJYPiZ.js";var S=e(t(),1);function C(e){return e.nativeLabel?`${e.label} (${e.nativeLabel})`:e.label}var w=`multi`,T=[{code:``,label:`English (default)`,description:`Speech recognition defaults to English.`},{code:w,label:`Multilingual`,description:`Follows you between languages mid-sentence: English, Spanish, French, German, Hindi, Russian, Portuguese, Japanese, Italian, and Dutch.`},{code:`ar`,label:`Arabic`,nativeLabel:`العربية`,extended:!0},{code:`be`,label:`Belarusian`,nativeLabel:`Беларуская`,extended:!0},{code:`bn`,label:`Bengali`,nativeLabel:`বাংলা`,extended:!0},{code:`bs`,label:`Bosnian`,nativeLabel:`Bosanski`,extended:!0},{code:`bg`,label:`Bulgarian`,nativeLabel:`Български`,extended:!0},{code:`ca`,label:`Catalan`,nativeLabel:`Català`,extended:!0},{code:`zh`,label:`Chinese`,nativeLabel:`中文`,extended:!0},{code:`hr`,label:`Croatian`,nativeLabel:`Hrvatski`,extended:!0},{code:`cs`,label:`Czech`,nativeLabel:`Čeština`,extended:!0},{code:`da`,label:`Danish`,nativeLabel:`Dansk`,extended:!0},{code:`nl`,label:`Dutch`,nativeLabel:`Nederlands`},{code:`et`,label:`Estonian`,nativeLabel:`Eesti`,extended:!0},{code:`fi`,label:`Finnish`,nativeLabel:`Suomi`,extended:!0},{code:`fr`,label:`French`,nativeLabel:`Français`},{code:`de`,label:`German`,nativeLabel:`Deutsch`},{code:`el`,label:`Greek`,nativeLabel:`Ελληνικά`,extended:!0},{code:`gu`,label:`Gujarati`,nativeLabel:`ગુજરાતી`,extended:!0},{code:`he`,label:`Hebrew`,nativeLabel:`עברית`,extended:!0},{code:`hi`,label:`Hindi`,nativeLabel:`हिन्दी`},{code:`hu`,label:`Hungarian`,nativeLabel:`Magyar`,extended:!0},{code:`id`,label:`Indonesian`,nativeLabel:`Bahasa Indonesia`,extended:!0},{code:`it`,label:`Italian`,nativeLabel:`Italiano`},{code:`ja`,label:`Japanese`,nativeLabel:`日本語`},{code:`kn`,label:`Kannada`,nativeLabel:`ಕನ್ನಡ`,extended:!0},{code:`ko`,label:`Korean`,nativeLabel:`한국어`,extended:!0},{code:`lv`,label:`Latvian`,nativeLabel:`Latviešu`,extended:!0},{code:`lt`,label:`Lithuanian`,nativeLabel:`Lietuvių`,extended:!0},{code:`mk`,label:`Macedonian`,nativeLabel:`Македонски`,extended:!0},{code:`ms`,label:`Malay`,nativeLabel:`Bahasa Melayu`,extended:!0},{code:`mr`,label:`Marathi`,nativeLabel:`मराठी`,extended:!0},{code:`no`,label:`Norwegian`,nativeLabel:`Norsk`,extended:!0},{code:`fa`,label:`Persian`,nativeLabel:`فارسی`,extended:!0},{code:`pl`,label:`Polish`,nativeLabel:`Polski`,extended:!0},{code:`pt`,label:`Portuguese`,nativeLabel:`Português`},{code:`ro`,label:`Romanian`,nativeLabel:`Română`,extended:!0},{code:`ru`,label:`Russian`,nativeLabel:`Русский`},{code:`sr`,label:`Serbian`,nativeLabel:`Српски`,extended:!0},{code:`sk`,label:`Slovak`,nativeLabel:`Slovenčina`,extended:!0},{code:`sl`,label:`Slovenian`,nativeLabel:`Slovenščina`,extended:!0},{code:`es`,label:`Spanish`,nativeLabel:`Español`},{code:`sv`,label:`Swedish`,nativeLabel:`Svenska`,extended:!0},{code:`tl`,label:`Tagalog`,extended:!0},{code:`ta`,label:`Tamil`,nativeLabel:`தமிழ்`,extended:!0},{code:`te`,label:`Telugu`,nativeLabel:`తెలుగు`,extended:!0},{code:`th`,label:`Thai`,nativeLabel:`ไทย`,extended:!0},{code:`tr`,label:`Turkish`,nativeLabel:`Türkçe`,extended:!0},{code:`uk`,label:`Ukrainian`,nativeLabel:`Українська`,extended:!0},{code:`ur`,label:`Urdu`,nativeLabel:`اردو`,extended:!0},{code:`vi`,label:`Vietnamese`,nativeLabel:`Tiếng Việt`,extended:!0}],E=new Set([`deepgram`,`vellum`]),D=new Set([`deepgram`,`vellum`]),O=new Set([`xai`]),k=new Set([`deepgram`,`vellum`]),A={code:``,label:`Auto-detect (default)`,description:`xAI identifies the spoken language natively. Picking a specific language pins it; returning to auto-detect requires clearing services.stt.language outside this picker.`},j={code:`en`,label:`English`};function M(e,t){let n=D.has(t)?T:T.filter(e=>!e.extended),r=E.has(t)?n:n.filter(e=>e.code!==w),i=O.has(t)?r.flatMap(e=>e.code===``?[A,j]:[e]):r,a=k.has(t)?i.flatMap(e=>e.code===``?[j]:[e]):i;return a.some(t=>t.code===e)?a:[...a,{code:e,label:`${e} (custom)`}]}function N(e,t,n){let r=M(e,t),i=[],a=e=>{!i.includes(e)&&r.some(t=>t.code===e)&&i.push(e)};return a(e),a(``),a(w),a(`en`),n!=null&&a(n),{featured:i.map(e=>r.find(t=>t.code===e)),rest:r.filter(e=>!i.includes(e.code)).sort((e,t)=>e.label.localeCompare(t.label))}}function P(e,t){let n=t.trim().toLowerCase();return n.length===0||e.label.toLowerCase().includes(n)||e.nativeLabel&&e.nativeLabel.toLowerCase().includes(n)?!0:e.code.toLowerCase().startsWith(n)}function F(e,t){let n=M(e,t).find(t=>t.code===e);return n?C(n):e}function I(e){if(!e)return null;let t=e.toLowerCase().split(`-`)[0];return t===`en`?null:T.find(e=>e.code===t)??null}function L(e,t,n=``){let r=I(e);return!r||n===r.code?null:r.extended?D.has(t)?r.code:null:n===`multi`||n===``&&O.has(t)?null:E.has(t)?w:r.code}var R=a();function z(e,t){return`${e}-option-${t.code===``?`default`:t.code}`}function B({currentCode:e,configuredProviderId:t,suggestedCode:n,selectLanguage:r,selecting:i,onDone:a}){let l=(0,S.useId)(),u=`${l}-listbox`,f=(0,S.useRef)(null),p=(0,S.useRef)(null),[m,h]=(0,S.useState)(``),[g,_]=(0,S.useState)(-1),v=(0,S.useMemo)(()=>N(e,t,n),[e,t,n]),y=m.trim().length>0,b=(0,S.useMemo)(()=>{let e=[...v.featured,...v.rest];return y?e.filter(e=>P(e,m)):e},[v,y,m]);(0,S.useEffect)(()=>{f.current?.focus()},[]),(0,S.useEffect)(()=>{p.current?.querySelector(`[role="option"][aria-selected="true"]`)?.scrollIntoView({block:`nearest`})},[]),(0,S.useEffect)(()=>{if(g<0)return;let e=b[g];e&&document.getElementById(z(l,e))?.scrollIntoView({block:`nearest`})},[g,b,l]);let x=e=>{r(e),a()},w=e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(e.preventDefault(),b.length===0)return;_(t=>e.key===`ArrowDown`?Math.min(t+1,b.length-1):Math.max(t-1,0));return}if(e.key===`Enter`){let t=b[g]??(y?b[0]:void 0);t&&(e.preventDefault(),x(t.code))}},T=g>=0?b[g]:null,E=t=>{let r=t.code===e,i=t===T,a=n!=null&&t.code===n&&t.code!==e;return(0,R.jsxs)(`button`,{id:z(l,t),type:`button`,role:`option`,"aria-selected":r,tabIndex:-1,"data-active":i||void 0,onClick:()=>x(t.code),className:o(`flex w-full cursor-pointer items-center gap-2 rounded-md px-3 py-2.5 text-left transition-colors`,r?`bg-[var(--surface-active)]`:i?`bg-[var(--surface-hover)]`:`hover:bg-[var(--surface-hover)]`),children:[(0,R.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default text-[var(--content-default)]`,children:[C(t),t.description&&(0,R.jsx)(`span`,{className:`block truncate text-label-small-default text-[var(--content-tertiary)]`,children:t.description})]}),a&&(0,R.jsx)(`span`,{className:`shrink-0 text-label-small-default text-[var(--content-tertiary)]`,children:`Suggested`}),r&&(0,R.jsx)(s,{"aria-hidden":!0,className:`size-4 shrink-0 text-[var(--system-positive-strong)]`})]},t.code)},D=(e,t)=>(0,R.jsx)(`div`,{id:e,role:`presentation`,className:`px-3 pt-2 pb-1 text-label-small-default text-[var(--content-tertiary)]`,children:t});return(0,R.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-2`,children:[(0,R.jsx)(d,{ref:f,role:`combobox`,"aria-expanded":!0,"aria-controls":u,"aria-activedescendant":T?z(l,T):void 0,"aria-autocomplete":`list`,"aria-label":`Search languages`,placeholder:`Search languages`,leftIcon:(0,R.jsx)(c,{className:`size-4`}),value:m,onChange:e=>{h(e.target.value),_(e.target.value.trim().length>0?0:-1)},onKeyDown:w,fullWidth:!0}),(0,R.jsx)(`div`,{ref:p,id:u,role:`listbox`,"aria-label":`Languages`,"aria-busy":i,className:o(`flex max-h-[50vh] flex-col overflow-y-auto`,i&&`opacity-70`),children:y?b.length>0?b.map(E):(0,R.jsx)(`p`,{className:`px-3 py-2.5 text-body-medium-default text-[var(--content-tertiary)]`,children:`No languages match.`}):(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{role:`group`,"aria-labelledby":`${l}-featured`,children:[D(`${l}-featured`,`Featured`),v.featured.map(E)]}),(0,R.jsxs)(`div`,{role:`group`,"aria-labelledby":`${l}-all`,children:[D(`${l}-all`,`All languages`),v.rest.map(E)]})]})})]})}function V({assistantId:e,configuredValue:t,buildPatchBody:n,failureMessage:i}){let a=r(),[o,s]=(0,S.useState)(!1),[c,l]=(0,S.useState)(null),u=c??t,d=(0,S.useRef)(Promise.resolve()),p=(0,S.useRef)(0);return{currentValue:u,selecting:o,select:(0,S.useCallback)(t=>{if(!e||t===u)return;let r=++p.current;l(t),s(!0),d.current=d.current.then(async()=>{try{let{response:r}=await m({path:{assistant_id:e},body:await n(t),throwOnError:!1});if(!r?.ok){f.error(i);return}await a.invalidateQueries({queryKey:v({path:{assistant_id:e}})})}catch{f.error(i)}finally{r===p.current&&(l(null),s(!1))}})},[e,u,n,i,a])}}var H=e=>({services:{tts:{providers:{vellum:{model:e}}}}});function U(e){let t=h()&&!!e,{data:n}=i({..._({path:{assistant_id:e??``}}),enabled:t,staleTime:1/0,retry:!1}),{data:r}=i({...y({path:{assistant_id:e??``}}),enabled:t,staleTime:3e4}),a=r?.services?.tts,o=a?.mode===`managed`||a?.provider===`vellum`,s=n?.providers?.find(e=>e.id===`vellum`)?.supportsVoiceSelection===!0,{voices:c,defaultModel:l}=b(e,{enabled:t&&o}),u=t&&o&&s&&c.length>0,d=t&&!!r&&!o,{currentValue:f,selecting:p,select:m}=V({assistantId:e,configuredValue:a?.providers?.vellum?.model??l??c[0]?.model??``,buildPatchBody:H,failureMessage:`Couldn't change the voice just now. Try again.`});return{available:u,isByok:d,voices:c,currentModel:f,defaultModel:l??``,selectModel:m,selecting:p}}function W(e,t){return t||(k.has(e)?`en`:``)}var G=e=>({services:{stt:{language:e===``?`en`:e}}});function K(e){let t=h()&&!!e,{data:n}=i({...g({path:{assistant_id:e??``}}),enabled:t,staleTime:1/0,retry:!1}),{data:r}=i({...y({path:{assistant_id:e??``}}),enabled:t,staleTime:3e4}),a=r?.services?.stt,o=a?.mode===`managed`?`vellum`:a?.provider??`deepgram`,s=n?.providers?.find(e=>e.id===o)?.languageSelection===`manual`,c=t&&!!r&&s,{currentValue:l,selecting:u,select:d}=V({assistantId:e,configuredValue:W(o,a?.language),buildPatchBody:G,failureMessage:`Couldn't change the language just now. Try again.`});return{available:c,currentCode:l,configuredProviderId:o,selectLanguage:d,selecting:u}}var q={deepgram:`Deepgram`,elevenlabs:`ElevenLabs`},J=`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`;function Y(e){let t=e.indexOf(` · `);return t===-1?{traits:e,accent:``}:{accent:e.slice(0,t),traits:e.slice(t+3)}}function X(e){let{traits:t}=Y(e);return t.charAt(0).toUpperCase()+t.slice(1)}function Z(e){let t=new Map;for(let n of e){let{accent:e}=Y(n.description),r=e||`Other`,i=t.get(r);i?i.push(n):t.set(r,[n])}return[...t.entries()].sort((e,t)=>e[0].localeCompare(t[0])).map(([e,t])=>({accent:e,voices:[...t].sort((e,t)=>Y(e.description).traits.localeCompare(Y(t.description).traits))}))}function Q({description:e,className:t}){let{accent:n}=Y(e);return(0,R.jsxs)(`span`,{className:o(`truncate`,t),children:[X(e),n&&(0,R.jsx)(`span`,{className:`text-[var(--content-tertiary)]`,children:` · ${n}`})]})}function $({assistantId:e,heading:t,className:r,onSelect:i,value:a,onChange:c,showSource:d=!1,filterBySource:f=!1}){let{available:m,voices:h,currentModel:g,defaultModel:_,selectModel:v,selecting:y}=U(e),b=a!==void 0&&c!==void 0,C=b?a:g,w=e=>{b?c(e):v(e),i?.()},T=(0,S.useMemo)(()=>{let e=new Set,t=[];for(let n of h)e.has(n.source)||(e.add(n.source),t.push(n.source));return t.sort((e,t)=>(q[e]??e).localeCompare(q[t]??t))},[h]),[E,D]=(0,S.useState)(null),O=h.find(e=>e.model===C)?.source,k=f?E??O??T[0]??null:null,A=f&&T.length>1,j=(0,S.useMemo)(()=>Z(k?h.filter(e=>e.source===k):h),[h,k]),{previewingModel:M,play:N,stop:P}=x(),F=(0,S.useRef)(null);(0,S.useEffect)(()=>{F.current?.scrollIntoView?.({block:`nearest`})},[]);let I=h.length>0;return(b?!I:!m)?null:(0,R.jsxs)(`div`,{className:o(`flex flex-col gap-2`,t&&`border-t border-[var(--border-subtle)] pt-3`,r),children:[t&&(0,R.jsx)(`span`,{className:`text-label-medium-default text-[var(--content-secondary)]`,children:t}),A&&(0,R.jsx)(`div`,{className:`px-1 pb-1`,children:(0,R.jsx)(p,{value:k??``,onChange:D,options:T.map(e=>({value:e,label:q[e]??e})),"aria-label":`Voice provider`})}),(0,R.jsx)(`div`,{role:`listbox`,"aria-label":`Assistant voice`,className:o(`flex flex-col overflow-y-auto`,f?`max-h-[60vh]`:`max-h-80`,y&&`pointer-events-none opacity-70`),children:j.map(e=>(0,R.jsxs)(`div`,{role:`group`,"aria-label":e.accent,children:[(0,R.jsx)(`div`,{className:`px-3 pb-1 pt-3 text-label-small-default text-[var(--content-tertiary)]`,children:e.accent}),e.voices.map(e=>{let t=e.model===C,r=M===e.model,i=e.model===_;return(0,R.jsxs)(`div`,{ref:t?F:void 0,role:`option`,"aria-selected":t,onClick:()=>w(e.model),className:o(`group flex cursor-pointer items-center gap-2 rounded-md px-3 py-2.5 transition-colors`,t?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`),children:[(0,R.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default text-[var(--content-default)]`,children:[X(e.description),i&&(0,R.jsxs)(`span`,{className:`text-[var(--content-tertiary)]`,children:[` `,`(default)`]})]}),d&&!f&&(0,R.jsx)(`span`,{className:`shrink-0 text-body-small-default text-[var(--content-tertiary)]`,children:q[e.source]??e.source}),(0,R.jsxs)(`div`,{className:`relative flex size-7 shrink-0 items-center justify-center`,children:[e.sampleUrl!==``&&(0,R.jsx)(n,{variant:`ghost`,size:`compact`,iconOnly:r?(0,R.jsx)(l,{}):(0,R.jsx)(u,{}),"aria-label":r?`Stop preview`:`Preview ${e.description}`,className:o(`absolute inset-0 transition-opacity`,r?`opacity-100`:`opacity-0 group-hover:opacity-100 focus-visible:opacity-100 touch-mobile:opacity-100`),onClick:t=>{t.stopPropagation(),r?P():N(e)}}),t&&(0,R.jsx)(s,{"aria-hidden":!0,className:o(`pointer-events-none size-4 text-[var(--system-positive-strong)] transition-opacity`,r?`opacity-0`:e.sampleUrl===``?`opacity-100`:`opacity-100 group-hover:opacity-0 group-focus-within:opacity-0`)})]})]},e.model)})]},e.accent))})]})}export{K as a,F as c,X as i,L as l,$ as n,U as o,J as r,B as s,Q as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,l as n,o as r}from"./local-settings-Bx7FsNo5.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-BENY-yx_.js";import{h as o,n as s,t as c}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as l}from"./jsx-runtime-D3ZM-ToX.js";import{r as u}from"./middleware-DiHdH8q1.js";import{I as d,R as f}from"./src-BMRW2yQf.js";import{t as p}from"./info-CXkwGlN_.js";import{t as m}from"./toggle-C-v4x7_A.js";import{t as h}from"./modal-DI63s9MQ.js";import{t as g}from"./select-B8-i-CZ4.js";import{t as _}from"./assistant-identity-store-nE-e8KQw.js";import{d as v}from"./routes-iipg2wkc.js";import{C as y,S as b,b as x,d as ee,f as S,h as C,i as w,m as T,o as E,p as D,s as te,t as O,w as ne,x as re,y as ie}from"./voice-providers-note-DC4nbaBx.js";import{a as k,c as A,n as j,o as M,r as ae,t as oe}from"./voice-list-ChEr4jqe.js";import{t as N}from"./use-active-assistant-id-BvHP5Ojg.js";import{t as P}from"./detail-card-CmSV969e.js";import{t as F}from"./stt-language-picker-modal-BVO4V699.js";var I=e(i(),1),L=l();function R(){let{available:e,currentCode:t,configuredProviderId:n,selectLanguage:r,selecting:i}=k(N()),[o,s]=(0,I.useState)(!1);return e?(0,L.jsxs)(P,{title:`Listening language`,subtitle:`The language you speak to your assistant. Applies from your next spoken turn.`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(`span`,{className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`,children:A(t,n)}),(0,L.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,L.jsx)(F,{open:o,onOpenChange:s,title:`Listening language`,currentCode:t,configuredProviderId:n,selectLanguage:r,selecting:i})]}):null}function z({assistantId:e,open:t,onOpenChange:n}){return(0,L.jsx)(h.Root,{open:t,onOpenChange:n,children:(0,L.jsx)(h.Content,{size:`md`,children:(0,L.jsx)(B,{assistantId:e,onDone:()=>n(!1)})})})}function B({assistantId:e,onDone:t}){let{available:n,currentModel:r,selectModel:i,selecting:o}=M(e);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(h.Header,{children:[(0,L.jsx)(h.Title,{children:`Voices`}),n&&(0,L.jsx)(h.Description,{children:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`})]}),(0,L.jsx)(h.Body,{children:(0,L.jsx)(j,{assistantId:e,filterBySource:!0,value:r,onChange:i})}),(0,L.jsxs)(h.Footer,{className:`items-center justify-between gap-3`,children:[(0,L.jsx)(O,{}),(0,L.jsx)(a,{variant:`primary`,onClick:t,disabled:o,className:`shrink-0`,children:`Done`})]})]})}function V(){let e=N(),{available:t,voices:n,currentModel:r}=M(e),i=n.find(e=>e.model===r)??n[0],[o,s]=(0,I.useState)(!1),l=_.use.name(),u=l?`${l}’s Voice`:`Voice`;return t&&i?(0,L.jsxs)(P,{title:u,subtitle:ae,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(oe,{description:i.description,className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`}),(0,L.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,L.jsx)(z,{assistantId:e,open:o,onOpenChange:s})]}):(0,L.jsx)(P,{title:u,children:(0,L.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Your assistant speaks through a provider you configured yourself. Set its voice on`,` `,(0,L.jsx)(c,{to:`${v.settings.ai}#text-to-speech`,className:`text-[var(--primary-base)] hover:underline`,children:`Models & Services`}),`.`]})})}var H=[{prefKey:`showUserTranscript`,label:`Show the words you say`,description:`Live transcription while you speak.`},{prefKey:`showAssistantTranscript`,label:`Show the words the assistant says`,description:`Text alongside the spoken response.`}],U=`We recommend keeping both off to start. It feels more like a real conversation.`;function W(){return(0,L.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Recommended off`})}function G({label:e,description:t,showBadge:n,checked:r,onChange:i}){return(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-1`,children:[(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`truncate text-body-medium-lighter text-[var(--content-default)]`,children:e}),n?(0,L.jsx)(W,{}):null]}),t?(0,L.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:t}):null]}),(0,L.jsx)(m,{checked:r,onChange:i,"aria-label":e})]})}function K({showDescription:e=!1,showRecommendedBadge:t=!1}){let n=E.use.showUserTranscript(),r=E.use.showAssistantTranscript(),i=E.use.setShowUserTranscript(),a=E.use.setShowAssistantTranscript(),o={showUserTranscript:{checked:n,onChange:i},showAssistantTranscript:{checked:r,onChange:a}};return(0,L.jsx)(L.Fragment,{children:H.map(n=>{let r=o[n.prefKey];return(0,L.jsx)(G,{label:n.label,description:e?n.description:void 0,showBadge:t,checked:r.checked,onChange:r.onChange},n.prefKey)})})}var q=[{label:`Ctrl`,activator:{kind:`modifierOnly`,modifiers:[`control`]}},{label:`Alt`,activator:{kind:`modifierOnly`,modifiers:[`option`]}},{label:`Ctrl+Shift`,activator:{kind:`modifierOnly`,modifiers:[`control`,`shift`]}}],J={label:`Fn`,activator:S},Y=`text-body-small-default text-[var(--content-tertiary)]`;function se(){let[e]=o(),t=e.get(`tab`);return t===`sounds`?(0,L.jsx)(s,{replace:!0,to:v.settings.sounds}):t===`services`?(0,L.jsx)(s,{replace:!0,to:v.settings.ai}):(0,L.jsx)(ce,{})}function ce(){return(0,L.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,L.jsxs)(X,{heading:`Output`,description:`How your assistant sounds.`,children:[(0,L.jsx)(V,{}),(0,L.jsx)(le,{})]}),(0,L.jsxs)(X,{heading:`Input`,description:`How you talk to your assistant.`,children:[(0,L.jsx)(de,{}),(0,L.jsx)(R,{}),(0,L.jsx)(fe,{}),(0,L.jsx)(me,{})]}),(0,L.jsx)(X,{heading:`Captions`,children:(0,L.jsx)(ue,{})})]})}function le(){let{available:e}=M(N());return e?(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,L.jsx)(p,{className:`h-3.5 w-3.5 shrink-0 text-[var(--content-quiet)]`}),(0,L.jsx)(`span`,{children:`Want to use your own API key for STT or TTS, or set a custom voice?`}),(0,L.jsxs)(c,{to:`${v.settings.ai}#text-to-speech`,className:`inline-flex items-center gap-1 text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:[`Set it up in Models & Services`,(0,L.jsx)(u,{className:`h-3 w-3`})]})]}):null}function X({heading:e,description:t,children:n}){return(0,L.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,L.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wide text-[var(--content-tertiary)]`,children:e}),t&&(0,L.jsx)(`p`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:t})]}),n]})}function ue(){return(0,L.jsx)(P,{title:`Captions`,subtitle:`Show live text of what you and the assistant say during a voice conversation.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsx)(K,{showDescription:!0}),(0,L.jsx)(`p`,{className:`${Y} pt-1`,children:U})]})})}var Z=``;function de(){let[e,t]=(0,I.useState)([]),[i,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(!1),[l,u]=(0,I.useState)(()=>ne()),d=(0,I.useCallback)(async()=>{if(navigator.mediaDevices?.enumerateDevices)try{let e=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`);o(e.length>0&&e.every(e=>!e.label)),t(e.filter(e=>e.deviceId!==``&&e.deviceId!==`default`&&e.deviceId!==`communications`)),c(e.length===0||e.some(e=>!!e.label))}catch{t([]),o(!1),c(!1)}},[]),f=(0,I.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});for(let t of e.getTracks())t.stop()}catch{}d()},[d]);(0,I.useEffect)(()=>{d();let e=navigator.mediaDevices;if(!e?.addEventListener)return;let t=()=>void d();return e.addEventListener(`devicechange`,t),()=>e.removeEventListener(`devicechange`,t)},[d]);let p=(0,I.useMemo)(()=>{let t=e.map((e,t)=>({value:e.deviceId,label:e.label||`Microphone ${t+1}`})),n=l!==Z&&!t.some(e=>e.value===l);return[{value:null,label:`System Default`},...t,...n?[{value:l,label:s?`Saved microphone (not connected)`:`Saved microphone`}]:[]]},[e,l,s]),m=(0,I.useCallback)(e=>{u(e),e===Z?r(y):n(y,e)},[]);return(0,L.jsx)(P,{title:`Microphone`,subtitle:`Which input device is used for dictation and voice conversations.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(g,{options:p,value:l===Z?null:l,onChange:m,onSelectNone:()=>m(Z),"aria-label":`Microphone`})}),i&&(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,L.jsx)(a,{variant:`outlined`,onClick:f,children:`Allow Microphone Access`}),(0,L.jsx)(`span`,{className:Y,children:`Grant microphone access to list your available input devices.`})]})]})})}function fe(){let e=te(),[r,i]=(0,I.useState)(()=>{let n=t(D,``);return n?x(n,{preserveFunction:e}):e?J.activator:{kind:`off`}}),[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)([]),l=(0,I.useRef)(null),u=(0,I.useRef)(!1),d=(0,I.useMemo)(()=>e?[J,...q]:q,[e]),f=r.kind!==`off`,h=f&&!e,g=(0,I.useCallback)(e=>{i(e),n(D,re(e)),o(!1),c([])},[]),_=(0,I.useCallback)(()=>{o(!0),c([]),u.current=!1,requestAnimationFrame(()=>{l.current?.focus()})},[]),v=(0,I.useCallback)(()=>{o(!1),c([]),u.current=!1},[]),y=(0,I.useCallback)(t=>{let n=[];return e&&t.getModifierState(`Fn`)&&n.push(`function`),t.ctrlKey&&n.push(`control`),t.altKey&&n.push(`option`),t.shiftKey&&n.push(`shift`),t.metaKey&&n.push(`command`),n},[e]),w=(0,I.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`){v();return}let t=y(e),n=e.key;if(n===`Control`||n===`Alt`||n===`Shift`||n===`Meta`||n===`Fn`){c(t.includes(`function`)?S.modifiers:b(t));return}if(t.includes(`function`)){g(S);return}u.current=!0,g({kind:`key`,label:n.length===1?n.toUpperCase():n,modifiers:t})},[v,y,g]),E=(0,I.useCallback)(e=>{if(!a)return;e.preventDefault(),e.stopPropagation();let t=e.key;if(t===`Control`||t===`Alt`||t===`Shift`||t===`Meta`||t===`Fn`){if(u.current){u.current=!1,c([]);return}y(e).length===0&&s.length>0&&g({kind:`modifierOnly`,modifiers:s})}},[y,a,s,g]);(0,I.useEffect)(()=>{if(!a)return;let e=e=>{l.current&&!l.current.contains(e.target)&&v()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[v,a]);let O=f&&!d.some(e=>C(e.activator,r));return(0,L.jsx)(P,{title:`Push to Talk`,subtitle:`Hold the activation key to dictate text or start a voice conversation.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,L.jsx)(m,{checked:f,onChange:t=>{t?r.kind===`off`&&g(e?J.activator:ee):g({kind:`off`})},label:`Enable Push to Talk`}),f&&(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsx)(`span`,{className:Y,children:`Activation Key:`}),(0,L.jsxs)(`div`,{ref:l,tabIndex:a?0:-1,onKeyDown:a?w:void 0,onKeyUp:a?E:void 0,className:`flex flex-wrap items-center gap-2 focus:outline-none`,children:[d.map(e=>{let t=C(e.activator,r);return(0,L.jsx)(Q,{label:e.label,selected:t,onClick:()=>g(e.activator)},e.label)}),a?(0,L.jsx)(Q,{label:s.length>0?ie(s):`Press any key…`,selected:!0,recording:!0,onClick:v}):(0,L.jsx)(Q,{label:O?T(r):`Custom`,selected:O,onClick:_})]}),h&&(0,L.jsxs)(`div`,{className:`flex items-start gap-1 pt-1 text-body-small-default text-[var(--content-quiet)]`,children:[(0,L.jsx)(p,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,L.jsx)(`span`,{children:`Push-to-Talk only works while this tab is focused, and browsers may intercept some shortcuts (e.g. Ctrl+T) before the page can see them. For always-on PTT, use the Vellum desktop app.`})]})]})]})})}function Q({label:e,selected:t,recording:n=!1,onClick:r}){return(0,L.jsxs)(`button`,{type:`button`,onClick:r,className:[`inline-flex items-center gap-2 rounded-lg border px-3 py-1.5 text-body-medium-lighter transition-colors`,`border-[var(--border-subtle)]`,t?`bg-[var(--surface-active)]`:`bg-[var(--surface-lift)] hover:bg-[var(--surface-hover)]`,n?`animate-pulse`:``].filter(Boolean).join(` `),children:[(0,L.jsx)(`span`,{className:[`inline-block h-2.5 w-2.5 rounded-full border`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)]`].join(` `)}),(0,L.jsx)(`span`,{className:`text-[var(--content-default)]`,children:e})]})}var pe=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}];function me(){let e=E.use.pauseBeforeReplyMs(),t=E.use.setPauseBeforeReplyMs(),n=E.use.interruptSensitivity(),r=E.use.setInterruptSensitivity(),i=e!==null||n!==null;return(0,L.jsx)(P,{title:`Turn taking`,subtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations — under push to talk, the key decides.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,L.jsx)($,{label:`Pause before reply`,description:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,isDefault:e===null,children:(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(d,{value:(e??1200)/1e3,onValueChange:e=>{typeof e==`number`&&t(Math.round(e*1e3))},min:500/1e3,max:w/1e3,step:.1,showValue:!0,formatValue:e=>`${(typeof e==`number`?e:e[0]).toFixed(1)}s`,"aria-label":`Pause before reply`})})}),(0,L.jsx)($,{label:`Interrupt sensitivity`,description:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,isDefault:n===null,children:(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(f,{items:pe,value:n??`medium`,onChange:r,ariaLabel:`Interrupt sensitivity`})})}),i&&(0,L.jsx)(`div`,{children:(0,L.jsx)(a,{variant:`outlined`,onClick:()=>{t(null),r(null)},children:`Reset to defaults`})})]})})}function $({label:e,description:t,isDefault:n,children:r}){return(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:e}),n&&(0,L.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Default`})]}),(0,L.jsx)(`p`,{className:Y,children:t}),r]})}export{se as VoicePage};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,l as n,o as r}from"./local-settings-Bx7FsNo5.js";import{t as i}from"./react-BFJW0bSv.js";import{t as a}from"./button-BENY-yx_.js";import{h as o,n as s,t as c}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as l}from"./jsx-runtime-D3ZM-ToX.js";import{r as u}from"./middleware-DiHdH8q1.js";import{B as d,R as f}from"./src-DyqTPMO2.js";import{t as p}from"./info-CXkwGlN_.js";import{t as m}from"./toggle-C-v4x7_A.js";import{t as h}from"./modal-DI63s9MQ.js";import{t as g}from"./select-B8-i-CZ4.js";import{t as _}from"./assistant-identity-store-nE-e8KQw.js";import{d as v}from"./routes-iipg2wkc.js";import{C as y,S as b,b as x,d as ee,f as S,h as C,i as w,m as T,o as E,p as D,s as te,t as O,w as ne,x as re,y as ie}from"./voice-providers-note-Cv7vCsDI.js";import{a as k,c as A,n as j,o as M,r as ae,t as oe}from"./voice-list-BS2BNjKN.js";import{t as N}from"./use-active-assistant-id-BvHP5Ojg.js";import{t as P}from"./detail-card-hWrhardR.js";import{t as F}from"./stt-language-picker-modal-BiWHaqFq.js";var I=e(i(),1),L=l();function R(){let{available:e,currentCode:t,configuredProviderId:n,selectLanguage:r,selecting:i}=k(N()),[o,s]=(0,I.useState)(!1);return e?(0,L.jsxs)(P,{title:`Listening language`,subtitle:`The language you speak to your assistant. Applies from your next spoken turn.`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(`span`,{className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`,children:A(t,n)}),(0,L.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,L.jsx)(F,{open:o,onOpenChange:s,title:`Listening language`,currentCode:t,configuredProviderId:n,selectLanguage:r,selecting:i})]}):null}function z({assistantId:e,open:t,onOpenChange:n}){return(0,L.jsx)(h.Root,{open:t,onOpenChange:n,children:(0,L.jsx)(h.Content,{size:`md`,children:(0,L.jsx)(B,{assistantId:e,onDone:()=>n(!1)})})})}function B({assistantId:e,onDone:t}){let{available:n,currentModel:r,selectModel:i,selecting:o}=M(e);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(h.Header,{children:[(0,L.jsx)(h.Title,{children:`Voices`}),n&&(0,L.jsx)(h.Description,{children:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`})]}),(0,L.jsx)(h.Body,{children:(0,L.jsx)(j,{assistantId:e,filterBySource:!0,value:r,onChange:i})}),(0,L.jsxs)(h.Footer,{className:`items-center justify-between gap-3`,children:[(0,L.jsx)(O,{}),(0,L.jsx)(a,{variant:`primary`,onClick:t,disabled:o,className:`shrink-0`,children:`Done`})]})]})}function V(){let e=N(),{available:t,voices:n,currentModel:r}=M(e),i=n.find(e=>e.model===r)??n[0],[o,s]=(0,I.useState)(!1),l=_.use.name(),u=l?`${l}’s Voice`:`Voice`;return t&&i?(0,L.jsxs)(P,{title:u,subtitle:ae,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(oe,{description:i.description,className:`min-w-0 text-body-medium-lighter text-[var(--content-default)]`}),(0,L.jsx)(a,{variant:`outlined`,onClick:()=>s(!0),className:`shrink-0`,children:`Change`})]}),(0,L.jsx)(z,{assistantId:e,open:o,onOpenChange:s})]}):(0,L.jsx)(P,{title:u,children:(0,L.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[`Your assistant speaks through a provider you configured yourself. Set its voice on`,` `,(0,L.jsx)(c,{to:`${v.settings.ai}#text-to-speech`,className:`text-[var(--primary-base)] hover:underline`,children:`Models & Services`}),`.`]})})}var H=[{prefKey:`showUserTranscript`,label:`Show the words you say`,description:`Live transcription while you speak.`},{prefKey:`showAssistantTranscript`,label:`Show the words the assistant says`,description:`Text alongside the spoken response.`}],U=`We recommend keeping both off to start. It feels more like a real conversation.`;function W(){return(0,L.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Recommended off`})}function G({label:e,description:t,showBadge:n,checked:r,onChange:i}){return(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-1`,children:[(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`truncate text-body-medium-lighter text-[var(--content-default)]`,children:e}),n?(0,L.jsx)(W,{}):null]}),t?(0,L.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:t}):null]}),(0,L.jsx)(m,{checked:r,onChange:i,"aria-label":e})]})}function K({showDescription:e=!1,showRecommendedBadge:t=!1}){let n=E.use.showUserTranscript(),r=E.use.showAssistantTranscript(),i=E.use.setShowUserTranscript(),a=E.use.setShowAssistantTranscript(),o={showUserTranscript:{checked:n,onChange:i},showAssistantTranscript:{checked:r,onChange:a}};return(0,L.jsx)(L.Fragment,{children:H.map(n=>{let r=o[n.prefKey];return(0,L.jsx)(G,{label:n.label,description:e?n.description:void 0,showBadge:t,checked:r.checked,onChange:r.onChange},n.prefKey)})})}var q=[{label:`Ctrl`,activator:{kind:`modifierOnly`,modifiers:[`control`]}},{label:`Alt`,activator:{kind:`modifierOnly`,modifiers:[`option`]}},{label:`Ctrl+Shift`,activator:{kind:`modifierOnly`,modifiers:[`control`,`shift`]}}],J={label:`Fn`,activator:S},Y=`text-body-small-default text-[var(--content-tertiary)]`;function se(){let[e]=o(),t=e.get(`tab`);return t===`sounds`?(0,L.jsx)(s,{replace:!0,to:v.settings.sounds}):t===`services`?(0,L.jsx)(s,{replace:!0,to:v.settings.ai}):(0,L.jsx)(ce,{})}function ce(){return(0,L.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[(0,L.jsxs)(X,{heading:`Output`,description:`How your assistant sounds.`,children:[(0,L.jsx)(V,{}),(0,L.jsx)(le,{})]}),(0,L.jsxs)(X,{heading:`Input`,description:`How you talk to your assistant.`,children:[(0,L.jsx)(de,{}),(0,L.jsx)(R,{}),(0,L.jsx)(fe,{}),(0,L.jsx)(me,{})]}),(0,L.jsx)(X,{heading:`Captions`,children:(0,L.jsx)(ue,{})})]})}function le(){let{available:e}=M(N());return e?(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,L.jsx)(p,{className:`h-3.5 w-3.5 shrink-0 text-[var(--content-quiet)]`}),(0,L.jsx)(`span`,{children:`Want to use your own API key for STT or TTS, or set a custom voice?`}),(0,L.jsxs)(c,{to:`${v.settings.ai}#text-to-speech`,className:`inline-flex items-center gap-1 text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:[`Set it up in Models & Services`,(0,L.jsx)(u,{className:`h-3 w-3`})]})]}):null}function X({heading:e,description:t,children:n}){return(0,L.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,L.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wide text-[var(--content-tertiary)]`,children:e}),t&&(0,L.jsx)(`p`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:t})]}),n]})}function ue(){return(0,L.jsx)(P,{title:`Captions`,subtitle:`Show live text of what you and the assistant say during a voice conversation.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsx)(K,{showDescription:!0}),(0,L.jsx)(`p`,{className:`${Y} pt-1`,children:U})]})})}var Z=``;function de(){let[e,t]=(0,I.useState)([]),[i,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(!1),[l,u]=(0,I.useState)(()=>ne()),d=(0,I.useCallback)(async()=>{if(navigator.mediaDevices?.enumerateDevices)try{let e=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`);o(e.length>0&&e.every(e=>!e.label)),t(e.filter(e=>e.deviceId!==``&&e.deviceId!==`default`&&e.deviceId!==`communications`)),c(e.length===0||e.some(e=>!!e.label))}catch{t([]),o(!1),c(!1)}},[]),f=(0,I.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});for(let t of e.getTracks())t.stop()}catch{}d()},[d]);(0,I.useEffect)(()=>{d();let e=navigator.mediaDevices;if(!e?.addEventListener)return;let t=()=>void d();return e.addEventListener(`devicechange`,t),()=>e.removeEventListener(`devicechange`,t)},[d]);let p=(0,I.useMemo)(()=>{let t=e.map((e,t)=>({value:e.deviceId,label:e.label||`Microphone ${t+1}`})),n=l!==Z&&!t.some(e=>e.value===l);return[{value:null,label:`System Default`},...t,...n?[{value:l,label:s?`Saved microphone (not connected)`:`Saved microphone`}]:[]]},[e,l,s]),m=(0,I.useCallback)(e=>{u(e),e===Z?r(y):n(y,e)},[]);return(0,L.jsx)(P,{title:`Microphone`,subtitle:`Which input device is used for dictation and voice conversations.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(g,{options:p,value:l===Z?null:l,onChange:m,onSelectNone:()=>m(Z),"aria-label":`Microphone`})}),i&&(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,L.jsx)(a,{variant:`outlined`,onClick:f,children:`Allow Microphone Access`}),(0,L.jsx)(`span`,{className:Y,children:`Grant microphone access to list your available input devices.`})]})]})})}function fe(){let e=te(),[r,i]=(0,I.useState)(()=>{let n=t(D,``);return n?x(n,{preserveFunction:e}):e?J.activator:{kind:`off`}}),[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)([]),l=(0,I.useRef)(null),u=(0,I.useRef)(!1),d=(0,I.useMemo)(()=>e?[J,...q]:q,[e]),f=r.kind!==`off`,h=f&&!e,g=(0,I.useCallback)(e=>{i(e),n(D,re(e)),o(!1),c([])},[]),_=(0,I.useCallback)(()=>{o(!0),c([]),u.current=!1,requestAnimationFrame(()=>{l.current?.focus()})},[]),v=(0,I.useCallback)(()=>{o(!1),c([]),u.current=!1},[]),y=(0,I.useCallback)(t=>{let n=[];return e&&t.getModifierState(`Fn`)&&n.push(`function`),t.ctrlKey&&n.push(`control`),t.altKey&&n.push(`option`),t.shiftKey&&n.push(`shift`),t.metaKey&&n.push(`command`),n},[e]),w=(0,I.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`){v();return}let t=y(e),n=e.key;if(n===`Control`||n===`Alt`||n===`Shift`||n===`Meta`||n===`Fn`){c(t.includes(`function`)?S.modifiers:b(t));return}if(t.includes(`function`)){g(S);return}u.current=!0,g({kind:`key`,label:n.length===1?n.toUpperCase():n,modifiers:t})},[v,y,g]),E=(0,I.useCallback)(e=>{if(!a)return;e.preventDefault(),e.stopPropagation();let t=e.key;if(t===`Control`||t===`Alt`||t===`Shift`||t===`Meta`||t===`Fn`){if(u.current){u.current=!1,c([]);return}y(e).length===0&&s.length>0&&g({kind:`modifierOnly`,modifiers:s})}},[y,a,s,g]);(0,I.useEffect)(()=>{if(!a)return;let e=e=>{l.current&&!l.current.contains(e.target)&&v()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[v,a]);let O=f&&!d.some(e=>C(e.activator,r));return(0,L.jsx)(P,{title:`Push to Talk`,subtitle:`Hold the activation key to dictate text or start a voice conversation.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,L.jsx)(m,{checked:f,onChange:t=>{t?r.kind===`off`&&g(e?J.activator:ee):g({kind:`off`})},label:`Enable Push to Talk`}),f&&(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsx)(`span`,{className:Y,children:`Activation Key:`}),(0,L.jsxs)(`div`,{ref:l,tabIndex:a?0:-1,onKeyDown:a?w:void 0,onKeyUp:a?E:void 0,className:`flex flex-wrap items-center gap-2 focus:outline-none`,children:[d.map(e=>{let t=C(e.activator,r);return(0,L.jsx)(Q,{label:e.label,selected:t,onClick:()=>g(e.activator)},e.label)}),a?(0,L.jsx)(Q,{label:s.length>0?ie(s):`Press any key…`,selected:!0,recording:!0,onClick:v}):(0,L.jsx)(Q,{label:O?T(r):`Custom`,selected:O,onClick:_})]}),h&&(0,L.jsxs)(`div`,{className:`flex items-start gap-1 pt-1 text-body-small-default text-[var(--content-quiet)]`,children:[(0,L.jsx)(p,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,L.jsx)(`span`,{children:`Push-to-Talk only works while this tab is focused, and browsers may intercept some shortcuts (e.g. Ctrl+T) before the page can see them. For always-on PTT, use the Vellum desktop app.`})]})]})]})})}function Q({label:e,selected:t,recording:n=!1,onClick:r}){return(0,L.jsxs)(`button`,{type:`button`,onClick:r,className:[`inline-flex items-center gap-2 rounded-lg border px-3 py-1.5 text-body-medium-lighter transition-colors`,`border-[var(--border-subtle)]`,t?`bg-[var(--surface-active)]`:`bg-[var(--surface-lift)] hover:bg-[var(--surface-hover)]`,n?`animate-pulse`:``].filter(Boolean).join(` `),children:[(0,L.jsx)(`span`,{className:[`inline-block h-2.5 w-2.5 rounded-full border`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)]`].join(` `)}),(0,L.jsx)(`span`,{className:`text-[var(--content-default)]`,children:e})]})}var pe=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}];function me(){let e=E.use.pauseBeforeReplyMs(),t=E.use.setPauseBeforeReplyMs(),n=E.use.interruptSensitivity(),r=E.use.setInterruptSensitivity(),i=e!==null||n!==null;return(0,L.jsx)(P,{title:`Turn taking`,subtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations — under push to talk, the key decides.`,children:(0,L.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,L.jsx)($,{label:`Pause before reply`,description:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,isDefault:e===null,children:(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(f,{value:(e??1200)/1e3,onValueChange:e=>{typeof e==`number`&&t(Math.round(e*1e3))},min:500/1e3,max:w/1e3,step:.1,showValue:!0,formatValue:e=>`${(typeof e==`number`?e:e[0]).toFixed(1)}s`,"aria-label":`Pause before reply`})})}),(0,L.jsx)($,{label:`Interrupt sensitivity`,description:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,isDefault:n===null,children:(0,L.jsx)(`div`,{className:`max-w-xs`,children:(0,L.jsx)(d,{items:pe,value:n??`medium`,onChange:r,ariaLabel:`Interrupt sensitivity`})})}),i&&(0,L.jsx)(`div`,{children:(0,L.jsx)(a,{variant:`outlined`,onClick:()=>{t(null),r(null)},children:`Reset to defaults`})})]})})}function $({label:e,description:t,isDefault:n,children:r}){return(0,L.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:e}),n&&(0,L.jsx)(`span`,{className:`shrink-0 rounded-full bg-[var(--surface-active)] px-2 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:`Default`})]}),(0,L.jsx)(`p`,{className:Y,children:t}),r]})}export{se as VoicePage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./local-settings-Bx7FsNo5.js";import{t}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{t as r}from"./cn-DFWryB3N.js";import{n as i,t as a}from"./middleware-DiHdH8q1.js";import"./src-
|
|
1
|
+
import{i as e}from"./local-settings-Bx7FsNo5.js";import{t}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{t as r}from"./cn-DFWryB3N.js";import{n as i,t as a}from"./middleware-DiHdH8q1.js";import"./src-DyqTPMO2.js";import{n as o,t as s}from"./create-selectors-DBgi9gD3.js";import{t as c}from"./is-electron-BHXrkjI3.js";import{d as l}from"./routes-iipg2wkc.js";var u=`vellum:voice:inputDeviceId`;function d(){return e(u,``)}function f(){let e=d();return{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,...e?{deviceId:{exact:e}}:{}}}async function p(){let e=f();try{return await navigator.mediaDevices.getUserMedia({audio:e})}catch(t){if(e.deviceId&&t instanceof DOMException&&t.name===`OverconstrainedError`){let{deviceId:t,...n}=e;return navigator.mediaDevices.getUserMedia({audio:n})}throw t}}var m=`vellum:voice:activationKey`,h={kind:`modifierOnly`,modifiers:[`control`]},g={kind:`modifierOnly`,modifiers:[`function`]},_=[`function`,`control`,`option`,`shift`,`command`],v={function:`Fn`,control:`Ctrl`,option:`Alt`,shift:`Shift`,command:`Cmd`};function y(e){return Array.from(new Set(e)).sort((e,t)=>_.indexOf(e)-_.indexOf(t))}function b(e){return y(e).map(e=>v[e]).join(`+`)}function x(e){if(e.kind===`off`)return`Off`;if(e.kind===`modifierOnly`)return b(e.modifiers);let t=b(e.modifiers);return t?`${t}+${e.label}`:e.label}function S(e,t){if(e.kind!==t.kind)return!1;if(e.kind===`off`||t.kind===`off`)return!0;let n=y(e.modifiers),r=y(t.modifiers);return n.length!==r.length||n.some((e,t)=>e!==r[t])?!1:e.kind===`key`&&t.kind===`key`?e.label===t.label:!0}function C(e){return JSON.stringify(e)}function w(e){return e.kind===`modifierOnly`&&e.modifiers.length===1&&e.modifiers[0]===`function`}function T(e){return typeof e==`string`&&_.includes(e)}function E(e,t){let n=e.filter(T);return t.preserveFunction&&n.includes(`function`)?g.modifiers:y(t.preserveFunction?n:n.filter(e=>e!==`function`))}function D(e,t={}){if(!e)return h;if(e===`fn`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?g.modifiers:h.modifiers};if(e===`ctrl`)return h;if(e===`fn_shift`)return{kind:`modifierOnly`,modifiers:t.preserveFunction?g.modifiers:[`shift`]};if(e===`off`)return{kind:`off`};try{let n=JSON.parse(e);if(n.kind===`off`)return{kind:`off`};if(n.kind===`modifierOnly`&&Array.isArray(n.modifiers)){let e=E(n.modifiers,t);return e.length===0?h:{kind:`modifierOnly`,modifiers:e}}if(n.kind===`key`&&typeof n.label==`string`&&Array.isArray(n.modifiers))return{kind:`key`,label:n.label,modifiers:E(n.modifiers,t)}}catch{}return h}function O(e){let t=[];return e.ctrlKey&&t.push(`control`),e.altKey&&t.push(`option`),e.shiftKey&&t.push(`shift`),e.metaKey&&t.push(`command`),t}function k(e){return e===`Control`||e===`Alt`||e===`Shift`||e===`Meta`||e===`Fn`}function A(e,t){if(e.length!==t.length)return!1;let n=y(e),r=y(t);return n.every((e,t)=>e===r[t])}function j(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=O(e),r=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?k(e.key)?A(n,r):!1:(e.key.length===1?e.key.toUpperCase():e.key)===t.label?A(n,r):!1}function M(e,t){if(t.kind===`off`||t.modifiers.includes(`function`))return!1;let n=t.modifiers.filter(e=>e!==`function`);return t.kind===`modifierOnly`?!!(e.key===`Control`&&n.includes(`control`)||e.key===`Alt`&&n.includes(`option`)||e.key===`Shift`&&n.includes(`shift`)||e.key===`Meta`&&n.includes(`command`)):(e.key.length===1?e.key.toUpperCase():e.key)===t.label}function N(){return c()}function P(){return c()&&typeof window.vellum?.helper?.hotkey?.fnPushToTalk==`function`&&typeof window.vellum?.helper?.hotkey?.onEvent==`function`}async function F(e){if(!P())return!1;try{return(await window.vellum.helper.hotkey.fnPushToTalk(e)).ok}catch{return!1}}function I(e){return P()?window.vellum.helper.hotkey.onEvent(e):()=>void 0}var L=1200,R=3e3,z=`medium`,B={high:100,medium:250,low:600};function V(e){return B[e]}function H(e){return Number.isFinite(e)?Math.round(Math.min(R,Math.max(500,e))):L}var U={showUserTranscript:!1,showAssistantTranscript:!1,firstRunSeen:!1,pauseBeforeReplyMs:null,interruptSensitivity:null},W=`vellum:voice-prefs`,G=o()(i((e,t)=>({...U,setShowUserTranscript:t=>e({showUserTranscript:t}),setShowAssistantTranscript:t=>e({showAssistantTranscript:t}),markFirstRunSeen:()=>{t().firstRunSeen||e({firstRunSeen:!0})},setPauseBeforeReplyMs:t=>e({pauseBeforeReplyMs:t===null?null:H(t)}),setInterruptSensitivity:t=>e({interruptSensitivity:t})}),{name:W,storage:a(()=>localStorage),partialize:e=>({showUserTranscript:e.showUserTranscript,showAssistantTranscript:e.showAssistantTranscript,firstRunSeen:e.firstRunSeen,pauseBeforeReplyMs:e.pauseBeforeReplyMs,interruptSensitivity:e.interruptSensitivity})})),K=s(G);typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===W&&G.persist.rehydrate()});var q=n();function J({className:e}){return(0,q.jsxs)(`p`,{className:r(`text-label-small-default text-[var(--content-tertiary)]`,e),children:[`Speech providers, transcription, and API keys live in`,` `,(0,q.jsx)(t,{to:`${l.settings.ai}#text-to-speech`,className:`text-[var(--content-secondary)] underline decoration-[var(--border-element)] underline-offset-2 hover:text-[var(--content-default)]`,children:`Models & Services`}),`.`]})}export{u as C,y as S,p as T,M as _,V as a,D as b,F as c,h as d,g as f,j as g,S as h,R as i,I as l,x as m,z as n,K as o,m as p,L as r,N as s,J as t,P as u,w as v,d as w,C as x,b as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./button-BENY-yx_.js";import{d as t}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{p as r}from"./local-mode-BfEgOekp.js";import{d as i}from"./routes-iipg2wkc.js";import{t as a}from"./use-onboarding-login-
|
|
1
|
+
import{t as e}from"./button-BENY-yx_.js";import{d as t}from"./chunk-5KNZJZUH-BUqIilZr.js";import{t as n}from"./jsx-runtime-D3ZM-ToX.js";import{p as r}from"./local-mode-BfEgOekp.js";import{d as i}from"./routes-iipg2wkc.js";import{t as a}from"./use-onboarding-login-Cw_9Ydsv.js";import{t as o}from"./onboarding-layout-C534GRct.js";var s=n();function c(){let n=t(),{loading:c,error:l,login:u,cancel:d}=a();return(0,s.jsx)(o,{children:(0,s.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center px-6 pb-40 text-[var(--content-default)]`,children:(0,s.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:[(0,s.jsx)(`h1`,{className:`text-5xl font-normal tracking-tight`,style:{fontFamily:`var(--font-serif)`,animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Welcome to Vellum`}),(0,s.jsx)(`p`,{className:`mt-3 text-body-medium-lighter text-[var(--content-tertiary)]`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Your own personal intelligence is just a step away.`}),l&&(0,s.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:l}),(0,s.jsxs)(`div`,{className:`mt-15 flex w-full max-w-sm flex-col gap-3`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,s.jsx)(e,{variant:`primary`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:c?d:()=>void u(),children:c?`Cancel`:`Log In`}),(0,s.jsx)(e,{variant:`ghost`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:()=>{c&&d(),r()?n(i.selectAssistant):n(i.onboarding.hosting)},children:`Continue without account`})]})]})})})}export{c as WelcomeScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-BENY-yx_.js";import{t as r}from"./jsx-runtime-D3ZM-ToX.js";import{t as i}from"./typography-BeUa5Fd-.js";import{t as a}from"./arrow-down-to-line-DmG4pLoU.js";import{t as o}from"./arrow-left-BikDV6F2.js";import{n as s,r as c,t as l}from"./metric-card-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-BENY-yx_.js";import{t as r}from"./jsx-runtime-D3ZM-ToX.js";import{t as i}from"./typography-BeUa5Fd-.js";import{t as a}from"./arrow-down-to-line-DmG4pLoU.js";import{t as o}from"./arrow-left-BikDV6F2.js";import{n as s,r as c,t as l}from"./metric-card-BSJPacNm.js";import{t as u}from"./ban-Dk1OXyCw.js";import{t as d}from"./chevron-right-DBGgpEiZ.js";import{t as f}from"./circle-check-q8BVdbgw.js";import"./src-DyqTPMO2.js";import{t as p}from"./square-CE8V_WXJ.js";import{t as m}from"./triangle-alert-CB4pJgCL.js";import{t as h}from"./users-XI0CRYkf.js";import{t as g}from"./workflow-CXyPzVz4.js";import{t as _}from"./x-338EsJDP.js";import{n as v,r as y,t as b}from"./workflow-status-AIHLnh_i.js";import{t as x}from"./proxy-B4sTDdE4.js";import{t as S}from"./AnimatePresence-D41IKJOi.js";import{t as C}from"./use-reduced-motion-CaGZSwLZ.js";import{t as w}from"./three-dot-indicator-BQxSg8G2.js";import{t as T}from"./avatar-renderer-CsRuhhXn.js";import{n as E}from"./use-bundled-avatar-components-CJR9zw0E.js";import{t as D}from"./avatar-subagent-CvC1Sf9s.js";import{t as O}from"./status-badge-pill---iRVZ8q.js";var k=e(t(),1),A=r();function j({onClick:e,ariaLabel:t}){return(0,A.jsxs)(`button`,{type:`button`,"aria-label":t,onClick:e,className:`flex h-8 shrink-0 cursor-pointer items-center gap-1.5 rounded-lg border border-[var(--system-negative-strong)] bg-transparent px-2.5 py-1.5 text-[var(--system-negative-strong)] transition-colors hover:bg-[var(--system-negative-weak)]`,children:[(0,A.jsx)(p,{className:`h-3 w-3`,fill:`currentColor`}),(0,A.jsx)(i,{variant:`label-small-default`,children:`Stop`})]})}function M({title:e,body:t,emptyText:n}){return(0,A.jsxs)(`div`,{className:`mb-5`,children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-2 text-[var(--content-emphasised)]`,children:e}),t?(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`whitespace-pre-wrap break-words leading-relaxed text-[var(--content-default)]`,children:t}):(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`text-[var(--content-tertiary)]`,children:n})]})}function N({leaf:e}){let t=e.status===`running`?`Running…`:`No result summary`;return(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-2 gap-3`,children:[(0,A.jsx)(l,{icon:(0,A.jsx)(a,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens??0,format:e=>s(Math.round(e)),label:`Input`}),(0,A.jsx)(l,{icon:(0,A.jsx)(c,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens??0,format:e=>s(Math.round(e)),label:`Output`})]}),(0,A.jsx)(M,{title:`Prompt`,body:e.promptSummary,emptyText:`No prompt summary`}),(0,A.jsx)(M,{title:`Result`,body:e.resultSummary,emptyText:t})]})}function P({status:e}){return(0,A.jsx)(O,{color:v(e),label:y(e)})}function F(e){switch(e){case`completed`:return`var(--system-positive-strong)`;case`failed`:return`var(--system-negative-strong)`;case`cancelled`:return`var(--content-secondary)`;default:return`var(--primary-base)`}}function I(e){switch(e){case`completed`:return`Completed`;case`failed`:return`Failed`;case`cancelled`:return`Cancelled`;default:return`Running`}}function L({status:e}){return(0,A.jsx)(O,{color:F(e),label:I(e)})}function R({status:e}){let t=C(),n=`h-3.5 w-3.5 shrink-0`,r;return r=e===`running`?(0,A.jsx)(w,{className:`shrink-0`,dotSize:4,gap:2}):e===`completed`?(0,A.jsx)(f,{className:n,style:{color:`var(--system-positive-strong)`}}):e===`failed`?(0,A.jsx)(m,{className:n,style:{color:`var(--system-negative-strong)`}}):(0,A.jsx)(u,{className:n,style:{color:`var(--content-secondary)`},role:`img`,"aria-label":`Cancelled`}),(0,A.jsx)(S,{mode:`wait`,initial:!1,children:(0,A.jsx)(x.span,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:t?{duration:0}:{duration:.15,ease:[.16,1,.3,1]},className:`flex shrink-0 items-center`,children:r},e)})}function z({runId:e,leaf:t,components:n,onSelect:r}){let a=t.label??`Subagent ${t.seq}`,o=t.promptSummary,s=D(`${e}:${t.seq}`);return(0,A.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Open ${a} details`,className:`flex w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] px-2 py-1.5 text-left transition-colors hover:bg-[var(--surface-overlay)]`,children:(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,A.jsx)(R,{status:t.status}),n?(0,A.jsx)(T,{components:n,bodyShapeId:s.bodyShape,eyeStyleId:s.eyeStyle,colorId:s.color,size:16}):(0,A.jsx)(`div`,{style:{width:16,height:16,flexShrink:0},"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-medium-default`,title:a,className:`max-w-[60%] shrink-0 truncate text-[var(--content-default)]`,children:a}),o&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:`shrink-0 text-[var(--content-tertiary)] opacity-10`,children:`|`}),(0,A.jsx)(i,{variant:`body-medium-lighter`,title:o,className:`min-w-0 truncate text-[var(--content-tertiary)]`,children:o})]})]})})}function B({entry:e,onClose:t,onStop:r,onRequestJournal:u}){let f=b(e.status),p=C(),m=e.label??e.runId,v=e.agentsSpawned||e.leaves.size,y=E(),S=[...e.leaves.values()].sort((e,t)=>e.seq-t.seq),[w,O]=(0,k.useState)(null),[M,F]=(0,k.useState)(e.runId);M!==e.runId&&(F(e.runId),O(null));let I=w==null?void 0:e.leaves.get(w),R=I?D(`${e.runId}:${I.seq}`):void 0,B=(0,k.useCallback)(()=>O(null),[]),V=I?I.label??`Subagent ${I.seq}`:``,H=I?V:m,U=f?`live`:`final`;return(0,k.useEffect)(()=>{u?.(e.runId)},[e.runId,U,u]),(0,A.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden rounded-xl bg-[var(--surface-lift)]`,children:[I&&(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--border-hover)] px-5 py-3`,children:[(0,A.jsx)(`button`,{type:`button`,onClick:B,title:m,className:`min-w-0 shrink cursor-pointer truncate text-left text-[var(--content-default)] hover:underline`,children:(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,children:m})}),(0,A.jsx)(d,{className:`h-2.5 w-2.5 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,title:V,className:`min-w-0 shrink truncate text-[var(--content-secondary)]`,children:V})]}),(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-hover)] px-5 py-4`,children:[I&&(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(o,{}),onClick:B,"aria-label":`Back to subagents`,tooltip:`Back`,className:`shrink-0 rounded-lg`}),I?y&&R?(0,A.jsx)(T,{components:y,bodyShapeId:R.bodyShape,eyeStyleId:R.eyeStyle,colorId:R.color,size:32}):(0,A.jsx)(`div`,{style:{width:32,height:32,flexShrink:0},"aria-hidden":!0}):(0,A.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-[6px] bg-[var(--surface-overlay)]`,children:(0,A.jsx)(g,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,A.jsx)(i,{variant:`title-medium`,title:H,className:`min-w-0 shrink truncate text-[var(--content-default)]`,children:H}),I?(0,A.jsx)(L,{status:I.status}):(0,A.jsx)(P,{status:e.status}),(0,A.jsx)(`span`,{className:`flex-1`}),f&&r&&(0,A.jsx)(j,{onClick:()=>r(e.runId),ariaLabel:`Stop workflow`}),(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(_,{}),onClick:t,"aria-label":`Close workflow detail`,tooltip:`Close`,className:`shrink-0 rounded-lg`})]}),(0,A.jsx)(`div`,{className:`flex-1 overflow-y-auto px-5 py-5`,children:(0,A.jsx)(x.div,{initial:{opacity:0},animate:{opacity:1},transition:p?{duration:0}:{duration:.18,ease:[.16,1,.3,1]},children:I?(0,A.jsx)(N,{leaf:I}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-3 gap-3`,children:[(0,A.jsx)(l,{icon:(0,A.jsx)(a,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens,format:e=>s(Math.round(e)),label:`Input`}),(0,A.jsx)(l,{icon:(0,A.jsx)(c,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens,format:e=>s(Math.round(e)),label:`Output`}),(0,A.jsx)(l,{icon:(0,A.jsx)(h,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:v,format:e=>s(Math.round(e)),label:`Agents`})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-4 text-[var(--content-emphasised)]`,children:`Subagents`}),S.length===0?(0,A.jsx)(i,{variant:`body-small-default`,className:`py-4 text-center text-[var(--content-tertiary)]`,children:`No subagents yet`}):(0,A.jsx)(`div`,{className:`flex flex-col gap-1`,children:S.map(t=>(0,A.jsx)(z,{runId:e.runId,leaf:t,components:y,onSelect:()=>O(t.seq)},t.seq))})]})]})},I?String(I.seq):`list`)})]})}export{B as WorkflowDetailPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-BENY-yx_.js";import{h as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./useMutation-CXGTrp4W.js";import{t as s}from"./jsx-runtime-D3ZM-ToX.js";import{t as c}from"./queryOptions-CMSBCFOf.js";import{t as l}from"./createLucideIcon-C1mdGPB9.js";import{t as u}from"./chevron-down-CrFV6lfm.js";import{t as d}from"./chevron-right-DBGgpEiZ.js";import{t as f}from"./menu-DKE_-iVc.js";import{F as p,N as m,P as h}from"./src-BMRW2yQf.js";import{t as g}from"./download-Byg0fi0d.js";import{t as _}from"./eye-off-BwU7XK4M.js";import{t as v}from"./eye-GcssNJdY.js";import{t as y}from"./file-plus-D0O_zjgz.js";import{t as b}from"./file-text-DDbRSMUn.js";import{t as x}from"./file-CTdxLT0k.js";import{t as S}from"./folder-open-BBs1-i8r.js";import{n as C,r as w,t as T}from"./video-BS0zvFDX.js";import{t as E}from"./folder-DBR-Zigu.js";import{t as D}from"./loader-circle-DOtGXcds.js";import{t as O}from"./pencil-DidiUknI.js";import{t as k}from"./plus-DnH9Pjq4.js";import{t as A}from"./search-D2xMZu1P.js";import{t as j}from"./trash-2-BKXSi5Tj.js";import{t as M}from"./x-338EsJDP.js";import{t as N}from"./input-DmHXRXaB.js";import{t as P}from"./modal-DI63s9MQ.js";import{t as ee}from"./confirm-dialog-zx8L9sUi.js";import{n as F,t as I}from"./file-markdown-DMq6D4CV.js";import{Gr as L,Jr as te,Kr as R,Wr as ne,Xr as z,Zr as re,qr as ie}from"./sdk.gen-CBPZ2IdN.js";import{n as B}from"./use-is-mobile-BP8UePsY.js";import{n as V,r as H,t as ae}from"./workspace-tree-query-Djht8L1-.js";import{t as U}from"./use-active-assistant-id-BvHP5Ojg.js";import{n as oe,t as se}from"./mobile-sidebar-drawer-B0rTd7jy.js";import{i as W,n as ce,r as G,t as K}from"./file-editor-BQUkusyI.js";import{t as q}from"./format-file-size-iBkFVy8w.js";var le=l(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ue=l(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),J=e(t(),1);function de(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function fe(e,t){return de(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function pe(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function Y(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var X=s();function Z(e){let{assistantId:t,path:n,name:r,showHidden:i}=e,[a,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(!1);return{isDownloading:a,error:s,download:(0,J.useCallback)(async()=>{c(!1),o(!0);try{await H({assistantId:t,path:n,filename:r,showHidden:i})}catch{c(!0)}finally{o(!1)}},[t,n,r,i])}}function me({assistantId:e,path:t,name:r,showHidden:i}){let{isDownloading:a,error:o,download:s}=Z({assistantId:e,path:t,name:r,showHidden:i});return(0,X.jsx)(n,{variant:`ghost`,size:`regular`,iconOnly:a?(0,X.jsx)(D,{className:`animate-spin`,"aria-hidden":!0}):(0,X.jsx)(g,{"aria-hidden":!0}),onClick:()=>void s(),disabled:a,"aria-label":`Download ${r}`,tooltip:o?`Download failed. Try again.`:`Download`})}function he(e){return c({queryFn:async()=>{let{data:t,error:n}=await R({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function ge({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=b;return n.startsWith(`image/`)?r=C:n.startsWith(`video/`)?r=T:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=x),(0,X.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,X.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function _e({viewMode:e,onChange:t}){return(0,X.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,X.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,X.jsx)(ge,{mimeType:t}),(0,X.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,X.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:q(n)})]}),r]})}function ve({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await L({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,J.useState)(null);return(0,J.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,X.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,X.jsx)(D,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,X.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,X.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,X.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,X.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function ye({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let{isDownloading:c,error:l,download:u}=Z({assistantId:e,path:t,name:r,showHidden:s});return(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:r,mimeType:i,size:a}),(0,X.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,X.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,X.jsx)(x,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,X.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,X.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,X.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,X.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:q(a,`Unknown size`)}),o&&(0,X.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(o).toLocaleString()]})]}),(0,X.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:c?(0,X.jsx)(D,{className:`animate-spin`,"aria-hidden":!0}):(0,X.jsx)(g,{"aria-hidden":!0}),onClick:u,disabled:c,"aria-label":`Download ${r}`,className:`mt-4`,children:c?`Downloading…`:`Download`}),l&&(0,X.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:`Download failed. Try again.`})]})})]})}function be({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...he({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,g]=(0,J.useState)(null),[_,v]=(0,J.useState)(null);(0,J.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;g(e=>e==null?e:n(e)),v(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,J.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);g(e=>e!=null&&t(e)?null:e),v(e=>e!=null&&t(e.path)?null:e)},[d]);let y=h!=null&&h===t,b=p?.content??``,x=_?.path===t?_.content:b,C=()=>{g(null),v(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await re({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{g(e=>e===t.path?null:e),v(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),T=x!==b,E=(0,J.useCallback)(()=>{t&&T&&!w.isPending&&w.mutate({path:t,content:x})},[t,T,w,x]);if(!t)return(0,X.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,X.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,X.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,X.jsx)(S,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,X.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,X.jsx)(D,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,X.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,X.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let O=p.mimeType??`application/octet-stream`,k=p.name??t.split(`/`).pop()??t,A=F(k,O),j=fe(k,O),M=p.content!=null&&!A&&!j,N=t?Y(t):!0,P=y&&(0,X.jsx)(ce,{isDirty:T,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:E,onDiscard:C});if(A&&p.content!=null){let e=y?x:p.content;return(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:k,mimeType:O,rightContent:(0,X.jsx)(_e,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,X.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,X.jsx)(K,{content:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,X.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,X.jsx)(I,{content:e})}):y?(0,X.jsx)(G,{value:x,onChange:e=>v({path:t,content:e}),onSave:E}):(0,X.jsx)(W,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}if(j&&p.content!=null){let e=y?x:p.content,n=pe(e);return(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:k,mimeType:O,rightContent:(0,X.jsx)(_e,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,X.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,X.jsx)(K,{content:s===`preview`?n:e,downloadContent:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,X.jsx)(W,{content:n,readOnly:!0,whiteSpace:`pre`}):y?(0,X.jsx)(G,{value:x,onChange:e=>v({path:t,content:e}),onSave:E}):(0,X.jsx)(W,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}return M?(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,X.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,X.jsx)(K,{content:y?x:p.content??``,fileName:k,mimeType:O,showEdit:!N,isEditing:y,onToggleEdit:()=>y?C():g(t)}),y?(0,X.jsx)(G,{value:x,onChange:e=>v({path:t,content:e}),onSave:E}):(0,X.jsx)(W,{content:p.content??``,readOnly:N,onStartEdit:()=>g(t)})]}),P]}):O.startsWith(`image/`)||O.startsWith(`video/`)?(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:k,mimeType:O,size:p.size,rightContent:(0,X.jsx)(me,{assistantId:e,path:t,name:k,showHidden:r})}),(0,X.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,X.jsx)(ve,{assistantId:e,path:t,mimeType:O,showHidden:r})})]}):(0,X.jsx)(ye,{assistantId:e,path:t,name:k,mimeType:O,size:p.size,modifiedAt:p.modifiedAt,showHidden:r})}function xe(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}async function Se(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await z({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function Ce({entry:e}){return e.type===`directory`?(0,X.jsx)(E,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,X.jsx)(C,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,X.jsx)(T,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,X.jsx)(b,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function we({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:g}){let _=e.path??``,v=e.name??``,b=e.type===`directory`,x=n.has(_),S=r===_,C=v.startsWith(`.`),T=!Y(_),E=b&&(x||s.length>0),{data:D}=a({...V({assistantId:t,path:_,showHidden:i,includeDirSizes:o===`size`}),enabled:b&&E}),k=(0,J.useMemo)(()=>xe(D?.entries??[],o),[D?.entries,o]),A=s===``||v.toLowerCase().includes(s);if(s!==``&&!b&&!A)return null;let M=(0,X.jsxs)(`button`,{onClick:()=>{b?c(_):l(_)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${g*14+8}px`,paddingRight:`8px`,color:S?`var(--content-default)`:C?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:S?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:C&&!S?.7:1},children:[b?E?(0,X.jsx)(u,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,X.jsx)(d,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,X.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,X.jsx)(Ce,{entry:e}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:v}),e.size!=null&&(0,X.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:q(e.size)})]});return(0,X.jsxs)(`div`,{children:[T?(0,X.jsxs)(h.Root,{children:[(0,X.jsx)(h.Trigger,{children:M}),(0,X.jsxs)(h.Content,{children:[b&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(h.Item,{leftIcon:(0,X.jsx)(y,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`file`,parentPath:_}),children:`New File`}),(0,X.jsx)(h.Item,{leftIcon:(0,X.jsx)(w,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`folder`,parentPath:_}),children:`New Folder`}),(0,X.jsx)(h.Separator,{})]}),(0,X.jsx)(h.Item,{leftIcon:(0,X.jsx)(j,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:_,name:v,isDirectory:b}),children:`Delete`}),(0,X.jsx)(h.Item,{leftIcon:(0,X.jsx)(O,{className:`h-3.5 w-3.5`}),onSelect:()=>p({path:_,name:v,isDirectory:b}),children:`Rename`})]})]}):M,b&&E&&k.length>0&&(0,X.jsx)(`div`,{children:k.map(e=>(0,X.jsx)(we,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:g+1},e.path))})]})}function Te({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,J.useRef)(null),[d,f]=(0,J.useState)(a??``),p=d.trim(),m=p.length>0&&(/[/\\]/.test(p)||p===`.`||p===`..`),h=p.length>0&&!m&&!c;return(0,X.jsx)(P.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,X.jsx)(P.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,X.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),h&&s(p)},children:[(0,X.jsx)(P.Header,{children:(0,X.jsx)(P.Title,{children:e})}),(0,X.jsx)(P.Body,{children:(0,X.jsx)(N,{ref:u,label:`Name`,value:d,onChange:e=>f(e.target.value),placeholder:t,errorText:l??(m?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,X.jsxs)(P.Footer,{children:[(0,X.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,X.jsx)(n,{type:`submit`,variant:`primary`,disabled:!h,children:c?i:r})]})]})})})}function Ee({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:m,onPathRenamed:h}){let g=i(),[y,b]=(0,J.useState)(``),x=y.trim().toLowerCase(),[S,C]=(0,J.useState)(!1),[w,T]=(0,J.useState)(null),[E,D]=(0,J.useState)(null),O=(0,J.useCallback)(()=>{T(null),D(null)},[]),{data:k,isLoading:j}=a(V({assistantId:e,showHidden:s,includeDirSizes:c===`size`})),P=(0,J.useMemo)(()=>xe(k?.entries??[],c),[k?.entries,c]),F=(0,J.useCallback)(()=>{for(let e of[ae,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])g.invalidateQueries({queryKey:[e]})},[g]),I=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await Se(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await re({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await ie({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{O(),F(),e.parentPath&&u(e.parentPath),e.kind===`file`?d(e.path):u(e.path)},onError:e=>{D(e instanceof Error?e.message:`Failed to create.`)}}),L=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await Se(e,r,t.newName,i);let{error:o,response:s}=await te({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{O(),F(),h(e,t)},onError:e=>{D(e instanceof Error?e.message:`Failed to rename.`)}}),R=(0,J.useCallback)(e=>{D(null),T({type:`create`,...e})},[]),z=(0,J.useCallback)(e=>{D(null),T({type:`rename`,path:e.path,name:e.name})},[]),[B,H]=(0,J.useState)(null),U=o({mutationFn:async t=>{let{error:n,response:r}=await ne({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{H(null),F(),m(e.path)}}),oe=(0,J.useCallback)(e=>{U.reset(),H(e)},[U]);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,X.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,X.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,X.jsx)(ue,{"aria-hidden":!0}):(0,X.jsx)(le,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,X.jsx)(v,{"aria-hidden":!0}):(0,X.jsx)(_,{"aria-hidden":!0}),onClick:f,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,X.jsx)(De,{open:S,onOpenChange:C,onSelectKind:e=>{C(!1),R({kind:e,parentPath:``})}})]})]}),(0,X.jsx)(`div`,{className:`px-3 py-2`,children:(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsx)(N,{type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`Search files`,leftIcon:(0,X.jsx)(A,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),y&&(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,X.jsx)(M,{"aria-hidden":!0}),onClick:()=>b(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,X.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:j?(0,X.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,X.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):P.length?P.map(n=>(0,X.jsx)(we,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:x,onToggleExpand:l,onSelectPath:d,onRequestDelete:oe,onRequestRename:z,onRequestCreate:R,depth:0},n.path)):(0,X.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),w?.type===`create`&&(0,X.jsx)(Te,{title:w.kind===`file`?`New File`:`New Folder`,placeholder:w.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:O,onConfirm:e=>{D(null),I.mutate({kind:w.kind,parentPath:w.parentPath,name:e})},pending:I.isPending,error:E},`create-${w.kind}-${w.parentPath}`),w?.type===`rename`&&(0,X.jsx)(Te,{title:`Rename`,placeholder:w.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:w.name,onCancel:O,onConfirm:e=>{if(e===w.name){O();return}D(null),L.mutate({oldPath:w.path,newName:e})},pending:L.isPending,error:E},`rename-${w.path}`),(0,X.jsx)(ee,{open:B!==null,title:B?.isDirectory?`Delete Folder`:`Delete File`,message:(0,X.jsxs)(X.Fragment,{children:[`Are you sure you want to delete`,` `,(0,X.jsx)(`span`,{style:{color:`var(--content-default)`},children:B?.name}),B?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,U.error&&(0,X.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:U.error.message})]}),confirmLabel:U.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:U.isPending,onConfirm:()=>{B&&U.mutate(B)},onCancel:()=>H(null)})]})}function De({open:e,onOpenChange:t,onSelectKind:r}){return B()?(0,X.jsxs)(p.Root,{open:e,onOpenChange:t,children:[(0,X.jsx)(p.Trigger,{asChild:!0,children:(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,X.jsx)(k,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,X.jsxs)(p.Content,{children:[(0,X.jsx)(p.Header,{className:`sr-only`,children:(0,X.jsx)(p.Title,{children:`Create new`})}),(0,X.jsxs)(p.Body,{className:`pt-0`,children:[(0,X.jsx)(m,{icon:y,label:`New File`,onSelect:()=>r(`file`)}),(0,X.jsx)(m,{icon:w,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,X.jsxs)(f.Root,{open:e,onOpenChange:t,children:[(0,X.jsx)(f.Trigger,{asChild:!0,children:(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,X.jsx)(k,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,X.jsxs)(f.Content,{align:`end`,sideOffset:4,children:[(0,X.jsx)(f.Item,{leftIcon:(0,X.jsx)(y,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,X.jsx)(f.Item,{leftIcon:(0,X.jsx)(w,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function $(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function Oe({assistantId:e}){let[t,n]=r(),[i,a]=(0,J.useState)(()=>{let e=t.get(`file`);return e?$(e):new Set}),[o,s]=(0,J.useState)(()=>t.get(`file`)),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,J.useState)(`preview`);(0,J.useEffect)(()=>{let e=t.get(`file`);e&&(s(e),a(t=>{let n=new Set(t);for(let t of $(e))n.add(t);return n.size===t.size?t:n}),n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0}))},[t,n]);let m=(0,J.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,J.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,J.useState)(!1),v=(0,J.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,J.useState)(null),x=(0,J.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,J.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,J.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,X.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,X.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,X.jsx)(oe,{onClick:()=>_(!0)})}),(0,X.jsx)(se,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,X.jsx)(Ee,{...w})}),(0,X.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,X.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,X.jsx)(Ee,{...w})}),(0,X.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,X.jsx)(be,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function ke(){return(0,X.jsx)(Oe,{assistantId:U()})}export{ke as WorkspacePage};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-BFJW0bSv.js";import{t as n}from"./button-BENY-yx_.js";import{h as r}from"./chunk-5KNZJZUH-BUqIilZr.js";import{n as i}from"./QueryClientProvider-CMu7CkQU.js";import{t as a}from"./useQuery-Bz-fbQ-m.js";import{t as o}from"./useMutation-CXGTrp4W.js";import{t as s}from"./jsx-runtime-D3ZM-ToX.js";import{t as c}from"./queryOptions-CMSBCFOf.js";import{t as l}from"./createLucideIcon-C1mdGPB9.js";import{t as u}from"./chevron-down-CrFV6lfm.js";import{t as d}from"./chevron-right-DBGgpEiZ.js";import{t as f}from"./menu-DKE_-iVc.js";import{F as p,I as m,L as h}from"./src-DyqTPMO2.js";import{t as g}from"./download-Byg0fi0d.js";import{t as _}from"./eye-off-BwU7XK4M.js";import{t as v}from"./eye-GcssNJdY.js";import{t as y}from"./file-plus-D0O_zjgz.js";import{t as b}from"./file-text-DDbRSMUn.js";import{t as x}from"./file-CTdxLT0k.js";import{t as S}from"./folder-open-BBs1-i8r.js";import{n as C,r as w,t as T}from"./video-BS0zvFDX.js";import{t as E}from"./folder-DBR-Zigu.js";import{t as D}from"./loader-circle-DOtGXcds.js";import{t as O}from"./pencil-DidiUknI.js";import{t as k}from"./plus-DnH9Pjq4.js";import{t as A}from"./search-D2xMZu1P.js";import{t as j}from"./trash-2-BKXSi5Tj.js";import{t as M}from"./x-338EsJDP.js";import{t as N}from"./input-DmHXRXaB.js";import{t as P}from"./modal-DI63s9MQ.js";import{t as ee}from"./confirm-dialog-zx8L9sUi.js";import{n as F,t as I}from"./file-markdown-CGC6ZrPT.js";import{Gr as L,Jr as te,Kr as R,Wr as ne,Xr as z,Zr as re,qr as ie}from"./sdk.gen-CBPZ2IdN.js";import{n as B}from"./use-is-mobile-BP8UePsY.js";import{n as V,r as H,t as ae}from"./workspace-tree-query-Djht8L1-.js";import{t as U}from"./use-active-assistant-id-BvHP5Ojg.js";import{n as oe,t as se}from"./mobile-sidebar-drawer-BGHwfePU.js";import{i as W,n as ce,r as G,t as K}from"./file-editor-DOnVeKOG.js";import{t as q}from"./format-file-size-iBkFVy8w.js";var le=l(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ue=l(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),J=e(t(),1);function de(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function fe(e,t){return de(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function pe(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function Y(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var X=s();function Z(e){let{assistantId:t,path:n,name:r,showHidden:i}=e,[a,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(!1);return{isDownloading:a,error:s,download:(0,J.useCallback)(async()=>{c(!1),o(!0);try{await H({assistantId:t,path:n,filename:r,showHidden:i})}catch{c(!0)}finally{o(!1)}},[t,n,r,i])}}function me({assistantId:e,path:t,name:r,showHidden:i}){let{isDownloading:a,error:o,download:s}=Z({assistantId:e,path:t,name:r,showHidden:i});return(0,X.jsx)(n,{variant:`ghost`,size:`regular`,iconOnly:a?(0,X.jsx)(D,{className:`animate-spin`,"aria-hidden":!0}):(0,X.jsx)(g,{"aria-hidden":!0}),onClick:()=>void s(),disabled:a,"aria-label":`Download ${r}`,tooltip:o?`Download failed. Try again.`:`Download`})}function he(e){return c({queryFn:async()=>{let{data:t,error:n}=await R({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function ge({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=b;return n.startsWith(`image/`)?r=C:n.startsWith(`video/`)?r=T:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=x),(0,X.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,X.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function _e({viewMode:e,onChange:t}){return(0,X.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,X.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,X.jsx)(ge,{mimeType:t}),(0,X.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,X.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:q(n)})]}),r]})}function ve({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await L({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,J.useState)(null);return(0,J.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,X.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,X.jsx)(D,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,X.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,X.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,X.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,X.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function ye({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let{isDownloading:c,error:l,download:u}=Z({assistantId:e,path:t,name:r,showHidden:s});return(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:r,mimeType:i,size:a}),(0,X.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,X.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,X.jsx)(x,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,X.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,X.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,X.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,X.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:q(a,`Unknown size`)}),o&&(0,X.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(o).toLocaleString()]})]}),(0,X.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:c?(0,X.jsx)(D,{className:`animate-spin`,"aria-hidden":!0}):(0,X.jsx)(g,{"aria-hidden":!0}),onClick:u,disabled:c,"aria-label":`Download ${r}`,className:`mt-4`,children:c?`Downloading…`:`Download`}),l&&(0,X.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:`Download failed. Try again.`})]})})]})}function be({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...he({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,g]=(0,J.useState)(null),[_,v]=(0,J.useState)(null);(0,J.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;g(e=>e==null?e:n(e)),v(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,J.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);g(e=>e!=null&&t(e)?null:e),v(e=>e!=null&&t(e.path)?null:e)},[d]);let y=h!=null&&h===t,b=p?.content??``,x=_?.path===t?_.content:b,C=()=>{g(null),v(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await re({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{g(e=>e===t.path?null:e),v(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),T=x!==b,E=(0,J.useCallback)(()=>{t&&T&&!w.isPending&&w.mutate({path:t,content:x})},[t,T,w,x]);if(!t)return(0,X.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,X.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,X.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,X.jsx)(S,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,X.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,X.jsx)(D,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,X.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,X.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let O=p.mimeType??`application/octet-stream`,k=p.name??t.split(`/`).pop()??t,A=F(k,O),j=fe(k,O),M=p.content!=null&&!A&&!j,N=t?Y(t):!0,P=y&&(0,X.jsx)(ce,{isDirty:T,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:E,onDiscard:C});if(A&&p.content!=null){let e=y?x:p.content;return(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:k,mimeType:O,rightContent:(0,X.jsx)(_e,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,X.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,X.jsx)(K,{content:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,X.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,X.jsx)(I,{content:e})}):y?(0,X.jsx)(G,{value:x,onChange:e=>v({path:t,content:e}),onSave:E}):(0,X.jsx)(W,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}if(j&&p.content!=null){let e=y?x:p.content,n=pe(e);return(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:k,mimeType:O,rightContent:(0,X.jsx)(_e,{viewMode:s,onChange:e=>{y&&C(),c(e)}})}),(0,X.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,X.jsx)(K,{content:s===`preview`?n:e,downloadContent:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:y,onToggleEdit:()=>y?C():g(t)}),s===`preview`?(0,X.jsx)(W,{content:n,readOnly:!0,whiteSpace:`pre`}):y?(0,X.jsx)(G,{value:x,onChange:e=>v({path:t,content:e}),onSave:E}):(0,X.jsx)(W,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}return M?(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,X.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,X.jsx)(K,{content:y?x:p.content??``,fileName:k,mimeType:O,showEdit:!N,isEditing:y,onToggleEdit:()=>y?C():g(t)}),y?(0,X.jsx)(G,{value:x,onChange:e=>v({path:t,content:e}),onSave:E}):(0,X.jsx)(W,{content:p.content??``,readOnly:N,onStartEdit:()=>g(t)})]}),P]}):O.startsWith(`image/`)||O.startsWith(`video/`)?(0,X.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,X.jsx)(Q,{name:k,mimeType:O,size:p.size,rightContent:(0,X.jsx)(me,{assistantId:e,path:t,name:k,showHidden:r})}),(0,X.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,X.jsx)(ve,{assistantId:e,path:t,mimeType:O,showHidden:r})})]}):(0,X.jsx)(ye,{assistantId:e,path:t,name:k,mimeType:O,size:p.size,modifiedAt:p.modifiedAt,showHidden:r})}function xe(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}async function Se(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await z({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function Ce({entry:e}){return e.type===`directory`?(0,X.jsx)(E,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,X.jsx)(C,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,X.jsx)(T,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,X.jsx)(b,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function we({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:h,depth:g}){let _=e.path??``,v=e.name??``,b=e.type===`directory`,x=n.has(_),S=r===_,C=v.startsWith(`.`),T=!Y(_),E=b&&(x||s.length>0),{data:D}=a({...V({assistantId:t,path:_,showHidden:i,includeDirSizes:o===`size`}),enabled:b&&E}),k=(0,J.useMemo)(()=>xe(D?.entries??[],o),[D?.entries,o]),A=s===``||v.toLowerCase().includes(s);if(s!==``&&!b&&!A)return null;let M=(0,X.jsxs)(`button`,{onClick:()=>{b?c(_):l(_)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${g*14+8}px`,paddingRight:`8px`,color:S?`var(--content-default)`:C?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:S?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:C&&!S?.7:1},children:[b?E?(0,X.jsx)(u,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,X.jsx)(d,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,X.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,X.jsx)(Ce,{entry:e}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:v}),e.size!=null&&(0,X.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:q(e.size)})]});return(0,X.jsxs)(`div`,{children:[T?(0,X.jsxs)(m.Root,{children:[(0,X.jsx)(m.Trigger,{children:M}),(0,X.jsxs)(m.Content,{children:[b&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(m.Item,{leftIcon:(0,X.jsx)(y,{className:`h-3.5 w-3.5`}),onSelect:()=>h({kind:`file`,parentPath:_}),children:`New File`}),(0,X.jsx)(m.Item,{leftIcon:(0,X.jsx)(w,{className:`h-3.5 w-3.5`}),onSelect:()=>h({kind:`folder`,parentPath:_}),children:`New Folder`}),(0,X.jsx)(m.Separator,{})]}),(0,X.jsx)(m.Item,{leftIcon:(0,X.jsx)(j,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:_,name:v,isDirectory:b}),children:`Delete`}),(0,X.jsx)(m.Item,{leftIcon:(0,X.jsx)(O,{className:`h-3.5 w-3.5`}),onSelect:()=>p({path:_,name:v,isDirectory:b}),children:`Rename`})]})]}):M,b&&E&&k.length>0&&(0,X.jsx)(`div`,{children:k.map(e=>(0,X.jsx)(we,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:h,depth:g+1},e.path))})]})}function Te({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,J.useRef)(null),[d,f]=(0,J.useState)(a??``),p=d.trim(),m=p.length>0&&(/[/\\]/.test(p)||p===`.`||p===`..`),h=p.length>0&&!m&&!c;return(0,X.jsx)(P.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,X.jsx)(P.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,X.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),h&&s(p)},children:[(0,X.jsx)(P.Header,{children:(0,X.jsx)(P.Title,{children:e})}),(0,X.jsx)(P.Body,{children:(0,X.jsx)(N,{ref:u,label:`Name`,value:d,onChange:e=>f(e.target.value),placeholder:t,errorText:l??(m?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,X.jsxs)(P.Footer,{children:[(0,X.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,X.jsx)(n,{type:`submit`,variant:`primary`,disabled:!h,children:c?i:r})]})]})})})}function Ee({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:m,onPathRenamed:h}){let g=i(),[y,b]=(0,J.useState)(``),x=y.trim().toLowerCase(),[S,C]=(0,J.useState)(!1),[w,T]=(0,J.useState)(null),[E,D]=(0,J.useState)(null),O=(0,J.useCallback)(()=>{T(null),D(null)},[]),{data:k,isLoading:j}=a(V({assistantId:e,showHidden:s,includeDirSizes:c===`size`})),P=(0,J.useMemo)(()=>xe(k?.entries??[],c),[k?.entries,c]),F=(0,J.useCallback)(()=>{for(let e of[ae,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])g.invalidateQueries({queryKey:[e]})},[g]),I=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await Se(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await re({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await ie({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{O(),F(),e.parentPath&&u(e.parentPath),e.kind===`file`?d(e.path):u(e.path)},onError:e=>{D(e instanceof Error?e.message:`Failed to create.`)}}),L=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await Se(e,r,t.newName,i);let{error:o,response:s}=await te({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{O(),F(),h(e,t)},onError:e=>{D(e instanceof Error?e.message:`Failed to rename.`)}}),R=(0,J.useCallback)(e=>{D(null),T({type:`create`,...e})},[]),z=(0,J.useCallback)(e=>{D(null),T({type:`rename`,path:e.path,name:e.name})},[]),[B,H]=(0,J.useState)(null),U=o({mutationFn:async t=>{let{error:n,response:r}=await ne({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{H(null),F(),m(e.path)}}),oe=(0,J.useCallback)(e=>{U.reset(),H(e)},[U]);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,X.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,X.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,X.jsx)(ue,{"aria-hidden":!0}):(0,X.jsx)(le,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,X.jsx)(v,{"aria-hidden":!0}):(0,X.jsx)(_,{"aria-hidden":!0}),onClick:f,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,X.jsx)(De,{open:S,onOpenChange:C,onSelectKind:e=>{C(!1),R({kind:e,parentPath:``})}})]})]}),(0,X.jsx)(`div`,{className:`px-3 py-2`,children:(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsx)(N,{type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`Search files`,leftIcon:(0,X.jsx)(A,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),y&&(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,X.jsx)(M,{"aria-hidden":!0}),onClick:()=>b(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,X.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:j?(0,X.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,X.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):P.length?P.map(n=>(0,X.jsx)(we,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:x,onToggleExpand:l,onSelectPath:d,onRequestDelete:oe,onRequestRename:z,onRequestCreate:R,depth:0},n.path)):(0,X.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),w?.type===`create`&&(0,X.jsx)(Te,{title:w.kind===`file`?`New File`:`New Folder`,placeholder:w.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:O,onConfirm:e=>{D(null),I.mutate({kind:w.kind,parentPath:w.parentPath,name:e})},pending:I.isPending,error:E},`create-${w.kind}-${w.parentPath}`),w?.type===`rename`&&(0,X.jsx)(Te,{title:`Rename`,placeholder:w.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:w.name,onCancel:O,onConfirm:e=>{if(e===w.name){O();return}D(null),L.mutate({oldPath:w.path,newName:e})},pending:L.isPending,error:E},`rename-${w.path}`),(0,X.jsx)(ee,{open:B!==null,title:B?.isDirectory?`Delete Folder`:`Delete File`,message:(0,X.jsxs)(X.Fragment,{children:[`Are you sure you want to delete`,` `,(0,X.jsx)(`span`,{style:{color:`var(--content-default)`},children:B?.name}),B?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,U.error&&(0,X.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:U.error.message})]}),confirmLabel:U.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:U.isPending,onConfirm:()=>{B&&U.mutate(B)},onCancel:()=>H(null)})]})}function De({open:e,onOpenChange:t,onSelectKind:r}){return B()?(0,X.jsxs)(h.Root,{open:e,onOpenChange:t,children:[(0,X.jsx)(h.Trigger,{asChild:!0,children:(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,X.jsx)(k,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,X.jsxs)(h.Content,{children:[(0,X.jsx)(h.Header,{className:`sr-only`,children:(0,X.jsx)(h.Title,{children:`Create new`})}),(0,X.jsxs)(h.Body,{className:`pt-0`,children:[(0,X.jsx)(p,{icon:y,label:`New File`,onSelect:()=>r(`file`)}),(0,X.jsx)(p,{icon:w,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,X.jsxs)(f.Root,{open:e,onOpenChange:t,children:[(0,X.jsx)(f.Trigger,{asChild:!0,children:(0,X.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,X.jsx)(k,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,X.jsxs)(f.Content,{align:`end`,sideOffset:4,children:[(0,X.jsx)(f.Item,{leftIcon:(0,X.jsx)(y,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,X.jsx)(f.Item,{leftIcon:(0,X.jsx)(w,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function $(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function Oe({assistantId:e}){let[t,n]=r(),[i,a]=(0,J.useState)(()=>{let e=t.get(`file`);return e?$(e):new Set}),[o,s]=(0,J.useState)(()=>t.get(`file`)),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,J.useState)(`preview`);(0,J.useEffect)(()=>{let e=t.get(`file`);e&&(s(e),a(t=>{let n=new Set(t);for(let t of $(e))n.add(t);return n.size===t.size?t:n}),n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0}))},[t,n]);let m=(0,J.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,J.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,J.useState)(!1),v=(0,J.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,J.useState)(null),x=(0,J.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,J.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,J.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,X.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,X.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,X.jsx)(oe,{onClick:()=>_(!0)})}),(0,X.jsx)(se,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,X.jsx)(Ee,{...w})}),(0,X.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,X.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,X.jsx)(Ee,{...w})}),(0,X.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,X.jsx)(be,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function ke(){return(0,X.jsx)(Oe,{assistantId:U()})}export{ke as WorkspacePage};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Integration logo attribution
|
|
2
|
+
|
|
3
|
+
Logos for OAuth providers, drawn by
|
|
4
|
+
`clients/web/src/components/integrations/integration-icon.tsx`. They are
|
|
5
|
+
vendored rather than fetched so that an upstream removal can't blank an
|
|
6
|
+
integration's icon, so the Integrations tab works offline, and so opening it
|
|
7
|
+
doesn't tell a third party which providers a user is looking at.
|
|
8
|
+
|
|
9
|
+
## Verified provenance
|
|
10
|
+
|
|
11
|
+
Downloaded from the URL each one replaces, so the bytes match the source
|
|
12
|
+
exactly.
|
|
13
|
+
|
|
14
|
+
| Assets | Source | Licence |
|
|
15
|
+
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------ |
|
|
16
|
+
| `airtable`, `asana`, `discord`, `dropbox`, `hubspot`, `sanity`, `spotify`, `telegram`, `todoist`, `x` | [Simple Icons](https://github.com/simple-icons/simple-icons) | CC0-1.0 (public domain, no attribution required) |
|
|
17
|
+
| `salesforce` | [glincker/thesvg](https://github.com/glincker/thesvg) | MIT (notice below) |
|
|
18
|
+
|
|
19
|
+
## Unrecorded provenance
|
|
20
|
+
|
|
21
|
+
`apple-notes`, `excel`, `figma`, `github`, `github-dark`, `gmail`,
|
|
22
|
+
`google-calendar`, `google-drive`, `jira`, `linear-light-logo`, `notion`,
|
|
23
|
+
`outlook`, `slack`.
|
|
24
|
+
|
|
25
|
+
These predate this file and arrived without a recorded source. They are not
|
|
26
|
+
byte-identical to Simple Icons: `github` and `github-dark` follow its 24x24
|
|
27
|
+
shape but carry an added path-level `fill`, and the rest use unrelated
|
|
28
|
+
viewBoxes and formats. Treat the list as unverified rather than assuming CC0.
|
|
29
|
+
Tracked in LUM-3144.
|
|
30
|
+
|
|
31
|
+
Of these, only `figma`, `github`, `linear-light-logo`, `notion`, `outlook` and
|
|
32
|
+
`slack` are referenced by `BUNDLED_LOGO_URLS`; the others are unused.
|
|
33
|
+
|
|
34
|
+
## MIT notice for glincker/thesvg
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
MIT License
|
|
38
|
+
|
|
39
|
+
Copyright (c) glincker
|
|
40
|
+
|
|
41
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
42
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
43
|
+
in the Software without restriction, including without limitation the rights
|
|
44
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
45
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
46
|
+
furnished to do so, subject to the following conditions:
|
|
47
|
+
|
|
48
|
+
The above copyright notice and this permission notice shall be included in all
|
|
49
|
+
copies or substantial portions of the Software.
|
|
50
|
+
|
|
51
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
52
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
53
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
54
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
55
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
56
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
57
|
+
SOFTWARE.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Trademark
|
|
61
|
+
|
|
62
|
+
A permissive licence on the SVG data is not a trademark grant. These marks
|
|
63
|
+
belong to their owners and are used here only to identify the service each
|
|
64
|
+
integration connects to. Simple Icons hosts no Microsoft or Slack mark, both
|
|
65
|
+
having been removed on trademark grounds. If an owner objects, replace the
|
|
66
|
+
asset rather than falling back to a CDN copy of the same mark.
|
|
67
|
+
|
|
68
|
+
## Adding a provider
|
|
69
|
+
|
|
70
|
+
Drop the asset here, add the provider key to `BUNDLED_LOGO_URLS` in
|
|
71
|
+
`integration-icon.tsx`, and record the source and licence above. See
|
|
72
|
+
`assistant/src/oauth/AGENTS.md` for the rest of the new-provider checklist.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#18BFFF" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airtable</title><path d="M11.992 1.966c-.434 0-.87.086-1.28.257L1.779 5.917c-.503.208-.49.908.012 1.116l8.982 3.558a3.266 3.266 0 0 0 2.454 0l8.982-3.558c.503-.196.503-.908.012-1.116l-8.957-3.694a3.255 3.255 0 0 0-1.272-.257zM23.4 8.056a.589.589 0 0 0-.222.045l-10.012 3.877a.612.612 0 0 0-.38.564v8.896a.6.6 0 0 0 .821.552L23.62 18.1a.583.583 0 0 0 .38-.551V8.653a.6.6 0 0 0-.6-.596zM.676 8.095a.644.644 0 0 0-.48.19C.086 8.396 0 8.53 0 8.69v8.355c0 .442.515.737.908.54l6.27-3.006.307-.147 2.969-1.436c.466-.22.43-.908-.061-1.092L.883 8.138a.57.57 0 0 0-.207-.044z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#F06A6A" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Asana</title><path d="M18.78 12.653c-2.882 0-5.22 2.336-5.22 5.22s2.338 5.22 5.22 5.22 5.22-2.34 5.22-5.22-2.336-5.22-5.22-5.22zm-13.56 0c-2.88 0-5.22 2.337-5.22 5.22s2.338 5.22 5.22 5.22 5.22-2.338 5.22-5.22-2.336-5.22-5.22-5.22zm12-6.525c0 2.883-2.337 5.22-5.22 5.22-2.882 0-5.22-2.337-5.22-5.22 0-2.88 2.338-5.22 5.22-5.22 2.883 0 5.22 2.34 5.22 5.22z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#5865F2" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#0061FF" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dropbox</title><path d="M6 1.807L0 5.629l6 3.822 6.001-3.822L6 1.807zM18 1.807l-6 3.822 6 3.822 6-3.822-6-3.822zM0 13.274l6 3.822 6.001-3.822L6 9.452l-6 3.822zM18 9.452l-6 3.822 6 3.822 6-3.822-6-3.822zM6 18.371l6.001 3.822 6-3.822-6-3.822L6 18.371z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#FF7A59" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HubSpot</title><path d="M18.164 7.93V5.084a2.198 2.198 0 001.267-1.978v-.067A2.2 2.2 0 0017.238.845h-.067a2.2 2.2 0 00-2.193 2.193v.067a2.196 2.196 0 001.252 1.973l.013.006v2.852a6.22 6.22 0 00-2.969 1.31l.012-.01-7.828-6.095A2.497 2.497 0 104.3 4.656l-.012.006 7.697 5.991a6.176 6.176 0 00-1.038 3.446c0 1.343.425 2.588 1.147 3.607l-.013-.02-2.342 2.343a1.968 1.968 0 00-.58-.095h-.002a2.033 2.033 0 102.033 2.033 1.978 1.978 0 00-.1-.595l.005.014 2.317-2.317a6.247 6.247 0 104.782-11.134l-.036-.005zm-.964 9.378a3.206 3.206 0 113.215-3.207v.002a3.206 3.206 0 01-3.207 3.207z"/></svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox=".5 .5 999 699.242">
|
|
2
|
+
<path fill="#00A1E0" d="M416.224 76.763c32.219-33.57 77.074-54.391 126.682-54.391 65.946 0 123.48 36.772 154.12 91.361 26.626-11.896 56.098-18.514 87.106-18.514 118.94 0 215.368 97.268 215.368 217.247 0 119.993-96.428 217.261-215.368 217.261a213.735 213.735 0 0 1-42.422-4.227c-26.981 48.128-78.397 80.646-137.412 80.646-24.705 0-48.072-5.706-68.877-15.853-27.352 64.337-91.077 109.448-165.348 109.448-77.344 0-143.261-48.939-168.563-117.574-11.057 2.348-22.513 3.572-34.268 3.572C75.155 585.74.5 510.317.5 417.262c0-62.359 33.542-116.807 83.378-145.937-10.26-23.608-15.967-49.665-15.967-77.06C67.911 87.25 154.79.5 261.948.5c62.914 0 118.827 29.913 154.276 76.263"/>
|
|
3
|
+
<path fill="#FFF" d="M145.196 363.11c-.626 1.637.228 1.979.427 2.263 1.878 1.366 3.786 2.349 5.707 3.444 10.189 5.407 19.81 6.986 29.871 6.986 20.492 0 33.214-10.9 33.214-28.447v-.341c0-16.224-14.358-22.115-27.835-26.37l-1.75-.569c-10.161-3.302-18.927-6.147-18.927-12.836v-.355c0-5.721 5.123-9.934 13.064-9.934 8.823 0 19.297 2.932 26.042 6.66 0 0 1.978 1.281 2.704-.64.398-1.025 3.814-10.218 4.17-11.214.384-1.082-.299-1.879-.996-2.306-7.699-4.682-18.344-7.884-29.358-7.884l-2.049.014c-18.756 0-31.848 11.328-31.848 27.565v.342c0 17.119 14.444 22.669 27.978 26.54l2.177.669c9.862 3.031 18.358 5.635 18.358 12.58v.342c0 6.347-5.521 11.071-14.43 11.071-3.458 0-14.487-.071-26.398-7.6-1.438-.84-2.277-1.451-3.387-2.12-.583-.37-2.049-1.011-2.689.925l-4.045 11.215zm299.998 0c-.626 1.637.228 1.979.427 2.263 1.878 1.366 3.786 2.349 5.706 3.444 10.189 5.407 19.811 6.986 29.871 6.986 20.492 0 33.215-10.9 33.215-28.447v-.341c0-16.224-14.359-22.115-27.836-26.37l-1.75-.569c-10.161-3.302-18.928-6.147-18.928-12.836v-.355c0-5.721 5.123-9.934 13.064-9.934 8.823 0 19.297 2.932 26.043 6.66 0 0 1.978 1.281 2.703-.64.398-1.025 3.814-10.218 4.17-11.214.385-1.082-.299-1.879-.996-2.306-7.699-4.682-18.344-7.884-29.358-7.884l-2.05.014c-18.756 0-31.848 11.328-31.848 27.565v.342c0 17.119 14.444 22.669 27.978 26.54l2.177.669c9.862 3.031 18.373 5.635 18.373 12.58v.342c0 6.347-5.536 11.071-14.445 11.071-3.457 0-14.486-.071-26.397-7.6-1.438-.84-2.291-1.423-3.372-2.12-.371-.242-2.107-.911-2.705.925l-4.042 11.215zm204.801-34.37c0 9.919-1.85 17.731-5.493 23.253-3.601 5.465-9.051 8.126-16.649 8.126-7.613 0-13.035-2.647-16.579-8.126-3.587-5.507-5.407-13.334-5.407-23.253 0-9.904 1.82-17.703 5.407-23.168 3.544-5.407 8.966-8.04 16.579-8.04 7.599 0 13.049 2.633 16.664 8.04 3.629 5.464 5.478 13.263 5.478 23.168m17.106-18.386c-1.68-5.679-4.298-10.688-7.784-14.857-3.487-4.184-7.898-7.542-13.136-9.99-5.223-2.433-11.398-3.671-18.328-3.671-6.945 0-13.121 1.238-18.344 3.671-5.237 2.448-9.648 5.807-13.149 9.99-3.472 4.184-6.091 9.193-7.784 14.857-1.665 5.649-2.505 11.825-2.505 18.386s.84 12.751 2.505 18.386c1.693 5.664 4.298 10.674 7.799 14.857 3.486 4.184 7.912 7.528 13.135 9.904 5.236 2.377 11.398 3.586 18.344 3.586 6.93 0 13.092-1.209 18.328-3.586 5.223-2.376 9.648-5.721 13.136-9.904 3.486-4.17 6.104-9.179 7.784-14.857 1.68-5.649 2.519-11.84 2.519-18.386s-.841-12.737-2.52-18.386m140.467 47.116c-.569-1.665-2.177-1.039-2.177-1.039-2.49.954-5.138 1.836-7.955 2.277-2.861.44-6.006.669-9.379.669-8.281 0-14.856-2.462-19.566-7.329-4.725-4.867-7.372-12.736-7.344-23.381.029-9.691 2.362-16.978 6.561-22.527 4.17-5.521 10.517-8.354 18.984-8.354 7.059 0 12.438.811 18.072 2.59 0 0 1.352.583 1.992-1.181 1.494-4.156 2.604-7.13 4.198-11.698.456-1.295-.654-1.85-1.053-2.007-2.22-.868-7.457-2.276-11.413-2.874-3.7-.569-8.026-.868-12.836-.868-7.188 0-13.591 1.224-19.069 3.672-5.465 2.433-10.104 5.791-13.775 9.976-3.672 4.184-6.461 9.192-8.325 14.856-1.85 5.649-2.789 11.854-2.789 18.415 0 14.188 3.828 25.657 11.385 34.054 7.57 8.425 18.941 12.708 33.77 12.708 8.766 0 17.76-1.778 24.221-4.326 0 0 1.238-.598.697-2.034l-4.199-11.599zm29.929-38.232c.811-5.507 2.334-10.09 4.682-13.661 3.544-5.422 8.951-8.396 16.551-8.396s12.623 2.988 16.223 8.396c2.391 3.571 3.43 8.354 3.843 13.661h-41.299zm57.592-12.111c-1.451-5.479-5.052-11.015-7.414-13.548-3.729-4.013-7.371-6.816-10.986-8.382-4.725-2.021-10.389-3.358-16.593-3.358-7.229 0-13.79 1.21-19.112 3.714-5.336 2.505-9.818 5.921-13.334 10.176-3.516 4.24-6.162 9.292-7.842 15.027-1.693 5.707-2.547 11.926-2.547 18.485 0 6.675.883 12.894 2.633 18.486 1.765 5.636 4.582 10.602 8.396 14.714 3.799 4.142 8.695 7.387 14.558 9.648 5.821 2.249 12.894 3.416 21.019 3.401 16.722-.057 25.53-3.785 29.159-5.792.641-.355 1.253-.981.483-2.774l-3.785-10.603c-.568-1.579-2.177-.996-2.177-.996-4.142 1.537-10.032 4.298-23.766 4.27-8.979-.014-15.64-2.661-19.81-6.803-4.283-4.24-6.375-10.474-6.745-19.268l57.905.057s1.522-.028 1.68-1.509c.057-.624 1.993-11.895-1.722-24.945m-521.327 12.111c.825-5.507 2.334-10.09 4.682-13.661 3.543-5.422 8.951-8.396 16.55-8.396s12.623 2.988 16.237 8.396c2.376 3.571 3.415 8.354 3.828 13.661h-41.297zm57.577-12.111c-1.451-5.479-5.037-11.015-7.399-13.548-3.729-4.013-7.372-6.816-10.986-8.382-4.725-2.021-10.388-3.358-16.593-3.358-7.215 0-13.79 1.21-19.112 3.714-5.336 2.505-9.819 5.921-13.334 10.176-3.515 4.24-6.162 9.292-7.841 15.027-1.679 5.707-2.547 11.926-2.547 18.485 0 6.675.882 12.894 2.633 18.486 1.765 5.636 4.583 10.602 8.396 14.714 3.8 4.142 8.695 7.387 14.558 9.648 5.821 2.249 12.893 3.416 21.019 3.401 16.721-.057 25.53-3.785 29.159-5.792.641-.355 1.252-.981.484-2.774l-3.771-10.603c-.584-1.579-2.191-.996-2.191-.996-4.141 1.537-10.019 4.298-23.78 4.27-8.965-.014-15.625-2.661-19.795-6.803-4.284-4.24-6.375-10.474-6.746-19.268l57.905.057s1.522-.028 1.679-1.509c.055-.624 1.99-11.895-1.738-24.945m-182.738 50.026c-2.263-1.808-2.576-2.263-3.344-3.43-1.139-1.779-1.722-4.312-1.722-7.528 0-5.095 1.679-8.752 5.166-11.214-.042.015 4.981-4.34 16.792-4.184 8.296.114 15.71 1.338 15.71 1.338v26.327h.014s-7.357 1.579-15.639 2.077c-11.783.712-17.02-3.4-16.977-3.386m23.039-40.686c-2.348-.171-5.394-.271-9.037-.271-4.966 0-9.762.626-14.259 1.836-4.525 1.209-8.595 3.103-12.096 5.606a27.927 27.927 0 0 0-8.396 9.549c-2.049 3.814-3.088 8.311-3.088 13.349 0 5.123.882 9.577 2.647 13.221 1.765 3.657 4.312 6.702 7.556 9.051 3.216 2.348 7.187 4.069 11.797 5.108 4.54 1.039 9.691 1.565 15.327 1.565 5.934 0 11.854-.483 17.589-1.466 5.678-.968 12.651-2.377 14.586-2.817a146.25 146.25 0 0 0 4.056-1.039c1.438-.355 1.324-1.893 1.324-1.893l-.029-52.952c0-11.613-3.102-20.223-9.207-25.559-6.077-5.322-15.028-8.013-26.597-8.013-4.341 0-11.328.599-15.512 1.438 0 0-12.651 2.448-17.86 6.518 0 0-1.138.712-.512 2.306l4.099 11.015c.512 1.423 1.893.939 1.893.939s.441-.171.954-.47c11.143-6.062 25.231-5.877 25.231-5.877 6.262 0 11.072 1.252 14.316 3.742 3.159 2.419 4.767 6.076 4.767 13.789v2.448c-4.981-.711-9.549-1.123-9.549-1.123m467.029-29.836c.44-1.31-.484-1.936-.869-2.078-.981-.384-5.905-1.423-9.705-1.665-7.271-.441-11.312.783-14.928 2.405-3.586 1.622-7.57 4.24-9.791 7.215v-7.044c0-.982-.697-1.765-1.665-1.765h-14.843c-.967 0-1.664.782-1.664 1.765v86.366c0 .968.797 1.765 1.764 1.765h15.213a1.76 1.76 0 0 0 1.75-1.765v-43.147c0-5.792.641-11.569 1.922-15.198 1.252-3.587 2.96-6.461 5.066-8.525 2.12-2.049 4.525-3.486 7.158-4.297 2.689-.826 5.663-1.096 7.77-1.096 3.031 0 6.361.782 6.361.782 1.109.128 1.736-.555 2.105-1.565.997-2.647 3.815-10.574 4.356-12.153"/>
|
|
4
|
+
<path fill="#FFF" d="M595.874 246.603c-1.85-.569-3.529-.954-5.721-1.366-2.221-.398-4.867-.598-7.869-.598-10.475 0-18.729 2.96-24.52 8.794-5.764 5.807-9.678 14.644-11.642 26.271l-.712 3.913h-13.148s-1.594-.057-1.936 1.68l-2.148 12.053c-.157 1.139.342 1.864 1.878 1.864h12.794l-12.979 72.463c-1.011 5.835-2.178 10.631-3.473 14.273-1.267 3.587-2.504 6.276-4.041 8.24-1.48 1.879-2.875 3.273-5.295 4.084-1.992.669-4.297.982-6.816.982-1.395 0-3.258-.229-4.639-.513-1.366-.271-2.092-.569-3.131-1.011 0 0-1.494-.568-2.092.926-.47 1.238-3.885 10.615-4.298 11.769-.398 1.152.171 2.049.896 2.319 1.708.598 2.974.996 5.294 1.551 3.217.755 5.934.797 8.481.797 5.322 0 10.189-.754 14.217-2.205 4.042-1.466 7.57-4.014 10.701-7.457 3.373-3.729 5.493-7.628 7.515-12.964 2.006-5.266 3.729-11.812 5.094-19.439l13.05-73.815h19.069s1.607.057 1.936-1.693l2.162-12.039c.143-1.152-.341-1.864-1.893-1.864h-18.514c.1-.412.939-6.931 3.06-13.063.911-2.604 2.618-4.725 4.056-6.177 1.424-1.423 3.06-2.433 4.854-3.017 1.835-.598 3.928-.882 6.219-.882 1.736 0 3.457.199 4.752.469 1.793.385 2.49.584 2.961.727 1.893.569 2.148.014 2.519-.896l4.426-12.153c.455-1.312-.669-1.867-1.067-2.023m-258.68 125.231c0 .968-.697 1.751-1.665 1.751h-15.355c-.968 0-1.651-.783-1.651-1.751v-123.58c0-.967.683-1.75 1.651-1.75h15.355c.968 0 1.665.783 1.665 1.75v123.58z"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#0D0E12" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sanity</title><path d="m23.327 15.205-.893-1.555-4.321 2.632 4.799-6.11.726-.426-.179-.27.33-.421-1.515-1.261-.693.883-13.992 8.186 5.173-6.221 9.636-5.282-.915-1.769-5.248 2.876 2.584-3.106-1.481-1.305-5.816 6.994-5.777 3.168 4.423-5.847 2.771-1.442-.88-1.789-8.075 4.203L6.186 4.43 4.648 3.198 0 9.349l.072.058.868 1.768 5.153-2.683-4.696 6.207.77.617.458.885 5.425-2.974-5.974 7.185 1.481 1.304.297-.358 14.411-8.459-4.785 6.094.078.065-.007.005.992 1.726 6.364-3.877-2.451 3.954 1.642 1.077L24 15.648z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#1ED760" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spotify</title><path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#26A5E4" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Telegram</title><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#E44332" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Todoist</title><path d="M21 0H3C1.35 0 0 1.35 0 3v3.858s3.854 2.24 4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.608 8.136-4.675.279-.161.58-.107.748-.01.164.097.606.348.84.48.232.134.221.502.013.622l-9.712 5.59c-.346.2-.69.204-1.048.002C3.478 10.907.998 9.463 0 8.882v2.02l4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.609 8.136-4.676.279-.16.58-.106.748-.008.164.096.606.347.84.48.232.133.221.5.013.62-.208.121-9.288 5.346-9.712 5.59-.346.2-.69.205-1.048.002C3.478 14.951.998 13.506 0 12.926v2.02l4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.609 8.136-4.676.279-.16.58-.106.748-.009.164.097.606.348.84.48.232.133.221.502.013.622l-9.712 5.59c-.346.199-.69.204-1.048.001C3.478 18.994.998 17.55 0 16.97V21c0 1.65 1.35 3 3 3h18c1.65 0 3-1.35 3-3V3c0-1.65-1.35-3-3-3z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#000000" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>X</title><path d="M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z"/></svg>
|