@vellumai/web 0.10.9-dev.202607161831.8c8f521 → 0.10.9-dev.202607162126.2d253b7

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.
Files changed (87) hide show
  1. package/dist/assets/{account-page-CCZpTHv1.js → account-page-Dvn91k1X.js} +1 -1
  2. package/dist/assets/{acp-run-detail-panel-_lrMbea8.js → acp-run-detail-panel-Z31n86e4.js} +1 -1
  3. package/dist/assets/{activity-steps-panel-BKxs_GpV.js → activity-steps-panel-4k-GWBPN.js} +1 -1
  4. package/dist/assets/{ai-page-DAUTMyhs.js → ai-page-DQC2nlRD.js} +1 -1
  5. package/dist/assets/{api-key-screen-I0bww5Lq.js → api-key-screen-E0VRb6_J.js} +1 -1
  6. package/dist/assets/{background-task-detail-panel-9D4qDvVk.js → background-task-detail-panel-BD0_vWCR.js} +1 -1
  7. package/dist/assets/{billing-page-BIXRwKAk.js → billing-page-D8e1Y-L4.js} +1 -1
  8. package/dist/assets/{bookmarks-page-CcR6dcce.js → bookmarks-page-qBq2E1Nq.js} +1 -1
  9. package/dist/assets/{channels-page-route-BW5Er71R.js → channels-page-route-D8JLt4Hr.js} +1 -1
  10. package/dist/assets/{command-palette-C_DIgz5Q.js → command-palette-Dyuq3z8h.js} +1 -1
  11. package/dist/assets/{command-palette-window-page-gW0wAaqm.js → command-palette-window-page-CTWIp-eS.js} +1 -1
  12. package/dist/assets/{community-page-DmSpoKI5.js → community-page-C8WmDVET.js} +1 -1
  13. package/dist/assets/{contacts-page-route-B5ihu406.js → contacts-page-route-BH-d1Gx7.js} +1 -1
  14. package/dist/assets/{credentials-page-BCwpTieE.js → credentials-page-FvDtHanb.js} +1 -1
  15. package/dist/assets/{debug-page-CxXAWEQK.js → debug-page-D4Sca6Rg.js} +1 -1
  16. package/dist/assets/{deploy-dialogs-B3xWKJ80.js → deploy-dialogs-VIsg83qz.js} +1 -1
  17. package/dist/assets/{detail-panel-stop-button-D3RATpA-.js → detail-panel-stop-button-Dt2UIyNB.js} +1 -1
  18. package/dist/assets/{developer-page-CO7ynw7D.js → developer-page-cnI-eUjv.js} +1 -1
  19. package/dist/assets/{dictation-overlay-page-BRyRajlm.js → dictation-overlay-page-DSLUFhF9.js} +1 -1
  20. package/dist/assets/{document-viewer-page-wGxEjJ6s.js → document-viewer-page-CqZ1exEy.js} +1 -1
  21. package/dist/assets/{emails-page-Bj3jGaiH.js → emails-page-BWgk2Z-k.js} +1 -1
  22. package/dist/assets/general-page-CXZbi2Zb.js +1 -0
  23. package/dist/assets/{hatching-screen-BeThiAoY.js → hatching-screen-8QQ5Mr8W.js} +1 -1
  24. package/dist/assets/{home-page-route-DcRfMT7t.js → home-page-route-e6YKZPOA.js} +1 -1
  25. package/dist/assets/{hosting-screen-CfNJYjlS.js → hosting-screen-sIKnFlur.js} +1 -1
  26. package/dist/assets/identity-page-route-Dg5W344E.js +7 -0
  27. package/dist/assets/{index-DglwxsvA.js → index-CFQIPKjY.js} +8 -8
  28. package/dist/assets/{inspect-page-CfY2ujI9.js → inspect-page-BuyIWBj-.js} +1 -1
  29. package/dist/assets/{integrations-page-tzKO6Tqd.js → integrations-page-Bbrw2Uh7.js} +1 -1
  30. package/dist/assets/{intelligence-layout-DmOQmOQL.js → intelligence-layout-BsK19MtR.js} +1 -1
  31. package/dist/assets/{latest-assistant-text-PVDAChQ2.js → latest-assistant-text-Qj7hDn1c.js} +1 -1
  32. package/dist/assets/{library-detail-page-D1qABwGL.js → library-detail-page-D-3NxcfG.js} +1 -1
  33. package/dist/assets/{library-page-Cc3ZzzQX.js → library-page-DJL8fVvG.js} +1 -1
  34. package/dist/assets/{logout-page-B6cf9X3l.js → logout-page-BxeOwXvN.js} +1 -1
  35. package/dist/assets/{logs-layout-BktGpFvY.js → logs-layout-ezxror9r.js} +1 -1
  36. package/dist/assets/{memory-page-route-CAcOOaPn.js → memory-page-route-BjJp6GG6.js} +1 -1
  37. package/dist/assets/{memory-router-playground-page-Butejuyj.js → memory-router-playground-page-kmzI1jaf.js} +1 -1
  38. package/dist/assets/{messages-Bh85VLCd.js → messages-DWh9qzBE.js} +1 -1
  39. package/dist/assets/{mobile-sidebar-drawer-Cp2poD2Q.js → mobile-sidebar-drawer-D_oNDC56.js} +1 -1
  40. package/dist/assets/{notifications-page-U2jH4rfU.js → notifications-page-DzLRSw-u.js} +1 -1
  41. package/dist/assets/{oauth-complete-page-C5fVZrbG.js → oauth-complete-page-rHhstJnQ.js} +1 -1
  42. package/dist/assets/{oauth-popup-complete-page-CU1OWA7c.js → oauth-popup-complete-page-Ad6o_mHW.js} +1 -1
  43. package/dist/assets/{pairing-page-AOzsN6ID.js → pairing-page-gVKFhrvD.js} +1 -1
  44. package/dist/assets/{personality-page-DAlsAWJR.js → personality-page-CXeTTR9o.js} +1 -1
  45. package/dist/assets/{plugins-page-CpdP0Jsz.js → plugins-page-DuMlB4ii.js} +1 -1
  46. package/dist/assets/{privacy-page-KhIuDaMZ.js → privacy-page-pCFzcJzc.js} +1 -1
  47. package/dist/assets/{privacy-screen-D4cNMe58.js → privacy-screen-6ZLxuz0S.js} +1 -1
  48. package/dist/assets/{provider-callback-page-qq15ztlr.js → provider-callback-page-Cqt0UHpc.js} +1 -1
  49. package/dist/assets/{quick-input-page-joZ1snmq.js → quick-input-page-DIFKuIc3.js} +1 -1
  50. package/dist/assets/{research-mock-page-D45wW9I_.js → research-mock-page-bxXiu2Bj.js} +1 -1
  51. package/dist/assets/research-onboarding-route-Dc93dQDk.js +43 -0
  52. package/dist/assets/{review-terms-screen-D48F_rvC.js → review-terms-screen-CIWKcVhq.js} +1 -1
  53. package/dist/assets/{risk-C5kUSSLu.js → risk-BtPQZGh-.js} +1 -1
  54. package/dist/assets/{schedules-page-B4wPERNe.js → schedules-page-DtTKGidy.js} +1 -1
  55. package/dist/assets/{select-assistant-screen-Ds8S0lHD.js → select-assistant-screen-hWhI5kZ_.js} +1 -1
  56. package/dist/assets/{settings-layout-TGkB8Eny.js → settings-layout-CMEu1Mzb.js} +1 -1
  57. package/dist/assets/{share-feedback-modal-409NP3X1.js → share-feedback-modal-CamJi5dX.js} +1 -1
  58. package/dist/assets/{sidebar-tree-Cs6cFnG2.js → sidebar-tree-C_TcfNts.js} +1 -1
  59. package/dist/assets/{signup-page-E1B2kmMT.js → signup-page-CrZg16Yg.js} +1 -1
  60. package/dist/assets/{site-favicon-Bsh4glAL.js → site-favicon-CEvSq5Ys.js} +1 -1
  61. package/dist/assets/{skill-detail-page-jMIyfUs_.js → skill-detail-page-DK14Cp9u.js} +1 -1
  62. package/dist/assets/{skill-detail-panel-7sTZP8ra.js → skill-detail-panel-B1mM9MZQ.js} +1 -1
  63. package/dist/assets/{skills-page-D3OTDTES.js → skills-page-CyL4OD_Q.js} +1 -1
  64. package/dist/assets/{start-screen-ByKXdi-m.js → start-screen-CZ7j59Pl.js} +1 -1
  65. package/dist/assets/{subagent-detail-panel-jSEOh5tT.js → subagent-detail-panel-CTJjZGP8.js} +1 -1
  66. package/dist/assets/{system-events-page--AiaEwyg.js → system-events-page-DtaGaAoh.js} +1 -1
  67. package/dist/assets/{theme-stage-page-nI4ojIYO.js → theme-stage-page-Xj_RDfrS.js} +1 -1
  68. package/dist/assets/{tiptap-document-editor-CpP7BiuD.js → tiptap-document-editor-C0g4DNLq.js} +1 -1
  69. package/dist/assets/{tool-detail-panel-hAWze9O3.js → tool-detail-panel-CKKbVoIf.js} +1 -1
  70. package/dist/assets/{upgrade-cancel-page-DkyUk5eu.js → upgrade-cancel-page-Chq89ltm.js} +1 -1
  71. package/dist/assets/{upgrade-success-page-Bm_OLV34.js → upgrade-success-page-uZXxxn_J.js} +1 -1
  72. package/dist/assets/{use-assistant-identity-details-CmVqcz5B.js → use-assistant-identity-details-BDGF_Qun.js} +1 -1
  73. package/dist/assets/{use-edge-swipe-back-ChhW2Yn_.js → use-edge-swipe-back-D56kIRTP.js} +1 -1
  74. package/dist/assets/{use-invite-link-dialog-CqDYf0rC.js → use-invite-link-dialog-l_72sgiY.js} +1 -1
  75. package/dist/assets/{use-skill-actions-T8UKexNG.js → use-skill-actions-D1b_YIKn.js} +1 -1
  76. package/dist/assets/{use-skill-categories-CURWXK_d.js → use-skill-categories-Bpashk58.js} +1 -1
  77. package/dist/assets/{use-skill-detail-files-Ddn5JjrQ.js → use-skill-detail-files-8u7UCzno.js} +1 -1
  78. package/dist/assets/{voice-page-CXudm9dD.js → voice-page-BHZza2d9.js} +1 -1
  79. package/dist/assets/{weather-forecast-display-CtBYS3RS.js → weather-forecast-display-Cmq5dnFc.js} +1 -1
  80. package/dist/assets/{welcome-screen-CwMgCfoH.js → welcome-screen-Crxq3jKT.js} +1 -1
  81. package/dist/assets/{workflow-detail-panel-Dna_IU6V.js → workflow-detail-panel-Bf0TdDD-.js} +1 -1
  82. package/dist/assets/{workspace-page-ClmjoyUi.js → workspace-page-DQ5QNkGq.js} +1 -1
  83. package/dist/index.html +4 -4
  84. package/package.json +1 -1
  85. package/dist/assets/general-page-laeNeI8F.js +0 -1
  86. package/dist/assets/identity-page-route-C-K0OkH_.js +0 -7
  87. package/dist/assets/research-onboarding-route-DJiO0r-Z.js +0 -42
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./chunk-5KNZJZUH-SU6Q_tDT.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{a as i,n as a,o}from"./auth-store-Vekcn1rg.js";import{f as s}from"./native-biometric-D5yxuTSN.js";import{c}from"./routes-GPGveWZ8.js";import{n as l,t as u}from"./login-flow-Btlym91C.js";import{Nr as d}from"./index-DglwxsvA.js";import{r as f,t as p}from"./account-shell-CMUnYZ1B.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
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./chunk-5KNZJZUH-SU6Q_tDT.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{a as i,n as a,o}from"./auth-store-Vekcn1rg.js";import{f as s}from"./native-biometric-D5yxuTSN.js";import{c}from"./routes-GPGveWZ8.js";import{n as l,t as u}from"./login-flow-Btlym91C.js";import{Nr as d}from"./index-CFQIPKjY.js";import{r as f,t as p}from"./account-shell-CMUnYZ1B.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,4 +1,4 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Dhiismgm.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-BQVYX8n_.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{t as a}from"./typography-Cqi8q9o7.js";import{t as o}from"./createLucideIcon-Bjb-Kuq7.js";import{t as s}from"./arrow-left-C2re-gYj.js";import{t as c}from"./brain-Ci5ws6Wl.js";import{t as l}from"./chevron-down-DwIPfcCg.js";import{t as u}from"./chevron-right-DDgSinGu.js";import{t as d}from"./circle-check-DWe3QGcN.js";import{w as f}from"./menu-B672pBEP.js";import{t as p}from"./code-D1zl7aOd.js";import{t as m}from"./file-text-DA128T4K.js";import{t as h}from"./globe-inD5tOKN.js";import{t as g}from"./repeat-BRYsTqh_.js";import{t as _}from"./triangle-alert-CnjNKhNx.js";import{t as v}from"./x-BYcSiJRX.js";import"./src-clcV9W6_.js";import{t as y}from"./tag-D0AE0-aA.js";import{t as b}from"./chat-markdown-message-BEx5IwnO.js";import{t as x}from"./three-dot-indicator-DNuHHwtA.js";import{Bi as S,Ft as C,Ia as w,It as T,Ji as ee,Lt as te,Rt as E,Ua as ne,Ui as re,Yi as ie,_t as ae,gt as oe,pa as D,vt as se,zi as ce}from"./index-DglwxsvA.js";import{t as le}from"./status-badge-pill-0N6rTEBg.js";var ue=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`}]]),de=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`}]]),O=e(n(),1),k=``;function A(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 fe(e){return(e.messageId?.startsWith(`local-marker-`)??!1)||(e.content?.startsWith(`↻ Steering: `)??!1)}function j(e){let t=e??``;return t.startsWith(`↻ Steering: `)?t.slice(C.length):t}function M(e){let t=e[e.length-1];t&&(t.kind===`agent`||t.kind===`thinking`)&&!t.isComplete&&(e[e.length-1]={...t,isComplete:!0})}function N(e,t){if(t.updateType===`agent_message_chunk`&&fe(t)){M(e),e.push({kind:`user`,id:t.messageId??`steer-${e.length}`,content:j(t.content)});return}switch(t.updateType){case`user_message_chunk`:{let n=t.messageId??k,r=j(t.content),i=e[e.length-1];i&&i.kind===`user`&&i.id===n?e[e.length-1]={...i,content:i.content+r}:(M(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??k,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!==k&&r&&r.kind===`agent`&&r.messageId===k&&!r.isComplete&&r.content===(t.content??``)){e[e.length-1]={...r,messageId:n};return}M(e),e.push({kind:`agent`,messageId:n,content:t.content??``,isComplete:!1});return}case`agent_thought_chunk`:{let n=t.messageId??k,r=e[e.length-1];if(r&&r.kind===`thinking`&&r.messageId===n){e[e.length-1]={...r,content:r.content+(t.content??``)};return}M(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;M(e),e.push({kind:`tool`,toolCallId:n,title:t.toolTitle??``,toolKind:t.toolKind,status:A(t.toolStatus,`running`),content:t.content,locations:P(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=P(t);e[r]={...i,title:t.toolTitle??i.title,toolKind:t.toolKind??i.toolKind,status:A(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=pe(t.content);if(n===null)return;let r=e.findIndex(e=>e.kind===`plan`),i={kind:`plan`,entries:n};r===-1?(M(e),e.push(i)):e[r]=i;return}}}function P(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 pe(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 me(e){let t=[];for(let n of e)N(t,n);return t}function F(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 I(){let e=null,t=[];function n(n){return t=me(n),e=n,t}function r(r){let i=F(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++)N(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,O.useRef)(null);return t.current??=I(),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(`
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Dhiismgm.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./button-BQVYX8n_.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{t as a}from"./typography-Cqi8q9o7.js";import{t as o}from"./createLucideIcon-Bjb-Kuq7.js";import{t as s}from"./arrow-left-C2re-gYj.js";import{t as c}from"./brain-Ci5ws6Wl.js";import{t as l}from"./chevron-down-DwIPfcCg.js";import{t as u}from"./chevron-right-DDgSinGu.js";import{t as d}from"./circle-check-DWe3QGcN.js";import{w as f}from"./menu-B672pBEP.js";import{t as p}from"./code-D1zl7aOd.js";import{t as m}from"./file-text-DA128T4K.js";import{t as h}from"./globe-inD5tOKN.js";import{t as g}from"./repeat-BRYsTqh_.js";import{t as _}from"./triangle-alert-CnjNKhNx.js";import{t as v}from"./x-BYcSiJRX.js";import"./src-clcV9W6_.js";import{t as y}from"./tag-D0AE0-aA.js";import{t as b}from"./chat-markdown-message-BEx5IwnO.js";import{t as x}from"./three-dot-indicator-DNuHHwtA.js";import{Bi as S,Ft as C,Ia as w,It as T,Ji as ee,Lt as te,Rt as E,Ua as ne,Ui as re,Yi as ie,_t as ae,gt as oe,pa as D,vt as se,zi as ce}from"./index-CFQIPKjY.js";import{t as le}from"./status-badge-pill-0N6rTEBg.js";var ue=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`}]]),de=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`}]]),O=e(n(),1),k=``;function A(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 fe(e){return(e.messageId?.startsWith(`local-marker-`)??!1)||(e.content?.startsWith(`↻ Steering: `)??!1)}function j(e){let t=e??``;return t.startsWith(`↻ Steering: `)?t.slice(C.length):t}function M(e){let t=e[e.length-1];t&&(t.kind===`agent`||t.kind===`thinking`)&&!t.isComplete&&(e[e.length-1]={...t,isComplete:!0})}function N(e,t){if(t.updateType===`agent_message_chunk`&&fe(t)){M(e),e.push({kind:`user`,id:t.messageId??`steer-${e.length}`,content:j(t.content)});return}switch(t.updateType){case`user_message_chunk`:{let n=t.messageId??k,r=j(t.content),i=e[e.length-1];i&&i.kind===`user`&&i.id===n?e[e.length-1]={...i,content:i.content+r}:(M(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??k,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!==k&&r&&r.kind===`agent`&&r.messageId===k&&!r.isComplete&&r.content===(t.content??``)){e[e.length-1]={...r,messageId:n};return}M(e),e.push({kind:`agent`,messageId:n,content:t.content??``,isComplete:!1});return}case`agent_thought_chunk`:{let n=t.messageId??k,r=e[e.length-1];if(r&&r.kind===`thinking`&&r.messageId===n){e[e.length-1]={...r,content:r.content+(t.content??``)};return}M(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;M(e),e.push({kind:`tool`,toolCallId:n,title:t.toolTitle??``,toolKind:t.toolKind,status:A(t.toolStatus,`running`),content:t.content,locations:P(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=P(t);e[r]={...i,title:t.toolTitle??i.title,toolKind:t.toolKind??i.toolKind,status:A(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=pe(t.content);if(n===null)return;let r=e.findIndex(e=>e.kind===`plan`),i={kind:`plan`,entries:n};r===-1?(M(e),e.push(i)):e[r]=i;return}}}function P(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 pe(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 me(e){let t=[];for(let n of e)N(t,n);return t}function F(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 I(){let e=null,t=[];function n(n){return t=me(n),e=n,t}function r(r){let i=F(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++)N(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,O.useRef)(null);return t.current??=I(),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
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)(b,{content:e}),!t&&(0,W.jsx)(x,{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)(D,{"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(E(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)(w,{"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,O.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)(x,{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)(b,{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:ue,delete:ce,move:de,search:ie,execute:S,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,O.useState)(!1),s=(0,O.useMemo)(()=>R(e.content),[e.content]),c=(0,O.useMemo)(()=>V(e.content),[e.content]),d=(0,O.useMemo)(()=>c.split(`
3
3
  `).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith("```"))||`View output`,[c]),f=(0,O.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),C=H(e.rawOutput),w=b!==void 0||C!==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)(x,{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)(S,{"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)]`})]}),w&&(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`}),C!==void 0&&(0,W.jsx)(K,{label:`Raw output`,value:C,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)(b,{content:V(e),hardLineBreaks:!0})})}var Y=2e3;function X(e){if(e===``)return[];let t=e.split(`
4
4
  `);return e.endsWith(`
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-BQVYX8n_.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-Cqi8q9o7.js";import{E as a,S as o,c as s,l as c,x as l}from"./risk-C5kUSSLu.js";import{t as u}from"./chevron-left-mpHv5ahd.js";import"./src-clcV9W6_.js";import{t as d}from"./chat-markdown-message-BEx5IwnO.js";import{C as f,a as p,i as m,n as h,r as g,s as _,y as v}from"./site-favicon-Bsh4glAL.js";import{E as y,G as b,Hr as x,It as S,J as C,K as w,U as T,W as E,Wt as D,X as O,Y as k,q as A}from"./index-DglwxsvA.js";import{ToolDetailBody as j,t as M}from"./tool-detail-panel-hAWze9O3.js";var N=e(t(),1);function P(e,t,n){let r=E(t,n.workflow),i=e=>{let t=w(e,n.workflow.byToolUseId);if(t!==null&&r.has(t))return!0;let i=T(e,n.acpByToolUseId);if(i!==null&&n.acpById[i]!==void 0)return!0;let a=b(e);return a!==void 0&&n.backgroundTaskById[a]!==void 0},a=t.filter(e=>!i(e));if(a.length===t.length)return{items:e,toolCalls:t};let o=new Set(a.map(e=>e.id));return{items:e.filter(e=>e.kind!==`toolCall`||o.has(e.toolCall.id)),toolCalls:a}}function F(e,t){let n=o(),r=x.use.byId(),i=x.use.byToolUseId(),l=x.use.notFoundRunIds(),u=x.use.hydrationFailedRunIds(),d=S.use.byId(),f=S.use.byToolUseId(),p=D.use.byId();return(0,N.useMemo)(()=>{if(!e||t==null)return null;let o=n.find(t=>a(t).includes(e));if(!o)return null;let m=c(o.contentBlocks??[],{splitInlineThinking:o.role!==`user`})[t];if(!m||m.type!==`activity`)return null;let{cardItems:h,toolCalls:g}=s(m.items);return P(h,g,{workflow:{byId:r,byToolUseId:i,notFoundRunIds:l,hydrationFailedRunIds:u},acpById:d,acpByToolUseId:f,backgroundTaskById:p})},[n,e,t,r,i,l,u,d,f,p])}var I=r(),L=60;function R({payload:e,onClose:t}){let[r,a]=(0,N.useState)(null),o=F(e.messageId,e.groupIndex),s=o?.items??e.items,c=o?.toolCalls??e.toolCalls,l=O(s),d=C(l.steps),p=k(l.state,l.steps),m=p===`loading`,h=A(p,l.totalDurationLabel??``,d.failed),g=m&&l.currentStepTitle||h,v=new Map(c.map(e=>[e.id,e])),b=r?r.kind===`thinking`?`Thinking`:r.activity||r.title:``;return(0,I.jsx)(y,{titleNode:r?(0,I.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 py-0.5`,children:[(0,I.jsx)(n,{variant:`ghost`,iconOnly:(0,I.jsx)(u,{}),"aria-label":`Back to all steps`,tooltip:`All steps`,onClick:()=>a(null),className:`-ml-2.5 shrink-0`}),(0,I.jsx)(i,{variant:`title-medium`,className:`min-w-0 shrink truncate leading-snug text-[var(--content-default)]`,children:b})]}):(0,I.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 py-0.5`,children:[(0,I.jsx)(i,{variant:`title-medium`,className:`min-w-0 shrink truncate leading-snug text-[var(--content-default)]`,children:m?(0,I.jsx)(f,{children:g}):g}),l.stepCount?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`span`,{"aria-hidden":!0,className:`size-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}),(0,I.jsx)(i,{variant:`title-medium`,className:`shrink-0 whitespace-nowrap leading-snug text-[var(--content-secondary)]`,children:l.stepCount})]}):null]}),closeLabel:`Close steps`,onClose:t,children:r?(0,I.jsx)(B,{detail:r}):(0,I.jsx)(_,{steps:l.steps,timeline:!0,renderStep:t=>(0,I.jsx)(z,{step:t,activeDetail:r,onOpenDetail:a,lookupToolCall:e=>v.get(e),messageId:e.messageId,groupIndex:e.groupIndex})})})}function z({step:e,activeDetail:t,onOpenDetail:n,lookupToolCall:r,messageId:i,groupIndex:a}){if(e.kind===`thinking`){let t=i!=null&&e.thinkingItemIndex!=null?{messageId:i,thinkingGroupIndex:a,thinkingItemIndex:e.thinkingItemIndex}:{};return(0,I.jsx)(m,{iconName:`brain`,label:l(e.text,L),ariaLabel:`View thinking`,active:!1,onClick:()=>n({kind:`thinking`,toolCallId:``,toolName:``,title:`Thinking`,activity:``,input:{},status:`completed`,thinkingText:e.text,...t})})}if(e.kind===`web_search`)return(0,I.jsx)(g,{step:e});if(e.kind===`web_search_error`)return(0,I.jsx)(h,{step:e});if(e.kind!==`tool`)return(0,I.jsx)(p,{step:e});let o=r(e.toolCallId);return(0,I.jsx)(m,{iconName:e.iconName,label:e.activity||e.info||e.title,active:t?.toolCallId===e.toolCallId,onClick:()=>{o&&n(v(o))}})}function B({detail:e}){let t=M(e.kind===`thinking`?e.messageId:void 0,e.thinkingGroupIndex,e.thinkingItemIndex);return(0,I.jsx)(`div`,{className:`flex flex-col gap-4`,children:e.kind===`thinking`?(0,I.jsx)(d,{content:t??e.thinkingText??``,hardLineBreaks:!0}):(0,I.jsx)(j,{detail:e})})}export{R as ActivityStepsPanel};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-BQVYX8n_.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-Cqi8q9o7.js";import{E as a,S as o,c as s,l as c,x as l}from"./risk-BtPQZGh-.js";import{t as u}from"./chevron-left-mpHv5ahd.js";import"./src-clcV9W6_.js";import{t as d}from"./chat-markdown-message-BEx5IwnO.js";import{C as f,a as p,i as m,n as h,r as g,s as _,y as v}from"./site-favicon-CEvSq5Ys.js";import{E as y,G as b,Hr as x,It as S,J as C,K as w,U as T,W as E,Wt as D,X as O,Y as k,q as A}from"./index-CFQIPKjY.js";import{ToolDetailBody as j,t as M}from"./tool-detail-panel-CKKbVoIf.js";var N=e(t(),1);function P(e,t,n){let r=E(t,n.workflow),i=e=>{let t=w(e,n.workflow.byToolUseId);if(t!==null&&r.has(t))return!0;let i=T(e,n.acpByToolUseId);if(i!==null&&n.acpById[i]!==void 0)return!0;let a=b(e);return a!==void 0&&n.backgroundTaskById[a]!==void 0},a=t.filter(e=>!i(e));if(a.length===t.length)return{items:e,toolCalls:t};let o=new Set(a.map(e=>e.id));return{items:e.filter(e=>e.kind!==`toolCall`||o.has(e.toolCall.id)),toolCalls:a}}function F(e,t){let n=o(),r=x.use.byId(),i=x.use.byToolUseId(),l=x.use.notFoundRunIds(),u=x.use.hydrationFailedRunIds(),d=S.use.byId(),f=S.use.byToolUseId(),p=D.use.byId();return(0,N.useMemo)(()=>{if(!e||t==null)return null;let o=n.find(t=>a(t).includes(e));if(!o)return null;let m=c(o.contentBlocks??[],{splitInlineThinking:o.role!==`user`})[t];if(!m||m.type!==`activity`)return null;let{cardItems:h,toolCalls:g}=s(m.items);return P(h,g,{workflow:{byId:r,byToolUseId:i,notFoundRunIds:l,hydrationFailedRunIds:u},acpById:d,acpByToolUseId:f,backgroundTaskById:p})},[n,e,t,r,i,l,u,d,f,p])}var I=r(),L=60;function R({payload:e,onClose:t}){let[r,a]=(0,N.useState)(null),o=F(e.messageId,e.groupIndex),s=o?.items??e.items,c=o?.toolCalls??e.toolCalls,l=O(s),d=C(l.steps),p=k(l.state,l.steps),m=p===`loading`,h=A(p,l.totalDurationLabel??``,d.failed),g=m&&l.currentStepTitle||h,v=new Map(c.map(e=>[e.id,e])),b=r?r.kind===`thinking`?`Thinking`:r.activity||r.title:``;return(0,I.jsx)(y,{titleNode:r?(0,I.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 py-0.5`,children:[(0,I.jsx)(n,{variant:`ghost`,iconOnly:(0,I.jsx)(u,{}),"aria-label":`Back to all steps`,tooltip:`All steps`,onClick:()=>a(null),className:`-ml-2.5 shrink-0`}),(0,I.jsx)(i,{variant:`title-medium`,className:`min-w-0 shrink truncate leading-snug text-[var(--content-default)]`,children:b})]}):(0,I.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 py-0.5`,children:[(0,I.jsx)(i,{variant:`title-medium`,className:`min-w-0 shrink truncate leading-snug text-[var(--content-default)]`,children:m?(0,I.jsx)(f,{children:g}):g}),l.stepCount?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`span`,{"aria-hidden":!0,className:`size-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}),(0,I.jsx)(i,{variant:`title-medium`,className:`shrink-0 whitespace-nowrap leading-snug text-[var(--content-secondary)]`,children:l.stepCount})]}):null]}),closeLabel:`Close steps`,onClose:t,children:r?(0,I.jsx)(B,{detail:r}):(0,I.jsx)(_,{steps:l.steps,timeline:!0,renderStep:t=>(0,I.jsx)(z,{step:t,activeDetail:r,onOpenDetail:a,lookupToolCall:e=>v.get(e),messageId:e.messageId,groupIndex:e.groupIndex})})})}function z({step:e,activeDetail:t,onOpenDetail:n,lookupToolCall:r,messageId:i,groupIndex:a}){if(e.kind===`thinking`){let t=i!=null&&e.thinkingItemIndex!=null?{messageId:i,thinkingGroupIndex:a,thinkingItemIndex:e.thinkingItemIndex}:{};return(0,I.jsx)(m,{iconName:`brain`,label:l(e.text,L),ariaLabel:`View thinking`,active:!1,onClick:()=>n({kind:`thinking`,toolCallId:``,toolName:``,title:`Thinking`,activity:``,input:{},status:`completed`,thinkingText:e.text,...t})})}if(e.kind===`web_search`)return(0,I.jsx)(g,{step:e});if(e.kind===`web_search_error`)return(0,I.jsx)(h,{step:e});if(e.kind!==`tool`)return(0,I.jsx)(p,{step:e});let o=r(e.toolCallId);return(0,I.jsx)(m,{iconName:e.iconName,label:e.activity||e.info||e.title,active:t?.toolCallId===e.toolCallId,onClick:()=>{o&&n(v(o))}})}function B({detail:e}){let t=M(e.kind===`thinking`?e.messageId:void 0,e.thinkingGroupIndex,e.thinkingItemIndex);return(0,I.jsx)(`div`,{className:`flex flex-col gap-4`,children:e.kind===`thinking`?(0,I.jsx)(d,{content:t??e.thinkingText??``,hardLineBreaks:!0}):(0,I.jsx)(j,{detail:e})})}export{R as ActivityStepsPanel};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,c as n,i as r}from"./local-settings-C-dW2vkq.js";import{r as i,t as a}from"./capture-error-Dhiismgm.js";import{t as o}from"./react-DJZBPgpf.js";import{t as s}from"./button-BQVYX8n_.js";import{m as c,u as l}from"./chunk-5KNZJZUH-SU6Q_tDT.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-Cqi8q9o7.js";import{t as h}from"./createLucideIcon-Bjb-Kuq7.js";import{t as g}from"./circle-check-DWe3QGcN.js";import{n as _,t as v}from"./domain-field-DKKi4dF-.js";import{t as y}from"./external-link-Cczz6xJ4.js";import{t as b}from"./info-DLFMsCl-.js";import{t as x}from"./loader-circle-C9QrtO3C.js";import{t as S}from"./notice-B8UI-BOp.js";import{t as C}from"./tag-D0AE0-aA.js";import{t as w}from"./input-6HVXMszw.js";import{t as T}from"./toggle-CWrJ2t4S.js";import{t as E}from"./modal-bIQsMU63.js";import{n as D}from"./toast-CZmbu5xl.js";import{t as O}from"./confirm-dialog-kE8y7s20.js";import{t as k}from"./dropdown-CuE5AuVj.js";import{Ht as A,Ut as j,bn as M,ct as N,tr as P}from"./sdk.gen-C9GJEKYV.js";import{H as F,V as I,_t as L,c as R,d as z,f as B,l as V,m as H,p as U,u as W,zt as G}from"./react-query.gen-CWfp8GEM.js";import{r as ee}from"./utils-DvUW9GK8.js";import{r as te}from"./api-errors-CrWDzVca.js";import{c as ne}from"./routes-GPGveWZ8.js";import{t as K}from"./use-is-org-ready-CZIgoXmP.js";import{c as re,d as ie,f as ae,g as oe,h as se,it as ce,l as le,m as ue,o as de,p as fe,s as pe,u as me,v as q,y as he}from"./react-query.gen-B-P32qsC.js";import{$r as ge,B as _e,Ci as ve,Di as J,Ei as Y,H as ye,Oi as be,Qr as xe,R as Se,Si as Ce,Ti as we,V as Te,Xr as Ee,Yi as De,Yr as Oe,Zr as ke,_i as Ae,ai as je,bi as Me,di as Ne,ei as Pe,fi as Fe,gi as Ie,hi as Le,ii as Re,mi as ze,ni as Be,oi as Ve,pi as He,ri as Ue,si as We,ti as Ge,ui as Ke,vi as qe,wi as Je,xi as Ye,yi as Xe,z as Ze,zi as Qe}from"./index-DglwxsvA.js";import{t as X}from"./use-active-assistant-id-DpxCpOc4.js";import{C as $e,D as et,E as Z,T as tt,_ as nt,b as rt,c as it,d as at,l as ot,n as st,r as ct,s as lt,t as ut,u as dt,v as ft,w as pt,x as mt,y as ht}from"./provider-catalogs-mEOdGGoF.js";import{t as gt}from"./environment-store-BX22hkIL.js";var _t=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`}]]),Q=e(o(),1),vt=`__custom__`;function yt(e){return e?!!(e.profile||e.provider||e.model):!1}function bt(e,t){let n=yt(e);return n===yt(t)?n?(e?.profile??null)===(t?.profile??null)&&(e?.provider??null)===(t?.provider??null)&&(e?.model??null)===(t?.model??null):!0:!1}var $=p();function xt({id:e,displayName:t,description:n,defaultProfileLabel:r,draft:i,profileOptions:a,onDraftChange:o,onToggle:s}){let c=yt(i),l=!i||!c?``:i.provider||i.model?vt:i.profile??``,u=l===vt,d=Ue(),f=d[0]??Je[0],p=d.find(e=>e===i?.provider)??f,m=be(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:J(f)??``}):t===``?o(e,null):o(e,{profile:t,provider:null,model:null})}function _(t){let n=J(t)??``;o(e,{...i??{},profile:null,provider:t,model:n})}function v(t){o(e,{...i??{},model:t})}return(0,$.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-default font-medium text-[var(--content-default)]`,children:t}),n&&(0,$.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[n,r&&(0,$.jsxs)(`span`,{className:`ml-1.5 text-body-small-default text-[var(--content-tertiary)] opacity-60`,children:[`· Default: `,r]})]})]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c&&(0,$.jsx)(k,{value:l,onChange:g,options:a,className:`w-44`,menuMinWidth:280,menuAlign:`end`}),(0,$.jsx)(T,{checked:c,onChange:t=>s(e,t),"aria-label":`Override ${t}`})]})]}),c&&u&&(0,$.jsxs)(`div`,{className:`mt-3 space-y-2 border-t border-[var(--border-base)] pt-3`,children:[(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex-1`,children:[(0,$.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(k,{value:p??``,onChange:_,options:d.map(e=>({value:e,label:Y[e]??e}))})]}),(0,$.jsxs)(`div`,{className:`flex-1`,children:[(0,$.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Model`}),(0,$.jsx)(k,{value:i?.model??``,onChange:v,options:m})]})]}),h&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:`Pick a model`})]})]})}function St({isOpen:e,onClose:t,assistantId:n}){let r=(0,Q.useRef)(!1);return(0,$.jsx)(E.Root,{open:e,onOpenChange:e=>{!e&&!r.current&&t()},children:e?(0,$.jsx)(Ct,{assistantId:n,onClose:t,onSavingChange:e=>{r.current=e}}):null})}function Ct({assistantId:e,onClose:t,onSavingChange:n}){let r=u(),{data:i}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),o=(0,Q.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),c=(0,Q.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),l=(0,Q.useMemo)(()=>i?.llm?.callSites??{},[i?.llm?.callSites]),f=(0,Q.useMemo)(()=>Fe(o,c),[o,c]),p=Ue(),m=G({onSuccess:t=>{W(r,{path:{assistant_id:e}},t)}}),[h,g]=(0,Q.useState)(``),[_,v]=(0,Q.useState)(``),[y,b]=(0,Q.useState)({}),[S,C]=(0,Q.useState)(!1),[T,A]=(0,Q.useState)(!1),{data:j,isLoading:M,isError:N,refetch:P}=d({...z({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4,refetchOnWindowFocus:!1}),F=(0,Q.useMemo)(()=>(j?.callSites??[]).filter(e=>e.id!==`mainAgent`),[j]),I=!M&&!N&&!!j&&!!i,L=(0,Q.useMemo)(()=>F.map(e=>e.id),[F]),B=(0,Q.useMemo)(()=>{if(!I)return{};let e={};for(let t of L)if(t in y)e[t]=y[t];else{let n=l[t];e[t]=n?{...n}:{}}return e},[I,L,l,y]),V=(0,Q.useMemo)(()=>new Set(L),[L]),H=(0,Q.useMemo)(()=>Object.entries(l).some(([e,t])=>V.has(e)&&(t?.profile!=null||t?.provider!=null||t?.model!=null)),[l,V]),U=(0,Q.useMemo)(()=>{if(!I)return!1;for(let e of Object.keys(B))if(!bt(B[e],l[e]))return!0;return!1},[I,B,l]),ee=(0,Q.useMemo)(()=>Object.values(B).some(e=>yt(e)&&!!e?.provider&&!e?.model),[B]),te=(0,Q.useMemo)(()=>Te(f,[]).map(e=>({value:e.name,label:Ze(e)})),[f]),ne=(0,Q.useCallback)(()=>{if(!_)return;let e={};for(let t of L)e[t]={profile:_};b(e)},[_,L]),K=(0,Q.useCallback)(e=>[...Te(f,[e]).map(e=>({value:e.name,label:Ze(e)})),{value:vt,label:`Custom`}],[f]),re=(0,Q.useMemo)(()=>{if(!h.trim())return F;let e=h.toLowerCase();return F.filter(t=>(t.displayName??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||(t.domain??``).toLowerCase().includes(e))},[F,h]),ie=(0,Q.useMemo)(()=>{if(!j)return[];let e=j.domains.map(e=>e.id),t=new Map(j.domains.map(e=>[e.id,e])),n=[];for(let r of e){let e=re.filter(e=>e.domain===r);e.length>0&&n.push({domain:t.get(r),sites:e})}let r=new Set(e),i=re.filter(e=>!r.has(e.domain));return i.length>0&&n.push({domain:{id:`other`,displayName:`Other`},sites:i}),n},[j,re]),ae=(0,Q.useCallback)((e,t)=>{b(n=>({...n,[e]:t}))},[]),oe=(0,Q.useCallback)((e,t)=>{if(!t){b(t=>({...t,[e]:null}));return}let n=_e(f,F.find(t=>t.id===e)?.defaultProfile);if(n)b(t=>({...t,[e]:{profile:n}}));else{let t=p[0]??Je[0],n=J(t)??``;b(r=>({...r,[e]:{provider:t,model:n}}))}},[F,f,p]),se=(0,Q.useCallback)(async()=>{C(!0),n?.(!0);try{let n={};for(let e of Object.keys(B)){let t=B[e]??null;n[e]=yt(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(),D.success(`Overrides saved.`)}catch(e){D.error(`Failed to save overrides. Please try again.`),a(e,{context:`call_site_overrides_save`})}finally{C(!1),n?.(!1)}},[B,t,m,n,e]),ce=(0,Q.useCallback)(async()=>{C(!0),n?.(!0);try{let n={};for(let e of Object.keys(B))n[e]=null;await m.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),D.success(`Overrides reset.`)}catch(e){D.error(`Failed to reset overrides. Please try again.`),a(e,{context:`call_site_overrides_reset`})}finally{C(!1),n?.(!1)}},[B,t,m,n,e]);return(0,$.jsxs)(E.Content,{size:`lg`,hideCloseButton:!0,children:[(0,$.jsxs)(E.Header,{children:[(0,$.jsx)(E.Title,{children:`Action Overrides`}),(0,$.jsx)(E.Description,{children:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`})]}),(0,$.jsxs)(E.Body,{children:[(0,$.jsx)(`div`,{className:`mb-4`,children:(0,$.jsx)(w,{type:`search`,value:h,onChange:e=>g(e.target.value),placeholder:`Search actions…`,leftIcon:(0,$.jsx)(De,{className:`h-4 w-4`}),fullWidth:!0})}),te.length>0&&(0,$.jsxs)(`div`,{className:`mb-4 flex items-center gap-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:[(0,$.jsx)(`p`,{className:`min-w-0 flex-1 text-body-medium-default text-[var(--content-default)]`,children:`Use one profile for all actions`}),(0,$.jsx)(k,{value:_,onChange:v,options:te,placeholder:`Choose profile…`,className:`w-44`,menuMinWidth:280,menuAlign:`end`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:ne,disabled:!_||!I||S,children:`Apply to all`})]}),M&&(0,$.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,$.jsx)(x,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}),N&&(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-12 text-center`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Couldn't load actions`}),(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Make sure your assistant is running`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>void P(),children:`Retry`})]}),!M&&!N&&j&&(0,$.jsx)(`div`,{className:`space-y-4`,children:ie.length===0?(0,$.jsx)(`p`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No actions match your search.`}):ie.map(({domain:e,sites:t})=>(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`mb-2 text-body-small-default font-semibold uppercase tracking-wider text-[var(--content-tertiary)]`,children:e.displayName}),(0,$.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>{let t=(()=>{let t=B[e.id]??null;return!t||!yt(t)?``:t.provider||t.model?`__custom__`:t.profile??``})(),n=e.defaultProfile?f.find(t=>t.name===e.defaultProfile)?.label??e.defaultProfile:null;return(0,$.jsx)(xt,{id:e.id,displayName:e.displayName,description:e.description,defaultProfileLabel:n,draft:B[e.id]??null,profileOptions:K(t===``||t===`__custom__`?null:t),onDraftChange:ae,onToggle:oe},e.id)})})]},e.id))})]}),(0,$.jsxs)(E.Footer,{children:[H&&(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>A(!0),disabled:S||!I,tintColor:`var(--system-negative-strong)`,className:`mr-auto`,children:`Reset to Defaults`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:t,disabled:S,children:`Cancel`}),(0,$.jsx)(s,{variant:`primary`,size:`compact`,onClick:()=>void se(),disabled:!U||ee||S,children:S?(0,$.jsx)(x,{className:`h-4 w-4 animate-spin`}):`Save`})]}),(0,$.jsx)(O,{open:T,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:()=>{A(!1),ce()},onCancel:()=>A(!1)})]})}function wt({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,$.jsx)(E.Root,{open:e!==null,onOpenChange:e=>{e||o()},children:(0,$.jsxs)(E.Content,{size:`sm`,children:[(0,$.jsx)(E.Header,{children:(0,$.jsx)(E.Title,{children:`Can't Delete Profile`})}),(0,$.jsxs)(E.Body,{className:`space-y-4`,children:[(0,$.jsx)(m,{variant:`body-medium-default`,as:`p`,children:l}),e&&e.callSiteIds.length>0&&(0,$.jsx)(`ul`,{className:`space-y-1 pl-1`,children:e.callSiteIds.map(e=>(0,$.jsxs)(`li`,{className:`text-body-small-default text-(--content-secondary)`,children:[`• `,(0,$.jsx)(`code`,{children:e})]},e))}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Replacement profile`}),(0,$.jsx)(k,{"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,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:i})]}),(0,$.jsxs)(E.Footer,{children:[(0,$.jsx)(s,{variant:`ghost`,size:`compact`,onClick:o,children:`Cancel`}),(0,$.jsx)(s,{variant:`primary`,size:`compact`,disabled:!n||a,onClick:c,children:a?`Saving…`:`Reassign and Delete`})]})]})})}function Tt(e,t){if(e){let n=be(e).find(e=>e.id===t);if(n)return n.displayName}let n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t}function Et(e,t){let n=[];e.description&&n.push(e.description);let r=e.provider_connection===`vellum`&&t?`vellum`:e.provider,i=[];if(e.model&&i.push(Tt(r,e.model)),r){let e=Y[r]??r;i.push(`hosted by ${e}`)}return i.length>0&&n.push(i.join(` `)),n.join(` – `)}function Dt({profile:e,vellumIsManaged:t,isDragging:n,dropTarget:r,isDeleting:i,deleteError:a,isToggling:o,onDragStart:c,onDragEnd:l,onDragOver:u,onDragLeave:d,onDrop:f,onEditClick:p,onDeleteClick:h,onStatusToggle:g}){let _=e.source===`managed`,v=e.invariant===!0,y=e.status!==`disabled`;return(0,$.jsxs)(`div`,{className:`relative`,children:[r?.name===e.name&&!r.after&&(0,$.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg pr-2 py-2${n?` opacity-50`:``}`,draggable:!_,onDragStart:c,onDragEnd:l,onDragOver:u,onDragLeave:d,onDrop:f,children:[(0,$.jsx)(_t,{className:`h-4 w-4 shrink-0 ${_?`invisible`:`cursor-grab text-[var(--content-tertiary)]`}`}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1${y?``:` opacity-55`}`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:e.label??e.name}),_&&(0,$.jsx)(C,{tone:`positive`,title:`Managed by Platform — this profile cannot be disabled, deleted, or renamed.`,children:`Platform`})]}),e.description||e.model||e.provider?(0,$.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:Et(e,t)}):null]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(!v||!y)&&(0,$.jsx)(`div`,{className:`flex shrink-0 items-center`,title:y?`Active — toggle to hide from pickers`:`Disabled — toggle to show in pickers`,children:(0,$.jsx)(T,{checked:y,onChange:e=>g(e),disabled:o,"aria-label":`${y?`Disable`:`Enable`} ${e.label??e.name}`})}),(0,$.jsxs)(`div`,{className:`flex w-[92px] items-center justify-end gap-2`,children:[(0,$.jsx)(s,{variant:`ghost`,size:`compact`,onClick:p,children:_||v?`View`:`Edit`}),(0,$.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(Qe,{}),"aria-label":`Delete ${e.label??e.name}`,disabled:_||v||i,title:_||v?`Managed profiles cannot be deleted`:void 0,onClick:h,tintColor:`var(--system-negative-strong)`})]})]})]}),r?.name===e.name&&r.after&&(0,$.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),a?(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:a}):null]})}function Ot({isOpen:e,assistantId:t,onClose:n}){let r=u(),{data:i}=d({...R({path:{assistant_id:t}}),staleTime:3e4}),o=(0,Q.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),s=(0,Q.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),c=i?.llm?.activeProfile??null,l=i?.llm?.callSites??{},f=(0,Q.useMemo)(()=>Fe(o,s),[o,s]),p=G({onSuccess:e=>{W(r,{path:{assistant_id:t}},e)}}),[m,h]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(null),{data:v}=d({...I({path:{assistant_id:t}}),enabled:e}),y=v?.connections,b=y?.some(e=>e.name===`vellum`&&e.provider===`vellum`)??!1,x=Object.keys(o);async function S(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&&D.success(`Profile "${n.label??e}" created`),h(!1),_(null)}return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(E.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,$.jsx)(kt,{assistantId:t,vellumIsManaged:b,profiles:o,profileOrder:s,orderedProfiles:f,activeProfile:c,callSiteOverrides:l,onClose:n,onEditClick:e=>{_(e),h(!0)},onNewClick:()=>{_(null),h(!0)}}):null}),(0,$.jsx)(Oe,{isOpen:m,mode:g?g.source===`managed`||g.invariant===!0?`view`:`edit`:`create`,profileName:g?.name,initialValues:g??void 0,existingNames:x,connections:y,assistantId:t,onSave:S,onCancel:()=>{h(!1),_(null)}})]})}function kt({assistantId:e,vellumIsManaged:t,profiles:n,profileOrder:r,orderedProfiles:i,activeProfile:o,callSiteOverrides:c,onClose:l,onEditClick:d,onNewClick:f}){let p=u(),h=G({onSuccess:t=>{W(p,{path:{assistant_id:e}},t)}}),[g,_]=(0,Q.useState)({}),[v,y]=(0,Q.useState)({}),[b,x]=(0,Q.useState)(new Set),[S,C]=(0,Q.useState)(null),[w,T]=(0,Q.useState)(null),[D,O]=(0,Q.useState)(null),[k,A]=(0,Q.useState)(null),j=(0,Q.useRef)(null),M=(0,Q.useRef)(null),[N,P]=(0,Q.useState)(null),[F,I]=(0,Q.useState)(null),[L,R]=(0,Q.useState)(``),[z,B]=(0,Q.useState)(!1),V=(0,Q.useMemo)(()=>i,[i]);async function H(t,r){if(b.has(t.name))return!1;x(e=>new Set(e).add(t.name)),C(null);let i=r?`active`:`disabled`;if(!n[t.name])return x(e=>{let n=new Set(e);return n.delete(t.name),n}),!1;try{return await h.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[t.name]:{status:i}}}}}),!0}catch(e){return a(e,{context:`settings-ai-profile-toggle`}),C(`Couldn't update "${t.label??t.name}". Please try again.`),!1}finally{x(e=>{let n=new Set(e);return n.delete(t.name),n})}}async function U(t){y(e=>({...e,[t]:!0})),_(e=>{let n={...e};return delete n[t],n});try{let n=r.filter(e=>e!==t);await h.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[t]:null},profileOrder:n}}})}catch(e){a(e,{context:`settings-ai-profile-delete`}),_(e=>({...e,[t]:`Failed to delete profile. Please try again.`}))}finally{y(e=>{let n={...e};return delete n[t],n})}}function ee(e){let t=V.find(t=>t.name===e)?.label??e,n=e===o,r=Object.entries(c).filter(([t,n])=>t!==`mainAgent`&&n?.profile===e).map(([e])=>e);if(n||r.length>0){P({name:e,label:t,isActive:n,callSiteIds:r}),R(``),I(null);return}U(e)}async function te(){if(!N||!L)return;B(!0),I(null);let t={};if(N.isActive&&(t.activeProfile=L),N.callSiteIds.length>0){let e={};for(let t of N.callSiteIds)e[t]={profile:L};t.callSites=e}if(Object.keys(t).length>0)try{await h.mutateAsync({path:{assistant_id:e},body:{llm:t}})}catch(e){a(e,{context:`settings-ai-profile-reassign-delete`}),I(`Failed to reassign references. Please try again.`),B(!1);return}let n=N.name;P(null),B(!1),U(n)}async function ne(t,n){if(t===n.name)return;A(null);let i=r.filter(e=>e!==t),o=i.indexOf(n.name);if(o===-1)return;n.after&&(o+=1);let s=[...i.slice(0,o),t,...i.slice(o)];try{await h.mutateAsync({path:{assistant_id:e},body:{llm:{profileOrder:s}}})}catch(e){a(e,{context:`settings-ai-profile-reorder`}),A(`Failed to reorder profiles. Please try again.`)}}let K=V.filter(e=>e.name!==N?.name&&e.source!==`managed`),re=K.length>0?K:V.filter(e=>e.name!==N?.name);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(E.Content,{size:`md`,children:[(0,$.jsxs)(E.Header,{children:[(0,$.jsx)(E.Title,{children:`Model Profiles`}),(0,$.jsx)(E.Description,{children:`Bundle a provider and model into a named profile. Assign profiles to specific actions or swap between them when chatting.`})]}),(0,$.jsxs)(E.Body,{children:[V.length===0?(0,$.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,$.jsx)(`div`,{className:`space-y-1`,children:V.map(e=>(0,$.jsx)(Dt,{profile:e,vellumIsManaged:t,isDragging:w===e.name,dropTarget:D,isDeleting:v[e.name]??!1,deleteError:g[e.name],isToggling:b.has(e.name),onDragStart:t=>{j.current=e.name,T(e.name),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},onDragEnd:()=>{j.current=null,M.current=null,T(null),O(null)},onDragOver:t=>{t.preventDefault();let n=t.currentTarget.getBoundingClientRect(),r=t.clientY>n.top+n.height/2,i={name:e.name,after:r};M.current=i,O(i)},onDragLeave:t=>{t.currentTarget.contains(t.relatedTarget)||(M.current=null,O(t=>t?.name===e.name?null:t))},onDrop:e=>{e.preventDefault();let t=j.current,n=M.current;j.current=null,M.current=null,T(null),O(null),t&&n&&ne(t,n)},onEditClick:()=>d(e),onDeleteClick:()=>ee(e.name),onStatusToggle:t=>void H(e,t)},e.name))}),k&&(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:k}),S&&(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:S})]}),(0,$.jsxs)(E.Footer,{className:`justify-between`,children:[(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:f,children:`+ New Profile`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:l,children:`Done`})]})]}),(0,$.jsx)(wt,{blocked:N,availableReplacements:re,replacement:L,onReplacementChange:R,error:F,saving:z,onClose:()=>{P(null),I(null)},onConfirm:()=>void te()})]})}var At=`0.10.8`;function jt(){return ee(At)}function Mt({mode:e,connection:t,assistantId:n,existingNames:r,onSave:i,onCancel:a}){let[o,c]=(0,Q.useState)(t?.label??``),l=t?.name??``,d=t?.provider??`anthropic`,f=t?.auth.type??`api_key`,[p,h]=(0,Q.useState)(()=>t?.auth.type===`api_key`?t.auth.credential:t?``:`credential/anthropic/api_key`),[g,_]=(0,Q.useState)(t?.baseUrl??``),[v,y]=(0,Q.useState)(()=>t?.models?t.models.map(e=>e.id).join(`, `):``),[b,x]=(0,Q.useState)(!1),[S,C]=(0,Q.useState)(null),T=d===`openai-compatible`,[D,O]=(0,Q.useState)(``),[k,A]=(0,Q.useState)(!1),M=u(),N=(0,Q.useMemo)(()=>je(p),[p]),F=f===`api_key`&&N!==null,{hasStoredCredential:I,isLoading:R}=Be({assistantId:n,credentialKind:`credential`,credentialName:N?`${N.service}:${N.field}`:``,enabled:F}),{credentials:z}=ke({assistantId:n,enabled:f===`api_key`});(0,Q.useEffect)(()=>{let e=t?.provider??`anthropic`;c(t?.label??``),t?.auth.type===`api_key`?h(t.auth.credential):h(t?``:`credential/${e}/api_key`),C(null),_(t?.baseUrl??``),y(t?.models?t.models.map(e=>e.id).join(`, `):``),O(``),A(!1)},[t]);let B=l.trim().length>0;async function V(){if(B){x(!0),C(null);try{let e;if(f===`api_key`){let t=p.trim()||`credential/${d}/api_key`,r=D.trim();if(r){A(!0);try{let e=je(t);await P({path:{assistant_id:n},body:e?{type:`credential`,name:`${e.service}:${e.field}`,value:r}:{type:`api_key`,name:d,value:r},throwOnError:!0});let i=Ge(n,`credential`,e?`${e.service}:${e.field}`:``);M.setQueryData(i,!0),M.invalidateQueries({queryKey:L({path:{assistant_id:n}})})}catch{C(`Failed to save API key. Please try again.`);return}finally{A(!1)}}e={type:`api_key`,credential:t}}else if(t)e=t.auth;else{C(`Nothing to edit. Close and try again.`);return}let r=o.trim()||null,a={auth:e,label:r,...T&&{base_url:g.trim()||null,models:v.trim()?v.split(`,`).map(e=>({id:e.trim()})).filter(e=>e.id):null}},{data:s,error:c,response:u}=await j({path:{assistant_id:n,name:t?.name??l.trim()},body:a});if(!u?.ok){C(We(u?.status,c)??Re(u?.status));return}if(!s){C(`Server returned an empty response. Please try again.`);return}i(s)}catch{C(`Failed to save provider. Please try again.`)}finally{x(!1)}}}let H=z.filter(e=>e.service===d),U=e!==`create`&&t?.auth.type===`api_key`,W=H.length>0||U,G=xe(`Enter your API key`,I);return e===`create`?(0,$.jsx)(Ee,{variant:`modal`,assistantId:n,existingNames:r,defaultProviderType:d,onCreated:i,onCancel:a}):(0,$.jsxs)(E.Content,{size:`md`,children:[(0,$.jsxs)(E.Header,{children:[(0,$.jsx)(E.Title,{children:`Edit Provider`}),(0,$.jsx)(E.Description,{children:t?`Editing ${Ve(t)}.`:`Edit provider settings.`})]}),(0,$.jsxs)(E.Body,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[`Display Name`,` `,(0,$.jsx)(`span`,{className:`text-[var(--content-disabled)]`,children:`(optional)`})]}),(0,$.jsx)(w,{value:o,onChange:e=>c(e.target.value),placeholder:`e.g. My Anthropic Key`,fullWidth:!0})]}),T&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Base URL`}),(0,$.jsx)(w,{value:g,onChange:e=>_(e.target.value),placeholder:`https://api.example.com/v1`,fullWidth:!0})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Models`}),(0,$.jsx)(w,{value:v,onChange:e=>y(e.target.value),placeholder:`model-1, model-2`,fullWidth:!0}),(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:`Comma-separated model identifiers exposed by your endpoint.`})]})]}),f===`api_key`&&(0,$.jsx)(ge,{apiKeyValue:D,onApiKeyChange:O,credential:p,onCredentialChange:h,isLoadingCredential:R,apiKeyPlaceholder:G,provider:d,providerCredentials:H,showAdvancedSection:W,onError:C}),f===`oauth_subscription`&&(0,$.jsx)(Pe,{assistantId:n,onConnected:i}),S&&(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:S})]}),(0,$.jsxs)(E.Footer,{children:[(0,$.jsx)(s,{variant:`ghost`,size:`compact`,onClick:a,children:`Cancel`}),(0,$.jsx)(s,{variant:`primary`,size:`compact`,disabled:!B||b||k,onClick:()=>void V(),children:b?`Saving…`:`Save`})]})]})}var Nt={anthropic:!0,openai:!0,gemini:!0,fireworks:!0,openrouter:!0,vellum:!0};function Pt(e){return e in Nt}function Ft({isOpen:e,assistantId:t,onClose:n}){let[r,i]=(0,Q.useState)(!1),[a,o]=(0,Q.useState)(null),s=u(),{data:c,isLoading:l,isError:f}=d({...I({path:{assistant_id:t}}),enabled:e}),p=jt(),{data:m}=d({...B({path:{assistant_id:t}}),enabled:e&&p}),h=(0,Q.useMemo)(()=>{let e=c?.connections??[];return[...e.filter(e=>e.provider===we),...e.filter(e=>e.provider!==we)]},[c]);function g(){s.invalidateQueries({queryKey:U({path:{assistant_id:t}})}),s.invalidateQueries({queryKey:V({path:{assistant_id:t}})})}function _(e){s.invalidateQueries({queryKey:F({path:{assistant_id:t}})}),i(!1),o(null)}let v=h.map(e=>e.name),y=()=>{i(!1),o(null)};return(0,$.jsx)(E.Root,{open:e,onOpenChange:e=>{e||(r?y():n())},children:e?r?(0,$.jsx)(Mt,{mode:a?`edit`:`create`,connection:a??void 0,assistantId:t,existingNames:v,onSave:_,onCancel:y}):(0,$.jsx)(It,{connections:h,loading:l,isError:f,assistantId:t,supportsDefaultProvider:p,defaultConnectionName:p?m?.resolvedConnectionName??null:null,onDefaultChanged:g,onClose:n,onEditClick:e=>{o(e),i(!0)},onNewClick:()=>{o(null),i(!0)},onConnectionDeleted:()=>{s.invalidateQueries({queryKey:F({path:{assistant_id:t}})})}}):null})}function It({connections:e,loading:t,isError:n,assistantId:r,supportsDefaultProvider:i,defaultConnectionName:o,onDefaultChanged:c,onClose:l,onEditClick:u,onNewClick:d,onConnectionDeleted:p}){let[h,g]=(0,Q.useState)({}),[_,v]=(0,Q.useState)({}),y=f({...H(),onMutate:e=>{let t=e.body?.connectionName;t&&g(e=>{let n={...e};return delete n[t],n})},onSuccess:c,onError:(e,t)=>{a(e,{context:`settings-ai-set-default-provider`});let n=t.body?.connectionName;n&&g(e=>({...e,[n]:`Failed to set default provider. Please try again.`}))}});function b(e){Pt(e.provider)&&y.mutate({path:{assistant_id:r},body:{provider:e.provider,connectionName:e.name}})}async function x(e){v(t=>({...t,[e]:!0})),g(t=>{let n={...t};return delete n[e],n});try{let{response:t}=await A({path:{assistant_id:r,name:e}});t?.ok||t?.status===404?p(e):t?.status===409?g(t=>({...t,[e]:`This provider is in use by a profile or as the default provider. Update those settings before deleting it.`})):g(t=>({...t,[e]:`Failed to delete provider. Please try again.`}))}catch{g(t=>({...t,[e]:`Failed to delete provider. Please try again.`}))}finally{v(t=>{let n={...t};return delete n[e],n})}}return(0,$.jsxs)(E.Content,{size:`md`,children:[(0,$.jsxs)(E.Header,{children:[(0,$.jsx)(E.Title,{children:`Providers`}),(0,$.jsx)(E.Description,{children:`Manage the model providers your assistant can use.`})]}),(0,$.jsx)(E.Body,{children:t?(0,$.jsx)(`div`,{className:`space-y-2 py-2`,children:[1,2,3].map(e=>(0,$.jsx)(`div`,{className:`h-10 animate-pulse rounded-lg bg-[var(--surface-active)]`},e))}):n?(0,$.jsx)(m,{variant:`body-medium-default`,as:`p`,className:`py-4 text-center text-(--system-negative-strong)`,children:`Failed to load providers. Please try again.`}):e.length===0?(0,$.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No providers yet. Add one to get started.`}):(0,$.jsx)(`div`,{className:`space-y-1`,children:e.map(e=>{let t=_[e.name]??!1,n=h[e.name],r=e.isManaged??!1,a=e.name===o,c=Pt(e.provider),l=y.isPending&&y.variables?.body?.connectionName===e.name;return(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg px-2 py-2`,children:[(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:Ve(e)}),r&&(0,$.jsx)(C,{tone:`positive`,title:`Managed by Platform — you can rename this provider, but not edit it.`,children:`Platform`}),a&&(0,$.jsx)(C,{tone:`info`,title:`Built-in profiles (Balanced, Quality, Speed) use this provider.`,children:`Default`})]})}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[i&&!a&&(0,$.jsx)(s,{variant:`ghost`,size:`compact`,disabled:!c||l,title:c?`Use this provider for the built-in profiles.`:`Built-in profiles can't run on this provider.`,onClick:()=>b(e),children:`Set as default`}),!r&&(0,$.jsx)(s,{variant:`ghost`,size:`compact`,onClick:()=>u(e),children:`Edit`}),(0,$.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(Qe,{}),"aria-label":`Delete ${Ve(e)}`,disabled:r||a||t,title:r?`The Vellum provider cannot be removed`:a?`This is your default provider. Set another provider as default first.`:void 0,onClick:()=>void x(e.name),tintColor:`var(--system-negative-strong)`})]})]}),n?(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:n}):null]},e.name)})})}),(0,$.jsxs)(E.Footer,{className:`justify-between`,children:[(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:d,children:`+ Add Provider`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:l,children:`Done`})]})]})}function Lt(){let e=X(),t=u(),{data:n}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),r=jt(),{data:i,refetch:o}=d({...B({path:{assistant_id:e}}),enabled:r}),c=i?.availability,l=n?.llm?.activeProfile??null,f=n?.llm?.advisorProfile??null,p=n?.llm?.callSites??{},{profiles:h,profileOrder:g}=Se(n?.llm,e),_=(0,Q.useMemo)(()=>Fe(h,g),[h,g]),v=G({onSuccess:n=>{W(t,{path:{assistant_id:e}},n)}}),[y,b]=rt(l),[C,w]=rt(f),[T,E]=(0,Q.useState)(!1),[O,A]=(0,Q.useState)(!1),[j,M]=(0,Q.useState)(!1),N=(0,Q.useMemo)(()=>Te(_,[y]),[_,y]),P=(0,Q.useMemo)(()=>Te(_,[C]),[_,C]),F=Object.entries(p).filter(([e,t])=>e!==`mainAgent`&&(t?.profile!=null||t?.provider!=null||t?.model!=null)).length,I=F===1?`1 Override`:F>0?`${F} Overrides`:`Overrides`,L=y!==l,z=C!==f,V=(0,Q.useCallback)(async()=>{try{let t={};L&&(t.activeProfile=y),z&&(t.advisorProfile=C),await v.mutateAsync({path:{assistant_id:e},body:{llm:t}}),D.success(`Saved.`)}catch(e){D.error(`Failed to save. Please try again.`),a(e,{context:`settings-ai-language-model-save`})}},[L,z,y,C,v,e]);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(mt,{title:`Language Model`,subtitle:`Configure the LLMs that power your assistant`,children:(0,$.jsxs)(`div`,{className:`space-y-4`,children:[c&&c.status!==`ok`&&(0,$.jsx)(S,{tone:c.status===`unknown`?`warning`:`error`,children:c.message??`Your default provider is not available.`}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Default Profile`}),(0,$.jsx)(k,{value:y??``,onChange:e=>{b(e===``?null:e)},placeholder:`Select a default profile…`,options:N.map(e=>({value:e.name,label:Ze(e)}))}),N.length===0?(0,$.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,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Advisor Profile`}),(0,$.jsx)(k,{value:C??``,onChange:e=>{w(e===``?null:e)},placeholder:`Select an advisor profile…`,options:P.map(e=>({value:e.name,label:Ze(e)}))}),(0,$.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,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>M(!0),children:`Providers`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>E(!0),children:`Profiles`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>A(!0),children:I})]}),(L||z)&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:V,disabled:v.isPending}),v.isPending&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]})}),e&&(0,$.jsx)(Ot,{isOpen:T,assistantId:e,onClose:()=>E(!1)}),e&&(0,$.jsx)(St,{isOpen:O,onClose:()=>A(!1),assistantId:e}),e&&(0,$.jsx)(Ft,{isOpen:j,assistantId:e,onClose:()=>{M(!1),r&&o()}})]})}function Rt(){let e=X();return(0,Q.useCallback)(async(t,n)=>{try{let{data:r}=await P({path:{assistant_id:e},body:{value:n,type:`api_key`,name:t},throwOnError:!0});Ne(r)}catch(e){throw e instanceof Error&&e.message===`No assistant found`?D.error(`Assistant not ready. Please try again.`):D.error(`Failed to save ${t} API key. Please try again.`),a(e,{context:`provision_provider_key`}),e}},[e])}function zt(){let e=X(),i=u(),{data:o}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),s=G({onSuccess:t=>{W(i,{path:{assistant_id:e}},t)}}),c=Rt(),{serverWebSearchMode:l,serverWebSearchProvider:f}=(0,Q.useMemo)(()=>{if(!o)return{serverWebSearchMode:Le(r(ft,`your-own`),`your-own`),serverWebSearchProvider:r(ht,`inference-provider-native`)};let e=o.services?.[`web-search`];return{serverWebSearchMode:Le(e?.mode??r(`vellum:ai:webSearchMode`,`your-own`),`your-own`),serverWebSearchProvider:e?.provider||r(`vellum:ai:webSearchProvider`,`inference-provider-native`)}},[o]),[p,m]=(0,Q.useState)(!1),[h,g]=rt(l),[_,v]=rt(f),[y,b]=(0,Q.useState)(``),S=Ie.has(_),{hasStoredCredential:C}=Be({assistantId:e,credentialKind:`api_key`,credentialName:_,enabled:S}),T=y.trim().length>0,E=p||h===`your-own`&&S&&!C&&!T||!(h!==l||(h===`managed`?`inference-provider-native`:_)!==f)&&!T,O=xe(Xe[_]??`Enter your API key`,C),A=(0,Q.useCallback)(async()=>{m(!0);let t=y.trim(),r=h===`managed`?`inference-provider-native`:_,o=ze(r),l=h===`your-own`&&S&&t.length>0;try{l&&await c(r,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-search":{mode:h,provider:r}}}}).catch(e=>{throw D.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{m(!1);return}m(!1);try{if(n(ft,h),n(ht,r),l){o&&n(o,t);let r=Ge(e,`api_key`,_);i.setQueryData(r,!0),i.invalidateQueries({queryKey:r}),b(``)}D.success(`Web search settings saved.`)}catch(e){a(e,{context:`settings-ai-web-search-persist-local`}),D.error(`Saved, but local preferences could not be written.`)}},[S,s,c,i,e,y,h,_]),j=(0,Q.useCallback)(()=>{let e=ze(_);e&&t(e),b(``),v(`inference-provider-native`),n(ht,`inference-provider-native`)},[_,v]);return(0,$.jsx)(et,{title:`Web Search`,subtitle:`Configure how your assistant should search the web`,mode:h,onModeChange:e=>g(e),children:h===`managed`?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Web search is included with managed inference.`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:A,disabled:E}),p&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(k,{value:_,onChange:v,options:qe.map(e=>({value:e,label:Ae[e]??e}))})]}),S&&(0,$.jsx)(w,{label:`API Key`,type:`password`,value:y,onChange:e=>b(e.target.value),placeholder:O,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:A,disabled:E}),p&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),S&&(0,$.jsx)(tt,{onClick:j,filled:!0})]})]})})}var Bt=`default`;function Vt(){let e=X(),i=u(),{data:o}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),s=G({onSuccess:t=>{W(i,{path:{assistant_id:e}},t)}}),c=Rt(),l=(0,Q.useMemo)(()=>o?o.services?.[`web-fetch`]?.provider||r(`vellum:ai:webFetchProvider`,Bt):r(nt,Bt),[o]),[f,p]=(0,Q.useState)(!1),[m,h]=rt(l),[g,_]=(0,Q.useState)(``),v=Me.has(m),{hasStoredCredential:y}=Be({assistantId:e,credentialKind:`api_key`,credentialName:m,enabled:v}),b=g.trim().length>0,S=f||v&&!y&&!b||m===l&&!b,C=xe(ve[m]??`Enter your API key`,y),T=(0,Q.useCallback)(async()=>{p(!0);let t=g.trim(),r=v&&t.length>0;try{r&&await c(m,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-fetch":{provider:m}}}}).catch(e=>{throw D.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{p(!1);return}p(!1);try{if(n(nt,m),r){let r=He(m);r&&n(r,t);let a=Ge(e,`api_key`,m);i.setQueryData(a,!0),i.invalidateQueries({queryKey:a}),_(``)}D.success(`Web fetch settings saved.`)}catch(e){a(e,{context:`settings-ai-web-fetch-persist-local`}),D.error(`Saved, but local preferences could not be written.`)}},[v,s,c,i,e,g,m]),E=(0,Q.useCallback)(()=>{let e=He(m);e&&t(e),_(``),h(Bt),n(nt,Bt)},[m,h]);return(0,$.jsx)(mt,{id:`web-fetch`,title:`Web Fetch`,subtitle:`Configure how your assistant reads individual web pages`,children:(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(k,{value:m,onChange:h,options:Ce.map(e=>({value:e,label:Ye[e]??e}))})]}),v&&(0,$.jsx)(w,{label:`API Key`,type:`password`,value:g,onChange:e=>_(e.target.value),placeholder:C,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:T,disabled:S}),f&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),v&&(0,$.jsx)(tt,{onClick:E,filled:!0})]})]})})}function Ht({assistantId:e,assistantHandle:t,emailRootDomain:n}){let r=u(),i=l(),[o,p]=c(),[m,h]=(0,Q.useState)(``),[g,y]=(0,Q.useState)(!1),[b,C]=(0,Q.useState)(null),[w,T]=(0,Q.useState)(``),[E,k]=(0,Q.useState)(null),[A,j]=(0,Q.useState)(!1),[M,N]=(0,Q.useState)(!1),[P,F]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{g||!t||m||(h(t),y(!0))},[t,g,m]);let I=d({...ce(),enabled:!0}),L=I.data,R=L?.entitlements,z=R?.managed_email===!0,B=!!R&&!z,V=!L&&I.isError&&!I.isFetching,H=d({...re({path:{assistant_id:e}}),enabled:!B}),U=d({...fe({path:{assistant_id:e}}),enabled:!B}),W=H.data?.results?.[0],G=U.data?.results?.[0],ee=W?`${W.subdomain}.${n}`:null,K=d({...se({path:{assistant_id:e,id:G?.id??``}}),enabled:!!G?.id,refetchOnWindowFocus:!1}),q=d({...me({path:{assistant_id:e,id:W?.id??``}}),enabled:!!W?.id,refetchInterval:e=>{let t=e.state.data?.status;return t===`verified`||t===`failed`?!1:1e4},refetchOnWindowFocus:!0});(0,Q.useEffect)(()=>{o.get(`release`)!==`1`||!W||G||(N(!0),p(e=>{let t=new URLSearchParams(e);return t.delete(`release`),t},{replace:!0}))},[G,W,o,p]);let ge=f(de()),_e=f(pe()),ve=f(ie()),J=f(ae()),Y=(0,Q.useCallback)(()=>{let t={assistant_id:e};r.invalidateQueries({queryKey:le({path:t})}),r.invalidateQueries({queryKey:ue({path:t})}),G?.id&&r.invalidateQueries({queryKey:oe({path:{...t,id:G.id}})}),r.invalidateQueries({queryKey:he()})},[G?.id,e,r]),ye=(0,Q.useCallback)(async()=>{let t=m.trim().toLowerCase();if(!t){C(`Enter a subdomain.`);return}j(!1);try{await ge.mutateAsync({path:{assistant_id:e},body:{subdomain:t}}),h(``),C(null),Y(),D.success(`Domain ${t}.${n} registered.`)}catch(e){C(te(e,void 0,`Failed to register domain.`))}},[e,n,Y,ge,m]),be=(0,Q.useCallback)(async()=>{let t=w.trim().toLowerCase();if(!t){k(`Enter an email username.`);return}try{await ve.mutateAsync({path:{assistant_id:e},body:{username:t}}),T(``),k(null),Y(),D.success(`Email address created.`)}catch(e){k(te(e,void 0,`Failed to create email address.`))}},[e,Y,ve,w]),xe=(0,Q.useCallback)(async()=>{if(G?.id){F(!1);try{await J.mutateAsync({path:{assistant_id:e,id:G.id}}),Y(),D.success(`Email address removed.`)}catch(e){a(e,{context:`email_address_delete`}),D.error(`Failed to remove email address.`)}}},[G?.id,e,J,Y]),Se=(0,Q.useCallback)(async()=>{if(!W?.id)return;if(G){D.error(`Remove the email address first.`);return}N(!1);let t=W.subdomain;try{await _e.mutateAsync({path:{assistant_id:e,id:W.id}}),h(t),Y(),D.success(`Domain released.`)}catch(e){a(e,{context:`email_domain_release`}),D.error(`Failed to release domain.`)}},[G,e,_e,W?.id,W?.subdomain,Y]);if(I.isLoading)return(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(x,{className:`h-4 w-4 animate-spin`}),`Checking subscription…`]});if(B)return(0,$.jsxs)(S,{tone:`info`,icon:(0,$.jsx)(_,{className:`h-4 w-4`,"aria-hidden":!0}),title:`Get a dedicated email address for your assistant`,actions:(0,$.jsx)(s,{size:`compact`,onClick:()=>i(`${ne.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,$.jsx)(`strong`,{children:`Your Own`}),` to bring an existing provider.`]});let Ce=V?(0,$.jsx)(S,{tone:`warning`,title:`Couldn't verify subscription status`,actions:(0,$.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 W?G?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[Ce,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Address`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:G.address}),(0,$.jsx)($e,{status:q.data?.status,message:q.data?.message,isLoading:q.isLoading}),(0,$.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(Qe,{}),onClick:()=>F(!0),disabled:J.isPending,"aria-label":`Remove email address`})]}),(0,$.jsx)(O,{open:P,title:`Remove Email Address`,message:(0,$.jsxs)($.Fragment,{children:[`Are you sure you want to remove `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:G.address}),`? Your assistant will no longer be able to send or receive email at this address.`]}),confirmLabel:`Remove`,destructive:!0,onConfirm:xe,onCancel:()=>F(!1)})]}),K.data?.usage&&(0,$.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,$.jsxs)(`div`,{className:`space-y-4`,children:[Ce,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Domain`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:[W.subdomain,`.`,n]}),(0,$.jsx)($e,{status:q.data?.status,message:q.data?.message,isLoading:q.isLoading}),(0,$.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(Qe,{}),onClick:()=>N(!0),disabled:_e.isPending,"aria-label":`Release domain`})]}),(0,$.jsx)(O,{open:M,title:`Release Domain`,message:(0,$.jsxs)($.Fragment,{children:[`Are you sure you want to release `,(0,$.jsxs)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:[W.subdomain,`.`,n]}),`? The subdomain will become available for others to claim.`]}),confirmLabel:`Release`,destructive:!0,onConfirm:Se,onCancel:()=>N(!1)})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Email address`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex h-9 min-w-0 flex-1 items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${E?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[(0,$.jsx)(`input`,{value:w,onChange:e=>{T(e.target.value.toLowerCase()),E&&k(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,$.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`@`,ee]})]}),(0,$.jsx)(s,{onClick:be,disabled:ve.isPending||!w.trim(),children:ve.isPending?`Creating…`:`Create`})]}),E&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:E})]})]}):(0,$.jsxs)(`div`,{className:`space-y-3`,children:[Ce,(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Subdomain`}),(0,$.jsx)(v,{subdomain:m,onSubdomainChange:e=>{h(e),b&&C(null)},domainSuffix:n,subdomainPlaceholder:`my-assistant`,error:b}),(0,$.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,$.jsx)(s,{onClick:()=>j(!0),disabled:ge.isPending||!m.trim(),children:ge.isPending?`Registering…`:`Register`}),(0,$.jsx)(O,{open:A,title:`Set Subdomain`,message:(0,$.jsxs)($.Fragment,{children:[(0,$.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:ye,onCancel:()=>j(!1)})]})}function Ut(){let e=X(),t=K(),{data:o}=d({...q(),enabled:t}),s=o?.results?.[0]?.handle,c=gt.use.emailRootDomain(),l=Ke(),[u,f]=(0,Q.useState)(()=>l===`gated`?`your-own`:Le(r(ot,`managed`),`managed`)),[p,m]=(0,Q.useState)(()=>{let e=r(it,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),h=d({queryKey:[`byoEmailCredential`,e,p],queryFn:async()=>{let{data:t}=await N({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,Q.useEffect)(()=>{h.error&&a(h.error,{context:`byo_email_credential_check`,bestEffort:!0})},[h.error]);let _=h.data?.hasSecret===!0,v=(0,Q.useCallback)(e=>{f(e),n(ot,e)},[]),x=(0,Q.useCallback)(()=>{n(it,p),D.success(`Email settings saved.`)},[p]),S=(0,Q.useMemo)(()=>st.find(e=>e.id===p)??st[0],[p]),C=(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(b,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,$.jsxs)(`span`,{children:[`Configure `,S.displayName,` via the assistant CLI: ask the assistant to run the`,` `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:S.setupSkill}),` `,`skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`]}),(0,$.jsxs)(`a`,{href:S.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,S.displayName,(0,$.jsx)(y,{className:`h-3 w-3`})]})]})]}),w=(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(k,{value:p,onChange:e=>{(e===`mailgun`||e===`resend`)&&m(e)},options:st.map(e=>({value:e.id,label:e.displayName}))})]}),_?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--system-positive-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-default)]`,children:[(0,$.jsx)(g,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`span`,{children:[S.displayName,` API key configured. To reconfigure, run the`,` `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:S.setupSkill}),` `,`skill.`]})]}),(0,$.jsxs)(`a`,{href:S.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 `,S.displayName,(0,$.jsx)(y,{className:`h-3 w-3`})]})]}):C,(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsx)(Z,{onClick:x,disabled:!1})})]});return l===`gated`?(0,$.jsx)(mt,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,children:w}):(0,$.jsx)(et,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,mode:u,onModeChange:v,children:u===`managed`?(0,$.jsx)(`div`,{className:`space-y-4`,children:l===`disabled`?(0,$.jsx)(ye,{children:`Log in to the Vellum platform to manage email settings.`}):(0,$.jsx)(Ht,{assistantId:e,assistantHandle:s,emailRootDomain:c})}):w})}function Wt(){let e=X(),t=u(),{data:i}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),o=G({onSuccess:n=>{W(t,{path:{assistant_id:e}},n)}}),s=Rt(),[c,l]=rt((0,Q.useMemo)(()=>Le(i?i.services?.[`image-generation`]?.mode??r(`vellum:ai:imageGenMode`,`your-own`):r(dt,`your-own`),`your-own`),[i])),[f,p]=(0,Q.useState)(()=>r(at,`gemini-3.1-flash-image-preview`)),[m,h]=(0,Q.useState)(``),[g,_]=(0,Q.useState)(!1),v=(0,Q.useCallback)(async()=>{_(!0);let r=m.trim(),i=c===`your-own`&&r.length>0;try{i&&await s(lt(f),r),await o.mutateAsync({path:{assistant_id:e},body:{services:{"image-generation":{mode:c}}}}).catch(e=>{throw D.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e});try{await M({path:{assistant_id:e},body:{modelId:f},throwOnError:!0})}catch(e){throw D.error(`Failed to update image generation model. Please try again.`),a(e,{context:`set_image_gen_model`}),e}finally{t.invalidateQueries({queryKey:V({path:{assistant_id:e}})})}}catch{_(!1);return}_(!1);try{n(dt,c),n(at,f),i&&h(``),D.success(`Image generation settings saved.`)}catch(e){a(e,{context:`settings-ai-image-gen-persist-local`}),D.error(`Saved, but local preferences could not be written.`)}},[m,c,f,e,o,s,t]),y=(0,Q.useCallback)(()=>{h(``),p(`gemini-3.1-flash-image-preview`),n(at,`gemini-3.1-flash-image-preview`)},[]);return(0,$.jsx)(et,{title:`Image Generation`,subtitle:`Configure which model your assistant uses to generate images`,mode:c,onModeChange:e=>l(e),children:c===`managed`?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,$.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,$.jsx)(k,{className:`flex-1`,value:f,onChange:p,options:ut.map(e=>({value:e,label:ct[e]??e}))}),(0,$.jsx)(Z,{onClick:v,disabled:g}),g&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsx)(w,{label:`API Key`,type:`password`,value:m,onChange:e=>h(e.target.value),placeholder:lt(f)===`openai`?`Enter your OpenAI API key`:`Enter your Gemini API key`,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,$.jsx)(k,{value:f,onChange:p,options:ut.map(e=>({value:e,label:ct[e]??e}))})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:v,disabled:g}),g&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),(0,$.jsx)(tt,{onClick:y})]})]})})}function Gt(){return(0,Q.useEffect)(()=>{let e=window.location.hash.slice(1);e&&requestAnimationFrame(()=>{document.getElementById(e)?.scrollIntoView({block:`start`})})},[]),(0,$.jsxs)(`div`,{className:`space-y-5`,children:[(0,$.jsx)(pt,{}),(0,$.jsx)(Lt,{}),(0,$.jsx)(zt,{}),(0,$.jsx)(Vt,{}),(0,$.jsx)(Ut,{}),(0,$.jsx)(Wt,{})]})}export{Gt as AiPage};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{a as t,c as n,i as r}from"./local-settings-C-dW2vkq.js";import{r as i,t as a}from"./capture-error-Dhiismgm.js";import{t as o}from"./react-DJZBPgpf.js";import{t as s}from"./button-BQVYX8n_.js";import{m as c,u as l}from"./chunk-5KNZJZUH-SU6Q_tDT.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-Cqi8q9o7.js";import{t as h}from"./createLucideIcon-Bjb-Kuq7.js";import{t as g}from"./circle-check-DWe3QGcN.js";import{n as _,t as v}from"./domain-field-DKKi4dF-.js";import{t as y}from"./external-link-Cczz6xJ4.js";import{t as b}from"./info-DLFMsCl-.js";import{t as x}from"./loader-circle-C9QrtO3C.js";import{t as S}from"./notice-B8UI-BOp.js";import{t as C}from"./tag-D0AE0-aA.js";import{t as w}from"./input-6HVXMszw.js";import{t as T}from"./toggle-CWrJ2t4S.js";import{t as E}from"./modal-bIQsMU63.js";import{n as D}from"./toast-CZmbu5xl.js";import{t as O}from"./confirm-dialog-kE8y7s20.js";import{t as k}from"./dropdown-CuE5AuVj.js";import{Ht as A,Ut as j,bn as M,ct as N,tr as P}from"./sdk.gen-C9GJEKYV.js";import{H as F,V as I,_t as L,c as R,d as z,f as B,l as V,m as H,p as U,u as W,zt as G}from"./react-query.gen-CWfp8GEM.js";import{r as ee}from"./utils-DvUW9GK8.js";import{r as te}from"./api-errors-CrWDzVca.js";import{c as ne}from"./routes-GPGveWZ8.js";import{t as K}from"./use-is-org-ready-CZIgoXmP.js";import{c as re,d as ie,f as ae,g as oe,h as se,it as ce,l as le,m as ue,o as de,p as fe,s as pe,u as me,v as q,y as he}from"./react-query.gen-B-P32qsC.js";import{$r as ge,B as _e,Ci as ve,Di as J,Ei as Y,H as ye,Oi as be,Qr as xe,R as Se,Si as Ce,Ti as we,V as Te,Xr as Ee,Yi as De,Yr as Oe,Zr as ke,_i as Ae,ai as je,bi as Me,di as Ne,ei as Pe,fi as Fe,gi as Ie,hi as Le,ii as Re,mi as ze,ni as Be,oi as Ve,pi as He,ri as Ue,si as We,ti as Ge,ui as Ke,vi as qe,wi as Je,xi as Ye,yi as Xe,z as Ze,zi as Qe}from"./index-CFQIPKjY.js";import{t as X}from"./use-active-assistant-id-DpxCpOc4.js";import{C as $e,D as et,E as Z,T as tt,_ as nt,b as rt,c as it,d as at,l as ot,n as st,r as ct,s as lt,t as ut,u as dt,v as ft,w as pt,x as mt,y as ht}from"./provider-catalogs-mEOdGGoF.js";import{t as gt}from"./environment-store-BX22hkIL.js";var _t=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`}]]),Q=e(o(),1),vt=`__custom__`;function yt(e){return e?!!(e.profile||e.provider||e.model):!1}function bt(e,t){let n=yt(e);return n===yt(t)?n?(e?.profile??null)===(t?.profile??null)&&(e?.provider??null)===(t?.provider??null)&&(e?.model??null)===(t?.model??null):!0:!1}var $=p();function xt({id:e,displayName:t,description:n,defaultProfileLabel:r,draft:i,profileOptions:a,onDraftChange:o,onToggle:s}){let c=yt(i),l=!i||!c?``:i.provider||i.model?vt:i.profile??``,u=l===vt,d=Ue(),f=d[0]??Je[0],p=d.find(e=>e===i?.provider)??f,m=be(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:J(f)??``}):t===``?o(e,null):o(e,{profile:t,provider:null,model:null})}function _(t){let n=J(t)??``;o(e,{...i??{},profile:null,provider:t,model:n})}function v(t){o(e,{...i??{},model:t})}return(0,$.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-default font-medium text-[var(--content-default)]`,children:t}),n&&(0,$.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[n,r&&(0,$.jsxs)(`span`,{className:`ml-1.5 text-body-small-default text-[var(--content-tertiary)] opacity-60`,children:[`· Default: `,r]})]})]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c&&(0,$.jsx)(k,{value:l,onChange:g,options:a,className:`w-44`,menuMinWidth:280,menuAlign:`end`}),(0,$.jsx)(T,{checked:c,onChange:t=>s(e,t),"aria-label":`Override ${t}`})]})]}),c&&u&&(0,$.jsxs)(`div`,{className:`mt-3 space-y-2 border-t border-[var(--border-base)] pt-3`,children:[(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex-1`,children:[(0,$.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(k,{value:p??``,onChange:_,options:d.map(e=>({value:e,label:Y[e]??e}))})]}),(0,$.jsxs)(`div`,{className:`flex-1`,children:[(0,$.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Model`}),(0,$.jsx)(k,{value:i?.model??``,onChange:v,options:m})]})]}),h&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:`Pick a model`})]})]})}function St({isOpen:e,onClose:t,assistantId:n}){let r=(0,Q.useRef)(!1);return(0,$.jsx)(E.Root,{open:e,onOpenChange:e=>{!e&&!r.current&&t()},children:e?(0,$.jsx)(Ct,{assistantId:n,onClose:t,onSavingChange:e=>{r.current=e}}):null})}function Ct({assistantId:e,onClose:t,onSavingChange:n}){let r=u(),{data:i}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),o=(0,Q.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),c=(0,Q.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),l=(0,Q.useMemo)(()=>i?.llm?.callSites??{},[i?.llm?.callSites]),f=(0,Q.useMemo)(()=>Fe(o,c),[o,c]),p=Ue(),m=G({onSuccess:t=>{W(r,{path:{assistant_id:e}},t)}}),[h,g]=(0,Q.useState)(``),[_,v]=(0,Q.useState)(``),[y,b]=(0,Q.useState)({}),[S,C]=(0,Q.useState)(!1),[T,A]=(0,Q.useState)(!1),{data:j,isLoading:M,isError:N,refetch:P}=d({...z({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4,refetchOnWindowFocus:!1}),F=(0,Q.useMemo)(()=>(j?.callSites??[]).filter(e=>e.id!==`mainAgent`),[j]),I=!M&&!N&&!!j&&!!i,L=(0,Q.useMemo)(()=>F.map(e=>e.id),[F]),B=(0,Q.useMemo)(()=>{if(!I)return{};let e={};for(let t of L)if(t in y)e[t]=y[t];else{let n=l[t];e[t]=n?{...n}:{}}return e},[I,L,l,y]),V=(0,Q.useMemo)(()=>new Set(L),[L]),H=(0,Q.useMemo)(()=>Object.entries(l).some(([e,t])=>V.has(e)&&(t?.profile!=null||t?.provider!=null||t?.model!=null)),[l,V]),U=(0,Q.useMemo)(()=>{if(!I)return!1;for(let e of Object.keys(B))if(!bt(B[e],l[e]))return!0;return!1},[I,B,l]),ee=(0,Q.useMemo)(()=>Object.values(B).some(e=>yt(e)&&!!e?.provider&&!e?.model),[B]),te=(0,Q.useMemo)(()=>Te(f,[]).map(e=>({value:e.name,label:Ze(e)})),[f]),ne=(0,Q.useCallback)(()=>{if(!_)return;let e={};for(let t of L)e[t]={profile:_};b(e)},[_,L]),K=(0,Q.useCallback)(e=>[...Te(f,[e]).map(e=>({value:e.name,label:Ze(e)})),{value:vt,label:`Custom`}],[f]),re=(0,Q.useMemo)(()=>{if(!h.trim())return F;let e=h.toLowerCase();return F.filter(t=>(t.displayName??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||(t.domain??``).toLowerCase().includes(e))},[F,h]),ie=(0,Q.useMemo)(()=>{if(!j)return[];let e=j.domains.map(e=>e.id),t=new Map(j.domains.map(e=>[e.id,e])),n=[];for(let r of e){let e=re.filter(e=>e.domain===r);e.length>0&&n.push({domain:t.get(r),sites:e})}let r=new Set(e),i=re.filter(e=>!r.has(e.domain));return i.length>0&&n.push({domain:{id:`other`,displayName:`Other`},sites:i}),n},[j,re]),ae=(0,Q.useCallback)((e,t)=>{b(n=>({...n,[e]:t}))},[]),oe=(0,Q.useCallback)((e,t)=>{if(!t){b(t=>({...t,[e]:null}));return}let n=_e(f,F.find(t=>t.id===e)?.defaultProfile);if(n)b(t=>({...t,[e]:{profile:n}}));else{let t=p[0]??Je[0],n=J(t)??``;b(r=>({...r,[e]:{provider:t,model:n}}))}},[F,f,p]),se=(0,Q.useCallback)(async()=>{C(!0),n?.(!0);try{let n={};for(let e of Object.keys(B)){let t=B[e]??null;n[e]=yt(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(),D.success(`Overrides saved.`)}catch(e){D.error(`Failed to save overrides. Please try again.`),a(e,{context:`call_site_overrides_save`})}finally{C(!1),n?.(!1)}},[B,t,m,n,e]),ce=(0,Q.useCallback)(async()=>{C(!0),n?.(!0);try{let n={};for(let e of Object.keys(B))n[e]=null;await m.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),D.success(`Overrides reset.`)}catch(e){D.error(`Failed to reset overrides. Please try again.`),a(e,{context:`call_site_overrides_reset`})}finally{C(!1),n?.(!1)}},[B,t,m,n,e]);return(0,$.jsxs)(E.Content,{size:`lg`,hideCloseButton:!0,children:[(0,$.jsxs)(E.Header,{children:[(0,$.jsx)(E.Title,{children:`Action Overrides`}),(0,$.jsx)(E.Description,{children:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`})]}),(0,$.jsxs)(E.Body,{children:[(0,$.jsx)(`div`,{className:`mb-4`,children:(0,$.jsx)(w,{type:`search`,value:h,onChange:e=>g(e.target.value),placeholder:`Search actions…`,leftIcon:(0,$.jsx)(De,{className:`h-4 w-4`}),fullWidth:!0})}),te.length>0&&(0,$.jsxs)(`div`,{className:`mb-4 flex items-center gap-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:[(0,$.jsx)(`p`,{className:`min-w-0 flex-1 text-body-medium-default text-[var(--content-default)]`,children:`Use one profile for all actions`}),(0,$.jsx)(k,{value:_,onChange:v,options:te,placeholder:`Choose profile…`,className:`w-44`,menuMinWidth:280,menuAlign:`end`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:ne,disabled:!_||!I||S,children:`Apply to all`})]}),M&&(0,$.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,$.jsx)(x,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}),N&&(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-12 text-center`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Couldn't load actions`}),(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Make sure your assistant is running`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>void P(),children:`Retry`})]}),!M&&!N&&j&&(0,$.jsx)(`div`,{className:`space-y-4`,children:ie.length===0?(0,$.jsx)(`p`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No actions match your search.`}):ie.map(({domain:e,sites:t})=>(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`mb-2 text-body-small-default font-semibold uppercase tracking-wider text-[var(--content-tertiary)]`,children:e.displayName}),(0,$.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>{let t=(()=>{let t=B[e.id]??null;return!t||!yt(t)?``:t.provider||t.model?`__custom__`:t.profile??``})(),n=e.defaultProfile?f.find(t=>t.name===e.defaultProfile)?.label??e.defaultProfile:null;return(0,$.jsx)(xt,{id:e.id,displayName:e.displayName,description:e.description,defaultProfileLabel:n,draft:B[e.id]??null,profileOptions:K(t===``||t===`__custom__`?null:t),onDraftChange:ae,onToggle:oe},e.id)})})]},e.id))})]}),(0,$.jsxs)(E.Footer,{children:[H&&(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>A(!0),disabled:S||!I,tintColor:`var(--system-negative-strong)`,className:`mr-auto`,children:`Reset to Defaults`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:t,disabled:S,children:`Cancel`}),(0,$.jsx)(s,{variant:`primary`,size:`compact`,onClick:()=>void se(),disabled:!U||ee||S,children:S?(0,$.jsx)(x,{className:`h-4 w-4 animate-spin`}):`Save`})]}),(0,$.jsx)(O,{open:T,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:()=>{A(!1),ce()},onCancel:()=>A(!1)})]})}function wt({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,$.jsx)(E.Root,{open:e!==null,onOpenChange:e=>{e||o()},children:(0,$.jsxs)(E.Content,{size:`sm`,children:[(0,$.jsx)(E.Header,{children:(0,$.jsx)(E.Title,{children:`Can't Delete Profile`})}),(0,$.jsxs)(E.Body,{className:`space-y-4`,children:[(0,$.jsx)(m,{variant:`body-medium-default`,as:`p`,children:l}),e&&e.callSiteIds.length>0&&(0,$.jsx)(`ul`,{className:`space-y-1 pl-1`,children:e.callSiteIds.map(e=>(0,$.jsxs)(`li`,{className:`text-body-small-default text-(--content-secondary)`,children:[`• `,(0,$.jsx)(`code`,{children:e})]},e))}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Replacement profile`}),(0,$.jsx)(k,{"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,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:i})]}),(0,$.jsxs)(E.Footer,{children:[(0,$.jsx)(s,{variant:`ghost`,size:`compact`,onClick:o,children:`Cancel`}),(0,$.jsx)(s,{variant:`primary`,size:`compact`,disabled:!n||a,onClick:c,children:a?`Saving…`:`Reassign and Delete`})]})]})})}function Tt(e,t){if(e){let n=be(e).find(e=>e.id===t);if(n)return n.displayName}let n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t}function Et(e,t){let n=[];e.description&&n.push(e.description);let r=e.provider_connection===`vellum`&&t?`vellum`:e.provider,i=[];if(e.model&&i.push(Tt(r,e.model)),r){let e=Y[r]??r;i.push(`hosted by ${e}`)}return i.length>0&&n.push(i.join(` `)),n.join(` – `)}function Dt({profile:e,vellumIsManaged:t,isDragging:n,dropTarget:r,isDeleting:i,deleteError:a,isToggling:o,onDragStart:c,onDragEnd:l,onDragOver:u,onDragLeave:d,onDrop:f,onEditClick:p,onDeleteClick:h,onStatusToggle:g}){let _=e.source===`managed`,v=e.invariant===!0,y=e.status!==`disabled`;return(0,$.jsxs)(`div`,{className:`relative`,children:[r?.name===e.name&&!r.after&&(0,$.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg pr-2 py-2${n?` opacity-50`:``}`,draggable:!_,onDragStart:c,onDragEnd:l,onDragOver:u,onDragLeave:d,onDrop:f,children:[(0,$.jsx)(_t,{className:`h-4 w-4 shrink-0 ${_?`invisible`:`cursor-grab text-[var(--content-tertiary)]`}`}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1${y?``:` opacity-55`}`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:e.label??e.name}),_&&(0,$.jsx)(C,{tone:`positive`,title:`Managed by Platform — this profile cannot be disabled, deleted, or renamed.`,children:`Platform`})]}),e.description||e.model||e.provider?(0,$.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:Et(e,t)}):null]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(!v||!y)&&(0,$.jsx)(`div`,{className:`flex shrink-0 items-center`,title:y?`Active — toggle to hide from pickers`:`Disabled — toggle to show in pickers`,children:(0,$.jsx)(T,{checked:y,onChange:e=>g(e),disabled:o,"aria-label":`${y?`Disable`:`Enable`} ${e.label??e.name}`})}),(0,$.jsxs)(`div`,{className:`flex w-[92px] items-center justify-end gap-2`,children:[(0,$.jsx)(s,{variant:`ghost`,size:`compact`,onClick:p,children:_||v?`View`:`Edit`}),(0,$.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(Qe,{}),"aria-label":`Delete ${e.label??e.name}`,disabled:_||v||i,title:_||v?`Managed profiles cannot be deleted`:void 0,onClick:h,tintColor:`var(--system-negative-strong)`})]})]})]}),r?.name===e.name&&r.after&&(0,$.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),a?(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:a}):null]})}function Ot({isOpen:e,assistantId:t,onClose:n}){let r=u(),{data:i}=d({...R({path:{assistant_id:t}}),staleTime:3e4}),o=(0,Q.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),s=(0,Q.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),c=i?.llm?.activeProfile??null,l=i?.llm?.callSites??{},f=(0,Q.useMemo)(()=>Fe(o,s),[o,s]),p=G({onSuccess:e=>{W(r,{path:{assistant_id:t}},e)}}),[m,h]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(null),{data:v}=d({...I({path:{assistant_id:t}}),enabled:e}),y=v?.connections,b=y?.some(e=>e.name===`vellum`&&e.provider===`vellum`)??!1,x=Object.keys(o);async function S(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&&D.success(`Profile "${n.label??e}" created`),h(!1),_(null)}return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(E.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,$.jsx)(kt,{assistantId:t,vellumIsManaged:b,profiles:o,profileOrder:s,orderedProfiles:f,activeProfile:c,callSiteOverrides:l,onClose:n,onEditClick:e=>{_(e),h(!0)},onNewClick:()=>{_(null),h(!0)}}):null}),(0,$.jsx)(Oe,{isOpen:m,mode:g?g.source===`managed`||g.invariant===!0?`view`:`edit`:`create`,profileName:g?.name,initialValues:g??void 0,existingNames:x,connections:y,assistantId:t,onSave:S,onCancel:()=>{h(!1),_(null)}})]})}function kt({assistantId:e,vellumIsManaged:t,profiles:n,profileOrder:r,orderedProfiles:i,activeProfile:o,callSiteOverrides:c,onClose:l,onEditClick:d,onNewClick:f}){let p=u(),h=G({onSuccess:t=>{W(p,{path:{assistant_id:e}},t)}}),[g,_]=(0,Q.useState)({}),[v,y]=(0,Q.useState)({}),[b,x]=(0,Q.useState)(new Set),[S,C]=(0,Q.useState)(null),[w,T]=(0,Q.useState)(null),[D,O]=(0,Q.useState)(null),[k,A]=(0,Q.useState)(null),j=(0,Q.useRef)(null),M=(0,Q.useRef)(null),[N,P]=(0,Q.useState)(null),[F,I]=(0,Q.useState)(null),[L,R]=(0,Q.useState)(``),[z,B]=(0,Q.useState)(!1),V=(0,Q.useMemo)(()=>i,[i]);async function H(t,r){if(b.has(t.name))return!1;x(e=>new Set(e).add(t.name)),C(null);let i=r?`active`:`disabled`;if(!n[t.name])return x(e=>{let n=new Set(e);return n.delete(t.name),n}),!1;try{return await h.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[t.name]:{status:i}}}}}),!0}catch(e){return a(e,{context:`settings-ai-profile-toggle`}),C(`Couldn't update "${t.label??t.name}". Please try again.`),!1}finally{x(e=>{let n=new Set(e);return n.delete(t.name),n})}}async function U(t){y(e=>({...e,[t]:!0})),_(e=>{let n={...e};return delete n[t],n});try{let n=r.filter(e=>e!==t);await h.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[t]:null},profileOrder:n}}})}catch(e){a(e,{context:`settings-ai-profile-delete`}),_(e=>({...e,[t]:`Failed to delete profile. Please try again.`}))}finally{y(e=>{let n={...e};return delete n[t],n})}}function ee(e){let t=V.find(t=>t.name===e)?.label??e,n=e===o,r=Object.entries(c).filter(([t,n])=>t!==`mainAgent`&&n?.profile===e).map(([e])=>e);if(n||r.length>0){P({name:e,label:t,isActive:n,callSiteIds:r}),R(``),I(null);return}U(e)}async function te(){if(!N||!L)return;B(!0),I(null);let t={};if(N.isActive&&(t.activeProfile=L),N.callSiteIds.length>0){let e={};for(let t of N.callSiteIds)e[t]={profile:L};t.callSites=e}if(Object.keys(t).length>0)try{await h.mutateAsync({path:{assistant_id:e},body:{llm:t}})}catch(e){a(e,{context:`settings-ai-profile-reassign-delete`}),I(`Failed to reassign references. Please try again.`),B(!1);return}let n=N.name;P(null),B(!1),U(n)}async function ne(t,n){if(t===n.name)return;A(null);let i=r.filter(e=>e!==t),o=i.indexOf(n.name);if(o===-1)return;n.after&&(o+=1);let s=[...i.slice(0,o),t,...i.slice(o)];try{await h.mutateAsync({path:{assistant_id:e},body:{llm:{profileOrder:s}}})}catch(e){a(e,{context:`settings-ai-profile-reorder`}),A(`Failed to reorder profiles. Please try again.`)}}let K=V.filter(e=>e.name!==N?.name&&e.source!==`managed`),re=K.length>0?K:V.filter(e=>e.name!==N?.name);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(E.Content,{size:`md`,children:[(0,$.jsxs)(E.Header,{children:[(0,$.jsx)(E.Title,{children:`Model Profiles`}),(0,$.jsx)(E.Description,{children:`Bundle a provider and model into a named profile. Assign profiles to specific actions or swap between them when chatting.`})]}),(0,$.jsxs)(E.Body,{children:[V.length===0?(0,$.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,$.jsx)(`div`,{className:`space-y-1`,children:V.map(e=>(0,$.jsx)(Dt,{profile:e,vellumIsManaged:t,isDragging:w===e.name,dropTarget:D,isDeleting:v[e.name]??!1,deleteError:g[e.name],isToggling:b.has(e.name),onDragStart:t=>{j.current=e.name,T(e.name),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},onDragEnd:()=>{j.current=null,M.current=null,T(null),O(null)},onDragOver:t=>{t.preventDefault();let n=t.currentTarget.getBoundingClientRect(),r=t.clientY>n.top+n.height/2,i={name:e.name,after:r};M.current=i,O(i)},onDragLeave:t=>{t.currentTarget.contains(t.relatedTarget)||(M.current=null,O(t=>t?.name===e.name?null:t))},onDrop:e=>{e.preventDefault();let t=j.current,n=M.current;j.current=null,M.current=null,T(null),O(null),t&&n&&ne(t,n)},onEditClick:()=>d(e),onDeleteClick:()=>ee(e.name),onStatusToggle:t=>void H(e,t)},e.name))}),k&&(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:k}),S&&(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:S})]}),(0,$.jsxs)(E.Footer,{className:`justify-between`,children:[(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:f,children:`+ New Profile`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:l,children:`Done`})]})]}),(0,$.jsx)(wt,{blocked:N,availableReplacements:re,replacement:L,onReplacementChange:R,error:F,saving:z,onClose:()=>{P(null),I(null)},onConfirm:()=>void te()})]})}var At=`0.10.8`;function jt(){return ee(At)}function Mt({mode:e,connection:t,assistantId:n,existingNames:r,onSave:i,onCancel:a}){let[o,c]=(0,Q.useState)(t?.label??``),l=t?.name??``,d=t?.provider??`anthropic`,f=t?.auth.type??`api_key`,[p,h]=(0,Q.useState)(()=>t?.auth.type===`api_key`?t.auth.credential:t?``:`credential/anthropic/api_key`),[g,_]=(0,Q.useState)(t?.baseUrl??``),[v,y]=(0,Q.useState)(()=>t?.models?t.models.map(e=>e.id).join(`, `):``),[b,x]=(0,Q.useState)(!1),[S,C]=(0,Q.useState)(null),T=d===`openai-compatible`,[D,O]=(0,Q.useState)(``),[k,A]=(0,Q.useState)(!1),M=u(),N=(0,Q.useMemo)(()=>je(p),[p]),F=f===`api_key`&&N!==null,{hasStoredCredential:I,isLoading:R}=Be({assistantId:n,credentialKind:`credential`,credentialName:N?`${N.service}:${N.field}`:``,enabled:F}),{credentials:z}=ke({assistantId:n,enabled:f===`api_key`});(0,Q.useEffect)(()=>{let e=t?.provider??`anthropic`;c(t?.label??``),t?.auth.type===`api_key`?h(t.auth.credential):h(t?``:`credential/${e}/api_key`),C(null),_(t?.baseUrl??``),y(t?.models?t.models.map(e=>e.id).join(`, `):``),O(``),A(!1)},[t]);let B=l.trim().length>0;async function V(){if(B){x(!0),C(null);try{let e;if(f===`api_key`){let t=p.trim()||`credential/${d}/api_key`,r=D.trim();if(r){A(!0);try{let e=je(t);await P({path:{assistant_id:n},body:e?{type:`credential`,name:`${e.service}:${e.field}`,value:r}:{type:`api_key`,name:d,value:r},throwOnError:!0});let i=Ge(n,`credential`,e?`${e.service}:${e.field}`:``);M.setQueryData(i,!0),M.invalidateQueries({queryKey:L({path:{assistant_id:n}})})}catch{C(`Failed to save API key. Please try again.`);return}finally{A(!1)}}e={type:`api_key`,credential:t}}else if(t)e=t.auth;else{C(`Nothing to edit. Close and try again.`);return}let r=o.trim()||null,a={auth:e,label:r,...T&&{base_url:g.trim()||null,models:v.trim()?v.split(`,`).map(e=>({id:e.trim()})).filter(e=>e.id):null}},{data:s,error:c,response:u}=await j({path:{assistant_id:n,name:t?.name??l.trim()},body:a});if(!u?.ok){C(We(u?.status,c)??Re(u?.status));return}if(!s){C(`Server returned an empty response. Please try again.`);return}i(s)}catch{C(`Failed to save provider. Please try again.`)}finally{x(!1)}}}let H=z.filter(e=>e.service===d),U=e!==`create`&&t?.auth.type===`api_key`,W=H.length>0||U,G=xe(`Enter your API key`,I);return e===`create`?(0,$.jsx)(Ee,{variant:`modal`,assistantId:n,existingNames:r,defaultProviderType:d,onCreated:i,onCancel:a}):(0,$.jsxs)(E.Content,{size:`md`,children:[(0,$.jsxs)(E.Header,{children:[(0,$.jsx)(E.Title,{children:`Edit Provider`}),(0,$.jsx)(E.Description,{children:t?`Editing ${Ve(t)}.`:`Edit provider settings.`})]}),(0,$.jsxs)(E.Body,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[`Display Name`,` `,(0,$.jsx)(`span`,{className:`text-[var(--content-disabled)]`,children:`(optional)`})]}),(0,$.jsx)(w,{value:o,onChange:e=>c(e.target.value),placeholder:`e.g. My Anthropic Key`,fullWidth:!0})]}),T&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Base URL`}),(0,$.jsx)(w,{value:g,onChange:e=>_(e.target.value),placeholder:`https://api.example.com/v1`,fullWidth:!0})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Models`}),(0,$.jsx)(w,{value:v,onChange:e=>y(e.target.value),placeholder:`model-1, model-2`,fullWidth:!0}),(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:`Comma-separated model identifiers exposed by your endpoint.`})]})]}),f===`api_key`&&(0,$.jsx)(ge,{apiKeyValue:D,onApiKeyChange:O,credential:p,onCredentialChange:h,isLoadingCredential:R,apiKeyPlaceholder:G,provider:d,providerCredentials:H,showAdvancedSection:W,onError:C}),f===`oauth_subscription`&&(0,$.jsx)(Pe,{assistantId:n,onConnected:i}),S&&(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:S})]}),(0,$.jsxs)(E.Footer,{children:[(0,$.jsx)(s,{variant:`ghost`,size:`compact`,onClick:a,children:`Cancel`}),(0,$.jsx)(s,{variant:`primary`,size:`compact`,disabled:!B||b||k,onClick:()=>void V(),children:b?`Saving…`:`Save`})]})]})}var Nt={anthropic:!0,openai:!0,gemini:!0,fireworks:!0,openrouter:!0,vellum:!0};function Pt(e){return e in Nt}function Ft({isOpen:e,assistantId:t,onClose:n}){let[r,i]=(0,Q.useState)(!1),[a,o]=(0,Q.useState)(null),s=u(),{data:c,isLoading:l,isError:f}=d({...I({path:{assistant_id:t}}),enabled:e}),p=jt(),{data:m}=d({...B({path:{assistant_id:t}}),enabled:e&&p}),h=(0,Q.useMemo)(()=>{let e=c?.connections??[];return[...e.filter(e=>e.provider===we),...e.filter(e=>e.provider!==we)]},[c]);function g(){s.invalidateQueries({queryKey:U({path:{assistant_id:t}})}),s.invalidateQueries({queryKey:V({path:{assistant_id:t}})})}function _(e){s.invalidateQueries({queryKey:F({path:{assistant_id:t}})}),i(!1),o(null)}let v=h.map(e=>e.name),y=()=>{i(!1),o(null)};return(0,$.jsx)(E.Root,{open:e,onOpenChange:e=>{e||(r?y():n())},children:e?r?(0,$.jsx)(Mt,{mode:a?`edit`:`create`,connection:a??void 0,assistantId:t,existingNames:v,onSave:_,onCancel:y}):(0,$.jsx)(It,{connections:h,loading:l,isError:f,assistantId:t,supportsDefaultProvider:p,defaultConnectionName:p?m?.resolvedConnectionName??null:null,onDefaultChanged:g,onClose:n,onEditClick:e=>{o(e),i(!0)},onNewClick:()=>{o(null),i(!0)},onConnectionDeleted:()=>{s.invalidateQueries({queryKey:F({path:{assistant_id:t}})})}}):null})}function It({connections:e,loading:t,isError:n,assistantId:r,supportsDefaultProvider:i,defaultConnectionName:o,onDefaultChanged:c,onClose:l,onEditClick:u,onNewClick:d,onConnectionDeleted:p}){let[h,g]=(0,Q.useState)({}),[_,v]=(0,Q.useState)({}),y=f({...H(),onMutate:e=>{let t=e.body?.connectionName;t&&g(e=>{let n={...e};return delete n[t],n})},onSuccess:c,onError:(e,t)=>{a(e,{context:`settings-ai-set-default-provider`});let n=t.body?.connectionName;n&&g(e=>({...e,[n]:`Failed to set default provider. Please try again.`}))}});function b(e){Pt(e.provider)&&y.mutate({path:{assistant_id:r},body:{provider:e.provider,connectionName:e.name}})}async function x(e){v(t=>({...t,[e]:!0})),g(t=>{let n={...t};return delete n[e],n});try{let{response:t}=await A({path:{assistant_id:r,name:e}});t?.ok||t?.status===404?p(e):t?.status===409?g(t=>({...t,[e]:`This provider is in use by a profile or as the default provider. Update those settings before deleting it.`})):g(t=>({...t,[e]:`Failed to delete provider. Please try again.`}))}catch{g(t=>({...t,[e]:`Failed to delete provider. Please try again.`}))}finally{v(t=>{let n={...t};return delete n[e],n})}}return(0,$.jsxs)(E.Content,{size:`md`,children:[(0,$.jsxs)(E.Header,{children:[(0,$.jsx)(E.Title,{children:`Providers`}),(0,$.jsx)(E.Description,{children:`Manage the model providers your assistant can use.`})]}),(0,$.jsx)(E.Body,{children:t?(0,$.jsx)(`div`,{className:`space-y-2 py-2`,children:[1,2,3].map(e=>(0,$.jsx)(`div`,{className:`h-10 animate-pulse rounded-lg bg-[var(--surface-active)]`},e))}):n?(0,$.jsx)(m,{variant:`body-medium-default`,as:`p`,className:`py-4 text-center text-(--system-negative-strong)`,children:`Failed to load providers. Please try again.`}):e.length===0?(0,$.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No providers yet. Add one to get started.`}):(0,$.jsx)(`div`,{className:`space-y-1`,children:e.map(e=>{let t=_[e.name]??!1,n=h[e.name],r=e.isManaged??!1,a=e.name===o,c=Pt(e.provider),l=y.isPending&&y.variables?.body?.connectionName===e.name;return(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg px-2 py-2`,children:[(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:Ve(e)}),r&&(0,$.jsx)(C,{tone:`positive`,title:`Managed by Platform — you can rename this provider, but not edit it.`,children:`Platform`}),a&&(0,$.jsx)(C,{tone:`info`,title:`Built-in profiles (Balanced, Quality, Speed) use this provider.`,children:`Default`})]})}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[i&&!a&&(0,$.jsx)(s,{variant:`ghost`,size:`compact`,disabled:!c||l,title:c?`Use this provider for the built-in profiles.`:`Built-in profiles can't run on this provider.`,onClick:()=>b(e),children:`Set as default`}),!r&&(0,$.jsx)(s,{variant:`ghost`,size:`compact`,onClick:()=>u(e),children:`Edit`}),(0,$.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,$.jsx)(Qe,{}),"aria-label":`Delete ${Ve(e)}`,disabled:r||a||t,title:r?`The Vellum provider cannot be removed`:a?`This is your default provider. Set another provider as default first.`:void 0,onClick:()=>void x(e.name),tintColor:`var(--system-negative-strong)`})]})]}),n?(0,$.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:n}):null]},e.name)})})}),(0,$.jsxs)(E.Footer,{className:`justify-between`,children:[(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:d,children:`+ Add Provider`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:l,children:`Done`})]})]})}function Lt(){let e=X(),t=u(),{data:n}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),r=jt(),{data:i,refetch:o}=d({...B({path:{assistant_id:e}}),enabled:r}),c=i?.availability,l=n?.llm?.activeProfile??null,f=n?.llm?.advisorProfile??null,p=n?.llm?.callSites??{},{profiles:h,profileOrder:g}=Se(n?.llm,e),_=(0,Q.useMemo)(()=>Fe(h,g),[h,g]),v=G({onSuccess:n=>{W(t,{path:{assistant_id:e}},n)}}),[y,b]=rt(l),[C,w]=rt(f),[T,E]=(0,Q.useState)(!1),[O,A]=(0,Q.useState)(!1),[j,M]=(0,Q.useState)(!1),N=(0,Q.useMemo)(()=>Te(_,[y]),[_,y]),P=(0,Q.useMemo)(()=>Te(_,[C]),[_,C]),F=Object.entries(p).filter(([e,t])=>e!==`mainAgent`&&(t?.profile!=null||t?.provider!=null||t?.model!=null)).length,I=F===1?`1 Override`:F>0?`${F} Overrides`:`Overrides`,L=y!==l,z=C!==f,V=(0,Q.useCallback)(async()=>{try{let t={};L&&(t.activeProfile=y),z&&(t.advisorProfile=C),await v.mutateAsync({path:{assistant_id:e},body:{llm:t}}),D.success(`Saved.`)}catch(e){D.error(`Failed to save. Please try again.`),a(e,{context:`settings-ai-language-model-save`})}},[L,z,y,C,v,e]);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(mt,{title:`Language Model`,subtitle:`Configure the LLMs that power your assistant`,children:(0,$.jsxs)(`div`,{className:`space-y-4`,children:[c&&c.status!==`ok`&&(0,$.jsx)(S,{tone:c.status===`unknown`?`warning`:`error`,children:c.message??`Your default provider is not available.`}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Default Profile`}),(0,$.jsx)(k,{value:y??``,onChange:e=>{b(e===``?null:e)},placeholder:`Select a default profile…`,options:N.map(e=>({value:e.name,label:Ze(e)}))}),N.length===0?(0,$.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,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Advisor Profile`}),(0,$.jsx)(k,{value:C??``,onChange:e=>{w(e===``?null:e)},placeholder:`Select an advisor profile…`,options:P.map(e=>({value:e.name,label:Ze(e)}))}),(0,$.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,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>M(!0),children:`Providers`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>E(!0),children:`Profiles`}),(0,$.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>A(!0),children:I})]}),(L||z)&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:V,disabled:v.isPending}),v.isPending&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]})}),e&&(0,$.jsx)(Ot,{isOpen:T,assistantId:e,onClose:()=>E(!1)}),e&&(0,$.jsx)(St,{isOpen:O,onClose:()=>A(!1),assistantId:e}),e&&(0,$.jsx)(Ft,{isOpen:j,assistantId:e,onClose:()=>{M(!1),r&&o()}})]})}function Rt(){let e=X();return(0,Q.useCallback)(async(t,n)=>{try{let{data:r}=await P({path:{assistant_id:e},body:{value:n,type:`api_key`,name:t},throwOnError:!0});Ne(r)}catch(e){throw e instanceof Error&&e.message===`No assistant found`?D.error(`Assistant not ready. Please try again.`):D.error(`Failed to save ${t} API key. Please try again.`),a(e,{context:`provision_provider_key`}),e}},[e])}function zt(){let e=X(),i=u(),{data:o}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),s=G({onSuccess:t=>{W(i,{path:{assistant_id:e}},t)}}),c=Rt(),{serverWebSearchMode:l,serverWebSearchProvider:f}=(0,Q.useMemo)(()=>{if(!o)return{serverWebSearchMode:Le(r(ft,`your-own`),`your-own`),serverWebSearchProvider:r(ht,`inference-provider-native`)};let e=o.services?.[`web-search`];return{serverWebSearchMode:Le(e?.mode??r(`vellum:ai:webSearchMode`,`your-own`),`your-own`),serverWebSearchProvider:e?.provider||r(`vellum:ai:webSearchProvider`,`inference-provider-native`)}},[o]),[p,m]=(0,Q.useState)(!1),[h,g]=rt(l),[_,v]=rt(f),[y,b]=(0,Q.useState)(``),S=Ie.has(_),{hasStoredCredential:C}=Be({assistantId:e,credentialKind:`api_key`,credentialName:_,enabled:S}),T=y.trim().length>0,E=p||h===`your-own`&&S&&!C&&!T||!(h!==l||(h===`managed`?`inference-provider-native`:_)!==f)&&!T,O=xe(Xe[_]??`Enter your API key`,C),A=(0,Q.useCallback)(async()=>{m(!0);let t=y.trim(),r=h===`managed`?`inference-provider-native`:_,o=ze(r),l=h===`your-own`&&S&&t.length>0;try{l&&await c(r,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-search":{mode:h,provider:r}}}}).catch(e=>{throw D.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{m(!1);return}m(!1);try{if(n(ft,h),n(ht,r),l){o&&n(o,t);let r=Ge(e,`api_key`,_);i.setQueryData(r,!0),i.invalidateQueries({queryKey:r}),b(``)}D.success(`Web search settings saved.`)}catch(e){a(e,{context:`settings-ai-web-search-persist-local`}),D.error(`Saved, but local preferences could not be written.`)}},[S,s,c,i,e,y,h,_]),j=(0,Q.useCallback)(()=>{let e=ze(_);e&&t(e),b(``),v(`inference-provider-native`),n(ht,`inference-provider-native`)},[_,v]);return(0,$.jsx)(et,{title:`Web Search`,subtitle:`Configure how your assistant should search the web`,mode:h,onModeChange:e=>g(e),children:h===`managed`?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Web search is included with managed inference.`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:A,disabled:E}),p&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(k,{value:_,onChange:v,options:qe.map(e=>({value:e,label:Ae[e]??e}))})]}),S&&(0,$.jsx)(w,{label:`API Key`,type:`password`,value:y,onChange:e=>b(e.target.value),placeholder:O,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:A,disabled:E}),p&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),S&&(0,$.jsx)(tt,{onClick:j,filled:!0})]})]})})}var Bt=`default`;function Vt(){let e=X(),i=u(),{data:o}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),s=G({onSuccess:t=>{W(i,{path:{assistant_id:e}},t)}}),c=Rt(),l=(0,Q.useMemo)(()=>o?o.services?.[`web-fetch`]?.provider||r(`vellum:ai:webFetchProvider`,Bt):r(nt,Bt),[o]),[f,p]=(0,Q.useState)(!1),[m,h]=rt(l),[g,_]=(0,Q.useState)(``),v=Me.has(m),{hasStoredCredential:y}=Be({assistantId:e,credentialKind:`api_key`,credentialName:m,enabled:v}),b=g.trim().length>0,S=f||v&&!y&&!b||m===l&&!b,C=xe(ve[m]??`Enter your API key`,y),T=(0,Q.useCallback)(async()=>{p(!0);let t=g.trim(),r=v&&t.length>0;try{r&&await c(m,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-fetch":{provider:m}}}}).catch(e=>{throw D.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{p(!1);return}p(!1);try{if(n(nt,m),r){let r=He(m);r&&n(r,t);let a=Ge(e,`api_key`,m);i.setQueryData(a,!0),i.invalidateQueries({queryKey:a}),_(``)}D.success(`Web fetch settings saved.`)}catch(e){a(e,{context:`settings-ai-web-fetch-persist-local`}),D.error(`Saved, but local preferences could not be written.`)}},[v,s,c,i,e,g,m]),E=(0,Q.useCallback)(()=>{let e=He(m);e&&t(e),_(``),h(Bt),n(nt,Bt)},[m,h]);return(0,$.jsx)(mt,{id:`web-fetch`,title:`Web Fetch`,subtitle:`Configure how your assistant reads individual web pages`,children:(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(k,{value:m,onChange:h,options:Ce.map(e=>({value:e,label:Ye[e]??e}))})]}),v&&(0,$.jsx)(w,{label:`API Key`,type:`password`,value:g,onChange:e=>_(e.target.value),placeholder:C,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:T,disabled:S}),f&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),v&&(0,$.jsx)(tt,{onClick:E,filled:!0})]})]})})}function Ht({assistantId:e,assistantHandle:t,emailRootDomain:n}){let r=u(),i=l(),[o,p]=c(),[m,h]=(0,Q.useState)(``),[g,y]=(0,Q.useState)(!1),[b,C]=(0,Q.useState)(null),[w,T]=(0,Q.useState)(``),[E,k]=(0,Q.useState)(null),[A,j]=(0,Q.useState)(!1),[M,N]=(0,Q.useState)(!1),[P,F]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{g||!t||m||(h(t),y(!0))},[t,g,m]);let I=d({...ce(),enabled:!0}),L=I.data,R=L?.entitlements,z=R?.managed_email===!0,B=!!R&&!z,V=!L&&I.isError&&!I.isFetching,H=d({...re({path:{assistant_id:e}}),enabled:!B}),U=d({...fe({path:{assistant_id:e}}),enabled:!B}),W=H.data?.results?.[0],G=U.data?.results?.[0],ee=W?`${W.subdomain}.${n}`:null,K=d({...se({path:{assistant_id:e,id:G?.id??``}}),enabled:!!G?.id,refetchOnWindowFocus:!1}),q=d({...me({path:{assistant_id:e,id:W?.id??``}}),enabled:!!W?.id,refetchInterval:e=>{let t=e.state.data?.status;return t===`verified`||t===`failed`?!1:1e4},refetchOnWindowFocus:!0});(0,Q.useEffect)(()=>{o.get(`release`)!==`1`||!W||G||(N(!0),p(e=>{let t=new URLSearchParams(e);return t.delete(`release`),t},{replace:!0}))},[G,W,o,p]);let ge=f(de()),_e=f(pe()),ve=f(ie()),J=f(ae()),Y=(0,Q.useCallback)(()=>{let t={assistant_id:e};r.invalidateQueries({queryKey:le({path:t})}),r.invalidateQueries({queryKey:ue({path:t})}),G?.id&&r.invalidateQueries({queryKey:oe({path:{...t,id:G.id}})}),r.invalidateQueries({queryKey:he()})},[G?.id,e,r]),ye=(0,Q.useCallback)(async()=>{let t=m.trim().toLowerCase();if(!t){C(`Enter a subdomain.`);return}j(!1);try{await ge.mutateAsync({path:{assistant_id:e},body:{subdomain:t}}),h(``),C(null),Y(),D.success(`Domain ${t}.${n} registered.`)}catch(e){C(te(e,void 0,`Failed to register domain.`))}},[e,n,Y,ge,m]),be=(0,Q.useCallback)(async()=>{let t=w.trim().toLowerCase();if(!t){k(`Enter an email username.`);return}try{await ve.mutateAsync({path:{assistant_id:e},body:{username:t}}),T(``),k(null),Y(),D.success(`Email address created.`)}catch(e){k(te(e,void 0,`Failed to create email address.`))}},[e,Y,ve,w]),xe=(0,Q.useCallback)(async()=>{if(G?.id){F(!1);try{await J.mutateAsync({path:{assistant_id:e,id:G.id}}),Y(),D.success(`Email address removed.`)}catch(e){a(e,{context:`email_address_delete`}),D.error(`Failed to remove email address.`)}}},[G?.id,e,J,Y]),Se=(0,Q.useCallback)(async()=>{if(!W?.id)return;if(G){D.error(`Remove the email address first.`);return}N(!1);let t=W.subdomain;try{await _e.mutateAsync({path:{assistant_id:e,id:W.id}}),h(t),Y(),D.success(`Domain released.`)}catch(e){a(e,{context:`email_domain_release`}),D.error(`Failed to release domain.`)}},[G,e,_e,W?.id,W?.subdomain,Y]);if(I.isLoading)return(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(x,{className:`h-4 w-4 animate-spin`}),`Checking subscription…`]});if(B)return(0,$.jsxs)(S,{tone:`info`,icon:(0,$.jsx)(_,{className:`h-4 w-4`,"aria-hidden":!0}),title:`Get a dedicated email address for your assistant`,actions:(0,$.jsx)(s,{size:`compact`,onClick:()=>i(`${ne.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,$.jsx)(`strong`,{children:`Your Own`}),` to bring an existing provider.`]});let Ce=V?(0,$.jsx)(S,{tone:`warning`,title:`Couldn't verify subscription status`,actions:(0,$.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 W?G?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[Ce,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Address`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:G.address}),(0,$.jsx)($e,{status:q.data?.status,message:q.data?.message,isLoading:q.isLoading}),(0,$.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(Qe,{}),onClick:()=>F(!0),disabled:J.isPending,"aria-label":`Remove email address`})]}),(0,$.jsx)(O,{open:P,title:`Remove Email Address`,message:(0,$.jsxs)($.Fragment,{children:[`Are you sure you want to remove `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:G.address}),`? Your assistant will no longer be able to send or receive email at this address.`]}),confirmLabel:`Remove`,destructive:!0,onConfirm:xe,onCancel:()=>F(!1)})]}),K.data?.usage&&(0,$.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,$.jsxs)(`div`,{className:`space-y-4`,children:[Ce,(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Domain`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:[W.subdomain,`.`,n]}),(0,$.jsx)($e,{status:q.data?.status,message:q.data?.message,isLoading:q.isLoading}),(0,$.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,$.jsx)(Qe,{}),onClick:()=>N(!0),disabled:_e.isPending,"aria-label":`Release domain`})]}),(0,$.jsx)(O,{open:M,title:`Release Domain`,message:(0,$.jsxs)($.Fragment,{children:[`Are you sure you want to release `,(0,$.jsxs)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:[W.subdomain,`.`,n]}),`? The subdomain will become available for others to claim.`]}),confirmLabel:`Release`,destructive:!0,onConfirm:Se,onCancel:()=>N(!1)})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Email address`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex h-9 min-w-0 flex-1 items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${E?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[(0,$.jsx)(`input`,{value:w,onChange:e=>{T(e.target.value.toLowerCase()),E&&k(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,$.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`@`,ee]})]}),(0,$.jsx)(s,{onClick:be,disabled:ve.isPending||!w.trim(),children:ve.isPending?`Creating…`:`Create`})]}),E&&(0,$.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:E})]})]}):(0,$.jsxs)(`div`,{className:`space-y-3`,children:[Ce,(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Subdomain`}),(0,$.jsx)(v,{subdomain:m,onSubdomainChange:e=>{h(e),b&&C(null)},domainSuffix:n,subdomainPlaceholder:`my-assistant`,error:b}),(0,$.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,$.jsx)(s,{onClick:()=>j(!0),disabled:ge.isPending||!m.trim(),children:ge.isPending?`Registering…`:`Register`}),(0,$.jsx)(O,{open:A,title:`Set Subdomain`,message:(0,$.jsxs)($.Fragment,{children:[(0,$.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:ye,onCancel:()=>j(!1)})]})}function Ut(){let e=X(),t=K(),{data:o}=d({...q(),enabled:t}),s=o?.results?.[0]?.handle,c=gt.use.emailRootDomain(),l=Ke(),[u,f]=(0,Q.useState)(()=>l===`gated`?`your-own`:Le(r(ot,`managed`),`managed`)),[p,m]=(0,Q.useState)(()=>{let e=r(it,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),h=d({queryKey:[`byoEmailCredential`,e,p],queryFn:async()=>{let{data:t}=await N({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,Q.useEffect)(()=>{h.error&&a(h.error,{context:`byo_email_credential_check`,bestEffort:!0})},[h.error]);let _=h.data?.hasSecret===!0,v=(0,Q.useCallback)(e=>{f(e),n(ot,e)},[]),x=(0,Q.useCallback)(()=>{n(it,p),D.success(`Email settings saved.`)},[p]),S=(0,Q.useMemo)(()=>st.find(e=>e.id===p)??st[0],[p]),C=(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,$.jsx)(b,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,$.jsxs)(`span`,{children:[`Configure `,S.displayName,` via the assistant CLI: ask the assistant to run the`,` `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:S.setupSkill}),` `,`skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`]}),(0,$.jsxs)(`a`,{href:S.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,S.displayName,(0,$.jsx)(y,{className:`h-3 w-3`})]})]})]}),w=(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,$.jsx)(k,{value:p,onChange:e=>{(e===`mailgun`||e===`resend`)&&m(e)},options:st.map(e=>({value:e.id,label:e.displayName}))})]}),_?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--system-positive-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-default)]`,children:[(0,$.jsx)(g,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,$.jsxs)(`span`,{children:[S.displayName,` API key configured. To reconfigure, run the`,` `,(0,$.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:S.setupSkill}),` `,`skill.`]})]}),(0,$.jsxs)(`a`,{href:S.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 `,S.displayName,(0,$.jsx)(y,{className:`h-3 w-3`})]})]}):C,(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsx)(Z,{onClick:x,disabled:!1})})]});return l===`gated`?(0,$.jsx)(mt,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,children:w}):(0,$.jsx)(et,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,mode:u,onModeChange:v,children:u===`managed`?(0,$.jsx)(`div`,{className:`space-y-4`,children:l===`disabled`?(0,$.jsx)(ye,{children:`Log in to the Vellum platform to manage email settings.`}):(0,$.jsx)(Ht,{assistantId:e,assistantHandle:s,emailRootDomain:c})}):w})}function Wt(){let e=X(),t=u(),{data:i}=d({...R({path:{assistant_id:e}}),staleTime:3e4}),o=G({onSuccess:n=>{W(t,{path:{assistant_id:e}},n)}}),s=Rt(),[c,l]=rt((0,Q.useMemo)(()=>Le(i?i.services?.[`image-generation`]?.mode??r(`vellum:ai:imageGenMode`,`your-own`):r(dt,`your-own`),`your-own`),[i])),[f,p]=(0,Q.useState)(()=>r(at,`gemini-3.1-flash-image-preview`)),[m,h]=(0,Q.useState)(``),[g,_]=(0,Q.useState)(!1),v=(0,Q.useCallback)(async()=>{_(!0);let r=m.trim(),i=c===`your-own`&&r.length>0;try{i&&await s(lt(f),r),await o.mutateAsync({path:{assistant_id:e},body:{services:{"image-generation":{mode:c}}}}).catch(e=>{throw D.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e});try{await M({path:{assistant_id:e},body:{modelId:f},throwOnError:!0})}catch(e){throw D.error(`Failed to update image generation model. Please try again.`),a(e,{context:`set_image_gen_model`}),e}finally{t.invalidateQueries({queryKey:V({path:{assistant_id:e}})})}}catch{_(!1);return}_(!1);try{n(dt,c),n(at,f),i&&h(``),D.success(`Image generation settings saved.`)}catch(e){a(e,{context:`settings-ai-image-gen-persist-local`}),D.error(`Saved, but local preferences could not be written.`)}},[m,c,f,e,o,s,t]),y=(0,Q.useCallback)(()=>{h(``),p(`gemini-3.1-flash-image-preview`),n(at,`gemini-3.1-flash-image-preview`)},[]);return(0,$.jsx)(et,{title:`Image Generation`,subtitle:`Configure which model your assistant uses to generate images`,mode:c,onModeChange:e=>l(e),children:c===`managed`?(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,$.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,$.jsx)(k,{className:`flex-1`,value:f,onChange:p,options:ut.map(e=>({value:e,label:ct[e]??e}))}),(0,$.jsx)(Z,{onClick:v,disabled:g}),g&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsx)(w,{label:`API Key`,type:`password`,value:m,onChange:e=>h(e.target.value),placeholder:lt(f)===`openai`?`Enter your OpenAI API key`:`Enter your Gemini API key`,fullWidth:!0}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,$.jsx)(k,{value:f,onChange:p,options:ut.map(e=>({value:e,label:ct[e]??e}))})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{onClick:v,disabled:g}),g&&(0,$.jsx)(x,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),(0,$.jsx)(tt,{onClick:y})]})]})})}function Gt(){return(0,Q.useEffect)(()=>{let e=window.location.hash.slice(1);e&&requestAnimationFrame(()=>{document.getElementById(e)?.scrollIntoView({block:`start`})})},[]),(0,$.jsxs)(`div`,{className:`space-y-5`,children:[(0,$.jsx)(pt,{}),(0,$.jsx)(Lt,{}),(0,$.jsx)(zt,{}),(0,$.jsx)(Vt,{}),(0,$.jsx)(Ut,{}),(0,$.jsx)(Wt,{})]})}export{Gt as AiPage};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-BQVYX8n_.js";import{m as r,u as i}from"./chunk-5KNZJZUH-SU6Q_tDT.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./input-6HVXMszw.js";import{t as s}from"./dropdown-CuE5AuVj.js";import{t as c}from"./is-electron-y5bNUVyG.js";import{c as l}from"./routes-GPGveWZ8.js";import{mn as u}from"./index-DglwxsvA.js";import{a as d,i as f,n as p,o as m,r as h,s as g}from"./provider-key-DqjTE9QV.js";import"./onboarding-step-layout-zvLUIT7j.js";var _=e(t(),1),v=a();function y(){let e=i(),[t]=r(),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
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-BQVYX8n_.js";import{m as r,u as i}from"./chunk-5KNZJZUH-SU6Q_tDT.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{t as o}from"./input-6HVXMszw.js";import{t as s}from"./dropdown-CuE5AuVj.js";import{t as c}from"./is-electron-y5bNUVyG.js";import{c as l}from"./routes-GPGveWZ8.js";import{mn as u}from"./index-CFQIPKjY.js";import{a as d,i as f,n as p,o as m,r as h,s as g}from"./provider-key-DqjTE9QV.js";import"./onboarding-step-layout-zvLUIT7j.js";var _=e(t(),1),v=a();function y(){let e=i(),[t]=r(),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-Dhiismgm.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-Cqi8q9o7.js";import"./src-clcV9W6_.js";import{E as a,Gt as o,Jt as s,Kt as c,ht as l,mt as u,qt as d}from"./index-DglwxsvA.js";import{t as f}from"./status-badge-pill-0N6rTEBg.js";import{CodeBlock as p,SectionLabel as m}from"./tool-detail-panel-hAWze9O3.js";import{t as h}from"./detail-panel-stop-button-D3RATpA-.js";var g=e(n(),1),_=r();function v({status:e}){return(0,_.jsx)(f,{color:o(e),label:c(e)})}function y({entry:e,onClose:n}){let r=s(e.status),o=!r,c=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:l(e.toolName),title:d(e.status),headerTrailing:(0,_.jsx)(v,{status:e.status}),headerActions:r?(0,_.jsx)(h,{onStop:x,ariaLabel:`Stop command`,disabled:y}):void 0,closeVariant:`outlined`,closeLabel:`Close task detail`,onClose:n,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(m,{children:`Command`}),(0,_.jsx)(p,{text:e.command})]}),c&&(0,_.jsxs)(`div`,{className:`mt-5`,children:[(0,_.jsx)(m,{children:`Output`}),(0,_.jsx)(p,{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};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Dhiismgm.js";import{t as n}from"./react-DJZBPgpf.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-Cqi8q9o7.js";import"./src-clcV9W6_.js";import{E as a,Gt as o,Jt as s,Kt as c,ht as l,mt as u,qt as d}from"./index-CFQIPKjY.js";import{t as f}from"./status-badge-pill-0N6rTEBg.js";import{CodeBlock as p,SectionLabel as m}from"./tool-detail-panel-CKKbVoIf.js";import{t as h}from"./detail-panel-stop-button-Dt2UIyNB.js";var g=e(n(),1),_=r();function v({status:e}){return(0,_.jsx)(f,{color:o(e),label:c(e)})}function y({entry:e,onClose:n}){let r=s(e.status),o=!r,c=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:l(e.toolName),title:d(e.status),headerTrailing:(0,_.jsx)(v,{status:e.status}),headerActions:r?(0,_.jsx)(h,{onStop:x,ariaLabel:`Stop command`,disabled:y}):void 0,closeVariant:`outlined`,closeLabel:`Close task detail`,onClose:n,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(m,{children:`Command`}),(0,_.jsx)(p,{text:e.command})]}),c&&(0,_.jsxs)(`div`,{className:`mt-5`,children:[(0,_.jsx)(m,{children:`Output`}),(0,_.jsx)(p,{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};