@vellumai/web 0.10.5-staging.2 → 0.10.5

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 (78) hide show
  1. package/dist/assets/{account-page-D7N_WAt8.js → account-page-B4_qrJXM.js} +1 -1
  2. package/dist/assets/{acp-run-detail-panel-DGXWy1zV.js → acp-run-detail-panel-ZJb9mPFf.js} +1 -1
  3. package/dist/assets/{advanced-page-CA-Fynld.js → advanced-page-BsF8JW-4.js} +1 -1
  4. package/dist/assets/{ai-page-zZGFrEzO.js → ai-page-BNaD9M7D.js} +1 -1
  5. package/dist/assets/{api-key-screen-CUEhMjCI.js → api-key-screen-DiW5rDSM.js} +1 -1
  6. package/dist/assets/{archive-page-hU8w9ytm.js → archive-page-DZ_8uaQt.js} +1 -1
  7. package/dist/assets/{background-task-detail-panel-BbCZGqHm.js → background-task-detail-panel-DRBcuGts.js} +1 -1
  8. package/dist/assets/{billing-page-DvW9-kBw.js → billing-page-Rw3ECU55.js} +1 -1
  9. package/dist/assets/{bookmarks-page-DnqyJXnk.js → bookmarks-page-DmPcHyC_.js} +1 -1
  10. package/dist/assets/{command-palette-B0pI8wFe.js → command-palette-DkJaPl6x.js} +1 -1
  11. package/dist/assets/{command-palette-window-page-BgQhfKX5.js → command-palette-window-page-v-j032zP.js} +1 -1
  12. package/dist/assets/{community-page-D85Cmkcv.js → community-page-BZ9IruGQ.js} +1 -1
  13. package/dist/assets/{contacts-page-route-BZz1O1XL.js → contacts-page-route-iggE95MQ.js} +1 -1
  14. package/dist/assets/{debug-page-BA2gOVPd.js → debug-page-DhYoaQMd.js} +1 -1
  15. package/dist/assets/{deploy-dialogs-wNJRqYiu.js → deploy-dialogs-Cbti_xsn.js} +1 -1
  16. package/dist/assets/{detail-panel-stop-button-Dc3MB_3r.js → detail-panel-stop-button-BHEQd627.js} +1 -1
  17. package/dist/assets/detail-shell-CPp3KhI8.js +4 -0
  18. package/dist/assets/{developer-page-B9c_NOq0.js → developer-page-D0Ttwt5o.js} +1 -1
  19. package/dist/assets/{devices-page-C_MPiuEN.js → devices-page-CkA_1aNA.js} +1 -1
  20. package/dist/assets/{dictation-overlay-page-dlmrZeaQ.js → dictation-overlay-page-BHrUGwJK.js} +1 -1
  21. package/dist/assets/{document-viewer-page-CVJKsLcz.js → document-viewer-page-CnFgbOqH.js} +1 -1
  22. package/dist/assets/{earn-credits-modal-gdB0QAos.js → earn-credits-modal-DOIDaArW.js} +1 -1
  23. package/dist/assets/{emails-page-wOQsKKch.js → emails-page-B0bc-Gj2.js} +1 -1
  24. package/dist/assets/{file-editor-sKfnpW-D.js → file-editor-Bm5LJXwA.js} +1 -1
  25. package/dist/assets/{general-page-C0EgypjR.js → general-page-Df1AoP_V.js} +1 -1
  26. package/dist/assets/{hatching-screen-B4dscGGq.js → hatching-screen-CENPVFoZ.js} +1 -1
  27. package/dist/assets/{home-page-route-BYUiByXT.js → home-page-route-mQBcsrfW.js} +1 -1
  28. package/dist/assets/{hosting-screen-oFxveMgT.js → hosting-screen-I6v4dE5d.js} +1 -1
  29. package/dist/assets/{identity-page-route-jU_Rzwhx.js → identity-page-route-DlM3U1hC.js} +1 -1
  30. package/dist/assets/index-B-S-gNKm.js +131 -0
  31. package/dist/assets/{inspect-page-BKOxlmBF.js → inspect-page-BIEfENnw.js} +1 -1
  32. package/dist/assets/{install-C22EWSPL.js → install-lYdVLxh2.js} +1 -1
  33. package/dist/assets/{integrations-page-BBcBVFLT.js → integrations-page-BBZ2VFVI.js} +1 -1
  34. package/dist/assets/{intelligence-layout-BqECxena.js → intelligence-layout-zqIx7Q-I.js} +1 -1
  35. package/dist/assets/{keyboard-shortcuts-page-BZTs62Wj.js → keyboard-shortcuts-page-H4mn2-og.js} +1 -1
  36. package/dist/assets/{library-detail-page-Ck65_rdB.js → library-detail-page-DTbtqnJW.js} +1 -1
  37. package/dist/assets/{library-page-BPrjQGL6.js → library-page-CtniKYuA.js} +1 -1
  38. package/dist/assets/{logout-page-8AH_ZU_7.js → logout-page-BbQCJKwL.js} +1 -1
  39. package/dist/assets/{logs-layout-DD-9gYta.js → logs-layout-xXeY2t6B.js} +1 -1
  40. package/dist/assets/{memory-router-playground-page-BRe1h0Mv.js → memory-router-playground-page-BhFJ0lwa.js} +1 -1
  41. package/dist/assets/{mobile-sidebar-drawer-CzcwUqpn.js → mobile-sidebar-drawer-BA9ERuJ7.js} +1 -1
  42. package/dist/assets/{notifications-page-CNz_ce_3.js → notifications-page-BSwHh8Mx.js} +1 -1
  43. package/dist/assets/{oauth-complete-page-BY4IUzM3.js → oauth-complete-page-KFGDIl3q.js} +1 -1
  44. package/dist/assets/{oauth-popup-complete-page-DFSwc7gE.js → oauth-popup-complete-page-C9FKG9VY.js} +1 -1
  45. package/dist/assets/{pairing-page-rN8Xn7wW.js → pairing-page-CT45DoH8.js} +1 -1
  46. package/dist/assets/{plugins-page-BQcsJgVb.js → plugins-page-H6DAm3HM.js} +1 -1
  47. package/dist/assets/{prechat-route-6ome-g7N.js → prechat-route-BfQPMYu8.js} +1 -1
  48. package/dist/assets/{privacy-page-DtQMDaEM.js → privacy-page-CLJnEPBh.js} +1 -1
  49. package/dist/assets/{privacy-screen-DdeTm5d2.js → privacy-screen-DWLF6KuW.js} +1 -1
  50. package/dist/assets/{provider-callback-page-CwplW9PX.js → provider-callback-page-UAlBgfqn.js} +1 -1
  51. package/dist/assets/{research-mock-page-DMXNiiqw.js → research-mock-page-5ewHxOuJ.js} +1 -1
  52. package/dist/assets/{research-onboarding-route-BYbFY_h9.js → research-onboarding-route-RxDDgsKx.js} +1 -1
  53. package/dist/assets/{review-terms-screen-73sQOI_T.js → review-terms-screen-BqGwop2y.js} +1 -1
  54. package/dist/assets/{select-assistant-screen-Y_lcjNSt.js → select-assistant-screen-BfhDJw-S.js} +1 -1
  55. package/dist/assets/{settings-layout-B99yx7iZ.js → settings-layout-D_5HXQhT.js} +1 -1
  56. package/dist/assets/{share-feedback-modal-BqFpqbwt.js → share-feedback-modal-B3axmWXR.js} +1 -1
  57. package/dist/assets/{sidebar-tree-nlZD0iQq.js → sidebar-tree-DM30_BN8.js} +1 -1
  58. package/dist/assets/{signup-page-BBz6b3Nv.js → signup-page-DlqG9kP3.js} +1 -1
  59. package/dist/assets/{skills-page-CyNFwtMm.js → skills-page-C303uEzv.js} +1 -1
  60. package/dist/assets/{sounds-page-DTwqrvjQ.js → sounds-page-DC_yF186.js} +1 -1
  61. package/dist/assets/{subagent-detail-panel-B7-EOosT.js → subagent-detail-panel-B69kOmY_.js} +2 -2
  62. package/dist/assets/{system-events-page-kz2QZXlf.js → system-events-page-CMXtS3Lt.js} +1 -1
  63. package/dist/assets/{tiptap-document-editor-BkhvVzHq.js → tiptap-document-editor-BILtD2S2.js} +1 -1
  64. package/dist/assets/{tool-detail-panel-Djpgj3--.js → tool-detail-panel-CG9Wp2NK.js} +2 -2
  65. package/dist/assets/{trace-page-BEyQxpBX.js → trace-page-k0cYj2Bt.js} +1 -1
  66. package/dist/assets/{upgrade-cancel-page-BMj8YpAx.js → upgrade-cancel-page-KGY9H9Mg.js} +1 -1
  67. package/dist/assets/{upgrade-success-page-BZjQzQQB.js → upgrade-success-page-9MHgGZFb.js} +1 -1
  68. package/dist/assets/{usage-page-YnMiaGbU.js → usage-page-CVI5PvbA.js} +1 -1
  69. package/dist/assets/{use-skill-categories-6bE1o8xC.js → use-skill-categories-nKUbiuQn.js} +1 -1
  70. package/dist/assets/{voice-page-CjOnnW4C.js → voice-page-ChYDqNwz.js} +1 -1
  71. package/dist/assets/{weather-forecast-display-Aqhg0YWH.js → weather-forecast-display-DaU-H5wf.js} +1 -1
  72. package/dist/assets/{welcome-screen-BYiDdI6u.js → welcome-screen-1tj61zH7.js} +1 -1
  73. package/dist/assets/{workflow-detail-panel-CEiMuzvs.js → workflow-detail-panel-Di63Av9t.js} +1 -1
  74. package/dist/assets/{workspace-page-CeCbEfiQ.js → workspace-page-C5nupXN6.js} +1 -1
  75. package/dist/index.html +2 -2
  76. package/package.json +1 -1
  77. package/dist/assets/detail-shell-CyXDiAEa.js +0 -4
  78. package/dist/assets/index-CZ2UBc_U.js +0 -130
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-BG-GkiMq.js";import{t as n}from"./react-DJZBPgpf.js";import{n as r,t as i}from"./button-D-AX8Voo.js";import{d as a,p as o,u as s}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as c}from"./QueryClientProvider-DKhXIxGb.js";import{t as l}from"./useQuery-B45lW1Kk.js";import{t as u}from"./jsx-runtime-CVSDxk6A.js";import{t as d}from"./cn-DvW5mxZR.js";import{t as f}from"./typography-BscuIPxA.js";import{t as p}from"./dropdown-ChWAdhLG.js";import{t as m}from"./panel-item-Q1g7DFJw.js";import{t as h}from"./menu-BLJEjTFD.js";import{n as g,u as _}from"./src-SCpl1O1B.js";import{t as v}from"./notice-CqRgVmeL.js";import{t as y}from"./tag-CW6WC4fE.js";import{n as b,t as x}from"./input-D4W4p0pZ.js";import{t as S}from"./toggle-X_kQW5my.js";import{n as C}from"./list-row-Di0MK3wu.js";import{n as w}from"./stat-square-8mff1dLC.js";import{t as T}from"./modal-BNAVT2FK.js";import{n as E}from"./toast-sdJJ6aTV.js";import{t as D}from"./createLucideIcon-BlMXrA59.js";import{t as O}from"./arrow-left-CP-EhDNF.js";import{t as k}from"./bell-DB1SrBre.js";import{t as A}from"./brain-Bs6LnfHO.js";import{t as j}from"./calendar-CpgH8CqM.js";import{t as M}from"./chevron-right-B6vEpVY0.js";import{t as N}from"./loader-circle-BFRVtR3K.js";import{t as P}from"./repeat-nCGBxntG.js";import{t as ee}from"./sparkles-Bla177ar.js";import{t as F}from"./x-DxL-bCuT.js";import{Bn as I,Fn as L,In as R,Ln as te,Rn as ne,Vn as z}from"./sdk.gen-zA5ns5LT.js";import{A as re,F as ie,I as ae,M as oe,Mt as se,O as B,Rt as ce,c as le,ct as ue,d as de,dt as fe,ft as pe,g as me,h as he,j as ge,k as _e,lt as ve,m as ye,p as be,st as xe,ut as Se,zt as Ce}from"./react-query.gen-BwkZCSTW.js";import{n as V,r as H,t as U}from"./api-errors-DPruG7q9.js";import{a as we}from"./api-1X5EQzNF.js";import{u as Te}from"./native-biometric-BK6_QtW5.js";import{a as W}from"./routes-C6gxiCrz.js";import{n as Ee}from"./utils-P-AuKiE9.js";import{n as De}from"./use-is-mobile-jACt_z2d.js";import{t as Oe}from"./effective-timezone-B99h9zr7.js";import{n as ke}from"./viewer-store-BR99G-Ii.js";import{t as Ae}from"./conversation-store-B8D6wE18.js";import{t as je}from"./conversation-selection-CNssqGbG.js";import{i as Me}from"./composer-focus-n921WsjZ.js";import{t as Ne}from"./browser-DM38C5zq.js";import{t as Pe}from"./lib-BNGjysgr.js";import{Ai as Fe,An as Ie,Cn as Le,En as Re,Fa as ze,Li as Be,Oa as Ve,Sn as He,Ti as Ue,Vi as We,Wi as Ge,bi as Ke,er as qe,fa as Je,ka as Ye,ui as Xe,wn as Ze,xa as Qe,xn as $e,ya as et,yi as tt,z as nt,zi as rt}from"./index-CZ2UBc_U.js";import{t as it}from"./use-active-assistant-id-BVzVN4_g.js";import{t as at}from"./detail-card-EsA9SOvZ.js";import{t as ot}from"./page-shell-WuVNE2W8.js";import{n as st,r as ct}from"./format-date-D4tzd1DT.js";import{n as lt}from"./usage-window-B-YOzKJi.js";import{n as ut,t as dt}from"./schedules-D_sclJNA.js";var ft=D(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),pt=D(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]),mt=D(`mail-open`,[[`path`,{d:`M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z`,key:`1jhwl8`}],[`path`,{d:`m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10`,key:`1qfld7`}]]),G=e(n(),1);async function ht(e,t){let{error:n,response:r}=await I({path:{assistant_id:e},body:t,throwOnError:!1});if(V(r,n,`Failed to create schedule.`),!r.ok)throw new U(r.status,H(n,r,`Failed to create schedule.`))}async function gt(e){return dt(e)}async function _t(e,t,n=10,r){let{data:i,error:a,response:o}=await te({path:{assistant_id:e,id:t},query:{limit:n,before:r},throwOnError:!1});if(V(o,a,`Failed to load schedule runs.`),!o.ok)throw new U(o.status,H(a,o,`Failed to load schedule runs.`));return{runs:i?.runs??[],nextCursor:i?.nextCursor??null}}async function vt(e,t){let{data:n,error:r,response:i}=await z({path:{assistant_id:e},query:{from:t.from,to:t.to},throwOnError:!1});if(V(i,r,`Failed to load schedule usage.`),!i.ok)throw new U(i.status,H(r,i,`Failed to load schedule usage.`));return n?.summaries??[]}async function yt(e,t,n){let{error:r,response:i}=await ne({path:{assistant_id:e,id:t},body:{enabled:n},throwOnError:!1});if(V(i,r,`Failed to toggle schedule.`),!i.ok)throw new U(i.status,H(r,i,`Failed to toggle schedule.`))}async function bt(e,t){let{error:n,response:r}=await L({path:{assistant_id:e,id:t},throwOnError:!1});if(V(r,n,`Failed to delete schedule.`),!r.ok&&r.status!==204)throw new U(r.status,H(n,r,`Failed to delete schedule.`))}async function xt(e,t){let{error:n,response:r}=await R({path:{assistant_id:e,id:t},throwOnError:!1});if(V(r,n,`Failed to run schedule.`),!r.ok)throw new U(r.status,H(n,r,`Failed to run schedule.`))}var St={frequency:`daily`,minute:0,hour24:9,weekdays:[1],dayOfMonth:1},Ct=[{value:0,letter:`S`,short:`Sun`,full:`Sunday`},{value:1,letter:`M`,short:`Mon`,full:`Monday`},{value:2,letter:`T`,short:`Tue`,full:`Tuesday`},{value:3,letter:`W`,short:`Wed`,full:`Wednesday`},{value:4,letter:`T`,short:`Thu`,full:`Thursday`},{value:5,letter:`F`,short:`Fri`,full:`Friday`},{value:6,letter:`S`,short:`Sat`,full:`Saturday`}],wt=[1,2,3,4,5];function K(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,Math.round(e))):t}function Tt(e){let t=Array.from(new Set(e.map(e=>K(e,0,6)).filter(e=>Number.isInteger(e)))).sort((e,t)=>e-t);return t.length>0?t:[1]}function Et(e){let t=K(e.minute,0,59),n=K(e.hour24,0,23);switch(e.frequency){case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${Tt(e.weekdays).join(`,`)}`;case`monthly`:return e.dayOfMonth===`last`?`${t} ${n} L * *`:`${t} ${n} ${K(e.dayOfMonth,1,28)} * *`}}function Dt(e,t){let n=K(e,0,23),r=K(t,0,59),i=n<12?`AM`:`PM`;return`${n%12==0?12:n%12}:${String(r).padStart(2,`0`)} ${i}`}function Ot(e){let t=[`th`,`st`,`nd`,`rd`],n=e%100;return`${e}${t[(n-20)%10]??t[n]??t[0]}`}function kt(e){let t=Tt(e),n=new Set(t);if(t.length===7)return`every day`;if(t.length===5&&wt.every(e=>n.has(e)))return`every weekday`;if(t.length===2&&n.has(0)&&n.has(6))return`every weekend`;if(t.length===1)return`every ${Ct[t[0]]?.full??`day`}`;let r=t.map(e=>Ct[e]?.short??``),i=r.pop();return`every ${r.join(`, `)} & ${i}`}function At(e){let t=Dt(e.hour24,e.minute);switch(e.frequency){case`hourly`:{let t=K(e.minute,0,59);return`Runs every hour at :${String(t).padStart(2,`0`)}`}case`daily`:return`Runs every day at ${t}`;case`weekly`:return`Runs ${kt(e.weekdays)} at ${t}`;case`monthly`:return e.dayOfMonth===`last`?`Runs on the last day of every month at ${t}`:`Runs on the ${Ot(K(e.dayOfMonth,1,28))} of every month at ${t}`}}var q=u(),jt=[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`}],Mt=Array.from({length:12},(e,t)=>{let n=t+1;return{value:String(n),label:String(n)}}),Nt=Array.from({length:12},(e,t)=>{let n=t*5,r=String(n).padStart(2,`0`);return{value:r,label:r}}),Pt=[...Array.from({length:28},(e,t)=>{let n=t+1;return{value:String(n),label:Ot(n)}}),{value:`last`,label:`Last day`}],Ft=[{value:`AM`,label:`AM`},{value:`PM`,label:`PM`}];function It(e,t){let n=e%12;return t===`PM`?n+12:n}function Lt(e){try{let t=new Intl.DateTimeFormat(`en-US`,{timeZone:e,timeZoneName:`short`}).formatToParts(new Date).find(e=>e.type===`timeZoneName`)?.value;return t&&t!==e?`${e} · ${t}`:e}catch{return e}}function Rt({isOpen:e,assistantId:t,onClose:n,onCreated:r}){return(0,q.jsx)(T.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,q.jsx)(zt,{assistantId:t,onClose:n,onCreated:r}):null})}function zt({assistantId:e,onClose:t,onCreated:n}){let r=Ie(),[a,o]=(0,G.useState)(``),[s,c]=(0,G.useState)(``),[l,u]=(0,G.useState)(``),[d,f]=(0,G.useState)(`simple`),[p,m]=(0,G.useState)(St),[h,g]=(0,G.useState)(``),[_,v]=(0,G.useState)(!1),[y,S]=(0,G.useState)(null),C=a.trim(),w=s.trim(),E=l.trim(),D=h.trim(),O=(0,G.useMemo)(()=>d===`simple`?Et(p):D,[d,p,D]),k=(0,G.useMemo)(()=>d===`simple`?At(p):D||`Enter a cron expression to continue.`,[d,p,D]),A=(0,G.useMemo)(()=>Lt(r),[r]),j=C.length>0&&w.length>0&&E.length>0&&O.length>0&&!_;return(0,q.jsxs)(T.Content,{size:`md`,children:[(0,q.jsxs)(T.Header,{children:[(0,q.jsx)(T.Title,{children:`Create schedule`}),(0,q.jsx)(T.Description,{children:`Schedule a recurring instruction for your assistant. Runs in execute mode — the message is delivered to the assistant on each fire.`})]}),(0,q.jsxs)(`form`,{onSubmit:async t=>{if(t.preventDefault(),j){v(!0),S(null);try{await ht(e,{name:C,description:w,expression:O,message:E,timezone:r}),v(!1),n()}catch(e){S(e instanceof Error?e.message:`Failed to create schedule.`),v(!1)}}},children:[(0,q.jsx)(T.Body,{children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,q.jsx)(x,{label:`Name`,placeholder:`Morning briefing`,value:a,onChange:e=>o(e.target.value),required:!0,autoFocus:!0,fullWidth:!0}),(0,q.jsx)(b,{label:`Description`,placeholder:`What is this schedule for?`,value:s,onChange:e=>c(e.target.value),required:!0,fullWidth:!0,rows:2}),(0,q.jsx)(Wt,{label:`Repeat`,children:d===`simple`?(0,q.jsx)(Bt,{cadence:p,onChange:m}):(0,q.jsx)(Ut,{value:h,onChange:g,onUseSimple:()=>f(`simple`)})}),(0,q.jsx)(Kt,{summary:k,mono:d===`advanced`&&D.length>0,timezoneLabel:A}),d===`simple`?(0,q.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e||Et(p)),f(`advanced`)},className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`Advanced — write a cron expression`}):null,(0,q.jsx)(b,{label:`Message`,placeholder:`What should the assistant do on each fire?`,value:l,onChange:e=>u(e.target.value),required:!0,fullWidth:!0,rows:4}),y?(0,q.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:y}):null]})}),(0,q.jsxs)(T.Footer,{children:[(0,q.jsx)(i,{variant:`outlined`,onClick:t,type:`button`,children:`Cancel`}),(0,q.jsx)(i,{variant:`primary`,type:`submit`,disabled:!j,children:_?`Creating…`:`Create schedule`})]})]})]})}function Bt({cadence:e,onChange:t}){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,q.jsx)(w,{items:jt,value:e.frequency,onChange:n=>t({...e,frequency:n}),ariaLabel:`How often the schedule runs`}),e.frequency===`hourly`?(0,q.jsx)(Gt,{label:`At minute`,children:(0,q.jsx)(p,{options:Nt,value:String(e.minute).padStart(2,`0`),onChange:n=>t({...e,minute:Number(n)}),"aria-label":`Minute`,className:`w-24`})}):null,e.frequency===`weekly`?(0,q.jsx)(Gt,{label:`On these days`,children:(0,q.jsx)(Ht,{value:e.weekdays,onChange:n=>t({...e,weekdays:n})})}):null,e.frequency===`monthly`?(0,q.jsx)(Gt,{label:`On day`,children:(0,q.jsx)(p,{options:Pt,value:e.dayOfMonth===`last`?`last`:String(e.dayOfMonth),onChange:n=>t({...e,dayOfMonth:n===`last`?`last`:Number(n)}),"aria-label":`Day of month`,className:`w-32`})}):null,e.frequency===`hourly`?null:(0,q.jsx)(Gt,{label:`At time`,children:(0,q.jsx)(Vt,{hour24:e.hour24,minute:e.minute,onChange:(n,r)=>t({...e,hour24:n,minute:r})})})]})}function Vt({hour24:e,minute:t,onChange:n}){let r=e<12?`AM`:`PM`,i=e%12==0?12:e%12;return(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(p,{options:Mt,value:String(i),onChange:e=>n(It(Number(e),r),t),"aria-label":`Hour`,className:`w-[72px]`}),(0,q.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:`:`}),(0,q.jsx)(p,{options:Nt,value:String(t).padStart(2,`0`),onChange:t=>n(e,Number(t)),"aria-label":`Minute`,className:`w-[72px]`}),(0,q.jsx)(`div`,{className:`w-[112px]`,children:(0,q.jsx)(w,{items:Ft,value:r,onChange:e=>n(It(i,e),t),ariaLabel:`AM or PM`})})]})}function Ht({value:e,onChange:t}){let n=new Set(e),r=e=>{let r=new Set(n);r.has(e)?r.size>1&&r.delete(e):r.add(e),t([...r].sort((e,t)=>e-t))};return(0,q.jsx)(`div`,{className:`flex gap-1.5`,children:Ct.map(e=>{let t=n.has(e.value);return(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(e.value),"aria-pressed":t,"aria-label":e.full,title:e.full,className:d(`flex h-9 w-9 items-center justify-center rounded-md border text-body-medium-default transition-colors`,t?`border-[var(--border-active)] bg-[var(--surface-active)] text-[var(--content-emphasised)]`:`border-[var(--field-border)] text-[var(--content-tertiary)] hover:border-[var(--border-active)] hover:text-[var(--content-default)]`),children:e.letter},e.value)})})}function Ut({value:e,onChange:t,onUseSimple:n}){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,q.jsx)(x,{placeholder:`0 9 * * *`,value:e,onChange:e=>t(e.target.value),fullWidth:!0,className:`font-mono`,"aria-label":`Cron expression`,helperText:`Standard 5-field cron (minute hour day month weekday). RRULE expressions are also accepted.`}),(0,q.jsx)(`button`,{type:`button`,onClick:n,className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`← Back to the simple builder`})]})}function Wt({label:e,children:t}){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:e}),t]})}function Gt({label:e,children:t}){return(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,q.jsx)(`span`,{className:`min-w-[88px] text-body-small-default text-[var(--content-tertiary)]`,children:e}),t]})}function Kt({summary:e,mono:t,timezoneLabel:n}){return(0,q.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3.5 py-3`,children:[(0,q.jsx)(et,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`p`,{className:d(`text-body-medium-default text-[var(--content-default)]`,t&&`break-all font-mono`),children:e}),(0,q.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Times use your timezone — `,n,`.`]})]})]})}function qt(e=Oe(),t=Date.now()){return lt(`7d`,e,t)}function J(e){return e?new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0}):`—`}function Jt(e){return e==null?`—`:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}var Yt=new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`,minimumFractionDigits:2,maximumFractionDigits:2});function Y(e){return e==null||!Number.isFinite(e)?`—`:Yt.format(e)}function Xt(e){return`${e.toLocaleString()} ${e===1?`run`:`runs`}`}function Zt(e){let t=Math.round(e/6e4);return t>=60&&t%60==0?`Every ${t/60} hr`:`Every ${t} min`}function Qt(e){if(!e)return;let t=new Set,n=[];for(let r of e)for(let e of r.runs)t.has(e.id)||(t.add(e.id),n.push(e));return n}function $t(e){return!!e.conversationId&&e.conversationExists===!0&&e.conversationArchivedAt==null}function en(e){return $t(e)?e.conversationId??null:null}function X(e){return typeof e==`string`&&e.length>0}var tn={heartbeat:`system-heartbeat`,consolidation:`system-consolidation`,retrospective:`system-memory-retrospective`};function nn(e){if(e.cronExpression)return e.timezone?`Cron: ${e.cronExpression} (${e.timezone})`:`Cron: ${e.cronExpression}`;let t=Zt(e.intervalMs);return e.activeHoursStart!=null&&e.activeHoursEnd!=null&&(t+=` (${e.activeHoursStart}:00–${e.activeHoursEnd}:00)`),t}function rn(e){return Zt(e.intervalMs)}var an=`After conversation activity`;function on(e,t){return e.status===`fired`||e.status===`cancelled`?!0:e.status===`firing`?!1:e.nextRunAt==null||!e.enabled&&e.nextRunAt<=t}function sn(e,t){let n=[],r=[],i=[];for(let a of e)a.isOneShot?on(a,t)?i.push(a):r.push(a):n.push(a);return n.sort((e,t)=>e.enabled===t.enabled?(e.nextRunAt??1/0)-(t.nextRunAt??1/0):e.enabled?-1:1),r.sort((e,t)=>(e.nextRunAt??1/0)-(t.nextRunAt??1/0)),i.sort((e,t)=>{let n=e.lastRunAt??e.nextRunAt??0;return(t.lastRunAt??t.nextRunAt??0)-n}),{recurring:n,upcomingOneTime:r,pastOneTime:i}}function cn(e,t,n=!0){return{queryKey:[{_id:`schedulesUsagesummaryGet`,path:{assistant_id:e??``},_tz:t}],queryFn:()=>e?vt(e,qt(t)):Promise.resolve([]),enabled:n,staleTime:1e4}}function ln(e){return{scheduleId:e,runCount:0,totalEstimatedCostUsd:0,eventCount:0}}function un(e,t,n){let r=(t??[]).filter(e=>{let t=e.startedAt??e.createdAt;return t>=n.from&&t<=n.to});return{scheduleId:e,runCount:r.length,totalEstimatedCostUsd:r.reduce((e,t)=>{let n=t.estimatedCostUsd;return typeof n==`number`&&Number.isFinite(n)?e+n:e},0),eventCount:0}}function dn({status:e}){return(0,q.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full`,style:{backgroundColor:e===`ok`||e===`completed`?`var(--system-positive-strong)`:e===`error`||e===`failed`?`var(--system-negative-strong)`:`var(--content-tertiary)`},"aria-label":e??`unknown`})}function fn({scheduleName:e,usage:t,onOpenUsage:n}){if(t.status===`loading`)return(0,q.jsxs)(`div`,{"aria-label":`Loading schedule usage`,className:`flex w-[156px] shrink-0 items-center justify-end gap-3`,children:[(0,q.jsx)(`span`,{className:`h-5 w-16 animate-pulse rounded bg-[var(--surface-muted)]`}),(0,q.jsx)(`span`,{className:`h-5 w-16 animate-pulse rounded bg-[var(--surface-muted)]`})]});let r=t.status===`error`,i=r?`--`:Y(t.summary.totalEstimatedCostUsd),a=r?`--`:Xt(t.summary.runCount),o=t.status===`ready`&&!(t.summary.totalEstimatedCostUsd>0),s=t.status===`ready`&&t.summary.runCount===0,c=o?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`,l=s?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`;return(0,q.jsxs)(`div`,{className:`flex w-[156px] shrink-0 items-center justify-end gap-3 text-right text-body-small-default`,children:[n?(0,q.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`View usage for ${e}`,className:`min-w-[64px] cursor-pointer rounded px-1 py-0.5 text-right transition-colors hover:bg-[var(--surface-hover)] ${c}`,children:i}):(0,q.jsx)(`span`,{"aria-label":`Cost for ${e} in the last 7 days: ${i}`,className:`block min-w-[64px] px-1 py-0.5 ${c}`,children:i}),(0,q.jsx)(`span`,{"aria-label":`Runs for ${e} in the last 7 days: ${a}`,className:`block min-w-[64px] px-1 py-0.5 ${l}`,children:a})]})}function pn({name:e,subtitle:t,enabled:n,nextRunAt:r,lastRunAt:i,usage:a,helperText:o,statusLabel:s,statusTone:c=`neutral`,onClick:l}){return(0,q.jsx)(`div`,{className:`flex flex-wrap items-center gap-3 rounded-md px-2 py-3 transition-colors hover:bg-[var(--surface-hover)] [&+&]:border-t [&+&]:border-[var(--border-base)]`,children:(0,q.jsxs)(`button`,{type:`button`,onClick:l,"aria-label":`Open ${e}`,className:`flex min-w-0 flex-1 cursor-pointer flex-wrap items-center gap-3 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,q.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e})}),(0,q.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:t}),o?(0,q.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-secondary)]`,children:o}):null,(0,q.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-body-small-default text-[var(--content-tertiary)]`,children:[r?(0,q.jsxs)(`span`,{children:[`Next: `,J(r)]}):null,i?(0,q.jsxs)(`span`,{children:[`Last: `,J(i)]}):null]})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-3`,children:[(0,q.jsx)(fn,{scheduleName:e,usage:a}),s?(0,q.jsx)(y,{tone:c,children:s}):(0,q.jsx)(`span`,{className:`h-2 w-2 rounded-full`,style:{backgroundColor:n?`var(--system-positive-strong)`:`var(--content-disabled)`},"aria-label":n?`enabled`:`disabled`}),(0,q.jsx)(M,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})})}function mn({heartbeatConfig:e,consolidationConfig:t,retrospectiveConfig:n,heartbeatUsage:r,consolidationUsage:i,retrospectiveUsage:a,isLoading:o,hasError:s,onRetry:c,onSelectHeartbeat:l,onSelectConsolidation:u,onSelectRetrospective:d}){let f=e!=null,p=t?.available===!0,m=n?.available===!0,h=f||p||m;if(!o&&!s&&!h)return null;let _=[...f?[r]:[],...p?[i]:[],...m?[a]:[]].filter(e=>e.status===`ready`),y=_.reduce((e,t)=>e+(t.summary.totalEstimatedCostUsd??0),0),b=o?(0,q.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,q.jsx)(N,{className:`h-5 w-5 animate-spin text-stone-400`})}):s&&!h?(0,q.jsxs)(v,{tone:`error`,children:[`Failed to load system jobs.`,` `,(0,q.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]}):(0,q.jsxs)(`div`,{children:[f?(0,q.jsx)(pn,{name:`Heartbeat`,subtitle:nn(e),enabled:e.enabled,nextRunAt:e.nextRunAt,lastRunAt:e.lastRunAt,usage:r,onClick:l}):null,p?(0,q.jsx)(pn,{name:`Consolidation`,subtitle:rn(t),enabled:t.enabled,helperText:t.enabled?void 0:`Memory is off, so consolidation is paused.`,nextRunAt:t.nextRunAt,lastRunAt:t.lastRunAt,usage:i,statusLabel:t.enabled?void 0:`Paused`,statusTone:`warning`,onClick:u}):null,m?(0,q.jsx)(pn,{name:`Memory retrospective`,subtitle:an,enabled:n.enabled,helperText:n.enabled?void 0:`Memory is off, so retrospectives are paused.`,nextRunAt:n.nextRunAt,lastRunAt:n.lastRunAt,usage:a,statusLabel:n.enabled?void 0:`Paused`,statusTone:`warning`,onClick:d}):null,s?(0,q.jsx)(`div`,{className:`pt-3 first:pt-0`,children:(0,q.jsxs)(v,{tone:`error`,children:[`Some system jobs failed to load.`,` `,(0,q.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]})}):null]});return(0,q.jsx)(at,{children:(0,q.jsx)(g.Root,{type:`multiple`,children:(0,q.jsxs)(g.Item,{value:`system-jobs`,children:[(0,q.jsxs)(g.Trigger,{className:`group justify-between gap-3`,children:[(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1 text-left`,children:[(0,q.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`System`}),(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Built-in jobs managed by the assistant runtime`})]}),(0,q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[_.length>0?(0,q.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[Y(y),` (7d)`]}):null,(0,q.jsx)(Ve,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]})]}),(0,q.jsx)(g.Content,{children:(0,q.jsx)(`div`,{className:`mt-3`,children:b})})]})})})}function hn(e,t){return{id:e.id,jobId:t,status:e.status,startedAt:e.startedAt??e.scheduledFor,finishedAt:e.finishedAt,durationMs:e.durationMs,output:`skipReason`in e&&e.skipReason?`Skipped: ${e.skipReason}`:null,error:e.error,conversationId:e.conversationId,conversationExists:e.conversationExists,conversationArchivedAt:e.conversationArchivedAt,estimatedCostUsd:e.estimatedCostUsd,createdAt:e.createdAt,...`title`in e?{title:e.title}:{}}}function gn(e){return e.runs.map(e=>hn(e,`heartbeat`))}function _n(e){return e.runs.map(e=>hn(e,`consolidation`))}function vn(e){return e.runs.map(e=>hn(e,`retrospective`))}var Z=1e4;function yn(e,t,n,r,i){return e?{status:`loading`}:t?{status:`error`}:{status:`ready`,summary:un(n,r,i)}}function bn(e,n){let r=c(),i={path:{assistant_id:e??``}},{data:a,isLoading:o,isError:s,refetch:u}=l({...B(i),enabled:!!e,staleTime:Z}),{data:d,isLoading:f,isError:p,refetch:m}=l({...be(i),enabled:!!e,staleTime:Z}),{data:h,isLoading:g,isError:_,refetch:v}=l({...xe(i),enabled:!!e,staleTime:Z}),y={path:{assistant_id:e??``},query:{limit:100}},{data:b,isLoading:x,isError:S,refetch:C}=l({...oe(y),select:gn,enabled:!!e&&a!=null,staleTime:Z}),{data:w,isLoading:T,isError:D,refetch:O}=l({...me(y),select:_n,enabled:!!e&&d?.available===!0,staleTime:Z}),{data:k,isLoading:A,isError:j,refetch:M}=l({...Se(y),select:vn,enabled:!!e&&h?.available===!0,staleTime:Z}),N=(0,G.useMemo)(()=>qt(n),[n]),P=(0,G.useMemo)(()=>yn(x,S,tn.heartbeat,b,N),[b,S,x,N]),ee=(0,G.useMemo)(()=>yn(T,D,tn.consolidation,w,N),[w,D,T,N]),F=(0,G.useMemo)(()=>yn(A,j,tn.retrospective,k,N),[k,j,A,N]),I=t=>{if(!e)return;let n={heartbeat:{config:B(i).queryKey,runs:oe(y).queryKey,infinite:ge(i)},consolidation:{config:be(i).queryKey,runs:me(y).queryKey,infinite:he(i)},retrospective:{config:xe(i).queryKey,runs:Se(y).queryKey,infinite:ve(i)}}[t];r.invalidateQueries({queryKey:n.config}),r.invalidateQueries({queryKey:n.runs}),r.invalidateQueries({queryKey:n.infinite})},L=Ce({onSuccess:e=>{e.ran?E.success(`Heartbeat started.`):E.info(`Heartbeat skipped.`)},onError:e=>{t(e,{context:`heartbeat_run_now`}),E.error(`Failed to run heartbeat.`)},onSettled:()=>I(`heartbeat`)}),R=se({onSuccess:e=>{e.ran?E.success(`Consolidation queued.`):E.info(`Consolidation already queued or running.`)},onError:e=>{t(e,{context:`consolidation_run_now`}),E.error(`Failed to run consolidation.`)},onSettled:()=>I(`consolidation`)}),te=ce({onSuccess:e=>{_e(r,i,e),E.success(e.enabled?`Heartbeat enabled.`:`Heartbeat disabled.`)},onError:e=>{t(e,{context:`heartbeat_toggle`}),E.error(`Failed to toggle heartbeat.`)}});return{heartbeatConfig:a,consolidationConfig:d,retrospectiveConfig:h,heartbeatUsage:P,consolidationUsage:ee,retrospectiveUsage:F,isLoading:o||f||g,hasError:s||p||_,isHeartbeatRunning:L.isPending,isConsolidationRunning:R.isPending,isHeartbeatLoading:o,isHeartbeatError:s,isConsolidationLoading:f,isConsolidationError:p,isRetrospectiveLoading:g,isRetrospectiveError:_,refetchHeartbeat:u,refetchConsolidation:m,refetchRetrospective:v,runHeartbeatNow:()=>{e&&L.mutate({path:{assistant_id:e}})},runConsolidationNow:()=>{e&&R.mutate({path:{assistant_id:e}})},toggleHeartbeat:t=>{e&&te.mutate({body:{enabled:t},path:{assistant_id:e}})},refetchAll:()=>{u(),m(),v(),C(),O(),M()}}}var xn=`0.10.5`;function Sn(){return Ee(xn)}function Cn({icon:e,title:t,description:n,actions:r}){return(0,q.jsxs)(`div`,{className:`flex h-full min-h-[400px] flex-col items-center justify-center gap-4 px-4 py-24 text-center`,children:[(0,q.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--surface-base)]`,children:(0,q.jsx)(e,{size:32,className:`text-[var(--content-tertiary)]`})}),(0,q.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:t}),(0,q.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[var(--content-tertiary)]`,children:n}),r?(0,q.jsx)(`div`,{className:`flex flex-col items-center gap-3`,children:r}):null]})}function wn(e){if(e.status===`loading`)return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`h-4 w-12 animate-pulse rounded bg-[var(--surface-muted)]`}),(0,q.jsx)(`span`,{className:`h-4 w-10 animate-pulse rounded bg-[var(--surface-muted)]`})]});if(e.status===`error`)return(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`—`});let{summary:t}=e;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:Y(t.totalEstimatedCostUsd)}),(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:Xt(t.runCount)})]})}function Tn({name:e,metaParts:t,usage:n,enabled:r,selected:i,onClick:a,onToggle:o,toggleAriaLabel:s}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-2 py-3 transition-colors [&+&]:border-t [&+&]:border-[var(--border-base)] ${i?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`}`,children:[o?(0,q.jsx)(S,{checked:r,onChange:o,"aria-label":s}):null,(0,q.jsxs)(`button`,{type:`button`,onClick:a,className:`flex min-w-0 flex-1 cursor-pointer items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,q.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e}),t.length>0?(0,q.jsx)(`span`,{className:`flex min-w-0 items-center gap-2 text-label-small-default text-[var(--content-tertiary)]`,children:t.map((e,t)=>(0,q.jsxs)(G.Fragment,{children:[t>0?(0,q.jsx)(`span`,{className:`h-[3px] w-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}):null,(0,q.jsx)(`span`,{className:`truncate`,children:e})]},t))}):null]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[wn(n),(0,q.jsx)(M,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})]})}function En({schedule:e,usage:t,selected:n,onClick:r,onToggle:i}){let a=e.isOneShot?``:e.cadenceDescription.trim(),o=e.lastRunAt??e.nextRunAt,s=[a,o?J(o):``].filter(Boolean);return(0,q.jsx)(Tn,{name:e.name,metaParts:s,usage:t,enabled:e.enabled,selected:n,onClick:r,onToggle:i,toggleAriaLabel:i?`Toggle ${e.name}`:void 0})}function Dn({recurring:e,oneTime:t,pastOneTime:n,usageForSchedule:r,isLoading:a,isError:o,refetch:s,onToggle:c,onSelectSchedule:l,selectedScheduleId:u,onStartNewChat:d,onCreateSchedule:f,pastOpen:p,onPastOpenChange:m,systemTasksSlot:h}){let _=e=>(0,q.jsx)(En,{schedule:e,usage:r(e.id),selected:e.id===u,onClick:()=>l(e.id),onToggle:t=>c(e.id,t)},e.id),y=e=>(0,q.jsx)(En,{schedule:e,usage:r(e.id),selected:e.id===u,onClick:()=>l(e.id)},e.id),b=n.length>0?(0,q.jsx)(g.Root,{type:`single`,collapsible:!0,className:`mt-3`,value:p?`past`:``,onValueChange:e=>m(e===`past`),children:(0,q.jsxs)(g.Item,{value:`past`,children:[(0,q.jsxs)(g.Trigger,{className:`group gap-[var(--app-spacing-xs)] px-2 text-label-small-default text-[var(--content-tertiary)]`,children:[(0,q.jsx)(M,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,q.jsxs)(`span`,{children:[`Past (`,n.length,`)`]})]}),(0,q.jsx)(g.Content,{children:(0,q.jsx)(`div`,{className:`pt-1`,children:n.map(y)})})]})}):null;return(0,q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[a?(0,q.jsx)(`div`,{className:`space-y-3`,children:Array.from({length:2},(e,t)=>(0,q.jsx)(`div`,{className:`h-12 animate-pulse rounded-md bg-[var(--surface-muted)]`},t))}):o&&e.length===0?(0,q.jsx)(v,{tone:`error`,actions:(0,q.jsx)(`button`,{type:`button`,onClick:s,className:`cursor-pointer underline hover:no-underline`,children:`Retry`}),children:`Failed to load schedules.`}):e.length===0&&t.length===0&&n.length===0?(0,q.jsx)(Cn,{icon:j,title:`No schedules yet`,description:`Ask your assistant to set one up, or create one yourself.`,actions:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(i,{variant:`primary`,size:`regular`,onClick:d,children:`New Conversation`}),(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`or`}),(0,q.jsx)(i,{variant:`outlined`,size:`regular`,onClick:f,children:`Create schedule`})]})}):(0,q.jsxs)(`div`,{children:[e.map(_),t.length>0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`mt-3 px-2 text-label-small-default text-[var(--content-tertiary)]`,children:`One-time`}),t.map(y)]}):null,b]}),h?(0,q.jsx)(`div`,{className:`mt-[var(--app-spacing-lg)]`,children:h}):null]})}function On({children:e}){return(0,q.jsx)(f,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function Q({label:e,value:t}){return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-1`,children:[(0,q.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e}),(0,q.jsx)(`span`,{className:`min-w-0 text-right text-body-medium-lighter text-[var(--content-default)]`,children:t})]})}function kn({icon:e,value:t,label:n}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-3`,children:[(0,q.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-[var(--surface-sunken)] text-[var(--content-secondary)]`,children:e}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-body-large-default text-[var(--content-default)]`,children:t}),(0,q.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:n})]})]})}function An({usage:e}){return e.status===`loading`?(0,q.jsx)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:Array.from({length:2},(e,t)=>(0,q.jsx)(`div`,{className:`h-[60px] animate-pulse rounded-lg bg-[var(--surface-muted)]`},t))}):e.status===`error`?null:(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:[(0,q.jsx)(kn,{icon:(0,q.jsx)(Je,{className:`h-4 w-4`}),value:Y(e.summary.totalEstimatedCostUsd),label:`7 Day Cost`}),(0,q.jsx)(kn,{icon:(0,q.jsx)(P,{className:`h-4 w-4`}),value:Xt(e.summary.runCount),label:`7 Day Runs`})]})}function jn({run:e,index:t,isExpanded:n,onOpenConversation:r,onToggleDetails:i}){let a=en(e),o=X(e.output),s=X(e.error),c=!a&&(o||s),l=`schedule-run-details-${t}`,u=!!a||c,f=(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(dn,{status:e.status}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:J(e.startedAt)}),(0,q.jsxs)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[Jt(e.durationMs),` ·`,` `,Y(e.estimatedCostUsd)]}),e.status===`error`&&e.error?(0,q.jsxs)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--system-negative-strong)]`,children:[e.error.slice(0,120),e.error.length>120?`…`:``]}):null]}),u?(0,q.jsx)(M,{className:d(`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform`,c&&n?`rotate-90`:``)}):null]}),p=c&&n?(0,q.jsx)(`div`,{id:l,className:`px-2 pb-3`,children:(0,q.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[o?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,q.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,s?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,q.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null;return a?(0,q.jsx)(`div`,{children:(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(a),"aria-label":`Open conversation for run at ${J(e.startedAt)}`,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:f})}):c?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),"aria-label":`Toggle output for run at ${J(e.startedAt)}`,"aria-expanded":n,"aria-controls":l,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:f}),p]}):(0,q.jsx)(`div`,{className:`flex items-center gap-3 px-2 py-3`,children:f})}function Mn({runs:e,isLoading:t,onOpenConversation:n}){let[r,i]=(0,G.useState)(null);return t?(0,q.jsx)(`div`,{className:`flex items-center justify-center py-6`,children:(0,q.jsx)(N,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,q.jsx)(`p`,{className:`py-2 text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:`No runs yet.`}):(0,q.jsx)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:e.map((e,t)=>(0,q.jsx)(jn,{run:e,index:t,isExpanded:r===e.id,onOpenConversation:n,onToggleDetails:e=>i(t=>t===e?null:e)},e.id))})}function Nn({schedule:e,assistantId:n,usage:r,isMobile:o,onClose:s,onDeleted:c}){let u=a(),{data:p,isLoading:m}=l({queryKey:fe({path:{assistant_id:n,id:e.id}}),queryFn:()=>_t(n,e.id),staleTime:1e4}),[h,g]=(0,G.useState)(!1),[_,v]=(0,G.useState)(!1),[y,b]=(0,G.useState)(!1),x=async()=>{g(!0);try{await xt(n,e.id)}catch(e){t(e,{context:`schedule_run_now`}),E.error(`Failed to run schedule.`)}finally{g(!1)}},S=async()=>{b(!0);try{await bt(n,e.id),c()}catch(e){t(e,{context:`schedule_delete`}),E.error(`Failed to delete schedule.`),b(!1),v(!1)}};return(0,q.jsxs)(`div`,{className:d(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,q.jsx)(f,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:e.name})}),(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(F,{}),onClick:s,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,q.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[e.description?(0,q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e.description}):null,(0,q.jsxs)(`section`,{children:[(0,q.jsx)(On,{children:`Details`}),(0,q.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] px-4 py-2`,children:[e.cadenceDescription?(0,q.jsx)(Q,{label:`Cadence`,value:e.cadenceDescription}):null,(0,q.jsx)(Q,{label:`Mode`,value:e.mode}),(0,q.jsx)(Q,{label:`Status`,value:e.enabled?`Enabled`:`Disabled`}),(0,q.jsx)(Q,{label:`Next run`,value:J(e.nextRunAt)}),e.lastRunAt?(0,q.jsx)(Q,{label:`Last run`,value:(0,q.jsxs)(`span`,{className:`flex items-center justify-end gap-2`,children:[(0,q.jsx)(dn,{status:e.lastStatus}),J(e.lastRunAt)]})}):null]})]}),(0,q.jsx)(An,{usage:r}),(0,q.jsxs)(`section`,{children:[(0,q.jsx)(On,{children:`Recent runs`}),(0,q.jsx)(Mn,{runs:p?.runs,isLoading:m,onOpenConversation:e=>u(W.conversation(e))})]})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[_?(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(i,{variant:`ghost`,onClick:()=>v(!1),disabled:y,children:`Cancel`}),(0,q.jsx)(i,{variant:`danger`,onClick:()=>void S(),disabled:y,children:y?`Deleting…`:`Yes, delete`})]}):(0,q.jsx)(i,{variant:`dangerOutline`,leftIcon:(0,q.jsx)(Xe,{className:`h-3.5 w-3.5`}),onClick:()=>v(!0),children:`Delete`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(i,{variant:`outlined`,leftIcon:(0,q.jsx)(Ye,{className:`h-3.5 w-3.5`}),onClick:()=>u(W.logs.usageForSchedule(e.id)),children:`View usage`}),e.mode===`script`?(0,q.jsx)(i,{variant:`primary`,leftIcon:h?(0,q.jsx)(N,{className:`h-3.5 w-3.5 animate-spin`}):void 0,onClick:()=>void x(),disabled:h,children:h?`Running…`:`Run now`}):null]})]})]})}var Pn=`Default (assistant's main model)`,Fn=`Custom call-site model`;function In(e,t){return t?.[e]?.displayName??e}function Ln(e,t){if(e==null)return;if(e.provider!=null||e.model!=null)return Fn;let n=e.profile?.trim();return n?`Override (${In(n,t)})`:void 0}function Rn({assistantId:e,pinnedProfile:t,defaultCallSite:n=`mainAgent`,fallbackLabel:r=Pn,respectCallSiteOverride:i=!1}){let a=t==null,{data:o}=l({...le({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),s=(0,G.useMemo)(()=>o?ut(o):{},[o]),{data:c}=l({...de({path:{assistant_id:e}}),enabled:!!e&&a,staleTime:6e4}),u=a&&i?Ln(o?.llm?.callSites?.[n],s):void 0,d=a?c?.callSites.find(e=>e.id===n)?.defaultProfile:void 0,f=t==null?u??(d==null?r:`Default (${In(d,s)})`):In(t,s);return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Model profile`}),(0,q.jsx)(`span`,{className:`min-w-0 text-right`,children:f})]})}function zn({runs:e,isLoading:t,emptyMessage:n=`No runs yet.`,hasMore:r=!1,isLoadingMore:o=!1,onLoadMore:s}){let c=a(),[l,u]=(0,G.useState)(null);return(0,q.jsx)(at,{title:`Recent runs`,children:t?(0,q.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,q.jsx)(N,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,q.jsx)(`p`,{className:`py-4 text-center text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:n}):(0,q.jsxs)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:[e.map((e,t)=>{let n=en(e),r=X(e.output),i=X(e.error),a=!n&&(r||i),o=l===e.id,s=`schedule-run-details-${t}`;return(0,q.jsxs)(`div`,{children:[(0,q.jsx)(m,{label:(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,q.jsx)(dn,{status:e.status}),(0,q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`span`,{className:`block truncate text-body-medium-lighter text-[var(--content-default)]`,children:X(e.title)?e.title:J(e.startedAt)}),(0,q.jsxs)(`span`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[X(e.title)?`${J(e.startedAt)} · `:``,Jt(e.durationMs),` ·`,` `,Y(e.estimatedCostUsd),e.status===`error`&&e.error&&(0,q.jsxs)(`span`,{className:`ml-2 text-[var(--system-negative-strong)]`,children:[e.error.slice(0,80),e.error.length>80?`…`:``]})]})]}),n||a?(0,q.jsx)(M,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform ${o?`rotate-90`:``}`}):null]}),onSelect:n?()=>c(W.conversation(n)):a?()=>u(o?null:e.id):void 0,"aria-label":`Run at ${J(e.startedAt)}`,"aria-expanded":a?o:void 0,"aria-controls":a?s:void 0,className:`h-auto py-2.5 gap-3 -mx-2 px-2`}),a&&o?(0,q.jsx)(`div`,{id:s,className:`px-2 pb-3`,children:(0,q.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[r?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,q.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,i?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,q.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null]},e.id)}),r&&s?(0,q.jsx)(`div`,{className:`flex justify-center pt-3`,children:(0,q.jsx)(i,{variant:`outlined`,size:`compact`,onClick:s,disabled:o,leftIcon:o?(0,q.jsx)(N,{className:`h-3.5 w-3.5 animate-spin`}):void 0,children:o?`Loading…`:`Load more`})}):null]})})}var Bn={heartbeat:`heartbeatAgent`,consolidation:`memoryV2Consolidation`,retrospective:`memoryRetrospective`};function Vn({children:e}){return(0,q.jsx)(f,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function Hn({kind:e,assistantId:t,systemTasks:n,canOpenMemorySettings:r,isMobile:o,onClose:s}){let c=a(),{heartbeatConfig:l,consolidationConfig:u,retrospectiveConfig:p}=n,m,h,g,_,y,b,x;e===`heartbeat`?(m=`Heartbeat`,h=l?nn(l):``,g=l?.enabled??!1,_=l?.nextRunAt??null,y=l?.lastRunAt??null,b=n.isHeartbeatRunning,x=n.runHeartbeatNow):e===`consolidation`?(m=`Consolidation`,h=u?rn(u):``,g=u?.enabled??!1,_=u?.nextRunAt??null,y=u?.lastRunAt??null,b=n.isConsolidationRunning,x=n.runConsolidationNow):(m=`Memory retrospective`,h=an,g=p?.enabled??!1,_=p?.nextRunAt??null,y=p?.lastRunAt??null,b=!1,x=void 0);let C=e!==`heartbeat`,w=e===`retrospective`,T=C&&!g,E=b||T,D=C?g?`On · Managed by Memory`:`Paused`:g?`Enabled`:`Disabled`,O=w?`Memory is off, so retrospectives are paused. Turn Memory back on to resume them.`:`Memory is off, so consolidation is paused. Turn Memory back on to resume consolidation.`,k=C&&g&&r,A={path:{assistant_id:t},query:{limit:25}},j=e===`heartbeat`?re(A):e===`consolidation`?ye(A):ue(A),{data:M,isLoading:P,fetchNextPage:ee,hasNextPage:I,isFetchingNextPage:L}=ze({queryKey:j.queryKey,queryFn:j.queryFn,initialPageParam:{path:A.path,query:{}},getNextPageParam:e=>e.nextCursor??void 0,staleTime:1e4}),R=Qt(M?.pages.map(t=>({runs:t.runs.map(t=>hn(t,e))})));return(0,q.jsxs)(`div`,{className:d(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(f,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:m}),h?(0,q.jsx)(f,{variant:`body-small-default`,as:`p`,className:`truncate text-[var(--content-tertiary)]`,children:h}):null]}),(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(F,{}),onClick:s,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,q.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[(0,q.jsxs)(`section`,{children:[(0,q.jsx)(Vn,{children:`Details`}),(0,q.jsxs)(`div`,{className:`space-y-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] px-4 py-3 text-body-medium-lighter`,children:[(0,q.jsx)(Rn,{assistantId:t,defaultCallSite:Bn[e],fallbackLabel:`Default (system task model)`,respectCallSiteOverride:!0}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Status`}),(0,q.jsxs)(`span`,{className:`flex items-center gap-2 text-[var(--content-default)]`,children:[(0,q.jsx)(`span`,{children:D}),C?null:(0,q.jsx)(S,{checked:g,onChange:n.toggleHeartbeat,"aria-label":`Toggle ${m}`})]})]}),w?null:(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Next run`}),(0,q.jsx)(`span`,{className:`text-[var(--content-default)]`,children:J(_)})]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Last run`}),(0,q.jsx)(`span`,{className:`text-[var(--content-default)]`,children:J(y)})]})]}),T?(0,q.jsx)(v,{tone:`warning`,className:`mt-4`,actions:r?(0,q.jsx)(i,{variant:`outlined`,size:`compact`,onClick:()=>c(W.settings.advanced),children:`Turn on Memory`}):void 0,children:O}):null]}),(0,q.jsx)(zn,{runs:R,isLoading:P,hasMore:I,isLoadingMore:L,onLoadMore:()=>void ee()})]}),k||x?(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-end gap-2 border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[k?(0,q.jsx)(i,{variant:`outlined`,leftIcon:(0,q.jsx)(Ke,{className:`h-3.5 w-3.5`}),onClick:()=>c(W.settings.advanced),children:`Memory settings`}):null,x?(0,q.jsx)(i,{variant:`primary`,leftIcon:b?(0,q.jsx)(N,{className:`h-3.5 w-3.5 animate-spin`}):(0,q.jsx)(Fe,{className:`h-3.5 w-3.5`}),onClick:x,disabled:E,children:b?`Running…`:`Run now`}):null]}):null]})}var $={security:{icon:tt,strong:`var(--feed-nudge-strong)`,weak:`var(--feed-nudge-weak)`},email:{icon:We,strong:`var(--feed-digest-strong)`,weak:`var(--feed-digest-weak)`},scheduling:{icon:et,strong:`var(--feed-thread-strong)`,weak:`var(--feed-thread-weak)`},background:{icon:Ke,strong:`var(--system-info-strong)`,weak:`var(--system-info-weak)`},system:{icon:k,strong:`var(--feed-digest-strong)`,weak:`var(--feed-digest-weak)`}},Un=[`security`,`email`,`scheduling`,`background`,`system`],Wn=`all`;function Gn({categories:e,activeFilter:t,onFilterChange:n}){let r=Un.filter(t=>e.includes(t));if(r.length<=1)return null;let i=[{value:Wn,label:`All`,icon:(0,q.jsx)(Ge,{className:`h-4 w-4`})},...r.map(e=>{let t=$[e].icon;return{value:e,label:e.charAt(0).toUpperCase()+e.slice(1),icon:(0,q.jsx)(t,{className:`h-4 w-4`})}})];return(0,q.jsx)(w,{ariaLabel:`Filter notifications`,value:t??Wn,onChange:e=>n(e===Wn?null:e),items:i,className:`self-start !w-auto [&>*]:!flex-none`})}function Kn(e,t){!t||!Te()||(e.preventDefault(),Ne(t))}var qn={p:({children:e})=>(0,q.jsx)(`p`,{className:`mb-2 text-body-medium-default last:mb-0`,style:{color:`var(--content-secondary)`},children:e}),strong:({children:e})=>(0,q.jsx)(`strong`,{style:{color:`var(--content-default)`},children:e}),em:({children:e})=>(0,q.jsx)(`em`,{style:{color:`var(--content-default)`},children:e}),a:({href:e,children:t})=>(0,q.jsx)(`a`,{href:e,className:`underline`,style:{color:`var(--content-link)`},target:`_blank`,rel:`noopener noreferrer`,onClick:t=>Kn(t,e),children:t}),ul:({children:e})=>(0,q.jsx)(`ul`,{className:`mb-2 list-disc pl-5 text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e}),ol:({children:e})=>(0,q.jsx)(`ol`,{className:`mb-2 list-decimal pl-5 text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e}),li:({children:e})=>(0,q.jsx)(`li`,{className:`mb-0.5`,children:e}),code:({children:e})=>(0,q.jsx)(`code`,{className:`rounded px-1 py-0.5 font-mono text-[0.85em]`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 8%, transparent)`,color:`var(--content-default)`},children:e}),pre:({children:e})=>(0,q.jsx)(`pre`,{className:`mb-2 overflow-x-auto rounded p-3 font-mono text-[0.85em]`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`,color:`var(--content-default)`},children:e}),h1:({children:e})=>(0,q.jsx)(`h1`,{className:`mb-2 text-title-medium first:mt-0`,style:{color:`var(--content-default)`},children:e}),h2:({children:e})=>(0,q.jsx)(`h2`,{className:`mb-2 text-title-small first:mt-0`,style:{color:`var(--content-default)`},children:e}),h3:({children:e})=>(0,q.jsx)(`h3`,{className:`mb-1 text-body-medium-default first:mt-0`,style:{color:`var(--content-default)`},children:e}),blockquote:({children:e})=>(0,q.jsx)(`blockquote`,{className:`mb-2 border-l-2 pl-3 text-body-medium-default`,style:{borderColor:`var(--border-base)`,color:`var(--content-tertiary)`},children:e}),table:({children:e})=>(0,q.jsx)(`div`,{className:`mb-2 overflow-x-auto`,children:(0,q.jsx)(`table`,{className:`w-full border-collapse text-body-small-default`,style:{color:`var(--content-secondary)`},children:e})}),thead:({children:e})=>(0,q.jsx)(`thead`,{style:{backgroundColor:`var(--surface-lift)`},children:e}),tbody:({children:e})=>(0,q.jsx)(`tbody`,{children:e}),tr:({children:e})=>(0,q.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border-base)`},children:e}),th:({children:e})=>(0,q.jsx)(`th`,{className:`px-2 py-1.5 text-left font-semibold`,style:{color:`var(--content-default)`},children:e}),td:({children:e})=>(0,q.jsx)(`td`,{className:`px-2 py-1.5 align-top`,children:e})};function Jn({content:e,className:t}){return(0,q.jsx)(`div`,{className:d(`text-body-medium-default`,t),children:(0,q.jsx)(Pe,{remarkPlugins:[nt],components:qn,children:e})})}function Yn({item:e}){return(0,q.jsx)(Jn,{content:e.summary})}function Xn(e){switch(e){case`revoked`:case`expired`:return`var(--system-negative-strong)`;case`missing_scopes`:case`missing_token`:case`ping_failed`:return`var(--system-mid-strong)`;default:return`var(--content-disabled)`}}function Zn(e){return e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Qn({item:e}){let t=e.metadata,n=t?.provider;if(!n)return(0,q.jsx)(f,{variant:`body-medium-default`,className:`text-[var(--content-secondary)]`,children:e.title??e.summary});let r=t?.accountInfo??null,i=t?.status??`unreachable`,a=t?.details??``,o=Array.isArray(t?.missingScopes)?t.missingScopes:[];return(0,q.jsxs)(`div`,{className:`flex flex-col gap-[var(--app-spacing-md)]`,children:[(0,q.jsx)(f,{variant:`title-small`,as:`h3`,children:n}),r?(0,q.jsx)(f,{variant:`body-medium-lighter`,className:`text-[var(--content-secondary)]`,children:r}):null,(0,q.jsxs)(`div`,{className:`flex items-center gap-[var(--app-spacing-sm)]`,children:[(0,q.jsx)(`span`,{className:`inline-block shrink-0 rounded-full`,style:{width:8,height:8,backgroundColor:Xn(i)},"aria-hidden":`true`}),(0,q.jsx)(f,{variant:`body-medium-default`,className:`text-[var(--content-default)]`,children:Zn(i)})]}),a?(0,q.jsx)(f,{variant:`body-medium-lighter`,className:`text-[var(--content-secondary)]`,children:a}):null,o.length>0?(0,q.jsxs)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xs)]`,children:[(0,q.jsx)(f,{variant:`body-small-emphasised`,className:`text-[var(--content-secondary)]`,children:`Missing scopes`}),(0,q.jsx)(`ul`,{className:`m-0 flex list-disc flex-col gap-[var(--app-spacing-xxs)] pl-[var(--app-spacing-lg)]`,children:o.map(e=>(0,q.jsx)(`li`,{children:(0,q.jsx)(f,{variant:`body-small-default`,className:`text-[var(--content-tertiary)]`,children:e})},e))})]}):null]})}function $n(e){return e&&$[e]?$[e]:$.system}function er(e){return e.title?e.title:e.category?e.category.charAt(0).toUpperCase()+e.category.slice(1):`Notification`}function tr({item:e,isMobile:t,validConversationIds:n,onClose:r,onGoToThread:a,onUpdateStatus:o,onDismiss:s,onViewSchedule:c}){if(!e)return null;let l=e.detailPanel?.kind,u=er(e),d=$n(e.category),p=d.icon,m=e.status===`new`,h=e.status===`dismissed`,g=!!e.conversationId&&n.has(e.conversationId);return t?(0,q.jsxs)(`div`,{className:`flex h-full flex-col bg-[var(--surface-overlay)]`,children:[(0,q.jsxs)(`div`,{className:`relative flex shrink-0 items-center px-3 py-2`,children:[(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(O,{}),onClick:r,"aria-label":`Back`,tooltip:`Back`}),(0,q.jsx)(f,{variant:`body-medium-default`,className:`pointer-events-none absolute inset-x-0 text-center text-[var(--content-secondary)]`,children:`Details`}),(0,q.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,q.jsx)(i,{variant:`ghost`,iconOnly:m?(0,q.jsx)(mt,{}):(0,q.jsx)(We,{}),onClick:()=>o(e.id,m?`seen`:`new`),"aria-label":m?`Mark as read`:`Mark as unread`,tooltip:m?`Mark as read`:`Mark as unread`}),h?(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(Ue,{}),onClick:()=>o(e.id,`seen`),"aria-label":`Restore`,tooltip:`Restore`}):(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(Xe,{}),onClick:()=>s(e.id),"aria-label":`Dismiss`,tooltip:`Dismiss`})]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,q.jsx)(`span`,{className:`flex shrink-0 items-center justify-center rounded-full`,style:{width:40,height:40,backgroundColor:d.weak},"aria-hidden":`true`,children:(0,q.jsx)(p,{width:18,height:18,style:{color:d.strong}})}),(0,q.jsx)(f,{variant:`title-small`,className:`min-w-0 text-[var(--content-default)]`,children:u}),(0,q.jsx)(y,{tone:`neutral`,className:`shrink-0`,title:st(e.timestamp),children:ct(e.timestamp)})]}),(0,q.jsx)(`div`,{className:`mx-4 border-b border-[var(--border-disabled)]`}),(0,q.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:l===`toolPermission`?(0,q.jsx)(Qn,{item:e}):(0,q.jsx)(Yn,{item:e})}),g||c?(0,q.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 px-4 pb-4 pt-2`,children:[c?(0,q.jsx)(i,{variant:`outlined`,fullWidth:!0,leftIcon:(0,q.jsx)(j,{className:`size-4`}),onClick:c,children:`View schedule`}):null,g?(0,q.jsx)(i,{variant:`primary`,fullWidth:!0,onClick:()=>a(e.conversationId),children:`Go to Conversation`}):null]}):null]}):(0,q.jsxs)(`div`,{className:`flex h-full flex-col rounded-[var(--radius-xl)] border border-[var(--border-base)] bg-[var(--surface-overlay)]`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-[var(--app-spacing-sm)] border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,q.jsx)(`span`,{className:`flex shrink-0 items-center justify-center rounded-full`,style:{width:28,height:28,backgroundColor:d.weak},"aria-hidden":`true`,children:(0,q.jsx)(p,{width:14,height:14,style:{color:d.strong}})}),(0,q.jsx)(f,{variant:`title-small`,className:`min-w-0 flex-1 truncate text-[var(--content-default)]`,children:u}),g?(0,q.jsx)(i,{variant:`outlined`,onClick:()=>a(e.conversationId),children:`Go to Convo`}):null,(0,q.jsx)(i,{variant:`outlined`,iconOnly:(0,q.jsx)(F,{}),onClick:r,"aria-label":`Close detail panel`,tooltip:`Close`})]}),(0,q.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-[var(--app-spacing-lg)]`,children:[l===`toolPermission`?(0,q.jsx)(Qn,{item:e}):(0,q.jsx)(Yn,{item:e}),(0,q.jsx)(`div`,{className:`mt-[var(--app-spacing-md)]`,children:(0,q.jsx)(y,{tone:`neutral`,title:st(e.timestamp),children:ct(e.timestamp)})})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-[var(--app-spacing-sm)] border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,q.jsx)(`div`,{children:c?(0,q.jsx)(i,{variant:`outlined`,leftIcon:(0,q.jsx)(j,{className:`size-4`}),onClick:c,children:`View schedule`}):null}),(0,q.jsx)(`div`,{className:`flex items-center gap-[var(--app-spacing-sm)]`,children:h?(0,q.jsx)(i,{variant:`primary`,onClick:()=>o(e.id,`seen`),children:`Restore`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(i,{variant:`outlined`,onClick:()=>o(e.id,m?`seen`:`new`),children:m?`Mark as read`:`Mark as unread`}),(0,q.jsx)(i,{variant:`primary`,onClick:()=>s(e.id),children:`Dismiss`})]})})]})]})}var nr={heartbeat:ft,memory_consolidation:A,schedule:et,auto_analysis:ee,user:rt,other:Qe},rr=`all`;function ir({sources:e,activeSource:t,onSourceChange:n}){if(e.length<=1)return null;let r=e.find(e=>e.key===t)??null,a=r?nr[r.type]:pt;return(0,q.jsxs)(h.Root,{children:[(0,q.jsx)(h.Trigger,{children:(0,q.jsx)(i,{variant:`outlined`,size:`compact`,active:r!==null,leftIcon:(0,q.jsx)(a,{className:`h-4 w-4`}),rightIcon:(0,q.jsx)(Ve,{className:`h-3.5 w-3.5`}),"aria-label":`Filter notifications by source`,children:r?r.label:`All sources`})}),(0,q.jsx)(h.Content,{align:`start`,className:`max-h-80 overflow-y-auto`,children:(0,q.jsxs)(h.RadioGroup,{value:t??rr,onValueChange:e=>n(e===rr?null:e),children:[(0,q.jsx)(h.RadioItem,{value:rr,children:`All sources`}),(0,q.jsx)(h.Separator,{}),e.map(e=>(0,q.jsx)(h.RadioItem,{value:e.key,children:e.label},e.key))]})})]})}function ar({label:e,onClick:t,className:n,children:i}){return(0,q.jsx)(r,{content:e,children:(0,q.jsx)(`button`,{type:`button`,"aria-label":e,onClick:e=>{e.stopPropagation(),t()},className:d(`flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md`,`text-[var(--content-secondary)] transition-colors`,`hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,n),children:i})})}function or(e){return e&&$[e]?$[e]:$.system}function sr({item:e,isActive:t=!1,validConversationIds:n,onSelect:r,onDismiss:i,onToggleRead:a,onGoToThread:o,trailingAction:s=`dismiss`}){let[c,l]=(0,G.useState)(!1),u=or(e.category),f=u.icon,p=e.status===`new`,m=s===`restore`;return(0,q.jsxs)(`button`,{type:`button`,onClick:()=>r(e),onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),className:d(`flex min-h-[48px] w-full cursor-pointer items-center gap-[var(--app-spacing-sm)]`,`rounded-[var(--radius-md)] px-[var(--app-spacing-md)] py-[var(--app-spacing-sm)]`,`transition-[background-color,opacity] duration-150`,t?`bg-[var(--surface-active)]`:c?`bg-[var(--surface-hover)]`:`bg-[var(--surface-overlay)]`,!p&&!t&&`opacity-70`),children:[(0,q.jsxs)(`span`,{className:`relative shrink-0`,"aria-hidden":`true`,children:[(0,q.jsx)(`span`,{className:`flex items-center justify-center rounded-full`,style:{width:26,height:26,backgroundColor:u.weak},children:(0,q.jsx)(f,{width:12,height:12,style:{color:u.strong}})}),p&&(0,q.jsx)(`span`,{className:`absolute -left-0.5 -top-0.5 h-2 w-2 rounded-full bg-[var(--system-mid-strong)]`})]}),(0,q.jsx)(`span`,{className:d(`text-body-medium-default min-w-0 flex-1 truncate text-left`,`text-[var(--content-secondary)]`),children:e.title??e.summary}),c&&!m?(0,q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-[var(--app-spacing-sm)]`,children:[a&&(0,q.jsx)(ar,{label:p?`Mark as read`:`Mark as unread`,onClick:()=>a(e.id,p?`seen`:`new`),children:p?(0,q.jsx)(mt,{width:16,height:16}):(0,q.jsx)(We,{width:16,height:16})}),o&&e.conversationId&&(!n||n.has(e.conversationId))&&(0,q.jsx)(ar,{label:`Go to thread`,onClick:()=>{p&&a&&a(e.id,`seen`),o(e.conversationId)},children:(0,q.jsx)(Be,{width:16,height:16})}),(0,q.jsx)(ar,{label:`Dismiss`,onClick:()=>i(e.id),children:(0,q.jsx)(Xe,{width:16,height:16})})]}):c&&m?(0,q.jsxs)(ar,{label:`Restore`,onClick:()=>i(e.id),className:`w-auto gap-[var(--app-spacing-xs)] px-2`,children:[(0,q.jsx)(Ue,{width:16,height:16,"aria-hidden":`true`}),(0,q.jsx)(`span`,{className:`text-body-small-default`,children:`Restore`})]}):(0,q.jsx)(`span`,{className:`shrink-0 text-body-small-default text-[var(--content-tertiary)]`,children:ct(e.timestamp)})]})}function cr(e){return[...e].sort((e,t)=>e.priority===t.priority?new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime():t.priority-e.priority)}function lr(e){let t=new Date,n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),r=new Date(t.getFullYear(),t.getMonth(),t.getDate()-1),i={today:[],yesterday:[],older:[]};for(let t of e){let e=new Date(t.createdAt);e>=n?i.today.push(t):e>=r?i.yesterday.push(t):i.older.push(t)}let a=new Map;return i.today.length>0&&a.set(`today`,i.today),i.yesterday.length>0&&a.set(`yesterday`,i.yesterday),i.older.length>0&&a.set(`older`,i.older),a}function ur(e,t){return t===null?e:e.filter(e=>(e.category??`system`)===t)}function dr(e){return e.filter(e=>e.urgency!==`high`&&e.urgency!==`critical`)}function fr(e){let t=new Set;for(let n of e)t.add(n.category??`system`);return[...t]}var pr={heartbeat:0,memory_consolidation:1,schedule:2,auto_analysis:3,user:4,other:5};function mr(e){let t=new Map;for(let n of e){let e=n.sourceKey;!e||t.has(e)||t.set(e,{key:e,label:n.sourceLabel??e,type:n.sourceType??`other`})}return[...t.values()].sort((e,t)=>{let n=pr[e.type]-pr[t.type];return n===0?e.label.localeCompare(t.label):n})}function hr(e,t){return t===null?e:e.filter(e=>e.sourceKey===t)}var gr={today:`Today`,yesterday:`Yesterday`,older:`Older`},_r=10080*60*1e3;function vr(e,t){return e.status===`new`||e.status===`dismissed`?!1:t-new Date(e.createdAt).getTime()>_r}function yr({items:e,selectedItemId:t,validConversationIds:n,onSelectItem:r,onDismissItem:i,onRestoreItem:a,onToggleRead:o,onGoToThread:s,archivedOpen:c,onArchivedOpenChange:l,dismissedOpen:u,onDismissedOpenChange:d}){let[p,m]=(0,G.useState)(null),[h,_]=(0,G.useState)(null),[v]=(0,G.useState)(()=>Date.now()),y=dr(e.filter(e=>e.status!==`dismissed`)),b=y.filter(e=>!vr(e,v)),x=cr(y.filter(e=>vr(e,v))),S=fr(b),C=mr(b),w=p&&S.includes(p)?p:null,T=h&&C.some(e=>e.key===h)?h:null;p!==w&&m(w),h!==T&&_(T);let E=lr(cr(hr(ur(b,w),T))),D=e.filter(e=>e.status===`dismissed`).sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime());return(0,q.jsxs)(`div`,{className:`flex flex-col gap-[var(--app-spacing-lg)]`,children:[(S.length>1||C.length>1)&&(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-[var(--app-spacing-sm)]`,children:[(0,q.jsx)(Gn,{categories:S,activeFilter:w,onFilterChange:m}),(0,q.jsx)(ir,{sources:C,activeSource:T,onSourceChange:_})]}),E.size===0?w||T?(0,q.jsx)(f,{variant:`body-medium-lighter`,className:`py-[var(--app-spacing-xl)] text-center text-[var(--content-disabled)]`,children:`No items match the selected filter.`}):(0,q.jsx)(Cn,{icon:k,title:`No notifications yet`,description:`Updates and activity from your assistant will appear here.`}):[...E.entries()].map(([e,a])=>(0,q.jsxs)(`section`,{className:`flex flex-col gap-[var(--app-spacing-md)]`,children:[(0,q.jsx)(f,{variant:`body-small-default`,as:`h3`,className:`text-[var(--content-tertiary)]`,children:gr[e]}),(0,q.jsx)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xs)]`,children:a.map(e=>(0,q.jsx)(sr,{item:e,isActive:e.id===t,validConversationIds:n,onSelect:r,onDismiss:i,onToggleRead:o,onGoToThread:s},e.id))})]},e)),x.length>0&&(0,q.jsx)(g.Root,{type:`single`,collapsible:!0,value:c?`archived-read`:``,onValueChange:e=>l?.(e===`archived-read`),children:(0,q.jsxs)(g.Item,{value:`archived-read`,children:[(0,q.jsxs)(g.Trigger,{className:`group gap-[var(--app-spacing-xs)] text-body-small-default text-[var(--content-tertiary)]`,children:[(0,q.jsx)(M,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,q.jsxs)(`span`,{children:[`Earlier (`,x.length,`)`]})]}),(0,q.jsx)(g.Content,{children:(0,q.jsx)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xs)] pt-[var(--app-spacing-sm)]`,children:x.map(e=>(0,q.jsx)(sr,{item:e,isActive:e.id===t,validConversationIds:n,onSelect:r,onDismiss:i,onToggleRead:o,onGoToThread:s},e.id))})})]})}),D.length>0&&(0,q.jsx)(g.Root,{type:`single`,collapsible:!0,value:u?`dismissed`:``,onValueChange:e=>d?.(e===`dismissed`),children:(0,q.jsxs)(g.Item,{value:`dismissed`,children:[(0,q.jsxs)(g.Trigger,{className:`group gap-[var(--app-spacing-xs)] text-body-small-default text-[var(--content-tertiary)]`,children:[(0,q.jsx)(M,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,q.jsxs)(`span`,{children:[`Dismissed (`,D.length,`)`]})]}),(0,q.jsx)(g.Content,{children:(0,q.jsx)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xs)] pt-[var(--app-spacing-sm)]`,children:D.map(e=>(0,q.jsx)(sr,{item:e,onSelect:r,onDismiss:a,trailingAction:`restore`},e.id))})})]})})]})}function br(){return(0,q.jsx)(`h1`,{className:`shrink-0 text-title-large text-[var(--content-default)]`,children:`Activity`})}function xr(e){let n=Ie(),[r]=(0,G.useState)(()=>Date.now()),{data:i,isLoading:a,isError:o,refetch:s}=l({queryKey:pe({path:{assistant_id:e??``}}),queryFn:()=>e?gt(e):Promise.resolve([]),staleTime:1e4}),{data:c,isLoading:u,isError:d}=l(cn(e,n,!0)),{recurring:f,oneTime:p,pastOneTime:m}=(0,G.useMemo)(()=>{let e=sn(i??[],r);return{recurring:e.recurring,oneTime:e.upcomingOneTime,pastOneTime:e.pastOneTime}},[r,i]),h=(0,G.useMemo)(()=>new Map((c??[]).map(e=>[e.scheduleId,e])),[c]);return{recurring:f,oneTime:p,pastOneTime:m,usageForSchedule:(0,G.useCallback)(e=>u?{status:`loading`}:d?{status:`error`}:{status:`ready`,summary:h.get(e)??ln(e)},[d,u,h]),handleToggle:(0,G.useCallback)(async(n,r)=>{if(e)try{await yt(e,n,r),s()}catch(e){t(e,{context:`schedule_toggle`}),E.error(`Failed to toggle schedule.`)}},[e,s]),isLoading:a,isError:o,refetch:(0,G.useCallback)(()=>{s()},[s])}}function Sr(e){let t=c(),n=(0,G.useMemo)(()=>ae({path:{assistant_id:e??``}}),[e]),r=l({...ie({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),i=(0,G.useCallback)(()=>{e&&t.invalidateQueries({queryKey:n})},[e,t,n]);return{...r,invalidate:i}}function Cr(){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xl)]`,children:[(0,q.jsx)(`div`,{className:`h-7 w-64 animate-pulse rounded-md bg-[var(--surface-lift)]`}),(0,q.jsx)(`div`,{className:`flex flex-col gap-[var(--app-spacing-sm)]`,children:Array.from({length:4},(e,t)=>(0,q.jsx)(`div`,{className:`h-16 animate-pulse rounded-md bg-[var(--surface-lift)]`},t))})]})}function wr(e){let t=e?.metadata?.scheduleId;return typeof t==`string`&&t.length>0?t:null}function Tr({assistantId:e,validConversationIds:t,activeTab:n,onTabChange:r,routeScheduleId:a,onSelectScheduleId:o,onStartNewChat:s,onOpenConversation:c}){let u=De(),d=Ie(),f=Ze(e);Sr(e);let p=xr(e),m=bn(e,d),{data:h=!1}=l({queryKey:[`assistant-memory-opt-out-capability`,e],queryFn:async()=>{let t=await we(e);return t.ok&&t.data.capabilities?.memoryOptOut===!0},retry:!1,staleTime:1e4}),[g,v]=(0,G.useState)(!1),y=a,[b,x]=(0,G.useState)(null),[S,w]=(0,G.useState)(null),[T,E]=(0,G.useState)(!1),[D,O]=(0,G.useState)(!1),[k,A]=(0,G.useState)(!1),j=y?p.recurring.find(e=>e.id===y)??p.oneTime.find(e=>e.id===y)??p.pastOneTime.find(e=>e.id===y)??null:null;(0,G.useEffect)(()=>{y&&!p.isLoading&&!j&&o(null)},[y,j,p.isLoading,o]);let M=S===`heartbeat`?m.heartbeatConfig!=null:S===`consolidation`?m.consolidationConfig?.available===!0:S===`retrospective`?m.retrospectiveConfig?.available===!0:!1;(0,G.useEffect)(()=>{S&&!m.isLoading&&!M&&w(null)},[S,M,m.isLoading]);let N=(0,G.useCallback)(e=>{x(null),w(null),o(e)},[o]),P=(0,G.useCallback)(e=>{x(null),y&&o(null),w(e)},[o,y]),ee=(0,G.useCallback)(e=>{w(null),e.status===`new`?(x({...e,status:`seen`}),f.updateStatus.mutate({itemId:e.id,status:`seen`})):x(e)},[f.updateStatus]),F=(0,G.useCallback)(()=>{x(null)},[]),I=(0,G.useCallback)(e=>{f.updateStatus.mutate({itemId:e,status:`dismissed`}),b?.id===e&&x(null)},[f.updateStatus,b?.id]),L=(0,G.useCallback)(e=>{f.updateStatus.mutate({itemId:e,status:`seen`}),x(t=>t?.id===e?{...t,status:`seen`}:t)},[f.updateStatus]),R=(0,G.useCallback)((e,t)=>{f.updateStatus.mutate({itemId:e,status:t}),x(n=>n?.id===e?{...n,status:t}:n)},[f.updateStatus]),te=(0,G.useCallback)(e=>{x(null),c(e)},[c]),ne=f.data?.items??[],z=dr(ne.filter(e=>e.status!==`dismissed`)),re=z.filter(e=>e.status===`new`).length,ie=z.length,ae=Sn(),oe=(0,G.useCallback)(()=>{f.markAll.mutate({from:[`new`],to:`seen`,ids:z.filter(e=>e.status===`new`).map(e=>e.id)})},[f.markAll,z]),se=(0,G.useCallback)(()=>{f.markAll.mutate({from:[`new`,`seen`,`acted_on`],to:`dismissed`,ids:z.map(e=>e.id)}),x(null)},[f.markAll,z]),B=wr(b),ce=B!=null&&(p.recurring.some(e=>e.id===B)||p.oneTime.some(e=>e.id===B)||p.pastOneTime.some(e=>e.id===B)),le=b?(0,q.jsx)(tr,{item:b,isMobile:u,validConversationIds:t,onClose:F,onGoToThread:te,onUpdateStatus:R,onDismiss:I,onViewSchedule:ce?()=>{N(B)}:void 0}):null,ue=(j?(0,q.jsx)(Nn,{schedule:j,assistantId:e,usage:p.usageForSchedule(j.id),isMobile:u,onClose:()=>o(null),onDeleted:()=>{o(null),p.refetch()}}):null)??(S&&M?(0,q.jsx)(Hn,{kind:S,assistantId:e,systemTasks:m,canOpenMemorySettings:h,isMobile:u,onClose:()=>w(null)}):null),de=le??ue,fe=(e,t,n)=>t&&!u?(0,q.jsx)(_,{className:`min-h-0 flex-1`,storageKey:`homeDetailDrawerWidth`,defaultRightWidth:480,minLeftWidth:320,minRightWidth:400,hideDivider:!0,left:(0,q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col pr-[var(--app-spacing-lg)]`,children:e}),right:(0,q.jsx)(`div`,{className:`home-detail-drawer`,children:t},n)}):e,pe=(0,q.jsx)(Dn,{recurring:p.recurring,oneTime:p.oneTime,pastOneTime:p.pastOneTime,usageForSchedule:p.usageForSchedule,isLoading:p.isLoading,isError:p.isError,refetch:p.refetch,onToggle:p.handleToggle,onSelectSchedule:N,selectedScheduleId:y,onStartNewChat:s,onCreateSchedule:()=>v(!0),pastOpen:T,onPastOpenChange:E,systemTasksSlot:(0,q.jsx)(mn,{heartbeatConfig:m.heartbeatConfig,consolidationConfig:m.consolidationConfig,retrospectiveConfig:m.retrospectiveConfig,heartbeatUsage:m.heartbeatUsage,consolidationUsage:m.consolidationUsage,retrospectiveUsage:m.retrospectiveUsage,isLoading:m.isLoading,hasError:m.hasError,onRetry:m.refetchAll,onSelectHeartbeat:()=>P(`heartbeat`),onSelectConsolidation:()=>P(`consolidation`),onSelectRetrospective:()=>P(`retrospective`)})}),me=(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-[var(--app-spacing-lg)] overflow-y-auto`,children:[f.isError?(0,q.jsxs)(`div`,{role:`alert`,className:`rounded-md border border-[var(--system-negative-weak)] bg-[var(--system-negative-weak)] px-[var(--app-spacing-lg)] py-[var(--app-spacing-md)] text-[var(--system-negative-strong)]`,children:[`Couldn't load home feed`,f.error instanceof Error?`: ${f.error.message}`:`.`]}):null,ae&&(re>0||ie>0)&&(0,q.jsxs)(`div`,{className:`flex items-center justify-end gap-[var(--app-spacing-sm)]`,children:[re>0&&(0,q.jsx)(i,{variant:`ghost`,size:`compact`,onClick:oe,disabled:f.markAll.isPending,children:`Mark all as read`}),ie>0&&(0,q.jsx)(i,{variant:`ghost`,size:`compact`,onClick:se,disabled:f.markAll.isPending,children:`Clear all`})]}),(0,q.jsx)(yr,{items:ne,selectedItemId:b?.id,validConversationIds:t,onSelectItem:ee,onDismissItem:I,onRestoreItem:L,onToggleRead:R,onGoToThread:te,archivedOpen:D,onArchivedOpenChange:O,dismissedOpen:k,onDismissedOpenChange:A})]}),he=(0,q.jsxs)(C.Root,{value:n,onValueChange:e=>r(e),className:`flex min-h-0 flex-1 flex-col`,children:[(0,q.jsxs)(C.List,{className:`shrink-0`,children:[(0,q.jsx)(C.Trigger,{value:`notifications`,children:`Notifications`}),(0,q.jsx)(C.Trigger,{value:`schedules`,children:`Schedules`})]}),(0,q.jsx)(C.Panel,{value:`notifications`,className:`mt-[var(--app-spacing-lg)] flex min-h-0 flex-1 flex-col`,children:fe(me,le,b?.id)}),(0,q.jsx)(C.Panel,{value:`schedules`,className:`mt-[var(--app-spacing-lg)] flex min-h-0 flex-1 flex-col`,children:fe(pe,ue,y??S??void 0)})]}),ge=f.isLoading?(0,q.jsx)(Cr,{}):(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-[var(--app-spacing-xl)]`,children:[u?null:(0,q.jsx)(br,{}),he]});return de&&u?(0,q.jsx)(`div`,{className:`fixed inset-0 z-30 bg-[var(--surface-overlay)]`,style:{paddingTop:`var(--safe-area-inset-top, env(safe-area-inset-top, 0px))`,paddingBottom:`var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px))`},children:de}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(ot,{children:ge}),(0,q.jsx)(Rt,{isOpen:g,assistantId:e,onClose:()=>v(!1),onCreated:()=>{v(!1),p.refetch()}})]})}function Er(){let e=a(),t=s(),{scheduleId:n}=o(),r=it(),i=t.pathname===W.schedules.root||t.pathname.startsWith(`${W.schedules.root}/`)?`schedules`:`notifications`,c=n??null,l=(0,G.useCallback)(t=>{e(t===`schedules`?W.schedules.root:W.home)},[e]),u=(0,G.useCallback)(t=>{e(t?W.schedules.detail(t):W.schedules.root)},[e]),d=Re.use.setTopBarCenter(),p=De(),{conversations:m}=He(r),{conversations:h}=$e(r,!0),{conversations:g}=Le(r,!0),_=(0,G.useMemo)(()=>new Set(qe(m,h,g).map(e=>e.conversationId)),[m,h,g]);return(0,G.useEffect)(()=>(d(p?(0,q.jsx)(f,{variant:`body-medium-default`,className:`text-[var(--content-secondary)]`,children:`Activity`}):null),()=>{d(null)}),[p,d]),(0,q.jsx)(Tr,{assistantId:r,validConversationIds:_,activeTab:i,onTabChange:l,routeScheduleId:c,onSelectScheduleId:u,onStartNewChat:()=>{ke.getState().setMainView(`chat`);let t=je();Ae.getState().setActiveConversationId(t),e(W.conversation(t)),Me()},onOpenConversation:t=>e(W.conversation(t))})}export{Er as HomePageRoute};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-BG-GkiMq.js";import{t as n}from"./react-DJZBPgpf.js";import{n as r,t as i}from"./button-D-AX8Voo.js";import{d as a,p as o,u as s}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as c}from"./QueryClientProvider-DKhXIxGb.js";import{t as l}from"./useQuery-B45lW1Kk.js";import{t as u}from"./jsx-runtime-CVSDxk6A.js";import{t as d}from"./cn-DvW5mxZR.js";import{t as f}from"./typography-BscuIPxA.js";import{t as p}from"./dropdown-ChWAdhLG.js";import{t as m}from"./panel-item-Q1g7DFJw.js";import{t as h}from"./menu-BLJEjTFD.js";import{n as g,u as _}from"./src-SCpl1O1B.js";import{t as v}from"./notice-CqRgVmeL.js";import{t as y}from"./tag-CW6WC4fE.js";import{n as b,t as x}from"./input-D4W4p0pZ.js";import{t as S}from"./toggle-X_kQW5my.js";import{n as C}from"./list-row-Di0MK3wu.js";import{n as w}from"./stat-square-8mff1dLC.js";import{t as T}from"./modal-BNAVT2FK.js";import{n as E}from"./toast-sdJJ6aTV.js";import{t as D}from"./createLucideIcon-BlMXrA59.js";import{t as O}from"./arrow-left-CP-EhDNF.js";import{t as k}from"./bell-DB1SrBre.js";import{t as A}from"./brain-Bs6LnfHO.js";import{t as j}from"./calendar-CpgH8CqM.js";import{t as M}from"./chevron-right-B6vEpVY0.js";import{t as N}from"./loader-circle-BFRVtR3K.js";import{t as P}from"./repeat-nCGBxntG.js";import{t as ee}from"./sparkles-Bla177ar.js";import{t as F}from"./x-DxL-bCuT.js";import{Bn as I,Fn as L,In as R,Ln as te,Rn as ne,Vn as z}from"./sdk.gen-zA5ns5LT.js";import{A as re,F as ie,I as ae,M as oe,Mt as se,O as B,Rt as ce,c as le,ct as ue,d as de,dt as fe,ft as pe,g as me,h as he,j as ge,k as _e,lt as ve,m as ye,p as be,st as xe,ut as Se,zt as Ce}from"./react-query.gen-BwkZCSTW.js";import{n as V,r as H,t as U}from"./api-errors-DPruG7q9.js";import{a as we}from"./api-1X5EQzNF.js";import{u as Te}from"./native-biometric-BK6_QtW5.js";import{a as W}from"./routes-C6gxiCrz.js";import{n as Ee}from"./utils-P-AuKiE9.js";import{n as De}from"./use-is-mobile-jACt_z2d.js";import{t as Oe}from"./effective-timezone-B99h9zr7.js";import{n as ke}from"./viewer-store-BR99G-Ii.js";import{t as Ae}from"./conversation-store-B8D6wE18.js";import{t as je}from"./conversation-selection-CNssqGbG.js";import{i as Me}from"./composer-focus-n921WsjZ.js";import{t as Ne}from"./browser-DM38C5zq.js";import{t as Pe}from"./lib-BNGjysgr.js";import{Ai as Fe,An as Ie,Cn as Le,En as Re,Fa as ze,Li as Be,Oa as Ve,Sn as He,Ti as Ue,Vi as We,Wi as Ge,bi as Ke,er as qe,fa as Je,ka as Ye,ui as Xe,wn as Ze,xa as Qe,xn as $e,ya as et,yi as tt,z as nt,zi as rt}from"./index-B-S-gNKm.js";import{t as it}from"./use-active-assistant-id-BVzVN4_g.js";import{t as at}from"./detail-card-EsA9SOvZ.js";import{t as ot}from"./page-shell-WuVNE2W8.js";import{n as st,r as ct}from"./format-date-D4tzd1DT.js";import{n as lt}from"./usage-window-B-YOzKJi.js";import{n as ut,t as dt}from"./schedules-D_sclJNA.js";var ft=D(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),pt=D(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]),mt=D(`mail-open`,[[`path`,{d:`M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z`,key:`1jhwl8`}],[`path`,{d:`m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10`,key:`1qfld7`}]]),G=e(n(),1);async function ht(e,t){let{error:n,response:r}=await I({path:{assistant_id:e},body:t,throwOnError:!1});if(V(r,n,`Failed to create schedule.`),!r.ok)throw new U(r.status,H(n,r,`Failed to create schedule.`))}async function gt(e){return dt(e)}async function _t(e,t,n=10,r){let{data:i,error:a,response:o}=await te({path:{assistant_id:e,id:t},query:{limit:n,before:r},throwOnError:!1});if(V(o,a,`Failed to load schedule runs.`),!o.ok)throw new U(o.status,H(a,o,`Failed to load schedule runs.`));return{runs:i?.runs??[],nextCursor:i?.nextCursor??null}}async function vt(e,t){let{data:n,error:r,response:i}=await z({path:{assistant_id:e},query:{from:t.from,to:t.to},throwOnError:!1});if(V(i,r,`Failed to load schedule usage.`),!i.ok)throw new U(i.status,H(r,i,`Failed to load schedule usage.`));return n?.summaries??[]}async function yt(e,t,n){let{error:r,response:i}=await ne({path:{assistant_id:e,id:t},body:{enabled:n},throwOnError:!1});if(V(i,r,`Failed to toggle schedule.`),!i.ok)throw new U(i.status,H(r,i,`Failed to toggle schedule.`))}async function bt(e,t){let{error:n,response:r}=await L({path:{assistant_id:e,id:t},throwOnError:!1});if(V(r,n,`Failed to delete schedule.`),!r.ok&&r.status!==204)throw new U(r.status,H(n,r,`Failed to delete schedule.`))}async function xt(e,t){let{error:n,response:r}=await R({path:{assistant_id:e,id:t},throwOnError:!1});if(V(r,n,`Failed to run schedule.`),!r.ok)throw new U(r.status,H(n,r,`Failed to run schedule.`))}var St={frequency:`daily`,minute:0,hour24:9,weekdays:[1],dayOfMonth:1},Ct=[{value:0,letter:`S`,short:`Sun`,full:`Sunday`},{value:1,letter:`M`,short:`Mon`,full:`Monday`},{value:2,letter:`T`,short:`Tue`,full:`Tuesday`},{value:3,letter:`W`,short:`Wed`,full:`Wednesday`},{value:4,letter:`T`,short:`Thu`,full:`Thursday`},{value:5,letter:`F`,short:`Fri`,full:`Friday`},{value:6,letter:`S`,short:`Sat`,full:`Saturday`}],wt=[1,2,3,4,5];function K(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,Math.round(e))):t}function Tt(e){let t=Array.from(new Set(e.map(e=>K(e,0,6)).filter(e=>Number.isInteger(e)))).sort((e,t)=>e-t);return t.length>0?t:[1]}function Et(e){let t=K(e.minute,0,59),n=K(e.hour24,0,23);switch(e.frequency){case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${Tt(e.weekdays).join(`,`)}`;case`monthly`:return e.dayOfMonth===`last`?`${t} ${n} L * *`:`${t} ${n} ${K(e.dayOfMonth,1,28)} * *`}}function Dt(e,t){let n=K(e,0,23),r=K(t,0,59),i=n<12?`AM`:`PM`;return`${n%12==0?12:n%12}:${String(r).padStart(2,`0`)} ${i}`}function Ot(e){let t=[`th`,`st`,`nd`,`rd`],n=e%100;return`${e}${t[(n-20)%10]??t[n]??t[0]}`}function kt(e){let t=Tt(e),n=new Set(t);if(t.length===7)return`every day`;if(t.length===5&&wt.every(e=>n.has(e)))return`every weekday`;if(t.length===2&&n.has(0)&&n.has(6))return`every weekend`;if(t.length===1)return`every ${Ct[t[0]]?.full??`day`}`;let r=t.map(e=>Ct[e]?.short??``),i=r.pop();return`every ${r.join(`, `)} & ${i}`}function At(e){let t=Dt(e.hour24,e.minute);switch(e.frequency){case`hourly`:{let t=K(e.minute,0,59);return`Runs every hour at :${String(t).padStart(2,`0`)}`}case`daily`:return`Runs every day at ${t}`;case`weekly`:return`Runs ${kt(e.weekdays)} at ${t}`;case`monthly`:return e.dayOfMonth===`last`?`Runs on the last day of every month at ${t}`:`Runs on the ${Ot(K(e.dayOfMonth,1,28))} of every month at ${t}`}}var q=u(),jt=[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`}],Mt=Array.from({length:12},(e,t)=>{let n=t+1;return{value:String(n),label:String(n)}}),Nt=Array.from({length:12},(e,t)=>{let n=t*5,r=String(n).padStart(2,`0`);return{value:r,label:r}}),Pt=[...Array.from({length:28},(e,t)=>{let n=t+1;return{value:String(n),label:Ot(n)}}),{value:`last`,label:`Last day`}],Ft=[{value:`AM`,label:`AM`},{value:`PM`,label:`PM`}];function It(e,t){let n=e%12;return t===`PM`?n+12:n}function Lt(e){try{let t=new Intl.DateTimeFormat(`en-US`,{timeZone:e,timeZoneName:`short`}).formatToParts(new Date).find(e=>e.type===`timeZoneName`)?.value;return t&&t!==e?`${e} · ${t}`:e}catch{return e}}function Rt({isOpen:e,assistantId:t,onClose:n,onCreated:r}){return(0,q.jsx)(T.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,q.jsx)(zt,{assistantId:t,onClose:n,onCreated:r}):null})}function zt({assistantId:e,onClose:t,onCreated:n}){let r=Ie(),[a,o]=(0,G.useState)(``),[s,c]=(0,G.useState)(``),[l,u]=(0,G.useState)(``),[d,f]=(0,G.useState)(`simple`),[p,m]=(0,G.useState)(St),[h,g]=(0,G.useState)(``),[_,v]=(0,G.useState)(!1),[y,S]=(0,G.useState)(null),C=a.trim(),w=s.trim(),E=l.trim(),D=h.trim(),O=(0,G.useMemo)(()=>d===`simple`?Et(p):D,[d,p,D]),k=(0,G.useMemo)(()=>d===`simple`?At(p):D||`Enter a cron expression to continue.`,[d,p,D]),A=(0,G.useMemo)(()=>Lt(r),[r]),j=C.length>0&&w.length>0&&E.length>0&&O.length>0&&!_;return(0,q.jsxs)(T.Content,{size:`md`,children:[(0,q.jsxs)(T.Header,{children:[(0,q.jsx)(T.Title,{children:`Create schedule`}),(0,q.jsx)(T.Description,{children:`Schedule a recurring instruction for your assistant. Runs in execute mode — the message is delivered to the assistant on each fire.`})]}),(0,q.jsxs)(`form`,{onSubmit:async t=>{if(t.preventDefault(),j){v(!0),S(null);try{await ht(e,{name:C,description:w,expression:O,message:E,timezone:r}),v(!1),n()}catch(e){S(e instanceof Error?e.message:`Failed to create schedule.`),v(!1)}}},children:[(0,q.jsx)(T.Body,{children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,q.jsx)(x,{label:`Name`,placeholder:`Morning briefing`,value:a,onChange:e=>o(e.target.value),required:!0,autoFocus:!0,fullWidth:!0}),(0,q.jsx)(b,{label:`Description`,placeholder:`What is this schedule for?`,value:s,onChange:e=>c(e.target.value),required:!0,fullWidth:!0,rows:2}),(0,q.jsx)(Wt,{label:`Repeat`,children:d===`simple`?(0,q.jsx)(Bt,{cadence:p,onChange:m}):(0,q.jsx)(Ut,{value:h,onChange:g,onUseSimple:()=>f(`simple`)})}),(0,q.jsx)(Kt,{summary:k,mono:d===`advanced`&&D.length>0,timezoneLabel:A}),d===`simple`?(0,q.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e||Et(p)),f(`advanced`)},className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`Advanced — write a cron expression`}):null,(0,q.jsx)(b,{label:`Message`,placeholder:`What should the assistant do on each fire?`,value:l,onChange:e=>u(e.target.value),required:!0,fullWidth:!0,rows:4}),y?(0,q.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:y}):null]})}),(0,q.jsxs)(T.Footer,{children:[(0,q.jsx)(i,{variant:`outlined`,onClick:t,type:`button`,children:`Cancel`}),(0,q.jsx)(i,{variant:`primary`,type:`submit`,disabled:!j,children:_?`Creating…`:`Create schedule`})]})]})]})}function Bt({cadence:e,onChange:t}){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,q.jsx)(w,{items:jt,value:e.frequency,onChange:n=>t({...e,frequency:n}),ariaLabel:`How often the schedule runs`}),e.frequency===`hourly`?(0,q.jsx)(Gt,{label:`At minute`,children:(0,q.jsx)(p,{options:Nt,value:String(e.minute).padStart(2,`0`),onChange:n=>t({...e,minute:Number(n)}),"aria-label":`Minute`,className:`w-24`})}):null,e.frequency===`weekly`?(0,q.jsx)(Gt,{label:`On these days`,children:(0,q.jsx)(Ht,{value:e.weekdays,onChange:n=>t({...e,weekdays:n})})}):null,e.frequency===`monthly`?(0,q.jsx)(Gt,{label:`On day`,children:(0,q.jsx)(p,{options:Pt,value:e.dayOfMonth===`last`?`last`:String(e.dayOfMonth),onChange:n=>t({...e,dayOfMonth:n===`last`?`last`:Number(n)}),"aria-label":`Day of month`,className:`w-32`})}):null,e.frequency===`hourly`?null:(0,q.jsx)(Gt,{label:`At time`,children:(0,q.jsx)(Vt,{hour24:e.hour24,minute:e.minute,onChange:(n,r)=>t({...e,hour24:n,minute:r})})})]})}function Vt({hour24:e,minute:t,onChange:n}){let r=e<12?`AM`:`PM`,i=e%12==0?12:e%12;return(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(p,{options:Mt,value:String(i),onChange:e=>n(It(Number(e),r),t),"aria-label":`Hour`,className:`w-[72px]`}),(0,q.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:`:`}),(0,q.jsx)(p,{options:Nt,value:String(t).padStart(2,`0`),onChange:t=>n(e,Number(t)),"aria-label":`Minute`,className:`w-[72px]`}),(0,q.jsx)(`div`,{className:`w-[112px]`,children:(0,q.jsx)(w,{items:Ft,value:r,onChange:e=>n(It(i,e),t),ariaLabel:`AM or PM`})})]})}function Ht({value:e,onChange:t}){let n=new Set(e),r=e=>{let r=new Set(n);r.has(e)?r.size>1&&r.delete(e):r.add(e),t([...r].sort((e,t)=>e-t))};return(0,q.jsx)(`div`,{className:`flex gap-1.5`,children:Ct.map(e=>{let t=n.has(e.value);return(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(e.value),"aria-pressed":t,"aria-label":e.full,title:e.full,className:d(`flex h-9 w-9 items-center justify-center rounded-md border text-body-medium-default transition-colors`,t?`border-[var(--border-active)] bg-[var(--surface-active)] text-[var(--content-emphasised)]`:`border-[var(--field-border)] text-[var(--content-tertiary)] hover:border-[var(--border-active)] hover:text-[var(--content-default)]`),children:e.letter},e.value)})})}function Ut({value:e,onChange:t,onUseSimple:n}){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,q.jsx)(x,{placeholder:`0 9 * * *`,value:e,onChange:e=>t(e.target.value),fullWidth:!0,className:`font-mono`,"aria-label":`Cron expression`,helperText:`Standard 5-field cron (minute hour day month weekday). RRULE expressions are also accepted.`}),(0,q.jsx)(`button`,{type:`button`,onClick:n,className:`self-start text-body-small-default text-[var(--content-tertiary)] underline-offset-2 transition-colors hover:text-[var(--content-default)] hover:underline`,children:`← Back to the simple builder`})]})}function Wt({label:e,children:t}){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:e}),t]})}function Gt({label:e,children:t}){return(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,q.jsx)(`span`,{className:`min-w-[88px] text-body-small-default text-[var(--content-tertiary)]`,children:e}),t]})}function Kt({summary:e,mono:t,timezoneLabel:n}){return(0,q.jsxs)(`div`,{className:`flex items-start gap-3 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3.5 py-3`,children:[(0,q.jsx)(et,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`p`,{className:d(`text-body-medium-default text-[var(--content-default)]`,t&&`break-all font-mono`),children:e}),(0,q.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Times use your timezone — `,n,`.`]})]})]})}function qt(e=Oe(),t=Date.now()){return lt(`7d`,e,t)}function J(e){return e?new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0}):`—`}function Jt(e){return e==null?`—`:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}var Yt=new Intl.NumberFormat(void 0,{style:`currency`,currency:`USD`,minimumFractionDigits:2,maximumFractionDigits:2});function Y(e){return e==null||!Number.isFinite(e)?`—`:Yt.format(e)}function Xt(e){return`${e.toLocaleString()} ${e===1?`run`:`runs`}`}function Zt(e){let t=Math.round(e/6e4);return t>=60&&t%60==0?`Every ${t/60} hr`:`Every ${t} min`}function Qt(e){if(!e)return;let t=new Set,n=[];for(let r of e)for(let e of r.runs)t.has(e.id)||(t.add(e.id),n.push(e));return n}function $t(e){return!!e.conversationId&&e.conversationExists===!0&&e.conversationArchivedAt==null}function en(e){return $t(e)?e.conversationId??null:null}function X(e){return typeof e==`string`&&e.length>0}var tn={heartbeat:`system-heartbeat`,consolidation:`system-consolidation`,retrospective:`system-memory-retrospective`};function nn(e){if(e.cronExpression)return e.timezone?`Cron: ${e.cronExpression} (${e.timezone})`:`Cron: ${e.cronExpression}`;let t=Zt(e.intervalMs);return e.activeHoursStart!=null&&e.activeHoursEnd!=null&&(t+=` (${e.activeHoursStart}:00–${e.activeHoursEnd}:00)`),t}function rn(e){return Zt(e.intervalMs)}var an=`After conversation activity`;function on(e,t){return e.status===`fired`||e.status===`cancelled`?!0:e.status===`firing`?!1:e.nextRunAt==null||!e.enabled&&e.nextRunAt<=t}function sn(e,t){let n=[],r=[],i=[];for(let a of e)a.isOneShot?on(a,t)?i.push(a):r.push(a):n.push(a);return n.sort((e,t)=>e.enabled===t.enabled?(e.nextRunAt??1/0)-(t.nextRunAt??1/0):e.enabled?-1:1),r.sort((e,t)=>(e.nextRunAt??1/0)-(t.nextRunAt??1/0)),i.sort((e,t)=>{let n=e.lastRunAt??e.nextRunAt??0;return(t.lastRunAt??t.nextRunAt??0)-n}),{recurring:n,upcomingOneTime:r,pastOneTime:i}}function cn(e,t,n=!0){return{queryKey:[{_id:`schedulesUsagesummaryGet`,path:{assistant_id:e??``},_tz:t}],queryFn:()=>e?vt(e,qt(t)):Promise.resolve([]),enabled:n,staleTime:1e4}}function ln(e){return{scheduleId:e,runCount:0,totalEstimatedCostUsd:0,eventCount:0}}function un(e,t,n){let r=(t??[]).filter(e=>{let t=e.startedAt??e.createdAt;return t>=n.from&&t<=n.to});return{scheduleId:e,runCount:r.length,totalEstimatedCostUsd:r.reduce((e,t)=>{let n=t.estimatedCostUsd;return typeof n==`number`&&Number.isFinite(n)?e+n:e},0),eventCount:0}}function dn({status:e}){return(0,q.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full`,style:{backgroundColor:e===`ok`||e===`completed`?`var(--system-positive-strong)`:e===`error`||e===`failed`?`var(--system-negative-strong)`:`var(--content-tertiary)`},"aria-label":e??`unknown`})}function fn({scheduleName:e,usage:t,onOpenUsage:n}){if(t.status===`loading`)return(0,q.jsxs)(`div`,{"aria-label":`Loading schedule usage`,className:`flex w-[156px] shrink-0 items-center justify-end gap-3`,children:[(0,q.jsx)(`span`,{className:`h-5 w-16 animate-pulse rounded bg-[var(--surface-muted)]`}),(0,q.jsx)(`span`,{className:`h-5 w-16 animate-pulse rounded bg-[var(--surface-muted)]`})]});let r=t.status===`error`,i=r?`--`:Y(t.summary.totalEstimatedCostUsd),a=r?`--`:Xt(t.summary.runCount),o=t.status===`ready`&&!(t.summary.totalEstimatedCostUsd>0),s=t.status===`ready`&&t.summary.runCount===0,c=o?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`,l=s?`text-[var(--content-tertiary)]`:`text-[var(--content-default)]`;return(0,q.jsxs)(`div`,{className:`flex w-[156px] shrink-0 items-center justify-end gap-3 text-right text-body-small-default`,children:[n?(0,q.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`View usage for ${e}`,className:`min-w-[64px] cursor-pointer rounded px-1 py-0.5 text-right transition-colors hover:bg-[var(--surface-hover)] ${c}`,children:i}):(0,q.jsx)(`span`,{"aria-label":`Cost for ${e} in the last 7 days: ${i}`,className:`block min-w-[64px] px-1 py-0.5 ${c}`,children:i}),(0,q.jsx)(`span`,{"aria-label":`Runs for ${e} in the last 7 days: ${a}`,className:`block min-w-[64px] px-1 py-0.5 ${l}`,children:a})]})}function pn({name:e,subtitle:t,enabled:n,nextRunAt:r,lastRunAt:i,usage:a,helperText:o,statusLabel:s,statusTone:c=`neutral`,onClick:l}){return(0,q.jsx)(`div`,{className:`flex flex-wrap items-center gap-3 rounded-md px-2 py-3 transition-colors hover:bg-[var(--surface-hover)] [&+&]:border-t [&+&]:border-[var(--border-base)]`,children:(0,q.jsxs)(`button`,{type:`button`,onClick:l,"aria-label":`Open ${e}`,className:`flex min-w-0 flex-1 cursor-pointer flex-wrap items-center gap-3 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,q.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e})}),(0,q.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:t}),o?(0,q.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-secondary)]`,children:o}):null,(0,q.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-body-small-default text-[var(--content-tertiary)]`,children:[r?(0,q.jsxs)(`span`,{children:[`Next: `,J(r)]}):null,i?(0,q.jsxs)(`span`,{children:[`Last: `,J(i)]}):null]})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-3`,children:[(0,q.jsx)(fn,{scheduleName:e,usage:a}),s?(0,q.jsx)(y,{tone:c,children:s}):(0,q.jsx)(`span`,{className:`h-2 w-2 rounded-full`,style:{backgroundColor:n?`var(--system-positive-strong)`:`var(--content-disabled)`},"aria-label":n?`enabled`:`disabled`}),(0,q.jsx)(M,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})})}function mn({heartbeatConfig:e,consolidationConfig:t,retrospectiveConfig:n,heartbeatUsage:r,consolidationUsage:i,retrospectiveUsage:a,isLoading:o,hasError:s,onRetry:c,onSelectHeartbeat:l,onSelectConsolidation:u,onSelectRetrospective:d}){let f=e!=null,p=t?.available===!0,m=n?.available===!0,h=f||p||m;if(!o&&!s&&!h)return null;let _=[...f?[r]:[],...p?[i]:[],...m?[a]:[]].filter(e=>e.status===`ready`),y=_.reduce((e,t)=>e+(t.summary.totalEstimatedCostUsd??0),0),b=o?(0,q.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,q.jsx)(N,{className:`h-5 w-5 animate-spin text-stone-400`})}):s&&!h?(0,q.jsxs)(v,{tone:`error`,children:[`Failed to load system jobs.`,` `,(0,q.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]}):(0,q.jsxs)(`div`,{children:[f?(0,q.jsx)(pn,{name:`Heartbeat`,subtitle:nn(e),enabled:e.enabled,nextRunAt:e.nextRunAt,lastRunAt:e.lastRunAt,usage:r,onClick:l}):null,p?(0,q.jsx)(pn,{name:`Consolidation`,subtitle:rn(t),enabled:t.enabled,helperText:t.enabled?void 0:`Memory is off, so consolidation is paused.`,nextRunAt:t.nextRunAt,lastRunAt:t.lastRunAt,usage:i,statusLabel:t.enabled?void 0:`Paused`,statusTone:`warning`,onClick:u}):null,m?(0,q.jsx)(pn,{name:`Memory retrospective`,subtitle:an,enabled:n.enabled,helperText:n.enabled?void 0:`Memory is off, so retrospectives are paused.`,nextRunAt:n.nextRunAt,lastRunAt:n.lastRunAt,usage:a,statusLabel:n.enabled?void 0:`Paused`,statusTone:`warning`,onClick:d}):null,s?(0,q.jsx)(`div`,{className:`pt-3 first:pt-0`,children:(0,q.jsxs)(v,{tone:`error`,children:[`Some system jobs failed to load.`,` `,(0,q.jsx)(`button`,{type:`button`,onClick:c,className:`cursor-pointer underline hover:no-underline`,children:`Retry`})]})}):null]});return(0,q.jsx)(at,{children:(0,q.jsx)(g.Root,{type:`multiple`,children:(0,q.jsxs)(g.Item,{value:`system-jobs`,children:[(0,q.jsxs)(g.Trigger,{className:`group justify-between gap-3`,children:[(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1 text-left`,children:[(0,q.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-secondary)]`,children:`System`}),(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Built-in jobs managed by the assistant runtime`})]}),(0,q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[_.length>0?(0,q.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[Y(y),` (7d)`]}):null,(0,q.jsx)(Ve,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform group-data-[state=open]:rotate-180`})]})]}),(0,q.jsx)(g.Content,{children:(0,q.jsx)(`div`,{className:`mt-3`,children:b})})]})})})}function hn(e,t){return{id:e.id,jobId:t,status:e.status,startedAt:e.startedAt??e.scheduledFor,finishedAt:e.finishedAt,durationMs:e.durationMs,output:`skipReason`in e&&e.skipReason?`Skipped: ${e.skipReason}`:null,error:e.error,conversationId:e.conversationId,conversationExists:e.conversationExists,conversationArchivedAt:e.conversationArchivedAt,estimatedCostUsd:e.estimatedCostUsd,createdAt:e.createdAt,...`title`in e?{title:e.title}:{}}}function gn(e){return e.runs.map(e=>hn(e,`heartbeat`))}function _n(e){return e.runs.map(e=>hn(e,`consolidation`))}function vn(e){return e.runs.map(e=>hn(e,`retrospective`))}var Z=1e4;function yn(e,t,n,r,i){return e?{status:`loading`}:t?{status:`error`}:{status:`ready`,summary:un(n,r,i)}}function bn(e,n){let r=c(),i={path:{assistant_id:e??``}},{data:a,isLoading:o,isError:s,refetch:u}=l({...B(i),enabled:!!e,staleTime:Z}),{data:d,isLoading:f,isError:p,refetch:m}=l({...be(i),enabled:!!e,staleTime:Z}),{data:h,isLoading:g,isError:_,refetch:v}=l({...xe(i),enabled:!!e,staleTime:Z}),y={path:{assistant_id:e??``},query:{limit:100}},{data:b,isLoading:x,isError:S,refetch:C}=l({...oe(y),select:gn,enabled:!!e&&a!=null,staleTime:Z}),{data:w,isLoading:T,isError:D,refetch:O}=l({...me(y),select:_n,enabled:!!e&&d?.available===!0,staleTime:Z}),{data:k,isLoading:A,isError:j,refetch:M}=l({...Se(y),select:vn,enabled:!!e&&h?.available===!0,staleTime:Z}),N=(0,G.useMemo)(()=>qt(n),[n]),P=(0,G.useMemo)(()=>yn(x,S,tn.heartbeat,b,N),[b,S,x,N]),ee=(0,G.useMemo)(()=>yn(T,D,tn.consolidation,w,N),[w,D,T,N]),F=(0,G.useMemo)(()=>yn(A,j,tn.retrospective,k,N),[k,j,A,N]),I=t=>{if(!e)return;let n={heartbeat:{config:B(i).queryKey,runs:oe(y).queryKey,infinite:ge(i)},consolidation:{config:be(i).queryKey,runs:me(y).queryKey,infinite:he(i)},retrospective:{config:xe(i).queryKey,runs:Se(y).queryKey,infinite:ve(i)}}[t];r.invalidateQueries({queryKey:n.config}),r.invalidateQueries({queryKey:n.runs}),r.invalidateQueries({queryKey:n.infinite})},L=Ce({onSuccess:e=>{e.ran?E.success(`Heartbeat started.`):E.info(`Heartbeat skipped.`)},onError:e=>{t(e,{context:`heartbeat_run_now`}),E.error(`Failed to run heartbeat.`)},onSettled:()=>I(`heartbeat`)}),R=se({onSuccess:e=>{e.ran?E.success(`Consolidation queued.`):E.info(`Consolidation already queued or running.`)},onError:e=>{t(e,{context:`consolidation_run_now`}),E.error(`Failed to run consolidation.`)},onSettled:()=>I(`consolidation`)}),te=ce({onSuccess:e=>{_e(r,i,e),E.success(e.enabled?`Heartbeat enabled.`:`Heartbeat disabled.`)},onError:e=>{t(e,{context:`heartbeat_toggle`}),E.error(`Failed to toggle heartbeat.`)}});return{heartbeatConfig:a,consolidationConfig:d,retrospectiveConfig:h,heartbeatUsage:P,consolidationUsage:ee,retrospectiveUsage:F,isLoading:o||f||g,hasError:s||p||_,isHeartbeatRunning:L.isPending,isConsolidationRunning:R.isPending,isHeartbeatLoading:o,isHeartbeatError:s,isConsolidationLoading:f,isConsolidationError:p,isRetrospectiveLoading:g,isRetrospectiveError:_,refetchHeartbeat:u,refetchConsolidation:m,refetchRetrospective:v,runHeartbeatNow:()=>{e&&L.mutate({path:{assistant_id:e}})},runConsolidationNow:()=>{e&&R.mutate({path:{assistant_id:e}})},toggleHeartbeat:t=>{e&&te.mutate({body:{enabled:t},path:{assistant_id:e}})},refetchAll:()=>{u(),m(),v(),C(),O(),M()}}}var xn=`0.10.5`;function Sn(){return Ee(xn)}function Cn({icon:e,title:t,description:n,actions:r}){return(0,q.jsxs)(`div`,{className:`flex h-full min-h-[400px] flex-col items-center justify-center gap-4 px-4 py-24 text-center`,children:[(0,q.jsx)(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-xl bg-[var(--surface-base)]`,children:(0,q.jsx)(e,{size:32,className:`text-[var(--content-tertiary)]`})}),(0,q.jsx)(`h2`,{className:`text-title-medium text-[var(--content-default)]`,children:t}),(0,q.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[var(--content-tertiary)]`,children:n}),r?(0,q.jsx)(`div`,{className:`flex flex-col items-center gap-3`,children:r}):null]})}function wn(e){if(e.status===`loading`)return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`h-4 w-12 animate-pulse rounded bg-[var(--surface-muted)]`}),(0,q.jsx)(`span`,{className:`h-4 w-10 animate-pulse rounded bg-[var(--surface-muted)]`})]});if(e.status===`error`)return(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`—`});let{summary:t}=e;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:Y(t.totalEstimatedCostUsd)}),(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-secondary)]`,children:Xt(t.runCount)})]})}function Tn({name:e,metaParts:t,usage:n,enabled:r,selected:i,onClick:a,onToggle:o,toggleAriaLabel:s}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-2 py-3 transition-colors [&+&]:border-t [&+&]:border-[var(--border-base)] ${i?`bg-[var(--surface-active)]`:`hover:bg-[var(--surface-hover)]`}`,children:[o?(0,q.jsx)(S,{checked:r,onChange:o,"aria-label":s}):null,(0,q.jsxs)(`button`,{type:`button`,onClick:a,className:`flex min-w-0 flex-1 cursor-pointer items-center gap-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,q.jsx)(`span`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e}),t.length>0?(0,q.jsx)(`span`,{className:`flex min-w-0 items-center gap-2 text-label-small-default text-[var(--content-tertiary)]`,children:t.map((e,t)=>(0,q.jsxs)(G.Fragment,{children:[t>0?(0,q.jsx)(`span`,{className:`h-[3px] w-[3px] shrink-0 rounded-full bg-[var(--content-tertiary)]`}):null,(0,q.jsx)(`span`,{className:`truncate`,children:e})]},t))}):null]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[wn(n),(0,q.jsx)(M,{className:`h-4 w-4 text-[var(--content-tertiary)]`})]})]})]})}function En({schedule:e,usage:t,selected:n,onClick:r,onToggle:i}){let a=e.isOneShot?``:e.cadenceDescription.trim(),o=e.lastRunAt??e.nextRunAt,s=[a,o?J(o):``].filter(Boolean);return(0,q.jsx)(Tn,{name:e.name,metaParts:s,usage:t,enabled:e.enabled,selected:n,onClick:r,onToggle:i,toggleAriaLabel:i?`Toggle ${e.name}`:void 0})}function Dn({recurring:e,oneTime:t,pastOneTime:n,usageForSchedule:r,isLoading:a,isError:o,refetch:s,onToggle:c,onSelectSchedule:l,selectedScheduleId:u,onStartNewChat:d,onCreateSchedule:f,pastOpen:p,onPastOpenChange:m,systemTasksSlot:h}){let _=e=>(0,q.jsx)(En,{schedule:e,usage:r(e.id),selected:e.id===u,onClick:()=>l(e.id),onToggle:t=>c(e.id,t)},e.id),y=e=>(0,q.jsx)(En,{schedule:e,usage:r(e.id),selected:e.id===u,onClick:()=>l(e.id)},e.id),b=n.length>0?(0,q.jsx)(g.Root,{type:`single`,collapsible:!0,className:`mt-3`,value:p?`past`:``,onValueChange:e=>m(e===`past`),children:(0,q.jsxs)(g.Item,{value:`past`,children:[(0,q.jsxs)(g.Trigger,{className:`group gap-[var(--app-spacing-xs)] px-2 text-label-small-default text-[var(--content-tertiary)]`,children:[(0,q.jsx)(M,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,q.jsxs)(`span`,{children:[`Past (`,n.length,`)`]})]}),(0,q.jsx)(g.Content,{children:(0,q.jsx)(`div`,{className:`pt-1`,children:n.map(y)})})]})}):null;return(0,q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[a?(0,q.jsx)(`div`,{className:`space-y-3`,children:Array.from({length:2},(e,t)=>(0,q.jsx)(`div`,{className:`h-12 animate-pulse rounded-md bg-[var(--surface-muted)]`},t))}):o&&e.length===0?(0,q.jsx)(v,{tone:`error`,actions:(0,q.jsx)(`button`,{type:`button`,onClick:s,className:`cursor-pointer underline hover:no-underline`,children:`Retry`}),children:`Failed to load schedules.`}):e.length===0&&t.length===0&&n.length===0?(0,q.jsx)(Cn,{icon:j,title:`No schedules yet`,description:`Ask your assistant to set one up, or create one yourself.`,actions:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(i,{variant:`primary`,size:`regular`,onClick:d,children:`New Conversation`}),(0,q.jsx)(`span`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`or`}),(0,q.jsx)(i,{variant:`outlined`,size:`regular`,onClick:f,children:`Create schedule`})]})}):(0,q.jsxs)(`div`,{children:[e.map(_),t.length>0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`mt-3 px-2 text-label-small-default text-[var(--content-tertiary)]`,children:`One-time`}),t.map(y)]}):null,b]}),h?(0,q.jsx)(`div`,{className:`mt-[var(--app-spacing-lg)]`,children:h}):null]})}function On({children:e}){return(0,q.jsx)(f,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function Q({label:e,value:t}){return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-1`,children:[(0,q.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e}),(0,q.jsx)(`span`,{className:`min-w-0 text-right text-body-medium-lighter text-[var(--content-default)]`,children:t})]})}function kn({icon:e,value:t,label:n}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] p-3`,children:[(0,q.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-[var(--surface-sunken)] text-[var(--content-secondary)]`,children:e}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-body-large-default text-[var(--content-default)]`,children:t}),(0,q.jsx)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:n})]})]})}function An({usage:e}){return e.status===`loading`?(0,q.jsx)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:Array.from({length:2},(e,t)=>(0,q.jsx)(`div`,{className:`h-[60px] animate-pulse rounded-lg bg-[var(--surface-muted)]`},t))}):e.status===`error`?null:(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 pt-2`,children:[(0,q.jsx)(kn,{icon:(0,q.jsx)(Je,{className:`h-4 w-4`}),value:Y(e.summary.totalEstimatedCostUsd),label:`7 Day Cost`}),(0,q.jsx)(kn,{icon:(0,q.jsx)(P,{className:`h-4 w-4`}),value:Xt(e.summary.runCount),label:`7 Day Runs`})]})}function jn({run:e,index:t,isExpanded:n,onOpenConversation:r,onToggleDetails:i}){let a=en(e),o=X(e.output),s=X(e.error),c=!a&&(o||s),l=`schedule-run-details-${t}`,u=!!a||c,f=(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(dn,{status:e.status}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`text-body-medium-lighter text-[var(--content-default)]`,children:J(e.startedAt)}),(0,q.jsxs)(`div`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[Jt(e.durationMs),` ·`,` `,Y(e.estimatedCostUsd)]}),e.status===`error`&&e.error?(0,q.jsxs)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--system-negative-strong)]`,children:[e.error.slice(0,120),e.error.length>120?`…`:``]}):null]}),u?(0,q.jsx)(M,{className:d(`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform`,c&&n?`rotate-90`:``)}):null]}),p=c&&n?(0,q.jsx)(`div`,{id:l,className:`px-2 pb-3`,children:(0,q.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[o?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,q.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,s?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,q.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null;return a?(0,q.jsx)(`div`,{children:(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(a),"aria-label":`Open conversation for run at ${J(e.startedAt)}`,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:f})}):c?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),"aria-label":`Toggle output for run at ${J(e.startedAt)}`,"aria-expanded":n,"aria-controls":l,className:`flex w-full cursor-pointer items-center gap-3 px-2 py-3 text-left shadow-none transition-colors hover:bg-[var(--surface-hover)] focus:outline-none`,children:f}),p]}):(0,q.jsx)(`div`,{className:`flex items-center gap-3 px-2 py-3`,children:f})}function Mn({runs:e,isLoading:t,onOpenConversation:n}){let[r,i]=(0,G.useState)(null);return t?(0,q.jsx)(`div`,{className:`flex items-center justify-center py-6`,children:(0,q.jsx)(N,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,q.jsx)(`p`,{className:`py-2 text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:`No runs yet.`}):(0,q.jsx)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:e.map((e,t)=>(0,q.jsx)(jn,{run:e,index:t,isExpanded:r===e.id,onOpenConversation:n,onToggleDetails:e=>i(t=>t===e?null:e)},e.id))})}function Nn({schedule:e,assistantId:n,usage:r,isMobile:o,onClose:s,onDeleted:c}){let u=a(),{data:p,isLoading:m}=l({queryKey:fe({path:{assistant_id:n,id:e.id}}),queryFn:()=>_t(n,e.id),staleTime:1e4}),[h,g]=(0,G.useState)(!1),[_,v]=(0,G.useState)(!1),[y,b]=(0,G.useState)(!1),x=async()=>{g(!0);try{await xt(n,e.id)}catch(e){t(e,{context:`schedule_run_now`}),E.error(`Failed to run schedule.`)}finally{g(!1)}},S=async()=>{b(!0);try{await bt(n,e.id),c()}catch(e){t(e,{context:`schedule_delete`}),E.error(`Failed to delete schedule.`),b(!1),v(!1)}};return(0,q.jsxs)(`div`,{className:d(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,q.jsx)(f,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:e.name})}),(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(F,{}),onClick:s,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,q.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[e.description?(0,q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:e.description}):null,(0,q.jsxs)(`section`,{children:[(0,q.jsx)(On,{children:`Details`}),(0,q.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] px-4 py-2`,children:[e.cadenceDescription?(0,q.jsx)(Q,{label:`Cadence`,value:e.cadenceDescription}):null,(0,q.jsx)(Q,{label:`Mode`,value:e.mode}),(0,q.jsx)(Q,{label:`Status`,value:e.enabled?`Enabled`:`Disabled`}),(0,q.jsx)(Q,{label:`Next run`,value:J(e.nextRunAt)}),e.lastRunAt?(0,q.jsx)(Q,{label:`Last run`,value:(0,q.jsxs)(`span`,{className:`flex items-center justify-end gap-2`,children:[(0,q.jsx)(dn,{status:e.lastStatus}),J(e.lastRunAt)]})}):null]})]}),(0,q.jsx)(An,{usage:r}),(0,q.jsxs)(`section`,{children:[(0,q.jsx)(On,{children:`Recent runs`}),(0,q.jsx)(Mn,{runs:p?.runs,isLoading:m,onOpenConversation:e=>u(W.conversation(e))})]})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[_?(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(i,{variant:`ghost`,onClick:()=>v(!1),disabled:y,children:`Cancel`}),(0,q.jsx)(i,{variant:`danger`,onClick:()=>void S(),disabled:y,children:y?`Deleting…`:`Yes, delete`})]}):(0,q.jsx)(i,{variant:`dangerOutline`,leftIcon:(0,q.jsx)(Xe,{className:`h-3.5 w-3.5`}),onClick:()=>v(!0),children:`Delete`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(i,{variant:`outlined`,leftIcon:(0,q.jsx)(Ye,{className:`h-3.5 w-3.5`}),onClick:()=>u(W.logs.usageForSchedule(e.id)),children:`View usage`}),e.mode===`script`?(0,q.jsx)(i,{variant:`primary`,leftIcon:h?(0,q.jsx)(N,{className:`h-3.5 w-3.5 animate-spin`}):void 0,onClick:()=>void x(),disabled:h,children:h?`Running…`:`Run now`}):null]})]})]})}var Pn=`Default (assistant's main model)`,Fn=`Custom call-site model`;function In(e,t){return t?.[e]?.displayName??e}function Ln(e,t){if(e==null)return;if(e.provider!=null||e.model!=null)return Fn;let n=e.profile?.trim();return n?`Override (${In(n,t)})`:void 0}function Rn({assistantId:e,pinnedProfile:t,defaultCallSite:n=`mainAgent`,fallbackLabel:r=Pn,respectCallSiteOverride:i=!1}){let a=t==null,{data:o}=l({...le({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),s=(0,G.useMemo)(()=>o?ut(o):{},[o]),{data:c}=l({...de({path:{assistant_id:e}}),enabled:!!e&&a,staleTime:6e4}),u=a&&i?Ln(o?.llm?.callSites?.[n],s):void 0,d=a?c?.callSites.find(e=>e.id===n)?.defaultProfile:void 0,f=t==null?u??(d==null?r:`Default (${In(d,s)})`):In(t,s);return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Model profile`}),(0,q.jsx)(`span`,{className:`min-w-0 text-right`,children:f})]})}function zn({runs:e,isLoading:t,emptyMessage:n=`No runs yet.`,hasMore:r=!1,isLoadingMore:o=!1,onLoadMore:s}){let c=a(),[l,u]=(0,G.useState)(null);return(0,q.jsx)(at,{title:`Recent runs`,children:t?(0,q.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,q.jsx)(N,{className:`h-5 w-5 animate-spin text-stone-400`})}):!e||e.length===0?(0,q.jsx)(`p`,{className:`py-4 text-center text-body-medium-lighter text-[var(--content-tertiary)] italic`,children:n}):(0,q.jsxs)(`div`,{className:`divide-y divide-[var(--border-base)]`,children:[e.map((e,t)=>{let n=en(e),r=X(e.output),i=X(e.error),a=!n&&(r||i),o=l===e.id,s=`schedule-run-details-${t}`;return(0,q.jsxs)(`div`,{children:[(0,q.jsx)(m,{label:(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,q.jsx)(dn,{status:e.status}),(0,q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`span`,{className:`block truncate text-body-medium-lighter text-[var(--content-default)]`,children:X(e.title)?e.title:J(e.startedAt)}),(0,q.jsxs)(`span`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[X(e.title)?`${J(e.startedAt)} · `:``,Jt(e.durationMs),` ·`,` `,Y(e.estimatedCostUsd),e.status===`error`&&e.error&&(0,q.jsxs)(`span`,{className:`ml-2 text-[var(--system-negative-strong)]`,children:[e.error.slice(0,80),e.error.length>80?`…`:``]})]})]}),n||a?(0,q.jsx)(M,{className:`h-4 w-4 shrink-0 text-[var(--content-tertiary)] transition-transform ${o?`rotate-90`:``}`}):null]}),onSelect:n?()=>c(W.conversation(n)):a?()=>u(o?null:e.id):void 0,"aria-label":`Run at ${J(e.startedAt)}`,"aria-expanded":a?o:void 0,"aria-controls":a?s:void 0,className:`h-auto py-2.5 gap-3 -mx-2 px-2`}),a&&o?(0,q.jsx)(`div`,{id:s,className:`px-2 pb-3`,children:(0,q.jsxs)(`div`,{className:`space-y-3 rounded-md border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3`,children:[r?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Output`}),(0,q.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--content-default)]`,children:e.output})]}):null,i?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-body-small-default text-[var(--content-secondary)]`,children:`Error`}),(0,q.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words text-body-small-default font-mono text-[var(--system-negative-strong)]`,children:e.error})]}):null]})}):null]},e.id)}),r&&s?(0,q.jsx)(`div`,{className:`flex justify-center pt-3`,children:(0,q.jsx)(i,{variant:`outlined`,size:`compact`,onClick:s,disabled:o,leftIcon:o?(0,q.jsx)(N,{className:`h-3.5 w-3.5 animate-spin`}):void 0,children:o?`Loading…`:`Load more`})}):null]})})}var Bn={heartbeat:`heartbeatAgent`,consolidation:`memoryV2Consolidation`,retrospective:`memoryRetrospective`};function Vn({children:e}){return(0,q.jsx)(f,{variant:`label-small-default`,as:`div`,className:`mb-2 uppercase tracking-wider text-[var(--content-tertiary)]`,children:e})}function Hn({kind:e,assistantId:t,systemTasks:n,canOpenMemorySettings:r,isMobile:o,onClose:s}){let c=a(),{heartbeatConfig:l,consolidationConfig:u,retrospectiveConfig:p}=n,m,h,g,_,y,b,x;e===`heartbeat`?(m=`Heartbeat`,h=l?nn(l):``,g=l?.enabled??!1,_=l?.nextRunAt??null,y=l?.lastRunAt??null,b=n.isHeartbeatRunning,x=n.runHeartbeatNow):e===`consolidation`?(m=`Consolidation`,h=u?rn(u):``,g=u?.enabled??!1,_=u?.nextRunAt??null,y=u?.lastRunAt??null,b=n.isConsolidationRunning,x=n.runConsolidationNow):(m=`Memory retrospective`,h=an,g=p?.enabled??!1,_=p?.nextRunAt??null,y=p?.lastRunAt??null,b=!1,x=void 0);let C=e!==`heartbeat`,w=e===`retrospective`,T=C&&!g,E=b||T,D=C?g?`On · Managed by Memory`:`Paused`:g?`Enabled`:`Disabled`,O=w?`Memory is off, so retrospectives are paused. Turn Memory back on to resume them.`:`Memory is off, so consolidation is paused. Turn Memory back on to resume consolidation.`,k=C&&g&&r,A={path:{assistant_id:t},query:{limit:25}},j=e===`heartbeat`?re(A):e===`consolidation`?ye(A):ue(A),{data:M,isLoading:P,fetchNextPage:ee,hasNextPage:I,isFetchingNextPage:L}=ze({queryKey:j.queryKey,queryFn:j.queryFn,initialPageParam:{path:A.path,query:{}},getNextPageParam:e=>e.nextCursor??void 0,staleTime:1e4}),R=Qt(M?.pages.map(t=>({runs:t.runs.map(t=>hn(t,e))})));return(0,q.jsxs)(`div`,{className:d(`flex h-full flex-col bg-[var(--surface-overlay)]`,!o&&`rounded-[var(--radius-xl)] border border-[var(--border-base)]`),children:[(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(f,{variant:`title-small`,className:`truncate text-[var(--content-default)]`,children:m}),h?(0,q.jsx)(f,{variant:`body-small-default`,as:`p`,className:`truncate text-[var(--content-tertiary)]`,children:h}):null]}),(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(F,{}),onClick:s,"aria-label":`Close schedule details`,tooltip:`Close`,className:`shrink-0`})]}),(0,q.jsxs)(`div`,{className:`flex-1 space-y-6 overflow-y-auto px-[var(--app-spacing-lg)] py-[var(--app-spacing-lg)]`,children:[(0,q.jsxs)(`section`,{children:[(0,q.jsx)(Vn,{children:`Details`}),(0,q.jsxs)(`div`,{className:`space-y-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-lift)] px-4 py-3 text-body-medium-lighter`,children:[(0,q.jsx)(Rn,{assistantId:t,defaultCallSite:Bn[e],fallbackLabel:`Default (system task model)`,respectCallSiteOverride:!0}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Status`}),(0,q.jsxs)(`span`,{className:`flex items-center gap-2 text-[var(--content-default)]`,children:[(0,q.jsx)(`span`,{children:D}),C?null:(0,q.jsx)(S,{checked:g,onChange:n.toggleHeartbeat,"aria-label":`Toggle ${m}`})]})]}),w?null:(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Next run`}),(0,q.jsx)(`span`,{className:`text-[var(--content-default)]`,children:J(_)})]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsx)(`span`,{className:`text-[var(--content-secondary)]`,children:`Last run`}),(0,q.jsx)(`span`,{className:`text-[var(--content-default)]`,children:J(y)})]})]}),T?(0,q.jsx)(v,{tone:`warning`,className:`mt-4`,actions:r?(0,q.jsx)(i,{variant:`outlined`,size:`compact`,onClick:()=>c(W.settings.advanced),children:`Turn on Memory`}):void 0,children:O}):null]}),(0,q.jsx)(zn,{runs:R,isLoading:P,hasMore:I,isLoadingMore:L,onLoadMore:()=>void ee()})]}),k||x?(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-end gap-2 border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[k?(0,q.jsx)(i,{variant:`outlined`,leftIcon:(0,q.jsx)(Ke,{className:`h-3.5 w-3.5`}),onClick:()=>c(W.settings.advanced),children:`Memory settings`}):null,x?(0,q.jsx)(i,{variant:`primary`,leftIcon:b?(0,q.jsx)(N,{className:`h-3.5 w-3.5 animate-spin`}):(0,q.jsx)(Fe,{className:`h-3.5 w-3.5`}),onClick:x,disabled:E,children:b?`Running…`:`Run now`}):null]}):null]})}var $={security:{icon:tt,strong:`var(--feed-nudge-strong)`,weak:`var(--feed-nudge-weak)`},email:{icon:We,strong:`var(--feed-digest-strong)`,weak:`var(--feed-digest-weak)`},scheduling:{icon:et,strong:`var(--feed-thread-strong)`,weak:`var(--feed-thread-weak)`},background:{icon:Ke,strong:`var(--system-info-strong)`,weak:`var(--system-info-weak)`},system:{icon:k,strong:`var(--feed-digest-strong)`,weak:`var(--feed-digest-weak)`}},Un=[`security`,`email`,`scheduling`,`background`,`system`],Wn=`all`;function Gn({categories:e,activeFilter:t,onFilterChange:n}){let r=Un.filter(t=>e.includes(t));if(r.length<=1)return null;let i=[{value:Wn,label:`All`,icon:(0,q.jsx)(Ge,{className:`h-4 w-4`})},...r.map(e=>{let t=$[e].icon;return{value:e,label:e.charAt(0).toUpperCase()+e.slice(1),icon:(0,q.jsx)(t,{className:`h-4 w-4`})}})];return(0,q.jsx)(w,{ariaLabel:`Filter notifications`,value:t??Wn,onChange:e=>n(e===Wn?null:e),items:i,className:`self-start !w-auto [&>*]:!flex-none`})}function Kn(e,t){!t||!Te()||(e.preventDefault(),Ne(t))}var qn={p:({children:e})=>(0,q.jsx)(`p`,{className:`mb-2 text-body-medium-default last:mb-0`,style:{color:`var(--content-secondary)`},children:e}),strong:({children:e})=>(0,q.jsx)(`strong`,{style:{color:`var(--content-default)`},children:e}),em:({children:e})=>(0,q.jsx)(`em`,{style:{color:`var(--content-default)`},children:e}),a:({href:e,children:t})=>(0,q.jsx)(`a`,{href:e,className:`underline`,style:{color:`var(--content-link)`},target:`_blank`,rel:`noopener noreferrer`,onClick:t=>Kn(t,e),children:t}),ul:({children:e})=>(0,q.jsx)(`ul`,{className:`mb-2 list-disc pl-5 text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e}),ol:({children:e})=>(0,q.jsx)(`ol`,{className:`mb-2 list-decimal pl-5 text-body-medium-default`,style:{color:`var(--content-secondary)`},children:e}),li:({children:e})=>(0,q.jsx)(`li`,{className:`mb-0.5`,children:e}),code:({children:e})=>(0,q.jsx)(`code`,{className:`rounded px-1 py-0.5 font-mono text-[0.85em]`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 8%, transparent)`,color:`var(--content-default)`},children:e}),pre:({children:e})=>(0,q.jsx)(`pre`,{className:`mb-2 overflow-x-auto rounded p-3 font-mono text-[0.85em]`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`,color:`var(--content-default)`},children:e}),h1:({children:e})=>(0,q.jsx)(`h1`,{className:`mb-2 text-title-medium first:mt-0`,style:{color:`var(--content-default)`},children:e}),h2:({children:e})=>(0,q.jsx)(`h2`,{className:`mb-2 text-title-small first:mt-0`,style:{color:`var(--content-default)`},children:e}),h3:({children:e})=>(0,q.jsx)(`h3`,{className:`mb-1 text-body-medium-default first:mt-0`,style:{color:`var(--content-default)`},children:e}),blockquote:({children:e})=>(0,q.jsx)(`blockquote`,{className:`mb-2 border-l-2 pl-3 text-body-medium-default`,style:{borderColor:`var(--border-base)`,color:`var(--content-tertiary)`},children:e}),table:({children:e})=>(0,q.jsx)(`div`,{className:`mb-2 overflow-x-auto`,children:(0,q.jsx)(`table`,{className:`w-full border-collapse text-body-small-default`,style:{color:`var(--content-secondary)`},children:e})}),thead:({children:e})=>(0,q.jsx)(`thead`,{style:{backgroundColor:`var(--surface-lift)`},children:e}),tbody:({children:e})=>(0,q.jsx)(`tbody`,{children:e}),tr:({children:e})=>(0,q.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border-base)`},children:e}),th:({children:e})=>(0,q.jsx)(`th`,{className:`px-2 py-1.5 text-left font-semibold`,style:{color:`var(--content-default)`},children:e}),td:({children:e})=>(0,q.jsx)(`td`,{className:`px-2 py-1.5 align-top`,children:e})};function Jn({content:e,className:t}){return(0,q.jsx)(`div`,{className:d(`text-body-medium-default`,t),children:(0,q.jsx)(Pe,{remarkPlugins:[nt],components:qn,children:e})})}function Yn({item:e}){return(0,q.jsx)(Jn,{content:e.summary})}function Xn(e){switch(e){case`revoked`:case`expired`:return`var(--system-negative-strong)`;case`missing_scopes`:case`missing_token`:case`ping_failed`:return`var(--system-mid-strong)`;default:return`var(--content-disabled)`}}function Zn(e){return e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Qn({item:e}){let t=e.metadata,n=t?.provider;if(!n)return(0,q.jsx)(f,{variant:`body-medium-default`,className:`text-[var(--content-secondary)]`,children:e.title??e.summary});let r=t?.accountInfo??null,i=t?.status??`unreachable`,a=t?.details??``,o=Array.isArray(t?.missingScopes)?t.missingScopes:[];return(0,q.jsxs)(`div`,{className:`flex flex-col gap-[var(--app-spacing-md)]`,children:[(0,q.jsx)(f,{variant:`title-small`,as:`h3`,children:n}),r?(0,q.jsx)(f,{variant:`body-medium-lighter`,className:`text-[var(--content-secondary)]`,children:r}):null,(0,q.jsxs)(`div`,{className:`flex items-center gap-[var(--app-spacing-sm)]`,children:[(0,q.jsx)(`span`,{className:`inline-block shrink-0 rounded-full`,style:{width:8,height:8,backgroundColor:Xn(i)},"aria-hidden":`true`}),(0,q.jsx)(f,{variant:`body-medium-default`,className:`text-[var(--content-default)]`,children:Zn(i)})]}),a?(0,q.jsx)(f,{variant:`body-medium-lighter`,className:`text-[var(--content-secondary)]`,children:a}):null,o.length>0?(0,q.jsxs)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xs)]`,children:[(0,q.jsx)(f,{variant:`body-small-emphasised`,className:`text-[var(--content-secondary)]`,children:`Missing scopes`}),(0,q.jsx)(`ul`,{className:`m-0 flex list-disc flex-col gap-[var(--app-spacing-xxs)] pl-[var(--app-spacing-lg)]`,children:o.map(e=>(0,q.jsx)(`li`,{children:(0,q.jsx)(f,{variant:`body-small-default`,className:`text-[var(--content-tertiary)]`,children:e})},e))})]}):null]})}function $n(e){return e&&$[e]?$[e]:$.system}function er(e){return e.title?e.title:e.category?e.category.charAt(0).toUpperCase()+e.category.slice(1):`Notification`}function tr({item:e,isMobile:t,validConversationIds:n,onClose:r,onGoToThread:a,onUpdateStatus:o,onDismiss:s,onViewSchedule:c}){if(!e)return null;let l=e.detailPanel?.kind,u=er(e),d=$n(e.category),p=d.icon,m=e.status===`new`,h=e.status===`dismissed`,g=!!e.conversationId&&n.has(e.conversationId);return t?(0,q.jsxs)(`div`,{className:`flex h-full flex-col bg-[var(--surface-overlay)]`,children:[(0,q.jsxs)(`div`,{className:`relative flex shrink-0 items-center px-3 py-2`,children:[(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(O,{}),onClick:r,"aria-label":`Back`,tooltip:`Back`}),(0,q.jsx)(f,{variant:`body-medium-default`,className:`pointer-events-none absolute inset-x-0 text-center text-[var(--content-secondary)]`,children:`Details`}),(0,q.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,q.jsx)(i,{variant:`ghost`,iconOnly:m?(0,q.jsx)(mt,{}):(0,q.jsx)(We,{}),onClick:()=>o(e.id,m?`seen`:`new`),"aria-label":m?`Mark as read`:`Mark as unread`,tooltip:m?`Mark as read`:`Mark as unread`}),h?(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(Ue,{}),onClick:()=>o(e.id,`seen`),"aria-label":`Restore`,tooltip:`Restore`}):(0,q.jsx)(i,{variant:`ghost`,iconOnly:(0,q.jsx)(Xe,{}),onClick:()=>s(e.id),"aria-label":`Dismiss`,tooltip:`Dismiss`})]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,q.jsx)(`span`,{className:`flex shrink-0 items-center justify-center rounded-full`,style:{width:40,height:40,backgroundColor:d.weak},"aria-hidden":`true`,children:(0,q.jsx)(p,{width:18,height:18,style:{color:d.strong}})}),(0,q.jsx)(f,{variant:`title-small`,className:`min-w-0 text-[var(--content-default)]`,children:u}),(0,q.jsx)(y,{tone:`neutral`,className:`shrink-0`,title:st(e.timestamp),children:ct(e.timestamp)})]}),(0,q.jsx)(`div`,{className:`mx-4 border-b border-[var(--border-disabled)]`}),(0,q.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:l===`toolPermission`?(0,q.jsx)(Qn,{item:e}):(0,q.jsx)(Yn,{item:e})}),g||c?(0,q.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 px-4 pb-4 pt-2`,children:[c?(0,q.jsx)(i,{variant:`outlined`,fullWidth:!0,leftIcon:(0,q.jsx)(j,{className:`size-4`}),onClick:c,children:`View schedule`}):null,g?(0,q.jsx)(i,{variant:`primary`,fullWidth:!0,onClick:()=>a(e.conversationId),children:`Go to Conversation`}):null]}):null]}):(0,q.jsxs)(`div`,{className:`flex h-full flex-col rounded-[var(--radius-xl)] border border-[var(--border-base)] bg-[var(--surface-overlay)]`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-[var(--app-spacing-sm)] border-b border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,q.jsx)(`span`,{className:`flex shrink-0 items-center justify-center rounded-full`,style:{width:28,height:28,backgroundColor:d.weak},"aria-hidden":`true`,children:(0,q.jsx)(p,{width:14,height:14,style:{color:d.strong}})}),(0,q.jsx)(f,{variant:`title-small`,className:`min-w-0 flex-1 truncate text-[var(--content-default)]`,children:u}),g?(0,q.jsx)(i,{variant:`outlined`,onClick:()=>a(e.conversationId),children:`Go to Convo`}):null,(0,q.jsx)(i,{variant:`outlined`,iconOnly:(0,q.jsx)(F,{}),onClick:r,"aria-label":`Close detail panel`,tooltip:`Close`})]}),(0,q.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-[var(--app-spacing-lg)]`,children:[l===`toolPermission`?(0,q.jsx)(Qn,{item:e}):(0,q.jsx)(Yn,{item:e}),(0,q.jsx)(`div`,{className:`mt-[var(--app-spacing-md)]`,children:(0,q.jsx)(y,{tone:`neutral`,title:st(e.timestamp),children:ct(e.timestamp)})})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-[var(--app-spacing-sm)] border-t border-[var(--border-base)] p-[var(--app-spacing-lg)]`,children:[(0,q.jsx)(`div`,{children:c?(0,q.jsx)(i,{variant:`outlined`,leftIcon:(0,q.jsx)(j,{className:`size-4`}),onClick:c,children:`View schedule`}):null}),(0,q.jsx)(`div`,{className:`flex items-center gap-[var(--app-spacing-sm)]`,children:h?(0,q.jsx)(i,{variant:`primary`,onClick:()=>o(e.id,`seen`),children:`Restore`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(i,{variant:`outlined`,onClick:()=>o(e.id,m?`seen`:`new`),children:m?`Mark as read`:`Mark as unread`}),(0,q.jsx)(i,{variant:`primary`,onClick:()=>s(e.id),children:`Dismiss`})]})})]})]})}var nr={heartbeat:ft,memory_consolidation:A,schedule:et,auto_analysis:ee,user:rt,other:Qe},rr=`all`;function ir({sources:e,activeSource:t,onSourceChange:n}){if(e.length<=1)return null;let r=e.find(e=>e.key===t)??null,a=r?nr[r.type]:pt;return(0,q.jsxs)(h.Root,{children:[(0,q.jsx)(h.Trigger,{children:(0,q.jsx)(i,{variant:`outlined`,size:`compact`,active:r!==null,leftIcon:(0,q.jsx)(a,{className:`h-4 w-4`}),rightIcon:(0,q.jsx)(Ve,{className:`h-3.5 w-3.5`}),"aria-label":`Filter notifications by source`,children:r?r.label:`All sources`})}),(0,q.jsx)(h.Content,{align:`start`,className:`max-h-80 overflow-y-auto`,children:(0,q.jsxs)(h.RadioGroup,{value:t??rr,onValueChange:e=>n(e===rr?null:e),children:[(0,q.jsx)(h.RadioItem,{value:rr,children:`All sources`}),(0,q.jsx)(h.Separator,{}),e.map(e=>(0,q.jsx)(h.RadioItem,{value:e.key,children:e.label},e.key))]})})]})}function ar({label:e,onClick:t,className:n,children:i}){return(0,q.jsx)(r,{content:e,children:(0,q.jsx)(`button`,{type:`button`,"aria-label":e,onClick:e=>{e.stopPropagation(),t()},className:d(`flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md`,`text-[var(--content-secondary)] transition-colors`,`hover:bg-[var(--surface-hover)] hover:text-[var(--content-default)]`,n),children:i})})}function or(e){return e&&$[e]?$[e]:$.system}function sr({item:e,isActive:t=!1,validConversationIds:n,onSelect:r,onDismiss:i,onToggleRead:a,onGoToThread:o,trailingAction:s=`dismiss`}){let[c,l]=(0,G.useState)(!1),u=or(e.category),f=u.icon,p=e.status===`new`,m=s===`restore`;return(0,q.jsxs)(`button`,{type:`button`,onClick:()=>r(e),onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),className:d(`flex min-h-[48px] w-full cursor-pointer items-center gap-[var(--app-spacing-sm)]`,`rounded-[var(--radius-md)] px-[var(--app-spacing-md)] py-[var(--app-spacing-sm)]`,`transition-[background-color,opacity] duration-150`,t?`bg-[var(--surface-active)]`:c?`bg-[var(--surface-hover)]`:`bg-[var(--surface-overlay)]`,!p&&!t&&`opacity-70`),children:[(0,q.jsxs)(`span`,{className:`relative shrink-0`,"aria-hidden":`true`,children:[(0,q.jsx)(`span`,{className:`flex items-center justify-center rounded-full`,style:{width:26,height:26,backgroundColor:u.weak},children:(0,q.jsx)(f,{width:12,height:12,style:{color:u.strong}})}),p&&(0,q.jsx)(`span`,{className:`absolute -left-0.5 -top-0.5 h-2 w-2 rounded-full bg-[var(--system-mid-strong)]`})]}),(0,q.jsx)(`span`,{className:d(`text-body-medium-default min-w-0 flex-1 truncate text-left`,`text-[var(--content-secondary)]`),children:e.title??e.summary}),c&&!m?(0,q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-[var(--app-spacing-sm)]`,children:[a&&(0,q.jsx)(ar,{label:p?`Mark as read`:`Mark as unread`,onClick:()=>a(e.id,p?`seen`:`new`),children:p?(0,q.jsx)(mt,{width:16,height:16}):(0,q.jsx)(We,{width:16,height:16})}),o&&e.conversationId&&(!n||n.has(e.conversationId))&&(0,q.jsx)(ar,{label:`Go to thread`,onClick:()=>{p&&a&&a(e.id,`seen`),o(e.conversationId)},children:(0,q.jsx)(Be,{width:16,height:16})}),(0,q.jsx)(ar,{label:`Dismiss`,onClick:()=>i(e.id),children:(0,q.jsx)(Xe,{width:16,height:16})})]}):c&&m?(0,q.jsxs)(ar,{label:`Restore`,onClick:()=>i(e.id),className:`w-auto gap-[var(--app-spacing-xs)] px-2`,children:[(0,q.jsx)(Ue,{width:16,height:16,"aria-hidden":`true`}),(0,q.jsx)(`span`,{className:`text-body-small-default`,children:`Restore`})]}):(0,q.jsx)(`span`,{className:`shrink-0 text-body-small-default text-[var(--content-tertiary)]`,children:ct(e.timestamp)})]})}function cr(e){return[...e].sort((e,t)=>e.priority===t.priority?new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime():t.priority-e.priority)}function lr(e){let t=new Date,n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),r=new Date(t.getFullYear(),t.getMonth(),t.getDate()-1),i={today:[],yesterday:[],older:[]};for(let t of e){let e=new Date(t.createdAt);e>=n?i.today.push(t):e>=r?i.yesterday.push(t):i.older.push(t)}let a=new Map;return i.today.length>0&&a.set(`today`,i.today),i.yesterday.length>0&&a.set(`yesterday`,i.yesterday),i.older.length>0&&a.set(`older`,i.older),a}function ur(e,t){return t===null?e:e.filter(e=>(e.category??`system`)===t)}function dr(e){return e.filter(e=>e.urgency!==`high`&&e.urgency!==`critical`)}function fr(e){let t=new Set;for(let n of e)t.add(n.category??`system`);return[...t]}var pr={heartbeat:0,memory_consolidation:1,schedule:2,auto_analysis:3,user:4,other:5};function mr(e){let t=new Map;for(let n of e){let e=n.sourceKey;!e||t.has(e)||t.set(e,{key:e,label:n.sourceLabel??e,type:n.sourceType??`other`})}return[...t.values()].sort((e,t)=>{let n=pr[e.type]-pr[t.type];return n===0?e.label.localeCompare(t.label):n})}function hr(e,t){return t===null?e:e.filter(e=>e.sourceKey===t)}var gr={today:`Today`,yesterday:`Yesterday`,older:`Older`},_r=10080*60*1e3;function vr(e,t){return e.status===`new`||e.status===`dismissed`?!1:t-new Date(e.createdAt).getTime()>_r}function yr({items:e,selectedItemId:t,validConversationIds:n,onSelectItem:r,onDismissItem:i,onRestoreItem:a,onToggleRead:o,onGoToThread:s,archivedOpen:c,onArchivedOpenChange:l,dismissedOpen:u,onDismissedOpenChange:d}){let[p,m]=(0,G.useState)(null),[h,_]=(0,G.useState)(null),[v]=(0,G.useState)(()=>Date.now()),y=dr(e.filter(e=>e.status!==`dismissed`)),b=y.filter(e=>!vr(e,v)),x=cr(y.filter(e=>vr(e,v))),S=fr(b),C=mr(b),w=p&&S.includes(p)?p:null,T=h&&C.some(e=>e.key===h)?h:null;p!==w&&m(w),h!==T&&_(T);let E=lr(cr(hr(ur(b,w),T))),D=e.filter(e=>e.status===`dismissed`).sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime());return(0,q.jsxs)(`div`,{className:`flex flex-col gap-[var(--app-spacing-lg)]`,children:[(S.length>1||C.length>1)&&(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-[var(--app-spacing-sm)]`,children:[(0,q.jsx)(Gn,{categories:S,activeFilter:w,onFilterChange:m}),(0,q.jsx)(ir,{sources:C,activeSource:T,onSourceChange:_})]}),E.size===0?w||T?(0,q.jsx)(f,{variant:`body-medium-lighter`,className:`py-[var(--app-spacing-xl)] text-center text-[var(--content-disabled)]`,children:`No items match the selected filter.`}):(0,q.jsx)(Cn,{icon:k,title:`No notifications yet`,description:`Updates and activity from your assistant will appear here.`}):[...E.entries()].map(([e,a])=>(0,q.jsxs)(`section`,{className:`flex flex-col gap-[var(--app-spacing-md)]`,children:[(0,q.jsx)(f,{variant:`body-small-default`,as:`h3`,className:`text-[var(--content-tertiary)]`,children:gr[e]}),(0,q.jsx)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xs)]`,children:a.map(e=>(0,q.jsx)(sr,{item:e,isActive:e.id===t,validConversationIds:n,onSelect:r,onDismiss:i,onToggleRead:o,onGoToThread:s},e.id))})]},e)),x.length>0&&(0,q.jsx)(g.Root,{type:`single`,collapsible:!0,value:c?`archived-read`:``,onValueChange:e=>l?.(e===`archived-read`),children:(0,q.jsxs)(g.Item,{value:`archived-read`,children:[(0,q.jsxs)(g.Trigger,{className:`group gap-[var(--app-spacing-xs)] text-body-small-default text-[var(--content-tertiary)]`,children:[(0,q.jsx)(M,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,q.jsxs)(`span`,{children:[`Earlier (`,x.length,`)`]})]}),(0,q.jsx)(g.Content,{children:(0,q.jsx)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xs)] pt-[var(--app-spacing-sm)]`,children:x.map(e=>(0,q.jsx)(sr,{item:e,isActive:e.id===t,validConversationIds:n,onSelect:r,onDismiss:i,onToggleRead:o,onGoToThread:s},e.id))})})]})}),D.length>0&&(0,q.jsx)(g.Root,{type:`single`,collapsible:!0,value:u?`dismissed`:``,onValueChange:e=>d?.(e===`dismissed`),children:(0,q.jsxs)(g.Item,{value:`dismissed`,children:[(0,q.jsxs)(g.Trigger,{className:`group gap-[var(--app-spacing-xs)] text-body-small-default text-[var(--content-tertiary)]`,children:[(0,q.jsx)(M,{size:14,"aria-hidden":!0,className:`shrink-0 transition-transform group-data-[state=open]:rotate-90`}),(0,q.jsxs)(`span`,{children:[`Dismissed (`,D.length,`)`]})]}),(0,q.jsx)(g.Content,{children:(0,q.jsx)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xs)] pt-[var(--app-spacing-sm)]`,children:D.map(e=>(0,q.jsx)(sr,{item:e,onSelect:r,onDismiss:a,trailingAction:`restore`},e.id))})})]})})]})}function br(){return(0,q.jsx)(`h1`,{className:`shrink-0 text-title-large text-[var(--content-default)]`,children:`Activity`})}function xr(e){let n=Ie(),[r]=(0,G.useState)(()=>Date.now()),{data:i,isLoading:a,isError:o,refetch:s}=l({queryKey:pe({path:{assistant_id:e??``}}),queryFn:()=>e?gt(e):Promise.resolve([]),staleTime:1e4}),{data:c,isLoading:u,isError:d}=l(cn(e,n,!0)),{recurring:f,oneTime:p,pastOneTime:m}=(0,G.useMemo)(()=>{let e=sn(i??[],r);return{recurring:e.recurring,oneTime:e.upcomingOneTime,pastOneTime:e.pastOneTime}},[r,i]),h=(0,G.useMemo)(()=>new Map((c??[]).map(e=>[e.scheduleId,e])),[c]);return{recurring:f,oneTime:p,pastOneTime:m,usageForSchedule:(0,G.useCallback)(e=>u?{status:`loading`}:d?{status:`error`}:{status:`ready`,summary:h.get(e)??ln(e)},[d,u,h]),handleToggle:(0,G.useCallback)(async(n,r)=>{if(e)try{await yt(e,n,r),s()}catch(e){t(e,{context:`schedule_toggle`}),E.error(`Failed to toggle schedule.`)}},[e,s]),isLoading:a,isError:o,refetch:(0,G.useCallback)(()=>{s()},[s])}}function Sr(e){let t=c(),n=(0,G.useMemo)(()=>ae({path:{assistant_id:e??``}}),[e]),r=l({...ie({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4}),i=(0,G.useCallback)(()=>{e&&t.invalidateQueries({queryKey:n})},[e,t,n]);return{...r,invalidate:i}}function Cr(){return(0,q.jsxs)(`div`,{className:`flex flex-col gap-[var(--app-spacing-xl)]`,children:[(0,q.jsx)(`div`,{className:`h-7 w-64 animate-pulse rounded-md bg-[var(--surface-lift)]`}),(0,q.jsx)(`div`,{className:`flex flex-col gap-[var(--app-spacing-sm)]`,children:Array.from({length:4},(e,t)=>(0,q.jsx)(`div`,{className:`h-16 animate-pulse rounded-md bg-[var(--surface-lift)]`},t))})]})}function wr(e){let t=e?.metadata?.scheduleId;return typeof t==`string`&&t.length>0?t:null}function Tr({assistantId:e,validConversationIds:t,activeTab:n,onTabChange:r,routeScheduleId:a,onSelectScheduleId:o,onStartNewChat:s,onOpenConversation:c}){let u=De(),d=Ie(),f=Ze(e);Sr(e);let p=xr(e),m=bn(e,d),{data:h=!1}=l({queryKey:[`assistant-memory-opt-out-capability`,e],queryFn:async()=>{let t=await we(e);return t.ok&&t.data.capabilities?.memoryOptOut===!0},retry:!1,staleTime:1e4}),[g,v]=(0,G.useState)(!1),y=a,[b,x]=(0,G.useState)(null),[S,w]=(0,G.useState)(null),[T,E]=(0,G.useState)(!1),[D,O]=(0,G.useState)(!1),[k,A]=(0,G.useState)(!1),j=y?p.recurring.find(e=>e.id===y)??p.oneTime.find(e=>e.id===y)??p.pastOneTime.find(e=>e.id===y)??null:null;(0,G.useEffect)(()=>{y&&!p.isLoading&&!j&&o(null)},[y,j,p.isLoading,o]);let M=S===`heartbeat`?m.heartbeatConfig!=null:S===`consolidation`?m.consolidationConfig?.available===!0:S===`retrospective`?m.retrospectiveConfig?.available===!0:!1;(0,G.useEffect)(()=>{S&&!m.isLoading&&!M&&w(null)},[S,M,m.isLoading]);let N=(0,G.useCallback)(e=>{x(null),w(null),o(e)},[o]),P=(0,G.useCallback)(e=>{x(null),y&&o(null),w(e)},[o,y]),ee=(0,G.useCallback)(e=>{w(null),e.status===`new`?(x({...e,status:`seen`}),f.updateStatus.mutate({itemId:e.id,status:`seen`})):x(e)},[f.updateStatus]),F=(0,G.useCallback)(()=>{x(null)},[]),I=(0,G.useCallback)(e=>{f.updateStatus.mutate({itemId:e,status:`dismissed`}),b?.id===e&&x(null)},[f.updateStatus,b?.id]),L=(0,G.useCallback)(e=>{f.updateStatus.mutate({itemId:e,status:`seen`}),x(t=>t?.id===e?{...t,status:`seen`}:t)},[f.updateStatus]),R=(0,G.useCallback)((e,t)=>{f.updateStatus.mutate({itemId:e,status:t}),x(n=>n?.id===e?{...n,status:t}:n)},[f.updateStatus]),te=(0,G.useCallback)(e=>{x(null),c(e)},[c]),ne=f.data?.items??[],z=dr(ne.filter(e=>e.status!==`dismissed`)),re=z.filter(e=>e.status===`new`).length,ie=z.length,ae=Sn(),oe=(0,G.useCallback)(()=>{f.markAll.mutate({from:[`new`],to:`seen`,ids:z.filter(e=>e.status===`new`).map(e=>e.id)})},[f.markAll,z]),se=(0,G.useCallback)(()=>{f.markAll.mutate({from:[`new`,`seen`,`acted_on`],to:`dismissed`,ids:z.map(e=>e.id)}),x(null)},[f.markAll,z]),B=wr(b),ce=B!=null&&(p.recurring.some(e=>e.id===B)||p.oneTime.some(e=>e.id===B)||p.pastOneTime.some(e=>e.id===B)),le=b?(0,q.jsx)(tr,{item:b,isMobile:u,validConversationIds:t,onClose:F,onGoToThread:te,onUpdateStatus:R,onDismiss:I,onViewSchedule:ce?()=>{N(B)}:void 0}):null,ue=(j?(0,q.jsx)(Nn,{schedule:j,assistantId:e,usage:p.usageForSchedule(j.id),isMobile:u,onClose:()=>o(null),onDeleted:()=>{o(null),p.refetch()}}):null)??(S&&M?(0,q.jsx)(Hn,{kind:S,assistantId:e,systemTasks:m,canOpenMemorySettings:h,isMobile:u,onClose:()=>w(null)}):null),de=le??ue,fe=(e,t,n)=>t&&!u?(0,q.jsx)(_,{className:`min-h-0 flex-1`,storageKey:`homeDetailDrawerWidth`,defaultRightWidth:480,minLeftWidth:320,minRightWidth:400,hideDivider:!0,left:(0,q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col pr-[var(--app-spacing-lg)]`,children:e}),right:(0,q.jsx)(`div`,{className:`home-detail-drawer`,children:t},n)}):e,pe=(0,q.jsx)(Dn,{recurring:p.recurring,oneTime:p.oneTime,pastOneTime:p.pastOneTime,usageForSchedule:p.usageForSchedule,isLoading:p.isLoading,isError:p.isError,refetch:p.refetch,onToggle:p.handleToggle,onSelectSchedule:N,selectedScheduleId:y,onStartNewChat:s,onCreateSchedule:()=>v(!0),pastOpen:T,onPastOpenChange:E,systemTasksSlot:(0,q.jsx)(mn,{heartbeatConfig:m.heartbeatConfig,consolidationConfig:m.consolidationConfig,retrospectiveConfig:m.retrospectiveConfig,heartbeatUsage:m.heartbeatUsage,consolidationUsage:m.consolidationUsage,retrospectiveUsage:m.retrospectiveUsage,isLoading:m.isLoading,hasError:m.hasError,onRetry:m.refetchAll,onSelectHeartbeat:()=>P(`heartbeat`),onSelectConsolidation:()=>P(`consolidation`),onSelectRetrospective:()=>P(`retrospective`)})}),me=(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-[var(--app-spacing-lg)] overflow-y-auto`,children:[f.isError?(0,q.jsxs)(`div`,{role:`alert`,className:`rounded-md border border-[var(--system-negative-weak)] bg-[var(--system-negative-weak)] px-[var(--app-spacing-lg)] py-[var(--app-spacing-md)] text-[var(--system-negative-strong)]`,children:[`Couldn't load home feed`,f.error instanceof Error?`: ${f.error.message}`:`.`]}):null,ae&&(re>0||ie>0)&&(0,q.jsxs)(`div`,{className:`flex items-center justify-end gap-[var(--app-spacing-sm)]`,children:[re>0&&(0,q.jsx)(i,{variant:`ghost`,size:`compact`,onClick:oe,disabled:f.markAll.isPending,children:`Mark all as read`}),ie>0&&(0,q.jsx)(i,{variant:`ghost`,size:`compact`,onClick:se,disabled:f.markAll.isPending,children:`Clear all`})]}),(0,q.jsx)(yr,{items:ne,selectedItemId:b?.id,validConversationIds:t,onSelectItem:ee,onDismissItem:I,onRestoreItem:L,onToggleRead:R,onGoToThread:te,archivedOpen:D,onArchivedOpenChange:O,dismissedOpen:k,onDismissedOpenChange:A})]}),he=(0,q.jsxs)(C.Root,{value:n,onValueChange:e=>r(e),className:`flex min-h-0 flex-1 flex-col`,children:[(0,q.jsxs)(C.List,{className:`shrink-0`,children:[(0,q.jsx)(C.Trigger,{value:`notifications`,children:`Notifications`}),(0,q.jsx)(C.Trigger,{value:`schedules`,children:`Schedules`})]}),(0,q.jsx)(C.Panel,{value:`notifications`,className:`mt-[var(--app-spacing-lg)] flex min-h-0 flex-1 flex-col`,children:fe(me,le,b?.id)}),(0,q.jsx)(C.Panel,{value:`schedules`,className:`mt-[var(--app-spacing-lg)] flex min-h-0 flex-1 flex-col`,children:fe(pe,ue,y??S??void 0)})]}),ge=f.isLoading?(0,q.jsx)(Cr,{}):(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-[var(--app-spacing-xl)]`,children:[u?null:(0,q.jsx)(br,{}),he]});return de&&u?(0,q.jsx)(`div`,{className:`fixed inset-0 z-30 bg-[var(--surface-overlay)]`,style:{paddingTop:`var(--safe-area-inset-top, env(safe-area-inset-top, 0px))`,paddingBottom:`var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px))`},children:de}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(ot,{children:ge}),(0,q.jsx)(Rt,{isOpen:g,assistantId:e,onClose:()=>v(!1),onCreated:()=>{v(!1),p.refetch()}})]})}function Er(){let e=a(),t=s(),{scheduleId:n}=o(),r=it(),i=t.pathname===W.schedules.root||t.pathname.startsWith(`${W.schedules.root}/`)?`schedules`:`notifications`,c=n??null,l=(0,G.useCallback)(t=>{e(t===`schedules`?W.schedules.root:W.home)},[e]),u=(0,G.useCallback)(t=>{e(t?W.schedules.detail(t):W.schedules.root)},[e]),d=Re.use.setTopBarCenter(),p=De(),{conversations:m}=He(r),{conversations:h}=$e(r,!0),{conversations:g}=Le(r,!0),_=(0,G.useMemo)(()=>new Set(qe(m,h,g).map(e=>e.conversationId)),[m,h,g]);return(0,G.useEffect)(()=>(d(p?(0,q.jsx)(f,{variant:`body-medium-default`,className:`text-[var(--content-secondary)]`,children:`Activity`}):null),()=>{d(null)}),[p,d]),(0,q.jsx)(Tr,{assistantId:r,validConversationIds:_,activeTab:i,onTabChange:l,routeScheduleId:c,onSelectScheduleId:u,onStartNewChat:()=>{ke.getState().setMainView(`chat`);let t=je();Ae.getState().setActiveConversationId(t),e(W.conversation(t)),Me()},onOpenConversation:t=>e(W.conversation(t))})}export{Er as HomePageRoute};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D-AX8Voo.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{et as o,tt as s}from"./local-mode-CgrENuVf.js";import{t as c}from"./is-electron-C_ZTVhv8.js";import{n as l}from"./resolved-assistants-store-Dqf0LJrA.js";import{i as u}from"./auth-store-B1y6dgYQ.js";import{a as d,r as f}from"./routes-C6gxiCrz.js";import{t as p}from"./client-feature-flag-store-CHA6YxVq.js";import{t as m}from"./use-onboarding-login-Da1r3M06.js";import{Yi as h,pa as g,rn as _}from"./index-CZ2UBc_U.js";import{r as v}from"./provider-key-Ba5Bw5MO.js";var y=e(t(),1),b=a(),x=`h-5 w-5 shrink-0 text-[var(--content-secondary)]`;function S(){let e=u(),t=p.use.multiPlatformAssistant(),n=l.use.assistants().some(e=>e.isPlatformHosted);return[{mode:`vellum-cloud`,label:`Vellum Cloud`,subtitle:`Always on, 24/7, even when your computer is off. Runs on Vellum's secure infrastructure.`,icon:(0,b.jsx)(g,{className:x}),...!e||!t&&n?{disabled:!0,badge:e?`Limit Reached`:`Requires Account`}:{}},{mode:`local`,label:`Local`,subtitle:`Runs directly on your machine. Your data never leaves your computer.`,icon:(0,b.jsx)(h,{className:x})}]}function C(){let e=r(),[t]=i(),a=t.get(`from`)===`select-assistant`,l=u(),p=c(),h=S(),g=h.find(e=>e.mode===`vellum-cloud`)?.disabled,[x,C]=(0,y.useState)(l&&!g?`vellum-cloud`:`local`);(0,y.useEffect)(()=>{g&&x===`vellum-cloud`&&C(`local`)},[g,x]);let{loading:T,error:E,login:D,cancel:O}=m(`${d.onboarding.hosting}?from=select-assistant`),k=a&&!l&&!p;return(0,b.jsx)(_,{children:(0,b.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${p?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`min-h-screen px-6 pb-40 pt-16`} text-[var(--content-default)]`,children:[(0,b.jsx)(`h1`,{className:p?`text-title-large`:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Hosting`}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)] ${p?`mt-3.5`:`mt-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Where do you want your assistant to live?`}),E&&(0,b.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:E}),(0,b.jsx)(`div`,{className:`grid w-full ${p?`mt-8 gap-2`:`auto-rows-fr mt-10 gap-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:h.map(e=>(0,b.jsx)(w,{option:e,selected:x===e.mode,onSelect:()=>{e.disabled||C(e.mode)}},e.mode))}),(0,b.jsxs)(`div`,{className:`mt-8 flex w-full flex-col ${p?`gap-2.5`:`gap-2`}`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,b.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,className:p?void 0:`h-11 text-base`,onClick:()=>{x===`vellum-cloud`?(s(),o(null),v(null),e(d.onboarding.privacy)):e(`${d.onboarding.apiKey}?hosting=${x}`)},children:`Continue`}),k&&(0,b.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:T?O:()=>void D(),children:T?`Cancel`:`Log In`}),(0,b.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,className:p?void 0:`h-11 text-base`,onClick:()=>{e(a?d.selectAssistant:d.welcome)},disabled:T,children:`Back`})]}),(0,b.jsx)(`a`,{href:f(d.docs.hostingOptions),target:`_blank`,rel:`noreferrer`,className:`prechat-md-regular mt-6 text-body-medium-default text-[var(--content-default)] underline`,style:{animation:`fadeInUp 0.5s ease-out 0.6s both`},children:`Need help choosing?`})]})})}function w({option:e,selected:t,onSelect:n}){let r=c();return(0,b.jsxs)(`button`,{type:`button`,onClick:n,disabled:e.disabled,className:`flex w-full items-center border text-left transition-colors ${r?`h-[72px] gap-3 rounded-lg p-3`:`gap-4 rounded-xl px-4 py-4`} ${e.disabled?`cursor-not-allowed opacity-60`:`cursor-pointer`} ${t&&!e.disabled?`${r?`border-[var(--primary-base)]/50`:`border-[var(--primary-base)]`} bg-[var(--primary-base)]/5`:`${r?`border-[var(--border-disabled)]`:`border-[var(--border-element)]`} bg-transparent`}`,children:[e.icon,(0,b.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-default)]`,children:e.label}),e.badge&&(0,b.jsx)(`span`,{className:`rounded-full bg-[var(--surface-tertiary)] px-2 py-0.5 text-[var(--content-tertiary)] ${r?`text-label-medium-default`:`text-body-small-default`}`,children:e.badge})]}),(0,b.jsx)(`span`,{className:`mt-0.5 line-clamp-2 text-[var(--content-tertiary)] ${r?`text-label-medium-default leading-[14px]`:`text-body-small-default`}`,children:e.subtitle})]}),!e.disabled&&(0,b.jsx)(`div`,{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded-full ${r?`border-[1.5px]`:`border-2`} ${t?r?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--primary-base)]`:`border-[var(--border-element)]`}`,children:t&&(0,b.jsx)(`div`,{className:`h-1.5 w-1.5 rounded-full ${r?`bg-[var(--aux-white)]`:`bg-[var(--primary-base)]`}`})})]})}export{C as HostingScreen};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D-AX8Voo.js";import{d as r,h as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as a}from"./jsx-runtime-CVSDxk6A.js";import{et as o,tt as s}from"./local-mode-CgrENuVf.js";import{t as c}from"./is-electron-C_ZTVhv8.js";import{n as l}from"./resolved-assistants-store-Dqf0LJrA.js";import{i as u}from"./auth-store-B1y6dgYQ.js";import{a as d,r as f}from"./routes-C6gxiCrz.js";import{t as p}from"./client-feature-flag-store-CHA6YxVq.js";import{t as m}from"./use-onboarding-login-Da1r3M06.js";import{Yi as h,pa as g,rn as _}from"./index-B-S-gNKm.js";import{r as v}from"./provider-key-Ba5Bw5MO.js";var y=e(t(),1),b=a(),x=`h-5 w-5 shrink-0 text-[var(--content-secondary)]`;function S(){let e=u(),t=p.use.multiPlatformAssistant(),n=l.use.assistants().some(e=>e.isPlatformHosted);return[{mode:`vellum-cloud`,label:`Vellum Cloud`,subtitle:`Always on, 24/7, even when your computer is off. Runs on Vellum's secure infrastructure.`,icon:(0,b.jsx)(g,{className:x}),...!e||!t&&n?{disabled:!0,badge:e?`Limit Reached`:`Requires Account`}:{}},{mode:`local`,label:`Local`,subtitle:`Runs directly on your machine. Your data never leaves your computer.`,icon:(0,b.jsx)(h,{className:x})}]}function C(){let e=r(),[t]=i(),a=t.get(`from`)===`select-assistant`,l=u(),p=c(),h=S(),g=h.find(e=>e.mode===`vellum-cloud`)?.disabled,[x,C]=(0,y.useState)(l&&!g?`vellum-cloud`:`local`);(0,y.useEffect)(()=>{g&&x===`vellum-cloud`&&C(`local`)},[g,x]);let{loading:T,error:E,login:D,cancel:O}=m(`${d.onboarding.hosting}?from=select-assistant`),k=a&&!l&&!p;return(0,b.jsx)(_,{children:(0,b.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col items-center ${p?`min-h-full px-8 pt-21 pb-4 electron-prechat-type`:`min-h-screen px-6 pb-40 pt-16`} text-[var(--content-default)]`,children:[(0,b.jsx)(`h1`,{className:p?`text-title-large`:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Hosting`}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)] ${p?`mt-3.5`:`mt-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Where do you want your assistant to live?`}),E&&(0,b.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:E}),(0,b.jsx)(`div`,{className:`grid w-full ${p?`mt-8 gap-2`:`auto-rows-fr mt-10 gap-3`}`,style:{animation:`fadeInUp 0.5s ease-out 0.4s both`},children:h.map(e=>(0,b.jsx)(w,{option:e,selected:x===e.mode,onSelect:()=>{e.disabled||C(e.mode)}},e.mode))}),(0,b.jsxs)(`div`,{className:`mt-8 flex w-full flex-col ${p?`gap-2.5`:`gap-2`}`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,b.jsx)(n,{variant:`primary`,size:`regular`,fullWidth:!0,className:p?void 0:`h-11 text-base`,onClick:()=>{x===`vellum-cloud`?(s(),o(null),v(null),e(d.onboarding.privacy)):e(`${d.onboarding.apiKey}?hosting=${x}`)},children:`Continue`}),k&&(0,b.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:T?O:()=>void D(),children:T?`Cancel`:`Log In`}),(0,b.jsx)(n,{variant:`outlined`,size:`regular`,fullWidth:!0,className:p?void 0:`h-11 text-base`,onClick:()=>{e(a?d.selectAssistant:d.welcome)},disabled:T,children:`Back`})]}),(0,b.jsx)(`a`,{href:f(d.docs.hostingOptions),target:`_blank`,rel:`noreferrer`,className:`prechat-md-regular mt-6 text-body-medium-default text-[var(--content-default)] underline`,style:{animation:`fadeInUp 0.5s ease-out 0.6s both`},children:`Need help choosing?`})]})})}function w({option:e,selected:t,onSelect:n}){let r=c();return(0,b.jsxs)(`button`,{type:`button`,onClick:n,disabled:e.disabled,className:`flex w-full items-center border text-left transition-colors ${r?`h-[72px] gap-3 rounded-lg p-3`:`gap-4 rounded-xl px-4 py-4`} ${e.disabled?`cursor-not-allowed opacity-60`:`cursor-pointer`} ${t&&!e.disabled?`${r?`border-[var(--primary-base)]/50`:`border-[var(--primary-base)]`} bg-[var(--primary-base)]/5`:`${r?`border-[var(--border-disabled)]`:`border-[var(--border-element)]`} bg-transparent`}`,children:[e.icon,(0,b.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`span`,{className:`text-body-medium-default text-[var(--content-default)]`,children:e.label}),e.badge&&(0,b.jsx)(`span`,{className:`rounded-full bg-[var(--surface-tertiary)] px-2 py-0.5 text-[var(--content-tertiary)] ${r?`text-label-medium-default`:`text-body-small-default`}`,children:e.badge})]}),(0,b.jsx)(`span`,{className:`mt-0.5 line-clamp-2 text-[var(--content-tertiary)] ${r?`text-label-medium-default leading-[14px]`:`text-body-small-default`}`,children:e.subtitle})]}),!e.disabled&&(0,b.jsx)(`div`,{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded-full ${r?`border-[1.5px]`:`border-2`} ${t?r?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--primary-base)]`:`border-[var(--border-element)]`}`,children:t&&(0,b.jsx)(`div`,{className:`h-1.5 w-1.5 rounded-full ${r?`bg-[var(--aux-white)]`:`bg-[var(--primary-base)]`}`})})]})}export{C as HostingScreen};
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-BG-GkiMq.js";import{t as n}from"./react-DJZBPgpf.js";import{O as r,t as i}from"./button-D-AX8Voo.js";import{d as a}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as o}from"./QueryClientProvider-DKhXIxGb.js";import{t as s}from"./useQuery-B45lW1Kk.js";import{t as c}from"./useMutation-Lj4VunQV.js";import{t as l}from"./jsx-runtime-CVSDxk6A.js";import{t as u}from"./card-BibIM9x3.js";import"./src-SCpl1O1B.js";import{t as d}from"./confirm-dialog-bfBx6UYv.js";import{n as f,s as p,t as m}from"./install-C22EWSPL.js";import{t as h}from"./chevron-left-DghyKSEE.js";import{t as g}from"./chevron-right-B6vEpVY0.js";import{n as _}from"./animated-avatar-CEC1DGcI.js";import{t as v}from"./file-text-ClqzuFsu.js";import{n as y,t as b}from"./minimize-2-dKm10qRD.js";import{t as x}from"./pencil-B90pDI55.js";import{t as S}from"./save-BpAesNEP.js";import{t as C}from"./sparkles-Bla177ar.js";import{t as w}from"./x-DxL-bCuT.js";import{Yt as T,vt as E,yt as ee}from"./react-query.gen-BwkZCSTW.js";import{r as D}from"./api-1X5EQzNF.js";import{a as O}from"./routes-C6gxiCrz.js";import{n as k}from"./viewer-store-BR99G-Ii.js";import{t as A}from"./conversation-store-B8D6wE18.js";import{t as j}from"./conversation-selection-CNssqGbG.js";import{t as M}from"./misc-CFzLzLPH.js";import{t as N}from"./proxy-BgtfAoJj.js";import{t as te}from"./AnimatePresence-uY0BR2n2.js";import{Qi as P,ar as ne,at as F,cr as re,ei as I,gt as L,ni as ie,nr as ae,or as oe,ri as se,rr as R,ti as z,wi as B}from"./index-CZ2UBc_U.js";import{t as V}from"./use-active-assistant-id-BVzVN4_g.js";var ce=e(r(),1),H=e(n(),1),U=l();function W(e,t,n){return n===`forward`?(e+1)%t:(e-1+t)%t}function G({assistantId:e,initialTraits:t,onSave:n,onCancel:r}){let[i,a]=(0,H.useState)(null),[o,s]=(0,H.useState)(!0),[c,l]=(0,H.useState)(!1),u=(0,H.useRef)(null),[d,f]=(0,H.useState)(0),[p,m]=(0,H.useState)(0),[h,g]=(0,H.useState)(0);(0,H.useEffect)(()=>{if(u.current===e)return;let n=!1;return R(e).then(r=>{if(!n&&(u.current=e,a(r),s(!1),r&&t)){let e=r.bodyShapes.findIndex(e=>e.id===t.bodyShape),n=r.eyeStyles.findIndex(e=>e.id===t.eyeStyle),i=r.colors.findIndex(e=>e.id===t.color);e>=0&&f(e),n>=0&&m(n),i>=0&&g(i)}}),()=>{n=!0}},[e,t]);let v=(0,H.useCallback)(()=>{i&&(f(Math.floor(Math.random()*i.bodyShapes.length)),m(Math.floor(Math.random()*i.eyeStyles.length)),g(Math.floor(Math.random()*i.colors.length)))},[i]),y=(0,H.useCallback)(async()=>{if(!i)return;let t={bodyShape:i.bodyShapes[d].id,eyeStyle:i.eyeStyles[p].id,color:i.colors[h].id};l(!0);try{await ne(e,t),n?.(t)}finally{l(!1)}},[i,d,p,h,e,n]);if(o)return(0,U.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,U.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-tertiary)]`})});if(!i)return(0,U.jsx)(`div`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-quiet)]`,children:`Unable to load avatar components. Make sure your assistant is running.`});let b=i.bodyShapes[d],x=i.eyeStyles[p],C=i.colors[h];return(0,U.jsxs)(`div`,{className:`space-y-6`,children:[(0,U.jsx)(`div`,{className:`flex justify-center`,children:(0,U.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,U.jsx)(F,{components:i,bodyShapeId:b.id,eyeStyleId:x.id,colorId:C.id,size:160})})}),(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsx)(K,{label:`Body`,value:b.id,onPrev:()=>f(W(d,i.bodyShapes.length,`backward`)),onNext:()=>f(W(d,i.bodyShapes.length,`forward`))}),(0,U.jsx)(K,{label:`Eyes`,value:x.id,onPrev:()=>m(W(p,i.eyeStyles.length,`backward`)),onNext:()=>m(W(p,i.eyeStyles.length,`forward`))}),(0,U.jsx)(K,{label:`Color`,value:C.id,colorHex:C.hex,onPrev:()=>g(W(h,i.colors.length,`backward`)),onNext:()=>g(W(h,i.colors.length,`forward`))})]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:v,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:[(0,U.jsx)(_,{className:`h-4 w-4`}),`Randomize`]}),(0,U.jsxs)(`button`,{type:`button`,onClick:y,disabled:c,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--system-positive-strong)] bg-[var(--system-positive-weak)] px-3 py-2 text-body-medium-default text-[var(--system-positive-strong)] transition-colors hover:opacity-90 disabled:opacity-50`,children:[(0,U.jsx)(S,{className:`h-4 w-4`}),c?`Saving...`:`Save Avatar`]}),r&&(0,U.jsx)(`button`,{type:`button`,onClick:r,className:`flex cursor-pointer items-center justify-center rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:(0,U.jsx)(w,{className:`h-4 w-4`})})]})]})}function K({label:e,value:t,colorHex:n,onPrev:r,onNext:i}){return(0,U.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,U.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:e}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:r,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,U.jsx)(h,{className:`h-4 w-4`})}),(0,U.jsxs)(`div`,{className:`flex min-w-[80px] items-center justify-center gap-2`,children:[n&&(0,U.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-[var(--border-element)]`,style:{backgroundColor:n}}),(0,U.jsx)(`span`,{className:`text-body-medium-default capitalize text-[var(--content-strong)]`,children:t})]}),(0,U.jsx)(`button`,{type:`button`,onClick:i,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,U.jsx)(g,{className:`h-4 w-4`})})]})]})}function le({open:e,onClose:t,assistantId:n,components:r,traits:i,customImageUrl:a,onSaveCharacter:o,onUploadImage:s,onGenerateWithAI:c}){let l=(0,H.useId)(),u=(0,H.useRef)(null),d=(0,H.useRef)(null),f=(0,H.useRef)(null),[p,m]=(0,H.useState)(`actions`),[_,v]=(0,H.useState)(!1);(0,H.useEffect)(()=>{e&&d.current?.focus()},[e]),(0,H.useEffect)(()=>{if(e){let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}},[e]);let y=(0,H.useCallback)(()=>{m(`actions`),t()},[t]),b=(0,H.useCallback)(e=>{e.key===`Escape`&&(p===`character-builder`?m(`actions`):y())},[y,p]),x=(0,H.useCallback)(e=>{e.target===u.current&&y()},[y]),S=(0,H.useCallback)(()=>{m(`actions`)},[]),T=(0,H.useCallback)(()=>{m(`character-builder`)},[]),E=(0,H.useCallback)(async e=>{let t=e.target.files?.[0];if(!t)return;v(!0);let r=await oe(n,t);v(!1),r&&(s(),y()),f.current&&(f.current.value=``)},[n,s,y]),ee=(0,H.useCallback)(()=>{f.current?.click()},[]),D=(0,H.useCallback)(()=>{y(),c?.()},[y,c]),O=(0,H.useCallback)(e=>{o(e),y()},[o,y]);return e?(0,ce.createPortal)((0,U.jsxs)(`div`,{ref:u,role:`dialog`,"aria-modal":`true`,"aria-labelledby":l,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:b,onClick:x,children:[(0,U.jsxs)(`div`,{className:`mx-4 flex w-full max-w-md flex-col rounded-xl border shadow-xl`,style:{backgroundColor:`var(--surface-lift)`,borderColor:`var(--border-base)`,maxHeight:`85vh`},children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between border-b px-6 py-4`,style:{borderColor:`var(--border-base)`},children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p===`character-builder`&&(0,U.jsx)(`button`,{type:`button`,onClick:S,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Back`,children:(0,U.jsx)(h,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,U.jsx)(`h2`,{id:l,className:`text-title-small`,style:{color:`var(--content-default)`},children:p===`character-builder`?`Build a Character`:`Update Avatar`})]}),(0,U.jsx)(`button`,{ref:d,type:`button`,onClick:y,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Close`,children:(0,U.jsx)(w,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})})]}),(0,U.jsx)(`div`,{className:`overflow-y-auto p-6`,children:p===`actions`?(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-6`,children:[(0,U.jsx)(L,{components:r,traits:i,customImageUrl:a,size:120,interactive:!0}),(0,U.jsxs)(`div`,{className:`w-full space-y-2`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:T,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,U.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,U.jsx)(se,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,U.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Build a Character`}),(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Build your own character`})]}),(0,U.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),(0,U.jsxs)(`button`,{type:`button`,onClick:ee,disabled:_,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,U.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,U.jsx)(P,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,U.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:_?`Uploading...`:`Upload Image`}),(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Choose an image from your computer`})]}),(0,U.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),c&&(0,U.jsxs)(`button`,{type:`button`,onClick:D,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,U.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,U.jsx)(C,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,U.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Generate with AI`}),(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Create an avatar through chat`})]}),(0,U.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]})]})]}):(0,U.jsx)(G,{assistantId:n,initialTraits:i,onSave:O,onCancel:S})})]}),(0,U.jsx)(`input`,{ref:f,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif`,className:`hidden`,onChange:E})]}),document.body):null}var ue={displayName:`Other`,color:`#888`,emoji:`?`},de={email:{displayName:`Email`,color:`#A665C9`,emoji:`📧`},calendar:{displayName:`Calendar`,color:`#0E9B8B`,emoji:`📅`},messaging:{displayName:`Messaging`,color:`#6B8AE0`,emoji:`💬`},browsing:{displayName:`Browsing`,color:`#E9642F`,emoji:`🌐`},productivity:{displayName:`Productivity`,color:`#0E9B8B`,emoji:`📋`},development:{displayName:`Development`,color:`#EF4400`,emoji:`🔨`},voice:{displayName:`Voice`,color:`#DB4B77`,emoji:`🎤`},commerce:{displayName:`Commerce`,color:`#E9C91A`,emoji:`🛒`},content:{displayName:`Content`,color:`#DB4B77`,emoji:`🎨`},health:{displayName:`Health`,color:`#4C9B50`,emoji:`❤️`},system:{displayName:`System`,color:`#8D99A5`,emoji:`⚙️`},integrations:{displayName:`Integrations`,color:`#8D99A5`,emoji:`🔗`}};function q(e){return de[e]??ue}var J=[`email`,`calendar`,`messaging`,`browsing`,`productivity`,`development`,`voice`,`commerce`,`content`,`health`,`system`,`integrations`],fe={email:[{label:`Sending`,emoji:`📨`,skillIds:new Set([`agentmail`,`email-setup`])},{label:`Reading`,emoji:`📬`,skillIds:new Set([`email-channel`,`gmail`])}],messaging:[{label:`Chat`,emoji:`💬`,skillIds:new Set([`messaging`,`slack`,`telegram`])},{label:`Notifications`,emoji:`🔔`,skillIds:new Set([`notifications`])},{label:`People`,emoji:`👥`,skillIds:new Set([`contacts`,`followups`])}],development:[{label:`Coding`,emoji:`💻`,skillIds:new Set([`typescript-eval`,`frontend-design`])},{label:`Dev Tools`,emoji:`🔧`,skillIds:new Set([`api-mapping`,`cli-discover`,`subagent`,`app-builder`])}],browsing:[{label:`Control`,emoji:`🎮`,skillIds:new Set([`computer-use`,`macos-automation`,`browser`])},{label:`Triggers`,emoji:`⏰`,skillIds:new Set([`watcher`,`time-based-actions`])}],commerce:[{label:`Shopping`,emoji:`🛒`,skillIds:new Set([`amazon`,`doordash`,`restaurant-reservation`])}],system:[{label:`Core`,emoji:`🧠`,skillIds:new Set([`knowledge-graph`,`skills-catalog`,`self-upgrade`])},{label:`Daily`,emoji:`☀️`,skillIds:new Set([`start-the-day`,`weather`])}]},pe=14,me=10,he=6;function ge(e){switch(e.kind.type){case`center`:return{shape:`circle`,size:90,cornerRadius:0};case`category`:return{shape:`roundedRect`,size:80,cornerRadius:pe};case`subCategory`:return{shape:`roundedRect`,size:56,cornerRadius:me};case`skill`:return{shape:`diamond`,size:64,cornerRadius:he}}}function _e(e,t,n,r){let i=Math.min(Math.max(0,t),e),a=Math.abs(n),o=Math.abs(r);if(a<1e-6&&o<1e-6)return e;let s=e/Math.max(a,o),c=s*n,l=s*r;if(!(Math.abs(c)>e-i&&Math.abs(l)>e-i))return s;let u=Math.sign(c)*(e-i),d=Math.sign(l)*(e-i),f=n*u+r*d,p=u*u+d*d-i*i,m=f*f-p;return m<0?s:f+Math.sqrt(m)}function ve(e,t,n){switch(e.shape){case`circle`:return e.size/2;case`roundedRect`:return _e(e.size/2,e.cornerRadius,t,n);case`diamond`:{let r=(t+n)*Math.SQRT1_2,i=(-t+n)*Math.SQRT1_2;return _e(e.size/2,e.cornerRadius,r,i)}}}function ye(e,t){let n=t.x-e.x,r=t.y-e.y,i=Math.sqrt(n*n+r*r);if(i<1e-6)return{x1:e.x,y1:e.y,x2:t.x,y2:t.y};let a=n/i,o=r/i,s=Math.max(0,ve(ge(e),a,o)-3),c=Math.max(0,ve(ge(t),-a,-o)-3);if(s+c>=i){let n=(e.x+t.x)/2,r=(e.y+t.y)/2;return{x1:n,y1:r,x2:n,y2:r}}return{x1:e.x+a*s,y1:e.y+o*s,x2:t.x-a*c,y2:t.y-o*c}}var be=10,xe=200,Se=160,Y=160;function X(e,t,n,r){let i={x:e.x,y:e.y};for(let e=0;e<30;e++){let e=0,a=0,o=0;for(let s of n){let n=i.x-s.x,c=i.y-s.y,l=Math.sqrt(n*n+c*c),u=t+s.radius+r-l;u>e&&(e=u,l<.1?(a=u+1,o=0):(a=n/l*(u+1),o=c/l*(u+1)))}if(e<=0)break;i={x:i.x+a,y:i.y+o}}return i}function Ce(e,t,n,r,i,a,o,s,c,l,u,d){if(e.length===0)return;let f=a+o,p=Math.cos(r),m=Math.sin(r),h=-m,g=p,_=f*.88,v=q(c).color;e.forEach((r,c)=>{let y=Math.floor(c/3),b=c%3,x=Math.min(3,e.length-y*3),S=(b-(x-1)/2)*f,C=y%2==1&&x<3?f*.5:0,w=i+y*_,T=X({x:n.x+w*p+(S+C)*h,y:n.y+w*m+(S+C)*g},a/2,u,o);u.push({id:r.id,kind:{type:`skill`,item:r},parentId:t,depth:s,x:T.x,y:T.y,radius:a/2}),d.push({id:`edge-${l}-skill-${c}`,fromId:t,toId:r.id,color:v})})}function we(e,t,n=90){let r=[],i=[],a=be;if(r.push({id:`__center__`,kind:{type:`center`},parentId:null,depth:0,x:e.x,y:e.y,radius:n/2}),t.length===0)return{nodes:r,edges:i};let o=t.length,s=2*Math.PI/o;return t.forEach((t,n)=>{let o=-Math.PI/2+n*s,c=`cat-${t.category}`,l=q(t.category).color,u=X({x:e.x+xe*Math.cos(o),y:e.y+xe*Math.sin(o)},80/2,r,a);r.push({id:c,kind:{type:`category`,category:t.category},parentId:`__center__`,depth:1,x:u.x,y:u.y,radius:80/2}),i.push({id:`edge-center-${t.category}`,fromId:`__center__`,toId:c,color:l});let d=fe[t.category];if(d&&d.length>0){let e=[],n=new Set;for(let r of d){let i=t.items.filter(e=>r.skillIds.has(e.id));i.length>0&&(e.push({def:r,items:i}),i.forEach(e=>n.add(e.id)))}let f=t.items.filter(e=>!n.has(e.id));if(f.length>0){if(e.length===0){Ce(t.items,c,u,o,Y,64,a,2,t.category,t.category,r,i);return}let n=e[e.length-1];n&&n.items.push(...f)}let p=e.length,m=s*.55,h=p<=1?0:Math.min(m,(p-1)*.35);e.forEach((e,n)=>{let s;s=p===1?o:o+(n/(p-1)-.5)*h*2;let d=`subcat-${t.category}-${n}`,f=X({x:u.x+Se*Math.cos(s),y:u.y+Se*Math.sin(s)},56/2,r,a);r.push({id:d,kind:{type:`subCategory`,label:e.def.label,emoji:e.def.emoji,category:t.category},parentId:c,depth:2,x:f.x,y:f.y,radius:56/2}),i.push({id:`edge-${t.category}-sub-${n}`,fromId:c,toId:d,color:l}),Ce(e.items,d,f,s,Y,64,a,3,t.category,d,r,i)})}else Ce(t.items,c,u,o,Y,64,a,2,t.category,t.category,r,i)}),{nodes:r,edges:i}}function Te(e){let t=new Map;for(let n of e){let e=t.get(n.category);e?e.push(n):t.set(n.category,[n])}let n=[];for(let e of J){let r=t.get(e);r&&r.length>0&&n.push({category:e,items:r})}for(let[e,r]of t)!J.includes(e)&&r.length>0&&n.push({category:e,items:r});return n}function Ee(e,t,n,r,i=120,a=.4,o=3){if(e.length===0)return{zoom:1,panX:0,panY:0};let s=1/0,c=-1/0,l=1/0,u=-1/0;for(let t of e)s=Math.min(s,t.x),c=Math.max(c,t.x),l=Math.min(l,t.y),u=Math.max(u,t.y);let d=c-s+i*2,f=u-l+i*2;if(d<=0||f<=0||n<=0||r<=0)return{zoom:1,panX:0,panY:0};let p=Math.min(n/d,r/f),m=Math.max(a,Math.min(o,p)),h=(s+c)/2-t.x,g=(l+u)/2-t.y;return{zoom:m,panX:-h*m,panY:-g*m}}var De=.4,Oe=.25,Z={x:600,y:450},ke={type:`spring`,stiffness:180,damping:20},Ae={category:{size:80,cornerRadius:14,dashed:!1,fillPct:14,fillHoverPct:25,strokePct:55,strokeHoverPct:85,strokeWidth:2,strokeHoverWidth:2.5},subcategory:{size:56,cornerRadius:10,dashed:!0,fillPct:10,fillHoverPct:20,strokePct:40,strokeHoverPct:70,strokeWidth:1.5,strokeHoverWidth:2}},je={category:`rounded-[3px]`,subcategory:`rounded-[3px] border-dashed`,skill:`rotate-45`,workspace:`rounded-full`};function Me({edges:e,nodeById:t,visible:n}){return(0,U.jsx)(`svg`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 h-full w-full overflow-visible`,children:e.map(e=>{let r=t.get(e.fromId),i=t.get(e.toId);if(!r||!i)return null;let{x1:a,y1:o,x2:s,y2:c}=ye(r,i);return(0,U.jsx)(`line`,{x1:a,y1:o,x2:s,y2:c,stroke:e.color,strokeWidth:1.5,opacity:n?.45:0,style:{transition:`opacity 0.4s ease`}},e.id)})})}function Q({shape:e,label:t}){return(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:(0,U.jsx)(`span`,{className:M(`inline-block h-3 w-3 border-[1.5px] border-[var(--content-tertiary)]`,je[e])})}),(0,U.jsx)(`span`,{children:t})]})}function Ne({visible:e}){return(0,U.jsx)(`div`,{"data-constellation-control":!0,className:`pointer-events-none absolute bottom-4 left-4 rounded-md px-3 py-2 text-body-small-default`,style:{backgroundColor:`color-mix(in srgb, var(--surface-overlay) 80%, transparent)`,border:`1px solid color-mix(in srgb, var(--content-tertiary) 20%, transparent)`,color:`var(--content-secondary)`,opacity:+!!e,transition:`opacity 0.35s ease`},children:(0,U.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,U.jsx)(Q,{shape:`category`,label:`Category`}),(0,U.jsx)(Q,{shape:`subcategory`,label:`Subcategory`}),(0,U.jsx)(Q,{shape:`skill`,label:`Skill`}),(0,U.jsx)(Q,{shape:`workspace`,label:`Workspace`})]})})}function Pe({item:e,color:t,onViewDetails:n}){let r=e.kind===`skill`?`Skill`:`Workspace`,a=e.kind===`skill`?ie:v;return(0,U.jsxs)(u,{padding:`sm`,elevated:!0,className:`w-[260px] shadow-[var(--shadow-popover)]`,role:`dialog`,"aria-label":`${e.label} details`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md px-2 py-1 text-body-small-emphasised text-[var(--content-default)]`,style:{backgroundColor:`${t}33`},children:[(0,U.jsx)(a,{className:`h-3 w-3`,style:{color:t}}),r]}),n?(0,U.jsx)(i,{type:`button`,variant:`ghost`,size:`compact`,onClick:n,children:`View Details`}):null]}),(0,U.jsxs)(`div`,{className:`mt-2 flex items-start gap-2`,children:[e.icon||e.emoji?(0,U.jsx)(p,{skill:e,className:`h-5 w-5 shrink-0 text-[20px] leading-none`}):null,(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e.label}),e.description?(0,U.jsx)(`div`,{className:`mt-1 line-clamp-3 text-body-small-default text-[var(--content-secondary)]`,children:e.description}):null]})]})]})}function Fe({onSingleClick:e,onDoubleClick:t,latency:n=200}){let r=(0,H.useRef)(null);return(0,H.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),(0,H.useCallback)(i=>{r.current&&=(clearTimeout(r.current),null),e&&i.detail===1&&(r.current=setTimeout(()=>{r.current=null,e()},n)),t&&i.detail>=2&&i.detail%2==0&&t()},[e,t,n])}function Ie(e,t,n){let[r,i]=(0,H.useState)(!1),a=r||n===!0,o=Fe({onSingleClick:e,onDoubleClick:t});return{active:a,onClick:(0,H.useCallback)(n=>{!e&&!t||(n.stopPropagation(),o(n))},[e,t,o]),onPointerDown:(0,H.useCallback)(n=>{!e&&!t||n.stopPropagation()},[e,t]),onMouseEnter:(0,H.useCallback)(()=>i(!0),[]),onMouseLeave:(0,H.useCallback)(()=>i(!1),[])}}function $(e,t){return`color-mix(in oklab, ${e} ${Math.max(0,Math.min(100,t))}%, var(--surface-base))`}function Le(e,t){switch(e.kind.type){case`center`:return{visible:t>=1};case`category`:return{visible:t>=2};case`subCategory`:return{visible:t>=3};case`skill`:return{visible:t>=4}}}function Re(e,t){switch(e.kind.type){case`center`:return .05;case`category`:return t*.04;case`subCategory`:return t*.03;case`skill`:return .08+t*.02}}function ze(e){switch(e.kind.type){case`skill`:return e.kind.item;case`category`:{let t=q(e.kind.category);return{id:e.id,label:t.displayName,emoji:t.emoji,category:e.kind.category,kind:`workspaceFile`}}case`subCategory`:return{id:e.id,label:e.kind.label,emoji:e.kind.emoji,category:e.kind.category,kind:`workspaceFile`};default:return}}function Be({variant:e,x:t,y:n,color:r,tooltip:i,visibility:a,delay:o,children:s,isSelected:c,onSingleClick:l,onDoubleClick:u}){let d=Ae[e],{active:f,...p}=Ie(l,u,c),m={left:t-d.size/2,top:n-d.size/2,width:d.size,height:d.size,borderRadius:d.cornerRadius,backgroundColor:$(r,f?d.fillHoverPct:d.fillPct),borderStyle:d.dashed?`dashed`:`solid`,borderColor:$(r,f?d.strokeHoverPct:d.strokePct),borderWidth:f?d.strokeHoverWidth:d.strokeWidth,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`,cursor:l||u?`pointer`:`default`};return(0,U.jsx)(N.div,{className:`pointer-events-auto absolute flex flex-col items-center justify-center`,"data-constellation-node":!0,style:m,initial:{opacity:0,scale:.3},animate:{opacity:+!!a.visible,scale:a.visible?1:.3},transition:{...ke,delay:o},onMouseEnter:p.onMouseEnter,onMouseLeave:p.onMouseLeave,onPointerDown:p.onPointerDown,onClick:p.onClick,title:i,children:s})}function Ve({x:e,y:t,item:n,color:r,fallbackEmoji:i,visibility:a,delay:o,isSelected:s,onSingleClick:c,onDoubleClick:l}){let{active:u,...d}=Ie(c,l,s);return(0,U.jsxs)(N.div,{className:`pointer-events-auto absolute`,"data-constellation-node":!0,style:{left:e-64/2,top:t-64/2,width:64,height:64,cursor:c||l?`pointer`:`default`},initial:{opacity:0,scale:.4},animate:{opacity:+!!a.visible,scale:a.visible?1:.4},transition:{...ke,delay:o},onMouseEnter:d.onMouseEnter,onMouseLeave:d.onMouseLeave,onPointerDown:d.onPointerDown,onClick:d.onClick,title:n.label,children:[(0,U.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 rounded-md`,style:{transform:`rotate(45deg)`,backgroundColor:$(r,u?20:10),border:`${u?2:1.5}px solid ${$(r,u?70:40)}`,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`}}),(0,U.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center`,children:[(0,U.jsx)(p,{skill:n,className:`h-4 w-4 text-[16px] leading-none`,fallback:i}),(0,U.jsx)(`span`,{className:`mt-0.5 max-w-[42px] truncate text-[9px] font-medium leading-tight text-[var(--content-default)]`,title:n.label,children:n.label})]})]})}function He({node:e,index:t,phase:n,components:r,traits:i,customImageUrl:a,isSelected:o,onSingleClick:s,onDoubleClick:c}){let l=Le(e,n),u=Re(e,t);if(e.kind.type===`center`)return(0,U.jsx)(N.div,{className:`pointer-events-none absolute`,style:{left:e.x-90/2,top:e.y-90/2,width:90,height:90},initial:{opacity:0,scale:.6},animate:{opacity:+!!l.visible,scale:l.visible?1:.6},transition:{...ke,delay:u},children:(0,U.jsx)(L,{components:r,traits:i,customImageUrl:a,size:90})});if(e.kind.type===`category`||e.kind.type===`subCategory`){let t=q(e.kind.category),n=e.kind.type===`category`?`category`:`subcategory`,r=e.kind.type===`category`?t.emoji:e.kind.emoji,i=e.kind.type===`category`?t.displayName:e.kind.label,a=n===`category`?`text-[20px]`:`text-[14px]`,d=n===`category`?`mt-1 max-w-[85%] truncate text-label-medium-default leading-tight text-[var(--content-default)]`:`mt-0.5 max-w-[85%] truncate text-[9.5px] font-medium leading-tight text-[var(--content-default)]`;return(0,U.jsxs)(Be,{variant:n,x:e.x,y:e.y,color:t.color,tooltip:i,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c,children:[(0,U.jsx)(`span`,{className:`${a} leading-none`,"aria-hidden":!0,children:r}),(0,U.jsx)(`span`,{className:d,title:i,children:i})]})}if(e.kind.type===`skill`){let t=e.kind.item,n=q(t.category);return(0,U.jsx)(Ve,{x:e.x,y:e.y,item:t,color:n.color,fallbackEmoji:n.emoji,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c})}return null}function Ue(e,t,n,r){let[i,a]=(0,H.useState)({width:0,height:0}),[o,s]=(0,H.useState)(null),[c,l]=(0,H.useState)(null),[u,d]=(0,H.useState)(!1),[f,p]=(0,H.useState)(null),[m,h]=(0,H.useState)(!1),g=(0,H.useRef)(null),_=(0,H.useRef)(null);(0,H.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(e=>{for(let t of e){let{width:e,height:n}=t.contentRect;a({width:e,height:n})}});n.observe(t);let r=t.getBoundingClientRect();return a({width:r.width,height:r.height}),()=>n.disconnect()},[e]);let v=(0,H.useMemo)(()=>Ee(t,Z,i.width,i.height),[t,i.width,i.height]),y=o??v.zoom,b=c??{x:v.panX,y:v.panY},x=(0,H.useCallback)(()=>{h(!0),g.current!=null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{h(!1),g.current=null},500)},[]);(0,H.useEffect)(()=>()=>{g.current!=null&&window.clearTimeout(g.current)},[]);let S=(0,H.useCallback)(()=>{s(null),l(null),p(null),x()},[x]),C=(0,H.useCallback)((e,t)=>{let n=Math.max(De,Math.min(3,e));if(n===y)return;let r=n/y;l({x:b.x*r,y:b.y*r}),s(n),p(null),t?.animate&&x()},[b.x,b.y,x,y]),w=(0,H.useCallback)(()=>{C(y+Oe,{animate:!0})},[C,y]),T=(0,H.useCallback)(()=>{C(y-Oe,{animate:!0})},[C,y]),E=(0,H.useCallback)(e=>{if(f===e){S();return}let t=n.get(e);if(!t)return;let r=1.8;s(r),l({x:(Z.x-t.x)*r,y:(Z.y-t.y)*r}),p(e),x()},[S,n,x,f]);return(0,H.useEffect)(()=>{let t=e.current;if(!t)return;let n=e=>{e.preventDefault();let t=e.ctrlKey||e.metaKey?150:400;C(y*(1+-e.deltaY/t))};return t.addEventListener(`wheel`,n,{passive:!1}),()=>t.removeEventListener(`wheel`,n)},[C,e,y]),{zoom:y,pan:b,isDragging:u,isAnimating:m,viewSize:i,zoomedNodeId:f,zoomIn:w,zoomOut:T,fitAll:S,zoomToNode:E,handlePointerDown:(0,H.useCallback)(e=>{if(e.button!==0)return;let t=e.target;t.closest(`[data-constellation-control]`)||(t.closest(`[data-constellation-node]`)||r?.(),_.current={startX:e.clientX,startY:e.clientY,panStartX:b.x,panStartY:b.y,pointerId:e.pointerId,moved:!1},d(!0),g.current!=null&&(window.clearTimeout(g.current),g.current=null),h(!1),e.currentTarget.setPointerCapture(e.pointerId))},[r,b.x,b.y]),handlePointerMove:(0,H.useCallback)(e=>{let t=_.current;if(!t||t.pointerId!==e.pointerId)return;let n=e.clientX-t.startX,r=e.clientY-t.startY;!t.moved&&(Math.abs(n)>3||Math.abs(r)>3)&&(t.moved=!0,p(null)),l({x:t.panStartX+n,y:t.panStartY+r})},[]),handlePointerUp:(0,H.useCallback)(e=>{let t=_.current;if(!(!t||t.pointerId!==e.pointerId)){_.current=null,d(!1);try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}}},[])}}function We({skills:e,components:t,traits:n,customImageUrl:r,className:a,isFullscreen:o,onToggleFullscreen:s,onSelectSkill:c}){let l=(0,H.useRef)(null),u=(0,H.useRef)(null),[d,f]=(0,H.useState)(0),[p,m]=(0,H.useState)(null),[h,g]=(0,H.useState)({width:240,height:120}),{nodes:_,edges:v}=(0,H.useMemo)(()=>we(Z,Te(e.map(e=>({id:e.id,label:e.name,icon:e.icon,emoji:e.emoji,category:e.category??`system`,description:e.description,kind:`skill`}))),90),[e]),x=(0,H.useMemo)(()=>{let e=new Map;for(let t of _)e.set(t.id,t);return e},[_]),S=(0,H.useMemo)(()=>{if(p==null)return null;let e=x.get(p);return e?ze(e)??null:null},[p,x]),C=(0,H.useCallback)(()=>{m(null)},[]),w=Ue(l,_,x,C),T=e.length;(0,H.useEffect)(()=>{let e=!1,t=t=>{e||f(t)};t(0);let n=[setTimeout(()=>t(1),100),setTimeout(()=>t(2),300),setTimeout(()=>t(3),500),setTimeout(()=>t(4),700)];return()=>{e=!0,n.forEach(clearTimeout)}},[T]);let E=(0,H.useCallback)(e=>{m(t=>t===e?null:e)},[]),ee=(0,H.useCallback)(()=>{!S||S.kind!==`skill`||(C(),c?.(S.id))},[C,c,S]);(0,H.useEffect)(()=>{if(p==null)return;let e=e=>{e.key===`Escape`&&C()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[C,p]),(0,H.useLayoutEffect)(()=>{if(S==null)return;let e=u.current;if(!e)return;let t=e.getBoundingClientRect();g({width:t.width,height:t.height})},[S]);let D={x:w.viewSize.width/2,y:w.viewSize.height/2},O=D.x-Z.x*w.zoom+w.pan.x,k=D.y-Z.y*w.zoom+w.pan.y,A=p==null?void 0:x.get(p),j=0,M=0;if(S!=null&&A){let e=O+A.x*w.zoom,t=k+A.y*w.zoom,n=e,r=t-60,i=h.width/2,a=h.height/2,o=i+8,s=Math.max(o,w.viewSize.width-i-8),c=a+8,l=Math.max(c,w.viewSize.height-a-8);j=Math.min(Math.max(n,o),s),M=Math.min(Math.max(r,c),l)}let P=(0,H.useCallback)(e=>{C(),w.zoomToNode(e)},[C,w]);return(0,U.jsxs)(`div`,{ref:l,className:`relative select-none overflow-hidden rounded-xl ${a??``}`,style:{backgroundColor:`var(--surface-base)`,backgroundImage:`radial-gradient(circle, color-mix(in srgb, var(--content-tertiary) 20%, transparent) 1px, transparent 1px)`,backgroundSize:`24px 24px`,backgroundPosition:`12px 12px`,touchAction:`none`,cursor:w.isDragging?`grabbing`:`grab`,userSelect:`none`,WebkitUserSelect:`none`},onPointerDown:w.handlePointerDown,onPointerMove:w.handlePointerMove,onPointerUp:w.handlePointerUp,onPointerCancel:w.handlePointerUp,children:[(0,U.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0`,style:{background:`radial-gradient(circle at center, color-mix(in srgb, var(--content-tertiary) 6%, transparent), transparent 60%)`}}),(0,U.jsxs)(`div`,{className:`absolute inset-0`,style:{transform:`translate(${O}px, ${k}px) scale(${w.zoom})`,transformOrigin:`0 0`,transition:w.isAnimating?`transform 0.4s cubic-bezier(0.22, 1, 0.36, 1)`:`none`},children:[(0,U.jsx)(Me,{edges:v,nodeById:x,visible:d>=2}),_.map((e,i)=>(0,U.jsx)(He,{node:e,index:i,phase:d,components:t,traits:n,customImageUrl:r,isSelected:p===e.id||w.zoomedNodeId===e.id,onSingleClick:()=>E(e.id),onDoubleClick:()=>P(e.id)},e.id))]}),s&&(0,U.jsx)(`div`,{className:`absolute left-4 top-4`,"data-constellation-control":!0,children:(0,U.jsx)(i,{variant:`ghost`,iconOnly:o?(0,U.jsx)(b,{}):(0,U.jsx)(y,{}),onClick:s,"aria-label":o?`Exit fullscreen`:`Enter fullscreen`,tooltip:o?`Exit fullscreen`:`Enter fullscreen`})}),(0,U.jsx)(Ne,{visible:d>=4}),(0,U.jsx)(te,{children:S==null?null:(0,U.jsx)(N.div,{ref:u,className:`pointer-events-auto absolute z-20`,"data-constellation-popover":!0,style:{left:j,top:M,transform:`translate(-50%, -50%)`},initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.15,ease:`easeOut`},onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,U.jsx)(Pe,{item:S,color:q(S.category).color,onViewDetails:c&&S.kind===`skill`?ee:void 0})},`constellation-popover`)}),(0,U.jsxs)(`div`,{"data-constellation-control":!0,className:`absolute bottom-4 right-4 flex items-center gap-1`,children:[(0,U.jsx)(i,{variant:`ghost`,iconOnly:(0,U.jsx)(I,{}),onClick:w.zoomIn,"aria-label":`Zoom in`,tooltip:`Zoom in`}),(0,U.jsx)(i,{variant:`ghost`,iconOnly:(0,U.jsx)(z,{}),onClick:w.zoomOut,"aria-label":`Zoom out`,tooltip:`Zoom out`}),(0,U.jsx)(i,{variant:`ghost`,iconOnly:(0,U.jsx)(B,{}),onClick:w.fitAll,"aria-label":`Fit all`,tooltip:`Fit all`})]})]})}function Ge({assistantName:e,assistantPersonality:t,assistantRole:n,hatchedDate:r,components:a,traits:o,customImageUrl:s,onOpenThread:c,onOpenModal:l}){return(0,U.jsxs)(`div`,{className:`w-full overflow-hidden rounded-xl`,style:{backgroundColor:`var(--surface-lift)`},children:[(0,U.jsxs)(`div`,{className:`relative p-6 pb-0`,children:[(0,U.jsx)(`div`,{className:`pr-8 text-center`,children:(0,U.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e})}),(0,U.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,U.jsx)(x,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your name`),disabled:!c,"aria-label":`Edit identity`,title:`Edit Name`,className:`absolute right-6 top-6`,tintColor:`var(--content-tertiary)`})]}),(0,U.jsx)(`div`,{className:`flex justify-center py-6`,children:(0,U.jsx)(L,{components:a,traits:o,customImageUrl:s,size:200,interactive:!0})}),(0,U.jsx)(`div`,{className:`flex justify-center pb-6`,children:(0,U.jsx)(i,{type:`button`,variant:`outlined`,size:`regular`,onClick:l,className:`!rounded-full`,children:`Update Avatar`})}),(0,U.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Role`}),(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:n})]}),(0,U.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,U.jsx)(x,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your role description`),disabled:!c,"aria-label":`Edit role`,title:`Edit Role`,tintColor:`var(--content-tertiary)`})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Personality`}),(0,U.jsx)(`p`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},title:t||`Not set`,children:t||`Not set`})]}),(0,U.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,U.jsx)(x,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your personality`),disabled:!c,"aria-label":`Edit personality`,title:`Edit Personality`,tintColor:`var(--content-tertiary)`})]}),(0,U.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Hatched`}),(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:r})]})]})}function Ke({assistantId:e,onOpenThread:n}){let r=o(),{components:i,traits:a,customImageUrl:l,isLoading:u,invalidate:p}=ae(e),[h,g]=(0,H.useState)(null),[_,v]=(0,H.useState)(null),[y,b]=(0,H.useState)(null),[x,S]=(0,H.useState)(!1),[C,w]=(0,H.useState)(null),[O,k]=(0,H.useState)(null),[A,j]=(0,H.useState)(null),[M,N]=(0,H.useState)(null);(0,H.useEffect)(()=>{let n=!1;return Promise.all([re(e),D(e).catch(()=>({ok:!1,status:0,error:{}}))]).then(([t,r])=>{n||(g(t),r.ok?v(r.data.created):v(null),b(e))}).catch(e=>{n||t(e,{context:`identity_tab_load`})}),()=>{n=!0}},[e]);let te=y!==e||u,[P,ne]=(0,H.useState)(!1),F=s({...E({path:{assistant_id:e},query:{kind:`installed`}}),select:e=>e.skills,enabled:!!e}),I=(0,H.useMemo)(()=>F.data??[],[F.data]),L=(0,H.useCallback)(()=>{p()},[p]),ie=(0,H.useCallback)(()=>{S(!0)},[]),oe=(0,H.useCallback)(()=>{S(!1)},[]),se=(0,H.useCallback)(()=>{n?.(`I'd like to create a custom AI-generated avatar.`)},[n]),R=(0,H.useCallback)(()=>{r.invalidateQueries({queryKey:ee({path:{assistant_id:e}})})},[e,r]),z=c({mutationFn:t=>m(e,t),onMutate:e=>k(e),onSettled:()=>{k(null),R()}}),B=T({onMutate:e=>j(e.path.id),onSettled:()=>{j(null),R()}}),V=(0,H.useCallback)(e=>{z.mutate(e.slug??e.id)},[z]),ce=(0,H.useCallback)(e=>{N(e)},[]),W=(0,H.useCallback)(()=>{M&&(B.mutate({path:{assistant_id:e,id:M.id}}),N(null))},[e,M,B]),G=(0,H.useMemo)(()=>C?I.find(e=>e.id===C)??null:null,[I,C]),K=(0,U.jsx)(d,{open:M!==null,title:`Remove skill`,message:M?`Remove "${M.name}" from this assistant?`:``,confirmLabel:`Remove`,destructive:!0,onConfirm:W,onCancel:()=>N(null)});if(G)return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(f,{assistantId:e,skill:G,onBack:()=>w(null),onInstall:()=>V(G),onRemove:()=>ce(G),isInstalling:O===(G.slug??G.id),isRemoving:A===G.id}),K]});if(te)return(0,U.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,U.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})});let ue=h?.name||`Assistant`,de=h?.personality||``,q=h?.role||`Not set`,J=_?new Date(_).toLocaleDateString(`en-GB`,{day:`numeric`,month:`short`,year:`numeric`}):`Unknown`;return(0,U.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-6 lg:flex-row lg:items-stretch`,children:[(0,U.jsx)(`div`,{className:`mx-auto w-full max-w-md lg:mx-0 lg:h-full lg:shrink-0 lg:overflow-y-auto ${P?`hidden`:`flex`}`,children:(0,U.jsx)(Ge,{assistantName:ue,assistantPersonality:de,assistantRole:q,hatchedDate:J,components:i,traits:a,customImageUrl:l,onOpenThread:n,onOpenModal:ie})}),(0,U.jsx)(`div`,{className:`min-h-[480px] min-w-0 flex-1 lg:min-h-0`,children:(0,U.jsx)(We,{skills:I,components:i,traits:a,customImageUrl:l,className:`h-full w-full`,isFullscreen:P,onToggleFullscreen:()=>ne(e=>!e),onSelectSkill:w})}),(0,U.jsx)(le,{open:x,onClose:oe,assistantId:e,components:i,traits:a,customImageUrl:l,onSaveCharacter:L,onUploadImage:L,onGenerateWithAI:n?se:void 0}),K]})}function qe({onOpenThread:e}){return(0,U.jsx)(Ke,{assistantId:V(),onOpenThread:e})}function Je(){let e=a();return(0,U.jsx)(qe,{onOpenThread:t=>{k.getState().setMainView(`chat`);let n=j();A.getState().setActiveConversationId(n),e(`${O.conversation(n)}?prompt=${encodeURIComponent(t)}`)}},V())}export{Je as IdentityPageRoute};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-BG-GkiMq.js";import{t as n}from"./react-DJZBPgpf.js";import{O as r,t as i}from"./button-D-AX8Voo.js";import{d as a}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as o}from"./QueryClientProvider-DKhXIxGb.js";import{t as s}from"./useQuery-B45lW1Kk.js";import{t as c}from"./useMutation-Lj4VunQV.js";import{t as l}from"./jsx-runtime-CVSDxk6A.js";import{t as u}from"./card-BibIM9x3.js";import"./src-SCpl1O1B.js";import{t as d}from"./confirm-dialog-bfBx6UYv.js";import{n as f,s as p,t as m}from"./install-lYdVLxh2.js";import{t as h}from"./chevron-left-DghyKSEE.js";import{t as g}from"./chevron-right-B6vEpVY0.js";import{n as _}from"./animated-avatar-CEC1DGcI.js";import{t as v}from"./file-text-ClqzuFsu.js";import{n as y,t as b}from"./minimize-2-dKm10qRD.js";import{t as x}from"./pencil-B90pDI55.js";import{t as S}from"./save-BpAesNEP.js";import{t as C}from"./sparkles-Bla177ar.js";import{t as w}from"./x-DxL-bCuT.js";import{Yt as T,vt as E,yt as ee}from"./react-query.gen-BwkZCSTW.js";import{r as D}from"./api-1X5EQzNF.js";import{a as O}from"./routes-C6gxiCrz.js";import{n as k}from"./viewer-store-BR99G-Ii.js";import{t as A}from"./conversation-store-B8D6wE18.js";import{t as j}from"./conversation-selection-CNssqGbG.js";import{t as M}from"./misc-CFzLzLPH.js";import{t as N}from"./proxy-BgtfAoJj.js";import{t as te}from"./AnimatePresence-uY0BR2n2.js";import{Qi as P,ar as ne,at as F,cr as re,ei as I,gt as L,ni as ie,nr as ae,or as oe,ri as se,rr as R,ti as z,wi as B}from"./index-B-S-gNKm.js";import{t as V}from"./use-active-assistant-id-BVzVN4_g.js";var ce=e(r(),1),H=e(n(),1),U=l();function W(e,t,n){return n===`forward`?(e+1)%t:(e-1+t)%t}function G({assistantId:e,initialTraits:t,onSave:n,onCancel:r}){let[i,a]=(0,H.useState)(null),[o,s]=(0,H.useState)(!0),[c,l]=(0,H.useState)(!1),u=(0,H.useRef)(null),[d,f]=(0,H.useState)(0),[p,m]=(0,H.useState)(0),[h,g]=(0,H.useState)(0);(0,H.useEffect)(()=>{if(u.current===e)return;let n=!1;return R(e).then(r=>{if(!n&&(u.current=e,a(r),s(!1),r&&t)){let e=r.bodyShapes.findIndex(e=>e.id===t.bodyShape),n=r.eyeStyles.findIndex(e=>e.id===t.eyeStyle),i=r.colors.findIndex(e=>e.id===t.color);e>=0&&f(e),n>=0&&m(n),i>=0&&g(i)}}),()=>{n=!0}},[e,t]);let v=(0,H.useCallback)(()=>{i&&(f(Math.floor(Math.random()*i.bodyShapes.length)),m(Math.floor(Math.random()*i.eyeStyles.length)),g(Math.floor(Math.random()*i.colors.length)))},[i]),y=(0,H.useCallback)(async()=>{if(!i)return;let t={bodyShape:i.bodyShapes[d].id,eyeStyle:i.eyeStyles[p].id,color:i.colors[h].id};l(!0);try{await ne(e,t),n?.(t)}finally{l(!1)}},[i,d,p,h,e,n]);if(o)return(0,U.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,U.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-tertiary)]`})});if(!i)return(0,U.jsx)(`div`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-quiet)]`,children:`Unable to load avatar components. Make sure your assistant is running.`});let b=i.bodyShapes[d],x=i.eyeStyles[p],C=i.colors[h];return(0,U.jsxs)(`div`,{className:`space-y-6`,children:[(0,U.jsx)(`div`,{className:`flex justify-center`,children:(0,U.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,U.jsx)(F,{components:i,bodyShapeId:b.id,eyeStyleId:x.id,colorId:C.id,size:160})})}),(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsx)(K,{label:`Body`,value:b.id,onPrev:()=>f(W(d,i.bodyShapes.length,`backward`)),onNext:()=>f(W(d,i.bodyShapes.length,`forward`))}),(0,U.jsx)(K,{label:`Eyes`,value:x.id,onPrev:()=>m(W(p,i.eyeStyles.length,`backward`)),onNext:()=>m(W(p,i.eyeStyles.length,`forward`))}),(0,U.jsx)(K,{label:`Color`,value:C.id,colorHex:C.hex,onPrev:()=>g(W(h,i.colors.length,`backward`)),onNext:()=>g(W(h,i.colors.length,`forward`))})]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:v,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:[(0,U.jsx)(_,{className:`h-4 w-4`}),`Randomize`]}),(0,U.jsxs)(`button`,{type:`button`,onClick:y,disabled:c,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--system-positive-strong)] bg-[var(--system-positive-weak)] px-3 py-2 text-body-medium-default text-[var(--system-positive-strong)] transition-colors hover:opacity-90 disabled:opacity-50`,children:[(0,U.jsx)(S,{className:`h-4 w-4`}),c?`Saving...`:`Save Avatar`]}),r&&(0,U.jsx)(`button`,{type:`button`,onClick:r,className:`flex cursor-pointer items-center justify-center rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:(0,U.jsx)(w,{className:`h-4 w-4`})})]})]})}function K({label:e,value:t,colorHex:n,onPrev:r,onNext:i}){return(0,U.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,U.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:e}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:r,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,U.jsx)(h,{className:`h-4 w-4`})}),(0,U.jsxs)(`div`,{className:`flex min-w-[80px] items-center justify-center gap-2`,children:[n&&(0,U.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-[var(--border-element)]`,style:{backgroundColor:n}}),(0,U.jsx)(`span`,{className:`text-body-medium-default capitalize text-[var(--content-strong)]`,children:t})]}),(0,U.jsx)(`button`,{type:`button`,onClick:i,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,U.jsx)(g,{className:`h-4 w-4`})})]})]})}function le({open:e,onClose:t,assistantId:n,components:r,traits:i,customImageUrl:a,onSaveCharacter:o,onUploadImage:s,onGenerateWithAI:c}){let l=(0,H.useId)(),u=(0,H.useRef)(null),d=(0,H.useRef)(null),f=(0,H.useRef)(null),[p,m]=(0,H.useState)(`actions`),[_,v]=(0,H.useState)(!1);(0,H.useEffect)(()=>{e&&d.current?.focus()},[e]),(0,H.useEffect)(()=>{if(e){let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}},[e]);let y=(0,H.useCallback)(()=>{m(`actions`),t()},[t]),b=(0,H.useCallback)(e=>{e.key===`Escape`&&(p===`character-builder`?m(`actions`):y())},[y,p]),x=(0,H.useCallback)(e=>{e.target===u.current&&y()},[y]),S=(0,H.useCallback)(()=>{m(`actions`)},[]),T=(0,H.useCallback)(()=>{m(`character-builder`)},[]),E=(0,H.useCallback)(async e=>{let t=e.target.files?.[0];if(!t)return;v(!0);let r=await oe(n,t);v(!1),r&&(s(),y()),f.current&&(f.current.value=``)},[n,s,y]),ee=(0,H.useCallback)(()=>{f.current?.click()},[]),D=(0,H.useCallback)(()=>{y(),c?.()},[y,c]),O=(0,H.useCallback)(e=>{o(e),y()},[o,y]);return e?(0,ce.createPortal)((0,U.jsxs)(`div`,{ref:u,role:`dialog`,"aria-modal":`true`,"aria-labelledby":l,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:b,onClick:x,children:[(0,U.jsxs)(`div`,{className:`mx-4 flex w-full max-w-md flex-col rounded-xl border shadow-xl`,style:{backgroundColor:`var(--surface-lift)`,borderColor:`var(--border-base)`,maxHeight:`85vh`},children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between border-b px-6 py-4`,style:{borderColor:`var(--border-base)`},children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p===`character-builder`&&(0,U.jsx)(`button`,{type:`button`,onClick:S,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Back`,children:(0,U.jsx)(h,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,U.jsx)(`h2`,{id:l,className:`text-title-small`,style:{color:`var(--content-default)`},children:p===`character-builder`?`Build a Character`:`Update Avatar`})]}),(0,U.jsx)(`button`,{ref:d,type:`button`,onClick:y,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Close`,children:(0,U.jsx)(w,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})})]}),(0,U.jsx)(`div`,{className:`overflow-y-auto p-6`,children:p===`actions`?(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-6`,children:[(0,U.jsx)(L,{components:r,traits:i,customImageUrl:a,size:120,interactive:!0}),(0,U.jsxs)(`div`,{className:`w-full space-y-2`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:T,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,U.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,U.jsx)(se,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,U.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Build a Character`}),(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Build your own character`})]}),(0,U.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),(0,U.jsxs)(`button`,{type:`button`,onClick:ee,disabled:_,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,U.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,U.jsx)(P,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,U.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:_?`Uploading...`:`Upload Image`}),(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Choose an image from your computer`})]}),(0,U.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),c&&(0,U.jsxs)(`button`,{type:`button`,onClick:D,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,U.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,U.jsx)(C,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,U.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Generate with AI`}),(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Create an avatar through chat`})]}),(0,U.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]})]})]}):(0,U.jsx)(G,{assistantId:n,initialTraits:i,onSave:O,onCancel:S})})]}),(0,U.jsx)(`input`,{ref:f,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif`,className:`hidden`,onChange:E})]}),document.body):null}var ue={displayName:`Other`,color:`#888`,emoji:`?`},de={email:{displayName:`Email`,color:`#A665C9`,emoji:`📧`},calendar:{displayName:`Calendar`,color:`#0E9B8B`,emoji:`📅`},messaging:{displayName:`Messaging`,color:`#6B8AE0`,emoji:`💬`},browsing:{displayName:`Browsing`,color:`#E9642F`,emoji:`🌐`},productivity:{displayName:`Productivity`,color:`#0E9B8B`,emoji:`📋`},development:{displayName:`Development`,color:`#EF4400`,emoji:`🔨`},voice:{displayName:`Voice`,color:`#DB4B77`,emoji:`🎤`},commerce:{displayName:`Commerce`,color:`#E9C91A`,emoji:`🛒`},content:{displayName:`Content`,color:`#DB4B77`,emoji:`🎨`},health:{displayName:`Health`,color:`#4C9B50`,emoji:`❤️`},system:{displayName:`System`,color:`#8D99A5`,emoji:`⚙️`},integrations:{displayName:`Integrations`,color:`#8D99A5`,emoji:`🔗`}};function q(e){return de[e]??ue}var J=[`email`,`calendar`,`messaging`,`browsing`,`productivity`,`development`,`voice`,`commerce`,`content`,`health`,`system`,`integrations`],fe={email:[{label:`Sending`,emoji:`📨`,skillIds:new Set([`agentmail`,`email-setup`])},{label:`Reading`,emoji:`📬`,skillIds:new Set([`email-channel`,`gmail`])}],messaging:[{label:`Chat`,emoji:`💬`,skillIds:new Set([`messaging`,`slack`,`telegram`])},{label:`Notifications`,emoji:`🔔`,skillIds:new Set([`notifications`])},{label:`People`,emoji:`👥`,skillIds:new Set([`contacts`,`followups`])}],development:[{label:`Coding`,emoji:`💻`,skillIds:new Set([`typescript-eval`,`frontend-design`])},{label:`Dev Tools`,emoji:`🔧`,skillIds:new Set([`api-mapping`,`cli-discover`,`subagent`,`app-builder`])}],browsing:[{label:`Control`,emoji:`🎮`,skillIds:new Set([`computer-use`,`macos-automation`,`browser`])},{label:`Triggers`,emoji:`⏰`,skillIds:new Set([`watcher`,`time-based-actions`])}],commerce:[{label:`Shopping`,emoji:`🛒`,skillIds:new Set([`amazon`,`doordash`,`restaurant-reservation`])}],system:[{label:`Core`,emoji:`🧠`,skillIds:new Set([`knowledge-graph`,`skills-catalog`,`self-upgrade`])},{label:`Daily`,emoji:`☀️`,skillIds:new Set([`start-the-day`,`weather`])}]},pe=14,me=10,he=6;function ge(e){switch(e.kind.type){case`center`:return{shape:`circle`,size:90,cornerRadius:0};case`category`:return{shape:`roundedRect`,size:80,cornerRadius:pe};case`subCategory`:return{shape:`roundedRect`,size:56,cornerRadius:me};case`skill`:return{shape:`diamond`,size:64,cornerRadius:he}}}function _e(e,t,n,r){let i=Math.min(Math.max(0,t),e),a=Math.abs(n),o=Math.abs(r);if(a<1e-6&&o<1e-6)return e;let s=e/Math.max(a,o),c=s*n,l=s*r;if(!(Math.abs(c)>e-i&&Math.abs(l)>e-i))return s;let u=Math.sign(c)*(e-i),d=Math.sign(l)*(e-i),f=n*u+r*d,p=u*u+d*d-i*i,m=f*f-p;return m<0?s:f+Math.sqrt(m)}function ve(e,t,n){switch(e.shape){case`circle`:return e.size/2;case`roundedRect`:return _e(e.size/2,e.cornerRadius,t,n);case`diamond`:{let r=(t+n)*Math.SQRT1_2,i=(-t+n)*Math.SQRT1_2;return _e(e.size/2,e.cornerRadius,r,i)}}}function ye(e,t){let n=t.x-e.x,r=t.y-e.y,i=Math.sqrt(n*n+r*r);if(i<1e-6)return{x1:e.x,y1:e.y,x2:t.x,y2:t.y};let a=n/i,o=r/i,s=Math.max(0,ve(ge(e),a,o)-3),c=Math.max(0,ve(ge(t),-a,-o)-3);if(s+c>=i){let n=(e.x+t.x)/2,r=(e.y+t.y)/2;return{x1:n,y1:r,x2:n,y2:r}}return{x1:e.x+a*s,y1:e.y+o*s,x2:t.x-a*c,y2:t.y-o*c}}var be=10,xe=200,Se=160,Y=160;function X(e,t,n,r){let i={x:e.x,y:e.y};for(let e=0;e<30;e++){let e=0,a=0,o=0;for(let s of n){let n=i.x-s.x,c=i.y-s.y,l=Math.sqrt(n*n+c*c),u=t+s.radius+r-l;u>e&&(e=u,l<.1?(a=u+1,o=0):(a=n/l*(u+1),o=c/l*(u+1)))}if(e<=0)break;i={x:i.x+a,y:i.y+o}}return i}function Ce(e,t,n,r,i,a,o,s,c,l,u,d){if(e.length===0)return;let f=a+o,p=Math.cos(r),m=Math.sin(r),h=-m,g=p,_=f*.88,v=q(c).color;e.forEach((r,c)=>{let y=Math.floor(c/3),b=c%3,x=Math.min(3,e.length-y*3),S=(b-(x-1)/2)*f,C=y%2==1&&x<3?f*.5:0,w=i+y*_,T=X({x:n.x+w*p+(S+C)*h,y:n.y+w*m+(S+C)*g},a/2,u,o);u.push({id:r.id,kind:{type:`skill`,item:r},parentId:t,depth:s,x:T.x,y:T.y,radius:a/2}),d.push({id:`edge-${l}-skill-${c}`,fromId:t,toId:r.id,color:v})})}function we(e,t,n=90){let r=[],i=[],a=be;if(r.push({id:`__center__`,kind:{type:`center`},parentId:null,depth:0,x:e.x,y:e.y,radius:n/2}),t.length===0)return{nodes:r,edges:i};let o=t.length,s=2*Math.PI/o;return t.forEach((t,n)=>{let o=-Math.PI/2+n*s,c=`cat-${t.category}`,l=q(t.category).color,u=X({x:e.x+xe*Math.cos(o),y:e.y+xe*Math.sin(o)},80/2,r,a);r.push({id:c,kind:{type:`category`,category:t.category},parentId:`__center__`,depth:1,x:u.x,y:u.y,radius:80/2}),i.push({id:`edge-center-${t.category}`,fromId:`__center__`,toId:c,color:l});let d=fe[t.category];if(d&&d.length>0){let e=[],n=new Set;for(let r of d){let i=t.items.filter(e=>r.skillIds.has(e.id));i.length>0&&(e.push({def:r,items:i}),i.forEach(e=>n.add(e.id)))}let f=t.items.filter(e=>!n.has(e.id));if(f.length>0){if(e.length===0){Ce(t.items,c,u,o,Y,64,a,2,t.category,t.category,r,i);return}let n=e[e.length-1];n&&n.items.push(...f)}let p=e.length,m=s*.55,h=p<=1?0:Math.min(m,(p-1)*.35);e.forEach((e,n)=>{let s;s=p===1?o:o+(n/(p-1)-.5)*h*2;let d=`subcat-${t.category}-${n}`,f=X({x:u.x+Se*Math.cos(s),y:u.y+Se*Math.sin(s)},56/2,r,a);r.push({id:d,kind:{type:`subCategory`,label:e.def.label,emoji:e.def.emoji,category:t.category},parentId:c,depth:2,x:f.x,y:f.y,radius:56/2}),i.push({id:`edge-${t.category}-sub-${n}`,fromId:c,toId:d,color:l}),Ce(e.items,d,f,s,Y,64,a,3,t.category,d,r,i)})}else Ce(t.items,c,u,o,Y,64,a,2,t.category,t.category,r,i)}),{nodes:r,edges:i}}function Te(e){let t=new Map;for(let n of e){let e=t.get(n.category);e?e.push(n):t.set(n.category,[n])}let n=[];for(let e of J){let r=t.get(e);r&&r.length>0&&n.push({category:e,items:r})}for(let[e,r]of t)!J.includes(e)&&r.length>0&&n.push({category:e,items:r});return n}function Ee(e,t,n,r,i=120,a=.4,o=3){if(e.length===0)return{zoom:1,panX:0,panY:0};let s=1/0,c=-1/0,l=1/0,u=-1/0;for(let t of e)s=Math.min(s,t.x),c=Math.max(c,t.x),l=Math.min(l,t.y),u=Math.max(u,t.y);let d=c-s+i*2,f=u-l+i*2;if(d<=0||f<=0||n<=0||r<=0)return{zoom:1,panX:0,panY:0};let p=Math.min(n/d,r/f),m=Math.max(a,Math.min(o,p)),h=(s+c)/2-t.x,g=(l+u)/2-t.y;return{zoom:m,panX:-h*m,panY:-g*m}}var De=.4,Oe=.25,Z={x:600,y:450},ke={type:`spring`,stiffness:180,damping:20},Ae={category:{size:80,cornerRadius:14,dashed:!1,fillPct:14,fillHoverPct:25,strokePct:55,strokeHoverPct:85,strokeWidth:2,strokeHoverWidth:2.5},subcategory:{size:56,cornerRadius:10,dashed:!0,fillPct:10,fillHoverPct:20,strokePct:40,strokeHoverPct:70,strokeWidth:1.5,strokeHoverWidth:2}},je={category:`rounded-[3px]`,subcategory:`rounded-[3px] border-dashed`,skill:`rotate-45`,workspace:`rounded-full`};function Me({edges:e,nodeById:t,visible:n}){return(0,U.jsx)(`svg`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 h-full w-full overflow-visible`,children:e.map(e=>{let r=t.get(e.fromId),i=t.get(e.toId);if(!r||!i)return null;let{x1:a,y1:o,x2:s,y2:c}=ye(r,i);return(0,U.jsx)(`line`,{x1:a,y1:o,x2:s,y2:c,stroke:e.color,strokeWidth:1.5,opacity:n?.45:0,style:{transition:`opacity 0.4s ease`}},e.id)})})}function Q({shape:e,label:t}){return(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:(0,U.jsx)(`span`,{className:M(`inline-block h-3 w-3 border-[1.5px] border-[var(--content-tertiary)]`,je[e])})}),(0,U.jsx)(`span`,{children:t})]})}function Ne({visible:e}){return(0,U.jsx)(`div`,{"data-constellation-control":!0,className:`pointer-events-none absolute bottom-4 left-4 rounded-md px-3 py-2 text-body-small-default`,style:{backgroundColor:`color-mix(in srgb, var(--surface-overlay) 80%, transparent)`,border:`1px solid color-mix(in srgb, var(--content-tertiary) 20%, transparent)`,color:`var(--content-secondary)`,opacity:+!!e,transition:`opacity 0.35s ease`},children:(0,U.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,U.jsx)(Q,{shape:`category`,label:`Category`}),(0,U.jsx)(Q,{shape:`subcategory`,label:`Subcategory`}),(0,U.jsx)(Q,{shape:`skill`,label:`Skill`}),(0,U.jsx)(Q,{shape:`workspace`,label:`Workspace`})]})})}function Pe({item:e,color:t,onViewDetails:n}){let r=e.kind===`skill`?`Skill`:`Workspace`,a=e.kind===`skill`?ie:v;return(0,U.jsxs)(u,{padding:`sm`,elevated:!0,className:`w-[260px] shadow-[var(--shadow-popover)]`,role:`dialog`,"aria-label":`${e.label} details`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md px-2 py-1 text-body-small-emphasised text-[var(--content-default)]`,style:{backgroundColor:`${t}33`},children:[(0,U.jsx)(a,{className:`h-3 w-3`,style:{color:t}}),r]}),n?(0,U.jsx)(i,{type:`button`,variant:`ghost`,size:`compact`,onClick:n,children:`View Details`}):null]}),(0,U.jsxs)(`div`,{className:`mt-2 flex items-start gap-2`,children:[e.icon||e.emoji?(0,U.jsx)(p,{skill:e,className:`h-5 w-5 shrink-0 text-[20px] leading-none`}):null,(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e.label}),e.description?(0,U.jsx)(`div`,{className:`mt-1 line-clamp-3 text-body-small-default text-[var(--content-secondary)]`,children:e.description}):null]})]})]})}function Fe({onSingleClick:e,onDoubleClick:t,latency:n=200}){let r=(0,H.useRef)(null);return(0,H.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),(0,H.useCallback)(i=>{r.current&&=(clearTimeout(r.current),null),e&&i.detail===1&&(r.current=setTimeout(()=>{r.current=null,e()},n)),t&&i.detail>=2&&i.detail%2==0&&t()},[e,t,n])}function Ie(e,t,n){let[r,i]=(0,H.useState)(!1),a=r||n===!0,o=Fe({onSingleClick:e,onDoubleClick:t});return{active:a,onClick:(0,H.useCallback)(n=>{!e&&!t||(n.stopPropagation(),o(n))},[e,t,o]),onPointerDown:(0,H.useCallback)(n=>{!e&&!t||n.stopPropagation()},[e,t]),onMouseEnter:(0,H.useCallback)(()=>i(!0),[]),onMouseLeave:(0,H.useCallback)(()=>i(!1),[])}}function $(e,t){return`color-mix(in oklab, ${e} ${Math.max(0,Math.min(100,t))}%, var(--surface-base))`}function Le(e,t){switch(e.kind.type){case`center`:return{visible:t>=1};case`category`:return{visible:t>=2};case`subCategory`:return{visible:t>=3};case`skill`:return{visible:t>=4}}}function Re(e,t){switch(e.kind.type){case`center`:return .05;case`category`:return t*.04;case`subCategory`:return t*.03;case`skill`:return .08+t*.02}}function ze(e){switch(e.kind.type){case`skill`:return e.kind.item;case`category`:{let t=q(e.kind.category);return{id:e.id,label:t.displayName,emoji:t.emoji,category:e.kind.category,kind:`workspaceFile`}}case`subCategory`:return{id:e.id,label:e.kind.label,emoji:e.kind.emoji,category:e.kind.category,kind:`workspaceFile`};default:return}}function Be({variant:e,x:t,y:n,color:r,tooltip:i,visibility:a,delay:o,children:s,isSelected:c,onSingleClick:l,onDoubleClick:u}){let d=Ae[e],{active:f,...p}=Ie(l,u,c),m={left:t-d.size/2,top:n-d.size/2,width:d.size,height:d.size,borderRadius:d.cornerRadius,backgroundColor:$(r,f?d.fillHoverPct:d.fillPct),borderStyle:d.dashed?`dashed`:`solid`,borderColor:$(r,f?d.strokeHoverPct:d.strokePct),borderWidth:f?d.strokeHoverWidth:d.strokeWidth,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`,cursor:l||u?`pointer`:`default`};return(0,U.jsx)(N.div,{className:`pointer-events-auto absolute flex flex-col items-center justify-center`,"data-constellation-node":!0,style:m,initial:{opacity:0,scale:.3},animate:{opacity:+!!a.visible,scale:a.visible?1:.3},transition:{...ke,delay:o},onMouseEnter:p.onMouseEnter,onMouseLeave:p.onMouseLeave,onPointerDown:p.onPointerDown,onClick:p.onClick,title:i,children:s})}function Ve({x:e,y:t,item:n,color:r,fallbackEmoji:i,visibility:a,delay:o,isSelected:s,onSingleClick:c,onDoubleClick:l}){let{active:u,...d}=Ie(c,l,s);return(0,U.jsxs)(N.div,{className:`pointer-events-auto absolute`,"data-constellation-node":!0,style:{left:e-64/2,top:t-64/2,width:64,height:64,cursor:c||l?`pointer`:`default`},initial:{opacity:0,scale:.4},animate:{opacity:+!!a.visible,scale:a.visible?1:.4},transition:{...ke,delay:o},onMouseEnter:d.onMouseEnter,onMouseLeave:d.onMouseLeave,onPointerDown:d.onPointerDown,onClick:d.onClick,title:n.label,children:[(0,U.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 rounded-md`,style:{transform:`rotate(45deg)`,backgroundColor:$(r,u?20:10),border:`${u?2:1.5}px solid ${$(r,u?70:40)}`,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`}}),(0,U.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center`,children:[(0,U.jsx)(p,{skill:n,className:`h-4 w-4 text-[16px] leading-none`,fallback:i}),(0,U.jsx)(`span`,{className:`mt-0.5 max-w-[42px] truncate text-[9px] font-medium leading-tight text-[var(--content-default)]`,title:n.label,children:n.label})]})]})}function He({node:e,index:t,phase:n,components:r,traits:i,customImageUrl:a,isSelected:o,onSingleClick:s,onDoubleClick:c}){let l=Le(e,n),u=Re(e,t);if(e.kind.type===`center`)return(0,U.jsx)(N.div,{className:`pointer-events-none absolute`,style:{left:e.x-90/2,top:e.y-90/2,width:90,height:90},initial:{opacity:0,scale:.6},animate:{opacity:+!!l.visible,scale:l.visible?1:.6},transition:{...ke,delay:u},children:(0,U.jsx)(L,{components:r,traits:i,customImageUrl:a,size:90})});if(e.kind.type===`category`||e.kind.type===`subCategory`){let t=q(e.kind.category),n=e.kind.type===`category`?`category`:`subcategory`,r=e.kind.type===`category`?t.emoji:e.kind.emoji,i=e.kind.type===`category`?t.displayName:e.kind.label,a=n===`category`?`text-[20px]`:`text-[14px]`,d=n===`category`?`mt-1 max-w-[85%] truncate text-label-medium-default leading-tight text-[var(--content-default)]`:`mt-0.5 max-w-[85%] truncate text-[9.5px] font-medium leading-tight text-[var(--content-default)]`;return(0,U.jsxs)(Be,{variant:n,x:e.x,y:e.y,color:t.color,tooltip:i,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c,children:[(0,U.jsx)(`span`,{className:`${a} leading-none`,"aria-hidden":!0,children:r}),(0,U.jsx)(`span`,{className:d,title:i,children:i})]})}if(e.kind.type===`skill`){let t=e.kind.item,n=q(t.category);return(0,U.jsx)(Ve,{x:e.x,y:e.y,item:t,color:n.color,fallbackEmoji:n.emoji,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c})}return null}function Ue(e,t,n,r){let[i,a]=(0,H.useState)({width:0,height:0}),[o,s]=(0,H.useState)(null),[c,l]=(0,H.useState)(null),[u,d]=(0,H.useState)(!1),[f,p]=(0,H.useState)(null),[m,h]=(0,H.useState)(!1),g=(0,H.useRef)(null),_=(0,H.useRef)(null);(0,H.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(e=>{for(let t of e){let{width:e,height:n}=t.contentRect;a({width:e,height:n})}});n.observe(t);let r=t.getBoundingClientRect();return a({width:r.width,height:r.height}),()=>n.disconnect()},[e]);let v=(0,H.useMemo)(()=>Ee(t,Z,i.width,i.height),[t,i.width,i.height]),y=o??v.zoom,b=c??{x:v.panX,y:v.panY},x=(0,H.useCallback)(()=>{h(!0),g.current!=null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{h(!1),g.current=null},500)},[]);(0,H.useEffect)(()=>()=>{g.current!=null&&window.clearTimeout(g.current)},[]);let S=(0,H.useCallback)(()=>{s(null),l(null),p(null),x()},[x]),C=(0,H.useCallback)((e,t)=>{let n=Math.max(De,Math.min(3,e));if(n===y)return;let r=n/y;l({x:b.x*r,y:b.y*r}),s(n),p(null),t?.animate&&x()},[b.x,b.y,x,y]),w=(0,H.useCallback)(()=>{C(y+Oe,{animate:!0})},[C,y]),T=(0,H.useCallback)(()=>{C(y-Oe,{animate:!0})},[C,y]),E=(0,H.useCallback)(e=>{if(f===e){S();return}let t=n.get(e);if(!t)return;let r=1.8;s(r),l({x:(Z.x-t.x)*r,y:(Z.y-t.y)*r}),p(e),x()},[S,n,x,f]);return(0,H.useEffect)(()=>{let t=e.current;if(!t)return;let n=e=>{e.preventDefault();let t=e.ctrlKey||e.metaKey?150:400;C(y*(1+-e.deltaY/t))};return t.addEventListener(`wheel`,n,{passive:!1}),()=>t.removeEventListener(`wheel`,n)},[C,e,y]),{zoom:y,pan:b,isDragging:u,isAnimating:m,viewSize:i,zoomedNodeId:f,zoomIn:w,zoomOut:T,fitAll:S,zoomToNode:E,handlePointerDown:(0,H.useCallback)(e=>{if(e.button!==0)return;let t=e.target;t.closest(`[data-constellation-control]`)||(t.closest(`[data-constellation-node]`)||r?.(),_.current={startX:e.clientX,startY:e.clientY,panStartX:b.x,panStartY:b.y,pointerId:e.pointerId,moved:!1},d(!0),g.current!=null&&(window.clearTimeout(g.current),g.current=null),h(!1),e.currentTarget.setPointerCapture(e.pointerId))},[r,b.x,b.y]),handlePointerMove:(0,H.useCallback)(e=>{let t=_.current;if(!t||t.pointerId!==e.pointerId)return;let n=e.clientX-t.startX,r=e.clientY-t.startY;!t.moved&&(Math.abs(n)>3||Math.abs(r)>3)&&(t.moved=!0,p(null)),l({x:t.panStartX+n,y:t.panStartY+r})},[]),handlePointerUp:(0,H.useCallback)(e=>{let t=_.current;if(!(!t||t.pointerId!==e.pointerId)){_.current=null,d(!1);try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}}},[])}}function We({skills:e,components:t,traits:n,customImageUrl:r,className:a,isFullscreen:o,onToggleFullscreen:s,onSelectSkill:c}){let l=(0,H.useRef)(null),u=(0,H.useRef)(null),[d,f]=(0,H.useState)(0),[p,m]=(0,H.useState)(null),[h,g]=(0,H.useState)({width:240,height:120}),{nodes:_,edges:v}=(0,H.useMemo)(()=>we(Z,Te(e.map(e=>({id:e.id,label:e.name,icon:e.icon,emoji:e.emoji,category:e.category??`system`,description:e.description,kind:`skill`}))),90),[e]),x=(0,H.useMemo)(()=>{let e=new Map;for(let t of _)e.set(t.id,t);return e},[_]),S=(0,H.useMemo)(()=>{if(p==null)return null;let e=x.get(p);return e?ze(e)??null:null},[p,x]),C=(0,H.useCallback)(()=>{m(null)},[]),w=Ue(l,_,x,C),T=e.length;(0,H.useEffect)(()=>{let e=!1,t=t=>{e||f(t)};t(0);let n=[setTimeout(()=>t(1),100),setTimeout(()=>t(2),300),setTimeout(()=>t(3),500),setTimeout(()=>t(4),700)];return()=>{e=!0,n.forEach(clearTimeout)}},[T]);let E=(0,H.useCallback)(e=>{m(t=>t===e?null:e)},[]),ee=(0,H.useCallback)(()=>{!S||S.kind!==`skill`||(C(),c?.(S.id))},[C,c,S]);(0,H.useEffect)(()=>{if(p==null)return;let e=e=>{e.key===`Escape`&&C()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[C,p]),(0,H.useLayoutEffect)(()=>{if(S==null)return;let e=u.current;if(!e)return;let t=e.getBoundingClientRect();g({width:t.width,height:t.height})},[S]);let D={x:w.viewSize.width/2,y:w.viewSize.height/2},O=D.x-Z.x*w.zoom+w.pan.x,k=D.y-Z.y*w.zoom+w.pan.y,A=p==null?void 0:x.get(p),j=0,M=0;if(S!=null&&A){let e=O+A.x*w.zoom,t=k+A.y*w.zoom,n=e,r=t-60,i=h.width/2,a=h.height/2,o=i+8,s=Math.max(o,w.viewSize.width-i-8),c=a+8,l=Math.max(c,w.viewSize.height-a-8);j=Math.min(Math.max(n,o),s),M=Math.min(Math.max(r,c),l)}let P=(0,H.useCallback)(e=>{C(),w.zoomToNode(e)},[C,w]);return(0,U.jsxs)(`div`,{ref:l,className:`relative select-none overflow-hidden rounded-xl ${a??``}`,style:{backgroundColor:`var(--surface-base)`,backgroundImage:`radial-gradient(circle, color-mix(in srgb, var(--content-tertiary) 20%, transparent) 1px, transparent 1px)`,backgroundSize:`24px 24px`,backgroundPosition:`12px 12px`,touchAction:`none`,cursor:w.isDragging?`grabbing`:`grab`,userSelect:`none`,WebkitUserSelect:`none`},onPointerDown:w.handlePointerDown,onPointerMove:w.handlePointerMove,onPointerUp:w.handlePointerUp,onPointerCancel:w.handlePointerUp,children:[(0,U.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0`,style:{background:`radial-gradient(circle at center, color-mix(in srgb, var(--content-tertiary) 6%, transparent), transparent 60%)`}}),(0,U.jsxs)(`div`,{className:`absolute inset-0`,style:{transform:`translate(${O}px, ${k}px) scale(${w.zoom})`,transformOrigin:`0 0`,transition:w.isAnimating?`transform 0.4s cubic-bezier(0.22, 1, 0.36, 1)`:`none`},children:[(0,U.jsx)(Me,{edges:v,nodeById:x,visible:d>=2}),_.map((e,i)=>(0,U.jsx)(He,{node:e,index:i,phase:d,components:t,traits:n,customImageUrl:r,isSelected:p===e.id||w.zoomedNodeId===e.id,onSingleClick:()=>E(e.id),onDoubleClick:()=>P(e.id)},e.id))]}),s&&(0,U.jsx)(`div`,{className:`absolute left-4 top-4`,"data-constellation-control":!0,children:(0,U.jsx)(i,{variant:`ghost`,iconOnly:o?(0,U.jsx)(b,{}):(0,U.jsx)(y,{}),onClick:s,"aria-label":o?`Exit fullscreen`:`Enter fullscreen`,tooltip:o?`Exit fullscreen`:`Enter fullscreen`})}),(0,U.jsx)(Ne,{visible:d>=4}),(0,U.jsx)(te,{children:S==null?null:(0,U.jsx)(N.div,{ref:u,className:`pointer-events-auto absolute z-20`,"data-constellation-popover":!0,style:{left:j,top:M,transform:`translate(-50%, -50%)`},initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.15,ease:`easeOut`},onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,U.jsx)(Pe,{item:S,color:q(S.category).color,onViewDetails:c&&S.kind===`skill`?ee:void 0})},`constellation-popover`)}),(0,U.jsxs)(`div`,{"data-constellation-control":!0,className:`absolute bottom-4 right-4 flex items-center gap-1`,children:[(0,U.jsx)(i,{variant:`ghost`,iconOnly:(0,U.jsx)(I,{}),onClick:w.zoomIn,"aria-label":`Zoom in`,tooltip:`Zoom in`}),(0,U.jsx)(i,{variant:`ghost`,iconOnly:(0,U.jsx)(z,{}),onClick:w.zoomOut,"aria-label":`Zoom out`,tooltip:`Zoom out`}),(0,U.jsx)(i,{variant:`ghost`,iconOnly:(0,U.jsx)(B,{}),onClick:w.fitAll,"aria-label":`Fit all`,tooltip:`Fit all`})]})]})}function Ge({assistantName:e,assistantPersonality:t,assistantRole:n,hatchedDate:r,components:a,traits:o,customImageUrl:s,onOpenThread:c,onOpenModal:l}){return(0,U.jsxs)(`div`,{className:`w-full overflow-hidden rounded-xl`,style:{backgroundColor:`var(--surface-lift)`},children:[(0,U.jsxs)(`div`,{className:`relative p-6 pb-0`,children:[(0,U.jsx)(`div`,{className:`pr-8 text-center`,children:(0,U.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e})}),(0,U.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,U.jsx)(x,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your name`),disabled:!c,"aria-label":`Edit identity`,title:`Edit Name`,className:`absolute right-6 top-6`,tintColor:`var(--content-tertiary)`})]}),(0,U.jsx)(`div`,{className:`flex justify-center py-6`,children:(0,U.jsx)(L,{components:a,traits:o,customImageUrl:s,size:200,interactive:!0})}),(0,U.jsx)(`div`,{className:`flex justify-center pb-6`,children:(0,U.jsx)(i,{type:`button`,variant:`outlined`,size:`regular`,onClick:l,className:`!rounded-full`,children:`Update Avatar`})}),(0,U.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Role`}),(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:n})]}),(0,U.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,U.jsx)(x,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your role description`),disabled:!c,"aria-label":`Edit role`,title:`Edit Role`,tintColor:`var(--content-tertiary)`})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Personality`}),(0,U.jsx)(`p`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},title:t||`Not set`,children:t||`Not set`})]}),(0,U.jsx)(i,{type:`button`,variant:`ghost`,iconOnly:(0,U.jsx)(x,{"aria-hidden":!0}),onClick:()=>c?.(`I would like to change your personality`),disabled:!c,"aria-label":`Edit personality`,title:`Edit Personality`,tintColor:`var(--content-tertiary)`})]}),(0,U.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,U.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Hatched`}),(0,U.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:r})]})]})}function Ke({assistantId:e,onOpenThread:n}){let r=o(),{components:i,traits:a,customImageUrl:l,isLoading:u,invalidate:p}=ae(e),[h,g]=(0,H.useState)(null),[_,v]=(0,H.useState)(null),[y,b]=(0,H.useState)(null),[x,S]=(0,H.useState)(!1),[C,w]=(0,H.useState)(null),[O,k]=(0,H.useState)(null),[A,j]=(0,H.useState)(null),[M,N]=(0,H.useState)(null);(0,H.useEffect)(()=>{let n=!1;return Promise.all([re(e),D(e).catch(()=>({ok:!1,status:0,error:{}}))]).then(([t,r])=>{n||(g(t),r.ok?v(r.data.created):v(null),b(e))}).catch(e=>{n||t(e,{context:`identity_tab_load`})}),()=>{n=!0}},[e]);let te=y!==e||u,[P,ne]=(0,H.useState)(!1),F=s({...E({path:{assistant_id:e},query:{kind:`installed`}}),select:e=>e.skills,enabled:!!e}),I=(0,H.useMemo)(()=>F.data??[],[F.data]),L=(0,H.useCallback)(()=>{p()},[p]),ie=(0,H.useCallback)(()=>{S(!0)},[]),oe=(0,H.useCallback)(()=>{S(!1)},[]),se=(0,H.useCallback)(()=>{n?.(`I'd like to create a custom AI-generated avatar.`)},[n]),R=(0,H.useCallback)(()=>{r.invalidateQueries({queryKey:ee({path:{assistant_id:e}})})},[e,r]),z=c({mutationFn:t=>m(e,t),onMutate:e=>k(e),onSettled:()=>{k(null),R()}}),B=T({onMutate:e=>j(e.path.id),onSettled:()=>{j(null),R()}}),V=(0,H.useCallback)(e=>{z.mutate(e.slug??e.id)},[z]),ce=(0,H.useCallback)(e=>{N(e)},[]),W=(0,H.useCallback)(()=>{M&&(B.mutate({path:{assistant_id:e,id:M.id}}),N(null))},[e,M,B]),G=(0,H.useMemo)(()=>C?I.find(e=>e.id===C)??null:null,[I,C]),K=(0,U.jsx)(d,{open:M!==null,title:`Remove skill`,message:M?`Remove "${M.name}" from this assistant?`:``,confirmLabel:`Remove`,destructive:!0,onConfirm:W,onCancel:()=>N(null)});if(G)return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(f,{assistantId:e,skill:G,onBack:()=>w(null),onInstall:()=>V(G),onRemove:()=>ce(G),isInstalling:O===(G.slug??G.id),isRemoving:A===G.id}),K]});if(te)return(0,U.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,U.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})});let ue=h?.name||`Assistant`,de=h?.personality||``,q=h?.role||`Not set`,J=_?new Date(_).toLocaleDateString(`en-GB`,{day:`numeric`,month:`short`,year:`numeric`}):`Unknown`;return(0,U.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-6 lg:flex-row lg:items-stretch`,children:[(0,U.jsx)(`div`,{className:`mx-auto w-full max-w-md lg:mx-0 lg:h-full lg:shrink-0 lg:overflow-y-auto ${P?`hidden`:`flex`}`,children:(0,U.jsx)(Ge,{assistantName:ue,assistantPersonality:de,assistantRole:q,hatchedDate:J,components:i,traits:a,customImageUrl:l,onOpenThread:n,onOpenModal:ie})}),(0,U.jsx)(`div`,{className:`min-h-[480px] min-w-0 flex-1 lg:min-h-0`,children:(0,U.jsx)(We,{skills:I,components:i,traits:a,customImageUrl:l,className:`h-full w-full`,isFullscreen:P,onToggleFullscreen:()=>ne(e=>!e),onSelectSkill:w})}),(0,U.jsx)(le,{open:x,onClose:oe,assistantId:e,components:i,traits:a,customImageUrl:l,onSaveCharacter:L,onUploadImage:L,onGenerateWithAI:n?se:void 0}),K]})}function qe({onOpenThread:e}){return(0,U.jsx)(Ke,{assistantId:V(),onOpenThread:e})}function Je(){let e=a();return(0,U.jsx)(qe,{onOpenThread:t=>{k.getState().setMainView(`chat`);let n=j();A.getState().setActiveConversationId(n),e(`${O.conversation(n)}?prompt=${encodeURIComponent(t)}`)}},V())}export{Je as IdentityPageRoute};