@gbasin/agentboard-linux-x64 0.37.0 → 0.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -300,11 +300,11 @@ ${s.join(`
300
300
  `,onMouseDown:e=>e.preventDefault(),onTouchEnd:O(E,i),onClick:A(E,i),disabled:i,children:_q})]}),(0,k.jsx)(fq,{...m,allowFiles:c})]})}function Oq({discovery:e,kind:t,hasItems:n}){if(e.status!==`pending`&&e.status!==`indexing`)return null;let r=e.status===`indexing`&&e.bytesTotal>0?` ${Math.min(99,Math.floor(e.bytesRead/e.bytesTotal*100))}%`:``;return(0,k.jsxs)(`p`,{role:`status`,className:`px-3 py-2 text-xs text-secondary`,children:[`Finding `,n?`more `:``,t,`…`,r,n?` Results are partial.`:``]})}async function kq(e,t){let n=e.body?.getReader();if(!n)throw Error(`Empty media response.`);let r=e.headers.get(`content-type`)?.includes(`application/x-ndjson`),i=new TextDecoder(`utf-8`,{fatal:!0}),a=0,o=0,s=``,c=!1,l=e=>{if(!e.trim())return;if(c)throw Error(`Unexpected data after media completion.`);let n=JSON.parse(e);if(!n||![`snapshot`,`progress`,`error`,`done`].includes(n.type))throw Error(`Invalid media response.`);t(n),n.type===`done`&&(c=!0)};try{for(;;){let{value:e,done:t}=await n.read();if(t)break;if(a+=e.byteLength,a>(r?524288:65536))throw Error(`Media response exceeded its size limit.`);let c=0;for(let t=0;t<e.length;t++)if(!(!r||e[t]!==10)){if(o+=t-c,o>65536)throw Error(`Media frame exceeded its size limit.`);s+=i.decode(e.subarray(c,t),{stream:!0})+i.decode(),l(s),s=``,o=0,c=t+1}if(o+=e.length-c,o>65536)throw Error(`Media frame exceeded its size limit.`);s+=i.decode(e.subarray(c),{stream:!0})}if(s+=i.decode(),r){if(s.trim()&&l(s),!c)throw Error(`Media discovery was interrupted. Retry to continue.`)}else{let e=JSON.parse(s);t({type:`snapshot`,page:{...e,discovery:e.discovery??{status:`ready`}}}),t({type:`done`})}}finally{await n.cancel().catch(()=>{}),n.releaseLock()}}var Aq=3,jq=128,Mq=64*1024,Nq=()=>({pages:[],status:`idle`,error:null,requestedRevision:null,scrollShift:0});function Pq(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===`pending`||t.status===`ready`?!0:t.status===`failed`?typeof t.message==`string`:t.status===`indexing`&&[t.bytesRead,t.bytesTotal,t.filesDone,t.filesTotal].every(e=>Number.isFinite(e)&&e>=0)}function Fq(e,t){if(!e||typeof e!=`object`)return!1;let n=e;return typeof n.identity==`string`&&(!t||n.identity===t)&&typeof n.revision==`string`&&Number.isSafeInteger(n.total)&&n.total>=0&&(n.nextCursor===null||typeof n.nextCursor==`string`&&n.nextCursor.length<=8192)&&Array.isArray(n.items)&&n.items.length<=40&&n.items.every(e=>e&&[`image`,`document`,`link`].includes(e.kind)&&typeof e.url==`string`)}function Iq(e,t,n,r,i={}){let[a,o]=(0,y.useState)(Nq),[s,c]=(0,y.useState)(()=>typeof document>`u`||document.visibilityState!==`hidden`),l=(0,y.useRef)(a);l.current=a;let u=(0,y.useRef)(t);u.current=t;let d=(0,y.useRef)(null),f=(0,y.useRef)(0),p=(0,y.useRef)(0),m=(0,y.useRef)(new Map),h=t?.identity,g=i.kind,_=i.search,v=JSON.stringify([g,_]),b=(0,y.useRef)(v);b.current=v;let x=(0,y.useCallback)(()=>{f.current++,d.current?.controller.abort(),d.current=null},[]);(0,y.useEffect)(()=>{let e=()=>{x(),c(!1),o(e=>e.status===`loading`||e.status===`streaming`?{...e,status:`idle`}:e)},t=()=>c(document.visibilityState!==`hidden`),n=()=>document.visibilityState===`hidden`?e():t();return document.addEventListener(`visibilitychange`,n),window.addEventListener(`pagehide`,e),window.addEventListener(`pageshow`,t),()=>{document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`pagehide`,e),window.removeEventListener(`pageshow`,t),x()}},[x]),(0,y.useEffect)(()=>{x(),m.current.clear(),p.current=0,o(Nq())},[e,v,x]),(0,y.useEffect)(()=>{let e=l.current.pages[0]?.page.identity;h&&e&&h!==e&&(x(),m.current.clear(),o(Nq()))},[h,x]),(0,y.useEffect)(()=>{n||(p.current=0),!(n&&r&&s)&&(x(),o(e=>e.status===`loading`||e.status===`streaming`?{...e,status:`idle`}:e))},[n,r,s,x]);let S=(0,y.useCallback)(async(t,i=!1)=>{let a=u.current;if(!n||!r||!s||!e)return;d.current&&x();let c=l.current,h=c.pages[0],y=c.pages.at(-1),S=t===`first`?0:t===`next`?(y?.number??-1)+1:(h?.number??1)-1,C=t===`first`?null:t===`next`?y?.page.nextCursor:m.current.get(S);if(t!==`first`&&(C===void 0||t===`next`&&C===null))return;let w=new AbortController,T=++f.current;d.current={controller:w,token:T},o(e=>({...e,status:`loading`,error:null,latestSummary:t===`first`?void 0:e.latestSummary}));let E=setTimeout(()=>w.abort(`timeout`),Lh+5e3);try{let n=new URLSearchParams;n.set(`stream`,`1`),C&&n.set(`cursor`,C),g&&n.set(`kind`,g),_&&n.set(`search`,_);let r=n.size?`?${n}`:``,s=await fetch(`/api/session-media/${encodeURIComponent(e)}/items${r}`,{signal:w.signal,cache:`no-store`});if(!s.ok)throw Error(s.status===409?`Media changed. Refresh to continue.`:`Could not load media. Try again.`);let l=i&&c.pages.some(e=>e.page.items.length>0),u=!1,y,x=a?.identity??h?.page.identity,E=()=>d.current?.token===T&&f.current===T&&b.current===v&&!w.signal.aborted;if(await kq(s,e=>{if(!E())return;if(e.type===`error`)throw Error(typeof e.message==`string`?e.message:`Could not load media.`);if(e.type===`done`)return;if(e.type===`progress`){let t=e.summary;if(!t||t.identity!==x||typeof t.revision!=`string`||![t.total,t.images,t.documents,t.links,t.additions].every(e=>Number.isSafeInteger(e)&&e>=0)||!Pq(t.discovery))throw Error(`Invalid discovery progress.`);y=t.discovery,o(e=>({...e,discovery:y,latestSummary:t}));return}let n=e.page;if(!Fq(n,x)||!Pq(n.discovery))throw Error(`Media identity changed. Refresh to continue.`);if(y=n.discovery,x=n.identity,u=!0,l){o(e=>({...e,discovery:y,status:`streaming`}));return}if(t!==`first`&&n.revision!==h?.page.revision)throw Error(`Media changed. Refresh to continue.`);for(l=n.items.length>0,m.current.set(S,C??null),n.nextCursor&&m.current.set(S+1,n.nextCursor);m.current.size>jq||[...m.current.values()].reduce((e,t)=>e+(t?.length??0)*2,0)>Mq;)m.current.delete(m.current.keys().next().value);let r={number:S,cursor:C??null,page:n};o(e=>{let i=t===`first`?[r]:t===`next`?[...c.pages,r]:[r,...c.pages],o=c.scrollShift;return t===`previous`&&(o+=n.items.length),i.length>Aq&&(t===`next`?(o-=i[0].page.items.length,i=i.slice(1)):i=i.slice(0,Aq)),{...e,pages:i,discovery:y,status:`streaming`,error:null,scrollShift:t===`first`?0:o,requestedRevision:t===`first`?a?.revision??n.revision:e.requestedRevision}})}),!E())return;if(!u)throw Error(`Empty media response.`);if(y?.status===`failed`)throw Error(y.message);if(y?.status!==`ready`){if(p.current>=3)throw Error(`Discovery is still incomplete. Retry to continue.`);if(p.current++,await new Promise(e=>setTimeout(e,250*p.current)),!E())return}o(e=>({...e,status:`idle`}))}catch(e){if(d.current?.token!==T||f.current!==T)return;o(t=>({...t,status:`error`,error:w.signal.aborted?`Media discovery timed out. Retry to continue.`:e instanceof Error?e.message:`Could not load media.`}))}finally{clearTimeout(E),d.current?.token===T&&(d.current=null)}},[n,r,s,e,g,_,v,x]);(0,y.useEffect)(()=>{n&&r&&s&&a.status===`idle`&&(!a.pages.length||a.discovery?.status===`pending`||a.discovery?.status===`indexing`)&&S(`first`,a.pages.length>0)},[n,r,s,a.pages.length,a.status,a.discovery?.status,S]);let C=a.pages[0]?.page.revision,w=(a.status===`idle`||a.status===`error`)&&t&&t.revision!==a.requestedRevision?t:a.latestSummary??t,T=!!(C&&[a.latestSummary,t].some(e=>e&&e.revision!==C&&e.revision!==a.requestedRevision)),E=a.discovery??w?.discovery??(t?{status:`ready`}:{status:`pending`});return{...a,visible:s,changed:T,discovery:E,latestSummary:w,identity:a.pages[0]?.page.identity??t?.identity,items:a.pages.flatMap(e=>e.page.items),hasNext:!!a.pages.at(-1)?.page.nextCursor,hasEarlier:(a.pages[0]?.number??0)>0,canLoadEarlier:m.current.has((a.pages[0]?.number??0)-1),firstItem:a.pages[0]?.number??0,loadNext:()=>S(`next`),loadPrevious:()=>S(`previous`),refresh:()=>(x(),p.current=0,m.current.clear(),S(`first`))}}async function Lq(e){if(typeof document<`u`&&typeof document.execCommand==`function`){let t=document.activeElement,n=document.getSelection?.(),r=n?Array.from({length:n.rangeCount},(e,t)=>n.getRangeAt(t).cloneRange()):[],i=document.createElement(`textarea`);i.value=e,i.readOnly=!0,i.style.position=`fixed`,i.style.opacity=`0`,i.style.pointerEvents=`none`,i.style.fontSize=`16px`,document.body.appendChild(i);let a=!1;try{i.focus({preventScroll:!0}),i.select(),i.setSelectionRange(0,e.length),a=document.execCommand(`copy`)}catch{}finally{if(i.remove(),t?.focus?.({preventScroll:!0}),n){n.removeAllRanges();for(let e of r)n.addRange(e)}}if(a)return!0}try{return typeof navigator>`u`||!navigator.clipboard?.writeText?!1:(await navigator.clipboard.writeText(e),!0)}catch{return!1}}function Rq({url:e,label:t}){let[n,r]=(0,y.useState)(`idle`),i=(0,y.useRef)(0),a=(0,y.useRef)();(0,y.useEffect)(()=>(r(`idle`),()=>{i.current++,clearTimeout(a.current)}),[e]);let o=n===`copied`?V:ce;return(0,k.jsxs)(`span`,{className:`relative shrink-0`,children:[(0,k.jsx)(`button`,{type:`button`,"aria-label":`Copy link for ${t}`,title:n===`copied`?`Copied`:`Copy link`,"aria-busy":n===`copying`,"data-copy-state":n,onKeyDown:e=>e.stopPropagation(),onKeyUp:e=>e.stopPropagation(),onClick:t=>{t.preventDefault(),t.stopPropagation(),t.currentTarget.focus({preventScroll:!0}),clearTimeout(a.current);let n=++i.current;r(`copying`),Lq(e).then(e=>{n===i.current&&(r(e?`copied`:`failed`),e&&(a.current=setTimeout(()=>r(`idle`),2e3)))})},className:`flex h-[44px] w-[44px] items-center justify-center rounded text-secondary hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:(0,k.jsx)(o,{"aria-hidden":`true`,width:W.primary,height:W.primary})}),(0,k.jsx)(`span`,{role:`status`,"aria-live":`polite`,className:n===`failed`?`absolute right-0 top-full z-10 w-48 rounded border border-border bg-surface p-2 text-xs text-secondary shadow-sm`:`sr-only`,children:n===`copied`?`Link copied`:n===`failed`?`Could not copy. Touch and hold the link to copy it.`:``})]})}function zq(e,t){let n=e.replace(/^https:\/\//i,``),r;try{r=new URL(e)}catch{return{title:t||e,subtitle:t&&t!==e?e:void 0,detail:``}}let i=r.host+(r.pathname===`/`?``:r.pathname),a=t?.trim(),o=a&&![e,n,e.replace(/^https?:\/\//i,``),i].includes(a),s=e.search(/[?#]/),c=s<0?``:e.slice(s),l=r.hostname===`github.com`&&r.protocol===`https:`&&!r.port&&!r.username&&!r.password?/^\/([^/]+)\/([^/]+)\/pull\/(\d+)(\/.*)?$/.exec(r.pathname):null;if(l&&!o){let e=/^#issuecomment-(\d+)$/.exec(r.hash);return{title:`${l[2]} · PR #${l[3]}`,subtitle:`github.com/${l[1]}`,detail:[l[4],r.search,e?`Comment #${e[1]}`:r.hash].filter(Boolean).join(` · `)}}let u=(c?e.slice(0,-c.length):e).replace(/^https:\/\//i,``);return{title:o?a:u,subtitle:o?u:void 0,detail:c}}function Bq({item:e}){let[t,n]=(0,y.useState)(!1),r=e.externalUrl??e.url,{title:i,subtitle:a,detail:o}=zq(r,e.label);return(0,k.jsxs)(`div`,{className:`border-b border-border/60`,children:[(0,k.jsxs)(`div`,{className:`flex min-h-[60px] items-center gap-2 px-3 py-2`,children:[(0,k.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,"aria-label":i,"aria-description":r,title:r,className:`min-w-0 flex-1 rounded text-[12px] leading-[18px] text-primary hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[(0,k.jsx)(`span`,{className:`line-clamp-2 break-words [overflow-wrap:anywhere]`,children:i}),a&&(0,k.jsx)(`span`,{className:`mt-0.5 line-clamp-2 break-words text-[11px] leading-[16px] text-secondary [overflow-wrap:anywhere]`,children:a}),o&&(0,k.jsx)(`span`,{className:`mt-0.5 line-clamp-2 break-all text-[11px] leading-[16px] text-secondary`,children:o})]}),e.externalUrl&&(0,k.jsx)(Rq,{url:e.externalUrl,label:i}),e.sourceText&&(0,k.jsx)(`button`,{type:`button`,"aria-label":`Source for ${i}`,"aria-expanded":t,onClick:()=>n(e=>!e),className:`flex h-[44px] w-[36px] shrink-0 items-center justify-center rounded text-secondary hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:(0,k.jsx)(B,{width:W.primary,height:W.primary,className:t?`rotate-90`:``})})]}),t&&(0,k.jsxs)(`p`,{className:`whitespace-pre-wrap break-words bg-surface px-3 py-2 text-[11px] leading-[17px] text-secondary`,"data-testid":`link-source`,children:[(0,k.jsx)(`span`,{className:`block text-muted`,children:`Agent reply excerpt`}),e.sourceText]})]})}function Vq({session:e,ready:t,search:n,onRefresh:r}){let i=Iq(e.agentSessionId,e.mediaSummary,!0,t,{kind:`links`,search:n}),a=(0,y.useRef)(null),o=i.pages.at(-1),[s,c]=(0,y.useState)(0),l=i.pages.find(e=>e.number===s)??o;return(0,y.useEffect)(()=>{a.current&&(a.current.scrollTop=0)},[l?.number]),(0,k.jsxs)(k.Fragment,{children:[i.changed&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>{c(0),r(),i.refresh()},disabled:!t,"aria-label":`Refresh media`,className:`shrink-0 px-3 py-2 text-left text-xs text-accent`,children:`Links changed · Refresh`}),(0,k.jsxs)(`div`,{ref:a,"data-testid":`links-scroll`,role:`region`,"aria-label":`Session links, newest first`,className:`min-h-0 flex-1 overflow-y-auto overscroll-contain`,children:[!!l?.page.omittedItems&&!e.mediaSummary?.omittedItems&&(0,k.jsxs)(`p`,{className:`px-3 py-2 text-xs text-secondary`,children:[`Some items could not be listed because their details are too large (`,l.page.omittedItems,`).`]}),l?.page.items.map(e=>(0,k.jsx)(Bq,{item:e},e.url)),l&&!l.page.items.length&&i.discovery.status===`ready`&&(0,k.jsx)(`p`,{className:`px-3 py-4 text-xs text-secondary`,children:n?`No matching links.`:`No web links in this session yet.`}),i.error&&(0,k.jsxs)(`p`,{role:`alert`,className:`px-3 py-2 text-xs text-secondary`,children:[i.error,` `,(0,k.jsx)(`button`,{type:`button`,onClick:()=>{c(0),r(),i.refresh()},className:`text-accent`,children:`Retry`})]}),!i.error&&(0,k.jsx)(Oq,{discovery:i.discovery,kind:`links`,hasItems:!!l?.page.items.length}),i.status===`loading`&&i.discovery.status===`ready`&&(0,k.jsx)(`p`,{role:`status`,className:`px-3 py-2 text-xs text-secondary`,children:`Loading links…`}),!t&&(0,k.jsx)(`p`,{role:`status`,className:`px-3 py-2 text-xs text-secondary`,children:`Waiting for terminal recovery…`}),(0,k.jsxs)(`div`,{className:`flex justify-between gap-2 px-3 text-xs text-accent`,children:[l&&l.number>0&&(0,k.jsx)(`button`,{type:`button`,disabled:i.status===`loading`||!t,className:`min-h-[44px]`,onClick:()=>{i.pages.some(e=>e.number===l.number-1)?c(l.number-1):i.canLoadEarlier?(c(l.number-1),i.loadPrevious()):(c(0),i.refresh())},children:`Newer links`}),l?.page.nextCursor&&(0,k.jsx)(`button`,{type:`button`,disabled:i.status===`loading`||!t,className:`ml-auto min-h-[44px]`,onClick:()=>{c(l.number+1),i.pages.some(e=>e.number===l.number+1)||i.loadNext()},children:`Older links`})]})]}),(0,k.jsxs)(`div`,{className:`flex shrink-0 justify-between border-t border-border/60 px-3 py-1.5 text-[11px] text-secondary`,children:[(0,k.jsx)(`span`,{children:`This session`}),(0,k.jsx)(`span`,{children:`Newest first`})]})]})}function Hq(e){return e.startsWith(`/api/session-media/`)?`${e}${e.includes(`?`)?`&`:`?`}delivery=2`:e}var Uq=128*1024,Wq=3,Gq=0,Kq=[];function qq(e){return new Promise((t,n)=>{let r=()=>{let e=Kq.indexOf(i);e>=0&&Kq.splice(e,1),n(new DOMException(`Aborted`,`AbortError`))},i={signal:e,start:()=>{e.removeEventListener(`abort`,r),Gq++,t(()=>{Gq--;let e=Kq.shift();e&&e.start()})}};if(e.aborted)return r();Gq<Wq?i.start():Kq.length>=32?n(Error(`Thumbnail queue full`)):(Kq.push(i),e.addEventListener(`abort`,r,{once:!0}))})}async function Jq(e,t){let n=await qq(t);try{let n=await fetch(e,{signal:t,redirect:`error`});if(!n.ok||n.headers.get(`content-type`)?.split(`;`)[0]!==`image/png`)throw await n.body?.cancel(),Error(`Preview unavailable`);let r=n.body?.getReader();if(!r)throw Error(`Empty preview`);let i=0,a=[];try{for(;;){let{done:e,value:t}=await r.read();if(e)break;if(i+=t.byteLength,i>Uq)throw Error(`Preview too large`);a.push(new Uint8Array(t))}}finally{await r.cancel().catch(()=>{}),r.releaseLock()}if(!i)throw Error(`Empty preview`);return new Blob(a,{type:`image/png`})}finally{n()}}function Yq(e,t,n){let r=(0,y.useRef)(null),[i,a]=(0,y.useState)(!1),[o,s]=(0,y.useState)({status:`idle`}),c=(0,y.useRef)(o);c.current=o;let l=(0,y.useRef)(null);return(0,y.useEffect)(()=>{if(!r.current||!n.current||typeof IntersectionObserver>`u`)return;let e=new IntersectionObserver(e=>a(e.some(e=>e.isIntersecting)),{root:n.current,rootMargin:`0px 64px`});return e.observe(r.current),()=>e.disconnect()},[n]),(0,y.useEffect)(()=>(c.current={status:`idle`},s(c.current),()=>{l.current&&URL.revokeObjectURL(l.current),l.current=null}),[e]),(0,y.useEffect)(()=>{if(!t||!i||c.current.status===`ready`||c.current.status===`error`)return;let n=new AbortController,r=!0,a=setTimeout(()=>n.abort(),15e3);return s({status:`loading`}),Jq(`${e}${e.includes(`?`)?`&`:`?`}thumbnail=1`,n.signal).then(e=>{if(!r||n.signal.aborted)return;let t=URL.createObjectURL(e);l.current=t,s({status:`ready`,src:t})}).catch(()=>{r&&s({status:`error`})}).finally(()=>clearTimeout(a)),()=>{r=!1,clearTimeout(a),n.abort(),s(e=>e.status===`loading`?{status:`idle`}:e)}},[e,t,i]),{target:r,preview:o,fail:()=>{l.current&&URL.revokeObjectURL(l.current),l.current=null,s({status:`error`})}}}var Xq=[`a[href]`,`button:not([disabled])`,`input:not([disabled]):not([type="hidden"])`,`select:not([disabled])`,`textarea:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`,`);function Zq(e){return Array.from(e.querySelectorAll(Xq)).filter(e=>e.getAttribute(`aria-hidden`)!==`true`&&e.tabIndex!==-1)}function Qq(e,t,n){if(e.length===0)return null;let r=e[0],i=e[e.length-1],a=t===null?-1:e.indexOf(t);return a===-1?n?i:r:n&&a===0?i:!n&&a===e.length-1?r:null}var $q=`.xterm-helper-textarea`,eJ=300,tJ=`[data-suspends-terminal]`,nJ=null;function rJ(e){return!e||typeof document>`u`||e===document.body?null:typeof e.focus==`function`?e:null}function iJ(e,t){if(e.isConnected)return e;if(!t)return null;let n=t.replace(/["\\]/g,`\\$&`);return document.querySelector(`button[aria-label="${n}"]`)}function aJ(e){let t=e?.restoreFocus??`terminal`;(0,y.useEffect)(()=>{if(typeof document>`u`||typeof document.querySelector!=`function`)return;nJ&&=(clearTimeout(nJ),null);let e=rJ(document.activeElement),n=document.querySelector($q);n&&(n.blur(),n.setAttribute(`disabled`,`true`));let r=e?.getAttribute?.(`aria-label`)??null;return()=>{nJ=setTimeout(()=>{if(nJ=null,document.querySelector(tJ))return;let i=document.querySelector($q);if(i&&(i.removeAttribute(`disabled`),t===`terminal`)){i.focus();return}(e&&e!==n?iJ(e,r):null)?.focus()},eJ)}},[t])}function oJ(e,t){let n=(0,y.useRef)(t);n.current=t,(0,y.useEffect)(()=>{if(typeof document>`u`||typeof document.addEventListener!=`function`)return;let t=t=>{if(t.key===`Escape`){if(t.defaultPrevented)return;t.preventDefault(),t.stopPropagation(),n.current();return}if(t.key!==`Tab`)return;let r=e.current;if(!r)return;let i=document.activeElement,a=Qq(Zq(r),i,t.shiftKey);a&&(t.preventDefault(),a.focus())},r=t=>{let n=e.current,r=t.target;n&&r&&!n.contains(r)&&n.focus()};return document.addEventListener(`keydown`,t),document.addEventListener(`focusin`,r),()=>{document.removeEventListener(`keydown`,t),document.removeEventListener(`focusin`,r)}},[e])}var sJ=`flex min-h-[44px] min-w-[44px] items-center justify-center gap-1 rounded-md px-3 text-sm text-white hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:opacity-35`,cJ=e=>e.url.startsWith(`/api/session-media/`);function lJ(e){let{media:t,enabled:n,onClose:r,canPrevious:i,canNext:a,navigating:o,navigationError:s,onRetryNavigation:c,label:l}=e,u=(0,y.useRef)(null),d=(0,y.useRef)(null),f=(0,y.useRef)(e);f.current=e,aJ({restoreFocus:`opener`}),oJ(u,r),(0,y.useEffect)(()=>{d.current?.focus()},[]);let p=e=>{let t=f.current;!t.enabled||t.navigating||!(e===`previous`?t.canPrevious:t.canNext)||(u.current?.focus(),e===`previous`?t.onPrevious():t.onNext())},m=(0,y.useRef)(o);(0,y.useLayoutEffect)(()=>{let e=o&&!m.current;m.current=o,e&&u.current&&!u.current.contains(document.activeElement)&&u.current.focus()},[o]),(0,y.useEffect)(()=>{let e=e=>{if(e.key===`Escape`)e.preventDefault(),e.stopImmediatePropagation(),f.current.onClose();else if((e.key===`ArrowLeft`||e.key===`ArrowRight`)&&!e.ctrlKey&&!e.metaKey&&!e.altKey)e.preventDefault(),e.stopImmediatePropagation(),p(e.key===`ArrowLeft`?`previous`:`next`);else if(u.current&&(!e.target||typeof e.target.nodeType!=`number`||!u.current.contains(e.target)))if(e.preventDefault(),e.stopImmediatePropagation(),e.key===`Tab`){let t=Qq(Zq(u.current),null,e.shiftKey);t?t.focus():u.current.focus()}else u.current.focus()};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},[]);let h=(0,k.jsx)(`div`,{className:`media-lightbox-backdrop fixed inset-0 z-[80] flex items-center justify-center bg-black/80`,onClick:e=>{e.stopPropagation(),e.target===e.currentTarget&&r()},onPointerDown:e=>e.stopPropagation(),children:(0,k.jsxs)(`div`,{ref:u,"data-testid":`media-lightbox`,role:`dialog`,"aria-modal":`true`,"aria-label":`Media preview`,"data-suspends-terminal":``,tabIndex:-1,onKeyDown:e=>{if(e.stopPropagation(),e.key===`Tab`&&u.current){let t=Qq(Zq(u.current),document.activeElement,e.shiftKey);t&&(e.preventDefault(),t.focus())}},className:`media-lightbox-panel flex flex-col overflow-hidden border border-white/15 bg-neutral-950 text-white shadow-2xl outline-none`,children:[(0,k.jsxs)(`header`,{className:`flex shrink-0 items-center gap-2 border-b border-white/10 px-3`,children:[(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm`,title:t.label,children:t.label||`Image`}),l&&(0,k.jsx)(`span`,{className:`shrink-0 text-xs text-white/60`,children:l}),(0,k.jsx)(`button`,{ref:d,type:`button`,className:sJ,"aria-label":`Close image viewer`,onClick:r,children:(0,k.jsx)(ot,{width:W.primary,height:W.primary,"aria-hidden":`true`})})]}),(0,k.jsx)(uJ,{media:t,previewSrc:e.previewSrc,enabled:n},t.url),!n&&(0,k.jsx)(`p`,{role:`status`,className:`px-4 py-2 text-center text-sm text-white/70`,children:`Waiting for terminal recovery…`}),s&&(0,k.jsxs)(`div`,{role:`alert`,className:`px-4 py-2 text-center text-sm text-white/70`,children:[s,` `,c&&(0,k.jsx)(`button`,{type:`button`,className:`min-h-[44px] text-accent underline`,disabled:!n||o,onClick:c,children:`Retry navigation`})]}),(0,k.jsxs)(`nav`,{"aria-label":`Image navigation`,className:`flex shrink-0 items-center justify-between gap-2 border-t border-white/10 p-2`,children:[(0,k.jsxs)(`button`,{type:`button`,className:sJ,"aria-label":`Previous image`,onClick:()=>p(`previous`),disabled:!n||o||!i,children:[(0,k.jsx)(B,{width:W.primary,height:W.primary,className:`rotate-180`,"aria-hidden":`true`}),`Previous`]}),(0,k.jsx)(`span`,{role:`status`,className:`text-xs text-white/60`,children:o?`Loading images…`:``}),(0,k.jsxs)(`button`,{type:`button`,className:sJ,"aria-label":`Next image`,onClick:()=>p(`next`),disabled:!n||o||!a,children:[`Next`,(0,k.jsx)(B,{width:W.primary,height:W.primary,"aria-hidden":`true`})]})]})]})});return typeof document<`u`&&document.body?.nodeType===1?(0,uf.createPortal)(h,document.body):h}function uJ({media:e,previewSrc:t,enabled:n}){let[r,i]=(0,y.useState)(t?{status:`ready`,src:t}:{status:`idle`}),[a,o]=(0,y.useState)(n?`loading`:`idle`),s=(0,y.useRef)(r);s.current=r;let c=(0,y.useRef)(null),l=(0,y.useRef)(t),u=(0,y.useRef)(0),d=(0,y.useRef)(n);d.current!==n&&(u.current++,d.current=n),(0,y.useEffect)(()=>()=>{c.current&&URL.revokeObjectURL(c.current)},[]),(0,y.useEffect)(()=>{o(n?`loading`:`idle`)},[n]),(0,y.useEffect)(()=>{if(!n||!cJ(e)||c.current||!l.current||s.current.status===`error`)return;let t=new AbortController,r=!0,a=setTimeout(()=>t.abort(),15e3);return l.current||i({status:`loading`}),(async()=>{let n;if(l.current?.startsWith(`blob:`))try{n=await Jq(l.current,t.signal)}catch{}t.signal.aborted||(n||=await Jq(`${e.url}${e.url.includes(`?`)?`&`:`?`}thumbnail=1`,t.signal),!(!r||t.signal.aborted)&&(c.current=URL.createObjectURL(n),i({status:`ready`,src:c.current})))})().catch(()=>{r&&i({status:`error`})}).finally(()=>clearTimeout(a)),()=>{r=!1,clearTimeout(a),t.abort()}},[e.url,n]);let f=u.current,p=n&&(a===`loading`||a===`ready`);return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{"data-testid":`media-lightbox-stage`,className:`media-lightbox-stage`,children:(0,k.jsxs)(`div`,{className:`media-lightbox-canvas`,children:[r.status===`ready`&&a!==`ready`&&(0,k.jsx)(`img`,{"data-testid":`media-lightbox-preview`,src:r.src,alt:`${e.label||`Image`} preview`,className:`media-lightbox-image`,onError:()=>{l.current=void 0,i({status:`error`})}}),p&&(0,k.jsx)(`img`,{"data-testid":`media-lightbox-original`,src:Hq(e.url),alt:e.label||`Image`,className:`media-lightbox-image ${a===`ready`?``:`invisible`}`,onLoad:()=>{d.current&&u.current===f&&o(`ready`)},onError:()=>{d.current&&u.current===f&&o(`error`)}},f),r.status!==`ready`&&a!==`ready`&&(0,k.jsxs)(`div`,{className:`col-start-1 row-start-1 flex flex-col items-center justify-center gap-2 text-sm text-white/60`,children:[(0,k.jsx)(Se,{width:W.primary,height:W.primary,"aria-hidden":`true`}),(0,k.jsx)(`span`,{role:`status`,children:a===`loading`?`Loading image…`:r.status===`loading`?`Loading preview…`:`Preview unavailable`})]})]})}),(0,k.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-center gap-x-4 gap-y-1 px-3 text-sm`,children:[a===`loading`&&n&&(0,k.jsx)(`span`,{role:`status`,className:`text-white/60`,children:`Loading full image…`}),a===`error`&&(0,k.jsx)(`span`,{role:`alert`,className:`text-white/60`,children:`Could not load the full image.`}),a===`error`&&(0,k.jsx)(`button`,{type:`button`,className:`${sJ} border border-white/20`,disabled:!n,onClick:()=>{u.current++,o(`loading`)},children:`Retry full image`}),(0,k.jsx)(`a`,{href:Hq(e.url),target:`_blank`,rel:`noreferrer noopener`,"aria-disabled":!n,tabIndex:n?0:-1,onClick:e=>{n||e.preventDefault()},className:`flex min-h-[44px] items-center text-accent underline underline-offset-2 ${n?``:`opacity-35`}`,children:`Open original`})]})]})}function dJ(e,t,n){let[r,i]=(0,y.useState)(null),[a,o]=(0,y.useState)(null),[s,c]=(0,y.useState)(0),l=(0,y.useRef)(r);l.current=r;let u=!!r?.media.url.startsWith(`/api/session-media/`),d=(0,y.useRef)(0),f=(0,y.useRef)(null),p=(0,y.useCallback)(()=>{d.current++,f.current?.abort(),f.current=null},[]),m=(0,y.useCallback)(()=>{p(),l.current=null,i(null),o(null)},[p]),h=(0,y.useCallback)((e,t)=>{p();let n={media:e,previewSrc:t};l.current=n,i(n),o(null)},[p]);(0,y.useEffect)(()=>{m()},[e,t,m]),(0,y.useEffect)(()=>{if(!r||!u||!n||!e||!t)return;let i=new AbortController,a=++d.current,s=r.media.url;f.current=i,o({anchor:s,status:`loading`});let c=setTimeout(()=>i.abort(),15e3);return(async()=>{try{let n=await fetch(`/api/session-media/${encodeURIComponent(e)}/neighbors?anchor=${encodeURIComponent(s)}`,{signal:i.signal,cache:`no-store`});if(!n.ok)throw Error(n.status===409?`Media changed. Close this image and refresh Media.`:`Could not load image navigation.`);let r=n.body?.getReader();if(!r)throw Error(`Empty navigation response.`);let c=[],u=new TextDecoder,f=0;try{for(;;){let{done:e,value:t}=await r.read();if(e)break;if(f+=t.byteLength,f>65536)throw Error(`Navigation response exceeded its size limit.`);c.push(u.decode(t,{stream:!0}))}c.push(u.decode())}finally{await r.cancel().catch(()=>{}),r.releaseLock()}let p=JSON.parse(c.join(``)),m=e=>e===null||e&&e.kind===`image`&&typeof e.url==`string`;if(!p||p.identity!==t||typeof p.revision!=`string`||p.current?.url!==s||!m(p.current)||!m(p.previous)||!m(p.next))throw Error(`Invalid image navigation response.`);d.current===a&&l.current?.media.url===s&&!i.signal.aborted&&o({anchor:s,status:`ready`,value:p})}catch(e){d.current===a&&l.current?.media.url===s&&o({anchor:s,status:`error`,error:i.signal.aborted?`Image navigation timed out. Try again.`:e instanceof Error?e.message:`Could not load image navigation.`})}finally{clearTimeout(c),f.current===i&&(f.current=null)}})(),()=>{clearTimeout(c),p()}},[r,u,e,t,n,s,p]);let g=a?.anchor===r?.media.url?a:null,_=g?.status===`ready`?g.value:null;return{selection:r,open:h,close:m,navigating:n&&u&&(!g||g.status===`loading`),navigationError:g?.status===`error`?g.error:void 0,canPrevious:n&&!!_?.previous,canNext:n&&!!_?.next,previous:()=>{n&&_?.previous&&h(_.previous)},next:()=>{n&&_?.next&&h(_.next)},retry:()=>c(e=>e+1)}}var fJ=`h-[56px] w-[56px] shrink-0 overflow-hidden rounded-md border border-border bg-surface hover:border-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`,pJ=`${fJ} flex flex-col items-center justify-center gap-[3px] p-[4px] text-center text-secondary hover:text-primary`,mJ=`line-clamp-2 w-full break-words text-[10px] leading-[12px]`;function hJ(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function gJ(e){return[e.label,e.mediaType,e.bytes==null?null:hJ(e.bytes)].filter(Boolean).join(` · `)}function _J({media:e,onOpen:t,previewEnabled:n,scrollRoot:r}){let i=gJ(e);if(e.kind===`link`)return(0,k.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer noopener`,title:[i,e.url].filter(Boolean).join(` · `),"aria-label":e.label||e.url,className:pJ,children:[(0,k.jsx)(we,{width:W.primary,height:W.primary,className:`shrink-0`}),(0,k.jsx)(`span`,{className:mJ,children:e.label||`Link`})]});let a=e.kind===`image`,o=e.url.startsWith(`/api/session-media/`)&&!e.url.startsWith(`//`);return a&&o?(0,k.jsx)(vJ,{media:e,caption:i,enabled:n,root:r,onOpen:t}):(0,k.jsxs)(`button`,{type:`button`,"data-testid":`media-chip`,onClick:n=>{a?(n.currentTarget.focus({preventScroll:!0}),t(e)):window.open(Hq(e.url),`_blank`,`noopener`)},title:i||e.kind,"aria-label":i||(a?`Image`:`Document`),className:pJ,children:[a?(0,k.jsx)(Se,{width:W.primary,height:W.primary,className:`shrink-0`}):(0,k.jsx)(be,{width:W.primary,height:W.primary,className:`shrink-0`}),(0,k.jsx)(`span`,{className:mJ,children:e.label??(a?`Image`:`Document`)})]})}function vJ({media:e,caption:t,enabled:n,root:r,onOpen:i}){let{target:a,preview:o,fail:s}=Yq(e.url,n,r),c=o.status===`error`?`No preview`:o.status===`loading`?`Loading…`:`Open image`;return(0,k.jsx)(`button`,{ref:a,type:`button`,"data-testid":`media-thumb`,"data-preview-state":o.status,onClick:t=>{t.currentTarget.focus({preventScroll:!0}),i(e,o.status===`ready`?o.src:void 0)},title:t||`Image`,"aria-label":`${t||`Image`} · ${o.status===`error`?`Preview unavailable. `:``}Open image`,"aria-busy":o.status===`loading`,className:o.status===`ready`?fJ:pJ,children:o.status===`ready`?(0,k.jsx)(`img`,{"data-testid":`media-thumbnail`,src:o.src,alt:t||`session image`,onError:s,className:`h-full w-full object-cover`}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Se,{width:W.primary,height:W.primary,className:`shrink-0`}),(0,k.jsx)(`span`,{className:mJ,children:c})]})})}function yJ({session:e,ready:t=!1}){let n=JSON.stringify([e.id,e.agentSessionId,e.logFilePath,e.remote,e.agentType]);return(0,k.jsx)(bJ,{session:e,ready:t},n)}function bJ({session:e,ready:t}){let[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(`idle`),o=e.mediaSummary,[s,c]=(0,y.useState)(()=>o&&o.links>0&&o.images+o.documents===0?`links`:`media`),[l,u]=(0,y.useState)(!1),[d,f]=(0,y.useState)(``),[p,m]=(0,y.useState)(``),h=Iq(e.agentSessionId,o,n&&s===`media`,t,{kind:`media`}),g=dJ(e.agentSessionId,h.identity,h.visible&&t),_=(0,y.useRef)(null),v=(0,y.useRef)(null),b=(0,y.useRef)(null),x=()=>{g.close(),r(!1),queueMicrotask(()=>b.current?.focus())};(0,y.useEffect)(()=>{let e=setTimeout(()=>m(d.trim()),200);return()=>clearTimeout(e)},[d]),(0,y.useEffect)(()=>{l&&v.current?.focus()},[l]),(0,y.useEffect)(()=>{if(!n||g.selection)return;let e=e=>{e.target instanceof Node&&!_.current?.contains(e.target)&&r(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[n,g.selection]);let S=(0,y.useRef)(o?.additions),C=(0,y.useRef)(null),w=(0,y.useRef)(0),T=(0,y.useRef)(0);(0,y.useEffect)(()=>{o?.images===0&&(!o.discovery||o.discovery.status===`ready`)&&g.close()},[o?.images,o?.discovery?.status,g.close]),(0,y.useLayoutEffect)(()=>{C.current&&(C.current.scrollLeft+=(h.scrollShift-w.current)*64),w.current=h.scrollShift},[h.scrollShift]),(0,y.useEffect)(()=>{if(!o)return;let t=S.current;S.current=o.additions,o.total===0?a(`idle`):t!==void 0&&o.additions>t&&!e.remote&&a(n?`unread`:`pulsing`)},[o,e.remote,n]);let E=()=>{C.current&&(C.current.scrollLeft=0),T.current=0,w.current=0,g.close(),a(`idle`),h.refresh()};if((0,y.useEffect)(()=>{if(i!==`pulsing`)return;let e=setTimeout(()=>a(`unread`),1600);return()=>clearTimeout(e)},[i]),(0,y.useEffect)(()=>{if(!n||g.selection)return;let e=e=>{e.key===`Escape`&&(e.stopPropagation(),x())};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},[n,g.selection]),e.remote||!e.agentSessionId)return null;let D=h.latestSummary??o,O=!D||D.total===0&&(h.discovery.status===`pending`||h.discovery.status===`indexing`),A=D?D.images+D.documents:void 0;return(0,k.jsxs)(k.Fragment,{children:[n?(0,k.jsxs)(`div`,{ref:_,"data-testid":`media-rail`,onKeyDown:e=>e.stopPropagation(),className:`absolute top-2 right-2 z-40 flex max-h-[min(280px,65%)] w-[calc(100%-16px)] flex-col overflow-hidden rounded-xl border border-border bg-elevated shadow-xl md:max-h-[320px] md:w-[400px]`,children:[(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-[10px] border-b border-border/60 px-3`,children:[[`media`,`links`].map(e=>(0,k.jsxs)(`button`,{type:`button`,"aria-pressed":s===e,onClick:()=>{c(e),g.close()},className:`flex h-[44px] items-center gap-[6px] whitespace-nowrap text-[12px] ${s===e?`text-primary shadow-[inset_0_-2px_var(--accent)]`:`text-secondary hover:text-primary`} focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`,children:[(0,k.jsx)(e===`media`?Se:we,{width:W.primary,height:W.primary}),e===`media`?`Media${A===void 0?``:` ${A}`}`:`Links${D?` ${D.links}`:``}`]},e)),s===`links`&&(0,k.jsx)(`button`,{type:`button`,"aria-label":`Search links`,"aria-expanded":l,onClick:()=>u(e=>!e),className:`ml-auto flex h-[44px] w-[36px] shrink-0 items-center justify-center rounded text-secondary hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:(0,k.jsx)(et,{width:W.primary,height:W.primary})}),(0,k.jsx)(`button`,{type:`button`,"aria-label":`Collapse media rail`,onClick:x,className:`ml-auto flex h-[44px] w-[36px] shrink-0 items-center justify-center rounded text-secondary hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:(0,k.jsx)(ot,{width:W.primary,height:W.primary})})]}),s===`links`&&l&&(0,k.jsx)(`div`,{className:`shrink-0 border-b border-border/60 px-3 py-2`,children:(0,k.jsx)(`input`,{ref:v,type:`search`,"aria-label":`Find link`,placeholder:`Find a link…`,value:d,maxLength:200,onChange:e=>f(e.target.value),className:`w-full rounded border border-border bg-surface px-2 py-1.5 text-[16px] text-primary placeholder:text-secondary focus:outline-none focus:ring-2 focus:ring-accent md:text-[12px]`})}),!!D?.omittedRecords&&(0,k.jsxs)(`p`,{"data-testid":`media-incomplete`,className:`px-3 py-2 text-xs text-muted`,children:[`Some media may be unavailable: `,D?.omittedRecords,` oversized transcript `,D?.omittedRecords===1?`entry was`:`entries were`,` skipped.`]}),!!(D?.omittedItems||h.pages[0]?.page.omittedItems)&&(0,k.jsxs)(`p`,{"data-testid":`media-omitted-items`,className:`px-3 py-2 text-xs text-muted`,children:[`Some items could not be listed because their details are too large (`,Math.max(D?.omittedItems??0,h.pages[0]?.page.omittedItems??0),`).`]}),s===`links`?(0,k.jsx)(Vq,{session:e,ready:t,search:p,onRefresh:()=>a(`idle`)},p):(0,k.jsxs)(k.Fragment,{children:[h.changed&&(0,k.jsx)(`button`,{type:`button`,onClick:E,disabled:!t||h.status===`loading`,className:`px-3 py-2 text-xs text-accent`,"aria-label":`Refresh media`,children:`Media changed · Refresh`}),h.hasEarlier&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>{h.canLoadEarlier?h.loadPrevious():E()},disabled:!t||h.status===`loading`,className:`px-3 py-1 text-xs text-accent`,children:h.canLoadEarlier?`Newer media`:`Back to newest media`}),(0,k.jsx)(`div`,{ref:C,"data-testid":`media-scroll`,tabIndex:0,role:`region`,"aria-label":`Session media, newest first`,onScroll:e=>{let t=e.currentTarget,n=t.scrollLeft>T.current;T.current=t.scrollLeft,n&&t.clientWidth>0&&t.scrollWidth-t.clientWidth-t.scrollLeft<128&&h.hasNext&&(h.status===`idle`||h.status===`streaming`)&&h.loadNext()},className:`scrollbar-none flex gap-2 overflow-x-auto px-3 py-2`,children:h.items.map((e,n)=>(0,k.jsx)(_J,{media:e,onOpen:g.open,previewEnabled:h.visible&&t,scrollRoot:C},`${e.url}:${n}`))}),!t&&(0,k.jsx)(`p`,{role:`status`,className:`px-3 pb-2 text-xs text-muted`,children:`Waiting for terminal recovery…`}),!h.error&&(0,k.jsx)(Oq,{discovery:h.discovery,kind:`media`,hasItems:h.items.length>0}),h.status===`loading`&&h.discovery.status===`ready`&&(0,k.jsx)(`p`,{role:`status`,className:`px-3 pb-2 text-xs text-muted`,children:`Loading media…`}),h.pages.length>0&&!h.items.length&&h.discovery.status===`ready`&&(0,k.jsx)(`p`,{className:`px-3 py-2 text-xs text-secondary`,children:`No media in this session yet.`}),h.error&&(0,k.jsxs)(`div`,{role:`alert`,className:`px-3 pb-2 text-xs text-muted`,children:[h.error,` `,(0,k.jsx)(`button`,{type:`button`,onClick:E,disabled:!t,className:`text-accent`,"aria-label":`Refresh media`,children:`Refresh`})]}),h.hasNext&&!h.error&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>void h.loadNext(),disabled:!t||h.status===`loading`,className:`px-3 pb-2 text-xs text-accent`,children:`Load older media`})]})]}):(0,k.jsxs)(`button`,{type:`button`,ref:b,"data-testid":`media-rail-pill`,"aria-expanded":!1,onClick:()=>{a(`idle`),r(!0)},"aria-label":`Open media${D&&!O?`: ${D.total} ${D.total===1?`item`:`items`}`:``}${i===`idle`?``:`, new media`}`,className:`absolute top-2 right-2 z-40 flex items-center gap-1.5 rounded-full border border-border bg-elevated/90 px-3 py-1.5 text-xs text-secondary shadow-lg backdrop-blur transition-colors hover:text-primary md:min-h-[30px] md:gap-[6px] md:px-[12px] md:py-[5px] md:text-[12px] md:leading-[18px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent ${i===`pulsing`?`media-attention`:``} ${Wt}`,children:[(0,k.jsx)(Se,{width:W.pill,height:W.pill,className:`md:h-[16px] md:w-[16px]`}),(0,k.jsx)(`span`,{className:`hidden md:inline`,children:`Media`}),(0,k.jsx)(`span`,{className:`tabular-nums`,children:O?`…`:A??`…`}),!!D?.links&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(we,{width:W.pill,height:W.pill}),(0,k.jsx)(`span`,{className:`tabular-nums`,children:D?.links})]}),i!==`idle`&&(0,k.jsx)(`span`,{"data-testid":`media-rail-new-dot`,"aria-hidden":`true`,className:`h-[6px] w-[6px] shrink-0 rounded-full bg-accent`})]}),g.selection&&(0,k.jsx)(lJ,{media:g.selection.media,previewSrc:g.selection.previewSrc,enabled:h.visible&&t,onClose:g.close,onPrevious:g.previous,onNext:g.next,canPrevious:g.canPrevious,canNext:g.canNext,navigating:g.navigating,navigationError:g.navigationError,onRetryNavigation:g.retry})]})}function xJ({text:e,sessionName:t,ready:n,atLimit:r,truncated:i,persistence:a,onSave:o,onDiscardOthers:s,onEdit:c,onSend:l,onDiscard:u}){return(0,k.jsxs)(`section`,{"aria-label":a===`sent-remove-failed`?`Saved copy of sent terminal text`:`Unsent terminal text`,className:`absolute bottom-2 left-2 right-2 z-50 mx-auto max-w-xl rounded-lg border border-border bg-elevated p-3 shadow-lg`,children:[(0,k.jsxs)(`label`,{htmlFor:`recovery-draft`,className:`mb-2 block text-sm text-primary`,children:[a===`sent-remove-failed`?`Saved copy of sent text for`:`Unsent text for`,` `,t]}),(0,k.jsx)(`textarea`,{id:`recovery-draft`,value:e,onChange:e=>c(e.target.value),rows:3,readOnly:a===`sent-remove-failed`,spellCheck:!1,className:`w-full resize-y rounded border border-border bg-base p-2 font-mono text-base text-primary focus:outline-accent`,"aria-describedby":`recovery-draft-hint`}),(0,k.jsx)(`p`,{id:`recovery-draft-hint`,className:`mt-1 text-xs text-secondary`,children:i?`Some text could not be saved: the draft limit was reached. Review before sending.`:r?`Draft limit reached. Edit or discard text to make room.`:a===`saved`?`Saved on this device until sent or discarded. Never sent automatically.`:`Never sent automatically.`}),(0,k.jsx)(`p`,{className:`mt-1 text-xs text-secondary`,children:`Terminal keys are paused until this draft is sent or discarded. You can keep editing here.`}),a!==`saved`&&(0,k.jsx)(`p`,{role:`status`,className:`mt-1 text-xs text-primary`,children:a===`sent-remove-failed`?`Text was sent, but its saved copy could not be removed. Discard the saved copy before continuing; it may return after reload.`:a===`conflict`?`Another tab changed this draft. Your version is kept here; save it explicitly to replace the saved version.`:a===`remove-failed`?`Could not remove the saved draft. It may return after reload; retry Discard text.`:`Local saving is unavailable. This version is only in this tab and may be lost on reload.`}),(0,k.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center justify-end gap-2`,children:[(a===`memory`||a===`conflict`)&&(0,k.jsx)(`button`,{type:`button`,onClick:o,className:`min-h-11 rounded px-3 text-sm text-secondary hover:bg-hover`,children:`Save this version`}),r&&s&&(0,k.jsx)(`button`,{type:`button`,onClick:s,className:`min-h-11 rounded px-3 text-sm text-secondary hover:bg-hover`,children:`Discard other terminal drafts`}),(0,k.jsx)(`button`,{type:`button`,onClick:u,className:`min-h-11 rounded px-3 text-sm text-secondary hover:bg-hover`,children:`Discard text`}),(0,k.jsx)(`button`,{type:`button`,onClick:l,disabled:!n||!e||a===`sent-remove-failed`,className:`min-h-11 rounded bg-accent px-3 text-sm text-white disabled:cursor-not-allowed disabled:opacity-50`,children:`Send text`})]})]})}var SJ=64*1024,CJ=`agentboard:recovery-draft:v1:`,wJ=()=>globalThis.localStorage;function TJ(){return globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random()}`}function EJ(e){return CJ+e}function DJ(e){if(!e||e.length>394240)return null;try{let t=JSON.parse(e);return t?.version!==1||typeof t.revision!=`string`||t.revision.length>100||!(t.parentRevision===null||typeof t.parentRevision==`string`&&t.parentRevision.length<=100)||typeof t.text!=`string`||t.text.length>65536||typeof t.truncated!=`boolean`||/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/.test(t.text)?null:t}catch{return null}}function OJ(e,t){let n=e.slice(0,Math.max(0,t));return/[\uD800-\uDBFF]$/.test(n)?n.slice(0,-1):n}var kJ=class{select(e){return this.preferred=e,this.read()}constructor(e=wJ){this.access=e,this.fallback=new Map,this.failures=new Map,this.lastWritten=new Map,this.lastRead={},this.overflow=!1,this.preferred=null}read(){let e;try{let t=this.access();e=Object.create(null),this.overflow=!1;let n=0,r=0,i=(t,i)=>{if(!(t.length>4096||!i)){if(r>=128||n+i.text.length>65536){this.overflow=!0;return}e[t]=i,n+=i.text.length,r++}};this.preferred&&i(this.preferred,DJ(t.getItem(EJ(this.preferred))));for(let e=0;e<t.length;e++){let n=t.key(e);if(!n?.startsWith(`agentboard:recovery-draft:v1:`))continue;let r=n.slice(29);r!==this.preferred&&i(r,DJ(t.getItem(n)))}this.lastRead=e;for(let[e,t]of this.failures)t===`memory`&&!this.fallback.has(e)&&this.failures.delete(e)}catch{e=this.lastRead;for(let t of Object.keys(e))this.failures.has(t)||this.failures.set(t,`memory`)}return{drafts:{...e,...Object.fromEntries(this.fallback)},failures:Object.fromEntries(this.failures),overflow:this.overflow}}storageChanged(e,t){if(e?.startsWith(`agentboard:recovery-draft:v1:`)){let n=e.slice(29),r=this.lastWritten.get(n),i=DJ(t);try{if(this.access().getItem(e)!==t)return this.read()}catch{return this.read()}r&&i&&i.revision!==r.revision&&i.parentRevision!==r.revision&&(this.fallback.set(n,r),this.failures.set(n,`conflict`)),this.lastWritten.delete(n)}else e===null&&this.lastWritten.clear();return this.read()}update(e,t,n,r=!1,i=!1){let a=this.read(),o=a.drafts[e],s=t(o?.text??``),c=Object.entries(a.drafts).filter(([t])=>t!==e),l=OJ(s,a.overflow?o?.text.length??0:c.length>=128?0:SJ-c.reduce((e,[,t])=>e+t.text.length,0)),u=this.fallback.has(e)?o?.parentRevision??null:o?.revision??null,d={version:1,revision:TJ(),parentRevision:u,text:l,truncated:l!==s||!r&&!!o?.truncated},f=r&&(o?.revision??null)!==n;if(!i&&(f||this.failures.get(e)===`conflict`))return this.fallback.set(e,d),this.failures.set(e,`conflict`),this.read();try{let t=this.access(),n=DJ(t.getItem(EJ(e)));if(!i&&(n?.revision??null)!==u)return this.fallback.set(e,d),this.failures.set(e,`conflict`),this.read();if(c.length>=128&&!o)throw Error(`Draft capacity reached`);d.parentRevision=n?.revision??null,!l&&!d.truncated?t.removeItem(EJ(e)):t.setItem(EJ(e),JSON.stringify(d)),this.fallback.delete(e),this.failures.delete(e),l||d.truncated?this.lastWritten.set(e,d):this.lastWritten.delete(e)}catch{this.fallback.set(e,d),this.failures.set(e,`memory`)}return this.read()}remove(e,t,n=!1){let r=this.read(),i=r.drafts[e];if(!i)return r;try{let a=this.access(),o=DJ(a.getItem(EJ(e))),s=this.fallback.has(e)?i.parentRevision:t;if(this.failures.get(e)!==`conflict`&&(o?.revision??null)!==s)return n||r.failures[e]===`sent-remove-failed`?(this.fallback.delete(e),this.failures.delete(e),this.lastWritten.delete(e),this.read()):(this.failures.set(e,`conflict`),this.read());this.failures.get(e)!==`conflict`&&a.removeItem(EJ(e)),this.fallback.delete(e),this.failures.delete(e),this.lastWritten.delete(e)}catch{this.fallback.set(e,{...i,parentRevision:this.fallback.has(e)?i.parentRevision:i.revision}),this.failures.set(e,n||r.failures[e]===`sent-remove-failed`?`sent-remove-failed`:`remove-failed`)}return this.read()}removeOthers(e){let t=this.read();try{let t=this.access(),n=[];for(let r=0;r<t.length;r++){let i=t.key(r);i?.startsWith(`agentboard:recovery-draft:v1:`)&&i!==EJ(e??``)&&n.push(i)}for(let e of n)t.removeItem(e),this.lastWritten.delete(e.slice(29));for(let t of this.fallback.keys())t!==e&&(this.fallback.delete(t),this.failures.delete(t),this.lastWritten.delete(t))}catch{for(let[n,r]of Object.entries(t.drafts))n!==e&&this.remove(n,r.revision)}return this.read()}};function AJ(e,t,n){if(/[\x00-\x07\x0b\x0c\x0e-\x1f\x80-\x9f]/.test(t)||n===`typing`&&t.includes(` `))return e;if(n===`paste`)return/[\x08\x7f]/.test(t)?e:e+t.replace(/\r\n?/g,`
301
301
  `);let r=e;for(let e of t.replace(/\r\n?/g,`
302
302
  `))r=e===`\b`||e===``?Array.from(r).slice(0,-1).join(``):r+e;return r}function jJ(e){let[t]=(0,y.useState)(()=>new kJ),[n,r]=(0,y.useState)(()=>t.select(e));(0,y.useEffect)(()=>{r(t.select(e))},[t,e]),(0,y.useEffect)(()=>{let e=e=>{(e.key===null||e.key.startsWith(`agentboard:recovery-draft:v1:`))&&r(t.storageChanged(e.key,e.newValue))};if(!(typeof window>`u`))return window.addEventListener(`storage`,e),r(t.read()),()=>window.removeEventListener(`storage`,e)},[t]);let i=e?n.drafts[e]:void 0,a=e?n.failures[e]??`saved`:`saved`,o=(0,y.useCallback)((n,o=!1,s=!1)=>{a!==`sent-remove-failed`&&e&&r(t.update(e,n,i?.revision??null,o,s))},[t,e,i?.revision,a]),s=(0,y.useCallback)((e,t)=>{o(n=>AJ(n,e,t))},[o]),c=(0,y.useCallback)(e=>o(()=>e.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/g,``).replace(/\r\n?/g,`
303
- `),!0),[o]),l=(0,y.useCallback)(()=>{e&&r(t.remove(e,i?.revision??null))},[t,e,i?.revision]),u=(0,y.useCallback)(()=>{e&&r(t.remove(e,i?.revision??null,!0))},[t,e,i?.revision]),d=(0,y.useCallback)(()=>r(t.removeOthers(e)),[t,e]),f=(0,y.useCallback)(()=>o(()=>i?.text??``,!1,!0),[o,i?.text]);return{text:i?.text??``,pending:!!i,truncated:!!i?.truncated,persistence:a,hasOtherDrafts:n.overflow||Object.keys(n.drafts).some(t=>t!==e),atLimit:n.overflow||Object.values(n.drafts).reduce((e,t)=>e+t.text.length,0)>=65535||Object.keys(n.drafts).length>=128,capture:s,edit:c,discard:l,discardOthers:d,save:f,sent:u}}function MJ(e){let t=e.agentboardTags?.serverPid,n=typeof t==`number`&&Number.isSafeInteger(t)&&t>0?t:null;return JSON.stringify([e.id,e.tmuxWindow,e.host??null,e.remote===!0,n,n===null?e.createdAt:null])}function NJ({isOpen:e,onClose:t,sessions:n,hibernatingSessions:r=[],historySessions:i=[],selectedSessionId:a,selectedHibernatingSessionId:o=null,onSelect:s,onSelectHibernating:c,onRename:l,onResume:u,onHibernate:d,onMoveToHistory:f,onNewSession:p,onOpenHistory:m,subscribe:h,loading:g,error:_}){let v=lf(),b=(0,y.useRef)(null),x=(0,y.useRef)(null);(0,y.useEffect)(()=>{if(!e||typeof document>`u`)return;let{body:t}=document,n=window.scrollY,r={position:t.style.position,top:t.style.top,width:t.style.width};return t.style.position=`fixed`,t.style.top=`-${n}px`,t.style.width=`100%`,()=>{t.style.position=r.position,t.style.top=r.top,t.style.width=r.width,window.scrollTo(0,n)}},[e]),(0,y.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&(e.preventDefault(),t())};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e,t]),(0,y.useEffect)(()=>{e?(x.current=document.activeElement,b.current?.focus({preventScroll:!0})):x.current&&=(x.current.focus({preventScroll:!0}),null)},[e]),(0,y.useEffect)(()=>{if(!e)return;let n=b.current;if(!n)return;let r=0,i=0,a=e=>{let t=e.touches[0];r=t.clientX,i=t.clientY},o=e=>{let n=e.changedTouches[0],a=r-n.clientX,o=Math.abs(n.clientY-i);a>=50&&a>o*1.5&&(`vibrate`in navigator&&navigator.vibrate(10),t())};return n.addEventListener(`touchstart`,a,{passive:!0}),n.addEventListener(`touchend`,o,{passive:!0}),()=>{n.removeEventListener(`touchstart`,a),n.removeEventListener(`touchend`,o)}},[e,t]);let S=e=>{s(e),t()},C=e=>{c?.(e),t()},w=m?()=>{t(),m()}:void 0,T=v?{transition:`none`}:void 0;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`session-drawer-backdrop ${e?`open`:``}`,style:T,onClick:t,"aria-hidden":`true`}),(0,k.jsxs)(`div`,{ref:b,className:`session-drawer ${e?`open`:``}`,style:T,role:`dialog`,"aria-modal":`true`,"aria-label":`Session list`,tabIndex:-1,children:[(0,k.jsx)(gk,{sessions:n,hibernatingSessions:r,historySessions:i,selectedSessionId:a,selectedHibernatingSessionId:o,onSelect:S,onSelectHibernating:C,onRename:l,onResume:u,onHibernate:d,onMoveToHistory:f,scrollSelectionActive:e,onNewSession:()=>{p()!==!1&&t()},loading:g,error:_,notice:w&&(0,k.jsx)(N,{onOpen:w,subscribe:h})}),(0,k.jsxs)(`div`,{className:`flex shrink-0 gap-2 border-t border-border px-2 pt-2`,style:{paddingBottom:`max(0.5rem, env(safe-area-inset-bottom, 0.5rem))`},children:[(0,k.jsx)(`button`,{onClick:()=>{p()!==!1&&t()},className:`btn btn-primary min-h-[44px] flex-1 py-2 text-sm`,children:`New Session`}),w&&(0,k.jsx)(`button`,{type:`button`,onClick:w,className:Vt(`neutral`),title:`Session recovery`,"aria-label":`Session recovery`,children:(0,k.jsx)(ue,{width:W.primary,height:W.primary})})]})]})]})}var PJ={working:`bg-green-500/35 text-white`,waiting:`bg-blue-500/35 text-white`,permission:`bg-amber-500/35 text-white`,unknown:`bg-gray-500/35 text-white`},FJ={working:`bg-working text-white`,waiting:`bg-waiting text-white`,permission:`bg-approval text-white`,unknown:`bg-muted text-white`};function IJ(){`vibrate`in navigator&&navigator.vibrate(10)}function LJ({session:e,sessions:t,drawerSessions:n,hibernatingSession:r=null,hibernatingSessions:i=[],historySessions:a=[],connectionStatus:o,connectionEpoch:s=0,sendMessage:c,subscribe:l,onClose:u,onSelectSession:d,onSelectHibernatingSession:f,onNewSession:p,onKillSession:m,onRenameSession:h,onDuplicateSession:g,onResumeSession:_,onHibernateSession:v,onMoveToHistory:b,onOpenSettings:x,onOpenHistory:S,loading:C=!1,error:w=null}){let T=vK[gK()],E=U(e=>e.useWebGL),D=U(e=>e.fontSize),O=U(e=>e.lineHeight),A=U(e=>e.letterSpacing),j=xt(U(e=>e.fontOption),U(e=>e.customFontFamily)),M=Pt(Mt(U(e=>e.shortcutModifier))),N=kt(),P=Qh(),[F,ee]=(0,y.useState)(!1),[te,R]=(0,y.useState)(!1),[z,ne]=(0,y.useState)(!1),[B,re]=(0,y.useState)(!1),[V,ie]=(0,y.useState)(!1),[H,ae]=(0,y.useState)(!1),[oe,se]=(0,y.useState)(``),le=(0,y.useRef)(!1),ue=(0,y.useRef)(null),de=(0,y.useRef)(null),fe=(0,y.useRef)(null);Zh(fe,e?.id??null);let pe=(0,y.useRef)(null),me=(0,y.useRef)(null),he=(0,y.useRef)(()=>{}),_e=(0,y.useRef)(()=>{}),ye=e?.remote===!0,be=Gh(e=>e.remoteAllowControl),xe=Gh(e=>e.remoteAllowAttach),Se=Gh(e=>e.preferWindowName),Ce=ye&&!xe,we=!ye||be&&e?.source===`managed`,Te=r?r.displayName||Nh(r.projectPath)||r.sessionId.slice(0,8):``,Ee=r?Nh(r.projectPath):``,De=r?Mh(r.lastActivityAt):``,Oe=!!e&&!!v&&e.source===`managed`&&!e.remote&&!!e.agentSessionId?.trim(),ke=(0,y.useMemo)(()=>{let e=new Set;for(let n of t)n.host?.trim()&&e.add(n.host.trim());for(let t of i)t.host?.trim()&&e.add(t.host.trim());return e.size>1},[t,i]),Ae=e&&!Ce?MJ(e):null,je=jJ(Ae),{containerRef:Me,terminalRef:Ne,inTmuxCopyModeRef:Pe,isTmuxCopyMode:Fe,appMouseRef:Ie,setTmuxCopyMode:Le,isSwitching:Re,isInputReady:ze,pendingClipboardOffer:Ve,copyPendingClipboardOffer:He,dismissPendingClipboardOffer:Ue}=cK({sessionId:e?.id??null,tmuxTarget:e?.tmuxWindow??null,agentType:e?.agentType,onPasteFiles:e=>he.current(e),onPasteError:e=>_e.current(e),allowAttach:!Ce,deferInput:je.pending,onDeferredInput:je.capture,connectionStatus:o,connectionEpoch:s,sendMessage:c,subscribe:l,theme:T,fontSize:D,lineHeight:O,letterSpacing:A,fontFamily:j,useWebGL:E,onScrollChange:e=>{ee(!e)}}),Ge=(0,y.useCallback)(()=>{!e||Ce||(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1),Ne.current?.scrollToBottom())},[e,Ce,c,Le,Ne]),Ke=(0,y.useCallback)(()=>{ie(!0),IJ()},[]),qe=dK({enabled:P||N,isOpen:V,onOpen:Ke});(0,y.useEffect)(()=>{!P&&!N&&V&&ie(!1)},[V,P,N]),lK(de,B,(0,y.useCallback)(()=>re(!1),[])),(0,y.useEffect)(()=>{H&&pe.current&&(pe.current.focus(),pe.current.select())},[H]),(0,y.useEffect)(()=>{z&&me.current&&me.current.focus()},[z]),uK(z,(0,y.useCallback)(()=>ne(!1),[]));let Je=()=>{e&&(m(e.id,`terminal_confirm_modal`),ne(!1))},Ye=()=>{!e||!Oe||(v?.(e.agentSessionId.trim()),re(!1))},Xe=()=>{e&&(se(e.agentSessionName||e.name),ae(!0),re(!1))},Ze=()=>{if(!e)return;let t=oe.trim(),n=e.agentSessionName||e.name;t&&t!==n&&h(e.id,t),ae(!1)},$e=e=>{e.key===`Enter`?(e.preventDefault(),Ze()):e.key===`Escape`&&(e.preventDefault(),ae(!1))};(0,y.useEffect)(()=>{if(!N||!e){R(!1);return}let t=Me.current;if(!t)return;let n=e=>{let n=t.querySelector(`.xterm-accessibility-tree`);if(!n)return!1;let r=e.anchorNode,i=e.focusNode;return!!r&&n.contains(r)||!!i&&n.contains(i)},r=()=>{let e=t.querySelector(`.xterm-accessibility`),n=t.querySelector(`.xterm-accessibility-tree`);!e||!n||(e.style.setProperty(`opacity`,`0`),n.style.setProperty(`opacity`,`0`),e.style.setProperty(`-webkit-user-select`,`none`),e.style.setProperty(`user-select`,`none`),n.style.setProperty(`-webkit-user-select`,`none`),n.style.setProperty(`user-select`,`none`),e.offsetHeight,requestAnimationFrame(()=>{e.style.removeProperty(`opacity`),n.style.removeProperty(`opacity`),e.style.removeProperty(`-webkit-user-select`),e.style.removeProperty(`user-select`),n.style.removeProperty(`-webkit-user-select`),n.style.removeProperty(`user-select`)}))},i=()=>{le.current=!1;let e=window.getSelection();try{e?.removeAllRanges()}catch{}Ne.current?.clearSelection(),r(),R(!1)};ue.current=i;let a=()=>{let e=window.getSelection();if(!e||e.rangeCount===0||e.isCollapsed){le.current?i():R(e=>e&&!1);return}let t=n(e);if(!t&&le.current){i();return}le.current=t;let r=t;R(e=>e===r?e:r)},o=()=>{let e=window.getSelection();!e||e.isCollapsed||n(e)&&setTimeout(i,0)},s=null,c=!1,l=e=>{if(e.touches.length===1){let t=e.touches[0];s={x:t.clientX,y:t.clientY},c=!1}},u=e=>{if(c||!s||e.touches.length!==1)return;let t=e.touches[0],n=Math.abs(t.clientX-s.x),r=Math.abs(t.clientY-s.y);(n>10||r>10)&&(c=!0)},d=e=>{let r=c;s=null,c=!1;let a=window.getSelection();if(!a||a.rangeCount===0||a.isCollapsed){R(!1);return}let o=t.querySelector(`.xterm-accessibility-tree`);if(!o)return;if(!n(a)){R(!1);return}if(r)return;let l=e.target,u=l?o.contains(l):!1,d=!1;if(u&&l)try{d=a.containsNode(l,!0)}catch{d=!1}(!u||!d)&&setTimeout(i,0)};return document.addEventListener(`selectionchange`,a),document.addEventListener(`copy`,o),document.addEventListener(`touchstart`,l,{passive:!0}),document.addEventListener(`touchmove`,u,{passive:!0}),document.addEventListener(`touchend`,d,{passive:!0}),()=>{document.removeEventListener(`selectionchange`,a),document.removeEventListener(`copy`,o),document.removeEventListener(`touchstart`,l),document.removeEventListener(`touchmove`,u),document.removeEventListener(`touchend`,d),ue.current=null,le.current=!1}},[Me,N,e?.id]),(0,y.useEffect)(()=>{if(!N)return;let t=Me.current;if(!t)return;let n=null,r=()=>{let e=Ne.current,r=t.querySelector(`.xterm`);if(!e||!r)return;let i=r.querySelector(`.xterm-screen`),a=r.querySelector(`.xterm-accessibility`),o=r.querySelector(`.xterm-accessibility-tree`);if(!i||!a||!o)return;n||=EK(o);let s=r.getBoundingClientRect(),c=i.getBoundingClientRect(),l=c.left-s.left,u=c.top-s.top;Object.assign(a.style,{left:`${l}px`,top:`${u}px`,right:`auto`,bottom:`auto`,width:`${c.width}px`,height:`${c.height}px`});let d=c.width/e.cols,f=c.height/e.rows,p=document.createElement(`span`);p.textContent=`0`.repeat(200),p.style.cssText=`position:absolute;visibility:hidden;white-space:pre;pointer-events:none;letter-spacing:0px`,o.appendChild(p);let m=p.getBoundingClientRect().width/200;p.remove();let h=Math.max(-2,Math.min(2,d-m));t.style.setProperty(`--xterm-font-size`,`${e.options.fontSize}px`),t.style.setProperty(`--xterm-cell-height`,`${f}px`),t.style.setProperty(`--xterm-a11y-letter-spacing`,`${h}px`)},i=performance.now();r();let a=Math.round(performance.now()-i);a>10&&X(`switch_a11y_overlay`,{sessionId:e?.id,a11yMs:a});let o=window.requestAnimationFrame(r),s=window.setTimeout(r,100),c=()=>window.requestAnimationFrame(r);return window.visualViewport?.addEventListener(`resize`,c),window.addEventListener(`orientationchange`,c),()=>{window.cancelAnimationFrame(o),window.clearTimeout(s),window.visualViewport?.removeEventListener(`resize`,c),window.removeEventListener(`orientationchange`,c),n?.()}},[Me,D,N,e?.id,Ne]);let et=(0,y.useRef)(te);(0,y.useEffect)(()=>{et.current=te},[te]);let tt=(0,y.useRef)(e?.id);(0,y.useEffect)(()=>{tt.current=e?.id},[e?.id]);let rt=(0,y.useRef)(c);(0,y.useEffect)(()=>{rt.current=c},[c]);let it=(0,y.useRef)(!1),at=(0,y.useRef)(`idle`);(0,y.useEffect)(()=>{if(!N)return;let e=Me.current;if(!e)return;let t=null,n=()=>e.querySelector(`.xterm-helper-textarea`),r=e=>{e.target===n()&&(at.current=`focused`)},i=e=>{e.target===n()&&(t!==null&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null;let e=n(),r=typeof document.hasFocus!=`function`||document.hasFocus();document.activeElement!==e&&document.visibilityState!==`hidden`&&r&&(at.current=`idle`)},0))},a=()=>{let e=n();(document.activeElement===e||at.current===`focused`)&&(at.current=`interrupted`)},o=()=>{at.current===`interrupted`&&(at.current=`armed`)},s=()=>{document.visibilityState===`hidden`?a():o()},c=e=>{e.persisted&&o()};return document.addEventListener(`focusin`,r),document.addEventListener(`focusout`,i),document.addEventListener(`visibilitychange`,s),window.addEventListener(`blur`,a),window.addEventListener(`focus`,o),window.addEventListener(`pageshow`,c),()=>{document.removeEventListener(`focusin`,r),document.removeEventListener(`focusout`,i),document.removeEventListener(`visibilitychange`,s),window.removeEventListener(`blur`,a),window.removeEventListener(`focus`,o),window.removeEventListener(`pageshow`,c),t!==null&&window.clearTimeout(t),at.current=`idle`}},[Me,N,e?.id]),(0,y.useEffect)(()=>{let t=Me.current;if(!t||!e?.id||!P&&!N)return;let n={x:0,y:0},r=0,i=!1,a=null,o=0,s=0,c=0,l=Math.round(D*O),u=null,d=null,f=!1,p=null,m=()=>{let e=window.getComputedStyle(t).getPropertyValue(`--xterm-cell-height`).trim(),n=Number.parseFloat(e);return!Number.isNaN(n)&&n>0?n:Math.round(D*O)},h=()=>t.querySelector(`.xterm-helper-textarea`),g=e=>{let n=Ne.current;if(!n)return null;let r=(t.querySelector(`.xterm`)?.querySelector(`.xterm-screen`))?.getBoundingClientRect();if(!r||r.width<=0||r.height<=0)return null;let i=r.width/n.cols,a=r.height/n.rows;return i<=0||a<=0?null:{col:Math.min(n.cols,Math.max(1,Math.floor((e.clientX-r.left)/i)+1)),row:Math.min(n.rows,Math.max(1,Math.floor((e.clientY-r.top)/a)+1))}},_=()=>{let e=h();e&&document.activeElement!==e&&(e.disabled=!0)},v=()=>{let e=h();e&&(e.disabled=!1)};_();let y=()=>{if(Pe.current)return;let e=h();e&&(e.disabled=!1,e.focus())},b=()=>{u!==null&&(cancelAnimationFrame(u),u=null),s=0},x=()=>{d!==null&&(clearTimeout(d),d=null)},S=(e,t,n)=>{let r=tt.current;return r?(rt.current({type:`terminal-input`,sessionId:r,data:`\x1b[<${e};${t.col};${t.row}${n}`}),!0):!1},C=e=>{let t=tt.current;if(!t||e===0)return!1;let n=Ne.current,r=n?.cols??80,i=n?.rows??24,a=Math.floor(r/2),o=Math.floor(i/2),s=e>0?65:64,c=Math.abs(e),l=e<0;for(let e=0;e<c;e++)rt.current({type:`terminal-input`,sessionId:t,data:`\x1b[<${s};${a};${o}M`});return l&&!Ie.current&&Le(!0),l},w=e=>{let t=tt.current,n=g(e);return!t||!n?!1:(rt.current({type:`terminal-input`,sessionId:t,data:`\x1b[<0;${n.col};${n.row}M\x1b[<0;${n.col};${n.row}m`}),!0)},T=e=>{if(!N||!Ie.current)return!1;let t=g(e);return t?(f=!0,p=t,_(),IJ(),S(0,t,`M`)):!1},E=e=>{let t=g(e);return t?p&&p.col===t.col&&p.row===t.row?!0:(p=t,S(32,t,`M`)):!1},k=e=>{let t=e?g(e):p;return f=!1,p=null,t?S(0,t,`m`):!1},A=()=>{x(),f=!1,p=null,a=null,s=0,c=0},j=()=>{if(!N)return!1;let e=window.getSelection();if(!e||e.isCollapsed)return!1;let n=t.querySelector(`.xterm-accessibility-tree`);if(!n)return!1;let r=e.anchorNode,i=e.focusNode;return!!r&&n.contains(r)||!!i&&n.contains(i)},M=()=>{!N||!le.current||j()||ue.current?.()},F=e=>{if(b(),M(),qe.current||V){A();return}if(et.current){A();return}if(at.current===`armed`&&!Pe.current&&(at.current=`idle`,y()),e.touches.length===1){let t=e.touches[0];if(n={x:t.clientX,y:t.clientY},r=performance.now(),i=!1,a=t.clientY,o=r,s=0,c=0,l=m(),v(),N&&Ie.current){let e={clientX:t.clientX,clientY:t.clientY};d=setTimeout(()=>{d=null,!(i||qe.current||V)&&(et.current||j()||T(e))},350)}}},ee=e=>{if(e.touches.length!==1||a===null)return;if(M(),qe.current||V){A();return}let t=performance.now(),r=e.touches[0],u=r.clientX,d=r.clientY;if(f){e.preventDefault(),e.stopPropagation(),E(r),a=d,o=t;return}if(et.current||j()){A();return}e.preventDefault(),e.stopPropagation();let p=Math.abs(u-n.x),m=Math.abs(d-n.y);!i&&(p>6||m>6)&&(i=!0,x(),_());let h=a-d,g=t-o;if(a=d,o=t,g>0){let e=h/g;s=s*.7+e*.3}c+=h;let v=Math.max(6,l*.6),y=Math.trunc(c/v);y!==0&&(C(y),c-=y*v)},I=e=>{let t=s,n=performance.now()-r;if(x(),f){k(e.changedTouches[0]),A(),e.preventDefault(),e.stopPropagation();return}if(A(),qe.current||V)return;let a=j();if(et.current&&!a&&ue.current?.(),et.current||a){Pe.current&&(it.current=!0);return}if(!i){if(N&&n>=350)return;if(Ie.current){let t=e.changedTouches[0];if(t&&w(t)){y(),e.preventDefault(),e.stopPropagation();return}}if(Pe.current){e.preventDefault(),e.stopPropagation(),it.current=!0;return}y();return}if(Math.abs(t)>.12){let e=t,n=performance.now(),r=()=>{let t=performance.now(),i=t-n;n=t;let a=e*i;c+=a;let o=Math.max(6,l*.6),s=Math.trunc(c/o);s!==0&&(C(s),c-=s*o),e*=.95**(i/16.67),u=Math.abs(e)>.02?requestAnimationFrame(r):null};u=requestAnimationFrame(r)}},te=e=>{it.current&&=(e.preventDefault(),e.stopPropagation(),!1)},L={passive:!0,capture:!0},R={passive:!1,capture:!0},z={passive:!1,capture:!0},ne={capture:!0};return t.addEventListener(`touchstart`,F,L),t.addEventListener(`touchmove`,ee,R),t.addEventListener(`touchend`,I,z),t.addEventListener(`mousedown`,te,ne),()=>{t.removeEventListener(`touchstart`,F,L),t.removeEventListener(`touchmove`,ee,R),t.removeEventListener(`touchend`,I,z),t.removeEventListener(`mousedown`,te,ne),x();let e=h();e&&(e.disabled=!1)}},[e?.id,Me,Ne,N,P,V,D,O]);let ct=(0,y.useCallback)(t=>{if(!(!e||Ce)){if(je.pending||!ze){je.capture(t,`typing`);return}c({type:`terminal-input`,sessionId:e.id,data:t})===!1&&je.capture(t,`typing`)}},[e,Ce,ze,c,je]),lt=(0,y.useCallback)(t=>{if(!(!e||Ce)){if(je.pending||!ze){je.capture(t,`paste`);return}Pe.current&&(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1)),c({type:`terminal-paste`,sessionId:e.id,data:t})===!1&&je.capture(t,`paste`)}},[e,Ce,ze,c,Pe,Le,je]),ut=(0,y.useCallback)(t=>{!e||Ce||!ze||je.pending||(Pe.current&&(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1)),c({type:`terminal-input`,sessionId:e.id,data:t}))},[e,Ce,ze,c,Pe,Le,je.pending]),dt=(0,y.useCallback)(()=>{let e=Me.current;if(!e)return;let t=e.querySelector(`.xterm-helper-textarea`);t&&(t.removeAttribute(`disabled`),t.focus())},[Me]),ft=mq({sessionId:e?.id??null,disabled:o!==`connected`||Ce||!ze||je.pending,fileUploadsAllowed:!ye,agentType:e?.agentType,onPasteText:lt,onPasteImage:ut,onRefocus:dt});he.current=ft.paste,_e.current=ft.fail;let pt=()=>{!e||Ce||!ze||!je.text||je.persistence===`sent-remove-failed`||(Pe.current&&(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1)),c({type:`terminal-paste`,sessionId:e.id,data:je.text})!==!1&&(je.sent(),dt()))},mt=(0,y.useCallback)(()=>{if(!e||Ce)return;ze&&Pe.current&&(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1));let t=Me.current;if(!t)return;let n=t.querySelector(`.xterm-helper-textarea`);n&&(n.removeAttribute(`disabled`),n.focus())},[e,Ce,ze,c,Me,Pe,Le]),ht=(0,y.useCallback)(()=>{if(typeof document>`u`)return!1;let e=Me.current;if(!e)return!1;let t=e.querySelector(`.xterm-helper-textarea`);if(t&&document.activeElement===t)return!0;let n=document.activeElement,r=typeof HTMLInputElement<`u`&&n instanceof HTMLInputElement,i=typeof HTMLTextAreaElement<`u`&&n instanceof HTMLTextAreaElement;return r||i||n&&n.isContentEditable?!1:!!document.documentElement?.classList?.contains(`keyboard-visible`)},[Me]);(0,y.useEffect)(()=>{if(!N)return;let e=Me.current;if(!e)return;let t=e.querySelector(`.xterm-accessibility`),n=e.querySelector(`.xterm-accessibility-tree`);if(!t||!n)return;let r=()=>{let r=e.querySelector(`.xterm-helper-textarea`);r&&document.activeElement===r&&!et.current?(t.style.pointerEvents=`none`,n.style.pointerEvents=`none`):(t.style.removeProperty(`pointer-events`),n.style.removeProperty(`pointer-events`))};return r(),document.addEventListener(`focusin`,r),document.addEventListener(`focusout`,r),()=>{document.removeEventListener(`focusin`,r),document.removeEventListener(`focusout`,r)}},[Me,N,te]),(0,y.useEffect)(()=>{let e=Me.current;e&&(e.inert=!!r)},[Me,r]);let gt=(0,y.useMemo)(()=>{if(!Se||t.length===0)return!1;let e=t.map(e=>e.name.trim()).filter(Boolean);return e.length===t.length&&new Set(e).size===t.length},[Se,t]);return(0,k.jsxs)(`section`,{className:`flex flex-1 flex-col bg-base terminal-mobile-overlay md:relative md:inset-auto ${N?`ios-native-term-selection`:``}`,"data-testid":`terminal-panel`,onDragOver:t=>{Array.from(t.dataTransfer.types).includes(`Files`)&&(t.preventDefault(),t.dataTransfer.dropEffect=e&&!Ce&&ze&&!ye&&o===`connected`?`copy`:`none`)},onDrop:t=>{if(!Array.from(t.dataTransfer.types).includes(`Files`)||(t.preventDefault(),t.stopPropagation(),!e||Ce||!ze||ye||o!==`connected`))return;let n=DG(t.dataTransfer);n.length&&ft.paste({text:``,files:n})},children:[(0,k.jsxs)(`div`,{className:`flex min-h-[52px] shrink-0 items-center justify-between border-b border-border bg-elevated px-[6px] md:hidden`,children:[(0,k.jsxs)(`div`,{className:`flex min-w-0 items-center gap-[7px]`,children:[(0,k.jsx)(`button`,{onClick:()=>ie(!0),className:Vt(`neutral`),"aria-label":`Open session menu`,children:(0,k.jsx)(Be,{width:W.primary,height:W.primary})}),e?(0,k.jsxs)(`div`,{className:`flex min-w-[72px] flex-col items-start gap-px leading-none`,children:[H?(0,k.jsx)(`input`,{ref:pe,type:`text`,value:oe,onChange:e=>se(e.target.value),onBlur:Ze,onKeyDown:$e,className:`w-full max-w-[112px] rounded border border-border bg-surface px-2 py-0.5 text-sm font-medium text-primary outline-none focus:border-accent`}):(0,k.jsx)(`span`,{className:`max-w-[112px] truncate text-sm font-medium text-primary`,children:e.agentSessionName||e.name}),(0,k.jsx)(`span`,{className:`shrink-0 text-[10px] ${o===`connected`?OK[e.status]:`text-approval`}`,children:o===`connected`?DK[e.status]:o})]}):r?(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-col items-start gap-px leading-none`,children:[(0,k.jsx)(`span`,{className:`max-w-[112px] truncate text-sm font-medium text-primary`,children:Te}),(0,k.jsx)(`span`,{className:`text-[10px] font-medium text-blue-400`,children:`Hibernating`})]}):(0,k.jsx)(`span`,{className:`text-sm font-medium text-primary`,children:`Sessions`})]}),(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-[4px]`,children:[(0,k.jsx)(`button`,{onClick:p,className:Vt(`primary`),title:`New session (${M}N)`,"aria-label":`New session`,children:(0,k.jsx)(Qe,{width:W.primary,height:W.primary})}),e&&we&&(0,k.jsx)(`button`,{disabled:Re,onClick:()=>ne(!0),className:Vt(`danger`),title:`Kill session (${M}X)`,"aria-label":`Kill session`,children:(0,k.jsx)(ot,{width:W.primary,height:W.primary})}),Oe&&(0,k.jsx)(`button`,{onClick:Ye,className:`${Vt(`neutral`,`hidden`)} min-[360px]:flex`,title:`Hibernate session`,"aria-label":`Hibernate session`,children:(0,k.jsx)(We,{width:W.primary,height:W.primary})}),r&&(0,k.jsx)(`button`,{onClick:()=>_(r.sessionId),className:`btn btn-primary h-[44px] px-3 text-xs`,children:`Wake`}),e&&(0,k.jsxs)(`div`,{className:`relative`,ref:de,children:[(0,k.jsx)(`button`,{onClick:()=>re(!B),className:Vt(`neutral`),title:`More options`,"aria-label":`More options`,children:(0,k.jsx)(ge,{width:W.primary,height:W.primary})}),B&&(0,k.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 z-20 min-w-[140px] rounded-md border border-border bg-elevated shadow-lg py-1`,children:[we&&(0,k.jsxs)(`button`,{onClick:Xe,className:`flex min-h-[44px] w-full items-center gap-2 px-3 py-2 text-left text-sm text-secondary hover:bg-hover hover:text-primary`,children:[(0,k.jsx)(ve,{width:W.default,height:W.default}),`Rename`]}),Oe&&(0,k.jsxs)(`button`,{onClick:Ye,className:`flex min-h-[44px] w-full items-center gap-2 px-3 py-2 text-left text-sm text-secondary hover:bg-hover hover:text-primary`,children:[(0,k.jsx)(We,{width:W.default,height:W.default}),`Hibernate`]}),(0,k.jsxs)(`button`,{onClick:()=>{x(),re(!1)},className:`flex min-h-[44px] w-full items-center gap-2 px-3 py-2 text-left text-sm text-secondary hover:bg-hover hover:text-primary`,children:[(0,k.jsx)(nt,{width:W.default,height:W.default}),`Settings`]})]})]})]})]}),e&&t.length>1&&(0,k.jsxs)(`div`,{className:`relative overflow-hidden bg-elevated border-b border-border md:hidden`,children:[(0,k.jsx)(`div`,{className:`absolute right-0 top-0 bottom-0 w-4 bg-gradient-to-l from-elevated to-transparent z-10 pointer-events-none`}),(0,k.jsx)(`div`,{ref:fe,className:`flex items-center gap-[6px] overflow-x-auto scroll-pe-4 px-[8px] py-[5px] scrollbar-none snap-x snap-mandatory`,style:{WebkitOverflowScrolling:`touch`},children:t.map((t,n)=>{let r=t.id===e.id,i=gt?t.name.trim():n+1;return(0,k.jsx)(`button`,{type:`button`,"data-session-id":t.id,className:`
303
+ `),!0),[o]),l=(0,y.useCallback)(()=>{e&&r(t.remove(e,i?.revision??null))},[t,e,i?.revision]),u=(0,y.useCallback)(()=>{e&&r(t.remove(e,i?.revision??null,!0))},[t,e,i?.revision]),d=(0,y.useCallback)(()=>r(t.removeOthers(e)),[t,e]),f=(0,y.useCallback)(()=>o(()=>i?.text??``,!1,!0),[o,i?.text]);return{text:i?.text??``,pending:!!i,truncated:!!i?.truncated,persistence:a,hasOtherDrafts:n.overflow||Object.keys(n.drafts).some(t=>t!==e),atLimit:n.overflow||Object.values(n.drafts).reduce((e,t)=>e+t.text.length,0)>=65535||Object.keys(n.drafts).length>=128,capture:s,edit:c,discard:l,discardOthers:d,save:f,sent:u}}function MJ(e){let t=e.agentboardTags?.serverPid,n=typeof t==`number`&&Number.isSafeInteger(t)&&t>0?t:null;return JSON.stringify([e.id,e.tmuxWindow,e.host??null,e.remote===!0,n,n===null?e.createdAt:null])}function NJ({isOpen:e,onClose:t,sessions:n,hibernatingSessions:r=[],historySessions:i=[],selectedSessionId:a,selectedHibernatingSessionId:o=null,onSelect:s,onSelectHibernating:c,onRename:l,onResume:u,onHibernate:d,onMoveToHistory:f,onNewSession:p,onOpenHistory:m,subscribe:h,loading:g,error:_}){let v=lf(),b=(0,y.useRef)(null),x=(0,y.useRef)(null);(0,y.useEffect)(()=>{if(!e||typeof document>`u`)return;let{body:t}=document,n=window.scrollY,r={position:t.style.position,top:t.style.top,width:t.style.width};return t.style.position=`fixed`,t.style.top=`-${n}px`,t.style.width=`100%`,()=>{t.style.position=r.position,t.style.top=r.top,t.style.width=r.width,window.scrollTo(0,n)}},[e]),(0,y.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&(e.preventDefault(),t())};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e,t]),(0,y.useEffect)(()=>{e?(x.current=document.activeElement,b.current?.focus({preventScroll:!0})):x.current&&=(x.current.focus({preventScroll:!0}),null)},[e]),(0,y.useEffect)(()=>{if(!e)return;let n=b.current;if(!n)return;let r=0,i=0,a=e=>{let t=e.touches[0];r=t.clientX,i=t.clientY},o=e=>{let n=e.changedTouches[0],a=r-n.clientX,o=Math.abs(n.clientY-i);a>=50&&a>o*1.5&&(`vibrate`in navigator&&navigator.vibrate(10),t())};return n.addEventListener(`touchstart`,a,{passive:!0}),n.addEventListener(`touchend`,o,{passive:!0}),()=>{n.removeEventListener(`touchstart`,a),n.removeEventListener(`touchend`,o)}},[e,t]);let S=e=>{s(e),t()},C=e=>{c?.(e),t()},w=m?()=>{t(),m()}:void 0,T=v?{transition:`none`}:void 0;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`session-drawer-backdrop ${e?`open`:``}`,style:T,onClick:t,"aria-hidden":`true`}),(0,k.jsxs)(`div`,{ref:b,className:`session-drawer ${e?`open`:``}`,style:T,role:`dialog`,"aria-modal":`true`,"aria-label":`Session list`,tabIndex:-1,children:[(0,k.jsx)(gk,{sessions:n,hibernatingSessions:r,historySessions:i,selectedSessionId:a,selectedHibernatingSessionId:o,onSelect:S,onSelectHibernating:C,onRename:l,onResume:u,onHibernate:d,onMoveToHistory:f,scrollSelectionActive:e,onNewSession:()=>{p()!==!1&&t()},loading:g,error:_,notice:w&&(0,k.jsx)(N,{onOpen:w,subscribe:h})}),(0,k.jsxs)(`div`,{className:`flex shrink-0 gap-2 border-t border-border px-2 pt-2`,style:{paddingBottom:`max(0.5rem, env(safe-area-inset-bottom, 0.5rem))`},children:[(0,k.jsx)(`button`,{onClick:()=>{p()!==!1&&t()},className:`btn btn-primary min-h-[44px] flex-1 py-2 text-sm`,children:`New Session`}),w&&(0,k.jsx)(`button`,{type:`button`,onClick:w,className:Vt(`neutral`),title:`Session recovery`,"aria-label":`Session recovery`,children:(0,k.jsx)(ue,{width:W.primary,height:W.primary})})]})]})]})}var PJ={working:`bg-green-500/35 text-white`,waiting:`bg-blue-500/35 text-white`,permission:`bg-amber-500/35 text-white`,unknown:`bg-gray-500/35 text-white`},FJ={working:`bg-working text-white`,waiting:`bg-waiting text-white`,permission:`bg-approval text-white`,unknown:`bg-muted text-white`};function IJ(){`vibrate`in navigator&&navigator.vibrate(10)}function LJ({session:e,sessions:t,drawerSessions:n,hibernatingSession:r=null,hibernatingSessions:i=[],historySessions:a=[],connectionStatus:o,connectionEpoch:s=0,sendMessage:c,subscribe:l,onClose:u,onSelectSession:d,onSelectHibernatingSession:f,onNewSession:p,onKillSession:m,onRenameSession:h,onDuplicateSession:g,onResumeSession:_,onHibernateSession:v,onMoveToHistory:b,onOpenSettings:x,onOpenHistory:S,loading:C=!1,error:w=null}){let T=vK[gK()],E=U(e=>e.useWebGL),D=U(e=>e.fontSize),O=U(e=>e.lineHeight),A=U(e=>e.letterSpacing),j=xt(U(e=>e.fontOption),U(e=>e.customFontFamily)),M=Pt(Mt(U(e=>e.shortcutModifier))),N=kt(),P=Qh(),[F,ee]=(0,y.useState)(!1),[te,R]=(0,y.useState)(!1),[z,ne]=(0,y.useState)(!1),[B,re]=(0,y.useState)(!1),[V,ie]=(0,y.useState)(!1),[H,ae]=(0,y.useState)(!1),[oe,se]=(0,y.useState)(``),le=(0,y.useRef)(!1),ue=(0,y.useRef)(null),de=(0,y.useRef)(null),fe=(0,y.useRef)(null);Zh(fe,e?.id??null);let pe=(0,y.useRef)(null),me=(0,y.useRef)(null),he=(0,y.useRef)(()=>{}),_e=(0,y.useRef)(()=>{}),ye=e?.remote===!0,be=Gh(e=>e.remoteAllowControl),xe=Gh(e=>e.remoteAllowAttach),Se=Gh(e=>e.preferWindowName),Ce=ye&&!xe,we=!ye||be&&e?.source===`managed`,Te=r?r.displayName||Nh(r.projectPath)||r.sessionId.slice(0,8):``,Ee=r?Nh(r.projectPath):``,De=r?Mh(r.lastActivityAt):``,Oe=!!e&&!!v&&e.source===`managed`&&!e.remote&&!!e.agentSessionId?.trim(),ke=(0,y.useMemo)(()=>{let e=new Set;for(let n of t)n.host?.trim()&&e.add(n.host.trim());for(let t of i)t.host?.trim()&&e.add(t.host.trim());return e.size>1},[t,i]),Ae=e&&!Ce?MJ(e):null,je=jJ(Ae),{containerRef:Me,terminalRef:Ne,inTmuxCopyModeRef:Pe,isTmuxCopyMode:Fe,appMouseRef:Ie,setTmuxCopyMode:Le,isSwitching:Re,isInputReady:ze,pendingClipboardOffer:Ve,copyPendingClipboardOffer:He,dismissPendingClipboardOffer:Ue}=cK({sessionId:e?.id??null,tmuxTarget:e?.tmuxWindow??null,agentType:e?.agentType,onPasteFiles:e=>he.current(e),onPasteError:e=>_e.current(e),allowAttach:!Ce,deferInput:je.pending,onDeferredInput:je.capture,connectionStatus:o,connectionEpoch:s,sendMessage:c,subscribe:l,theme:T,fontSize:D,lineHeight:O,letterSpacing:A,fontFamily:j,useWebGL:E,onScrollChange:e=>{ee(!e)}}),Ge=(0,y.useCallback)(()=>{!e||Ce||(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1),Ne.current?.scrollToBottom())},[e,Ce,c,Le,Ne]),Ke=(0,y.useCallback)(()=>{ie(!0),IJ()},[]),qe=dK({enabled:P||N,isOpen:V,onOpen:Ke});(0,y.useEffect)(()=>{!P&&!N&&V&&ie(!1)},[V,P,N]),lK(de,B,(0,y.useCallback)(()=>re(!1),[])),(0,y.useEffect)(()=>{H&&pe.current&&(pe.current.focus(),pe.current.select())},[H]),(0,y.useEffect)(()=>{z&&me.current&&me.current.focus()},[z]),uK(z,(0,y.useCallback)(()=>ne(!1),[]));let Je=()=>{e&&(m(e.id,`terminal_confirm_modal`),ne(!1))},Ye=()=>{!e||!Oe||(v?.(e.agentSessionId.trim()),re(!1))},Xe=()=>{e&&(se(e.agentSessionName||e.name),ae(!0),re(!1))},Ze=()=>{if(!e)return;let t=oe.trim(),n=e.agentSessionName||e.name;t&&t!==n&&h(e.id,t),ae(!1)},$e=e=>{e.key===`Enter`?(e.preventDefault(),Ze()):e.key===`Escape`&&(e.preventDefault(),ae(!1))};(0,y.useEffect)(()=>{if(!N||!e){R(!1);return}let t=Me.current;if(!t)return;let n=e=>{let n=t.querySelector(`.xterm-accessibility-tree`);if(!n)return!1;let r=e.anchorNode,i=e.focusNode;return!!r&&n.contains(r)||!!i&&n.contains(i)},r=()=>{let e=t.querySelector(`.xterm-accessibility`),n=t.querySelector(`.xterm-accessibility-tree`);!e||!n||(e.style.setProperty(`opacity`,`0`),n.style.setProperty(`opacity`,`0`),e.style.setProperty(`-webkit-user-select`,`none`),e.style.setProperty(`user-select`,`none`),n.style.setProperty(`-webkit-user-select`,`none`),n.style.setProperty(`user-select`,`none`),e.offsetHeight,requestAnimationFrame(()=>{e.style.removeProperty(`opacity`),n.style.removeProperty(`opacity`),e.style.removeProperty(`-webkit-user-select`),e.style.removeProperty(`user-select`),n.style.removeProperty(`-webkit-user-select`),n.style.removeProperty(`user-select`)}))},i=()=>{le.current=!1;let e=window.getSelection();try{e?.removeAllRanges()}catch{}Ne.current?.clearSelection(),r(),R(!1)};ue.current=i;let a=()=>{let e=window.getSelection();if(!e||e.rangeCount===0||e.isCollapsed){le.current?i():R(e=>e&&!1);return}let t=n(e);if(!t&&le.current){i();return}le.current=t;let r=t;R(e=>e===r?e:r)},o=()=>{let e=window.getSelection();!e||e.isCollapsed||n(e)&&setTimeout(i,0)},s=null,c=!1,l=e=>{if(e.touches.length===1){let t=e.touches[0];s={x:t.clientX,y:t.clientY},c=!1}},u=e=>{if(c||!s||e.touches.length!==1)return;let t=e.touches[0],n=Math.abs(t.clientX-s.x),r=Math.abs(t.clientY-s.y);(n>10||r>10)&&(c=!0)},d=e=>{let r=c;s=null,c=!1;let a=window.getSelection();if(!a||a.rangeCount===0||a.isCollapsed){R(!1);return}let o=t.querySelector(`.xterm-accessibility-tree`);if(!o)return;if(!n(a)){R(!1);return}if(r)return;let l=e.target,u=l?o.contains(l):!1,d=!1;if(u&&l)try{d=a.containsNode(l,!0)}catch{d=!1}(!u||!d)&&setTimeout(i,0)};return document.addEventListener(`selectionchange`,a),document.addEventListener(`copy`,o),document.addEventListener(`touchstart`,l,{passive:!0}),document.addEventListener(`touchmove`,u,{passive:!0}),document.addEventListener(`touchend`,d,{passive:!0}),()=>{document.removeEventListener(`selectionchange`,a),document.removeEventListener(`copy`,o),document.removeEventListener(`touchstart`,l),document.removeEventListener(`touchmove`,u),document.removeEventListener(`touchend`,d),ue.current=null,le.current=!1}},[Me,N,e?.id]),(0,y.useEffect)(()=>{if(!N)return;let t=Me.current;if(!t)return;let n=null,r=()=>{let e=Ne.current,r=t.querySelector(`.xterm`);if(!e||!r)return;let i=r.querySelector(`.xterm-screen`),a=r.querySelector(`.xterm-accessibility`),o=r.querySelector(`.xterm-accessibility-tree`);if(!i||!a||!o)return;n||=EK(o);let s=r.getBoundingClientRect(),c=i.getBoundingClientRect(),l=c.left-s.left,u=c.top-s.top;Object.assign(a.style,{left:`${l}px`,top:`${u}px`,right:`auto`,bottom:`auto`,width:`${c.width}px`,height:`${c.height}px`});let d=c.width/e.cols,f=c.height/e.rows,p=document.createElement(`span`);p.textContent=`0`.repeat(200),p.style.cssText=`position:absolute;visibility:hidden;white-space:pre;pointer-events:none;letter-spacing:0px`,o.appendChild(p);let m=p.getBoundingClientRect().width/200;p.remove();let h=Math.max(-2,Math.min(2,d-m));t.style.setProperty(`--xterm-font-size`,`${e.options.fontSize}px`),t.style.setProperty(`--xterm-cell-height`,`${f}px`),t.style.setProperty(`--xterm-a11y-letter-spacing`,`${h}px`)},i=performance.now();r();let a=Math.round(performance.now()-i);a>10&&X(`switch_a11y_overlay`,{sessionId:e?.id,a11yMs:a});let o=window.requestAnimationFrame(r),s=window.setTimeout(r,100),c=()=>window.requestAnimationFrame(r);return window.visualViewport?.addEventListener(`resize`,c),window.addEventListener(`orientationchange`,c),()=>{window.cancelAnimationFrame(o),window.clearTimeout(s),window.visualViewport?.removeEventListener(`resize`,c),window.removeEventListener(`orientationchange`,c),n?.()}},[Me,D,N,e?.id,Ne]);let et=(0,y.useRef)(te);(0,y.useEffect)(()=>{et.current=te},[te]);let tt=(0,y.useRef)(e?.id);(0,y.useEffect)(()=>{tt.current=e?.id},[e?.id]);let rt=(0,y.useRef)(c);(0,y.useEffect)(()=>{rt.current=c},[c]);let it=(0,y.useRef)(!1),at=(0,y.useRef)(`idle`);(0,y.useEffect)(()=>{if(!N)return;let e=Me.current;if(!e)return;let t=null,n=()=>e.querySelector(`.xterm-helper-textarea`),r=e=>{e.target===n()&&(at.current=`focused`)},i=e=>{e.target===n()&&(t!==null&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null;let e=n(),r=typeof document.hasFocus!=`function`||document.hasFocus();document.activeElement!==e&&document.visibilityState!==`hidden`&&r&&(at.current=`idle`)},0))},a=()=>{let e=n();(document.activeElement===e||at.current===`focused`)&&(at.current=`interrupted`)},o=()=>{at.current===`interrupted`&&(at.current=`armed`)},s=()=>{document.visibilityState===`hidden`?a():o()},c=e=>{e.persisted&&o()};return document.addEventListener(`focusin`,r),document.addEventListener(`focusout`,i),document.addEventListener(`visibilitychange`,s),window.addEventListener(`blur`,a),window.addEventListener(`focus`,o),window.addEventListener(`pageshow`,c),()=>{document.removeEventListener(`focusin`,r),document.removeEventListener(`focusout`,i),document.removeEventListener(`visibilitychange`,s),window.removeEventListener(`blur`,a),window.removeEventListener(`focus`,o),window.removeEventListener(`pageshow`,c),t!==null&&window.clearTimeout(t),at.current=`idle`}},[Me,N,e?.id]),(0,y.useEffect)(()=>{let t=Me.current;if(!t||!e?.id||!P&&!N)return;let n={x:0,y:0},r=0,i=!1,a=null,o=0,s=0,c=0,l=Math.round(D*O),u=null,d=null,f=!1,p=null,m=()=>{let e=window.getComputedStyle(t).getPropertyValue(`--xterm-cell-height`).trim(),n=Number.parseFloat(e);return!Number.isNaN(n)&&n>0?n:Math.round(D*O)},h=()=>t.querySelector(`.xterm-helper-textarea`),g=e=>{let n=Ne.current;if(!n)return null;let r=(t.querySelector(`.xterm`)?.querySelector(`.xterm-screen`))?.getBoundingClientRect();if(!r||r.width<=0||r.height<=0)return null;let i=r.width/n.cols,a=r.height/n.rows;return i<=0||a<=0?null:{col:Math.min(n.cols,Math.max(1,Math.floor((e.clientX-r.left)/i)+1)),row:Math.min(n.rows,Math.max(1,Math.floor((e.clientY-r.top)/a)+1))}},_=()=>{let e=h();e&&document.activeElement!==e&&(e.disabled=!0)},v=()=>{let e=h();e&&(e.disabled=!1)};_();let y=()=>{if(Pe.current)return;let e=h();e&&(e.disabled=!1,e.focus())},b=()=>{u!==null&&(cancelAnimationFrame(u),u=null),s=0},x=()=>{d!==null&&(clearTimeout(d),d=null)},S=(e,t,n)=>{let r=tt.current;return r?(rt.current({type:`terminal-input`,sessionId:r,data:`\x1b[<${e};${t.col};${t.row}${n}`}),!0):!1},C=e=>{let t=tt.current;if(!t||e===0)return!1;let n=Ne.current,r=n?.cols??80,i=n?.rows??24,a=Math.floor(r/2),o=Math.floor(i/2),s=e>0?65:64,c=Math.abs(e),l=e<0;for(let e=0;e<c;e++)rt.current({type:`terminal-input`,sessionId:t,data:`\x1b[<${s};${a};${o}M`});return l&&!Ie.current&&Le(!0),l},w=e=>{let t=tt.current,n=g(e);return!t||!n?!1:(rt.current({type:`terminal-input`,sessionId:t,data:`\x1b[<0;${n.col};${n.row}M\x1b[<0;${n.col};${n.row}m`}),!0)},T=e=>{if(!N||!Ie.current)return!1;let t=g(e);return t?(f=!0,p=t,_(),IJ(),S(0,t,`M`)):!1},E=e=>{let t=g(e);return t?p&&p.col===t.col&&p.row===t.row?!0:(p=t,S(32,t,`M`)):!1},k=e=>{let t=e?g(e):p;return f=!1,p=null,t?S(0,t,`m`):!1},A=()=>{x(),f=!1,p=null,a=null,s=0,c=0},j=()=>{if(!N)return!1;let e=window.getSelection();if(!e||e.isCollapsed)return!1;let n=t.querySelector(`.xterm-accessibility-tree`);if(!n)return!1;let r=e.anchorNode,i=e.focusNode;return!!r&&n.contains(r)||!!i&&n.contains(i)},M=()=>{!N||!le.current||j()||ue.current?.()},F=e=>{if(b(),M(),qe.current||V){A();return}if(et.current){A();return}if(at.current===`armed`&&!Pe.current&&(at.current=`idle`,y()),e.touches.length===1){let t=e.touches[0];if(n={x:t.clientX,y:t.clientY},r=performance.now(),i=!1,a=t.clientY,o=r,s=0,c=0,l=m(),v(),N&&Ie.current){let e={clientX:t.clientX,clientY:t.clientY};d=setTimeout(()=>{d=null,!(i||qe.current||V)&&(et.current||j()||T(e))},350)}}},ee=e=>{if(e.touches.length!==1||a===null)return;if(M(),qe.current||V){A();return}let t=performance.now(),r=e.touches[0],u=r.clientX,d=r.clientY;if(f){e.preventDefault(),e.stopPropagation(),E(r),a=d,o=t;return}if(et.current||j()){A();return}e.preventDefault(),e.stopPropagation();let p=Math.abs(u-n.x),m=Math.abs(d-n.y);!i&&(p>6||m>6)&&(i=!0,x(),_());let h=a-d,g=t-o;if(a=d,o=t,g>0){let e=h/g;s=s*.7+e*.3}c+=h;let v=Math.max(6,l*.6),y=Math.trunc(c/v);y!==0&&(C(y),c-=y*v)},I=e=>{let t=s,n=performance.now()-r;if(x(),f){k(e.changedTouches[0]),A(),e.preventDefault(),e.stopPropagation();return}if(A(),qe.current||V)return;let a=j();if(et.current&&!a&&ue.current?.(),et.current||a){Pe.current&&(it.current=!0);return}if(!i){if(N&&n>=350)return;if(Ie.current){let t=e.changedTouches[0];if(t&&w(t)){y(),e.preventDefault(),e.stopPropagation();return}}if(Pe.current){e.preventDefault(),e.stopPropagation(),it.current=!0;return}y();return}if(Math.abs(t)>.12){let e=t,n=performance.now(),r=()=>{let t=performance.now(),i=t-n;n=t;let a=e*i;c+=a;let o=Math.max(6,l*.6),s=Math.trunc(c/o);s!==0&&(C(s),c-=s*o),e*=.95**(i/16.67),u=Math.abs(e)>.02?requestAnimationFrame(r):null};u=requestAnimationFrame(r)}},te=e=>{it.current&&=(e.preventDefault(),e.stopPropagation(),!1)},L={passive:!0,capture:!0},R={passive:!1,capture:!0},z={passive:!1,capture:!0},ne={capture:!0};return t.addEventListener(`touchstart`,F,L),t.addEventListener(`touchmove`,ee,R),t.addEventListener(`touchend`,I,z),t.addEventListener(`mousedown`,te,ne),()=>{t.removeEventListener(`touchstart`,F,L),t.removeEventListener(`touchmove`,ee,R),t.removeEventListener(`touchend`,I,z),t.removeEventListener(`mousedown`,te,ne),x();let e=h();e&&(e.disabled=!1)}},[e?.id,Me,Ne,N,P,V,D,O]);let ct=(0,y.useCallback)(t=>{if(!(!e||Ce)){if(je.pending||!ze){je.capture(t,`typing`);return}c({type:`terminal-input`,sessionId:e.id,data:t})===!1&&je.capture(t,`typing`)}},[e,Ce,ze,c,je]),lt=(0,y.useCallback)(t=>{if(!(!e||Ce)){if(je.pending||!ze){je.capture(t,`paste`);return}Pe.current&&(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1)),c({type:`terminal-paste`,sessionId:e.id,data:t})===!1&&je.capture(t,`paste`)}},[e,Ce,ze,c,Pe,Le,je]),ut=(0,y.useCallback)(t=>{!e||Ce||!ze||je.pending||(Pe.current&&(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1)),c({type:`terminal-input`,sessionId:e.id,data:t}))},[e,Ce,ze,c,Pe,Le,je.pending]),dt=(0,y.useCallback)(()=>{let e=Me.current;if(!e)return;let t=e.querySelector(`.xterm-helper-textarea`);t&&(t.removeAttribute(`disabled`),t.focus())},[Me]),ft=mq({sessionId:e?.id??null,disabled:o!==`connected`||Ce||!ze||je.pending,fileUploadsAllowed:!ye,agentType:e?.agentType,onPasteText:lt,onPasteImage:ut,onRefocus:dt});he.current=ft.paste,_e.current=ft.fail;let pt=()=>{!e||Ce||!ze||!je.text||je.persistence===`sent-remove-failed`||(Pe.current&&(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1)),c({type:`terminal-paste`,sessionId:e.id,data:je.text})!==!1&&(je.sent(),dt()))},mt=(0,y.useCallback)(()=>{if(!e||Ce)return;ze&&Pe.current&&(c({type:`tmux-cancel-copy-mode`,sessionId:e.id}),Le(!1));let t=Me.current;if(!t)return;let n=t.querySelector(`.xterm-helper-textarea`);n&&(n.removeAttribute(`disabled`),n.focus())},[e,Ce,ze,c,Me,Pe,Le]),ht=(0,y.useCallback)(()=>{if(typeof document>`u`)return!1;let e=Me.current;if(!e)return!1;let t=e.querySelector(`.xterm-helper-textarea`);if(t&&document.activeElement===t)return!0;let n=document.activeElement,r=typeof HTMLInputElement<`u`&&n instanceof HTMLInputElement,i=typeof HTMLTextAreaElement<`u`&&n instanceof HTMLTextAreaElement;return r||i||n&&n.isContentEditable?!1:!!document.documentElement?.classList?.contains(`keyboard-visible`)},[Me]);(0,y.useEffect)(()=>{if(!N)return;let e=Me.current;if(!e)return;let t=e.querySelector(`.xterm-accessibility`),n=e.querySelector(`.xterm-accessibility-tree`);if(!t||!n)return;let r=()=>{let r=e.querySelector(`.xterm-helper-textarea`);r&&document.activeElement===r&&!et.current?(t.style.pointerEvents=`none`,n.style.pointerEvents=`none`):(t.style.removeProperty(`pointer-events`),n.style.removeProperty(`pointer-events`))};return r(),document.addEventListener(`focusin`,r),document.addEventListener(`focusout`,r),()=>{document.removeEventListener(`focusin`,r),document.removeEventListener(`focusout`,r)}},[Me,N,te]),(0,y.useEffect)(()=>{let e=Me.current;e&&(e.inert=!!r)},[Me,r]);let gt=(0,y.useMemo)(()=>{if(!Se||t.length===0)return!1;let e=t.map(e=>e.name.trim()).filter(Boolean);return e.length===t.length&&new Set(e).size===t.length},[Se,t]);return(0,k.jsxs)(`section`,{className:`flex min-w-0 flex-1 flex-col bg-base terminal-mobile-overlay md:relative md:inset-auto ${N?`ios-native-term-selection`:``}`,"data-testid":`terminal-panel`,onDragOver:t=>{Array.from(t.dataTransfer.types).includes(`Files`)&&(t.preventDefault(),t.dataTransfer.dropEffect=e&&!Ce&&ze&&!ye&&o===`connected`?`copy`:`none`)},onDrop:t=>{if(!Array.from(t.dataTransfer.types).includes(`Files`)||(t.preventDefault(),t.stopPropagation(),!e||Ce||!ze||ye||o!==`connected`))return;let n=DG(t.dataTransfer);n.length&&ft.paste({text:``,files:n})},children:[(0,k.jsxs)(`div`,{className:`flex min-h-[52px] shrink-0 items-center justify-between border-b border-border bg-elevated px-[6px] md:hidden`,children:[(0,k.jsxs)(`div`,{className:`flex min-w-0 items-center gap-[7px]`,children:[(0,k.jsx)(`button`,{onClick:()=>ie(!0),className:Vt(`neutral`),"aria-label":`Open session menu`,children:(0,k.jsx)(Be,{width:W.primary,height:W.primary})}),e?(0,k.jsxs)(`div`,{className:`flex min-w-[72px] flex-col items-start gap-px leading-none`,children:[H?(0,k.jsx)(`input`,{ref:pe,type:`text`,value:oe,onChange:e=>se(e.target.value),onBlur:Ze,onKeyDown:$e,className:`w-full max-w-[112px] rounded border border-border bg-surface px-2 py-0.5 text-sm font-medium text-primary outline-none focus:border-accent`}):(0,k.jsx)(`span`,{className:`max-w-[112px] truncate text-sm font-medium text-primary`,children:e.agentSessionName||e.name}),(0,k.jsx)(`span`,{className:`shrink-0 text-[10px] ${o===`connected`?OK[e.status]:`text-approval`}`,children:o===`connected`?DK[e.status]:o})]}):r?(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-col items-start gap-px leading-none`,children:[(0,k.jsx)(`span`,{className:`max-w-[112px] truncate text-sm font-medium text-primary`,children:Te}),(0,k.jsx)(`span`,{className:`text-[10px] font-medium text-blue-400`,children:`Hibernating`})]}):(0,k.jsx)(`span`,{className:`text-sm font-medium text-primary`,children:`Sessions`})]}),(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-[4px]`,children:[(0,k.jsx)(`button`,{onClick:p,className:Vt(`primary`),title:`New session (${M}N)`,"aria-label":`New session`,children:(0,k.jsx)(Qe,{width:W.primary,height:W.primary})}),e&&we&&(0,k.jsx)(`button`,{disabled:Re,onClick:()=>ne(!0),className:Vt(`danger`),title:`Kill session (${M}X)`,"aria-label":`Kill session`,children:(0,k.jsx)(ot,{width:W.primary,height:W.primary})}),Oe&&(0,k.jsx)(`button`,{onClick:Ye,className:`${Vt(`neutral`,`hidden`)} min-[360px]:flex`,title:`Hibernate session`,"aria-label":`Hibernate session`,children:(0,k.jsx)(We,{width:W.primary,height:W.primary})}),r&&(0,k.jsx)(`button`,{onClick:()=>_(r.sessionId),className:`btn btn-primary h-[44px] px-3 text-xs`,children:`Wake`}),e&&(0,k.jsxs)(`div`,{className:`relative`,ref:de,children:[(0,k.jsx)(`button`,{onClick:()=>re(!B),className:Vt(`neutral`),title:`More options`,"aria-label":`More options`,children:(0,k.jsx)(ge,{width:W.primary,height:W.primary})}),B&&(0,k.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 z-20 min-w-[140px] rounded-md border border-border bg-elevated shadow-lg py-1`,children:[we&&(0,k.jsxs)(`button`,{onClick:Xe,className:`flex min-h-[44px] w-full items-center gap-2 px-3 py-2 text-left text-sm text-secondary hover:bg-hover hover:text-primary`,children:[(0,k.jsx)(ve,{width:W.default,height:W.default}),`Rename`]}),Oe&&(0,k.jsxs)(`button`,{onClick:Ye,className:`flex min-h-[44px] w-full items-center gap-2 px-3 py-2 text-left text-sm text-secondary hover:bg-hover hover:text-primary`,children:[(0,k.jsx)(We,{width:W.default,height:W.default}),`Hibernate`]}),(0,k.jsxs)(`button`,{onClick:()=>{x(),re(!1)},className:`flex min-h-[44px] w-full items-center gap-2 px-3 py-2 text-left text-sm text-secondary hover:bg-hover hover:text-primary`,children:[(0,k.jsx)(nt,{width:W.default,height:W.default}),`Settings`]})]})]})]})]}),e&&t.length>1&&(0,k.jsxs)(`div`,{className:`relative overflow-hidden bg-elevated border-b border-border md:hidden`,children:[(0,k.jsx)(`div`,{className:`absolute right-0 top-0 bottom-0 w-4 bg-gradient-to-l from-elevated to-transparent z-10 pointer-events-none`}),(0,k.jsx)(`div`,{ref:fe,className:`flex items-center gap-[6px] overflow-x-auto scroll-pe-4 px-[8px] py-[5px] scrollbar-none snap-x snap-mandatory`,style:{WebkitOverflowScrolling:`touch`},children:t.map((t,n)=>{let r=t.id===e.id,i=gt?t.name.trim():n+1;return(0,k.jsx)(`button`,{type:`button`,"data-session-id":t.id,className:`
304
304
  flex items-center justify-center shrink-0 snap-start
305
305
  h-[44px] ${gt?`min-w-[44px] px-2.5 max-w-[8rem] truncate`:`w-[44px]`}
306
306
  text-sm font-extrabold rounded-lg
307
307
  active:scale-95 transition-all duration-75
308
308
  select-none touch-manipulation
309
309
  ${r?FJ[t.status]:PJ[t.status]}
310
- `,onClick:()=>{IJ(),d(t.id)},title:gt?t.name:void 0,children:i},t.id)})})]}),(0,k.jsxs)(`div`,{className:`relative flex-1`,children:[(0,k.jsx)(`div`,{ref:Me,className:`absolute inset-0`,style:{backgroundColor:T.background}}),e&&!Ce&&!ze&&(0,k.jsxs)(`div`,{role:`status`,"aria-live":`polite`,"data-testid":`terminal-recovery-status`,className:`absolute top-2 left-2 z-50 flex items-center gap-1.5 rounded-lg bg-black/60 px-2.5 py-1.5 text-xs text-white/90 shadow-lg backdrop-blur-md`,children:[(0,k.jsx)(st,{width:W.pill,height:W.pill,className:Re||o!==`connected`?`animate-spin`:``}),o===`connected`?Re?`Restoring terminal`:`Terminal unavailable`:o===`disconnected`?`Disconnected`:`Reconnecting`,(0,k.jsx)(`span`,{className:`text-white/70`,children:`· Input paused`})]}),je.pending&&e&&!Ce&&(0,k.jsx)(xJ,{text:je.text,sessionName:e.name,ready:ze,atLimit:je.atLimit,truncated:je.truncated,persistence:je.persistence,onSave:je.save,onDiscardOthers:je.hasOtherDrafts?je.discardOthers:void 0,onEdit:je.edit,onSend:pt,onDiscard:()=>{je.discard(),dt()}},Ae),Ve&&e&&(0,k.jsxs)(`div`,{className:`absolute ${F&&!te?`bottom-20`:`bottom-8`} left-1/2 z-30 flex max-w-[calc(100%-2rem)] -translate-x-1/2 items-center gap-2 rounded-lg border border-border bg-elevated/95 px-2 py-2 shadow-lg backdrop-blur-sm md:hidden`,children:[(0,k.jsx)(`span`,{className:`max-w-[12rem] truncate text-xs text-secondary md:max-w-[18rem]`,children:`Selection ready`}),(0,k.jsxs)(`button`,{type:`button`,onClick:He,className:`relative flex h-8 shrink-0 items-center justify-center gap-1.5 rounded bg-accent px-2.5 text-xs font-medium text-white hover:bg-accent/90 active:scale-95 transition-all [@media(pointer:coarse)]:before:absolute [@media(pointer:coarse)]:before:inset-[calc(50%-22px)] [@media(pointer:coarse)]:before:content-['']`,title:`Copy selection`,"aria-label":`Copy selection`,children:[(0,k.jsx)(ce,{width:W.default,height:W.default}),`Copy`]}),(0,k.jsx)(`button`,{type:`button`,onClick:Ue,className:`relative flex h-8 w-8 shrink-0 items-center justify-center rounded border border-border text-secondary hover:bg-hover hover:text-primary active:scale-95 transition-all [@media(pointer:coarse)]:before:absolute [@media(pointer:coarse)]:before:inset-[calc(50%-22px)] [@media(pointer:coarse)]:before:content-['']`,title:`Dismiss`,"aria-label":`Dismiss`,children:(0,k.jsx)(ot,{width:W.default,height:W.default})})]}),e&&(0,k.jsx)(yJ,{session:e,ready:o===`connected`&&ze}),!e&&(0,k.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-sm text-muted`,children:r?null:`Select a session to view terminal`}),e&&Ce&&(0,k.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-center text-sm text-muted`,children:`Remote session (read-only). Use SSH to attach on the host.`}),r&&(0,k.jsx)(`div`,{className:`absolute inset-0 z-10 overflow-y-auto bg-base`,children:(0,k.jsxs)(`div`,{className:`mx-auto flex min-h-full w-full max-w-5xl flex-col gap-4 p-4 md:p-6`,children:[(0,k.jsx)(`div`,{className:`border-b border-border pb-4`,children:(0,k.jsxs)(`div`,{className:`flex flex-col gap-3 md:flex-row md:items-start md:justify-between`,children:[(0,k.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 text-sm`,children:[(0,k.jsx)(`h2`,{className:`min-w-0 truncate text-lg font-semibold text-primary`,children:Te}),(0,k.jsx)(`span`,{className:`rounded-full bg-blue-500/15 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-blue-400`,children:`Hibernating`}),Ee&&(0,k.jsx)(`span`,{className:`text-muted`,children:Ee}),(0,k.jsxs)(`span`,{className:`text-muted`,children:[`Last active `,De]})]}),r.lastResumeError&&(0,k.jsxs)(`div`,{className:`inline-flex items-center gap-1 rounded bg-amber-500/15 px-2 py-1 text-xs text-amber-400`,title:`Last wake failed: ${r.lastResumeError}`,children:[(0,k.jsx)(I,{width:W.pill,height:W.pill}),`Last wake failed`]}),r.lastUserMessage&&(0,k.jsx)(`p`,{className:`max-h-28 max-w-3xl overflow-y-auto whitespace-pre-wrap break-words pr-2 text-sm leading-6 text-secondary`,children:r.lastUserMessage})]}),(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,k.jsx)(`button`,{type:`button`,onClick:()=>_(r.sessionId),className:`btn btn-primary hidden md:inline-flex`,children:`Wake`}),b&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>b(r.sessionId),className:`btn btn-secondary`,children:`Move to History`})]})]})}),(0,k.jsx)(rk,{session:r})]})}),Fe&&e&&!te?(0,k.jsxs)(`button`,{type:`button`,onClick:Ge,className:`absolute bottom-14 left-1/2 z-20 flex h-10 items-center justify-center rounded-full border border-amber-400/35 bg-amber-500/20 text-amber-100 shadow-lg backdrop-blur-sm transition-all hover:bg-amber-500/30 active:scale-95 md:hidden ${Wt}`,style:{transform:`translateX(-50%)`},title:`Exit tmux copy mode and return to live output`,"aria-label":`Exit copy mode`,children:[(0,k.jsx)(`span`,{className:`px-3 text-[11px] font-semibold uppercase tracking-wide`,children:`Copy mode`}),(0,k.jsx)(`span`,{className:`self-stretch border-l border-amber-400/25`,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`px-3 text-sm font-medium`,children:`Exit`})]}):F&&e&&!te?(0,k.jsxs)(`button`,{type:`button`,onClick:Ge,className:`absolute bottom-8 left-1/2 z-20 flex h-10 px-4 items-center justify-center gap-1.5 rounded-full bg-blue-600/90 text-white shadow-lg hover:bg-blue-600 active:scale-95 transition-all md:hidden ${Wt}`,style:{transform:`translateX(-50%)`},title:`Scroll to bottom`,"aria-label":`Scroll to bottom`,children:[(0,k.jsx)(L,{width:W.primary,height:W.primary}),(0,k.jsx)(`span`,{className:`text-sm font-medium`,children:`Jump to bottom`})]}):null]}),(0,k.jsx)(fq,{...ft}),(0,k.jsx)(LK,{session:e,hibernatingSession:r,hibernatingDisplayName:Te,showHostBadge:ke,sessionCount:t.length,connectionStatus:o,isSwitching:Re,canControl:we,canHibernate:Oe,modDisplay:M,onKill:()=>ne(!0),onHibernate:Ye,onWake:()=>r&&_(r.sessionId),onRename:t=>{let n=e?.id??r?.sessionId;n&&h(n,t)},onDuplicate:e&&g?()=>g(e.id):void 0,onMoveToHistory:r&&b?()=>b(r.sessionId):void 0,isTmuxCopyMode:Fe,showJumpToBottom:F&&!te,onJumpToBottom:Ge,selectionReady:!!Ve,onCopySelection:He,onDismissSelection:Ue}),e&&(0,k.jsx)(Dq,{onSendKey:ct,onPasteText:lt,onPasteImage:ut,disabled:o!==`connected`||Ce||!ze||je.pending,keyboardDisabled:Ce,sessions:t.map(e=>({id:e.id,name:e.name,status:e.status})),currentSessionId:e.id,agentType:e.agentType,fileUploadsAllowed:!ye,onSelectSession:d,hideSessionSwitcher:!0,onRefocus:dt,isKeyboardVisible:ht,onEnterTextMode:mt}),(P||N)&&(0,k.jsx)(NJ,{isOpen:V,onClose:()=>ie(!1),sessions:n??t,hibernatingSessions:i,historySessions:a,selectedSessionId:e?.id??null,selectedHibernatingSessionId:r?.sessionId??null,onSelect:d,onSelectHibernating:f,onRename:h,onResume:_,onHibernate:v,onMoveToHistory:b,onNewSession:p,onOpenHistory:S,subscribe:l,loading:C,error:w}),z&&e&&(0,k.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,children:(0,k.jsxs)(`div`,{className:`mx-4 w-full max-w-sm rounded-lg border border-border bg-elevated p-4 shadow-xl`,children:[(0,k.jsx)(`h3`,{className:`text-base font-medium text-primary mb-2 text-balance`,children:`Kill Session`}),(0,k.jsxs)(`p`,{className:`text-sm text-secondary mb-4 text-pretty`,children:[`Kill "`,e.agentSessionName||e.name,`"? The process will be terminated. Conversation history is preserved in logs.`]}),(0,k.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,k.jsx)(`button`,{onClick:()=>ne(!1),className:`btn py-1.5 px-3 text-sm`,children:`Cancel`}),(0,k.jsx)(`button`,{ref:me,onClick:Je,className:`btn btn-danger py-1.5 px-3 text-sm`,children:`Kill Session`})]})]})})]})}function RJ({onSelect:e,onCancel:t,initialPath:n}){let[r,i]=(0,y.useState)(n||`~`),[a,o]=(0,y.useState)(null),[s,c]=(0,y.useState)(null),[l,u]=(0,y.useState)(!0),[d,f]=(0,y.useState)(-1),p=(0,y.useRef)(null),m=U(e=>e.recentPaths),h=(0,y.useCallback)(async e=>{p.current?.abort();let t=new AbortController;p.current=t;let{signal:n}=t;u(!0),c(null),o(null),f(-1),i(e);try{let r=await fetch(`/api/directories?path=${encodeURIComponent(e)}`,{signal:n});if(!r.ok){let e=await r.json();throw Error(e.message||`Failed to load directory`)}let a=await r.json();if(p.current!==t)return;o(a),i(a.path)}catch(e){if(p.current!==t)return;let n=e;n?.name!==`AbortError`&&c(n?.message||`Failed to load directory`)}finally{p.current===t&&u(!1)}},[]);(0,y.useEffect)(()=>(h(n||`~`),()=>{p.current?.abort()}),[h,n]);let g=a?.directories??[],_=a?.path||r,v=a?.parent;return(0,y.useEffect)(()=>{let n=n=>{if(n.key===`Escape`){n.preventDefault(),t();return}if(!l){if(n.key===`ArrowDown`){n.preventDefault(),f(e=>g.length===0?-1:e<0?0:Math.min(e+1,g.length-1));return}if(n.key===`ArrowUp`){n.preventDefault(),f(e=>g.length===0?-1:e<0?g.length-1:Math.max(e-1,0));return}if(n.key===`Enter`){n.preventDefault();let t=g[d];t?h(t.path):_&&e(_);return}n.key===`Backspace`&&v&&(n.preventDefault(),h(v))}};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[g,_,h,d,l,t,e,v]),(0,k.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":`Directory browser`,className:`fixed inset-0 z-[60] flex items-center justify-center bg-black/60 p-4`,onClick:e=>{e.target===e.currentTarget&&t()},"data-testid":`directory-browser`,children:(0,k.jsxs)(`div`,{className:`w-full max-w-lg border border-border bg-elevated p-4`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-border pb-2`,children:[(0,k.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>{v&&h(v)},disabled:!v||l,children:`Up`}),(0,k.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-xs font-mono text-secondary`,title:_,"data-testid":`directory-current-path`,children:_})]}),(0,k.jsx)(`div`,{className:`mt-3 max-h-60 overflow-y-auto border border-border bg-surface`,children:l?(0,k.jsx)(`div`,{className:`px-3 py-4 text-xs text-muted`,"data-testid":`directory-loading`,children:`Loading directories...`}):s?(0,k.jsxs)(`div`,{className:`px-3 py-4 text-xs`,"data-testid":`directory-error`,children:[(0,k.jsx)(`p`,{className:`text-danger`,children:s}),(0,k.jsx)(`button`,{type:`button`,className:`btn mt-3`,onClick:()=>h(r),children:`Retry`})]}):g.length===0?(0,k.jsx)(`div`,{className:`px-3 py-4 text-xs text-muted`,"data-testid":`directory-empty`,children:`No subdirectories`}):(0,k.jsx)(`div`,{className:`py-1`,children:g.map((e,t)=>(0,k.jsxs)(`button`,{type:`button`,onClick:()=>h(e.path),onMouseEnter:()=>f(t),className:`flex w-full items-center gap-2 px-3 py-2 text-left text-xs ${t===d?`bg-hover text-primary`:`text-secondary`}`,"data-testid":`directory-entry`,"data-entry-name":e.name,"data-entry-path":e.path,children:[(0,k.jsx)(Oe,{width:W.default,height:W.default,className:`shrink-0 text-muted`,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`truncate`,children:e.name})]},e.path))})}),a?.truncated?(0,k.jsx)(`p`,{className:`mt-2 text-[10px] text-muted`,children:`Showing first 200 directories.`}):null,(0,k.jsxs)(`div`,{className:`mt-4 border-t border-border pt-3`,children:[(0,k.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-secondary`,children:`Recent`}),m.length===0?(0,k.jsx)(`p`,{className:`mt-2 text-xs text-muted`,children:`No recent paths yet.`}):(0,k.jsx)(`div`,{className:`mt-2 space-y-1`,children:m.map(e=>(0,k.jsx)(`button`,{type:`button`,className:`block w-full truncate text-left text-xs text-secondary hover:text-primary`,onClick:()=>h(e),title:e,"data-testid":`directory-recent`,"data-recent-path":e,children:e},e))})]}),(0,k.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,k.jsx)(`button`,{type:`button`,onClick:t,className:`btn`,children:`Cancel`}),(0,k.jsx)(`button`,{type:`button`,onClick:()=>{_&&e(_)},className:`btn btn-primary`,disabled:l||!_,children:`Select`})]})]})})}function zJ(e){let t=e.trim();if(t.length>=2){let e=t[0],n=t[t.length-1];if(e===`'`&&n===`'`)return t.slice(1,-1).replace(/'\\''/g,`'`);if(e===`"`&&n===`"`)return t.slice(1,-1).replace(/\\"/g,`"`).replace(/\\\\/g,`\\`)}return t}function BJ(e){let t=e.trim(),n=t.search(/\s/);if(n===-1||t.slice(0,n).split(`/`).pop()!==`bash`)return null;let r=n;for(;r<t.length&&/\s/.test(t[r]);)r++;let i=!1,a=!1;for(;r<t.length;){let e=r;for(;r<t.length&&!/\s/.test(t[r]);)r++;let n=t.slice(e,r);for(;r<t.length&&/\s/.test(t[r]);)r++;if(!n.startsWith(`-`)||n===`-`)return null;if(n===`--`)break;if(n.startsWith(`--`)||!/^-[a-zA-Z]+$/.test(n))continue;let o=n.slice(1);if(o.includes(`l`)&&(i=!0),o.includes(`c`)){a=!0;break}}if(!i||!a)return null;let o=t.slice(r).trim();return o?zJ(o):null}function VJ(e){return e?e===`claude-rp`?`claude`:e:null}function HJ(e){let t=e.trim();if(!t)return``;let n=zJ(t);return BJ(n)??n}function UJ(e){if(e===`claude`)return`claude`;if(e===`codex`)return`codex`;if(e===`pi`)return`pi`;if(e===`devin`||e===`devin-cli`)return`devin`;if(e===`grok`||e.startsWith(`grok-`))return`grok`;if(e===`omp`)return`omp`}function WJ(e){let t=/\S+/g,n;for(;n=t.exec(e);){let e=n[0].toLowerCase().replace(/^["']+|["']+$/g,``);if([`npx`,`bunx`,`pnpm`,`yarn`,`env`].includes(e)||e.includes(`=`)||e.startsWith(`-`))continue;let t=e.includes(`@oh-my-pi/`)?`omp`:UJ(e.split(`/`).pop()||e);return t?{agentType:t,end:n.index+n[0].length}:void 0}}function GJ(e){let t=HJ(e);if(t)return WJ(t.toLowerCase().trim().replace(/^["']|["']$/g,``))?.agentType}var KJ={claude:`--dangerously-skip-permissions`,codex:`--yolo`,grok:`--always-approve`,devin:`--permission-mode dangerous`,pi:null,omp:`--auto-approve`},qJ={claude:[`--dangerously-skip-permissions`,`--permission-mode bypassPermissions`,`--permission-mode=bypassPermissions`],codex:[`--yolo`,`--dangerously-bypass-approvals-and-sandbox`],grok:[`--always-approve`,`--yolo`,`--dangerously-skip-permissions`,`--permission-mode bypassPermissions`,`--permission-mode=bypassPermissions`],devin:[`--permission-mode dangerous`,`--permission-mode=dangerous`],pi:[],omp:[`--auto-approve`,`--approval-mode yolo`,`--approval-mode=yolo`]};function JJ(e){let t=VJ(e);return t?KJ[t]:null}function YJ(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function XJ(e){return RegExp(`(^|\\s)${YJ(e)}(?=\\s|$)`,`g`)}function ZJ(e,t){return(t?[VJ(t)].filter(e=>e!==null):Object.keys(qJ)).some(t=>qJ[t].some(t=>XJ(t).test(e)))}function QJ(e,t){let n=WJ(e);return n?`${e.slice(0,n.end)} ${t}${e.slice(n.end)}`:null}function $J(e,t){let n=JJ(t);if(!n)return e;let r=e.trim();if(!r||ZJ(r,t))return r;let i=QJ(r,n);if(i)return i;let a=HJ(r);if(a&&a!==r){let e=QJ(a,n);if(e)return`bash -lc '${e.replace(/'/g,`'\\''`)}'`}return`${r} ${n}`}function eY(e,t){let n=VJ(t);if(!n||ZJ(e,t))return null;if(n===`codex`){let t=/(^|\s)(--full-auto|--ask-for-approval|-a)(?=\s|=|$)/.exec(e);if(t)return`conflicts with ${t[2]}`}if(n===`omp`){let t=/(^|\s)--approval-mode(?:\s+|=)(always-ask|write)/.exec(e);if(t)return`conflicts with --approval-mode ${t[2]}`}let r=/(^|\s)--permission-mode(?:\s+|=)(\S+)/.exec(e);return r&&n!==`codex`?`conflicts with --permission-mode ${r[2]}`:null}function tY(e,t){let n=VJ(t);if(!n)return e;let r=e;for(let e of qJ[n])r=r.replace(XJ(e),` `);return r.replace(/\s+/g,` `).trim()}function nY({isOpen:e,onClose:t,onCreate:n,defaultProjectDir:r,commandPresets:i,defaultPresetId:a,lastProjectPath:o,activeProjectPath:s,remoteHosts:c=[],remoteAllowControl:l=!1,initialHost:u,initialPath:d,initialCommand:f}){let[p,m]=(0,y.useState)(``),[h,g]=(0,y.useState)(``),[_,v]=(0,y.useState)(null),[b,x]=(0,y.useState)(``),[S,C]=(0,y.useState)(!1),[w,T]=(0,y.useState)(``),E=U(e=>e.yoloMode),D=U(e=>e.setYoloMode),O=(0,y.useRef)(null),A=(0,y.useRef)(null),j=(0,y.useRef)(null),M=(0,y.useRef)(!1),N=l&&c.length>0,P=e=>{if(!E)return e;let t=GJ(e);return t&&!eY(e,t)?$J(e,t):e},F=e=>{let t=i.find(t=>t.id===e);t&&(v(e),x(P(Tt(t))))},ee=()=>{v(null),x(``)};if((0,y.useEffect)(()=>{let t=M.current;if(M.current=e,!e){m(``),g(``),v(null),x(``),C(!1),T(u??``),t&&setTimeout(()=>{if(typeof document>`u`||typeof document.querySelector!=`function`)return;let e=document.querySelector(`.xterm-helper-textarea`);e&&(e.removeAttribute(`disabled`),e.focus())},300);return}if(t)return;if(typeof document<`u`&&typeof document.querySelector==`function`){let e=document.querySelector(`.xterm-helper-textarea`);e&&typeof e.setAttribute==`function`&&(typeof e.blur==`function`&&e.blur(),e.setAttribute(`disabled`,`true`))}m(d?.trim()||s?.trim()||o||r||``),g(``),T(u??``);let n=f?.trim();if(n){let e=i.find(e=>Tt(e)===n);e?(v(e.id),x(Tt(e))):(v(null),x(n))}else{let e=i.find(e=>e.id===a);e?(v(a),x(P(Tt(e)))):i.length>0?(v(i[0].id),x(P(Tt(i[0])))):(v(null),x(``))}setTimeout(()=>{if(j.current?.focus(),A.current){let e=A.current;e.scrollLeft=e.scrollWidth}},50)},[s,i,a,r,e,o,u,d,f]),(0,y.useEffect)(()=>{if(!e||typeof window>`u`||typeof window.addEventListener!=`function`)return;let n=()=>O.current?Array.from(O.current.querySelectorAll(`input:not([disabled]), select:not([disabled]), button:not([disabled]):not([tabindex="-1"]), [tabindex="0"]`)):[],r=e=>{if(!S){if(e.key===`Escape`){typeof e.stopPropagation==`function`&&e.stopPropagation(),t();return}if(e.key===`Enter`){let t=document.activeElement;if(!t||t.tagName===`INPUT`||t.closest(`[data-testid="host-select"]`)||!t.closest(`[data-testid="command-select"]`))return;e.preventDefault(),typeof e.stopPropagation==`function`&&e.stopPropagation(),O.current?.requestSubmit();return}if(/^[0-9]$/.test(e.key)&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let t=document.activeElement;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.tagName===`SELECT`||t.isContentEditable))return;let n;if(e.key===`0`)n=i.length;else if(n=Number(e.key)-1,n>=i.length)return;e.preventDefault(),typeof e.stopPropagation==`function`&&e.stopPropagation(),n===i.length?ee():F(i[n].id),(O.current?.querySelectorAll?.(`[data-testid="command-select"] [role="radio"]`))?.[n]?.focus();return}if(e.key===`Tab`){e.preventDefault(),typeof e.stopPropagation==`function`&&e.stopPropagation();let t=n();if(t.length===0)return;let r=document.activeElement,i=t.indexOf(r),a;a=i===-1?e.shiftKey?t.length-1:0:e.shiftKey?i<=0?t.length-1:i-1:i>=t.length-1?0:i+1,t[a]?.focus()}}};return window.addEventListener(`keydown`,r),()=>window.removeEventListener(`keydown`,r)},[e,t,S,i,E]),!e)return null;let I=_===null,te=w!==``,L=GJ(b),R=JJ(L)!==null,z=L?ZJ(b,L):!1,ne=L&&!z?eY(b,L):null,B=!R||ne!==null,re=L?L===`pi`?`Pi has no permission prompts — nothing to enable`:ne??`Append ${JJ(L)}`:`Enter a supported agent command (claude, codex, grok, devin)`,V=e=>{D(e),L&&x(e?$J(b,L):tY(b,L))},ie=e=>{e.preventDefault();let r=p.trim();if(!r)return;let i=b.trim();n(r,h.trim()||void 0,i||void 0,te?w:void 0),t()},H=[...i.map(e=>({id:e.id,label:e.label,isCustom:!1,agentType:e.agentType,command:e.command})),{id:`custom`,label:`Custom`,isCustom:!0,agentType:void 0,command:void 0}],ae=[{id:``,label:`Local`,ok:!0,error:void 0},...c.map(e=>({id:e.host,label:e.host,ok:e.ok,error:e.error}))],oe=p.trim()||`~`;return(0,k.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`new-session-title`,"data-suspends-terminal":``,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4`,onClick:e=>{e.target===e.currentTarget&&t()},children:[(0,k.jsxs)(`form`,{ref:O,onSubmit:ie,className:`w-full max-w-md border border-border bg-elevated p-6`,children:[(0,k.jsx)(`h2`,{id:`new-session-title`,className:`text-sm font-semibold uppercase tracking-wider text-primary text-balance`,children:`New Session`}),(0,k.jsxs)(`div`,{className:`mt-4 space-y-4`,children:[N&&(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`mb-1.5 block text-xs text-secondary`,children:`Host`}),(0,k.jsx)(`div`,{className:`flex flex-wrap gap-2`,role:`radiogroup`,"aria-label":`Host`,"data-testid":`host-select`,children:ae.map((e,t)=>{let n=w===e.id,r=!e.ok&&!n;return(0,k.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"aria-label":e.label,title:e.ok?void 0:e.error||`Unreachable`,tabIndex:n?0:-1,onClick:()=>T(e.id),onKeyDown:e=>{let n=t;if(e.key===`ArrowRight`||e.key===`ArrowDown`)e.preventDefault(),n=(t+1)%ae.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)e.preventDefault(),n=(t-1+ae.length)%ae.length;else return;let r=ae[n];T(r.id),(e.currentTarget.parentElement?.querySelectorAll(`[role="radio"]`))?.[n]?.focus()},className:`btn text-xs focus:outline-none focus:ring-2 focus:ring-primary ${n?`btn-primary`:``} ${r?`opacity-60`:``}`,children:e.label},e.id||`local`)})})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`mb-1.5 block text-xs text-secondary`,children:`Command`}),(0,k.jsx)(`div`,{className:`flex flex-wrap gap-2`,role:`radiogroup`,"aria-label":`Command preset`,"data-testid":`command-select`,children:H.map((e,t)=>{let n=e.isCustom?I:_===e.id,r=e.isCustom?`0`:t<9?String(t+1):null;return(0,k.jsxs)(`button`,{ref:n?j:void 0,type:`button`,role:`radio`,"aria-checked":n,"aria-keyshortcuts":r??void 0,tabIndex:n?0:-1,onClick:()=>{e.isCustom?ee():F(e.id)},onKeyDown:e=>{let n=t;if(e.key===`ArrowRight`||e.key===`ArrowDown`)e.preventDefault(),n=(t+1)%H.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)e.preventDefault(),n=(t-1+H.length)%H.length;else return;let r=H[n];r.isCustom?ee():F(r.id),(e.currentTarget.parentElement?.querySelectorAll(`[role="radio"]`))?.[n]?.focus()},className:`btn text-xs focus:outline-none focus:ring-2 focus:ring-primary ${n?`btn-primary`:``}`,children:[r&&(0,k.jsx)(`kbd`,{"aria-hidden":`true`,className:`shortcut-badge`,children:r}),(0,k.jsx)(ug,{agentType:e.agentType,command:e.command,className:`inline-block h-3.5 w-3.5 shrink-0`}),e.label]},e.id)})}),(0,k.jsx)(`input`,{value:b,onChange:e=>x(e.target.value),placeholder:`Enter command...`,className:`input mt-2 font-mono text-xs`}),(0,k.jsxs)(`label`,{className:`mt-2 flex items-center gap-2 text-xs ${B?`text-muted opacity-60`:`text-secondary`}`,title:re,children:[(0,k.jsx)(`input`,{type:`checkbox`,checked:z,disabled:B,onChange:e=>V(e.target.checked)}),`yolo mode — skip permission prompts`]})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`mb-1.5 block text-xs text-secondary`,children:`Project Path`}),(0,k.jsxs)(`div`,{className:`flex gap-2`,children:[(0,k.jsx)(`input`,{ref:A,value:p,onChange:e=>m(e.target.value),placeholder:te?`/home/user/project`:s||o||r||`/Users/you/code/my-project`,className:`input flex-1 text-sm`}),!te&&(0,k.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>C(!0),children:`Browse`})]})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`mb-1.5 block text-xs text-secondary`,children:`Display Name`}),(0,k.jsx)(`input`,{value:h,onChange:e=>g(e.target.value),placeholder:`auto-generated`,className:`input text-sm placeholder:italic`})]})]}),(0,k.jsxs)(`div`,{className:`mt-6 flex justify-end gap-2`,children:[(0,k.jsx)(`button`,{type:`button`,onClick:t,className:`btn`,children:`Cancel`}),(0,k.jsx)(`button`,{type:`submit`,className:`btn btn-primary`,children:`Create`})]})]}),S&&!te&&(0,k.jsx)(RJ,{initialPath:oe,onSelect:e=>{m(e),C(!1)},onCancel:()=>C(!1)})]})}var rY=[{id:`new-sessions`,label:`New sessions`},{id:`session-list`,label:`Session list`},{id:`appearance`,label:`Appearance`},{id:`terminal`,label:`Terminal`},{id:`notifications`,label:`Notifications`}];function iY(e){return rY.some(t=>t.id===e)}function aY(e){return rY.find(t=>t.id===e)?.label??e}var oY=`agentboard-settings-page`,sY=`new-sessions`;function cY(){let e=w.getItem(oY);return iY(e)?e:sY}function lY(e){w.setItem(oY,e)}var uY=`h-[32px] max-md:h-[44px]`,dY=`${uY} inline-flex shrink-0 items-center justify-center border text-[12px] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-not-allowed disabled:opacity-50`,fY=`${dY} border-border bg-surface px-3 text-secondary hover:bg-hover hover:text-primary`,pY=`${dY} w-[32px] max-md:w-[44px] border-border bg-surface text-secondary hover:bg-hover hover:text-primary`,mY=`input ${uY} px-2 py-0 text-[13px] max-md:text-[16px] focus-visible:ring-2 focus-visible:ring-accent/40 disabled:opacity-50 aria-[invalid=true]:border-danger`;function hY(e,t){let[n,r]=(0,y.useState)(null),[i,a]=(0,y.useState)(null),o=(0,y.useRef)({draft:n,stored:e,commit:t});o.current={draft:n,stored:e,commit:t},(0,y.useEffect)(()=>()=>{let{draft:e,stored:t,commit:n}=o.current;e!==null&&e!==t&&n(e)},[]);let s=()=>{if(n===null)return;if(n===e){r(null),a(null);return}let i=t(n);if(i){a(i);return}r(null),a(null)};return{value:n??e,error:i,dirty:n!==null,onChange:e=>{r(e.target.value),a(null)},onBlur:s,onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),s()):e.key===`Escape`&&n!==null&&(e.preventDefault(),r(null),a(null))}}}var gY=(0,y.forwardRef)(function({value:e,onCommit:t,describedBy:n,id:r,className:i,wrapperClassName:a,...o},s){let c=hY(e,t),l=r?`${r}-error`:void 0,u=[n,c.error?l:void 0].filter(Boolean).join(` `);return(0,k.jsxs)(`div`,{className:N_(`min-w-0`,a),children:[(0,k.jsx)(`input`,{...o,ref:s,id:r,value:c.value,onChange:c.onChange,onBlur:c.onBlur,onKeyDown:c.onKeyDown,"aria-invalid":c.error?!0:void 0,"aria-describedby":u||void 0,className:N_(mY,i)}),c.error&&(0,k.jsx)(`p`,{id:l,className:N_(`text-[12px] leading-snug text-danger`,`mt-1`),role:`alert`,children:c.error})]})});function _Y(e,t,n){let r=e.trim();return/^-?\d+$/.test(r)?Math.min(n,Math.max(t,Number.parseInt(r,10))):null}function vY({value:e,min:t,max:n,onChange:r,noun:i,labelledBy:a,describedBy:o}){return(0,k.jsxs)(`div`,{role:`group`,"aria-labelledby":a,"aria-describedby":o,className:`flex items-center`,children:[(0,k.jsx)(`button`,{type:`button`,className:pY,"aria-label":`Decrease ${i}`,disabled:e<=t,onClick:()=>r(Math.max(t,e-1)),children:(0,k.jsx)(He,{width:W.default,height:W.default})}),(0,k.jsx)(`output`,{"aria-live":`polite`,className:N_(uY,`flex w-10 items-center justify-center border-y border-border bg-base text-[13px] tabular-nums text-primary`),children:e}),(0,k.jsx)(`button`,{type:`button`,className:pY,"aria-label":`Increase ${i}`,disabled:e>=n,onClick:()=>r(Math.min(n,e+1)),children:(0,k.jsx)(Qe,{width:W.default,height:W.default})})]})}function yY({id:e,value:t,min:n,max:r,step:i,onChange:a,format:o,labelledBy:s,describedBy:c}){return(0,k.jsxs)(`div`,{className:N_(uY,`flex items-center gap-3`),children:[(0,k.jsx)(`input`,{id:e,type:`range`,min:n,max:r,step:i,value:t,"aria-labelledby":s,"aria-describedby":c,"aria-valuetext":o(t),onChange:e=>{let t=Number.parseFloat(e.target.value);Number.isFinite(t)&&a(Math.min(r,Math.max(n,t)))},className:`h-1 w-28 max-md:w-36 cursor-pointer appearance-none bg-border accent-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`}),(0,k.jsx)(`span`,{className:`w-10 text-right text-[13px] tabular-nums text-secondary`,children:o(t)})]})}function bY({options:e,value:t,onChange:n,labelledBy:r,describedBy:i,fill:a=!1}){let o=(0,y.useRef)([]),s=Math.max(0,e.findIndex(e=>e.value===t)),c=t=>{let r=e[t];r&&(n(r.value),o.current[t]?.focus())},l=(t,n)=>{let r=e.length-1,i=null;t.key===`ArrowRight`||t.key===`ArrowDown`?i=n===r?0:n+1:t.key===`ArrowLeft`||t.key===`ArrowUp`?i=n===0?r:n-1:t.key===`Home`?i=0:t.key===`End`&&(i=r),i!==null&&(t.preventDefault(),c(i))};return(0,k.jsx)(`div`,{role:`radiogroup`,"aria-labelledby":r,"aria-describedby":i,className:N_(`flex border border-border bg-base p-[2px]`,a?`w-full`:`w-max max-w-full`),children:e.map((e,t)=>{let n=t===s;return(0,k.jsx)(`button`,{ref:e=>{o.current[t]=e},type:`button`,role:`radio`,"aria-checked":n,tabIndex:n?0:-1,onClick:()=>c(t),onKeyDown:e=>l(e,t),className:N_(`h-[26px] max-md:h-[38px] min-w-0 whitespace-nowrap px-3 text-[12px] transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,a&&`flex-1`,n?`bg-hover text-primary shadow-[inset_0_0_0_1px_var(--border)]`:`text-muted hover:text-primary`),children:e.label},e.value)})})}function xY({ids:e}){return(0,k.jsx)(bY,{options:[{value:`light`,label:`Light`},{value:`dark`,label:`Dark`},{value:`system`,label:`System`}],value:hK(e=>e.theme),onChange:hK(e=>e.setTheme),labelledBy:e.label,describedBy:e.description})}function SY({ids:e}){let t=U(e=>e.fontOption),n=U(e=>e.setFontOption);return(0,k.jsx)(`select`,{id:e.control,value:t,"aria-describedby":e.description,onChange:e=>n(e.target.value),className:`${mY} w-44 max-md:w-full`,children:bt.map(e=>(0,k.jsx)(`option`,{value:e.id,children:e.label},e.id))})}function CY({ids:e}){let t=U(e=>e.customFontFamily);return(0,k.jsx)(gY,{id:e.control,value:t,placeholder:`"Fira Code", monospace`,describedBy:e.description,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,maxLength:256,wrapperClassName:`w-60 max-md:w-full`,onCommit:e=>(U.getState().setCustomFontFamily(e.trim()),null)})}function wY({ids:e}){return(0,k.jsx)(vY,{value:U(e=>e.fontSize),min:6,max:24,onChange:U(e=>e.setFontSize),noun:`font size`,labelledBy:e.label,describedBy:e.description})}function TY({ids:e}){let t=U(e=>e.lineHeight),n=U(e=>e.setLineHeight);return(0,k.jsx)(yY,{id:e.control,value:t,min:1,max:2,step:.1,onChange:e=>n(Math.round(e*10)/10),format:e=>e.toFixed(1),labelledBy:e.label,describedBy:e.description})}function EY({ids:e}){let t=U(e=>e.letterSpacing),n=U(e=>e.setLetterSpacing);return(0,k.jsx)(yY,{id:e.control,value:t,min:-3,max:3,step:1,onChange:e=>n(Math.round(e)),format:e=>`${e}px`,labelledBy:e.label,describedBy:e.description})}var DY=[{id:`theme`,page:`appearance`,label:`Theme`,description:`Light, dark, or follow the system setting.`,keywords:[`dark mode`,`light mode`,`color`,`colour`,`system`],Control:xY},{id:`font-family`,page:`appearance`,label:`Font family`,description:`Terminal typeface. Default JetBrains Mono.`,keywords:[`font`,`typeface`,`monospace`],tags:[`device`],Control:SY},{id:`custom-font-family`,page:`appearance`,label:`Custom font family`,description:`A CSS font-family list. Empty falls back to JetBrains Mono.`,keywords:[`font`,`typeface`,`css`],tags:[`device`],layout:`wide`,visibleWhen:e=>e.fontOption===`custom`,Control:CY},{id:`font-size`,page:`appearance`,label:`Font size`,description:`Terminal text size in pixels (6–24). Default 13.`,keywords:[`font`,`text`,`zoom`,`size`],tags:[`device`],Control:wY},{id:`line-height`,page:`appearance`,label:`Line height`,description:`Vertical spacing, 1.0 compact to 2.0 spacious. Default 1.0.`,keywords:[`spacing`,`leading`,`line`],tags:[`device`],Control:TY},{id:`letter-spacing`,page:`appearance`,label:`Letter spacing`,description:`Extra space between characters in pixels (−3 to 3). Default 0.`,keywords:[`spacing`,`tracking`,`kerning`],tags:[`device`],Control:EY}],OY=1024,kY=[{value:``,label:`Terminal`},{value:`claude`,label:`Claude`},{value:`codex`,label:`Codex`},{value:`pi`,label:`Pi`},{value:`devin`,label:`Devin`},{value:`grok`,label:`Grok`},{value:`omp`,label:`OMP`}];function AY(e,t){let n=t.trim();return e===`label`?n?n.length>64?`Name is at most 64 characters`:null:`Name is required`:n?n.length>1024?`Command is at most ${OY} characters`:null:`Command is required`}function jY(e){return AY(`label`,e.label)===null&&AY(`command`,e.command)===null}function MY(e,t,n){return e.map(e=>e.id===t?wt({...e,...n}):e)}var NY=`grid items-start gap-2 grid-cols-[56px_92px_minmax(0,0.8fr)_minmax(0,1.3fr)_auto] max-md:grid-cols-[minmax(0,1fr)_minmax(0,auto)_auto] max-md:gap-y-2`,PY=4e3;function FY({preset:e,index:t,isDefault:n,pending:r=!1,autoFocusName:i=!1,onSetDefault:a,onCommitField:o,onIconChange:s,onDelete:c}){let[l,u]=(0,y.useState)(!1),d=(0,y.useRef)(null),f=`settings-preset-${e.id}`,p=e.label.trim()||`preset ${t+1}`;return(0,y.useEffect)(()=>{i&&d.current?.focus()},[i]),(0,y.useEffect)(()=>{if(!l)return;let e=setTimeout(()=>u(!1),PY);return()=>clearTimeout(e)},[l]),(0,k.jsxs)(`div`,{role:`listitem`,"data-preset-id":e.id,className:N_(NY,`py-2`),children:[(0,k.jsxs)(`label`,{className:N_(uY,`flex cursor-pointer items-center gap-2 md:justify-center`),children:[(0,k.jsx)(`input`,{type:`radio`,name:`settings-default-preset`,checked:n,disabled:r,onChange:a,"aria-label":`Default preset: ${p}`,className:`size-4 cursor-pointer accent-accent disabled:cursor-not-allowed`}),(0,k.jsx)(`span`,{"aria-hidden":`true`,className:`text-[12px] text-secondary md:hidden`,children:`Default`})]}),e.isBuiltIn?(0,k.jsxs)(`div`,{className:N_(uY,`flex items-center gap-2 text-muted`),children:[(0,k.jsx)(ug,{agentType:e.agentType,command:e.command,className:`size-4`}),(0,k.jsx)(`span`,{className:`text-[11px]`,children:`Built-in`})]}):(0,k.jsx)(`select`,{id:`${f}-icon`,value:e.agentType??``,"aria-label":`Icon for ${p}`,onChange:e=>s(e.target.value||void 0),className:N_(mY,`w-full px-1`),children:kY.map(e=>(0,k.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,k.jsx)(gY,{ref:d,id:`${f}-label`,value:e.label,placeholder:`Name`,"aria-label":`Name of preset ${t+1}`,maxLength:64,onCommit:e=>o(`label`,e),wrapperClassName:`max-md:order-4 max-md:col-span-3`}),(0,k.jsx)(gY,{id:`${f}-command`,value:e.command,placeholder:`command --flags`,"aria-label":`Command for ${p}`,maxLength:OY,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,onCommit:e=>o(`command`,e),wrapperClassName:`max-md:order-5 max-md:col-span-3`}),e.isBuiltIn?(0,k.jsx)(`span`,{"aria-hidden":`true`,className:`w-[32px] max-md:order-3 max-md:w-[44px]`}):(0,k.jsx)(`button`,{type:`button`,onClick:()=>{if(r||l){c();return}u(!0)},onPointerDown:r?e=>e.preventDefault():void 0,onBlur:()=>u(!1),"aria-label":l?`Confirm delete ${p}`:r?`Discard new preset`:`Delete ${p}`,title:l?`Click again to delete`:void 0,className:N_(dY,`max-md:order-3`,l?`border-danger bg-danger/10 px-2 text-danger hover:bg-danger/20`:`w-[32px] border-border bg-surface text-secondary hover:bg-hover hover:text-danger max-md:w-[44px]`),children:l?`Delete?`:(0,k.jsx)(me,{width:W.default,height:W.default})})]})}function IY({ids:e}){let t=U(e=>e.commandPresets),n=U(e=>e.defaultPresetId),[r,i]=(0,y.useState)(null),a=(0,y.useRef)(null),o=(0,y.useRef)(null),s=(0,y.useRef)(!1);(0,y.useEffect)(()=>{if(!s.current)return;s.current=!1;let e=o.current;if(e&&!e.disabled){e.focus();return}let t=a.current?.id;t&&typeof document<`u`&&document.getElementById(`settings-preset-${t}-label`)?.focus()});let c=e=>{a.current=e,i(e)},l=!r&&t.length<50,u=r?[...t,r]:t,d=(e,t,n)=>{let r=AY(t,n);if(r)return r;let{commandPresets:i,setCommandPresets:a}=U.getState();return a(MY(i,e,{[t]:n})),null},f=(e,t)=>{let n=a.current;if(!n)return null;let r={...n,[e]:t},{commandPresets:i,setCommandPresets:o}=U.getState();return jY(r)&&i.length<50?(o([...i,wt(r)]),c(null)):c(r),null},p=(e,t)=>{if(r?.id===e){c({...r,agentType:t});return}let{commandPresets:n,setCommandPresets:i}=U.getState();i(MY(n,e,{agentType:t}))},m=()=>{l&&c({id:Et(new Set(t.map(e=>e.id))),label:``,command:``,isBuiltIn:!1})},h=e=>{s.current=!0,a.current?.id===e?c(null):U.getState().removePreset(e)};return(0,k.jsxs)(`div`,{className:`w-full min-w-0`,children:[(0,k.jsxs)(`div`,{"aria-hidden":`true`,className:N_(NY,`border-b border-border pb-1 text-[11px] uppercase tracking-wide text-muted max-md:hidden`),children:[(0,k.jsx)(`span`,{className:`text-center`,children:`Default`}),(0,k.jsx)(`span`,{children:`Icon`}),(0,k.jsx)(`span`,{children:`Name`}),(0,k.jsx)(`span`,{children:`Command`}),(0,k.jsx)(`span`,{className:`w-[32px]`})]}),(0,k.jsx)(`div`,{role:`list`,"aria-labelledby":e.label,"aria-describedby":e.description,className:`divide-y divide-border-subtle`,children:u.map((e,t)=>{let i=e.id===r?.id;return(0,k.jsx)(FY,{preset:e,index:t,isDefault:e.id===n,pending:i,autoFocusName:i,onSetDefault:()=>U.getState().setDefaultPresetId(e.id),onCommitField:(t,n)=>i?f(t,n):d(e.id,t,n),onIconChange:t=>p(e.id,t),onDelete:()=>h(e.id)},e.id)})}),r&&(0,k.jsx)(`p`,{className:N_(`text-[12px] leading-snug text-muted`,`pb-2`),role:`status`,children:`Enter a name and a command to add the preset.`}),(0,k.jsxs)(`div`,{className:`mt-2 flex items-center gap-3`,children:[(0,k.jsxs)(`button`,{ref:o,type:`button`,className:fY,onClick:m,disabled:!l,children:[(0,k.jsx)(Qe,{width:W.default,height:W.default,className:`mr-1.5`}),`Add preset`]}),t.length>=50&&(0,k.jsxs)(`span`,{className:`text-[12px] leading-snug text-muted`,children:[`Maximum of `,50,` presets.`]})]})]})}function LY({ids:e}){let t=U(e=>e.defaultProjectDir);return(0,k.jsx)(gY,{id:e.control,value:t,placeholder:_t,describedBy:e.description,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,maxLength:4096,wrapperClassName:`w-72 max-md:w-full`,onCommit:e=>(U.getState().setDefaultProjectDir(e.trim()||`~/Documents/GitHub`),null)})}var RY=[{id:`default-project-dir`,page:`new-sessions`,label:`Default project directory`,description:`Folder the new session dialog starts in. Default ${_t}.`,keywords:[`path`,`folder`,`cwd`,`directory`],layout:`wide`,Control:LY},{id:`command-presets`,page:`new-sessions`,label:`Command presets`,description:`Commands offered when creating a session. The default preset is pre-selected.`,keywords:[`preset`,`command`,`agent`,`claude`,`codex`,`default`,`icon`],layout:`block`,Control:IY}],zY=null,BY=!1,VY={},HY=500;function UY(){if(typeof window>`u`)return null;if(zY?.state===`closed`&&(zY=null),!zY){let e=window.AudioContext??window.webkitAudioContext;if(!e)return null;zY=new e}return zY}function WY(){zY&&=(zY.close().catch(()=>{}),null),UY()}function GY(){return BY}function KY(){zY&&(WY(),BY=!0)}if(typeof window<`u`){window.addEventListener(`pageshow`,e=>{e.persisted&&KY()}),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&KY()});let e=Date.now();setInterval(()=>{let t=Date.now();t-e>15e3&&KY(),e=t},5e3)}async function qY(){let e=UY();e&&e.state===`suspended`&&await e.resume().catch(()=>{}),BY=!1}async function JY(e){e.state===`suspended`&&await e.resume().catch(()=>{})}async function YY(e){let t=UY();if(!t||(await JY(t),t.state!==`running`))return;let{frequencies:n,durationMs:r,attackMs:i,peakGain:a,type:o=`sine`}=e,s=t.currentTime,c=r/1e3,l=i/1e3,u=t.createGain();u.connect(t.destination);let d=s+c*.7;u.gain.setValueAtTime(0,s),u.gain.linearRampToValueAtTime(a,s+l),u.gain.setValueAtTime(a,d),u.gain.linearRampToValueAtTime(0,s+c);let f=n.map(e=>{let n=t.createOscillator();return n.type=o,n.frequency.setValueAtTime(e,s),n.connect(u),n});for(let e of f)e.start(s),e.stop(s+c);let p=f[f.length-1];p.onended=()=>{for(let e of f)e.disconnect();u.disconnect()}}async function XY(){let e=Date.now();if(!(e-(VY.permission||0)<HY)){VY.permission=e;try{await YY({frequencies:[880],durationMs:150,attackMs:5,peakGain:.15,type:`sine`})}catch{}}}async function ZY(){let e=Date.now();if(!(e-(VY.idle||0)<HY)){VY.idle=e;try{await YY({frequencies:[440,550],durationMs:300,attackMs:10,peakGain:.08,type:`sine`})}catch{}}}function QY({controlled:e,default:t,name:n,state:r=`value`}){let{current:i}=y.useRef(e!==void 0),[a,o]=y.useState(t);return[i?e:a,y.useCallback(e=>{i||o(e)},[])]}var $Y={};function eX(e,t){let n=y.useRef($Y);return n.current===$Y&&(n.current=e(t)),n}var tX=y[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],nX=tX&&tX!==y.useLayoutEffect?tX:e=>e();function rX(e){let t=eX(iX).current;return t.next=e,nX(t.effect),t.trampoline}function iX(){let e={next:void 0,callback:aX,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function aX(){}function oX(e,t,n,r){let i=eX(cX).current;return lX(i,e,t,n,r)&&dX(i,[e,t,n,r]),i.callback}function sX(e){let t=eX(cX).current;return uX(t,e)&&dX(t,e),t.callback}function cX(){return{callback:null,cleanup:null,refs:[]}}function lX(e,t,n,r,i){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==i}function uX(e,t){return e.refs.length!==t.length||e.refs.some((e,n)=>e!==t[n])}function dX(e,t){if(e.refs=t,t.every(e=>e==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&=(e.cleanup(),null),n!=null){let r=Array(t.length).fill(null);for(let e=0;e<t.length;e+=1){let i=t[e];if(i!=null)switch(typeof i){case`function`:{let t=i(n);typeof t==`function`&&(r[e]=t);break}case`object`:i.current=n;break;default:}}e.cleanup=()=>{for(let e=0;e<t.length;e+=1){let n=t[e];if(n!=null)switch(typeof n){case`function`:{let t=r[e];typeof t==`function`?t():n(null);break}case`object`:n.current=null;break;default:}}}}}}var fX=typeof document<`u`?y.useLayoutEffect:()=>{},pX={clipPath:`inset(50%)`,overflow:`hidden`,whiteSpace:`nowrap`,border:0,padding:0,width:1,height:1,margin:-1},mX={...pX,position:`fixed`,top:0,left:0},hX={...pX,position:`absolute`};function gX(){}Object.freeze([]);var _X=Object.freeze({});function vX(e,...t){let n=new URL(`https://base-ui.com/production-error`);return n.searchParams.set(`code`,e.toString()),t.forEach(e=>n.searchParams.append(`args[]`,e)),`Base UI error #${e}; visit ${n} for the full message.`}var yX=18;function bX(e){return yX>=e}function xX(e){if(!y.isValidElement(e))return null;let t=e,n=t.props;return(bX(19)?n?.ref:t.ref)??null}function SX(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function CX(e,t){let n={};for(let r in e){let i=e[r];if(t?.hasOwnProperty(r)){let e=t[r](i);e!=null&&Object.assign(n,e);continue}i===!0?n[`data-${r.toLowerCase()}`]=``:i&&(n[`data-${r.toLowerCase()}`]=i.toString())}return n}function wX(e,t){return typeof e==`function`?e(t):e}function TX(e,t){return typeof e==`function`?e(t):e}var EX={};function DX(e,t,n,r,i){let a={...NX(e,EX)};return t&&(a=kX(a,t)),n&&(a=kX(a,n)),r&&(a=kX(a,r)),i&&(a=kX(a,i)),a}function OX(e){if(e.length===0)return EX;if(e.length===1)return NX(e[0],EX);let t={...NX(e[0],EX)};for(let n=1;n<e.length;n+=1)t=kX(t,e[n]);return t}function kX(e,t){return MX(t)?t(e):AX(e,t)}function AX(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case`style`:e[n]=SX(e.style,r);break;case`className`:e[n]=IX(e.className,r);break;default:jX(n,r)?e[n]=PX(e[n],r):e[n]=r}}return e}function jX(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),i=e.charCodeAt(2);return n===111&&r===110&&i>=65&&i<=90&&(typeof t==`function`||t===void 0)}function MX(e){return typeof e==`function`}function NX(e,t){return MX(e)?e(t):e??EX}function PX(e,t){return t?e?n=>{if(LX(n)){let r=n;FX(r);let i=t(r);return r.baseUIHandlerPrevented||e?.(r),i}let r=t(n);return e?.(n),r}:t:e}function FX(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function IX(e,t){return t?e?t+` `+e:t:e}function LX(e){return typeof e==`object`&&!!e&&`nativeEvent`in e}function RX(e,t,n={}){let r=t.render,i=zX(t,n);return n.enabled===!1?null:VX(e,r,i,n.state??_X)}function zX(e,t={}){let{className:n,style:r,render:i}=e,{state:a=_X,ref:o,props:s,stateAttributesMapping:c,enabled:l=!0}=t,u=l?wX(n,a):void 0,d=l?TX(r,a):void 0,f=l?CX(a,c):_X,p=l?SX(f,Array.isArray(s)?OX(s):s)??_X:_X;return typeof document<`u`&&(l?Array.isArray(o)?p.ref=sX([p.ref,xX(i),...o]):p.ref=oX(p.ref,xX(i),o):oX(null,null)),l?(u!==void 0&&(p.className=IX(p.className,u)),d!==void 0&&(p.style=SX(p.style,d)),p):_X}var BX=Symbol.for(`react.lazy`);function VX(e,t,n,r){if(t){if(typeof t==`function`)return t(n,r);let e=DX(n,t.props);e.ref=n.ref;let i=t;return i?.$$typeof===BX&&(i=y.Children.toArray(t)[0]),y.cloneElement(i,e)}if(e&&typeof e==`string`)return HX(e,n);throw Error(vX(8))}function HX(e,t){return e===`button`?(0,y.createElement)(`button`,{type:`button`,...t,key:t.key}):e===`img`?(0,y.createElement)(`img`,{alt:``,...t,key:t.key}):y.createElement(e,t)}var UX={...y},WX=0;function GX(e,t=`mui`){let[n,r]=y.useState(e),i=e||n;return y.useEffect(()=>{n??(WX+=1,r(`${t}-${WX}`))},[n,t]),i}var KX=UX.useId;function qX(e,t){if(KX!==void 0){let n=KX();return e??(t?`${t}-${n}`:n)}return GX(e,t)}function JX(e){return qX(e,`base-ui`)}function YX(){return typeof window<`u`}function XX(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function ZX(e){return YX()?e instanceof Element||e instanceof XX(e).Element:!1}function QX(e){return YX()?e instanceof HTMLElement||e instanceof XX(e).HTMLElement:!1}function $X(e){return!YX()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof XX(e).ShadowRoot}var eZ=y.createContext(void 0);function tZ(e=!1){let t=y.useContext(eZ);if(t===void 0&&!e)throw Error(vX(16));return t}function nZ(e){let{focusableWhenDisabled:t,disabled:n,composite:r=!1,tabIndex:i=0,isNativeButton:a}=e,o=r&&t!==!1,s=r&&t===!1;return{props:y.useMemo(()=>{let e={onKeyDown(e){n&&t&&e.key!==`Tab`&&e.preventDefault()}};return r||(e.tabIndex=i,!a&&n&&(e.tabIndex=t?i:-1)),(a&&(t||o)||!a&&n)&&(e[`aria-disabled`]=n),a&&(!t||s)&&(e.disabled=n),e},[r,n,t,o,s,a,i])}}function rZ(e={}){let{disabled:t=!1,focusableWhenDisabled:n,tabIndex:r=0,native:i=!0}=e,a=y.useRef(null),o=tZ(!0)!==void 0,s=rX(()=>{let e=a.current;return!!(e?.tagName===`A`&&e?.href)}),{props:c}=nZ({focusableWhenDisabled:n,disabled:t,composite:o,tabIndex:r,isNativeButton:i}),l=y.useCallback(()=>{let e=a.current;iZ(e)&&o&&t&&c.disabled===void 0&&e.disabled&&(e.disabled=!1)},[t,c.disabled,o]);return fX(l,[l]),{getButtonProps:y.useCallback((e={})=>{let{onClick:n,onMouseDown:r,onKeyUp:a,onKeyDown:o,onPointerDown:l,...u}=e;return DX({type:i?`button`:void 0,onClick(e){if(t){e.preventDefault();return}n?.(e)},onMouseDown(e){t||r?.(e)},onKeyDown(e){if(t||(FX(e),o?.(e)),e.baseUIHandlerPrevented)return;let r=e.target===e.currentTarget&&!i&&!s()&&!t,a=e.key===`Enter`,c=e.key===` `;r&&((c||a)&&e.preventDefault(),a&&n?.(e))},onKeyUp(e){t||(FX(e),a?.(e)),!e.baseUIHandlerPrevented&&e.target===e.currentTarget&&!i&&!t&&e.key===` `&&n?.(e)},onPointerDown(e){if(t){e.preventDefault();return}l?.(e)}},i?void 0:{role:`button`},c,u)},[t,c,i,s]),buttonRef:rX(e=>{a.current=e,l()})}}function iZ(e){return QX(e)&&e.tagName===`BUTTON`}var aZ=y.createContext(void 0);function oZ(){let e=y.useContext(aZ);if(e===void 0)throw Error(vX(63));return e}var sZ=function(e){return e.disabled=`data-disabled`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),cZ={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},lZ={valid(e){return e===null?null:e?{[sZ.valid]:``}:{[sZ.invalid]:``}}},uZ=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),dZ={...lZ,checked(e){return e?{[uZ.checked]:``}:{[uZ.unchecked]:``}}};function fZ(e,t){return{...e,state:{...e.state,valid:!t&&e.state.valid}}}var pZ=y.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:gX,validationMode:`onSubmit`,submitAttemptedRef:{current:!1}});function mZ(){return y.useContext(pZ)}var hZ=y.createContext({invalid:void 0,name:void 0,validityData:{state:cZ,errors:[],error:``,value:``,initialValue:null},setValidityData:gX,disabled:void 0,touched:!1,setTouched:gX,dirty:!1,setDirty:gX,filled:!1,setFilled:gX,focused:!1,setFocused:gX,validate:()=>null,validationMode:`onSubmit`,validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:{disabled:!1,valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},markedDirtyRef:{current:!1},validation:{getValidationProps:(e=_X)=>e,getInputValidationProps:(e=_X)=>e,inputRef:{current:null},commit:async()=>{}}});function gZ(e=!0){let t=y.useContext(hZ);if(t.setValidityData===gX&&!e)throw Error(vX(28));return t}function _Z(e){let{enabled:t=!0,value:n,id:r,name:i,controlRef:a,commit:o}=e,{formRef:s}=mZ(),{invalid:c,markedDirtyRef:l,validityData:u,setValidityData:d}=gZ(),f=rX(e.getValue);fX(()=>{if(!t)return;let e=n;e===void 0&&(e=f()),u.initialValue===null&&e!==null&&d(t=>({...t,initialValue:e}))},[t,d,n,u.initialValue,f]),fX(()=>{!t||!r||s.current.fields.set(r,{getValue:f,name:i,controlRef:a,validityData:fZ(u,c),validate(e=!0){let t=n;t===void 0&&(t=f()),l.current=!0,e?uf.flushSync(()=>o(t)):o(t)}})},[o,a,t,s,f,r,c,l,i,u,n]),fX(()=>{let e=s.current.fields;return()=>{r&&e.delete(r)}},[s,r])}var vZ=y.createContext({controlId:void 0,registerControlId:gX,labelId:void 0,setLabelId:gX,messageIds:[],setMessageIds:gX,getDescriptionProps:e=>e});function yZ(){return y.useContext(vZ)}function bZ(e={}){let{id:t,implicit:n=!1,controlRef:r}=e,{controlId:i,registerControlId:a}=yZ(),o=JX(t),s=n?i:void 0,c=eX(()=>Symbol(`labelable-control`)),l=y.useRef(!1),u=y.useRef(t!=null),d=rX(()=>{!l.current||a===gX||(l.current=!1,a(c.current,void 0))});return fX(()=>{if(a===gX)return;let e;if(n){let n=r?.current;e=ZX(n)&&n.closest(`label`)!=null?t??null:s??o}else if(t!=null)u.current=!0,e=t;else if(u.current)e=o;else{d();return}if(e===void 0){d();return}l.current=!0,a(c.current,e)},[t,r,s,a,n,o,c,d]),y.useEffect(()=>d,[d]),i??o}var xZ=`none`;function SZ(e,t,n,r){let i=!1,a=!1,o=r??_X;return{reason:e,event:t??new Event(`base-ui`),cancel(){i=!0},allowPropagation(){a=!0},get isCanceled(){return i},get isPropagationAllowed(){return a},trigger:n,...o}}function CZ(e,t){let n=y.useRef(e),r=rX(t);fX(()=>{n.current!==e&&r(n.current)},[e,r]),fX(()=>{n.current=e},[e])}var wZ=y.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:i,id:a,inputRef:o,name:s,nativeButton:c=!1,onCheckedChange:l,readOnly:u=!1,required:d=!1,disabled:f=!1,render:p,uncheckedValue:m,value:h,...g}=e,{clearErrors:_}=mZ(),{state:v,setTouched:b,setDirty:x,validityData:S,setFilled:C,setFocused:w,shouldValidateOnChange:T,validationMode:E,disabled:D,name:O,validation:A}=gZ(),{labelId:j}=yZ(),M=D||f,N=O??s,P=rX(l),F=y.useRef(null),ee=oX(F,o,A.inputRef),I=y.useRef(null),te=JX(),L=bZ({id:a,implicit:!1,controlRef:I}),R=c?void 0:L,[z,ne]=QY({controlled:n,default:!!i,name:`Switch`,state:`checked`});_Z({id:te,commit:A.commit,value:z,controlRef:I,name:N,getValue:()=>z}),fX(()=>{F.current&&C(F.current.checked)},[F,C]),CZ(z,()=>{_(N),x(z!==S.initialValue),C(z),T()?A.commit(z):A.commit(z,!0)});let{getButtonProps:B,buttonRef:re}=rZ({disabled:M,native:c}),V={id:c?L:te,role:`switch`,"aria-checked":z,"aria-readonly":u||void 0,"aria-required":d||void 0,"aria-labelledby":j,onFocus(){M||w(!0)},onBlur(){let e=F.current;!e||M||(b(!0),w(!1),E===`onBlur`&&A.commit(e.checked))},onClick(e){u||M||(e.preventDefault(),F.current?.dispatchEvent(new PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey})))}},ie=y.useMemo(()=>DX({checked:z,disabled:M,id:R,name:N,required:d,style:N?hX:mX,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,ref:ee,onChange(e){if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked,n=SZ(xZ,e.nativeEvent);P?.(t,n),!n.isCanceled&&ne(t)},onFocus(){I.current?.focus()}},A.getInputValidationProps,h===void 0?_X:{value:h}),[z,M,ee,R,N,P,d,ne,A,h]),H=y.useMemo(()=>({...v,checked:z,disabled:M,readOnly:u,required:d}),[v,z,M,u,d]),ae=RX(`span`,e,{state:H,ref:[t,I,re],props:[V,A.getValidationProps,g,B],stateAttributesMapping:dZ});return(0,k.jsxs)(aZ.Provider,{value:H,children:[ae,!z&&N&&m!==void 0&&(0,k.jsx)(`input`,{type:`hidden`,name:N,value:m}),(0,k.jsx)(`input`,{...ie})]})}),TZ=y.forwardRef(function(e,t){let{render:n,className:r,...i}=e,{state:a}=gZ(),o=oZ();return RX(`span`,e,{state:{...a,...o},ref:t,stateAttributesMapping:dZ,props:i})});function EZ({checked:e,onCheckedChange:t,disabled:n,className:r,ariaLabel:i,id:a,ariaLabelledBy:o,ariaDescribedBy:s}){return(0,k.jsx)(wZ,{checked:e,onCheckedChange:t,disabled:n,"aria-label":i,id:a,"aria-labelledby":o,"aria-describedby":s,className:N_(`group relative inline-flex h-6 w-10 shrink-0 cursor-pointer items-center rounded-full transition-colors`,`bg-border data-[checked]:bg-accent`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base`,`disabled:cursor-not-allowed disabled:opacity-50`,r),children:(0,k.jsx)(TZ,{className:N_(`pointer-events-none block size-4 rounded-full bg-white shadow-sm transition-transform`,`translate-x-1 group-data-[checked]:translate-x-5`)})})}function DZ(e,t,n,r){return function({ids:i}){let a=U(t=>t[e]),o=U(e=>e[t]);return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`button`,{type:`button`,className:fY,"aria-label":`Test ${r}`,onClick:()=>void n(),children:`Test`}),(0,k.jsx)(EZ,{className:Wt,id:i.control,checked:a,onCheckedChange:e=>{o(e),e&&qY()},ariaLabelledBy:i.label,ariaDescribedBy:i.description})]})}}var OZ=[{id:`sound-permission`,page:`notifications`,label:`Permission sound`,description:`Play a ping when any session needs permission.`,keywords:[`sound`,`audio`,`alert`,`ping`,`approval`],Control:DZ(`soundOnPermission`,`setSoundOnPermission`,XY,`permission sound`)},{id:`sound-idle`,page:`notifications`,label:`Idle sound`,description:`Play a chime when a session finishes working.`,keywords:[`sound`,`audio`,`alert`,`chime`,`done`,`finished`],Control:DZ(`soundOnIdle`,`setSoundOnIdle`,ZY,`idle sound`)}];function kZ(e,t,n){let r=`/api/settings/${e}`,[i,a]=(0,y.useState)(n),[o,s]=(0,y.useState)(!0),[c,l]=(0,y.useState)(!1),u=(0,y.useRef)(n),d=(0,y.useRef)(Promise.resolve()),f=(0,y.useRef)(0),p=(0,y.useRef)(!0),m=(0,y.useRef)(!1);return(0,y.useEffect)(()=>{p.current=!0;let e=!0;return fetch(r).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()}).then(n=>{if(!e)return;let r=n[t];f.current===0&&!m.current&&(u.current=r),m.current||a(r)}).catch(()=>{}).finally(()=>{e&&(l(!0),f.current===0&&s(!1))}),()=>{e=!1,p.current=!1}},[r,t]),{value:i,loading:o,loaded:c,set:(0,y.useCallback)(e=>{m.current=!0,f.current+=1,a(e),s(!0),d.current=d.current.then(()=>fetch(r,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({[t]:e})}).then(t=>{if(!t.ok)throw Error(`HTTP ${t.status}`);u.current=e}).catch(()=>{p.current&&f.current===1&&a(u.current)}).finally(()=>{--f.current,p.current&&f.current===0&&s(!1)}))},[r,t])}}function AZ(e,t){return function({ids:n}){let r=U(t=>t[e]),i=U(e=>e[t]);return(0,k.jsx)(EZ,{className:Wt,id:n.control,checked:r,onCheckedChange:i,ariaLabelledBy:n.label,ariaDescribedBy:n.description})}}function jZ({ids:e}){return(0,k.jsx)(bY,{options:[{value:`created`,label:`Created`},{value:`status`,label:`Status`},{value:`manual`,label:`Manual`}],value:U(e=>e.sessionSortMode),onChange:U(e=>e.setSessionSortMode),labelledBy:e.label,describedBy:e.description})}function MZ(){let e=U(e=>e.sessionSortMode);return e===`status`?(0,k.jsx)(k.Fragment,{children:`Permission sessions come first; the rest sort by newest activity.`}):e===`manual`?(0,k.jsx)(k.Fragment,{children:`Drag sessions in the sidebar to reorder them.`}):(0,k.jsx)(k.Fragment,{children:`Sessions stay in the order they were created.`})}function NZ({ids:e}){return(0,k.jsx)(bY,{options:[{value:`desc`,label:`Newest first`},{value:`asc`,label:`Oldest first`}],value:U(e=>e.sessionSortDirection),onChange:U(e=>e.setSessionSortDirection),labelledBy:e.label,describedBy:e.description})}function PZ({ids:e}){return(0,k.jsx)(bY,{options:[{value:`top`,label:`Top`},{value:`bottom`,label:`Bottom`}],value:U(e=>e.sidebarAnchor),onChange:U(e=>e.setSidebarAnchor),labelledBy:e.label,describedBy:e.description})}function FZ(){return U(e=>e.sidebarAnchor)===`bottom`?(0,k.jsx)(k.Fragment,{children:`The sidebar is mirrored: the first session sits at the bottom, next to the prompt.`}):(0,k.jsx)(k.Fragment,{children:`The first session sits at the top of the sidebar.`})}function IZ({ids:e}){let{value:t,loaded:n,set:r}=kZ(`history-max-age-hours`,`hours`,24);return(0,k.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,k.jsx)(gY,{id:e.control,type:`text`,inputMode:`numeric`,value:String(t),disabled:!n,describedBy:e.description,wrapperClassName:`w-20`,className:`text-center tabular-nums`,onCommit:e=>{let n=_Y(e,1,168);return n===null?`Enter 1–168`:(n!==t&&r(n),null)}}),(0,k.jsx)(`span`,{className:`flex h-[32px] items-center text-[12px] text-muted max-md:h-[44px]`,children:`hours`})]})}function LZ({ids:e}){let{value:t,loaded:n,set:r}=kZ(`prefer-window-name`,`enabled`,!1);return(0,k.jsx)(EZ,{className:Wt,id:e.control,checked:t,onCheckedChange:r,disabled:!n,ariaLabelledBy:e.label,ariaDescribedBy:e.description})}var RZ=[{id:`sort-order`,page:`session-list`,label:`Sort order`,description:`Created keeps creation order, Status re-sorts by status, Manual lets you drag.`,keywords:[`sort`,`order`,`created`,`status`,`manual`,`drag`],layout:`wide`,Description:MZ,Control:jZ},{id:`sort-direction`,page:`session-list`,label:`Sort direction`,description:`Newest or oldest sessions first.`,keywords:[`sort`,`newest`,`oldest`,`ascending`,`descending`],layout:`wide`,visibleWhen:e=>e.sessionSortMode===`created`,Control:NZ},{id:`sidebar-anchor`,page:`session-list`,label:`Sidebar anchor`,description:`Top lists the first session at the top; Bottom mirrors the sidebar.`,keywords:[`sidebar`,`mirror`,`top`,`bottom`],tags:[`desktop`],Description:FZ,Control:PZ},{id:`show-project-name`,page:`session-list`,label:`Project name`,description:`Show the project folder name under each session.`,keywords:[`folder`,`details`],Control:AZ(`showProjectName`,`setShowProjectName`)},{id:`show-last-user-message`,page:`session-list`,label:`Last user message`,description:`Show the most recent prompt next to the project name.`,keywords:[`prompt`,`input`,`details`],Control:AZ(`showLastUserMessage`,`setShowLastUserMessage`)},{id:`show-session-id-prefix`,page:`session-list`,label:`Session ID prefix`,description:`Show the first 5 characters of the agent session ID.`,keywords:[`id`,`uuid`,`details`],Control:AZ(`showSessionIdPrefix`,`setShowSessionIdPrefix`)},{id:`history-lookback`,page:`session-list`,label:`History lookback`,description:`Show history sessions from the last N hours (1–168), up to the 100 most recent. Default 24.`,keywords:[`history`,`hours`,`age`,`inactive`,`past`],Control:IZ},{id:`prefer-window-name`,page:`session-list`,label:`Prefer window names`,description:`Label discovered sessions with their tmux window name instead of the session name.`,keywords:[`tmux`,`window`,`name`,`title`],Control:LZ}],zZ=`1-9 [ ] N X ,`;function BZ({ids:e}){let t=U(e=>e.useWebGL),n=U(e=>e.setUseWebGL);return(0,k.jsx)(EZ,{className:Wt,id:e.control,checked:t,onCheckedChange:n,ariaLabelledBy:e.label,ariaDescribedBy:e.description})}function VZ(e,t){return function({ids:n}){let{value:r,loaded:i,set:a}=kZ(e,`enabled`,t);return(0,k.jsx)(EZ,{className:Wt,id:n.control,checked:r,onCheckedChange:a,disabled:!i,ariaLabelledBy:n.label,ariaDescribedBy:n.description})}}var HZ=[`auto`,`ctrl-option`,`ctrl-shift`,`cmd-option`,`cmd-shift`];function UZ({ids:e}){let t=U(e=>e.shortcutModifier),n=U(e=>e.setShortcutModifier);return(0,k.jsx)(bY,{options:HZ.map(e=>({value:e,label:e===`auto`?`Auto`:Pt(e)})),value:t,onChange:n,labelledBy:e.label,describedBy:e.description})}function WZ(){return(0,k.jsxs)(k.Fragment,{children:[`Shortcuts: `,Pt(Mt(U(e=>e.shortcutModifier))),` + `,zZ,` (sessions, navigate, new, kill, settings).`]})}var GZ=[{id:`webgl`,page:`terminal`,label:`WebGL acceleration`,description:`GPU rendering for better performance. Turn off if text looks fuzzy or flickers (common in Safari).`,keywords:[`gpu`,`renderer`,`canvas`,`blurry`,`performance`],tags:[`device`],Control:BZ},{id:`mouse-mode`,page:`terminal`,label:`Mouse mode`,description:`tmux mouse mode for trackpad and scroll wheel support.`,keywords:[`tmux`,`scroll`,`trackpad`,`mouse`],Control:VZ(`tmux-mouse-mode`,!0)},{id:`terminal-colors`,page:`terminal`,label:`Terminal colors`,description:`Preserve ANSI colors in terminal output. Hibernate then Wake running agents after changing this.`,keywords:[`ansi`,`color`,`colour`],Control:VZ(`terminal-colors`,!0)},{id:`shortcut-modifier`,page:`terminal`,label:`Keyboard shortcut modifier`,description:`Modifier keys for the app shortcuts. Auto picks ⌃⌥ on macOS, ⌃⇧ elsewhere.`,keywords:[`keyboard`,`shortcut`,`hotkey`,`ctrl`,`cmd`,`option`,`shift`],tags:[`desktop`,`device`],layout:`wide`,Description:WZ,Control:UZ}],KZ=[...RY,...RZ,...DY,...GZ,...OZ];function qZ(e,t=KZ){return t.filter(t=>t.page===e)}function JZ(e){return[e.label,e.description,...e.keywords??[]].join(` `).toLowerCase()}function YZ(e,t=KZ){let n=e.trim().toLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[]:t.filter(e=>{let t=JZ(e);return n.every(e=>t.includes(e))})}function XZ(e){return rY.map(t=>({page:t.id,label:t.label,rows:e.filter(e=>e.page===t.id)})).filter(e=>e.rows.length>0)}var ZZ={desktop:`Desktop`,device:`This device`},QZ={desktop:`Only affects the desktop layout`,device:`Stored in this browser only; not synced to other devices`};function $Z({tag:e}){return(0,k.jsx)(`span`,{title:QZ[e],className:`shrink-0 border border-border px-1 py-px text-[10px] uppercase leading-none tracking-wide text-muted`,children:ZZ[e]})}function eQ(e){let t=`settings-${e}`;return{control:`${t}-control`,label:`${t}-label`,description:`${t}-desc`}}function tQ({row:e}){let t=eQ(e.id),n=e.layout??`inline`,{Control:r,Description:i}=e;return(0,k.jsxs)(`div`,{"data-setting-row":e.id,className:N_(`flex gap-x-6 gap-y-3 py-4`,n===`block`&&`flex-col`,n===`wide`&&`items-center max-md:flex-col max-md:items-stretch`,n===`inline`&&`items-center`),children:[(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,k.jsx)(`label`,{id:t.label,htmlFor:t.control,className:`text-[14px] leading-snug text-primary`,children:e.label}),e.tags?.map(e=>(0,k.jsx)($Z,{tag:e},e))]}),(0,k.jsx)(`div`,{id:t.description,className:`mt-1 text-[12px] leading-snug text-muted text-pretty`,children:i?(0,k.jsx)(i,{}):e.description})]}),(0,k.jsx)(`div`,{className:N_(`flex min-w-0 items-center gap-2`,n===`inline`?`shrink-0`:`max-w-full`),children:(0,k.jsx)(r,{ids:t})})]})}function nQ(e,t){return e.visibleWhen?e.visibleWhen(t):!0}function rQ({rows:e}){let t=U(t=>e.map(e=>nQ(e,t)?`1`:`0`).join(``));return(0,k.jsx)(`div`,{className:`divide-y divide-border`,children:e.filter((e,n)=>t[n]===`1`).map(e=>(0,k.jsx)(tQ,{row:e},e.id))})}function iQ({page:e,showTitle:t}){let n=(0,y.useMemo)(()=>qZ(e),[e]);return(0,k.jsxs)(`section`,{"aria-labelledby":t?`settings-page-${e}-title`:void 0,children:[t&&(0,k.jsx)(`h3`,{id:`settings-page-${e}-title`,className:`pb-1 text-[18px] font-semibold leading-tight text-primary`,children:aY(e)}),(0,k.jsx)(rQ,{rows:n})]})}function aQ({query:e}){let t=(0,y.useMemo)(()=>YZ(e),[e]),n=U(e=>t.some(t=>nQ(t,e))),r=(0,y.useMemo)(()=>XZ(t),[t]);return n?(0,k.jsx)(`div`,{className:`flex flex-col gap-6`,children:r.map(e=>(0,k.jsx)(oQ,{label:e.label,rows:e.rows},e.page))}):(0,k.jsxs)(`div`,{role:`status`,className:`flex flex-col items-center gap-1 py-16 text-center`,children:[(0,k.jsxs)(`p`,{className:`text-[14px] text-primary`,children:[`No settings match “`,e.trim(),`”`]}),(0,k.jsx)(`p`,{className:`text-[12px] text-muted`,children:`Try a different word, like “font” or “sound”.`})]})}function oQ({label:e,rows:t}){return U(e=>t.some(t=>nQ(t,e)))?(0,k.jsxs)(`section`,{"aria-label":e,children:[(0,k.jsx)(`h3`,{className:`border-b border-border pb-1 text-[11px] font-medium uppercase tracking-wider text-muted`,children:e}),(0,k.jsx)(rQ,{rows:t})]}):null}function sQ(e){return`settings-tab-${e}`}function cQ(e,t,n){return e===`ArrowDown`?(t+1)%n:e===`ArrowUp`?(t-1+n)%n:e===`Home`?0:e===`End`?n-1:null}function lQ({variant:e,current:t,onSelect:n,panelId:r}){let i=(0,y.useRef)([]),a=Math.max(0,rY.findIndex(e=>e.id===t)),o=(t,r)=>{let a=cQ(t.key,r,rY.length);a!==null&&(t.preventDefault(),i.current[a]?.focus(),e===`tabs`&&n(rY[a].id))};return e===`list`?(0,k.jsx)(`nav`,{"aria-label":`Settings pages`,children:(0,k.jsx)(`ul`,{className:`divide-y divide-border border-y border-border`,children:rY.map((e,t)=>(0,k.jsx)(`li`,{children:(0,k.jsxs)(`button`,{ref:e=>{i.current[t]=e},type:`button`,"data-page-id":e.id,onClick:()=>n(e.id),onKeyDown:e=>o(e,t),className:`flex min-h-[52px] w-full items-center justify-between gap-3 px-4 text-left text-[15px] text-primary active:bg-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`,children:[e.label,(0,k.jsx)(B,{width:W.primary,height:W.primary,className:`text-muted`,"aria-hidden":`true`})]})},e.id))})}):(0,k.jsx)(`div`,{role:`tablist`,"aria-orientation":`vertical`,"aria-label":`Settings pages`,className:`flex flex-col gap-px`,children:rY.map((e,s)=>{let c=e.id===t;return(0,k.jsx)(`button`,{ref:e=>{i.current[s]=e},id:sQ(e.id),type:`button`,role:`tab`,"aria-selected":c,"aria-controls":r,tabIndex:s===a?0:-1,onClick:()=>n(e.id),onKeyDown:e=>o(e,s),className:N_(`flex h-[32px] w-full items-center border-l-2 px-3 text-left text-[13px] transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`,c?`border-primary bg-hover font-medium text-primary`:`border-transparent text-secondary hover:text-primary`),children:e.label},e.id)})})}var uQ=(0,y.forwardRef)(function({value:e,onChange:t,className:n},r){return(0,k.jsxs)(`div`,{className:n,children:[(0,k.jsx)(`label`,{htmlFor:`settings-search`,className:`sr-only`,children:`Search settings`}),(0,k.jsx)(`input`,{ref:r,id:`settings-search`,type:`search`,value:e,placeholder:`Search settings`,autoComplete:`off`,spellCheck:!1,onChange:e=>t(e.target.value),onKeyDown:n=>{n.key===`Escape`&&e&&(n.preventDefault(),t(``))},className:`input h-[32px] px-2 py-0 text-[13px] max-md:h-[44px] max-md:text-[16px] focus-visible:ring-2 focus-visible:ring-accent/40`})]})});function dQ({isOpen:e,onClose:t}){return e?(0,k.jsx)(mQ,{onClose:t}):null}var fQ=`settings-panel`,pQ=`flex shrink-0 items-center justify-center text-secondary transition-colors hover:bg-hover hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`;function mQ({onClose:e}){let t=Qh(),[n,r]=(0,y.useState)(()=>t?null:cY()),[i,a]=(0,y.useState)(``),o=(0,y.useRef)(null),s=(0,y.useRef)(null),c=(0,y.useRef)(null),l=(0,y.useRef)(!1),u=(0,y.useRef)(null);aJ(),oJ(o,e),(0,y.useEffect)(()=>{t?o.current?.focus():s.current?.focus()},[]),(0,y.useEffect)(()=>{if(t){if(n)c.current?.focus();else if(u.current){let e=o.current?.querySelector(`[data-page-id="${u.current}"]`);u.current=null,e?.focus()}}},[t,n]);let d=e=>{r(e),lY(e),a(``)},f=i.trim().length>0,p=(0,k.jsx)(`button`,{type:`button`,onClick:e,"aria-label":`Close settings`,className:N_(pQ,`size-[32px] max-md:size-[44px]`),children:(0,k.jsx)(ot,{width:W.primary,height:W.primary})});if(t)return(0,k.jsxs)(`div`,{ref:o,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`settings-title`,"data-suspends-terminal":``,tabIndex:-1,className:`fixed inset-0 z-50 flex flex-col bg-elevated outline-none`,style:{paddingTop:`env(safe-area-inset-top)`,paddingLeft:`env(safe-area-inset-left)`,paddingRight:`env(safe-area-inset-right)`},children:[(0,k.jsxs)(`header`,{className:`flex h-[52px] shrink-0 items-center gap-1 border-b border-border px-1`,children:[n?(0,k.jsx)(`button`,{ref:c,type:`button`,onClick:()=>{u.current=n,r(null)},"aria-label":`Back to settings`,className:N_(pQ,`size-[44px]`),children:(0,k.jsx)(B,{width:W.primary,height:W.primary,className:`rotate-180`})}):(0,k.jsx)(`span`,{"aria-hidden":`true`,className:`size-[44px] shrink-0`}),(0,k.jsx)(`h2`,{id:`settings-title`,className:`min-w-0 flex-1 truncate text-center text-[16px] font-semibold text-primary`,children:n?aY(n):`Settings`}),p]}),(0,k.jsx)(`div`,{id:fQ,className:`min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain px-4`,style:{paddingBottom:`calc(24px + env(safe-area-inset-bottom))`},children:n?(0,k.jsx)(iQ,{page:n,showTitle:!1}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(uQ,{ref:s,value:i,onChange:a,className:`py-3`}),f?(0,k.jsx)(aQ,{query:i}):(0,k.jsx)(`div`,{className:`-mx-4`,children:(0,k.jsx)(lQ,{variant:`list`,current:null,onSelect:d})})]})})]});let m=n??cY();return(0,k.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-4`,onMouseDown:e=>{l.current=e.target===e.currentTarget},onClick:t=>{l.current&&t.target===t.currentTarget&&e(),l.current=!1},children:(0,k.jsxs)(`div`,{ref:o,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`settings-title`,"data-suspends-terminal":``,tabIndex:-1,className:`flex h-[600px] max-h-full w-[760px] max-w-full flex-col border border-border bg-elevated shadow-2xl outline-none`,children:[(0,k.jsxs)(`header`,{className:`flex h-[48px] shrink-0 items-center justify-between border-b border-border pl-5 pr-2`,children:[(0,k.jsx)(`h2`,{id:`settings-title`,className:`text-[13px] font-semibold uppercase tracking-wider text-primary`,children:`Settings`}),p]}),(0,k.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,k.jsxs)(`div`,{className:`flex w-[192px] shrink-0 flex-col gap-3 border-r border-border p-3`,children:[(0,k.jsx)(uQ,{ref:s,value:i,onChange:a}),(0,k.jsx)(lQ,{variant:`tabs`,current:f?null:m,onSelect:d,panelId:fQ})]}),(0,k.jsx)(`div`,{id:fQ,role:f?`region`:`tabpanel`,"aria-label":f?`Search results`:void 0,"aria-labelledby":f?void 0:sQ(m),className:`min-w-0 flex-1 overflow-y-auto overflow-x-hidden px-6 py-5`,children:f?(0,k.jsx)(aQ,{query:i}):(0,k.jsx)(iQ,{page:m,showTitle:!0})})]})]})})}var hQ=[];function gQ(e){y.useEffect(e,hQ)}var _Q=y.createContext(void 0);function vQ(){let e=y.useContext(_Q);if(!e)throw Error(vX(73));return e}var yQ=Symbol(`NOT_FOUND`);function bQ(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!=`function`)throw TypeError(t)}function xQ(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!=`object`)throw TypeError(t)}function SQ(e,t=`expected all items to be functions, instead received the following types: `){if(!e.every(e=>typeof e==`function`)){let n=e.map(e=>typeof e==`function`?`function ${e.name||`unnamed`}()`:typeof e).join(`, `);throw TypeError(`${t}[${n}]`)}}var CQ=e=>Array.isArray(e)?e:[e];function wQ(e){let t=Array.isArray(e[0])?e[0]:e;return SQ(t,`createSelector expects all input-selectors to be functions, but received the following types: `),t}function TQ(e,t){let n=[],{length:r}=e;for(let i=0;i<r;i++)n.push(e[i].apply(null,t));return n}function EQ(e){let t;return{get(n){return t&&e(t.key,n)?t.value:yQ},put(e,n){t={key:e,value:n}},getEntries(){return t?[t]:[]},clear(){t=void 0}}}function DQ(e,t){let n=[];function r(e){let r=n.findIndex(n=>t(e,n.key));if(r>-1){let e=n[r];return r>0&&(n.splice(r,1),n.unshift(e)),e.value}return yQ}function i(t,i){r(t)===yQ&&(n.unshift({key:t,value:i}),n.length>e&&n.pop())}function a(){return n}function o(){n=[]}return{get:r,put:i,getEntries:a,clear:o}}var OQ=(e,t)=>e===t;function kQ(e){return function(t,n){if(t===null||n===null||t.length!==n.length)return!1;let{length:r}=t;for(let i=0;i<r;i++)if(!e(t[i],n[i]))return!1;return!0}}function AQ(e,t){let{equalityCheck:n=OQ,maxSize:r=1,resultEqualityCheck:i}=typeof t==`object`?t:{equalityCheck:t},a=kQ(n),o=0,s=r<=1?EQ(a):DQ(r,a);function c(){let t=s.get(arguments);if(t===yQ){if(t=e.apply(null,arguments),o++,i){let e=s.getEntries().find(e=>i(e.value,t));e&&(t=e.value,o!==0&&o--)}s.put(arguments,t)}return t}return c.clearCache=()=>{s.clear(),c.resetResultsCount()},c.resultsCount=()=>o,c.resetResultsCount=()=>{o=0},c}var jQ=class{constructor(e){this.value=e}deref(){return this.value}},MQ=typeof WeakRef<`u`?WeakRef:jQ,NQ=0,PQ=1;function FQ(){return{s:NQ,v:void 0,o:null,p:null}}function IQ(e,t={}){let n=FQ(),{resultEqualityCheck:r}=t,i,a=0;function o(){let t=n,{length:o}=arguments;for(let e=0,n=o;e<n;e++){let n=arguments[e];if(typeof n==`function`||typeof n==`object`&&n){let e=t.o;e===null&&(t.o=e=new WeakMap);let r=e.get(n);r===void 0?(t=FQ(),e.set(n,t)):t=r}else{let e=t.p;e===null&&(t.p=e=new Map);let r=e.get(n);r===void 0?(t=FQ(),e.set(n,t)):t=r}}let s=t,c;if(t.s===PQ)c=t.v;else if(c=e.apply(null,arguments),a++,r){let e=i?.deref?.()??i;e!=null&&r(e,c)&&(c=e,a!==0&&a--),i=typeof c==`object`&&c||typeof c==`function`?new MQ(c):c}return s.s=PQ,s.v=c,c}return o.clearCache=()=>{n=FQ(),o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function LQ(e,...t){let n=typeof e==`function`?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t=0,r=0,i,a={},o=e.pop();typeof o==`object`&&(a=o,o=e.pop()),bQ(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);let{memoize:s,memoizeOptions:c=[],argsMemoize:l=IQ,argsMemoizeOptions:u=[],devModeChecks:d={}}={...n,...a},f=CQ(c),p=CQ(u),m=wQ(e),h=s(function(){return t++,o.apply(null,arguments)},...f),g=l(function(){r++;let e=TQ(m,arguments);return i=h.apply(null,e),i},...p);return Object.assign(g,{resultFunc:o,memoizedResultFunc:h,dependencies:m,dependencyRecomputations:()=>r,resetDependencyRecomputations:()=>{r=0},lastResult:()=>i,recomputations:()=>t,resetRecomputations:()=>{t=0},memoize:s,argsMemoize:l})};return Object.assign(r,{withTypes:()=>r}),r}var RQ=LQ(IQ),zQ=Object.assign((e,t=RQ)=>{xQ(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);let n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>zQ}),BQ=LQ({memoize:AQ,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),VQ=(e,t,n,r,i,a,...o)=>{if(o.length>0)throw Error(vX(1));let s;if(e&&t&&n&&r&&i&&a)s=(o,s,c,l)=>a(e(o,s,c,l),t(o,s,c,l),n(o,s,c,l),r(o,s,c,l),i(o,s,c,l),s,c,l);else if(e&&t&&n&&r&&i)s=(a,o,s,c)=>i(e(a,o,s,c),t(a,o,s,c),n(a,o,s,c),r(a,o,s,c),o,s,c);else if(e&&t&&n&&r)s=(i,a,o,s)=>r(e(i,a,o,s),t(i,a,o,s),n(i,a,o,s),a,o,s);else if(e&&t&&n)s=(r,i,a,o)=>n(e(r,i,a,o),t(r,i,a,o),i,a,o);else if(e&&t)s=(n,r,i,a)=>t(e(n,r,i,a),r,i,a);else if(e)s=e;else throw Error(`Missing arguments`);return s},HQ=(...e)=>{let t=new WeakMap,n=1,r=e[e.length-1],i=e.length-1||1,a=r.length-i;if(a>3)throw Error(vX(2));return(i,o,s,c)=>{let l=i.__cacheKey__;l||(l={id:n},i.__cacheKey__=l,n+=1);let u=t.get(l);if(!u){let n=e,i=[void 0,void 0,void 0];switch(a){case 0:break;case 1:n=[...e.slice(0,-1),()=>i[0],r];break;case 2:n=[...e.slice(0,-1),()=>i[0],()=>i[1],r];break;case 3:n=[...e.slice(0,-1),()=>i[0],()=>i[1],()=>i[2],r];break;default:throw Error(vX(2))}u=BQ(...n),u.selectorArgs=i,t.set(l,u)}switch(u.selectorArgs[0]=o,u.selectorArgs[1]=s,u.selectorArgs[2]=c,a){case 0:return u(i);case 1:return u(i,o);case 2:return u(i,o,s);case 3:return u(i,o,s,c);default:throw Error(`unreachable`)}}},UQ=s((e=>{var t=p();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),WQ=s(((e,t)=>{t.exports=UQ()})),GQ=s((e=>{var t=p(),n=WQ();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),KQ=s(((e,t)=>{t.exports=GQ()})),qQ=[],JQ=void 0;function YQ(){return JQ}function XQ(e){qQ.push(e)}var ZQ=WQ(),QQ=KQ(),$Q=bX(19)?n$:r$;function e$(e,t,n,r,i){return $Q(e,t,n,r,i)}function t$(e,t,n,r,i){let a=y.useCallback(()=>t(e.getSnapshot(),n,r,i),[e,t,n,r,i]);return(0,ZQ.useSyncExternalStore)(e.subscribe,a,a)}XQ({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let n=0;n<e.syncHooks.length;n+=1){let r=e.syncHooks[n],i=r.selector(r.store.state,r.a1,r.a2,r.a3);(r.didChange||!Object.is(r.value,i))&&(t=!0,r.value=i,r.didChange=!1)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let n=new Set;for(let t of e.syncHooks)n.add(t.store);let r=[];for(let e of n)r.push(e.subscribe(t));return()=>{for(let e of r)e()}}),(0,ZQ.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function n$(e,t,n,r,i){let a=YQ();if(!a)return t$(e,t,n,r,i);let o=a.syncIndex;a.syncIndex+=1;let s;return a.didInitialize?(s=a.syncHooks[o],(s.store!==e||s.selector!==t||!Object.is(s.a1,n)||!Object.is(s.a2,r)||!Object.is(s.a3,i))&&(s.store!==e&&(a.didChangeStore=!0),s.store=e,s.selector=t,s.a1=n,s.a2=r,s.a3=i,s.didChange=!0)):(s={store:e,selector:t,a1:n,a2:r,a3:i,value:t(e.getSnapshot(),n,r,i),didChange:!1},a.syncHooks.push(s)),s.value}function r$(e,t,n,r,i){return(0,QQ.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))}var i$=class{constructor(e){this.state=e,this.listeners=new Set,this.updateTick=0}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;setState(e){if(this.state===e)return;this.state=e,this.updateTick+=1;let t=this.updateTick;for(let n of this.listeners){if(t!==this.updateTick)return;n(e)}}update(e){for(let t in e)if(!Object.is(this.state[t],e[t])){this.setState({...this.state,...e});return}}set(e,t){Object.is(this.state[e],t)||this.setState({...this.state,[e]:t})}notifyAll(){let e={...this.state};this.setState(e)}use(e,t,n,r){return e$(this,e,t,n,r)}},a$=class extends i${constructor(e,t={},n){super(e),this.context=t,this.selectors=n}useSyncedValue(e,t){y.useDebugValue(e),fX(()=>{this.state[e]!==t&&this.set(e,t)},[e,t])}useSyncedValueWithCleanup(e,t){let n=this;fX(()=>(n.state[e]!==t&&n.set(e,t),()=>{n.set(e,void 0)}),[n,e,t])}useSyncedValues(e){let t=this;fX(()=>{t.update(e)},[t,...Object.values(e)])}useControlledProp(e,t){y.useDebugValue(e);let n=t!==void 0;fX(()=>{n&&!Object.is(this.state[e],t)&&super.setState({...this.state,[e]:t})},[e,t,n])}select(e,t,n,r){let i=this.selectors[e];return i(this.state,t,n,r)}useState(e,t,n,r){return y.useDebugValue(e),e$(this,this.selectors[e],t,n,r)}useContextCallback(e,t){y.useDebugValue(e);let n=rX(t??gX);this.context[e]=n}useStateSetter(e){let t=y.useRef(void 0);return t.current===void 0&&(t.current=t=>{this.set(e,t)}),t.current}observe(e,t){let n;n=typeof e==`function`?e:this.selectors[e];let r=n(this.state);return t(r,r,this),this.subscribe(e=>{let i=n(e);if(!Object.is(r,i)){let e=r;r=i,t(i,e,this)}})}},o$=null;globalThis.requestAnimationFrame;var s$=new class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=e=>{this.isScheduled=!1;let t=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let n=0;n<t.length;n+=1)t[n]?.(e)};request(e){let t=this.nextId;return this.nextId+=1,this.callbacks.push(e),this.callbacksCount+=1,this.isScheduled||=(requestAnimationFrame(this.tick),!0),t}cancel(e){let t=e-this.startId;t<0||t>=this.callbacks.length||(this.callbacks[t]=null,--this.callbacksCount)}},c$=class e{static create(){return new e}static request(e){return s$.request(e)}static cancel(e){return s$.cancel(e)}currentId=o$;request(e){this.cancel(),this.currentId=s$.request(()=>{this.currentId=o$,e()})}cancel=()=>{this.currentId!==o$&&(s$.cancel(this.currentId),this.currentId=o$)};disposeEffect=()=>this.cancel};function l$(){let e=eX(c$.create).current;return gQ(e.disposeEffect),e}var u$=0,d$=class e{static create(){return new e}currentId=u$;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=u$,t()},e)}isStarted(){return this.currentId!==u$}clear=()=>{this.currentId!==u$&&(clearTimeout(this.currentId),this.currentId=u$)};disposeEffect=()=>this.clear};function f$(){let e=eX(d$.create).current;return gQ(e.disposeEffect),e}var p$=0;function m$(e){return p$+=1,`${e}-${Math.random().toString(36).slice(2,6)}-${p$}`}function h$(e){return e?.ownerDocument||document}function g$(e,t){if(typeof e==`string`)return{description:e};if(typeof e==`function`){let n=e(t);return typeof n==`string`?{description:n}:n}return e}var _$=typeof navigator<`u`,v$=C$(),y$=T$(),b$=w$();typeof CSS>`u`||!CSS.supports||CSS.supports(`-webkit-backdrop-filter:none`),v$.platform===`MacIntel`&&v$.maxTouchPoints>1||/iP(hone|ad|od)|iOS/.test(v$.platform),_$&&/firefox/i.test(b$);var x$=_$&&/apple/i.test(navigator.vendor);_$&&/Edg/i.test(b$),_$&&/android/i.test(y$)||/android/i.test(b$),_$&&y$.toLowerCase().startsWith(`mac`)&&navigator.maxTouchPoints;var S$=b$.includes(`jsdom/`);function C$(){if(!_$)return{platform:``,maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??``,maxTouchPoints:navigator.maxTouchPoints??-1}}function w$(){if(!_$)return``;let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:e,version:t})=>`${e}/${t}`).join(` `):navigator.userAgent}function T$(){if(!_$)return``;let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??``}function E$(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function D$(e,t){if(!e||!t)return!1;let n=t.getRootNode?.();if(e.contains(t))return!0;if(n&&$X(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function O$(e){return`composedPath`in e?e.composedPath()[0]:e.target}function k$(e){if(!e||S$)return!0;try{return e.matches(`:focus-visible`)}catch{return!0}}var A$=HQ(e=>e.toasts,e=>{let t=new Map,n=0,r=0;return e.forEach((e,i)=>{let a=e.transitionStatus===`ending`;t.set(e.id,{value:e,domIndex:i,visibleIndex:a?-1:n,offsetY:r}),r+=e.height||0,a||(n+=1)}),t}),j$={toasts:VQ(e=>e.toasts),isEmpty:VQ(e=>e.toasts.length===0),toast:VQ(A$,(e,t)=>e.get(t)?.value),toastIndex:VQ(A$,(e,t)=>e.get(t)?.domIndex??-1),toastOffsetY:VQ(A$,(e,t)=>e.get(t)?.offsetY??0),toastVisibleIndex:VQ(A$,(e,t)=>e.get(t)?.visibleIndex??-1),hovering:VQ(e=>e.hovering),focused:VQ(e=>e.focused),expanded:VQ(e=>e.hovering||e.focused),expandedOrOutOfFocus:VQ(e=>e.hovering||e.focused||!e.isWindowFocused),prevFocusElement:VQ(e=>e.prevFocusElement)},M$=class extends a${timers=new Map;areTimersPaused=!1;constructor(e){super(e,{},j$)}setFocused(e){this.set(`focused`,e)}setHovering(e){this.set(`hovering`,e)}setIsWindowFocused(e){this.set(`isWindowFocused`,e)}setPrevFocusElement(e){this.set(`prevFocusElement`,e)}setViewport=e=>{this.set(`viewport`,e)};disposeEffect=()=>()=>{this.timers.forEach(e=>{e.timeout?.clear()}),this.timers.clear()};removeToast(e){let t=j$.toastIndex(this.state,e);if(t===-1)return;this.state.toasts[t]?.onRemove?.();let n=[...this.state.toasts];n.splice(t,1),this.setToasts(n)}addToast=e=>{let{toasts:t,timeout:n,limit:r}=this.state,i=e.id||m$(`toast`),a={...e,id:i,transitionStatus:`starting`},o=[a,...t],s=o.filter(e=>e.transitionStatus!==`ending`);if(s.length>r){let e=s.length-r,t=s.slice(-e),n=new Set(t.map(e=>e.id));this.setToasts(o.map(e=>{let t=n.has(e.id);return e.limited===t?e:{...e,limited:t}}))}else this.setToasts(o.map(e=>e.limited?{...e,limited:!1}:e));let c=a.timeout??n;return a.type!==`loading`&&c>0&&this.scheduleTimer(i,c,()=>this.closeToast(i)),j$.expandedOrOutOfFocus(this.state)&&this.pauseTimers(),i};updateToast=(e,t)=>{this.updateToastInternal(e,t)};updateToastInternal=(e,t)=>{let{timeout:n,toasts:r}=this.state,i=j$.toast(this.state,e)??null;if(!i||i.transitionStatus===`ending`)return;let a={...i,...t};this.setToasts(r.map(n=>n.id===e?{...n,...t}:n));let o=a.timeout??n,s=i?.timeout??n,c=Object.hasOwn(t,`timeout`),l=a.transitionStatus!==`ending`&&a.type!==`loading`&&o>0,u=this.timers.has(e),d=s!==o,f=i?.type===`loading`;if(!l&&u){this.timers.get(e)?.timeout?.clear(),this.timers.delete(e);return}if(l&&(!u||d||c||f)){let t=this.timers.get(e);t&&(t.timeout?.clear(),this.timers.delete(e)),this.scheduleTimer(e,o,()=>this.closeToast(e)),j$.expandedOrOutOfFocus(this.state)&&this.pauseTimers()}};closeToast=e=>{j$.toast(this.state,e)?.onClose?.();let{limit:t,toasts:n}=this.state,r=0,i=n.map(n=>{if(n.id===e)return{...n,transitionStatus:`ending`,height:0};if(n.transitionStatus===`ending`)return n;let i=r>=t;return r+=1,n.limited===i?n:{...n,limited:i}}),a=this.timers.get(e);a&&a.timeout&&(a.timeout.clear(),this.timers.delete(e)),this.handleFocusManagement(e),this.setToasts(i)};promiseToast=(e,t)=>{let n=g$(t.loading),r=this.addToast({...n,type:`loading`}),i=e.then(e=>{let n=g$(t.success,e);return this.updateToast(r,{...n,type:`success`,timeout:n.timeout}),e}).catch(e=>{let n=g$(t.error,e);return this.updateToast(r,{...n,type:`error`,timeout:n.timeout}),Promise.reject(e)});return{}.hasOwnProperty.call(t,`setPromise`)&&t.setPromise(i),i};pauseTimers(){this.areTimersPaused||(this.areTimersPaused=!0,this.timers.forEach(e=>{if(e.timeout){e.timeout.clear();let t=Date.now()-e.start,n=e.delay-t;e.remaining=n>0?n:0}}))}resumeTimers(){this.areTimersPaused&&(this.areTimersPaused=!1,this.timers.forEach((e,t)=>{e.remaining=e.remaining>0?e.remaining:e.delay,e.timeout??=d$.create(),e.timeout.start(e.remaining,()=>{this.timers.delete(t),e.callback()}),e.start=Date.now()}))}restoreFocusToPrevElement(){this.state.prevFocusElement?.focus({preventScroll:!0})}handleDocumentPointerDown=e=>{if(e.pointerType!==`touch`)return;let t=O$(e);D$(this.state.viewport,t)||(this.resumeTimers(),this.update({hovering:!1,focused:!1}))};scheduleTimer(e,t,n){let r=Date.now(),i=!j$.expandedOrOutOfFocus(this.state),a=i?d$.create():void 0;a?.start(t,()=>{this.timers.delete(e),n()}),this.timers.set(e,{timeout:a,start:i?r:0,delay:t,remaining:t,callback:n})}setToasts(e){let t={toasts:e};e.length===0&&(t.hovering=!1,t.focused=!1),this.update(t)}handleFocusManagement(e){let t=E$(h$(this.state.viewport));if(!this.state.viewport||!D$(this.state.viewport,t)||!k$(t))return;let n=j$.toasts(this.state),r=j$.toastIndex(this.state,e),i=null,a=r+1;for(;a<n.length;){if(n[a].transitionStatus!==`ending`){i=n[a];break}a+=1}if(!i)for(a=r-1;a>=0;){if(n[a].transitionStatus!==`ending`){i=n[a];break}--a}i?i.ref?.current?.focus():this.restoreFocusToPrevElement()}},N$=function(e){let{children:t,timeout:n=5e3,limit:r=3,toastManager:i}=e,a=eX(()=>new M$({timeout:n,limit:r,viewport:null,toasts:[],hovering:!1,focused:!1,isWindowFocused:!0,prevFocusElement:null})).current;return gQ(a.disposeEffect),y.useEffect(function(){if(i)return i[` subscribe`](({action:e,options:t})=>{let n=t.id;e===`promise`&&t.promise?a.promiseToast(t.promise,t):e===`update`&&n?a.updateToast(n,t):e===`close`&&n?a.closeToast(n):a.addToast(t)})},[a,n,i]),a.useSyncedValues({timeout:n,limit:r}),(0,k.jsx)(_Q.Provider,{value:a,children:t})},P$=y.forwardRef(function(e,t){let[n,r]=y.useState();fX(()=>{x$&&r(`button`)},[]);let i={tabIndex:0,role:n};return(0,k.jsx)(`span`,{...e,ref:t,style:mX,"aria-hidden":n?void 0:!0,...i,"data-base-ui-focus-guard":``})}),F$=function(e){return e.frontmostHeight=`--toast-frontmost-height`,e}({}),I$=y.forwardRef(function(e,t){let{render:n,className:r,children:i,...a}=e,o=vQ(),s=f$(),c=y.useRef(!1),l=y.useRef(!1),u=o.useState(`isEmpty`),d=o.useState(`toasts`),f=o.useState(`focused`),p=o.useState(`expanded`),m=o.useState(`prevFocusElement`),h=d[0]?.height??0,g=y.useMemo(()=>d.some(e=>e.transitionStatus===`ending`),[d]);y.useEffect(()=>{let e=o.state.viewport;if(!e)return;function t(t){u||t.key===`F6`&&t.target!==e&&(t.preventDefault(),o.setPrevFocusElement(E$(h$(e))),e?.focus({preventScroll:!0}),o.pauseTimers(),o.setFocused(!0))}let n=XX(e);return n.addEventListener(`keydown`,t),()=>{n.removeEventListener(`keydown`,t)}},[o,u]),y.useEffect(()=>{let e=o.state.viewport;if(!e||u)return;let t=XX(e);function n(e){e.target===t&&(o.setIsWindowFocused(!1),o.pauseTimers())}function r(n){if(n.relatedTarget||n.target===t)return;let r=O$(n),i=E$(h$(e));(!D$(e,r)||!k$(i))&&o.resumeTimers(),s.start(0,()=>o.setIsWindowFocused(!0))}return t.addEventListener(`blur`,n,!0),t.addEventListener(`focus`,r,!0),()=>{t.removeEventListener(`blur`,n,!0),t.removeEventListener(`focus`,r,!0)}},[o,s,u]),y.useEffect(()=>{let e=o.state.viewport;if(!e||u)return;let t=h$(e);return t.addEventListener(`pointerdown`,o.handleDocumentPointerDown,!0),()=>{t.removeEventListener(`pointerdown`,o.handleDocumentPointerDown,!0)}},[u,o]);function _(e){let t=o.state.viewport;t&&(c.current=!0,e.relatedTarget===t?d[0]?.ref?.current?.focus():o.restoreFocusToPrevElement())}function v(e){e.key===`Tab`&&e.shiftKey&&e.target===o.state.viewport&&(e.preventDefault(),o.restoreFocusToPrevElement(),o.resumeTimers())}y.useEffect(()=>{!o.state.isWindowFocused||g||!l.current||(o.resumeTimers(),o.setHovering(!1),l.current=!1)},[g,o]);function b(){o.pauseTimers(),o.setHovering(!0),l.current=!1}function x(){g?l.current=!0:(o.resumeTimers(),o.setHovering(!1))}function S(){if(c.current){c.current=!1;return}f||k$(h$(o.state.viewport).activeElement)&&(o.setFocused(!0),o.pauseTimers())}function C(e){!f||D$(o.state.viewport,e.relatedTarget)||(o.setFocused(!1),o.resumeTimers())}let w={tabIndex:-1,role:`region`,"aria-live":`polite`,"aria-atomic":!1,"aria-relevant":`additions text`,"aria-label":`Notifications`,onMouseEnter:b,onMouseMove:b,onMouseLeave:x,onFocus:S,onBlur:C,onKeyDown:v,onClick:S},T={expanded:p},E=RX(`div`,e,{ref:[t,o.setViewport],state:T,props:[w,{style:{[F$.frontmostHeight]:h?`${h}px`:void 0}},a,{children:(0,k.jsxs)(y.Fragment,{children:[!u&&m&&(0,k.jsx)(P$,{onFocus:_}),i,!u&&m&&(0,k.jsx)(P$,{onFocus:_})]})}]}),D=y.useMemo(()=>d.filter(e=>e.priority===`high`),[d]);return(0,k.jsxs)(y.Fragment,{children:[!u&&m&&(0,k.jsx)(P$,{onFocus:_}),E,!f&&D.length>0&&(0,k.jsx)(`div`,{style:mX,children:D.map(e=>(0,k.jsxs)(`div`,{role:`alert`,"aria-atomic":!0,children:[(0,k.jsx)(`div`,{children:e.title}),(0,k.jsx)(`div`,{children:e.description})]},e.id))})]})});function L$(e){return bX(19)?e:e?`true`:void 0}var R$=y.createContext(void 0);function z$(){let e=y.useContext(R$);if(!e)throw Error(vX(66));return e}var B$=function(e){return e.startingStyle=`data-starting-style`,e.endingStyle=`data-ending-style`,e}({}),V$={[B$.startingStyle]:``},H$={[B$.endingStyle]:``},U$={transitionStatus(e){return e===`starting`?V$:e===`ending`?H$:null}};function W$(e){return e==null?e:`current`in e?e.current:e}function G$(e,t=!1,n=!0){let r=l$();return rX((i,a=null)=>{r.cancel();function o(){uf.flushSync(i)}let s=W$(e);if(s==null)return;let c=s;if(typeof c.getAnimations!=`function`||globalThis.BASE_UI_ANIMATIONS_DISABLED)i();else{function e(){let e=B$.startingStyle;if(!c.hasAttribute(e)){r.request(i);return}let t=new MutationObserver(()=>{c.hasAttribute(e)||(t.disconnect(),i())});t.observe(c,{attributes:!0,attributeFilter:[e]}),a?.addEventListener(`abort`,()=>t.disconnect(),{once:!0})}function i(){Promise.all(c.getAnimations().map(e=>e.finished)).then(()=>{a?.aborted||o()}).catch(()=>{let e=c.getAnimations();if(n){if(a?.aborted)return;o()}else e.length>0&&e.some(e=>e.pending||e.playState!==`finished`)&&i()})}if(t){e();return}r.request(i)}})}function K$(e){let{enabled:t=!0,open:n,ref:r,onComplete:i}=e,a=rX(i),o=G$(r,n,!1);y.useEffect(()=>{if(!t)return;let e=new AbortController;return o(a,e.signal),()=>{e.abort()}},[t,n,a,o])}var q$=function(e){return e.index=`--toast-index`,e.offsetY=`--toast-offset-y`,e.height=`--toast-height`,e.swipeMovementX=`--toast-swipe-movement-x`,e.swipeMovementY=`--toast-swipe-movement-y`,e}({}),J$={...U$,swipeDirection(e){return e?{"data-swipe-direction":e}:null}},Y$=40,X$=10,Z$=.5,Q$=1;function $$(e,t,n){switch(e){case`up`:return-n;case`down`:return n;case`left`:return-t;case`right`:return t;default:return 0}}function e1(e){let t=window.getComputedStyle(e).transform,n=0,r=0,i=1;if(t&&t!==`none`){let e=t.match(/matrix(?:3d)?\(([^)]+)\)/);if(e){let t=e[1].split(`, `).map(parseFloat);t.length===6?(n=t[4],r=t[5],i=Math.sqrt(t[0]*t[0]+t[1]*t[1])):t.length===16&&(n=t[12],r=t[13],i=t[0])}}return{x:n,y:r,scale:i}}var t1=y.forwardRef(function(e,t){let{toast:n,render:r,className:i,swipeDirection:a=[`down`,`right`],...o}=e,s=n.positionerProps?.anchor!==void 0,c=[];s||(c=Array.isArray(a)?a:[a]);let l=c.length>0,u=vQ(),[d,f]=y.useState(void 0),[p,m]=y.useState(!1),[h,g]=y.useState(!1),[_,v]=y.useState(!1),[b,x]=y.useState({x:0,y:0}),[S,C]=y.useState({x:0,y:0,scale:1}),[w,T]=y.useState(),[E,D]=y.useState(),[O,A]=y.useState(null),j=y.useRef(null),M=y.useRef({x:0,y:0}),N=y.useRef({x:0,y:0,scale:1}),P=y.useRef(void 0),F=y.useRef(0),ee=y.useRef(!1),I=y.useRef({x:0,y:0}),te=y.useRef(!1),L=u.useState(`toastIndex`,n.id),R=u.useState(`toastVisibleIndex`,n.id),z=u.useState(`toastOffsetY`,n.id),ne=u.useState(`focused`),B=u.useState(`expanded`);K$({open:n.transitionStatus!==`ending`,ref:j,onComplete(){n.transitionStatus===`ending`&&u.removeToast(n.id)}});let re=rX((e=!1)=>{let t=j.current;if(!t)return;let r=t.style.height;t.style.height=`auto`;let i=t.offsetHeight;t.style.height=r;function a(){u.updateToastInternal(n.id,{ref:j,height:i,...n.transitionStatus===`starting`?{transitionStatus:void 0}:{}})}e?uf.flushSync(a):a()});fX(re,[re]);function V(e,t){let n=e,r=t;return!c.includes(`left`)&&!c.includes(`right`)?n=e>0?e**Z$:-(Math.abs(e)**Z$):(!c.includes(`right`)&&e>0&&(n=e**Z$),!c.includes(`left`)&&e<0&&(n=-(Math.abs(e)**Z$))),!c.includes(`up`)&&!c.includes(`down`)?r=t>0?t**Z$:-(Math.abs(t)**Z$):(!c.includes(`down`)&&t>0&&(r=t**Z$),!c.includes(`up`)&&t<0&&(r=-(Math.abs(t)**Z$))),{x:n,y:r}}function ie(e){if(e.button!==0)return;e.pointerType===`touch`&&u.pauseTimers();let t=O$(e.nativeEvent);if(!(t&&t.closest(`button,a,input,textarea,[role="button"],[data-swipe-ignore]`))){if(ee.current=!1,P.current=void 0,F.current=0,M.current={x:e.clientX,y:e.clientY},I.current=M.current,j.current){let e=e1(j.current);N.current=e,C(e),x({x:e.x,y:e.y})}u.setHovering(!0),m(!0),g(!1),A(null),te.current=!0,j.current?.setPointerCapture(e.pointerId)}}function H(e){if(!p)return;e.preventDefault(),te.current&&=(M.current={x:e.clientX,y:e.clientY},!1);let{clientY:t,clientX:n,movementX:r,movementY:i}=e;(i<0&&t>I.current.y||i>0&&t<I.current.y)&&(I.current={x:I.current.x,y:t}),(r<0&&n>I.current.x||r>0&&n<I.current.x)&&(I.current={x:n,y:I.current.y});let a=n-M.current.x,o=t-M.current.y,s=t-I.current.y,l=n-I.current.x;if(!h&&Math.sqrt(a*a+o*o)>=Q$&&(g(!0),O===null)){let e=c.includes(`left`)||c.includes(`right`),t=c.includes(`up`)||c.includes(`down`);e&&t&&A(Math.abs(a)>Math.abs(o)?`horizontal`:`vertical`)}let u;if(!P.current)O===`vertical`?o>0?u=`down`:o<0&&(u=`up`):O===`horizontal`?a>0?u=`right`:a<0&&(u=`left`):u=Math.abs(a)>=Math.abs(o)?a>0?`right`:`left`:o>0?`down`:`up`,u&&c.includes(u)&&(P.current=u,F.current=$$(u,a,o),f(u));else{let e=P.current,t=$$(e,l,s);t>Y$?(ee.current=!1,f(e)):!(c.includes(`left`)&&c.includes(`right`))&&!(c.includes(`up`)&&c.includes(`down`))&&F.current-t>=X$&&(ee.current=!0)}let d=V(a,o),m=N.current.x,_=N.current.y;O===`horizontal`?(c.includes(`left`)||c.includes(`right`))&&(m+=d.x):(O===`vertical`||(c.includes(`left`)||c.includes(`right`))&&(m+=d.x),(c.includes(`up`)||c.includes(`down`))&&(_+=d.y)),x({x:m,y:_})}function ae(e){if(!p)return;if(m(!1),g(!1),A(null),j.current?.releasePointerCapture(e.pointerId),ee.current){x({x:S.x,y:S.y}),f(void 0);return}let t=!1,r=b.x-S.x,i=b.y-S.y,a;for(let e of c){switch(e){case`right`:r>Y$&&(t=!0,a=`right`);break;case`left`:r<-Y$&&(t=!0,a=`left`);break;case`down`:i>Y$&&(t=!0,a=`down`);break;case`up`:i<-Y$&&(t=!0,a=`up`);break;default:break}if(t)break}t?(f(a),v(!0),u.closeToast(n.id)):(x({x:S.x,y:S.y}),f(void 0))}function oe(e){if(e.key===`Escape`){if(!j.current||!D$(j.current,E$(h$(j.current))))return;u.closeToast(n.id)}}y.useEffect(()=>{if(!l)return;let e=j.current;if(!e)return;function t(t){D$(e,t.target)&&t.preventDefault()}return e.addEventListener(`touchmove`,t,{passive:!1}),()=>{e.removeEventListener(`touchmove`,t)}},[l]);function se(){if(!p&&b.x===S.x&&b.y===S.y&&!_)return{[q$.swipeMovementX]:`0px`,[q$.swipeMovementY]:`0px`};let e=b.x-S.x,t=b.y-S.y;return{transition:p?`none`:void 0,transform:p?`translateX(${b.x}px) translateY(${b.y}px) scale(${S.scale})`:void 0,[q$.swipeMovementX]:`${e}px`,[q$.swipeMovementY]:`${t}px`}}let ce=n.priority===`high`,le={role:ce?`alertdialog`:`dialog`,tabIndex:0,"aria-modal":!1,"aria-labelledby":w,"aria-describedby":E,"aria-hidden":ce&&!ne?!0:void 0,onPointerDown:l?ie:void 0,onPointerMove:l?H:void 0,onPointerUp:l?ae:void 0,onKeyDown:oe,inert:L$(n.limited),style:{...se(),[q$.index]:n.transitionStatus===`ending`?L:R,[q$.offsetY]:`${z}px`,[q$.height]:n.height?`${n.height}px`:void 0}},ue=y.useMemo(()=>({rootRef:j,toast:n,titleId:w,setTitleId:T,descriptionId:E,setDescriptionId:D,swiping:p,swipeDirection:d,recalculateHeight:re,index:L,visibleIndex:R,expanded:B}),[n,w,E,p,d,re,L,R,B]),de={transitionStatus:n.transitionStatus,expanded:B,limited:n.limited||!1,type:n.type,swiping:ue.swiping,swipeDirection:ue.swipeDirection},fe=RX(`div`,e,{ref:[t,ue.rootRef],state:de,stateAttributesMapping:J$,props:[le,o]});return(0,k.jsx)(R$.Provider,{value:ue,children:fe})}),n1=y.forwardRef(function(e,t){let{render:n,className:r,id:i,children:a,...o}=e,{toast:s,setDescriptionId:c}=z$(),l=a??s.description,u=!!l,d=qX(i);fX(()=>{if(u)return c(d),()=>{c(void 0)}},[u,d,c]);let f=RX(`p`,e,{ref:t,state:{type:s.type},props:{...o,id:d,children:l}});return u?f:null}),r1=y.forwardRef(function(e,t){let{render:n,className:r,id:i,children:a,...o}=e,{toast:s,setTitleId:c}=z$(),l=a??s.title,u=!!l,d=qX(i);fX(()=>{if(u)return c(d),()=>{c(void 0)}},[u,d,c]);let f=RX(`h2`,e,{ref:t,state:{type:s.type},props:{...o,id:d,children:l}});return u?f:null}),i1=y.forwardRef(function(e,t){let{render:n,className:r,disabled:i,nativeButton:a=!0,...o}=e,s=vQ(),{toast:c}=z$(),l=s.useState(`expanded`),[u,d]=y.useState(!1),{getButtonProps:f,buttonRef:p}=rZ({disabled:i,native:a}),m={type:c.type};return RX(`button`,e,{ref:[t,p],state:m,props:[{"aria-hidden":!l&&!u,onClick(){s.closeToast(c.id)},onFocus(){d(!0)},onBlur(){d(!1)}},o,f]})});function a1(){let e=y.useContext(_Q);if(!e)throw Error(vX(73));let t=e.useState(`toasts`);return y.useMemo(()=>({toasts:t,add:e.addToast,close:e.closeToast,update:e.updateToast,promise:e.promiseToast}),[t,e])}function o1(){let e=new Set;function t(t){e.forEach(e=>e(t))}return{" subscribe":function(t){return e.add(t),()=>{e.delete(t)}},add(e){let n=e.id||m$(`toast`);return t({action:`add`,options:{...e,id:n,transitionStatus:`starting`}}),n},close(e){t({action:`close`,options:{id:e}})},update(e,n){t({action:`update`,options:{...n,id:e}})},promise(e,n){let r=e;return t({action:`promise`,options:{...n,promise:e,setPromise(e){r=e}}}),r}}}var s1=5e3,c1=o1();function l1({toast:e}){return(0,k.jsxs)(t1,{toast:e,className:N_(`relative flex w-80 items-start gap-3 border bg-elevated p-4 shadow-lg`,`data-[swipe=move]:translate-x-[var(--toast-swipe-move-x)]`,`data-[ending-style]:translate-x-[var(--toast-swipe-end-x)]`,`data-[ending-style]:opacity-0`,`data-[starting-style]:translate-y-2 data-[starting-style]:opacity-0`,`transition-all duration-200`,e.type===`error`&&`border-danger/50`,e.type===`success`&&`border-approval/50`,(!e.type||e.type===`info`)&&`border-border`),children:[(0,k.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,k.jsx)(r1,{className:N_(`text-sm font-medium`,e.type===`error`&&`text-danger`,e.type===`success`&&`text-approval`,(!e.type||e.type===`info`)&&`text-primary`),children:e.title}),e.description&&(0,k.jsx)(n1,{className:`mt-1 text-xs text-muted line-clamp-2`,children:e.description})]}),(0,k.jsx)(i1,{className:`shrink-0 text-muted hover:text-primary transition-colors`,"aria-label":`Close`,children:(0,k.jsx)(ot,{width:W.default,height:W.default})})]})}function u1(){let{toasts:e}=a1();return(0,k.jsx)(k.Fragment,{children:e.map(e=>(0,k.jsx)(l1,{toast:e},e.id))})}function d1(){return(0,k.jsxs)(N$,{timeout:s1,toastManager:c1,children:[(0,k.jsx)(u1,{}),(0,k.jsx)(I$,{className:`fixed bottom-4 right-4 z-[100] flex flex-col gap-2`})]})}var f1=`Agentboard was updated. Reload this tab to reconnect. Your saved recovery drafts remain on this device.`,p1=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],m1=3e3,h1=3e4,g1=8e3,_1=15e3,v1=5e3,y1=2e4,b1=3e4,x1=1e4,S1=1500,C1=5e3,w1=750,T1=4,E1=5e3,D1=new class{constructor(){this.ws=null,this.listeners=new Set,this.statusListeners=new Set,this.status=`connecting`,this.error=null,this.reconnectAttempts=0,this.overloadFailures=0,this.overloadRetryAt=0,this.overloadProgressSince=null,this.reconnectTimer=null,this.connectTimer=null,this.manualClose=!1,this.protocolMismatch=!1,this.protocolReady=!1,this.lastTick=Date.now(),this.wakeCheckInterval=null,this.lifecycleStarted=!1,this.heartbeatTimer=null,this.pongTimer=null,this.lastForceReconnectTs=0,this.lastConnectTs=0,this.traceId=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,this.lastMessageAt=null,this.lastPongSeq=null,this.lastPingAt=null,this.lastMessageType=null,this.pingSeq=0,this.connectionEpoch=0,this.consecutiveFailures=0,this.stallCount=0,this.isResumeAttempt=!1,this.leakedSockets=new Set,this.verifyTimer=null,this.pageSuspended=!1,this.resumeClaim=0,this.attachId=0,this.attachedSessionId=null,this.readyAttachId=null,this.lastResumeAt=0,this.onVisibilityChange=()=>{X(`ws_visibility`,{state:document.visibilityState,...this.wsSnap()},`info`),document.visibilityState===`visible`?(this.pageSuspended=!1,this.resumeConnection(`visibilitychange`)):this.suspendConnection()},this.onPageShow=e=>{X(`ws_pageshow`,{persisted:e.persisted,...this.wsSnap()},`info`),e.persisted&&(this.pageSuspended=!1,this.resumeConnection(`pageshow`))},this.onPageHide=()=>{this.pageSuspended=!0,this.suspendConnection()}}wsSnap(){return{traceId:this.traceId,clientTimeMs:Date.now(),clientUptimeMs:Math.round(performance.now()),epoch:this.connectionEpoch,pingSeq:this.pingSeq,lastPongSeq:this.lastPongSeq,lastPingAgeMs:this.lastPingAt===null?null:Date.now()-this.lastPingAt,lastMessageType:this.lastMessageType,lastMessageAgeMs:this.lastMessageAt===null?null:Date.now()-this.lastMessageAt,visibility:typeof document>`u`?void 0:document.visibilityState,status:this.status,ws:this.ws?p1[this.ws.readyState]:null,attempt:this.reconnectAttempts,failures:this.consecutiveFailures,stalls:this.stallCount,overloads:this.overloadFailures,overloadDelayMs:Math.max(0,this.overloadRetryAt-Date.now()),leaked:this.leakedSockets.size,online:typeof navigator<`u`?navigator.onLine:void 0,verifying:this.verifyTimer!==null,buffered:this.ws?this.ws.bufferedAmount:void 0}}connect(){if(this.protocolMismatch||this.isHidden()||this.waitForOverloadCooldown())return;if(this.ws){let e=this.ws.readyState===WebSocket.OPEN;if(e&&this.status===`connected`){X(`ws_connect_skip`,{reason:`already_open`,...this.wsSnap()});return}let t=Date.now();if(this.ws.readyState===WebSocket.CONNECTING&&t-this.lastConnectTs<200){X(`ws_connect_skip`,{reason:`already_connecting`,...this.wsSnap()});return}X(`ws_connect_destroy_zombie`,{reason:e?`open_desynced`:`not_open`,...this.wsSnap()}),this.destroySocket()}this.manualClose=!1,this.clearConnectTimer(),this.setStatus(`connecting`);let e=`${window.location.protocol===`https:`?`wss`:`ws`}://${window.location.host}/ws?catalog=2`;X(`ws_connect`,{url:e,resume:this.isResumeAttempt,...this.wsSnap()},`info`);let t=new WebSocket(e),n=!1;this.ws=t,this.protocolReady=!1,this.lastMessageAt=null,this.lastPongSeq=null,this.lastPingAt=null,this.lastMessageType=null,this.lastConnectTs=Date.now(),this.leakedSockets.add(t);let r=this.isResumeAttempt?g1:m1;this.isResumeAttempt=!1,this.connectTimer=window.setTimeout(()=>{this.ws===t&&(this.connectTimer=null,t.readyState===WebSocket.OPEN&&this.status===`connected`||(X(`ws_connect_timeout`,{wsState:p1[t.readyState],managerStatus:this.status,timeoutMs:r,...this.wsSnap()},`info`),this.consecutiveFailures+=1,this.destroySocket(),this.scheduleReconnect()))},r),t.onopen=()=>{if(this.ws!==t){X(`ws_onopen_stale`,this.wsSnap(),`info`);return}X(`ws_onopen`,this.wsSnap(),`info`),this.reconnectAttempts=0,this.consecutiveFailures=0,this.stallCount=0,this.connectionEpoch+=1,this.leakedSockets.delete(t),this.clearConnectTimer(),this.connectTimer=window.setTimeout(()=>{this.ws!==t||this.protocolReady||(this.connectTimer=null,this.consecutiveFailures+=1,this.destroySocket(),this.scheduleReconnect(),this.setStatus(`reconnecting`,`Server handshake timed out. Retrying…`))},h1)},t.onmessage=e=>{if(this.ws===t){this.lastMessageAt=Date.now(),this.lastMessageType=`unparsed`;try{let r=e.data,i=performance.now(),a=JSON.parse(r);if(this.lastMessageType=a.type,!this.protocolReady&&a.type!==`server-config`){this.requireCatalogReload();return}if(a.type===`server-config`){if(a.catalogVersion!==2){this.requireCatalogReload();return}if(!this.protocolReady){if(this.protocolReady=!0,this.clearConnectTimer(),!this.send({type:`terminal-resume`,token:this.resumeToken,claim:++this.resumeClaim}))return;this.lastTick=Date.now(),this.setStatus(this.isHidden()?`reconnecting`:`connected`),this.isHidden()||this.startHeartbeat()}}let o=performance.now()-i,s=a;if(s._parseMs=Math.round(o),s._rawLength=r.length,s._connectionEpoch=this.connectionEpoch,a.type===`terminal-lease`){this.resumeToken=a.token;return}if(a.type===`terminal-overload`){n=!0,this.stopHeartbeat(),this.cancelVerify(),this.setStatus(`reconnecting`),t.close();return}if(a.type===`pong`){if(this.lastPongSeq=a.seq??null,X(`ws_pong_received`,{receivedSeq:a.seq,matchesPendingPing:a.seq===this.pingSeq,...this.wsSnap()}),a.seq===this.pingSeq){if(this.clearPongTimer(),this.verifyTimer!==null){if(this.cancelVerify(),X(`ws_verify_ok`,this.wsSnap(),`info`),this.isHidden())return;this.connectionEpoch+=1,this.setStatus(`connected`),this.startHeartbeat(C1)}this.recordOverloadRecovery()}return}if(a.type===`terminal-output`||a.type===`terminal-ready`||a.type===`tmux-copy-mode-status`||a.type===`clipboard-offer`||a.type===`terminal-error`){if(!(this.status===`connected`&&!this.isHidden()&&(!a.sessionId||a.sessionId===this.attachedSessionId)&&(a.attachId===this.attachId||a.attachId===void 0&&!this.resumeToken))){a.type===`terminal-output`&&a.outputSeq!==void 0&&this.send({type:`terminal-ack`,outputSeq:a.outputSeq});return}a.type===`terminal-ready`&&(this.readyAttachId=this.attachId,this.recordOverloadRecovery())}this.listeners.forEach(e=>e(a))}catch{}}},t.onerror=()=>{this.ws===t&&(X(`ws_onerror`,this.wsSnap(),`info`),this.clearConnectTimer())},t.onclose=e=>{if(this.leakedSockets.delete(t),this.ws!==t){X(`ws_onclose_stale`,{code:e.code,...this.wsSnap()},`info`);return}X(`ws_onclose`,{code:e.code,reason:e.reason,clean:e.wasClean,...this.wsSnap()},`info`),this.clearConnectTimer(),this.cancelVerify(),this.consecutiveFailures+=1,this.overloadProgressSince=null,(n||e.code===1013)&&(this.overloadFailures=Math.min(this.overloadFailures+1,6),this.overloadRetryAt=Date.now()+Math.min(1e3*2**(this.overloadFailures-1),3e4)),this.ws=null,this.manualClose?this.setStatus(`disconnected`):this.scheduleReconnect()}}requireCatalogReload(){this.protocolMismatch=!0,this.disconnect(),this.setStatus(`disconnected`,f1),this.listeners.forEach(e=>e({type:`error`,message:f1}))}disconnect(){this.overloadFailures=0,this.overloadRetryAt=0,this.overloadProgressSince=null,this.manualClose=!0,this.clearConnectTimer(),this.cancelVerify(),this.reconnectTimer&&=(window.clearTimeout(this.reconnectTimer),null),this.destroySocket(),this.setStatus(`disconnected`)}startLifecycleListeners(){this.lifecycleStarted||typeof document>`u`||typeof window>`u`||(this.lifecycleStarted=!0,document.addEventListener(`visibilitychange`,this.onVisibilityChange),window.addEventListener(`pageshow`,this.onPageShow),window.addEventListener(`pagehide`,this.onPageHide),this.lastTick=Date.now(),this.wakeCheckInterval=window.setInterval(()=>{let e=Date.now(),t=e-this.lastTick;this.isHidden()||(t>_1&&(X(`ws_time_jump`,{gapMs:t,...this.wsSnap()},`info`),this.resumeConnection(`time_jump`)),this.lastTick=e)},v1))}stopLifecycleListeners(){this.lifecycleStarted&&(this.lifecycleStarted=!1,document.removeEventListener(`visibilitychange`,this.onVisibilityChange),window.removeEventListener(`pageshow`,this.onPageShow),window.removeEventListener(`pagehide`,this.onPageHide),this.wakeCheckInterval!==null&&(window.clearInterval(this.wakeCheckInterval),this.wakeCheckInterval=null))}send(e){if(this.protocolMismatch||!this.protocolReady||this.ws?.readyState!==WebSocket.OPEN)return!1;if(e.type===`terminal-ack`&&e.connectionEpoch!==void 0){if(e.connectionEpoch!==this.connectionEpoch)return!1;e={type:`terminal-ack`,outputSeq:e.outputSeq}}let t=e.type.startsWith(`terminal-`)||e.type.startsWith(`tmux-`),n=e.type===`terminal-resume`||e.type===`terminal-ack`;if(t&&!n){if(e.type!==`terminal-detach`){if(this.isHidden())return!1;if(Date.now()-this.lastTick>_1)return this.resumeConnection(`input_time_jump`),!1;if(this.status!==`connected`)return!1}if(e.type===`terminal-attach`)this.attachId+=1,this.attachedSessionId=e.sessionId,this.readyAttachId=null;else if(e.type===`terminal-input`||e.type===`terminal-paste`){if(this.readyAttachId!==this.attachId||e.sessionId!==this.attachedSessionId)return!1}else e.type===`terminal-detach`&&(this.readyAttachId=null,this.attachedSessionId=null);e={...e,attachId:this.attachId}}try{return this.ws.send(JSON.stringify(e)),e.type===`ping`&&(this.lastPingAt=Date.now(),X(`ws_ping_sent`,this.wsSnap())),e.type===`terminal-ack`&&this.recordOverloadRecovery(),!0}catch(t){return X(`ws_send_error`,{messageType:e.type,error:t instanceof Error?t.message:String(t),...this.wsSnap()},`info`),this.destroySocket(),this.scheduleReconnect(),!1}}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}subscribeStatus(e){return this.statusListeners.add(e),e(this.status,this.error,this.connectionEpoch),()=>this.statusListeners.delete(e)}getStatus(){return this.status}getConnectionEpoch(){return this.connectionEpoch}suspendConnection(){this.attachedSessionId&&this.send({type:`terminal-detach`,sessionId:this.attachedSessionId,attachId:this.attachId}),this.stopHeartbeat(),this.cancelVerify(),this.clearConnectTimer(),this.reconnectTimer!==null&&window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.manualClose||this.setStatus(`reconnecting`)}resumeConnection(e){if(this.manualClose||this.isHidden())return;let t=Date.now()-this.lastTick;this.lastTick=Date.now(),X(`ws_resume`,{trigger:e,gapMs:t,...this.wsSnap()},`info`),!this.waitForOverloadCooldown()&&this.verifyTimer===null&&(Date.now()-this.lastResumeAt<200&&this.reconnectTimer!==null||this.ws?.readyState===WebSocket.CONNECTING&&this.connectTimer!==null&&t<_1||(this.lastResumeAt=Date.now(),this.reconnectTimer!==null&&window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.ws?.readyState===WebSocket.OPEN?this.verifyConnection():this.forceReconnect(e,!0)))}verifyConnection(){this.cancelVerify(),this.stopHeartbeat(),this.setStatus(`reconnecting`),this.pingSeq+=1;let e=this.pingSeq,t=this.ws;if(X(`ws_verify`,{seq:e,...this.wsSnap()},`info`),!this.send({type:`ping`,seq:e})){X(`ws_verify_send_fail`,this.wsSnap(),`info`),this.forceReconnect(`verify_send_fail`,!0);return}this.verifyTimer=window.setTimeout(()=>{this.verifyTimer=null,this.ws===t&&(X(`ws_verify_timeout`,this.wsSnap(),`info`),this.forceReconnect(`verify_timeout`,!0))},S1)}cancelVerify(){this.verifyTimer!==null&&(window.clearTimeout(this.verifyTimer),this.verifyTimer=null)}forceReconnect(e=`unknown`,t=!1){if(this.protocolMismatch)return;if(this.manualClose){X(`ws_force_skip`,{trigger:e,reason:`manual_close`});return}if(this.waitForOverloadCooldown())return;let n=Date.now(),r=t?200:500;if(n-this.lastForceReconnectTs<r){X(`ws_force_skip`,{trigger:e,reason:`debounce`,force:t});return}if(!t&&this.ws?.readyState===WebSocket.OPEN&&this.status===`connected`){X(`ws_force_skip`,{trigger:e,reason:`already_connected`});return}this.lastForceReconnectTs=n,X(`ws_force_reconnect`,{trigger:e,force:t,...this.wsSnap()},`info`),this.reconnectAttempts=0,this.consecutiveFailures=0,this.stallCount=0,this.reconnectTimer&&=(window.clearTimeout(this.reconnectTimer),null),this.destroySocket(),t?(this.purgeLeakedSockets(),this.isResumeAttempt=!0,this.setStatus(`reconnecting`),this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},w1)):this.connect()}startHeartbeat(e){if(this.stopHeartbeat(),this.isHidden())return;let t=()=>{this.isHidden()||this.ws?.readyState===WebSocket.OPEN&&(this.pingSeq+=1,this.send({type:`ping`,seq:this.pingSeq})&&(this.clearPongTimer(),this.pongTimer=window.setTimeout(()=>{this.pongTimer=null,X(`ws_pong_timeout`,this.wsSnap(),`info`),this.destroySocket(),this.scheduleReconnect()},x1)))};e!==void 0&&e<y1?this.heartbeatTimer=window.setTimeout(()=>{t(),this.heartbeatTimer=window.setInterval(t,y1)},e):this.heartbeatTimer=window.setInterval(t,y1)}stopHeartbeat(){this.heartbeatTimer!==null&&(window.clearTimeout(this.heartbeatTimer),this.heartbeatTimer=null),this.clearPongTimer()}clearPongTimer(){this.pongTimer!==null&&(window.clearTimeout(this.pongTimer),this.pongTimer=null)}setStatus(e,t=null){this.protocolMismatch&&(e=`disconnected`,t=f1),e!==`connected`&&(this.readyAttachId=null,this.overloadProgressSince=null),this.status=e,this.error=t,this.statusListeners.forEach(n=>n(e,t,this.connectionEpoch))}recordOverloadRecovery(){if(this.overloadFailures===0||this.status!==`connected`||this.isHidden()||this.readyAttachId!==this.attachId)return;let e=Date.now();e-this.lastTick>_1&&(this.overloadProgressSince=null),this.overloadProgressSince??=e,e-this.overloadProgressSince>=b1&&(this.overloadFailures=0,this.overloadRetryAt=0,this.overloadProgressSince=null)}waitForOverloadCooldown(){let e=this.overloadRetryAt-Date.now();return e<=0?!1:(this.reconnectTimer!==null&&window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.setStatus(`reconnecting`),this.isHidden()||(this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},e)),!0)}scheduleReconnect(){if(this.protocolMismatch)return;if(this.stopHeartbeat(),this.isHidden()){X(`ws_schedule_skip`,{reason:`hidden`,...this.wsSnap()}),this.setStatus(`reconnecting`);return}if(this.waitForOverloadCooldown())return;if(this.consecutiveFailures>=T1){X(`ws_stall_detected`,this.wsSnap(),`info`),this.purgeLeakedSockets();let e=Math.min(E1*2**this.stallCount,3e4);this.stallCount+=1,this.consecutiveFailures=0,this.reconnectAttempts=0,this.isResumeAttempt=!0,this.setStatus(`reconnecting`),this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},e);return}this.reconnectAttempts+=1;let e=Math.min(1e3*2**(this.reconnectAttempts-1),3e4);X(`ws_schedule_reconnect`,{delay:e,...this.wsSnap()}),this.setStatus(`reconnecting`),this.reconnectTimer&&window.clearTimeout(this.reconnectTimer),this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},e)}isHidden(){return this.pageSuspended||typeof document<`u`&&document.visibilityState===`hidden`}clearConnectTimer(){this.connectTimer&&=(window.clearTimeout(this.connectTimer),null)}destroySocket(){if(this.clearConnectTimer(),this.stopHeartbeat(),this.cancelVerify(),!this.ws)return;let e=this.ws;this.ws=null,this.leakedSockets.add(e),e.onopen=null,e.onmessage=null,e.onerror=null,e.onclose=()=>{this.leakedSockets.delete(e),e.onclose=null};try{e.close()}catch{}e.readyState===WebSocket.CLOSED&&(this.leakedSockets.delete(e),e.onclose=null)}purgeLeakedSockets(){if(this.leakedSockets.size!==0){X(`ws_purge_leaked`,{count:this.leakedSockets.size},`info`);for(let e of this.leakedSockets)try{e.onopen=null,e.onmessage=null,e.onerror=null,e.onclose=null,e.close()}catch{}this.leakedSockets.clear()}}};function O1(){let e=Gh(e=>e.setConnectionState);return(0,y.useEffect)(()=>{D1.connect(),D1.startLifecycleListeners();let t=D1.subscribeStatus((t,n,r)=>{e(t,n,r)});return()=>{t(),D1.stopLifecycleListeners()}},[e]),{sendMessage:(0,y.useMemo)(()=>e=>D1.send(e),[]),subscribe:(0,y.useMemo)(()=>D1.subscribe.bind(D1),[]),getConnectionEpoch:(0,y.useMemo)(()=>()=>D1.getConnectionEpoch(),[])}}var k1=100;function A1({viewport:e,win:t,doc:n}){if(!e)return!1;let r=Math.max(0,e.offsetTop||0),i=Math.max(0,e.offsetLeft||0),a=t.innerHeight-(e.height+r),o=Math.max(0,a),s=Math.max(0,e.height||0),c=Math.max(0,e.width||0);return n.documentElement.style.setProperty(`--keyboard-inset`,`${o}px`),n.documentElement.style.setProperty(`--viewport-offset-top`,`${r}px`),n.documentElement.style.setProperty(`--viewport-offset-left`,`${i}px`),n.documentElement.style.setProperty(`--visual-viewport-height`,`${s}px`),n.documentElement.style.setProperty(`--visual-viewport-width`,`${c}px`),o>k1?n.documentElement.classList.add(`keyboard-visible`):n.documentElement.classList.remove(`keyboard-visible`),!0}function j1(e){e.documentElement.style.removeProperty(`--keyboard-inset`),e.documentElement.style.removeProperty(`--viewport-offset-top`),e.documentElement.style.removeProperty(`--viewport-offset-left`),e.documentElement.style.removeProperty(`--visual-viewport-height`),e.documentElement.style.removeProperty(`--visual-viewport-width`),e.documentElement.classList.remove(`keyboard-visible`)}function M1(){(0,y.useEffect)(()=>{let e=window.visualViewport;if(!e)return;let t=null,n=null,r=()=>{let e=document.activeElement;if(!e)return!1;let t=e.tagName?.toLowerCase();return t===`input`||t===`textarea`?!0:!!e.isContentEditable},i=()=>{A1({viewport:e,win:window,doc:document})},a=()=>{if(typeof window.requestAnimationFrame!=`function`){i();return}t!==null&&window.cancelAnimationFrame(t);let e=performance.now(),n=()=>{i(),t=performance.now()-e<1500?window.requestAnimationFrame(n):null};t=window.requestAnimationFrame(n)},o=()=>{if(!r()){c();return}i()},s=()=>{n!==null||typeof window.setInterval!=`function`||(n=window.setInterval(o,250),o())},c=()=>{n===null||typeof window.clearInterval!=`function`||(window.clearInterval(n),n=null)},l=()=>{r()?(a(),s(),i()):c()},u=()=>{l()},d=()=>{l()},f=()=>{a()};return i(),l(),e.addEventListener(`resize`,i),e.addEventListener(`scroll`,i),typeof window.addEventListener==`function`&&(window.addEventListener(`resize`,i),window.addEventListener(`orientationchange`,f)),typeof document.addEventListener==`function`&&(document.addEventListener(`focusin`,u),document.addEventListener(`focusout`,d),document.addEventListener(`focus`,u,!0),document.addEventListener(`blur`,d,!0)),()=>{e.removeEventListener(`resize`,i),e.removeEventListener(`scroll`,i),typeof window.removeEventListener==`function`&&(window.removeEventListener(`resize`,i),window.removeEventListener(`orientationchange`,f)),typeof document.removeEventListener==`function`&&(document.removeEventListener(`focusin`,u),document.removeEventListener(`focusout`,d),document.removeEventListener(`focus`,u,!0),document.removeEventListener(`blur`,d,!0)),t!==null&&typeof window.cancelAnimationFrame==`function`&&window.cancelAnimationFrame(t),c(),j1(document)}},[])}var N1=[`theme`,`commandPresets`,`defaultPresetId`,`defaultProjectDir`,`lastProjectPath`,`recentPaths`,`sessionSortMode`,`sessionSortDirection`,`manualSessionOrder`,`sidebarAnchor`,`projectFilters`,`hostFilters`,`showProjectName`,`showLastUserMessage`,`showSessionIdPrefix`,`soundOnPermission`,`soundOnIdle`],P1=[`claude`,`claude-rp`,`codex`,`pi`,`devin`,`grok`,`omp`];function F1(e){return typeof e==`boolean`}function I1(e,t){return Array.isArray(e)&&e.length<=t&&e.every(e=>typeof e==`string`)}function L1(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>=1&&t.id.length<=128&&typeof t.label==`string`&&t.label.trim().length>=1&&t.label.length<=64&&typeof t.command==`string`&&t.command.trim().length>=1&&t.command.length<=1024&&typeof t.isBuiltIn==`boolean`&&(t.agentType===void 0||P1.includes(t.agentType))}var R1={theme:e=>e===`dark`||e===`light`||e===`system`,commandPresets:e=>Array.isArray(e)&&e.length<=50&&e.every(L1),defaultPresetId:e=>typeof e==`string`&&e.length<=128,defaultProjectDir:e=>typeof e==`string`&&e.length<=4096,lastProjectPath:e=>e===null||typeof e==`string`&&e.length<=4096,recentPaths:e=>I1(e,50),sessionSortMode:e=>e===`status`||e===`created`||e===`manual`,sessionSortDirection:e=>e===`asc`||e===`desc`,manualSessionOrder:e=>I1(e,1e3),sidebarAnchor:e=>e===`top`||e===`bottom`,projectFilters:e=>I1(e,500),hostFilters:e=>I1(e,500),showProjectName:F1,showLastUserMessage:F1,showSessionIdPrefix:F1,soundOnPermission:F1,soundOnIdle:F1};function z1(e){return N1.includes(e)}function B1(e,t){return R1[e](t)}var V1=`agentboard-theme`,H1=`agentboard-settings`,U1=200,W1=new Map,G1=new Map,K1=new Set;function q1(e){return G1.has(e)||K1.has(e)}var J1=null,Y1=!1;function X1(e){return e===`theme`?hK.getState().theme:U.getState()[e]}function Z1(e){let t=e===`theme`?V1:H1;return w.getItem(t)!==null}function Q1(){if(J1=null,G1.size===0)return;let e={},t=new Map,n=new Map;for(let[r,i]of G1)e[r]=JSON.parse(i),t.set(r,i),n.set(r,W1.get(r)),W1.set(r,i),K1.add(r);G1.clear();let r=()=>{for(let[e,r]of t){if(W1.get(e)!==r)continue;let t=n.get(e);t===void 0?W1.delete(e):W1.set(e,t)}},i=e=>{for(let n of t.keys()){if(K1.delete(n),!e||G1.has(n))continue;let t=W1.get(n);t!==void 0&&t!==JSON.stringify(X1(n))&&$1(n,JSON.parse(t))}},a=!1;try{fetch(`/api/settings/synced`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({settings:e})}).then(e=>{a=e.ok,e.ok||(X(`synced_settings_push_rejected`,{status:e.status},`warn`),r())}).catch(e=>{X(`synced_settings_push_failed`,{message:e instanceof Error?e.message:String(e)},`warn`),r()}).finally(()=>i(a))}catch(e){r(),i(!1),X(`synced_settings_push_failed`,{message:e instanceof Error?e.message:String(e)},`warn`)}}function $1(e,t){e===`theme`?hK.setState({theme:t}):U.setState({[e]:t})}function e0(e,t){if(W1.get(e)===JSON.stringify(t)){G1.delete(e);return}t0(e,t)}function t0(e,t){G1.set(e,JSON.stringify(t)),!J1&&(J1=setTimeout(Q1,U1))}function n0(e){let t=new Map;for(let e of N1)t.set(e,Z1(e));let n={},r;for(let[t,i]of Object.entries(e))!z1(t)||!B1(t,i)||(W1.set(t,JSON.stringify(i)),!q1(t)&&(t===`theme`?r=i:n[t]=i));r!==void 0&&hK.setState({theme:r}),Object.keys(n).length>0&&U.setState(n);for(let n of N1){if(n in e||!t.get(n))continue;let r=X1(n);B1(n,r)&&W1.get(n)!==JSON.stringify(r)&&t0(n,r)}}function r0(){if(Y1)return()=>{};Y1=!0;let e=U.subscribe((e,t)=>{let n=e,r=t;for(let e of N1)e!==`theme`&&n[e]!==r[e]&&e0(e,n[e])}),t=hK.subscribe((e,t)=>{e.theme!==t.theme&&e0(`theme`,e.theme)});return()=>{e(),t(),Y1=!1,J1&&=(clearTimeout(J1),null),G1.clear(),K1.clear(),W1.clear()}}function i0(e,t,n){let r=e;return t.length>0&&(r=r.filter(e=>t.includes(e.projectPath))),n.length>0&&(r=r.filter(e=>n.includes(e.host??``))),r}function a0(){let[e,t]=(0,y.useState)(!1),[n,r]=(0,y.useState)(void 0),[i,a]=(0,y.useState)(void 0),[o,s]=(0,y.useState)(void 0),[c,l]=(0,y.useState)(!1),[u,d]=(0,y.useState)(!1),[f,p]=(0,y.useState)(null),[m,h]=(0,y.useState)(null),[g,_]=(0,y.useState)(null),v=Gh(e=>e.sessions),b=Gh(e=>e.agentSessions),S=Gh(e=>e.agentSessionsEpoch),C=Gh(e=>e.selectedSessionId),w=Gh(e=>e.selectedHibernatingSessionId),T=Gh(e=>e.setSessions),E=Gh(e=>e.setAgentSessions),D=Gh(e=>e.setActiveAgentSessions),O=Gh(e=>e.setHostStatuses),A=Gh(e=>e.updateSession),j=Gh(e=>e.setSelectedSessionId),M=Gh(e=>e.setSelectedHibernatingSessionId),P=Gh(e=>e.hasLoaded),ee=Gh(e=>e.connectionStatus),I=Gh(e=>e.connectionError),te=Gh(e=>e.clearExitingSession),L=Gh(e=>e.markSessionExiting),R=Gh(e=>e.setRemoteAllowControl),z=Gh(e=>e.setRemoteAllowAttach),ne=Gh(e=>e.setHostLabel),B=Gh(e=>e.setPreferWindowName),re=Gh(e=>e.hostStatuses),V=Gh(e=>e.remoteAllowControl),ie=Gh(e=>e.hostLabel),H=gK(),ae=Ot(),oe=U(e=>e.defaultProjectDir),se=U(e=>e.commandPresets),ce=U(e=>e.defaultPresetId),le=U(e=>e.lastProjectPath),ue=U(e=>e.setLastProjectPath),de=U(e=>e.addRecentPath),fe=U(e=>e.shortcutModifier),pe=U(e=>e.sidebarWidth),me=U(e=>e.sidebarAnchor),he=U(e=>e.setSidebarWidth),ge=U(e=>e.projectFilters),_e=U(e=>e.hostFilters),ve=U(e=>e.soundOnPermission),ye=U(e=>e.soundOnIdle),be=Gh(e=>e.connectionEpoch),{sendMessage:xe,subscribe:Se,getConnectionEpoch:Ce}=O1();(0,y.useEffect)(()=>r0(),[]),M1(),(0,y.useEffect)(()=>{if(typeof document>`u`||!ve&&!ye)return;let e=!1,t=()=>{e&&!GY()||(e=!0,qY())};return document.addEventListener(`click`,t,{passive:!0}),document.addEventListener(`keydown`,t,{passive:!0}),document.addEventListener(`touchstart`,t,{passive:!0}),()=>{document.removeEventListener(`click`,t),document.removeEventListener(`keydown`,t),document.removeEventListener(`touchstart`,t)}},[ve,ye]);let we=(0,y.useRef)(!1),Te=(0,y.useCallback)(e=>{e.preventDefault(),we.current=!0,document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},[]);(0,y.useEffect)(()=>{if(typeof document>`u`||typeof document.addEventListener!=`function`)return;let e=e=>{if(!we.current)return;let t=e.clientX;he(Math.max(180,Math.min(400,t)))},t=()=>{we.current&&(we.current=!1,document.body.style.cursor=``,document.body.style.userSelect=``)};return document.addEventListener(`mousemove`,e),document.addEventListener(`mouseup`,t),()=>{document.removeEventListener(`mousemove`,e),document.removeEventListener(`mouseup`,t)}},[he]),(0,y.useEffect)(()=>{let e=Se(e=>{if(e.type!==`terminal-output`){if(e.type===`sessions`){let t=Gh.getState().sessions,{soundOnPermission:n,soundOnIdle:r}=U.getState();if(n||r)for(let i of e.sessions){let e=t.find(e=>e.id===i.id);e&&e.status!==i.status&&(e.status!==`permission`&&i.status===`permission`&&n&&XY(),e.status===`working`&&i.status===`waiting`&&r&&ZY())}if(Ve.current.size>0){let e=Ce();for(let[t,n]of Ve.current)n.epoch!==e&&Ve.current.delete(t)}let i=Ve.current.size>0?e.sessions.filter(e=>!Ve.current.has(e.id)):e.sessions,{selectedSessionId:a,selectedHibernatingSessionId:o}=Gh.getState(),s=a!==null&&o===null&&!i.some(e=>e.id===a)?t.find(e=>e.id===a)?.agentSessionId?.trim()??null:null;s&&(Le.current=s),T(i);let c=Re.current,{selectedSessionId:l,selectedHibernatingSessionId:u}=Gh.getState(),{projectFilters:d,hostFilters:f}=U.getState();if(c&&l===null&&u===null){let e=i.find(e=>!(e.agentSessionId?.trim()!==c||d.length>0&&!d.includes(e.projectPath)||f.length>0&&!f.includes(e.host??``)));e&&(Re.current=null,j(e.id))}}if(e.type===`host-status`&&O(e.hosts),e.type===`server-config`&&(R(e.remoteAllowControl),z(e.remoteAllowAttach),ne(e.hostLabel),B(e.preferWindowName),e.clientLogLevel&&xk(e.clientLogLevel)),e.type===`synced-settings`&&n0(e.settings),e.type===`session-update`){let t=Gh.getState().sessions.find(t=>t.id===e.session.id)?.status,n=e.session.status;if(A(e.session),t){let{soundOnPermission:e,soundOnIdle:r}=U.getState();t!==`permission`&&n===`permission`&&e&&XY(),t===`working`&&n===`waiting`&&r&&ZY()}}if(e.type===`session-created`){let t=Gh.getState().sessions;t.some(t=>t.id===e.session.id)||T([e.session,...t]),j(e.session.id),de(e.session.projectPath);let{projectFilters:n,setProjectFilters:r}=U.getState();n.length>0&&!n.includes(e.session.projectPath)&&r([...n,e.session.projectPath])}if(e.type===`session-removed`){PG(e.sessionId);let t=Gh.getState().sessions,n=t.filter(t=>t.id!==e.sessionId);n.length!==t.length&&T(n)}if(e.type===`agent-sessions`){let t=Array.isArray(e.active)?e.active:[],n=Array.isArray(e.hibernating)?e.hibernating:[],r=Array.isArray(e.history)?e.history:[],{selectedHibernatingSessionId:i}=Gh.getState(),a=Le.current;i&&!n.some(e=>e.sessionId===i)&&(Re.current=i),E(t,n,r),_(e=>e&&n.some(t=>t.sessionId===e.sessionId)?null:e),a&&n.some(e=>e.sessionId===a)?(Le.current=null,M(a)):a&&(Le.current=null)}if(e.type===`agent-sessions-active`&&D(Array.isArray(e.active)?e.active:[]),e.type===`session-orphaned`&&!e.supersededBy){let t=Gh.getState().sessions,n=t.filter(t=>t.agentSessionId?.trim()!==e.session.sessionId);n.length!==t.length&&T(n)}if(e.type===`session-activated`){let t=Gh.getState().sessions.find(t=>t.tmuxWindow===e.window);t&&A({...t,agentSessionId:e.session.sessionId,agentSessionName:e.session.displayName,mediaSummary:e.session.mediaSummary,media:void 0,logFilePath:e.session.logFilePath,isHibernating:e.session.isHibernating,lastUserMessage:e.session.lastUserMessage??t.lastUserMessage})}if(e.type===`session-wake-result`)if(e.ok&&e.session){_(t=>t?.sessionId===e.sessionId?null:t);let t=Gh.getState().sessions;t.some(t=>t.id===e.session.id)||T([e.session,...t]),j(e.session.id)}else e.ok||(p(`${e.error?.code}: ${e.error?.message}`),window.setTimeout(()=>p(null),6e3));if(e.type===`session-hibernate-result`&&(e.ok?(e.session&&_(e.session),M(e.sessionId)):(p(e.error??`Failed to hibernate session`),window.setTimeout(()=>p(null),6e3))),e.type===`terminal-error`&&(!e.sessionId||e.sessionId===C)&&(p(`${e.code}: ${e.message}`),window.setTimeout(()=>p(null),6e3)),e.type===`terminal-ready`&&e.sessionId===C&&p(null),e.type===`error`&&(p(e.message),window.setTimeout(()=>p(null),6e3)),e.type===`kill-failed`){let t=Ve.current.get(e.sessionId);if(t){let n=Gh.getState().sessions;n.some(t=>t.id===e.sessionId)||T([t.session,...n]),t.wasSelected&&j(e.sessionId),Ve.current.delete(e.sessionId)}te(e.sessionId),p(e.message),window.setTimeout(()=>p(null),6e3)}e.type===`session-move-to-history-result`&&!e.ok&&e.error&&(p(e.error),window.setTimeout(()=>p(null),6e3))}});return()=>{e()}},[C,w,de,te,xe,j,M,_,T,E,D,O,R,z,ne,B,Se,A]);let Ee=(0,y.useMemo)(()=>v.find(e=>e.id===C)||null,[C,v]),De=b.hibernating??[],Oe=b.history??[],ke=(0,y.useMemo)(()=>i0(De,ge,_e),[De,ge,_e]),Ae=(0,y.useMemo)(()=>ke.find(e=>e.sessionId===w)||(g?.sessionId===w?g:null),[ke,g,w]);(0,y.useEffect)(()=>{Ee?.projectPath&&!Ee.remote&&ue(Ee.projectPath)},[Ee?.projectPath,Ee?.remote,ue]);let je=U(e=>e.sessionSortMode),Me=U(e=>e.sessionSortDirection),Ne=U(e=>e.manualSessionOrder),Pe=(0,y.useMemo)(()=>Oh(v,{mode:je,direction:Me,manualOrder:Ne}),[v,je,Me,Ne]),Fe=(0,y.useMemo)(()=>{let e=Pe;return ge.length>0&&(e=e.filter(e=>ge.includes(e.projectPath))),_e.length>0&&(e=e.filter(e=>_e.includes(e.host??``))),e},[Pe,ge,_e]),Ie=(0,y.useRef)(w),Le=(0,y.useRef)(null),Re=(0,y.useRef)(null),ze=(0,y.useRef)(be),Be=(0,y.useCallback)(()=>Fe.length>0?(j(Fe[0].id),!0):ke.length>0?(M(ke[0].sessionId),!0):!1,[Fe,ke,j,M]);(0,y.useEffect)(()=>{let e=Ie.current;e&&w===null&&!De.some(t=>t.sessionId===e)?Re.current=e:w!==null&&(Re.current=null),Ie.current=w},[De,w]),(0,y.useEffect)(()=>{g&&w!==g.sessionId&&_(null)},[g,w]),(0,y.useEffect)(()=>{ze.current!==be&&(ze.current=be,Le.current=null,Re.current=null,_(null))},[be]),(0,y.useEffect)(()=>{P&&(w||C&&(Fe.some(e=>e.id===C)||Be()||j(null)))},[P,C,w,Be,j]),(0,y.useEffect)(()=>{if(!w||g?.sessionId===w||S!==be||ke.some(e=>e.sessionId===w))return;let e=Fe.find(e=>e.agentSessionId?.trim()===w);if(e){j(e.id);return}Be()||M(null)},[ke,Fe,S,g,w,Be,j,M,be]),(0,y.useEffect)(()=>{let e=Re.current;if(!e)return;if(w!==null){Re.current=null;return}let t=Fe.find(t=>t.agentSessionId?.trim()===e);if(t){Re.current=null,j(t.id);return}if(C!==null){Re.current=null;return}Be()&&(Re.current=null)},[Fe,C,w,Be,j]),(0,y.useEffect)(()=>{window.matchMedia(`(max-width: 767px)`).matches&&P&&C===null&&w===null&&(Fe.length>0||ke.length>0)&&Be()},[ke.length,Fe.length,P,Be,C,w]);let Ve=(0,y.useRef)(new Map),He=(0,y.useCallback)((e,t=`unknown`)=>{PG(e);let{sessions:n,selectedSessionId:r}=Gh.getState(),i=n.find(t=>t.id===e);i&&Ve.current.set(e,{session:i,wasSelected:r===e,epoch:Ce()}),(0,uf.flushSync)(()=>{L(e),T(n.filter(t=>t.id!==e))}),xe({type:`session-kill`,sessionId:e,source:t})},[L,T,xe]);(0,y.useEffect)(()=>{let n=Mt(fe),r=r=>{if(r.defaultPrevented)return;let i=r.code,a=Ft(r,n);if(a&&(i===`BracketLeft`||i===`BracketRight`)){r.preventDefault();let e=me===`bottom`&&!window.matchMedia(`(max-width: 767px)`).matches,t=(i===`BracketLeft`?-1:1)*(e?-1:1),n=Fe;if(n.length===0){let e=ke;if(e.length===0)return;let n=e.findIndex(e=>e.sessionId===w);if(n===-1){M(e[0].sessionId);return}M(e[(n+t+e.length)%e.length].sessionId);return}let a=n.findIndex(e=>e.id===C);if(a===-1){j(n[0].id);return}j(n[(a+t+n.length)%n.length].id);return}if(a&&/^Digit[1-9]$/.test(i)){let e=Number(i.slice(5))-1;if(Fe.length>0){let t=Fe[e];if(!t)return;r.preventDefault(),j(t.id);return}let t=ke[e];if(!t)return;r.preventDefault(),M(t.sessionId);return}if(a&&i===`KeyN`){r.preventDefault(),!e&&!c&&ae&&t(!0);return}if(a&&i===`Comma`){r.preventDefault(),l(t=>t?!1:!e);return}if(a&&i===`KeyX`){r.preventDefault(),C&&!e&&!c&&He(C,`keyboard_shortcut`);return}};return window.addEventListener(`keydown`,r),()=>window.removeEventListener(`keydown`,r)},[e,c,C,w,j,M,Fe,ke,He,me,fe,ae]);let Ue=()=>ae?(r(void 0),a(void 0),s(void 0),t(!0),!0):!1,We=()=>l(!0),Ge=(e,t,n,r)=>{xe({type:`session-create`,operationId:x(),projectPath:e,name:t,command:n,host:r}),r||ue(e)},Ke=e=>{xe({type:`session-wake`,sessionId:e})},qe=(0,y.useCallback)(e=>{xe({type:`session-hibernate`,sessionId:e})},[xe]),Je=(e,t)=>{xe({type:`session-rename`,sessionId:e,newName:t})},Ye=(0,y.useCallback)(e=>{let t=v.find(t=>t.id===e);t&&xe({type:`session-create`,operationId:x(),projectPath:t.projectPath,command:t.command||void 0,host:t.remote&&t.host?t.host:void 0})},[v,xe]),Xe=(0,y.useCallback)(e=>{xe({type:`session-move-to-history`,sessionId:e})},[xe]);(0,y.useEffect)(()=>_K(),[]),(0,y.useEffect)(()=>{document.documentElement.setAttribute(`data-theme`,H)},[H]),(0,y.useEffect)(()=>{fetch(`/api/server-info`).then(e=>e.json()).then(e=>h(e)).catch(()=>{})},[]);let Ze=(0,y.useMemo)(()=>ie?re.filter(e=>e.host!==ie):re,[re,ie]);return(0,k.jsxs)(`div`,{className:`flex h-full overflow-hidden`,children:[(0,k.jsx)(`div`,{className:`hidden h-full flex-col md:flex md:shrink-0`,style:{width:pe},children:(0,k.jsx)(gk,{sessions:v,hibernatingSessions:De,historySessions:Oe,selectedSessionId:C,selectedHibernatingSessionId:w,onSelect:j,onSelectHibernating:M,onRename:Je,onResume:Ke,onHibernate:qe,onKill:He,onDuplicate:Ye,onMoveToHistory:Xe,onNewSession:Ue,loading:!P,error:I||f,anchor:me,showAnchorControl:!0,notice:(0,k.jsx)(N,{onOpen:()=>d(!0),subscribe:Se}),filterBarControls:(0,k.jsx)(Jt,{connectionStatus:ee,onNewSession:Ue,onOpenSettings:We,onOpenHistory:()=>d(!0),tailscaleIp:m?.tailscaleIp??null,placement:me===`bottom`?`up`:`down`})})}),(0,k.jsx)(`div`,{className:`hidden md:block w-1 shrink-0 cursor-col-resize bg-transparent transition-colors hover:bg-white/10 active:bg-white/20`,onMouseDown:Te}),(0,k.jsx)(LJ,{session:Ee,sessions:Fe,drawerSessions:v,hibernatingSession:Ae,hibernatingSessions:De,connectionStatus:ee,connectionEpoch:be,sendMessage:xe,subscribe:Se,onClose:()=>j(null),onSelectSession:j,onSelectHibernatingSession:M,onNewSession:Ue,onKillSession:He,onRenameSession:Je,onDuplicateSession:Ye,onOpenSettings:We,onOpenHistory:()=>d(!0),onResumeSession:Ke,onHibernateSession:qe,onMoveToHistory:Xe,historySessions:Oe,loading:!P,error:I||f}),(0,k.jsx)(nY,{isOpen:e,onClose:()=>t(!1),onCreate:Ge,defaultProjectDir:oe,commandPresets:se,defaultPresetId:ce,lastProjectPath:le,activeProjectPath:Ee&&!Ee.remote?Ee.projectPath:void 0,remoteHosts:Ze,remoteAllowControl:V,initialHost:n,initialPath:i,initialCommand:o}),(0,k.jsx)(dQ,{isOpen:c,onClose:()=>l(!1)}),(0,k.jsx)(F,{open:u,subscribe:Se,onClose:()=>d(!1),onOpenSession:e=>{T([e,...v.filter(t=>t.id!==e.id)]),M(null),j(e.id)}}),(0,k.jsx)(d1,{})]})}var o0=`modulepreload`,s0=function(e){return`/`+e},c0={},l0=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=s0(t,n),t in c0)return;c0[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:o0,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},u0=`true`,d0=`false`,f0=u0===`true`,p0=d0===`true`;function m0(e={}){let{immediate:t=!1,onNeedRefresh:n,onOfflineReady:r,onRegistered:i,onRegisteredSW:a,onRegisterError:o}=e,s,c,l,u=async(e=!0)=>{await c,f0||l?.()};async function d(){if(`serviceWorker`in navigator){if(s=await l0(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bq4GJJid.js`);return{Workbox:e}},[]).then(({Workbox:e})=>new e(`/sw.js`,{scope:`/`,type:`classic`})).catch(e=>{o?.(e)}),!s)return;if(l=()=>{s?.messageSkipWaiting()},!p0)if(f0)s.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),s.addEventListener(`installed`,e=>{e.isUpdate||r?.()});else{let e=!1,t=()=>{e=!0,s?.addEventListener(`controlling`,e=>{e.isUpdate&&window.location.reload()}),n?.()};s.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&r?.():n.isExternal?t():!e&&r?.():n.isUpdate||r?.()}),s.addEventListener(`waiting`,t)}s.register({immediate:t}).then(e=>{a?a(`/sw.js`,e):i?.(e)}).catch(e=>{o?.(e)})}}return c=d(),u}kt()&&document.documentElement.classList.add(`ios`),At()&&document.documentElement.classList.add(`ios-pwa`),m0({immediate:!0,onRegisteredSW(e,t){t&&(setInterval(()=>{t.update()},300*1e3),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&t.update()}))}});var h0=document.getElementById(`root`);if(!h0)throw Error(`Root element not found`);(0,b.createRoot)(h0).render((0,k.jsx)(y.StrictMode,{children:(0,k.jsx)(a0,{})}));
310
+ `,onClick:()=>{IJ(),d(t.id)},title:gt?t.name:void 0,children:i},t.id)})})]}),(0,k.jsxs)(`div`,{className:`relative flex-1`,children:[(0,k.jsx)(`div`,{ref:Me,className:`absolute inset-0 overflow-clip`,style:{backgroundColor:T.background}}),e&&!Ce&&!ze&&(0,k.jsxs)(`div`,{role:`status`,"aria-live":`polite`,"data-testid":`terminal-recovery-status`,className:`absolute top-2 left-2 z-50 flex items-center gap-1.5 rounded-lg bg-black/60 px-2.5 py-1.5 text-xs text-white/90 shadow-lg backdrop-blur-md`,children:[(0,k.jsx)(st,{width:W.pill,height:W.pill,className:Re||o!==`connected`?`animate-spin`:``}),o===`connected`?Re?`Restoring terminal`:`Terminal unavailable`:o===`disconnected`?`Disconnected`:`Reconnecting`,(0,k.jsx)(`span`,{className:`text-white/70`,children:`· Input paused`})]}),je.pending&&e&&!Ce&&(0,k.jsx)(xJ,{text:je.text,sessionName:e.name,ready:ze,atLimit:je.atLimit,truncated:je.truncated,persistence:je.persistence,onSave:je.save,onDiscardOthers:je.hasOtherDrafts?je.discardOthers:void 0,onEdit:je.edit,onSend:pt,onDiscard:()=>{je.discard(),dt()}},Ae),Ve&&e&&(0,k.jsxs)(`div`,{className:`absolute ${F&&!te?`bottom-20`:`bottom-8`} left-1/2 z-30 flex max-w-[calc(100%-2rem)] -translate-x-1/2 items-center gap-2 rounded-lg border border-border bg-elevated/95 px-2 py-2 shadow-lg backdrop-blur-sm md:hidden`,children:[(0,k.jsx)(`span`,{className:`max-w-[12rem] truncate text-xs text-secondary md:max-w-[18rem]`,children:`Selection ready`}),(0,k.jsxs)(`button`,{type:`button`,onClick:He,className:`relative flex h-8 shrink-0 items-center justify-center gap-1.5 rounded bg-accent px-2.5 text-xs font-medium text-white hover:bg-accent/90 active:scale-95 transition-all [@media(pointer:coarse)]:before:absolute [@media(pointer:coarse)]:before:inset-[calc(50%-22px)] [@media(pointer:coarse)]:before:content-['']`,title:`Copy selection`,"aria-label":`Copy selection`,children:[(0,k.jsx)(ce,{width:W.default,height:W.default}),`Copy`]}),(0,k.jsx)(`button`,{type:`button`,onClick:Ue,className:`relative flex h-8 w-8 shrink-0 items-center justify-center rounded border border-border text-secondary hover:bg-hover hover:text-primary active:scale-95 transition-all [@media(pointer:coarse)]:before:absolute [@media(pointer:coarse)]:before:inset-[calc(50%-22px)] [@media(pointer:coarse)]:before:content-['']`,title:`Dismiss`,"aria-label":`Dismiss`,children:(0,k.jsx)(ot,{width:W.default,height:W.default})})]}),e&&(0,k.jsx)(yJ,{session:e,ready:o===`connected`&&ze}),!e&&(0,k.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-sm text-muted`,children:r?null:`Select a session to view terminal`}),e&&Ce&&(0,k.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-center text-sm text-muted`,children:`Remote session (read-only). Use SSH to attach on the host.`}),r&&(0,k.jsx)(`div`,{className:`absolute inset-0 z-10 overflow-y-auto bg-base`,children:(0,k.jsxs)(`div`,{className:`mx-auto flex min-h-full w-full max-w-5xl flex-col gap-4 p-4 md:p-6`,children:[(0,k.jsx)(`div`,{className:`border-b border-border pb-4`,children:(0,k.jsxs)(`div`,{className:`flex flex-col gap-3 md:flex-row md:items-start md:justify-between`,children:[(0,k.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 text-sm`,children:[(0,k.jsx)(`h2`,{className:`min-w-0 truncate text-lg font-semibold text-primary`,children:Te}),(0,k.jsx)(`span`,{className:`rounded-full bg-blue-500/15 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-blue-400`,children:`Hibernating`}),Ee&&(0,k.jsx)(`span`,{className:`text-muted`,children:Ee}),(0,k.jsxs)(`span`,{className:`text-muted`,children:[`Last active `,De]})]}),r.lastResumeError&&(0,k.jsxs)(`div`,{className:`inline-flex items-center gap-1 rounded bg-amber-500/15 px-2 py-1 text-xs text-amber-400`,title:`Last wake failed: ${r.lastResumeError}`,children:[(0,k.jsx)(I,{width:W.pill,height:W.pill}),`Last wake failed`]}),r.lastUserMessage&&(0,k.jsx)(`p`,{className:`max-h-28 max-w-3xl overflow-y-auto whitespace-pre-wrap break-words pr-2 text-sm leading-6 text-secondary`,children:r.lastUserMessage})]}),(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,k.jsx)(`button`,{type:`button`,onClick:()=>_(r.sessionId),className:`btn btn-primary hidden md:inline-flex`,children:`Wake`}),b&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>b(r.sessionId),className:`btn btn-secondary`,children:`Move to History`})]})]})}),(0,k.jsx)(rk,{session:r})]})}),Fe&&e&&!te?(0,k.jsxs)(`button`,{type:`button`,onClick:Ge,className:`absolute bottom-14 left-1/2 z-20 flex h-10 items-center justify-center rounded-full border border-amber-400/35 bg-amber-500/20 text-amber-100 shadow-lg backdrop-blur-sm transition-all hover:bg-amber-500/30 active:scale-95 md:hidden ${Wt}`,style:{transform:`translateX(-50%)`},title:`Exit tmux copy mode and return to live output`,"aria-label":`Exit copy mode`,children:[(0,k.jsx)(`span`,{className:`px-3 text-[11px] font-semibold uppercase tracking-wide`,children:`Copy mode`}),(0,k.jsx)(`span`,{className:`self-stretch border-l border-amber-400/25`,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`px-3 text-sm font-medium`,children:`Exit`})]}):F&&e&&!te?(0,k.jsxs)(`button`,{type:`button`,onClick:Ge,className:`absolute bottom-8 left-1/2 z-20 flex h-10 px-4 items-center justify-center gap-1.5 rounded-full bg-blue-600/90 text-white shadow-lg hover:bg-blue-600 active:scale-95 transition-all md:hidden ${Wt}`,style:{transform:`translateX(-50%)`},title:`Scroll to bottom`,"aria-label":`Scroll to bottom`,children:[(0,k.jsx)(L,{width:W.primary,height:W.primary}),(0,k.jsx)(`span`,{className:`text-sm font-medium`,children:`Jump to bottom`})]}):null]}),(0,k.jsx)(fq,{...ft}),(0,k.jsx)(LK,{session:e,hibernatingSession:r,hibernatingDisplayName:Te,showHostBadge:ke,sessionCount:t.length,connectionStatus:o,isSwitching:Re,canControl:we,canHibernate:Oe,modDisplay:M,onKill:()=>ne(!0),onHibernate:Ye,onWake:()=>r&&_(r.sessionId),onRename:t=>{let n=e?.id??r?.sessionId;n&&h(n,t)},onDuplicate:e&&g?()=>g(e.id):void 0,onMoveToHistory:r&&b?()=>b(r.sessionId):void 0,isTmuxCopyMode:Fe,showJumpToBottom:F&&!te,onJumpToBottom:Ge,selectionReady:!!Ve,onCopySelection:He,onDismissSelection:Ue}),e&&(0,k.jsx)(Dq,{onSendKey:ct,onPasteText:lt,onPasteImage:ut,disabled:o!==`connected`||Ce||!ze||je.pending,keyboardDisabled:Ce,sessions:t.map(e=>({id:e.id,name:e.name,status:e.status})),currentSessionId:e.id,agentType:e.agentType,fileUploadsAllowed:!ye,onSelectSession:d,hideSessionSwitcher:!0,onRefocus:dt,isKeyboardVisible:ht,onEnterTextMode:mt}),(P||N)&&(0,k.jsx)(NJ,{isOpen:V,onClose:()=>ie(!1),sessions:n??t,hibernatingSessions:i,historySessions:a,selectedSessionId:e?.id??null,selectedHibernatingSessionId:r?.sessionId??null,onSelect:d,onSelectHibernating:f,onRename:h,onResume:_,onHibernate:v,onMoveToHistory:b,onNewSession:p,onOpenHistory:S,subscribe:l,loading:C,error:w}),z&&e&&(0,k.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,children:(0,k.jsxs)(`div`,{className:`mx-4 w-full max-w-sm rounded-lg border border-border bg-elevated p-4 shadow-xl`,children:[(0,k.jsx)(`h3`,{className:`text-base font-medium text-primary mb-2 text-balance`,children:`Kill Session`}),(0,k.jsxs)(`p`,{className:`text-sm text-secondary mb-4 text-pretty`,children:[`Kill "`,e.agentSessionName||e.name,`"? The process will be terminated. Conversation history is preserved in logs.`]}),(0,k.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,k.jsx)(`button`,{onClick:()=>ne(!1),className:`btn py-1.5 px-3 text-sm`,children:`Cancel`}),(0,k.jsx)(`button`,{ref:me,onClick:Je,className:`btn btn-danger py-1.5 px-3 text-sm`,children:`Kill Session`})]})]})})]})}function RJ({onSelect:e,onCancel:t,initialPath:n}){let[r,i]=(0,y.useState)(n||`~`),[a,o]=(0,y.useState)(null),[s,c]=(0,y.useState)(null),[l,u]=(0,y.useState)(!0),[d,f]=(0,y.useState)(-1),p=(0,y.useRef)(null),m=U(e=>e.recentPaths),h=(0,y.useCallback)(async e=>{p.current?.abort();let t=new AbortController;p.current=t;let{signal:n}=t;u(!0),c(null),o(null),f(-1),i(e);try{let r=await fetch(`/api/directories?path=${encodeURIComponent(e)}`,{signal:n});if(!r.ok){let e=await r.json();throw Error(e.message||`Failed to load directory`)}let a=await r.json();if(p.current!==t)return;o(a),i(a.path)}catch(e){if(p.current!==t)return;let n=e;n?.name!==`AbortError`&&c(n?.message||`Failed to load directory`)}finally{p.current===t&&u(!1)}},[]);(0,y.useEffect)(()=>(h(n||`~`),()=>{p.current?.abort()}),[h,n]);let g=a?.directories??[],_=a?.path||r,v=a?.parent;return(0,y.useEffect)(()=>{let n=n=>{if(n.key===`Escape`){n.preventDefault(),t();return}if(!l){if(n.key===`ArrowDown`){n.preventDefault(),f(e=>g.length===0?-1:e<0?0:Math.min(e+1,g.length-1));return}if(n.key===`ArrowUp`){n.preventDefault(),f(e=>g.length===0?-1:e<0?g.length-1:Math.max(e-1,0));return}if(n.key===`Enter`){n.preventDefault();let t=g[d];t?h(t.path):_&&e(_);return}n.key===`Backspace`&&v&&(n.preventDefault(),h(v))}};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[g,_,h,d,l,t,e,v]),(0,k.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":`Directory browser`,className:`fixed inset-0 z-[60] flex items-center justify-center bg-black/60 p-4`,onClick:e=>{e.target===e.currentTarget&&t()},"data-testid":`directory-browser`,children:(0,k.jsxs)(`div`,{className:`w-full max-w-lg border border-border bg-elevated p-4`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-border pb-2`,children:[(0,k.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>{v&&h(v)},disabled:!v||l,children:`Up`}),(0,k.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-xs font-mono text-secondary`,title:_,"data-testid":`directory-current-path`,children:_})]}),(0,k.jsx)(`div`,{className:`mt-3 max-h-60 overflow-y-auto border border-border bg-surface`,children:l?(0,k.jsx)(`div`,{className:`px-3 py-4 text-xs text-muted`,"data-testid":`directory-loading`,children:`Loading directories...`}):s?(0,k.jsxs)(`div`,{className:`px-3 py-4 text-xs`,"data-testid":`directory-error`,children:[(0,k.jsx)(`p`,{className:`text-danger`,children:s}),(0,k.jsx)(`button`,{type:`button`,className:`btn mt-3`,onClick:()=>h(r),children:`Retry`})]}):g.length===0?(0,k.jsx)(`div`,{className:`px-3 py-4 text-xs text-muted`,"data-testid":`directory-empty`,children:`No subdirectories`}):(0,k.jsx)(`div`,{className:`py-1`,children:g.map((e,t)=>(0,k.jsxs)(`button`,{type:`button`,onClick:()=>h(e.path),onMouseEnter:()=>f(t),className:`flex w-full items-center gap-2 px-3 py-2 text-left text-xs ${t===d?`bg-hover text-primary`:`text-secondary`}`,"data-testid":`directory-entry`,"data-entry-name":e.name,"data-entry-path":e.path,children:[(0,k.jsx)(Oe,{width:W.default,height:W.default,className:`shrink-0 text-muted`,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`truncate`,children:e.name})]},e.path))})}),a?.truncated?(0,k.jsx)(`p`,{className:`mt-2 text-[10px] text-muted`,children:`Showing first 200 directories.`}):null,(0,k.jsxs)(`div`,{className:`mt-4 border-t border-border pt-3`,children:[(0,k.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-secondary`,children:`Recent`}),m.length===0?(0,k.jsx)(`p`,{className:`mt-2 text-xs text-muted`,children:`No recent paths yet.`}):(0,k.jsx)(`div`,{className:`mt-2 space-y-1`,children:m.map(e=>(0,k.jsx)(`button`,{type:`button`,className:`block w-full truncate text-left text-xs text-secondary hover:text-primary`,onClick:()=>h(e),title:e,"data-testid":`directory-recent`,"data-recent-path":e,children:e},e))})]}),(0,k.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,k.jsx)(`button`,{type:`button`,onClick:t,className:`btn`,children:`Cancel`}),(0,k.jsx)(`button`,{type:`button`,onClick:()=>{_&&e(_)},className:`btn btn-primary`,disabled:l||!_,children:`Select`})]})]})})}function zJ(e){let t=e.trim();if(t.length>=2){let e=t[0],n=t[t.length-1];if(e===`'`&&n===`'`)return t.slice(1,-1).replace(/'\\''/g,`'`);if(e===`"`&&n===`"`)return t.slice(1,-1).replace(/\\"/g,`"`).replace(/\\\\/g,`\\`)}return t}function BJ(e){let t=e.trim(),n=t.search(/\s/);if(n===-1||t.slice(0,n).split(`/`).pop()!==`bash`)return null;let r=n;for(;r<t.length&&/\s/.test(t[r]);)r++;let i=!1,a=!1;for(;r<t.length;){let e=r;for(;r<t.length&&!/\s/.test(t[r]);)r++;let n=t.slice(e,r);for(;r<t.length&&/\s/.test(t[r]);)r++;if(!n.startsWith(`-`)||n===`-`)return null;if(n===`--`)break;if(n.startsWith(`--`)||!/^-[a-zA-Z]+$/.test(n))continue;let o=n.slice(1);if(o.includes(`l`)&&(i=!0),o.includes(`c`)){a=!0;break}}if(!i||!a)return null;let o=t.slice(r).trim();return o?zJ(o):null}function VJ(e){return e?e===`claude-rp`?`claude`:e:null}function HJ(e){let t=e.trim();if(!t)return``;let n=zJ(t);return BJ(n)??n}function UJ(e){if(e===`claude`)return`claude`;if(e===`codex`)return`codex`;if(e===`pi`)return`pi`;if(e===`devin`||e===`devin-cli`)return`devin`;if(e===`grok`||e.startsWith(`grok-`))return`grok`;if(e===`omp`)return`omp`}function WJ(e){let t=/\S+/g,n;for(;n=t.exec(e);){let e=n[0].toLowerCase().replace(/^["']+|["']+$/g,``);if([`npx`,`bunx`,`pnpm`,`yarn`,`env`].includes(e)||e.includes(`=`)||e.startsWith(`-`))continue;let t=e.includes(`@oh-my-pi/`)?`omp`:UJ(e.split(`/`).pop()||e);return t?{agentType:t,end:n.index+n[0].length}:void 0}}function GJ(e){let t=HJ(e);if(t)return WJ(t.toLowerCase().trim().replace(/^["']|["']$/g,``))?.agentType}var KJ={claude:`--dangerously-skip-permissions`,codex:`--yolo`,grok:`--always-approve`,devin:`--permission-mode dangerous`,pi:null,omp:`--auto-approve`},qJ={claude:[`--dangerously-skip-permissions`,`--permission-mode bypassPermissions`,`--permission-mode=bypassPermissions`],codex:[`--yolo`,`--dangerously-bypass-approvals-and-sandbox`],grok:[`--always-approve`,`--yolo`,`--dangerously-skip-permissions`,`--permission-mode bypassPermissions`,`--permission-mode=bypassPermissions`],devin:[`--permission-mode dangerous`,`--permission-mode=dangerous`],pi:[],omp:[`--auto-approve`,`--approval-mode yolo`,`--approval-mode=yolo`]};function JJ(e){let t=VJ(e);return t?KJ[t]:null}function YJ(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function XJ(e){return RegExp(`(^|\\s)${YJ(e)}(?=\\s|$)`,`g`)}function ZJ(e,t){return(t?[VJ(t)].filter(e=>e!==null):Object.keys(qJ)).some(t=>qJ[t].some(t=>XJ(t).test(e)))}function QJ(e,t){let n=WJ(e);return n?`${e.slice(0,n.end)} ${t}${e.slice(n.end)}`:null}function $J(e,t){let n=JJ(t);if(!n)return e;let r=e.trim();if(!r||ZJ(r,t))return r;let i=QJ(r,n);if(i)return i;let a=HJ(r);if(a&&a!==r){let e=QJ(a,n);if(e)return`bash -lc '${e.replace(/'/g,`'\\''`)}'`}return`${r} ${n}`}function eY(e,t){let n=VJ(t);if(!n||ZJ(e,t))return null;if(n===`codex`){let t=/(^|\s)(--full-auto|--ask-for-approval|-a)(?=\s|=|$)/.exec(e);if(t)return`conflicts with ${t[2]}`}if(n===`omp`){let t=/(^|\s)--approval-mode(?:\s+|=)(always-ask|write)/.exec(e);if(t)return`conflicts with --approval-mode ${t[2]}`}let r=/(^|\s)--permission-mode(?:\s+|=)(\S+)/.exec(e);return r&&n!==`codex`?`conflicts with --permission-mode ${r[2]}`:null}function tY(e,t){let n=VJ(t);if(!n)return e;let r=e;for(let e of qJ[n])r=r.replace(XJ(e),` `);return r.replace(/\s+/g,` `).trim()}function nY({isOpen:e,onClose:t,onCreate:n,defaultProjectDir:r,commandPresets:i,defaultPresetId:a,lastProjectPath:o,activeProjectPath:s,remoteHosts:c=[],remoteAllowControl:l=!1,initialHost:u,initialPath:d,initialCommand:f}){let[p,m]=(0,y.useState)(``),[h,g]=(0,y.useState)(``),[_,v]=(0,y.useState)(null),[b,x]=(0,y.useState)(``),[S,C]=(0,y.useState)(!1),[w,T]=(0,y.useState)(``),E=U(e=>e.yoloMode),D=U(e=>e.setYoloMode),O=(0,y.useRef)(null),A=(0,y.useRef)(null),j=(0,y.useRef)(null),M=(0,y.useRef)(!1),N=l&&c.length>0,P=e=>{if(!E)return e;let t=GJ(e);return t&&!eY(e,t)?$J(e,t):e},F=e=>{let t=i.find(t=>t.id===e);t&&(v(e),x(P(Tt(t))))},ee=()=>{v(null),x(``)};if((0,y.useEffect)(()=>{let t=M.current;if(M.current=e,!e){m(``),g(``),v(null),x(``),C(!1),T(u??``),t&&setTimeout(()=>{if(typeof document>`u`||typeof document.querySelector!=`function`)return;let e=document.querySelector(`.xterm-helper-textarea`);e&&(e.removeAttribute(`disabled`),e.focus())},300);return}if(t)return;if(typeof document<`u`&&typeof document.querySelector==`function`){let e=document.querySelector(`.xterm-helper-textarea`);e&&typeof e.setAttribute==`function`&&(typeof e.blur==`function`&&e.blur(),e.setAttribute(`disabled`,`true`))}m(d?.trim()||s?.trim()||o||r||``),g(``),T(u??``);let n=f?.trim();if(n){let e=i.find(e=>Tt(e)===n);e?(v(e.id),x(Tt(e))):(v(null),x(n))}else{let e=i.find(e=>e.id===a);e?(v(a),x(P(Tt(e)))):i.length>0?(v(i[0].id),x(P(Tt(i[0])))):(v(null),x(``))}setTimeout(()=>{if(j.current?.focus(),A.current){let e=A.current;e.scrollLeft=e.scrollWidth}},50)},[s,i,a,r,e,o,u,d,f]),(0,y.useEffect)(()=>{if(!e||typeof window>`u`||typeof window.addEventListener!=`function`)return;let n=()=>O.current?Array.from(O.current.querySelectorAll(`input:not([disabled]), select:not([disabled]), button:not([disabled]):not([tabindex="-1"]), [tabindex="0"]`)):[],r=e=>{if(!S){if(e.key===`Escape`){typeof e.stopPropagation==`function`&&e.stopPropagation(),t();return}if(e.key===`Enter`){let t=document.activeElement;if(!t||t.tagName===`INPUT`||t.closest(`[data-testid="host-select"]`)||!t.closest(`[data-testid="command-select"]`))return;e.preventDefault(),typeof e.stopPropagation==`function`&&e.stopPropagation(),O.current?.requestSubmit();return}if(/^[0-9]$/.test(e.key)&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let t=document.activeElement;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.tagName===`SELECT`||t.isContentEditable))return;let n;if(e.key===`0`)n=i.length;else if(n=Number(e.key)-1,n>=i.length)return;e.preventDefault(),typeof e.stopPropagation==`function`&&e.stopPropagation(),n===i.length?ee():F(i[n].id),(O.current?.querySelectorAll?.(`[data-testid="command-select"] [role="radio"]`))?.[n]?.focus();return}if(e.key===`Tab`){e.preventDefault(),typeof e.stopPropagation==`function`&&e.stopPropagation();let t=n();if(t.length===0)return;let r=document.activeElement,i=t.indexOf(r),a;a=i===-1?e.shiftKey?t.length-1:0:e.shiftKey?i<=0?t.length-1:i-1:i>=t.length-1?0:i+1,t[a]?.focus()}}};return window.addEventListener(`keydown`,r),()=>window.removeEventListener(`keydown`,r)},[e,t,S,i,E]),!e)return null;let I=_===null,te=w!==``,L=GJ(b),R=JJ(L)!==null,z=L?ZJ(b,L):!1,ne=L&&!z?eY(b,L):null,B=!R||ne!==null,re=L?L===`pi`?`Pi has no permission prompts — nothing to enable`:ne??`Append ${JJ(L)}`:`Enter a supported agent command (claude, codex, grok, devin)`,V=e=>{D(e),L&&x(e?$J(b,L):tY(b,L))},ie=e=>{e.preventDefault();let r=p.trim();if(!r)return;let i=b.trim();n(r,h.trim()||void 0,i||void 0,te?w:void 0),t()},H=[...i.map(e=>({id:e.id,label:e.label,isCustom:!1,agentType:e.agentType,command:e.command})),{id:`custom`,label:`Custom`,isCustom:!0,agentType:void 0,command:void 0}],ae=[{id:``,label:`Local`,ok:!0,error:void 0},...c.map(e=>({id:e.host,label:e.host,ok:e.ok,error:e.error}))],oe=p.trim()||`~`;return(0,k.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`new-session-title`,"data-suspends-terminal":``,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4`,onClick:e=>{e.target===e.currentTarget&&t()},children:[(0,k.jsxs)(`form`,{ref:O,onSubmit:ie,className:`w-full max-w-md border border-border bg-elevated p-6`,children:[(0,k.jsx)(`h2`,{id:`new-session-title`,className:`text-sm font-semibold uppercase tracking-wider text-primary text-balance`,children:`New Session`}),(0,k.jsxs)(`div`,{className:`mt-4 space-y-4`,children:[N&&(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`mb-1.5 block text-xs text-secondary`,children:`Host`}),(0,k.jsx)(`div`,{className:`flex flex-wrap gap-2`,role:`radiogroup`,"aria-label":`Host`,"data-testid":`host-select`,children:ae.map((e,t)=>{let n=w===e.id,r=!e.ok&&!n;return(0,k.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"aria-label":e.label,title:e.ok?void 0:e.error||`Unreachable`,tabIndex:n?0:-1,onClick:()=>T(e.id),onKeyDown:e=>{let n=t;if(e.key===`ArrowRight`||e.key===`ArrowDown`)e.preventDefault(),n=(t+1)%ae.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)e.preventDefault(),n=(t-1+ae.length)%ae.length;else return;let r=ae[n];T(r.id),(e.currentTarget.parentElement?.querySelectorAll(`[role="radio"]`))?.[n]?.focus()},className:`btn text-xs focus:outline-none focus:ring-2 focus:ring-primary ${n?`btn-primary`:``} ${r?`opacity-60`:``}`,children:e.label},e.id||`local`)})})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`mb-1.5 block text-xs text-secondary`,children:`Command`}),(0,k.jsx)(`div`,{className:`flex flex-wrap gap-2`,role:`radiogroup`,"aria-label":`Command preset`,"data-testid":`command-select`,children:H.map((e,t)=>{let n=e.isCustom?I:_===e.id,r=e.isCustom?`0`:t<9?String(t+1):null;return(0,k.jsxs)(`button`,{ref:n?j:void 0,type:`button`,role:`radio`,"aria-checked":n,"aria-keyshortcuts":r??void 0,tabIndex:n?0:-1,onClick:()=>{e.isCustom?ee():F(e.id)},onKeyDown:e=>{let n=t;if(e.key===`ArrowRight`||e.key===`ArrowDown`)e.preventDefault(),n=(t+1)%H.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)e.preventDefault(),n=(t-1+H.length)%H.length;else return;let r=H[n];r.isCustom?ee():F(r.id),(e.currentTarget.parentElement?.querySelectorAll(`[role="radio"]`))?.[n]?.focus()},className:`btn text-xs focus:outline-none focus:ring-2 focus:ring-primary ${n?`btn-primary`:``}`,children:[r&&(0,k.jsx)(`kbd`,{"aria-hidden":`true`,className:`shortcut-badge`,children:r}),(0,k.jsx)(ug,{agentType:e.agentType,command:e.command,className:`inline-block h-3.5 w-3.5 shrink-0`}),e.label]},e.id)})}),(0,k.jsx)(`input`,{value:b,onChange:e=>x(e.target.value),placeholder:`Enter command...`,className:`input mt-2 font-mono text-xs`}),(0,k.jsxs)(`label`,{className:`mt-2 flex items-center gap-2 text-xs ${B?`text-muted opacity-60`:`text-secondary`}`,title:re,children:[(0,k.jsx)(`input`,{type:`checkbox`,checked:z,disabled:B,onChange:e=>V(e.target.checked)}),`yolo mode — skip permission prompts`]})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`mb-1.5 block text-xs text-secondary`,children:`Project Path`}),(0,k.jsxs)(`div`,{className:`flex gap-2`,children:[(0,k.jsx)(`input`,{ref:A,value:p,onChange:e=>m(e.target.value),placeholder:te?`/home/user/project`:s||o||r||`/Users/you/code/my-project`,className:`input flex-1 text-sm`}),!te&&(0,k.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>C(!0),children:`Browse`})]})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`mb-1.5 block text-xs text-secondary`,children:`Display Name`}),(0,k.jsx)(`input`,{value:h,onChange:e=>g(e.target.value),placeholder:`auto-generated`,className:`input text-sm placeholder:italic`})]})]}),(0,k.jsxs)(`div`,{className:`mt-6 flex justify-end gap-2`,children:[(0,k.jsx)(`button`,{type:`button`,onClick:t,className:`btn`,children:`Cancel`}),(0,k.jsx)(`button`,{type:`submit`,className:`btn btn-primary`,children:`Create`})]})]}),S&&!te&&(0,k.jsx)(RJ,{initialPath:oe,onSelect:e=>{m(e),C(!1)},onCancel:()=>C(!1)})]})}var rY=[{id:`new-sessions`,label:`New sessions`},{id:`session-list`,label:`Session list`},{id:`appearance`,label:`Appearance`},{id:`terminal`,label:`Terminal`},{id:`notifications`,label:`Notifications`}];function iY(e){return rY.some(t=>t.id===e)}function aY(e){return rY.find(t=>t.id===e)?.label??e}var oY=`agentboard-settings-page`,sY=`new-sessions`;function cY(){let e=w.getItem(oY);return iY(e)?e:sY}function lY(e){w.setItem(oY,e)}var uY=`h-[32px] max-md:h-[44px]`,dY=`${uY} inline-flex shrink-0 items-center justify-center border text-[12px] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-not-allowed disabled:opacity-50`,fY=`${dY} border-border bg-surface px-3 text-secondary hover:bg-hover hover:text-primary`,pY=`${dY} w-[32px] max-md:w-[44px] border-border bg-surface text-secondary hover:bg-hover hover:text-primary`,mY=`input ${uY} px-2 py-0 text-[13px] max-md:text-[16px] focus-visible:ring-2 focus-visible:ring-accent/40 disabled:opacity-50 aria-[invalid=true]:border-danger`;function hY(e,t){let[n,r]=(0,y.useState)(null),[i,a]=(0,y.useState)(null),o=(0,y.useRef)({draft:n,stored:e,commit:t});o.current={draft:n,stored:e,commit:t},(0,y.useEffect)(()=>()=>{let{draft:e,stored:t,commit:n}=o.current;e!==null&&e!==t&&n(e)},[]);let s=()=>{if(n===null)return;if(n===e){r(null),a(null);return}let i=t(n);if(i){a(i);return}r(null),a(null)};return{value:n??e,error:i,dirty:n!==null,onChange:e=>{r(e.target.value),a(null)},onBlur:s,onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),s()):e.key===`Escape`&&n!==null&&(e.preventDefault(),r(null),a(null))}}}var gY=(0,y.forwardRef)(function({value:e,onCommit:t,describedBy:n,id:r,className:i,wrapperClassName:a,...o},s){let c=hY(e,t),l=r?`${r}-error`:void 0,u=[n,c.error?l:void 0].filter(Boolean).join(` `);return(0,k.jsxs)(`div`,{className:N_(`min-w-0`,a),children:[(0,k.jsx)(`input`,{...o,ref:s,id:r,value:c.value,onChange:c.onChange,onBlur:c.onBlur,onKeyDown:c.onKeyDown,"aria-invalid":c.error?!0:void 0,"aria-describedby":u||void 0,className:N_(mY,i)}),c.error&&(0,k.jsx)(`p`,{id:l,className:N_(`text-[12px] leading-snug text-danger`,`mt-1`),role:`alert`,children:c.error})]})});function _Y(e,t,n){let r=e.trim();return/^-?\d+$/.test(r)?Math.min(n,Math.max(t,Number.parseInt(r,10))):null}function vY({value:e,min:t,max:n,onChange:r,noun:i,labelledBy:a,describedBy:o}){return(0,k.jsxs)(`div`,{role:`group`,"aria-labelledby":a,"aria-describedby":o,className:`flex items-center`,children:[(0,k.jsx)(`button`,{type:`button`,className:pY,"aria-label":`Decrease ${i}`,disabled:e<=t,onClick:()=>r(Math.max(t,e-1)),children:(0,k.jsx)(He,{width:W.default,height:W.default})}),(0,k.jsx)(`output`,{"aria-live":`polite`,className:N_(uY,`flex w-10 items-center justify-center border-y border-border bg-base text-[13px] tabular-nums text-primary`),children:e}),(0,k.jsx)(`button`,{type:`button`,className:pY,"aria-label":`Increase ${i}`,disabled:e>=n,onClick:()=>r(Math.min(n,e+1)),children:(0,k.jsx)(Qe,{width:W.default,height:W.default})})]})}function yY({id:e,value:t,min:n,max:r,step:i,onChange:a,format:o,labelledBy:s,describedBy:c}){return(0,k.jsxs)(`div`,{className:N_(uY,`flex items-center gap-3`),children:[(0,k.jsx)(`input`,{id:e,type:`range`,min:n,max:r,step:i,value:t,"aria-labelledby":s,"aria-describedby":c,"aria-valuetext":o(t),onChange:e=>{let t=Number.parseFloat(e.target.value);Number.isFinite(t)&&a(Math.min(r,Math.max(n,t)))},className:`h-1 w-28 max-md:w-36 cursor-pointer appearance-none bg-border accent-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`}),(0,k.jsx)(`span`,{className:`w-10 text-right text-[13px] tabular-nums text-secondary`,children:o(t)})]})}function bY({options:e,value:t,onChange:n,labelledBy:r,describedBy:i,fill:a=!1}){let o=(0,y.useRef)([]),s=Math.max(0,e.findIndex(e=>e.value===t)),c=t=>{let r=e[t];r&&(n(r.value),o.current[t]?.focus())},l=(t,n)=>{let r=e.length-1,i=null;t.key===`ArrowRight`||t.key===`ArrowDown`?i=n===r?0:n+1:t.key===`ArrowLeft`||t.key===`ArrowUp`?i=n===0?r:n-1:t.key===`Home`?i=0:t.key===`End`&&(i=r),i!==null&&(t.preventDefault(),c(i))};return(0,k.jsx)(`div`,{role:`radiogroup`,"aria-labelledby":r,"aria-describedby":i,className:N_(`flex border border-border bg-base p-[2px]`,a?`w-full`:`w-max max-w-full`),children:e.map((e,t)=>{let n=t===s;return(0,k.jsx)(`button`,{ref:e=>{o.current[t]=e},type:`button`,role:`radio`,"aria-checked":n,tabIndex:n?0:-1,onClick:()=>c(t),onKeyDown:e=>l(e,t),className:N_(`h-[26px] max-md:h-[38px] min-w-0 whitespace-nowrap px-3 text-[12px] transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,a&&`flex-1`,n?`bg-hover text-primary shadow-[inset_0_0_0_1px_var(--border)]`:`text-muted hover:text-primary`),children:e.label},e.value)})})}function xY({ids:e}){return(0,k.jsx)(bY,{options:[{value:`light`,label:`Light`},{value:`dark`,label:`Dark`},{value:`system`,label:`System`}],value:hK(e=>e.theme),onChange:hK(e=>e.setTheme),labelledBy:e.label,describedBy:e.description})}function SY({ids:e}){let t=U(e=>e.fontOption),n=U(e=>e.setFontOption);return(0,k.jsx)(`select`,{id:e.control,value:t,"aria-describedby":e.description,onChange:e=>n(e.target.value),className:`${mY} w-44 max-md:w-full`,children:bt.map(e=>(0,k.jsx)(`option`,{value:e.id,children:e.label},e.id))})}function CY({ids:e}){let t=U(e=>e.customFontFamily);return(0,k.jsx)(gY,{id:e.control,value:t,placeholder:`"Fira Code", monospace`,describedBy:e.description,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,maxLength:256,wrapperClassName:`w-60 max-md:w-full`,onCommit:e=>(U.getState().setCustomFontFamily(e.trim()),null)})}function wY({ids:e}){return(0,k.jsx)(vY,{value:U(e=>e.fontSize),min:6,max:24,onChange:U(e=>e.setFontSize),noun:`font size`,labelledBy:e.label,describedBy:e.description})}function TY({ids:e}){let t=U(e=>e.lineHeight),n=U(e=>e.setLineHeight);return(0,k.jsx)(yY,{id:e.control,value:t,min:1,max:2,step:.1,onChange:e=>n(Math.round(e*10)/10),format:e=>e.toFixed(1),labelledBy:e.label,describedBy:e.description})}function EY({ids:e}){let t=U(e=>e.letterSpacing),n=U(e=>e.setLetterSpacing);return(0,k.jsx)(yY,{id:e.control,value:t,min:-3,max:3,step:1,onChange:e=>n(Math.round(e)),format:e=>`${e}px`,labelledBy:e.label,describedBy:e.description})}var DY=[{id:`theme`,page:`appearance`,label:`Theme`,description:`Light, dark, or follow the system setting.`,keywords:[`dark mode`,`light mode`,`color`,`colour`,`system`],Control:xY},{id:`font-family`,page:`appearance`,label:`Font family`,description:`Terminal typeface. Default JetBrains Mono.`,keywords:[`font`,`typeface`,`monospace`],tags:[`device`],Control:SY},{id:`custom-font-family`,page:`appearance`,label:`Custom font family`,description:`A CSS font-family list. Empty falls back to JetBrains Mono.`,keywords:[`font`,`typeface`,`css`],tags:[`device`],layout:`wide`,visibleWhen:e=>e.fontOption===`custom`,Control:CY},{id:`font-size`,page:`appearance`,label:`Font size`,description:`Terminal text size in pixels (6–24). Default 13.`,keywords:[`font`,`text`,`zoom`,`size`],tags:[`device`],Control:wY},{id:`line-height`,page:`appearance`,label:`Line height`,description:`Vertical spacing, 1.0 compact to 2.0 spacious. Default 1.0.`,keywords:[`spacing`,`leading`,`line`],tags:[`device`],Control:TY},{id:`letter-spacing`,page:`appearance`,label:`Letter spacing`,description:`Extra space between characters in pixels (−3 to 3). Default 0.`,keywords:[`spacing`,`tracking`,`kerning`],tags:[`device`],Control:EY}],OY=1024,kY=[{value:``,label:`Terminal`},{value:`claude`,label:`Claude`},{value:`codex`,label:`Codex`},{value:`pi`,label:`Pi`},{value:`devin`,label:`Devin`},{value:`grok`,label:`Grok`},{value:`omp`,label:`OMP`}];function AY(e,t){let n=t.trim();return e===`label`?n?n.length>64?`Name is at most 64 characters`:null:`Name is required`:n?n.length>1024?`Command is at most ${OY} characters`:null:`Command is required`}function jY(e){return AY(`label`,e.label)===null&&AY(`command`,e.command)===null}function MY(e,t,n){return e.map(e=>e.id===t?wt({...e,...n}):e)}var NY=`grid items-start gap-2 grid-cols-[56px_92px_minmax(0,0.8fr)_minmax(0,1.3fr)_auto] max-md:grid-cols-[minmax(0,1fr)_minmax(0,auto)_auto] max-md:gap-y-2`,PY=4e3;function FY({preset:e,index:t,isDefault:n,pending:r=!1,autoFocusName:i=!1,onSetDefault:a,onCommitField:o,onIconChange:s,onDelete:c}){let[l,u]=(0,y.useState)(!1),d=(0,y.useRef)(null),f=`settings-preset-${e.id}`,p=e.label.trim()||`preset ${t+1}`;return(0,y.useEffect)(()=>{i&&d.current?.focus()},[i]),(0,y.useEffect)(()=>{if(!l)return;let e=setTimeout(()=>u(!1),PY);return()=>clearTimeout(e)},[l]),(0,k.jsxs)(`div`,{role:`listitem`,"data-preset-id":e.id,className:N_(NY,`py-2`),children:[(0,k.jsxs)(`label`,{className:N_(uY,`flex cursor-pointer items-center gap-2 md:justify-center`),children:[(0,k.jsx)(`input`,{type:`radio`,name:`settings-default-preset`,checked:n,disabled:r,onChange:a,"aria-label":`Default preset: ${p}`,className:`size-4 cursor-pointer accent-accent disabled:cursor-not-allowed`}),(0,k.jsx)(`span`,{"aria-hidden":`true`,className:`text-[12px] text-secondary md:hidden`,children:`Default`})]}),e.isBuiltIn?(0,k.jsxs)(`div`,{className:N_(uY,`flex items-center gap-2 text-muted`),children:[(0,k.jsx)(ug,{agentType:e.agentType,command:e.command,className:`size-4`}),(0,k.jsx)(`span`,{className:`text-[11px]`,children:`Built-in`})]}):(0,k.jsx)(`select`,{id:`${f}-icon`,value:e.agentType??``,"aria-label":`Icon for ${p}`,onChange:e=>s(e.target.value||void 0),className:N_(mY,`w-full px-1`),children:kY.map(e=>(0,k.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,k.jsx)(gY,{ref:d,id:`${f}-label`,value:e.label,placeholder:`Name`,"aria-label":`Name of preset ${t+1}`,maxLength:64,onCommit:e=>o(`label`,e),wrapperClassName:`max-md:order-4 max-md:col-span-3`}),(0,k.jsx)(gY,{id:`${f}-command`,value:e.command,placeholder:`command --flags`,"aria-label":`Command for ${p}`,maxLength:OY,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,onCommit:e=>o(`command`,e),wrapperClassName:`max-md:order-5 max-md:col-span-3`}),e.isBuiltIn?(0,k.jsx)(`span`,{"aria-hidden":`true`,className:`w-[32px] max-md:order-3 max-md:w-[44px]`}):(0,k.jsx)(`button`,{type:`button`,onClick:()=>{if(r||l){c();return}u(!0)},onPointerDown:r?e=>e.preventDefault():void 0,onBlur:()=>u(!1),"aria-label":l?`Confirm delete ${p}`:r?`Discard new preset`:`Delete ${p}`,title:l?`Click again to delete`:void 0,className:N_(dY,`max-md:order-3`,l?`border-danger bg-danger/10 px-2 text-danger hover:bg-danger/20`:`w-[32px] border-border bg-surface text-secondary hover:bg-hover hover:text-danger max-md:w-[44px]`),children:l?`Delete?`:(0,k.jsx)(me,{width:W.default,height:W.default})})]})}function IY({ids:e}){let t=U(e=>e.commandPresets),n=U(e=>e.defaultPresetId),[r,i]=(0,y.useState)(null),a=(0,y.useRef)(null),o=(0,y.useRef)(null),s=(0,y.useRef)(!1);(0,y.useEffect)(()=>{if(!s.current)return;s.current=!1;let e=o.current;if(e&&!e.disabled){e.focus();return}let t=a.current?.id;t&&typeof document<`u`&&document.getElementById(`settings-preset-${t}-label`)?.focus()});let c=e=>{a.current=e,i(e)},l=!r&&t.length<50,u=r?[...t,r]:t,d=(e,t,n)=>{let r=AY(t,n);if(r)return r;let{commandPresets:i,setCommandPresets:a}=U.getState();return a(MY(i,e,{[t]:n})),null},f=(e,t)=>{let n=a.current;if(!n)return null;let r={...n,[e]:t},{commandPresets:i,setCommandPresets:o}=U.getState();return jY(r)&&i.length<50?(o([...i,wt(r)]),c(null)):c(r),null},p=(e,t)=>{if(r?.id===e){c({...r,agentType:t});return}let{commandPresets:n,setCommandPresets:i}=U.getState();i(MY(n,e,{agentType:t}))},m=()=>{l&&c({id:Et(new Set(t.map(e=>e.id))),label:``,command:``,isBuiltIn:!1})},h=e=>{s.current=!0,a.current?.id===e?c(null):U.getState().removePreset(e)};return(0,k.jsxs)(`div`,{className:`w-full min-w-0`,children:[(0,k.jsxs)(`div`,{"aria-hidden":`true`,className:N_(NY,`border-b border-border pb-1 text-[11px] uppercase tracking-wide text-muted max-md:hidden`),children:[(0,k.jsx)(`span`,{className:`text-center`,children:`Default`}),(0,k.jsx)(`span`,{children:`Icon`}),(0,k.jsx)(`span`,{children:`Name`}),(0,k.jsx)(`span`,{children:`Command`}),(0,k.jsx)(`span`,{className:`w-[32px]`})]}),(0,k.jsx)(`div`,{role:`list`,"aria-labelledby":e.label,"aria-describedby":e.description,className:`divide-y divide-border-subtle`,children:u.map((e,t)=>{let i=e.id===r?.id;return(0,k.jsx)(FY,{preset:e,index:t,isDefault:e.id===n,pending:i,autoFocusName:i,onSetDefault:()=>U.getState().setDefaultPresetId(e.id),onCommitField:(t,n)=>i?f(t,n):d(e.id,t,n),onIconChange:t=>p(e.id,t),onDelete:()=>h(e.id)},e.id)})}),r&&(0,k.jsx)(`p`,{className:N_(`text-[12px] leading-snug text-muted`,`pb-2`),role:`status`,children:`Enter a name and a command to add the preset.`}),(0,k.jsxs)(`div`,{className:`mt-2 flex items-center gap-3`,children:[(0,k.jsxs)(`button`,{ref:o,type:`button`,className:fY,onClick:m,disabled:!l,children:[(0,k.jsx)(Qe,{width:W.default,height:W.default,className:`mr-1.5`}),`Add preset`]}),t.length>=50&&(0,k.jsxs)(`span`,{className:`text-[12px] leading-snug text-muted`,children:[`Maximum of `,50,` presets.`]})]})]})}function LY({ids:e}){let t=U(e=>e.defaultProjectDir);return(0,k.jsx)(gY,{id:e.control,value:t,placeholder:_t,describedBy:e.description,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,maxLength:4096,wrapperClassName:`w-72 max-md:w-full`,onCommit:e=>(U.getState().setDefaultProjectDir(e.trim()||`~/Documents/GitHub`),null)})}var RY=[{id:`default-project-dir`,page:`new-sessions`,label:`Default project directory`,description:`Folder the new session dialog starts in. Default ${_t}.`,keywords:[`path`,`folder`,`cwd`,`directory`],layout:`wide`,Control:LY},{id:`command-presets`,page:`new-sessions`,label:`Command presets`,description:`Commands offered when creating a session. The default preset is pre-selected.`,keywords:[`preset`,`command`,`agent`,`claude`,`codex`,`default`,`icon`],layout:`block`,Control:IY}],zY=null,BY=!1,VY={},HY=500;function UY(){if(typeof window>`u`)return null;if(zY?.state===`closed`&&(zY=null),!zY){let e=window.AudioContext??window.webkitAudioContext;if(!e)return null;zY=new e}return zY}function WY(){zY&&=(zY.close().catch(()=>{}),null),UY()}function GY(){return BY}function KY(){zY&&(WY(),BY=!0)}if(typeof window<`u`){window.addEventListener(`pageshow`,e=>{e.persisted&&KY()}),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&KY()});let e=Date.now();setInterval(()=>{let t=Date.now();t-e>15e3&&KY(),e=t},5e3)}async function qY(){let e=UY();e&&e.state===`suspended`&&await e.resume().catch(()=>{}),BY=!1}async function JY(e){e.state===`suspended`&&await e.resume().catch(()=>{})}async function YY(e){let t=UY();if(!t||(await JY(t),t.state!==`running`))return;let{frequencies:n,durationMs:r,attackMs:i,peakGain:a,type:o=`sine`}=e,s=t.currentTime,c=r/1e3,l=i/1e3,u=t.createGain();u.connect(t.destination);let d=s+c*.7;u.gain.setValueAtTime(0,s),u.gain.linearRampToValueAtTime(a,s+l),u.gain.setValueAtTime(a,d),u.gain.linearRampToValueAtTime(0,s+c);let f=n.map(e=>{let n=t.createOscillator();return n.type=o,n.frequency.setValueAtTime(e,s),n.connect(u),n});for(let e of f)e.start(s),e.stop(s+c);let p=f[f.length-1];p.onended=()=>{for(let e of f)e.disconnect();u.disconnect()}}async function XY(){let e=Date.now();if(!(e-(VY.permission||0)<HY)){VY.permission=e;try{await YY({frequencies:[880],durationMs:150,attackMs:5,peakGain:.15,type:`sine`})}catch{}}}async function ZY(){let e=Date.now();if(!(e-(VY.idle||0)<HY)){VY.idle=e;try{await YY({frequencies:[440,550],durationMs:300,attackMs:10,peakGain:.08,type:`sine`})}catch{}}}function QY({controlled:e,default:t,name:n,state:r=`value`}){let{current:i}=y.useRef(e!==void 0),[a,o]=y.useState(t);return[i?e:a,y.useCallback(e=>{i||o(e)},[])]}var $Y={};function eX(e,t){let n=y.useRef($Y);return n.current===$Y&&(n.current=e(t)),n}var tX=y[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],nX=tX&&tX!==y.useLayoutEffect?tX:e=>e();function rX(e){let t=eX(iX).current;return t.next=e,nX(t.effect),t.trampoline}function iX(){let e={next:void 0,callback:aX,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function aX(){}function oX(e,t,n,r){let i=eX(cX).current;return lX(i,e,t,n,r)&&dX(i,[e,t,n,r]),i.callback}function sX(e){let t=eX(cX).current;return uX(t,e)&&dX(t,e),t.callback}function cX(){return{callback:null,cleanup:null,refs:[]}}function lX(e,t,n,r,i){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==r||e.refs[3]!==i}function uX(e,t){return e.refs.length!==t.length||e.refs.some((e,n)=>e!==t[n])}function dX(e,t){if(e.refs=t,t.every(e=>e==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&=(e.cleanup(),null),n!=null){let r=Array(t.length).fill(null);for(let e=0;e<t.length;e+=1){let i=t[e];if(i!=null)switch(typeof i){case`function`:{let t=i(n);typeof t==`function`&&(r[e]=t);break}case`object`:i.current=n;break;default:}}e.cleanup=()=>{for(let e=0;e<t.length;e+=1){let n=t[e];if(n!=null)switch(typeof n){case`function`:{let t=r[e];typeof t==`function`?t():n(null);break}case`object`:n.current=null;break;default:}}}}}}var fX=typeof document<`u`?y.useLayoutEffect:()=>{},pX={clipPath:`inset(50%)`,overflow:`hidden`,whiteSpace:`nowrap`,border:0,padding:0,width:1,height:1,margin:-1},mX={...pX,position:`fixed`,top:0,left:0},hX={...pX,position:`absolute`};function gX(){}Object.freeze([]);var _X=Object.freeze({});function vX(e,...t){let n=new URL(`https://base-ui.com/production-error`);return n.searchParams.set(`code`,e.toString()),t.forEach(e=>n.searchParams.append(`args[]`,e)),`Base UI error #${e}; visit ${n} for the full message.`}var yX=18;function bX(e){return yX>=e}function xX(e){if(!y.isValidElement(e))return null;let t=e,n=t.props;return(bX(19)?n?.ref:t.ref)??null}function SX(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function CX(e,t){let n={};for(let r in e){let i=e[r];if(t?.hasOwnProperty(r)){let e=t[r](i);e!=null&&Object.assign(n,e);continue}i===!0?n[`data-${r.toLowerCase()}`]=``:i&&(n[`data-${r.toLowerCase()}`]=i.toString())}return n}function wX(e,t){return typeof e==`function`?e(t):e}function TX(e,t){return typeof e==`function`?e(t):e}var EX={};function DX(e,t,n,r,i){let a={...NX(e,EX)};return t&&(a=kX(a,t)),n&&(a=kX(a,n)),r&&(a=kX(a,r)),i&&(a=kX(a,i)),a}function OX(e){if(e.length===0)return EX;if(e.length===1)return NX(e[0],EX);let t={...NX(e[0],EX)};for(let n=1;n<e.length;n+=1)t=kX(t,e[n]);return t}function kX(e,t){return MX(t)?t(e):AX(e,t)}function AX(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case`style`:e[n]=SX(e.style,r);break;case`className`:e[n]=IX(e.className,r);break;default:jX(n,r)?e[n]=PX(e[n],r):e[n]=r}}return e}function jX(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),i=e.charCodeAt(2);return n===111&&r===110&&i>=65&&i<=90&&(typeof t==`function`||t===void 0)}function MX(e){return typeof e==`function`}function NX(e,t){return MX(e)?e(t):e??EX}function PX(e,t){return t?e?n=>{if(LX(n)){let r=n;FX(r);let i=t(r);return r.baseUIHandlerPrevented||e?.(r),i}let r=t(n);return e?.(n),r}:t:e}function FX(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function IX(e,t){return t?e?t+` `+e:t:e}function LX(e){return typeof e==`object`&&!!e&&`nativeEvent`in e}function RX(e,t,n={}){let r=t.render,i=zX(t,n);return n.enabled===!1?null:VX(e,r,i,n.state??_X)}function zX(e,t={}){let{className:n,style:r,render:i}=e,{state:a=_X,ref:o,props:s,stateAttributesMapping:c,enabled:l=!0}=t,u=l?wX(n,a):void 0,d=l?TX(r,a):void 0,f=l?CX(a,c):_X,p=l?SX(f,Array.isArray(s)?OX(s):s)??_X:_X;return typeof document<`u`&&(l?Array.isArray(o)?p.ref=sX([p.ref,xX(i),...o]):p.ref=oX(p.ref,xX(i),o):oX(null,null)),l?(u!==void 0&&(p.className=IX(p.className,u)),d!==void 0&&(p.style=SX(p.style,d)),p):_X}var BX=Symbol.for(`react.lazy`);function VX(e,t,n,r){if(t){if(typeof t==`function`)return t(n,r);let e=DX(n,t.props);e.ref=n.ref;let i=t;return i?.$$typeof===BX&&(i=y.Children.toArray(t)[0]),y.cloneElement(i,e)}if(e&&typeof e==`string`)return HX(e,n);throw Error(vX(8))}function HX(e,t){return e===`button`?(0,y.createElement)(`button`,{type:`button`,...t,key:t.key}):e===`img`?(0,y.createElement)(`img`,{alt:``,...t,key:t.key}):y.createElement(e,t)}var UX={...y},WX=0;function GX(e,t=`mui`){let[n,r]=y.useState(e),i=e||n;return y.useEffect(()=>{n??(WX+=1,r(`${t}-${WX}`))},[n,t]),i}var KX=UX.useId;function qX(e,t){if(KX!==void 0){let n=KX();return e??(t?`${t}-${n}`:n)}return GX(e,t)}function JX(e){return qX(e,`base-ui`)}function YX(){return typeof window<`u`}function XX(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function ZX(e){return YX()?e instanceof Element||e instanceof XX(e).Element:!1}function QX(e){return YX()?e instanceof HTMLElement||e instanceof XX(e).HTMLElement:!1}function $X(e){return!YX()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof XX(e).ShadowRoot}var eZ=y.createContext(void 0);function tZ(e=!1){let t=y.useContext(eZ);if(t===void 0&&!e)throw Error(vX(16));return t}function nZ(e){let{focusableWhenDisabled:t,disabled:n,composite:r=!1,tabIndex:i=0,isNativeButton:a}=e,o=r&&t!==!1,s=r&&t===!1;return{props:y.useMemo(()=>{let e={onKeyDown(e){n&&t&&e.key!==`Tab`&&e.preventDefault()}};return r||(e.tabIndex=i,!a&&n&&(e.tabIndex=t?i:-1)),(a&&(t||o)||!a&&n)&&(e[`aria-disabled`]=n),a&&(!t||s)&&(e.disabled=n),e},[r,n,t,o,s,a,i])}}function rZ(e={}){let{disabled:t=!1,focusableWhenDisabled:n,tabIndex:r=0,native:i=!0}=e,a=y.useRef(null),o=tZ(!0)!==void 0,s=rX(()=>{let e=a.current;return!!(e?.tagName===`A`&&e?.href)}),{props:c}=nZ({focusableWhenDisabled:n,disabled:t,composite:o,tabIndex:r,isNativeButton:i}),l=y.useCallback(()=>{let e=a.current;iZ(e)&&o&&t&&c.disabled===void 0&&e.disabled&&(e.disabled=!1)},[t,c.disabled,o]);return fX(l,[l]),{getButtonProps:y.useCallback((e={})=>{let{onClick:n,onMouseDown:r,onKeyUp:a,onKeyDown:o,onPointerDown:l,...u}=e;return DX({type:i?`button`:void 0,onClick(e){if(t){e.preventDefault();return}n?.(e)},onMouseDown(e){t||r?.(e)},onKeyDown(e){if(t||(FX(e),o?.(e)),e.baseUIHandlerPrevented)return;let r=e.target===e.currentTarget&&!i&&!s()&&!t,a=e.key===`Enter`,c=e.key===` `;r&&((c||a)&&e.preventDefault(),a&&n?.(e))},onKeyUp(e){t||(FX(e),a?.(e)),!e.baseUIHandlerPrevented&&e.target===e.currentTarget&&!i&&!t&&e.key===` `&&n?.(e)},onPointerDown(e){if(t){e.preventDefault();return}l?.(e)}},i?void 0:{role:`button`},c,u)},[t,c,i,s]),buttonRef:rX(e=>{a.current=e,l()})}}function iZ(e){return QX(e)&&e.tagName===`BUTTON`}var aZ=y.createContext(void 0);function oZ(){let e=y.useContext(aZ);if(e===void 0)throw Error(vX(63));return e}var sZ=function(e){return e.disabled=`data-disabled`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),cZ={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},lZ={valid(e){return e===null?null:e?{[sZ.valid]:``}:{[sZ.invalid]:``}}},uZ=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),dZ={...lZ,checked(e){return e?{[uZ.checked]:``}:{[uZ.unchecked]:``}}};function fZ(e,t){return{...e,state:{...e.state,valid:!t&&e.state.valid}}}var pZ=y.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:gX,validationMode:`onSubmit`,submitAttemptedRef:{current:!1}});function mZ(){return y.useContext(pZ)}var hZ=y.createContext({invalid:void 0,name:void 0,validityData:{state:cZ,errors:[],error:``,value:``,initialValue:null},setValidityData:gX,disabled:void 0,touched:!1,setTouched:gX,dirty:!1,setDirty:gX,filled:!1,setFilled:gX,focused:!1,setFocused:gX,validate:()=>null,validationMode:`onSubmit`,validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:{disabled:!1,valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},markedDirtyRef:{current:!1},validation:{getValidationProps:(e=_X)=>e,getInputValidationProps:(e=_X)=>e,inputRef:{current:null},commit:async()=>{}}});function gZ(e=!0){let t=y.useContext(hZ);if(t.setValidityData===gX&&!e)throw Error(vX(28));return t}function _Z(e){let{enabled:t=!0,value:n,id:r,name:i,controlRef:a,commit:o}=e,{formRef:s}=mZ(),{invalid:c,markedDirtyRef:l,validityData:u,setValidityData:d}=gZ(),f=rX(e.getValue);fX(()=>{if(!t)return;let e=n;e===void 0&&(e=f()),u.initialValue===null&&e!==null&&d(t=>({...t,initialValue:e}))},[t,d,n,u.initialValue,f]),fX(()=>{!t||!r||s.current.fields.set(r,{getValue:f,name:i,controlRef:a,validityData:fZ(u,c),validate(e=!0){let t=n;t===void 0&&(t=f()),l.current=!0,e?uf.flushSync(()=>o(t)):o(t)}})},[o,a,t,s,f,r,c,l,i,u,n]),fX(()=>{let e=s.current.fields;return()=>{r&&e.delete(r)}},[s,r])}var vZ=y.createContext({controlId:void 0,registerControlId:gX,labelId:void 0,setLabelId:gX,messageIds:[],setMessageIds:gX,getDescriptionProps:e=>e});function yZ(){return y.useContext(vZ)}function bZ(e={}){let{id:t,implicit:n=!1,controlRef:r}=e,{controlId:i,registerControlId:a}=yZ(),o=JX(t),s=n?i:void 0,c=eX(()=>Symbol(`labelable-control`)),l=y.useRef(!1),u=y.useRef(t!=null),d=rX(()=>{!l.current||a===gX||(l.current=!1,a(c.current,void 0))});return fX(()=>{if(a===gX)return;let e;if(n){let n=r?.current;e=ZX(n)&&n.closest(`label`)!=null?t??null:s??o}else if(t!=null)u.current=!0,e=t;else if(u.current)e=o;else{d();return}if(e===void 0){d();return}l.current=!0,a(c.current,e)},[t,r,s,a,n,o,c,d]),y.useEffect(()=>d,[d]),i??o}var xZ=`none`;function SZ(e,t,n,r){let i=!1,a=!1,o=r??_X;return{reason:e,event:t??new Event(`base-ui`),cancel(){i=!0},allowPropagation(){a=!0},get isCanceled(){return i},get isPropagationAllowed(){return a},trigger:n,...o}}function CZ(e,t){let n=y.useRef(e),r=rX(t);fX(()=>{n.current!==e&&r(n.current)},[e,r]),fX(()=>{n.current=e},[e])}var wZ=y.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:i,id:a,inputRef:o,name:s,nativeButton:c=!1,onCheckedChange:l,readOnly:u=!1,required:d=!1,disabled:f=!1,render:p,uncheckedValue:m,value:h,...g}=e,{clearErrors:_}=mZ(),{state:v,setTouched:b,setDirty:x,validityData:S,setFilled:C,setFocused:w,shouldValidateOnChange:T,validationMode:E,disabled:D,name:O,validation:A}=gZ(),{labelId:j}=yZ(),M=D||f,N=O??s,P=rX(l),F=y.useRef(null),ee=oX(F,o,A.inputRef),I=y.useRef(null),te=JX(),L=bZ({id:a,implicit:!1,controlRef:I}),R=c?void 0:L,[z,ne]=QY({controlled:n,default:!!i,name:`Switch`,state:`checked`});_Z({id:te,commit:A.commit,value:z,controlRef:I,name:N,getValue:()=>z}),fX(()=>{F.current&&C(F.current.checked)},[F,C]),CZ(z,()=>{_(N),x(z!==S.initialValue),C(z),T()?A.commit(z):A.commit(z,!0)});let{getButtonProps:B,buttonRef:re}=rZ({disabled:M,native:c}),V={id:c?L:te,role:`switch`,"aria-checked":z,"aria-readonly":u||void 0,"aria-required":d||void 0,"aria-labelledby":j,onFocus(){M||w(!0)},onBlur(){let e=F.current;!e||M||(b(!0),w(!1),E===`onBlur`&&A.commit(e.checked))},onClick(e){u||M||(e.preventDefault(),F.current?.dispatchEvent(new PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey})))}},ie=y.useMemo(()=>DX({checked:z,disabled:M,id:R,name:N,required:d,style:N?hX:mX,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,ref:ee,onChange(e){if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked,n=SZ(xZ,e.nativeEvent);P?.(t,n),!n.isCanceled&&ne(t)},onFocus(){I.current?.focus()}},A.getInputValidationProps,h===void 0?_X:{value:h}),[z,M,ee,R,N,P,d,ne,A,h]),H=y.useMemo(()=>({...v,checked:z,disabled:M,readOnly:u,required:d}),[v,z,M,u,d]),ae=RX(`span`,e,{state:H,ref:[t,I,re],props:[V,A.getValidationProps,g,B],stateAttributesMapping:dZ});return(0,k.jsxs)(aZ.Provider,{value:H,children:[ae,!z&&N&&m!==void 0&&(0,k.jsx)(`input`,{type:`hidden`,name:N,value:m}),(0,k.jsx)(`input`,{...ie})]})}),TZ=y.forwardRef(function(e,t){let{render:n,className:r,...i}=e,{state:a}=gZ(),o=oZ();return RX(`span`,e,{state:{...a,...o},ref:t,stateAttributesMapping:dZ,props:i})});function EZ({checked:e,onCheckedChange:t,disabled:n,className:r,ariaLabel:i,id:a,ariaLabelledBy:o,ariaDescribedBy:s}){return(0,k.jsx)(wZ,{checked:e,onCheckedChange:t,disabled:n,"aria-label":i,id:a,"aria-labelledby":o,"aria-describedby":s,className:N_(`group relative inline-flex h-6 w-10 shrink-0 cursor-pointer items-center rounded-full transition-colors`,`bg-border data-[checked]:bg-accent`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base`,`disabled:cursor-not-allowed disabled:opacity-50`,r),children:(0,k.jsx)(TZ,{className:N_(`pointer-events-none block size-4 rounded-full bg-white shadow-sm transition-transform`,`translate-x-1 group-data-[checked]:translate-x-5`)})})}function DZ(e,t,n,r){return function({ids:i}){let a=U(t=>t[e]),o=U(e=>e[t]);return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`button`,{type:`button`,className:fY,"aria-label":`Test ${r}`,onClick:()=>void n(),children:`Test`}),(0,k.jsx)(EZ,{className:Wt,id:i.control,checked:a,onCheckedChange:e=>{o(e),e&&qY()},ariaLabelledBy:i.label,ariaDescribedBy:i.description})]})}}var OZ=[{id:`sound-permission`,page:`notifications`,label:`Permission sound`,description:`Play a ping when any session needs permission.`,keywords:[`sound`,`audio`,`alert`,`ping`,`approval`],Control:DZ(`soundOnPermission`,`setSoundOnPermission`,XY,`permission sound`)},{id:`sound-idle`,page:`notifications`,label:`Idle sound`,description:`Play a chime when a session finishes working.`,keywords:[`sound`,`audio`,`alert`,`chime`,`done`,`finished`],Control:DZ(`soundOnIdle`,`setSoundOnIdle`,ZY,`idle sound`)}];function kZ(e,t,n){let r=`/api/settings/${e}`,[i,a]=(0,y.useState)(n),[o,s]=(0,y.useState)(!0),[c,l]=(0,y.useState)(!1),u=(0,y.useRef)(n),d=(0,y.useRef)(Promise.resolve()),f=(0,y.useRef)(0),p=(0,y.useRef)(!0),m=(0,y.useRef)(!1);return(0,y.useEffect)(()=>{p.current=!0;let e=!0;return fetch(r).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()}).then(n=>{if(!e)return;let r=n[t];f.current===0&&!m.current&&(u.current=r),m.current||a(r)}).catch(()=>{}).finally(()=>{e&&(l(!0),f.current===0&&s(!1))}),()=>{e=!1,p.current=!1}},[r,t]),{value:i,loading:o,loaded:c,set:(0,y.useCallback)(e=>{m.current=!0,f.current+=1,a(e),s(!0),d.current=d.current.then(()=>fetch(r,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({[t]:e})}).then(t=>{if(!t.ok)throw Error(`HTTP ${t.status}`);u.current=e}).catch(()=>{p.current&&f.current===1&&a(u.current)}).finally(()=>{--f.current,p.current&&f.current===0&&s(!1)}))},[r,t])}}function AZ(e,t){return function({ids:n}){let r=U(t=>t[e]),i=U(e=>e[t]);return(0,k.jsx)(EZ,{className:Wt,id:n.control,checked:r,onCheckedChange:i,ariaLabelledBy:n.label,ariaDescribedBy:n.description})}}function jZ({ids:e}){return(0,k.jsx)(bY,{options:[{value:`created`,label:`Created`},{value:`status`,label:`Status`},{value:`manual`,label:`Manual`}],value:U(e=>e.sessionSortMode),onChange:U(e=>e.setSessionSortMode),labelledBy:e.label,describedBy:e.description})}function MZ(){let e=U(e=>e.sessionSortMode);return e===`status`?(0,k.jsx)(k.Fragment,{children:`Permission sessions come first; the rest sort by newest activity.`}):e===`manual`?(0,k.jsx)(k.Fragment,{children:`Drag sessions in the sidebar to reorder them.`}):(0,k.jsx)(k.Fragment,{children:`Sessions stay in the order they were created.`})}function NZ({ids:e}){return(0,k.jsx)(bY,{options:[{value:`desc`,label:`Newest first`},{value:`asc`,label:`Oldest first`}],value:U(e=>e.sessionSortDirection),onChange:U(e=>e.setSessionSortDirection),labelledBy:e.label,describedBy:e.description})}function PZ({ids:e}){return(0,k.jsx)(bY,{options:[{value:`top`,label:`Top`},{value:`bottom`,label:`Bottom`}],value:U(e=>e.sidebarAnchor),onChange:U(e=>e.setSidebarAnchor),labelledBy:e.label,describedBy:e.description})}function FZ(){return U(e=>e.sidebarAnchor)===`bottom`?(0,k.jsx)(k.Fragment,{children:`The sidebar is mirrored: the first session sits at the bottom, next to the prompt.`}):(0,k.jsx)(k.Fragment,{children:`The first session sits at the top of the sidebar.`})}function IZ({ids:e}){let{value:t,loaded:n,set:r}=kZ(`history-max-age-hours`,`hours`,24);return(0,k.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,k.jsx)(gY,{id:e.control,type:`text`,inputMode:`numeric`,value:String(t),disabled:!n,describedBy:e.description,wrapperClassName:`w-20`,className:`text-center tabular-nums`,onCommit:e=>{let n=_Y(e,1,168);return n===null?`Enter 1–168`:(n!==t&&r(n),null)}}),(0,k.jsx)(`span`,{className:`flex h-[32px] items-center text-[12px] text-muted max-md:h-[44px]`,children:`hours`})]})}function LZ({ids:e}){let{value:t,loaded:n,set:r}=kZ(`prefer-window-name`,`enabled`,!1);return(0,k.jsx)(EZ,{className:Wt,id:e.control,checked:t,onCheckedChange:r,disabled:!n,ariaLabelledBy:e.label,ariaDescribedBy:e.description})}var RZ=[{id:`sort-order`,page:`session-list`,label:`Sort order`,description:`Created keeps creation order, Status re-sorts by status, Manual lets you drag.`,keywords:[`sort`,`order`,`created`,`status`,`manual`,`drag`],layout:`wide`,Description:MZ,Control:jZ},{id:`sort-direction`,page:`session-list`,label:`Sort direction`,description:`Newest or oldest sessions first.`,keywords:[`sort`,`newest`,`oldest`,`ascending`,`descending`],layout:`wide`,visibleWhen:e=>e.sessionSortMode===`created`,Control:NZ},{id:`sidebar-anchor`,page:`session-list`,label:`Sidebar anchor`,description:`Top lists the first session at the top; Bottom mirrors the sidebar.`,keywords:[`sidebar`,`mirror`,`top`,`bottom`],tags:[`desktop`],Description:FZ,Control:PZ},{id:`show-project-name`,page:`session-list`,label:`Project name`,description:`Show the project folder name under each session.`,keywords:[`folder`,`details`],Control:AZ(`showProjectName`,`setShowProjectName`)},{id:`show-last-user-message`,page:`session-list`,label:`Last user message`,description:`Show the most recent prompt next to the project name.`,keywords:[`prompt`,`input`,`details`],Control:AZ(`showLastUserMessage`,`setShowLastUserMessage`)},{id:`show-session-id-prefix`,page:`session-list`,label:`Session ID prefix`,description:`Show the first 5 characters of the agent session ID.`,keywords:[`id`,`uuid`,`details`],Control:AZ(`showSessionIdPrefix`,`setShowSessionIdPrefix`)},{id:`history-lookback`,page:`session-list`,label:`History lookback`,description:`Show history sessions from the last N hours (1–168), up to the 100 most recent. Default 24.`,keywords:[`history`,`hours`,`age`,`inactive`,`past`],Control:IZ},{id:`prefer-window-name`,page:`session-list`,label:`Prefer window names`,description:`Label discovered sessions with their tmux window name instead of the session name.`,keywords:[`tmux`,`window`,`name`,`title`],Control:LZ}],zZ=`1-9 [ ] N X ,`;function BZ({ids:e}){let t=U(e=>e.useWebGL),n=U(e=>e.setUseWebGL);return(0,k.jsx)(EZ,{className:Wt,id:e.control,checked:t,onCheckedChange:n,ariaLabelledBy:e.label,ariaDescribedBy:e.description})}function VZ(e,t){return function({ids:n}){let{value:r,loaded:i,set:a}=kZ(e,`enabled`,t);return(0,k.jsx)(EZ,{className:Wt,id:n.control,checked:r,onCheckedChange:a,disabled:!i,ariaLabelledBy:n.label,ariaDescribedBy:n.description})}}var HZ=[`auto`,`ctrl-option`,`ctrl-shift`,`cmd-option`,`cmd-shift`];function UZ({ids:e}){let t=U(e=>e.shortcutModifier),n=U(e=>e.setShortcutModifier);return(0,k.jsx)(bY,{options:HZ.map(e=>({value:e,label:e===`auto`?`Auto`:Pt(e)})),value:t,onChange:n,labelledBy:e.label,describedBy:e.description})}function WZ(){return(0,k.jsxs)(k.Fragment,{children:[`Shortcuts: `,Pt(Mt(U(e=>e.shortcutModifier))),` + `,zZ,` (sessions, navigate, new, kill, settings).`]})}var GZ=[{id:`webgl`,page:`terminal`,label:`WebGL acceleration`,description:`GPU rendering for better performance. Turn off if text looks fuzzy or flickers (common in Safari).`,keywords:[`gpu`,`renderer`,`canvas`,`blurry`,`performance`],tags:[`device`],Control:BZ},{id:`mouse-mode`,page:`terminal`,label:`Mouse mode`,description:`tmux mouse mode for trackpad and scroll wheel support.`,keywords:[`tmux`,`scroll`,`trackpad`,`mouse`],Control:VZ(`tmux-mouse-mode`,!0)},{id:`terminal-colors`,page:`terminal`,label:`Terminal colors`,description:`Preserve ANSI colors in terminal output. Hibernate then Wake running agents after changing this.`,keywords:[`ansi`,`color`,`colour`],Control:VZ(`terminal-colors`,!0)},{id:`shortcut-modifier`,page:`terminal`,label:`Keyboard shortcut modifier`,description:`Modifier keys for the app shortcuts. Auto picks ⌃⌥ on macOS, ⌃⇧ elsewhere.`,keywords:[`keyboard`,`shortcut`,`hotkey`,`ctrl`,`cmd`,`option`,`shift`],tags:[`desktop`,`device`],layout:`wide`,Description:WZ,Control:UZ}],KZ=[...RY,...RZ,...DY,...GZ,...OZ];function qZ(e,t=KZ){return t.filter(t=>t.page===e)}function JZ(e){return[e.label,e.description,...e.keywords??[]].join(` `).toLowerCase()}function YZ(e,t=KZ){let n=e.trim().toLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[]:t.filter(e=>{let t=JZ(e);return n.every(e=>t.includes(e))})}function XZ(e){return rY.map(t=>({page:t.id,label:t.label,rows:e.filter(e=>e.page===t.id)})).filter(e=>e.rows.length>0)}var ZZ={desktop:`Desktop`,device:`This device`},QZ={desktop:`Only affects the desktop layout`,device:`Stored in this browser only; not synced to other devices`};function $Z({tag:e}){return(0,k.jsx)(`span`,{title:QZ[e],className:`shrink-0 border border-border px-1 py-px text-[10px] uppercase leading-none tracking-wide text-muted`,children:ZZ[e]})}function eQ(e){let t=`settings-${e}`;return{control:`${t}-control`,label:`${t}-label`,description:`${t}-desc`}}function tQ({row:e}){let t=eQ(e.id),n=e.layout??`inline`,{Control:r,Description:i}=e;return(0,k.jsxs)(`div`,{"data-setting-row":e.id,className:N_(`flex gap-x-6 gap-y-3 py-4`,n===`block`&&`flex-col`,n===`wide`&&`items-center max-md:flex-col max-md:items-stretch`,n===`inline`&&`items-center`),children:[(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,k.jsx)(`label`,{id:t.label,htmlFor:t.control,className:`text-[14px] leading-snug text-primary`,children:e.label}),e.tags?.map(e=>(0,k.jsx)($Z,{tag:e},e))]}),(0,k.jsx)(`div`,{id:t.description,className:`mt-1 text-[12px] leading-snug text-muted text-pretty`,children:i?(0,k.jsx)(i,{}):e.description})]}),(0,k.jsx)(`div`,{className:N_(`flex min-w-0 items-center gap-2`,n===`inline`?`shrink-0`:`max-w-full`),children:(0,k.jsx)(r,{ids:t})})]})}function nQ(e,t){return e.visibleWhen?e.visibleWhen(t):!0}function rQ({rows:e}){let t=U(t=>e.map(e=>nQ(e,t)?`1`:`0`).join(``));return(0,k.jsx)(`div`,{className:`divide-y divide-border`,children:e.filter((e,n)=>t[n]===`1`).map(e=>(0,k.jsx)(tQ,{row:e},e.id))})}function iQ({page:e,showTitle:t}){let n=(0,y.useMemo)(()=>qZ(e),[e]);return(0,k.jsxs)(`section`,{"aria-labelledby":t?`settings-page-${e}-title`:void 0,children:[t&&(0,k.jsx)(`h3`,{id:`settings-page-${e}-title`,className:`pb-1 text-[18px] font-semibold leading-tight text-primary`,children:aY(e)}),(0,k.jsx)(rQ,{rows:n})]})}function aQ({query:e}){let t=(0,y.useMemo)(()=>YZ(e),[e]),n=U(e=>t.some(t=>nQ(t,e))),r=(0,y.useMemo)(()=>XZ(t),[t]);return n?(0,k.jsx)(`div`,{className:`flex flex-col gap-6`,children:r.map(e=>(0,k.jsx)(oQ,{label:e.label,rows:e.rows},e.page))}):(0,k.jsxs)(`div`,{role:`status`,className:`flex flex-col items-center gap-1 py-16 text-center`,children:[(0,k.jsxs)(`p`,{className:`text-[14px] text-primary`,children:[`No settings match “`,e.trim(),`”`]}),(0,k.jsx)(`p`,{className:`text-[12px] text-muted`,children:`Try a different word, like “font” or “sound”.`})]})}function oQ({label:e,rows:t}){return U(e=>t.some(t=>nQ(t,e)))?(0,k.jsxs)(`section`,{"aria-label":e,children:[(0,k.jsx)(`h3`,{className:`border-b border-border pb-1 text-[11px] font-medium uppercase tracking-wider text-muted`,children:e}),(0,k.jsx)(rQ,{rows:t})]}):null}function sQ(e){return`settings-tab-${e}`}function cQ(e,t,n){return e===`ArrowDown`?(t+1)%n:e===`ArrowUp`?(t-1+n)%n:e===`Home`?0:e===`End`?n-1:null}function lQ({variant:e,current:t,onSelect:n,panelId:r}){let i=(0,y.useRef)([]),a=Math.max(0,rY.findIndex(e=>e.id===t)),o=(t,r)=>{let a=cQ(t.key,r,rY.length);a!==null&&(t.preventDefault(),i.current[a]?.focus(),e===`tabs`&&n(rY[a].id))};return e===`list`?(0,k.jsx)(`nav`,{"aria-label":`Settings pages`,children:(0,k.jsx)(`ul`,{className:`divide-y divide-border border-y border-border`,children:rY.map((e,t)=>(0,k.jsx)(`li`,{children:(0,k.jsxs)(`button`,{ref:e=>{i.current[t]=e},type:`button`,"data-page-id":e.id,onClick:()=>n(e.id),onKeyDown:e=>o(e,t),className:`flex min-h-[52px] w-full items-center justify-between gap-3 px-4 text-left text-[15px] text-primary active:bg-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`,children:[e.label,(0,k.jsx)(B,{width:W.primary,height:W.primary,className:`text-muted`,"aria-hidden":`true`})]})},e.id))})}):(0,k.jsx)(`div`,{role:`tablist`,"aria-orientation":`vertical`,"aria-label":`Settings pages`,className:`flex flex-col gap-px`,children:rY.map((e,s)=>{let c=e.id===t;return(0,k.jsx)(`button`,{ref:e=>{i.current[s]=e},id:sQ(e.id),type:`button`,role:`tab`,"aria-selected":c,"aria-controls":r,tabIndex:s===a?0:-1,onClick:()=>n(e.id),onKeyDown:e=>o(e,s),className:N_(`flex h-[32px] w-full items-center border-l-2 px-3 text-left text-[13px] transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`,c?`border-primary bg-hover font-medium text-primary`:`border-transparent text-secondary hover:text-primary`),children:e.label},e.id)})})}var uQ=(0,y.forwardRef)(function({value:e,onChange:t,className:n},r){return(0,k.jsxs)(`div`,{className:n,children:[(0,k.jsx)(`label`,{htmlFor:`settings-search`,className:`sr-only`,children:`Search settings`}),(0,k.jsx)(`input`,{ref:r,id:`settings-search`,type:`search`,value:e,placeholder:`Search settings`,autoComplete:`off`,spellCheck:!1,onChange:e=>t(e.target.value),onKeyDown:n=>{n.key===`Escape`&&e&&(n.preventDefault(),t(``))},className:`input h-[32px] px-2 py-0 text-[13px] max-md:h-[44px] max-md:text-[16px] focus-visible:ring-2 focus-visible:ring-accent/40`})]})});function dQ({isOpen:e,onClose:t}){return e?(0,k.jsx)(mQ,{onClose:t}):null}var fQ=`settings-panel`,pQ=`flex shrink-0 items-center justify-center text-secondary transition-colors hover:bg-hover hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`;function mQ({onClose:e}){let t=Qh(),[n,r]=(0,y.useState)(()=>t?null:cY()),[i,a]=(0,y.useState)(``),o=(0,y.useRef)(null),s=(0,y.useRef)(null),c=(0,y.useRef)(null),l=(0,y.useRef)(!1),u=(0,y.useRef)(null);aJ(),oJ(o,e),(0,y.useEffect)(()=>{t?o.current?.focus():s.current?.focus()},[]),(0,y.useEffect)(()=>{if(t){if(n)c.current?.focus();else if(u.current){let e=o.current?.querySelector(`[data-page-id="${u.current}"]`);u.current=null,e?.focus()}}},[t,n]);let d=e=>{r(e),lY(e),a(``)},f=i.trim().length>0,p=(0,k.jsx)(`button`,{type:`button`,onClick:e,"aria-label":`Close settings`,className:N_(pQ,`size-[32px] max-md:size-[44px]`),children:(0,k.jsx)(ot,{width:W.primary,height:W.primary})});if(t)return(0,k.jsxs)(`div`,{ref:o,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`settings-title`,"data-suspends-terminal":``,tabIndex:-1,className:`fixed inset-0 z-50 flex flex-col bg-elevated outline-none`,style:{paddingTop:`env(safe-area-inset-top)`,paddingLeft:`env(safe-area-inset-left)`,paddingRight:`env(safe-area-inset-right)`},children:[(0,k.jsxs)(`header`,{className:`flex h-[52px] shrink-0 items-center gap-1 border-b border-border px-1`,children:[n?(0,k.jsx)(`button`,{ref:c,type:`button`,onClick:()=>{u.current=n,r(null)},"aria-label":`Back to settings`,className:N_(pQ,`size-[44px]`),children:(0,k.jsx)(B,{width:W.primary,height:W.primary,className:`rotate-180`})}):(0,k.jsx)(`span`,{"aria-hidden":`true`,className:`size-[44px] shrink-0`}),(0,k.jsx)(`h2`,{id:`settings-title`,className:`min-w-0 flex-1 truncate text-center text-[16px] font-semibold text-primary`,children:n?aY(n):`Settings`}),p]}),(0,k.jsx)(`div`,{id:fQ,className:`min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain px-4`,style:{paddingBottom:`calc(24px + env(safe-area-inset-bottom))`},children:n?(0,k.jsx)(iQ,{page:n,showTitle:!1}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(uQ,{ref:s,value:i,onChange:a,className:`py-3`}),f?(0,k.jsx)(aQ,{query:i}):(0,k.jsx)(`div`,{className:`-mx-4`,children:(0,k.jsx)(lQ,{variant:`list`,current:null,onSelect:d})})]})})]});let m=n??cY();return(0,k.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-4`,onMouseDown:e=>{l.current=e.target===e.currentTarget},onClick:t=>{l.current&&t.target===t.currentTarget&&e(),l.current=!1},children:(0,k.jsxs)(`div`,{ref:o,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`settings-title`,"data-suspends-terminal":``,tabIndex:-1,className:`flex h-[600px] max-h-full w-[760px] max-w-full flex-col border border-border bg-elevated shadow-2xl outline-none`,children:[(0,k.jsxs)(`header`,{className:`flex h-[48px] shrink-0 items-center justify-between border-b border-border pl-5 pr-2`,children:[(0,k.jsx)(`h2`,{id:`settings-title`,className:`text-[13px] font-semibold uppercase tracking-wider text-primary`,children:`Settings`}),p]}),(0,k.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,k.jsxs)(`div`,{className:`flex w-[192px] shrink-0 flex-col gap-3 border-r border-border p-3`,children:[(0,k.jsx)(uQ,{ref:s,value:i,onChange:a}),(0,k.jsx)(lQ,{variant:`tabs`,current:f?null:m,onSelect:d,panelId:fQ})]}),(0,k.jsx)(`div`,{id:fQ,role:f?`region`:`tabpanel`,"aria-label":f?`Search results`:void 0,"aria-labelledby":f?void 0:sQ(m),className:`min-w-0 flex-1 overflow-y-auto overflow-x-hidden px-6 py-5`,children:f?(0,k.jsx)(aQ,{query:i}):(0,k.jsx)(iQ,{page:m,showTitle:!0})})]})]})})}var hQ=[];function gQ(e){y.useEffect(e,hQ)}var _Q=y.createContext(void 0);function vQ(){let e=y.useContext(_Q);if(!e)throw Error(vX(73));return e}var yQ=Symbol(`NOT_FOUND`);function bQ(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!=`function`)throw TypeError(t)}function xQ(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!=`object`)throw TypeError(t)}function SQ(e,t=`expected all items to be functions, instead received the following types: `){if(!e.every(e=>typeof e==`function`)){let n=e.map(e=>typeof e==`function`?`function ${e.name||`unnamed`}()`:typeof e).join(`, `);throw TypeError(`${t}[${n}]`)}}var CQ=e=>Array.isArray(e)?e:[e];function wQ(e){let t=Array.isArray(e[0])?e[0]:e;return SQ(t,`createSelector expects all input-selectors to be functions, but received the following types: `),t}function TQ(e,t){let n=[],{length:r}=e;for(let i=0;i<r;i++)n.push(e[i].apply(null,t));return n}function EQ(e){let t;return{get(n){return t&&e(t.key,n)?t.value:yQ},put(e,n){t={key:e,value:n}},getEntries(){return t?[t]:[]},clear(){t=void 0}}}function DQ(e,t){let n=[];function r(e){let r=n.findIndex(n=>t(e,n.key));if(r>-1){let e=n[r];return r>0&&(n.splice(r,1),n.unshift(e)),e.value}return yQ}function i(t,i){r(t)===yQ&&(n.unshift({key:t,value:i}),n.length>e&&n.pop())}function a(){return n}function o(){n=[]}return{get:r,put:i,getEntries:a,clear:o}}var OQ=(e,t)=>e===t;function kQ(e){return function(t,n){if(t===null||n===null||t.length!==n.length)return!1;let{length:r}=t;for(let i=0;i<r;i++)if(!e(t[i],n[i]))return!1;return!0}}function AQ(e,t){let{equalityCheck:n=OQ,maxSize:r=1,resultEqualityCheck:i}=typeof t==`object`?t:{equalityCheck:t},a=kQ(n),o=0,s=r<=1?EQ(a):DQ(r,a);function c(){let t=s.get(arguments);if(t===yQ){if(t=e.apply(null,arguments),o++,i){let e=s.getEntries().find(e=>i(e.value,t));e&&(t=e.value,o!==0&&o--)}s.put(arguments,t)}return t}return c.clearCache=()=>{s.clear(),c.resetResultsCount()},c.resultsCount=()=>o,c.resetResultsCount=()=>{o=0},c}var jQ=class{constructor(e){this.value=e}deref(){return this.value}},MQ=typeof WeakRef<`u`?WeakRef:jQ,NQ=0,PQ=1;function FQ(){return{s:NQ,v:void 0,o:null,p:null}}function IQ(e,t={}){let n=FQ(),{resultEqualityCheck:r}=t,i,a=0;function o(){let t=n,{length:o}=arguments;for(let e=0,n=o;e<n;e++){let n=arguments[e];if(typeof n==`function`||typeof n==`object`&&n){let e=t.o;e===null&&(t.o=e=new WeakMap);let r=e.get(n);r===void 0?(t=FQ(),e.set(n,t)):t=r}else{let e=t.p;e===null&&(t.p=e=new Map);let r=e.get(n);r===void 0?(t=FQ(),e.set(n,t)):t=r}}let s=t,c;if(t.s===PQ)c=t.v;else if(c=e.apply(null,arguments),a++,r){let e=i?.deref?.()??i;e!=null&&r(e,c)&&(c=e,a!==0&&a--),i=typeof c==`object`&&c||typeof c==`function`?new MQ(c):c}return s.s=PQ,s.v=c,c}return o.clearCache=()=>{n=FQ(),o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function LQ(e,...t){let n=typeof e==`function`?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t=0,r=0,i,a={},o=e.pop();typeof o==`object`&&(a=o,o=e.pop()),bQ(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);let{memoize:s,memoizeOptions:c=[],argsMemoize:l=IQ,argsMemoizeOptions:u=[],devModeChecks:d={}}={...n,...a},f=CQ(c),p=CQ(u),m=wQ(e),h=s(function(){return t++,o.apply(null,arguments)},...f),g=l(function(){r++;let e=TQ(m,arguments);return i=h.apply(null,e),i},...p);return Object.assign(g,{resultFunc:o,memoizedResultFunc:h,dependencies:m,dependencyRecomputations:()=>r,resetDependencyRecomputations:()=>{r=0},lastResult:()=>i,recomputations:()=>t,resetRecomputations:()=>{t=0},memoize:s,argsMemoize:l})};return Object.assign(r,{withTypes:()=>r}),r}var RQ=LQ(IQ),zQ=Object.assign((e,t=RQ)=>{xQ(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);let n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>zQ}),BQ=LQ({memoize:AQ,memoizeOptions:{maxSize:1,equalityCheck:Object.is}}),VQ=(e,t,n,r,i,a,...o)=>{if(o.length>0)throw Error(vX(1));let s;if(e&&t&&n&&r&&i&&a)s=(o,s,c,l)=>a(e(o,s,c,l),t(o,s,c,l),n(o,s,c,l),r(o,s,c,l),i(o,s,c,l),s,c,l);else if(e&&t&&n&&r&&i)s=(a,o,s,c)=>i(e(a,o,s,c),t(a,o,s,c),n(a,o,s,c),r(a,o,s,c),o,s,c);else if(e&&t&&n&&r)s=(i,a,o,s)=>r(e(i,a,o,s),t(i,a,o,s),n(i,a,o,s),a,o,s);else if(e&&t&&n)s=(r,i,a,o)=>n(e(r,i,a,o),t(r,i,a,o),i,a,o);else if(e&&t)s=(n,r,i,a)=>t(e(n,r,i,a),r,i,a);else if(e)s=e;else throw Error(`Missing arguments`);return s},HQ=(...e)=>{let t=new WeakMap,n=1,r=e[e.length-1],i=e.length-1||1,a=r.length-i;if(a>3)throw Error(vX(2));return(i,o,s,c)=>{let l=i.__cacheKey__;l||(l={id:n},i.__cacheKey__=l,n+=1);let u=t.get(l);if(!u){let n=e,i=[void 0,void 0,void 0];switch(a){case 0:break;case 1:n=[...e.slice(0,-1),()=>i[0],r];break;case 2:n=[...e.slice(0,-1),()=>i[0],()=>i[1],r];break;case 3:n=[...e.slice(0,-1),()=>i[0],()=>i[1],()=>i[2],r];break;default:throw Error(vX(2))}u=BQ(...n),u.selectorArgs=i,t.set(l,u)}switch(u.selectorArgs[0]=o,u.selectorArgs[1]=s,u.selectorArgs[2]=c,a){case 0:return u(i);case 1:return u(i,o);case 2:return u(i,o,s);case 3:return u(i,o,s,c);default:throw Error(`unreachable`)}}},UQ=s((e=>{var t=p();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),WQ=s(((e,t)=>{t.exports=UQ()})),GQ=s((e=>{var t=p(),n=WQ();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),KQ=s(((e,t)=>{t.exports=GQ()})),qQ=[],JQ=void 0;function YQ(){return JQ}function XQ(e){qQ.push(e)}var ZQ=WQ(),QQ=KQ(),$Q=bX(19)?n$:r$;function e$(e,t,n,r,i){return $Q(e,t,n,r,i)}function t$(e,t,n,r,i){let a=y.useCallback(()=>t(e.getSnapshot(),n,r,i),[e,t,n,r,i]);return(0,ZQ.useSyncExternalStore)(e.subscribe,a,a)}XQ({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let n=0;n<e.syncHooks.length;n+=1){let r=e.syncHooks[n],i=r.selector(r.store.state,r.a1,r.a2,r.a3);(r.didChange||!Object.is(r.value,i))&&(t=!0,r.value=i,r.didChange=!1)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let n=new Set;for(let t of e.syncHooks)n.add(t.store);let r=[];for(let e of n)r.push(e.subscribe(t));return()=>{for(let e of r)e()}}),(0,ZQ.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function n$(e,t,n,r,i){let a=YQ();if(!a)return t$(e,t,n,r,i);let o=a.syncIndex;a.syncIndex+=1;let s;return a.didInitialize?(s=a.syncHooks[o],(s.store!==e||s.selector!==t||!Object.is(s.a1,n)||!Object.is(s.a2,r)||!Object.is(s.a3,i))&&(s.store!==e&&(a.didChangeStore=!0),s.store=e,s.selector=t,s.a1=n,s.a2=r,s.a3=i,s.didChange=!0)):(s={store:e,selector:t,a1:n,a2:r,a3:i,value:t(e.getSnapshot(),n,r,i),didChange:!1},a.syncHooks.push(s)),s.value}function r$(e,t,n,r,i){return(0,QQ.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))}var i$=class{constructor(e){this.state=e,this.listeners=new Set,this.updateTick=0}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;setState(e){if(this.state===e)return;this.state=e,this.updateTick+=1;let t=this.updateTick;for(let n of this.listeners){if(t!==this.updateTick)return;n(e)}}update(e){for(let t in e)if(!Object.is(this.state[t],e[t])){this.setState({...this.state,...e});return}}set(e,t){Object.is(this.state[e],t)||this.setState({...this.state,[e]:t})}notifyAll(){let e={...this.state};this.setState(e)}use(e,t,n,r){return e$(this,e,t,n,r)}},a$=class extends i${constructor(e,t={},n){super(e),this.context=t,this.selectors=n}useSyncedValue(e,t){y.useDebugValue(e),fX(()=>{this.state[e]!==t&&this.set(e,t)},[e,t])}useSyncedValueWithCleanup(e,t){let n=this;fX(()=>(n.state[e]!==t&&n.set(e,t),()=>{n.set(e,void 0)}),[n,e,t])}useSyncedValues(e){let t=this;fX(()=>{t.update(e)},[t,...Object.values(e)])}useControlledProp(e,t){y.useDebugValue(e);let n=t!==void 0;fX(()=>{n&&!Object.is(this.state[e],t)&&super.setState({...this.state,[e]:t})},[e,t,n])}select(e,t,n,r){let i=this.selectors[e];return i(this.state,t,n,r)}useState(e,t,n,r){return y.useDebugValue(e),e$(this,this.selectors[e],t,n,r)}useContextCallback(e,t){y.useDebugValue(e);let n=rX(t??gX);this.context[e]=n}useStateSetter(e){let t=y.useRef(void 0);return t.current===void 0&&(t.current=t=>{this.set(e,t)}),t.current}observe(e,t){let n;n=typeof e==`function`?e:this.selectors[e];let r=n(this.state);return t(r,r,this),this.subscribe(e=>{let i=n(e);if(!Object.is(r,i)){let e=r;r=i,t(i,e,this)}})}},o$=null;globalThis.requestAnimationFrame;var s$=new class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=e=>{this.isScheduled=!1;let t=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let n=0;n<t.length;n+=1)t[n]?.(e)};request(e){let t=this.nextId;return this.nextId+=1,this.callbacks.push(e),this.callbacksCount+=1,this.isScheduled||=(requestAnimationFrame(this.tick),!0),t}cancel(e){let t=e-this.startId;t<0||t>=this.callbacks.length||(this.callbacks[t]=null,--this.callbacksCount)}},c$=class e{static create(){return new e}static request(e){return s$.request(e)}static cancel(e){return s$.cancel(e)}currentId=o$;request(e){this.cancel(),this.currentId=s$.request(()=>{this.currentId=o$,e()})}cancel=()=>{this.currentId!==o$&&(s$.cancel(this.currentId),this.currentId=o$)};disposeEffect=()=>this.cancel};function l$(){let e=eX(c$.create).current;return gQ(e.disposeEffect),e}var u$=0,d$=class e{static create(){return new e}currentId=u$;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=u$,t()},e)}isStarted(){return this.currentId!==u$}clear=()=>{this.currentId!==u$&&(clearTimeout(this.currentId),this.currentId=u$)};disposeEffect=()=>this.clear};function f$(){let e=eX(d$.create).current;return gQ(e.disposeEffect),e}var p$=0;function m$(e){return p$+=1,`${e}-${Math.random().toString(36).slice(2,6)}-${p$}`}function h$(e){return e?.ownerDocument||document}function g$(e,t){if(typeof e==`string`)return{description:e};if(typeof e==`function`){let n=e(t);return typeof n==`string`?{description:n}:n}return e}var _$=typeof navigator<`u`,v$=C$(),y$=T$(),b$=w$();typeof CSS>`u`||!CSS.supports||CSS.supports(`-webkit-backdrop-filter:none`),v$.platform===`MacIntel`&&v$.maxTouchPoints>1||/iP(hone|ad|od)|iOS/.test(v$.platform),_$&&/firefox/i.test(b$);var x$=_$&&/apple/i.test(navigator.vendor);_$&&/Edg/i.test(b$),_$&&/android/i.test(y$)||/android/i.test(b$),_$&&y$.toLowerCase().startsWith(`mac`)&&navigator.maxTouchPoints;var S$=b$.includes(`jsdom/`);function C$(){if(!_$)return{platform:``,maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??``,maxTouchPoints:navigator.maxTouchPoints??-1}}function w$(){if(!_$)return``;let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:e,version:t})=>`${e}/${t}`).join(` `):navigator.userAgent}function T$(){if(!_$)return``;let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??``}function E$(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function D$(e,t){if(!e||!t)return!1;let n=t.getRootNode?.();if(e.contains(t))return!0;if(n&&$X(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function O$(e){return`composedPath`in e?e.composedPath()[0]:e.target}function k$(e){if(!e||S$)return!0;try{return e.matches(`:focus-visible`)}catch{return!0}}var A$=HQ(e=>e.toasts,e=>{let t=new Map,n=0,r=0;return e.forEach((e,i)=>{let a=e.transitionStatus===`ending`;t.set(e.id,{value:e,domIndex:i,visibleIndex:a?-1:n,offsetY:r}),r+=e.height||0,a||(n+=1)}),t}),j$={toasts:VQ(e=>e.toasts),isEmpty:VQ(e=>e.toasts.length===0),toast:VQ(A$,(e,t)=>e.get(t)?.value),toastIndex:VQ(A$,(e,t)=>e.get(t)?.domIndex??-1),toastOffsetY:VQ(A$,(e,t)=>e.get(t)?.offsetY??0),toastVisibleIndex:VQ(A$,(e,t)=>e.get(t)?.visibleIndex??-1),hovering:VQ(e=>e.hovering),focused:VQ(e=>e.focused),expanded:VQ(e=>e.hovering||e.focused),expandedOrOutOfFocus:VQ(e=>e.hovering||e.focused||!e.isWindowFocused),prevFocusElement:VQ(e=>e.prevFocusElement)},M$=class extends a${timers=new Map;areTimersPaused=!1;constructor(e){super(e,{},j$)}setFocused(e){this.set(`focused`,e)}setHovering(e){this.set(`hovering`,e)}setIsWindowFocused(e){this.set(`isWindowFocused`,e)}setPrevFocusElement(e){this.set(`prevFocusElement`,e)}setViewport=e=>{this.set(`viewport`,e)};disposeEffect=()=>()=>{this.timers.forEach(e=>{e.timeout?.clear()}),this.timers.clear()};removeToast(e){let t=j$.toastIndex(this.state,e);if(t===-1)return;this.state.toasts[t]?.onRemove?.();let n=[...this.state.toasts];n.splice(t,1),this.setToasts(n)}addToast=e=>{let{toasts:t,timeout:n,limit:r}=this.state,i=e.id||m$(`toast`),a={...e,id:i,transitionStatus:`starting`},o=[a,...t],s=o.filter(e=>e.transitionStatus!==`ending`);if(s.length>r){let e=s.length-r,t=s.slice(-e),n=new Set(t.map(e=>e.id));this.setToasts(o.map(e=>{let t=n.has(e.id);return e.limited===t?e:{...e,limited:t}}))}else this.setToasts(o.map(e=>e.limited?{...e,limited:!1}:e));let c=a.timeout??n;return a.type!==`loading`&&c>0&&this.scheduleTimer(i,c,()=>this.closeToast(i)),j$.expandedOrOutOfFocus(this.state)&&this.pauseTimers(),i};updateToast=(e,t)=>{this.updateToastInternal(e,t)};updateToastInternal=(e,t)=>{let{timeout:n,toasts:r}=this.state,i=j$.toast(this.state,e)??null;if(!i||i.transitionStatus===`ending`)return;let a={...i,...t};this.setToasts(r.map(n=>n.id===e?{...n,...t}:n));let o=a.timeout??n,s=i?.timeout??n,c=Object.hasOwn(t,`timeout`),l=a.transitionStatus!==`ending`&&a.type!==`loading`&&o>0,u=this.timers.has(e),d=s!==o,f=i?.type===`loading`;if(!l&&u){this.timers.get(e)?.timeout?.clear(),this.timers.delete(e);return}if(l&&(!u||d||c||f)){let t=this.timers.get(e);t&&(t.timeout?.clear(),this.timers.delete(e)),this.scheduleTimer(e,o,()=>this.closeToast(e)),j$.expandedOrOutOfFocus(this.state)&&this.pauseTimers()}};closeToast=e=>{j$.toast(this.state,e)?.onClose?.();let{limit:t,toasts:n}=this.state,r=0,i=n.map(n=>{if(n.id===e)return{...n,transitionStatus:`ending`,height:0};if(n.transitionStatus===`ending`)return n;let i=r>=t;return r+=1,n.limited===i?n:{...n,limited:i}}),a=this.timers.get(e);a&&a.timeout&&(a.timeout.clear(),this.timers.delete(e)),this.handleFocusManagement(e),this.setToasts(i)};promiseToast=(e,t)=>{let n=g$(t.loading),r=this.addToast({...n,type:`loading`}),i=e.then(e=>{let n=g$(t.success,e);return this.updateToast(r,{...n,type:`success`,timeout:n.timeout}),e}).catch(e=>{let n=g$(t.error,e);return this.updateToast(r,{...n,type:`error`,timeout:n.timeout}),Promise.reject(e)});return{}.hasOwnProperty.call(t,`setPromise`)&&t.setPromise(i),i};pauseTimers(){this.areTimersPaused||(this.areTimersPaused=!0,this.timers.forEach(e=>{if(e.timeout){e.timeout.clear();let t=Date.now()-e.start,n=e.delay-t;e.remaining=n>0?n:0}}))}resumeTimers(){this.areTimersPaused&&(this.areTimersPaused=!1,this.timers.forEach((e,t)=>{e.remaining=e.remaining>0?e.remaining:e.delay,e.timeout??=d$.create(),e.timeout.start(e.remaining,()=>{this.timers.delete(t),e.callback()}),e.start=Date.now()}))}restoreFocusToPrevElement(){this.state.prevFocusElement?.focus({preventScroll:!0})}handleDocumentPointerDown=e=>{if(e.pointerType!==`touch`)return;let t=O$(e);D$(this.state.viewport,t)||(this.resumeTimers(),this.update({hovering:!1,focused:!1}))};scheduleTimer(e,t,n){let r=Date.now(),i=!j$.expandedOrOutOfFocus(this.state),a=i?d$.create():void 0;a?.start(t,()=>{this.timers.delete(e),n()}),this.timers.set(e,{timeout:a,start:i?r:0,delay:t,remaining:t,callback:n})}setToasts(e){let t={toasts:e};e.length===0&&(t.hovering=!1,t.focused=!1),this.update(t)}handleFocusManagement(e){let t=E$(h$(this.state.viewport));if(!this.state.viewport||!D$(this.state.viewport,t)||!k$(t))return;let n=j$.toasts(this.state),r=j$.toastIndex(this.state,e),i=null,a=r+1;for(;a<n.length;){if(n[a].transitionStatus!==`ending`){i=n[a];break}a+=1}if(!i)for(a=r-1;a>=0;){if(n[a].transitionStatus!==`ending`){i=n[a];break}--a}i?i.ref?.current?.focus():this.restoreFocusToPrevElement()}},N$=function(e){let{children:t,timeout:n=5e3,limit:r=3,toastManager:i}=e,a=eX(()=>new M$({timeout:n,limit:r,viewport:null,toasts:[],hovering:!1,focused:!1,isWindowFocused:!0,prevFocusElement:null})).current;return gQ(a.disposeEffect),y.useEffect(function(){if(i)return i[` subscribe`](({action:e,options:t})=>{let n=t.id;e===`promise`&&t.promise?a.promiseToast(t.promise,t):e===`update`&&n?a.updateToast(n,t):e===`close`&&n?a.closeToast(n):a.addToast(t)})},[a,n,i]),a.useSyncedValues({timeout:n,limit:r}),(0,k.jsx)(_Q.Provider,{value:a,children:t})},P$=y.forwardRef(function(e,t){let[n,r]=y.useState();fX(()=>{x$&&r(`button`)},[]);let i={tabIndex:0,role:n};return(0,k.jsx)(`span`,{...e,ref:t,style:mX,"aria-hidden":n?void 0:!0,...i,"data-base-ui-focus-guard":``})}),F$=function(e){return e.frontmostHeight=`--toast-frontmost-height`,e}({}),I$=y.forwardRef(function(e,t){let{render:n,className:r,children:i,...a}=e,o=vQ(),s=f$(),c=y.useRef(!1),l=y.useRef(!1),u=o.useState(`isEmpty`),d=o.useState(`toasts`),f=o.useState(`focused`),p=o.useState(`expanded`),m=o.useState(`prevFocusElement`),h=d[0]?.height??0,g=y.useMemo(()=>d.some(e=>e.transitionStatus===`ending`),[d]);y.useEffect(()=>{let e=o.state.viewport;if(!e)return;function t(t){u||t.key===`F6`&&t.target!==e&&(t.preventDefault(),o.setPrevFocusElement(E$(h$(e))),e?.focus({preventScroll:!0}),o.pauseTimers(),o.setFocused(!0))}let n=XX(e);return n.addEventListener(`keydown`,t),()=>{n.removeEventListener(`keydown`,t)}},[o,u]),y.useEffect(()=>{let e=o.state.viewport;if(!e||u)return;let t=XX(e);function n(e){e.target===t&&(o.setIsWindowFocused(!1),o.pauseTimers())}function r(n){if(n.relatedTarget||n.target===t)return;let r=O$(n),i=E$(h$(e));(!D$(e,r)||!k$(i))&&o.resumeTimers(),s.start(0,()=>o.setIsWindowFocused(!0))}return t.addEventListener(`blur`,n,!0),t.addEventListener(`focus`,r,!0),()=>{t.removeEventListener(`blur`,n,!0),t.removeEventListener(`focus`,r,!0)}},[o,s,u]),y.useEffect(()=>{let e=o.state.viewport;if(!e||u)return;let t=h$(e);return t.addEventListener(`pointerdown`,o.handleDocumentPointerDown,!0),()=>{t.removeEventListener(`pointerdown`,o.handleDocumentPointerDown,!0)}},[u,o]);function _(e){let t=o.state.viewport;t&&(c.current=!0,e.relatedTarget===t?d[0]?.ref?.current?.focus():o.restoreFocusToPrevElement())}function v(e){e.key===`Tab`&&e.shiftKey&&e.target===o.state.viewport&&(e.preventDefault(),o.restoreFocusToPrevElement(),o.resumeTimers())}y.useEffect(()=>{!o.state.isWindowFocused||g||!l.current||(o.resumeTimers(),o.setHovering(!1),l.current=!1)},[g,o]);function b(){o.pauseTimers(),o.setHovering(!0),l.current=!1}function x(){g?l.current=!0:(o.resumeTimers(),o.setHovering(!1))}function S(){if(c.current){c.current=!1;return}f||k$(h$(o.state.viewport).activeElement)&&(o.setFocused(!0),o.pauseTimers())}function C(e){!f||D$(o.state.viewport,e.relatedTarget)||(o.setFocused(!1),o.resumeTimers())}let w={tabIndex:-1,role:`region`,"aria-live":`polite`,"aria-atomic":!1,"aria-relevant":`additions text`,"aria-label":`Notifications`,onMouseEnter:b,onMouseMove:b,onMouseLeave:x,onFocus:S,onBlur:C,onKeyDown:v,onClick:S},T={expanded:p},E=RX(`div`,e,{ref:[t,o.setViewport],state:T,props:[w,{style:{[F$.frontmostHeight]:h?`${h}px`:void 0}},a,{children:(0,k.jsxs)(y.Fragment,{children:[!u&&m&&(0,k.jsx)(P$,{onFocus:_}),i,!u&&m&&(0,k.jsx)(P$,{onFocus:_})]})}]}),D=y.useMemo(()=>d.filter(e=>e.priority===`high`),[d]);return(0,k.jsxs)(y.Fragment,{children:[!u&&m&&(0,k.jsx)(P$,{onFocus:_}),E,!f&&D.length>0&&(0,k.jsx)(`div`,{style:mX,children:D.map(e=>(0,k.jsxs)(`div`,{role:`alert`,"aria-atomic":!0,children:[(0,k.jsx)(`div`,{children:e.title}),(0,k.jsx)(`div`,{children:e.description})]},e.id))})]})});function L$(e){return bX(19)?e:e?`true`:void 0}var R$=y.createContext(void 0);function z$(){let e=y.useContext(R$);if(!e)throw Error(vX(66));return e}var B$=function(e){return e.startingStyle=`data-starting-style`,e.endingStyle=`data-ending-style`,e}({}),V$={[B$.startingStyle]:``},H$={[B$.endingStyle]:``},U$={transitionStatus(e){return e===`starting`?V$:e===`ending`?H$:null}};function W$(e){return e==null?e:`current`in e?e.current:e}function G$(e,t=!1,n=!0){let r=l$();return rX((i,a=null)=>{r.cancel();function o(){uf.flushSync(i)}let s=W$(e);if(s==null)return;let c=s;if(typeof c.getAnimations!=`function`||globalThis.BASE_UI_ANIMATIONS_DISABLED)i();else{function e(){let e=B$.startingStyle;if(!c.hasAttribute(e)){r.request(i);return}let t=new MutationObserver(()=>{c.hasAttribute(e)||(t.disconnect(),i())});t.observe(c,{attributes:!0,attributeFilter:[e]}),a?.addEventListener(`abort`,()=>t.disconnect(),{once:!0})}function i(){Promise.all(c.getAnimations().map(e=>e.finished)).then(()=>{a?.aborted||o()}).catch(()=>{let e=c.getAnimations();if(n){if(a?.aborted)return;o()}else e.length>0&&e.some(e=>e.pending||e.playState!==`finished`)&&i()})}if(t){e();return}r.request(i)}})}function K$(e){let{enabled:t=!0,open:n,ref:r,onComplete:i}=e,a=rX(i),o=G$(r,n,!1);y.useEffect(()=>{if(!t)return;let e=new AbortController;return o(a,e.signal),()=>{e.abort()}},[t,n,a,o])}var q$=function(e){return e.index=`--toast-index`,e.offsetY=`--toast-offset-y`,e.height=`--toast-height`,e.swipeMovementX=`--toast-swipe-movement-x`,e.swipeMovementY=`--toast-swipe-movement-y`,e}({}),J$={...U$,swipeDirection(e){return e?{"data-swipe-direction":e}:null}},Y$=40,X$=10,Z$=.5,Q$=1;function $$(e,t,n){switch(e){case`up`:return-n;case`down`:return n;case`left`:return-t;case`right`:return t;default:return 0}}function e1(e){let t=window.getComputedStyle(e).transform,n=0,r=0,i=1;if(t&&t!==`none`){let e=t.match(/matrix(?:3d)?\(([^)]+)\)/);if(e){let t=e[1].split(`, `).map(parseFloat);t.length===6?(n=t[4],r=t[5],i=Math.sqrt(t[0]*t[0]+t[1]*t[1])):t.length===16&&(n=t[12],r=t[13],i=t[0])}}return{x:n,y:r,scale:i}}var t1=y.forwardRef(function(e,t){let{toast:n,render:r,className:i,swipeDirection:a=[`down`,`right`],...o}=e,s=n.positionerProps?.anchor!==void 0,c=[];s||(c=Array.isArray(a)?a:[a]);let l=c.length>0,u=vQ(),[d,f]=y.useState(void 0),[p,m]=y.useState(!1),[h,g]=y.useState(!1),[_,v]=y.useState(!1),[b,x]=y.useState({x:0,y:0}),[S,C]=y.useState({x:0,y:0,scale:1}),[w,T]=y.useState(),[E,D]=y.useState(),[O,A]=y.useState(null),j=y.useRef(null),M=y.useRef({x:0,y:0}),N=y.useRef({x:0,y:0,scale:1}),P=y.useRef(void 0),F=y.useRef(0),ee=y.useRef(!1),I=y.useRef({x:0,y:0}),te=y.useRef(!1),L=u.useState(`toastIndex`,n.id),R=u.useState(`toastVisibleIndex`,n.id),z=u.useState(`toastOffsetY`,n.id),ne=u.useState(`focused`),B=u.useState(`expanded`);K$({open:n.transitionStatus!==`ending`,ref:j,onComplete(){n.transitionStatus===`ending`&&u.removeToast(n.id)}});let re=rX((e=!1)=>{let t=j.current;if(!t)return;let r=t.style.height;t.style.height=`auto`;let i=t.offsetHeight;t.style.height=r;function a(){u.updateToastInternal(n.id,{ref:j,height:i,...n.transitionStatus===`starting`?{transitionStatus:void 0}:{}})}e?uf.flushSync(a):a()});fX(re,[re]);function V(e,t){let n=e,r=t;return!c.includes(`left`)&&!c.includes(`right`)?n=e>0?e**Z$:-(Math.abs(e)**Z$):(!c.includes(`right`)&&e>0&&(n=e**Z$),!c.includes(`left`)&&e<0&&(n=-(Math.abs(e)**Z$))),!c.includes(`up`)&&!c.includes(`down`)?r=t>0?t**Z$:-(Math.abs(t)**Z$):(!c.includes(`down`)&&t>0&&(r=t**Z$),!c.includes(`up`)&&t<0&&(r=-(Math.abs(t)**Z$))),{x:n,y:r}}function ie(e){if(e.button!==0)return;e.pointerType===`touch`&&u.pauseTimers();let t=O$(e.nativeEvent);if(!(t&&t.closest(`button,a,input,textarea,[role="button"],[data-swipe-ignore]`))){if(ee.current=!1,P.current=void 0,F.current=0,M.current={x:e.clientX,y:e.clientY},I.current=M.current,j.current){let e=e1(j.current);N.current=e,C(e),x({x:e.x,y:e.y})}u.setHovering(!0),m(!0),g(!1),A(null),te.current=!0,j.current?.setPointerCapture(e.pointerId)}}function H(e){if(!p)return;e.preventDefault(),te.current&&=(M.current={x:e.clientX,y:e.clientY},!1);let{clientY:t,clientX:n,movementX:r,movementY:i}=e;(i<0&&t>I.current.y||i>0&&t<I.current.y)&&(I.current={x:I.current.x,y:t}),(r<0&&n>I.current.x||r>0&&n<I.current.x)&&(I.current={x:n,y:I.current.y});let a=n-M.current.x,o=t-M.current.y,s=t-I.current.y,l=n-I.current.x;if(!h&&Math.sqrt(a*a+o*o)>=Q$&&(g(!0),O===null)){let e=c.includes(`left`)||c.includes(`right`),t=c.includes(`up`)||c.includes(`down`);e&&t&&A(Math.abs(a)>Math.abs(o)?`horizontal`:`vertical`)}let u;if(!P.current)O===`vertical`?o>0?u=`down`:o<0&&(u=`up`):O===`horizontal`?a>0?u=`right`:a<0&&(u=`left`):u=Math.abs(a)>=Math.abs(o)?a>0?`right`:`left`:o>0?`down`:`up`,u&&c.includes(u)&&(P.current=u,F.current=$$(u,a,o),f(u));else{let e=P.current,t=$$(e,l,s);t>Y$?(ee.current=!1,f(e)):!(c.includes(`left`)&&c.includes(`right`))&&!(c.includes(`up`)&&c.includes(`down`))&&F.current-t>=X$&&(ee.current=!0)}let d=V(a,o),m=N.current.x,_=N.current.y;O===`horizontal`?(c.includes(`left`)||c.includes(`right`))&&(m+=d.x):(O===`vertical`||(c.includes(`left`)||c.includes(`right`))&&(m+=d.x),(c.includes(`up`)||c.includes(`down`))&&(_+=d.y)),x({x:m,y:_})}function ae(e){if(!p)return;if(m(!1),g(!1),A(null),j.current?.releasePointerCapture(e.pointerId),ee.current){x({x:S.x,y:S.y}),f(void 0);return}let t=!1,r=b.x-S.x,i=b.y-S.y,a;for(let e of c){switch(e){case`right`:r>Y$&&(t=!0,a=`right`);break;case`left`:r<-Y$&&(t=!0,a=`left`);break;case`down`:i>Y$&&(t=!0,a=`down`);break;case`up`:i<-Y$&&(t=!0,a=`up`);break;default:break}if(t)break}t?(f(a),v(!0),u.closeToast(n.id)):(x({x:S.x,y:S.y}),f(void 0))}function oe(e){if(e.key===`Escape`){if(!j.current||!D$(j.current,E$(h$(j.current))))return;u.closeToast(n.id)}}y.useEffect(()=>{if(!l)return;let e=j.current;if(!e)return;function t(t){D$(e,t.target)&&t.preventDefault()}return e.addEventListener(`touchmove`,t,{passive:!1}),()=>{e.removeEventListener(`touchmove`,t)}},[l]);function se(){if(!p&&b.x===S.x&&b.y===S.y&&!_)return{[q$.swipeMovementX]:`0px`,[q$.swipeMovementY]:`0px`};let e=b.x-S.x,t=b.y-S.y;return{transition:p?`none`:void 0,transform:p?`translateX(${b.x}px) translateY(${b.y}px) scale(${S.scale})`:void 0,[q$.swipeMovementX]:`${e}px`,[q$.swipeMovementY]:`${t}px`}}let ce=n.priority===`high`,le={role:ce?`alertdialog`:`dialog`,tabIndex:0,"aria-modal":!1,"aria-labelledby":w,"aria-describedby":E,"aria-hidden":ce&&!ne?!0:void 0,onPointerDown:l?ie:void 0,onPointerMove:l?H:void 0,onPointerUp:l?ae:void 0,onKeyDown:oe,inert:L$(n.limited),style:{...se(),[q$.index]:n.transitionStatus===`ending`?L:R,[q$.offsetY]:`${z}px`,[q$.height]:n.height?`${n.height}px`:void 0}},ue=y.useMemo(()=>({rootRef:j,toast:n,titleId:w,setTitleId:T,descriptionId:E,setDescriptionId:D,swiping:p,swipeDirection:d,recalculateHeight:re,index:L,visibleIndex:R,expanded:B}),[n,w,E,p,d,re,L,R,B]),de={transitionStatus:n.transitionStatus,expanded:B,limited:n.limited||!1,type:n.type,swiping:ue.swiping,swipeDirection:ue.swipeDirection},fe=RX(`div`,e,{ref:[t,ue.rootRef],state:de,stateAttributesMapping:J$,props:[le,o]});return(0,k.jsx)(R$.Provider,{value:ue,children:fe})}),n1=y.forwardRef(function(e,t){let{render:n,className:r,id:i,children:a,...o}=e,{toast:s,setDescriptionId:c}=z$(),l=a??s.description,u=!!l,d=qX(i);fX(()=>{if(u)return c(d),()=>{c(void 0)}},[u,d,c]);let f=RX(`p`,e,{ref:t,state:{type:s.type},props:{...o,id:d,children:l}});return u?f:null}),r1=y.forwardRef(function(e,t){let{render:n,className:r,id:i,children:a,...o}=e,{toast:s,setTitleId:c}=z$(),l=a??s.title,u=!!l,d=qX(i);fX(()=>{if(u)return c(d),()=>{c(void 0)}},[u,d,c]);let f=RX(`h2`,e,{ref:t,state:{type:s.type},props:{...o,id:d,children:l}});return u?f:null}),i1=y.forwardRef(function(e,t){let{render:n,className:r,disabled:i,nativeButton:a=!0,...o}=e,s=vQ(),{toast:c}=z$(),l=s.useState(`expanded`),[u,d]=y.useState(!1),{getButtonProps:f,buttonRef:p}=rZ({disabled:i,native:a}),m={type:c.type};return RX(`button`,e,{ref:[t,p],state:m,props:[{"aria-hidden":!l&&!u,onClick(){s.closeToast(c.id)},onFocus(){d(!0)},onBlur(){d(!1)}},o,f]})});function a1(){let e=y.useContext(_Q);if(!e)throw Error(vX(73));let t=e.useState(`toasts`);return y.useMemo(()=>({toasts:t,add:e.addToast,close:e.closeToast,update:e.updateToast,promise:e.promiseToast}),[t,e])}function o1(){let e=new Set;function t(t){e.forEach(e=>e(t))}return{" subscribe":function(t){return e.add(t),()=>{e.delete(t)}},add(e){let n=e.id||m$(`toast`);return t({action:`add`,options:{...e,id:n,transitionStatus:`starting`}}),n},close(e){t({action:`close`,options:{id:e}})},update(e,n){t({action:`update`,options:{...n,id:e}})},promise(e,n){let r=e;return t({action:`promise`,options:{...n,promise:e,setPromise(e){r=e}}}),r}}}var s1=5e3,c1=o1();function l1({toast:e}){return(0,k.jsxs)(t1,{toast:e,className:N_(`relative flex w-80 items-start gap-3 border bg-elevated p-4 shadow-lg`,`data-[swipe=move]:translate-x-[var(--toast-swipe-move-x)]`,`data-[ending-style]:translate-x-[var(--toast-swipe-end-x)]`,`data-[ending-style]:opacity-0`,`data-[starting-style]:translate-y-2 data-[starting-style]:opacity-0`,`transition-all duration-200`,e.type===`error`&&`border-danger/50`,e.type===`success`&&`border-approval/50`,(!e.type||e.type===`info`)&&`border-border`),children:[(0,k.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,k.jsx)(r1,{className:N_(`text-sm font-medium`,e.type===`error`&&`text-danger`,e.type===`success`&&`text-approval`,(!e.type||e.type===`info`)&&`text-primary`),children:e.title}),e.description&&(0,k.jsx)(n1,{className:`mt-1 text-xs text-muted line-clamp-2`,children:e.description})]}),(0,k.jsx)(i1,{className:`shrink-0 text-muted hover:text-primary transition-colors`,"aria-label":`Close`,children:(0,k.jsx)(ot,{width:W.default,height:W.default})})]})}function u1(){let{toasts:e}=a1();return(0,k.jsx)(k.Fragment,{children:e.map(e=>(0,k.jsx)(l1,{toast:e},e.id))})}function d1(){return(0,k.jsxs)(N$,{timeout:s1,toastManager:c1,children:[(0,k.jsx)(u1,{}),(0,k.jsx)(I$,{className:`fixed bottom-4 right-4 z-[100] flex flex-col gap-2`})]})}var f1=`Agentboard was updated. Reload this tab to reconnect. Your saved recovery drafts remain on this device.`,p1=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],m1=3e3,h1=3e4,g1=8e3,_1=15e3,v1=5e3,y1=2e4,b1=3e4,x1=1e4,S1=1500,C1=5e3,w1=750,T1=4,E1=5e3,D1=new class{constructor(){this.ws=null,this.listeners=new Set,this.statusListeners=new Set,this.status=`connecting`,this.error=null,this.reconnectAttempts=0,this.overloadFailures=0,this.overloadRetryAt=0,this.overloadProgressSince=null,this.reconnectTimer=null,this.connectTimer=null,this.manualClose=!1,this.protocolMismatch=!1,this.protocolReady=!1,this.lastTick=Date.now(),this.wakeCheckInterval=null,this.lifecycleStarted=!1,this.heartbeatTimer=null,this.pongTimer=null,this.lastForceReconnectTs=0,this.lastConnectTs=0,this.traceId=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,this.lastMessageAt=null,this.lastPongSeq=null,this.lastPingAt=null,this.lastMessageType=null,this.pingSeq=0,this.connectionEpoch=0,this.consecutiveFailures=0,this.stallCount=0,this.isResumeAttempt=!1,this.leakedSockets=new Set,this.verifyTimer=null,this.pageSuspended=!1,this.resumeClaim=0,this.attachId=0,this.attachedSessionId=null,this.readyAttachId=null,this.lastResumeAt=0,this.onVisibilityChange=()=>{X(`ws_visibility`,{state:document.visibilityState,...this.wsSnap()},`info`),document.visibilityState===`visible`?(this.pageSuspended=!1,this.resumeConnection(`visibilitychange`)):this.suspendConnection()},this.onPageShow=e=>{X(`ws_pageshow`,{persisted:e.persisted,...this.wsSnap()},`info`),e.persisted&&(this.pageSuspended=!1,this.resumeConnection(`pageshow`))},this.onPageHide=()=>{this.pageSuspended=!0,this.suspendConnection()}}wsSnap(){return{traceId:this.traceId,clientTimeMs:Date.now(),clientUptimeMs:Math.round(performance.now()),epoch:this.connectionEpoch,pingSeq:this.pingSeq,lastPongSeq:this.lastPongSeq,lastPingAgeMs:this.lastPingAt===null?null:Date.now()-this.lastPingAt,lastMessageType:this.lastMessageType,lastMessageAgeMs:this.lastMessageAt===null?null:Date.now()-this.lastMessageAt,visibility:typeof document>`u`?void 0:document.visibilityState,status:this.status,ws:this.ws?p1[this.ws.readyState]:null,attempt:this.reconnectAttempts,failures:this.consecutiveFailures,stalls:this.stallCount,overloads:this.overloadFailures,overloadDelayMs:Math.max(0,this.overloadRetryAt-Date.now()),leaked:this.leakedSockets.size,online:typeof navigator<`u`?navigator.onLine:void 0,verifying:this.verifyTimer!==null,buffered:this.ws?this.ws.bufferedAmount:void 0}}connect(){if(this.protocolMismatch||this.isHidden()||this.waitForOverloadCooldown())return;if(this.ws){let e=this.ws.readyState===WebSocket.OPEN;if(e&&this.status===`connected`){X(`ws_connect_skip`,{reason:`already_open`,...this.wsSnap()});return}let t=Date.now();if(this.ws.readyState===WebSocket.CONNECTING&&t-this.lastConnectTs<200){X(`ws_connect_skip`,{reason:`already_connecting`,...this.wsSnap()});return}X(`ws_connect_destroy_zombie`,{reason:e?`open_desynced`:`not_open`,...this.wsSnap()}),this.destroySocket()}this.manualClose=!1,this.clearConnectTimer(),this.setStatus(`connecting`);let e=`${window.location.protocol===`https:`?`wss`:`ws`}://${window.location.host}/ws?catalog=2`;X(`ws_connect`,{url:e,resume:this.isResumeAttempt,...this.wsSnap()},`info`);let t=new WebSocket(e),n=!1;this.ws=t,this.protocolReady=!1,this.lastMessageAt=null,this.lastPongSeq=null,this.lastPingAt=null,this.lastMessageType=null,this.lastConnectTs=Date.now(),this.leakedSockets.add(t);let r=this.isResumeAttempt?g1:m1;this.isResumeAttempt=!1,this.connectTimer=window.setTimeout(()=>{this.ws===t&&(this.connectTimer=null,t.readyState===WebSocket.OPEN&&this.status===`connected`||(X(`ws_connect_timeout`,{wsState:p1[t.readyState],managerStatus:this.status,timeoutMs:r,...this.wsSnap()},`info`),this.consecutiveFailures+=1,this.destroySocket(),this.scheduleReconnect()))},r),t.onopen=()=>{if(this.ws!==t){X(`ws_onopen_stale`,this.wsSnap(),`info`);return}X(`ws_onopen`,this.wsSnap(),`info`),this.reconnectAttempts=0,this.consecutiveFailures=0,this.stallCount=0,this.connectionEpoch+=1,this.leakedSockets.delete(t),this.clearConnectTimer(),this.connectTimer=window.setTimeout(()=>{this.ws!==t||this.protocolReady||(this.connectTimer=null,this.consecutiveFailures+=1,this.destroySocket(),this.scheduleReconnect(),this.setStatus(`reconnecting`,`Server handshake timed out. Retrying…`))},h1)},t.onmessage=e=>{if(this.ws===t){this.lastMessageAt=Date.now(),this.lastMessageType=`unparsed`;try{let r=e.data,i=performance.now(),a=JSON.parse(r);if(this.lastMessageType=a.type,!this.protocolReady&&a.type!==`server-config`){this.requireCatalogReload();return}if(a.type===`server-config`){if(a.catalogVersion!==2){this.requireCatalogReload();return}if(!this.protocolReady){if(this.protocolReady=!0,this.clearConnectTimer(),!this.send({type:`terminal-resume`,token:this.resumeToken,claim:++this.resumeClaim}))return;this.lastTick=Date.now(),this.setStatus(this.isHidden()?`reconnecting`:`connected`),this.isHidden()||this.startHeartbeat()}}let o=performance.now()-i,s=a;if(s._parseMs=Math.round(o),s._rawLength=r.length,s._connectionEpoch=this.connectionEpoch,a.type===`terminal-lease`){this.resumeToken=a.token;return}if(a.type===`terminal-overload`){n=!0,this.stopHeartbeat(),this.cancelVerify(),this.setStatus(`reconnecting`),t.close();return}if(a.type===`pong`){if(this.lastPongSeq=a.seq??null,X(`ws_pong_received`,{receivedSeq:a.seq,matchesPendingPing:a.seq===this.pingSeq,...this.wsSnap()}),a.seq===this.pingSeq){if(this.clearPongTimer(),this.verifyTimer!==null){if(this.cancelVerify(),X(`ws_verify_ok`,this.wsSnap(),`info`),this.isHidden())return;this.connectionEpoch+=1,this.setStatus(`connected`),this.startHeartbeat(C1)}this.recordOverloadRecovery()}return}if(a.type===`terminal-output`||a.type===`terminal-ready`||a.type===`tmux-copy-mode-status`||a.type===`clipboard-offer`||a.type===`terminal-error`){if(!(this.status===`connected`&&!this.isHidden()&&(!a.sessionId||a.sessionId===this.attachedSessionId)&&(a.attachId===this.attachId||a.attachId===void 0&&!this.resumeToken))){a.type===`terminal-output`&&a.outputSeq!==void 0&&this.send({type:`terminal-ack`,outputSeq:a.outputSeq});return}a.type===`terminal-ready`&&(this.readyAttachId=this.attachId,this.recordOverloadRecovery())}this.listeners.forEach(e=>e(a))}catch{}}},t.onerror=()=>{this.ws===t&&(X(`ws_onerror`,this.wsSnap(),`info`),this.clearConnectTimer())},t.onclose=e=>{if(this.leakedSockets.delete(t),this.ws!==t){X(`ws_onclose_stale`,{code:e.code,...this.wsSnap()},`info`);return}X(`ws_onclose`,{code:e.code,reason:e.reason,clean:e.wasClean,...this.wsSnap()},`info`),this.clearConnectTimer(),this.cancelVerify(),this.consecutiveFailures+=1,this.overloadProgressSince=null,(n||e.code===1013)&&(this.overloadFailures=Math.min(this.overloadFailures+1,6),this.overloadRetryAt=Date.now()+Math.min(1e3*2**(this.overloadFailures-1),3e4)),this.ws=null,this.manualClose?this.setStatus(`disconnected`):this.scheduleReconnect()}}requireCatalogReload(){this.protocolMismatch=!0,this.disconnect(),this.setStatus(`disconnected`,f1),this.listeners.forEach(e=>e({type:`error`,message:f1}))}disconnect(){this.overloadFailures=0,this.overloadRetryAt=0,this.overloadProgressSince=null,this.manualClose=!0,this.clearConnectTimer(),this.cancelVerify(),this.reconnectTimer&&=(window.clearTimeout(this.reconnectTimer),null),this.destroySocket(),this.setStatus(`disconnected`)}startLifecycleListeners(){this.lifecycleStarted||typeof document>`u`||typeof window>`u`||(this.lifecycleStarted=!0,document.addEventListener(`visibilitychange`,this.onVisibilityChange),window.addEventListener(`pageshow`,this.onPageShow),window.addEventListener(`pagehide`,this.onPageHide),this.lastTick=Date.now(),this.wakeCheckInterval=window.setInterval(()=>{let e=Date.now(),t=e-this.lastTick;this.isHidden()||(t>_1&&(X(`ws_time_jump`,{gapMs:t,...this.wsSnap()},`info`),this.resumeConnection(`time_jump`)),this.lastTick=e)},v1))}stopLifecycleListeners(){this.lifecycleStarted&&(this.lifecycleStarted=!1,document.removeEventListener(`visibilitychange`,this.onVisibilityChange),window.removeEventListener(`pageshow`,this.onPageShow),window.removeEventListener(`pagehide`,this.onPageHide),this.wakeCheckInterval!==null&&(window.clearInterval(this.wakeCheckInterval),this.wakeCheckInterval=null))}send(e){if(this.protocolMismatch||!this.protocolReady||this.ws?.readyState!==WebSocket.OPEN)return!1;if(e.type===`terminal-ack`&&e.connectionEpoch!==void 0){if(e.connectionEpoch!==this.connectionEpoch)return!1;e={type:`terminal-ack`,outputSeq:e.outputSeq}}let t=e.type.startsWith(`terminal-`)||e.type.startsWith(`tmux-`),n=e.type===`terminal-resume`||e.type===`terminal-ack`;if(t&&!n){if(e.type!==`terminal-detach`){if(this.isHidden())return!1;if(Date.now()-this.lastTick>_1)return this.resumeConnection(`input_time_jump`),!1;if(this.status!==`connected`)return!1}if(e.type===`terminal-attach`)this.attachId+=1,this.attachedSessionId=e.sessionId,this.readyAttachId=null;else if(e.type===`terminal-input`||e.type===`terminal-paste`){if(this.readyAttachId!==this.attachId||e.sessionId!==this.attachedSessionId)return!1}else e.type===`terminal-detach`&&(this.readyAttachId=null,this.attachedSessionId=null);e={...e,attachId:this.attachId}}try{return this.ws.send(JSON.stringify(e)),e.type===`ping`&&(this.lastPingAt=Date.now(),X(`ws_ping_sent`,this.wsSnap())),e.type===`terminal-ack`&&this.recordOverloadRecovery(),!0}catch(t){return X(`ws_send_error`,{messageType:e.type,error:t instanceof Error?t.message:String(t),...this.wsSnap()},`info`),this.destroySocket(),this.scheduleReconnect(),!1}}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}subscribeStatus(e){return this.statusListeners.add(e),e(this.status,this.error,this.connectionEpoch),()=>this.statusListeners.delete(e)}getStatus(){return this.status}getConnectionEpoch(){return this.connectionEpoch}suspendConnection(){this.attachedSessionId&&this.send({type:`terminal-detach`,sessionId:this.attachedSessionId,attachId:this.attachId}),this.stopHeartbeat(),this.cancelVerify(),this.clearConnectTimer(),this.reconnectTimer!==null&&window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.manualClose||this.setStatus(`reconnecting`)}resumeConnection(e){if(this.manualClose||this.isHidden())return;let t=Date.now()-this.lastTick;this.lastTick=Date.now(),X(`ws_resume`,{trigger:e,gapMs:t,...this.wsSnap()},`info`),!this.waitForOverloadCooldown()&&this.verifyTimer===null&&(Date.now()-this.lastResumeAt<200&&this.reconnectTimer!==null||this.ws?.readyState===WebSocket.CONNECTING&&this.connectTimer!==null&&t<_1||(this.lastResumeAt=Date.now(),this.reconnectTimer!==null&&window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.ws?.readyState===WebSocket.OPEN?this.verifyConnection():this.forceReconnect(e,!0)))}verifyConnection(){this.cancelVerify(),this.stopHeartbeat(),this.setStatus(`reconnecting`),this.pingSeq+=1;let e=this.pingSeq,t=this.ws;if(X(`ws_verify`,{seq:e,...this.wsSnap()},`info`),!this.send({type:`ping`,seq:e})){X(`ws_verify_send_fail`,this.wsSnap(),`info`),this.forceReconnect(`verify_send_fail`,!0);return}this.verifyTimer=window.setTimeout(()=>{this.verifyTimer=null,this.ws===t&&(X(`ws_verify_timeout`,this.wsSnap(),`info`),this.forceReconnect(`verify_timeout`,!0))},S1)}cancelVerify(){this.verifyTimer!==null&&(window.clearTimeout(this.verifyTimer),this.verifyTimer=null)}forceReconnect(e=`unknown`,t=!1){if(this.protocolMismatch)return;if(this.manualClose){X(`ws_force_skip`,{trigger:e,reason:`manual_close`});return}if(this.waitForOverloadCooldown())return;let n=Date.now(),r=t?200:500;if(n-this.lastForceReconnectTs<r){X(`ws_force_skip`,{trigger:e,reason:`debounce`,force:t});return}if(!t&&this.ws?.readyState===WebSocket.OPEN&&this.status===`connected`){X(`ws_force_skip`,{trigger:e,reason:`already_connected`});return}this.lastForceReconnectTs=n,X(`ws_force_reconnect`,{trigger:e,force:t,...this.wsSnap()},`info`),this.reconnectAttempts=0,this.consecutiveFailures=0,this.stallCount=0,this.reconnectTimer&&=(window.clearTimeout(this.reconnectTimer),null),this.destroySocket(),t?(this.purgeLeakedSockets(),this.isResumeAttempt=!0,this.setStatus(`reconnecting`),this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},w1)):this.connect()}startHeartbeat(e){if(this.stopHeartbeat(),this.isHidden())return;let t=()=>{this.isHidden()||this.ws?.readyState===WebSocket.OPEN&&(this.pingSeq+=1,this.send({type:`ping`,seq:this.pingSeq})&&(this.clearPongTimer(),this.pongTimer=window.setTimeout(()=>{this.pongTimer=null,X(`ws_pong_timeout`,this.wsSnap(),`info`),this.destroySocket(),this.scheduleReconnect()},x1)))};e!==void 0&&e<y1?this.heartbeatTimer=window.setTimeout(()=>{t(),this.heartbeatTimer=window.setInterval(t,y1)},e):this.heartbeatTimer=window.setInterval(t,y1)}stopHeartbeat(){this.heartbeatTimer!==null&&(window.clearTimeout(this.heartbeatTimer),this.heartbeatTimer=null),this.clearPongTimer()}clearPongTimer(){this.pongTimer!==null&&(window.clearTimeout(this.pongTimer),this.pongTimer=null)}setStatus(e,t=null){this.protocolMismatch&&(e=`disconnected`,t=f1),e!==`connected`&&(this.readyAttachId=null,this.overloadProgressSince=null),this.status=e,this.error=t,this.statusListeners.forEach(n=>n(e,t,this.connectionEpoch))}recordOverloadRecovery(){if(this.overloadFailures===0||this.status!==`connected`||this.isHidden()||this.readyAttachId!==this.attachId)return;let e=Date.now();e-this.lastTick>_1&&(this.overloadProgressSince=null),this.overloadProgressSince??=e,e-this.overloadProgressSince>=b1&&(this.overloadFailures=0,this.overloadRetryAt=0,this.overloadProgressSince=null)}waitForOverloadCooldown(){let e=this.overloadRetryAt-Date.now();return e<=0?!1:(this.reconnectTimer!==null&&window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.setStatus(`reconnecting`),this.isHidden()||(this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},e)),!0)}scheduleReconnect(){if(this.protocolMismatch)return;if(this.stopHeartbeat(),this.isHidden()){X(`ws_schedule_skip`,{reason:`hidden`,...this.wsSnap()}),this.setStatus(`reconnecting`);return}if(this.waitForOverloadCooldown())return;if(this.consecutiveFailures>=T1){X(`ws_stall_detected`,this.wsSnap(),`info`),this.purgeLeakedSockets();let e=Math.min(E1*2**this.stallCount,3e4);this.stallCount+=1,this.consecutiveFailures=0,this.reconnectAttempts=0,this.isResumeAttempt=!0,this.setStatus(`reconnecting`),this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},e);return}this.reconnectAttempts+=1;let e=Math.min(1e3*2**(this.reconnectAttempts-1),3e4);X(`ws_schedule_reconnect`,{delay:e,...this.wsSnap()}),this.setStatus(`reconnecting`),this.reconnectTimer&&window.clearTimeout(this.reconnectTimer),this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},e)}isHidden(){return this.pageSuspended||typeof document<`u`&&document.visibilityState===`hidden`}clearConnectTimer(){this.connectTimer&&=(window.clearTimeout(this.connectTimer),null)}destroySocket(){if(this.clearConnectTimer(),this.stopHeartbeat(),this.cancelVerify(),!this.ws)return;let e=this.ws;this.ws=null,this.leakedSockets.add(e),e.onopen=null,e.onmessage=null,e.onerror=null,e.onclose=()=>{this.leakedSockets.delete(e),e.onclose=null};try{e.close()}catch{}e.readyState===WebSocket.CLOSED&&(this.leakedSockets.delete(e),e.onclose=null)}purgeLeakedSockets(){if(this.leakedSockets.size!==0){X(`ws_purge_leaked`,{count:this.leakedSockets.size},`info`);for(let e of this.leakedSockets)try{e.onopen=null,e.onmessage=null,e.onerror=null,e.onclose=null,e.close()}catch{}this.leakedSockets.clear()}}};function O1(){let e=Gh(e=>e.setConnectionState);return(0,y.useEffect)(()=>{D1.connect(),D1.startLifecycleListeners();let t=D1.subscribeStatus((t,n,r)=>{e(t,n,r)});return()=>{t(),D1.stopLifecycleListeners()}},[e]),{sendMessage:(0,y.useMemo)(()=>e=>D1.send(e),[]),subscribe:(0,y.useMemo)(()=>D1.subscribe.bind(D1),[]),getConnectionEpoch:(0,y.useMemo)(()=>()=>D1.getConnectionEpoch(),[])}}var k1=100;function A1({viewport:e,win:t,doc:n}){if(!e)return!1;let r=Math.max(0,e.offsetTop||0),i=Math.max(0,e.offsetLeft||0),a=t.innerHeight-(e.height+r),o=Math.max(0,a),s=Math.max(0,e.height||0),c=Math.max(0,e.width||0);return n.documentElement.style.setProperty(`--keyboard-inset`,`${o}px`),n.documentElement.style.setProperty(`--viewport-offset-top`,`${r}px`),n.documentElement.style.setProperty(`--viewport-offset-left`,`${i}px`),n.documentElement.style.setProperty(`--visual-viewport-height`,`${s}px`),n.documentElement.style.setProperty(`--visual-viewport-width`,`${c}px`),o>k1?n.documentElement.classList.add(`keyboard-visible`):n.documentElement.classList.remove(`keyboard-visible`),!0}function j1(e){e.documentElement.style.removeProperty(`--keyboard-inset`),e.documentElement.style.removeProperty(`--viewport-offset-top`),e.documentElement.style.removeProperty(`--viewport-offset-left`),e.documentElement.style.removeProperty(`--visual-viewport-height`),e.documentElement.style.removeProperty(`--visual-viewport-width`),e.documentElement.classList.remove(`keyboard-visible`)}function M1(){(0,y.useEffect)(()=>{let e=window.visualViewport;if(!e)return;let t=null,n=null,r=()=>{let e=document.activeElement;if(!e)return!1;let t=e.tagName?.toLowerCase();return t===`input`||t===`textarea`?!0:!!e.isContentEditable},i=()=>{A1({viewport:e,win:window,doc:document})},a=()=>{if(typeof window.requestAnimationFrame!=`function`){i();return}t!==null&&window.cancelAnimationFrame(t);let e=performance.now(),n=()=>{i(),t=performance.now()-e<1500?window.requestAnimationFrame(n):null};t=window.requestAnimationFrame(n)},o=()=>{if(!r()){c();return}i()},s=()=>{n!==null||typeof window.setInterval!=`function`||(n=window.setInterval(o,250),o())},c=()=>{n===null||typeof window.clearInterval!=`function`||(window.clearInterval(n),n=null)},l=()=>{r()?(a(),s(),i()):c()},u=()=>{l()},d=()=>{l()},f=()=>{a()};return i(),l(),e.addEventListener(`resize`,i),e.addEventListener(`scroll`,i),typeof window.addEventListener==`function`&&(window.addEventListener(`resize`,i),window.addEventListener(`orientationchange`,f)),typeof document.addEventListener==`function`&&(document.addEventListener(`focusin`,u),document.addEventListener(`focusout`,d),document.addEventListener(`focus`,u,!0),document.addEventListener(`blur`,d,!0)),()=>{e.removeEventListener(`resize`,i),e.removeEventListener(`scroll`,i),typeof window.removeEventListener==`function`&&(window.removeEventListener(`resize`,i),window.removeEventListener(`orientationchange`,f)),typeof document.removeEventListener==`function`&&(document.removeEventListener(`focusin`,u),document.removeEventListener(`focusout`,d),document.removeEventListener(`focus`,u,!0),document.removeEventListener(`blur`,d,!0)),t!==null&&typeof window.cancelAnimationFrame==`function`&&window.cancelAnimationFrame(t),c(),j1(document)}},[])}var N1=[`theme`,`commandPresets`,`defaultPresetId`,`defaultProjectDir`,`lastProjectPath`,`recentPaths`,`sessionSortMode`,`sessionSortDirection`,`manualSessionOrder`,`sidebarAnchor`,`projectFilters`,`hostFilters`,`showProjectName`,`showLastUserMessage`,`showSessionIdPrefix`,`soundOnPermission`,`soundOnIdle`],P1=[`claude`,`claude-rp`,`codex`,`pi`,`devin`,`grok`,`omp`];function F1(e){return typeof e==`boolean`}function I1(e,t){return Array.isArray(e)&&e.length<=t&&e.every(e=>typeof e==`string`)}function L1(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>=1&&t.id.length<=128&&typeof t.label==`string`&&t.label.trim().length>=1&&t.label.length<=64&&typeof t.command==`string`&&t.command.trim().length>=1&&t.command.length<=1024&&typeof t.isBuiltIn==`boolean`&&(t.agentType===void 0||P1.includes(t.agentType))}var R1={theme:e=>e===`dark`||e===`light`||e===`system`,commandPresets:e=>Array.isArray(e)&&e.length<=50&&e.every(L1),defaultPresetId:e=>typeof e==`string`&&e.length<=128,defaultProjectDir:e=>typeof e==`string`&&e.length<=4096,lastProjectPath:e=>e===null||typeof e==`string`&&e.length<=4096,recentPaths:e=>I1(e,50),sessionSortMode:e=>e===`status`||e===`created`||e===`manual`,sessionSortDirection:e=>e===`asc`||e===`desc`,manualSessionOrder:e=>I1(e,1e3),sidebarAnchor:e=>e===`top`||e===`bottom`,projectFilters:e=>I1(e,500),hostFilters:e=>I1(e,500),showProjectName:F1,showLastUserMessage:F1,showSessionIdPrefix:F1,soundOnPermission:F1,soundOnIdle:F1};function z1(e){return N1.includes(e)}function B1(e,t){return R1[e](t)}var V1=`agentboard-theme`,H1=`agentboard-settings`,U1=200,W1=new Map,G1=new Map,K1=new Set;function q1(e){return G1.has(e)||K1.has(e)}var J1=null,Y1=!1;function X1(e){return e===`theme`?hK.getState().theme:U.getState()[e]}function Z1(e){let t=e===`theme`?V1:H1;return w.getItem(t)!==null}function Q1(){if(J1=null,G1.size===0)return;let e={},t=new Map,n=new Map;for(let[r,i]of G1)e[r]=JSON.parse(i),t.set(r,i),n.set(r,W1.get(r)),W1.set(r,i),K1.add(r);G1.clear();let r=()=>{for(let[e,r]of t){if(W1.get(e)!==r)continue;let t=n.get(e);t===void 0?W1.delete(e):W1.set(e,t)}},i=e=>{for(let n of t.keys()){if(K1.delete(n),!e||G1.has(n))continue;let t=W1.get(n);t!==void 0&&t!==JSON.stringify(X1(n))&&$1(n,JSON.parse(t))}},a=!1;try{fetch(`/api/settings/synced`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({settings:e})}).then(e=>{a=e.ok,e.ok||(X(`synced_settings_push_rejected`,{status:e.status},`warn`),r())}).catch(e=>{X(`synced_settings_push_failed`,{message:e instanceof Error?e.message:String(e)},`warn`),r()}).finally(()=>i(a))}catch(e){r(),i(!1),X(`synced_settings_push_failed`,{message:e instanceof Error?e.message:String(e)},`warn`)}}function $1(e,t){e===`theme`?hK.setState({theme:t}):U.setState({[e]:t})}function e0(e,t){if(W1.get(e)===JSON.stringify(t)){G1.delete(e);return}t0(e,t)}function t0(e,t){G1.set(e,JSON.stringify(t)),!J1&&(J1=setTimeout(Q1,U1))}function n0(e){let t=new Map;for(let e of N1)t.set(e,Z1(e));let n={},r;for(let[t,i]of Object.entries(e))!z1(t)||!B1(t,i)||(W1.set(t,JSON.stringify(i)),!q1(t)&&(t===`theme`?r=i:n[t]=i));r!==void 0&&hK.setState({theme:r}),Object.keys(n).length>0&&U.setState(n);for(let n of N1){if(n in e||!t.get(n))continue;let r=X1(n);B1(n,r)&&W1.get(n)!==JSON.stringify(r)&&t0(n,r)}}function r0(){if(Y1)return()=>{};Y1=!0;let e=U.subscribe((e,t)=>{let n=e,r=t;for(let e of N1)e!==`theme`&&n[e]!==r[e]&&e0(e,n[e])}),t=hK.subscribe((e,t)=>{e.theme!==t.theme&&e0(`theme`,e.theme)});return()=>{e(),t(),Y1=!1,J1&&=(clearTimeout(J1),null),G1.clear(),K1.clear(),W1.clear()}}function i0(e,t,n){let r=e;return t.length>0&&(r=r.filter(e=>t.includes(e.projectPath))),n.length>0&&(r=r.filter(e=>n.includes(e.host??``))),r}function a0(){let[e,t]=(0,y.useState)(!1),[n,r]=(0,y.useState)(void 0),[i,a]=(0,y.useState)(void 0),[o,s]=(0,y.useState)(void 0),[c,l]=(0,y.useState)(!1),[u,d]=(0,y.useState)(!1),[f,p]=(0,y.useState)(null),[m,h]=(0,y.useState)(null),[g,_]=(0,y.useState)(null),v=Gh(e=>e.sessions),b=Gh(e=>e.agentSessions),S=Gh(e=>e.agentSessionsEpoch),C=Gh(e=>e.selectedSessionId),w=Gh(e=>e.selectedHibernatingSessionId),T=Gh(e=>e.setSessions),E=Gh(e=>e.setAgentSessions),D=Gh(e=>e.setActiveAgentSessions),O=Gh(e=>e.setHostStatuses),A=Gh(e=>e.updateSession),j=Gh(e=>e.setSelectedSessionId),M=Gh(e=>e.setSelectedHibernatingSessionId),P=Gh(e=>e.hasLoaded),ee=Gh(e=>e.connectionStatus),I=Gh(e=>e.connectionError),te=Gh(e=>e.clearExitingSession),L=Gh(e=>e.markSessionExiting),R=Gh(e=>e.setRemoteAllowControl),z=Gh(e=>e.setRemoteAllowAttach),ne=Gh(e=>e.setHostLabel),B=Gh(e=>e.setPreferWindowName),re=Gh(e=>e.hostStatuses),V=Gh(e=>e.remoteAllowControl),ie=Gh(e=>e.hostLabel),H=gK(),ae=Ot(),oe=U(e=>e.defaultProjectDir),se=U(e=>e.commandPresets),ce=U(e=>e.defaultPresetId),le=U(e=>e.lastProjectPath),ue=U(e=>e.setLastProjectPath),de=U(e=>e.addRecentPath),fe=U(e=>e.shortcutModifier),pe=U(e=>e.sidebarWidth),me=U(e=>e.sidebarAnchor),he=U(e=>e.setSidebarWidth),ge=U(e=>e.projectFilters),_e=U(e=>e.hostFilters),ve=U(e=>e.soundOnPermission),ye=U(e=>e.soundOnIdle),be=Gh(e=>e.connectionEpoch),{sendMessage:xe,subscribe:Se,getConnectionEpoch:Ce}=O1();(0,y.useEffect)(()=>r0(),[]),M1(),(0,y.useEffect)(()=>{if(typeof document>`u`||!ve&&!ye)return;let e=!1,t=()=>{e&&!GY()||(e=!0,qY())};return document.addEventListener(`click`,t,{passive:!0}),document.addEventListener(`keydown`,t,{passive:!0}),document.addEventListener(`touchstart`,t,{passive:!0}),()=>{document.removeEventListener(`click`,t),document.removeEventListener(`keydown`,t),document.removeEventListener(`touchstart`,t)}},[ve,ye]);let we=(0,y.useRef)(!1),Te=(0,y.useCallback)(e=>{e.preventDefault(),we.current=!0,document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},[]);(0,y.useEffect)(()=>{if(typeof document>`u`||typeof document.addEventListener!=`function`)return;let e=e=>{if(!we.current)return;let t=e.clientX;he(Math.max(180,Math.min(400,t)))},t=()=>{we.current&&(we.current=!1,document.body.style.cursor=``,document.body.style.userSelect=``)};return document.addEventListener(`mousemove`,e),document.addEventListener(`mouseup`,t),()=>{document.removeEventListener(`mousemove`,e),document.removeEventListener(`mouseup`,t)}},[he]),(0,y.useEffect)(()=>{let e=Se(e=>{if(e.type!==`terminal-output`){if(e.type===`sessions`){let t=Gh.getState().sessions,{soundOnPermission:n,soundOnIdle:r}=U.getState();if(n||r)for(let i of e.sessions){let e=t.find(e=>e.id===i.id);e&&e.status!==i.status&&(e.status!==`permission`&&i.status===`permission`&&n&&XY(),e.status===`working`&&i.status===`waiting`&&r&&ZY())}if(Ve.current.size>0){let e=Ce();for(let[t,n]of Ve.current)n.epoch!==e&&Ve.current.delete(t)}let i=Ve.current.size>0?e.sessions.filter(e=>!Ve.current.has(e.id)):e.sessions,{selectedSessionId:a,selectedHibernatingSessionId:o}=Gh.getState(),s=a!==null&&o===null&&!i.some(e=>e.id===a)?t.find(e=>e.id===a)?.agentSessionId?.trim()??null:null;s&&(Le.current=s),T(i);let c=Re.current,{selectedSessionId:l,selectedHibernatingSessionId:u}=Gh.getState(),{projectFilters:d,hostFilters:f}=U.getState();if(c&&l===null&&u===null){let e=i.find(e=>!(e.agentSessionId?.trim()!==c||d.length>0&&!d.includes(e.projectPath)||f.length>0&&!f.includes(e.host??``)));e&&(Re.current=null,j(e.id))}}if(e.type===`host-status`&&O(e.hosts),e.type===`server-config`&&(R(e.remoteAllowControl),z(e.remoteAllowAttach),ne(e.hostLabel),B(e.preferWindowName),e.clientLogLevel&&xk(e.clientLogLevel)),e.type===`synced-settings`&&n0(e.settings),e.type===`session-update`){let t=Gh.getState().sessions.find(t=>t.id===e.session.id)?.status,n=e.session.status;if(A(e.session),t){let{soundOnPermission:e,soundOnIdle:r}=U.getState();t!==`permission`&&n===`permission`&&e&&XY(),t===`working`&&n===`waiting`&&r&&ZY()}}if(e.type===`session-created`){let t=Gh.getState().sessions;t.some(t=>t.id===e.session.id)||T([e.session,...t]),j(e.session.id),de(e.session.projectPath);let{projectFilters:n,setProjectFilters:r}=U.getState();n.length>0&&!n.includes(e.session.projectPath)&&r([...n,e.session.projectPath])}if(e.type===`session-removed`){PG(e.sessionId);let t=Gh.getState().sessions,n=t.filter(t=>t.id!==e.sessionId);n.length!==t.length&&T(n)}if(e.type===`agent-sessions`){let t=Array.isArray(e.active)?e.active:[],n=Array.isArray(e.hibernating)?e.hibernating:[],r=Array.isArray(e.history)?e.history:[],{selectedHibernatingSessionId:i}=Gh.getState(),a=Le.current;i&&!n.some(e=>e.sessionId===i)&&(Re.current=i),E(t,n,r),_(e=>e&&n.some(t=>t.sessionId===e.sessionId)?null:e),a&&n.some(e=>e.sessionId===a)?(Le.current=null,M(a)):a&&(Le.current=null)}if(e.type===`agent-sessions-active`&&D(Array.isArray(e.active)?e.active:[]),e.type===`session-orphaned`&&!e.supersededBy){let t=Gh.getState().sessions,n=t.filter(t=>t.agentSessionId?.trim()!==e.session.sessionId);n.length!==t.length&&T(n)}if(e.type===`session-activated`){let t=Gh.getState().sessions.find(t=>t.tmuxWindow===e.window);t&&A({...t,agentSessionId:e.session.sessionId,agentSessionName:e.session.displayName,mediaSummary:e.session.mediaSummary,media:void 0,logFilePath:e.session.logFilePath,isHibernating:e.session.isHibernating,lastUserMessage:e.session.lastUserMessage??t.lastUserMessage})}if(e.type===`session-wake-result`)if(e.ok&&e.session){_(t=>t?.sessionId===e.sessionId?null:t);let t=Gh.getState().sessions;t.some(t=>t.id===e.session.id)||T([e.session,...t]),j(e.session.id)}else e.ok||(p(`${e.error?.code}: ${e.error?.message}`),window.setTimeout(()=>p(null),6e3));if(e.type===`session-hibernate-result`&&(e.ok?(e.session&&_(e.session),M(e.sessionId)):(p(e.error??`Failed to hibernate session`),window.setTimeout(()=>p(null),6e3))),e.type===`terminal-error`&&(!e.sessionId||e.sessionId===C)&&(p(`${e.code}: ${e.message}`),window.setTimeout(()=>p(null),6e3)),e.type===`terminal-ready`&&e.sessionId===C&&p(null),e.type===`error`&&(p(e.message),window.setTimeout(()=>p(null),6e3)),e.type===`kill-failed`){let t=Ve.current.get(e.sessionId);if(t){let n=Gh.getState().sessions;n.some(t=>t.id===e.sessionId)||T([t.session,...n]),t.wasSelected&&j(e.sessionId),Ve.current.delete(e.sessionId)}te(e.sessionId),p(e.message),window.setTimeout(()=>p(null),6e3)}e.type===`session-move-to-history-result`&&!e.ok&&e.error&&(p(e.error),window.setTimeout(()=>p(null),6e3))}});return()=>{e()}},[C,w,de,te,xe,j,M,_,T,E,D,O,R,z,ne,B,Se,A]);let Ee=(0,y.useMemo)(()=>v.find(e=>e.id===C)||null,[C,v]),De=b.hibernating??[],Oe=b.history??[],ke=(0,y.useMemo)(()=>i0(De,ge,_e),[De,ge,_e]),Ae=(0,y.useMemo)(()=>ke.find(e=>e.sessionId===w)||(g?.sessionId===w?g:null),[ke,g,w]);(0,y.useEffect)(()=>{Ee?.projectPath&&!Ee.remote&&ue(Ee.projectPath)},[Ee?.projectPath,Ee?.remote,ue]);let je=U(e=>e.sessionSortMode),Me=U(e=>e.sessionSortDirection),Ne=U(e=>e.manualSessionOrder),Pe=(0,y.useMemo)(()=>Oh(v,{mode:je,direction:Me,manualOrder:Ne}),[v,je,Me,Ne]),Fe=(0,y.useMemo)(()=>{let e=Pe;return ge.length>0&&(e=e.filter(e=>ge.includes(e.projectPath))),_e.length>0&&(e=e.filter(e=>_e.includes(e.host??``))),e},[Pe,ge,_e]),Ie=(0,y.useRef)(w),Le=(0,y.useRef)(null),Re=(0,y.useRef)(null),ze=(0,y.useRef)(be),Be=(0,y.useCallback)(()=>Fe.length>0?(j(Fe[0].id),!0):ke.length>0?(M(ke[0].sessionId),!0):!1,[Fe,ke,j,M]);(0,y.useEffect)(()=>{let e=Ie.current;e&&w===null&&!De.some(t=>t.sessionId===e)?Re.current=e:w!==null&&(Re.current=null),Ie.current=w},[De,w]),(0,y.useEffect)(()=>{g&&w!==g.sessionId&&_(null)},[g,w]),(0,y.useEffect)(()=>{ze.current!==be&&(ze.current=be,Le.current=null,Re.current=null,_(null))},[be]),(0,y.useEffect)(()=>{P&&(w||C&&(Fe.some(e=>e.id===C)||Be()||j(null)))},[P,C,w,Be,j]),(0,y.useEffect)(()=>{if(!w||g?.sessionId===w||S!==be||ke.some(e=>e.sessionId===w))return;let e=Fe.find(e=>e.agentSessionId?.trim()===w);if(e){j(e.id);return}Be()||M(null)},[ke,Fe,S,g,w,Be,j,M,be]),(0,y.useEffect)(()=>{let e=Re.current;if(!e)return;if(w!==null){Re.current=null;return}let t=Fe.find(t=>t.agentSessionId?.trim()===e);if(t){Re.current=null,j(t.id);return}if(C!==null){Re.current=null;return}Be()&&(Re.current=null)},[Fe,C,w,Be,j]),(0,y.useEffect)(()=>{window.matchMedia(`(max-width: 767px)`).matches&&P&&C===null&&w===null&&(Fe.length>0||ke.length>0)&&Be()},[ke.length,Fe.length,P,Be,C,w]);let Ve=(0,y.useRef)(new Map),He=(0,y.useCallback)((e,t=`unknown`)=>{PG(e);let{sessions:n,selectedSessionId:r}=Gh.getState(),i=n.find(t=>t.id===e);i&&Ve.current.set(e,{session:i,wasSelected:r===e,epoch:Ce()}),(0,uf.flushSync)(()=>{L(e),T(n.filter(t=>t.id!==e))}),xe({type:`session-kill`,sessionId:e,source:t})},[L,T,xe]);(0,y.useEffect)(()=>{let n=Mt(fe),r=r=>{if(r.defaultPrevented)return;let i=r.code,a=Ft(r,n);if(a&&(i===`BracketLeft`||i===`BracketRight`)){r.preventDefault();let e=me===`bottom`&&!window.matchMedia(`(max-width: 767px)`).matches,t=(i===`BracketLeft`?-1:1)*(e?-1:1),n=Fe;if(n.length===0){let e=ke;if(e.length===0)return;let n=e.findIndex(e=>e.sessionId===w);if(n===-1){M(e[0].sessionId);return}M(e[(n+t+e.length)%e.length].sessionId);return}let a=n.findIndex(e=>e.id===C);if(a===-1){j(n[0].id);return}j(n[(a+t+n.length)%n.length].id);return}if(a&&/^Digit[1-9]$/.test(i)){let e=Number(i.slice(5))-1;if(Fe.length>0){let t=Fe[e];if(!t)return;r.preventDefault(),j(t.id);return}let t=ke[e];if(!t)return;r.preventDefault(),M(t.sessionId);return}if(a&&i===`KeyN`){r.preventDefault(),!e&&!c&&ae&&t(!0);return}if(a&&i===`Comma`){r.preventDefault(),l(t=>t?!1:!e);return}if(a&&i===`KeyX`){r.preventDefault(),C&&!e&&!c&&He(C,`keyboard_shortcut`);return}};return window.addEventListener(`keydown`,r),()=>window.removeEventListener(`keydown`,r)},[e,c,C,w,j,M,Fe,ke,He,me,fe,ae]);let Ue=()=>ae?(r(void 0),a(void 0),s(void 0),t(!0),!0):!1,We=()=>l(!0),Ge=(e,t,n,r)=>{xe({type:`session-create`,operationId:x(),projectPath:e,name:t,command:n,host:r}),r||ue(e)},Ke=e=>{xe({type:`session-wake`,sessionId:e})},qe=(0,y.useCallback)(e=>{xe({type:`session-hibernate`,sessionId:e})},[xe]),Je=(e,t)=>{xe({type:`session-rename`,sessionId:e,newName:t})},Ye=(0,y.useCallback)(e=>{let t=v.find(t=>t.id===e);t&&xe({type:`session-create`,operationId:x(),projectPath:t.projectPath,command:t.command||void 0,host:t.remote&&t.host?t.host:void 0})},[v,xe]),Xe=(0,y.useCallback)(e=>{xe({type:`session-move-to-history`,sessionId:e})},[xe]);(0,y.useEffect)(()=>_K(),[]),(0,y.useEffect)(()=>{document.documentElement.setAttribute(`data-theme`,H)},[H]),(0,y.useEffect)(()=>{fetch(`/api/server-info`).then(e=>e.json()).then(e=>h(e)).catch(()=>{})},[]);let Ze=(0,y.useMemo)(()=>ie?re.filter(e=>e.host!==ie):re,[re,ie]);return(0,k.jsxs)(`div`,{className:`flex h-full overflow-clip`,children:[(0,k.jsx)(`div`,{className:`hidden h-full flex-col md:flex md:shrink-0`,style:{width:pe},children:(0,k.jsx)(gk,{sessions:v,hibernatingSessions:De,historySessions:Oe,selectedSessionId:C,selectedHibernatingSessionId:w,onSelect:j,onSelectHibernating:M,onRename:Je,onResume:Ke,onHibernate:qe,onKill:He,onDuplicate:Ye,onMoveToHistory:Xe,onNewSession:Ue,loading:!P,error:I||f,anchor:me,showAnchorControl:!0,notice:(0,k.jsx)(N,{onOpen:()=>d(!0),subscribe:Se}),filterBarControls:(0,k.jsx)(Jt,{connectionStatus:ee,onNewSession:Ue,onOpenSettings:We,onOpenHistory:()=>d(!0),tailscaleIp:m?.tailscaleIp??null,placement:me===`bottom`?`up`:`down`})})}),(0,k.jsx)(`div`,{className:`hidden md:block w-1 shrink-0 cursor-col-resize bg-transparent transition-colors hover:bg-white/10 active:bg-white/20`,onMouseDown:Te}),(0,k.jsx)(LJ,{session:Ee,sessions:Fe,drawerSessions:v,hibernatingSession:Ae,hibernatingSessions:De,connectionStatus:ee,connectionEpoch:be,sendMessage:xe,subscribe:Se,onClose:()=>j(null),onSelectSession:j,onSelectHibernatingSession:M,onNewSession:Ue,onKillSession:He,onRenameSession:Je,onDuplicateSession:Ye,onOpenSettings:We,onOpenHistory:()=>d(!0),onResumeSession:Ke,onHibernateSession:qe,onMoveToHistory:Xe,historySessions:Oe,loading:!P,error:I||f}),(0,k.jsx)(nY,{isOpen:e,onClose:()=>t(!1),onCreate:Ge,defaultProjectDir:oe,commandPresets:se,defaultPresetId:ce,lastProjectPath:le,activeProjectPath:Ee&&!Ee.remote?Ee.projectPath:void 0,remoteHosts:Ze,remoteAllowControl:V,initialHost:n,initialPath:i,initialCommand:o}),(0,k.jsx)(dQ,{isOpen:c,onClose:()=>l(!1)}),(0,k.jsx)(F,{open:u,subscribe:Se,onClose:()=>d(!1),onOpenSession:e=>{T([e,...v.filter(t=>t.id!==e.id)]),M(null),j(e.id)}}),(0,k.jsx)(d1,{})]})}var o0=`modulepreload`,s0=function(e){return`/`+e},c0={},l0=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=s0(t,n),t in c0)return;c0[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:o0,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},u0=`true`,d0=`false`,f0=u0===`true`,p0=d0===`true`;function m0(e={}){let{immediate:t=!1,onNeedRefresh:n,onOfflineReady:r,onRegistered:i,onRegisteredSW:a,onRegisterError:o}=e,s,c,l,u=async(e=!0)=>{await c,f0||l?.()};async function d(){if(`serviceWorker`in navigator){if(s=await l0(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bq4GJJid.js`);return{Workbox:e}},[]).then(({Workbox:e})=>new e(`/sw.js`,{scope:`/`,type:`classic`})).catch(e=>{o?.(e)}),!s)return;if(l=()=>{s?.messageSkipWaiting()},!p0)if(f0)s.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),s.addEventListener(`installed`,e=>{e.isUpdate||r?.()});else{let e=!1,t=()=>{e=!0,s?.addEventListener(`controlling`,e=>{e.isUpdate&&window.location.reload()}),n?.()};s.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&r?.():n.isExternal?t():!e&&r?.():n.isUpdate||r?.()}),s.addEventListener(`waiting`,t)}s.register({immediate:t}).then(e=>{a?a(`/sw.js`,e):i?.(e)}).catch(e=>{o?.(e)})}}return c=d(),u}kt()&&document.documentElement.classList.add(`ios`),At()&&document.documentElement.classList.add(`ios-pwa`),m0({immediate:!0,onRegisteredSW(e,t){t&&(setInterval(()=>{t.update()},300*1e3),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&t.update()}))}});var h0=document.getElementById(`root`);if(!h0)throw Error(`Root element not found`);(0,b.createRoot)(h0).render((0,k.jsx)(y.StrictMode,{children:(0,k.jsx)(a0,{})}));