@vellumai/web 0.10.6-dev.202607062232.05707c8 → 0.10.6-dev.202607070140.c1cb3c2
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/{account-page-NfdEGXRV.js → account-page-CnyRZErv.js} +1 -1
- package/dist/assets/{account-shell-DuK4B__J.js → account-shell-DhLNIrH-.js} +1 -1
- package/dist/assets/acp-run-detail-panel-xm9XsxkW.js +5 -0
- package/dist/assets/{add-credits-modal-u53fT41r.js → add-credits-modal-BiZUcOkt.js} +1 -1
- package/dist/assets/advanced-page-BGijTPK8.js +1 -0
- package/dist/assets/ai-page-C1YecV8Z.js +1 -0
- package/dist/assets/{api-KB7g-fx2.js → api-CqTlpuOS.js} +1 -1
- package/dist/assets/{api-key-screen-DAdG09hA.js → api-key-screen-hAXn-HSq.js} +1 -1
- package/dist/assets/{archive-page-gq3RSx5R.js → archive-page-CNb7QoMb.js} +1 -1
- package/dist/assets/{assistant-feature-flag-store-DoSr7mil.js → assistant-feature-flag-store-BCzIMagD.js} +1 -1
- package/dist/assets/{assistant-status-panel-DqWmqYfK.js → assistant-status-panel-CVx8n3AQ.js} +1 -1
- package/dist/assets/auth-store-C2284gT8.js +2 -0
- package/dist/assets/{background-task-detail-panel-DqeOK8di.js → background-task-detail-panel-p4Y3KLmm.js} +1 -1
- package/dist/assets/{billing-page-D1u8EqEc.js → billing-page-4mAJ66W9.js} +2 -2
- package/dist/assets/{bookmarks-page-CMwdpKCi.js → bookmarks-page-DS5YSqqI.js} +1 -1
- package/dist/assets/{build-state-BIQFrV3I.js → build-state-B2Rp6AVB.js} +1 -1
- package/dist/assets/channels-page-route-BpfW1NLG.js +1 -0
- package/dist/assets/{client-feature-flag-store-D5qPMllR.js → client-feature-flag-store-Bg83Itsc.js} +1 -1
- package/dist/assets/{command-palette-CT31UWnS.js → command-palette-DDwhOsBd.js} +1 -1
- package/dist/assets/{command-palette-window-page-Bl1DIdr4.js → command-palette-window-page-ezglR9X9.js} +1 -1
- package/dist/assets/{community-page-BlkS9ioL.js → community-page-ChuVRSFv.js} +1 -1
- package/dist/assets/{confirm-dialog-BFfSodMe.js → confirm-dialog-DTa1C9zW.js} +1 -1
- package/dist/assets/{connect-page-BN1FqMTk.js → connect-page-DpGR0kcf.js} +1 -1
- package/dist/assets/contacts-page-route-DrkI9tVA.js +1 -0
- package/dist/assets/{conversation-list-fetchers-D5PpdmFr.js → conversation-list-fetchers-D5O81azw.js} +1 -1
- package/dist/assets/debug-page-DsNbwzo7.js +4 -0
- package/dist/assets/{deploy-dialogs-rfWRP7uN.js → deploy-dialogs-B7F7TZnh.js} +1 -1
- package/dist/assets/{detail-card-Dj1kcIjp.js → detail-card-CZaoEgsH.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-V4Xt3rim.js → detail-panel-stop-button-2SS8_syR.js} +1 -1
- package/dist/assets/{detail-shell-Davxhdpr.js → detail-shell-BT0of_Rw.js} +1 -1
- package/dist/assets/{developer-page-BJTyllzd.js → developer-page-BHeE_Guv.js} +1 -1
- package/dist/assets/{devices-page-W9kWY3T3.js → devices-page-tW3k_ejC.js} +1 -1
- package/dist/assets/{dictation-overlay-page-CADSBMKf.js → dictation-overlay-page-COVTXsXG.js} +1 -1
- package/dist/assets/{document-viewer-page-JQ-5UAtQ.js → document-viewer-page-DPCgpU2X.js} +1 -1
- package/dist/assets/{earn-credits-modal-C7PEKYUm.js → earn-credits-modal-CPtTSU_O.js} +1 -1
- package/dist/assets/{emails-page-DuLAjl_P.js → emails-page-DNcaahBP.js} +1 -1
- package/dist/assets/feature-flag-catalog-CVDW9oen.js +1 -0
- package/dist/assets/{file-editor-BlpZiZpW.js → file-editor-CR35dSwT.js} +1 -1
- package/dist/assets/general-page-CpiLnf_k.js +1 -0
- package/dist/assets/{hatching-screen-FkfM1m8n.js → hatching-screen-C8zf4URY.js} +1 -1
- package/dist/assets/home-page-route-DKaytWeP.js +1 -0
- package/dist/assets/{hosting-screen-CluiyHxU.js → hosting-screen-B-h4GCjt.js} +1 -1
- package/dist/assets/identity-page-route-aDPsB7iT.js +1 -0
- package/dist/assets/index-BFy5Tyub.js +114 -0
- package/dist/assets/index-C8w_nq5D.css +2 -0
- package/dist/assets/{inspect-page-DnNk4-9v.js → inspect-page-equhj0f3.js} +2 -2
- package/dist/assets/{install-fatP0ZZq.js → install-BJUeTZX_.js} +1 -1
- package/dist/assets/integrations-page-BVw10QVr.js +1 -0
- package/dist/assets/intelligence-layout-BxzLU2IJ.js +1 -0
- package/dist/assets/{keyboard-shortcuts-page-CmKZYqsi.js → keyboard-shortcuts-page-BJpr2oNB.js} +1 -1
- package/dist/assets/{library-detail-page-M3_tH3u5.js → library-detail-page-gIZDNqSV.js} +1 -1
- package/dist/assets/{library-page-BV7Ghn32.js → library-page-BVZJ0gll.js} +1 -1
- package/dist/assets/lock-CytggzXB.js +1 -0
- package/dist/assets/{login-flow-ClvRLoYg.js → login-flow-DLZ8MPE9.js} +1 -1
- package/dist/assets/{login-page-CxYK4oOL.js → login-page-DfYEluqx.js} +1 -1
- package/dist/assets/{logout-page-M5uU1KB6.js → logout-page-DOU_GZr_.js} +1 -1
- package/dist/assets/{logs-layout-CQV_KF1A.js → logs-layout-CDsWGtDK.js} +1 -1
- package/dist/assets/{memory-router-playground-page-DfxhwDSd.js → memory-router-playground-page-DjYjsqx5.js} +1 -1
- package/dist/assets/{messages-pBWwuIa3.js → messages-CXE6vXNq.js} +2 -2
- package/dist/assets/{metric-card-B4yHPItc.js → metric-card-C-nxOHdE.js} +1 -1
- package/dist/assets/{mobile-sidebar-drawer-QF72A_L4.js → mobile-sidebar-drawer-R87oMnO6.js} +1 -1
- package/dist/assets/mutation-error-C1cP4dJB.js +1 -0
- package/dist/assets/{notice-DmdksIEX.js → notice-BZPwFlPc.js} +1 -1
- package/dist/assets/{notifications-page-bM0nktVr.js → notifications-page-Cb0pFMGO.js} +1 -1
- package/dist/assets/{oauth-complete-page-D_UYmAVb.js → oauth-complete-page-B0E8K4dW.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-Uiu6eVcs.js → oauth-popup-complete-page-aPB5LYKd.js} +1 -1
- package/dist/assets/{page-shell-BBppm2X1.js → page-shell-B5Eqas2g.js} +1 -1
- package/dist/assets/{pairing-page-DLTVY4I0.js → pairing-page-DvhguvUl.js} +1 -1
- package/dist/assets/{platform-loopback-page-C5CNAFNV.js → platform-loopback-page-DhGfSXJ4.js} +1 -1
- package/dist/assets/plugins-page-CaklHo1t.js +1 -0
- package/dist/assets/prechat-route-B5fTjwnq.js +1 -0
- package/dist/assets/{prefs-CZrhljiM.js → prefs-qNld3bzs.js} +1 -1
- package/dist/assets/privacy-page-D2Wbbxkc.js +1 -0
- package/dist/assets/{privacy-screen-DhhpX-IW.js → privacy-screen-BcU-5ycs.js} +1 -1
- package/dist/assets/{provider-callback-page-D3fVsoI0.js → provider-callback-page-B4YO8YvQ.js} +1 -1
- package/dist/assets/{provider-key-hcAQOAPw.js → provider-key-pgmTis8x.js} +1 -1
- package/dist/assets/{provider-signup-page-CE4SxQ89.js → provider-signup-page-BA3UA78Y.js} +1 -1
- package/dist/assets/react-query.gen-D7LMEAtj.js +1 -0
- package/dist/assets/{research-mock-page-DtJTb3cH.js → research-mock-page-BeBUX8E7.js} +1 -1
- package/dist/assets/research-onboarding-route-C1vlCW_a.js +61 -0
- package/dist/assets/review-terms-screen-D26OjDfq.js +1 -0
- package/dist/assets/{schedules-HrX7ZNu0.js → schedules-CP1yzYiK.js} +1 -1
- package/dist/assets/{sdk.gen-B3Z8klU-.js → sdk.gen-b3P17-Kv.js} +1 -1
- package/dist/assets/{select-assistant-screen-oPONzAYu.js → select-assistant-screen-C4amxBc4.js} +1 -1
- package/dist/assets/{settings-layout-C8Cs0uZI.js → settings-layout-CPmnlEIt.js} +1 -1
- package/dist/assets/share-feedback-modal-CeqNkG4n.js +1 -0
- package/dist/assets/shield-check-CRk1dkwI.js +1 -0
- package/dist/assets/{sidebar-tree-PTp9wTmz.js → sidebar-tree-cBpKQadm.js} +1 -1
- package/dist/assets/{signup-page-Cy0GPX1T.js → signup-page-DA9gPlgz.js} +1 -1
- package/dist/assets/skills-page-CJOunH8x.js +1 -0
- package/dist/assets/{sound-manager-DtzFjWmP.js → sound-manager-DYmz2Niu.js} +1 -1
- package/dist/assets/{sounds-page-CmtuEKgM.js → sounds-page-D7XcMIVh.js} +1 -1
- package/dist/assets/src-CiGJv63_.js +293 -0
- package/dist/assets/subagent-detail-panel-C20HY_Ki.js +4 -0
- package/dist/assets/{subagent-store-CIQtyS2Q.js → subagent-store-CPMERTwF.js} +1 -1
- package/dist/assets/{system-events-page-D3XGdB1e.js → system-events-page-Btn8Iygy.js} +1 -1
- package/dist/assets/{tiptap-document-editor-8Ap80XOX.js → tiptap-document-editor-BUWg9zrZ.js} +2 -2
- package/dist/assets/{toast-Bwt0pAjT.js → toast-KhXf0OVq.js} +1 -1
- package/dist/assets/{tool-detail-panel-TrK_5zO0.js → tool-detail-panel-Br8OpeSP.js} +1 -1
- package/dist/assets/{trace-page-B6aDKf2M.js → trace-page-DMIiPwxQ.js} +1 -1
- package/dist/assets/{upgrade-cancel-page-BP-lyCCM.js → upgrade-cancel-page-CBrPWcOS.js} +1 -1
- package/dist/assets/{upgrade-success-page-BRtO7Zkr.js → upgrade-success-page-DLWRCNHa.js} +1 -1
- package/dist/assets/{usage-page-D4a5pAvk.js → usage-page-ocS7XPhG.js} +1 -1
- package/dist/assets/use-is-org-ready-C1KuH5sI.js +1 -0
- package/dist/assets/{use-onboarding-login-gI6SfiUU.js → use-onboarding-login-DYE06K3u.js} +1 -1
- package/dist/assets/use-setup-channel-param-DwmjvB7B.js +9 -0
- package/dist/assets/{use-skill-categories-D0RwA9lt.js → use-skill-categories-DUaTqHh2.js} +1 -1
- package/dist/assets/{viewer-store-Cp7DQTT5.js → viewer-store-BEqN7DoV.js} +1 -1
- package/dist/assets/{voice-page-QySz7P8v.js → voice-page-CQwfxPVv.js} +1 -1
- package/dist/assets/{weather-forecast-display-nTuUU5RY.js → weather-forecast-display-DBOG-EDO.js} +1 -1
- package/dist/assets/{welcome-screen-AkBQSCZQ.js → welcome-screen-CQ4V1ryZ.js} +1 -1
- package/dist/assets/{workflow-detail-panel-DwzGFXZg.js → workflow-detail-panel-Bgmj3ZQO.js} +1 -1
- package/dist/assets/workspace-page-DXpnUc2a.js +1 -0
- package/dist/index.html +39 -39
- package/package.json +1 -1
- package/dist/assets/acp-run-detail-panel-p7X_bTO8.js +0 -5
- package/dist/assets/advanced-page-BuSZdzLM.js +0 -1
- package/dist/assets/ai-page-CqdWheJv.js +0 -1
- package/dist/assets/auth-store-bCDhX8JM.js +0 -2
- package/dist/assets/channels-page-route-DDN3Yfsz.js +0 -1
- package/dist/assets/clipboard-copy-DF6K1xc6.js +0 -1
- package/dist/assets/contacts-page-route-DpPgaxvO.js +0 -1
- package/dist/assets/debug-page-DPBYUtZm.js +0 -4
- package/dist/assets/feature-flag-catalog-CRFA909Q.js +0 -1
- package/dist/assets/general-page-CN15klsN.js +0 -1
- package/dist/assets/home-page-route-ClfjP4kt.js +0 -1
- package/dist/assets/identity-page-route-Cb_lgKiL.js +0 -1
- package/dist/assets/index-C5x3_TVL.js +0 -114
- package/dist/assets/index-DHkdyqF-.css +0 -2
- package/dist/assets/integrations-page-BOdht1kF.js +0 -1
- package/dist/assets/intelligence-layout-c52JEWH6.js +0 -1
- package/dist/assets/mutation-error-CJY_NlH7.js +0 -1
- package/dist/assets/plugins-page-DOQQNUPh.js +0 -1
- package/dist/assets/plus-DhlA_9wV.js +0 -1
- package/dist/assets/prechat-route-DC-OQoym.js +0 -1
- package/dist/assets/privacy-page-CRJrjoe6.js +0 -1
- package/dist/assets/react-query.gen-Bxy9zjSn.js +0 -1
- package/dist/assets/research-onboarding-route-DOU5tpgN.js +0 -61
- package/dist/assets/review-terms-screen-D1mYILTz.js +0 -1
- package/dist/assets/share-feedback-modal-Bxhu-qjG.js +0 -1
- package/dist/assets/skills-page-CyP8HF8s.js +0 -1
- package/dist/assets/src-Czx7fJWu.js +0 -293
- package/dist/assets/subagent-detail-panel-QV9ETFoW.js +0 -4
- package/dist/assets/use-is-org-ready-Bf5Dphv0.js +0 -1
- package/dist/assets/use-setup-channel-param-DoTssCty.js +0 -9
- package/dist/assets/workspace-page-KFFOzjWN.js +0 -1
- /package/dist/assets/{animated-avatar-CBtRCn9N.js → animated-avatar-GrUdtV3q.js} +0 -0
- /package/dist/assets/{cloud-off-Db1nySkc.js → cloud-off-CysJvmWr.js} +0 -0
- /package/dist/assets/{code-Czx7d7SK.js → code-DsR1Npcp.js} +0 -0
- /package/dist/assets/{copy-Cn1FKrEp.js → copy-CytZjq76.js} +0 -0
- /package/dist/assets/{cpu-BJuB2Khn.js → cpu-C6_Tjhkh.js} +0 -0
- /package/dist/assets/{credit-card-BuyWdO9t.js → credit-card-s3I7DYkY.js} +0 -0
- /package/dist/assets/{domain-field-C5a2iMot.js → domain-field-6GHeeXa3.js} +0 -0
- /package/dist/assets/{external-link-CfkE0LZW.js → external-link-DJ0A4ezO.js} +0 -0
- /package/dist/assets/{file-text-DDcypanB.js → file-text-Cw--uc4C.js} +0 -0
- /package/dist/assets/{globe-BgFbM_BQ.js → globe-DgulNfxa.js} +0 -0
- /package/dist/assets/{hard-drive-8yxasJWm.js → hard-drive-CUjwJ5MQ.js} +0 -0
- /package/dist/assets/{info-DZoiK09u.js → info-BaizXivv.js} +0 -0
- /package/dist/assets/{link-2-C4ZDIIu1.js → link-2-KMGQ-Ef8.js} +0 -0
- /package/dist/assets/{loader-circle-D1pLQlMh.js → loader-circle-TuIfoFJ-.js} +0 -0
- /package/dist/assets/{refresh-cw-BmNgSiel.js → refresh-cw-b6v98msY.js} +0 -0
- /package/dist/assets/{repeat-Bms5wrYv.js → repeat-CzfDhwtk.js} +0 -0
- /package/dist/assets/{resize-errors-B930jpho.js → resize-errors-C2_XLOAk.js} +0 -0
- /package/dist/assets/{save-BZ19CVY3.js → save-CH_AfyZl.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{a as i,n as a,o}from"./auth-store-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{a as i,n as a,o}from"./auth-store-C2284gT8.js";import{f as s}from"./native-biometric-1uLTkAo9.js";import{o as c}from"./routes-CwbPJCPw.js";import{n as l,t as u}from"./login-flow-DLZ8MPE9.js";import{hr as d}from"./index-BFy5Tyub.js";import{r as f,t as p}from"./account-shell-DhLNIrH-.js";var m=e(t(),1),h=r();function g(){let e=i(),t=o(),r=a.use.user(),g=a.use.logout(),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)(!1),x=async()=>{v(null),b(!0);try{await s(l,u)}catch(e){console.error(`[account] auth flow failed:`,e),v(`Something went wrong. Please try again.`),b(!1)}};return t?(0,h.jsx)(p,{children:(0,h.jsx)(f,{title:`Loading...`})}):e?(0,h.jsxs)(p,{children:[(0,h.jsx)(f,{title:`Welcome${r?.username?`, ${r.username}`:``}!`,subtitle:`You are signed in.`}),(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,h.jsx)(n,{to:c.assistant,className:`inline-flex w-full items-center justify-center gap-2 rounded-lg bg-[var(--primary-base)] px-6 py-3 text-sm font-medium text-[var(--content-inset)] no-underline transition-colors hover:bg-[var(--primary-hover)]`,children:`Go to your assistant`}),(0,h.jsx)(`button`,{type:`button`,onClick:async()=>{await g(),d(c.account.login)},className:`cursor-pointer bg-transparent text-sm font-normal text-[var(--content-secondary)] transition-colors hover:text-[var(--content-default)]`,children:`Sign out`})]})]}):(0,h.jsxs)(p,{children:[(0,h.jsx)(f,{title:`Welcome to Vellum`,subtitle:`Sign in to get started.`}),_&&(0,h.jsx)(`p`,{className:`text-center text-sm text-[var(--system-negative-strong)]`,children:_}),(0,h.jsx)(`div`,{className:`flex flex-col items-center gap-4`,children:(0,h.jsx)(`button`,{type:`button`,onClick:()=>void x(),disabled:y,className:`inline-flex w-full cursor-pointer items-center justify-center gap-2 rounded-lg bg-[var(--primary-base)] px-6 py-3 text-sm font-medium text-[var(--content-inset)] transition-colors hover:bg-[var(--primary-hover)] disabled:opacity-50`,children:`Sign in`})})]})}export{g as AccountPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-CVSDxk6A.js";import{t}from"./notice-
|
|
1
|
+
import{t as e}from"./jsx-runtime-CVSDxk6A.js";import{t}from"./notice-BZPwFlPc.js";import"./src-CiGJv63_.js";var n=e(),r=(0,n.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 20 20`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,n.jsx)(`path`,{d:`M7.5 15L12.5 10L7.5 5`,stroke:`currentColor`,strokeWidth:`1.67`,strokeLinecap:`round`,strokeLinejoin:`round`})});function i({onSubmit:e,error:i,children:a,submitLabel:o,submittingLabel:s,isSubmitting:c,footer:l}){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(`form`,{onSubmit:e,className:`flex flex-col gap-4`,children:[i&&(0,n.jsx)(t,{tone:`error`,children:i}),(0,n.jsx)(`div`,{className:`flex flex-col gap-3`,children:a}),(0,n.jsxs)(`button`,{type:`submit`,disabled:c,className:`mt-2 inline-flex w-full cursor-pointer items-center justify-center gap-2 rounded-lg bg-[var(--primary-base)] px-6 py-3 text-sm font-medium text-[var(--content-inset)] transition-colors hover:bg-[var(--primary-hover)] disabled:cursor-wait disabled:opacity-50`,children:[c?s:o,r]})]}),l&&(0,n.jsx)(`div`,{className:`mt-8 text-center`,children:l})]})}function a(e){return(0,n.jsx)(`input`,{...e,className:`w-full rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)] px-4 py-3 text-sm text-[var(--content-default)] outline-none placeholder:text-[var(--content-tertiary)] focus:border-[var(--primary-base)]/50`})}function o({title:e,subtitle:t}){return(0,n.jsxs)(`div`,{className:`mb-8 text-center`,children:[(0,n.jsx)(`h1`,{className:`mb-2 font-serif text-[2rem] font-bold italic text-[var(--content-default)]`,children:e}),t&&(0,n.jsx)(`p`,{className:`text-sm text-[var(--content-secondary)]`,children:t})]})}function s({children:e}){return(0,n.jsx)(`div`,{className:`flex min-h-screen items-center justify-center bg-[var(--surface-base)]`,children:(0,n.jsx)(`div`,{className:`w-full max-w-[480px] px-6`,children:(0,n.jsx)(`div`,{className:`flex flex-col items-center gap-10`,children:(0,n.jsx)(`div`,{className:`w-full`,children:e})})})})}export{a as i,i as n,o as r,s as t};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-8raDoxFL.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-D1p5nVKJ.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{t as a}from"./typography-D5f7kt80.js";import{t as o}from"./createLucideIcon-IRfcSUxS.js";import{t as s}from"./arrow-left-DI9551VI.js";import{t as c}from"./brain-BLDXGaUy.js";import{t as l}from"./chevron-down-qD-re7AW.js";import{t as u}from"./chevron-right-DqqmezXC.js";import{t as d}from"./circle-check-VSiny8yl.js";import{w as f}from"./menu-a0ZDA5hR.js";import{t as p}from"./code-DsR1Npcp.js";import{t as m}from"./file-text-Cw--uc4C.js";import{t as h}from"./globe-DgulNfxa.js";import{t as g}from"./repeat-CzfDhwtk.js";import{t as _}from"./triangle-alert-BRr1dMg2.js";import{t as v}from"./x-Cv9j6rBZ.js";import"./src-CiGJv63_.js";import{t as y}from"./tag-CT07giv7.js";import{Di as b,Ei as x,Fa as S,Ft as ee,It as C,Nt as w,Oa as te,Pt as T,Xi as ne,_i as E,bi as re,dt as ie,et as D,ft as ae,gi as oe,mt as O,pt as k}from"./index-BFy5Tyub.js";import{t as se}from"./status-badge-pill-DWywzjvD.js";var ce=o(`file-pen`,[[`path`,{d:`M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34`,key:`o6klzx`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z`,key:`zhnas1`}]]),le=o(`folder-input`,[[`path`,{d:`M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1`,key:`fm4g5t`}],[`path`,{d:`M2 13h10`,key:`pgb2dq`}],[`path`,{d:`m9 16 3-3-3-3`,key:`6m91ic`}]]),A=e(n(),1),j=``;function M(e,t){switch(e){case`complete`:case`completed`:return`completed`;case`failed`:case`error`:return`error`;case void 0:return t;default:return`running`}}function ue(e){return(e.messageId?.startsWith(`local-marker-`)??!1)||(e.content?.startsWith(`↻ Steering: `)??!1)}function N(e){let t=e??``;return t.startsWith(`↻ Steering: `)?t.slice(w.length):t}function P(e){let t=e[e.length-1];t&&(t.kind===`agent`||t.kind===`thinking`)&&!t.isComplete&&(e[e.length-1]={...t,isComplete:!0})}function F(e,t){if(t.updateType===`agent_message_chunk`&&ue(t)){P(e),e.push({kind:`user`,id:t.messageId??`steer-${e.length}`,content:N(t.content)});return}switch(t.updateType){case`user_message_chunk`:{let n=t.messageId??j,r=N(t.content),i=e[e.length-1];i&&i.kind===`user`&&i.id===n?e[e.length-1]={...i,content:i.content+r}:(P(e),e.push({kind:`user`,id:n,content:r}));let a=e[e.length-1].content;for(let t=0;t<e.length-1;t++){let n=e[t];if(n.kind===`user`&&n.id.startsWith(`local-marker-`)&&n.content===a){e.splice(t,1);break}}return}case`agent_message_chunk`:{let n=t.messageId??j,r=e[e.length-1];if(r&&r.kind===`agent`&&r.messageId===n){e[e.length-1]={...r,content:r.content+(t.content??``)};return}if(n!==j&&r&&r.kind===`agent`&&r.messageId===j&&!r.isComplete&&r.content===(t.content??``)){e[e.length-1]={...r,messageId:n};return}P(e),e.push({kind:`agent`,messageId:n,content:t.content??``,isComplete:!1});return}case`agent_thought_chunk`:{let n=t.messageId??j,r=e[e.length-1];if(r&&r.kind===`thinking`&&r.messageId===n){e[e.length-1]={...r,content:r.content+(t.content??``)};return}P(e),e.push({kind:`thinking`,messageId:n,content:t.content??``,isComplete:!1});return}case`tool_call`:{let n=t.toolCallId;if(n===void 0)return;P(e),e.push({kind:`tool`,toolCallId:n,title:t.toolTitle??``,toolKind:t.toolKind,status:M(t.toolStatus,`running`),content:t.content,locations:I(t),rawInput:t.rawInput,rawOutput:t.rawOutput});return}case`tool_call_update`:{let n=t.toolCallId;if(n===void 0)return;let r=e.findIndex(e=>e.kind===`tool`&&e.toolCallId===n);if(r===-1)return;let i=e[r],a=I(t);e[r]={...i,title:t.toolTitle??i.title,toolKind:t.toolKind??i.toolKind,status:M(t.toolStatus,i.status),content:t.content??i.content,locations:a??i.locations,rawInput:t.rawInput===void 0?i.rawInput:t.rawInput,rawOutput:t.rawOutput===void 0?i.rawOutput:t.rawOutput};return}case`plan`:{let n=de(t.content);if(n===null)return;let r=e.findIndex(e=>e.kind===`plan`),i={kind:`plan`,entries:n};r===-1?(P(e),e.push(i)):e[r]=i;return}}}function I(e){let t=e.locations;if(!Array.isArray(t))return;let n=[];for(let e of t){let t=e??{};typeof t.path==`string`&&n.push(typeof t.line==`number`?{path:t.path,line:t.line}:{path:t.path})}return n}function de(e){if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}let n=Array.isArray(t)?t:Array.isArray(t?.entries)?t.entries:null;return n===null?null:n.map(e=>{let t=e??{},n=t.content??t.label??``;return{label:typeof n==`string`?n:String(n),checked:t.checked===!0||t.status===`completed`}})}function fe(e){let t=[];for(let n of e)F(t,n);return t}function pe(e,t){if(e===t)return{kind:`identity`};if(e===null)return{kind:`first`};if(t.length<e.length)return{kind:`fallback`};for(let n=0;n<e.length;n++)if(e[n]!==t[n])return n===e.length-1&&t.length===e.length?{kind:`mutate-last`}:{kind:`fallback`};return t.length===e.length?{kind:`identity`}:{kind:`append`,from:e.length}}function me(){let e=null,t=[];function n(n){return t=fe(n),e=n,t}function r(r){let i=pe(e,r);switch(i.kind){case`identity`:return t;case`first`:return n(r);case`append`:{let n=t.slice();for(let e=i.from;e<r.length;e++)F(n,r[e]);return e=r,t=n,t}case`mutate-last`:case`fallback`:return n(r)}}return{project:r}}function L(e){let t=(0,A.useRef)(null);return t.current??=me(),t.current.project(e)}function R(e){if(!e)return[];let t;try{t=JSON.parse(e)}catch{let t=e.trimStart();return t.startsWith(`{`)||t.startsWith(`[`)?[]:[{type:`content`,text:e}]}let n=Array.isArray(t)?t:[t],r=[];for(let e of n){let t=z(e);t&&r.push(t)}return r}function z(e){if(typeof e!=`object`||!e)return null;let t=e;switch(t.type){case`content`:return{type:`content`,text:he(t.content)};case`diff`:return typeof t.path!=`string`||typeof t.newText!=`string`?null:{type:`diff`,path:t.path,newText:t.newText,...typeof t.oldText==`string`?{oldText:t.oldText}:{}};case`terminal`:{let e=ge(t);return e===void 0?{type:`terminal`}:{type:`terminal`,text:e}}default:return null}}function he(e){if(typeof e==`string`)return e;if(typeof e==`object`&&e){let t=e.text;if(typeof t==`string`)return t}return``}function ge(e){if(typeof e.text==`string`)return e.text;if(typeof e.output==`string`)return e.output;if(typeof e.content==`string`)return e.content;if(typeof e.content==`object`&&e.content!==null){let t=e.content.text;if(typeof t==`string`)return t}}function B(e){if(typeof e!=`object`||!e)return;let t=e.command;return typeof t==`string`?t:void 0}function V(e){return R(e).filter(e=>e.type===`content`||e.type===`terminal`).map(e=>`text`in e?e.text??``:``).filter(e=>e.length>0).join(`
|
|
2
|
+
`)}function H(e){if(e!=null){if(typeof e==`string`)return e;if(typeof e==`object`)try{return JSON.stringify(e,null,2)}catch{return String(e)}return String(e)}}function U(e,t){let n=new Map;for(let t of e)t.type===`diff`&&n.set(t.path,{path:t.path,newText:t.newText,...t.oldText===void 0?{}:{oldText:t.oldText}});for(let e of t??[])n.has(e.path)||n.set(e.path,{path:e.path});return Array.from(n.values())}var W=i();function _e({content:e,isComplete:t}){return(0,W.jsxs)(`div`,{"data-testid":`acp-chat-agent-message`,className:`flex w-full flex-col items-start text-chat text-[var(--content-default)]`,children:[(0,W.jsx)(D,{content:e}),!t&&(0,W.jsx)(O,{className:`mt-1`,"data-testid":`acp-chat-agent-streaming`})]})}function ve({entries:e}){return e.length===0?null:(0,W.jsxs)(`div`,{"data-testid":`acp-chat-plan-block`,className:`w-full rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)] p-3`,children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 text-[var(--content-tertiary)]`,children:[(0,W.jsx)(ne,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0`}),(0,W.jsx)(a,{variant:`body-small-emphasised`,className:`text-inherit`,children:`Plan`})]}),(0,W.jsx)(`ul`,{className:`flex flex-col gap-1.5`,children:e.map((e,t)=>(0,W.jsxs)(`li`,{"data-testid":`acp-chat-plan-entry`,"data-checked":e.checked,className:`flex items-start gap-2`,children:[e.checked?(0,W.jsx)(d,{"aria-hidden":!0,className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}):(0,W.jsx)(f,{"aria-hidden":!0,className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-disabled)]`}),(0,W.jsx)(`span`,{className:e.checked?`text-body-small-default text-[var(--content-tertiary)] line-through`:`text-body-small-default text-[var(--content-default)]`,children:e.label})]},t))})]})}function ye(e){switch(e){case`max_tokens`:case`max_turn_requests`:return`Stopped: limit reached`;case`refusal`:return`Refused`;case`cancelled`:return`Cancelled`;default:return`Completed`}}function be(e){return new Date(e).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function G({completedAt:e}){return e===void 0?null:(0,W.jsxs)(`span`,{"data-testid":`acp-chat-terminal-time`,children:[`at `,be(e)]})}function xe({status:e,stopReason:t,error:n,completedAt:r}){if(C(e))return null;if(e===`failed`)return(0,W.jsxs)(`div`,{"data-testid":`acp-chat-terminal-block`,"data-terminal-kind":`failed`,className:`flex items-start gap-2 rounded-lg bg-[var(--system-negative-weak)] px-3 py-2 text-body-small-default text-[var(--system-negative-strong)]`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,"data-testid":`acp-chat-terminal-failed-icon`,className:`flex h-[12px] w-4 shrink-0 items-center justify-center`,children:(0,W.jsx)(_,{className:`h-4 w-4`})}),(0,W.jsx)(`span`,{children:n??`Run failed`})]});if(e===`cancelled`)return(0,W.jsxs)(`div`,{"data-testid":`acp-chat-terminal-block`,"data-terminal-kind":`cancelled`,className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,W.jsx)(te,{"aria-hidden":!0,className:`h-4 w-4 shrink-0`}),(0,W.jsx)(`span`,{children:`Cancelled`}),(0,W.jsx)(G,{completedAt:r})]});let i=ye(t);return(0,W.jsxs)(`div`,{"data-testid":`acp-chat-terminal-block`,"data-terminal-kind":`completed`,className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,W.jsx)(d,{"aria-hidden":!0,className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,W.jsx)(`span`,{children:i}),(0,W.jsx)(G,{completedAt:r})]})}function Se({showDot:e,isLast:t,children:n}){return(0,W.jsxs)(`div`,{className:`relative flex items-start gap-2${t?``:` pb-4`}`,children:[!t&&(0,W.jsx)(`div`,{"aria-hidden":!0,className:`absolute bottom-0 left-[6.5px] w-px bg-[var(--border-element)] ${e?`top-[16px]`:`top-0`}`}),e?(0,W.jsx)(`span`,{"aria-hidden":!0,"data-testid":`acp-chat-timeline-dot`,className:`flex h-[14px] w-[14px] shrink-0 items-center justify-center`,children:(0,W.jsx)(`span`,{className:`h-[5px] w-[5px] rounded-full bg-[var(--content-disabled)]`})}):(0,W.jsx)(`span`,{"aria-hidden":!0,className:`h-[14px] w-[14px] shrink-0`}),(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:n})]})}function Ce({content:e,isComplete:t}){let[n,r]=(0,A.useState)(null),i=n??!t,a=e.trim().length>0,o=t?`Thought process`:`Thinking`,s=t?(0,W.jsx)(c,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0`}):(0,W.jsx)(O,{dotSize:5,className:`shrink-0`,"data-testid":`acp-chat-thinking-streaming`});return a?(0,W.jsxs)(`div`,{"data-testid":`acp-chat-thinking-block`,className:`w-full`,children:[(0,W.jsxs)(`button`,{type:`button`,"aria-expanded":i,onClick:()=>r(!i),"data-testid":`acp-chat-thinking-toggle`,className:`flex w-full items-center gap-1.5 text-body-small-default text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)]`,children:[i?(0,W.jsx)(l,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0`}):(0,W.jsx)(u,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0`}),s,(0,W.jsx)(`span`,{children:o})]}),i&&(0,W.jsx)(`div`,{"data-testid":`acp-chat-thinking-body`,className:`mt-1.5 border-l-2 border-[var(--border-base)] pl-3 text-body-small-default text-[var(--content-tertiary)]`,children:(0,W.jsx)(D,{content:e})})]}):(0,W.jsx)(`div`,{"data-testid":`acp-chat-thinking-block`,className:`w-full`,children:(0,W.jsxs)(`div`,{className:`flex w-full items-center gap-1.5 text-body-small-default text-[var(--content-tertiary)]`,children:[s,(0,W.jsx)(`span`,{children:o})]})})}var we={running:`neutral`,completed:`positive`,error:`negative`,ended:`neutral`},Te={running:`Running`,completed:`Completed`,error:`Failed`,ended:`Ended`},Ee={read:`Read file`,edit:`Edit file`,delete:`Delete file`,move:`Move file`,search:`Search`,execute:`Run command`,think:`Thinking`,fetch:`Fetch`,switch_mode:`Switch mode`},De=`Tool call`,Oe={read:m,edit:ce,delete:oe,move:le,search:b,execute:E,think:c,fetch:h,switch_mode:g},ke=new Set([`read`,`edit`,`delete`,`move`]);function Ae({toolKind:e}){return(0,W.jsx)(e&&Oe[e]||p,{"aria-hidden":!0,className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)]`})}function K({label:e,value:t,testId:n}){return(0,W.jsxs)(`div`,{"data-testid":n,children:[(0,W.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-tertiary)]`,children:e}),(0,W.jsx)(`pre`,{className:`max-h-60 overflow-auto rounded-md border border-[var(--border-element)] bg-[var(--surface-base)] p-2.5 font-mono text-body-small-default text-[var(--content-secondary)]`,children:t})]})}function je({block:e,isTerminal:t=!1,onOpenDiff:n,onOpenOutput:r}){let[i,o]=(0,A.useState)(!1),s=(0,A.useMemo)(()=>R(e.content),[e.content]),c=(0,A.useMemo)(()=>V(e.content),[e.content]),d=(0,A.useMemo)(()=>c.split(`
|
|
3
|
+
`).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith("```"))||`View output`,[c]),f=(0,A.useMemo)(()=>U(s,e.locations),[s,e.locations]),p=t&&e.status===`running`?`ended`:e.status,h=p===`running`,g=e.toolKind&&Ee[e.toolKind]||De,_=B(e.rawInput)??e.title,v=_&&_!==g&&(!ke.has(e.toolKind??``)||f.length===0)?_:null,b=H(e.rawInput),x=H(e.rawOutput),S=b!==void 0||x!==void 0;return(0,W.jsxs)(`div`,{"data-testid":`acp-chat-tool-card`,"data-status":e.status,className:`w-full rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)] p-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(Ae,{toolKind:e.toolKind}),(0,W.jsx)(a,{variant:`body-small-emphasised`,className:`min-w-0 flex-1 truncate text-[var(--content-default)]`,title:e.title,children:g}),(0,W.jsx)(y,{tone:we[p],"data-testid":`acp-chat-tool-status`,children:Te[p]}),h&&(0,W.jsx)(O,{className:`shrink-0`,"data-testid":`acp-chat-tool-running`})]}),v&&(0,W.jsx)(`div`,{"data-testid":`acp-chat-tool-detail`,className:`mt-1.5 font-mono text-body-small-default whitespace-pre-wrap break-words text-[var(--content-secondary)]`,children:v}),f.length>0&&(0,W.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:f.map(t=>{let r=t.oldText!==void 0||t.newText!==void 0,i=`flex max-w-full items-center gap-1.5 rounded-md border border-[var(--border-base)] bg-[var(--surface-base)] px-2 py-1 text-body-small-default text-[var(--content-secondary)]`;return r?(0,W.jsxs)(`button`,{type:`button`,"data-testid":`acp-chat-tool-file-chip`,onClick:()=>n(e.toolCallId,t),title:t.path,className:`${i} cursor-pointer transition-colors hover:bg-[var(--surface-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--border-focus)]`,children:[(0,W.jsx)(m,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0`}),(0,W.jsx)(`span`,{className:`truncate font-mono`,children:t.path})]},t.path):(0,W.jsxs)(`span`,{"data-testid":`acp-chat-tool-file-ref`,title:t.path,className:i,children:[(0,W.jsx)(m,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0`}),(0,W.jsx)(`span`,{className:`truncate font-mono`,children:t.path})]},t.path)})}),c.length>0&&(0,W.jsxs)(`button`,{type:`button`,"data-testid":`acp-chat-tool-output-open`,onClick:()=>r?.(e.toolCallId),className:`mt-2 flex w-full items-center gap-2 rounded-md border border-[var(--border-element)] bg-[var(--surface-base)] px-2.5 py-2 text-left transition-colors hover:bg-[var(--surface-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--border-focus)]`,children:[(0,W.jsx)(E,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0 text-[var(--content-tertiary)]`}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-body-small-default text-[var(--content-secondary)]`,children:d}),(0,W.jsx)(u,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0 text-[var(--content-tertiary)]`})]}),S&&(0,W.jsxs)(`div`,{className:`mt-2`,"data-testid":`acp-chat-tool-raw`,children:[(0,W.jsxs)(`button`,{type:`button`,"data-testid":`acp-chat-tool-raw-toggle`,"aria-expanded":i,onClick:()=>o(e=>!e),className:`flex items-center gap-1 text-body-small-default text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-default)]`,children:[i?(0,W.jsx)(l,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0`}):(0,W.jsx)(u,{"aria-hidden":!0,className:`h-3.5 w-3.5 shrink-0`}),(0,W.jsx)(`span`,{children:i?`Hide raw input/output`:`Show raw input/output`})]}),i&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex flex-col gap-2`,children:[b!==void 0&&(0,W.jsx)(K,{label:`Raw input`,value:b,testId:`acp-chat-tool-raw-input`}),x!==void 0&&(0,W.jsx)(K,{label:`Raw output`,value:x,testId:`acp-chat-tool-raw-output`})]})]})]})}function Me({content:e}){return(0,W.jsx)(`div`,{"data-testid":`acp-chat-user-turn`,className:`flex w-full justify-end`,children:(0,W.jsx)(`div`,{className:`max-w-[80%] rounded-lg bg-[var(--surface-lift)] px-4 py-3 whitespace-pre-wrap text-chat text-[var(--content-default)]`,children:e})})}function Ne(e,t){let n=e=>new Intl.NumberFormat(void 0,{style:`currency`,currency:t}).format(e);return e>0&&e<.01?`<${n(.01)}`:n(e)}var q=new Intl.NumberFormat(`en-US`);function J({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex items-baseline gap-1`,"data-usage-stat":e.toLowerCase(),children:[(0,W.jsx)(a,{variant:`label-small-default`,className:`text-[var(--content-tertiary)]`,children:e}),(0,W.jsx)(a,{variant:`body-small-default`,className:`text-[var(--content-secondary)] tabular-nums`,children:t})]})}function Pe({entry:e}){let{inputTokens:t,outputTokens:n,costAmount:r,costCurrency:i}=e;if(t===void 0&&n===void 0)return null;let a=t??0,o=n??0,s=r!=null&&i!=null;return(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,"data-testid":`acp-usage-meter`,children:[(0,W.jsx)(J,{label:`Input`,value:q.format(a)}),(0,W.jsx)(J,{label:`Output`,value:q.format(o)}),s&&(0,W.jsx)(J,{label:`Cost`,value:Ne(r,i)})]})}function Fe({content:e}){return(0,W.jsx)(`div`,{"data-testid":`acp-chat-command-output`,className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)] p-3 [&_pre]:!max-h-none`,children:(0,W.jsx)(D,{content:V(e),hardLineBreaks:!0})})}var Y=2e3;function X(e){if(e===``)return[];let t=e.split(`
|
|
4
|
+
`);return e.endsWith(`
|
|
5
|
+
`)&&t.pop(),t}function Ie(e,t){let n=e.length,r=t.length,i=Array.from({length:n+1},()=>Array(r+1).fill(0));for(let a=n-1;a>=0;a--)for(let n=r-1;n>=0;n--)i[a][n]=e[a]===t[n]?i[a+1][n+1]+1:Math.max(i[a+1][n],i[a][n+1]);let a=[],o=0,s=0;for(;o<n&&s<r;)e[o]===t[s]?(a.push({type:`ctx`,text:e[o],oldNo:o+1,newNo:s+1}),o++,s++):i[o+1][s]>=i[o][s+1]?(a.push({type:`del`,text:e[o],oldNo:o+1}),o++):(a.push({type:`add`,text:t[s],newNo:s+1}),s++);for(;o<n;)a.push({type:`del`,text:e[o],oldNo:o+1}),o++;for(;s<r;)a.push({type:`add`,text:t[s],newNo:s+1}),s++;return a}function Le(e,t){let n=X(e),r=X(t);return n.length>Y||r.length>Y?[{type:`too-large`,text:`Diff too large to render (over ${Y.toLocaleString()} lines)`}]:n.length===0?r.map((e,t)=>({type:`add`,text:e,newNo:t+1})):r.length===0?n.map((e,t)=>({type:`del`,text:e,oldNo:t+1})):Ie(n,r)}var Z=`—`;function Q(e){switch(e){case`add`:return`bg-[var(--system-positive-weak)] text-[var(--system-positive-strong)]`;case`del`:return`bg-[var(--system-negative-weak)] text-[var(--system-negative-strong)]`;case`too-large`:return`text-[var(--content-tertiary)] italic`;default:return`text-[var(--content-tertiary)]`}}function Re(e){switch(e){case`add`:return`+`;case`del`:return`-`;default:return` `}}function ze({path:e,oldText:t,newText:n}){let r=Le(t??``,n??``);return(0,W.jsx)(`div`,{"aria-label":`Diff for ${e}`,"data-testid":`acp-chat-file-diff`,className:`flex flex-col overflow-hidden rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)]`,children:(0,W.jsx)(`div`,{className:`overflow-x-auto font-mono text-xs`,children:r.map((e,t)=>(0,W.jsx)(Be,{row:e},t))})})}function Be({row:e}){return e.type===`too-large`?(0,W.jsx)(`div`,{"data-diff-type":`too-large`,className:`px-3 py-2 whitespace-pre-wrap ${Q(e.type)}`,children:e.text}):(0,W.jsxs)(`div`,{"data-diff-type":e.type,className:`flex items-start whitespace-pre ${Q(e.type)}`,children:[(0,W.jsx)(`span`,{className:`w-10 shrink-0 select-none px-2 text-right text-[var(--content-tertiary)] tabular-nums`,children:e.oldNo??Z}),(0,W.jsx)(`span`,{className:`w-10 shrink-0 select-none px-2 text-right text-[var(--content-tertiary)] tabular-nums`,children:e.newNo??Z}),(0,W.jsx)(`span`,{className:`w-4 shrink-0 select-none text-center`,children:Re(e.type)}),(0,W.jsx)(`span`,{className:`flex-1 pr-3`,children:e.text})]})}var Ve=80;function $(e){return e.scrollHeight-e.clientHeight-e.scrollTop<=Ve}function He(e){let t=(0,A.useRef)(null),n=(0,A.useRef)(!0),[r,i]=(0,A.useState)(!1),a=(0,A.useCallback)(()=>{let e=t.current;e&&(e.scrollTop=e.scrollHeight)},[]),o=(0,A.useCallback)(()=>{let e=t.current;if(!e)return;let r=$(e);n.current=r,i(e=>e===!r?e:!r)},[]),s=(0,A.useCallback)(()=>{n.current=!0,a(),i(!1)},[a]),c=(0,A.useCallback)(e=>{let r=t.current;r&&r.removeEventListener(`scroll`,o),t.current=e,e&&(e.addEventListener(`scroll`,o,{passive:!0}),n.current?e.scrollTop=e.scrollHeight:o())},[o]);return(0,A.useLayoutEffect)(()=>{n.current?a():o()},[e,a,o]),{scrollRef:c,showScrollToLatest:r,scrollToLatest:s}}function Ue(e,t){switch(e.kind){case`user`:return`user-${e.id||t}`;case`agent`:return`agent-${e.messageId||t}`;case`thinking`:return`thinking-${e.messageId||t}`;case`tool`:return`tool-${e.toolCallId}`;case`plan`:return`plan`}}var We=[];function Ge({entry:e,onClose:t}){let n=C(e.status),i=L(T(t=>t.byId[e.acpSessionId]?.events??We)),[o,s]=(0,A.useState)(null),[c,l]=(0,A.useState)(e.acpSessionId);c!==e.acpSessionId&&(l(e.acpSessionId),s(null));let d=(0,A.useCallback)((e,t)=>s({kind:`diff`,toolCallId:e,path:t.path}),[]),f=(0,A.useCallback)(e=>s({kind:`output`,toolCallId:e}),[]),p=(0,A.useCallback)(()=>s(null),[]),m=(0,A.useMemo)(()=>o?i.find(e=>e.kind===`tool`&&e.toolCallId===o.toolCallId)??null:null,[o,i]),h=(0,A.useMemo)(()=>o?.kind!==`diff`||!m?null:U(R(m.content),m.locations).find(e=>e.path===o.path)??null,[o,m]),g=o?.kind===`diff`?o.path:m?B(m.rawInput)??m.title??`Output`:`Output`,{scrollRef:_,showScrollToLatest:v,scrollToLatest:y}=He((0,A.useMemo)(()=>({blocks:i,status:e.status,completedAt:e.completedAt}),[i,e.status,e.completedAt])),b=!n;return(0,W.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden rounded-xl bg-[var(--surface-lift)]`,children:[o&&(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--border-hover)] px-5 py-3`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:p,title:e.agent,className:`min-w-0 shrink cursor-pointer truncate text-left text-[var(--content-default)] hover:underline`,children:(0,W.jsx)(a,{variant:`body-small-default`,as:`span`,children:e.agent})}),(0,W.jsx)(u,{className:`h-2.5 w-2.5 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,W.jsx)(a,{variant:`body-small-default`,as:`span`,title:g,className:`min-w-0 shrink truncate font-mono text-[var(--content-secondary)]`,children:g})]}),(0,W.jsx)(Ke,{entry:e,isRunning:n,onClose:t,showBack:!!o,onBack:p},`header-${e.acpSessionId}`),o?(0,W.jsx)(`div`,{className:`flex-1 overflow-y-auto px-5 py-5`,children:o.kind===`diff`?(0,W.jsx)(ze,{path:o.path,oldText:h?.oldText,newText:h?.newText}):(0,W.jsx)(Fe,{content:m?.content})}):(0,W.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[(0,W.jsxs)(`div`,{ref:_,"data-testid":`acp-chat-conversation`,className:`flex h-full flex-col gap-4 overflow-y-auto px-5 py-5`,children:[(0,W.jsx)(qe,{task:e.task}),(0,W.jsx)(`div`,{className:`flex flex-col`,"data-testid":`acp-chat-timeline`,children:i.map((e,t)=>(0,W.jsx)(Se,{showDot:t===0||t===i.length-1||e.kind===`tool`||e.kind===`plan`,isLast:t===i.length-1,children:(0,W.jsx)(Je,{block:e,isTerminal:b,onOpenDiff:d,onOpenOutput:f})},Ue(e,t)))}),!n&&(0,W.jsx)(xe,{status:e.status,stopReason:e.stopReason,error:e.error,completedAt:e.completedAt})]}),v&&(0,W.jsx)(r,{variant:`outlined`,size:`compact`,iconOnly:(0,W.jsx)(S,{}),onClick:y,"aria-label":`Go to newest`,tooltip:`Go to newest`,"data-testid":`acp-chat-scroll-to-latest`,className:`absolute bottom-3 left-1/2 -translate-x-1/2 rounded-full shadow-md`})]}),n&&!o&&(0,W.jsx)(Ye,{acpSessionId:e.acpSessionId},`steer-${e.acpSessionId}`)]})}function Ke({entry:e,isRunning:n,onClose:i,showBack:o=!1,onBack:c}){let[l,u]=(0,A.useState)(!1),d=ee(e.status,e.stopReason),f=(0,A.useCallback)(()=>{u(!0),ae(e.acpSessionId).catch(e=>{u(!1),t(e,{context:`AcpRunChatView.stop`})})},[e.acpSessionId]);return(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-hover)] px-5 py-4`,children:[o&&(0,W.jsx)(r,{variant:`outlined`,iconOnly:(0,W.jsx)(s,{}),onClick:c,"aria-label":`Back to conversation`,tooltip:`Back`,"data-testid":`acp-chat-diff-back`,className:`shrink-0 rounded-lg`}),(0,W.jsx)(k,{agent:e.agent,className:`h-5 w-5 shrink-0`}),(0,W.jsx)(a,{variant:`title-medium`,title:e.agent,className:`min-w-0 shrink truncate leading-snug text-[var(--content-default)]`,children:e.agent}),(0,W.jsx)(se,{color:d.color,label:d.label}),(0,W.jsx)(`span`,{className:`flex-1`}),(0,W.jsx)(Pe,{entry:e}),n&&(0,W.jsxs)(`button`,{type:`button`,"aria-label":`Stop run`,onClick:f,disabled:l,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)] disabled:cursor-default disabled:opacity-50`,children:[(0,W.jsx)(re,{className:`h-3 w-3`,fill:`currentColor`}),(0,W.jsx)(a,{variant:`label-small-default`,children:`Stop`})]}),(0,W.jsx)(r,{variant:`outlined`,iconOnly:(0,W.jsx)(v,{}),onClick:i,"aria-label":`Close run detail`,tooltip:`Close`,className:`shrink-0 rounded-lg`})]})}function qe({task:e}){return e?(0,W.jsxs)(`div`,{"data-testid":`acp-chat-objective`,children:[(0,W.jsx)(a,{variant:`body-medium-default`,as:`h3`,className:`mb-1 text-[var(--content-emphasised)]`,children:`Objective`}),(0,W.jsx)(a,{variant:`body-medium-lighter`,as:`p`,className:`whitespace-pre-wrap break-words leading-relaxed text-[var(--content-default)]`,children:e}),(0,W.jsx)(`div`,{className:`mt-4 h-px w-full bg-[var(--border-hover)]`})]}):null}function Je({block:e,isTerminal:t,onOpenDiff:n,onOpenOutput:r}){switch(e.kind){case`user`:return(0,W.jsx)(Me,{content:e.content});case`agent`:return(0,W.jsx)(_e,{content:e.content,isComplete:e.isComplete||t});case`thinking`:return(0,W.jsx)(Ce,{content:e.content,isComplete:e.isComplete||t});case`tool`:return(0,W.jsx)(je,{block:e,isTerminal:t,onOpenDiff:n,onOpenOutput:r});case`plan`:return(0,W.jsx)(ve,{entries:e.entries})}}function Ye({acpSessionId:e}){let[n,i]=(0,A.useState)(``),[a,o]=(0,A.useState)(!1);return(0,W.jsx)(`form`,{onSubmit:(0,A.useCallback)(r=>{r.preventDefault();let s=n.trim();if(!s||a)return;o(!0);let c=T.getState().appendLocalMarker({acpSessionId:e,content:`${w}${s}`});ie(e,s).then(()=>i(``)).catch(n=>{c&&T.getState().removeLocalMarker({acpSessionId:e,markerId:c}),t(n,{context:`AcpRunChatView.steer`})}).finally(()=>o(!1))},[n,a,e]),"data-testid":`acp-chat-steer-form`,className:`sticky bottom-0 z-10 shrink-0 border-t border-[var(--border-hover)] bg-[var(--surface-lift)] px-5 py-3`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md bg-[var(--surface-base)] px-3 py-2`,children:[(0,W.jsx)(`input`,{type:`text`,value:n,onChange:e=>i(e.target.value),placeholder:`Steer the run…`,disabled:a,"aria-label":`Steering instruction`,className:`text-body-medium-default min-w-0 flex-1 bg-transparent text-[color:var(--content-default)] placeholder:text-[color:var(--content-tertiary)] focus:outline-none disabled:opacity-50`}),(0,W.jsx)(r,{type:`submit`,variant:`primary`,size:`compact`,iconOnly:(0,W.jsx)(x,{}),disabled:a||n.trim()===``,"aria-label":`Send steering instruction`,className:`shrink-0`})]})})}function Xe({entry:e,onClose:t}){return(0,W.jsx)(Ge,{entry:e,onClose:t})}export{Xe as AcpRunDetailPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e,r as t}from"./chunk-jRWAZmH_.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-D1p5nVKJ.js";import{h as i,t as a,u as o}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as s}from"./QueryClientProvider-DKhXIxGb.js";import{t as c}from"./useQuery-B45lW1Kk.js";import{t as l}from"./useMutation-Lj4VunQV.js";import{t as u}from"./jsx-runtime-CVSDxk6A.js";import{t as d}from"./circle-alert-zOqdmf25.js";import{t as f}from"./credit-card-
|
|
1
|
+
import{o as e,r as t}from"./chunk-jRWAZmH_.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-D1p5nVKJ.js";import{h as i,t as a,u as o}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as s}from"./QueryClientProvider-DKhXIxGb.js";import{t as c}from"./useQuery-B45lW1Kk.js";import{t as l}from"./useMutation-Lj4VunQV.js";import{t as u}from"./jsx-runtime-CVSDxk6A.js";import{t as d}from"./circle-alert-zOqdmf25.js";import{t as f}from"./credit-card-s3I7DYkY.js";import{t as p}from"./loader-circle-TuIfoFJ-.js";import{t as m}from"./modal-ajtKjbBb.js";import{t as h}from"./dropdown-D_OyzMtG.js";import{lt as g,st as _}from"./react-query.gen-DflHuu0a.js";import{n as v,t as y}from"./browser-lPBujdA8.js";var b=t({AddCreditsModal:()=>E}),x=e(n(),1),S=u(),C=[`10.00`,`20.00`,`30.00`,`40.00`,`50.00`,`60.00`,`70.00`,`80.00`,`90.00`,`100.00`];function w(e){let t=parseFloat(e);if(Number.isNaN(t))return`0 credits`;let n=t.toLocaleString(`en-US`,{minimumFractionDigits:2,maximumFractionDigits:2});return`${n.endsWith(`.00`)?n.slice(0,-3):n} credits`}function T(e){if(e&&typeof e==`object`){let t=e.amount;if(Array.isArray(t)&&typeof t[0]==`string`)return t[0]}return`Failed to create checkout session. Please try again.`}function E({open:e,onOpenChange:t}){let n=s(),{pathname:u}=o(),[b]=i(),E=b.toString()?`${u}?${b.toString()}`:u,{data:D,isLoading:O}=c(_()),k=D?.allowed_top_up_amounts?.length?D.allowed_top_up_amounts:C,[A,j]=(0,x.useState)(null),M=A&&k.includes(A)?A:k[0]??C[0],N=l(g());return(0,x.useEffect)(()=>v(()=>{t(!1),n.invalidateQueries(_())}),[t,n]),(0,S.jsx)(m.Root,{open:e,onOpenChange:t,children:(0,S.jsxs)(m.Content,{size:`sm`,children:[(0,S.jsxs)(m.Header,{children:[(0,S.jsx)(m.Title,{icon:f,children:`Add Credits`}),(0,S.jsx)(m.Description,{children:`Purchase credits to continue using the assistant. You'll be redirected to Stripe to complete the payment.`})]}),(0,S.jsx)(m.Body,{children:(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{htmlFor:`add-credits-amount`,className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Amount`}),(0,S.jsx)(h,{id:`add-credits-amount`,value:M,onChange:e=>{j(e),N.isError&&N.reset()},disabled:O||!D,options:k.map(e=>({value:e,label:w(e)}))})]}),N.isError&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--system-negative-strong)]`,children:[(0,S.jsx)(d,{className:`h-3.5 w-3.5 shrink-0`}),T(N.error)]}),(0,S.jsx)(a,{to:`/assistant/settings/billing`,className:`text-body-small-default text-[var(--content-tertiary)] underline hover:text-[var(--content-secondary)]`,onClick:()=>t(!1),children:`Configure Automatic Top-Ups →`})]})}),(0,S.jsxs)(m.Footer,{children:[(0,S.jsx)(m.Close,{asChild:!0,children:(0,S.jsx)(r,{variant:`outlined`,children:`Cancel`})}),(0,S.jsx)(r,{variant:`primary`,leftIcon:N.isPending?(0,S.jsx)(p,{className:`animate-spin`}):void 0,onClick:()=>{N.isPending||N.mutate({body:{amount:M,return_path:E}},{onSuccess:e=>{y(e.checkout_url)}})},disabled:N.isPending||O||!D,children:`Add credits`})]})]})})}export{b as n,E as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-8raDoxFL.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-D1p5nVKJ.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./loader-circle-TuIfoFJ-.js";import{t as l}from"./input-C3O_0Gf6.js";import{t as u}from"./toggle-DDr-VA6z.js";import{n as d}from"./stat-square-BgTmN7tX.js";import{n as f}from"./toast-KhXf0OVq.js";import{Ht as p,K as m,Nt as h,Ut as g,c as _,q as v,u as y}from"./react-query.gen-D7LMEAtj.js";import{X as b}from"./sdk.gen-DIozkrVG.js";import{F as x,P as S}from"./react-query.gen-DflHuu0a.js";import{T as C,Vr as w}from"./index-BFy5Tyub.js";import{t as T}from"./use-active-assistant-id-CNSl8K3W.js";import{t as E}from"./detail-card-CZaoEgsH.js";import{r as D}from"./assistant-status-panel-CVx8n3AQ.js";var O=s();function k({memoryEnabled:e}){let n=T(),r=i(),{data:o}=a({...m({path:{assistant_id:n}}),staleTime:3e4}),s=e=>{v(r,{path:{assistant_id:n}},t=>t&&{...t,workerEnabled:e})},c=p({onSuccess:()=>s(!0)}),l=g({onSuccess:()=>s(!1)}),d=async e=>{try{e?(await c.mutateAsync({path:{assistant_id:n}}),f.success(`Background worker enabled.`)):(await l.mutateAsync({path:{assistant_id:n}}),f.success(`Background worker disabled.`))}catch(e){t(e,{context:`settings-memory-worker-toggle`}),f.error(`Failed to update background worker setting.`)}};if(!o)return null;let h=c.isPending||l.isPending;return(0,O.jsxs)(`div`,{className:`flex flex-row items-start justify-between gap-4 border-t border-[var(--border-subtle)] pt-4`,children:[(0,O.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,O.jsx)(`h3`,{className:`text-body-medium-default text-[var(--content-emphasised)]`,children:`Background worker`}),(0,O.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:`Run memory consolidation in a dedicated background process instead of inline. Recommended for heavier memory workloads.`})]}),(0,O.jsx)(u,{checked:o.workerEnabled===!0,onChange:e=>void d(e),"aria-label":`Enable background memory worker`,disabled:!e||h})]})}var A=e(n(),1),j=[[`Mon`,0],[`Tue`,1],[`Wed`,2],[`Thu`,3],[`Fri`,4],[`Sat`,5],[`Sun`,6]];function M(e){let[t,n]=e.split(`:`).map(Number),r=new Date,i=new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate(),t,n));return`${i.getHours().toString().padStart(2,`0`)}:${i.getMinutes().toString().padStart(2,`0`)}`}function N(e){let[t,n]=e.split(`:`).map(Number),r=new Date,i=new Date(r.getFullYear(),r.getMonth(),r.getDate(),t,n);return`${i.getUTCHours().toString().padStart(2,`0`)}:${i.getUTCMinutes().toString().padStart(2,`0`)}`}function P(){return Intl.DateTimeFormat(void 0,{timeZoneName:`short`}).formatToParts(new Date).find(e=>e.type===`timeZoneName`)?.value??``}function F(e){let t=e?.schedule?.window.start??`06:00`,n=e?.schedule?.window.end??`08:00`;return{enabled:e?.enabled??!0,timezone:`UTC`,frequency:e?.schedule?.frequency??`weekly`,daysOfWeek:e?.schedule?.days_of_week??[0],daysOfMonth:e?.schedule?.days_of_month??[],windowStart:M(t),windowEnd:M(n)}}function I({assistantId:e}){let t=i(),{data:n,isLoading:s,isError:p}=a(S({path:{id:e}})),m=(0,A.useMemo)(()=>F(n),[n]),[h,g]=(0,A.useState)(null),_=h??m,v=h!==null,y=(0,A.useMemo)(()=>P(),[]),[C,w]=(0,A.useState)(null),T=C??_.daysOfMonth.join(`, `),E=o({mutationFn:async t=>{let{data:n}=await b({path:{id:e},body:t,throwOnError:!0});return n}}),D=e=>{g(t=>({...t??m,...e}))},k=e=>{D({daysOfWeek:_.daysOfWeek.includes(e)?_.daysOfWeek.filter(t=>t!==e):[..._.daysOfWeek,e].sort((e,t)=>e-t)})},M=e=>e.split(`,`).map(e=>parseInt(e.trim(),10)).filter(e=>!isNaN(e)&&e>=1&&e<=31);return s?(0,O.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,O.jsx)(c,{className:`h-4 w-4 animate-spin`}),`Loading update window settings...`]}):p?(0,O.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--system-negative-strong)]`,children:`Failed to load update window policy. Refresh the page to try again.`}):(0,O.jsxs)(`div`,{className:`space-y-6`,children:[(0,O.jsx)(u,{checked:_.enabled,onChange:e=>D({enabled:e}),label:`Automatic updates`,helperText:`Update automatically during a configured time window`}),_.enabled&&(0,O.jsxs)(`div`,{className:`space-y-5`,children:[(0,O.jsxs)(`div`,{className:`space-y-2`,children:[(0,O.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-secondary)]`,children:`Frequency`}),(0,O.jsx)(`div`,{className:`max-w-[400px]`,children:(0,O.jsx)(d,{ariaLabel:`Frequency`,value:_.frequency,onChange:e=>{e!==`monthly`&&w(null),D({frequency:e})},items:[{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`}]})})]}),_.frequency===`weekly`&&(0,O.jsxs)(`div`,{className:`space-y-2`,children:[(0,O.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-secondary)]`,children:`Day(s) of week`}),(0,O.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:j.map(([e,t])=>(0,O.jsx)(r,{variant:`outlined`,size:`compact`,active:_.daysOfWeek.includes(t),onClick:()=>k(t),children:e},t))})]}),_.frequency===`monthly`&&(0,O.jsx)(l,{label:`Day(s) of month`,type:`text`,value:T,onChange:e=>w(e.target.value),onBlur:e=>{let t=M(e.target.value);D({daysOfMonth:t}),w(t.join(`, `))},placeholder:`e.g. 1, 15`,helperText:`Comma-separated day numbers (1–31)`,className:`w-48`}),(0,O.jsxs)(`div`,{className:`space-y-2`,children:[(0,O.jsxs)(`label`,{className:`block text-body-small-default text-[var(--content-secondary)]`,children:[`Update window`,y?` (${y})`:``]}),(0,O.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,O.jsx)(l,{type:`time`,value:_.windowStart,onChange:e=>D({windowStart:e.target.value})}),(0,O.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`to`}),(0,O.jsx)(l,{type:`time`,value:_.windowEnd,onChange:e=>D({windowEnd:e.target.value})})]})]})]}),(0,O.jsx)(r,{variant:`primary`,leftIcon:E.isPending?(0,O.jsx)(c,{className:`animate-spin`}):void 0,onClick:async()=>{let n=_.frequency===`monthly`&&C!==null?M(C):_.daysOfMonth;try{await E.mutateAsync({enabled:_.enabled,timezone:`UTC`,schedule:{frequency:_.frequency,days_of_week:_.frequency===`weekly`?_.daysOfWeek:[],days_of_month:_.frequency===`monthly`?n:[],window:{start:N(_.windowStart),end:N(_.windowEnd)}}}),f.success(`Auto-update policy saved.`),g(null),w(null),t.invalidateQueries({queryKey:x({path:{id:e}})})}catch{f.error(`Failed to save policy. Please try again.`)}},disabled:E.isPending||!v,children:`Save policy`})]})}function L(){let{assistant:e,healthz:n}=D(),r=w({platformHostedOnly:!0}),o=e?.is_local?null:e,s=T(),c=i(),l=n?.capabilities?.memoryOptOut===!0,{data:d}=a({..._({path:{assistant_id:s}}),staleTime:3e4,enabled:l}),p=h({onSuccess:e=>{y(c,{path:{assistant_id:s}},e)}}),m=d?.memory?.enabled!==!1,g=async e=>{try{await p.mutateAsync({path:{assistant_id:s},body:{memory:{enabled:e}}}),f.success(e?`Memory enabled.`:`Memory disabled.`)}catch(e){t(e,{context:`settings-memory-toggle`}),f.error(`Failed to update memory setting.`)}};return(0,O.jsxs)(`div`,{className:`space-y-4`,children:[r===`full`&&o&&(0,O.jsx)(E,{title:`Update Window`,subtitle:`Configure when automatic updates are applied.`,children:(0,O.jsx)(I,{assistantId:o.id})}),r===`disabled`&&(0,O.jsx)(E,{title:`Update Window`,subtitle:`Configure when automatic updates are applied.`,children:(0,O.jsx)(C,{children:`Log in to the Vellum platform to manage update window policy.`})}),l?(0,O.jsx)(E,{title:`Memory`,subtitle:`Let your assistant remember information from past conversations. Turning this off also pauses memory consolidation.`,accessory:(0,O.jsx)(u,{checked:m,onChange:e=>void g(e),"aria-label":`Enable memory`,disabled:p.isPending}),compactAccessory:!0,children:(0,O.jsx)(k,{memoryEnabled:m})}):null]})}export{L as AdvancedPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,r as n,s as r}from"./local-settings-lVNyIOJ_.js";import{r as i,t as a}from"./capture-error-8raDoxFL.js";import{t as o}from"./react-DJZBPgpf.js";import{t as s}from"./button-D1p5nVKJ.js";import{d as c,h as l}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as u}from"./QueryClientProvider-DKhXIxGb.js";import{t as d}from"./useQuery-B45lW1Kk.js";import{t as f}from"./useMutation-Lj4VunQV.js";import{t as p}from"./jsx-runtime-CVSDxk6A.js";import{t as m}from"./typography-D5f7kt80.js";import{t as h}from"./createLucideIcon-IRfcSUxS.js";import{t as g}from"./check-DFNrQERi.js";import{t as _}from"./circle-alert-zOqdmf25.js";import{t as v}from"./circle-check-VSiny8yl.js";import{n as y,t as b}from"./domain-field-6GHeeXa3.js";import{t as x}from"./external-link-DJ0A4ezO.js";import{t as S}from"./info-BaizXivv.js";import{t as C}from"./loader-circle-TuIfoFJ-.js";import{t as w}from"./triangle-alert-BRr1dMg2.js";import{t as T}from"./notice-BZPwFlPc.js";import{t as E}from"./tag-CT07giv7.js";import{t as D}from"./input-C3O_0Gf6.js";import{t as O}from"./toggle-DDr-VA6z.js";import{n as k}from"./stat-square-BgTmN7tX.js";import{t as A}from"./modal-ajtKjbBb.js";import{n as j}from"./toast-KhXf0OVq.js";import{t as M}from"./confirm-dialog-DTa1C9zW.js";import{t as N}from"./dropdown-D_OyzMtG.js";import{Ft as P,Gn as F,It as I,at as L,dn as R}from"./sdk.gen-b3P17-Kv.js";import{Nt as z,Ot as B,R as V,c as H,d as ee,l as U,mt as W,u as G,z as K}from"./react-query.gen-D7LMEAtj.js";import{r as q}from"./api-errors-CPc5p2r9.js";import{o as te}from"./routes-CwbPJCPw.js";import{t as J}from"./use-is-org-ready-C1KuH5sI.js";import{t as Y}from"./assistant-identity-store-7vdvYHea.js";import{c as ne,d as re,f as ie,g as ae,h as oe,it as se,l as ce,m as le,o as ue,p as de,s as fe,u as pe,v as me,y as he}from"./react-query.gen-DflHuu0a.js";import{t as ge}from"./assistant-feature-flag-store-BCzIMagD.js";import{$r as _e,Ar as X,C as ve,Ca as ye,Di as be,Dr as xe,Er as Se,Fr as Ce,Gr as we,Hr as Te,Ir as Ee,Jr as De,Kr as Oe,Lr as ke,Mr as Ae,Nr as je,Or as Me,Pr as Ne,Qr as Pe,Rr as Fe,S as Ie,T as Le,Tr as Re,Ur as ze,Vr as Be,Wr as Ve,Xr as He,Yr as Ue,Zr as We,ai as Ge,ei as Ke,er as qe,gi as Je,ii as Ye,jr as Xe,kr as Ze,ni as Qe,qr as $e,ri as et,ti as tt,w as nt,x as rt}from"./index-BFy5Tyub.js";import{t as it}from"./use-active-assistant-id-CNSl8K3W.js";import{t as at}from"./detail-card-CZaoEgsH.js";import{t as ot}from"./environment-store-BO4einyI.js";var st=h(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),Z=e(o(),1),Q=p();function ct({mode:e,onChange:t}){return(0,Q.jsx)(`div`,{className:`max-w-[280px]`,children:(0,Q.jsx)(k,{ariaLabel:`Service mode`,value:e,onChange:t,items:[{value:`managed`,label:`Managed`},{value:`your-own`,label:`Your Own`}]})})}function lt({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,Q.jsxs)(at,{id:e,title:t,subtitle:n,accessory:(0,Q.jsx)(ct,{mode:r,onChange:i}),children:[(0,Q.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,Q.jsx)(`div`,{className:`mt-4`,children:a})]})}function $({onClick:e,disabled:t}){return(0,Q.jsx)(s,{onClick:e,disabled:t,children:`Save`})}function ut({onClick:e,filled:t=!1}){return(0,Q.jsx)(s,{variant:t?`danger`:`dangerGhost`,onClick:e,children:`Reset`})}function dt({id:e,title:t,subtitle:n,children:r}){return(0,Q.jsxs)(at,{id:e,title:t,subtitle:n,children:[(0,Q.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,Q.jsx)(`div`,{className:`mt-4`,children:r})]})}function ft({guide:e}){return(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(S,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsx)(`span`,{children:e.description}),(0,Q.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[e.linkLabel,(0,Q.jsx)(x,{className:`h-3 w-3`})]})]})]})}function pt({status:e,message:t,isLoading:n}){return n?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,children:[(0,Q.jsx)(C,{className:`h-3 w-3 animate-spin`}),`Checking domain…`]}):e?e===`verified`?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-positive-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-positive-strong)]`,title:`DNS records have been verified. Your domain is ready to send and receive email.`,children:[(0,Q.jsx)(g,{className:`h-3 w-3`}),`Domain verified`]}):e===`pending`||e===`not_started`?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-mid-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-mid-strong)]`,title:`DNS records have been provisioned. Waiting for the email provider to verify them — this usually takes a few minutes.`,children:[(0,Q.jsx)(ye,{className:`h-3 w-3`}),`Verifying domain…`]}):(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-negative-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,title:`Domain verification failed. DNS records may not have propagated correctly. You could try releasing and re-registering the domain.`,children:[(0,Q.jsx)(_,{className:`h-3 w-3`}),`Verification failed`]}):(0,Q.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,title:`Unable to retrieve domain verification status.`,children:`Unknown status`})}var mt=`__custom__`;function ht(e){return e?!!(e.profile||e.provider||e.model):!1}function gt(e,t){let n=ht(e);return n===ht(t)?n?(e?.profile??null)===(t?.profile??null)&&(e?.provider??null)===(t?.provider??null)&&(e?.model??null)===(t?.model??null):!0:!1}function _t({id:e,displayName:t,description:n,defaultProfileLabel:r,draft:i,profileOptions:a,onDraftChange:o,onToggle:s}){let c=ht(i),l=!i||!c?``:i.provider||i.model?mt:i.profile??``,u=l===mt,d=Ce(),f=d[0]??tt[0],p=d.find(e=>e===i?.provider)??f,m=Ye(p).map(e=>({value:e.id,label:e.displayName})),h=!!i?.provider&&!i?.model;function g(t){t===`__custom__`?o(e,{profile:null,provider:f,model:et(f)??``}):t===``?o(e,null):o(e,{profile:t,provider:null,model:null})}function _(t){let n=et(t)??``;o(e,{...i??{},profile:null,provider:t,model:n})}function v(t){o(e,{...i??{},model:t})}return(0,Q.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-default font-medium text-[var(--content-default)]`,children:t}),n&&(0,Q.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[n,r&&(0,Q.jsxs)(`span`,{className:`ml-1.5 text-body-small-default text-[var(--content-tertiary)] opacity-60`,children:[`· Default: `,r]})]})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c&&(0,Q.jsx)(N,{value:l,onChange:g,options:a,className:`w-44`,menuMinWidth:280,menuAlign:`end`}),(0,Q.jsx)(O,{checked:c,onChange:t=>s(e,t),"aria-label":`Override ${t}`})]})]}),c&&u&&(0,Q.jsxs)(`div`,{className:`mt-3 space-y-2 border-t border-[var(--border-base)] pt-3`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsxs)(`div`,{className:`flex-1`,children:[(0,Q.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(N,{value:p??``,onChange:_,options:d.map(e=>({value:e,label:Qe[e]??e}))})]}),(0,Q.jsxs)(`div`,{className:`flex-1`,children:[(0,Q.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Model`}),(0,Q.jsx)(N,{value:i?.model??``,onChange:v,options:m})]})]}),h&&(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:`Pick a model`})]})]})}function vt({isOpen:e,onClose:t,assistantId:n}){let r=(0,Z.useRef)(!1);return(0,Q.jsx)(A.Root,{open:e,onOpenChange:e=>{!e&&!r.current&&t()},children:e?(0,Q.jsx)(yt,{assistantId:n,onClose:t,onSavingChange:e=>{r.current=e}}):null})}function yt({assistantId:e,onClose:t,onSavingChange:n}){let r=u(),{data:i}=d({...H({path:{assistant_id:e}}),staleTime:3e4}),o=(0,Z.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),c=(0,Z.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),l=(0,Z.useMemo)(()=>i?.llm?.callSites??{},[i?.llm?.callSites]),f=(0,Z.useMemo)(()=>ze(o,c),[o,c]),p=Ce(),m=z({onSuccess:t=>{G(r,{path:{assistant_id:e}},t)}}),[h,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)({}),[y,b]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(!1),w=ge.use.analyzeConversation(),{data:T,isLoading:E,isError:O,refetch:k}=d({...ee({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4,refetchOnWindowFocus:!1}),N=(0,Z.useMemo)(()=>{let e=(T?.callSites??[]).filter(e=>e.id!==`mainAgent`);return w||(e=e.filter(e=>e.id!==`analyzeConversation`)),e},[T,w]),P=!E&&!O&&!!T&&!!i,F=(0,Z.useMemo)(()=>N.map(e=>e.id),[N]),I=(0,Z.useMemo)(()=>{if(!P)return{};let e={};for(let t of F)if(t in _)e[t]=_[t];else{let n=l[t];e[t]=n?{...n}:{}}return e},[P,F,l,_]),L=(0,Z.useMemo)(()=>new Set(F),[F]),R=(0,Z.useMemo)(()=>Object.entries(l).some(([e,t])=>L.has(e)&&(t?.profile!=null||t?.provider!=null||t?.model!=null)),[l,L]),B=(0,Z.useMemo)(()=>{if(!P)return!1;for(let e of Object.keys(I))if(!gt(I[e],l[e]))return!0;return!1},[P,I,l]),V=(0,Z.useMemo)(()=>Object.values(I).some(e=>ht(e)&&!!e?.provider&&!e?.model),[I]),U=(0,Z.useCallback)(e=>[...nt(f,[e]).map(e=>({value:e.name,label:Ie(e)})),{value:mt,label:`Custom`}],[f]),W=(0,Z.useMemo)(()=>{if(!h.trim())return N;let e=h.toLowerCase();return N.filter(t=>(t.displayName??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||(t.domain??``).toLowerCase().includes(e))},[N,h]),K=(0,Z.useMemo)(()=>{if(!T)return[];let e=T.domains.map(e=>e.id),t=new Map(T.domains.map(e=>[e.id,e])),n=[];for(let r of e){let e=W.filter(e=>e.domain===r);e.length>0&&n.push({domain:t.get(r),sites:e})}let r=new Set(e),i=W.filter(e=>!r.has(e.domain));return i.length>0&&n.push({domain:{id:`other`,displayName:`Other`},sites:i}),n},[T,W]),q=(0,Z.useCallback)((e,t)=>{v(n=>({...n,[e]:t}))},[]),te=(0,Z.useCallback)((e,t)=>{if(!t){v(t=>({...t,[e]:null}));return}let n=ve(f,N.find(t=>t.id===e)?.defaultProfile);if(n)v(t=>({...t,[e]:{profile:n}}));else{let t=p[0]??tt[0],n=et(t)??``;v(r=>({...r,[e]:{provider:t,model:n}}))}},[N,f,p]),J=(0,Z.useCallback)(async()=>{b(!0),n?.(!0);try{let n={};for(let e of Object.keys(I)){let t=I[e]??null;n[e]=ht(t)?{profile:t?.profile??null,provider:t?.provider??null,model:t?.model??null}:null}await m.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),j.success(`Overrides saved.`)}catch(e){j.error(`Failed to save overrides. Please try again.`),a(e,{context:`call_site_overrides_save`})}finally{b(!1),n?.(!1)}},[I,t,m,n,e]),Y=(0,Z.useCallback)(async()=>{b(!0),n?.(!0);try{let n={};for(let e of Object.keys(I))n[e]=null;await m.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),j.success(`Overrides reset.`)}catch(e){j.error(`Failed to reset overrides. Please try again.`),a(e,{context:`call_site_overrides_reset`})}finally{b(!1),n?.(!1)}},[I,t,m,n,e]);return(0,Q.jsxs)(A.Content,{size:`lg`,hideCloseButton:!0,children:[(0,Q.jsxs)(A.Header,{children:[(0,Q.jsx)(A.Title,{children:`Action Overrides`}),(0,Q.jsx)(A.Description,{children:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`})]}),(0,Q.jsxs)(A.Body,{children:[(0,Q.jsx)(`div`,{className:`mb-4`,children:(0,Q.jsx)(D,{type:`search`,value:h,onChange:e=>g(e.target.value),placeholder:`Search actions…`,leftIcon:(0,Q.jsx)(be,{className:`h-4 w-4`}),fullWidth:!0})}),E&&(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Q.jsx)(C,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}),O&&(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-12 text-center`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Couldn't load actions`}),(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Make sure your assistant is running`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>void k(),children:`Retry`})]}),!E&&!O&&T&&(0,Q.jsx)(`div`,{className:`space-y-4`,children:K.length===0?(0,Q.jsx)(`p`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No actions match your search.`}):K.map(({domain:e,sites:t})=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`mb-2 text-body-small-default font-semibold uppercase tracking-wider text-[var(--content-tertiary)]`,children:e.displayName}),(0,Q.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>{let t=(()=>{let t=I[e.id]??null;return!t||!ht(t)?``:t.provider||t.model?`__custom__`:t.profile??``})(),n=e.defaultProfile?f.find(t=>t.name===e.defaultProfile)?.label??e.defaultProfile:null;return(0,Q.jsx)(_t,{id:e.id,displayName:e.displayName,description:e.description,defaultProfileLabel:n,draft:I[e.id]??null,profileOptions:U(t===``||t===`__custom__`?null:t),onDraftChange:q,onToggle:te},e.id)})})]},e.id))})]}),(0,Q.jsxs)(A.Footer,{children:[R&&(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>S(!0),disabled:y||!P,tintColor:`var(--system-negative-strong)`,className:`mr-auto`,children:`Reset to Defaults`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:t,disabled:y,children:`Cancel`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,onClick:()=>void J(),disabled:!B||V||y,children:y?(0,Q.jsx)(C,{className:`h-4 w-4 animate-spin`}):`Save`})]}),(0,Q.jsx)(M,{open:x,title:`Reset to Defaults`,message:`Every task override will be reset and will follow your active profile. This cannot be undone.`,confirmLabel:`Reset to Defaults`,destructive:!0,onConfirm:()=>{S(!1),Y()},onCancel:()=>S(!1)})]})}function bt({blocked:e,availableReplacements:t,replacement:n,onReplacementChange:r,error:i,saving:a,onClose:o,onConfirm:c}){let l=``;if(e){let t=e.label||e.name;l=e.isActive&&e.callSiteIds.length>0?`"${t}" is the active profile and is used by ${e.callSiteIds.length} call site(s). Pick a replacement profile.`:e.isActive?`"${t}" is the active profile. Pick a different active profile before deleting, or select a replacement below.`:`"${t}" is used by ${e.callSiteIds.length} call site(s). Select a replacement profile to reassign them before deleting.`}return(0,Q.jsx)(A.Root,{open:e!==null,onOpenChange:e=>{e||o()},children:(0,Q.jsxs)(A.Content,{size:`sm`,children:[(0,Q.jsx)(A.Header,{children:(0,Q.jsx)(A.Title,{children:`Can't Delete Profile`})}),(0,Q.jsxs)(A.Body,{className:`space-y-4`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`p`,children:l}),e&&e.callSiteIds.length>0&&(0,Q.jsx)(`ul`,{className:`space-y-1 pl-1`,children:e.callSiteIds.map(e=>(0,Q.jsxs)(`li`,{className:`text-body-small-default text-(--content-secondary)`,children:[`• `,(0,Q.jsx)(`code`,{children:e})]},e))}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Replacement profile`}),(0,Q.jsx)(N,{"aria-label":`Replacement profile`,value:n,onChange:r,options:[{value:``,label:`Select a replacement…`},...t.map(e=>({value:e.name,label:e.label??e.name}))]})]}),i&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:i})]}),(0,Q.jsxs)(A.Footer,{children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:o,children:`Cancel`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,disabled:!n||a,onClick:c,children:a?`Saving…`:`Reassign and Delete`})]})]})})}function xt(e,t){if(e){let n=Ye(e).find(e=>e.id===t);if(n)return n.displayName}let n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t}function St(e){let t=[];e.description&&t.push(e.description);let n=[];if(e.model&&n.push(xt(e.provider,e.model)),e.provider){let t=Qe[e.provider]??e.provider;n.push(`hosted by ${t}`)}return n.length>0&&t.push(n.join(` `)),t.join(` – `)}function Ct({profile:e,isDragging:t,dropTarget:n,isDeleting:r,deleteError:i,isToggling:a,onDragStart:o,onDragEnd:c,onDragOver:l,onDragLeave:u,onDrop:d,onEditClick:f,onDeleteClick:p,onStatusToggle:h}){let g=e.source===`managed`,_=e.invariant===!0,v=e.status!==`disabled`;return(0,Q.jsxs)(`div`,{className:`relative`,children:[n?.name===e.name&&!n.after&&(0,Q.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg pr-2 py-2${t?` opacity-50`:``}`,draggable:!g,onDragStart:o,onDragEnd:c,onDragOver:l,onDragLeave:u,onDrop:d,children:[(0,Q.jsx)(st,{className:`h-4 w-4 shrink-0 ${g?`invisible`:`cursor-grab text-[var(--content-tertiary)]`}`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1${v?``:` opacity-55`}`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:e.label??e.name}),g&&(0,Q.jsx)(E,{tone:`positive`,title:`Managed by Platform — this profile cannot be disabled, deleted, or renamed.`,children:`Platform`})]}),e.description||e.model||e.provider?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:St(e)}):null]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(!_||!v)&&(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center`,title:v?`Active — toggle to hide from pickers`:`Disabled — toggle to show in pickers`,children:(0,Q.jsx)(O,{checked:v,onChange:e=>h(e),disabled:a,"aria-label":`${v?`Disable`:`Enable`} ${e.label??e.name}`})}),(0,Q.jsxs)(`div`,{className:`flex w-[92px] items-center justify-end gap-2`,children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:f,children:g||_?`View`:`Edit`}),(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(Je,{}),"aria-label":`Delete ${e.label??e.name}`,disabled:g||_||r,title:g||_?`Managed profiles cannot be deleted`:void 0,onClick:p,tintColor:`var(--system-negative-strong)`})]})]})]}),n?.name===e.name&&n.after&&(0,Q.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),i?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:i}):null]})}function wt({isOpen:e,assistantId:t,onClose:n}){let r=u(),{data:i}=d({...H({path:{assistant_id:t}}),staleTime:3e4}),o=(0,Z.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),s=(0,Z.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),c=i?.llm?.activeProfile??null,l=i?.llm?.callSites??{},f=(0,Z.useMemo)(()=>ze(o,s),[o,s]),p=z({onSuccess:e=>{G(r,{path:{assistant_id:t}},e)}}),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),{data:v}=d({...V({path:{assistant_id:t}}),enabled:e}),y=v?.connections,b=Object.keys(o);async function x(e,n,r){let i=r?.mode??`replace`,c=!(e in o);if(i===`merge`&&!c){await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:n}}}}),h(!1),_(null);return}let l={profiles:{[e]:n}};if(c&&(l.profileOrder=s.includes(e)?s:[...s,e]),c)await p.mutateAsync({path:{assistant_id:t},body:{llm:l}});else{let n=o[e];await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:null}}}});try{await p.mutateAsync({path:{assistant_id:t},body:{llm:l}})}catch(r){throw a(r,{context:`settings-ai-profile-edit-recreate`}),n!=null&&await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:n}}}}).catch(()=>{}),r}}c&&j.success(`Profile "${n.label??e}" created`),h(!1),_(null)}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(A.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,Q.jsx)(Tt,{assistantId:t,profiles:o,profileOrder:s,orderedProfiles:f,activeProfile:c,callSiteOverrides:l,onClose:n,onEditClick:e=>{_(e),h(!0)},onNewClick:()=>{_(null),h(!0)}}):null}),(0,Q.jsx)(Re,{isOpen:m,mode:g?g.source===`managed`||g.invariant===!0?`view`:`edit`:`create`,profileName:g?.name,initialValues:g??void 0,existingNames:b,connections:y,assistantId:t,onSave:x,onCancel:()=>{h(!1),_(null)}})]})}function Tt({assistantId:e,profiles:t,profileOrder:n,orderedProfiles:r,activeProfile:i,callSiteOverrides:o,onClose:c,onEditClick:l,onNewClick:d}){let f=u(),p=z({onSuccess:t=>{G(f,{path:{assistant_id:e}},t)}}),[h,g]=(0,Z.useState)({}),[_,v]=(0,Z.useState)({}),[y,b]=(0,Z.useState)(new Set),[x,S]=(0,Z.useState)(null),[C,w]=(0,Z.useState)(null),[T,E]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(null),k=(0,Z.useRef)(null),j=(0,Z.useRef)(null),[M,N]=(0,Z.useState)(null),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)(``),[R,B]=(0,Z.useState)(!1),V=(0,Z.useMemo)(()=>r,[r]);async function H(n,r){if(y.has(n.name))return!1;b(e=>new Set(e).add(n.name)),S(null);let i=r?`active`:`disabled`;if(!t[n.name])return b(e=>{let t=new Set(e);return t.delete(n.name),t}),!1;try{return await p.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[n.name]:{status:i}}}}}),!0}catch(e){return a(e,{context:`settings-ai-profile-toggle`}),S(`Couldn't update "${n.label??n.name}". Please try again.`),!1}finally{b(e=>{let t=new Set(e);return t.delete(n.name),t})}}async function ee(t){v(e=>({...e,[t]:!0})),g(e=>{let n={...e};return delete n[t],n});try{let r=n.filter(e=>e!==t);await p.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[t]:null},profileOrder:r}}})}catch(e){a(e,{context:`settings-ai-profile-delete`}),g(e=>({...e,[t]:`Failed to delete profile. Please try again.`}))}finally{v(e=>{let n={...e};return delete n[t],n})}}function U(e){let t=V.find(t=>t.name===e)?.label??e,n=e===i,r=Object.entries(o).filter(([t,n])=>t!==`mainAgent`&&n?.profile===e).map(([e])=>e);if(n||r.length>0){N({name:e,label:t,isActive:n,callSiteIds:r}),L(``),F(null);return}ee(e)}async function W(){if(!M||!I)return;B(!0),F(null);let t={};if(M.isActive&&(t.activeProfile=I),M.callSiteIds.length>0){let e={};for(let t of M.callSiteIds)e[t]={profile:I};t.callSites=e}if(Object.keys(t).length>0)try{await p.mutateAsync({path:{assistant_id:e},body:{llm:t}})}catch(e){a(e,{context:`settings-ai-profile-reassign-delete`}),F(`Failed to reassign references. Please try again.`),B(!1);return}let n=M.name;N(null),B(!1),ee(n)}async function K(t,r){if(t===r.name)return;O(null);let i=n.filter(e=>e!==t),o=i.indexOf(r.name);if(o===-1)return;r.after&&(o+=1);let s=[...i.slice(0,o),t,...i.slice(o)];try{await p.mutateAsync({path:{assistant_id:e},body:{llm:{profileOrder:s}}})}catch(e){a(e,{context:`settings-ai-profile-reorder`}),O(`Failed to reorder profiles. Please try again.`)}}let q=V.filter(e=>e.name!==M?.name&&e.source!==`managed`),te=q.length>0?q:V.filter(e=>e.name!==M?.name);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(A.Content,{size:`md`,children:[(0,Q.jsxs)(A.Header,{children:[(0,Q.jsx)(A.Title,{children:`Model Profiles`}),(0,Q.jsx)(A.Description,{children:`Bundle a provider and model into a named profile. Assign profiles to specific actions or swap between them when chatting.`})]}),(0,Q.jsxs)(A.Body,{children:[V.length===0?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No profiles yet. Create one to get started.`}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:V.map(e=>(0,Q.jsx)(Ct,{profile:e,isDragging:C===e.name,dropTarget:T,isDeleting:_[e.name]??!1,deleteError:h[e.name],isToggling:y.has(e.name),onDragStart:t=>{k.current=e.name,w(e.name),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},onDragEnd:()=>{k.current=null,j.current=null,w(null),E(null)},onDragOver:t=>{t.preventDefault();let n=t.currentTarget.getBoundingClientRect(),r=t.clientY>n.top+n.height/2,i={name:e.name,after:r};j.current=i,E(i)},onDragLeave:t=>{t.currentTarget.contains(t.relatedTarget)||(j.current=null,E(t=>t?.name===e.name?null:t))},onDrop:e=>{e.preventDefault();let t=k.current,n=j.current;k.current=null,j.current=null,w(null),E(null),t&&n&&K(t,n)},onEditClick:()=>l(e),onDeleteClick:()=>U(e.name),onStatusToggle:t=>void H(e,t)},e.name))}),D&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:D}),x&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:x})]}),(0,Q.jsxs)(A.Footer,{className:`justify-between`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:d,children:`+ New Profile`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:c,children:`Done`})]})]}),(0,Q.jsx)(bt,{blocked:M,availableReplacements:te,replacement:I,onReplacementChange:L,error:P,saving:R,onClose:()=>{N(null),F(null)},onConfirm:()=>void W()})]})}function Et({mode:e,connection:t,assistantId:n,existingNames:r,onSave:i,onCancel:a}){let[o,c]=(0,Z.useState)(e),[l,d]=(0,Z.useState)(void 0),f=o===`managed-edit`,[p,h]=(0,Z.useState)(t?.label??``),[g,_]=(0,Z.useState)(t?.name??``),[v,y]=(0,Z.useState)(t?.provider??`anthropic`),[b,x]=(0,Z.useState)(()=>t?t.auth.type:`platform`),[S,C]=(0,Z.useState)(()=>t?.auth.type===`api_key`?t.auth.credential:t?``:`credential/anthropic/api_key`),[w,T]=(0,Z.useState)(t?.baseUrl??``),[E,O]=(0,Z.useState)(()=>t?.models?t.models.map(e=>e.id).join(`, `):``),[k,j]=(0,Z.useState)(!1),[M,P]=(0,Z.useState)(null),L=v===`openai-compatible`,R=Ne(),z=(0,Z.useMemo)(()=>v&&!R.includes(v)?[...R,v]:R,[v,R]),{handleLabelChange:B,resetDirty:V}=Me(o,h,_),[H,ee]=(0,Z.useState)(``),[U,G]=(0,Z.useState)(!1),K=u(),q=(0,Z.useMemo)(()=>Fe(S),[S]),te=b===`api_key`&&q!==null,{hasStoredCredential:J,isLoading:Y}=je({assistantId:n,credentialKind:`credential`,credentialName:q?`${q.service}:${q.field}`:``,enabled:te}),{credentials:ne}=xe({assistantId:n,enabled:b===`api_key`});(0,Z.useEffect)(()=>{let e=t?.provider??`anthropic`;h(t?.label??``),_(t?.name??``),y(e),x(t?t.auth.type:`platform`),t?.auth.type===`api_key`?C(t.auth.credential):C(t?``:`credential/${e}/api_key`),V(),P(null),T(t?.baseUrl??``),O(t?.models?t.models.map(e=>e.id).join(`, `):``),ee(``),G(!1)},[t,V]);function re(){c(`create`),d(v===`ollama`?`none`:`api_key`)}let ie=g.trim().length>0;async function ae(){if(ie){j(!0),P(null);try{let e;if(b===`api_key`){let t=S.trim()||`credential/${v}/api_key`,r=H.trim();if(r){G(!0);try{let e=Fe(t);await F({path:{assistant_id:n},body:e?{type:`credential`,name:`${e.service}:${e.field}`,value:r}:{type:`api_key`,name:v,value:r},throwOnError:!0});let i=Ae(n,`credential`,e?`${e.service}:${e.field}`:``);K.setQueryData(i,!0),K.invalidateQueries({queryKey:W({path:{assistant_id:n}})})}catch{P(`Failed to save API key. Please try again.`);return}finally{G(!1)}}e={type:`api_key`,credential:t}}else if(b===`oauth_subscription`)if(t?.auth.type===`oauth_subscription`)e=t.auth;else{P(`Use the "Sign in with ChatGPT" button to connect your subscription.`);return}else if(b===`service_account`)if(t?.auth.type===`service_account`)e=t.auth;else{P(`Service account connections cannot be created through this form.`);return}else e=b===`none`?{type:`none`}:{type:`platform`};let r=p.trim()||null,a={auth:e,label:r,...L&&{base_url:w.trim()||null,models:E.trim()?E.split(`,`).map(e=>({id:e.trim()})).filter(e=>e.id):null}},{data:o,response:s}=await I({path:{assistant_id:n,name:t?.name??g.trim()},body:a});if(!s?.ok){let e;try{let t=await s?.json();typeof t?.error?.message==`string`&&(e=t.error.message)}catch{}P(e||ke(s?.status,g.trim()));return}if(!o){P(`Server returned an empty response. Please try again.`);return}i(o)}catch{P(`Failed to save connection. Please try again.`)}finally{j(!1)}}}let oe=ne.filter(e=>e.service===v),se=o!==`create`&&t?.auth.type===`api_key`,ce=oe.length>0||se,le=Ze(`Enter your API key`,J);return o===`create`?(0,Q.jsx)(Se,{variant:`modal`,assistantId:n,existingNames:r,defaultProviderType:v,defaultAuthType:l,onCreated:i,onCancel:a},v):(0,Q.jsxs)(A.Content,{size:`md`,children:[(0,Q.jsxs)(A.Header,{children:[(0,Q.jsx)(A.Title,{children:`Edit Connection`}),(0,Q.jsx)(A.Description,{children:f?`Managed by Vellum — auth is locked, but you can rename "${t?.name}".`:`Editing "${t?.name}".`})]}),(0,Q.jsxs)(A.Body,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsxs)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[`Display Name`,` `,(0,Q.jsx)(`span`,{className:`text-[var(--content-disabled)]`,children:`(optional)`})]}),(0,Q.jsx)(D,{value:p,onChange:e=>B(e.target.value),placeholder:`e.g. My Anthropic Key`,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Key`}),(0,Q.jsx)(D,{value:g,placeholder:`e.g. anthropic-personal`,disabled:!0,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(N,{"aria-label":`Provider`,value:v,onChange:y,disabled:!0,options:z.map(e=>({value:e,label:Qe[e]}))})]}),L&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Base URL`}),(0,Q.jsx)(D,{value:w,onChange:e=>T(e.target.value),placeholder:`https://api.example.com/v1`,disabled:f,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Models`}),(0,Q.jsx)(D,{value:E,onChange:e=>O(e.target.value),placeholder:`model-1, model-2`,disabled:f,fullWidth:!0}),(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:`Comma-separated model identifiers exposed by your endpoint.`})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Auth Type`}),(0,Q.jsx)(N,{"aria-label":`Auth type`,value:b,onChange:e=>{x(e),P(null)},disabled:f||v===`ollama`,options:(()=>{let e;return e=v===`ollama`?[`none`]:Ge(v)?[`api_key`,`platform`]:[`api_key`],b&&!e.includes(b)&&e.push(b),e.map(e=>({value:e,label:Ee[e]}))})()})]}),b===`api_key`&&(0,Q.jsx)(X,{apiKeyValue:H,onApiKeyChange:ee,credential:S,onCredentialChange:C,isAuthLocked:f,isLoadingCredential:Y,apiKeyPlaceholder:le,provider:v,providerCredentials:oe,showAdvancedSection:ce,onError:P}),b===`oauth_subscription`&&(0,Q.jsx)(Xe,{assistantId:n,onConnected:i}),M&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:M})]}),(0,Q.jsxs)(A.Footer,{children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:a,children:`Cancel`}),o===`managed-edit`&&(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:re,disabled:k||U,children:`Save as New`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,disabled:!ie||k||U,onClick:()=>void ae(),children:k?`Saving…`:`Save`})]})]})}function Dt(e){switch(e.type){case`api_key`:return`API key · ${e.credential}`;case`oauth_subscription`:return`ChatGPT Subscription`;case`platform`:return`Managed proxy`;case`none`:return`None (local)`;default:return e.type}}function Ot({isOpen:e,assistantId:t,onClose:n}){let[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(null),s=u(),{data:c,isLoading:l,isError:f}=d({...V({path:{assistant_id:t}}),enabled:e}),p=(0,Z.useMemo)(()=>c?.connections??[],[c]);function m(e){s.invalidateQueries({queryKey:K({path:{assistant_id:t}})}),i(!1),o(null)}let h=p.map(e=>e.name),g=()=>{i(!1),o(null)};return(0,Q.jsx)(A.Root,{open:e,onOpenChange:e=>{e||(r?g():n())},children:e?r?(0,Q.jsx)(Et,{mode:a?a.isManaged?`managed-edit`:`edit`:`create`,connection:a??void 0,assistantId:t,existingNames:h,onSave:m,onCancel:g}):(0,Q.jsx)(kt,{connections:p,loading:l,isError:f,assistantId:t,onClose:n,onEditClick:e=>{o(e),i(!0)},onNewClick:()=>{o(null),i(!0)},onConnectionDeleted:()=>{s.invalidateQueries({queryKey:K({path:{assistant_id:t}})})}}):null})}function kt({connections:e,loading:t,isError:n,assistantId:r,onClose:i,onEditClick:a,onNewClick:o,onConnectionDeleted:c}){let[l,u]=(0,Z.useState)({}),[d,f]=(0,Z.useState)({});async function p(e){f(t=>({...t,[e]:!0})),u(t=>{let n={...t};return delete n[e],n});try{let{response:t}=await P({path:{assistant_id:r,name:e}});t?.ok||t?.status===404?c(e):t?.status===409?u(t=>({...t,[e]:`Connection is in use by one or more profiles. Remove those references first.`})):u(t=>({...t,[e]:`Failed to delete connection. Please try again.`}))}catch{u(t=>({...t,[e]:`Failed to delete connection. Please try again.`}))}finally{f(t=>{let n={...t};return delete n[e],n})}}return(0,Q.jsxs)(A.Content,{size:`md`,children:[(0,Q.jsxs)(A.Header,{children:[(0,Q.jsx)(A.Title,{children:`Provider Connections`}),(0,Q.jsx)(A.Description,{children:`Manage inference provider connections. Each connection binds a name to a provider and auth configuration.`})]}),(0,Q.jsx)(A.Body,{children:t?(0,Q.jsx)(`div`,{className:`space-y-2 py-2`,children:[1,2,3].map(e=>(0,Q.jsx)(`div`,{className:`h-10 animate-pulse rounded-lg bg-[var(--surface-active)]`},e))}):n?(0,Q.jsx)(m,{variant:`body-medium-default`,as:`p`,className:`py-4 text-center text-(--system-negative-strong)`,children:`Failed to load connections. Please try again.`}):e.length===0?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No connections yet. Create one to get started.`}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:e.map(e=>{let t=d[e.name]??!1,n=l[e.name],r=e.isManaged??!1;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg px-2 py-2`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:e.label??e.name}),r&&(0,Q.jsx)(E,{tone:`positive`,title:`Managed by Platform — auth is locked, but you can rename this connection.`,children:`Platform`})]}),(0,Q.jsxs)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:[e.label?`${e.name} · `:``,Qe[e.provider]??e.provider,` · `,Dt(e.auth)]})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:()=>a(e),children:`Edit`}),(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(Je,{}),"aria-label":`Delete ${e.name}`,disabled:r||t,title:r?`Managed connections cannot be deleted`:void 0,onClick:()=>void p(e.name),tintColor:`var(--system-negative-strong)`})]})]}),n?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:n}):null]},e.name)})})}),(0,Q.jsxs)(A.Footer,{className:`justify-between`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:o,children:`+ New Connection`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:i,children:`Done`})]})]})}function At(e){let[t,n]=(0,Z.useState)(void 0);return(0,Z.useEffect)(()=>{t!==void 0&&e===t.value&&n(void 0)},[e,t]),[t===void 0?e:t.value,(0,Z.useCallback)(e=>n(e===void 0?void 0:{value:e}),[])]}function jt(){let e=it(),t=u(),{data:n}=d({...H({path:{assistant_id:e}}),staleTime:3e4}),r=n?.llm?.activeProfile??null,i=n?.llm?.advisorProfile??null,o=n?.llm?.callSites??{},{profiles:c,profileOrder:l}=rt(n?.llm,e),f=(0,Z.useMemo)(()=>ze(c,l),[c,l]),p=z({onSuccess:n=>{G(t,{path:{assistant_id:e}},n)}}),[h,g]=At(r),[_,v]=At(i),[y,b]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(!1),E=(0,Z.useMemo)(()=>nt(f,[h]),[f,h]),D=(0,Z.useMemo)(()=>nt(f,[_]),[f,_]),O=Object.entries(o).filter(([e,t])=>e!==`mainAgent`&&(t?.profile!=null||t?.provider!=null||t?.model!=null)).length,k=O===1?`1 Override`:O>0?`${O} Overrides`:`Overrides`,A=h!==r,M=_!==i,P=(0,Z.useCallback)(async()=>{try{let t={};A&&(t.activeProfile=h),M&&(t.advisorProfile=_),await p.mutateAsync({path:{assistant_id:e},body:{llm:t}}),j.success(`Saved.`)}catch(e){j.error(`Failed to save. Please try again.`),a(e,{context:`settings-ai-language-model-save`})}},[A,M,h,_,p,e]);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(dt,{title:`Language Model`,subtitle:`Configure the LLMs that power your assistant`,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Default Profile`}),(0,Q.jsx)(N,{value:h??``,onChange:e=>{g(e===``?null:e)},placeholder:`Select a default profile…`,options:E.map(e=>({value:e.name,label:Ie(e)}))}),E.length===0?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-1 text-(--content-tertiary)`,children:`No profiles yet. Click Profiles below to create one.`}):null]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Advisor Profile`}),(0,Q.jsx)(N,{value:_??``,onChange:e=>{v(e===``?null:e)},placeholder:`Select an advisor profile…`,options:D.map(e=>({value:e.name,label:Ie(e)}))}),(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-1 text-(--content-tertiary)`,children:`Which model your assistant consults for a second opinion`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>T(!0),children:`Providers`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>b(!0),children:`Profiles`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>S(!0),children:k})]}),(A||M)&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:P,disabled:p.isPending}),p.isPending&&(0,Q.jsx)(C,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]})}),e&&(0,Q.jsx)(wt,{isOpen:y,assistantId:e,onClose:()=>b(!1)}),e&&(0,Q.jsx)(vt,{isOpen:x,onClose:()=>S(!1),assistantId:e}),e&&(0,Q.jsx)(Ot,{isOpen:w,assistantId:e,onClose:()=>T(!1)})]})}var Mt=`vellum:ai:imageGenMode`,Nt=`vellum:ai:imageGenModel`,Pt=`vellum:ai:webSearchMode`,Ft=`vellum:ai:webSearchProvider`,It=`vellum:ai:webFetchProvider`,Lt=`vellum:ai:emailMode`,Rt=`vellum:ai:emailByoProvider`,zt=`vellum:voice:ttsProvider`,Bt=`vellum:voice:ttsApiKey:`,Vt=`vellum:voice:ttsVoiceId:`,Ht=`vellum:voice:sttProvider`,Ut=`vellum:voice:sttApiKey:`;function Wt(){let e=it();return(0,Z.useCallback)(async(t,n)=>{try{let{data:r}=await F({path:{assistant_id:e},body:{value:n,type:`api_key`,name:t},throwOnError:!0});Te(r)}catch(e){throw e instanceof Error&&e.message===`No assistant found`?j.error(`Assistant not ready. Please try again.`):j.error(`Failed to save ${t} API key. Please try again.`),a(e,{context:`provision_provider_key`}),e}},[e])}function Gt(){let e=it(),i=u(),{data:o}=d({...H({path:{assistant_id:e}}),staleTime:3e4}),s=z({onSuccess:t=>{G(i,{path:{assistant_id:e}},t)}}),c=Wt(),{serverWebSearchMode:l,serverWebSearchProvider:f}=(0,Z.useMemo)(()=>{if(!o)return{serverWebSearchMode:Oe(n(Pt,`your-own`),`your-own`),serverWebSearchProvider:n(Ft,`inference-provider-native`)};let e=o.services?.[`web-search`];return{serverWebSearchMode:Oe(e?.mode??n(`vellum:ai:webSearchMode`,`your-own`),`your-own`),serverWebSearchProvider:e?.provider||n(`vellum:ai:webSearchProvider`,`inference-provider-native`)}},[o]),[p,m]=(0,Z.useState)(!1),[h,g]=At(l),[_,v]=At(f),[y,b]=(0,Z.useState)(``),x=$e.has(_),{hasStoredCredential:S}=je({assistantId:e,credentialKind:`api_key`,credentialName:_,enabled:x}),w=y.trim().length>0,T=p||h===`your-own`&&x&&!S&&!w||!(h!==l||(h===`managed`?`inference-provider-native`:_)!==f)&&!w,E=Ze(He[_]??`Enter your API key`,S),O=(0,Z.useCallback)(async()=>{m(!0);let t=y.trim(),n=h===`managed`?`inference-provider-native`:_,o=we(n),l=h===`your-own`&&x&&t.length>0;try{l&&await c(n,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-search":{mode:h,provider:n}}}}).catch(e=>{throw j.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{m(!1);return}m(!1);try{if(r(Pt,h),r(Ft,n),l){o&&r(o,t);let n=Ae(e,`api_key`,_);i.setQueryData(n,!0),i.invalidateQueries({queryKey:n}),b(``)}j.success(`Web search settings saved.`)}catch(e){a(e,{context:`settings-ai-web-search-persist-local`}),j.error(`Saved, but local preferences could not be written.`)}},[x,s,c,i,e,y,h,_]),k=(0,Z.useCallback)(()=>{let e=we(_);e&&t(e),b(``),v(`inference-provider-native`),r(Ft,`inference-provider-native`)},[_,v]);return(0,Q.jsx)(lt,{title:`Web Search`,subtitle:`Configure how your assistant should search the web`,mode:h,onModeChange:e=>g(e),children:h===`managed`?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Web search is included with managed inference.`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:O,disabled:T}),p&&(0,Q.jsx)(C,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(N,{value:_,onChange:v,options:Ue.map(e=>({value:e,label:De[e]??e}))})]}),x&&(0,Q.jsx)(D,{label:`API Key`,type:`password`,value:y,onChange:e=>b(e.target.value),placeholder:E,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:O,disabled:T}),p&&(0,Q.jsx)(C,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),x&&(0,Q.jsx)(ut,{onClick:k,filled:!0})]})]})})}var Kt=`default`;function qt(){let e=it(),i=u(),{data:o}=d({...H({path:{assistant_id:e}}),staleTime:3e4}),s=z({onSuccess:t=>{G(i,{path:{assistant_id:e}},t)}}),c=Wt(),l=(0,Z.useMemo)(()=>o?o.services?.[`web-fetch`]?.provider||n(`vellum:ai:webFetchProvider`,Kt):n(It,Kt),[o]),[f,p]=(0,Z.useState)(!1),[m,h]=At(l),[g,_]=(0,Z.useState)(``),v=We.has(m),{hasStoredCredential:y}=je({assistantId:e,credentialKind:`api_key`,credentialName:m,enabled:v}),b=g.trim().length>0,x=f||v&&!y&&!b||m===l&&!b,S=Ze(Ke[m]??`Enter your API key`,y),w=(0,Z.useCallback)(async()=>{p(!0);let t=g.trim(),n=v&&t.length>0;try{n&&await c(m,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-fetch":{provider:m}}}}).catch(e=>{throw j.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{p(!1);return}p(!1);try{if(r(It,m),n){let n=Ve(m);n&&r(n,t);let a=Ae(e,`api_key`,m);i.setQueryData(a,!0),i.invalidateQueries({queryKey:a}),_(``)}j.success(`Web fetch settings saved.`)}catch(e){a(e,{context:`settings-ai-web-fetch-persist-local`}),j.error(`Saved, but local preferences could not be written.`)}},[v,s,c,i,e,g,m]),T=(0,Z.useCallback)(()=>{let e=Ve(m);e&&t(e),_(``),h(Kt),r(It,Kt)},[m,h]);return(0,Q.jsx)(dt,{id:`web-fetch`,title:`Web Fetch`,subtitle:`Configure how your assistant reads individual web pages`,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(N,{value:m,onChange:h,options:_e.map(e=>({value:e,label:Pe[e]??e}))})]}),v&&(0,Q.jsx)(D,{label:`API Key`,type:`password`,value:g,onChange:e=>_(e.target.value),placeholder:S,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:w,disabled:x}),f&&(0,Q.jsx)(C,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),v&&(0,Q.jsx)(ut,{onClick:T,filled:!0})]})]})})}var Jt=[{id:`elevenlabs`,displayName:`ElevenLabs`,subtitle:`High-quality voice synthesis for conversations and read-aloud. Requires an ElevenLabs API key.`,supportsVoiceSelection:!0,apiKeyPlaceholder:`sk_…`,credentialsGuide:{description:`Sign in to ElevenLabs, go to your Profile, and copy your API key.`,url:`https://elevenlabs.io/app/settings/api-keys`,linkLabel:`Open ElevenLabs API Keys`}},{id:`fish-audio`,displayName:`Fish Audio`,subtitle:`Natural-sounding voice synthesis with custom voice cloning. Requires a Fish Audio API key and voice reference ID.`,supportsVoiceSelection:!0,apiKeyPlaceholder:`Enter your Fish Audio API key`,credentialsGuide:{description:`Sign in to Fish Audio, navigate to API Keys in your dashboard, and create a new key.`,url:`https://fish.audio/app/api-keys/`,linkLabel:`Open Fish Audio API Keys`}},{id:`deepgram`,displayName:`Deepgram`,subtitle:`Fast, accurate text-to-speech synthesis. Uses the same API key as Deepgram speech-to-text.`,supportsVoiceSelection:!1,apiKeyPlaceholder:`Enter your Deepgram API key`,credentialsGuide:{description:`Sign in to Deepgram, navigate to your API Keys page, and create or copy an existing key. This is the same key used for speech-to-text.`,url:`https://console.deepgram.com/`,linkLabel:`Open Deepgram Console`}},{id:`xai`,displayName:`xAI`,subtitle:`Text-to-speech from xAI with expressive voices (eve, ara, rex, sal, leo). Requires an xAI API key.`,supportsVoiceSelection:!1,apiKeyPlaceholder:`Enter your xAI API key`,credentialsGuide:{description:`Sign in to the xAI console, navigate to API Keys, and create a new key.`,url:`https://console.x.ai/`,linkLabel:`Open xAI Console`}}],Yt=[{id:`deepgram`,displayName:`Deepgram`,subtitle:`Fast, accurate speech-to-text transcription. Uses the same API key as Deepgram text-to-speech.`,apiKeyPlaceholder:`Enter your Deepgram API key`,credentialsGuide:{description:`Sign in to Deepgram, navigate to your API Keys page, and create or copy an existing key. This is the same key used for text-to-speech.`,url:`https://console.deepgram.com/`,linkLabel:`Open Deepgram Console`}},{id:`openai`,displayName:`OpenAI`,subtitle:`OpenAI Whisper transcription. Requires an OpenAI API key.`,apiKeyPlaceholder:`sk-…`,credentialsGuide:{description:`Sign in to the OpenAI platform, navigate to API Keys, and create a new secret key.`,url:`https://platform.openai.com/api-keys`,linkLabel:`Open OpenAI API Keys`}},{id:`macos-native`,displayName:`macOS Native Dictation`,subtitle:`Apple's on-device speech recognition, running locally through the macOS helper. Works offline and needs no API key.`,requiresNativeDictation:!0,setupWarning:`Requires macOS Dictation to be turned on: open System Settings → Keyboard, then enable Dictation. macOS downloads the on-device speech model the first time Dictation is enabled — without it, voice input produces no transcript.`}],Xt=[{id:`mailgun`,displayName:`Mailgun`,setupSkill:`mailgun-setup`,docsUrl:`https://www.mailgun.com/`},{id:`resend`,displayName:`Resend`,setupSkill:`resend-setup`,docsUrl:`https://resend.com/`}],Zt=[`gemini-3.1-flash-image-preview`,`gemini-3-pro-image-preview`,`gpt-image-2`],Qt={"gemini-3.1-flash-image-preview":`Nano Banana 2`,"gemini-3-pro-image-preview":`Nano Banana Pro`,"gpt-image-2":`GPT Image 2`};function $t(e){return e.startsWith(`gpt-`)||e.startsWith(`dall-e-`)?`openai`:(e.startsWith(`gemini-`),`gemini`)}function en({assistantId:e,assistantHandle:t,emailRootDomain:n}){let r=u(),i=c(),[o,p]=l(),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(!1),[v,x]=(0,Z.useState)(null),[S,w]=(0,Z.useState)(``),[E,D]=(0,Z.useState)(null),[O,k]=(0,Z.useState)(!1),[A,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{g||!t||m||(h(t),_(!0))},[t,g,m]);let I=d({...se(),enabled:!0}),L=I.data,R=L?.entitlements,z=R?.managed_email===!0,B=!!R&&!z,V=!L&&I.isError&&!I.isFetching,H=d({...ne({path:{assistant_id:e}}),enabled:!B}),ee=d({...de({path:{assistant_id:e}}),enabled:!B}),U=H.data?.results?.[0],W=ee.data?.results?.[0],G=U?`${U.subdomain}.${n}`:null,K=d({...oe({path:{assistant_id:e,id:W?.id??``}}),enabled:!!W?.id,refetchOnWindowFocus:!1}),J=d({...pe({path:{assistant_id:e,id:U?.id??``}}),enabled:!!U?.id,refetchInterval:e=>{let t=e.state.data?.status;return t===`verified`||t===`failed`?!1:1e4},refetchOnWindowFocus:!0});(0,Z.useEffect)(()=>{o.get(`release`)!==`1`||!U||W||(N(!0),p(e=>{let t=new URLSearchParams(e);return t.delete(`release`),t},{replace:!0}))},[W,U,o,p]);let Y=f(ue()),me=f(fe()),ge=f(re()),_e=f(ie()),X=(0,Z.useCallback)(()=>{let t={assistant_id:e};r.invalidateQueries({queryKey:ce({path:t})}),r.invalidateQueries({queryKey:le({path:t})}),W?.id&&r.invalidateQueries({queryKey:ae({path:{...t,id:W.id}})}),r.invalidateQueries({queryKey:he()})},[W?.id,e,r]),ve=(0,Z.useCallback)(async()=>{let t=m.trim().toLowerCase();if(!t){x(`Enter a subdomain.`);return}k(!1);try{await Y.mutateAsync({path:{assistant_id:e},body:{subdomain:t}}),h(``),x(null),X(),j.success(`Domain ${t}.${n} registered.`)}catch(e){x(q(e,void 0,`Failed to register domain.`))}},[e,n,X,Y,m]),ye=(0,Z.useCallback)(async()=>{let t=S.trim().toLowerCase();if(!t){D(`Enter an email username.`);return}try{await ge.mutateAsync({path:{assistant_id:e},body:{username:t}}),w(``),D(null),X(),j.success(`Email address created.`)}catch(e){D(q(e,void 0,`Failed to create email address.`))}},[e,X,ge,S]),be=(0,Z.useCallback)(async()=>{if(W?.id){F(!1);try{await _e.mutateAsync({path:{assistant_id:e,id:W.id}}),X(),j.success(`Email address removed.`)}catch(e){a(e,{context:`email_address_delete`}),j.error(`Failed to remove email address.`)}}},[W?.id,e,_e,X]),xe=(0,Z.useCallback)(async()=>{if(!U?.id)return;if(W){j.error(`Remove the email address first.`);return}N(!1);let t=U.subdomain;try{await me.mutateAsync({path:{assistant_id:e,id:U.id}}),h(t),X(),j.success(`Domain released.`)}catch(e){a(e,{context:`email_domain_release`}),j.error(`Failed to release domain.`)}},[W,e,me,U?.id,U?.subdomain,X]);if(I.isLoading)return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(C,{className:`h-4 w-4 animate-spin`}),`Checking subscription…`]});if(B)return(0,Q.jsxs)(T,{tone:`info`,icon:(0,Q.jsx)(y,{className:`h-4 w-4`,"aria-hidden":!0}),title:`Get a dedicated email address for your assistant`,actions:(0,Q.jsx)(s,{size:`compact`,onClick:()=>i(`${te.settings.billing}?adjust_plan`),children:`Upgrade to Pro`}),children:[`Pro plans include a managed`,` `,`<your-subdomain>.${n}`,` inbox — no provider setup required. Or switch to `,(0,Q.jsx)(`strong`,{children:`Your Own`}),` to bring an existing provider.`]});let Se=V?(0,Q.jsx)(T,{tone:`warning`,title:`Couldn't verify subscription status`,actions:(0,Q.jsx)(s,{size:`compact`,variant:`outlined`,onClick:()=>I.refetch(),children:`Retry`}),children:`We couldn't reach the billing service. The form below assumes managed email is enabled for your org — if it isn't, registering a domain will fail.`}):null;return U?W?(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[Se,(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Address`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:W.address}),(0,Q.jsx)(pt,{status:J.data?.status,message:J.data?.message,isLoading:J.isLoading}),(0,Q.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(Je,{}),onClick:()=>F(!0),disabled:_e.isPending,"aria-label":`Remove email address`})]}),(0,Q.jsx)(M,{open:P,title:`Remove Email Address`,message:(0,Q.jsxs)(Q.Fragment,{children:[`Are you sure you want to remove `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:W.address}),`? Your assistant will no longer be able to send or receive email at this address.`]}),confirmLabel:`Remove`,destructive:!0,onConfirm:be,onCancel:()=>F(!1)})]}),K.data?.usage&&(0,Q.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[K.data.usage.sent_today,` /`,` `,K.data.usage.daily_limit,` sent today ·`,` `,K.data.usage.received_today,` received`]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[Se,(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Domain`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:[U.subdomain,`.`,n]}),(0,Q.jsx)(pt,{status:J.data?.status,message:J.data?.message,isLoading:J.isLoading}),(0,Q.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(Je,{}),onClick:()=>N(!0),disabled:me.isPending,"aria-label":`Release domain`})]}),(0,Q.jsx)(M,{open:A,title:`Release Domain`,message:(0,Q.jsxs)(Q.Fragment,{children:[`Are you sure you want to release `,(0,Q.jsxs)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:[U.subdomain,`.`,n]}),`? The subdomain will become available for others to claim.`]}),confirmLabel:`Release`,destructive:!0,onConfirm:xe,onCancel:()=>N(!1)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Email address`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`div`,{className:`flex h-9 min-w-0 flex-1 items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${E?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[(0,Q.jsx)(`input`,{value:S,onChange:e=>{w(e.target.value.toLowerCase()),E&&D(null)},placeholder:`hi`,"aria-label":`Email username`,"aria-invalid":!!E,className:`h-full min-w-0 flex-1 bg-transparent pl-3 pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`}),(0,Q.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`@`,G]})]}),(0,Q.jsx)(s,{onClick:ye,disabled:ge.isPending||!S.trim(),children:ge.isPending?`Creating…`:`Create`})]}),E&&(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:E})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[Se,(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Subdomain`}),(0,Q.jsx)(b,{subdomain:m,onSubdomainChange:e=>{h(e),v&&x(null)},domainSuffix:n,subdomainPlaceholder:`my-assistant`,error:v}),(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Each assistant gets its own subdomain. Lowercase letters, numbers, and hyphens only.`}),(0,Q.jsx)(s,{onClick:()=>k(!0),disabled:Y.isPending||!m.trim(),children:Y.isPending?`Registering…`:`Register`}),(0,Q.jsx)(M,{open:O,title:`Set Subdomain`,message:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:m.trim().toLowerCase()||`subdomain`}),` will also become your assistant's public handle. You won't be able to change it once set.`]}),confirmLabel:`Confirm`,onConfirm:ve,onCancel:()=>k(!1)})]})}function tn(){let e=it(),t=J(),{data:o}=d({...me(),enabled:t}),s=o?.results?.[0]?.handle,c=ot.use.emailRootDomain(),l=Be(),[u,f]=(0,Z.useState)(()=>l===`gated`?`your-own`:Oe(n(Lt,`managed`),`managed`)),[p,m]=(0,Z.useState)(()=>{let e=n(Rt,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),h=d({queryKey:[`byoEmailCredential`,e,p],queryFn:async()=>{let{data:t}=await L({path:{assistant_id:e},body:{service:p,field:`api_key`},throwOnError:!0});return t},enabled:u===`your-own`||l===`gated`,staleTime:6e4,retry:i,meta:{errorContext:`byo_email_credential_check`}});(0,Z.useEffect)(()=>{h.error&&a(h.error,{context:`byo_email_credential_check`,bestEffort:!0})},[h.error]);let g=h.data?.hasSecret===!0,_=(0,Z.useCallback)(e=>{f(e),r(Lt,e)},[]),y=(0,Z.useCallback)(()=>{r(Rt,p),j.success(`Email settings saved.`)},[p]),b=(0,Z.useMemo)(()=>Xt.find(e=>e.id===p)??Xt[0],[p]),C=(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(S,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsxs)(`span`,{children:[`Configure `,b.displayName,` via the assistant CLI: ask the assistant to run the`,` `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:b.setupSkill}),` `,`skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`]}),(0,Q.jsxs)(`a`,{href:b.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,b.displayName,(0,Q.jsx)(x,{className:`h-3 w-3`})]})]})]}),w=(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(N,{value:p,onChange:e=>{(e===`mailgun`||e===`resend`)&&m(e)},options:Xt.map(e=>({value:e.id,label:e.displayName}))})]}),g?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--system-positive-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-default)]`,children:[(0,Q.jsx)(v,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`span`,{children:[b.displayName,` API key configured. To reconfigure, run the`,` `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:b.setupSkill}),` `,`skill.`]})]}),(0,Q.jsxs)(`a`,{href:b.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-body-small-default text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,b.displayName,(0,Q.jsx)(x,{className:`h-3 w-3`})]})]}):C,(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Q.jsx)($,{onClick:y,disabled:!1})})]});return l===`gated`?(0,Q.jsx)(dt,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,children:w}):(0,Q.jsx)(lt,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,mode:u,onModeChange:_,children:u===`managed`?(0,Q.jsx)(`div`,{className:`space-y-4`,children:l===`disabled`?(0,Q.jsx)(Le,{children:`Log in to the Vellum platform to manage email settings.`}):(0,Q.jsx)(en,{assistantId:e,assistantHandle:s,emailRootDomain:c})}):w})}function nn(){let e=it(),t=u(),{data:i}=d({...H({path:{assistant_id:e}}),staleTime:3e4}),o=z({onSuccess:n=>{G(t,{path:{assistant_id:e}},n)}}),s=Wt(),[c,l]=At((0,Z.useMemo)(()=>Oe(i?i.services?.[`image-generation`]?.mode??n(`vellum:ai:imageGenMode`,`your-own`):n(Mt,`your-own`),`your-own`),[i])),[f,p]=(0,Z.useState)(()=>n(Nt,`gemini-3.1-flash-image-preview`)),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(!1),v=(0,Z.useCallback)(async()=>{_(!0);let n=m.trim(),i=c===`your-own`&&n.length>0;try{i&&await s($t(f),n),await o.mutateAsync({path:{assistant_id:e},body:{services:{"image-generation":{mode:c}}}}).catch(e=>{throw j.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e});try{await R({path:{assistant_id:e},body:{modelId:f},throwOnError:!0})}catch(e){throw j.error(`Failed to update image generation model. Please try again.`),a(e,{context:`set_image_gen_model`}),e}finally{t.invalidateQueries({queryKey:U({path:{assistant_id:e}})})}}catch{_(!1);return}_(!1);try{r(Mt,c),r(Nt,f),i&&h(``),j.success(`Image generation settings saved.`)}catch(e){a(e,{context:`settings-ai-image-gen-persist-local`}),j.error(`Saved, but local preferences could not be written.`)}},[m,c,f,e,o,s,t]),y=(0,Z.useCallback)(()=>{h(``),p(`gemini-3.1-flash-image-preview`),r(Nt,`gemini-3.1-flash-image-preview`)},[]);return(0,Q.jsx)(lt,{title:`Image Generation`,subtitle:`Configure which model your assistant uses to generate images`,mode:c,onModeChange:e=>l(e),children:c===`managed`?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,Q.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,Q.jsx)(N,{className:`flex-1`,value:f,onChange:p,options:Zt.map(e=>({value:e,label:Qt[e]??e}))}),(0,Q.jsx)($,{onClick:v,disabled:g}),g&&(0,Q.jsx)(C,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsx)(D,{label:`API Key`,type:`password`,value:m,onChange:e=>h(e.target.value),placeholder:$t(f)===`openai`?`Enter your OpenAI API key`:`Enter your Gemini API key`,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,Q.jsx)(N,{value:f,onChange:p,options:Zt.map(e=>({value:e,label:Qt[e]??e}))})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:v,disabled:g}),g&&(0,Q.jsx)(C,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),(0,Q.jsx)(ut,{onClick:y})]})]})})}async function rn(e){let{provider:t,apiKey:n,voiceId:r,text:i}=e;if(n.trim().length===0)return{kind:`error`,message:`Save an API key for this provider first.`};try{return t===`elevenlabs`?await an(n,r,i):t===`deepgram`?await on(n,i):t===`fish-audio`?{kind:`unsupported`,message:`Fish Audio TTS is only supported in the desktop app today. Use ElevenLabs or Deepgram to test from the browser.`}:t===`xai`?{kind:`unsupported`,message:`xAI TTS is only supported in the desktop app today. Use ElevenLabs or Deepgram to test from the browser.`}:{kind:`unsupported`,message:`TTS testing for "${t}" is not supported from the browser yet.`}}catch(e){return{kind:`error`,message:e instanceof Error?e.message:`Failed to reach the TTS provider.`}}}async function an(e,t,n){let r=t.trim();if(r.length===0)return{kind:`error`,message:`Enter and save a Voice ID before testing ElevenLabs.`};let i=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${encodeURIComponent(r)}?output_format=mp3_44100_128`,{method:`POST`,headers:{"xi-api-key":e,"Content-Type":`application/json`,Accept:`audio/mpeg`},body:JSON.stringify({text:n,model_id:`eleven_turbo_v2_5`})});return i.ok?{kind:`audio`,blob:await i.blob()}:{kind:`error`,message:await sn(i,`ElevenLabs rejected the request.`)}}async function on(e,t){let n=await fetch(`https://api.deepgram.com/v1/speak?model=aura-2-thalia-en`,{method:`POST`,headers:{Authorization:`Token ${e}`,"Content-Type":`application/json`,Accept:`audio/mpeg`},body:JSON.stringify({text:t})});return n.ok?{kind:`audio`,blob:await n.blob()}:{kind:`error`,message:await sn(n,`Deepgram rejected the request.`)}}async function sn(e,t){try{let n=await e.text();if(n.length===0)return`${t} (HTTP ${e.status})`;try{let e=JSON.parse(n);if(e&&typeof e==`object`&&`detail`in e&&typeof e.detail==`string`)return e.detail;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message}catch{}return n.slice(0,200)}catch{return`${t} (HTTP ${e.status})`}}function cn(){let e=it(),t=Y.use.name()??`your assistant`,i=J(),{data:a}=d({...B({path:{assistant_id:e}}),enabled:i,staleTime:1/0}),o=a?.providers??Jt,c=o[0]?.id??`elevenlabs`,[l,u]=(0,Z.useState)(()=>n(zt,c)),[f,p]=(0,Z.useState)(l),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(``),[b,x]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(!1),w=(0,Z.useMemo)(()=>o.find(e=>e.id===l)??o[0],[l,o]),T=(0,Z.useCallback)(e=>{let t=n(Bt+e,``),r=n(Vt+e,``);x(t.length>0),_(r),y(r),h(``)},[]);(0,Z.useEffect)(()=>{T(l)},[l,T]);let E=(0,Z.useMemo)(()=>{let e=l!==f,t=m.trim().length>0,n=g.trim()!==v;return e||t||n},[l,f,m,g,v]),O=(0,Z.useCallback)(()=>{r(zt,l);let e=m.trim();e.length>0&&(r(Bt+l,e),x(!0));let t=g.trim();r(Vt+l,t),p(l),y(t),h(``)},[l,m,g]),k=(0,Z.useCallback)(()=>{r(Bt+l,``),x(!1),h(``)},[l]),A=(0,Z.useCallback)(async()=>{C(!0);try{let e=n(Bt+l,``),r=m.trim(),i=r.length>0?r:e;if(i.length===0){j.error(`Save an API key for this provider before testing.`);return}let a=n(Vt+l,``),o=g.trim(),s=await rn({provider:l,apiKey:i,voiceId:o.length>0?o:a,text:`Hey! It's ${t}. How does this sound?`});if(s.kind!==`audio`){j.error(s.message);return}let c=URL.createObjectURL(s.blob);try{let e=new Audio(c);await e.play(),await new Promise(t=>{e.onended=()=>t(),e.onerror=()=>t()})}finally{URL.revokeObjectURL(c)}}finally{C(!1)}},[t,m,l,g]),M=b?`•••••••• (Enter a new key to replace)`:w.apiKeyPlaceholder;return(0,Q.jsx)(dt,{title:`Text-to-Speech`,subtitle:w.subtitle,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(N,{value:l,onChange:u,options:o.map(e=>({value:e.id,label:e.displayName})),"aria-label":`TTS provider`})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`API Key`}),(0,Q.jsx)(D,{type:`password`,value:m,onChange:e=>h(e.target.value),placeholder:M,fullWidth:!0})]}),w.supportsVoiceSelection&&(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Voice ID`}),(0,Q.jsx)(D,{type:`text`,value:g,onChange:e=>_(e.target.value),placeholder:`Enter a voice ID`,fullWidth:!0})]}),(0,Q.jsx)(ft,{guide:w.credentialsGuide}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`outlined`,onClick:A,disabled:S,children:S?`Testing…`:`Test`}),(0,Q.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:O,disabled:!E}),b&&(0,Q.jsx)(ut,{onClick:k})]})]})]})})}function ln(){let[e]=(0,Z.useState)(()=>Yt.filter(e=>!e.requiresNativeDictation||qe())),t=e[0]?.id??`deepgram`,[i,a]=(0,Z.useState)(()=>{let r=n(Ht,t);return e.some(e=>e.id===r)?r:t}),[o,s]=(0,Z.useState)(i),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{let i=n(Ht,t);i===`macos-native`&&!e.some(e=>e.id===i)&&r(Ht,t)},[e,t]);let f=(0,Z.useMemo)(()=>e.find(e=>e.id===i)??e[0],[e,i]),p=f.apiKeyPlaceholder!==void 0;(0,Z.useEffect)(()=>{d(n(Ut+i,``).length>0),l(``)},[i]);let m=(0,Z.useMemo)(()=>{let e=i!==o,t=c.trim().length>0;return e||t},[i,o,c]),h=(0,Z.useCallback)(()=>{r(Ht,i);let e=c.trim();e.length>0&&(r(Ut+i,e),d(!0)),s(i),l(``)},[i,c]),g=(0,Z.useCallback)(()=>{r(Ut+i,``),d(!1),l(``)},[i]),_=u?`•••••••• (Enter a new key to replace)`:f.apiKeyPlaceholder;return(0,Q.jsx)(dt,{title:`Speech-to-Text`,subtitle:f.subtitle,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(N,{value:i,onChange:a,options:e.map(e=>({value:e.id,label:e.displayName})),"aria-label":`STT provider`})]}),p&&(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`API Key`}),(0,Q.jsx)(D,{type:`password`,value:c,onChange:e=>l(e.target.value),placeholder:_,fullWidth:!0})]}),f.setupWarning&&(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(w,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-mid-strong)]`}),(0,Q.jsx)(`span`,{children:f.setupWarning})]}),f.credentialsGuide&&(0,Q.jsx)(ft,{guide:f.credentialsGuide}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,Q.jsx)($,{onClick:h,disabled:!m}),u&&(0,Q.jsx)(ut,{onClick:g})]})]})})}function un(){return(0,Z.useEffect)(()=>{let e=window.location.hash.slice(1);e&&requestAnimationFrame(()=>{document.getElementById(e)?.scrollIntoView({block:`start`})})},[]),(0,Q.jsxs)(`div`,{className:`space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] px-4 py-2.5`,children:[(0,Q.jsx)(S,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`}),(0,Q.jsxs)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:[`Managed services are metered and deducted from your Vellum account balance.`,` `,(0,Q.jsxs)(`a`,{href:`https://www.vellum.ai/docs/pricing`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--primary-base)] hover:underline`,children:[`View pricing`,(0,Q.jsx)(x,{className:`h-3.5 w-3.5`})]})]})]}),(0,Q.jsx)(jt,{}),(0,Q.jsx)(Gt,{}),(0,Q.jsx)(qt,{}),(0,Q.jsx)(tn,{}),(0,Q.jsx)(nn,{}),(0,Q.jsx)(cn,{}),(0,Q.jsx)(ln,{})]})}export{un as AiPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,c as t,ot as n}from"./local-mode-B7ZZR0YU.js";import{c as r}from"./api-CpXGTl6G.js";import{St as i,_ as a,ct as o,st as s,v as c,y as l}from"./sdk.gen-
|
|
1
|
+
import{$ as e,c as t,ot as n}from"./local-mode-B7ZZR0YU.js";import{c as r}from"./api-CpXGTl6G.js";import{St as i,_ as a,ct as o,st as s,v as c,y as l}from"./sdk.gen-b3P17-Kv.js";import{i as u,n as d}from"./api-errors-CPc5p2r9.js";import{B as f,C as p,R as m,a as h,i as g,o as _,w as v,z as y}from"./sdk.gen-DIozkrVG.js";async function b(e,t){let{data:n,error:r,response:i}=await p({body:e??{},query:t?{mode:t}:void 0,throwOnError:!1});return d(i,r,`Failed to hatch assistant.`),i.ok?{ok:!0,status:i.status,data:n}:{ok:!1,status:i.status,error:u(r,i)}}async function x(e){if(n()){let e=t();if(e)return{ok:!0,status:200,data:{id:e.assistantId,name:e.name??e.assistantId,status:`active`,is_local:!0,created:e.hatchedAt??``}}}if(e){let{data:t,error:n,response:r}=await f({path:{id:e},throwOnError:!1});return d(r,n,`Failed to get assistant.`),r.ok?{ok:!0,status:r.status,data:t}:{ok:!1,status:r.status,error:u(n,r)}}let r=await v({query:{hosting:`platform`},throwOnError:!1});if(d(r.response,r.error,`Failed to get assistant.`),!r.response.ok)return{ok:!1,status:r.response.status,error:u(r.error,r.response)};let i=r.data?.results??[];if(i.length>0)return{ok:!0,status:r.response.status,data:i[0]};let a=await v({query:{hosting:`local`},throwOnError:!1});if(d(a.response,a.error,`Failed to get assistant.`),a.response.ok){let e=a.data?.results??[];if(e.length>0)return{ok:!0,status:a.response.status,data:e[0]}}return a.response.ok?{ok:!1,status:404,error:{detail:`No assistants found`}}:{ok:!1,status:a.response.status,error:u(a.error,a.response)}}async function S(e){let{data:t,error:n,response:r}=await i({path:{assistant_id:e},throwOnError:!1});return d(r,n,`Failed to get assistant healthz.`),r.ok&&t?{ok:!0,status:r.status,data:t}:{ok:!1,status:r.status,error:u(n,r)}}async function C(e){let{data:t,error:n,response:i}=await o({path:{assistant_id:e},throwOnError:!1});if(d(i,n,`Failed to get assistant disk pressure status.`),i.ok){let e=r.safeParse(t);return e.success?{ok:!0,status:i.status,data:e.data}:{ok:!1,status:i.status,error:u(e.error.message,i)}}return{ok:!1,status:i.status,error:u(n,i)}}async function w(e){let{data:t,error:n,response:i}=await s({path:{assistant_id:e},throwOnError:!1});if(d(i,n,`Failed to acknowledge assistant disk pressure.`),i.ok){let e=r.safeParse(t);return e.success?{ok:!0,status:i.status,data:e.data}:{ok:!1,status:i.status,error:u(e.error.message,i)}}return{ok:!1,status:i.status,error:u(n,i)}}function T(e){let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};if(Array.isArray(t.backups))return t.backups;let n=t,r=[],i=n.local?.snapshots;if(Array.isArray(i))for(let e of i)r.push({snapshot_name:e.filename,pvc:``,created_at:e.created_at,ready_to_use:!0,backup_type:`scheduled`,path:e.path});if(Array.isArray(n.offsite)){for(let e of n.offsite)if(Array.isArray(e.snapshots))for(let t of e.snapshots)r.push({snapshot_name:t.filename,pvc:``,created_at:t.created_at,ready_to_use:!t.encrypted,backup_type:`scheduled`,path:t.path})}return r}function E(e){let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return Array.isArray(t.backups)?t.backups:[]}async function D(t){let n=!e(),[r,i]=await Promise.all([c({path:{assistant_id:t},throwOnError:!1}),n?_({path:{assistant_id:t},throwOnError:!1}):null]);if(d(r.response,r.error,`Failed to list assistant backups.`),!r.response.ok)return{ok:!1,status:r.response.status,error:u(r.error,r.response)};let a=T(r.data);if(i){if(i.response?.ok){let e=E(i.data);return{ok:!0,status:r.response.status,data:[...e,...a]}}if(a.length===0&&i.response)return{ok:!1,status:i.response.status,error:u(i.error,i.response)}}return{ok:!0,status:r.response.status,data:a}}async function O(t){let{data:n,error:r,response:i}=e()?await a({path:{assistant_id:t},throwOnError:!1}):await g({path:{assistant_id:t},throwOnError:!1});if(d(i,r,`Failed to create assistant backup.`),i.ok){let e=n&&typeof n==`object`&&!Array.isArray(n)?n:{};return{ok:!0,status:i.status,data:e}}return{ok:!1,status:i.status,error:u(r,i)}}async function k(t,n){let{data:r,error:i,response:a}=e()?await l({path:{assistant_id:t},body:{path:n.path??n.snapshot_name},throwOnError:!1}):await h({path:{assistant_id:t,snapshot_name:n.snapshot_name},throwOnError:!1});if(d(a,i,`Failed to restore assistant backup.`),a.ok){let e=r&&typeof r==`object`&&!Array.isArray(r)?r:{};return{ok:!0,status:a.status,data:e}}return{ok:!1,status:a.status,error:u(i,a)}}async function A(e){let{data:t,error:n,response:r}=await m({path:{id:e},throwOnError:!1});return d(r,n,`Failed to restart assistant.`),r.ok?{ok:!0,data:t&&typeof t==`object`&&!Array.isArray(t)?t:{}}:{ok:!1,status:r.status,error:u(n,r)}}async function j(e){let{error:t,response:n}=await y({path:{id:e},throwOnError:!1});return d(n,t,`Failed to retire assistant.`),n.ok?{ok:!0}:{ok:!1,status:n.status,error:u(t,n)}}async function M(){let{data:e,error:t,response:n}=await v({query:{hosting:`all`},throwOnError:!1});return d(n,t,`Failed to list assistants.`),n.ok?{ok:!0,status:n.status,data:e?.results??[]}:{ok:!1,status:n.status,error:u(t,n)}}export{S as a,M as c,j as d,C as i,A as l,O as n,b as o,x as r,D as s,w as t,k as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D1p5nVKJ.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./input-C3O_0Gf6.js";import{t as s}from"./dropdown-D_OyzMtG.js";import{t as c}from"./is-electron-D-ZjqfK1.js";import{o as l}from"./routes-CwbPJCPw.js";import{
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D1p5nVKJ.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./input-C3O_0Gf6.js";import{t as s}from"./dropdown-D_OyzMtG.js";import{t as c}from"./is-electron-D-ZjqfK1.js";import{o as l}from"./routes-CwbPJCPw.js";import{on as u}from"./index-BFy5Tyub.js";import{a as d,i as f,n as p,o as m,r as h,s as g}from"./provider-key-pgmTis8x.js";import"./onboarding-step-layout-QhoZ4RKu.js";var _=e(t(),1),v=a();function y(){let e=r(),[t]=i(),a=t.get(`hosting`),y=c(),b=p(),[x,S]=(0,_.useState)(()=>b?.provider??f.id),[C,w]=(0,_.useState)(()=>b?.key??``),[T,E]=(0,_.useState)(()=>b?.model??m(b?.provider??f.id)??``),[D,O]=(0,_.useState)(()=>b?.baseUrl??``),[k,A]=(0,_.useState)(()=>b?.customModels??``),j=g(x)??f,M=j.models??[],N=j.requiresKey,P=M.length>0,F=x===`openai-compatible`,I=(!(N&&!F)||C.trim().length>0)&&(!P||T.trim().length>0)&&(!F||D.trim().length>0&&k.trim().length>0);return(0,v.jsx)(u,{children:(0,v.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${y?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`px-6 py-16`} text-[var(--content-default)]`,children:[(0,v.jsx)(`h1`,{className:y?`text-title-large`:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Connect a Model Provider`}),(0,v.jsx)(`p`,{className:`text-center text-body-medium-lighter text-[var(--content-tertiary)] ${y?`mt-3.5`:`mt-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Choose the model provider your assistant should use.`}),(0,v.jsxs)(`div`,{className:`flex w-full flex-col gap-4 ${y?`mt-8`:`mt-10`}`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:[(0,v.jsxs)(`div`,{className:`flex flex-col ${y?`gap-2`:`gap-1`}`,children:[(0,v.jsx)(`label`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,v.jsx)(s,{"aria-label":`Provider`,value:x,onChange:e=>{let t=g(e);t&&(S(t.id),w(``),E(m(t.id)??``))},options:d.map(e=>({value:e.id,label:e.displayName}))})]}),M.length>0&&(0,v.jsxs)(`div`,{className:`flex flex-col ${y?`gap-2`:`gap-1`}`,children:[(0,v.jsx)(`label`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Model`}),(0,v.jsx)(s,{"aria-label":`Model`,value:T,onChange:E,options:M.map(e=>({value:e.id,label:e.displayName}))})]}),F&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`div`,{className:`flex flex-col ${y?`gap-2`:`gap-1`}`,children:[(0,v.jsx)(`label`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Base URL`}),(0,v.jsx)(o,{type:`text`,placeholder:`http://localhost:1234/v1`,value:D,onChange:e=>O(e.target.value),fullWidth:!0})]}),(0,v.jsxs)(`div`,{className:`flex flex-col ${y?`gap-2`:`gap-1`}`,children:[(0,v.jsx)(`label`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Models`}),(0,v.jsx)(o,{type:`text`,placeholder:`model-1, model-2`,value:k,onChange:e=>A(e.target.value),fullWidth:!0}),(0,v.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Comma-separated model identifiers exposed by your endpoint.`})]})]}),N&&(0,v.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,v.jsx)(o,{type:`password`,label:`${j.displayName} API Key`,placeholder:j.apiKeyPlaceholder??`Enter your API key`,value:C,onChange:e=>w(e.target.value),className:`touch-mobile:text-[16px]`,fullWidth:!0}),j.docsUrl&&(0,v.jsxs)(`p`,{className:`self-start text-body-medium-lighter text-[var(--content-tertiary)]`,children:[`Don't have it?`,` `,(0,v.jsx)(`a`,{href:j.docsUrl,target:`_blank`,rel:`noreferrer`,className:`text-[var(--content-default)] underline`,children:`Get an API key here`})]})]})]}),(0,v.jsxs)(`div`,{className:`mt-8 flex w-full flex-col ${y?`gap-2.5`:`gap-2`}`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,v.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,disabled:!I,onClick:()=>{if(!I)return;let t=T.trim()||m(x);h({provider:x,key:C.trim(),...t?{model:t}:{},...F?{baseUrl:D.trim(),customModels:k.trim()}:{}}),e(a?`${l.onboarding.privacy}?hosting=${a}`:l.onboarding.privacy)},className:y?void 0:`h-11 text-base`,children:`Continue`}),(0,v.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,onClick:()=>{e(l.onboarding.hosting)},className:y?void 0:`h-11 text-base`,children:`Back`})]})]})})}export{y as ApiKeyScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-8raDoxFL.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-D1p5nVKJ.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./card-Bv5O5juh.js";import{t as s}from"./archive-0aqysuyd.js";import{t as c}from"./loader-circle-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-8raDoxFL.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-D1p5nVKJ.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./card-Bv5O5juh.js";import{t as s}from"./archive-0aqysuyd.js";import{t as c}from"./loader-circle-TuIfoFJ-.js";import{t as l}from"./triangle-alert-BRr1dMg2.js";import"./src-CiGJv63_.js";import{n as u}from"./toast-KhXf0OVq.js";import{J as d}from"./sdk.gen-b3P17-Kv.js";import{Ai as f,Tn as p,ir as m}from"./index-BFy5Tyub.js";import{t as h}from"./use-active-assistant-id-CNSl8K3W.js";var g=e(n(),1),_=a();function v(e){if(e==null)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString(void 0,{month:`short`,day:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0})}function y(){return(0,_.jsx)(o,{children:(0,_.jsxs)(`div`,{className:`flex min-h-[400px] flex-col items-center justify-center px-6 py-16 text-center`,children:[(0,_.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--surface-base)]`,children:(0,_.jsx)(s,{className:`h-6 w-6 text-[var(--content-disabled)] dark:text-[var(--content-default)]`})}),(0,_.jsx)(`h2`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:`No archived conversations`}),(0,_.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Conversations you archive will appear here.`})]})})}function b({conversation:e,isFirst:t,onUnarchive:n,isPending:i}){let a=[v(e.createdAt),e.source??`vellum-assistant`].filter(Boolean).join(` · `),o=e.title&&e.title.trim().length>0?e.title:`Untitled conversation`;return(0,_.jsxs)(`div`,{className:`flex items-center gap-3 py-3 ${t?``:`border-t border-[var(--border-base)]`}`,children:[(0,_.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,_.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:o}),(0,_.jsx)(`p`,{className:`mt-0.5 truncate text-body-small-default text-[var(--content-tertiary)]`,children:a})]}),(0,_.jsx)(r,{variant:`outlined`,onClick:n,disabled:i,className:`shrink-0`,children:i?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(c,{className:`h-4 w-4 animate-spin`}),`Unarchiving`]}):`Unarchive`})]})}function x(){let e=i(),n=h(),{conversations:a,isLoading:s,isError:v,refetch:x}=p(n),[S,C]=(0,g.useState)(null),w=(0,g.useCallback)(async r=>{if(n){C(r);try{await d({path:{assistant_id:n,id:r},throwOnError:!0}),m(e,n)}catch(e){t(e,{context:`archive_settings_unarchive_conversation`}),u.error(`Failed to unarchive conversation.`)}finally{C(null)}}},[n,e]);return s?(0,_.jsx)(`div`,{className:`w-full`,children:(0,_.jsx)(`div`,{className:`flex min-h-[400px] items-center justify-center`,children:(0,_.jsx)(c,{className:`h-6 w-6 animate-spin text-[var(--content-disabled)]`})})}):v?(0,_.jsx)(`div`,{className:`w-full`,children:(0,_.jsx)(o,{children:(0,_.jsxs)(`div`,{className:`flex min-h-[400px] flex-col items-center justify-center px-6 py-16 text-center`,children:[(0,_.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-[var(--system-error-lighter)]`,children:(0,_.jsx)(l,{className:`h-6 w-6 text-[var(--system-error-default)]`})}),(0,_.jsx)(`h2`,{className:`mt-4 text-title-small text-[var(--content-default)]`,children:`Failed to load archived conversations`}),(0,_.jsx)(`p`,{className:`mt-1 text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Something went wrong. Please try again.`}),(0,_.jsxs)(r,{variant:`outlined`,onClick:x,className:`mt-4`,children:[(0,_.jsx)(f,{className:`h-4 w-4`}),`Retry`]})]})})}):a.length===0?(0,_.jsx)(`div`,{className:`w-full`,children:(0,_.jsx)(y,{})}):(0,_.jsx)(`div`,{className:`w-full`,children:(0,_.jsx)(o,{noPadding:!0,className:`px-4`,children:a.map((e,t)=>(0,_.jsx)(b,{conversation:e,isFirst:t===0,onUnarchive:()=>{w(e.conversationId)},isPending:S===e.conversationId},e.conversationId))})})}export{x as ArchivePage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./toast-
|
|
1
|
+
import{n as e}from"./toast-KhXf0OVq.js";import{n as t,t as n}from"./create-selectors-DQQo0M4X.js";import{c as r,n as i,s as a,t as o,u as s}from"./feature-flag-catalog-CVDW9oen.js";import{d as c}from"./sdk.gen-BK9lo3f0.js";var l={...o},u={...i},d=0,f={};function p(e={}){l={...o,...e};for(let e of Object.keys(f))delete f[e]}function m(e={}){u={...i,...e}}function h(){p(),m()}var g=a(`assistant`);function _(e){return l[e]??o[e]??!1}function v(e){return u[e]??i[e]??``}var y=n(t()(t=>{let n=t;return{...o,...g.bool,hasHydrated:!1,stringFlags:{...i,...g.str},setFlags:e=>t(t=>{p(e);let n={...e,...g.bool};return Object.keys(n).some(e=>n[e]!==t[e])?n:t}),setFlag:(n,i,a)=>{let o=++d,u=()=>{if(f[n]!==o)return;delete f[n];let a=_(n);t(e=>e[n]===i?{[n]:a}:e),e.error(`Couldn't update "${r(n)?.label??n}" — change reverted.`)},p=s(n);!a||!p||(f[n]=o,c({path:{assistant_id:a,flag_key:p},body:{enabled:i},throwOnError:!1}).then(e=>{e.response?.ok?(l[n]=i,f[n]===o&&delete f[n]):u()}).catch(u),t({[n]:g.bool[n]??i}))},markHydrated:()=>t({hasHydrated:!0}),resetForAssistantSwitch:()=>{h(),t({...o,...g.bool,hasHydrated:!1}),n({stringFlags:{...i,...g.str}})},setStringFlags:e=>n(t=>{m(e);let n={...e,...g.str},r=t.stringFlags;return Object.keys(n).some(e=>n[e]!==r[e])?{stringFlags:n}:t}),setStringFlag:(t,i,a)=>{let o=++d,l=()=>{if(f[t]!==o)return;delete f[t];let a=v(t);n(e=>e.stringFlags[t]===i?{stringFlags:{...e.stringFlags,[t]:a}}:e),e.error(`Couldn't update "${r(t)?.label??t}" — change reverted.`)},p=s(t);!a||!p||(f[t]=o,c({path:{assistant_id:a,flag_key:p},body:{enabled:i},throwOnError:!1}).then(e=>{e.response?.ok?(u[t]=i,f[t]===o&&delete f[t]):l()}).catch(l),n(e=>({stringFlags:{...e.stringFlags,[t]:g.str[t]??i}})))}}}));export{y as t};
|
package/dist/assets/{assistant-status-panel-DqWmqYfK.js → assistant-status-panel-CVx8n3AQ.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{n as t,t as n}from"./capture-error-8raDoxFL.js";import{t as r}from"./react-DJZBPgpf.js";import{t as i}from"./useQuery-B45lW1Kk.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./loader-circle-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{n as t,t as n}from"./capture-error-8raDoxFL.js";import{t as r}from"./react-DJZBPgpf.js";import{t as i}from"./useQuery-B45lW1Kk.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./loader-circle-TuIfoFJ-.js";import"./src-CiGJv63_.js";import{t as s}from"./tag-CT07giv7.js";import{n as c}from"./toast-KhXf0OVq.js";import{n as l}from"./auth-store-C2284gT8.js";import{a as u,r as d}from"./api-CqTlpuOS.js";import{t as f}from"./assistant-feature-flag-store-BCzIMagD.js";import{t as p}from"./use-active-assistant-id-CNSl8K3W.js";import{t as m}from"./environment-store-BO4einyI.js";var h=e(r(),1),g=a();function _({value:e,max:t,caption:n}){let r=t>0?Math.max(0,Math.min(e/t*100,100)):0,i=r>90;return(0,g.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,g.jsx)(`div`,{className:`h-2 w-full overflow-hidden rounded-full bg-[var(--surface-active)]`,children:(0,g.jsx)(`div`,{className:`h-full rounded-full transition-[width] duration-200`,style:{width:`${r}%`,backgroundColor:i?`var(--system-negative-strong)`:`var(--system-positive-strong)`}})}),n&&(0,g.jsx)(`span`,{className:`text-label-medium-default text-[var(--content-tertiary)]`,children:n})]})}var v=7,y=2e3;function b({version:e,loading:t,assistantId:n}){let r=(0,h.useRef)(0),i=(0,h.useRef)(null),[a,s]=(0,h.useState)(null),c=(0,h.useCallback)(()=>{if(r.current+=1,r.current>=v){r.current=0;let e=f.getState(),t=!e.settingsDeveloperNav;e.setFlag(`settingsDeveloperNav`,t,n),s(t?`Developer mode enabled`:`Developer mode disabled`),i.current!==null&&clearTimeout(i.current),i.current=setTimeout(()=>{s(null),i.current=null},y)}},[n]);return(0,h.useEffect)(()=>()=>{i.current!==null&&clearTimeout(i.current)},[]),t?(0,g.jsxs)(`span`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,g.jsx)(o,{className:`h-4 w-4 animate-spin`}),`Loading version...`]}):e?(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`button`,{type:`button`,className:`break-all text-left text-body-medium-lighter text-[var(--content-default)]`,onClick:c,children:e}),a&&(0,g.jsx)(`p`,{className:`mt-1 text-body-small-default text-[var(--content-accent)]`,children:a})]}):(0,g.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`—`})}var x=`currentAssistant`,S=4e3,C=9e4;function w(e,t){return(e.memory?.maxMb??null)!==(t.memory?.maxMb??null)||(e.cpu?.maxCores??null)!==(t.cpu?.maxCores??null)}function T(){let e=p(),{data:r=null,isLoading:a,refetch:o}=i({queryKey:[x,e],queryFn:async()=>{let t=await d(e);return t.ok?t.data:null},retry:!1}),s=r?.id,[l,f]=(0,h.useState)(null),[m,g]=(0,h.useState)(!1),[_,v]=(0,h.useState)(!1),y=(0,h.useRef)(0),b=(0,h.useRef)(0),T=(0,h.useCallback)(async e=>{if(!s)return f(null),g(!1),null;y.current+=1;let r=y.current;g(!0);try{let t=await u(s);return r===y.current?t.ok?(f(t.data),t.data):(e?.keepStaleOnError||f(null),null):null}catch(i){return r===y.current?(e?.keepStaleOnError||f(null),!t(i)&&!e?.keepStaleOnError&&(n(i,{context:`fetch_assistant_healthz`}),c.error(`Failed to load assistant info`)),null):null}finally{r===y.current&&g(!1)}},[s]);return(0,h.useEffect)(()=>{T()},[T]),(0,h.useEffect)(()=>()=>{b.current+=1,v(!1),f(null)},[s]),{assistant:r,assistantLoading:a,healthz:l,healthzLoading:m,healthzPolling:_,refetch:(0,h.useCallback)(async()=>{await o(),await T()},[o,T]),refetchUntilResized:(0,h.useCallback)(async e=>{let t=++b.current,n=Date.now()+C;v(!0);let r=e;try{for(o();Date.now()<n&&t===b.current;){if(await new Promise(e=>setTimeout(e,S)),t!==b.current)return;let e=await T({keepStaleOnError:!0});if(t!==b.current)return;if(e){if(r==null){r=e;continue}if(w(e,r))return}}}finally{t===b.current&&v(!1)}},[T,o])}}function E({assistant:e,assistantLoading:t,healthz:n,healthzLoading:r}){let i=m.use.isNonProduction(),a=l.use.user()?.email;if(t)return(0,g.jsxs)(`div`,{className:`flex items-center gap-2 text-body-medium-lighter text-[var(--content-tertiary)]`,children:[(0,g.jsx)(o,{className:`h-4 w-4 animate-spin`}),`Loading assistant info...`]});if(!e)return(0,g.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No assistant found. Hatch an assistant to get started.`});let c=n?.version??e.current_release_version;return(0,g.jsxs)(`div`,{className:`grid grid-cols-[140px_minmax(0,1fr)] gap-y-3`,children:[a&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(O,{children:`Account`}),(0,g.jsx)(k,{children:a})]}),(0,g.jsx)(O,{children:`Name`}),(0,g.jsx)(k,{children:e.name}),e.description&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(O,{children:`Description`}),(0,g.jsx)(k,{children:e.description})]}),(0,g.jsx)(O,{children:`Status`}),(0,g.jsx)(`div`,{children:(0,g.jsx)(s,{tone:e.status===`active`?`positive`:`neutral`,children:e.status})}),(0,g.jsx)(O,{children:`Assistant ID`}),(0,g.jsx)(`span`,{className:`break-all font-mono text-body-small-default text-[var(--content-tertiary)]`,children:e.id}),i&&e.machine_id&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(O,{children:`Machine ID`}),(0,g.jsx)(`span`,{className:`break-all font-mono text-body-small-default text-[var(--content-tertiary)]`,children:e.machine_id})]}),(0,g.jsx)(O,{children:`Created`}),(0,g.jsx)(k,{children:e.created?new Date(e.created).toLocaleDateString():`Unknown`}),(0,g.jsx)(O,{children:`Version`}),(0,g.jsx)(b,{version:c??null,loading:r&&!e.current_release_version,assistantId:e.id??null})]})}function D(e){return e>=1024?`${(e/1024).toFixed(1)} GB`:`${e.toFixed(0)} MB`}function O({children:e}){return(0,g.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:e})}function k({children:e}){return(0,g.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:e})}export{_ as i,D as n,T as r,E as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esm-D8HhVT3_.js","assets/preload-helper-BewR0kVT.js","assets/dist-DYJxpPwT2.js","assets/esm-CmDxdOMx.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e,c as t,i as n,t as r}from"./local-settings-lVNyIOJ_.js";import{a as i,t as a}from"./device-settings-BBwtGKJb.js";import{o,t as s}from"./capture-error-8raDoxFL.js";import{t as c}from"./preload-helper-BewR0kVT.js";import{t as l}from"./useQuery-B45lW1Kk.js";import{n as u,t as d}from"./create-selectors-DQQo0M4X.js";import{$ as ee,C as te,E as ne,Q as re,S as ie,_ as ae,at as f,c as p,d as oe,et as m,f as h,h as g,i as se,it as ce,m as le,n as ue,nt as de,o as fe,ot as _,r as pe,rt as me,s as he,tt as ge,v as _e,w as ve,x as ye}from"./local-mode-B7ZZR0YU.js";import{t as v}from"./is-electron-D-ZjqfK1.js";import{n as y,t as be}from"./resolved-assistants-store-DQKnlyaA.js";import{n as xe,r as b,t as Se}from"./api-errors-CPc5p2r9.js";import{t as x}from"./client.gen-nWvCdeJb.js";import{M as Ce,N as we,wt as Te}from"./sdk.gen-DIozkrVG.js";import{a as Ee,c as S,r as De}from"./api-CqTlpuOS.js";import{n as Oe}from"./event-bus-ULoEgfFr.js";import{S as C,a as ke,b as Ae,d as je,h as Me,i as Ne,l as Pe,t as Fe,u as Ie,v as Le,w as Re,y as ze}from"./native-biometric-1uLTkAo9.js";import{o as Be}from"./remote-gateway-session-CjgD9Fds.js";import{t as Ve}from"./dist-DYJxpPwT2.js";import{r as He}from"./typed-storage-BGMPjrzL.js";var w=d(u(()=>({assistantState:{kind:`loading`},operationalStatusAssistantId:null,expectingFirstMessage:!1}))),Ue=new Set;function We(e){return Ue.add(e),()=>{Ue.delete(e)}}function Ge(){for(let e of Ue)try{e()}catch{}}var Ke=new Set([502,503,504]),qe=`Connection interrupted. Reconnecting…`;function Je(e){return e.code===`proxy_network_error`?!0:(typeof e.detail==`string`?e.detail:``).includes(`net::ERR_`)}function Ye(e){if(e.ok)switch(e.data.status){case`active`:return e.data.is_local?{kind:`self_hosted`}:{kind:`active`};case`initializing`:return{kind:`initializing`};case`to_be_deleted`:return{kind:`cleaning_up`};default:return{kind:`error`,message:`Unexpected assistant status: ${e.data.status}`}}return e.status===404?{kind:`auto_hatch`}:Je(e.error)?{kind:`error`,transient:!0,message:qe}:{kind:`error`,message:b(e.error,void 0,`Failed to check assistant status.`)}}function Xe(e){return e===void 0||e>=500}var Ze=`platform_hosted_disabled`,Qe=`We are at capacity for Vellum Managed Assistants, more will be available soon!`;function $e(e,t){return e===503?t?.code===Ze:!1}var et=2e3,tt=3e4;function nt(e){return Math.min(et*2**e,tt)}var rt=3e5;function it(){return{kind:`error`,message:`Your assistant is taking longer than expected to start. Please try again, or check the community for help.`}}var at=[`assistant`,`current`],ot=3e3,st=new Set([`initializing`,`cleaning_up`]);function ct(e){if(!e)return!1;let t=Ye(e);return st.has(t.kind)?ot:!1}function lt(e){return e?[...at,e]:at}function ut(e){let t=e.selectedPlatformAssistantId??null;return l({queryKey:lt(t),queryFn:()=>De(t??void 0),enabled:e.enabled,retry:!1,refetchInterval:e=>ct(e.state.data),refetchOnWindowFocus:!1})}var dt=new Set([`healthy`,`ok`]);function ft(e){if(!e.ok)return`unreachable`;let t=e.data?.status;return t===`MIGRATING`?`migrating`:t!==void 0&&!dt.has(t)?`unhealthy`:`healthy`}function pt(){let e=w.use.assistantState();return e.kind===`self_hosted`||e.kind===`active`&&e.isLocal?e.health??null:null}var T=e=>e===`authenticated`,mt=e=>e!==`initializing`,E=e=>e===`present`,ht=(e,t)=>e===`present`&&!t,gt=new Set([401,403,410]),_t=e=>!e.ok&&e.status!==void 0&>.has(e.status),vt=4e3,yt=6e4,bt=5e3;function xt(){let e=/\/assistant(?:\/|$)/.exec(window.location.pathname),t=e&&e.index>0?window.location.pathname.slice(0,e.index).replace(/\/+$/,``):``;return`${window.location.origin}${t}`}var D=new class{state={kind:`loading`};generation=0;initializingTimeout=null;ready=!1;inputs={sessionStatus:`initializing`,hasPlatformSession:!1,queryClient:null,selectedPlatformAssistantId:null};probeTimer=null;healthHeartbeatTimer=null;healthHeartbeatId=null;healthHeartbeatToken=0;reachabilityProbeInFlightIds=new Set;probeLoopAssistantId=null;errorRetryTimer=null;errorRetryAttempt=0;constructor(){We(()=>this.onUnreachable()),Oe(`app.online`,()=>this.onNetworkOnline()),y.subscribe((e,t)=>{e.selectedAssistantId!==t.selectedAssistantId&&(!_()||this.state.kind===`loading`||this.applyGatewayAuthShortCircuit())})}setInputs(e){this.inputs=e,this.ready=!0}resetForLogout(){y.getState().activeAssistantId!==null&&y.getState().setActiveAssistantId(null),this.setOperationalStatusAssistantId(null),this.cancelProbeTimer(),this.probeLoopAssistantId=null,this.reachabilityProbeInFlightIds.clear(),this.state.kind!==`loading`&&this.transition({kind:`loading`}),this.clearExpectingFirstMessage()}async respondToInputs(){if(this.ready){if(_()){this.applyGatewayAuthShortCircuit();return}if(!T(this.inputs.sessionStatus)){this.resetForLogout();return}this.inputs.hasPlatformSession&&m(null),this.inputs.isOrgReady&&await this.checkAssistant()}}async applyServerResult(e){this.ready&&(this.state.kind!==`initializing`&&this.state.kind!==`cleaning_up`||await this.applyServerStateUpdate(e))}async checkAssistant(e){if(!this.ready)return;if(_()){this.applyGatewayAuthShortCircuit();return}let t=this.generation;try{let n=e??this.inputs.selectedPlatformAssistantId??null,r=await this.inputs.queryClient.fetchQuery({queryKey:lt(n),queryFn:()=>De(n??void 0),staleTime:0});if(t!==this.generation||n&&!r.ok&&r.status===404&&(y.getState().setSelectedAssistant(null),r=await this.inputs.queryClient.fetchQuery({queryKey:at,queryFn:()=>De(),staleTime:0}),t!==this.generation))return;await this.applyServerStateUpdate(r)}catch(e){if(console.error(`Error checking assistant status:`,e),s(e,{context:`check_assistant`}),t!==this.generation||this.degradeOnTransportFailure())return;this.transition({kind:`error`,transient:!0,message:qe})}}degradeOnTransportFailure(){return this.state.kind===`active`?(this.triggerReachabilityProbe(),!0):this.state.kind===`initializing`||this.state.kind===`cleaning_up`}retryAssistant(){this.ready&&this.checkAssistant()}markExpectingFirstMessage(){w.getState().expectingFirstMessage||w.setState({expectingFirstMessage:!0})}clearExpectingFirstMessage(){w.getState().expectingFirstMessage&&w.setState({expectingFirstMessage:!1})}transition(e){let t=this.state.kind;this.state=e,w.setState({assistantState:e}),e.kind===`initializing`?t!==`initializing`&&this.armInitializingWatchdog():this.initializingTimeout&&=(clearTimeout(this.initializingTimeout),null),e.kind!==`initializing`&&e.kind!==`active`&&this.clearExpectingFirstMessage(),!(e.kind===`self_hosted`||e.kind===`active`&&e.isLocal)&&this.healthHeartbeatId!==null&&this.cancelHealthHeartbeat(),e.kind===`error`&&e.transient?this.armErrorRetry():this.clearErrorRetry(e.kind!==`error`)}clearErrorRetry(e){this.errorRetryTimer&&=(clearTimeout(this.errorRetryTimer),null),e&&(this.errorRetryAttempt=0)}armErrorRetry(){this.errorRetryTimer&&clearTimeout(this.errorRetryTimer);let e=nt(this.errorRetryAttempt);this.errorRetryAttempt+=1,this.errorRetryTimer=setTimeout(()=>{this.errorRetryTimer=null,this.checkAssistant()},e)}onNetworkOnline(){if(this.ready){if(this.state.kind===`error`&&this.state.transient){this.clearErrorRetry(!0),this.checkAssistant();return}this.state.kind===`active`&&this.state.reachable===!1&&this.checkAssistant()}}armInitializingWatchdog(){this.initializingTimeout&&clearTimeout(this.initializingTimeout),this.initializingTimeout=setTimeout(()=>{this.generation++,o(`Assistant stuck in initializing state`,{level:`warning`,extra:{timeoutMs:rt}}),this.transition(it())},rt)}projectActive(e){let t=e.data.maintenance_mode,n=e.data.is_local??!1;m(null),this.setOperationalStatusAssistantId(e.data.id);let r=y.getState();r.upsertFromApi(e.data),r.setActiveAssistantId(e.data.id),this.transition({kind:`active`,isLocal:n,maintenanceMode:{enabled:t?.enabled}}),n?this.startHealthHeartbeat(e.data.id):this.probeReachability(e.data.id)}projectSelfHosted(e){this.setOperationalStatusAssistantId(null),m({url:e.data.ingress_url,token:e.data.platform_actor_token});let t=y.getState();t.upsertFromApi(e.data),t.setActiveAssistantId(e.data.id),this.transition({kind:`self_hosted`}),this.startHealthHeartbeat(e.data.id)}applyGatewayAuthShortCircuit(){let e=window.location.origin,t=`self`,n=se();if(g())e=xt();else if(n){let r=p();e=`${window.location.origin}${n}`,t=r?.assistantId??t}m({url:e,token:me()}),this.setOperationalStatusAssistantId(null),y.getState().setActiveAssistantId(t),this.transition({kind:`active`,isLocal:!0}),this.startHealthHeartbeat(t)}async applyServerStateUpdate(e){let t=this.generation,n=Ye(e);if(!(n.kind===`error`&&n.transient&&this.degradeOnTransportFailure())&&(e.ok?this.setOperationalStatusAssistantId(e.data.id):this.setOperationalStatusAssistantId(null),n.kind!==`auto_hatch`)){if(n.kind===`active`&&e.ok){this.projectActive(e);return}if(n.kind===`self_hosted`&&e.ok){this.projectSelfHosted(e);return}t===this.generation&&n.kind!==`active`&&this.transition(n)}}async probeReachability(e){if(!this.reachabilityProbeInFlightIds.has(e)){this.reachabilityProbeInFlightIds.add(e);try{let t=this.generation,n=this.state.kind===`self_hosted`||this.state.kind===`active`&&this.state.isLocal,r=n?p()?.assistantId??e:e,i=!g()&&n?await ne(r).catch(()=>null):null,a=i?.ok&&i.state===`upgrading`?`upgrading`:`unreachable`;if(a!==`upgrading`)try{a=ft(await Ee(e))}catch{a=`unreachable`}if(a===`unreachable`&&!i&&!g()&&(i=await ne(r).catch(()=>null)),a===`unreachable`&&i?.ok)switch(i.state){case`healthy`:a=`healthy`;break;case`sleeping`:case`starting`:case`upgrading`:case`unhealthy`:case`crashed`:a=i.state;break;case`unknown`:break}if(t!==this.generation||y.getState().activeAssistantId!==e)return;if(this.state.kind===`self_hosted`){this.state.health!==a&&this.transition({...this.state,health:a});return}if(this.state.kind!==`active`)return;let o=a===`healthy`||a===`unhealthy`;if(this.state.reachable===o&&this.state.health===a)return;this.transition({...this.state,reachable:o,health:a})}finally{this.reachabilityProbeInFlightIds.delete(e)}}}cancelProbeTimer(){this.probeTimer&&=(clearTimeout(this.probeTimer),null)}startProbeLoop(e){if(this.probeLoopAssistantId===e)return;this.cancelProbeTimer(),this.probeLoopAssistantId=e;let t=Date.now(),n=()=>{this.probeLoopAssistantId=null},r=async()=>{if(this.state.kind!==`active`||this.state.reachable===!0){n();return}if(Date.now()-t>yt){n();return}await this.probeReachability(e);let i=this.state;if(i.kind!==`active`||i.reachable===!0){n();return}if(Date.now()-t>yt){n();return}this.probeTimer=setTimeout(()=>void r(),vt)};this.probeTimer=setTimeout(()=>void r(),vt)}startHealthHeartbeat(e){if(this.healthHeartbeatId===e)return;this.cancelHealthHeartbeat(),this.healthHeartbeatId=e;let t=this.healthHeartbeatToken,n=async()=>{t===this.healthHeartbeatToken&&(await this.probeReachability(e),t===this.healthHeartbeatToken&&(this.healthHeartbeatTimer=setTimeout(()=>void n(),bt)))};n()}cancelHealthHeartbeat(){this.healthHeartbeatToken++,this.healthHeartbeatId=null,this.healthHeartbeatTimer&&=(clearTimeout(this.healthHeartbeatTimer),null)}onUnreachable(){this.triggerReachabilityProbe()}triggerReachabilityProbe(){if(this.state.kind!==`active`)return;let e=y.getState().activeAssistantId;if(e){if(this.transition({...this.state,reachable:!1}),this.healthHeartbeatId===e){this.probeReachability(e);return}this.startProbeLoop(e)}}setLocalAssistantUpgradeInProgress(e,t){if(y.getState().activeAssistantId===e){if(!t){this.probeReachability(e);return}if(this.state.kind===`self_hosted`){this.transition({...this.state,health:`upgrading`});return}this.state.kind===`active`&&this.state.isLocal&&this.transition({...this.state,reachable:!1,health:`upgrading`})}}__resetForTesting(){this.initializingTimeout&&=(clearTimeout(this.initializingTimeout),null),this.cancelProbeTimer(),this.cancelHealthHeartbeat(),this.probeLoopAssistantId=null,this.reachabilityProbeInFlightIds.clear(),this.clearErrorRetry(!0),this.state={kind:`loading`},this.generation=0,this.ready=!1,w.setState({expectingFirstMessage:!1,operationalStatusAssistantId:null}),this.inputs={sessionStatus:`initializing`,hasPlatformSession:!1,queryClient:null},w.setState({assistantState:this.state}),y.setState({activeAssistantId:null})}setOperationalStatusAssistantId(e){w.getState().operationalStatusAssistantId!==e&&w.setState({operationalStatusAssistantId:e})}};function St(e){let{assistants:t,selectedAssistantId:n,assistantsHydrated:r}=y.getState(),i=be(t,e),a=e=>i.some(t=>t.id===e);if(n!==null){let e=t.some(e=>e.id===n);if(a(n)||!e&&!r)return n}let o=ue()?.assistantId??null;return o!==null&&a(o)?o:i[0]?.id??null}async function O(e){y.getState().setSelectedAssistant(e),e!==null&&await ye(e)}var Ct=`vellum:auth:userSnapshot`;function wt(e){if(e)try{localStorage.setItem(Ct,JSON.stringify(e))}catch{}}function Tt(){try{let e=localStorage.getItem(Ct);if(!e)return null;let t=JSON.parse(e);return!t||typeof t!=`object`?null:{kind:`platform`,id:typeof t.id==`string`?t.id:null,username:typeof t.username==`string`?t.username:null,email:typeof t.email==`string`?t.email:null,isStaff:t.isStaff===!0,firstName:typeof t.firstName==`string`?t.firstName:``,lastName:typeof t.lastName==`string`?t.lastName:``}}catch{return null}}function k(){try{localStorage.removeItem(Ct)}catch{}}var Et=`vellum_active_organization_id`;function Dt(){return globalThis.sessionStorage===void 0?null:globalThis.sessionStorage}function Ot(){let e=Dt();if(!e)return null;try{return e.getItem(Et)}catch{return null}}function kt(e){let t=Dt();if(t)try{t.setItem(Et,e)}catch{}}function At(){let e=Dt();if(e)try{e.removeItem(Et)}catch{}}function jt(e,t){return e.length===0?null:t&&e.some(e=>e.id===t)?t:e[0].id}var A=d(u()((e,t)=>({organizations:[],currentOrganizationId:null,status:`idle`,error:null,fetchOrganizations:async()=>{e({status:`loading`,error:null});try{let n=(await Te()).data?.results??[],r=jt(n,t().currentOrganizationId??Ot());r&&kt(r),e({organizations:n,currentOrganizationId:r,status:r?`ready`:`error`,error:r?null:`No organization available for this user.`})}catch(t){e({status:`error`,error:t instanceof Error&&t.message?t.message:`Failed to load organizations.`})}},setCurrentOrganizationId:n=>{let{organizations:r}=t();r.some(e=>e.id===n)&&(kt(n),e({currentOrganizationId:n,status:`ready`}))},clearOrganization:()=>{At(),e({organizations:[],currentOrganizationId:null,status:`idle`,error:null})}})));function j(){return A.getState().currentOrganizationId??Ot()}function Mt(){A.getState().clearOrganization()}function Nt(){let e=0,t=A.subscribe(t=>{(t.status===`ready`||t.status===`error`)&&(e=Date.now())}),n=$.subscribe((e,t)=>{let n=E(e.platformSession),r=E(t.platformSession);n&&(!r||e.user?.id!==t.user?.id)&&A.getState().fetchOrganizations()}),r=()=>{if(!E($.getState().platformSession))return;let{status:t}=A.getState();(t===`ready`||t===`error`)&&Date.now()-e>1e4&&A.getState().fetchOrganizations()},i=Oe(`app.resume`,()=>{r()});return()=>{t(),n(),i()}}function Pt(e,t={}){let n={...e??{}},r=t.includeSelfHostedActorToken===!1?null:re();if(r)return n.Authorization=`Bearer ${r}`,n;let i=t.organizationId??j();i&&(n[`Vellum-Organization-Id`]=i);let a=Ae();return a&&(n[`X-Session-Token`]=a),n}async function Ft(e,t={}){let n=Pt(e,t);if(n.Authorization||v())return n;await Le();let r=ze();return r&&(n[`X-CSRFToken`]=r),n}var It;function Lt(){return v()?(It===void 0&&(It=window.__VELLUM_CONFIG__?.deviceId??null),It):null}var Rt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,zt=`X-Vellum-Electron-Renderer-Origin`,Bt=new Map;async function Vt(e,t={}){if(!h()||g()||le()||rn(e))return e;let n=Ut(e);if(!n)return e;let r=Bt.get(n.assistantId);if(r)return r;let i=Wt(n,{allowGatewayRepair:t.allowGatewayRepair??!0});Bt.set(n.assistantId,i);try{return await i}catch(e){throw Bt.delete(n.assistantId),e}}function Ht(e,t={}){if(!h()||g()||le())return;let n=e;if(!n){let e=p();if(!e||!oe(e))return;n=e.assistantId}Vt(n,{allowGatewayRepair:t.allowGatewayRepair??!1}).catch(t.onError??(e=>{console.warn(`local assistant platform bootstrap failed`,e)}))}function Ut(e){let t=ue();if(t?.assistantId===e&&oe(t))return t;let n=p();return n?.assistantId===e&&oe(n)?n:null}async function Wt(e,t){let n=await Kt(e,t),r=await qt(n,e.assistantId),i=r?.assistantId&&rn(r.assistantId)?r.assistantId:null;if(i&&r?.hasAssistantApiKey!==!1){let t=r?.organizationId??e.platformOrganizationId??null;return t&&await Gt(e,{platformAssistantId:i,platformBaseUrl:r?.baseUrl??he(),organizationId:t}),i}let a=await Jt(r?.organizationId??null,e);if(!a)throw Error(`Sign in to Vellum and select an organization to register this local assistant.`);let o=r?.clientInstallationId??Lt()??null;if(!o)throw Error(`Unable to identify this local assistant host for platform registration.`);let s=await Yt(e,a,o),c=M(s.assistant?.id,s.assistant_id,s.id),l=i??c;if(!l||!rn(l))throw Error(`The platform registration response did not include an assistant UUID.`);let u=N(s.assistant_api_key);!u&&r?.hasAssistantApiKey!==!0&&(u=await Xt(e,a,o));let d=r?.baseUrl??he();return await Qt(n,{assistantApiKey:u,platformAssistantId:l,platformBaseUrl:d,organizationId:a,webhookSecret:N(s.webhook_secret)}),await Gt(e,{platformAssistantId:l,platformBaseUrl:d,organizationId:a}),l}async function Gt(e,t){await te({...e,platformAssistantId:t.platformAssistantId,platformBaseUrl:t.platformBaseUrl,platformOrganizationId:t.organizationId}).catch(e=>{console.warn(`local assistant platform lockfile update failed`,e)})}async function Kt(e,t){let n=ee(),r=re();if(t.allowGatewayRepair&&(!n||!r)&&(await _e(e),n=ee(),r=re()),!n||!r){let t=se(e);t&&(n=`${window.location.origin}${t}`)}if(!n||!r)throw Error(`Unable to reach the local assistant for platform identity setup.`);return{gatewayUrl:n,actorToken:r}}async function qt(e,t){let n=nn(e.gatewayUrl,`/v1/assistants/${encodeURIComponent(t)}/platform/status`),r=await fetch(n,{headers:{Accept:`application/json`,Authorization:`Bearer ${e.actorToken}`},credentials:`omit`}).catch(()=>null);if(!r?.ok)return null;let i=await r.json().catch(()=>null);return{assistantId:M(i?.assistantId,i?.assistant_id),baseUrl:M(i?.baseUrl,i?.base_url),organizationId:M(i?.organizationId,i?.organization_id),hasAssistantApiKey:an(i?.hasAssistantApiKey,i?.has_assistant_api_key),clientInstallationId:M(i?.clientInstallationId,i?.client_installation_id)}}async function Jt(e,t){return(e??t.platformOrganizationId??j()??t.organizationId??null)||(await A.getState().fetchOrganizations().catch(()=>{}),j()??t.platformOrganizationId??t.organizationId??null)}async function Yt(e,t,n){return await Zt(`/v1/assistants/self-hosted-local/ensure-registration/`,e,t,n)}async function Xt(e,t,n){return N((await Zt(`/v1/assistants/self-hosted-local/reprovision-api-key/`,e,t,n)).provisioning?.assistant_api_key)}async function Zt(e,t,n,r){let i=new Headers({...await Ft({Accept:`application/json`,"Content-Type":`application/json`},{includeSelfHostedActorToken:!1,organizationId:n})}),a=Ae();if(v()){if(!a)throw Error(`Sign in to Vellum to register this local assistant.`);i.set(zt,`${window.location.protocol}//${window.location.host}`)}let o=await fetch(new URL(e,window.location.origin).toString(),{method:`POST`,headers:i,credentials:v()?`omit`:`same-origin`,body:JSON.stringify({client_installation_id:r,runtime_assistant_id:t.assistantId,client_platform:v()?`macos`:`web`})}).catch(e=>{throw Error(`Unable to reach the platform registration endpoint: ${tn(e)}`)});if(!o.ok){let e=await en(o);throw Error(`Unable to register the local assistant with the platform (HTTP ${o.status})${e?`: ${e}`:`.`}`)}try{return await o.json()}catch(e){throw Error(`Unable to read the platform registration response: ${tn(e)}`)}}async function Qt(e,t){let n=[[`vellum:assistant_api_key`,t.assistantApiKey],[`vellum:platform_assistant_id`,t.platformAssistantId],[`vellum:platform_base_url`,t.platformBaseUrl],[`vellum:platform_organization_id`,t.organizationId],[`vellum:webhook_secret`,t.webhookSecret]];await Promise.all(n.filter(e=>!!e[1]).map(([t,n])=>$t(e,t,n)))}async function $t(e,t,n){let r=await fetch(nn(e.gatewayUrl,`/v1/secrets`),{method:`POST`,headers:{Accept:`application/json`,Authorization:`Bearer ${e.actorToken}`,"Content-Type":`application/json`},credentials:`omit`,body:JSON.stringify({type:`credential`,name:t,value:n})}).catch(e=>{throw Error(`Unable to reach the local assistant while storing ${t}: ${tn(e)}`)});if(!r.ok){let e=await en(r);throw Error(`Unable to store ${t} on the local assistant (HTTP ${r.status})${e?`: ${e}`:`.`}`)}return!0}async function en(e){if((e.headers.get(`content-type`)??``).includes(`application/json`)){let t=await e.json().catch(()=>null),n=t&&typeof t==`object`&&`detail`in t?N(t.detail):null,r=t&&typeof t==`object`&&`code`in t?N(t.code):null;return n&&r?`${n} (${r})`:n||r||JSON.stringify(t)}return(await e.text().catch(()=>``)).slice(0,300)}function tn(e){return e instanceof Error?e.message:String(e)}function nn(e,t){let n=new URL(e);return n.pathname=`${n.pathname.replace(/\/$/,``)}${t}`,n.toString()}function rn(e){return Rt.test(e)}function M(...e){for(let t of e){let e=N(t);if(e)return e}return null}function N(e){return typeof e==`string`&&e.trim()?e.trim():null}function an(...e){for(let t of e)if(typeof t==`boolean`)return t;return null}var on=`.dev`;function sn(e){let t=JSON.parse(e);return typeof t.token==`string`&&typeof t.bundleId==`string`&&typeof t.assistantId==`string`?{token:t.token,bundleId:t.bundleId,assistantId:t.assistantId}:null}var cn=He({key:`vellum:push_registration`,scope:`user`,parse:sn,serialize:JSON.stringify,fallback:null}),ln=!1,un=null,P=null,F=new Set;function dn(e){F.add(e),e.finally(()=>{F.delete(e)})}function fn(){return Ie()&&Ve.getPlatform()===`ios`}function pn(e){return e.endsWith(on)?`development`:`production`}async function mn(e,t){try{let{App:n}=await c(async()=>{let{App:e}=await import(`./esm-D8HhVT3_.js`);return{App:e}},__vite__mapDeps([0,1,2])),{id:r}=await n.getInfo(),i=await we({path:{assistant_id:t},body:{token:e,platform:`ios`,bundle_id:r,apns_environment:pn(r)},throwOnError:!1});if(i.error){s(i.error,{context:`push_registration_upsert`,level:`warning`,bestEffort:!0});return}P={token:e,bundleId:r,assistantId:t},cn.save(P)}catch(e){s(e,{context:`push_registration_upsert`,level:`warning`,bestEffort:!0})}}async function hn(){if(!ln){ln=!0;try{let{PushNotifications:e}=await c(async()=>{let{PushNotifications:e}=await import(`./esm-CmDxdOMx.js`);return{PushNotifications:e}},__vite__mapDeps([3,2]));await e.addListener(`registration`,e=>{let t=un;t&&dn(mn(e.value,t))}),await e.addListener(`registrationError`,e=>{s(e,{context:`push_registration_apns`,level:`warning`})})}catch(e){ln=!1,s(e,{context:`push_registration_listeners`,level:`warning`})}}}async function gn(e){if(fn()){un=e,P&&P.assistantId!==e&&dn(mn(P.token,e));try{let{PushNotifications:e}=await c(async()=>{let{PushNotifications:e}=await import(`./esm-CmDxdOMx.js`);return{PushNotifications:e}},__vite__mapDeps([3,2]));if(await hn(),(await e.requestPermissions()).receive!==`granted`)return;await e.register()}catch(e){s(e,{context:`push_registration_register`,level:`warning`})}}}async function _n(){for(un=null;F.size>0;)await Promise.allSettled([...F]);let e=P??cn.load();if(P=null,cn.remove(),!(!e||!fn()))try{let t=await Ce({path:{assistant_id:e.assistantId,token:e.token},query:{bundle_id:e.bundleId},throwOnError:!1});t.error&&s(t.error,{context:`push_registration_delete`,level:`warning`,bestEffort:!0,extra:{assistantId:e.assistantId,bundleId:e.bundleId}})}catch(e){s(e,{context:`push_registration_delete`,level:`warning`,bestEffort:!0})}}function vn(e){return e}function yn(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return{code:null,message:n};let r=vn(e),i=r[t];if(Array.isArray(i)&&i.length>0){let e=i[0];if(typeof e==`string`)return{code:null,message:e};if(e&&typeof e==`object`&&!Array.isArray(e)){let t=vn(e),r=t.code,i=t.string??t.message;return{code:typeof r==`string`?r:null,message:typeof i==`string`?i:n}}}return typeof r.detail==`string`?{code:null,message:r.detail}:{code:null,message:n}}var bn={too_short:`Must be at least 3 characters.`,too_long:`Must be at most 30 characters.`,invalid_chars:`Use only lowercase letters, digits, hyphens, and underscores.`,leading_underscore:`Cannot start with an underscore.`,trailing_underscore:`Cannot end with an underscore.`,leading_hyphen:`Cannot start with a hyphen.`,trailing_hyphen:`Cannot end with a hyphen.`,all_digits:`Cannot be all digits.`,reserved:`This handle is reserved.`,taken:`This handle is already taken.`};async function xn(){let{data:e,error:t,response:n}=await x.get({url:`/v1/user/me/`,throwOnError:!1});if(xe(n,t,`Failed to load profile.`),!n.ok||!e)throw new Se(n.status,b(t,n,`Failed to load profile.`));return e}var Sn=`Please choose a different handle.`;async function Cn(e){let{data:t,error:n,response:r}=await x.patch({url:`/v1/user/me/`,body:e,throwOnError:!1});if(!r)return{kind:`error`,message:b(n,void 0,`Failed to save profile.`)??`Failed to save profile.`};if(r.ok&&t)return{kind:`ok`,data:t};if(r.status===409){let{message:e}=yn(n,`username`,bn.taken);return{kind:`taken`,message:e}}if(r.status===400){let{code:e,message:t}=yn(n,`username`,Sn);return{kind:`invalid`,code:e,message:t}}return{kind:`error`,message:b(n,r,`Failed to save profile.`)}}async function wn(){let{data:e,error:t,response:n}=await x.get({url:`/v1/user/consent/`,throwOnError:!1});if(xe(n,t,`Failed to load consent.`),!n.ok||!e)throw new Se(n.status,b(t,n,`Failed to load consent.`));return e}async function I(e){await x.put({url:`/v1/user/consent/`,body:e,throwOnError:!0})}async function Tn(e,t){let{data:n,error:r,response:i}=await x.get({url:`/v1/user/username-available/`,query:{username:e},signal:t,throwOnError:!1});if(xe(i,r,`Failed to check handle availability.`),!i.ok||!n)throw new Se(i.status,i.status===429?`Too many checks — try again in a moment.`:b(r,i,`Failed to check handle availability.`));return n}function L(e){i(`diagnosticsReporting`,e)}function En(e,t){let n=Dn(e);n!==null&&t(n);let{shareDiagnostics:r,diagnosticsVersionCurrent:i,hasServerRecord:a}=e;return L(a&&r===!0&&i),n}function Dn(e){let{shareDiagnostics:t,hasServerRecord:n}=e;return t===!1?!1:n&&t===!0?!0:null}var On=a(`shareAnalytics`),kn=a(`shareDiagnostics`),An=u()(t=>({shareAnalytics:r(On,!0),shareDiagnostics:r(kn,!0),tosAccepted:!1,privacyConsent:!1,analyticsConsentCurrent:!1,diagnosticsConsentCurrent:!1,consentHydrated:!1,setShareAnalytics:n=>{t({shareAnalytics:n}),e(On,n)},setShareDiagnostics:n=>{t({shareDiagnostics:n}),e(kn,n)},setTosAccepted:e=>{t({tosAccepted:e})},setPrivacyConsent:e=>{t({privacyConsent:e})},setAnalyticsConsentCurrent:e=>{t({analyticsConsentCurrent:e})},setDiagnosticsConsentCurrent:e=>{t({diagnosticsConsentCurrent:e})},setConsentHydrated:e=>{t({consentHydrated:e})}})),R=d(An),jn=new Map([[On,`shareAnalytics`],[kn,`shareDiagnostics`]]),Mn={shareAnalytics:!0,shareDiagnostics:!0};for(let[e,n]of jn)t(e,()=>{let t=r(e,Mn[n]??!1);An.setState({[n]:t})});var z=`2026-06-08`,B=`2026-06-22`,V=`2026-06-18`,H=`2026-06-18`,Nn=`2026-06-08`,Pn={tos:z,privacy:B,share_analytics:V,share_diagnostics:H};function U(e,t){return`device:consent:${e}:v${Pn[e]}:${t}`}function Fn(e){return`device:consent:ai:v${Nn}:${e}`}function In(e){if(typeof window>`u`||!e)return{tos:!1,privacy:!1,analyticsCurrent:!1,diagnosticsCurrent:!1};try{let t=r(U(`share_analytics`,e),!1),i=r(U(`share_diagnostics`,e),!1),a=r(U(`tos`,e),!1),o=r(U(`privacy`,e),!1);if(r(Fn(e),!1)&&n(Fn(e)),a||o)return{tos:a,privacy:o,analyticsCurrent:t,diagnosticsCurrent:i};let s=r(`vellum:onboarding:tosAccepted`,!1),c=r(`vellum:onboarding:aiDataConsent`,!1);return s||c?(Ln(e,s,!1),{tos:s,privacy:!1,analyticsCurrent:t,diagnosticsCurrent:i}):{tos:!1,privacy:!1,analyticsCurrent:t,diagnosticsCurrent:i}}catch{return{tos:!1,privacy:!1,analyticsCurrent:!1,diagnosticsCurrent:!1}}}function Ln(t,n,r){if(!(typeof window>`u`||!t))try{e(U(`tos`,t),n),e(U(`privacy`,t),r)}catch{}}function W(t,n){if(!(typeof window>`u`||!t))try{n.analyticsCurrent!==void 0&&e(U(`share_analytics`,t),n.analyticsCurrent),n.diagnosticsCurrent!==void 0&&e(U(`share_diagnostics`,t),n.diagnosticsCurrent)}catch{}}function Rn(e){if(n(`vellum:onboarding:tosAccepted`),n(`vellum:onboarding:aiDataConsent`),n(`vellum:onboarding:selectedVersion`),!(typeof window>`u`||!e))try{n(U(`tos`,e)),n(U(`privacy`,e)),n(Fn(e)),n(U(`share_analytics`,e)),n(U(`share_diagnostics`,e))}catch{}}function G(e,t){return e>=t}function zn(e){if(!e)return{tos:!1,privacy:!1,shareAnalytics:null,shareDiagnostics:null,analyticsCurrent:!1,diagnosticsCurrent:!1,hasServerRecord:!1};let t=!!e.tos_accepted_version||!!e.privacy_policy_accepted_version||!!e.ai_data_sharing_accepted_version||!!e.share_analytics_accepted_version||!!e.share_diagnostics_accepted_version||e.share_analytics===!1||e.share_diagnostics===!1;return{tos:G(e.tos_accepted_version,z),privacy:G(e.privacy_policy_accepted_version,`2026-06-22`)&&G(e.ai_data_sharing_accepted_version,`2026-06-22`),shareAnalytics:e.share_analytics,shareDiagnostics:e.share_diagnostics,analyticsCurrent:G(e.share_analytics_accepted_version,V),diagnosticsCurrent:G(e.share_diagnostics_accepted_version,H),hasServerRecord:t}}function Bn(e){let t=R.getState();t.setTosAccepted(e.tos),t.setPrivacyConsent(e.privacy),t.setShareAnalytics(e.shareAnalytics),t.setShareDiagnostics(e.shareDiagnostics),t.setAnalyticsConsentCurrent(!0),t.setDiagnosticsConsentCurrent(!0),t.setConsentHydrated(!0),L(e.shareDiagnostics),Ln(e.userId,e.tos,e.privacy),W(e.userId,{analyticsCurrent:!0,diagnosticsCurrent:!0}),e.hasPlatformSession&&I({tos_accepted_version:e.tos?z:``,privacy_policy_accepted_version:e.privacy?B:``,ai_data_sharing_accepted_version:e.privacy?B:``,share_analytics:e.shareAnalytics,share_diagnostics:e.shareDiagnostics,share_analytics_accepted_version:V,share_diagnostics_accepted_version:H}).catch(()=>{})}function Vn(e,t,n){let r=R.getState(),{userId:a,hasPlatformSession:o}=n;e===`share_analytics`?(r.setShareAnalytics(t),i(`shareAnalytics`,t),o&&(r.setAnalyticsConsentCurrent(!0),W(a,{analyticsCurrent:!0}))):(r.setShareDiagnostics(t),i(`shareDiagnostics`,t),o?(r.setDiagnosticsConsentCurrent(!0),L(t),W(a,{diagnosticsCurrent:!0})):L(!1)),o&&I({[e]:t,[`${e}_accepted_version`]:Pn[e]}).catch(()=>{})}var Hn=`vellum:`,Un=[`onboarding.`,`voice:`,`gw:`,`ff:client:`,`local:`,`integrations.`,`vellumDebug.`,`vellum_`],Wn=new Set([`vellum_theme`,`vellum_share_analytics`,`vellum_share_diagnostics`,`vellum_biometric_enabled`,`vellum_llm_log_retention`,`vellum_timezone`,`vellum_media_embeds_enabled`,`vellum_media_embed_domains`,`onboarding.lastUserId`]);function Gn(e){return e.startsWith(Hn)?!0:Wn.has(e)?!1:Un.some(t=>e.startsWith(t))}function Kn(){try{sessionStorage.clear()}catch{}try{let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&Gn(n)&&e.push(n)}e.forEach(e=>localStorage.removeItem(e))}catch{}}function qn(e){return e?.id??e?.email??e?.username??null}function K(e){return e?{kind:`platform`,id:qn(e),username:e.username??null,email:e.email??null,isStaff:e.is_staff??!1,firstName:e.first_name??``,lastName:e.last_name??``}:null}var Jn=null,q=null,Yn=!1,Xn={kind:`local`,id:`gateway-local`,username:`local`,email:null,isStaff:!1,firstName:`Local`,lastName:`User`},J=e=>(wt(e),{sessionStatus:`authenticated`,user:e,platformSession:`present`,platformSessionRestoredOffline:!1}),Y=()=>({sessionStatus:`authenticated`,user:Xn}),X=()=>({sessionStatus:`unauthenticated`,user:null,platformSession:`absent`}),Z=e=>e===null||!e.ok&&!_t(e);async function Zn(e){if(!Ae())return!1;let t=Tt();return t?(await Q(t.id),e({...J(t),platformSessionRestoredOffline:!0}),!0):!1}function Qn(e){(!e||Jn&&Jn!==e)&&Mt(),Jn=e}function $n(){q?.postMessage(`auth-changed`)}function er(e){return{...e.tos?{tos_accepted_version:z}:{},...e.privacy?{privacy_policy_accepted_version:B,ai_data_sharing_accepted_version:B}:{},...e.analytics?{share_analytics_accepted_version:V,...e.shareValues?{share_analytics:e.shareValues.analytics}:{}}:{},...e.diagnostics?{share_diagnostics_accepted_version:H,...e.shareValues?{share_diagnostics:e.shareValues.diagnostics}:{}}:{}}}async function Q(e){if(e)try{let t=zn(await wn()),n=R.getState();t.hasServerRecord&&t.shareAnalytics!==null&&n.setShareAnalytics(t.shareAnalytics),En({shareDiagnostics:t.shareDiagnostics,diagnosticsVersionCurrent:t.diagnosticsCurrent,hasServerRecord:t.hasServerRecord},n.setShareDiagnostics);let r=t.tos,i=t.privacy,a=t.analyticsCurrent,o=t.diagnosticsCurrent;if(!t.hasServerRecord){let t=In(e);a=t.analyticsCurrent,o=t.diagnosticsCurrent,L(n.shareDiagnostics&&o),t.tos&&t.privacy&&(r=!0,i=!0,I(er({tos:!0,privacy:!0,analytics:a,diagnostics:o,shareValues:{analytics:n.shareAnalytics,diagnostics:n.shareDiagnostics}})).catch(()=>{}))}else if(!r||!i||!a||!o){let t=In(e),n=!r&&t.tos,s=!i&&t.privacy,c=!a&&t.analyticsCurrent,l=!o&&t.diagnosticsCurrent;n&&(r=!0),s&&(i=!0),c&&(a=!0),l&&(o=!0,L(R.getState().shareDiagnostics&&o)),(n||s||c||l)&&I(er({tos:n,privacy:s,analytics:c,diagnostics:l})).catch(()=>{})}n.setTosAccepted(r),n.setPrivacyConsent(i),n.setAnalyticsConsentCurrent(a),n.setDiagnosticsConsentCurrent(o),Ln(e,r,i),W(e,{analyticsCurrent:a,diagnosticsCurrent:o}),Qn(e),n.setConsentHydrated(!0);return}catch{}let t=In(e),n=R.getState();n.setTosAccepted(t.tos),n.setPrivacyConsent(t.privacy),n.setAnalyticsConsentCurrent(t.analyticsCurrent),n.setDiagnosticsConsentCurrent(t.diagnosticsCurrent),Qn(e),n.setConsentHydrated(!0)}var tr=0;Promise.resolve();function nr(e,t={}){let n=++tr,r=()=>n!==tr;C().then(async n=>{if(!r())if(n.ok&&n.data.user){let i=K(n.data.user),a=t.setUserOnSuccess?{user:i}:{};if(t.setUserOnSuccess&&wt(i),h()){let e=!1,t=()=>!e&&!r();try{await Promise.race([(async()=>{await A.getState().fetchOrganizations();let e=await S();t()&&e.ok&&await ie(e.data,A.getState().currentOrganizationId??void 0,t)})(),new Promise((t,n)=>setTimeout(()=>{e=!0,n(Error(`sync timeout`))},3e3))])}catch{}}if(r())return;e({platformSession:`present`,platformSessionRestoredOffline:!1,...a}),Ht()}else t.clearOnFailure&&e({platformSession:`absent`})}).catch(()=>{r()||t.clearOnFailure&&e({platformSession:`absent`})}).finally(()=>{r()||e(e=>e.platformSession===`unknown`?{platformSession:`absent`}:{})})}function rr(e,t){!h()||f()||fe().length>0?nr(e,t):e({platformSession:`absent`})}async function ir(){try{if(await Be())return!0}catch{}return me()!==null}var $=d(u()((e,t)=>({sessionStatus:`initializing`,user:null,platformSession:`unknown`,platformSessionRestoredOffline:!1,initSession:async()=>{if(g()){await ir()?e({...Y(),platformSession:`absent`}):e(X());return}if(f()){try{await ae(),e(Y())}catch{e({sessionStatus:`unauthenticated`,user:null})}rr(e);return}if(h()&&!f()){if(fe().length>0){let t=null;try{if(t=await C(),t.ok&&t.data.user){let n=K(t.data.user);await Q(n?.id??null);try{await A.getState().fetchOrganizations();let e=await S();e.ok&&await ie(e.data,A.getState().currentOrganizationId??void 0)}catch{}e(J(n));return}}catch{}if(Z(t)){if(await Zn(e))return}else k();e(X());return}e(Y()),Yn?e({platformSession:`absent`}):nr(e,{setUserOnSuccess:!0}),Yn=!1;return}let t=null;try{if(t=await C(),t.ok&&t.data.user){let n=K(t.data.user);await Q(n?.id??null);try{await A.getState().fetchOrganizations();let e=await S();e.ok?y.getState().setFromApi(e.data):y.getState().markHydrated()}catch{y.getState().markHydrated()}e(J(n));return}}catch(e){console.error(`auth.initSession failed`,e)}if(!(Z(t)&&await Zn(e))){if(Ie()&&Ne())try{let t=await ke();if(t){Pe(t),await Me();let n=await C();if(n.ok&&n.data.user){let t=K(n.data.user);await Q(t?.id??null);try{await A.getState().fetchOrganizations();let e=await S();e.ok?y.getState().setFromApi(e.data):y.getState().markHydrated()}catch{y.getState().markHydrated()}e(J(t));return}}}catch(e){console.warn(`auth.initSession biometric recovery failed`,e)}await Q(null),Z(t)||k(),e(X())}},connectLocalAssistant:async n=>{await _e(pe().find(e=>e.assistantId===n)),await O(n),e(Y()),await D.checkAssistant(),ht(t().platformSession,t().platformSessionRestoredOffline)&&Ht(n),rr(e)},connectPlatformAssistant:async t=>{await O(t);let n=await C();if(!n.ok||!n.data.user)throw Error(`Platform authentication required`);let r=K(n.data.user);await Q(r?.id??null),await A.getState().fetchOrganizations(),e(J(r))},refreshSession:async()=>{if(g())return await ir()?(e({...Y(),platformSession:`absent`}),!0):(e(X()),!1);if(_()){try{await de(ce()),e({sessionStatus:`authenticated`})}catch{return e(X()),!1}return rr(e,{clearOnFailure:!0}),!0}let n=null;try{if(n=await C(),n.ok&&n.data.user){let t=K(n.data.user);if(await Q(t?.id??null),h())try{await A.getState().fetchOrganizations();let e=await S();e.ok&&await ie(e.data,A.getState().currentOrganizationId??void 0)}catch{}return e(J(t)),!0}}catch(e){console.warn(`auth.refreshSession failed`,e)}if(Z(n))return T(t().sessionStatus);if(f()){let n=T(t().sessionStatus);return n&&(k(),e({...Y(),platformSession:`absent`})),n}return k(),await Q(null),e(X()),!1},logout:async()=>{if(_()){D.resetForLogout(),await O(null),ge(),Mt(),Kn(),e(X()),$n();return}Yn=!0,await _n();try{await Re()}finally{v()&&await window.vellum?.auth?.signOut?.(),h()&&!v()&&await ve(),Fe(),Mt(),Kn(),D.resetForLogout(),await O(null),e(X()),$n()}}}))),ar=()=>T($.use.sessionStatus()),or=()=>!mt($.use.sessionStatus()),sr=()=>E($.use.platformSession()),cr=()=>ht($.use.platformSession(),$.use.platformSessionRestoredOffline());function lr(){let{refreshSession:e}=$.getState(),t=[],n=()=>e().catch(e=>console.warn(`auth.refreshSession failed`,e)),r=Oe(`app.resume`,()=>{je()||n()});return t.push(r),typeof BroadcastChannel<`u`&&(q=new BroadcastChannel(`auth`),q.onmessage=()=>{Kn(),window.location.reload()},t.push(()=>{q?.close(),q=null})),()=>t.forEach(e=>e())}export{D as A,Xe as B,Vt as C,A as D,Nt as E,pt as F,Ge as H,ut as I,Qe as L,T as M,ht as N,St as O,mt as P,$e as R,Ht as S,j as T,w as U,Ke as V,wn as _,ar as a,yn as b,z as c,Bn as d,Vn as f,Tn as g,bn as h,sr as i,E as j,O as k,Rn as l,En as m,$ as n,or as o,R as p,cr as r,B as s,lr as t,zn as u,xn as v,Lt as w,gn as x,Cn as y,Ye as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-8raDoxFL.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-D5f7kt80.js";import{t as a}from"./detail-shell-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-8raDoxFL.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-D5f7kt80.js";import{t as a}from"./detail-shell-BT0of_Rw.js";import"./src-CiGJv63_.js";import{Bt as o,Ht as s,Ut as c,Vt as l,lt as u,ut as d}from"./index-BFy5Tyub.js";import{t as f}from"./status-badge-pill-DWywzjvD.js";import{t as p}from"./detail-panel-stop-button-2SS8_syR.js";import{CodeBlock as m,SectionLabel as h}from"./tool-detail-panel-Br8OpeSP.js";var g=e(n(),1),_=r();function v({status:e}){return(0,_.jsx)(f,{color:o(e),label:l(e)})}function y({entry:e,onClose:n}){let r=c(e.status),o=!r,l=o&&e.output!==void 0&&e.output!==``,f=o&&e.exitCode!=null,[y,b]=(0,g.useState)(!1),x=(0,g.useCallback)(()=>{b(!0),u(e.id).catch(e=>{b(!1),t(e,{context:`BackgroundTaskDetailPanel.stop`})})},[e.id]);return(0,_.jsxs)(a,{Glyph:d(e.toolName),title:s(e.status),headerTrailing:(0,_.jsx)(v,{status:e.status}),headerActions:r?(0,_.jsx)(p,{onStop:x,ariaLabel:`Stop command`,disabled:y}):void 0,closeVariant:`outlined`,closeLabel:`Close task detail`,onClose:n,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(h,{children:`Command`}),(0,_.jsx)(m,{text:e.command})]}),l&&(0,_.jsxs)(`div`,{className:`mt-5`,children:[(0,_.jsx)(h,{children:`Output`}),(0,_.jsx)(m,{text:e.output})]}),f&&(0,_.jsxs)(i,{variant:`body-small-default`,as:`p`,className:`mt-2 text-[var(--content-tertiary)]`,children:[`Exit code: `,e.exitCode]})]})}export{y as BackgroundTaskDetailPanel};
|