xedoc-cli 0.1.16 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/server/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PassThrough as e}from"node:stream";import{createReadableStreamFromReadable as t}from"@react-router/node";import{Links as n,Meta as a,Navigate as r,Outlet as i,Scripts as s,ScrollRestoration as o,ServerRouter as d,UNSAFE_withComponentProps as c,UNSAFE_withErrorBoundaryProps as l,isRouteErrorResponse as u,redirect as m,useLocation as h,useNavigate as f,useOutletContext as p,useParams as g}from"react-router";import{isbot as v}from"isbot";import{renderToPipeableStream as w}from"react-dom/server";import{Fragment as b,jsx as x,jsxs as y}from"react/jsx-runtime";import{QueryClient as N,QueryClientProvider as I,useMutation as k,useQueries as A,useQuery as C,useQueryClient as E}from"@tanstack/react-query";import{ThemeProvider as T,useTheme as M}from"next-themes";import*as S from"react";import{createContext as P,useCallback as D,useContext as L,useEffect as R,useMemo as $,useRef as q,useState as _,useSyncExternalStore as U}from"react";import{Toaster as z,toast as O}from"sonner";import{AlertTriangle as j,Archive as F,ArrowLeft as B,ArrowRight as G,ArrowUp as H,Brain as K,Check as W,CheckCircle2 as Q,CheckIcon as V,ChevronDown as J,ChevronRight as X,ChevronRightIcon as Y,CircleAlert as Z,CircleCheckIcon as ee,Clock as te,Code2 as ne,Copy as ae,Cpu as re,Download as ie,ExternalLink as se,Eye as oe,EyeOff as de,File as ce,FileCode as le,FileDiff as ue,Folder as me,FolderOpen as he,FolderPlus as fe,Gauge as pe,GitBranch as ge,GitCommitHorizontal as ve,Home as we,Image as be,Import as xe,Info as ye,InfoIcon as Ne,KeyRound as Ie,Laptop as ke,ListChecks as Ae,Loader2 as Ce,Loader2Icon as Ee,LockKeyhole as Te,Mail as Me,Menu as Se,MessageSquare as Pe,Moon as De,MoreHorizontal as Le,MoreVertical as Re,OctagonXIcon as $e,PanelLeftIcon as qe,Paperclip as _e,Pencil as Ue,PencilLine as ze,PlugZap as Oe,Plus as je,PowerOff as Fe,RefreshCw as Be,RotateCcw as Ge,RotateCw as He,Save as Ke,Search as We,Settings as Qe,Shield as Ve,ShieldCheck as Je,Square as Xe,SquarePen as Ye,Sun as Ze,Terminal as et,Trash2 as tt,TriangleAlertIcon as nt,Upload as at,UserRound as rt,X as it,XIcon as st,Zap as ot}from"lucide-react";import{Tooltip as dt}from"@base-ui/react/tooltip";import{clsx as ct}from"clsx";import{twMerge as lt}from"tailwind-merge";import{Button as ut}from"@base-ui/react/button";import{cva as mt}from"class-variance-authority";import{Input as ht}from"@base-ui/react/input";import{AlertDialog as ft}from"@base-ui/react/alert-dialog";import{Dialog as pt}from"@base-ui/react/dialog";import{Menu as gt}from"@base-ui/react/menu";import{mergeProps as vt}from"@base-ui/react/merge-props";import{useRender as wt}from"@base-ui/react/use-render";import{ScrollArea as bt}from"@base-ui/react/scroll-area";import{Separator as xt}from"@base-ui/react/separator";import{io as yt}from"socket.io-client";import{Popover as Nt}from"@base-ui/react/popover";import It from"highlight.js/lib/core";import kt from"highlight.js/lib/languages/bash";import At from"highlight.js/lib/languages/css";import Ct from"highlight.js/lib/languages/go";import Et from"highlight.js/lib/languages/json";import Tt from"highlight.js/lib/languages/javascript";import Mt from"highlight.js/lib/languages/markdown";import St from"highlight.js/lib/languages/python";import Pt from"highlight.js/lib/languages/rust";import Dt from"highlight.js/lib/languages/shell";import Lt from"highlight.js/lib/languages/sql";import Rt from"highlight.js/lib/languages/typescript";import $t from"highlight.js/lib/languages/xml";import qt from"highlight.js/lib/languages/yaml";import{Switch as _t}from"@base-ui/react/switch";import Ut from"react-markdown";import zt from"remark-gfm";import"dotenv/config";import{createHash as Ot,createHmac as jt,randomBytes as Ft,randomUUID as Bt,scryptSync as Gt,timingSafeEqual as Ht}from"node:crypto";import{Prisma as Kt,PrismaClient as Wt}from"@prisma/client";import{appendFileSync as Qt,chmodSync as Vt,closeSync as Jt,constants as Xt,copyFileSync as Yt,existsSync as Zt,lstatSync as en,mkdirSync as tn,openSync as nn,readFileSync as an,readdirSync as rn,readlinkSync as sn,realpathSync as on,renameSync as dn,rmSync as cn,statSync as ln,symlinkSync as un,writeFileSync as mn}from"node:fs";import{homedir as hn}from"node:os";import{basename as fn,dirname as pn,extname as gn,isAbsolute as vn,join as wn,relative as bn,resolve as xn,sep as yn}from"node:path";import{execFile as Nn,spawn as In}from"node:child_process";import{createServer as kn}from"node:net";import{promisify as An}from"node:util";import{access as Cn,appendFile as En,copyFile as Tn,mkdir as Mn,open as Sn,readFile as Pn,readdir as Dn,realpath as Ln,stat as Rn}from"node:fs/promises";var $n=Object.defineProperty,qn=(e,t)=>{let n={};for(var a in e)$n(n,a,{get:e[a],enumerable:!0});return t||$n(n,Symbol.toStringTag,{value:"Module"}),n},_n=qn({default:()=>zn,streamTimeout:()=>Un}),Un=5e3;function zn(n,a,r,i,s){return"HEAD"===n.method.toUpperCase()?new Response(null,{status:a,headers:r}):new Promise((s,o)=>{let c=!1,l=n.headers.get("user-agent"),u=l&&v(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),Un+1e3);const{pipe:h,abort:f}=w(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var On=({...e})=>{const{theme:t="system"}=M();return x(z,{theme:t,className:"toaster group",icons:{success:x(ee,{className:"size-4"}),info:x(Ne,{className:"size-4"}),warning:x(nt,{className:"size-4"}),error:x($e,{className:"size-4"}),loading:x(Ee,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};function jn(...e){return lt(ct(e))}function Fn({delay:e=0,...t}){return x(dt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function Bn({...e}){return x(dt.Root,{"data-slot":"tooltip",...e})}function Gn({...e}){return x(dt.Trigger,{"data-slot":"tooltip-trigger",...e})}function Hn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(dt.Portal,{children:x(dt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(dt.Popup,{"data-slot":"tooltip-content",className:jn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(dt.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"})]})})})}var Kn="xedoc";function Wn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Kn}`:Kn}(e);R(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Kn}},[t])}var Qn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Vn=class extends Error{request;constructor(e,t){super(function(e,t){const n=t instanceof Error?t.message:String(t);return["No HTTP response received.",`${e.method} ${e.url}`,n,"Check the server URL, CORS settings, network reachability, and whether the API is running."].filter(Boolean).join("\n")}(e,t)),this.request=e}};async function Jn(e){return ia(e.serverUrl,"/api/auth/session",{token:e.token})}async function Xn(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function Yn(e,t,n={}){return ia(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:n,token:e.token})}async function Zn(e,t){return ia(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function ea(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return ia(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function ta(e,t){return ia(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function na(e,t,n){return ia(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function aa(e,t,n=0){return ia(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function ra(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function ia(e,t,n){const a=`${e}${t}`,r=n.method??(void 0===n.body?"GET":"POST");let i;try{i=await fetch(a,{method:r,headers:{Accept:"application/json",...void 0===n.body?{}:{"Content-Type":"application/json"},...n.token?{Authorization:`Bearer ${n.token}`}:{}},body:void 0===n.body?void 0:JSON.stringify(n.body)})}catch(d){throw new Vn({method:r,url:a},d)}const s=await i.text(),o=function(e,t){if(!e)return null;try{return JSON.parse(e)}catch(d){throw new Error(["Server returned invalid JSON.",t,d instanceof Error?d.message:void 0,sa(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Qn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,oa(o)??sa(s)].filter(Boolean).join("\n"),i.status,a);return o}function sa(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function oa(e){if(!e||"object"!=typeof e)return;const t=e.message;return Array.isArray(t)?t.join("\n"):"string"==typeof t?t:void 0}function da(e,t){return{data:[...(e?.data??[]).filter(e=>e.id!==t.id),t].sort((e,t)=>e.sequence-t.sequence),nextCursor:Math.max(t.sequence,e?.nextCursor??0)}}var ca={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function la(){const e=ua();e&&(fa(e,"serverUrl"),fa(e,"token"))}function ua(){return"undefined"==typeof window?null:window.localStorage}function ma(e,t){return e.getItem(ca[t])}function ha(e,t,n){e.setItem(ca[t],n)}function fa(e,t){e.removeItem(ca[t])}function pa(e){const t=e.trim();if(!t)throw new Error("Enter a server URL.");const n=/^[a-z][a-z\d+\-.]*:\/\//i.test(t)?t:`http://${t}`,a=new URL(n);return a.pathname=a.pathname.replace(/\/+$/,""),a.search="",a.hash="",a.toString().replace(/\/+$/,"")}var ga=P(void 0);function va({children:e}){const[t,n]=_(null),[a,r]=_(!1),i=U(ba,xa,ya),s=t,o=!i||!a;R(()=>{if(!i)return;const e=function(){const e=ua();if(!e)return null;const t=ma(e,"serverUrl"),n=ma(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Jn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{la(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=D(async e=>{const t=pa(window.location.origin),{token:a}=await async function(e,t){return ia(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=ua();t&&(ha(t,"serverUrl",e.serverUrl),ha(t,"token",e.token))}(i),n(i),r(!0)},[]),c=D(async()=>{s&&await Jn(s)},[s]),l=D(()=>{la(),n(null),r(!0)},[]),u=$(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ga.Provider,{value:u,children:e})}function wa(){const e=L(ga);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function ba(){return()=>{}}function xa(){return!0}function ya(){return!1}var Na=qn({ErrorBoundary:()=>Ea,Layout:()=>Aa,default:()=>Ca,links:()=>ka,meta:()=>Ia});function Ia(){return[{title:Kn}]}function ka(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function Aa({children:e}){return y("html",{lang:"en",suppressHydrationWarning:!0,children:[y("head",{children:[x("meta",{charSet:"utf-8"}),x("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),x(a,{}),x(n,{})]}),y("body",{children:[e,x(o,{}),x(s,{})]})]})}var Ca=c(function(){const[e]=_(()=>new N({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(T,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:x(I,{client:e,children:y(Fn,{children:[x(va,{children:x(i,{})}),x(On,{richColors:!0})]})})})}),Ea=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return x("main",{className:"flex min-h-svh items-center justify-center bg-background p-6",children:y("section",{className:"max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[x("h1",{className:"text-lg font-semibold",children:"xedoc"}),x("p",{className:"mt-2 whitespace-pre-wrap text-sm text-muted-foreground",children:t})]})})}),Ta=mt("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function Ma({className:e,variant:t="default",size:n="default",...a}){return x(ut,{"data-slot":"button",className:jn(Ta({variant:t,size:n,className:e})),...a})}function Sa({className:e,type:t,...n}){return x(ht,{type:t,"data-slot":"input",className:jn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...n})}function Pa({className:e,...t}){return x("label",{"data-slot":"label",className:jn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function Da(){const[e,t]=_(""),[n,a]=_(""),[i,s]=_(null),[o,d]=_(null),[c,l]=_(!1),{loading:u,session:m,setup:h}=wa(),p=f(),g=!1===i;if(R(()=>{let e=!0;return d(null),async function(e){return ia(e,"/api/auth/status",{token:null})}(pa(window.location.origin)).then(t=>{e&&s(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),s(!0))}),()=>{e=!1}},[]),u)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return x(r,{replace:!0,to:"/"});if(null===i)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});async function v(){if(d(null),g&&e!==n)d("Passwords do not match.");else{l(!0);try{await h(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?Ie:Oe,{className:"size-5"})}),y("div",{children:[x("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),x("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"server-password",children:"Server password"}),x(Sa,{id:"server-password",autoComplete:g?"new-password":"current-password",placeholder:"Password",type:"password",value:e,onChange:e=>t(e.target.value),onKeyDown:t=>{"Enter"===t.key&&La(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(Sa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&La(e,n,g)&&v()}})]}):null,o?x("div",{className:"whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:o}):null,y(Ma,{disabled:!La(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ce,{className:"animate-spin"}):x(g?Ie:Oe,{}),g?"Set Password":"Connect"]})]})]})})}function La(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var Ra=qn({default:()=>$a}),$a=c(function(){return x(Da,{})}),qa=qn({loader:()=>_a});function _a(){return m("/favicon.svg",301)}function Ua({...e}){return x(ft.Root,{"data-slot":"alert-dialog",...e})}function za({...e}){return x(ft.Portal,{"data-slot":"alert-dialog-portal",...e})}function Oa({className:e,...t}){return x(ft.Backdrop,{"data-slot":"alert-dialog-overlay",className:jn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function ja({className:e,size:t="default",...n}){return y(za,{children:[x(Oa,{}),x(ft.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:jn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function Fa({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:jn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function Ba({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:jn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function Ga({className:e,...t}){return x(ft.Title,{"data-slot":"alert-dialog-title",className:jn("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function Ha({className:e,...t}){return x(ft.Description,{"data-slot":"alert-dialog-description",className:jn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Ka({className:e,...t}){return x(Ma,{"data-slot":"alert-dialog-action",className:jn(e),...t})}function Wa({className:e,variant:t="outline",size:n="default",...a}){return x(ft.Close,{"data-slot":"alert-dialog-cancel",className:jn(e),render:x(Ma,{variant:t,size:n}),...a})}function Qa({...e}){return x(pt.Root,{"data-slot":"dialog",...e})}function Va({...e}){return x(pt.Trigger,{"data-slot":"dialog-trigger",...e})}function Ja({...e}){return x(pt.Portal,{"data-slot":"dialog-portal",...e})}function Xa({className:e,...t}){return x(pt.Backdrop,{"data-slot":"dialog-overlay",className:jn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function Ya({className:e,children:t,showCloseButton:n=!0,...a}){return y(Ja,{children:[x(Xa,{}),y(pt.Popup,{"data-slot":"dialog-content",className:jn("fixed top-1/2 left-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...a,children:[t,n&&y(pt.Close,{"data-slot":"dialog-close",render:x(Ma,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(st,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Za({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:jn("flex flex-col gap-2",e),...t})}function er({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:jn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&x(pt.Close,{render:x(Ma,{variant:"outline"}),children:"Close"})]})}function tr({className:e,...t}){return x(pt.Title,{"data-slot":"dialog-title",className:jn("font-heading text-base leading-none font-medium",e),...t})}function nr({className:e,...t}){return x(pt.Description,{"data-slot":"dialog-description",className:jn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function ar({...e}){return x(gt.Root,{"data-slot":"dropdown-menu",...e})}function rr({...e}){return x(gt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function ir({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(gt.Portal,{children:x(gt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(gt.Popup,{"data-slot":"dropdown-menu-content",className:jn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",r),...i})})})}function sr({className:e,inset:t,variant:n="default",...a}){return x(gt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:jn("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...a})}function or({...e}){return x(gt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function dr({className:e,inset:t,children:n,...a}){return y(gt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:jn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(Y,{className:"ml-auto"})]})}function cr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(ir,{"data-slot":"dropdown-menu-sub-content",className:jn("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",r),align:e,alignOffset:t,side:n,sideOffset:a,...i})}function lr({...e}){return x(gt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function ur({className:e,children:t,inset:n,...a}){return y(gt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:jn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(gt.RadioItemIndicator,{children:x(V,{})})}),t]})}function mr({className:e,...t}){return x(gt.Separator,{"data-slot":"dropdown-menu-separator",className:jn("-mx-1 my-1 h-px bg-border",e),...t})}function hr({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:jn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...t})}var fr=mt("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function pr({className:e,variant:t="default",render:n,...a}){return wt({defaultTagName:"span",props:vt({className:jn(fr({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function gr({className:e,status:t}){return x(pr,{className:e,variant:vr(t),children:t.toLowerCase()})}function vr(e){switch(e){case"ERROR":case"FAILED":case"INVALIDATED":case"OFFLINE":return"destructive";case"CONNECTED":case"COMPLETED":case"ONLINE":return"default";case"AUTHENTICATING":case"PENDING":case"RUNNING":case"STREAMING":return"secondary";default:return"outline"}}function wr({callbackUrl:e,cancelPending:t,completePending:n,state:a,onCallbackUrlChange:r,onCancelAuthentication:i,onClose:s,onComplete:o,onCopyDeviceCode:d,onReopen:c}){const l="device"===a?.mode,u="CONNECTED"===a?.status;return x(Qa,{open:!!a,onOpenChange:e=>{e||s()},children:y(Ya,{className:"max-w-2xl",children:[y(Za,{children:[x(tr,{children:l?"Device authentication":"Normal authentication"}),x(nr,{children:a?.accountName??"Codex account"})]}),y("div",{className:"grid gap-4",children:[x("div",{className:jn("rounded-md border px-3 py-2 text-sm",u?"border-emerald-300 bg-emerald-50 text-emerald-800 dark:border-emerald-900/70 dark:bg-emerald-950/35 dark:text-emerald-200":"bg-muted/35 text-muted-foreground"),children:u?"Codex reported this account as connected. xedoc will use the email from the authenticated account as its name.":l?"Open the verification link, enter the device code, then use the response URL field if Codex does not finish automatically.":"Complete the browser login. If the browser lands on a localhost callback page, paste that full URL below."}),a?.authUrl?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-auth-url",children:l?"Verification link":"Authentication link"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Sa,{className:"font-mono text-xs",id:"account-auth-url",readOnly:!0,value:a.authUrl}),y(Ma,{variant:"outline",onClick:c,children:[x(se,{}),"Reopen"]})]})]}):null,l&&a?.userCode?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-device-code",children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Sa,{className:"font-mono text-sm tracking-wider",id:"account-device-code",readOnly:!0,value:a.userCode}),y(Ma,{variant:"outline",onClick:d,children:[x(ae,{}),"Copy"]})]})]}):null,y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-callback-url",children:"Response URL"}),x(hr,{className:"min-h-24 font-mono text-xs",id:"account-callback-url",placeholder:"http://localhost:1455/auth/callback?code=...",value:e,onChange:e=>r(e.target.value)}),x("p",{className:"text-xs text-muted-foreground",children:"Paste the complete localhost callback URL from the Codex browser tab when automatic completion is blocked."})]}),a?.message?x("p",{className:"rounded-md border bg-background px-3 py-2 text-sm text-muted-foreground",children:a.message}):null]}),y(er,{children:[y(Ma,{variant:"outline",onClick:s,children:[x(it,{}),"Close"]}),"AUTHENTICATING"===a?.status?y(Ma,{disabled:!a.accountId||t,variant:"destructive",onClick:i,children:[t?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel Auth"]}):null,y(Ma,{disabled:!a?.authUrl,variant:"secondary",onClick:c,children:[x(se,{}),"Reopen Link"]}),y(Ma,{disabled:!a?.accountId||!e.trim()||n,onClick:o,children:[n?x(Ce,{className:"animate-spin"}):x(Q,{}),"Submit Response URL"]})]})]})})}function br(e){return"browser"===e||"device"===e?e:null}function xr(e,t){return{accountId:e?.id??"",accountName:e?.displayName??"Codex account",authUrl:e?.lastAuthUrl??null,message:"AUTHENTICATING"===e?.status?"Authentication is in progress.":"Starting Codex authentication.",mode:t,status:e?.status??"AUTHENTICATING",userCode:e?.lastAuthUserCode??null}}function yr(e){const t=Sr(e);return function(e){const t=Sr(e);if(!t)return;return{credits:Tr(t.credits),limitId:Pr(t.limitId)??Pr(t.limit_id),limitName:Pr(t.limitName)??Pr(t.limit_name),planType:Pr(t.planType)??Pr(t.plan_type),primary:Er(t.primary),rateLimitReachedType:Pr(t.rateLimitReachedType)??Pr(t.rate_limit_reached_type),secondary:Er(t.secondary)}}(Mr(e)?.codex??Object.values(Mr(e)??{}).find(Boolean)??t?.rateLimits??t?.rate_limits??((n=t)&&("primary"in n||"secondary"in n||"limitId"in n||"limit_id"in n)?t:void 0));var n}function Nr(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[Cr(e.primary,"5h"),Cr(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function Ir(e){return e?kr(e.secondary)?"weekly":kr(e.primary)?"fiveHour":null:null}function kr(e){return Ar(e?.usedPercent??0)>=100}function Ar(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Cr(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-Ar(e.usedPercent)));return`${function(e,t){const n=e?.windowDurationMins;return n?n>=10080?"W":300===n?"5h":n%60==0?n/60+"h":`${n}m`:t}(e,t)} ${n}%`}function Er(e){if(null===e)return null;const t=Sr(e);return t?{resetsAt:Dr(t.resetsAt)??Dr(t.resets_at),usedPercent:Dr(t.usedPercent)??Dr(t.used_percent)??0,windowDurationMins:Dr(t.windowDurationMins)??Dr(t.window_duration_mins)??Dr(t.window_minutes)}:void 0}function Tr(e){if(null===e)return null;const t=Sr(e);return t?{balance:Pr(t.balance)??null,hasCredits:Lr(t.hasCredits)??Lr(t.has_credits)??!1,unlimited:Lr(t.unlimited)??!1}:void 0}function Mr(e){const t=Sr(e);return Sr(t?.rateLimitsByLimitId)??Sr(t?.rate_limits_by_limit_id)}function Sr(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Pr(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Dr(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Lr(e){return"boolean"==typeof e?e:void 0}function Rr({account:e,authPending:t,authPendingMode:n,cancelPending:a,localActivePending:r,quotaLabel:i,quotaPending:s,quotaSnapshot:o,onAuthenticate:d,onCancelAuthentication:c,onDelete:l,onEdit:u,onSetLocalActive:m,onShowAuthentication:h}){const f=br(e.lastAuthMode)??"browser",p=t&&"browser"===n,g=t&&"device"===n,v="AUTHENTICATING"===e.status?f:"browser",w="AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate",b="CONNECTED"===e.status&&!e.isLocalCodexActive,N="device"===f?"Device login pending":"Browser login pending";return x("div",{className:jn("rounded-md border bg-background px-3 py-3 text-sm",e.isLocalCodexActive&&"border-primary/40 bg-primary/5 dark:bg-primary/10"),children:y("div",{className:"grid gap-3",children:[y("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[y("div",{className:"grid min-w-0 gap-1.5",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[x("div",{className:"min-w-0 max-w-full truncate font-medium",children:e.displayName}),x($r,{planType:o?.planType}),e.isLocalCodexActive?x(qr,{}):null]}),x("div",{className:"truncate text-xs text-muted-foreground",children:zr(e)})]}),y("div",{className:"flex shrink-0 items-center gap-2",children:[x(_r,{account:e}),y(ar,{children:[y(rr,{render:x(Ma,{size:"icon-sm",variant:"ghost"}),children:[t||a||r?x(Ce,{className:"animate-spin"}):x(Re,{}),x("span",{className:"sr-only",children:"Account actions"})]}),y(ir,{align:"end",className:"w-48",children:[y(sr,{disabled:t,onClick:()=>d(v),children:[p?x(Ce,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(He,{}):x(se,{}),"AUTHENTICATING"===e.status?w:"Normal Auth"]}),y(sr,{disabled:t,onClick:()=>d("device"),children:[g?x(Ce,{className:"animate-spin"}):x(Ie,{}),"Device Auth"]}),y(sr,{disabled:!b||r,onClick:m,children:[r?x(Ce,{className:"animate-spin"}):x(ke,{}),e.isLocalCodexActive?"Local Active":"Make Local Active"]}),"AUTHENTICATING"===e.status?y(sr,{disabled:a,variant:"destructive",onClick:c,children:[a?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel Auth"]}):null,"AUTHENTICATING"===e.status||e.lastAuthUrl?y(sr,{onClick:h,children:[x(se,{}),"Authentication Details"]}):null,x(mr,{}),y(sr,{onClick:u,children:[x(Ue,{}),"Edit"]}),y(sr,{variant:"destructive",onClick:l,children:[x(tt,{}),"Delete"]})]})]})]})]}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-end",children:[y("div",{className:"grid min-w-0 gap-1.5",children:[x(Ur,{accountStatus:e.status,label:i,pending:s,snapshot:o}),"AUTHENTICATING"===e.status?x("span",{className:"text-xs text-muted-foreground",children:N}):null]}),"AUTHENTICATING"===e.status?y(Ma,{className:"min-w-0 sm:w-auto",disabled:a,size:"sm",variant:"destructive",onClick:c,children:[a?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel"]}):null]})]})})}function $r({planType:e}){return e?x(pr,{className:"border-emerald-300 bg-emerald-50 text-emerald-700 dark:border-emerald-900/70 dark:bg-emerald-950/35 dark:text-emerald-300",variant:"outline",children:(t=e,t.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" "))}):null;var t}function qr(){return y(pr,{className:"border-sky-300 bg-sky-50 text-sky-700 dark:border-sky-900/70 dark:bg-sky-950/35 dark:text-sky-300",variant:"outline",children:[x(ke,{}),"local active"]})}function _r({account:e}){const t=e.lastError?.trim();return t?y(Bn,{children:[x(Gn,{render:x("span",{className:"inline-flex cursor-help"}),children:x(gr,{status:e.status})}),x(Hn,{align:"start",className:"max-w-96 whitespace-pre-wrap break-words text-left leading-relaxed",side:"right",children:t})]}):x(gr,{status:e.status})}function Ur({accountStatus:e,label:t,pending:n,snapshot:a}){if("CONNECTED"!==e)return x("div",{className:"text-xs text-muted-foreground",children:"INVALIDATED"===e?"Re-authenticate account to load quota.":"Connect account to load quota."});const r=t??Nr(a),i=Ir(a);return x("div",{className:"grid gap-1.5",children:y("div",{className:jn("inline-flex w-fit items-center gap-1.5 rounded-md border px-2 py-1 text-xs","fiveHour"===i&&"border-orange-300 bg-orange-50 text-orange-700 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300","weekly"===i&&"border-red-300 bg-red-50 text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300"),children:[n?x(Ce,{className:"size-3 animate-spin"}):null,x("span",{children:r})]})})}function zr(e){return[e.command,...e.args??[]].filter(Boolean).join(" ")}var Or={args:"",command:"",displayName:"",environment:""};function jr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:r=0,session:i}){const[s,o]=_(!1),[d,c]=_(null),[l,u]=_(""),[m,h]=_(""),[f,p]=_(null),[g,v]=_(Or),[w,N]=_(null),I=q(null),A=q(null),T=E(),M=$(()=>["login-callback-port",i.serverUrl],[i.serverUrl]),S=C({queryKey:M,queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/login-callback-port",{token:e.token})}(i),refetchInterval:e=>e.state.data?.inUse?5e3:15e3,retry:1,staleTime:3e3});R(()=>{if(r<=0)return;const e=window.setTimeout(()=>{o(!0)},80);return()=>window.clearTimeout(e)},[r]),R(()=>{c(t=>{if(!t?.accountId)return t;const n=e.find(e=>e.id===t.accountId);if(!n)return t;const a=br(n.lastAuthMode)??t.mode,r="AUTHENTICATING"===n.status?n.lastAuthUrl??t.authUrl:n.lastAuthUrl,i="AUTHENTICATING"===n.status?n.lastAuthUserCode??t.userCode:n.lastAuthUserCode,s={...t,accountName:n.displayName,authUrl:r??null,mode:a,status:n.status,userCode:i??null};return d=s,(o=t).accountId===d.accountId&&o.accountName===d.accountName&&o.authUrl===d.authUrl&&o.message===d.message&&o.mode===d.mode&&o.status===d.status&&o.userCode===d.userCode?t:s;var o,d})},[e]),R(()=>{d?.accountId&&"CONNECTED"!==d.status&&"CONNECTED"===e.find(e=>e.id===d.accountId)?.status&&(te(),c(null),u(""),O.success("Account connected."))},[e,d?.accountId,d?.status]);const P=()=>T.invalidateQueries({queryKey:["accounts"]}),D=$(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return n?e.filter(e=>[e.displayName,e.status,e.command,e.args.join(" "),e.defaultModel,e.defaultPermissionMode,e.defaultReasoningEffort,e.defaultServiceTier,e.lastError,e.environment?JSON.stringify(e.environment):null].filter(Boolean).some(e=>String(e).toLocaleLowerCase().includes(n))):e}(e,m),[e,m]),L=$(()=>e.some(e=>"AUTHENTICATING"===e.status&&"device"!==br(e.lastAuthMode)),[e]),U=k({mutationFn:async e=>{const t=await async function(e,t){return ia(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(i,{});return{account:t,auth:await Yn(i,t.id,{mode:e.authMode}),popup:e.popup}},onError:(e,t)=>{te(t?.popup??null),c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:({account:e,auth:t,popup:n})=>{P(),ee(t,n,e)}}),z=k({mutationFn:()=>{if(!f)throw new Error("Select an account to edit.");return async function(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(i,f.id,{...Gr(g),displayName:g.displayName.trim()})},onError:e=>O.error(Wr(e)),onSuccess:()=>{p(null),v(Or),O.success("Account updated."),P()}}),j=k({mutationFn:({accountId:e,mode:t})=>Yn(i,e,{mode:t}),onError:(e,t)=>{te(t?.popup??null),c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:(t,n)=>{P();const a=e.find(e=>e.id===n.accountId);ee(t,n.popup,a)}}),F=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/authenticate`,{method:"DELETE",token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:e=>{te(),c(null),u(""),O.success(`Canceled authentication for ${e.displayName}.`),P()}}),B=k({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(i,e,{redirectUrl:t.trim()}),onError:e=>{c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:e=>{u(""),P(),ee(e)}}),G=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:()=>{N(null),O.success("Account deleted."),P(),T.invalidateQueries({queryKey:["chats"]})}}),H=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/export",{token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{!function(e){const t=new Blob([`${JSON.stringify(e,null,2)}\n`],{type:"application/json"}),n=URL.createObjectURL(t),a=window.document.createElement("a");a.href=n,a.download=`xedoc-accounts-${(new Date).toISOString().slice(0,10)}.json`,window.document.body.append(a),a.click(),a.remove(),URL.revokeObjectURL(n)}(e),O.success(`Exported ${e.accounts.length} ${Kr(e.accounts.length)}. Keep the file private; it may include Codex auth tokens.`)}}),K=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/login-callback-port",{body:{},token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{T.setQueryData(M,e),e.inUse?O.warning(`${e.host}:${e.port} is still in use. The process may need more time to exit.`):O.success(function(e){const t=e.killedProcessIds??[];return t.length?`Killed ${1===t.length?"process":"processes"} ${t.join(", ")}.`:"Login callback port is available."}(e))}}),W=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(i,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),O.error(Wr(e))},onSuccess:(e,t)=>{O.success(`Imported ${e.imported} ${Kr(e.imported)}.`),P(),T.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){ee(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&O.info(`${a} more ${Kr(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&O.success(`Connected ${a} imported ${Kr(a)}.`)}(e.authentications,t.popup)}}),V=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/import-local-active",{body:{},token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{O.success(`Imported ${e.imported} local ${Kr(e.imported)}.`),P(),T.invalidateQueries({queryKey:["chats"]})}}),X=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/local-active`,{body:{},token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:e=>{O.success(`${e.displayName} is now active in local Codex.`),P()}});async function Y(){const e=S.data?.inUse?S.data:(await S.refetch()).data;return!e?.inUse||(O.error(`${e.host}:${e.port} is already in use. Kill the process or use Device Auth.`),!1)}async function Z(e){if("browser"===e&&!(await Y()))return void o(!1);const t=Qr();I.current=t,o(!1),u(""),c({accountId:"",accountName:"Codex account",authUrl:null,message:"Creating account and starting Codex authentication.",mode:e,status:"AUTHENTICATING",userCode:null}),U.mutate({authMode:e,popup:t})}function ee(e,t,n){if(c(function(e,t){return{accountId:e.accountId,accountName:t?.displayName??"Codex account",authUrl:e.authUrl??t?.lastAuthUrl??null,message:e.message??null,mode:e.authMode??br(t?.lastAuthMode)??"browser",status:e.status,userCode:e.userCode??t?.lastAuthUserCode??null}}(e,n)),e.authUrl)return I.current=t??I.current,Vr(e.authUrl,t),void O.info("device"===e.authMode?"Device login page opened.":"Authentication page opened. xedoc is listening for the Codex callback.");te(t),"AUTHENTICATING"!==e.status?O.success(e.message??"Account is connected."):O.info(e.message??"Authentication is still in progress.")}function te(e=I.current){e&&!e.closed&&e.close(),e&&e!==I.current||(I.current=null)}return y(b,{children:[x("div",{className:"grid gap-5",children:y("section",{className:"grid gap-4",children:[x("div",{className:"flex flex-wrap items-start justify-between gap-3",children:y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Search, authenticate, and inspect current Codex quota."})]})}),x(Br,{browserAuthenticationInProgress:L,checking:S.isFetching,killing:K.isPending,status:S.data,onKill:()=>K.mutate(),onRefresh:()=>{S.refetch()}}),y("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[y("div",{className:"relative min-w-0 flex-1 sm:min-w-64",children:[x(We,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),x(Sa,{className:"pl-8",placeholder:"Search accounts",value:m,onChange:e=>h(e.target.value)})]}),y("div",{className:"grid w-full grid-cols-2 gap-2 sm:flex sm:w-auto sm:flex-wrap sm:justify-end",children:[x("input",{ref:A,accept:"application/json,.json",className:"hidden",type:"file",onChange:async function(e){const t=e.currentTarget.files?.[0];if(e.currentTarget.value="",!t)return;const n=Qr();try{const e=JSON.parse(await t.text());W.mutate({accounts:Hr(e),popup:n})}catch(a){n?.close(),O.error(Wr(a))}}}),y(Ma,{className:"w-full sm:w-auto",disabled:W.isPending,variant:"outline",onClick:()=>A.current?.click(),children:[W.isPending?x(Ce,{className:"animate-spin"}):x(at,{}),"Import"]}),y(Ma,{className:"w-full sm:w-auto",disabled:H.isPending,variant:"outline",onClick:()=>H.mutate(),children:[H.isPending?x(Ce,{className:"animate-spin"}):x(ie,{}),"Export"]}),y(ar,{open:s,onOpenChange:o,children:[y(rr,{render:x(Ma,{className:"w-full sm:w-auto"}),children:[U.isPending||V.isPending?x(Ce,{className:"animate-spin"}):x(je,{}),"Add",x(J,{"data-icon":"inline-end"})]}),y(ir,{align:"end",className:"w-56",children:[y(sr,{disabled:U.isPending,onClick:()=>Z("browser"),children:[x(se,{}),"Normal Auth"]}),y(sr,{disabled:U.isPending,onClick:()=>Z("device"),children:[x(Ie,{}),"Device Auth"]}),x(mr,{}),y(sr,{disabled:V.isPending,onClick:()=>{o(!1),V.mutate()},children:[V.isPending?x(Ce,{className:"animate-spin"}):x(xe,{}),"Import Local"]})]})]})]})]}),x("div",{className:"grid gap-2",children:D.length?D.map(r=>x(Rr,{account:r,authPending:j.isPending&&j.variables?.accountId===r.id,authPendingMode:j.variables?.mode??"browser",cancelPending:F.isPending&&F.variables===r.id,localActivePending:X.isPending&&X.variables===r.id,quotaLabel:a[r.id],quotaPending:!!t[r.id],quotaSnapshot:n[r.id],onDelete:()=>N(r),onEdit:()=>function(e){var t;p(e),v({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(r),onAuthenticate:t=>async function(t,n="browser"){if("browser"===n&&!(await Y()))return;const a=e.find(e=>e.id===t),r=Qr();I.current=r,u(""),c(xr(a,n)),j.mutate({accountId:t,mode:n,popup:r})}(r.id,t),onCancelAuthentication:()=>F.mutate(r.id),onSetLocalActive:()=>X.mutate(r.id),onShowAuthentication:()=>function(e){u(""),c(xr(e,br(e.lastAuthMode)??"browser"))}(r)},r.id)):x("div",{className:"rounded-md border bg-background px-3 py-8 text-center text-sm text-muted-foreground",children:e.length?"No accounts match the current search.":"No accounts yet. Add an account or import account records."})})]})}),x(wr,{callbackUrl:l,cancelPending:F.isPending&&F.variables===d?.accountId,completePending:B.isPending,state:d,onCallbackUrlChange:u,onClose:()=>{c(null),u("")},onCancelAuthentication:()=>{d?.accountId&&F.mutate(d.accountId)},onComplete:()=>{d?.accountId&&B.mutate({accountId:d.accountId,redirectUrl:l})},onCopyDeviceCode:()=>{!async function(e){if(!e)return;try{await navigator.clipboard.writeText(e),O.success("Device code copied.")}catch{O.error("Could not copy device code.")}}(d?.userCode??"")},onReopen:()=>Vr(d?.authUrl)}),x(Qa,{open:!!f,onOpenChange:e=>{e||z.isPending||(p(null),v(Or))},children:y(Ya,{className:"max-w-2xl",children:[y(Za,{children:[y(tr,{children:["Edit ",f?.displayName??"account"]}),x(nr,{children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),x(Fr,{form:g,onChange:v,prefix:`edit-account-${f?.id??"selected"}`}),y(er,{children:[y(Ma,{variant:"outline",onClick:()=>{p(null),v(Or)},children:[x(it,{}),"Cancel"]}),y(Ma,{disabled:!g.displayName.trim()||z.isPending,onClick:()=>z.mutate(),children:[z.isPending?x(Ce,{className:"animate-spin"}):x(Q,{}),"Save account"]})]})]})}),x(Ua,{open:!!w,onOpenChange:e=>{e||N(null)},children:y(ja,{children:[y(Fa,{children:[x(Ga,{children:"Delete account?"}),y(Ha,{children:["This removes ",w?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ba,{children:[x(Wa,{children:"Cancel"}),y(Ka,{disabled:G.isPending,variant:"destructive",onClick:()=>{w&&G.mutate(w.id)},children:[G.isPending?x(Ce,{className:"animate-spin"}):x(tt,{}),"Delete"]})]})]})})]})}function Fr({form:e,onChange:t,prefix:n}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-name`,children:"Display name"}),x(Sa,{id:`${n}-name`,placeholder:"Work Codex",value:e.displayName,onChange:n=>t({...e,displayName:n.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-command`,children:"Command"}),x(Sa,{id:`${n}-command`,placeholder:"codex",value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-args`,children:"Arguments"}),x(Sa,{id:`${n}-args`,placeholder:"app-server",value:e.args,onChange:n=>t({...e,args:n.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-environment`,children:"Environment JSON"}),x(hr,{className:"min-h-20 font-mono text-xs",id:`${n}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:e.environment,onChange:n=>t({...e,environment:n.target.value})})]})]})}function Br({browserAuthenticationInProgress:e,checking:t,killing:n,status:a,onKill:r,onRefresh:i}){if(!a?.inUse)return null;const s=function(e){return e.processes.length?e.processes.map(e=>[e.command??"process",`PID ${e.pid}`,e.user?`user ${e.user}`:null].filter(Boolean).join(" ")).join(", "):null}(a),o=1===a.processes.length?"Kill Process":"Kill Processes";return y("div",{className:"flex flex-col gap-3 rounded-md border border-amber-300 bg-amber-50 px-3 py-3 text-amber-950 dark:border-amber-900/70 dark:bg-amber-950/35 dark:text-amber-100 sm:flex-row sm:items-start sm:justify-between",children:[y("div",{className:"flex min-w-0 gap-2",children:[x(Z,{className:"mt-0.5 size-4 shrink-0 text-amber-600 dark:text-amber-300"}),y("div",{className:"grid min-w-0 gap-1",children:[x("div",{className:"text-sm font-medium",children:"Login callback port is busy"}),x("p",{className:"text-sm leading-relaxed",children:e?`${a.host}:${a.port} is already listening for a browser login. Starting another Normal Auth can fail while this listener is active.`:`${a.host}:${a.port} is already listening. Normal Auth can fail until this process is stopped.`}),x("p",{className:"break-words text-xs text-amber-800 dark:text-amber-200/80",children:s??"Process details are unavailable."})]})]}),y("div",{className:"flex shrink-0 flex-wrap gap-2 sm:justify-end",children:[y(Ma,{disabled:t||n,size:"sm",variant:"outline",onClick:i,children:[t?x(Ce,{className:"animate-spin"}):x(He,{}),"Refresh"]}),y(Ma,{disabled:!a.killable||n,size:"sm",variant:"destructive",onClick:r,children:[n?x(Ce,{className:"animate-spin"}):x(Fe,{}),o]})]})]})}function Gr(e){const t={};if(e.command.trim()&&(t.command=e.command.trim()),e.args.trim()&&(t.args=e.args.split(/\s+/).map(e=>e.trim()).filter(Boolean)),e.environment.trim()){const n=JSON.parse(e.environment);if(!n||"object"!=typeof n||Array.isArray(n))throw new Error("Environment must be a JSON object.");t.environment=n}return t}function Hr(e){if(Array.isArray(e))return e;if(e&&"object"==typeof e){const t=e.accounts;if(Array.isArray(t))return t}throw new Error("Import file must contain an accounts array.")}function Kr(e){return 1===e?"account":"accounts"}function Wr(e){return e instanceof Error?e.message:"Request failed."}function Qr(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Vr(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Jr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(bt.Root,{"data-slot":"scroll-area",className:jn("relative",e),...r,children:[x(bt.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:jn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),x(Xr,{}),x(bt.Corner,{})]})}function Xr({className:e,orientation:t="vertical",...n}){return x(bt.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:jn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(bt.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function Yr({className:e,orientation:t="horizontal",...n}){return x(xt,{"data-slot":"separator",orientation:t,className:jn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function Zr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,activeTab:r,createFocusKey:i,onOpenChange:s,onTabChange:o,open:d,session:c}){return x(Qa,{open:d,onOpenChange:s,children:y(Ya,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(Za,{className:"px-5 py-4",children:[x(tr,{children:"Settings"}),x(nr,{children:"Manage accounts, personalization, and project details."})]}),x(Yr,{}),y("div",{className:"grid min-h-0 md:grid-cols-[11rem_minmax(0,1fr)]",children:[y("nav",{className:"flex gap-2 overflow-x-auto border-b p-3 md:flex-col md:border-r md:border-b-0",children:[x(ei,{active:"accounts"===r,icon:x(rt,{}),label:"Accounts",onClick:()=>o("accounts")}),x(ei,{active:"personalization"===r,icon:x(K,{}),label:"Personalization",onClick:()=>o("personalization")}),x(ei,{active:"info"===r,icon:x(ye,{}),label:"Info",onClick:()=>o("info")})]}),x(Jr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["personalization"===r?x(ti,{session:c}):null,"accounts"===r?x(jr,{accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:i,session:c}):null,"info"===r?x(ni,{}):null]})})]})]})})}function ei({active:e,icon:t,label:n,onClick:a}){return y(Ma,{"aria-pressed":e,className:jn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function ti({session:e}){const[t,n]=_(""),a=E(),r=C({queryKey:["account-personalization"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/personalization",{token:e.token})}(e)});R(()=>{r.data&&n(r.data.instructions)},[r.data]);const i=k({mutationFn:()=>async function(e,t){return ia(e.serverUrl,"/api/accounts/personalization",{body:t,method:"PATCH",token:e.token})}(e,{instructions:t}),onError:e=>O.error(ai(e)),onSuccess:e=>{a.setQueryData(["account-personalization"],e),a.invalidateQueries({queryKey:["account-personalization"]}),O.success("Personalization saved.")}}),s=$(()=>(new TextEncoder).encode(t).length,[t]),o=r.data?.maxBytes??32768,d=!!r.data&&t!==r.data.instructions,c=s>o;return y("div",{className:"grid gap-5",children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[x("h3",{className:"flex items-center text-sm font-semibold",children:"Custom instructions"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Saved to the shared Codex personalization file."})]}),y("div",{className:jn("text-xs text-muted-foreground",c&&"text-destructive"),children:[s.toLocaleString()," / ",o.toLocaleString()," bytes"]})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"personalization-instructions",children:"AGENTS.md"}),x(hr,{className:"min-h-72 font-mono text-xs leading-relaxed",disabled:r.isLoading||i.isPending,id:"personalization-instructions",placeholder:"## Working agreements\n\n- Prefer concise answers.\n- Run relevant tests after code changes.",value:t,onChange:e=>n(e.target.value)})]}),r.error?x("p",{className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:ai(r.error)}):null,y("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[x("div",{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(Ma,{disabled:r.isFetching,variant:"outline",onClick:()=>{r.refetch()},children:[r.isFetching?x(Ce,{className:"animate-spin"}):x(Be,{}),"Reload"]}),y(Ma,{disabled:!d||i.isPending,variant:"secondary",onClick:()=>n(r.data?.instructions??""),children:[x(Be,{}),"Reset"]}),y(Ma,{disabled:!d||c||r.isLoading||i.isPending,onClick:()=>i.mutate(),children:[i.isPending?x(Ce,{className:"animate-spin"}):x(Ke,{}),"Save"]})]})]})]})}function ni(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(ye,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(se,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Me,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function ai(e){return e instanceof Error?e.message:"Request failed."}function ri(){const{setTheme:e,theme:t}=M(),n=t??"system";return y(ar,{children:[y(rr,{render:x(Ma,{size:"icon",variant:"ghost"}),children:[x(Ze,{className:"size-4 dark:hidden"}),x(De,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(ir,{align:"end",className:"w-40",children:[y(sr,{onClick:()=>e("light"),children:[x(Ze,{}),"Light","light"===n?x(W,{className:"ml-auto"}):null]}),y(sr,{onClick:()=>e("dark"),children:[x(De,{}),"Dark","dark"===n?x(W,{className:"ml-auto"}):null]}),y(sr,{onClick:()=>e("system"),children:[x(ke,{}),"System","system"===n?x(W,{className:"ml-auto"}):null]})]})]})}function ii({...e}){return x(pt.Root,{"data-slot":"sheet",...e})}function si({...e}){return x(pt.Portal,{"data-slot":"sheet-portal",...e})}function oi({className:e,...t}){return x(pt.Backdrop,{"data-slot":"sheet-overlay",className:jn("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",e),...t})}function di({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(si,{children:[x(oi,{}),y(pt.Popup,{"data-slot":"sheet-content","data-side":n,className:jn("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",e),...r,children:[t,a&&y(pt.Close,{"data-slot":"sheet-close",render:x(Ma,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(st,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function ci({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:jn("flex flex-col gap-0.5 p-4",e),...t})}function li({className:e,...t}){return x(pt.Title,{"data-slot":"sheet-title",className:jn("font-heading text-base font-medium text-foreground",e),...t})}function ui({className:e,...t}){return x(pt.Description,{"data-slot":"sheet-description",className:jn("text-sm text-muted-foreground",e),...t})}var mi=S.createContext(null);function hi(){const e=S.useContext(mi);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function fi({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...s}){const o=function(){const[e,t]=S.useState(()=>"undefined"!=typeof window&&window.innerWidth<768);return S.useEffect(()=>{const e=window.matchMedia("(max-width: 767px)"),n=()=>{t(window.innerWidth<768)};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),[d,c]=S.useState(!1),[l,u]=S.useState(e),m=t??l,h=S.useCallback(e=>{const t="function"==typeof e?e(m):e;n?n(t):u(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,m]),f=S.useCallback(()=>o?c(e=>!e):h(e=>!e),[o,h,c]);S.useEffect(()=>{const e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),f())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[f]);const p=m?"expanded":"collapsed",g=S.useMemo(()=>({state:p,open:m,setOpen:h,isMobile:o,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,o,d,c,f]);return x(mi.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:jn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function pi({side:e="left",variant:t="sidebar",collapsible:n="offcanvas",className:a,children:r,dir:i,...s}){const{isMobile:o,state:d,openMobile:c,setOpenMobile:l}=hi();return"none"===n?x("div",{"data-slot":"sidebar",className:jn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(ii,{open:c,onOpenChange:l,...s,children:y(di,{dir:i,"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:e,children:[y(ci,{className:"sr-only",children:[x(li,{children:"Sidebar"}),x(ui,{children:"Displays the mobile sidebar."})]}),x("div",{className:"flex h-full w-full flex-col",children:r})]})}):y("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?n:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[x("div",{"data-slot":"sidebar-gap",className:jn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),x("div",{"data-slot":"sidebar-container","data-side":e,className:jn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex","floating"===t||"inset"===t?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",a),...s,children:x("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r})})]})}function gi({className:e,onClick:t,...n}){const{toggleSidebar:a}=hi();return y(Ma,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:jn(e),onClick:e=>{t?.(e),a()},...n,children:[x(qe,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function vi({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:jn("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",e),...t})}function wi({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:jn("flex flex-col gap-2 p-2",e),...t})}function bi({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:jn("flex flex-col gap-2 p-2",e),...t})}function xi({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:jn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function yi({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:jn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function Ni({className:e,render:t,...n}){return wt({defaultTagName:"div",props:vt({className:jn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",e)},n),render:t,state:{slot:"sidebar-group-label",sidebar:"group-label"}})}function Ii({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:jn("w-full text-sm",e),...t})}function ki({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:jn("flex w-full min-w-0 flex-col gap-0",e),...t})}function Ai({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:jn("group/menu-item relative",e),...t})}var Ci=mt("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function Ei({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=hi(),c=wt({defaultTagName:"button",props:vt({className:jn(Ci({variant:n,size:a}),i)},s),render:r?x(Gn,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(Bn,{children:[c,x(Hn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function Ti({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=E(),[o,d]=_(new Set),[c,l]=_(e??""),[u,m]=_("directory"),[h,f]=_(e??""),[p,g]=_(""),[v,w]=_(!0),[b,N]=_(!1),[I,A]=_(""),[T,M]=_(""),S=C({enabled:r,queryKey:$i(i,void 0),queryFn:()=>ea(i,void 0)}),P=S.data,D=P?.root??P?.path??"",L=c||P?.path||"",$=k({mutationFn:()=>{const e=I||L||P?.path,t=T.trim();if(!e)throw new Error("Select a folder first.");if(!t)throw new Error("Enter a folder name.");return async function(e,t){return ia(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>O.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),A(""),M(""),O.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),U(e.path)}});function q(e,t="directory"){l(e),m(t),f(e),D&&d(t=>{const n=new Set(t);for(const a of qi(e,D))n.add(a);return n})}function U(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function z(){const e=h.trim()||P?.path;e&&q(e)}return R(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),A(""),M(""))},[e,r]),R(()=>{if(!P)return;const t=e||P.path;l(e=>e||t),f(e=>e||t),d(e=>{const n=new Set(e);for(const a of qi(t,P.root))n.add(a);return n})},[e,P]),x(Qa,{open:r,onOpenChange:n,children:y(Ya,{className:"flex max-h-[88vh] max-w-2xl flex-col gap-0 overflow-hidden rounded-xl bg-background p-0 ring-border sm:max-w-2xl",children:[y(Za,{className:"gap-1 px-4 pb-2 pt-3",children:[x(tr,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(nr,{className:"truncate",children:P?.root?`Workspace root: ${P.root}`:"file"===t?"Pick a file from the workspace.":"Pick a project folder for Codex."})]}),y("div",{className:"grid min-h-0 flex-1 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-1.5 px-3 pb-2 pt-1",children:[y("div",{className:"flex min-w-0 items-center gap-1",children:[x(Ri,{label:"Home",onClick:function(){P?.path&&U(P.path)},children:x(we,{})}),x(Ri,{disabled:!L||$.isPending,label:"New folder",onClick:function(){const e=L||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),A(e),M(""),d(t=>{const n=new Set(t);if(D)for(const a of qi(e,D))n.add(a);return n.add(e),n}))},children:x(fe,{})}),x(Ri,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(Be,{className:jn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[x(Li,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative hidden min-w-0 sm:block",children:[x(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Sa,{className:"h-7 w-44 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]})]}),v?y("div",{className:"flex min-w-0 items-center gap-1",children:[x(Sa,{autoCapitalize:"none",className:"h-8 min-w-0 border-border/70 bg-muted/40 font-mono text-xs",spellCheck:!1,value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&z()}}),x(Ri,{label:"Open path",onClick:z,children:x(X,{})})]}):null,y("div",{className:"flex min-w-0 items-center gap-2 sm:hidden",children:[x(Li,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative min-w-0 flex-1",children:[x(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Sa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]})]}),x("div",{className:"min-h-0 bg-background",children:S.error?x("div",{className:"m-3 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:S.error.message||"Unable to browse workspace."}):x(Jr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?x("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?x(Mi,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:T,createFolderParentPath:I,createFolderPending:$.isPending,selectedPath:L,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),A(""),M("")},onCreateFolderNameChange:M,onCreateFolderSubmit:()=>$.mutate(),onOpen:U,onSelect:q,onToggle:function(e){l(e),m("directory"),f(e),d(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}}):null]})})})]}),y(er,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[x("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),x("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":L||D||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(Ma,{disabled:!L||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!L||"file"===t&&"file"!==u||(a(L),n(!1))},children:[x(W,{}),"file"===t?"Attach":"OK"]}),x(Ma,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function Mi({createFolderName:e,createFolderParentPath:t,createFolderPending:n,directory:a,entry:r,expandedPaths:i,filter:s,level:o,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h,selectedPath:f,selectedType:p,session:g,showCreateFolder:v}){const w=i.has(r.path),b=zi(f)===zi(r.path),N=v&&zi(t)===zi(r.path),I=C({enabled:w&&!a,queryKey:$i(g,r.path),queryFn:()=>ea(g,r.path)}),k=a??I.data,A=$(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return(n?e.filter(e=>e.name.toLocaleLowerCase().includes(n)):e).slice(0,400)}(k?.entries??[],s),[k?.entries,s]),E=A.filter(e=>"directory"===e.type),T=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(Pi,{entry:r,expanded:w,level:o,loading:I.isFetching,selected:b,onOpen:u,onSelect:m,onToggle:h}),w?y("div",{className:"min-w-0",children:[I.error?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-destructive",style:{paddingLeft:34+18*(o+1)+"px"},children:I.error.message||"Unable to load folder."}):null,I.isLoading?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"Loading..."}):null,N?x(Si,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>x(Mi,{createFolderName:e,createFolderParentPath:t,createFolderPending:n,entry:a,expandedPaths:i,filter:s,level:o+1,showCreateFolder:v,selectedPath:f,selectedType:p,session:g,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h},a.path)),T.map(e=>x(Di,{entry:e,level:o+1,selected:"file"===p&&zi(f)===zi(e.path),onSelect:m},e.path)),!k||A.length||N?null:x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"No matching entries."})]}):null]})}function Si({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[x("span",{}),x(fe,{className:"size-4 shrink-0 text-muted-foreground"}),x(Sa,{autoCapitalize:"none",autoFocus:!0,className:"h-7 min-w-0 border-border/70 bg-muted/40 text-xs",disabled:i,placeholder:"Folder name",spellCheck:!1,value:t,onChange:e=>a(e.target.value)}),x(Ri,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(W,{})}),x(Ri,{disabled:i,label:"Cancel new folder",onClick:n,children:x(it,{})})]})}function Pi({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:jn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(X,{className:jn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?he:me,{className:"size-4 shrink-0 text-muted-foreground"}),x("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function Di({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:jn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(ce,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function Li({onClick:e,showPath:t}){return x(Ri,{label:t?"Hide path":"Show path",pressed:t,onClick:e,children:x(t?oe:de,{})})}function Ri({children:e,disabled:t,label:n,onClick:a,pressed:r}){return y(Ma,{"aria-pressed":r,className:jn("size-7 p-0",r&&"bg-muted text-foreground"),disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,x("span",{className:"sr-only",children:n})]})}function $i(e,t){return["workspace-directory",e.serverUrl,t]}function qi(e,t){const n=Ui(t),a=Ui(e);if(!n||!a.startsWith(n))return n?[n]:[];const r=[n],i=a.slice(n.length).replace(/^[\\/]+/,"");let s=n;for(const o of i.split(/[\\/]/).filter(Boolean))s=_i(s,o),r.push(s);return r}function _i(e,t){const n=e.includes("\\")?"\\":"/";return`${Ui(e)}${n}${t}`}function Ui(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function zi(e){return Ui(e).toLocaleLowerCase()}function Oi(e,t,n){return e?new Promise((a,r)=>{e.timeout(15e3).emit(t,n,(e,t)=>{if(e)return void r(e);if(!t?.ok)return void r(new Error(t?.message??"Terminal request failed."));const n={...t};delete n.ok,a(n)})}):Promise.reject(new Error("Terminal socket is not connected."))}function ji(e){const[t,n]=_(!1),[a,r]=_(0),[i,s]=_(null);return R(()=>{if(!e)return n(!1),r(0),void s(null);const t=function(e,t){let n=!1;const a=yt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return a.on("connect",()=>{n||t.onOpen?.()}),a.on("disconnect",()=>{n||t.onClose?.()}),a.on("connect_error",e=>{n||t.onError?.(e)}),a.on("terminal:count",e=>{n||t.onCount?.(e)}),a.on("terminal:project",e=>{n||t.onProject?.(e)}),a.on("terminal:output",e=>{n||t.onOutput?.(e)}),a.on("terminal:exit",e=>{n||t.onExit?.(e)}),{disconnect:()=>{n=!0,a.disconnect()},socket:a}}(e,{onClose:()=>n(!1),onCount:e=>r(Math.max(0,e.count)),onError:()=>n(!1),onOpen:()=>n(!0)});return s(t.socket),()=>{t.disconnect(),n(!1),s(null)}},[e?.serverUrl,e?.token]),{connected:t,count:a,socket:i}}function Fi(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function Bi(e,t){return e.map((e,n)=>({account:e,index:n,score:Gi(t[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}function Gi(e){if(!e)return 0;if(e.rateLimitReachedType||Ir(e))return-1;if(e.credits&&!e.credits.unlimited&&!e.credits.hasCredits)return-1;if(e.credits?.unlimited)return 101;const t=[e.primary,e.secondary].filter(e=>!!e).map(e=>100-Ar(e.usedPercent));return t.length?Math.min(...t):0}function Hi(e,t){const n=e?.windowDurationMins;return n?n>=10080?"Weekly limit":300===n?"5-hour limit":n%60==0?n/60+"-hour limit":`${n}-minute limit`:t}function Ki(e){const t=e<1e12?1e3*e:e;return new Intl.DateTimeFormat(void 0,{day:"numeric",hour:"numeric",minute:"2-digit",month:"short"}).format(new Date(t))}function Wi(e){const t=new Date(e),n=Math.max(0,Date.now()-t.getTime()),a=6e4,r=36e5,i=864e5;if(n<12e4)return"just now";if(n<r)return`${Math.floor(n/a)}m ago`;if(n<i)return`${Math.floor(n/r)}h ago`;if(n<2*i)return"yesterday";if(n<=3*i)return`${Math.floor(n/i)} days ago`;const s=new Date,o=t.getFullYear()===s.getFullYear();return new Intl.DateTimeFormat(void 0,{day:"numeric",month:"short",...o?{}:{year:"numeric"}}).format(t)}function Qi(e){const t=e?.trim();if(!t)return"No folder";const n=t.replace(/[\\/]+$/,"");return n?n.split(/[\\/]/).filter(Boolean).at(-1)??n:t}function Vi(e){const t=e?.trim();return t?t.replace(/[\\/]+$/,"")||t:"No folder"}function Ji(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function Xi(e){return e>=1e6?`${Yi(e/1e6)}M`:e>=1e3?`${Yi(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function Yi(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function Zi(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function es(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function ts(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function ns(e){return"fullAccess"===e?"Full access":"Default"}function as(e,t){let n=e;for(const a of t)n=da(n,a);return n??{data:[],nextCursor:null}}function rs(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function is(e,t){const n=e??[];return n.some(e=>e.id===t.id)?n.map(e=>e.id===t.id?t:e):[...n,t]}function ss(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function os(e){if(!e)return!1;const t=e instanceof Error?e.message:String(e);return e instanceof Qn&&401===e.status||/token_invalidated|authentication token .*invalidated|re-authenticate this account/i.test(t)}function ds(e){return e instanceof Error?e.message:"Request failed."}function cs({chats:e,session:t}){const n=f(),{chatId:a}=g(),r=E(),[i,s]=_(null),[o,d]=_(""),[c,l]=_(null),[u,m]=_(()=>new Set),[h,p]=_(()=>new Set),v=$(()=>e.map(e=>{return{chat:e,dateLabel:Wi(e.lastActivityAt),folderKey:(t=e.workingDirectory,Vi(t)),folderName:Qi(e.workingDirectory),folderPath:Vi(e.workingDirectory)};var t}),[e]),w=$(()=>{const e=new Map;for(const t of v){const n=new Date(t.chat.lastActivityAt).getTime(),a=e.get(t.folderKey);a?(a.items.push(t),a.latestActivityAt=Math.max(a.latestActivityAt,n)):e.set(t.folderKey,{items:[t],key:t.folderKey,latestActivityAt:n,name:t.folderName,path:t.folderPath})}return Array.from(e.values()).map(e=>({...e,items:e.items.sort((e,t)=>new Date(t.chat.lastActivityAt).getTime()-new Date(e.chat.lastActivityAt).getTime()||e.chat.title.localeCompare(t.chat.title,void 0,{sensitivity:"base"}))})).sort((e,t)=>t.latestActivityAt-e.latestActivityAt||e.name.localeCompare(t.name,void 0,{sensitivity:"base"}))},[v]),N=k({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return na(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>O.error(ds(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),I=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>O.error(ds(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(b,{children:[x(ki,{className:"gap-1",children:w.length?w.map(e=>{const t=u.has(e.key),r=h.has(e.key),i=r?e.items:e.items.slice(0,4),o=e.items.length-i.length,c=!!(f=e.path).trim()&&"No folder"!==f;var f;return y(Ai,{children:[y("div",{className:"flex min-w-0 items-center gap-1 pr-1",children:[y("button",{className:"flex h-8 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left text-xs font-medium text-sidebar-foreground/75 outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",title:e.path,type:"button",onClick:()=>m(t=>{const n=new Set(t);return n.has(e.key)?n.delete(e.key):n.add(e.key),n}),children:[x(me,{className:"size-3.5 shrink-0 text-cyan-500"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"shrink-0 text-[0.68rem] font-normal text-muted-foreground",children:e.items.length}),x(J,{className:jn("size-3 shrink-0 text-muted-foreground transition-transform",t&&"-rotate-90")})]}),c?x(Ma,{"aria-label":`New chat in ${e.name}`,className:"size-7 shrink-0",size:"icon-sm",title:`New chat in ${e.path}`,type:"button",variant:"ghost",onClick:()=>n("/",{state:{workingDirectory:e.path}}),children:x(je,{className:"size-3.5"})}):null]}),t?null:y(ki,{className:"gap-0.5 pl-4",children:[i.map(({chat:e,dateLabel:t,folderName:r})=>y(Ai,{className:"flex min-w-0 items-center",children:[y(Ei,{className:"h-7 min-w-0 flex-1 px-2 pr-2! text-xs",isActive:e.id===a,size:"sm",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Pe,{className:"size-3.5 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.title})]}),y(ar,{children:[y(rr,{render:x(Ma,{"aria-label":"Chat actions",className:"pointer-events-none h-7 w-0 shrink-0 overflow-hidden opacity-0 transition-[width,opacity] group-hover/menu-item:pointer-events-auto group-hover/menu-item:ml-1 group-hover/menu-item:w-7 group-hover/menu-item:opacity-100 group-focus-within/menu-item:pointer-events-auto group-focus-within/menu-item:ml-1 group-focus-within/menu-item:w-7 group-focus-within/menu-item:opacity-100 aria-expanded:pointer-events-auto aria-expanded:ml-1 aria-expanded:w-7 aria-expanded:opacity-100",size:"icon-sm",variant:"ghost"}),children:[x(Le,{className:"size-4"}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(ir,{align:"end",className:"w-40",children:[y(sr,{onClick:()=>{s(e),d(e.title)},children:[x(Ue,{}),"Rename"]}),y(sr,{onClick:()=>l(e),children:[x(F,{}),"Archive"]})]})]})]},e.id)),o>0?x("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>new Set(t).add(e.key)),children:[x(J,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:["Show ",o," more"]})]})}):r&&e.items.length>4?x("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>{const n=new Set(t);return n.delete(e.key),n}),children:[x(J,{className:"size-3.5 shrink-0 rotate-180"}),x("span",{className:"min-w-0 truncate",children:"Show less"})]})}):null]})]},e.key)}):x("div",{className:"px-2 py-3 text-sm text-muted-foreground",children:"No chats yet."})}),x(Qa,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ya,{children:[y(Za,{children:[x(tr,{children:"Rename chat"}),x(nr,{children:"Choose a short title for the sidebar."})]}),x(Sa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N.mutate()}}),x(er,{children:x(Ma,{disabled:N.isPending,onClick:()=>N.mutate(),children:"Save"})})]})}),x(Qa,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ya,{children:[y(Za,{children:[x(tr,{children:"Archive chat?"}),y(nr,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(er,{children:[x(Ma,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(Ma,{disabled:I.isPending||!c,variant:"destructive",onClick:()=>{c&&I.mutate(c)},children:[x(F,{}),"Archive"]})]})]})})]})}function ls({...e}){return x(Nt.Root,{"data-slot":"popover",...e})}function us({...e}){return x(Nt.Trigger,{"data-slot":"popover-trigger",...e})}function ms({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Nt.Portal,{children:x(Nt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Nt.Popup,{"data-slot":"popover-content",className:jn("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...i})})})}function hs({className:e,...t}){return x("div",{"data-slot":"popover-header",className:jn("flex flex-col gap-0.5 text-sm",e),...t})}function fs({className:e,...t}){return x(Nt.Title,{"data-slot":"popover-title",className:jn("font-medium",e),...t})}function ps({className:e,...t}){return x(Nt.Description,{"data-slot":"popover-description",className:jn("text-muted-foreground",e),...t})}function gs(e,t){return t&&It.getLanguage(t)?It.highlight(e,{language:t}).value:It.highlightAuto(e).value}function vs({diff:e,error:t,fallback:n,loading:a}){const r=$(()=>function(e){const t=e.trim();return t?function(e){const t=[];let n=[];for(const a of e.split("\n"))a.startsWith("diff --git ")&&n.length&&(t.push(n),n=[]),n.push(a);n.length&&t.push(n);return t}(t).map(bs).filter(e=>!!e):[]}(e),[e]);return t?x("div",{className:"p-3 font-mono text-xs text-destructive",children:ds(t)}):a?x("div",{className:"p-3 font-mono text-xs text-muted-foreground",children:"Loading diff..."}):r.length?x("div",{className:"min-w-max divide-y",children:r.map(e=>y("section",{className:"bg-background",children:[y("div",{className:"sticky top-0 z-10 border-b bg-background/95 px-3 py-2 backdrop-blur",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(ce,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{className:"truncate font-mono text-xs font-medium",children:e.path})]}),e.meta.length?x("div",{className:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 font-mono text-[0.68rem] text-muted-foreground",children:e.meta.slice(0,3).map(e=>x("span",{className:"truncate",children:e},e))}):null]}),x("div",{className:"py-1 font-mono text-xs leading-5",children:e.hunks.map((t,n)=>y("div",{children:[y("div",{className:"grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-y bg-muted/70 text-[0.68rem] text-muted-foreground",children:[x("div",{className:"border-r px-2 py-1 text-right",children:"line"}),x("div",{}),x("div",{className:"whitespace-pre px-2 py-1",children:t.header})]}),t.lines.map((t,a)=>x(ws,{fileLanguage:e.language,line:t},`${e.path}:${n}:${a}`))]},`${e.path}:${n}`))})]},e.path))}):x("pre",{className:"min-h-full min-w-0 overflow-auto p-3 font-mono text-xs leading-5 text-muted-foreground",children:n.trim()||"No tracked diff."})}function ws({fileLanguage:e,line:t}){const n="add"===t.type?"+":"delete"===t.type?"-":"meta"===t.type?"\\":" ",a="delete"===t.type?t.oldNumber:t.newNumber??t.oldNumber,r="meta"===t.type?t.content.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"):gs(t.content||" ",e);return y("div",{className:jn("grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-l-2","add"===t.type&&"border-l-emerald-500 bg-emerald-500/10 text-emerald-950 dark:text-emerald-50","delete"===t.type&&"border-l-red-500 bg-red-500/10 text-red-950 dark:text-red-50","context"===t.type&&"border-l-transparent bg-background","meta"===t.type&&"border-l-transparent bg-muted/40 text-muted-foreground"),children:[x("div",{className:"select-none border-r px-2 text-right text-[0.68rem] text-muted-foreground",children:a??""}),x("div",{className:"select-none px-2 text-center text-muted-foreground",children:n}),x("div",{className:"whitespace-pre px-2",dangerouslySetInnerHTML:{__html:r}})]})}function bs(e){const t=function(e){for(const n of["+++ ","--- "])for(const t of e){if(!t.startsWith(n))continue;const e=xs(t.slice(n.length));if(e&&"/dev/null"!==e)return e}const t=e.find(e=>e.startsWith("diff --git "))?.split(/\s+/)??[];return xs(t[3]??t[2]??"")}(e);if(!t)return null;const n={hunks:[],language:Ns(t),meta:[],path:t};let a=null,r=0,i=0;for(const s of e){if(s.startsWith("@@")){const e=ys(s);r=e.oldStart,i=e.newStart,a={header:s,lines:[]},n.hunks.push(a);continue}a?s.startsWith("+")&&!s.startsWith("+++")?(a.lines.push({content:s.slice(1),newNumber:i,oldNumber:null,type:"add"}),i+=1):s.startsWith("-")&&!s.startsWith("---")?(a.lines.push({content:s.slice(1),newNumber:null,oldNumber:r,type:"delete"}),r+=1):s.startsWith("\\")?a.lines.push({content:s,newNumber:null,oldNumber:null,type:"meta"}):(a.lines.push({content:s.startsWith(" ")?s.slice(1):s,newNumber:i,oldNumber:r,type:"context"}),r+=1,i+=1):s.startsWith("diff --git ")||s.startsWith("--- ")||s.startsWith("+++ ")||n.meta.push(s)}return n.hunks.length?n:null}function xs(e){const t=e.trim().replace(/^"|"$/g,"");return t?t.replace(/^[ab]\//,""):null}function ys(e){const t=e.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);return{newStart:Number(t?.[2]??0),oldStart:Number(t?.[1]??0)}}function Ns(e){switch(e.split(".").pop()?.toLocaleLowerCase()){case"bash":case"sh":return"bash";case"css":return"css";case"go":return"go";case"htm":case"html":case"svg":case"xml":return"xml";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"json":return"json";case"md":case"mdx":return"markdown";case"py":return"python";case"rs":return"rust";case"sql":return"sql";case"ts":case"tsx":return"typescript";case"yaml":case"yml":return"yaml";default:return null}}function Is({commits:e,error:t,fetching:n,selectedHash:a,onSelect:r}){return t?x("div",{className:"p-3 text-xs text-destructive",children:ds(t)}):n&&!e.length?x("div",{className:"p-3 text-xs text-muted-foreground",children:"Loading history..."}):e.length?x(Jr,{className:"min-h-0",children:x("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:jn("grid gap-1 rounded-md px-2 py-2 text-left outline-none hover:bg-muted focus-visible:bg-muted",a===e.hash&&"bg-muted"),type:"button",onClick:()=>r(e.hash),children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.subject}),x("span",{className:"shrink-0 font-mono text-[0.68rem] text-muted-foreground",children:e.shortHash})]}),y("div",{className:"flex min-w-0 items-center gap-1.5 text-[0.68rem] text-muted-foreground",children:[x("span",{className:"min-w-0 truncate",children:e.authorName||"Unknown author"}),x("span",{"aria-hidden":"true",children:"·"}),x("span",{className:"shrink-0",children:ks(e.authoredAt)})]}),e.refs.length?x("div",{className:"flex min-w-0 flex-wrap gap-1",children:e.refs.slice(0,3).map(e=>x("span",{className:"max-w-full truncate rounded bg-secondary px-1.5 py-0.5 text-[0.65rem] text-secondary-foreground",children:e},e))}):null]},e.hash))})}):x("div",{className:"p-3 text-xs text-muted-foreground",children:"No commits found."})}function ks(e){const t=new Date(e);return Number.isNaN(t.getTime())?"Unknown date":t.toLocaleString(void 0,{day:"2-digit",hour:"2-digit",minute:"2-digit",month:"short",year:"numeric"})}function As({chatId:e,className:t,compact:n=!1,disabled:a,session:r}){const[i,s]=_(!1),o=E(),d=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(r,e),refetchInterval:2e4,retry:!1}),c=d.data;if(c&&!c.isRepo)return null;const l=c?.branch??"Git",u=!!c&&!c.clean,m=c?Ps(c):"";return y(Qa,{open:i,onOpenChange:s,children:[y(Ma,{"aria-label":"Git"+(l?`: ${l}`:""),className:jn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:d.isLoading&&!c,size:n?"icon":"sm",title:l,type:"button",variant:"ghost",onClick:()=>s(!0),children:[x(ge,{className:"size-3.5"}),n&&c?x("span",{className:jn("absolute -right-0.5 -top-0.5 size-2 rounded-full ring-2 ring-background",u?"bg-amber-500":"bg-emerald-500")}):y(b,{children:[x("span",{className:"min-w-0 truncate",children:l}),m?x("span",{className:"shrink-0 text-muted-foreground",children:m}):null,x("span",{className:jn("ml-0.5 size-1.5 shrink-0 rounded-full",u?"bg-amber-500":"bg-emerald-500")})]})]}),i?x(Cs,{chatId:e,disabled:a,queryClient:o,session:r,status:c}):null]})}function Cs({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=_(""),[o,d]=_(""),[c,l]=_(""),[u,m]=_(null),[h,f]=_(null),p=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),g=C({enabled:!!e,queryKey:["git-diff",e,h],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return ia(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e,h),retry:!1}),v=C({enabled:!!e,queryKey:["git-history",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/history`,{token:e.token})}(a,e),retry:!1}),w=k({mutationFn:function(t){return async function(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>O.error(ds(e)),onSuccess:t=>{O.success(t.message),d(""),l(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})}}),b=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(p.data,i),N=w.data?.status??r,I=$(()=>N?.changedFiles??[],[N]),A=$(()=>v.data?.commits??[],[v.data]),E=A.find(e=>e.hash===u)??null,T=t||w.isPending||!N||!1===N.isRepo,M=g.data?.diff?.trim()||g.data?.stat?.trim()||"",S=h??"All changes";return R(()=>{f(e=>I.length?e&&I.some(t=>t.path===e)?e:I[0]?.path??null:null)},[I]),R(()=>{m(e=>A.length?e&&A.some(t=>t.hash===e)?e:A[0]?.hash??null:null)},[A]),y(Ya,{className:"flex h-[min(90vh,760px)] w-[min(1180px,calc(100vw-1rem))] max-w-none flex-col overflow-hidden p-0",children:[y(Za,{className:"gap-2 px-4 pb-3 pr-12 pt-4",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(tr,{className:"flex min-w-0 items-center gap-2 text-base",children:[x(ve,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{children:"Git"})]}),x(Es,{branches:b,branchFilter:i,currentBranch:N?.branch,loading:p.isFetching&&!p.data,locked:T,newBranchName:c,onBranchFilterChange:s,onCheckout:e=>{window.confirm(`Switch to ${e}?`)&&w.mutate({action:"checkout",branch:e})},onCreateBranch:()=>w.mutate({action:"createBranch",branch:c.trim()}),onNewBranchNameChange:l}),x("span",{className:jn("size-2 shrink-0 rounded-full",N?N.clean?"bg-emerald-500":"bg-amber-500":"bg-muted-foreground/40")}),x("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:w.isPending?"Running git...":N?Ss(N):"Loading..."}),y("div",{className:"ml-auto flex min-w-0 items-center gap-1",children:[y(Ma,{disabled:T,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&w.mutate({action:"pull"})},children:[x(ie,{}),"Pull"]}),y(Ma,{disabled:T,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&w.mutate({action:"push"})},children:[x(at,{}),"Push"]}),x(Ma,{size:"icon-sm",title:"Refresh git",type:"button",variant:"ghost",onClick:()=>{n.invalidateQueries({queryKey:["git-status",e]}),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})},children:x(Be,{className:jn((w.isPending||g.isFetching||v.isFetching)&&"animate-spin")})})]})]}),x(nr,{className:"sr-only",children:"Manage repository changes, branches, commits, pull, push, and history."})]}),y("div",{className:"grid min-h-0 flex-1 overflow-y-auto border-t lg:grid-cols-[18rem_minmax(0,1fr)_19rem] lg:overflow-hidden",children:[y("section",{className:"grid min-h-[20rem] grid-rows-[auto_minmax(0,1fr)_auto] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Ae,{className:"size-4 text-muted-foreground"}),x("div",{className:"truncate text-sm font-medium",children:"Local Changes"})]}),x("span",{className:"text-xs text-muted-foreground",children:I.length})]}),x(Jr,{className:"min-h-0",children:x(Ts,{files:I,loading:!N,selectedPath:h,onSelect:f})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(hr,{className:"min-h-20 resize-none text-sm",placeholder:"Commit message",value:o,onChange:e=>d(e.target.value)}),y(Ma,{className:"justify-center",disabled:T||!o.trim()||N?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&w.mutate({action:"commit",message:o.trim()})},children:[x(ve,{}),"Commit All"]})]})]}),y("section",{className:"grid min-h-[24rem] min-w-0 grid-rows-[auto_minmax(0,1fr)] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex min-w-0 items-center gap-2 border-b px-3 py-2",children:[x(ue,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0 flex-1",children:[x("div",{className:"truncate text-sm font-medium",children:"Diff Preview"}),x("div",{className:"truncate font-mono text-xs text-muted-foreground",children:S})]}),h?x(Ma,{size:"xs",type:"button",variant:"ghost",onClick:()=>f(null),children:"All"}):null]}),x("div",{className:"min-h-0 min-w-0 overflow-auto bg-muted/20",children:x(vs,{diff:g.data?.diff??"",error:g.error,fallback:g.data?.stat??"",loading:g.isFetching&&!M})})]}),y("section",{className:"grid min-h-[22rem] grid-rows-[auto_minmax(0,1fr)_auto] lg:min-h-0",children:[y("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(te,{className:"size-4 text-muted-foreground"}),x("div",{className:"truncate text-sm font-medium",children:"History"})]}),x("span",{className:"text-xs text-muted-foreground",children:A.length})]}),x(Is,{commits:A,error:v.error,fetching:v.isFetching,selectedHash:u,onSelect:m}),x("div",{className:"min-h-20 border-t p-3 text-xs",children:E?y("div",{className:"grid gap-1",children:[x("div",{className:"line-clamp-2 font-medium",children:E.subject}),x("div",{className:"truncate font-mono text-muted-foreground",children:E.hash}),y("div",{className:"truncate text-muted-foreground",children:[E.authorName||"Unknown author"," ·"," ",ks(E.authoredAt)]})]}):x("div",{className:"text-muted-foreground",children:"No commit selected."})})]})]})]})}function Es({branches:e,branchFilter:t,currentBranch:n,loading:a,locked:r,newBranchName:i,onBranchFilterChange:s,onCheckout:o,onCreateBranch:d,onNewBranchNameChange:c}){return y(ls,{children:[y(us,{render:x(Ma,{className:"max-w-64 justify-start",size:"sm",type:"button",variant:"outline"}),children:[x(ge,{}),x("span",{className:"min-w-0 truncate",children:n??"No branch"}),x(J,{className:"ml-1 size-3.5 text-muted-foreground"})]}),y(ms,{align:"start",className:"w-80 gap-0 p-0",side:"bottom",children:[y(hs,{className:"border-b p-3",children:[x(fs,{children:"Branches"}),y(ps,{children:["Current branch: ",n??"detached"]})]}),x("div",{className:"grid gap-2 p-3",children:x(Sa,{className:"h-8",placeholder:"Find branch",value:t,onChange:e=>s(e.target.value)})}),x(Jr,{className:"max-h-72 border-y",children:y("div",{className:"grid gap-1 p-2",children:[e.map(e=>y(Ma,{className:"justify-start",disabled:r||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>o(e.name),children:[e.current?x(W,{}):x(ge,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),e.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:a?"Loading branches...":"No branches found."})]})}),y("div",{className:"grid gap-2 p-3",children:[x(Sa,{className:"h-8",placeholder:"New branch",value:i,onChange:e=>c(e.target.value)}),y(Ma,{disabled:r||!i.trim(),size:"sm",type:"button",variant:"outline",onClick:d,children:[x(je,{}),"Create branch"]})]})]})]})}function Ts({files:e,loading:t,selectedPath:n,onSelect:a}){return t?x("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Loading status..."}):e.length?x("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:jn("grid min-w-0 grid-cols-[2.25rem_minmax(0,1fr)] items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs outline-none hover:bg-muted focus-visible:bg-muted",n===e.path&&"bg-muted"),type:"button",onClick:()=>a(e.path),children:[x("span",{className:jn("rounded-sm px-1 py-0.5 text-center font-mono text-[0.68rem]",Ms(e.status)),children:e.status.trim()}),x("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):x("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function Ms(e){return e.includes("D")?"bg-red-500/10 text-red-700 dark:text-red-300":e.includes("A")||e.includes("?")?"bg-emerald-500/10 text-emerald-700 dark:text-emerald-300":e.includes("R")||e.includes("C")?"bg-blue-500/10 text-blue-700 dark:text-blue-300":"bg-amber-500/10 text-amber-700 dark:text-amber-300"}function Ss(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,Ps(e)].filter(Boolean).join(" · "):"Git unavailable"}function Ps(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function Ds({active:e,className:t,compact:n=!1,count:a,disabled:r,onToggle:i}){const s=a??0;return y(Ma,{"aria-label":"Terminal","aria-pressed":e,className:jn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:r,size:n?"icon":"sm",title:r?"Choose a working directory":"Terminal",type:"button",variant:"ghost",onClick:i,children:[x(et,{className:"size-3.5"}),x("span",{className:n?"sr-only":"min-w-0 truncate",children:"Terminal"}),s>0?x("span",{className:jn("inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full bg-sidebar-accent px-1 text-[0.65rem] leading-none text-sidebar-accent-foreground",n?"absolute -right-1 -top-1":"ml-0.5"),children:s}):null]})}function Ls({onAddAccount:e,onNewChat:t}){return y(ar,{children:[y(rr,{render:x(Ma,{size:"icon",variant:"ghost"}),children:[x(je,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(ir,{align:"end",className:"w-44",children:[y(sr,{onClick:t,children:[x(Ye,{}),"New chat"]}),y(sr,{onClick:e,children:[x(rt,{}),"Add account"]})]})]})}function Rs(){const{loading:e,session:t}=wa(),{chatId:n}=g(),a=ji(t),[s,o]=_(""),[d,c]=_(null),[l,u]=_(0),[m,h]=_(!1),[p,v]=_("accounts"),[w,N]=_(!1),[I,k]=_(null),T=f(),M=E(),S=D(e=>{u(e?.focusCreate?e=>e+1:0),v("accounts"),h(!0)},[]),P=D(e=>{"accounts"===e&&u(0),v(e)},[]),L=D((e="accounts")=>{v(e),h(!0)},[]),q=C({enabled:!!t,queryKey:["accounts"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts",{token:e.token})}(t),refetchInterval:e=>!!e.state.data?.some(e=>"AUTHENTICATING"===e.status)&&1500}),U=C({enabled:!!t,queryKey:["chats"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/chats",{token:e.token})}(t)}),z=$(()=>q.data??[],[q.data]),O=$(()=>U.data??[],[U.data]),j=$(()=>n?O.find(e=>e.id===n)??null:null,[n,O]),F=j?.title??null;R(()=>{n&&c(n)},[n]);const B=$(()=>{if(n){const e=O.find(e=>e.id===n);if(e)return e}if(d){const e=O.find(e=>e.id===d);if(e)return e}return O[0]??null},[n,O,d]),G=$(()=>z.filter(e=>"CONNECTED"===e.status),[z]);Wn(F);const H=A({queries:G.map(e=>({enabled:!!t,queryKey:["rate-limits",e.id],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}(t,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),K=$(()=>Object.fromEntries(G.map((e,t)=>{const n=yr(H[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[H,G]),W=$(()=>Object.fromEntries(G.map(e=>{const t=K[e.id];return t?[e.id,Nr(t)]:null}).filter(e=>!!e)),[K,G]),Q=$(()=>Object.fromEntries(G.map((e,t)=>[e.id,H[t]?.isFetching??!1])),[H,G]),V=H.some(e=>os(e.error));if(R(()=>{V&&M.invalidateQueries({queryKey:["accounts"]})},[V,M]),R(()=>{s.trim()||N(!1)},[s]),e)return x($s,{});if(!t)return x(r,{replace:!0,to:"/connect"});const J={accounts:z,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeProjectPath:s,chats:O,connectedAccounts:G,lastOpenedChat:B,openAccountManagement:S,openWorkspacePicker:k,session:t,setActiveProjectPath:o,setTerminalOpen:N,terminalCount:a.count,terminalOpen:w,terminalSocket:a.socket,terminalSocketConnected:a.connected};return y(b,{children:[y(fi,{className:"h-svh min-h-0 overflow-hidden",children:[y(pi,{collapsible:"offcanvas",variant:"inset",children:[x(wi,{children:y(Ma,{className:"w-full justify-start",variant:"ghost",onClick:()=>T("/"),children:[x(Ye,{}),x("span",{children:"New chat"})]})}),x(xi,{children:y(yi,{className:"p-0",children:[x(Ni,{children:"Chats"}),x(Ii,{children:x(cs,{chats:O,session:t})})]})}),x(bi,{children:y(Ma,{className:"justify-start",variant:"ghost",onClick:()=>L(),children:[x(Qe,{}),x("span",{children:"Settings"})]})})]}),y(vi,{className:"min-h-0 min-w-0 overflow-hidden",children:[y("header",{className:"flex h-12 shrink-0 items-center justify-between gap-2 border-b px-2",children:[y("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[x(gi,{variant:"ghost",children:x(Se,{})}),x("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold tracking-normal",children:F??(n?"Chat":"New chat")})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[j?y(b,{children:[x(Ds,{active:w,className:jn("md:hidden",w&&"text-foreground"),compact:!0,count:a.count,disabled:!s.trim(),onToggle:()=>N(!w)}),x(As,{chatId:j.id,className:"md:hidden",compact:!0,disabled:"RUNNING"===j.status,session:t})]}):null,x(Ls,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),x(ri,{})]})]}),q.error||U.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:q.error?.message??U.error?.message??"Unable to load workspace data."}):null,x("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:x(i,{context:J})})]})]}),x(Zr,{accounts:z,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeTab:p,createFocusKey:l,open:m,session:t,onTabChange:P,onOpenChange:h}),I?x(Ti,{initialPath:I.initialPath,mode:I.mode,open:!!I,session:t,onOpenChange:e=>{e||k(null)},onSelect:I.onSelect}):null]})}function $s(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})})}It.registerLanguage("bash",kt),It.registerLanguage("css",At),It.registerLanguage("go",Ct),It.registerLanguage("html",$t),It.registerLanguage("javascript",Tt),It.registerLanguage("json",Et),It.registerLanguage("markdown",Mt),It.registerLanguage("python",St),It.registerLanguage("rust",Pt),It.registerLanguage("sh",Dt),It.registerLanguage("sql",Lt),It.registerLanguage("tsx",Rt),It.registerLanguage("typescript",Rt),It.registerLanguage("xml",$t),It.registerLanguage("yaml",qt);var qs=qn({default:()=>_s}),_s=c(function(){return x(Rs,{})}),Us="xedoc.web.terminal-height",zs=null;function Os({className:e,onClosePanel:t,projectPath:n,socket:a,socketConnected:r}){const[i,s]=_(null),[o,d]=_(null),[c,l]=_(Fs),[u,m]=_(!1),[h,f]=_(null),[p,g]=_([]),v=q(c),w=function(){const[e,t]=_(()=>Hs());return R(()=>{const e=window.matchMedia("(max-width: 639px)"),n=()=>t(e.matches);return n(),e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),b=D((e,t)=>Oi(a,e,t),[a]),N=D(e=>{g(e),s(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),I=D(async()=>{const e=await b("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),N(e.terminals),s(e.terminal.id)},[N,n,b,h]);R(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),b("terminal:project:join",{projectPath:n}).then(async n=>{if(!e&&(t=n.projectPath,f(n.projectPath),N(n.terminals),!n.terminals.length)){const t=await b("terminal:create",{cols:80,projectPath:n.projectPath,rows:24});e||(f(t.projectPath),N(t.terminals),s(t.terminal.id))}}).catch(t=>{e||d(Ks(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&Oi(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[N,n,b,a]),R(()=>{if(!a)return;const e=e=>{const t=h??n;e.projectPath===t&&N(e.terminals)};return a.on("terminal:project",e),()=>{a.off("terminal:project",e)}},[N,n,h,a]),R(()=>{v.current=c;const e=window.setTimeout(()=>{Bs(c)},150);return()=>window.clearTimeout(e)},[c]),R(()=>{const e=()=>{l(e=>{const t=Gs(e);return v.current=t,t})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const k=D(async e=>{try{N((await b("terminal:close",{terminalId:e})).terminals)}catch(t){O.error(Ks(t))}},[N,b]),A=D(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),C=D(e=>{e.currentTarget.setPointerCapture(e.pointerId);const t=e.clientY,n=c,a=e=>{const a=Gs(n+t-e.clientY);v.current=a,l(a)},r=()=>{Bs(v.current),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",a),document.addEventListener("pointerup",r)},[c]);return y("section",{className:jn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[x("button",{"aria-label":"Resize terminal",className:"group flex h-3 cursor-row-resize items-center justify-center border-b bg-muted/40",type:"button",onPointerDown:C,children:x("span",{className:"h-0.5 w-10 rounded-full bg-muted-foreground/35 group-hover:bg-muted-foreground/70"})}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"flex min-w-0 items-center gap-1 border-b bg-muted/25 px-2 py-1",children:[x("div",{"aria-label":"Terminals",className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",role:"tablist",children:p.map(e=>y("div",{className:jn("flex h-7 min-w-24 max-w-48 shrink-0 items-center rounded-md text-[11px] sm:h-8 sm:min-w-28 sm:max-w-56 sm:text-xs",e.id===i?"bg-secondary text-secondary-foreground":"hover:bg-accent hover:text-accent-foreground","exited"===e.status&&"text-muted-foreground"),children:[y("button",{"aria-selected":e.id===i,className:"flex h-full min-w-0 flex-1 items-center gap-1.5 px-2 text-left",role:"tab",title:e.title,type:"button",onClick:()=>s(e.id),children:[x(et,{className:"size-3.5 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),x("span",{className:jn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),x("button",{"aria-label":"Close terminal",className:"mr-1 grid size-5 shrink-0 place-items-center rounded-sm hover:bg-background",title:"Close terminal",type:"button",onClick:()=>{k(e.id)},children:x(it,{className:"size-3"})})]},e.id))}),x(Ma,{"aria-label":"New terminal",className:"size-8 shrink-0",disabled:!r||u,size:"icon-sm",title:"New terminal",type:"button",variant:"ghost",onClick:()=>{I().catch(e=>O.error(Ks(e)))},children:u?x(Ce,{className:"animate-spin"}):x(je,{})}),t?x(Ma,{"aria-label":"Hide terminal panel",className:"size-8 shrink-0",size:"icon-sm",title:"Hide terminal panel",type:"button",variant:"ghost",onClick:t,children:x(it,{})}):null]}),x("div",{className:"relative min-h-0 bg-zinc-950",children:o?x("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):p.length?p.map(e=>x(js,{active:e.id===i,compactLayout:w,resizeSignal:c,socket:a,terminal:e,onTerminalUpdated:A},e.id)):x("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function js({active:e,compactLayout:t,onTerminalUpdated:n,resizeSignal:a,socket:r,terminal:i}){const s=q(null),o=q(null),d=q(null),c=q(null),[l,u]=_(!1),m=D(()=>{null===d.current&&(d.current=window.requestAnimationFrame(()=>{d.current=null,o.current?.fit()}))},[]);return R(()=>(m(),()=>{null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null)}),[m,a]),R(()=>{e&&(m(),requestAnimationFrame(()=>{o.current?.fit(),c.current?.focus()}))},[e,m]),R(()=>{const a=s.current;if(!r||!a)return;let l=!1,h=!1;const f=[];u(!1),a.replaceChildren();const p=e=>{r.emit("terminal:input",{data:e,terminalId:i.id})},g=e=>{h&&e.terminalId===i.id&&c.current?.write(e.data)};return r.on("terminal:output",g),async function(){return zs??=import("ghostty-web").then(async e=>(await e.init(),e)),zs}().then(async({FitAddon:a,Terminal:d})=>{if(l||!s.current)return;s.current.replaceChildren();const g=new d({cursorBlink:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',fontSize:t?11:12,scrollback:1e4,theme:{background:"#09090b",foreground:"#e4e4e7"}}),v=new a;o.current=v,c.current=g,g.loadAddon(v),g.open(s.current),v.fit(),v.observeResize(),g.attachCustomKeyEventHandler(e=>"Enter"===e.key&&(p("\r"),!0)),f.push(v),f.push(g.onData(e=>{p(e)})),f.push(g.onResize(e=>{r.emit("terminal:resize",{cols:e.cols,rows:e.rows,terminalId:i.id})})),f.push(g.onTitleChange(e=>{r.emit("terminal:title",{terminalId:i.id,title:e})}));const w=await Oi(r,"terminal:attach",{terminalId:i.id});l||(n(w.terminal),w.replay&&g.write(w.replay),h=!0,requestAnimationFrame(()=>{v.fit(),l||(u(!0),e&&g.focus())}),m())}).catch(e=>{l||O.error(Ks(e))}),()=>{l=!0,null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null),r.off("terminal:output",g),Oi(r,"terminal:detach",{terminalId:i.id}).catch(()=>{});for(const e of f)e.dispose();c.current?.dispose(),a.replaceChildren(),c.current=null,o.current=null,u(!1)}},[e,t,n,m,r,i.id]),y("div",{className:jn("absolute inset-0 h-full min-h-0 overflow-hidden bg-zinc-950 p-1 outline-none sm:p-2",e?"z-10 opacity-100":"z-0 opacity-0 pointer-events-none"),"aria-hidden":!e,style:{caretColor:"transparent"},children:[!l&&e?x("div",{className:"absolute inset-0 grid place-items-center bg-zinc-950 text-xs text-zinc-500",children:"Loading terminal..."}):null,x("div",{className:jn("h-full min-h-0 transition-opacity [&_canvas]:block",l?"opacity-100":"opacity-0"),ref:s})]})}function Fs(){return"undefined"==typeof window?360:Gs(Number.parseInt(window.localStorage.getItem(Us)??"",10)||(Hs()?300:360))}function Bs(e){"undefined"!=typeof window&&window.localStorage.setItem(Us,String(e))}function Gs(e){const t="undefined"!=typeof window&&Hs()?160:220,n="undefined"==typeof window?720:Math.max(t,Math.min(window.innerHeight-(Hs()?96:140),760));return Math.max(t,Math.min(n,e))}function Hs(){return"undefined"!=typeof window&&window.innerWidth<640}function Ks(e){return e instanceof Error?e.message:"Terminal request failed."}function Ws(){return p()}function Qs({className:e,size:t="default",...n}){return x(_t.Root,{"data-slot":"switch","data-size":t,className:jn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(_t.Thumb,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}function Vs({account:e,autoRotate:t,autoRotateDisabled:n,connectedAccounts:a,disabled:r,onAutoRotateChange:i,onSelect:s,pending:o,selectedAccountId:d,selectionDisabled:c,usageSummaries:l}){const u=t?"Auto rotate":e?.displayName??"Choose account",m=t&&e?`Auto rotate: ${e.displayName}`:e?.displayName??"Choose account";return y(ar,{children:[y(rr,{render:x(Ma,{"aria-label":m,className:"max-w-44 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:r||o,size:"sm",title:m,variant:t?"secondary":"ghost"}),children:[o?x(Ce,{className:"animate-spin"}):x(t?Be:rt,{}),x("span",{className:"truncate max-sm:sr-only",children:u})]}),y(ir,{align:"start",className:"w-64",children:[i?y(b,{children:[y(sr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[x(Be,{}),x("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),x(Qs,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),x(mr,{})]}):null,a.map(e=>{const t=e.id===d;return y(sr,{disabled:o||c,onClick:()=>{t||s(e.id)},children:[x("span",{className:"truncate",children:e.displayName}),l[e.id]?x("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:l[e.id]}):x("span",{className:"ml-auto"}),t?x(W,{className:"size-4 shrink-0"}):null]},e.id)})]})]})}function Js(e){return e.map(e=>"image"===e.kind?{dataUrl:e.dataUrl,kind:"image",mimeType:e.mimeType,name:e.name,size:e.size}:{kind:"file",name:e.name,path:e.path,size:e.size})}async function Xs(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await Zs(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Ys(e){const t=Array.from(e.files).filter(e=>e.type.startsWith("image/")),n=Array.from(e.items).filter(e=>"file"===e.kind&&e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(e=>!!e),a=new Set;return[...t,...n].filter(e=>{const t=`${e.name}:${e.size}:${e.lastModified}`;return!a.has(t)&&(a.add(t),!0)})}function Zs(e){return new Promise((t,n)=>{const a=new FileReader;a.onerror=()=>n(a.error??new Error("Unable to read image.")),a.onload=()=>t(String(a.result??"")),a.readAsDataURL(e)})}function eo(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:Ji(t),path:t}}function to({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(b,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(ce,{className:"size-3.5 shrink-0 text-muted-foreground"}),x("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),x(Ma,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(it,{className:"size-3"})})]},e.id))}):null]})}function no({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=Ar(e.usedPercent);return y(ls,{children:[x(us,{render:x(Ma,{"aria-label":`Context ${Math.round(t)}% used`,className:"size-7 px-0 text-xs font-normal text-muted-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8",size:"icon-sm",title:`Context ${Math.round(t)}% used`,variant:"ghost"}),children:x("span",{"aria-hidden":"true",className:"grid size-4 shrink-0 place-items-center rounded-full text-foreground",style:{background:`conic-gradient(var(--foreground) ${3.6*t}deg, var(--muted) 0deg)`},children:x("span",{className:"size-2 rounded-full bg-background"})})}),y(ms,{align:"end",className:"w-72",side:"top",children:[y(hs,{children:[x(fs,{children:"Context window"}),x(ps,{children:"Codex automatically compacts this context when needed."})]}),y("div",{className:"grid gap-3",children:[y("div",{children:[y("div",{className:"mb-1 flex items-center justify-between gap-2 text-sm",children:[y("span",{className:"font-medium",children:[Math.round(t),"% used"]}),y("span",{className:"text-muted-foreground",children:[e.remainingPercent,"% left"]})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:"h-full rounded-full bg-foreground",style:{width:`${t}%`}})})]}),y("div",{className:"rounded-md bg-muted/60 p-2 font-mono text-xs text-muted-foreground",children:[Xi(e.tokensUsed)," /"," ",Xi(e.tokenLimit)," tokens used"]})]})]})]})}function ao({pending:e,snapshot:t}){const n=Nr(t),a=Ir(t);return y(ls,{children:[y(us,{render:x(Ma,{className:jn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:justify-center max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(Ce,{className:"size-3 animate-spin"}):x(ot,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(ms,{align:"start",className:"w-80",side:"top",children:[y(hs,{children:[x(fs,{children:"Usage capacity"}),x(ps,{children:"Current Codex account limits refresh automatically."})]}),x(lo,{pending:e,snapshot:t})]})]})}function ro({visible:e}){return e?y(pr,{className:"pointer-events-none absolute right-1.5 top-1.5 z-10 border-primary/25 bg-background/95 text-foreground shadow-sm backdrop-blur dark:border-primary/40",variant:"outline",children:[x(Ae,{}),x("span",{children:"Plan mode"})]}):null}function io({attachmentDisabled:e,disabled:t,mode:n,modeDisabled:a,onAttachFile:r,onAttachImage:i,onSelectMode:s,pending:o}){const d="plan"===n,c=e||t;return y(ar,{children:[x(rr,{render:x(Ma,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:d?"secondary":"ghost"}),children:o?x(Ce,{className:"animate-spin"}):x(je,{})}),y(ir,{align:"start",className:"w-56",children:[y(sr,{className:"gap-3 py-2",disabled:t||a||o,onClick:e=>{e.preventDefault(),s(d?"default":"plan")},children:[x(Ae,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(Qs,{checked:d,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(sr,{className:"gap-3 py-2",disabled:c||!i,onClick:i,children:[x(be,{}),x("span",{children:"Attach image"})]}),y(sr,{className:"gap-3 py-2",disabled:c||!r,onClick:r,children:[x(_e,{}),x("span",{children:"Attach workspace file"})]})]})]})}function so({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(ar,{children:[y(rr,{render:x(Ma,{"aria-label":ns(t),className:jn("max-w-40 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",r&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-100 aria-expanded:bg-orange-100 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/45 dark:aria-expanded:bg-orange-950/45"),disabled:e||a,size:"sm",title:ns(t),variant:"ghost"}),children:[a?x(Ce,{className:"animate-spin"}):x(r?Je:Ve,{}),x("span",{className:"truncate max-sm:sr-only",children:ns(t)})]}),x(ir,{align:"start",className:"w-48",children:y(lr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(ur,{value:"default",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Default"}),x("span",{className:"text-xs text-muted-foreground",children:"Codex asks as needed."})]})}),x(ur,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Full access"}),x("span",{className:"text-xs text-muted-foreground",children:"No sandbox or approval prompts."})]})})]})})]})}function oo({hasDraft:e,loading:t,onSend:n,onSteer:a,onStop:r,running:i=!1,sendDisabled:s,steerDisabled:o,stopPending:d=!1}){return i&&!e?x(Ma,{"aria-label":"Stop task",className:"size-9 rounded-full",disabled:d||!r,size:"icon",title:"Stop task",type:"button",variant:"secondary",onClick:r,children:d?x(Ce,{className:"animate-spin"}):x(Xe,{})}):i&&e?y("div",{className:"group relative flex shrink-0",children:[x("div",{className:"absolute right-0 bottom-full z-20 hidden min-w-48 pb-2 group-focus-within:block group-hover:block",children:y("div",{className:"grid gap-1 rounded-lg border bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10",children:[y("button",{className:"flex min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",disabled:o||t||!a,type:"button",onClick:a,children:[x(H,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0",children:"Steer active task"})]}),y("button",{className:"flex min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",disabled:s||t,type:"button",onClick:n,children:[x(te,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0",children:"Queue after current task"})]})]})}),x(Ma,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:s||t,size:"icon",title:"Queue message",type:"button",onClick:n,children:t?x(Ce,{className:"animate-spin"}):x(H,{})})]}):x(Ma,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:s||t,size:"icon",type:"button",onClick:n,children:t?x(Ce,{className:"animate-spin"}):x(H,{})})}function co({activeReasoningEffort:e,disabled:t,modelOptions:n,modelValue:a,onSelectModel:r,onSelectReasoning:i,onSelectServiceTier:s,pending:o,reasoningOptions:d,reasoningValue:c,selectedModel:l,serviceTierOptions:u,serviceTierValue:m}){const h=function({effort:e,model:t,modelValue:n,serviceTier:a}){return[(t?.displayName??n)||"Model",e?es(e):null,a?ts(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(ar,{children:[y(rr,{render:x(Ma,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:t||o,size:"sm",title:h,variant:"ghost"}),children:[o?x(Ce,{className:"animate-spin"}):x(re,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(ir,{align:"start",className:"w-72",children:[y(or,{children:[y(dr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(K,{}),x("span",{children:"Intelligence"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:es(e)})]}),x(cr,{className:"w-52",children:y(lr,{value:c,onValueChange:i,children:[x(ur,{value:"",children:"Model default"}),d.map(e=>x(ur,{value:e,children:es(e)},e))]})})]}),y(or,{children:[y(dr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(re,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(cr,{className:"w-64",children:y(lr,{value:a,onValueChange:r,children:[x(ur,{value:"",children:"Default model"}),n.map(e=>x(ur,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(or,{children:[y(dr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(pe,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:ts(m)})]}),x(cr,{className:"w-52",children:y(lr,{value:m,onValueChange:s,children:[x(ur,{value:"",children:"Default speed"}),u.map(e=>x(ur,{value:e,children:ts(e)},e))]})})]})]})]})}function lo({pending:e,snapshot:t}){return t?y("div",{className:"grid gap-2",children:[y("div",{className:"grid gap-1 text-xs text-muted-foreground",children:[t.limitName?x("div",{children:t.limitName}):null,t.planType?y("div",{children:["Plan: ",Zi(t.planType)]}):null,t.credits?y("div",{children:["Credits:"," ",t.credits.unlimited?"unlimited":t.credits.balance??(t.credits.hasCredits?"available":"depleted")]}):null,t.rateLimitReachedType?x("div",{className:"text-destructive",children:(n=t.rateLimitReachedType,Zi(n))}):null]}),x(uo,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(uo,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):x("div",{className:"rounded-md bg-muted/60 p-2 text-xs text-muted-foreground",children:e?"Loading limits...":"Usage limits are unavailable."});var n}function uo({fallbackLabel:e,severity:t,window:n}){const a=Ar(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=kr(n);return y("div",{className:jn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[x("span",{className:"font-medium",children:Hi(n,e)}),x("span",{className:jn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:jn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:jn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?x("span",{children:(s=n.windowDurationMins,s>=10080?`${Math.round(s/10080)} week window`:s%60==0?s/60+" hour window":`${s} minute window`)}):null,n?.resetsAt?y("span",{children:["Resets ",Ki(n.resetsAt)]}):null]})]});var s}function mo(){const{accountRateLimitFetching:e,accountRateLimitSnapshots:t,accountUsageSummaries:n,connectedAccounts:a,lastOpenedChat:r,openAccountManagement:i,openWorkspacePicker:s,session:o,setActiveProjectPath:d,setTerminalOpen:c,terminalOpen:l,terminalSocket:u,terminalSocketConnected:m}=Ws(),p=h(),g=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return"";const t=e.workingDirectory;return"string"==typeof t?t.trim():""}(p.state),v=g?`${p.key}:${g}`:"",[w,b]=_(""),[N,I]=_([]),[A,T]=_("default"),[M,S]=_(null),[P,L]=_(r?.autoRotateAccount??!1),[U,z]=_(r?.accountId??null),[j,F]=_("default"),[B,G]=_(null),[H,K]=_(null),[W,Q]=_(null),[V,J]=_(g||r?.workingDirectory?.trim()||""),X=E(),Y=f(),Z=q(null),ee=q(r?.id??null),te=q(v||null);R(()=>(d(V.trim()),()=>d("")),[d,V]),R(()=>{g&&te.current!==v&&(te.current=v,J(g))},[g,v]),R(()=>{if(!r||ee.current===r.id)return;ee.current=r.id;const e=r.workingDirectory?.trim()??"";e&&J(t=>t.trim()?t:e);const t=r.accountId;t&&z(e=>e??t)},[r]);const ne=$(()=>Bi(a,t),[t,a]),ae=a.find(e=>e.id===U),re=(P&&ae&&Gi(t[ae.id])<0?void 0:ae)??ne??a[0];R(()=>{if(!re?.id)return K(null),S(null),F("default"),G(null),void Q(null);K(re.id),S(re.defaultModel??null),F(re.defaultPermissionMode??"default"),G(re.defaultReasoningEffort??null),Q(re.defaultServiceTier??null)},[re?.defaultModel,re?.defaultPermissionMode,re?.defaultReasoningEffort,re?.defaultServiceTier,re?.id]);const ie=C({enabled:!!re?.id,queryKey:["models",re?.id],queryFn:()=>Zn(o,re.id),staleTime:3e5});R(()=>{os(ie.error)&&X.invalidateQueries({queryKey:["accounts"]})},[ie.error,X]);const se=ie.data?.data??[],oe=H===re?.id,de=oe?M:null,ce=oe?B:null,le=oe?W:null,ue=Fi(se,de),me=ue?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],fe=ce??ue?.defaultReasoningEffort??null,pe=ue?.additionalSpeedTiers??[],ge=re?t[re.id]:void 0,ve=!!re&&!!e[re.id],we=k({mutationFn:({accountId:e,settings:t})=>Xn(o,e,t),onError:e=>O.error(ds(e)),onSuccess:e=>{X.setQueryData(["accounts"],t=>is(t,e))}}),be=k({mutationFn:async()=>{if(!re)throw new Error("Connect an account before starting a chat.");if(!V.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return ia(e.serverUrl,"/api/chats",{body:t,token:e.token})}(o,{accountId:re.id,autoRotateAccount:P,collaborationMode:A,model:de,permissionMode:j,reasoningEffort:ce,serviceTier:le,workingDirectory:V.trim()});return{chat:e,response:await ra(o,e.id,{attachments:Js(N),content:w.trim()})}},onError:e=>O.error(ds(e)),onSuccess:({chat:e,response:t})=>{b(""),I([]),L(!1),T("default"),F(re?.defaultPermissionMode??"default"),J(""),X.setQueryData(["messages",e.id],as(void 0,rs(t))),X.invalidateQueries({queryKey:["chats"]}),Y(`/chat/${e.id}`)}}),xe=D(e=>{e?.length&&Xs(e).then(e=>{I(t=>[...t,...e])}).catch(e=>O.error(ds(e)))},[]),ye=D(()=>{s({initialPath:V,mode:"file",onSelect:e=>{I(t=>[...t,eo(e)])}})},[s,V]),Ne=V.trim(),Ie=l&&!!Ne;return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:x(Jr,{className:"min-h-0 min-w-0 flex-1",viewportProps:{className:"overflow-x-hidden"},children:y("div",{className:jn("mx-auto flex min-h-full w-full flex-col px-4",Ie?"max-w-5xl justify-start py-4 sm:justify-center sm:py-8":"max-w-[760px] justify-center py-8"),children:[a.length?null:y("div",{className:"mb-4 rounded-md border bg-muted/35 p-4 text-sm",children:[x("div",{className:"font-medium",children:"No connected account"}),x("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(Ma,{className:"mt-3",size:"sm",onClick:()=>i(),children:[x(rt,{}),"Manage Accounts"]})]}),Ie?x(Os,{onClosePanel:()=>c(!1),projectPath:Ne,socket:u,socketConnected:m}):y("div",{className:"grid gap-3 rounded-2xl border bg-card/80 p-3 shadow-sm dark:border-border/90 dark:bg-card/55",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-xl border bg-transparent px-2 py-1.5 dark:bg-transparent",children:[x(Sa,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-sm shadow-none focus-visible:ring-0 dark:bg-transparent",placeholder:"Working directory",spellCheck:!1,value:V,onChange:e=>J(e.target.value)}),y(Ma,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>s({initialPath:V,onSelect:J}),children:[x(he,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),y("div",{className:"relative min-w-0",children:[x(ro,{visible:"plan"===A}),x(hr,{className:jn("min-h-32 resize-none border-0 bg-transparent px-1 shadow-none focus-visible:ring-0 dark:bg-transparent","plan"===A&&"pr-24"),placeholder:"Message Codex",value:w,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!be.isPending&&ss(w,V,re,N)&&be.mutate())},onPaste:e=>{const t=Ys(e.clipboardData);t.length&&xe(t)}})]}),x(to,{attachments:N,imageInputRef:Z,onAttachImages:xe,onRemove:e=>I(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[x(io,{attachmentDisabled:be.isPending,disabled:!re,mode:A,onAttachFile:ye,onAttachImage:()=>Z.current?.click(),onSelectMode:T}),x(Vs,{account:re,autoRotate:P,autoRotateDisabled:be.isPending,connectedAccounts:a,disabled:!a.length,selectedAccountId:re?.id??"",usageSummaries:n,onAutoRotateChange:L,onSelect:e=>{z(e)}}),x(co,{activeReasoningEffort:fe,disabled:!re,modelOptions:se,modelValue:de??"",pending:ie.isFetching,reasoningOptions:me,reasoningValue:ce??"",selectedModel:ue,serviceTierOptions:pe,serviceTierValue:le??"",onSelectModel:e=>{const t=re?.id??null;K(t),S(e||null),G(null),Q(null),t&&we.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=re?.id??null,n=e||null;K(t),G(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:n,defaultServiceTier:le}})},onSelectServiceTier:e=>{const t=re?.id??null,n=e||null;K(t),Q(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:ce,defaultServiceTier:n}})}}),x(so,{disabled:!re,mode:j,onSelectMode:e=>{F(e),re?.id&&we.mutate({accountId:re.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(ao,{pending:ve,snapshot:ge}),x(oo,{loading:be.isPending,sendDisabled:!ss(w,V,re,N),onSend:()=>be.mutate()})]})]})]})]})})})}var ho=qn({default:()=>fo}),fo=c(function(){return x(mo,{})}),po=P(null);function go({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=$(()=>function(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=new Map,a=new Set,r=[];for(const s of t){const e=Po(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of vo(e)){const e=n.get(t.path);e?n.set(t.path,{action:Mo(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:So(e.diff,t.diff),path:e.path.length<=t.path.length?e.path:t.path}):n.set(t.path,t)}}const i=Array.from(n.values());return{additions:i.reduce((e,t)=>e+t.additions,0),deletions:i.reduce((e,t)=>e+t.deletions,0),diff:So(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=L(po),o=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(ue,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:i.entries.length?`${xo(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(Io,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(Ma,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:No(i)}),children:[r?x(Ce,{className:"animate-spin"}):x(Ge,{}),"Undo"]}),y(Ma,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:yo(i)}),children:[r?x(Ce,{className:"animate-spin"}):x(oe,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Qa,{children:[y("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3 px-3 py-2 transition-colors hover:bg-muted/50",children:[x("button",{className:"min-w-0 truncate text-left font-mono text-xs underline-offset-2 hover:underline",type:"button",onClick:()=>s?.({path:e.path}),children:e.path}),x(Io,{additions:e.additions,deletions:e.deletions}),y(Va,{render:x(Ma,{size:"icon-sm",variant:"ghost"}),children:[x(J,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ya,{className:"max-w-5xl",children:[y(Za,{children:[x(tr,{children:e.path}),y(nr,{children:[e.action??"Edited"," file change reported by Codex."]})]}),x("pre",{className:"max-h-[70vh] min-w-0 max-w-full overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e.diff?.trim()||i.diff?.trim()||"No diff body was reported for this file."})]})]},e.path)):x("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?x("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>x(pr,{variant:"secondary",children:e},e))}):null]})}function vo(e){if(!e)return[];const t=function(e){const t=e?.trim();return t?function(e){const t=e.split("\n"),n=[];let a=[];for(const r of t)r.startsWith("diff --git ")&&a.length&&(n.push(a),a=[]),a.push(r);a.length&&n.push(a);return n.map(e=>e.join("\n").trim()).filter(Boolean)}(t).reduce((e,t)=>{const n=t.split("\n"),a=function(e){for(const t of["+++ ","--- "])for(const n of e){if(!n.startsWith(t))continue;const e=bo(n.slice(t.length));if(e&&"/dev/null"!==e)return e}for(const t of e){if(!t.startsWith("diff --git "))continue;const e=t.split(/\s+/),n=bo(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:wo(n),additions:n.filter(e=>e.startsWith("+")&&!e.startsWith("+++")).length,deletions:n.filter(e=>e.startsWith("-")&&!e.startsWith("---")).length,diff:t,path:a}),e):e},[]):[]}(e.diff),n=(e.changes??[]).reduce((e,t)=>{if(!t||"object"!=typeof t||Array.isArray(t))return e;const n=t,a=ko(n.path,n.filePath,n.file,n.name);return a?(e.push({action:Co(ko(n.action,n.kind,n.type)??"Edited"),additions:Ao(n.additions),deletions:Ao(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>Eo(t.path,e.path));return n?{...e,additions:e.additions||n.additions,deletions:e.deletions||n.deletions,diff:n.diff}:e}),...t.filter(e=>!n.some(t=>Eo(t.path,e.path)))];if(t.length)return t;const a=e.paths??[];if(!a.length)return[];const r=e.additions??0,i=e.deletions??0;return a.map((e,t)=>({action:"Edited",additions:1===a.length||0===t?r:0,deletions:1===a.length||0===t?i:0,path:e}))}function wo(e){return e.some(e=>e.startsWith("new file mode ")||"--- /dev/null"===e)?"Created":e.some(e=>e.startsWith("deleted file mode ")||"+++ /dev/null"===e)?"Deleted":e.some(e=>e.startsWith("rename from ")||e.startsWith("rename to "))?"Renamed":"Edited"}function bo(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function xo(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function yo(e){return["Review the changes from the latest completed editing turn.","Look for bugs, regressions, missed requirements, and risky assumptions. Do not modify files unless I explicitly ask.","","Changed files:",...e.entries.map(e=>`- ${e.path} (+${e.additions} -${e.deletions})`)].join("\n")}function No(e){return["Undo the changes from the latest completed editing turn.","Revert only the files listed below. Preserve unrelated user edits and stop with an explanation if the reverse patch cannot be applied cleanly.","","Target files:",...e.entries.map(e=>`- ${e.path} (+${e.additions} -${e.deletions})`)].join("\n")}function Io({additions:e,deletions:t}){return e||t?y("span",{className:"shrink-0 whitespace-nowrap font-mono text-xs",children:[y("span",{className:"text-emerald-600 dark:text-emerald-400",children:["+",e]}),x("span",{className:"mx-1 text-muted-foreground",children:" "}),y("span",{className:"text-red-600 dark:text-red-400",children:["-",t]})]}):null}function ko(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function Ao(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){const t=Number(e);return Number.isFinite(t)?t:0}return 0}function Co(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function Eo(e,t){return To(e)===To(t)}function To(e){return bo(e).replace(/\\/g,"/").replace(/^\.\//,"")}function Mo(e,t){return e?t&&e!==t?"Created"===e||"Created"===t?"Created":"Deleted"===e||"Deleted"===t?"Deleted":"Renamed"===e||"Renamed"===t?"Renamed":"Edited":e:t??"Edited"}function So(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function Po(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:void 0}function Do(e){return function(e){const t=[];let n=[];const a=()=>{if(n.length){if(1===n.length){const[e]=n;t.push({id:`message:${e.id}`,message:e,type:"message"})}else t.push({id:`tool-burst:${n.map(e=>e.id).join(":")}`,messages:n,type:"toolBurst"});n=[]}};for(const r of e)if("previousActions"!==r.type&&"fileChanges"!==r.type){if(Qo(r.message)){if(Fo(r.message)){a(),t.push({id:`message:${r.message.id}`,message:r.message,type:"message"});continue}const e=n.at(-1);if(!e||Vo(e,r.message)){n.push(r.message);continue}a(),n.push(r.message);continue}a(),t.push({id:`message:${r.message.id}`,message:r.message,type:"message"})}else a(),t.push({id:`${r.type}:${r.messages.map(e=>e.id).join(":")}`,messages:r.messages,type:r.type});return a(),t}(function(e){const t=[];let n=[];const a=()=>{if(!n.length)return;const e=Math.min(...n.map(e=>e.sequence));t.push({messages:n,sequence:e,type:"fileChanges"}),n=[]};for(const r of e){if("message"!==r.type||"FILE_CHANGE"!==r.message.kind){a(),t.push(r);continue}const e=n.at(-1);e&&Jo(e)!==Jo(r.message)&&a(),n.push(r.message)}return a(),t}(function(e){if(e.some(Fo))return e.map(e=>({message:e,sequence:e.sequence,type:"message"}));const t=function(e){return[...e].reverse().find(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind&&e.content.trim().length>0)}(e),n=[],a=[];for(const d of e)Wo(d,t)?n.push(d):a.push(d);const r=a.map(e=>({message:e,sequence:e.sequence,type:"message"}));if(!n.length)return r;const i=Math.min(...n.map(e=>e.sequence)),s=r.findIndex(e=>e.sequence>i),o={messages:n,sequence:i,type:"previousActions"};return s<0?[...r,o]:[...r.slice(0,s),o,...r.slice(s)]}(function(e){const t=[];let n=[];const a=()=>{n.length&&(t.push(function(e){return 1===e.length?e[0]:{...e[e.length-1],content:Oo(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:jo(e)}}(n)),n=[])};for(const r of e)if("ASSISTANT"!==r.role||"CHAT"!==r.kind)a(),t.push(r);else{if(Fo(r)){a(),t.push(r);continue}n.push(r)}return a(),t}([...e].sort((e,t)=>e.sequence-t.sequence)))))}function Lo(e){const t=Ro([...e]).filter(e=>!Ho(e)).sort((e,t)=>e.sequence-t.sequence),n=new Map;for(const a of t){const e=a.turnId?`turn:${a.turnId}`:`message:${a.id}`,t=n.get(e);t?t.push(a):n.set(e,[a])}return Array.from(n.values()).flatMap(e=>e.some(Fo)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}function Ro(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=$o(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=qo(n[t],r):(a.set(e,n.length),n.push(r))}return n}function $o(e){return e.requestId?`${e.runId??e.chatId}:${e.kind}:request:${e.requestId}`:e.itemId?`${e.runId??e.chatId}:${e.kind}:item:${e.itemId}`:null}function qo(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:_o(t.status)>_o(e.status)?{...e,status:t.status}:e:_o(t.status)>_o(e.status)||t.sequence>=e.sequence?t:e}function _o(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Uo(e,t){return"ASSISTANT"===e?.role&&"CHAT"===e.kind&&"ASSISTANT"===t.role&&"CHAT"===t.kind}function zo(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function Oo(e){const t=[];for(const n of e)if(n.trim()&&!(t.findIndex(e=>e===n||e.startsWith(n))>=0)){for(let e=t.length-1;e>=0;e-=1)n.startsWith(t[e])&&t.splice(e,1);t.push(n)}return t.join("\n\n")}function jo(e){return e.some(e=>"FAILED"===e.status)?"FAILED":e.some(e=>"STREAMING"===e.status)?"STREAMING":e.some(e=>"PENDING"===e.status)?"PENDING":"COMPLETED"}function Fo(e){return"STREAMING"===e.status||"PENDING"===e.status}function Bo(e){return{pendingRequest:Ro(e).sort((e,t)=>t.sequence-e.sequence).find(Go)}}function Go(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=Zo(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Ho(e){return!!Ko(e)||(!!function(e){return"THINKING"===e.kind&&"thinking..."===e.content.trim().toLowerCase()}(e)||"CHAT"===e.kind&&"ASSISTANT"===e.role&&(0===e.content.trim().length&&"PENDING"!==e.status&&"STREAMING"!==e.status))}function Ko(e){if("PLAN"!==e.kind)return!1;const t=Zo(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}function Wo(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Go(e)&&("APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||("THINKING"===e.kind||"TOOL_ACTIVITY"===e.kind||("COMMAND_EXECUTION"===e.kind?"FAILED"!==e.status:"ASSISTANT"===e.role&&"CHAT"===e.kind&&(!!t&&t.content.includes(e.content.trim())))))))}function Qo(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Vo(e,t){return Jo(e)===Jo(t)}function Jo(e){return e.runId??e.turnId??e.chatId}function Xo(e){return"COMMAND_EXECUTION"===e.kind?x(et,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?x(Te,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x(Yo,{}):x(ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Yo(){return x(Ae,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Zo(e){return e&&"object"==typeof e?e:void 0}function ed(e){const t=e.metadata;return Array.isArray(t?.attachments)?t.attachments.filter(e=>{if(!e||"object"!=typeof e)return!1;const t=e.kind;return"image"===t||"file"===t}):[]}function td({chatId:e,onClose:t,session:n,target:a}){const r=C({enabled:!!a,queryKey:["workspace-file",e,a?.path,a?.line??null],queryFn:()=>async function(e,t,n,a){const r=new URLSearchParams({path:n});return a&&a>0&&r.set("line",String(a)),ia(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(Qa,{open:!!a,onOpenChange:e=>!e&&t(),children:y(Ya,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Za,{className:"gap-1 px-4 pb-2 pt-4",children:[y(tr,{className:"flex min-w-0 items-center gap-2",children:[x(le,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(nr,{className:"truncate",children:ad(r.data)})]}),x("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[x(Ce,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?x("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?x(nd,{file:r.data}):null})]})})}function nd({file:e}){const t=q({}),n=$(()=>(e.content??"").split(/\r?\n/),[e.content]);return R(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?x("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):x(Jr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[x("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:jn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[x("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),x("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:gs(n||" ",e.language)}})]},r)})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function ad(e){return e?[rd(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function rd(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function id({text:e}){const t=L(po);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(Ut,{remarkPlugins:[zt],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?x("button",{className:jn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:jn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:jn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:jn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>x("del",{className:jn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:jn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:jn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:jn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:jn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:jn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:jn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:jn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:jn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:jn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>x("input","checkbox"===t?{className:jn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>x("li",{className:jn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:jn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:jn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:jn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>x("strong",{className:jn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:jn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>x("ul",{className:jn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:od(e)})})}function sd(e){return e.map(e=>"text"===e.type?e.text:"").join("").trim()}function od(e){return dd(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function dd(e){const t=[],n=/<image>\s*([\s\S]*?)\s*<\/image>/gi;let a,r=0;for(;a=n.exec(e);){a.index>r&&t.push({text:e.slice(r,a.index),type:"text"});const i=cd(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"});const s=/^\s*<\/image>/i.exec(e.slice(n.lastIndex));i&&s&&(n.lastIndex+=s[0].length),r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),type:"text"}),t.length?t:[{text:e,type:"text"}]}function cd(e){let t=e.trim();for(;/^<image>/i.test(t);)t=t.replace(/^<image>\s*/i,"").trim();for(;/<\/image>$/i.test(t);)t=t.replace(/\s*<\/image>$/i,"").trim();return!t||/[\u0000-\u001f\u007f]/.test(t)||t.includes("\n")||t.includes("\r")?null:t.startsWith("/")||t.startsWith("data:image/")||/^https?:\/\//i.test(t)?t:null}function ld({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,fileChangeActionDisabled:o,fileChangeActionPending:d,onSteerQueuedMessage:c,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,showProcessingTail:f,session:p}){const g=$(()=>new Set(t??[]),[t]),v=$(()=>Lo(n).filter(e=>!g.has(e.id)),[g,n]),w=$(()=>function(e){const t=[];for(const n of e){if("USER"===n.role){t.push({id:`user:${n.id}`,message:n,type:"user"});continue}const e=zo(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?"codex"===a?.type&&Uo(a.messages.at(-1),n)?a.messages.push(n):t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(v),[v]),b=$(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&Ud(n))return n.id}return null}(v),[v]),[N,I]=_(null);return y(po.Provider,{value:I,children:[w.map(t=>x(fd,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:b,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onSteerQueuedMessage:c,onUndoFileChanges:s,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,session:p},t.id)),f?x(wd,{}):null,x(td,{chatId:e,session:p,target:N,onClose:()=>I(null)})]})}function ud({chatId:e,messages:t,session:n}){const a=$(()=>Bo(t),[t]);return a.pendingRequest?x("div",{className:"grid min-w-0 gap-1.5 overflow-hidden border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5 overflow-hidden",children:x(kd,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function md({message:e}){if(!e)return null;const t=Zo(e.metadata),n=t?.steps??[],a=n.filter(e=>Pd(e.status)).length,r=function(e){const t=e.findIndex(e=>Dd(e.status));if(t>=0)return t;const n=e.findIndex(e=>!Pd(e.status));return n>=0?n:e.length?e.length-1:-1}(n),i=(r>=0?n[r]:void 0)?.step??Rd(t?.explanation)??Rd(e.content)??"Planning...",s=function(e,t){return t.some(e=>Dd(e.status))||Fo(e)?"in progress":t.length?"pending":"planning"}(e,n);return x("section",{"aria-label":"Active plan","aria-live":"polite",className:"border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto w-full min-w-0 max-w-3xl",children:x("div",{className:"min-w-0 overflow-hidden rounded-lg border bg-muted/20 shadow-sm",children:y("div",{className:"grid min-w-0 gap-2 p-3",children:[y("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[y("div",{className:"flex min-w-0 items-start gap-2",children:[x("div",{className:"mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-md bg-background text-muted-foreground",children:x(Ae,{className:"size-4"})}),y("div",{className:"min-w-0",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[x("span",{className:"text-sm font-medium",children:"Plan"}),x(pr,{variant:"secondary",children:s})]}),x("div",{className:"mt-0.5 min-w-0 truncate text-xs text-muted-foreground",children:i})]})]}),n.length?y(pr,{className:"shrink-0",variant:"outline",children:[a,"/",n.length]}):null]}),n.length?x("div",{className:"grid max-h-44 min-w-0 gap-1.5 overflow-y-auto pr-1",children:n.map((e,t)=>{const n=t===r;return y("div",{className:jn("grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 rounded-md px-2 py-1.5 text-xs",n?"border bg-background shadow-xs":"text-muted-foreground"),children:[x(Sd,{highlighted:n,status:e.status}),x("div",{className:"min-w-0 break-words leading-5 text-foreground",children:e.step}),x("span",{className:"shrink-0 rounded bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground",children:(a=e.status,a.trim().replace(/[_-]+/g," ").toLowerCase()||"pending")})]},`${e.step}-${t}`);var a})}):null]})})})})}function hd({disabled:e,messages:t,onSteerQueuedMessage:n,pendingQueueId:a}){return t.length?x("section",{className:"border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5",children:y("div",{className:"min-w-0 overflow-hidden rounded-lg border bg-muted/20 shadow-sm",children:[y("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[x(te,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{children:"Queued messages"})]}),x(pr,{variant:"outline",children:t.length})]}),x("div",{className:"grid max-h-44 min-w-0 gap-1 overflow-y-auto p-2",children:t.map(t=>{const r=xd(t)?.queueId,i=a===r;return y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 rounded-md bg-background px-2 py-1.5 text-xs",children:[x(te,{className:"size-3.5 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate text-foreground",children:Nd(t)}),x("div",{className:"text-muted-foreground",children:"Queued after the current task"})]}),y(Ma,{className:"h-7 shrink-0 px-2 text-xs",disabled:e||i||!r||!n,size:"sm",type:"button",variant:"outline",onClick:()=>{r&&n?.({message:t,queueId:r})},children:[i?x(Ce,{className:"animate-spin"}):x(G,{}),"Steer"]})]},t.id)})})]})})}):null}function fd({chatId:e,entry:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onSteerQueuedMessage:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,session:f}){return"user"===t.type?x(vd,{message:t.message,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,onSteerQueuedMessage:d}):x(pd,{chatId:e,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,messages:t.messages,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:f})}function pd({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:a,messages:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){const m=$(()=>Do(r),[r]),h=r.reduce((e,t)=>"FAILED"===t.status?"FAILED":"STREAMING"===t.status?"FAILED"===e?e:"STREAMING":"PENDING"===t.status?"FAILED"===e||"STREAMING"===e?e:"PENDING":e,null);return x("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"min-w-0 flex-1 overflow-hidden",children:[y("div",{className:"mb-1 flex items-center gap-2 pl-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:"Codex"}),h?x(gr,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(gd,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:r,latestProposedPlanMessageId:a,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u},r.id))})]})})}function gd({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"toolBurst"===a.type?x(Od,{messages:a.messages}):"previousActions"===a.type?x(jd,{messages:a.messages}):"fileChanges"===a.type?x(go,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(kd,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:r,message:a.message,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function vd({message:e,onSteerQueuedMessage:t,queuedMessageActionDisabled:n,queuedMessageActionPendingId:a}){const r=ed(e),i=xd(e),s=$(()=>dd(e.content),[e.content]),o=sd(s),d=$(()=>function(e,t){const n=[],a=new Set,r=e=>{a.has(e.src)||(a.add(e.src),n.push(e))};return e.forEach((e,t)=>{"image"===e.type&&r({id:`inline-image:${t}:${e.src}`,name:"Attached image",src:e.src})}),t.forEach(e=>{"image"===e.kind&&r({id:e.id,name:e.name,src:e.url})}),n}(s,r),[r,s]),c=r.filter(e=>"file"===e.kind),[l,u]=_(null),m=o||c.length;return y("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:[y("div",{className:"flex min-w-0 max-w-[84%] flex-col items-end gap-2 overflow-hidden",children:[d.length?x("div",{className:"flex max-w-full flex-wrap justify-end gap-1.5",children:d.map(e=>x("button",{className:"size-16 overflow-hidden rounded-lg border bg-muted outline-none ring-offset-background transition-opacity hover:opacity-90 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",title:e.name,type:"button",onClick:()=>u(e),children:x("img",{alt:e.name,className:"size-full object-cover",loading:"lazy",src:e.src})},e.id))}):null,m?y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border border-border bg-card px-3 py-2 text-sm leading-6 text-card-foreground",children:[y("div",{className:"mb-1 flex min-w-0 items-center justify-between gap-2 text-muted-foreground",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(rt,{className:"size-3.5 opacity-80"}),x("span",{className:"text-xs font-medium",children:"You"})]}),i?x(pr,{className:"shrink-0",variant:i.badgeVariant,children:i.label}):null]}),o?x("div",{className:"whitespace-pre-wrap break-words",children:o}):null,c.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:c.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border bg-muted/35 px-2 py-1 text-xs text-muted-foreground",children:[x(le,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:e.path})]},e.id))}):null,i?x(bd,{delivery:i,disabled:n,pending:a===i.queueId,onSteerQueuedMessage:i.queueId?()=>t?.({message:e,queueId:i.queueId}):void 0}):null]}):null]}),x(Qa,{open:!!l,onOpenChange:e=>{e||u(null)},children:y(Ya,{className:"flex h-[min(90vh,900px)] w-[min(92vw,1000px)] max-w-none flex-col overflow-hidden p-0",children:[y(Za,{className:"sr-only",children:[x(tr,{children:l?.name??"Image preview"}),x(nr,{children:"Full size image preview."})]}),l?x("div",{className:"flex min-h-0 flex-1 items-center justify-center bg-black p-2",children:x("img",{alt:l.name,className:"max-h-full max-w-full object-contain",src:l.src})}):null]})})]})}function wd(){return x("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"flex min-w-0 items-center gap-2 rounded-md px-1 py-2 text-xs text-muted-foreground",children:[x(Ce,{className:"size-3.5 animate-spin"}),x("span",{children:"Codex is processing"})]})})}function bd({delivery:e,disabled:t,onSteerQueuedMessage:n,pending:a}){const r=e.canSteer&&!!n&&!t&&!a;return y("div",{className:"mt-2 flex min-w-0 flex-wrap items-center justify-between gap-2 border-t pt-2 text-xs text-muted-foreground",children:[x("span",{className:"min-w-0 break-words leading-5",children:e.detail}),e.canSteer?y(Ma,{className:"h-7 shrink-0 px-2 text-xs",disabled:!r,size:"sm",type:"button",variant:"outline",onClick:n,children:[a?x(Ce,{className:"animate-spin"}):x(G,{}),"Steer"]}):null]})}function xd(e){const t=Zo(e.metadata),n=Id(t?.delivery),a=Id(t?.queueStatus),r=Id(t?.queueId),i=Id(t?.error);if("queue"===n||r){const e=a??"queued";return"failed"===e?{badgeVariant:"destructive",canSteer:!1,detail:i?`Queue failed: ${i}`:"Queued message failed.",label:"failed",queueId:r}:"running"===e?{badgeVariant:"secondary",canSteer:!1,detail:"Queued message is now running.",label:"running",queueId:r}:"steered"===e||"steer"===n?{badgeVariant:"secondary",canSteer:!1,detail:"Steered into the active task.",label:"steered",queueId:r}:{badgeVariant:"outline",canSteer:!!r,detail:"Queued after the current task.",label:"queued",queueId:r}}return"steer"===n?{badgeVariant:"secondary",canSteer:!1,detail:"Steered into the active task.",label:"steered"}:null}function yd(e){return"USER"===e.role&&!0===xd(e)?.canSteer}function Nd(e){const t=sd(dd(e.content)).trim();if(t)return t.length>160?`${t.slice(0,160)}...`:t;const n=ed(e);return n.length?`${n.length} ${1===n.length?"attachment":"attachments"}`:"Queued message"}function Id(e){return"string"==typeof e?e:void 0}function kd({chatId:e,compact:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,onReviewFileChanges:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:m}){switch(i.kind){case"CHAT":return i.content.trim()?x(Ed,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(Ad,{}):null;case"THINKING":return x(Cd,{message:i});case"PLAN":return x(Td,{metadata:Zo(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(zd,{metadata:Zo(i.metadata)});case"FILE_CHANGE":return x(go,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(Hd,{chatId:e,compact:t,message:i,metadata:Zo(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(Kd,{chatId:e,compact:t,message:i,metadata:Zo(i.metadata),session:m});case"ERROR":return x(ec,{metadata:Zo(i.metadata),text:i.content});default:return x(tc,{text:i.content})}}function Ad(){return x("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>x("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function Cd({message:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border border-dashed bg-muted/20 text-sm",open:"STREAMING"===e.status,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),x("span",{children:"Reasoning"})]}),e.content?x("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function Ed({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Ud(t),o="envelope"===s?.source?s.surroundingText:t.content,d=!!s&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"grid min-w-0 gap-2",children:[o.trim()?x(id,{text:o}):null,s?x($d,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Td({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Ud(t),c=(d?.body??t.content).trim(),l=!!d&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ae,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x(id,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(tc,{text:"Planning..."}),o.length?x("div",{className:"mt-3 grid min-w-0 gap-2",children:o.map((e,t)=>y("div",{className:"flex items-start gap-2",children:[x(pr,{variant:"completed"===e.status?"default":"secondary",children:e.status}),x("div",{className:"min-w-0 flex-1",children:e.step})]},`${e.step}-${t}`))}):null,l&&d?x(qd,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function Md(e){if("SYSTEM"!==e.role||"PLAN"!==e.kind)return!1;if("FAILED"===e.status||Ko(e))return!1;const t=Zo(e.metadata);if("progress"!==t?.presentation)return!1;const n=t.steps??[];return(!n.length||!n.every(e=>Pd(e.status)))&&(n.length>0||Fo(e)||!!Rd(t.explanation)||!!Rd(e.content))}function Sd({highlighted:e,status:t}){return Pd(t)?x(W,{className:"mt-0.5 size-3.5 text-primary"}):Dd(t)?x(Ce,{className:"mt-0.5 size-3.5 animate-spin text-muted-foreground"}):x("span",{className:jn("mt-1.5 size-2 rounded-full",e?"bg-primary":"bg-muted-foreground/35")})}function Pd(e){return["complete","completed","done","success","succeeded"].includes(Ld(e))}function Dd(e){return["active","in_progress","running","started","streaming","working"].includes(Ld(e))}function Ld(e){return e.trim().toLowerCase().replace(/[\s-]+/g,"_")}function Rd(e){const t=e?.trim();return t?["...","planning..."].includes(t.toLowerCase())?null:t:null}function $d({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:s}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ae,{className:"size-4"}),"Proposed plan"]}),x(id,{text:i}),s?x(qd,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function qd({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=_(""),[d,c]=_(!1),l=e||r,u=!!a&&s.trim().length>0&&!l;return y("div",{className:"mt-3 flex min-w-0 flex-wrap items-center gap-2 border-t pt-3",children:[y(Ma,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ce,{className:"animate-spin"}):x(G,{}),"Implement plan"]}),y(Qa,{open:d,onOpenChange:c,children:[y(Va,{render:x(Ma,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(ze,{}),"Tell Codex what to change"]}),y(Ya,{children:[y(Za,{children:[x(tr,{children:"Tell Codex What To Change"}),x(nr,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[x(hr,{className:"min-h-32 resize-y",placeholder:"Change the plan to...",value:s,onChange:e=>o(e.target.value)}),y("div",{className:"flex justify-end gap-2",children:[x(Ma,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(Ma,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ce,{className:"animate-spin"}):x(ze,{}),"Send changes"]})]})]})]})]})]})}var _d=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Ud(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=_d.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(_d,"").trim()}:"PLAN"!==e.kind||"result"!==Zo(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function zd({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),x("code",{className:"min-w-0 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:e?.command??"command"})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(pr,{variant:Gd(e),children:Bd(e)}),"number"==typeof e?.exitCode?x(pr,{variant:0===e.exitCode?"secondary":"destructive",children:e.exitCode}):null]})]}),y("div",{className:"min-w-0 max-w-full overflow-hidden border-t px-3 py-2",children:[e?.cwd?x("div",{className:"mb-2 truncate text-xs text-muted-foreground",children:e.cwd}):null,x("pre",{className:"max-h-64 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e?.output||"(no output)"})]})]})}function Od({messages:e}){const[t,n]=_(!1),a=[...e].reverse().find(e=>"STREAMING"===e.status||"PENDING"===e.status),r=t?e:function(e){const t=new Set;return e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0))}([...e.slice(0,ac),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=jo(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(pr,{variant:"secondary",children:s.toLowerCase()})]}),y("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:[r.map(e=>x(Fd,{message:e},e.id)),i>0?y(Ma,{className:"mt-1 justify-start px-2 text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:e=>{e.preventDefault(),n(!0)},children:["+",i," commands/actions"]}):null]})]})}function jd({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous"," ",1===e.length?"action":"actions"]})]}),x(pr,{variant:"secondary",children:"collapsed"})]}),x("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:e.map(e=>x(Fd,{message:e},e.id))})]})}function Fd({message:e}){const t=Zo(e.metadata),n=Zo(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(Zo(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===Zo(t)?.requestKind?"Permission request":"Approval request":"USER_INPUT_PROMPT"===e.kind?"Input request":"CHAT"===e.kind?"Assistant draft":e.kind.toLowerCase().replaceAll("_"," ")}(e,t),r="COMMAND_EXECUTION"===e.kind?n?.output||n?.cwd:e.content.trim();return y("div",{className:"grid min-w-0 max-w-full grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 overflow-hidden rounded-md bg-muted/45 px-2 py-1.5",children:[Xo(e),y("div",{className:"min-w-0",children:[x("div",{className:"truncate text-xs font-medium",children:a}),r?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:r}):null]}),x(pr,{variant:"secondary",children:e.status.toLowerCase()})]})}function Bd(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function Gd(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function Hd({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=nc(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(Wd,{icon:x(Te,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:Qd(a)}):y("div",{className:jn("min-w-0 max-w-full overflow-hidden rounded-md border bg-muted/35 text-sm text-foreground",t?"p-2":"p-3"),children:[y("div",{className:jn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(Te,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:jn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?x("code",{className:"block min-w-0 max-w-full overflow-x-auto rounded border bg-background px-2 py-1 font-mono text-xs",children:a.command}):null,x("div",{className:jn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(pr,{variant:"secondary",children:[x(W,{className:"size-3"}),"resolved"]}):y(b,{children:[y(Ma,{disabled:s.isPending,size:"sm",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[s.isPending?x(Ce,{className:"animate-spin"}):x(W,{}),"Accept"]}),x(Ma,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"session",permissions:!0}}:{decision:"acceptForSession",kind:"approval"}),children:"Accept for session"}),x(Ma,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function Kd({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=_({}),[o,d]=_(0),c=nc(e,n,r),l=a?.questions?.length?a.questions:[{id:"answer",question:a?.message??"Answer"}],u="resolved"===a?.status||"COMPLETED"===n.status,m=Math.min(o,Math.max(l.length-1,0)),h=l[m],f=!!h&&Zd(h,i[h.id]).length>0,p=l.every(e=>Zd(e,i[e.id]).length>0),g=m>=l.length-1,v=()=>d(e=>Math.min(e+1,l.length-1));if(u||"expired"===a?.status)return x(Wd,{icon:x(W,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:Vd(a)});return y("div",{className:jn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:jn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[x("div",{className:"min-w-0 font-medium",children:t?"Input needed":"Codex needs input"}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(Ma,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(B,{})}),y(pr,{variant:"secondary",children:[m+1," / ",l.length]}),x(Ma,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(G,{})}),u?x(pr,{variant:"secondary",children:"resolved"}):null]})]}),h?x(Xd,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??Jd,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:jn("flex justify-end",t?"mt-2":"mt-4"),children:y(Ma,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:Yd(l,i)}):O.error("Answer every question before submitting.")},children:[c.isPending?x(Ce,{className:"animate-spin"}):x(W,{}),"Submit"]})}):null]})}function Wd({icon:e,status:t,title:n,value:a}){return y("div",{className:"grid min-w-0 max-w-full gap-1 overflow-hidden rounded-md border bg-muted/25 px-2.5 py-2 text-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"text-muted-foreground",children:e}),x("span",{className:"min-w-0 flex-1 font-medium",children:n}),t?x(pr,{variant:"secondary",children:t}):null]}),a?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:a}):null]})}function Qd(e){if(!e)return"No decision details.";const t=e.decision??e.result;return void 0===t?"expired"===e.status?"The request expired before a decision was sent.":"Decision sent.":`Decision: ${function(e){return"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):null===e?"none":JSON.stringify(e)}(t)}`}function Vd(e){if(!e)return"No answer details.";if("expired"===e.status)return"The request expired before an answer was sent.";const t=function(e){const t=e.result;if(!t||"object"!=typeof t||Array.isArray(t))return[];const n=t.answers;return!n||"object"!=typeof n||Array.isArray(n)?[]:Object.entries(n).map(([t,n])=>{const a=e.questions?.find(e=>e.id===t),r=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return[];const t=e.answers;return Array.isArray(t)?t.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(Boolean):[]}(n);return r.length?`${a?.header??a?.question??t}: ${r.join(", ")}`:null}).filter(e=>!!e)}(e);return t.length?t.join("; "):"Answer sent."}var Jd={other:"",values:[]};function Xd({compact:e=!1,disabled:t,onChange:n,onAutoAdvance:a,question:r,value:i}){const s=r.options??[],o=function(e){if(!e.options?.length)return;return e.selectionLimit&&e.selectionLimit>0?e.selectionLimit:1}(r),d=i.values??[],c=i.other??"",l=e=>n({other:c,values:d,...e});return y("div",{className:"grid min-w-0 max-w-full gap-2 overflow-hidden",children:[y("div",{className:"grid min-w-0 gap-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?x("span",{className:jn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:jn("grid min-w-0",e?"gap-1":"gap-2"),children:s.map(n=>{const r=d.includes(n.label),i="number"==typeof o&&o>1&&d.length>=o;return y(Ma,{"aria-pressed":r,className:jn("h-auto w-full min-w-0 justify-start overflow-hidden whitespace-normal text-left",e?"min-h-9 px-2.5 py-1.5":"min-h-12 px-3 py-2"),disabled:t||!r&&i,size:"default",type:"button",variant:r?"default":"outline",onClick:()=>(e=>{if(!t){if(1===o){const t=d.includes(e);return l({values:t?[]:[e]}),void(t||a?.())}d.includes(e)?l({values:d.filter(t=>t!==e)}):"number"==typeof o&&d.length>=o||l({values:[...d,e]})}})(n.label),children:[y("span",{className:jn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[x("span",{children:n.label}),n.description?x("span",{className:jn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(W,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(Sa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(hr,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(hr,{className:e?"min-h-12":"min-h-16",disabled:t,placeholder:"Other answer",value:c,onChange:e=>l({other:e.target.value})}):null,"number"==typeof o&&o>1?y("span",{className:"text-xs text-muted-foreground",children:["Select up to ",o,"."]}):null]})}function Yd(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:Zd(e,t[e.id])}]))}}function Zd(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function ec({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[x(j,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function tc({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function nc(e,t,n){const a=E();return k({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return ia(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>O.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>da(e,t))}})}var ac=5;function rc(){const{chatId:e}=g(),{accounts:t,accountRateLimitFetching:n,accountRateLimitSnapshots:a,accountUsageSummaries:i,connectedAccounts:s,openWorkspacePicker:o,session:d,setActiveProjectPath:c,setTerminalOpen:l,terminalCount:u,terminalOpen:m,terminalSocket:h,terminalSocketConnected:f}=Ws(),[p,v]=_(""),[w,N]=_([]),[I,A]=_(null),T=q(null),M=q(null),S=q(!0),P=E(),L=$(()=>["chat",e],[e]),U=$(()=>["messages",e],[e]);R(()=>{A(null),N([])},[e]);const z=C({enabled:!!e,queryKey:L,queryFn:()=>ta(d,e)}),j=C({enabled:!!e,queryKey:U,queryFn:()=>aa(d,e,0)}),F=C({enabled:!!e&&!I,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(d,e),retry:!1,staleTime:3e4});R(()=>{F.data?.usage&&!I&&A(F.data.usage)},[F.data?.usage,I]);const B=$(()=>j.data?.data??[],[j.data]),G=z.data,H=t.find(e=>e.id===G?.accountId),K="RUNNING"===G?.status,W=$(()=>Bo(B),[B]),Q=$(()=>function(e,t){if(!t)return null;const n=Ro(e).filter(e=>!Ho(e)).sort((e,t)=>e.sequence-t.sequence);for(let a=n.length-1;a>=0;a-=1){const e=n[a];if(Md(e))return e}return null}(B,K),[K,B]),V=$(()=>function(e){return Lo(e).filter(yd)}(B),[B]),J=!(m&&G?.workingDirectory),X=$(()=>[W.pendingRequest?.id,J?Q?.id:void 0,...J?V.map(e=>e.id):[]].filter(e=>!!e),[J,V,Q?.id,W.pendingRequest?.id]),Y=$(()=>function(e){if(!e)return"";const t=Zo(e.metadata),n=(t?.steps??[]).map(e=>`${e.status}:${e.step}`).join("|");return[e.id,e.status,e.content.length,t?.explanation?.length??0,n].join(":")}(Q),[Q]),Z=$(()=>B.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[B]);R(()=>(c(G?.workingDirectory?.trim()??""),()=>c("")),[G?.workingDirectory,c]);const ee=D(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),te=D((e="auto")=>{const t=T.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),ne=C({enabled:!!H?.id&&"CONNECTED"===H.status,queryKey:["models",H?.id],queryFn:()=>Zn(d,H.id),staleTime:3e5});R(()=>{os(ne.error)&&P.invalidateQueries({queryKey:["accounts"]})},[ne.error,P]);const ae=H?.id?a[H.id]:void 0,re=!!H?.id&&!!n[H.id],ie=k({mutationFn:t=>na(d,e,{accountId:t.accountId}),onError:e=>O.error(ds(e)),onSuccess:(e,t)=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&O.success("Chat account updated.")}}),se=k({mutationFn:t=>na(d,e,t),onError:e=>O.error(ds(e)),onSuccess:e=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]})}}),oe=k({mutationFn:({accountId:e,settings:t})=>Xn(d,e,t),onError:e=>O.error(ds(e)),onSuccess:e=>{P.setQueryData(["accounts"],t=>is(t,e))}}),de=k({mutationFn:t=>ra(d,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??p).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>O.error(ds(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(v(""),N([])),P.setQueryData(U,t=>as(t,rs(e))),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]})}}),ce=k({mutationFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(d,e),onError:e=>O.error(ds(e)),onSuccess:()=>{O.message("Stop requested.")}}),le=k({mutationFn:t=>async function(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/queued/${n}/steer`,{method:"POST",token:e.token})}(d,e,t.queueId),onError:e=>O.error(ds(e)),onSuccess:e=>{P.setQueryData(U,t=>da(t,e)),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]})}}),ue=$(()=>Bi(s,a),[a,s]),me=$(()=>function(e,t,n,a){return e?.autoRotateAccount&&"RUNNING"!==e.status&&n&&n.id!==e.accountId?Gi(a[n.id])<0?null:!t||"CONNECTED"!==t.status||Gi(a[t.id])<0?n:null:null}(G,H,ue,a),[a,ue,H,G])?.id;R(()=>{!me||ie.isPending||de.isPending||ie.mutate({accountId:me,notify:!1})},[me,de.isPending,ie.isPending]);const he=D(e=>{e?.length&&Xs(e).then(e=>{N(t=>[...t,...e])}).catch(e=>O.error(ds(e)))},[]),fe=D(()=>{o({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{N(t=>[...t,eo(e)])}})},[z.data?.workingDirectory,o]),pe=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:"Implement the latest approved plan from the most recent proposed plan in this thread.",metadata:{action:"implementPlan",planMessageId:e.message.id,source:"proposedPlan"}})},[de]),ge=D(e=>{var t;de.mutate({clearComposer:!1,collaborationMode:"plan",content:(t=e.feedback,["Revise the latest proposed plan from this thread using the following requested changes.","Do not implement yet. Return an updated proposed plan.","",t].join("\n")),metadata:{action:"revisePlan",planMessageId:e.message.id,source:"proposedPlan"}})},[de]),ve=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[de]),we=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[de]);if(R(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?(P.setQueryData(U,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return da(e,n);if("message.failed"===t)return da(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(n,e,t)),"message.completed"!==e&&"message.failed"!==e||(P.invalidateQueries({queryKey:U}),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]}))):A(t):n(t)};return function(e,t,n){let a=!1;const r=yt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return r.on("connect",()=>{r.emit("chat:join",t,e=>{a||(e?.ok?n.onOpen?.():n.onError?.(new Error(e?.message??"Unable to join chat stream.")))})}),r.on("chat:event",e=>{a||e.chatId!==t||n.onEvent(e.type,e.payload)}),r.on("disconnect",()=>{a||n.onClose?.()}),r.on("connect_error",e=>{a||n.onError?.(e)}),()=>{a=!0,r.connected&&r.emit("chat:leave",t),r.disconnect()}}(d,e,{onError:e=>O.error(ds(e)),onEvent:t,onOpen:()=>{var a;aa(d,e,(a=P.getQueryData(U),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>O.error(ds(e))),ta(d,e).then(n).catch(e=>O.error(ds(e)))}});function n(e){P.setQueryData(L,e),P.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,L,U,P,d]),R(()=>{S.current=!0;const e=requestAnimationFrame(()=>te("auto"));return()=>cancelAnimationFrame(e)},[e,te]),R(()=>{if(!S.current)return;let e=0;const t=requestAnimationFrame(()=>{te("auto"),e=requestAnimationFrame(()=>te("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[Y,Z,te]),!e)return x(r,{replace:!0,to:"/"});if(z.isLoading||j.isLoading)return x("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(z.error)return x("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:z.error.message})]})});const be=G,xe=H,ye=ne.data?.data??[],Ne=!!be&&!K&&s.length>0,Ie=Fi(ye,be?.model),ke=Ie?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],Ae=be?.reasoningEffort??Ie?.defaultReasoningEffort??null,Ee=Ie?.additionalSpeedTiers??[],Te=p.trim().length>0||w.length>0,Me=ss(p,be?.workingDirectory??"",xe,w);return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-sidebar",children:[y("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-b-xl bg-background",children:[x(Jr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:T,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{S.current=ee(e.currentTarget)}},children:x("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:B.length?x(ld,{chatId:e,fileChangeActionDisabled:K,fileChangeActionPending:de.isPending,hiddenMessageIds:X,messages:B,onImplementPlan:pe,onRevisePlan:ge,onReviewFileChanges:ve,onSteerQueuedMessage:e=>le.mutate(e),onUndoFileChanges:we,planActionDisabled:K,planActionPending:de.isPending,queuedMessageActionDisabled:!K||le.isPending,queuedMessageActionPendingId:le.variables?.queueId??null,session:d,showProcessingTail:K&&!W.pendingRequest}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),x("div",{className:jn("min-w-0 border-t bg-background",m&&be?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:m&&be?.workingDirectory?x("div",{className:"p-2",children:x("div",{className:"mx-auto max-w-5xl",children:x(Os,{onClosePanel:()=>l(!1),projectPath:be.workingDirectory,socket:h,socketConnected:f})})}):y(b,{children:[x(md,{message:Q}),x(hd,{disabled:!K||le.isPending,messages:V,pendingQueueId:le.variables?.queueId??null,onSteerQueuedMessage:e=>le.mutate(e)}),x(ud,{chatId:e,messages:B,session:d}),x("div",{className:"p-2",children:y("div",{className:"mx-auto grid min-w-0 max-w-3xl gap-2 overflow-hidden rounded-xl border bg-background p-2 shadow-sm",children:[y("div",{className:"relative min-w-0",children:[x(ro,{visible:"plan"===(be?.collaborationMode??"default")}),x(hr,{className:jn("max-h-32 min-h-12 bg-transparent! text-xs resize-none border-0 px-1 shadow-none focus-visible:ring-0","plan"===(be?.collaborationMode??"default")&&"pr-24"),placeholder:be?.workingDirectory?xe?"Message Codex":"Choose an account first":"Choose a directory first",value:p,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Me&&de.mutate({attachments:Js(w),clearComposer:!0,delivery:K?"queue":void 0}))},onPaste:e=>{const t=Ys(e.clipboardData);t.length&&he(t)}})]}),x(to,{attachments:w,imageInputRef:M,onAttachImages:he,onRemove:e=>N(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(io,{attachmentDisabled:de.isPending,disabled:!be,modeDisabled:K,mode:be?.collaborationMode??"default",onAttachFile:fe,onAttachImage:()=>M.current?.click(),pending:se.isPending,onSelectMode:e=>se.mutate({collaborationMode:e})}),x(Vs,{account:xe,autoRotate:be?.autoRotateAccount??!1,autoRotateDisabled:!be||se.isPending,connectedAccounts:s,disabled:!be||!s.length,pending:ie.isPending,selectedAccountId:be?.accountId??"",selectionDisabled:!Ne,usageSummaries:i,onAutoRotateChange:e=>se.mutate({autoRotateAccount:e}),onSelect:e=>ie.mutate({accountId:e})}),x(co,{activeReasoningEffort:Ae,disabled:!be||K||!xe,modelOptions:ye,modelValue:be?.model??"",pending:ne.isFetching||se.isPending,reasoningOptions:ke,reasoningValue:be?.reasoningEffort??"",selectedModel:Ie,serviceTierOptions:Ee,serviceTierValue:be?.serviceTier??"",onSelectModel:e=>{be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),se.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:be.model??null,defaultReasoningEffort:t,defaultServiceTier:be.serviceTier??null}}),se.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:be.model??null,defaultReasoningEffort:be.reasoningEffort??null,defaultServiceTier:t}}),se.mutate({serviceTier:t})}}),x(so,{disabled:!be,mode:be?.permissionMode??"default",pending:se.isPending,onSelectMode:e=>{be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultPermissionMode:e}}),se.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(no,{usage:I}),x(ao,{pending:re,snapshot:ae}),x(oo,{loading:de.isPending,running:K,hasDraft:Te,sendDisabled:!Me,stopPending:ce.isPending,onSend:()=>de.mutate({attachments:Js(w),clearComposer:!0,delivery:K?"queue":void 0}),steerDisabled:!K||de.isPending||!Me,onSteer:()=>de.mutate({attachments:Js(w),clearComposer:!0,delivery:"steer"}),onStop:()=>ce.mutate()})]})]})]})})]})})]}),be?y("div",{className:"hidden min-h-9 shrink-0 items-center justify-end gap-1 bg-sidebar px-3 py-1 md:-mb-2 md:flex",children:[x(Ds,{active:m,className:jn("hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",m?"text-sidebar-accent-foreground":"text-sidebar-foreground/75"),count:u,disabled:!be.workingDirectory?.trim(),onToggle:()=>l(!m)}),x(As,{chatId:be.id,className:"text-sidebar-foreground/75 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground aria-expanded:bg-sidebar-accent aria-expanded:text-sidebar-accent-foreground",disabled:K,session:d})]}):null]})}var ic=qn({default:()=>sc}),sc=c(function(){return x(rc,{})}),oc=class extends Error{status;constructor(e,t){super(t),this.status=e}};function dc(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function cc(e){throw new oc(405,`${e} is not supported for this route.`)}function lc(e,t){t.includes(e.method)||cc(e.method)}async function uc(e){const t=await e.text();if(!t.trim())return{};try{const e=JSON.parse(t);if(!e||"object"!=typeof e||Array.isArray(e))throw new oc(400,"JSON body must be an object.");return e}catch(n){if(n instanceof oc)throw n;throw new oc(400,"Request body must be valid JSON.")}}function mc(e,t,n={}){if(null==e){if(n.required)throw new oc(400,`${t} is required.`);return}if("string"!=typeof e)throw new oc(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new oc(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new oc(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function hc(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new oc(400,`${t} must be an array of strings.`);return e}}function fc(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new oc(400,`${t} must be a boolean.`);return e}}function pc(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new oc(400,`${t} must be an object.`);return e}}function gc(e,t,n){const a=e.searchParams.get(t);if(null===a||""===a.trim())return n;const r=Number(a);if(!Number.isInteger(r))throw new oc(400,`${t} must be an integer.`);return r}function vc(e,t){const n=e[t];if(!n)throw new oc(400,`${t} is required.`);return n}function wc(e){return e instanceof oc?dc({message:e.message},{status:e.status}):dc({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var bc=qn({loader:()=>xc});function xc({request:e}){try{return lc(e,["GET"]),dc({status:"ok",service:"xedoc"})}catch(t){return wc(t)}}var yc,Nc=globalThis,Ic=wn("~"===(yc=process.env.CODEX_WORKSPACE_ROOT?.trim()||hn())?hn():yc.startsWith("~/")?wn(hn(),yc.slice(2)):xn(yc),".xedoc","xedoc.db"),kc=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Ic);process.env.DATABASE_URL=kc,tn(pn(Ic),{recursive:!0,mode:448});var Ac=Nc.prisma??new Wt({datasources:{db:{url:kc}}});"production"!==process.env.NODE_ENV&&(Nc.prisma=Ac);var Cc="server",Ec="scrypt";async function Tc(e){!function(e){if(e.length<8)throw new oc(400,"Server password must be at least 8 characters.")}(e);const t=await Lc()??await async function(e){try{return await Ac.serverAuth.create({data:{id:Cc,passwordHash:Rc(e),tokenSecret:$c(32)}})}catch(t){if(function(e){return e instanceof Kt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new oc(409,"Server password was already configured. Sign in with the configured password.");throw t}}(e);if(!function(e,t){const[n,a,r,i]=t.split(":");return!(n!==Ec||!a||!r||void 0!==i)&&qc(Gt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new oc(401,"Invalid server password.");return{token:Sc({authHash:Pc(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Mc(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new oc(401,"Invalid auth token.");if(!qc(a,Dc(n,t.tokenSecret)))throw new oc(401,"Invalid auth token.");const i=function(e){try{const t=JSON.parse(Buffer.from(e,"base64url").toString("utf8"));if("string"!=typeof t.authHash||"string"!=typeof t.issuedAt)throw new Error("Invalid payload.");return{authHash:t.authHash,issuedAt:t.issuedAt}}catch{throw new oc(401,"Invalid auth token.")}}(n);if(i.authHash!==Pc(t.passwordHash))throw new oc(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new oc(401,"Missing auth token.");return n}(e),await async function(){const e=await Lc();if(!e)throw new oc(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Sc(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${Dc(n,t)}`}function Pc(e){return t=e,Ot("sha256").update(t).digest("hex");var t}function Dc(e,t){return jt("sha256",t).update(e).digest("base64url")}async function Lc(){return Ac.serverAuth.findUnique({where:{id:Cc}})}function Rc(e){const t=$c(16);return`${Ec}:${t}:${Gt(e,t,64).toString("base64url")}`}function $c(e){return Ft(e).toString("base64url")}function qc(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&Ht(n,a)}var _c=qn({loader:()=>Uc});async function Uc({request:e}){try{return lc(e,["GET"]),dc(await async function(){return{passwordConfigured:!!(await Lc())}}())}catch(t){return wc(t)}}var zc=qn({action:()=>Oc});async function Oc({request:e}){try{return lc(e,["POST"]),dc(await Tc(mc((await uc(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return wc(t)}}var jc=qn({loader:()=>Fc});async function Fc({request:e}){try{return lc(e,["GET"]),dc(await async function(e){return{authenticated:!0,issuedAt:(await Mc(e)).issuedAt}}(e))}catch(t){return wc(t)}}function Bc(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Gc(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Hc(e){const t=Bc(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var Kc=class{config;child;initializePromise;stdoutBuffer="";pending=new Map;eventHandlers=new Set;serverRequestHandlers=new Set;constructor(e){this.config=e}request(e,t,n=3e4){return this.ensureStarted().then(()=>this.requestStarted(e,t,n))}waitForEvent(e,t=12e4,n){return new Promise((a,r)=>{if(n?.aborted)return void r(new Error("Stopped waiting for Codex event."));const i=()=>{clearTimeout(o),n?.removeEventListener("abort",s),d()},s=()=>{i(),r(new Error("Stopped waiting for Codex event."))},o=setTimeout(()=>{i(),r(new Error("Timed out waiting for Codex event."))},t),d=this.onEvent(t=>{e(t)&&(i(),a(t))});n?.addEventListener("abort",s,{once:!0})})}sendNotification(e,t){this.child?.stdin.write(`${JSON.stringify({method:e,params:t})}\n`)}respondToServerRequest(e,t){this.child?.stdin.write(`${JSON.stringify({id:e,result:t})}\n`)}rejectServerRequest(e,t,n){this.child?.stdin.write(`${JSON.stringify({id:e,error:{code:t,message:n}})}\n`)}onEvent(e){return this.eventHandlers.add(e),()=>this.eventHandlers.delete(e)}onServerRequest(e){return this.serverRequestHandlers.add(e),()=>this.serverRequestHandlers.delete(e)}shutdown(){for(const e of this.pending.values())clearTimeout(e.timeout),e.reject(new Error("Codex runtime stopped."));this.pending.clear(),this.child?.kill("SIGTERM"),this.child=void 0}requestStarted(e,t,n=3e4){const a=`xedoc-${Bt()}`,r=JSON.stringify(void 0===t?{id:a,method:e}:{id:a,method:e,params:t});return new Promise((t,i)=>{const s=setTimeout(()=>{this.pending.delete(a),i(new Error(`Codex request timed out: ${e}`))},n);this.pending.set(a,{resolve:t,reject:i,timeout:s}),this.child?.stdin.write(`${r}\n`)})}async ensureStarted(){if(this.initializePromise)return this.initializePromise;const e=function(e){const t=el(e.accountId);return{command:e.command,args:e.args,codexHome:t,options:{cwd:e.workingDirectory??void 0,env:{...process.env,...e.environment??{},CODEX_HOME:t},stdio:["pipe","pipe","pipe"]}}}(this.config);return dl(e.codexHome),this.child=In(e.command,e.args,e.options),this.child.stdout.on("data",e=>this.handleStdout(e)),this.child.stderr.on("data",e=>{const t=e.toString("utf8").trim();t&&(console.warn(`[codex:${this.config.accountId}] ${t}`),Xc(t)&&Vc(this.config.accountId,t))}),this.child.on("error",e=>this.failAll(e)),this.child.on("close",e=>{this.failAll(new Error(`Codex runtime exited with code ${e??"unknown"}.`)),this.child=void 0,this.initializePromise=void 0}),this.initializePromise=this.initialize(),this.initializePromise}async initialize(){await this.requestStarted("initialize",{clientInfo:{name:"xedoc",title:"xedoc",version:"0.1.0"},capabilities:{experimentalApi:!0}}),this.child?.stdin.write(`${JSON.stringify({method:"initialized"})}\n`)}handleStdout(e){this.stdoutBuffer+=e.toString("utf8");const t=this.stdoutBuffer.split("\n");this.stdoutBuffer=t.pop()??"";for(const n of t){const e=n.trim();e&&this.handleLine(e)}}handleLine(e){let t;try{t=JSON.parse(e)}catch{return}const n=function(e){return void 0!==e.id&&null!==e.id&&e.method?"server-request":void 0!==e.id&&null!==e.id?"response":"notification"}(t);if("server-request"===n){if(!this.serverRequestHandlers.size)return void this.rejectServerRequest(t.id,-32601,`Unsupported request method: ${t.method??"unknown"}`);for(const e of this.serverRequestHandlers)e(t);return}if("notification"===n){for(const e of this.eventHandlers)e(t);return}const a=this.pending.get(sl(t.id));if(a){if(clearTimeout(a.timeout),this.pending.delete(sl(t.id)),t.error)return Xc(t.error.message)&&Vc(this.config.accountId,t.error.message),void a.reject(new Error(t.error.message??"Codex request failed."));a.resolve(t)}}failAll(e){for(const t of this.pending.values())clearTimeout(t.timeout),t.reject(e);this.pending.clear()}},Wc=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new Kc(e);return this.runtimes.set(e.accountId,n),n}stopRuntime(e){this.runtimes.get(e)?.shutdown(),this.runtimes.delete(e)}shutdown(){for(const e of this.runtimes.values())e.shutdown();this.runtimes.clear()}},Qc=new Set;async function Vc(e,t){Qc.add(e),await Ac.codexAccount.updateMany({where:{id:e},data:{status:"INVALIDATED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:Yc(t)}})}function Jc(e){Qc.delete(e)}function Xc(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return t.includes("token_invalidated")||t.includes("authentication token has been invalidated")||t.includes("401")&&t.includes("unauthorized")&&t.includes("invalidated")}function Yc(e){const t=(e instanceof Error?e.message:"string"==typeof e?e:"").trim();return t?["Codex authentication token was invalidated. Re-authenticate this account.",t.length>700?`${t.slice(0,700)}...`:t].join("\n"):"Codex authentication token was invalidated. Re-authenticate this account."}async function Zc(e){return(await Wc.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function el(e){return wn(ol(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function tl(e){const t=el(e);return dl(t),t}function nl(){return ol(process.env.CODEX_SHARED_CHAT_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function al(){const e=nl();return tn(e,{recursive:!0,mode:448}),Vt(e,448),e}function rl(){const e=al(),t=wn(e,"AGENTS.md");return hl(t,384),{codexHome:e,instructionsPath:t}}function il(){const e=nl();return wn(e,ul(e).filter(e=>/^state_\d+\.sqlite$/i.test(e)).sort((e,t)=>ml(t)-ml(e)).at(0)??"state_5.sqlite")}function sl(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}function ol(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}function dl(e){tn(e,{recursive:!0,mode:448}),Vt(e,448),function(e){const t=al();if(xn(e)===xn(t))return;(function(e,t){const n=wn(t,"sessions"),a=wn(e,"sessions");if(tn(n,{recursive:!0,mode:448}),gl(a,n))return;wl(a)&&(vl(a)?.isDirectory()&&fl(a,n),dn(a,bl(a)));un(n,a,"dir")})(e,t),function(e,t){const n=wn(t,"session_index.jsonl"),a=wn(e,"session_index.jsonl");if(hl(n,384),gl(a,n))return;wl(a)&&(vl(a)?.isFile()&&function(e,t){const n=an(e,"utf8");if(!n.trim())return;const a=an(t,"utf8");Qt(t,`${a&&!a.endsWith("\n")?"\n":""}${n.endsWith("\n")?n:`${n}\n`}`)}(a,n),dn(a,bl(a)));un(n,a,"file")}(e,t),function(e,t){for(const n of function(e,t){const n=new Set([fn(il())]);for(const a of[t,e])for(const e of ul(a))/^state_\d+\.sqlite$/i.test(e)&&n.add(e);return[...n].flatMap(e=>[e,`${e}-wal`,`${e}-shm`])}(e,t))cl(e,t,n)}(e,t),function(e,t){ll(e,t,"AGENTS.md",!0),ll(e,t,"AGENTS.override.md",!1)}(e,t)}(e)}function cl(e,t,n){const a=wn(t,n),r=wn(e,n);gl(r,a)||(vl(r)?.isFile()&&pl(r,a),n.endsWith("-wal")||n.endsWith("-shm")||hl(a,384),wl(r)&&dn(r,bl(r)),un(a,r,"file"))}function ll(e,t,n,a){const r=wn(t,n),i=wn(e,n);(a||wl(r)||wl(i))&&(hl(r,384),gl(i,r)||(vl(i)?.isFile()&&function(e,t){const n=an(e,"utf8");if(!n.trim())return;const a=an(t,"utf8");if(!a.trim())return Yt(e,t),void Vt(t,384);if(a===n||a.includes(n))return;const r=a.endsWith("\n")?"":"\n",i=n.endsWith("\n")?n:`${n}\n`;Qt(t,`${r}\n\x3c!-- Imported from ${fn(pn(e))}/${fn(e)} during xedoc sharing. --\x3e\n${i}`)}(i,r),wl(i)&&dn(i,bl(i)),un(r,i,"file")))}function ul(e){try{return rn(e)}catch{return[]}}function ml(e){return Number(/^state_(\d+)\.sqlite$/i.exec(e)?.[1]??0)}function hl(e,t){Jt(nn(e,"a",t)),Vt(e,t)}function fl(e,t){tn(t,{recursive:!0,mode:448});for(const n of rn(e,{withFileTypes:!0})){const a=wn(e,n.name),r=wn(t,n.name);n.isDirectory()?fl(a,r):n.isFile()&&pl(a,r)}}function pl(e,t){wl(t)||(tn(pn(t),{recursive:!0,mode:448}),Yt(e,t))}function gl(e,t){try{return!!en(e).isSymbolicLink()&&xn(pn(e),sn(e))===xn(t)}catch{return!1}}function vl(e){try{return ln(e)}catch{return null}}function wl(e){try{return en(e),!0}catch{return!1}}function bl(e){const t=(new Date).toISOString().replace(/[:.]/g,"-");let n=`${e}.pre-shared-${t}`,a=1;for(;wl(n);)n=`${e}.pre-shared-${t}-${a}`,a+=1;return n}var xl=32768,yl="auth.json",Nl=262144;async function Il(){const e=await Ac.codexAccount.findMany({orderBy:{createdAt:"asc"}});return Yl(e),function(e){const t=Bl(e);return e.map(e=>au(e,t.has(e.id)))}(await async function(e){return Promise.all(e.map(async e=>"AUTHENTICATING"===e.status&&Ul(e.id)?(Wc.stopRuntime(e.id),Ac.codexAccount.update({where:{id:e.id},data:Ll(e.id)})):e))}(e))}async function kl(){const e=Gl({required:!0}),t=await async function(e){const t=(await Ac.codexAccount.findMany({orderBy:{createdAt:"asc"}})).flatMap(e=>{const t=Hl(e.id);return t?[{account:e,auth:t}]:[]}),n=t.find(t=>t.auth.fingerprint===e.fingerprint);if(n)return n.account;if(!e.email)return null;const a=t.filter(t=>t.auth.email===e.email);return 1===a.length?a[0].account:null}(e),n=t?await async function(e,t){return Wc.stopRuntime(e.id),Fl(e.id,{authJson:t.authJson}),Ac.codexAccount.update({where:{id:e.id},data:Ll(e.id)})}(t,e):await async function(e){const t=await Ac.codexAccount.create({data:{displayName:e.email??"Local Codex account",command:process.env.CODEX_COMMAND??"codex",args:tu(_l()),environment:tu(void 0)}});return Fl(t.id,{authJson:e.authJson}),Ac.codexAccount.update({where:{id:t.id},data:Ll(t.id)})}(e);return{imported:1,accounts:[au(n,!0)],authentications:[{accountId:n.id,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Imported the active local Codex account."}]}}async function Al(e){const t=await Cl(e);return function(e){const t=Ql();tn(t,{recursive:!0,mode:448}),Vt(t,448);const n=wn(t,yl);mn(n,`${JSON.stringify(e)}\n`,{encoding:"utf8",mode:384}),Vt(n,384)}(function(e){try{const t=Ol(e);if(!zl(t))throw new oc(409,"Authenticate this xedoc account before making it the active local Codex account.");return t}catch(t){if(t instanceof oc)throw t;throw new oc(409,"Authenticate this xedoc account before making it the active local Codex account.")}}(e)),au(t,!0)}async function Cl(e){const t=await Ac.codexAccount.findUnique({where:{id:e}});if(!t)throw new oc(404,"Codex account not found.");return eu(t.id),t}async function El(){const{codexHome:e,instructionsPath:t}=rl();await Zl();let n="";try{n=an(t,"utf8")}catch(a){if(!function(e){return!!e&&"object"==typeof e&&"code"in e&&"ENOENT"===e.code}(a))throw a}return{accountId:null,codexHome:e,instructionsPath:t,instructions:n,maxBytes:xl,shared:!0}}async function Tl(e){const t=function(e){if("string"!=typeof e)throw new oc(400,"instructions must be a string.");const t=e.replace(/\r\n?/g,"\n");if(Buffer.byteLength(t,"utf8")>xl)throw new oc(400,"instructions must be 32768 bytes or fewer.");return t}(e.instructions),{codexHome:n,instructionsPath:a}=rl();return await Zl(),mn(a,t,{encoding:"utf8",mode:384}),Vt(a,384),{accountId:null,codexHome:n,instructionsPath:a,instructions:t,maxBytes:xl,shared:!0}}async function Ml(e,t="browser"){const n=await Cl(e),a="INVALIDATED"===n.status;if(Ul(e)&&!a)return Wc.stopRuntime(e),await Ac.codexAccount.update({where:{id:e},data:Ll(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};a&&(Wc.stopRuntime(e),function(e){cn(wn(el(e),yl),{force:!0})}(e)),await Ac.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const r=$l(n);if(!a){const t=await async function(e){try{return Bc(Bc((await e.request("account/read",{refreshToken:!1})).result)?.account)??null}catch{return null}}(r);if(t)return await Ac.codexAccount.update({where:{id:e},data:Ll(e,t)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}}const i=Bc((await r.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt",codexStreamlinedLogin:!0})).result),s="chatgptDeviceCode"===Gc(i?.type)?"device":t,o=function(e,t){return"device"===t?Gc(e?.verificationUrl)??Gc(e?.verification_url)??Gc(e?.authUrl)??Gc(e?.auth_url)??Gc(e?.url)??null:Gc(e?.authUrl)??Gc(e?.auth_url)??Gc(e?.url)??null}(i,s),d=Gc(i?.loginId)??null,c="device"===s?Gc(i?.userCode)??Gc(i?.user_code)??null:null;if(!("device"!==s||o&&c))throw new Error("Codex did not return device login instructions.");const l=o?"AUTHENTICATING":"CONNECTED";return await Ac.codexAccount.update({where:{id:e},data:"CONNECTED"===l?Ll(e):{status:l,lastAuthUrl:o,lastAuthMode:s,lastAuthLoginId:d,lastAuthUserCode:c,lastError:null}}),"AUTHENTICATING"===l&&function(e,t,n){Dl(t);let a=!1,r=()=>{};const i=()=>{a||(a=!0,c(),Ac.codexAccount.update({where:{id:t},data:Ll(t)}))},s=e=>{a||(a=!0,c(),Ac.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:e}}))},o=setInterval(()=>{Ul(t)?i():ql(t,e).then(e=>{e&&(a=!0,c())}).catch(()=>{})},1500),d=setTimeout(()=>{c()},3e5),c=()=>{clearInterval(o),clearTimeout(d),r(),Pl.get(t)===c&&Pl.delete(t)};Pl.set(t,c),r=e.onEvent(e=>{const t=Bc(e.params);if("account/login/completed"===e.method){const e=Gc(t?.loginId);if(n&&e&&e!==n)return;return!1===t?.success?void s(Gc(t.error)??"Login failed."):void i()}"account/updated"===e.method&&Gc(t?.authMode)&&i()})}(r,e,d),{accountId:e,status:l,authMode:"AUTHENTICATING"===l?s:null,authUrl:o,verificationUrl:"device"===s?o:null,userCode:c,loginId:d,message:"CONNECTED"===l?"Codex account is connected.":"device"===s?"Open the verification URL and enter the device code to finish Codex authentication.":"Complete Codex authentication in the opened browser. xedoc will connect automatically when the Codex callback is received."}}catch(r){const n=r instanceof Error?r.message:"Authentication failed.";return await Ac.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:n}}),{accountId:e,status:"ERROR",authMode:t,authUrl:null,verificationUrl:null,userCode:null,message:n}}}async function Sl(e,t){const n=await Cl(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new oc(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new oc(400,"Callback URL must use http.");if(t.username||t.password)throw new oc(400,"Callback URL must not include credentials.");if(!function(e){const t=e.toLowerCase();return"localhost"===t||"::1"===t||/^127(?:\.\d{1,3}){3}$/.test(t)}(t.hostname))throw new oc(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new oc(400,"Callback URL must include an OAuth code or error.");return t}(t),r=$l(n),i=r.waitForEvent(e=>"account/login/completed"===e.method||"account/updated"===e.method,15e3).catch(()=>null);try{const t=await async function(e){try{return await fetch(e,{redirect:"manual"})}catch(t){if("localhost"!==e.hostname)throw t;const n=new URL(e.toString());return n.hostname="127.0.0.1",fetch(n,{redirect:"manual"})}}(a);if(t.status>=400){const e=await async function(e){const t=(await e.text()).trim();return t?t.length>500?`${t.slice(0,500)}...`:t:null}(t);throw new oc(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=Bc((await i)?.params);if(!1===s?.success){const t=Gc(s.error)??"Login failed.";return await Ac.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Rl(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await ql(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:Ul(e)?(Wc.stopRuntime(e),await Ac.codexAccount.update({where:{id:e},data:Ll(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await Ac.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:Rl(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:"Callback accepted. Codex is still finishing authentication."})}catch(s){const t=s instanceof Error?s.message:"Authentication failed.";return await Ac.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Rl(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}var Pl=new Map;function Dl(e){Pl.get(e)?.(),Pl.delete(e)}function Ll(e,t){Jc(e);const n=((a=t)?Xl(Gc(a.email))??Xl(Gc(a.accountEmail))??Xl(Gc(a.chatgptEmail))??Xl(Gc(Bc(a.profile)?.email))??Xl(Gc(Bc(a.user)?.email)):null)??function(e){try{return Vl(Ol(e))}catch{return null}}(e);var a;return{...n?{displayName:n}:{},status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}function Rl(e){return"browser"===e||"device"===e?e:null}function $l(e){return Wc.getRuntime({accountId:e.id,command:e.command,args:ru(e.args),workingDirectory:null,environment:Hc(e.environment)})}async function ql(e,t){const n=Bc(Bc((await t.request("account/read",{refreshToken:!1})).result)?.account);return!!n&&(await Ac.codexAccount.update({where:{id:e},data:Ll(e,n)}),!0)}function _l(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Ul(e){try{return zl(Ol(e))}catch{return!1}}function zl(e){return!("chatgpt"!==Gc(e.auth_mode)||!Bc(e.tokens)&&!Gc(e.OPENAI_API_KEY))}function Ol(e){const t=an(wn(el(e),yl),"utf8");return Bc(JSON.parse(t))??{}}function jl(e){try{const t=Ol(e);return Object.keys(t).length?{authJson:t}:null}catch{return null}}function Fl(e,t){if(!t)return;const n=tl(e),a=`${JSON.stringify(t.authJson)}\n`;mn(wn(n,yl),a,{encoding:"utf8",mode:384}),Vt(wn(n,yl),384)}function Bl(e){const t=Gl({required:!1});if(!t)return new Set;const n=e.flatMap(e=>{const t=Hl(e.id);return t?[{account:e,auth:t}]:[]}),a=n.filter(e=>e.auth.fingerprint===t.fingerprint);return a.length?new Set(a.map(e=>e.account.id)):t.email?new Set(n.filter(e=>e.auth.email===t.email).map(e=>e.account.id)):new Set}function Gl(e){try{const e=an(wn(Ql(),yl),"utf8");if(Buffer.byteLength(e,"utf8")>Nl)throw new oc(400,"Local Codex auth.json must be 262144 bytes or fewer.");const t=Bc(JSON.parse(e));if(!t||!zl(t))throw new oc(400,"Local Codex auth.json does not contain an active ChatGPT account.");return Kl(t)}catch(t){if(!e.required)return null;if(t instanceof oc)throw t;throw new oc(404,"No active local Codex auth.json was found. Sign in with the local Codex CLI first.")}}function Hl(e){try{const t=Ol(e);return zl(t)?Kl(t):null}catch{return null}}function Kl(e){return{authJson:e,email:Vl(e),fingerprint:(t=e,Ot("sha256").update(Wl(t)).digest("hex"))};var t}function Wl(e){return Array.isArray(e)?`[${e.map(e=>Wl(e)).join(",")}]`:e&&"object"==typeof e?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Wl(e[t])}`).join(",")}}`:JSON.stringify(e)}function Ql(){return function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}(process.env.CODEX_LOCAL_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function Vl(e){return Xl(Gc(e.email))??Xl(Gc(Bc(e.account)?.email))??Xl(Gc(Bc(e.profile)?.email))??Xl(Gc(Bc(e.user)?.email))??Jl(Gc(Bc(e.tokens)?.id_token))??Jl(Gc(Bc(e.tokens)?.idToken))??Jl(Gc(e.id_token))??Jl(Gc(e.idToken))}function Jl(e){if(!e)return null;const[,t]=e.split(".");if(!t)return null;try{return Xl(Gc(Bc(JSON.parse(function(e){const t=e.replaceAll("-","+").replaceAll("_","/"),n=t.padEnd(t.length+(4-t.length%4)%4,"=");return Buffer.from(n,"base64").toString("utf8")}(t)))?.email))}catch{return null}}function Xl(e){const t=e?.trim();return t&&t.includes("@")?t:null}function Yl(e){for(const t of e)eu(t.id)}async function Zl(){Yl(await Ac.codexAccount.findMany({select:{id:!0}}))}function eu(e){try{tl(e)}catch(t){console.warn(`Failed to prepare Codex account home for ${e}.`,t instanceof Error?t.message:t)}}function tu(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function nu(e){return{args:tu(e.args),command:e.command,defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,displayName:e.displayName,environment:(t=e.environment,null==t?Kt.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null,status:"DISCONNECTED"};var t}function au(e,t=!1){return{id:e.id,displayName:e.displayName,status:e.status,isLocalCodexActive:t,command:e.command,args:ru(e.args),environment:Hc(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:Rl(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function ru(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):_l()}function iu(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new oc(400,`${n} must be an object.`);return{id:uu(e.id,`${n}.id`,128),displayName:lu(e.displayName,`${n}.displayName`,128),command:uu(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:mu(e.args,`${n}.args`)??_l(),auth:hu(e.auth,`${n}.auth`),defaultModel:uu(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:cu(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:ou(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:du(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:fu(e.environment,`${n}.environment`)}}function su(e){return null==e?null:lu(e,"runtime option",128)}function ou(e,t="defaultReasoningEffort"){if(null==e)return null;if("none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e)return e;throw new oc(400,`${t} is invalid.`)}function du(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new oc(400,`${t} is invalid.`)}function cu(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new oc(400,`${t} is invalid.`)}function lu(e,t,n){const a=uu(e,t,n);if(!a)throw new oc(400,`${t} is required.`);return a}function uu(e,t,n){if(null==e)return;if("string"!=typeof e)throw new oc(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new oc(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function mu(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new oc(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function hu(e,t){if(null==e)return null;const n=Bc(e);if(!n)throw new oc(400,`${t} must be an object.`);const a=Bc(n.authJson);if(!a)throw new oc(400,`${t}.authJson must be an object.`);return function(e,t,n){if(Buffer.byteLength(JSON.stringify(e),"utf8")>n)throw new oc(400,`${t} must be ${n} bytes or fewer.`)}(a,`${t}.authJson`,Nl),{authJson:a}}function fu(e,t){if(null==e)return null;const n=Bc(e);if(!n)throw new oc(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var pu=qn({action:()=>vu,loader:()=>gu});async function gu({request:e}){try{return lc(e,["GET"]),await Mc(e),dc(await Il())}catch(t){return wc(t)}}async function vu({request:e}){try{lc(e,["POST"]),await Mc(e);const t=await uc(e);return dc(await async function(e){const t=await Ac.codexAccount.create({data:{displayName:(n=e.displayName,Gc(n)?.trim()||"Codex account"),command:e.command??process.env.CODEX_COMMAND??"codex",args:tu(e.args??_l()),defaultModel:su(e.defaultModel),defaultPermissionMode:cu(e.defaultPermissionMode),defaultReasoningEffort:ou(e.defaultReasoningEffort),defaultServiceTier:du(e.defaultServiceTier),environment:tu(e.environment)}});var n;return eu(t.id),t}({displayName:mc(t.displayName,"displayName",{maxLength:128}),command:mc(t.command,"command"),args:hc(t.args,"args"),defaultModel:wu(t.defaultModel,"defaultModel"),defaultPermissionMode:wu(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:wu(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:wu(t.defaultServiceTier,"defaultServiceTier"),environment:pc(t.environment,"environment")}),{status:201})}catch(t){return wc(t)}}function wu(e,t){return null===e?null:mc(e,t,{maxLength:128})}var bu=qn({loader:()=>xu});async function xu({request:e}){try{return lc(e,["GET"]),await Mc(e),dc(await async function(){const e=await Ac.codexAccount.findMany({orderBy:{createdAt:"asc"}});return{schemaVersion:2,exportedAt:(new Date).toISOString(),accounts:e.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:ru(e.args),auth:jl(e.id),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:Hc(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return wc(t)}}var yu=qn({action:()=>Nu});async function Nu({request:e}){try{lc(e,["POST"]),await Mc(e);const t=await uc(e);if(!Array.isArray(t.accounts))throw new oc(400,"accounts must be an array.");return dc(await async function(e){const t=e.accounts.map(iu),n=[];for(const s of t){const e=s.id?await Ac.codexAccount.findUnique({where:{id:s.id}}):null;if(e){Wc.stopRuntime(e.id);const t=await Ac.codexAccount.update({where:{id:e.id},data:nu(s)});Fl(t.id,s.auth),n.push(t);continue}const t=await Ac.codexAccount.create({data:{...s.id?{id:s.id}:{},...nu(s)}});Fl(t.id,s.auth),n.push(t)}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await Ml(s.id));const r=await Ac.codexAccount.findMany({where:{id:{in:n.map(e=>e.id)}}}),i=new Map(r.map(e=>[e.id,e]));return{imported:n.length,accounts:n.map(e=>au(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return wc(t)}}var Iu=qn({action:()=>Au,loader:()=>ku});async function ku({request:e}){try{return lc(e,["GET"]),await Mc(e),dc(await El())}catch(t){return wc(t)}}async function Au({request:e}){try{lc(e,["PATCH"]),await Mc(e);const t=await uc(e);if("string"!=typeof t.instructions)throw new oc(400,"instructions is required.");return dc(await Tl({instructions:t.instructions}))}catch(t){return wc(t)}}var Cu=qn({action:()=>Eu});async function Eu({request:e}){try{return lc(e,["POST"]),await Mc(e),dc(await kl(),{status:201})}catch(t){return wc(t)}}var Tu=An(Nn),Mu="127.0.0.1",Su=function(e){const t=Number(e??1457);return!Number.isInteger(t)||t<=0||t>65535?1457:t}(process.env.CODEX_LOGIN_CALLBACK_PORT);async function Pu(){const e=await new Promise((e,t)=>{const n=kn();n.once("error",n=>{"EADDRINUSE"!==n.code?t(n):e(!0)}),n.listen({host:Mu,port:Su},()=>{n.close(n=>{n?t(n):e(!1)})})});return function(e,t,n){const a=t.some(e=>e.pid===process.pid);return{checkedAt:(new Date).toISOString(),host:Mu,inUse:e,killable:t.some(e=>e.pid>0&&e.pid!==process.pid),killedProcessIds:n,port:Su,processes:t,message:e?a?"The current xedoc server owns the login callback port.":"The Codex login callback port is already in use.":"The Codex login callback port is available."}}(e,e?await async function(){if("win32"===process.platform)return async function(){try{const{stdout:e}=await Tu("netstat",["-ano","-p","tcp"]);return function(e){const t=[],n=new RegExp(`:${Su}\\s`);for(const a of e.split(/\r?\n/)){const e=a.trim();if(!e.includes("LISTENING")||!n.test(e))continue;const r=e.split(/\s+/),i=Number(r.at(-1));Number.isFinite(i)&&t.push({pid:i,address:e})}return Lu(t)}(e)}catch{return[]}}();const e=await async function(){try{const{stdout:e}=await Tu("lsof",["-nP",`-iTCP:${Su}`,"-sTCP:LISTEN","-F","pcLn"]);return function(e){const t=[];let n=null;for(const a of e.split(/\r?\n/)){if(!a)continue;const e=a.slice(0,1),r=a.slice(1);"p"!==e?n&&("c"===e?n.command=r:"L"===e?n.user=r:"n"===e&&(n.address=r)):(n&&t.push(n),n={pid:Number(r)})}n&&t.push(n);return Lu(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}();return e.length?e:async function(){try{const{stdout:e}=await Tu("ss",["-ltnp"]);return function(e){const t=[],n=new RegExp(`:${Su}\\b`);for(const a of e.split(/\r?\n/)){if(!n.test(a)||!a.includes("LISTEN"))continue;const e=/"([^"]+)",pid=(\d+)/g;let r;for(;r=e.exec(a);)t.push({command:r[1],pid:Number(r[2]),address:a.trim()})}return Lu(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}()}():[])}async function Du(){const e=await Pu();if(!e.inUse)return e;const t=e.processes.map(e=>e.pid).filter(e=>e>0&&e!==process.pid);if(!t.length)throw new oc(409,e.processes.some(e=>e.pid===process.pid)?"The current xedoc server owns the login callback port and cannot kill itself.":"No killable process was found for the login callback port.");const n=[];for(const i of Array.from(new Set(t)))try{process.kill(i,"SIGTERM"),n.push(i)}catch(r){if(!Ru(r))throw new oc(500,`Could not kill process ${i}: ${$u(r)}`)}var a;return await(a=600,new Promise(e=>setTimeout(e,a))),{...await Pu(),killedProcessIds:n}}function Lu(e){const t=new Map;for(const n of e)t.has(n.pid)||t.set(n.pid,n);return Array.from(t.values()).sort((e,t)=>e.pid-t.pid)}function Ru(e){return"object"==typeof e&&null!==e&&"code"in e&&"ESRCH"===e.code}function $u(e){return e instanceof Error?e.message:"Unknown error"}var qu=qn({action:()=>Uu,loader:()=>_u});async function _u({request:e}){try{return lc(e,["GET"]),await Mc(e),dc(await Pu())}catch(t){return wc(t)}}async function Uu({request:e}){try{return lc(e,["POST"]),await Mc(e),dc(await Du())}catch(t){return wc(t)}}var zu=qn({action:()=>Ou});async function Ou({request:e,params:t}){try{return lc(e,["POST"]),await Mc(e),dc(await Al(vc(t,"accountId")))}catch(n){return wc(n)}}var ju=qn({action:()=>Bu,loader:()=>Fu});async function Fu({request:e,params:t}){try{return lc(e,["GET"]),await Mc(e),dc(await Cl(vc(t,"accountId")))}catch(n){return wc(n)}}async function Bu({request:e,params:t}){try{await Mc(e);const n=vc(t,"accountId");if("PATCH"===e.method){const t=await uc(e);return dc(await async function(e,t){return await Cl(e),Wc.stopRuntime(e),Ac.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:tu(t.args),environment:tu(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:mc(t.displayName,"displayName",{maxLength:128}),command:mc(t.command,"command"),args:hc(t.args,"args"),environment:pc(t.environment,"environment")}))}if("DELETE"===e.method)return dc(await async function(e){const t=await Cl(e);return Wc.stopRuntime(e),Jc(e),Ac.$transaction(async n=>{await n.chat.updateMany({where:{accountId:e},data:{accountId:null}}),await n.threadPreference.updateMany({where:{accountId:e},data:{accountId:null}});const a=(await n.chatRun.findMany({select:{id:!0},where:{accountId:e}})).map(e=>e.id);return a.length&&(await n.chatMessage.updateMany({where:{runId:{in:a}},data:{runId:null}}),await n.chatRun.deleteMany({where:{id:{in:a}}})),n.codexAccount.delete({where:{id:t.id}})})}(n));cc(e.method)}catch(n){return wc(n)}}var Gu=qn({action:()=>Hu});async function Hu({request:e,params:t}){try{lc(e,["PATCH"]),await Mc(e);const n=await uc(e),a={defaultModel:Ku(n.defaultModel,"defaultModel"),defaultPermissionMode:Ku(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Ku(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Ku(n.defaultServiceTier,"defaultServiceTier")};return dc(await async function(e,t){return await Cl(e),au(await Ac.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:su(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:cu(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:ou(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:du(t.defaultServiceTier)}}))}(vc(t,"accountId"),a))}catch(n){return wc(n)}}function Ku(e,t){return null===e?null:mc(e,t,{maxLength:128})}var Wu=qn({action:()=>Vu,loader:()=>Qu});async function Qu({request:e,params:t}){try{return lc(e,["GET"]),await Mc(e),dc(await async function(e){return await Cl(e),{...await El(),accountId:e}}(vc(t,"accountId")))}catch(n){return wc(n)}}async function Vu({request:e,params:t}){try{lc(e,["PATCH"]),await Mc(e);const n=await uc(e);if("string"!=typeof n.instructions)throw new oc(400,"instructions is required.");return dc(await async function(e,t){return await Cl(e),{...await Tl(t),accountId:e}}(vc(t,"accountId"),{instructions:n.instructions}))}catch(n){return wc(n)}}async function Ju(e){const t=await Xu(e);try{const n=await async function(e){return(await Wc.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(em(t));return await Yu(e),n}catch(n){return Zu(e,n)}}async function Xu(e){const t=await Ac.codexAccount.findUnique({where:{id:e}});if(!t)throw new oc(404,"Account not found.");if("CONNECTED"!==t.status)throw new oc("INVALIDATED"===t.status?401:400,"INVALIDATED"===t.status?"Codex authentication token was invalidated. Re-authenticate this account.":"Authenticate the account before loading Codex account data.");return t}async function Yu(e){if(function(e){return Qc.has(e)}(e))throw new oc(401,"Codex authentication token was invalidated. Re-authenticate this account.");if("INVALIDATED"===(await Ac.codexAccount.findUnique({select:{status:!0},where:{id:e}}))?.status)throw new oc(401,"Codex authentication token was invalidated. Re-authenticate this account.")}async function Zu(e,t){if(t instanceof oc)throw t;if(function(e){return Xc(e instanceof Error?e.message:String(e??""))}(t))throw await Vc(e,t),Wc.stopRuntime(e),new oc(401,"Codex authentication token was invalidated. Re-authenticate this account.");throw t}function em(e){return{accountId:e.id,args:tm(e.args),command:e.command,environment:Hc(e.environment),workingDirectory:null}}function tm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var nm=qn({loader:()=>am});async function am({request:e,params:t}){try{return lc(e,["GET"]),await Mc(e),dc(await Ju(vc(t,"accountId")))}catch(n){return wc(n)}}var rm=qn({loader:()=>im});async function im({request:e,params:t}){try{return lc(e,["GET"]),await Mc(e),dc(await async function(e){const t=await Xu(e);try{const n=await Zc(em(t));return await Yu(e),n}catch(n){return Zu(e,n)}}(vc(t,"accountId")))}catch(n){return wc(n)}}var sm=qn({action:()=>om});async function om({request:e,params:t}){try{lc(e,["POST","DELETE"]),await Mc(e);const n=vc(t,"accountId");return"DELETE"===e.method?dc(await async function(e){const t=await Cl(e);return Dl(e),Wc.stopRuntime(e),Ul(e)?au(await Ac.codexAccount.update({where:{id:e},data:Ll(e)}),Bl([t]).has(e)):"AUTHENTICATING"!==t.status?au(t,Bl([t]).has(e)):au(await Ac.codexAccount.update({where:{id:e},data:{status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}))}(n)):dc(await Ml(n,function(e){const t=mc(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new oc(400,"mode must be browser or device.")}((await uc(e)).mode)))}catch(n){return wc(n)}}var dm=qn({action:()=>cm});async function cm({request:e,params:t}){try{lc(e,["POST"]),await Mc(e);const n=mc((await uc(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return dc(await Sl(vc(t,"accountId"),n))}catch(n){return wc(n)}}var lm=globalThis,um=new Map,mm=new Map;async function hm(e,t){const n=await Ym(e);if(!n)return;const a=wn(tl(t),"sessions",ph(n));if(xn(n)!==xn(a)){await async function(e){const t=function(e){const t=`${yn}sessions${yn}`,n=xn(e),a=n.lastIndexOf(t);return-1===a?null:wn(n.slice(0,a),"session_index.jsonl")}(e),n=wn(nl(),"session_index.jsonl");if(!t||xn(t)===xn(n))return;try{const e=await Pn(t,"utf8");if(!e.trim())return;const a=await Pn(n,"utf8").catch(()=>"");await En(n,`${a&&!a.endsWith("\n")?"\n":""}${e.endsWith("\n")?e:`${e}\n`}`)}catch{}}(n);try{return void(await Cn(a,Xt.R_OK))}catch{}await Mn(pn(a),{recursive:!0,mode:448}),await Tn(n,a)}}async function fm(e){const t=await Ym(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>Zm())return null;const a=`${t}:${e}`,r=mm.get(a);if(r&&eh(r,n))return r.value;const i=function(e,t,n){let a,r,i,s,o,d,c,l=0,u=0;const m=[],h=[];for(const v of e.split(/\r?\n/)){if(!v.trim())continue;l+=1;const e=ch(v);if(!e)continue;const f=lh(e.timestamp)??n;o=uh(o,f),d=mh(d,f);const p=Bc(e.payload);if("session_meta"===e.type&&p){a=Gc(p.id)??a,r=Gc(p.source)??r,i=Gc(p.originator)??i,s=Gc(p.cwd)??s,o=lh(p.timestamp)??o;continue}const g=Gc(p?.type);if("event_msg"===e.type&&"task_started"===g&&(u+=1,c=Rm(p)??$m(a,t,u)),"turn_context"===e.type&&p){s=Gc(p.cwd)??s;continue}const w={originator:i,path:t,sessionId:a,source:r,turnId:Rm(p)??c},b=wm(e,f,w);if(b){m.push({...b,order:l});continue}const x=xm(e,f,w);x&&h.push({...x,order:l}),"event_msg"===e.type&&"task_complete"===g&&(c=void 0)}const f=function(e,t){if(!e.length)return t.sort(Em).map(Tm);const n=[...e];for(const a of t){if("SYSTEM"===a.role){n.some(e=>Am(e,a))||n.push(a);continue}const e=n.findIndex(e=>Cm(e,a));if(e<0){n.push(a);continue}const t=n[e];a.content.length>t.content.length&&(n[e]={...t,content:a.content})}return n.sort(Em).map(Tm)}(m,h),p=a??hh(t);if(!p||!f.length)return null;const g=fh(f.find(e=>"USER"===e.role)?.content??"")??fh(f[0]?.content??"")??"Imported Codex chat";return{createdAt:o??n,externalThreadId:p,messages:f,originator:i,path:t,source:r,title:g,updatedAt:d??n,workingDirectory:s}}(await Pn(e,"utf8"),e,new Date(n.mtimeMs)),s=i?.externalThreadId===t?i:null;return th(mm,a,n,s),s}catch{return null}}(t,e):null}async function pm(e){const t=await Ym(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>Zm())return null;const a=`${t}:${e}`,r=um.get(a);if(r&&eh(r,n))return r.value;let i,s=null;for(const t of(await Pn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=ch(t);if(!e)continue;"session_meta"===e.type&&(i=Gc(Bc(e.payload)?.id)??i);const n=ah(e);n&&(s=n)}const o=(i??hh(e))===t?s:null;return th(um,a,n,o),o}catch{return null}}(t,e):null}async function gm(e){const t=await jm(e);return t?Qm(t):null}async function vm(){return(await async function(e){const t=await Wm();if(!t)return[];try{const n=await Fm(t);return await t.$queryRawUnsafe(`\n SELECT ${Bm(n)}\n FROM threads\n ${function(e){return e.has("archived")?"WHERE COALESCE(archived, 0) = 0":""}(n)}\n ORDER BY ${Km(n)} DESC\n LIMIT ?\n `,e)}catch(n){return console.warn("Failed to read root Codex thread database.",n instanceof Error?n.message:n),[]}}(nh("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3))).map(Qm).sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime())}function wm(e,t,n){if("response_item"!==e.type)return null;const a=Bc(e.payload),r=Gc(a?.type);return a&&r?"message"===r?function(e,t,n,a){const r=(i=t.role,"assistant"===i?"ASSISTANT":"user"===i?"USER":null);var i;if(!r)return null;const s=function(e){return"string"==typeof e.text?qm(e.text,e):"string"==typeof e.message?qm(e.message,e):"string"==typeof e.content?qm(e.content,e):Array.isArray(e.content)?qm(e.content.map(e=>{if("string"==typeof e)return e;const t=Bc(e);return t?"string"==typeof t.text?t.text:Um(t)??"":""}).join(""),e):qm("",e)}(t);return!s.trim()||Nm(s)?null:{content:s,createdAt:n,itemId:Pm(t),metadata:Im(t,a),rawPayload:km(e,t),role:r,turnId:a.turnId}}(e,a,t,n):"reasoning"===r?function(e,t,n,a){const r=function(e){return[Mm(e.summary),Mm(e.content),Gc(e.summary),Gc(e.text)].filter(e=>!!e?.trim()).join("\n\n")}(t);return r.trim()?{content:r,createdAt:n,itemId:Pm(t),kind:"THINKING",metadata:{...Im(t,a),responseItemType:Gc(t.type)},rawPayload:km(e,t),role:"SYSTEM",turnId:a.turnId}:null}(e,a,t,n):function(e){return["custom_tool_call","function_call","image_generation_call","local_shell_call","tool_search_call","web_search_call"].includes(e)}(r)?function(e,t,n,a){const r=Gc(t.type)??"tool_call";if("web_search_call"===r)return bm(e,t,n,a,Sm(t),"webSearch");if("image_generation_call"===r)return bm(e,t,n,a,"Image generation","imageGeneration");const i=function(e){if("string"==typeof e)try{return Bc(JSON.parse(e))}catch{return}return Bc(e)}(t.arguments),s=function(e,t){const n=Bc(e.action);return Gc(t?.cmd)??Gc(t?.command)??Gc(n?.command)??Gc(n?.cmd)}(t,i),o=Gc(t.name)??r.replaceAll("_"," ");return function(e,t){return"local_shell_call"===e||["exec_command","shell_command","write_stdin"].includes(t)}(r,o)?{content:s??o,createdAt:n,itemId:Pm(t),kind:"COMMAND_EXECUTION",metadata:{...Im(t,a),command:s??o,cwd:Gc(i?.cwd)??Gc(i?.workdir)??Gc(Bc(t.action)?.cwd),kind:"command",status:Gc(t.status)??"completed"},rawPayload:km(e,t),role:"SYSTEM",turnId:a.turnId}:bm(e,t,n,a,o,"toolCall")}(e,a,t,n):function(e){return["custom_tool_call_output","function_call_output","tool_search_output"].includes(e)}(r)?function(e,t,n,a){const r=(i=t.output,"string"==typeof i?i:Mm(i)??"");var i;return r.trim()?{content:r,createdAt:n,itemId:Dm(t),kind:"TOOL_ACTIVITY",metadata:{...Im(t,a),callId:Lm(t),kind:"localCodexToolOutput",responseItemType:Gc(t.type),status:Gc(t.status)??"completed",toolName:Gc(t.name)},rawPayload:km(e,t),role:"SYSTEM",turnId:a.turnId}:null}(e,a,t,n):"compaction"===r||"context_compaction"===r?bm(e,a,t,n,ym(r),"contextCompaction"):null:null}function bm(e,t,n,a,r,i){return r.trim()?{content:r,createdAt:n,itemId:Pm(t),kind:"TOOL_ACTIVITY",metadata:{...Im(t,a),eventKind:i,responseItemType:Gc(t.type),status:Gc(t.status)},rawPayload:km(e,t),role:"SYSTEM",turnId:a.turnId}:null}function xm(e,t,n){if("event_msg"!==e.type)return null;const a=Bc(e.payload);if(!a)return null;const r=Gc(a.type);if("patch_apply_end"===r)return function(e,t,n,a){const r=Bc(t.changes),i=r?Object.keys(r):[],s=Gc(t.status)??(!1===t.success?"failed":"completed");return i.length?{content:i.join("\n"),createdAt:n,itemId:Pm(t)??`patch:${a.turnId??n.getTime()}`,kind:"FILE_CHANGE",metadata:{...Im(t,a),additions:0,deletions:0,kind:"fileChange",paths:i,status:s},rawPayload:km(e,t),role:"SYSTEM",turnId:a.turnId}:bm(e,t,n,a,Gc(t.stderr)??Gc(t.stdout)??"Patch applied","patchApply")}(e,a,t,n);if("web_search_end"===r)return bm(e,a,t,n,Sm(a),"webSearch");if("task_complete"===r){const r=Gc(a.last_agent_message)??"";return!r.trim()||Nm(r)?null:{content:r,createdAt:t,itemId:Pm(a)??`task-complete:${n.turnId??t.getTime()}`,metadata:{...Im(a,n),eventKind:"taskComplete"},rawPayload:km(e,a),role:"ASSISTANT",turnId:n.turnId}}const i="user_message"===r?"USER":"agent_message"===r?"ASSISTANT":function(e){const t=e?.replace(/[^a-z0-9]+/gi,"").toLowerCase()??"";return t.includes("compact")||t.includes("compaction")}(r)?"SYSTEM":null;if(!i)return null;const s="SYSTEM"===i?ym(r):"string"==typeof a.message?qm(a.message,a):"";return!s.trim()||Nm(s)?null:{content:s,createdAt:t,itemId:Pm(a),kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...Im(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:km(e,a),role:i,turnId:n.turnId}}function ym(e){const t=e?.replace(/[_-]+/g," ").trim().toLowerCase();return t?.includes("start")?"Context compaction started.":t?.includes("finish")||t?.includes("complete")?"Context compacted.":"Context compaction recorded."}function Nm(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function Im(e,t){return{kind:"localCodexImport",originator:t.originator,phase:Gc(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:Gc(e.type),turnId:t.turnId}}function km(e,t){return{payload:{callId:Lm(t),id:Gc(t.id),name:Gc(t.name),phase:Gc(t.phase),role:Gc(t.role),status:Gc(t.status),type:Gc(t.type)},timestamp:Gc(e.timestamp),type:Gc(e.type)}}function Am(e,t){const n=Gc(Bc(e.metadata)?.eventKind),a=Gc(Bc(t.metadata)?.eventKind);return!!n&&n===a&&Cm(e,t)}function Cm(e,t){if(e.role!==t.role)return!1;if((e.kind??"CHAT")!==(t.kind??"CHAT"))return!1;if(e.turnId&&t.turnId&&e.turnId!==t.turnId)return!1;const n=e.content.trim(),a=t.content.trim();return n===a||n.startsWith(a)||a.startsWith(n)}function Em(e,t){return e.order-t.order}function Tm({order:e,...t}){return t}function Mm(e){if(Array.isArray(e))return e.map(e=>{if("string"==typeof e)return e;const t=Bc(e);return Gc(t?.text)??Um(t)??""}).filter(Boolean).join("\n")||void 0}function Sm(e){const t=Bc(e.action),n=Gc(e.query)??Gc(t?.query)??Gc(t?.pattern)??Gc(t?.url);return n?`Web search: ${n}`:"Web search"}function Pm(e){return Gc(e.id)??Lm(e)}function Dm(e){const t=Lm(e);return t?`${t}:output`:Pm(e)}function Lm(e){return Gc(e.call_id)??Gc(e.callId)}function Rm(e){return Gc(e?.turn_id)??Gc(e?.turnId)}function $m(e,t,n){return`${e??hh(t)??fn(t)}:turn:${n}`}function qm(e,t){return[e,..._m(t.images),..._m(t.local_images),..._m(t.localImages)].filter(Boolean).join("\n\n")}function _m(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?zm(e):Um(Bc(e))).filter(e=>!!e):[]}function Um(e){return e?zm(Gc(e.url)??Gc(e.image_url)??Gc(e.path)??Gc(e.filePath)):null}function zm(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function Om(e,t={}){const n=e?.replace(/\s+/g," ").trim();return!n||Nm(n)||!t.allowGeneric&&function(e){const t=function(e){return e.replace(/\s+/g," ").trim().toLowerCase()}(e);return"untitled chat"===t||"conversation"===t||"new chat"===t||"new thread"===t||"chat"===t||"codex chat"===t}(n)?null:n.slice(0,160)}async function jm(e){const t=await Wm();if(!t)return null;try{const n=await Fm(t);return(await t.$queryRawUnsafe(`\n SELECT ${Bm(n)}\n FROM threads\n WHERE id = ?\n LIMIT 1\n `,e))[0]??null}catch{return null}}async function Fm(e){const t=await e.$queryRawUnsafe("PRAGMA table_info(threads)");return new Set(t.map(e=>e.name))}function Bm(e){return[Gm(e,"id"),Gm(e,"rollout_path","rolloutPath"),Hm(e,e.has("created_at_ms")?"created_at_ms":"created_at","createdAt"),Hm(e,Km(e),"updatedAt"),Gm(e,"cwd"),Gm(e,"title"),Gm(e,"first_user_message","firstUserMessage"),Gm(e,"preview"),Gm(e,"archived"),Gm(e,"archived_at","archivedAt")].join(",\n ")}function Gm(e,t,n){return e.has(t)?`${t}${n?` AS ${n}`:""}`:`NULL AS ${n??t}`}function Hm(e,t,n){return e.has(t)?`CAST(${t} AS TEXT) AS ${n}`:`NULL AS ${n}`}function Km(e){return e.has("updated_at_ms")?"updated_at_ms":e.has("updated_at")?"updated_at":"rowid"}async function Wm(){const e=il();try{await Cn(e,Xt.R_OK)}catch{return null}return lm.codexStatePrisma&&lm.codexStateDatabasePath===e||(await(lm.codexStatePrisma?.$disconnect().catch(()=>{})),lm.codexStateDatabasePath=e,lm.codexStatePrisma=new Wt({datasources:{db:{url:Jm(e)}}})),lm.codexStatePrisma}function Qm(e){const t=new Date(0),n=Vm(e.updatedAt,t),a=Vm(e.createdAt,n),r=Xm(e.rolloutPath)[0]??"",i=Om(e.firstUserMessage,{allowGeneric:!0}),s=Om(e.preview,{allowGeneric:!0});return{createdAt:a,externalThreadId:e.id,firstUserMessage:i,path:r,preview:s,title:Om(e.title,{allowGeneric:!1})??fh(i??"")??fh(s??"")??null,updatedAt:n,workingDirectory:e.cwd??void 0}}function Vm(e,t){const n="bigint"==typeof e?Number(e):"number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return!Number.isFinite(n)||n<=0?t:new Date(n>1e10?n:1e3*n)}function Jm(e){return`file:${e}?connection_limit=1&pool_timeout=30`}function Xm(e){const t=e?.trim();if(!t)return[];const n=wn(nl(),"sessions",ph(t));return[...new Set([t,n])]}async function Ym(e){const t=await jm(e);for(const n of Xm(t?.rolloutPath))try{return await Cn(n,Xt.R_OK),n}catch{}return null}function Zm(){return nh("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function eh(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}function th(e,t,n,a){if(e.size>=100){const t=e.keys().next().value;t&&e.delete(t)}e.set(t,{mtimeMs:n.mtimeMs,size:n.size,value:a})}function nh(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function ah(e){const t=rh(e);if(!t)return null;const n=Bc(t.params),a=Bc(t.info)??Bc(n?.info)??n??t;return function(e,t=e){const n=sh(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=sh(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=sh(e,["remaining_input_tokens","remainingInputTokens","remaining_tokens","remainingTokens","tokens_remaining","tokensRemaining"]),i=n??(void 0!==a&&void 0!==r?a+r:void 0);if(!i)return null;const s=function(e){let t=!1,n=0;for(const a of e)void 0!==a&&(t=!0,n+=a);return t?n:null}([sh(e,["input_tokens","inputTokens"]),sh(e,["output_tokens","outputTokens"]),sh(e,["reasoning_output_tokens","reasoningOutputTokens"])]),o=a??s;if(null===o)return null;const d=Math.min(o,i),c=Math.max(0,Math.min(100,Math.round(d/i*100)));return{tokenLimit:i,tokensRemaining:Math.max(0,i-d),tokensUsed:d,remainingPercent:Math.max(0,100-c),usedPercent:c}}(ih(a,["last_token_usage","lastTokenUsage"])??ih(a,["total_token_usage","totalTokenUsage"])??a,a)}function rh(e,t=0){if(t>4)return;const n=Bc(e);if(!n)return;const a=dh(Gc(n.type)??""),r=dh(Gc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=rh(n[i],t+1);if(e)return e}}function ih(e,t){for(const n of t){const t=Bc(e[n]);if(t)return t}}function sh(e,t){for(const n of t){const t=oh(e[n]);if(void 0!==t)return t}}function oh(e){if("number"==typeof e&&Number.isFinite(e)&&e>=0)return Math.floor(e);if("string"==typeof e&&e.trim()){const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.floor(t)}}function dh(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function ch(e){try{return Bc(JSON.parse(e))??null}catch{return null}}function lh(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function uh(e,t){return!e||t<e?t:e}function mh(e,t){return!e||t>e?t:e}function hh(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function fh(e){const t=e.split(/\s+/).map(e=>e.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu,"")).filter(Boolean).slice(0,5);if(!t.length)return null;const n=t.join(" ");return`${n.charAt(0).toUpperCase()}${n.slice(1)}`.slice(0,80)}function ph(e){const t=`${yn}sessions${yn}`,n=e.lastIndexOf(t);return-1===n?fn(e):e.slice(n+t.length)}var gh="__xedocRealtimeState__";function vh(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[gh]??={handlers:new Set},e[gh]}().handlers)r(a)}var wh=null;async function bh(){wh??=async function(){await Ac.$executeRawUnsafe('\n CREATE TABLE IF NOT EXISTS "ThreadPreference" (\n "threadId" TEXT NOT NULL PRIMARY KEY,\n "accountId" TEXT,\n "autoRotateAccount" BOOLEAN NOT NULL DEFAULT false,\n "title" TEXT,\n "workingDirectory" TEXT,\n "model" TEXT,\n "reasoningEffort" TEXT,\n "serviceTier" TEXT,\n "collaborationMode" TEXT NOT NULL DEFAULT \'default\',\n "permissionMode" TEXT NOT NULL DEFAULT \'default\',\n "archivedAt" DATETIME,\n "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n "updatedAt" DATETIME NOT NULL,\n CONSTRAINT "ThreadPreference_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "CodexAccount" ("id") ON DELETE SET NULL ON UPDATE CASCADE\n )\n '),await Ac.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_accountId_idx" ON "ThreadPreference"("accountId")'),await Ac.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_archivedAt_idx" ON "ThreadPreference"("archivedAt")')}().then(()=>Ac.$executeRawUnsafe('\n INSERT OR IGNORE INTO "ThreadPreference" (\n "threadId",\n "accountId",\n "autoRotateAccount",\n "title",\n "workingDirectory",\n "model",\n "reasoningEffort",\n "serviceTier",\n "collaborationMode",\n "permissionMode",\n "archivedAt",\n "createdAt",\n "updatedAt"\n )\n SELECT\n "externalThreadId",\n "accountId",\n "autoRotateAccount",\n "title",\n "workingDirectory",\n "model",\n "reasoningEffort",\n "serviceTier",\n "collaborationMode",\n "permissionMode",\n CASE WHEN "status" = \'ARCHIVED\' THEN "updatedAt" ELSE NULL END,\n "createdAt",\n "updatedAt"\n FROM "Chat"\n WHERE "externalThreadId" IS NOT NULL AND TRIM("externalThreadId") != \'\'\n ')).then(()=>{},()=>{}),await wh}async function xh(){return await bh(),Ac.threadPreference.findMany()}async function yh(e){return await bh(),Ac.threadPreference.findUnique({where:{threadId:e}})}async function Nh(e,t){await bh();const n=function(e){return{accountId:e.accountId,archivedAt:e.archivedAt,autoRotateAccount:e.autoRotateAccount,collaborationMode:e.collaborationMode,model:e.model,permissionMode:e.permissionMode,reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier,title:e.title,workingDirectory:e.workingDirectory}}(t);return Ac.threadPreference.upsert({where:{threadId:e},create:{threadId:e,...n,updatedAt:new Date},update:n})}async function Ih(e){const[t,n]=await Promise.all([gm(e),yh(e)]);return t?.workingDirectory??n?.workingDirectory??null}function kh(e){return"fullAccess"===e?"fullAccess":"default"}async function Ah(e){const t=Th(),n=Mh(t,e),a=await Dn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:pn(n),entries:a.map(e=>function(e,t){return{name:t.name,path:wn(e,t.name),type:Sh(t)}}(n,e)).sort((e,t)=>"directory"===e.type&&"directory"!==t.type?-1:"directory"!==e.type&&"directory"===t.type?1:e.name.localeCompare(t.name))}}async function Ch(e,t){const n=Th(),a=xn(Mh(n,e),function(e){const t=e.trim();if(!t)throw new oc(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new oc(400,"Folder name must be a single folder name.");return t}(t)),r=bn(n,a);if(r.startsWith("..")||vn(r))throw new oc(403,"Path is outside the workspace root.");try{await Mn(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new oc(409,"Folder already exists.");throw i}return Ah(a)}function Eh(e){return Mh(Th(),e)}function Th(){const e=function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Zt(e)||tn(e,{recursive:!0}),on(e)}function Mh(e,t){const n=t?.trim(),a=n?vn(n)?n:wn(e,n):e;let r;try{r=on(xn(a))}catch{throw new oc(400,"Workspace path does not exist.")}const i=bn(e,r);if(i.startsWith("..")||vn(i))throw new oc(403,"Path is outside the workspace root.");if(!ln(r).isDirectory())throw new oc(400,"Workspace path is not a directory.");return r}function Sh(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var Ph=1e6;async function Dh(e,t,n){const a=await Ih(e);if(!a)throw new oc(400,"Chat does not have a working directory.");const r=Eh(a),i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()),n=/^(.*)#L(\d+)(?:-\d+)?$/i.exec(t);if(n)return{line:Number(n[2]),path:n[1]};const a=/^(.+):(\d+)(?::\d+)?$/.exec(t);return a&&!/^[A-Za-z]:\\/.test(t)?{line:Number(a[2]),path:a[1]}:{path:t}}(t),s=await Lh(r,i.path),o=await Rh(s,r),d=n??i.line??null,c=Math.min(o.size,Ph),l=c?await async function(e,t){const n=await Sn(e,"r");try{const e=Buffer.alloc(t),a=await n.read(e,0,t,0);return e.subarray(0,a.bytesRead)}finally{await n.close()}}(s,c):Buffer.alloc(0),u=function(e){if(!e.length)return!1;const t=e.subarray(0,Math.min(e.length,8e3));return!!t.includes(0)||t.toString("utf8").includes("�")}(l),m=u?void 0:l.toString("utf8"),h=m?m.split(/\r?\n/).length:0;return{content:m,isBinary:u,language:$h(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>Ph}}async function Lh(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new oc(400,"File path is required.");const a=await Ln(e),r=vn(n)?n:xn(a,n);let i;try{i=await Ln(r)}catch{throw new oc(404,"File does not exist.")}return function(e,t){const n=bn(e,t);if(n.startsWith("..")||vn(n))throw new oc(403,"Path is outside the chat working directory.")}(a,i),i}async function Rh(e,t){const n=await Rn(e);if(!n.isFile())throw new oc(400,"Workspace path is not a file.");const a=t?await Ln(t):null;return{name:fn(e),path:e,relativePath:a&&bn(a,e)||fn(e),size:n.size}}function $h(e){const t=gn(e).slice(1).toLowerCase();return{cjs:"javascript",css:"css",go:"go",htm:"html",html:"html",js:"javascript",json:"json",jsonl:"json",jsx:"javascript",md:"markdown",mjs:"javascript",py:"python",rb:"ruby",rs:"rust",sh:"bash",sql:"sql",ts:"typescript",tsx:"typescript",yaml:"yaml",yml:"yaml"}[t]??(t||null)}var qh=new Map,_h=new Map,Uh=new Map,zh=new Map,Oh=new Map,jh=new Map,Fh="New Thread";async function Bh(e){const t=await yh(e),n=await Yh(e);if(!n&&!_h.has(e))throw new oc(404,"Chat not found.");return ef(e,t,n)}async function Gh(e,t){const n=await Bh(e);if("RUNNING"===n.status){if(void 0!==t.accountId&&t.accountId!==n.accountId)throw new oc(400,"Wait for the current run to finish before switching accounts.");if(void 0!==t.collaborationMode&&Mp(t.collaborationMode)!==n.collaborationMode)throw new oc(400,"Wait for the current run to finish before changing modes.");if(void 0!==t.workingDirectory)throw new oc(400,"Wait for the current run to finish before changing workspace.")}const a=await async function(e,t){if(void 0===t||t===e)return;return null===t?null:(await Jh(t)).id}(n.accountId,t.accountId);if(_h.get(e)?.primed&&void 0!==a&&a!==n.accountId)throw new oc(400,"Send the first message before switching accounts on this chat.");const r=void 0===t.collaborationMode?void 0:Mp(t.collaborationMode),i=void 0===t.permissionMode?void 0:Sp(t.permissionMode),s=void 0===t.title?void 0:Lp(t.title)??"Untitled chat",o=void 0===t.workingDirectory?void 0:Eh(t.workingDirectory),d=await Nh(e,{accountId:a,autoRotateAccount:t.autoRotateAccount,collaborationMode:r,model:void 0===t.model?void 0:Cp(t.model),permissionMode:i,reasoningEffort:void 0===t.reasoningEffort?void 0:Ep(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Tp(t.serviceTier),title:s,workingDirectory:o});if(a&&hm(e,a).catch(e=>{console.warn("Failed to mirror Codex session.",e instanceof Error?e.message:e)}),s&&async function(e,t,n){if(!t.accountId)return;const a=await Ac.codexAccount.findUnique({where:{id:t.accountId}});if(!a||"CONNECTED"!==a.status)return;await Fp(Up(a),e,n)}(e,d,s).catch(e=>{console.warn("Failed to persist Codex chat title.",e instanceof Error?e.message:e)}),i){const t=_h.get(e);t&&(t.permissionMode=i),"fullAccess"===i&&await async function(e){const t=[...qh.values()].filter(t=>t.threadId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=bp(t);n.runtime.respondToServerRequest(n.rpcId,a),qh.delete(xp(e,n.requestId));const r=df(e,n.messageId,{completedAt:new Date,metadataPatch:{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,resolvedAt:(new Date).toISOString(),result:a,status:"resolved"},status:"COMPLETED"});r&&qp(e,"message.updated",r)}}(e)}const c=await ef(e,d);return qp(e,"chat.updated",c),c}async function Hh(e){await Bh(e);const t=await ef(e,await async function(e){return Nh(e,{archivedAt:new Date})}(e));return qp(e,"chat.updated",t),t}async function Kh(e,t=0,n=50){const a=await Bh(e),r=Math.min(Math.max(n,1),200),i=(await async function(e){const t=await fm(e);return t?t.messages.map(e=>function(e){return{completedAt:e.createdAt,content:e.content,createdAt:e.createdAt,itemId:e.itemId,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,role:e.role,source:"session",turnId:e.turnId}}(e)):[]}(e)).map((t,n)=>function(e,t,n,a,r){const i=n.createdAt??t.createdAt;return{chatId:e,completedAt:n.completedAt??n.createdAt??i,content:n.content,createdAt:i,id:tf(e,n,a),itemId:n.itemId??null,kind:n.kind??"CHAT",metadata:n.metadata?kp(n.metadata):nf(n),rawPayload:kp(n.rawPayload??null),requestId:null,role:n.role,runId:null,sequence:r,status:"COMPLETED",turnId:n.turnId??null}}(e,a,t,n,n+1)),s=function(e,t){const n=_h.get(e);return n?t.length?n.messages.filter(e=>function(e,t){return"PENDING"===e.status||"STREAMING"===e.status||"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||!t.some(t=>function(e,t){return e.kind===t.kind&&e.role===t.role&&(!(!e.turnId||!t.turnId||e.turnId!==t.turnId)||(!(!e.itemId||!t.itemId||e.itemId!==t.itemId)||"CHAT"===e.kind&&cf(e.content)===cf(t.content)))}(t,e))}(e,t)):n.messages:[]}(e,i),o=[...i,...s].sort((e,t)=>e.sequence-t.sequence).filter(e=>e.sequence>t).slice(0,r);return{data:o,nextCursor:o.length?o[o.length-1].sequence:null}}async function Wh(e,t,n){await Bh(e);const a=xp(e,t),r=qh.get(a);if(!r)throw new oc(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new oc(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new oc(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new oc(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),qh.delete(a);const s=df(e,r.messageId,{completedAt:new Date,metadataPatch:{decision:n.decision,resolvedAt:(new Date).toISOString(),result:n.result??i,status:"resolved"},status:"COMPLETED"});if(!s)throw new oc(410,"Server request is no longer active.");return qp(e,"message.updated",s),s}async function Qh(e,t){let n=await Bh(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new oc(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await mf(n));const a=t.accountId??n.accountId;if(!a)throw new oc(400,"Choose a Codex account before sending messages.");const r=await Jh(a);if(!n.workingDirectory)throw new oc(400,"Select a working directory before sending messages.");const i=Eh(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new oc(400,"A message can include up to 12 attachments.");const n=[];for(const a of t)if("image"!==a.kind){if("file"!==a.kind)throw new oc(400,"Attachment kind is invalid.");n.push(await vf(e,a))}else n.push(gf(a));return n}(i,t.attachments??[]),o=function(e,t){const n=t.map(e=>e.message).filter(e=>"image"===e.kind).map(e=>`<image>${e.url}</image>`);return[e.trim(),...n].filter(Boolean).join("\n\n")}(t.content,s);if(!o.trim()&&!s.length)throw new oc(400,"Message content or an attachment is required.");const d=void 0===t.collaborationMode?void 0:Mp(t.collaborationMode),c=d??n.collaborationMode,l=n.permissionMode,u=new Date,m=await rf(e);if("RUNNING"===m.status||"QUEUED"===m.status)return"steer"===t.delivery?async function({account:e,attachments:t,collaborationMode:n,content:a,messageContent:r,metadata:i,startedAt:s,threadId:o}){const d=_h.get(o);if(!d?.runtime)throw new oc(409,"The active turn is not ready for steering yet.");const c=d.turnId??await Cf(d.runtime,o);if(!c)throw new oc(409,"The active turn has not published a turn id yet.");const l=await yh(o),u=await Of(d.runtime,l?.model??null,l?.reasoningEffort??null);d.turnId=Kf(await kf(d.runtime,{expectedTurnId:c,threadId:o,...Uf(n,u)},a,t))??c;const m=of(o,{completedAt:s,content:r,metadata:xf({...i,delivery:"steer",steeredAt:s.toISOString()},t),role:"USER",status:"COMPLETED"});return qp(o,"chat.updated",await Bh(o)),qp(o,"message.created",m),{message:m,assistantMessage:null,runId:d.runId,status:"RUNNING",delivery:"steer",steered:!0}}({account:r,attachments:s,collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,startedAt:u,threadId:e,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,messageContent:i,metadata:s,permissionMode:o,queuedAt:d,threadId:c,workingDirectory:l}){const u=Bt(),m=of(c,{completedAt:d,content:i,metadata:xf({...s,delivery:"queue",queuedAt:d.toISOString(),queueId:u,queueStatus:"queued"},t),role:"USER",status:"COMPLETED"});return sf(c).queuedTurns.push({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,createdAt:d,id:u,messageId:m.id,metadata:s,permissionMode:o,workingDirectory:l}),qp(c,"chat.updated",await Bh(c)),qp(c,"message.created",m),{message:m,assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:await yf(n,bf(t.content,s)),collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,queuedAt:u,threadId:e,workingDirectory:i});const h=of(e,{completedAt:u,content:o,metadata:xf(t.metadata,s),role:"USER",status:"COMPLETED"});qp(e,"message.created",h);const f=await lf({account:r,attachments:s,automaticTitleSeed:await yf(n,bf(t.content,s)),collaborationMode:c,content:t.content,metadata:t.metadata??{},permissionMode:l,requestedCollaborationMode:d,startedAt:u,threadId:e,workingDirectory:i});return{message:h,assistantMessage:f.assistantMessage,runId:f.runId,status:"QUEUED"}}function Vh(e){const t=_h.get(e)?.status;return"RUNNING"===t||"QUEUED"===t?"RUNNING":"IDLE"}async function Jh(e){const t=await Ac.codexAccount.findUnique({where:{id:e}});if(!t)throw new oc(400,"Account not found.");if("CONNECTED"!==t.status)throw new oc(400,"Authenticate the account before using this chat.");return t}async function Xh(){const e=await vm(),t=new Map;for(const n of e)t.set(n.externalThreadId,Zh(n));return t}async function Yh(e){const t=await gm(e);return t?{createdAt:t.createdAt,firstUserMessage:t.firstUserMessage??null,preview:t.preview??null,threadId:e,title:t.title,updatedAt:t.updatedAt,workingDirectory:t.workingDirectory??null}:null}function Zh(e){return{createdAt:e.createdAt,firstUserMessage:e.firstUserMessage??null,preview:e.preview??null,threadId:e.externalThreadId,title:e.title,updatedAt:e.updatedAt,workingDirectory:e.workingDirectory??null}}async function ef(e,t,n){const a=void 0===n?await Yh(e):n,r=_h.get(e),i=function(e){return{accountId:e?.accountId??null,autoRotateAccount:e?.autoRotateAccount??!1,collaborationMode:(t=e?.collaborationMode,"plan"===t?"plan":"default"),model:e?.model??null,permissionMode:kh(e?.permissionMode),reasoningEffort:e?.reasoningEffort??null,serviceTier:e?.serviceTier??null,workingDirectory:e?.workingDirectory??null};var t}(t),s=t?.createdAt??a?.createdAt??r?.updatedAt??new Date,o=r?.updatedAt??a?.updatedAt??t?.updatedAt??s,d=function({preferenceTitle:e,preview:t,seed:n,snapshotTitle:a}){for(const r of[e,a]){const e=Lp(r??"");if(e&&!Rp(e))return e}return $p(n??"")??$p(t??"")??Fh}({preferenceTitle:t?.title,preview:a?.preview,seed:(c=r?.messages??[],[...c].reverse().find(e=>"USER"===e.role&&e.content.trim())?.content??null??a?.firstUserMessage??null),snapshotTitle:a?.title});var c;return{...i,id:e,externalThreadId:e,lastActivityAt:o,status:t?.archivedAt?"ARCHIVED":"RUNNING"===r?.status||"QUEUED"===r?.status?"RUNNING":"IDLE",title:d,workingDirectory:a?.workingDirectory??i.workingDirectory,createdAt:s,updatedAt:o}}function tf(e,t,n){return["codex",e,t.turnId??"turn",t.itemId??n,t.role.toLowerCase()].join(":")}function nf(e){return{kind:"codexTranscript",source:e.source}}function af(e){if("string"==typeof e&&e.length>0)return e;if(!Array.isArray(e))return;const t=e.map(e=>{if("string"==typeof e)return e;const t=Bc(e);return Ap(t?.text)??Ap(t?.content)??Ap(t?.message)??function(e){return e?function(e){const t=e?.trim();return t?`<image>${t}</image>`:null}(Gc(e.url)??Gc(e.image_url)??Gc(e.path)??Gc(e.filePath)):null}(t)??""}).join("");return t.length?t:void 0}async function rf(e){const t=_h.get(e);if(t)return t;const n=(await fm(e))?.messages.length??0,a={interruptRequested:!1,messageKeys:new Map,messages:[],nextSequence:n+1,permissionMode:"default",primed:!1,queuedTurns:[],status:"IDLE",threadId:e,updatedAt:new Date};return _h.set(e,a),a}function sf(e){const t=_h.get(e);if(!t)throw new Error(`Missing runtime state for ${e}.`);return t}function of(e,t){const n=sf(e),a=new Date,r={chatId:e,completedAt:t.completedAt??null,content:t.content,createdAt:a,id:t.id??`runtime:${e}:${Bt()}`,itemId:t.itemId??null,kind:t.kind??"CHAT",metadata:t.metadata?kp(t.metadata):null,rawPayload:t.rawPayload?kp(t.rawPayload):null,requestId:t.requestId??null,role:t.role,runId:t.runId??n.runId??null,sequence:n.nextSequence,status:t.status??"PENDING",turnId:t.turnId??null};return n.nextSequence+=1,n.updatedAt=a,n.messages.push(r),r}function df(e,t,n){const a=_h.get(e),r=a?.messages.findIndex(e=>e.id===t)??-1;if(!a||r<0)return null;const i=a.messages[r],s={...i,completedAt:n.completedAt??i.completedAt,content:n.content??i.content,metadata:void 0!==n.metadata?kp(n.metadata):n.metadataPatch?{...Bc(i.metadata)??{},...n.metadataPatch}:i.metadata,rawPayload:void 0!==n.rawPayload?kp(n.rawPayload):i.rawPayload,status:n.status??i.status,turnId:void 0===n.turnId?i.turnId:n.turnId};return a.messages[r]=s,a.updatedAt=new Date,s}function cf(e){return e.replace(/\s+/g," ").trim()}async function lf({account:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,metadata:i,permissionMode:s,requestedCollaborationMode:o,startedAt:d,threadId:c,workingDirectory:l}){const u=await rf(c),m=`run:${c}:${Bt()}`;u.accountId=e.id,u.interruptRequested=!1,u.permissionMode=s,u.runId=m,u.status="QUEUED",u.turnId=null,u.updatedAt=d,o&&await Nh(c,{collaborationMode:o});const h=of(c,{content:"",kind:"CHAT",role:"ASSISTANT",runId:m,status:"PENDING"});return qp(c,"chat.updated",await Bh(c)),qp(c,"message.created",h),qp(c,"run.status",{runId:m,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(function(e,t){const n=Uh.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Uh.set(e,i),n.catch(()=>{}).then(t).finally(()=>{a(),Uh.get(e)===i&&Uh.delete(e)})})(a.id,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=sf(e),u=await yh(e),m=(p=u?.permissionMode,"fullAccess"===p?"fullAccess":"default"),h=Up(a),f=l.primed&&l.accountId===a.id&&l.runtime===h;var p;l.permissionMode=m,l.runtime=h,l.status="RUNNING",l.updatedAt=new Date;const g=df(e,n,{status:"STREAMING"});g&&qp(e,"message.updated",g);qp(e,"chat.updated",await Bh(e)),qp(e,"run.status",{runId:t,status:"RUNNING"}),await hm(e,a.id);let v="";const w=new Map;let b,x=!1,y=null,N=null;const I=l.runtime.onEvent(a=>{(function(e,t,n){const a=Qf(e);if(t&&a&&a!==t)return!1;const r=Vf(e);return!n||!r||r===n})(a,e,b)&&Nf(t,()=>async function(e,t){const n=function(e){const t=mp(e);if(t){const e=Bc(t.params),n=Bc(t.info)??Bc(e?.info)??e??t;return up(hp(n,["last_token_usage","lastTokenUsage"])??hp(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=Bc(e.params),a=Bc(n?.event),r=Bc(n?.usage)??Bc(a?.usage)??(lp(e.method)?n:void 0);return r?up(r):null}(t);n&&qp(e.threadId,"context.updated",n);if(function(e){return!!mp(e)||lp(e.method)}(t))return;if(function(e){const t=Bc(e.params),n=Bc(t?.payload)??Bc(t?.event);return[e.method,Gc(t?.type),Gc(n?.type),Gc(n?.event)].some(e=>tp(e??"").includes("compact"))}(t))return void(await jf({completedAt:new Date,content:dp(t),itemId:`context-compaction:${Vf(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:cp(t)?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:Vf(t)}));const a=t.method??"",r=Bc(t.params),i=Xf(t),s=tp(Gc(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=Bc(e.params),n=Bc(e.result),a=Bc(t?.event);return Op(t)??Op(a)??Op(n)}(t);return void(n&&await Bp(e.threadId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=Ap(r?.delta)??Ap(Bc(r?.event)?.delta);if(!n)return;const a=Jf(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await jf({content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Gc(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:Vf(t)});return void qp(e.threadId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&np(s))return void(await jf({content:"",fallbackMessageId:e.assistantMessageId,itemId:Jf(t),kind:"CHAT",metadata:{kind:"assistant",phase:Gc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:Vf(t)}));if("item/completed"===a&&np(s)){const n=function(e){if(!e)return"";const t=Ap(e.text)??Ap(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>Ap(Bc(e)?.text)??"").filter(Boolean).join("")}(i)||Hf(t);if(!n)return;const a=Jf(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await jf({completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Gc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:Vf(t)}))}if(a.startsWith("item/reasoning/")||tp(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=Jf(t)??`${n.toLowerCase()}:${Vf(t)??"turn"}`,i=`${n}:${r}`,s=e.streamBuffers.get(i),o=a.delta?`${s??""}${a.delta}`:a.content??s??a.contentFallback??"";if(!o.trim())return;e.streamBuffers.set(i,o),await jf({content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:ap(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Vf(t)})}(e,t,"THINKING",{content:Zf(t,i),delta:Yf(t),metadata:{kind:"thinking",status:ip(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=Bc(t.params)??{},a="item/plan/delta"===t.method?Yf(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>Bc(e)).filter(e=>!!e).map(e=>({status:Gc(e.status)??"pending",step:Gc(e.step)??""})).filter(e=>e.step),i=Gc(n.explanation),s=Vf(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:Jf(t)??`plan:${s??e.runId}`,d=`PLAN:${o}`,c=a?`${e.streamBuffers.get(d)??""}${a}`:i??r.map(e=>e.step).join("\n");if(!c.trim()&&!r.length&&!i)return;e.streamBuffers.set(d,c),await jf({content:c,itemId:o,kind:"PLAN",metadata:{explanation:i,kind:"plan",presentation:a?"result":"progress",steps:r},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"item/plan/delta"===t.method?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:s})}(e,t));if("commandexecution"===s||a.includes("commandExecution"))return void(await async function(e,t,n){const a=Bc(t.params)??{},r=n??a,i=Jf(t)??`command:${Vf(t)??"turn"}`,s=`COMMAND:${i}`,o=Yf(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:Ap(r.output)??Ap(r.aggregatedOutput)??Ap(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=Gc(r.command)??Gc(a.command)??"command",l=ip(r,t.method??"");await jf({completedAt:ap(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Np(r.actions)??Np(r.commandActions),command:c,cwd:Gc(r.cwd)??Gc(a.cwd),durationMs:Ip(r.durationMs)??Ip(r.duration_ms),exitCode:Ip(r.exitCode)??Ip(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":ap(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Vf(t)})}(e,t,i));if("filechange"===s||a.includes("fileChange")||"turn/diff/updated"===a||a.includes("turn_diff"))return void(await async function(e,t,n){const a=Bc(t.params)??{},r=n??a,i=Jf(t)??`file-change:${Vf(t)??"turn"}`,s=sp(r)??sp(a),o=Np(r.changes)??Np(a.changes)??[],d=function(e,t){const n=[Gc(e.path),Gc(e.filePath),Gc(e.file_path),...t.flatMap(e=>{const t=Bc(e);return[Gc(t?.path),Gc(t?.filePath),Gc(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await jf({content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Ip(r.additions)??op(s,"+"),changes:o,deletions:Ip(r.deletions)??op(s,"-"),diff:s,kind:"fileChange",paths:d,status:ip(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:ap(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Vf(t)})}(e,t,i));if("serverRequest/resolved"===a)return void function(e,t){const n=Bc(t.params)??{},a=Gc(n.requestId)??Gc(n.id);if(!a)return;qh.delete(xp(e,a));const r=_h.get(e)?.messages.find(e=>e.requestId===a);if(!r)return;const i=df(e,r.id,{completedAt:new Date,metadataPatch:{resolvedAt:(new Date).toISOString(),result:void 0===n.result?null:kp(n.result),status:"resolved"},status:"COMPLETED"});i&&qp(e,"message.updated",i)}(e.threadId,t);("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=Bc(t.params),a=Gc(Bc(n?.error)?.message)??Gc(n?.message)??t.error?.message??"Codex runtime error.";await jf({completedAt:new Date,content:a,itemId:`error:${Vf(t)??Date.now()}`,kind:"ERROR",metadata:{details:kp(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",threadId:e.threadId,turnId:Vf(t)})}(e,t)}({assistantMessageId:n,onAssistantContent:e=>{v=e},runId:t,streamBuffers:w,threadId:e},a)).catch(e=>_p("Codex event projection failed.",e))}),k=l.runtime.onServerRequest(n=>{(function(e,t,n){const a=Bc(e.params),r=Gc(a?.threadId);if(t&&r&&r!==t)return!1;const i=Gc(a?.turnId);return!n||!i||i===n})(n,e,b)&&Nf(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=Bc(t.params)??{},r=sl(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?tp(e).includes("permissions")?"permissions":"approval":tp(e).includes("elicitation")?"userInput":null}(n);if(!i)return void e.runtime.rejectServerRequest(t.id,-32601,`Unsupported request method: ${n}`);const s="userInput"===i?function(e,t,n,a){return{kind:"userInput",message:Gc(n.message),method:e,mode:Gc(n.mode),questions:gp(n.questions),raw:kp(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Np(n.availableDecisions),changes:Np(n.changes),command:Gc(n.command),cwd:Gc(n.cwd),itemId:Gc(n.itemId),kind:a,method:e,raw:kp(r),reason:Gc(n.reason)??Gc(n.message),requestId:t,requestKind:a,status:"pending",turnId:Gc(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=bp(i);return e.runtime.respondToServerRequest(t.id,n),void(await jf({completedAt:new Date,content:wp(s),itemId:Gc(a.itemId),kind:"APPROVAL",metadata:{...s,autoApproved:!0,decision:"approval"===i?"acceptForSession":void 0,resolvedAt:(new Date).toISOString(),result:n,status:"resolved"},rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:Gc(a.turnId)}))}const o=await jf({content:wp(s),itemId:Gc(a.itemId),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",threadId:e.threadId,turnId:Gc(a.turnId)});qh.set(xp(e.threadId,r),{messageId:o.id,requestId:r,requestKind:i,rpcId:t.id,runtime:e.runtime,threadId:e.threadId})}({permissionMode:()=>l.permissionMode,runId:t,runtime:l.runtime,threadId:e},n)).catch(e=>_p("Codex server request projection failed.",e))});try{if(!f&&await qf(l.runtime,e,o,d)!==e)throw new Error("Codex returned a different thread id while resuming.");!function({cwd:e,runtime:t,seed:n,threadId:a}){const r=n?.trim();if(!r)return;const i=$p(r);(async()=>{i&&await jp(t,a,i);const n=await async function(e,{cwd:t,seed:n}){try{const a=Bc((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return Lp(Gc(a?.name)??Gc(a?.threadName)??Gc(a?.thread_name)??Gc(a?.title)??"")}catch{return null}}(t,{cwd:e,seed:r});n&&await jp(t,a,n)})().catch(()=>{})}({cwd:o,runtime:l.runtime,seed:c,threadId:e});const h=await Of(l.runtime,u?.model??null,u?.reasoningEffort??null);y=new AbortController,N=l.runtime.waitForEvent(t=>function(e){const t=e.method??"";return"turn/completed"===t||"turn/failed"===t||"turn/interrupted"===t||"turn/cancelled"===t||"turn/canceled"===t||t.startsWith("turn/")&&(t.includes("completed")||t.includes("failed")||t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled"))}(t)&&Qf(t)===e&&(!b||Vf(t)===b),6e5,y.signal);const p=await async function(e,t,n,a){const r=Lf(n,a);let i;for(const o of r)try{return await e.request("turn/start",{...t,input:o},3e4)}catch(s){if(i=s,!Rf(s))throw s}throw i instanceof Error?i:new Error("Codex turn failed.")}(l.runtime,{threadId:e,cwd:o,...u?.model?{model:u.model}:{},...u?.reasoningEffort?{effort:u.reasoningEffort}:{},...u?.serviceTier?{serviceTier:u.serviceTier}:{},..._f(d,h,m),metadata:i},r,s);x=!0,b=Kf(p),l.primed=!1,l.turnId=b??null,b&&l.interruptRequested&&await If(l.runtime,b,e);const g=await N;if(await async function(e){await(Oh.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(g))throw new uf(rp(g));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Error(rp(g));const w=await async function(e,t,n){try{const a=Bc((await e.request("thread/turns/list",{limit:20,threadId:t},3e4)).result);return Wf((Array.isArray(a?.data)?a.data:[]).map(e=>Bc(e)).filter(e=>!!e).filter(e=>!n||Gc(e.id)===n).at(-1))??null}catch{return null}}(l.runtime,e,b)||Hf(g)||Hf(p)||v,I=new Date,k=df(e,n,{completedAt:I,content:w,rawPayload:g,status:"COMPLETED",turnId:b??null});Gf(e,t,"COMPLETED"),Bf(e,t,"Codex completed the turn."),l.status="IDLE",l.runtime=void 0,l.updatedAt=I,"plan"===d&&function(e,t){return _h.get(e)?.messages.some(e=>{if(e.runId!==t)return!1;const n=e.content.trim();return!(!n||"Planning..."===n)&&("CHAT"===e.kind&&"ASSISTANT"===e.role?/<proposed_plan\b[^>]*>[\s\S]*?<\/proposed_plan>/i.test(n):"PLAN"===e.kind&&"result"===Bc(e.metadata)?.presentation)})??!1}(e,t)&&await Nh(e,{collaborationMode:"default"}),qp(e,"chat.updated",await Bh(e)),k&&qp(e,"message.completed",k),qp(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t){const n=await async function(e,t){try{const n=Op((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result);if(n)return n}catch{}try{const n=Bc((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return Op((yp(n?.data)??yp(n?.items)??yp(n?.threads)??[]).find(e=>Gc(e.id)===t))}catch{return null}}(e,t);n&&await Bp(t,n)}(Up(a),e),await hm(e,a.id)}catch(A){y?.abort(),await(N?.catch(()=>{}));const a=A instanceof Error?A.message:"Codex run failed.",r=f&&!x;Bf(e,t,a);const i=new Date;if(A instanceof uf){Gf(e,t,"COMPLETED");const s=df(e,n,{completedAt:i,content:v,metadataPatch:{interrupted:!0,kind:"assistant"},status:"COMPLETED"});return l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,qp(e,"chat.updated",await Bh(e)),s&&qp(e,"message.completed",s),void qp(e,"run.status",{error:a,runId:t,status:"CANCELLED"})}Gf(e,t,"FAILED");const s=df(e,n,{completedAt:i,content:v,status:"FAILED"});l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,qp(e,"chat.updated",await Bh(e)),s&&qp(e,"message.failed",{...s,error:a}),qp(e,"run.status",{error:a,runId:t,status:"FAILED"})}finally{y?.abort(),I(),k(),Oh.delete(t),l.runId=null,l.turnId=null,l.queuedTurns.length?function(e){const t=(zh.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){const t=_h.get(e);if(!t||"RUNNING"===t.status||"QUEUED"===t.status)return;const n=t.queuedTurns.shift();if(!n)return;try{const t=await Jh((await mf(await Bh(e))).accountId??n.accountId),a=new Date,r=await lf({account:t,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:n.permissionMode,startedAt:a,threadId:e,workingDirectory:n.workingDirectory}),i=df(e,n.messageId,{metadataPatch:{dequeuedAt:a.toISOString(),queueStatus:"running",runId:r.runId}});i&&qp(e,"message.updated",i)}catch(A){const a=df(e,n.messageId,{metadataPatch:{error:A instanceof Error?A.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"}});a&&qp(e,"message.updated",a)}}(e)).catch(()=>{});zh.set(e,t),t.finally(()=>{zh.get(e)===t&&zh.delete(e)})}(e):function(e){mf(async function(e){try{return await Bh(e)}catch{return null}}(e)).catch(e=>{console.warn("Failed to auto rotate idle chat account.",e instanceof Error?e.message:e)})}(e)}}(e,t,n,a,r,i,s,o,d,c))}(c,m,h.id,e,r,i,t,l,a,n),{assistantMessage:h,runId:m}}var uf=class extends Error{};async function mf(e){const t=await e;if(!t)throw new oc(404,"Chat not found.");if(!t.autoRotateAccount||"RUNNING"===t.status||_h.get(t.id)?.primed)return t;const n=await Ac.codexAccount.findMany({orderBy:{createdAt:"asc"},where:{status:"CONNECTED"}});if(!n.length)return t;const a=await async function(e){const t=new Map,n=await Promise.allSettled(e.map(async e=>({accountId:e.id,snapshot:yr(await Zc({accountId:e.id,args:zp(e.args),command:e.command,environment:Hc(e.environment),workingDirectory:null}))})));for(const a of n)"fulfilled"===a.status&&t.set(a.value.accountId,a.value.snapshot);return t}(n),r=n.find(e=>e.id===t.accountId),i=r?hf(a.get(r.id)):-1;if(r&&i>=0)return t;const s=function(e,t){return e.map((e,n)=>({account:e,index:n,score:hf(t.get(e.id))})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}(n,a);if(!s||s.id===t.accountId)return t;if(hf(a.get(s.id))<0)return t;const o=await Nh(t.id,{accountId:s.id});hm(t.id,s.id).catch(()=>{});const d=await ef(t.id,o);return qp(t.id,"chat.updated",d),d}function hf(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?ff(e.secondary)?"weekly":ff(e.primary)?"fiveHour":null:null}(e))return-1;if(e.credits&&!e.credits.unlimited&&!e.credits.hasCredits)return-1;if(e.credits?.unlimited)return 101;const t=[e.primary,e.secondary].filter(e=>!!e).map(e=>100-pf(e.usedPercent));return t.length?Math.min(...t):0}function ff(e){return pf(e?.usedPercent??0)>=100}function pf(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function gf(e){const t=e.dataUrl?.trim(),n=/^data:(image\/(?:png|jpeg|jpg|webp|gif));base64,([A-Za-z0-9+/=\s]+)$/i.exec(t);if(!n)throw new oc(400,"Image attachments must be data URLs.");const a=n[1].toLowerCase().replace("image/jpg","image/jpeg"),r=n[2].replace(/\s+/g,""),i=Buffer.byteLength(r,"base64");if(i>6291456)throw new oc(400,"Image attachments must be 6 MB or smaller.");const s=wf(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:Bt(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function vf(e,t){const n=await async function(e,t){return Rh(await Lh(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Bt(),kind:"file",name:wf(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function wf(e,t){const n=e?.trim();return(n?fn(n):t).slice(0,160)||"attachment"}function bf(e,t){const n=t.map(e=>"file"===e.message.kind?e.message.path:e.message.name);return[e.trim(),...n].filter(Boolean).join(" ")}function xf(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}function yf(e,t){if(!Rp(e.title))return null;const n=t.trim();return n||null}function Nf(e,t){const n=(Oh.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return Oh.set(e,a),a.finally(()=>{Oh.get(e)===a&&Oh.delete(e)}),n}async function If(e,t,n){const a={turnId:t,...n?{threadId:n}:{}};try{return void(await e.request("turn/interrupt",a,3e4))}catch(r){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return!t||t.includes("invalid")||t.includes("unknown")||t.includes("missing")||t.includes("param")}(r))throw r}await e.request("turn/interrupt",{turn_id:t,...n?{thread_id:n}:{}},3e4)}async function kf(e,t,n,a){async function r(r){const i=Lf(n,a),s=void 0===t.collaborationMode?[t]:[t,Af(t,"collaborationMode")];let o;for(const t of s)for(const n of i)try{return await e.request("turn/steer",{...t,expectedTurnId:r,input:n},3e4)}catch(d){if(o=d,void 0!==t.collaborationMode&&$f(d))break;if(Rf(d))continue;throw d}throw o instanceof Error?o:new Error("Codex steer failed.")}try{return await r(t.expectedTurnId)}catch(i){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return["turn not found","no active turn","not in progress","not running","already completed","already finished","invalid turn","no such turn","not active","does not exist","cannot steer"].some(e=>t.includes(e))}(i))throw i;const n=await Cf(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}function Af(e,t){const n={...e};return delete n[t],n}async function Cf(e,t){for(let n=0;n<3;n+=1){const a=await Ef(e,t);if(a.interruptibleTurnId)return a.interruptibleTurnId;if(!(a.hasInterruptibleTurnWithoutId&&n<2))return null;await new Promise(e=>setTimeout(e,200))}return null}async function Ef(e,t){try{const n=Bc((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return Tf(yp(n?.data)??yp(n?.items)??yp(n?.turns)??[],!0)}catch{}let n;try{n=await e.request("thread/read",{includeTurns:!0,threadId:t},1e4)}catch(a){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("threadid")||t.includes("includeturns")||t.includes("thread_id")||t.includes("include_turns")||t.includes("unknown field")||t.includes("missing field")||t.includes("invalid")}(a))throw a;n=await e.request("thread/read",{include_turns:!0,thread_id:t},1e4)}return Tf(yp(Bc(Bc(n.result)?.thread)?.turns)??[],!1)}function Tf(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>Sf(Mf(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!Df(Pf(i)))continue;const e=Sf(Mf(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function Mf(e){return Gc(e.id)??Gc(e.turnId)??Gc(e.turn_id)??null}function Sf(e){const t=e?.trim();return t||null}function Pf(e){return(Gc(e.status)??Gc(e.turnStatus)??Gc(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function Df(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function Lf(e,t){const n=[e.trim(),...t.flatMap(e=>e.fallbackText??[])].filter(Boolean).join("\n\n"),a=t.filter(e=>"image"===e.message.kind),r=t.filter(e=>"file"===e.message.kind),i={text:n,text_elements:[],type:"text"},s=(e,t)=>[i,...a.map(t=>({[e]:t.message.url,type:"image"})),...t?r.map(e=>e.runtime):[]],o=[s("url",!0)];return a.length&&o.push(s("image_url",!0)),r.length&&(o.push(s("url",!1)),a.length&&o.push(s("image_url",!1))),o}function Rf(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("input")||t.includes("invalid")||t.includes("unknown")||t.includes("unsupported")||t.includes("deserialize")||t.includes("schema")}function $f(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}async function qf(e,t,n,a){const r=t?"thread/resume":"thread/start",i=Bc((await e.request(r,{...t?{threadId:t}:{},cwd:n},3e4)).result),s=Gc(Bc(i?.thread)?.id)??Gc(i?.threadId)??Gc(i?.thread_id)??t;if(!s)throw new Error("Codex did not return a thread id.");return s}function _f(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:zf(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function Uf(e,t=null){return"plan"!==e?{}:{collaborationMode:zf(e,t)}}function zf(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Of(e,t,n){const a=Pp(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=Bc(Bc((await e.request("config/read",{},3e4)).result)?.config),n=Pp(Gc(t?.model));if(r=r??Dp(t?.model_reasoning_effort)??Dp(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=Bc((await e.request("model/list",{includeHidden:!1,limit:100},3e4)).result),n=Array.isArray(t?.data)?t.data:[];for(const e of n){const t=Bc(e),n=Pp(Gc(t?.id))??Pp(Gc(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}async function jf(e){return async function(e,t){if(!e)return t();const n=jh.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);jh.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),jh.get(e)===i&&jh.delete(e)}}(Ff(e),async()=>{const t=sf(e.threadId),n=function(e,t){const n=Ff(t),a=n?e.messageKeys.get(n):null;return a?e.messages.find(e=>e.id===a)??null:t.requestId?e.messages.find(e=>e.requestId===t.requestId)??null:t.itemId?e.messages.find(e=>e.itemId===t.itemId&&e.kind===t.kind)??null:t.fallbackMessageId?e.messages.find(e=>e.id===t.fallbackMessageId)??null:null}(t,e),a=n?df(e.threadId,n.id,{completedAt:e.completedAt,content:e.content,metadata:e.metadata,rawPayload:e.rawPayload,status:e.status,turnId:e.turnId??n.turnId}):of(e.threadId,{completedAt:e.completedAt,content:e.content,itemId:e.itemId,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,requestId:e.requestId,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId}),r=Ff(e);return r&&t.messageKeys.set(r,a.id),qp(e.threadId,n?"message.updated":"message.created",a),a})}function Ff(e){return e.requestId?`${e.threadId}:request:${e.requestId}`:e.itemId?`${e.threadId}:item:${e.kind}:${e.itemId}`:e.fallbackMessageId?`${e.threadId}:fallback:${e.fallbackMessageId}`:null}function Bf(e,t,n){const a=_h.get(e);if(a)for(const r of a.messages){if(r.runId!==t||"PENDING"!==r.status||"APPROVAL"!==r.kind&&"USER_INPUT_PROMPT"!==r.kind)continue;if(r.requestId){const t=xp(e,r.requestId),a=qh.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),qh.delete(t)}const a=df(e,r.id,{completedAt:new Date,metadataPatch:{expiredAt:(new Date).toISOString(),reason:n,status:"expired"},status:"COMPLETED"});a&&qp(e,"message.updated",a)}}function Gf(e,t,n){const a=_h.get(e);if(a)for(const r of a.messages){if(r.runId!==t||"PENDING"!==r.status&&"STREAMING"!==r.status||!["COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"].includes(r.kind))continue;const a=df(e,r.id,{completedAt:new Date,status:n});a&&qp(e,"message.updated",a)}}function Hf(e){const t=Bc(e.result),n=Bc(e.params),a=Bc(n?.payload)??n??t;return Wf(Bc(n?.turn)??Bc(t?.turn))??Ap(t?.text)??Ap(t?.content)??Ap(a?.text)??Ap(a?.content)??Ap(a?.delta)??Ap(a?.message)??""}function Kf(e){const t=Bc(e.result),n=Bc(e.params);return Gc(t?.turnId)??Gc(t?.turn_id)??Gc(n?.turnId)??Gc(n?.turn_id)??Gc(Bc(t?.turn)?.id)??Gc(Bc(n?.turn)?.id)}function Wf(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=Bc(e);return"agentMessage"!==t?.type?null:Ap(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function Qf(e){const t=Bc(e.params),n=Bc(e.result),a=Bc(t?.event);return Gc(t?.threadId)??Gc(t?.thread_id)??Gc(n?.threadId)??Gc(n?.thread_id)??Gc(a?.threadId)??Gc(a?.thread_id)}function Vf(e){const t=Bc(e.params),n=Bc(e.result),a=Xf(e);return Gc(t?.turnId)??Gc(n?.turnId)??Gc(a?.turnId)??Kf(e)}function Jf(e){const t=Bc(e.params),n=Bc(e.result),a=Xf(e);return Gc(t?.itemId)??Gc(n?.itemId)??Gc(a?.id)}function Xf(e){const t=Bc(e.params),n=Bc(e.result),a=Bc(t?.payload);return Bc(t?.item)??Bc(n?.item)??Bc(a?.item)}function Yf(e){const t=Bc(e.params),n=Bc(t?.event);return Ap(t?.delta)??Ap(t?.text)??Ap(t?.output)??Ap(n?.delta)??Ap(n?.text)}function Zf(e,t){const n=Bc(e.params),a=Bc(e.result);return[t,n,Bc(n?.event),Bc(n?.payload),a].map(ep).find(e=>!!e?.trim())}function ep(e){if(e)return Ap(e.reasoning)??Ap(e.reasoningText)??Ap(e.reasoning_text)??Ap(e.summary)??af(e.summary)??af(e.content)??Ap(e.text)??Ap(e.output)}function tp(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function np(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function ap(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function rp(e){const t=Bc(e.params);return Gc(Bc(t?.error)?.message)??Gc(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function ip(e,t){const n=Gc(e?.status);return n?tp(n):t.includes("failed")||t.includes("error")?"failed":ap({method:t})?"completed":"running"}function sp(e){return Ap(e.diff)??Ap(e.unifiedDiff)??Ap(e.unified_diff)??Ap(e.patch)}function op(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function dp(e){const t=tp(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function cp(e){return tp(e.method??"").includes("start")}function lp(e){const t=tp(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function up(e,t=e){const n=fp(t,["model_context_window","modelContextWindow","context_window","contextWindow","contextSize","context_size","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","maxInputTokens","max_input_tokens","maxTokens","max_tokens","tokenLimit","token_limit"]),a=fp(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=fp(e,["remaining_input_tokens","remainingInputTokens","remaining_tokens","remainingTokens","tokens_remaining","tokensRemaining"]),i=n??(void 0!==a&&void 0!==r?a+r:void 0);if(!i)return null;const s=function(e){let t=!1,n=0;for(const a of e)void 0!==a&&(t=!0,n+=a);return t?n:null}([fp(e,["input_tokens","inputTokens"]),fp(e,["output_tokens","outputTokens"]),fp(e,["reasoning_output_tokens","reasoningOutputTokens"])]),o=a??s;if(null===o)return null;const d=Math.min(o,i),c=Math.max(0,i-d),l=Math.max(0,Math.min(100,Math.round(d/i*100)));return{remainingPercent:Math.max(0,100-l),tokenLimit:i,tokensRemaining:c,tokensUsed:d,usedPercent:l}}function mp(e,t=0){if(t>4)return;const n=Bc(e);if(!n)return;const a=tp(Gc(n.type)??""),r=tp(Gc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=mp(n[i],t+1);if(e)return e}}function hp(e,t){for(const n of t){const t=Bc(e[n]);if(t)return t}}function fp(e,t){for(const n of t){const t=pp(e[n]);if(void 0!==t)return t}}function pp(e){if("number"==typeof e&&Number.isFinite(e)&&e>=0)return Math.floor(e);if("string"==typeof e&&e.trim()){const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.floor(t)}}function gp(e){return Array.isArray(e)?e.map(e=>Bc(e)).filter(e=>!!e).map(e=>({header:Gc(e.header),id:Gc(e.id)??Bt(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:vp(e.options),question:Gc(e.question)??Gc(e.header)??"Answer",selectionLimit:Ip(e.selectionLimit)??Ip(e.selection_limit)})):[]}function vp(e){return Array.isArray(e)?e.map(e=>Bc(e)).filter(e=>!!e).map(e=>({description:Gc(e.description),label:Gc(e.label)??Gc(e.value)??""})).filter(e=>e.label):[]}function wp(e){return"userInput"===e.kind?Gc(e.message)??"Codex needs more information before it can continue.":Gc(e.reason)??Gc(e.command)??"Codex needs approval before it can continue."}function bp(e){return"approval"===e?{decision:"acceptForSession"}:{permissions:!0,scope:"session"}}function xp(e,t){return`${e}:${t}`}function yp(e){return Array.isArray(e)?e.map(e=>Bc(e)).filter(e=>!!e):null}function Np(e){if(Array.isArray(e))return e.map(kp)}function Ip(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function kp(e){return JSON.parse(JSON.stringify(e))}function Ap(e){return"string"==typeof e&&e.length>0?e:void 0}function Cp(e){if(null===e)return null;const t=e.trim();if(!t)throw new oc(400,"Runtime option cannot be empty.");return t}function Ep(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new oc(400,"reasoningEffort is invalid.");return e}function Tp(e){if(null===e||"fast"===e||"flex"===e)return e;throw new oc(400,"serviceTier is invalid.")}function Mp(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new oc(400,"collaborationMode is invalid.")}function Sp(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new oc(400,"permissionMode is invalid.")}function Pp(e){const t=e?.trim();return t||null}function Dp(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}function Lp(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function Rp(e){const t=function(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"new thread"===t||"chat"===t||"codex chat"===t}function $p(e){const t=e.split(/\s+/).map(e=>e.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu,"")).filter(Boolean).slice(0,5);if(!t.length)return null;const n=t.join(" ");return`${n.charAt(0).toUpperCase()}${n.slice(1)}`.slice(0,80)}function qp(e,t,n){vh(e,t,n)}function _p(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}function Up(e){return Wc.getRuntime({accountId:e.id,args:zp(e.args),command:e.command,environment:Hc(e.environment),workingDirectory:null})}function zp(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Op(e){const t=Bc(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name];for(const i of n){const e=Lp(Gc(i)??"");if(e)return e}const a=Lp(Gc(t.title)??"");if(a&&!Rp(a))return a;const r=Bc(t.thread);return r?Op(r):null}async function jp(e,t,n){const a=Lp(n);if(!a||Rp(a))return!1;const r=await yh(t);return!(r?.title&&!Rp(r.title))&&(await Bp(t,a),Fp(e,t,a),!0)}async function Fp(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}async function Bp(e,t){const n=Lp(t);n&&!Rp(n)&&qp(e,"chat.updated",await ef(e,await Nh(e,{title:n})))}var Gp=qn({action:()=>Kp,loader:()=>Hp});async function Hp({request:e}){try{return lc(e,["GET"]),await Mc(e),dc(await async function(){const[e,t]=await Promise.all([xh(),Xh()]),n=new Map(e.map(e=>[e.threadId,e])),a=new Set([...t.keys(),..._h.keys()]);return(await Promise.all([...a].map(e=>ef(e,n.get(e)??null,t.get(e)??null)))).filter(e=>"ARCHIVED"!==e.status).sort((e,t)=>new Date(t.lastActivityAt).getTime()-new Date(e.lastActivityAt).getTime()||new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}())}catch(t){return wc(t)}}async function Kp({request:e}){try{lc(e,["POST"]),await Mc(e);const t=await uc(e);return dc(await async function(e){const t=await Jh(e.accountId),n=Eh(e.workingDirectory),a=void 0===e.collaborationMode?"default":Mp(e.collaborationMode),r=void 0===e.permissionMode?"default":Sp(e.permissionMode),i=Up(t),s=await qf(i,null,n),o=await Nh(s,{accountId:t.id,autoRotateAccount:e.autoRotateAccount??!1,collaborationMode:a,model:void 0===e.model?void 0:Cp(e.model),permissionMode:r,reasoningEffort:void 0===e.reasoningEffort?void 0:Ep(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Tp(e.serviceTier),title:Lp(e.title??"")??null,workingDirectory:n}),d=await rf(s);d.accountId=t.id,d.primed=!0,d.runtime=i,d.updatedAt=new Date;const c=await ef(s,o);return qp(s,"chat.updated",c),c}({accountId:mc(t.accountId,"accountId",{required:!0}),autoRotateAccount:fc(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:mc(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:mc(t.model,"model",{maxLength:160}),reasoningEffort:Wp(t.reasoningEffort,"reasoningEffort"),serviceTier:Wp(t.serviceTier,"serviceTier"),collaborationMode:Wp(t.collaborationMode,"collaborationMode"),permissionMode:Wp(t.permissionMode,"permissionMode"),title:mc(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return wc(t)}}function Wp(e,t){return null===e?null:mc(e,t,{maxLength:80})}var Qp=qn({action:()=>Jp,loader:()=>Vp});async function Vp({request:e,params:t}){try{return lc(e,["GET"]),await Mc(e),dc(await Bh(vc(t,"chatId")))}catch(n){return wc(n)}}async function Jp({request:e,params:t}){try{await Mc(e);const n=vc(t,"chatId");if("PATCH"===e.method){const t=await uc(e);return dc(await Gh(n,{accountId:mc(t.accountId,"accountId"),autoRotateAccount:fc(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:mc(t.model,"model",{maxLength:160}),reasoningEffort:Xp(t.reasoningEffort,"reasoningEffort"),serviceTier:Xp(t.serviceTier,"serviceTier"),collaborationMode:Xp(t.collaborationMode,"collaborationMode"),permissionMode:Xp(t.permissionMode,"permissionMode"),title:mc(t.title,"title",{maxLength:160}),workingDirectory:mc(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return dc(await Hh(n));cc(e.method)}catch(n){return wc(n)}}function Xp(e,t){return null===e?null:mc(e,t,{maxLength:80})}var Yp=qn({loader:()=>Zp});async function Zp({request:e,params:t}){try{return lc(e,["GET"]),await Mc(e),dc(await async function(e){return await Bh(e),{usage:await pm(e)}}(vc(t,"chatId")))}catch(n){return wc(n)}}var eg=qn({loader:()=>tg});async function tg({request:e,params:t}){try{lc(e,["GET"]),await Mc(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new oc(400,"path is required.");return dc(await Dh(vc(t,"chatId"),a,gc(n,"line",0)||null))}catch(n){return wc(n)}}var ng=An(Nn);async function ag(e){const t=await ig(e),n=await sg(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await og(t.cwd),r=await dg(t.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"]),[i,s]=function(e){const t=e?.trim().split(/\s+/)??[],n=Number(t[0]??0),a=Number(t[1]??0);return[Number.isFinite(n)?n:0,Number.isFinite(a)?a:0]}(r?await dg(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await cg(t.cwd,["status","--porcelain=v1"])).split(/\r?\n/).map(e=>e.trimEnd()).filter(Boolean).map(e=>{const t=e.slice(0,1),n=e.slice(1,2);return{path:e.slice(3).replace(/^"|"$/g,""),staged:t,status:`${t}${n}`.trim()||"??",unstaged:n}});return{ahead:s,behind:i,branch:a,changedFiles:o,clean:0===o.length,isRepo:!0,root:n,upstream:r}}async function rg(e,t){const n=await ig(e);if("RUNNING"===n.status)throw new oc(409,"Git actions are disabled while Codex is running.");if(!(await sg(n.cwd)))throw new oc(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=lg(t.branch);a=await cg(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=lg(t.branch);await cg(n.cwd,["check-ref-format","--branch",e]),a=await cg(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new oc(400,"Commit message is required.");await cg(n.cwd,["add","-A"]),a=await cg(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await cg(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new oc(400,"Unsupported git action.");a=await dg(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await cg(n.cwd,["push"]):await async function(e){await cg(e,["remote","get-url","origin"]);const t=await og(e);if(!t)throw new oc(400,"Cannot push while detached from a branch.");return cg(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:mg(t.action),output:a,status:await ag(e)}}async function ig(e){const t=await Ih(e);if(!t)throw new oc(400,"Chat does not have a working directory.");return{cwd:Eh(t),status:Vh(e)}}async function sg(e){return dg(e,["rev-parse","--show-toplevel"])}async function og(e){return await dg(e,["symbolic-ref","--quiet","--short","HEAD"])??await dg(e,["rev-parse","--short","HEAD"])}async function dg(e,t){try{return await cg(e,t)}catch{return null}}async function cg(e,t){try{const n=await ng("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return ug(n.stdout,n.stderr)}catch(n){throw new oc(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return ug("string"==typeof t.stderr?t.stderr:null,"string"==typeof t.stdout?t.stdout:null)||("string"==typeof t.message?t.message:null)||"Git command failed."}(n))}}function lg(e){const t=e?.trim();if(!t)throw new oc(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new oc(400,"Branch name is invalid.");return t}function ug(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function mg(e){switch(e){case"checkout":return"Branch switched.";case"createBranch":return"Branch created.";case"commit":return"Commit created.";case"pull":return"Pull completed.";case"push":return"Push completed."}}async function hg({request:e,params:t}){try{lc(e,["GET"]),await Mc(e);const n=vc(t,"chatId"),a=vc(t,"operation"),r=new URL(e.url);if("status"===a)return dc(await ag(n));if("branches"===a)return dc(await async function(e){const t=await ig(e);if(!(await sg(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await og(t.cwd);return{branches:(await cg(t.cwd,["branch","--format=%(HEAD)%09%(refname:short)"])).split(/\r?\n/).map(e=>{const[t,n]=e.split("\t"),a=n?.trim();return a?{current:"*"===t.trim(),name:a}:null}).filter(e=>!!e),current:n,defaultBranch:(await dg(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return dc(await async function(e,t){const n=await ig(e);if(!(await sg(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=ug(await dg(n.cwd,["diff","--stat",...a]),await dg(n.cwd,["diff","--cached","--stat",...a]));return{diff:ug(await dg(n.cwd,["diff","--no-ext-diff",...a]),await dg(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));if("history"===a)return dc(await async function(e){const t=await ig(e);return await sg(t.cwd)?{commits:(n=await dg(t.cwd,["log","--max-count=80","--date=iso-strict","--pretty=format:%H%x1f%h%x1f%an%x1f%ae%x1f%aI%x1f%D%x1f%s%x1e","--decorate=short","--all"])??"",n.split("").map(e=>e.trim()).filter(Boolean).map(e=>{const[t,n,a,r,i,s,...o]=e.split("");return t&&n?{authorEmail:r??"",authorName:a??"",authoredAt:i??"",hash:t,refs:(s??"").split(",").map(e=>e.trim()).filter(Boolean),shortHash:n,subject:o.join("")||"(no subject)"}:null}).filter(e=>!!e)),isRepo:!0}:{commits:[],isRepo:!1};var n}(n));throw new oc(404,"Git operation not found.")}catch(n){return wc(n)}}async function fg({request:e,params:t}){try{if(lc(e,["POST"]),await Mc(e),"action"!==vc(t,"operation"))throw new oc(404,"Git operation not found.");const n=await uc(e),a={action:pg(n.action),branch:mc(n.branch,"branch",{maxLength:240}),message:mc(n.message,"message",{maxLength:5e3})};return dc(await rg(vc(t,"chatId"),a))}catch(n){return wc(n)}}function pg(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new oc(400,"action is invalid.")}async function gg({request:e,params:t}){try{lc(e,["GET"]),await Mc(e);const n=new URL(e.url);return dc(await Kh(vc(t,"chatId"),gc(n,"afterSequence",0),gc(n,"limit",50)))}catch(n){return wc(n)}}async function vg({request:e,params:t}){try{lc(e,["POST"]),await Mc(e);const n=await uc(e),a={content:bg(n.content),accountId:mc(n.accountId,"accountId"),attachments:xg(n.attachments),collaborationMode:kg(n.collaborationMode,"collaborationMode"),delivery:wg(n.delivery),metadata:pc(n.metadata,"metadata")};return dc(await Qh(vc(t,"chatId"),a),{status:201})}catch(n){return wc(n)}}function wg(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new oc(400,"delivery is invalid.")}}function bg(e){if(null==e)return"";if("string"!=typeof e)throw new oc(400,"content must be a string.");if(e.length>4e4)throw new oc(400,"content must be 40000 characters or fewer.");return e.trim()}function xg(e){if(void 0!==e){if(!Array.isArray(e))throw new oc(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new oc(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:yg(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Ng(n.mimeType,`attachments[${t}].mimeType`,80),name:Ng(n.name,`attachments[${t}].name`,160),size:Ig(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Ng(n.name,`attachments[${t}].name`,160),path:yg(n.path,`attachments[${t}].path`,4096),size:Ig(n.size,`attachments[${t}].size`)};throw new oc(400,`attachments[${t}].kind is invalid.`)})}}function yg(e,t,n){if("string"!=typeof e||!e.trim())throw new oc(400,`${t} is required.`);if(e.length>n)throw new oc(400,`${t} is too large.`);return e}function Ng(e,t,n){if(null!=e){if("string"!=typeof e)throw new oc(400,`${t} must be a string.`);if(e.length>n)throw new oc(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function Ig(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new oc(400,`${t} must be a positive number.`);return e}}function kg(e,t){return null===e?null:mc(e,t,{maxLength:80})}async function Ag({request:e,params:t}){try{return lc(e,["POST"]),await Mc(e),dc(await async function(e){if("RUNNING"!==(await Bh(e)).status)throw new oc(409,"There is no running task to stop.");const t=_h.get(e);if(!t?.runId)throw new oc(409,"There is no active run to stop.");return t.interruptRequested=!0,t.runtime&&t.turnId&&await If(t.runtime,t.turnId,e),{chatId:e,runId:t.runId,status:"RUNNING"===t.status?"RUNNING":"QUEUED",message:t.turnId?"Stop signal sent to Codex.":"Stop requested. Codex will be interrupted as soon as the turn starts."}}(vc(t,"chatId")))}catch(n){return wc(n)}}async function Cg({request:e,params:t}){try{return lc(e,["POST"]),await Mc(e),dc(await async function(e,t){await Bh(e);const n=_h.get(e);if(!n||"RUNNING"!==n.status&&"QUEUED"!==n.status)throw new oc(409,"There is no running task to steer.");if(!n.runtime)throw new oc(409,"The active turn is not ready for steering yet.");const a=n.queuedTurns.findIndex(e=>e.id===t);if(a<0)throw new oc(410,"Queued message is no longer pending.");const r=n.queuedTurns[a],i=n.turnId??await Cf(n.runtime,e);if(!i)throw new oc(409,"The active turn has not published a turn id yet.");const s=await yh(e),o=await Of(n.runtime,s?.model??null,s?.reasoningEffort??null);n.turnId=Kf(await kf(n.runtime,{expectedTurnId:i,threadId:e,...Uf(r.collaborationMode,o)},r.content,r.attachments))??i,n.queuedTurns.splice(a,1);const d=new Date,c=df(e,r.messageId,{completedAt:d,metadataPatch:{delivery:"steer",queueStatus:"steered",runId:n.runId??null,steeredAt:d.toISOString()},turnId:n.turnId});if(!c)throw new oc(410,"Queued message is no longer available.");return qp(e,"chat.updated",await Bh(e)),qp(e,"message.updated",c),c}(vc(t,"chatId"),vc(t,"queueId")))}catch(n){return wc(n)}}async function Eg({request:e,params:t}){try{lc(e,["POST"]),await Mc(e);const n=await uc(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new oc(400,"kind must be approval, permissions, or userInput.")}(n.kind);return dc(await Wh(vc(t,"chatId"),vc(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return wc(n)}}async function Tg({request:e}){try{return lc(e,["GET"]),await Mc(e),dc(await Ah(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return wc(t)}}async function Mg({request:e}){try{lc(e,["POST"]),await Mc(e);const t=await uc(e),n={parentPath:mc(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:mc(t.name,"name",{required:!0,maxLength:255})};return dc(await Ch(n.parentPath,n.name),{status:201})}catch(t){return wc(t)}}var Sg={entry:{module:"/assets/entry.client-D7Yyv89q.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/react-dom-Cmetac4J.js"],css:[]},routes:{root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!0,module:"/assets/root-BU4hb_em.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/react-dom-Cmetac4J.js","/assets/document-title-CVCGo83t.js","/assets/api-Bq1vju8d.js","/assets/session-provider-Bxa1AL3n.js","/assets/usePositioner-DoPOYGgd.js","/assets/triangle-alert-CX-fS3B2.js"],css:["/assets/root-C6Tru0U5.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/connect-BpTBAcLO.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/input-DmJ6N0Sh.js","/assets/label-PRFnRUMj.js","/assets/api-Bq1vju8d.js","/assets/session-provider-Bxa1AL3n.js"],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/favicon.ico-BGeA4faG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/app-layout-DcqaA3vs.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/header-menu-BZ8Qg4Vi.js","/assets/popover-DTbjnDSA.js","/assets/input-DmJ6N0Sh.js","/assets/label-PRFnRUMj.js","/assets/document-title-CVCGo83t.js","/assets/api-Bq1vju8d.js","/assets/session-provider-Bxa1AL3n.js","/assets/usePositioner-DoPOYGgd.js","/assets/folder-open-BGVSSdnS.js","/assets/react-dom-Cmetac4J.js"],css:["/assets/header-menu-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/home-bVxFnHUg.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/composer-controls-C-i2mGP0.js","/assets/popover-DTbjnDSA.js","/assets/input-DmJ6N0Sh.js","/assets/api-Bq1vju8d.js","/assets/usePositioner-DoPOYGgd.js","/assets/folder-open-BGVSSdnS.js","/assets/react-dom-Cmetac4J.js"],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/chat-DssIBrTY.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/header-menu-BZ8Qg4Vi.js","/assets/composer-controls-C-i2mGP0.js","/assets/popover-DTbjnDSA.js","/assets/input-DmJ6N0Sh.js","/assets/api-Bq1vju8d.js","/assets/usePositioner-DoPOYGgd.js","/assets/triangle-alert-CX-fS3B2.js","/assets/react-dom-Cmetac4J.js"],css:["/assets/header-menu-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/health-OjIoaxn7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.status-FGYJfLVM.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.exchange-CkPWDiGV.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.session-DOeXMy_2.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts-x_2c5-qG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.export-CwjXUcyG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.import-Km-76sRE.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.personalization":{id:"routes/api.accounts.personalization",parentId:"root",path:"api/accounts/personalization",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.personalization-DH1AzvNF.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.import-local-active":{id:"routes/api.accounts.import-local-active",parentId:"root",path:"api/accounts/import-local-active",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.import-local-active-D9cdi-v4.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.login-callback-port":{id:"routes/api.accounts.login-callback-port",parentId:"root",path:"api/accounts/login-callback-port",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.login-callback-port-DQNbFsFb.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.local-active":{id:"routes/api.accounts.$accountId.local-active",parentId:"root",path:"api/accounts/:accountId/local-active",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.local-active-Lj56Skb8.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId-DbJR7wIK.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.runtime-settings-DTZTQ21Z.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.personalization":{id:"routes/api.accounts.$accountId.personalization",parentId:"root",path:"api/accounts/:accountId/personalization",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.personalization-DQAPMa-w.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.models":{id:"routes/api.accounts.$accountId.models",parentId:"root",path:"api/accounts/:accountId/models",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.models-BbNPhoBD.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.rate-limits":{id:"routes/api.accounts.$accountId.rate-limits",parentId:"root",path:"api/accounts/:accountId/rate-limits",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.rate-limits-C6Rs4m-7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate":{id:"routes/api.accounts.$accountId.authenticate",parentId:"root",path:"api/accounts/:accountId/authenticate",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate-zJk1OPH-.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate.callback":{id:"routes/api.accounts.$accountId.authenticate.callback",parentId:"root",path:"api/accounts/:accountId/authenticate/callback",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate.callback-C3q2njBk.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats-s886wBuI.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId-BdQ0D5mb.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.context":{id:"routes/api.chats.$chatId.context",parentId:"root",path:"api/chats/:chatId/context",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.context-h_lwoA2q.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.files":{id:"routes/api.chats.$chatId.files",parentId:"root",path:"api/chats/:chatId/files",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.files-Cx0zOZBK.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.git._operation-DogyaTuw.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.messages-lfOVkPe8.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.interrupt-DFwcHue_.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.queued.$queueId.steer":{id:"routes/api.chats.$chatId.queued.$queueId.steer",parentId:"root",path:"api/chats/:chatId/queued/:queueId/steer",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.queued._queueId.steer-Dob8lziy.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.server-requests._requestId.respond-CtGOWFXz.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.workspaces.directories-_nGjLu4v.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-62799e7e.js",version:"62799e7e",sri:void 0},Pg="build/client",Dg="/",Lg={unstable_optimizeDeps:!0,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},Rg=!0,$g=!1,qg=[],_g={mode:"lazy",manifestPath:"/__manifest"},Ug="/",zg={module:_n},Og={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:Na},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:Ra},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:qa},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:qs},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:ho},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:ic},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:bc},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:_c},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:zc},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:jc},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:pu},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:bu},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:yu},"routes/api.accounts.personalization":{id:"routes/api.accounts.personalization",parentId:"root",path:"api/accounts/personalization",index:void 0,caseSensitive:void 0,module:Iu},"routes/api.accounts.import-local-active":{id:"routes/api.accounts.import-local-active",parentId:"root",path:"api/accounts/import-local-active",index:void 0,caseSensitive:void 0,module:Cu},"routes/api.accounts.login-callback-port":{id:"routes/api.accounts.login-callback-port",parentId:"root",path:"api/accounts/login-callback-port",index:void 0,caseSensitive:void 0,module:qu},"routes/api.accounts.$accountId.local-active":{id:"routes/api.accounts.$accountId.local-active",parentId:"root",path:"api/accounts/:accountId/local-active",index:void 0,caseSensitive:void 0,module:zu},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:ju},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,module:Gu},"routes/api.accounts.$accountId.personalization":{id:"routes/api.accounts.$accountId.personalization",parentId:"root",path:"api/accounts/:accountId/personalization",index:void 0,caseSensitive:void 0,module:Wu},"routes/api.accounts.$accountId.models":{id:"routes/api.accounts.$accountId.models",parentId:"root",path:"api/accounts/:accountId/models",index:void 0,caseSensitive:void 0,module:nm},"routes/api.accounts.$accountId.rate-limits":{id:"routes/api.accounts.$accountId.rate-limits",parentId:"root",path:"api/accounts/:accountId/rate-limits",index:void 0,caseSensitive:void 0,module:rm},"routes/api.accounts.$accountId.authenticate":{id:"routes/api.accounts.$accountId.authenticate",parentId:"root",path:"api/accounts/:accountId/authenticate",index:void 0,caseSensitive:void 0,module:sm},"routes/api.accounts.$accountId.authenticate.callback":{id:"routes/api.accounts.$accountId.authenticate.callback",parentId:"root",path:"api/accounts/:accountId/authenticate/callback",index:void 0,caseSensitive:void 0,module:dm},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Gp},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:Qp},"routes/api.chats.$chatId.context":{id:"routes/api.chats.$chatId.context",parentId:"root",path:"api/chats/:chatId/context",index:void 0,caseSensitive:void 0,module:Yp},"routes/api.chats.$chatId.files":{id:"routes/api.chats.$chatId.files",parentId:"root",path:"api/chats/:chatId/files",index:void 0,caseSensitive:void 0,module:eg},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,module:qn({action:()=>fg,loader:()=>hg})},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,module:qn({action:()=>vg,loader:()=>gg})},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,module:qn({action:()=>Ag})},"routes/api.chats.$chatId.queued.$queueId.steer":{id:"routes/api.chats.$chatId.queued.$queueId.steer",parentId:"root",path:"api/chats/:chatId/queued/:queueId/steer",index:void 0,caseSensitive:void 0,module:qn({action:()=>Cg})},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,module:qn({action:()=>Eg})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:qn({action:()=>Mg,loader:()=>Tg})}},jg=!1;export{jg as allowedActionOrigins,Sg as assets,Pg as assetsBuildDirectory,Dg as basename,zg as entry,Lg as future,$g as isSpaMode,qg as prerender,Ug as publicPath,_g as routeDiscovery,Og as routes,Rg as ssr};
|
|
1
|
+
import{PassThrough as e}from"node:stream";import{createReadableStreamFromReadable as t}from"@react-router/node";import{Links as n,Meta as a,Navigate as r,Outlet as i,Scripts as s,ScrollRestoration as o,ServerRouter as d,UNSAFE_withComponentProps as c,UNSAFE_withErrorBoundaryProps as l,isRouteErrorResponse as u,redirect as m,useLocation as h,useNavigate as f,useOutletContext as p,useParams as g}from"react-router";import{isbot as v}from"isbot";import{renderToPipeableStream as w}from"react-dom/server";import{Fragment as b,jsx as x,jsxs as y}from"react/jsx-runtime";import{QueryClient as N,QueryClientProvider as I,useMutation as k,useQueries as A,useQuery as C,useQueryClient as E}from"@tanstack/react-query";import{ThemeProvider as T,useTheme as M}from"next-themes";import*as S from"react";import{createContext as P,useCallback as D,useContext as L,useEffect as R,useMemo as $,useRef as q,useState as _,useSyncExternalStore as U}from"react";import{Toaster as z,toast as O}from"sonner";import{AlertTriangle as j,Archive as F,ArrowLeft as B,ArrowRight as G,ArrowUp as H,Brain as K,Check as W,CheckCircle2 as Q,CheckIcon as V,ChevronDown as J,ChevronRight as X,ChevronRightIcon as Y,CircleAlert as Z,CircleCheckIcon as ee,Clock as te,Code2 as ne,Copy as ae,Cpu as re,Download as ie,ExternalLink as se,Eye as oe,EyeOff as de,File as ce,FileCode as le,FileDiff as ue,Folder as me,FolderOpen as he,FolderPlus as fe,Gauge as pe,GitBranch as ge,GitCommitHorizontal as ve,Home as we,Image as be,Import as xe,Info as ye,InfoIcon as Ne,KeyRound as Ie,Laptop as ke,ListChecks as Ae,Loader2 as Ce,Loader2Icon as Ee,LockKeyhole as Te,Mail as Me,Menu as Se,MessageSquare as Pe,Moon as De,MoreHorizontal as Le,MoreVertical as Re,OctagonXIcon as $e,PanelLeftIcon as qe,Paperclip as _e,Pencil as Ue,PencilLine as ze,PlugZap as Oe,Plus as je,PowerOff as Fe,RefreshCw as Be,RotateCcw as Ge,RotateCw as He,Save as Ke,Search as We,Settings as Qe,Shield as Ve,ShieldCheck as Je,Square as Xe,SquarePen as Ye,Sun as Ze,Terminal as et,Trash2 as tt,TriangleAlertIcon as nt,Upload as at,UserRound as rt,X as it,XIcon as st,Zap as ot}from"lucide-react";import{Tooltip as dt}from"@base-ui/react/tooltip";import{clsx as ct}from"clsx";import{twMerge as lt}from"tailwind-merge";import{Button as ut}from"@base-ui/react/button";import{cva as mt}from"class-variance-authority";import{Input as ht}from"@base-ui/react/input";import{AlertDialog as ft}from"@base-ui/react/alert-dialog";import{Dialog as pt}from"@base-ui/react/dialog";import{Menu as gt}from"@base-ui/react/menu";import{mergeProps as vt}from"@base-ui/react/merge-props";import{useRender as wt}from"@base-ui/react/use-render";import{ScrollArea as bt}from"@base-ui/react/scroll-area";import{Separator as xt}from"@base-ui/react/separator";import{io as yt}from"socket.io-client";import{Popover as Nt}from"@base-ui/react/popover";import It from"highlight.js/lib/core";import kt from"highlight.js/lib/languages/bash";import At from"highlight.js/lib/languages/css";import Ct from"highlight.js/lib/languages/go";import Et from"highlight.js/lib/languages/json";import Tt from"highlight.js/lib/languages/javascript";import Mt from"highlight.js/lib/languages/markdown";import St from"highlight.js/lib/languages/python";import Pt from"highlight.js/lib/languages/rust";import Dt from"highlight.js/lib/languages/shell";import Lt from"highlight.js/lib/languages/sql";import Rt from"highlight.js/lib/languages/typescript";import $t from"highlight.js/lib/languages/xml";import qt from"highlight.js/lib/languages/yaml";import{Switch as _t}from"@base-ui/react/switch";import Ut from"react-markdown";import zt from"remark-gfm";import"dotenv/config";import{createHash as Ot,createHmac as jt,randomBytes as Ft,randomUUID as Bt,scryptSync as Gt,timingSafeEqual as Ht}from"node:crypto";import{Prisma as Kt,PrismaClient as Wt}from"@prisma/client";import{appendFileSync as Qt,chmodSync as Vt,closeSync as Jt,constants as Xt,copyFileSync as Yt,existsSync as Zt,lstatSync as en,mkdirSync as tn,openSync as nn,readFileSync as an,readdirSync as rn,readlinkSync as sn,realpathSync as on,renameSync as dn,rmSync as cn,statSync as ln,symlinkSync as un,writeFileSync as mn}from"node:fs";import{homedir as hn}from"node:os";import{basename as fn,dirname as pn,extname as gn,isAbsolute as vn,join as wn,relative as bn,resolve as xn,sep as yn}from"node:path";import{execFile as Nn,spawn as In}from"node:child_process";import{createServer as kn}from"node:net";import{promisify as An}from"node:util";import{access as Cn,appendFile as En,copyFile as Tn,mkdir as Mn,open as Sn,readFile as Pn,readdir as Dn,realpath as Ln,stat as Rn}from"node:fs/promises";var $n=Object.defineProperty,qn=(e,t)=>{let n={};for(var a in e)$n(n,a,{get:e[a],enumerable:!0});return t||$n(n,Symbol.toStringTag,{value:"Module"}),n},_n=qn({default:()=>zn,streamTimeout:()=>Un}),Un=5e3;function zn(n,a,r,i,s){return"HEAD"===n.method.toUpperCase()?new Response(null,{status:a,headers:r}):new Promise((s,o)=>{let c=!1,l=n.headers.get("user-agent"),u=l&&v(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),Un+1e3);const{pipe:h,abort:f}=w(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var On=({...e})=>{const{theme:t="system"}=M();return x(z,{theme:t,className:"toaster group",icons:{success:x(ee,{className:"size-4"}),info:x(Ne,{className:"size-4"}),warning:x(nt,{className:"size-4"}),error:x($e,{className:"size-4"}),loading:x(Ee,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};function jn(...e){return lt(ct(e))}function Fn({delay:e=0,...t}){return x(dt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function Bn({...e}){return x(dt.Root,{"data-slot":"tooltip",...e})}function Gn({...e}){return x(dt.Trigger,{"data-slot":"tooltip-trigger",...e})}function Hn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(dt.Portal,{children:x(dt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(dt.Popup,{"data-slot":"tooltip-content",className:jn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(dt.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"})]})})})}var Kn="xedoc";function Wn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Kn}`:Kn}(e);R(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Kn}},[t])}var Qn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Vn=class extends Error{request;constructor(e,t){super(function(e,t){const n=t instanceof Error?t.message:String(t);return["No HTTP response received.",`${e.method} ${e.url}`,n,"Check the server URL, CORS settings, network reachability, and whether the API is running."].filter(Boolean).join("\n")}(e,t)),this.request=e}};async function Jn(e){return ia(e.serverUrl,"/api/auth/session",{token:e.token})}async function Xn(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function Yn(e,t,n={}){return ia(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:n,token:e.token})}async function Zn(e,t){return ia(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function ea(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return ia(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function ta(e,t){return ia(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function na(e,t,n){return ia(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function aa(e,t,n=0){return ia(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function ra(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function ia(e,t,n){const a=`${e}${t}`,r=n.method??(void 0===n.body?"GET":"POST");let i;try{i=await fetch(a,{method:r,headers:{Accept:"application/json",...void 0===n.body?{}:{"Content-Type":"application/json"},...n.token?{Authorization:`Bearer ${n.token}`}:{}},body:void 0===n.body?void 0:JSON.stringify(n.body)})}catch(d){throw new Vn({method:r,url:a},d)}const s=await i.text(),o=function(e,t){if(!e)return null;try{return JSON.parse(e)}catch(d){throw new Error(["Server returned invalid JSON.",t,d instanceof Error?d.message:void 0,sa(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Qn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,oa(o)??sa(s)].filter(Boolean).join("\n"),i.status,a);return o}function sa(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function oa(e){if(!e||"object"!=typeof e)return;const t=e.message;return Array.isArray(t)?t.join("\n"):"string"==typeof t?t:void 0}function da(e,t){return{data:[...(e?.data??[]).filter(e=>e.id!==t.id),t].sort((e,t)=>e.sequence-t.sequence),nextCursor:Math.max(t.sequence,e?.nextCursor??0)}}var ca={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function la(){const e=ua();e&&(fa(e,"serverUrl"),fa(e,"token"))}function ua(){return"undefined"==typeof window?null:window.localStorage}function ma(e,t){return e.getItem(ca[t])}function ha(e,t,n){e.setItem(ca[t],n)}function fa(e,t){e.removeItem(ca[t])}function pa(e){const t=e.trim();if(!t)throw new Error("Enter a server URL.");const n=/^[a-z][a-z\d+\-.]*:\/\//i.test(t)?t:`http://${t}`,a=new URL(n);return a.pathname=a.pathname.replace(/\/+$/,""),a.search="",a.hash="",a.toString().replace(/\/+$/,"")}var ga=P(void 0);function va({children:e}){const[t,n]=_(null),[a,r]=_(!1),i=U(ba,xa,ya),s=t,o=!i||!a;R(()=>{if(!i)return;const e=function(){const e=ua();if(!e)return null;const t=ma(e,"serverUrl"),n=ma(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Jn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{la(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=D(async e=>{const t=pa(window.location.origin),{token:a}=await async function(e,t){return ia(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=ua();t&&(ha(t,"serverUrl",e.serverUrl),ha(t,"token",e.token))}(i),n(i),r(!0)},[]),c=D(async()=>{s&&await Jn(s)},[s]),l=D(()=>{la(),n(null),r(!0)},[]),u=$(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ga.Provider,{value:u,children:e})}function wa(){const e=L(ga);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function ba(){return()=>{}}function xa(){return!0}function ya(){return!1}var Na=qn({ErrorBoundary:()=>Ea,Layout:()=>Aa,default:()=>Ca,links:()=>ka,meta:()=>Ia});function Ia(){return[{title:Kn}]}function ka(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function Aa({children:e}){return y("html",{lang:"en",suppressHydrationWarning:!0,children:[y("head",{children:[x("meta",{charSet:"utf-8"}),x("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),x(a,{}),x(n,{})]}),y("body",{children:[e,x(o,{}),x(s,{})]})]})}var Ca=c(function(){const[e]=_(()=>new N({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(T,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:x(I,{client:e,children:y(Fn,{children:[x(va,{children:x(i,{})}),x(On,{richColors:!0})]})})})}),Ea=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return x("main",{className:"flex min-h-svh items-center justify-center bg-background p-6",children:y("section",{className:"max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[x("h1",{className:"text-lg font-semibold",children:"xedoc"}),x("p",{className:"mt-2 whitespace-pre-wrap text-sm text-muted-foreground",children:t})]})})}),Ta=mt("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function Ma({className:e,variant:t="default",size:n="default",...a}){return x(ut,{"data-slot":"button",className:jn(Ta({variant:t,size:n,className:e})),...a})}function Sa({className:e,type:t,...n}){return x(ht,{type:t,"data-slot":"input",className:jn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...n})}function Pa({className:e,...t}){return x("label",{"data-slot":"label",className:jn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function Da(){const[e,t]=_(""),[n,a]=_(""),[i,s]=_(null),[o,d]=_(null),[c,l]=_(!1),{loading:u,session:m,setup:h}=wa(),p=f(),g=!1===i;if(R(()=>{let e=!0;return d(null),async function(e){return ia(e,"/api/auth/status",{token:null})}(pa(window.location.origin)).then(t=>{e&&s(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),s(!0))}),()=>{e=!1}},[]),u)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return x(r,{replace:!0,to:"/"});if(null===i)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});async function v(){if(d(null),g&&e!==n)d("Passwords do not match.");else{l(!0);try{await h(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?Ie:Oe,{className:"size-5"})}),y("div",{children:[x("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),x("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"server-password",children:"Server password"}),x(Sa,{id:"server-password",autoComplete:g?"new-password":"current-password",placeholder:"Password",type:"password",value:e,onChange:e=>t(e.target.value),onKeyDown:t=>{"Enter"===t.key&&La(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(Sa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&La(e,n,g)&&v()}})]}):null,o?x("div",{className:"whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:o}):null,y(Ma,{disabled:!La(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ce,{className:"animate-spin"}):x(g?Ie:Oe,{}),g?"Set Password":"Connect"]})]})]})})}function La(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var Ra=qn({default:()=>$a}),$a=c(function(){return x(Da,{})}),qa=qn({loader:()=>_a});function _a(){return m("/favicon.svg",301)}function Ua({...e}){return x(ft.Root,{"data-slot":"alert-dialog",...e})}function za({...e}){return x(ft.Portal,{"data-slot":"alert-dialog-portal",...e})}function Oa({className:e,...t}){return x(ft.Backdrop,{"data-slot":"alert-dialog-overlay",className:jn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function ja({className:e,size:t="default",...n}){return y(za,{children:[x(Oa,{}),x(ft.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:jn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function Fa({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:jn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function Ba({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:jn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function Ga({className:e,...t}){return x(ft.Title,{"data-slot":"alert-dialog-title",className:jn("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function Ha({className:e,...t}){return x(ft.Description,{"data-slot":"alert-dialog-description",className:jn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Ka({className:e,...t}){return x(Ma,{"data-slot":"alert-dialog-action",className:jn(e),...t})}function Wa({className:e,variant:t="outline",size:n="default",...a}){return x(ft.Close,{"data-slot":"alert-dialog-cancel",className:jn(e),render:x(Ma,{variant:t,size:n}),...a})}function Qa({...e}){return x(pt.Root,{"data-slot":"dialog",...e})}function Va({...e}){return x(pt.Trigger,{"data-slot":"dialog-trigger",...e})}function Ja({...e}){return x(pt.Portal,{"data-slot":"dialog-portal",...e})}function Xa({className:e,...t}){return x(pt.Backdrop,{"data-slot":"dialog-overlay",className:jn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function Ya({className:e,children:t,showCloseButton:n=!0,...a}){return y(Ja,{children:[x(Xa,{}),y(pt.Popup,{"data-slot":"dialog-content",className:jn("fixed top-1/2 left-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...a,children:[t,n&&y(pt.Close,{"data-slot":"dialog-close",render:x(Ma,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(st,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Za({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:jn("flex flex-col gap-2",e),...t})}function er({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:jn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&x(pt.Close,{render:x(Ma,{variant:"outline"}),children:"Close"})]})}function tr({className:e,...t}){return x(pt.Title,{"data-slot":"dialog-title",className:jn("font-heading text-base leading-none font-medium",e),...t})}function nr({className:e,...t}){return x(pt.Description,{"data-slot":"dialog-description",className:jn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function ar({...e}){return x(gt.Root,{"data-slot":"dropdown-menu",...e})}function rr({...e}){return x(gt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function ir({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(gt.Portal,{children:x(gt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(gt.Popup,{"data-slot":"dropdown-menu-content",className:jn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",r),...i})})})}function sr({className:e,inset:t,variant:n="default",...a}){return x(gt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:jn("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...a})}function or({...e}){return x(gt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function dr({className:e,inset:t,children:n,...a}){return y(gt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:jn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(Y,{className:"ml-auto"})]})}function cr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(ir,{"data-slot":"dropdown-menu-sub-content",className:jn("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",r),align:e,alignOffset:t,side:n,sideOffset:a,...i})}function lr({...e}){return x(gt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function ur({className:e,children:t,inset:n,...a}){return y(gt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:jn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(gt.RadioItemIndicator,{children:x(V,{})})}),t]})}function mr({className:e,...t}){return x(gt.Separator,{"data-slot":"dropdown-menu-separator",className:jn("-mx-1 my-1 h-px bg-border",e),...t})}function hr({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:jn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...t})}var fr=mt("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function pr({className:e,variant:t="default",render:n,...a}){return wt({defaultTagName:"span",props:vt({className:jn(fr({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function gr({className:e,status:t}){return x(pr,{className:e,variant:vr(t),children:t.toLowerCase()})}function vr(e){switch(e){case"ERROR":case"FAILED":case"INVALIDATED":case"OFFLINE":return"destructive";case"CONNECTED":case"COMPLETED":case"ONLINE":return"default";case"AUTHENTICATING":case"PENDING":case"RUNNING":case"STREAMING":return"secondary";default:return"outline"}}function wr({callbackUrl:e,cancelPending:t,completePending:n,state:a,onCallbackUrlChange:r,onCancelAuthentication:i,onClose:s,onComplete:o,onCopyDeviceCode:d,onReopen:c}){const l="device"===a?.mode,u="CONNECTED"===a?.status;return x(Qa,{open:!!a,onOpenChange:e=>{e||s()},children:y(Ya,{className:"max-w-2xl",children:[y(Za,{children:[x(tr,{children:l?"Device authentication":"Normal authentication"}),x(nr,{children:a?.accountName??"Codex account"})]}),y("div",{className:"grid gap-4",children:[x("div",{className:jn("rounded-md border px-3 py-2 text-sm",u?"border-emerald-300 bg-emerald-50 text-emerald-800 dark:border-emerald-900/70 dark:bg-emerald-950/35 dark:text-emerald-200":"bg-muted/35 text-muted-foreground"),children:u?"Codex reported this account as connected. xedoc will use the email from the authenticated account as its name.":l?"Open the verification link, enter the device code, then use the response URL field if Codex does not finish automatically.":"Complete the browser login. If the browser lands on a localhost callback page, paste that full URL below."}),a?.authUrl?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-auth-url",children:l?"Verification link":"Authentication link"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Sa,{className:"font-mono text-xs",id:"account-auth-url",readOnly:!0,value:a.authUrl}),y(Ma,{variant:"outline",onClick:c,children:[x(se,{}),"Reopen"]})]})]}):null,l&&a?.userCode?y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-device-code",children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(Sa,{className:"font-mono text-sm tracking-wider",id:"account-device-code",readOnly:!0,value:a.userCode}),y(Ma,{variant:"outline",onClick:d,children:[x(ae,{}),"Copy"]})]})]}):null,y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"account-callback-url",children:"Response URL"}),x(hr,{className:"min-h-24 font-mono text-xs",id:"account-callback-url",placeholder:"http://localhost:1455/auth/callback?code=...",value:e,onChange:e=>r(e.target.value)}),x("p",{className:"text-xs text-muted-foreground",children:"Paste the complete localhost callback URL from the Codex browser tab when automatic completion is blocked."})]}),a?.message?x("p",{className:"rounded-md border bg-background px-3 py-2 text-sm text-muted-foreground",children:a.message}):null]}),y(er,{children:[y(Ma,{variant:"outline",onClick:s,children:[x(it,{}),"Close"]}),"AUTHENTICATING"===a?.status?y(Ma,{disabled:!a.accountId||t,variant:"destructive",onClick:i,children:[t?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel Auth"]}):null,y(Ma,{disabled:!a?.authUrl,variant:"secondary",onClick:c,children:[x(se,{}),"Reopen Link"]}),y(Ma,{disabled:!a?.accountId||!e.trim()||n,onClick:o,children:[n?x(Ce,{className:"animate-spin"}):x(Q,{}),"Submit Response URL"]})]})]})})}function br(e){return"browser"===e||"device"===e?e:null}function xr(e,t){return{accountId:e?.id??"",accountName:e?.displayName??"Codex account",authUrl:e?.lastAuthUrl??null,message:"AUTHENTICATING"===e?.status?"Authentication is in progress.":"Starting Codex authentication.",mode:t,status:e?.status??"AUTHENTICATING",userCode:e?.lastAuthUserCode??null}}function yr(e){const t=Sr(e);return function(e){const t=Sr(e);if(!t)return;return{credits:Tr(t.credits),limitId:Pr(t.limitId)??Pr(t.limit_id),limitName:Pr(t.limitName)??Pr(t.limit_name),planType:Pr(t.planType)??Pr(t.plan_type),primary:Er(t.primary),rateLimitReachedType:Pr(t.rateLimitReachedType)??Pr(t.rate_limit_reached_type),secondary:Er(t.secondary)}}(Mr(e)?.codex??Object.values(Mr(e)??{}).find(Boolean)??t?.rateLimits??t?.rate_limits??((n=t)&&("primary"in n||"secondary"in n||"limitId"in n||"limit_id"in n)?t:void 0));var n}function Nr(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[Cr(e.primary,"5h"),Cr(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function Ir(e){return e?kr(e.secondary)?"weekly":kr(e.primary)?"fiveHour":null:null}function kr(e){return Ar(e?.usedPercent??0)>=100}function Ar(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Cr(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-Ar(e.usedPercent)));return`${function(e,t){const n=e?.windowDurationMins;return n?n>=10080?"W":300===n?"5h":n%60==0?n/60+"h":`${n}m`:t}(e,t)} ${n}%`}function Er(e){if(null===e)return null;const t=Sr(e);return t?{resetsAt:Dr(t.resetsAt)??Dr(t.resets_at),usedPercent:Dr(t.usedPercent)??Dr(t.used_percent)??0,windowDurationMins:Dr(t.windowDurationMins)??Dr(t.window_duration_mins)??Dr(t.window_minutes)}:void 0}function Tr(e){if(null===e)return null;const t=Sr(e);return t?{balance:Pr(t.balance)??null,hasCredits:Lr(t.hasCredits)??Lr(t.has_credits)??!1,unlimited:Lr(t.unlimited)??!1}:void 0}function Mr(e){const t=Sr(e);return Sr(t?.rateLimitsByLimitId)??Sr(t?.rate_limits_by_limit_id)}function Sr(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Pr(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Dr(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Lr(e){return"boolean"==typeof e?e:void 0}function Rr({account:e,authPending:t,authPendingMode:n,cancelPending:a,localActivePending:r,quotaLabel:i,quotaPending:s,quotaSnapshot:o,onAuthenticate:d,onCancelAuthentication:c,onDelete:l,onEdit:u,onSetLocalActive:m,onShowAuthentication:h}){const f=br(e.lastAuthMode)??"browser",p=t&&"browser"===n,g=t&&"device"===n,v="AUTHENTICATING"===e.status?f:"browser",w="AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate",b="CONNECTED"===e.status&&!e.isLocalCodexActive,N="device"===f?"Device login pending":"Browser login pending";return x("div",{className:jn("rounded-md border bg-background px-3 py-3 text-sm",e.isLocalCodexActive&&"border-primary/40 bg-primary/5 dark:bg-primary/10"),children:y("div",{className:"grid gap-3",children:[y("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[y("div",{className:"grid min-w-0 gap-1.5",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[x("div",{className:"min-w-0 max-w-full truncate font-medium",children:e.displayName}),x($r,{planType:o?.planType}),e.isLocalCodexActive?x(qr,{}):null]}),x("div",{className:"truncate text-xs text-muted-foreground",children:zr(e)})]}),y("div",{className:"flex shrink-0 items-center gap-2",children:[x(_r,{account:e}),y(ar,{children:[y(rr,{render:x(Ma,{size:"icon-sm",variant:"ghost"}),children:[t||a||r?x(Ce,{className:"animate-spin"}):x(Re,{}),x("span",{className:"sr-only",children:"Account actions"})]}),y(ir,{align:"end",className:"w-48",children:[y(sr,{disabled:t,onClick:()=>d(v),children:[p?x(Ce,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(He,{}):x(se,{}),"AUTHENTICATING"===e.status?w:"Normal Auth"]}),y(sr,{disabled:t,onClick:()=>d("device"),children:[g?x(Ce,{className:"animate-spin"}):x(Ie,{}),"Device Auth"]}),y(sr,{disabled:!b||r,onClick:m,children:[r?x(Ce,{className:"animate-spin"}):x(ke,{}),e.isLocalCodexActive?"Local Active":"Make Local Active"]}),"AUTHENTICATING"===e.status?y(sr,{disabled:a,variant:"destructive",onClick:c,children:[a?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel Auth"]}):null,"AUTHENTICATING"===e.status||e.lastAuthUrl?y(sr,{onClick:h,children:[x(se,{}),"Authentication Details"]}):null,x(mr,{}),y(sr,{onClick:u,children:[x(Ue,{}),"Edit"]}),y(sr,{variant:"destructive",onClick:l,children:[x(tt,{}),"Delete"]})]})]})]})]}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-end",children:[y("div",{className:"grid min-w-0 gap-1.5",children:[x(Ur,{accountStatus:e.status,label:i,pending:s,snapshot:o}),"AUTHENTICATING"===e.status?x("span",{className:"text-xs text-muted-foreground",children:N}):null]}),"AUTHENTICATING"===e.status?y(Ma,{className:"min-w-0 sm:w-auto",disabled:a,size:"sm",variant:"destructive",onClick:c,children:[a?x(Ce,{className:"animate-spin"}):x(it,{}),"Cancel"]}):null]})]})})}function $r({planType:e}){return e?x(pr,{className:"border-emerald-300 bg-emerald-50 text-emerald-700 dark:border-emerald-900/70 dark:bg-emerald-950/35 dark:text-emerald-300",variant:"outline",children:(t=e,t.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" "))}):null;var t}function qr(){return y(pr,{className:"border-sky-300 bg-sky-50 text-sky-700 dark:border-sky-900/70 dark:bg-sky-950/35 dark:text-sky-300",variant:"outline",children:[x(ke,{}),"local active"]})}function _r({account:e}){const t=e.lastError?.trim();return t?y(Bn,{children:[x(Gn,{render:x("span",{className:"inline-flex cursor-help"}),children:x(gr,{status:e.status})}),x(Hn,{align:"start",className:"max-w-96 whitespace-pre-wrap break-words text-left leading-relaxed",side:"right",children:t})]}):x(gr,{status:e.status})}function Ur({accountStatus:e,label:t,pending:n,snapshot:a}){if("CONNECTED"!==e)return x("div",{className:"text-xs text-muted-foreground",children:"INVALIDATED"===e?"Re-authenticate account to load quota.":"Connect account to load quota."});const r=t??Nr(a),i=Ir(a);return x("div",{className:"grid gap-1.5",children:y("div",{className:jn("inline-flex w-fit items-center gap-1.5 rounded-md border px-2 py-1 text-xs","fiveHour"===i&&"border-orange-300 bg-orange-50 text-orange-700 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300","weekly"===i&&"border-red-300 bg-red-50 text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300"),children:[n?x(Ce,{className:"size-3 animate-spin"}):null,x("span",{children:r})]})})}function zr(e){return[e.command,...e.args??[]].filter(Boolean).join(" ")}var Or={args:"",command:"",displayName:"",environment:""};function jr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:r=0,session:i}){const[s,o]=_(!1),[d,c]=_(null),[l,u]=_(""),[m,h]=_(""),[f,p]=_(null),[g,v]=_(Or),[w,N]=_(null),I=q(null),A=q(null),T=E(),M=$(()=>["login-callback-port",i.serverUrl],[i.serverUrl]),S=C({queryKey:M,queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/login-callback-port",{token:e.token})}(i),refetchInterval:e=>e.state.data?.inUse?5e3:15e3,retry:1,staleTime:3e3});R(()=>{if(r<=0)return;const e=window.setTimeout(()=>{o(!0)},80);return()=>window.clearTimeout(e)},[r]),R(()=>{c(t=>{if(!t?.accountId)return t;const n=e.find(e=>e.id===t.accountId);if(!n)return t;const a=br(n.lastAuthMode)??t.mode,r="AUTHENTICATING"===n.status?n.lastAuthUrl??t.authUrl:n.lastAuthUrl,i="AUTHENTICATING"===n.status?n.lastAuthUserCode??t.userCode:n.lastAuthUserCode,s={...t,accountName:n.displayName,authUrl:r??null,mode:a,status:n.status,userCode:i??null};return d=s,(o=t).accountId===d.accountId&&o.accountName===d.accountName&&o.authUrl===d.authUrl&&o.message===d.message&&o.mode===d.mode&&o.status===d.status&&o.userCode===d.userCode?t:s;var o,d})},[e]),R(()=>{d?.accountId&&"CONNECTED"!==d.status&&"CONNECTED"===e.find(e=>e.id===d.accountId)?.status&&(te(),c(null),u(""),O.success("Account connected."))},[e,d?.accountId,d?.status]);const P=()=>T.invalidateQueries({queryKey:["accounts"]}),D=$(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return n?e.filter(e=>[e.displayName,e.status,e.command,e.args.join(" "),e.defaultModel,e.defaultPermissionMode,e.defaultReasoningEffort,e.defaultServiceTier,e.lastError,e.environment?JSON.stringify(e.environment):null].filter(Boolean).some(e=>String(e).toLocaleLowerCase().includes(n))):e}(e,m),[e,m]),L=$(()=>e.some(e=>"AUTHENTICATING"===e.status&&"device"!==br(e.lastAuthMode)),[e]),U=k({mutationFn:async e=>{const t=await async function(e,t){return ia(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(i,{});return{account:t,auth:await Yn(i,t.id,{mode:e.authMode}),popup:e.popup}},onError:(e,t)=>{te(t?.popup??null),c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:({account:e,auth:t,popup:n})=>{P(),ee(t,n,e)}}),z=k({mutationFn:()=>{if(!f)throw new Error("Select an account to edit.");return async function(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(i,f.id,{...Gr(g),displayName:g.displayName.trim()})},onError:e=>O.error(Wr(e)),onSuccess:()=>{p(null),v(Or),O.success("Account updated."),P()}}),j=k({mutationFn:({accountId:e,mode:t})=>Yn(i,e,{mode:t}),onError:(e,t)=>{te(t?.popup??null),c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:(t,n)=>{P();const a=e.find(e=>e.id===n.accountId);ee(t,n.popup,a)}}),F=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/authenticate`,{method:"DELETE",token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:e=>{te(),c(null),u(""),O.success(`Canceled authentication for ${e.displayName}.`),P()}}),B=k({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return ia(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(i,e,{redirectUrl:t.trim()}),onError:e=>{c(t=>t?{...t,message:Wr(e),status:"ERROR"}:t),O.error(Wr(e))},onSuccess:e=>{u(""),P(),ee(e)}}),G=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:()=>{N(null),O.success("Account deleted."),P(),T.invalidateQueries({queryKey:["chats"]})}}),H=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/export",{token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{!function(e){const t=new Blob([`${JSON.stringify(e,null,2)}\n`],{type:"application/json"}),n=URL.createObjectURL(t),a=window.document.createElement("a");a.href=n,a.download=`xedoc-accounts-${(new Date).toISOString().slice(0,10)}.json`,window.document.body.append(a),a.click(),a.remove(),URL.revokeObjectURL(n)}(e),O.success(`Exported ${e.accounts.length} ${Kr(e.accounts.length)}. Keep the file private; it may include Codex auth tokens.`)}}),K=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/login-callback-port",{body:{},token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{T.setQueryData(M,e),e.inUse?O.warning(`${e.host}:${e.port} is still in use. The process may need more time to exit.`):O.success(function(e){const t=e.killedProcessIds??[];return t.length?`Killed ${1===t.length?"process":"processes"} ${t.join(", ")}.`:"Login callback port is available."}(e))}}),W=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(i,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),O.error(Wr(e))},onSuccess:(e,t)=>{O.success(`Imported ${e.imported} ${Kr(e.imported)}.`),P(),T.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){ee(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&O.info(`${a} more ${Kr(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&O.success(`Connected ${a} imported ${Kr(a)}.`)}(e.authentications,t.popup)}}),V=k({mutationFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/import-local-active",{body:{},token:e.token})}(i),onError:e=>O.error(Wr(e)),onSuccess:e=>{O.success(`Imported ${e.imported} local ${Kr(e.imported)}.`),P(),T.invalidateQueries({queryKey:["chats"]})}}),X=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/local-active`,{body:{},token:e.token})}(i,e),onError:e=>O.error(Wr(e)),onSuccess:e=>{O.success(`${e.displayName} is now active in local Codex.`),P()}});async function Y(){const e=S.data?.inUse?S.data:(await S.refetch()).data;return!e?.inUse||(O.error(`${e.host}:${e.port} is already in use. Kill the process or use Device Auth.`),!1)}async function Z(e){if("browser"===e&&!(await Y()))return void o(!1);const t=Qr();I.current=t,o(!1),u(""),c({accountId:"",accountName:"Codex account",authUrl:null,message:"Creating account and starting Codex authentication.",mode:e,status:"AUTHENTICATING",userCode:null}),U.mutate({authMode:e,popup:t})}function ee(e,t,n){if(c(function(e,t){return{accountId:e.accountId,accountName:t?.displayName??"Codex account",authUrl:e.authUrl??t?.lastAuthUrl??null,message:e.message??null,mode:e.authMode??br(t?.lastAuthMode)??"browser",status:e.status,userCode:e.userCode??t?.lastAuthUserCode??null}}(e,n)),e.authUrl)return I.current=t??I.current,Vr(e.authUrl,t),void O.info("device"===e.authMode?"Device login page opened.":"Authentication page opened. xedoc is listening for the Codex callback.");te(t),"AUTHENTICATING"!==e.status?O.success(e.message??"Account is connected."):O.info(e.message??"Authentication is still in progress.")}function te(e=I.current){e&&!e.closed&&e.close(),e&&e!==I.current||(I.current=null)}return y(b,{children:[x("div",{className:"grid gap-5",children:y("section",{className:"grid gap-4",children:[x("div",{className:"flex flex-wrap items-start justify-between gap-3",children:y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Search, authenticate, and inspect current Codex quota."})]})}),x(Br,{browserAuthenticationInProgress:L,checking:S.isFetching,killing:K.isPending,status:S.data,onKill:()=>K.mutate(),onRefresh:()=>{S.refetch()}}),y("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[y("div",{className:"relative min-w-0 flex-1 sm:min-w-64",children:[x(We,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),x(Sa,{className:"pl-8",placeholder:"Search accounts",value:m,onChange:e=>h(e.target.value)})]}),y("div",{className:"grid w-full grid-cols-2 gap-2 sm:flex sm:w-auto sm:flex-wrap sm:justify-end",children:[x("input",{ref:A,accept:"application/json,.json",className:"hidden",type:"file",onChange:async function(e){const t=e.currentTarget.files?.[0];if(e.currentTarget.value="",!t)return;const n=Qr();try{const e=JSON.parse(await t.text());W.mutate({accounts:Hr(e),popup:n})}catch(a){n?.close(),O.error(Wr(a))}}}),y(Ma,{className:"w-full sm:w-auto",disabled:W.isPending,variant:"outline",onClick:()=>A.current?.click(),children:[W.isPending?x(Ce,{className:"animate-spin"}):x(at,{}),"Import"]}),y(Ma,{className:"w-full sm:w-auto",disabled:H.isPending,variant:"outline",onClick:()=>H.mutate(),children:[H.isPending?x(Ce,{className:"animate-spin"}):x(ie,{}),"Export"]}),y(ar,{open:s,onOpenChange:o,children:[y(rr,{render:x(Ma,{className:"w-full sm:w-auto"}),children:[U.isPending||V.isPending?x(Ce,{className:"animate-spin"}):x(je,{}),"Add",x(J,{"data-icon":"inline-end"})]}),y(ir,{align:"end",className:"w-56",children:[y(sr,{disabled:U.isPending,onClick:()=>Z("browser"),children:[x(se,{}),"Normal Auth"]}),y(sr,{disabled:U.isPending,onClick:()=>Z("device"),children:[x(Ie,{}),"Device Auth"]}),x(mr,{}),y(sr,{disabled:V.isPending,onClick:()=>{o(!1),V.mutate()},children:[V.isPending?x(Ce,{className:"animate-spin"}):x(xe,{}),"Import Local"]})]})]})]})]}),x("div",{className:"grid gap-2",children:D.length?D.map(r=>x(Rr,{account:r,authPending:j.isPending&&j.variables?.accountId===r.id,authPendingMode:j.variables?.mode??"browser",cancelPending:F.isPending&&F.variables===r.id,localActivePending:X.isPending&&X.variables===r.id,quotaLabel:a[r.id],quotaPending:!!t[r.id],quotaSnapshot:n[r.id],onDelete:()=>N(r),onEdit:()=>function(e){var t;p(e),v({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(r),onAuthenticate:t=>async function(t,n="browser"){if("browser"===n&&!(await Y()))return;const a=e.find(e=>e.id===t),r=Qr();I.current=r,u(""),c(xr(a,n)),j.mutate({accountId:t,mode:n,popup:r})}(r.id,t),onCancelAuthentication:()=>F.mutate(r.id),onSetLocalActive:()=>X.mutate(r.id),onShowAuthentication:()=>function(e){u(""),c(xr(e,br(e.lastAuthMode)??"browser"))}(r)},r.id)):x("div",{className:"rounded-md border bg-background px-3 py-8 text-center text-sm text-muted-foreground",children:e.length?"No accounts match the current search.":"No accounts yet. Add an account or import account records."})})]})}),x(wr,{callbackUrl:l,cancelPending:F.isPending&&F.variables===d?.accountId,completePending:B.isPending,state:d,onCallbackUrlChange:u,onClose:()=>{c(null),u("")},onCancelAuthentication:()=>{d?.accountId&&F.mutate(d.accountId)},onComplete:()=>{d?.accountId&&B.mutate({accountId:d.accountId,redirectUrl:l})},onCopyDeviceCode:()=>{!async function(e){if(!e)return;try{await navigator.clipboard.writeText(e),O.success("Device code copied.")}catch{O.error("Could not copy device code.")}}(d?.userCode??"")},onReopen:()=>Vr(d?.authUrl)}),x(Qa,{open:!!f,onOpenChange:e=>{e||z.isPending||(p(null),v(Or))},children:y(Ya,{className:"max-w-2xl",children:[y(Za,{children:[y(tr,{children:["Edit ",f?.displayName??"account"]}),x(nr,{children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),x(Fr,{form:g,onChange:v,prefix:`edit-account-${f?.id??"selected"}`}),y(er,{children:[y(Ma,{variant:"outline",onClick:()=>{p(null),v(Or)},children:[x(it,{}),"Cancel"]}),y(Ma,{disabled:!g.displayName.trim()||z.isPending,onClick:()=>z.mutate(),children:[z.isPending?x(Ce,{className:"animate-spin"}):x(Q,{}),"Save account"]})]})]})}),x(Ua,{open:!!w,onOpenChange:e=>{e||N(null)},children:y(ja,{children:[y(Fa,{children:[x(Ga,{children:"Delete account?"}),y(Ha,{children:["This removes ",w?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ba,{children:[x(Wa,{children:"Cancel"}),y(Ka,{disabled:G.isPending,variant:"destructive",onClick:()=>{w&&G.mutate(w.id)},children:[G.isPending?x(Ce,{className:"animate-spin"}):x(tt,{}),"Delete"]})]})]})})]})}function Fr({form:e,onChange:t,prefix:n}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-name`,children:"Display name"}),x(Sa,{id:`${n}-name`,placeholder:"Work Codex",value:e.displayName,onChange:n=>t({...e,displayName:n.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-command`,children:"Command"}),x(Sa,{id:`${n}-command`,placeholder:"codex",value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-args`,children:"Arguments"}),x(Sa,{id:`${n}-args`,placeholder:"app-server",value:e.args,onChange:n=>t({...e,args:n.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:`${n}-environment`,children:"Environment JSON"}),x(hr,{className:"min-h-20 font-mono text-xs",id:`${n}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:e.environment,onChange:n=>t({...e,environment:n.target.value})})]})]})}function Br({browserAuthenticationInProgress:e,checking:t,killing:n,status:a,onKill:r,onRefresh:i}){if(!a?.inUse)return null;const s=function(e){return e.processes.length?e.processes.map(e=>[e.command??"process",`PID ${e.pid}`,e.user?`user ${e.user}`:null].filter(Boolean).join(" ")).join(", "):null}(a),o=1===a.processes.length?"Kill Process":"Kill Processes";return y("div",{className:"flex flex-col gap-3 rounded-md border border-amber-300 bg-amber-50 px-3 py-3 text-amber-950 dark:border-amber-900/70 dark:bg-amber-950/35 dark:text-amber-100 sm:flex-row sm:items-start sm:justify-between",children:[y("div",{className:"flex min-w-0 gap-2",children:[x(Z,{className:"mt-0.5 size-4 shrink-0 text-amber-600 dark:text-amber-300"}),y("div",{className:"grid min-w-0 gap-1",children:[x("div",{className:"text-sm font-medium",children:"Login callback port is busy"}),x("p",{className:"text-sm leading-relaxed",children:e?`${a.host}:${a.port} is already listening for a browser login. Starting another Normal Auth can fail while this listener is active.`:`${a.host}:${a.port} is already listening. Normal Auth can fail until this process is stopped.`}),x("p",{className:"break-words text-xs text-amber-800 dark:text-amber-200/80",children:s??"Process details are unavailable."})]})]}),y("div",{className:"flex shrink-0 flex-wrap gap-2 sm:justify-end",children:[y(Ma,{disabled:t||n,size:"sm",variant:"outline",onClick:i,children:[t?x(Ce,{className:"animate-spin"}):x(He,{}),"Refresh"]}),y(Ma,{disabled:!a.killable||n,size:"sm",variant:"destructive",onClick:r,children:[n?x(Ce,{className:"animate-spin"}):x(Fe,{}),o]})]})]})}function Gr(e){const t={};if(e.command.trim()&&(t.command=e.command.trim()),e.args.trim()&&(t.args=e.args.split(/\s+/).map(e=>e.trim()).filter(Boolean)),e.environment.trim()){const n=JSON.parse(e.environment);if(!n||"object"!=typeof n||Array.isArray(n))throw new Error("Environment must be a JSON object.");t.environment=n}return t}function Hr(e){if(Array.isArray(e))return e;if(e&&"object"==typeof e){const t=e.accounts;if(Array.isArray(t))return t}throw new Error("Import file must contain an accounts array.")}function Kr(e){return 1===e?"account":"accounts"}function Wr(e){return e instanceof Error?e.message:"Request failed."}function Qr(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Vr(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Jr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(bt.Root,{"data-slot":"scroll-area",className:jn("relative",e),...r,children:[x(bt.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:jn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),x(Xr,{}),x(bt.Corner,{})]})}function Xr({className:e,orientation:t="vertical",...n}){return x(bt.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:jn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(bt.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function Yr({className:e,orientation:t="horizontal",...n}){return x(xt,{"data-slot":"separator",orientation:t,className:jn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function Zr({accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,activeTab:r,createFocusKey:i,onOpenChange:s,onTabChange:o,open:d,session:c}){return x(Qa,{open:d,onOpenChange:s,children:y(Ya,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(Za,{className:"px-5 py-4",children:[x(tr,{children:"Settings"}),x(nr,{children:"Manage accounts, personalization, and project details."})]}),x(Yr,{}),y("div",{className:"grid min-h-0 md:grid-cols-[11rem_minmax(0,1fr)]",children:[y("nav",{className:"flex gap-2 overflow-x-auto border-b p-3 md:flex-col md:border-r md:border-b-0",children:[x(ei,{active:"accounts"===r,icon:x(rt,{}),label:"Accounts",onClick:()=>o("accounts")}),x(ei,{active:"personalization"===r,icon:x(K,{}),label:"Personalization",onClick:()=>o("personalization")}),x(ei,{active:"info"===r,icon:x(ye,{}),label:"Info",onClick:()=>o("info")})]}),x(Jr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["personalization"===r?x(ti,{session:c}):null,"accounts"===r?x(jr,{accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:i,session:c}):null,"info"===r?x(ni,{}):null]})})]})]})})}function ei({active:e,icon:t,label:n,onClick:a}){return y(Ma,{"aria-pressed":e,className:jn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function ti({session:e}){const[t,n]=_(""),a=E(),r=C({queryKey:["account-personalization"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts/personalization",{token:e.token})}(e)});R(()=>{r.data&&n(r.data.instructions)},[r.data]);const i=k({mutationFn:()=>async function(e,t){return ia(e.serverUrl,"/api/accounts/personalization",{body:t,method:"PATCH",token:e.token})}(e,{instructions:t}),onError:e=>O.error(ai(e)),onSuccess:e=>{a.setQueryData(["account-personalization"],e),a.invalidateQueries({queryKey:["account-personalization"]}),O.success("Personalization saved.")}}),s=$(()=>(new TextEncoder).encode(t).length,[t]),o=r.data?.maxBytes??32768,d=!!r.data&&t!==r.data.instructions,c=s>o;return y("div",{className:"grid gap-5",children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[x("h3",{className:"flex items-center text-sm font-semibold",children:"Custom instructions"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Saved to the shared Codex personalization file."})]}),y("div",{className:jn("text-xs text-muted-foreground",c&&"text-destructive"),children:[s.toLocaleString()," / ",o.toLocaleString()," bytes"]})]}),y("div",{className:"grid gap-2",children:[x(Pa,{htmlFor:"personalization-instructions",children:"AGENTS.md"}),x(hr,{className:"min-h-72 font-mono text-xs leading-relaxed",disabled:r.isLoading||i.isPending,id:"personalization-instructions",placeholder:"## Working agreements\n\n- Prefer concise answers.\n- Run relevant tests after code changes.",value:t,onChange:e=>n(e.target.value)})]}),r.error?x("p",{className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:ai(r.error)}):null,y("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[x("div",{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(Ma,{disabled:r.isFetching,variant:"outline",onClick:()=>{r.refetch()},children:[r.isFetching?x(Ce,{className:"animate-spin"}):x(Be,{}),"Reload"]}),y(Ma,{disabled:!d||i.isPending,variant:"secondary",onClick:()=>n(r.data?.instructions??""),children:[x(Be,{}),"Reset"]}),y(Ma,{disabled:!d||c||r.isLoading||i.isPending,onClick:()=>i.mutate(),children:[i.isPending?x(Ce,{className:"animate-spin"}):x(Ke,{}),"Save"]})]})]})]})}function ni(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(ye,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(se,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Me,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function ai(e){return e instanceof Error?e.message:"Request failed."}function ri(){const{setTheme:e,theme:t}=M(),n=t??"system";return y(ar,{children:[y(rr,{render:x(Ma,{size:"icon",variant:"ghost"}),children:[x(Ze,{className:"size-4 dark:hidden"}),x(De,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(ir,{align:"end",className:"w-40",children:[y(sr,{onClick:()=>e("light"),children:[x(Ze,{}),"Light","light"===n?x(W,{className:"ml-auto"}):null]}),y(sr,{onClick:()=>e("dark"),children:[x(De,{}),"Dark","dark"===n?x(W,{className:"ml-auto"}):null]}),y(sr,{onClick:()=>e("system"),children:[x(ke,{}),"System","system"===n?x(W,{className:"ml-auto"}):null]})]})]})}function ii({...e}){return x(pt.Root,{"data-slot":"sheet",...e})}function si({...e}){return x(pt.Portal,{"data-slot":"sheet-portal",...e})}function oi({className:e,...t}){return x(pt.Backdrop,{"data-slot":"sheet-overlay",className:jn("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",e),...t})}function di({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(si,{children:[x(oi,{}),y(pt.Popup,{"data-slot":"sheet-content","data-side":n,className:jn("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",e),...r,children:[t,a&&y(pt.Close,{"data-slot":"sheet-close",render:x(Ma,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(st,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function ci({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:jn("flex flex-col gap-0.5 p-4",e),...t})}function li({className:e,...t}){return x(pt.Title,{"data-slot":"sheet-title",className:jn("font-heading text-base font-medium text-foreground",e),...t})}function ui({className:e,...t}){return x(pt.Description,{"data-slot":"sheet-description",className:jn("text-sm text-muted-foreground",e),...t})}var mi=S.createContext(null);function hi(){const e=S.useContext(mi);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function fi({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...s}){const o=function(){const[e,t]=S.useState(()=>"undefined"!=typeof window&&window.innerWidth<768);return S.useEffect(()=>{const e=window.matchMedia("(max-width: 767px)"),n=()=>{t(window.innerWidth<768)};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),[d,c]=S.useState(!1),[l,u]=S.useState(e),m=t??l,h=S.useCallback(e=>{const t="function"==typeof e?e(m):e;n?n(t):u(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,m]),f=S.useCallback(()=>o?c(e=>!e):h(e=>!e),[o,h,c]);S.useEffect(()=>{const e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),f())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[f]);const p=m?"expanded":"collapsed",g=S.useMemo(()=>({state:p,open:m,setOpen:h,isMobile:o,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,o,d,c,f]);return x(mi.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:jn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function pi({side:e="left",variant:t="sidebar",collapsible:n="offcanvas",className:a,children:r,dir:i,...s}){const{isMobile:o,state:d,openMobile:c,setOpenMobile:l}=hi();return"none"===n?x("div",{"data-slot":"sidebar",className:jn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(ii,{open:c,onOpenChange:l,...s,children:y(di,{dir:i,"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:e,children:[y(ci,{className:"sr-only",children:[x(li,{children:"Sidebar"}),x(ui,{children:"Displays the mobile sidebar."})]}),x("div",{className:"flex h-full w-full flex-col",children:r})]})}):y("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?n:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[x("div",{"data-slot":"sidebar-gap",className:jn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),x("div",{"data-slot":"sidebar-container","data-side":e,className:jn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex","floating"===t||"inset"===t?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",a),...s,children:x("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r})})]})}function gi({className:e,onClick:t,...n}){const{toggleSidebar:a}=hi();return y(Ma,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:jn(e),onClick:e=>{t?.(e),a()},...n,children:[x(qe,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function vi({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:jn("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",e),...t})}function wi({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:jn("flex flex-col gap-2 p-2",e),...t})}function bi({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:jn("flex flex-col gap-2 p-2",e),...t})}function xi({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:jn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function yi({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:jn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function Ni({className:e,render:t,...n}){return wt({defaultTagName:"div",props:vt({className:jn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",e)},n),render:t,state:{slot:"sidebar-group-label",sidebar:"group-label"}})}function Ii({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:jn("w-full text-sm",e),...t})}function ki({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:jn("flex w-full min-w-0 flex-col gap-0",e),...t})}function Ai({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:jn("group/menu-item relative",e),...t})}var Ci=mt("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function Ei({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=hi(),c=wt({defaultTagName:"button",props:vt({className:jn(Ci({variant:n,size:a}),i)},s),render:r?x(Gn,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(Bn,{children:[c,x(Hn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function Ti({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=E(),[o,d]=_(new Set),[c,l]=_(e??""),[u,m]=_("directory"),[h,f]=_(e??""),[p,g]=_(""),[v,w]=_(!0),[b,N]=_(!1),[I,A]=_(""),[T,M]=_(""),S=C({enabled:r,queryKey:$i(i,void 0),queryFn:()=>ea(i,void 0)}),P=S.data,D=P?.root??P?.path??"",L=c||P?.path||"",$=k({mutationFn:()=>{const e=I||L||P?.path,t=T.trim();if(!e)throw new Error("Select a folder first.");if(!t)throw new Error("Enter a folder name.");return async function(e,t){return ia(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>O.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),A(""),M(""),O.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),U(e.path)}});function q(e,t="directory"){l(e),m(t),f(e),D&&d(t=>{const n=new Set(t);for(const a of qi(e,D))n.add(a);return n})}function U(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function z(){const e=h.trim()||P?.path;e&&q(e)}return R(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),A(""),M(""))},[e,r]),R(()=>{if(!P)return;const t=e||P.path;l(e=>e||t),f(e=>e||t),d(e=>{const n=new Set(e);for(const a of qi(t,P.root))n.add(a);return n})},[e,P]),x(Qa,{open:r,onOpenChange:n,children:y(Ya,{className:"flex max-h-[88vh] max-w-2xl flex-col gap-0 overflow-hidden rounded-xl bg-background p-0 ring-border sm:max-w-2xl",children:[y(Za,{className:"gap-1 px-4 pb-2 pt-3",children:[x(tr,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(nr,{className:"truncate",children:P?.root?`Workspace root: ${P.root}`:"file"===t?"Pick a file from the workspace.":"Pick a project folder for Codex."})]}),y("div",{className:"grid min-h-0 flex-1 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-1.5 px-3 pb-2 pt-1",children:[y("div",{className:"flex min-w-0 items-center gap-1",children:[x(Ri,{label:"Home",onClick:function(){P?.path&&U(P.path)},children:x(we,{})}),x(Ri,{disabled:!L||$.isPending,label:"New folder",onClick:function(){const e=L||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),A(e),M(""),d(t=>{const n=new Set(t);if(D)for(const a of qi(e,D))n.add(a);return n.add(e),n}))},children:x(fe,{})}),x(Ri,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(Be,{className:jn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[x(Li,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative hidden min-w-0 sm:block",children:[x(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Sa,{className:"h-7 w-44 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]})]}),v?y("div",{className:"flex min-w-0 items-center gap-1",children:[x(Sa,{autoCapitalize:"none",className:"h-8 min-w-0 border-border/70 bg-muted/40 font-mono text-xs",spellCheck:!1,value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&z()}}),x(Ri,{label:"Open path",onClick:z,children:x(X,{})})]}):null,y("div",{className:"flex min-w-0 items-center gap-2 sm:hidden",children:[x(Li,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative min-w-0 flex-1",children:[x(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(Sa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]})]}),x("div",{className:"min-h-0 bg-background",children:S.error?x("div",{className:"m-3 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:S.error.message||"Unable to browse workspace."}):x(Jr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?x("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?x(Mi,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:T,createFolderParentPath:I,createFolderPending:$.isPending,selectedPath:L,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),A(""),M("")},onCreateFolderNameChange:M,onCreateFolderSubmit:()=>$.mutate(),onOpen:U,onSelect:q,onToggle:function(e){l(e),m("directory"),f(e),d(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}}):null]})})})]}),y(er,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[x("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),x("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":L||D||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(Ma,{disabled:!L||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!L||"file"===t&&"file"!==u||(a(L),n(!1))},children:[x(W,{}),"file"===t?"Attach":"OK"]}),x(Ma,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function Mi({createFolderName:e,createFolderParentPath:t,createFolderPending:n,directory:a,entry:r,expandedPaths:i,filter:s,level:o,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h,selectedPath:f,selectedType:p,session:g,showCreateFolder:v}){const w=i.has(r.path),b=zi(f)===zi(r.path),N=v&&zi(t)===zi(r.path),I=C({enabled:w&&!a,queryKey:$i(g,r.path),queryFn:()=>ea(g,r.path)}),k=a??I.data,A=$(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return(n?e.filter(e=>e.name.toLocaleLowerCase().includes(n)):e).slice(0,400)}(k?.entries??[],s),[k?.entries,s]),E=A.filter(e=>"directory"===e.type),T=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(Pi,{entry:r,expanded:w,level:o,loading:I.isFetching,selected:b,onOpen:u,onSelect:m,onToggle:h}),w?y("div",{className:"min-w-0",children:[I.error?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-destructive",style:{paddingLeft:34+18*(o+1)+"px"},children:I.error.message||"Unable to load folder."}):null,I.isLoading?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"Loading..."}):null,N?x(Si,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>x(Mi,{createFolderName:e,createFolderParentPath:t,createFolderPending:n,entry:a,expandedPaths:i,filter:s,level:o+1,showCreateFolder:v,selectedPath:f,selectedType:p,session:g,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h},a.path)),T.map(e=>x(Di,{entry:e,level:o+1,selected:"file"===p&&zi(f)===zi(e.path),onSelect:m},e.path)),!k||A.length||N?null:x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"No matching entries."})]}):null]})}function Si({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[x("span",{}),x(fe,{className:"size-4 shrink-0 text-muted-foreground"}),x(Sa,{autoCapitalize:"none",autoFocus:!0,className:"h-7 min-w-0 border-border/70 bg-muted/40 text-xs",disabled:i,placeholder:"Folder name",spellCheck:!1,value:t,onChange:e=>a(e.target.value)}),x(Ri,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(W,{})}),x(Ri,{disabled:i,label:"Cancel new folder",onClick:n,children:x(it,{})})]})}function Pi({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:jn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(X,{className:jn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?he:me,{className:"size-4 shrink-0 text-muted-foreground"}),x("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function Di({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:jn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(ce,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function Li({onClick:e,showPath:t}){return x(Ri,{label:t?"Hide path":"Show path",pressed:t,onClick:e,children:x(t?oe:de,{})})}function Ri({children:e,disabled:t,label:n,onClick:a,pressed:r}){return y(Ma,{"aria-pressed":r,className:jn("size-7 p-0",r&&"bg-muted text-foreground"),disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,x("span",{className:"sr-only",children:n})]})}function $i(e,t){return["workspace-directory",e.serverUrl,t]}function qi(e,t){const n=Ui(t),a=Ui(e);if(!n||!a.startsWith(n))return n?[n]:[];const r=[n],i=a.slice(n.length).replace(/^[\\/]+/,"");let s=n;for(const o of i.split(/[\\/]/).filter(Boolean))s=_i(s,o),r.push(s);return r}function _i(e,t){const n=e.includes("\\")?"\\":"/";return`${Ui(e)}${n}${t}`}function Ui(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function zi(e){return Ui(e).toLocaleLowerCase()}function Oi(e,t,n){return e?new Promise((a,r)=>{e.timeout(15e3).emit(t,n,(e,t)=>{if(e)return void r(e);if(!t?.ok)return void r(new Error(t?.message??"Terminal request failed."));const n={...t};delete n.ok,a(n)})}):Promise.reject(new Error("Terminal socket is not connected."))}function ji(e){const[t,n]=_(!1),[a,r]=_(0),[i,s]=_(null);return R(()=>{if(!e)return n(!1),r(0),void s(null);const t=function(e,t){let n=!1;const a=yt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return a.on("connect",()=>{n||t.onOpen?.()}),a.on("disconnect",()=>{n||t.onClose?.()}),a.on("connect_error",e=>{n||t.onError?.(e)}),a.on("terminal:count",e=>{n||t.onCount?.(e)}),a.on("terminal:project",e=>{n||t.onProject?.(e)}),a.on("terminal:output",e=>{n||t.onOutput?.(e)}),a.on("terminal:exit",e=>{n||t.onExit?.(e)}),{disconnect:()=>{n=!0,a.disconnect()},socket:a}}(e,{onClose:()=>n(!1),onCount:e=>r(Math.max(0,e.count)),onError:()=>n(!1),onOpen:()=>n(!0)});return s(t.socket),()=>{t.disconnect(),n(!1),s(null)}},[e?.serverUrl,e?.token]),{connected:t,count:a,socket:i}}function Fi(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function Bi(e,t){return e.map((e,n)=>({account:e,index:n,score:Gi(t[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}function Gi(e){if(!e)return 0;if(e.rateLimitReachedType||Ir(e))return-1;if(e.credits&&!e.credits.unlimited&&!e.credits.hasCredits)return-1;if(e.credits?.unlimited)return 101;const t=[e.primary,e.secondary].filter(e=>!!e).map(e=>100-Ar(e.usedPercent));return t.length?Math.min(...t):0}function Hi(e,t){const n=e?.windowDurationMins;return n?n>=10080?"Weekly limit":300===n?"5-hour limit":n%60==0?n/60+"-hour limit":`${n}-minute limit`:t}function Ki(e){const t=e<1e12?1e3*e:e;return new Intl.DateTimeFormat(void 0,{day:"numeric",hour:"numeric",minute:"2-digit",month:"short"}).format(new Date(t))}function Wi(e){const t=new Date(e),n=Math.max(0,Date.now()-t.getTime()),a=6e4,r=36e5,i=864e5;if(n<12e4)return"just now";if(n<r)return`${Math.floor(n/a)}m ago`;if(n<i)return`${Math.floor(n/r)}h ago`;if(n<2*i)return"yesterday";if(n<=3*i)return`${Math.floor(n/i)} days ago`;const s=new Date,o=t.getFullYear()===s.getFullYear();return new Intl.DateTimeFormat(void 0,{day:"numeric",month:"short",...o?{}:{year:"numeric"}}).format(t)}function Qi(e){const t=e?.trim();if(!t)return"No folder";const n=t.replace(/[\\/]+$/,"");return n?n.split(/[\\/]/).filter(Boolean).at(-1)??n:t}function Vi(e){const t=e?.trim();return t?t.replace(/[\\/]+$/,"")||t:"No folder"}function Ji(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function Xi(e){return e>=1e6?`${Yi(e/1e6)}M`:e>=1e3?`${Yi(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function Yi(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function Zi(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function es(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function ts(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function ns(e){return"fullAccess"===e?"Full access":"Default"}function as(e,t){let n=e;for(const a of t)n=da(n,a);return n??{data:[],nextCursor:null}}function rs(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function is(e,t){const n=e??[];return n.some(e=>e.id===t.id)?n.map(e=>e.id===t.id?t:e):[...n,t]}function ss(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function os(e){if(!e)return!1;const t=e instanceof Error?e.message:String(e);return e instanceof Qn&&401===e.status||/token_invalidated|authentication token .*invalidated|re-authenticate this account/i.test(t)}function ds(e){return e instanceof Error?e.message:"Request failed."}function cs({chats:e,session:t}){const n=f(),{chatId:a}=g(),r=E(),[i,s]=_(null),[o,d]=_(""),[c,l]=_(null),[u,m]=_(()=>new Set),[h,p]=_(()=>new Set),v=$(()=>e.map(e=>{return{chat:e,dateLabel:Wi(e.lastActivityAt),folderKey:(t=e.workingDirectory,Vi(t)),folderName:Qi(e.workingDirectory),folderPath:Vi(e.workingDirectory)};var t}),[e]),w=$(()=>{const e=new Map;for(const t of v){const n=new Date(t.chat.lastActivityAt).getTime(),a=e.get(t.folderKey);a?(a.items.push(t),a.latestActivityAt=Math.max(a.latestActivityAt,n)):e.set(t.folderKey,{items:[t],key:t.folderKey,latestActivityAt:n,name:t.folderName,path:t.folderPath})}return Array.from(e.values()).map(e=>({...e,items:e.items.sort((e,t)=>new Date(t.chat.lastActivityAt).getTime()-new Date(e.chat.lastActivityAt).getTime()||e.chat.title.localeCompare(t.chat.title,void 0,{sensitivity:"base"}))})).sort((e,t)=>t.latestActivityAt-e.latestActivityAt||e.name.localeCompare(t.name,void 0,{sensitivity:"base"}))},[v]),N=k({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return na(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>O.error(ds(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),I=k({mutationFn:e=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>O.error(ds(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(b,{children:[x(ki,{className:"gap-1",children:w.length?w.map(e=>{const t=u.has(e.key),r=h.has(e.key),i=r?e.items:e.items.slice(0,4),o=e.items.length-i.length,c=!!(f=e.path).trim()&&"No folder"!==f;var f;return y(Ai,{children:[y("div",{className:"flex min-w-0 items-center gap-1 pr-1",children:[y("button",{className:"flex h-8 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left text-xs font-medium text-sidebar-foreground/75 outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",title:e.path,type:"button",onClick:()=>m(t=>{const n=new Set(t);return n.has(e.key)?n.delete(e.key):n.add(e.key),n}),children:[x(me,{className:"size-3.5 shrink-0 text-cyan-500"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"shrink-0 text-[0.68rem] font-normal text-muted-foreground",children:e.items.length}),x(J,{className:jn("size-3 shrink-0 text-muted-foreground transition-transform",t&&"-rotate-90")})]}),c?x(Ma,{"aria-label":`New chat in ${e.name}`,className:"size-7 shrink-0",size:"icon-sm",title:`New chat in ${e.path}`,type:"button",variant:"ghost",onClick:()=>n("/",{state:{workingDirectory:e.path}}),children:x(je,{className:"size-3.5"})}):null]}),t?null:y(ki,{className:"gap-0.5 pl-4",children:[i.map(({chat:e,dateLabel:t,folderName:r})=>y(Ai,{className:"flex min-w-0 items-center",children:[y(Ei,{className:"h-7 min-w-0 flex-1 px-2 pr-2! text-xs",isActive:e.id===a,size:"sm",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Pe,{className:"size-3.5 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.title})]}),y(ar,{children:[y(rr,{render:x(Ma,{"aria-label":"Chat actions",className:"pointer-events-none h-7 w-0 shrink-0 overflow-hidden opacity-0 transition-[width,opacity] group-hover/menu-item:pointer-events-auto group-hover/menu-item:ml-1 group-hover/menu-item:w-7 group-hover/menu-item:opacity-100 group-focus-within/menu-item:pointer-events-auto group-focus-within/menu-item:ml-1 group-focus-within/menu-item:w-7 group-focus-within/menu-item:opacity-100 aria-expanded:pointer-events-auto aria-expanded:ml-1 aria-expanded:w-7 aria-expanded:opacity-100",size:"icon-sm",variant:"ghost"}),children:[x(Le,{className:"size-4"}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(ir,{align:"end",className:"w-40",children:[y(sr,{onClick:()=>{s(e),d(e.title)},children:[x(Ue,{}),"Rename"]}),y(sr,{onClick:()=>l(e),children:[x(F,{}),"Archive"]})]})]})]},e.id)),o>0?x("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>new Set(t).add(e.key)),children:[x(J,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:["Show ",o," more"]})]})}):r&&e.items.length>4?x("li",{children:y("button",{className:"flex h-7 w-full items-center gap-2 rounded-md px-2 text-left text-xs text-muted-foreground outline-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent",type:"button",onClick:()=>p(t=>{const n=new Set(t);return n.delete(e.key),n}),children:[x(J,{className:"size-3.5 shrink-0 rotate-180"}),x("span",{className:"min-w-0 truncate",children:"Show less"})]})}):null]})]},e.key)}):x("div",{className:"px-2 py-3 text-sm text-muted-foreground",children:"No chats yet."})}),x(Qa,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ya,{children:[y(Za,{children:[x(tr,{children:"Rename chat"}),x(nr,{children:"Choose a short title for the sidebar."})]}),x(Sa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N.mutate()}}),x(er,{children:x(Ma,{disabled:N.isPending,onClick:()=>N.mutate(),children:"Save"})})]})}),x(Qa,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ya,{children:[y(Za,{children:[x(tr,{children:"Archive chat?"}),y(nr,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(er,{children:[x(Ma,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(Ma,{disabled:I.isPending||!c,variant:"destructive",onClick:()=>{c&&I.mutate(c)},children:[x(F,{}),"Archive"]})]})]})})]})}function ls({...e}){return x(Nt.Root,{"data-slot":"popover",...e})}function us({...e}){return x(Nt.Trigger,{"data-slot":"popover-trigger",...e})}function ms({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Nt.Portal,{children:x(Nt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Nt.Popup,{"data-slot":"popover-content",className:jn("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...i})})})}function hs({className:e,...t}){return x("div",{"data-slot":"popover-header",className:jn("flex flex-col gap-0.5 text-sm",e),...t})}function fs({className:e,...t}){return x(Nt.Title,{"data-slot":"popover-title",className:jn("font-medium",e),...t})}function ps({className:e,...t}){return x(Nt.Description,{"data-slot":"popover-description",className:jn("text-muted-foreground",e),...t})}function gs(e,t){return t&&It.getLanguage(t)?It.highlight(e,{language:t}).value:It.highlightAuto(e).value}function vs({diff:e,error:t,fallback:n,loading:a}){const r=$(()=>function(e){const t=e.trim();return t?function(e){const t=[];let n=[];for(const a of e.split("\n"))a.startsWith("diff --git ")&&n.length&&(t.push(n),n=[]),n.push(a);n.length&&t.push(n);return t}(t).map(bs).filter(e=>!!e):[]}(e),[e]);return t?x("div",{className:"p-3 font-mono text-xs text-destructive",children:ds(t)}):a?x("div",{className:"p-3 font-mono text-xs text-muted-foreground",children:"Loading diff..."}):r.length?x("div",{className:"min-w-max divide-y",children:r.map(e=>y("section",{className:"bg-background",children:[y("div",{className:"sticky top-0 z-10 border-b bg-background/95 px-3 py-2 backdrop-blur",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(ce,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{className:"truncate font-mono text-xs font-medium",children:e.path})]}),e.meta.length?x("div",{className:"mt-1 flex min-w-0 flex-wrap gap-x-3 gap-y-1 font-mono text-[0.68rem] text-muted-foreground",children:e.meta.slice(0,3).map(e=>x("span",{className:"truncate",children:e},e))}):null]}),x("div",{className:"py-1 font-mono text-xs leading-5",children:e.hunks.map((t,n)=>y("div",{children:[y("div",{className:"grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-y bg-muted/70 text-[0.68rem] text-muted-foreground",children:[x("div",{className:"border-r px-2 py-1 text-right",children:"line"}),x("div",{}),x("div",{className:"whitespace-pre px-2 py-1",children:t.header})]}),t.lines.map((t,a)=>x(ws,{fileLanguage:e.language,line:t},`${e.path}:${n}:${a}`))]},`${e.path}:${n}`))})]},e.path))}):x("pre",{className:"min-h-full min-w-0 overflow-auto p-3 font-mono text-xs leading-5 text-muted-foreground",children:n.trim()||"No tracked diff."})}function ws({fileLanguage:e,line:t}){const n="add"===t.type?"+":"delete"===t.type?"-":"meta"===t.type?"\\":" ",a="delete"===t.type?t.oldNumber:t.newNumber??t.oldNumber,r="meta"===t.type?t.content.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"):gs(t.content||" ",e);return y("div",{className:jn("grid grid-cols-[4.5rem_1.25rem_minmax(24rem,1fr)] border-l-2","add"===t.type&&"border-l-emerald-500 bg-emerald-500/10 text-emerald-950 dark:text-emerald-50","delete"===t.type&&"border-l-red-500 bg-red-500/10 text-red-950 dark:text-red-50","context"===t.type&&"border-l-transparent bg-background","meta"===t.type&&"border-l-transparent bg-muted/40 text-muted-foreground"),children:[x("div",{className:"select-none border-r px-2 text-right text-[0.68rem] text-muted-foreground",children:a??""}),x("div",{className:"select-none px-2 text-center text-muted-foreground",children:n}),x("div",{className:"whitespace-pre px-2",dangerouslySetInnerHTML:{__html:r}})]})}function bs(e){const t=function(e){for(const n of["+++ ","--- "])for(const t of e){if(!t.startsWith(n))continue;const e=xs(t.slice(n.length));if(e&&"/dev/null"!==e)return e}const t=e.find(e=>e.startsWith("diff --git "))?.split(/\s+/)??[];return xs(t[3]??t[2]??"")}(e);if(!t)return null;const n={hunks:[],language:Ns(t),meta:[],path:t};let a=null,r=0,i=0;for(const s of e){if(s.startsWith("@@")){const e=ys(s);r=e.oldStart,i=e.newStart,a={header:s,lines:[]},n.hunks.push(a);continue}a?s.startsWith("+")&&!s.startsWith("+++")?(a.lines.push({content:s.slice(1),newNumber:i,oldNumber:null,type:"add"}),i+=1):s.startsWith("-")&&!s.startsWith("---")?(a.lines.push({content:s.slice(1),newNumber:null,oldNumber:r,type:"delete"}),r+=1):s.startsWith("\\")?a.lines.push({content:s,newNumber:null,oldNumber:null,type:"meta"}):(a.lines.push({content:s.startsWith(" ")?s.slice(1):s,newNumber:i,oldNumber:r,type:"context"}),r+=1,i+=1):s.startsWith("diff --git ")||s.startsWith("--- ")||s.startsWith("+++ ")||n.meta.push(s)}return n.hunks.length?n:null}function xs(e){const t=e.trim().replace(/^"|"$/g,"");return t?t.replace(/^[ab]\//,""):null}function ys(e){const t=e.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);return{newStart:Number(t?.[2]??0),oldStart:Number(t?.[1]??0)}}function Ns(e){switch(e.split(".").pop()?.toLocaleLowerCase()){case"bash":case"sh":return"bash";case"css":return"css";case"go":return"go";case"htm":case"html":case"svg":case"xml":return"xml";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"json":return"json";case"md":case"mdx":return"markdown";case"py":return"python";case"rs":return"rust";case"sql":return"sql";case"ts":case"tsx":return"typescript";case"yaml":case"yml":return"yaml";default:return null}}function Is({commits:e,error:t,fetching:n,selectedHash:a,onSelect:r}){return t?x("div",{className:"p-3 text-xs text-destructive",children:ds(t)}):n&&!e.length?x("div",{className:"p-3 text-xs text-muted-foreground",children:"Loading history..."}):e.length?x(Jr,{className:"min-h-0",children:x("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:jn("grid gap-1 rounded-md px-2 py-2 text-left outline-none hover:bg-muted focus-visible:bg-muted",a===e.hash&&"bg-muted"),type:"button",onClick:()=>r(e.hash),children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.subject}),x("span",{className:"shrink-0 font-mono text-[0.68rem] text-muted-foreground",children:e.shortHash})]}),y("div",{className:"flex min-w-0 items-center gap-1.5 text-[0.68rem] text-muted-foreground",children:[x("span",{className:"min-w-0 truncate",children:e.authorName||"Unknown author"}),x("span",{"aria-hidden":"true",children:"·"}),x("span",{className:"shrink-0",children:ks(e.authoredAt)})]}),e.refs.length?x("div",{className:"flex min-w-0 flex-wrap gap-1",children:e.refs.slice(0,3).map(e=>x("span",{className:"max-w-full truncate rounded bg-secondary px-1.5 py-0.5 text-[0.65rem] text-secondary-foreground",children:e},e))}):null]},e.hash))})}):x("div",{className:"p-3 text-xs text-muted-foreground",children:"No commits found."})}function ks(e){const t=new Date(e);return Number.isNaN(t.getTime())?"Unknown date":t.toLocaleString(void 0,{day:"2-digit",hour:"2-digit",minute:"2-digit",month:"short",year:"numeric"})}function As({chatId:e,className:t,compact:n=!1,disabled:a,session:r}){const[i,s]=_(!1),o=E(),d=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(r,e),refetchInterval:2e4,retry:!1}),c=d.data;if(c&&!c.isRepo)return null;const l=c?.branch??"Git",u=!!c&&!c.clean,m=c?Ps(c):"";return y(Qa,{open:i,onOpenChange:s,children:[y(Ma,{"aria-label":"Git"+(l?`: ${l}`:""),className:jn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:d.isLoading&&!c,size:n?"icon":"sm",title:l,type:"button",variant:"ghost",onClick:()=>s(!0),children:[x(ge,{className:"size-3.5"}),n&&c?x("span",{className:jn("absolute -right-0.5 -top-0.5 size-2 rounded-full ring-2 ring-background",u?"bg-amber-500":"bg-emerald-500")}):y(b,{children:[x("span",{className:"min-w-0 truncate",children:l}),m?x("span",{className:"shrink-0 text-muted-foreground",children:m}):null,x("span",{className:jn("ml-0.5 size-1.5 shrink-0 rounded-full",u?"bg-amber-500":"bg-emerald-500")})]})]}),i?x(Cs,{chatId:e,disabled:a,queryClient:o,session:r,status:c}):null]})}function Cs({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=_(""),[o,d]=_(""),[c,l]=_(""),[u,m]=_(null),[h,f]=_(null),p=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),g=C({enabled:!!e,queryKey:["git-diff",e,h],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return ia(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e,h),retry:!1}),v=C({enabled:!!e,queryKey:["git-history",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/git/history`,{token:e.token})}(a,e),retry:!1}),w=k({mutationFn:function(t){return async function(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>O.error(ds(e)),onSuccess:t=>{O.success(t.message),d(""),l(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})}}),b=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(p.data,i),N=w.data?.status??r,I=$(()=>N?.changedFiles??[],[N]),A=$(()=>v.data?.commits??[],[v.data]),E=A.find(e=>e.hash===u)??null,T=t||w.isPending||!N||!1===N.isRepo,M=g.data?.diff?.trim()||g.data?.stat?.trim()||"",S=h??"All changes";return R(()=>{f(e=>I.length?e&&I.some(t=>t.path===e)?e:I[0]?.path??null:null)},[I]),R(()=>{m(e=>A.length?e&&A.some(t=>t.hash===e)?e:A[0]?.hash??null:null)},[A]),y(Ya,{className:"flex h-[min(90vh,760px)] w-[min(1180px,calc(100vw-1rem))] max-w-none flex-col overflow-hidden p-0",children:[y(Za,{className:"gap-2 px-4 pb-3 pr-12 pt-4",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(tr,{className:"flex min-w-0 items-center gap-2 text-base",children:[x(ve,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{children:"Git"})]}),x(Es,{branches:b,branchFilter:i,currentBranch:N?.branch,loading:p.isFetching&&!p.data,locked:T,newBranchName:c,onBranchFilterChange:s,onCheckout:e=>{window.confirm(`Switch to ${e}?`)&&w.mutate({action:"checkout",branch:e})},onCreateBranch:()=>w.mutate({action:"createBranch",branch:c.trim()}),onNewBranchNameChange:l}),x("span",{className:jn("size-2 shrink-0 rounded-full",N?N.clean?"bg-emerald-500":"bg-amber-500":"bg-muted-foreground/40")}),x("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:w.isPending?"Running git...":N?Ss(N):"Loading..."}),y("div",{className:"ml-auto flex min-w-0 items-center gap-1",children:[y(Ma,{disabled:T,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&w.mutate({action:"pull"})},children:[x(ie,{}),"Pull"]}),y(Ma,{disabled:T,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&w.mutate({action:"push"})},children:[x(at,{}),"Push"]}),x(Ma,{size:"icon-sm",title:"Refresh git",type:"button",variant:"ghost",onClick:()=>{n.invalidateQueries({queryKey:["git-status",e]}),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]}),n.invalidateQueries({queryKey:["git-history",e]})},children:x(Be,{className:jn((w.isPending||g.isFetching||v.isFetching)&&"animate-spin")})})]})]}),x(nr,{className:"sr-only",children:"Manage repository changes, branches, commits, pull, push, and history."})]}),y("div",{className:"grid min-h-0 flex-1 overflow-y-auto border-t lg:grid-cols-[18rem_minmax(0,1fr)_19rem] lg:overflow-hidden",children:[y("section",{className:"grid min-h-[20rem] grid-rows-[auto_minmax(0,1fr)_auto] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Ae,{className:"size-4 text-muted-foreground"}),x("div",{className:"truncate text-sm font-medium",children:"Local Changes"})]}),x("span",{className:"text-xs text-muted-foreground",children:I.length})]}),x(Jr,{className:"min-h-0",children:x(Ts,{files:I,loading:!N,selectedPath:h,onSelect:f})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(hr,{className:"min-h-20 resize-none text-sm",placeholder:"Commit message",value:o,onChange:e=>d(e.target.value)}),y(Ma,{className:"justify-center",disabled:T||!o.trim()||N?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&w.mutate({action:"commit",message:o.trim()})},children:[x(ve,{}),"Commit All"]})]})]}),y("section",{className:"grid min-h-[24rem] min-w-0 grid-rows-[auto_minmax(0,1fr)] border-b lg:min-h-0 lg:border-b-0 lg:border-r",children:[y("div",{className:"flex min-w-0 items-center gap-2 border-b px-3 py-2",children:[x(ue,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0 flex-1",children:[x("div",{className:"truncate text-sm font-medium",children:"Diff Preview"}),x("div",{className:"truncate font-mono text-xs text-muted-foreground",children:S})]}),h?x(Ma,{size:"xs",type:"button",variant:"ghost",onClick:()=>f(null),children:"All"}):null]}),x("div",{className:"min-h-0 min-w-0 overflow-auto bg-muted/20",children:x(vs,{diff:g.data?.diff??"",error:g.error,fallback:g.data?.stat??"",loading:g.isFetching&&!M})})]}),y("section",{className:"grid min-h-[22rem] grid-rows-[auto_minmax(0,1fr)_auto] lg:min-h-0",children:[y("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(te,{className:"size-4 text-muted-foreground"}),x("div",{className:"truncate text-sm font-medium",children:"History"})]}),x("span",{className:"text-xs text-muted-foreground",children:A.length})]}),x(Is,{commits:A,error:v.error,fetching:v.isFetching,selectedHash:u,onSelect:m}),x("div",{className:"min-h-20 border-t p-3 text-xs",children:E?y("div",{className:"grid gap-1",children:[x("div",{className:"line-clamp-2 font-medium",children:E.subject}),x("div",{className:"truncate font-mono text-muted-foreground",children:E.hash}),y("div",{className:"truncate text-muted-foreground",children:[E.authorName||"Unknown author"," ·"," ",ks(E.authoredAt)]})]}):x("div",{className:"text-muted-foreground",children:"No commit selected."})})]})]})]})}function Es({branches:e,branchFilter:t,currentBranch:n,loading:a,locked:r,newBranchName:i,onBranchFilterChange:s,onCheckout:o,onCreateBranch:d,onNewBranchNameChange:c}){return y(ls,{children:[y(us,{render:x(Ma,{className:"max-w-64 justify-start",size:"sm",type:"button",variant:"outline"}),children:[x(ge,{}),x("span",{className:"min-w-0 truncate",children:n??"No branch"}),x(J,{className:"ml-1 size-3.5 text-muted-foreground"})]}),y(ms,{align:"start",className:"w-80 gap-0 p-0",side:"bottom",children:[y(hs,{className:"border-b p-3",children:[x(fs,{children:"Branches"}),y(ps,{children:["Current branch: ",n??"detached"]})]}),x("div",{className:"grid gap-2 p-3",children:x(Sa,{className:"h-8",placeholder:"Find branch",value:t,onChange:e=>s(e.target.value)})}),x(Jr,{className:"max-h-72 border-y",children:y("div",{className:"grid gap-1 p-2",children:[e.map(e=>y(Ma,{className:"justify-start",disabled:r||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>o(e.name),children:[e.current?x(W,{}):x(ge,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),e.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:a?"Loading branches...":"No branches found."})]})}),y("div",{className:"grid gap-2 p-3",children:[x(Sa,{className:"h-8",placeholder:"New branch",value:i,onChange:e=>c(e.target.value)}),y(Ma,{disabled:r||!i.trim(),size:"sm",type:"button",variant:"outline",onClick:d,children:[x(je,{}),"Create branch"]})]})]})]})}function Ts({files:e,loading:t,selectedPath:n,onSelect:a}){return t?x("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Loading status..."}):e.length?x("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:jn("grid min-w-0 grid-cols-[2.25rem_minmax(0,1fr)] items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs outline-none hover:bg-muted focus-visible:bg-muted",n===e.path&&"bg-muted"),type:"button",onClick:()=>a(e.path),children:[x("span",{className:jn("rounded-sm px-1 py-0.5 text-center font-mono text-[0.68rem]",Ms(e.status)),children:e.status.trim()}),x("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):x("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function Ms(e){return e.includes("D")?"bg-red-500/10 text-red-700 dark:text-red-300":e.includes("A")||e.includes("?")?"bg-emerald-500/10 text-emerald-700 dark:text-emerald-300":e.includes("R")||e.includes("C")?"bg-blue-500/10 text-blue-700 dark:text-blue-300":"bg-amber-500/10 text-amber-700 dark:text-amber-300"}function Ss(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,Ps(e)].filter(Boolean).join(" · "):"Git unavailable"}function Ps(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function Ds({active:e,className:t,compact:n=!1,count:a,disabled:r,onToggle:i}){const s=a??0;return y(Ma,{"aria-label":"Terminal","aria-pressed":e,className:jn(n?"relative":"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",t),disabled:r,size:n?"icon":"sm",title:r?"Choose a working directory":"Terminal",type:"button",variant:"ghost",onClick:i,children:[x(et,{className:"size-3.5"}),x("span",{className:n?"sr-only":"min-w-0 truncate",children:"Terminal"}),s>0?x("span",{className:jn("inline-flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full bg-sidebar-accent px-1 text-[0.65rem] leading-none text-sidebar-accent-foreground",n?"absolute -right-1 -top-1":"ml-0.5"),children:s}):null]})}function Ls({onAddAccount:e,onNewChat:t}){return y(ar,{children:[y(rr,{render:x(Ma,{size:"icon",variant:"ghost"}),children:[x(je,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(ir,{align:"end",className:"w-44",children:[y(sr,{onClick:t,children:[x(Ye,{}),"New chat"]}),y(sr,{onClick:e,children:[x(rt,{}),"Add account"]})]})]})}function Rs(){const{loading:e,session:t}=wa(),{chatId:n}=g(),a=ji(t),[s,o]=_(""),[d,c]=_(null),[l,u]=_(0),[m,h]=_(!1),[p,v]=_("accounts"),[w,N]=_(!1),[I,k]=_(null),T=f(),M=E(),S=D(e=>{u(e?.focusCreate?e=>e+1:0),v("accounts"),h(!0)},[]),P=D(e=>{"accounts"===e&&u(0),v(e)},[]),L=D((e="accounts")=>{v(e),h(!0)},[]),q=C({enabled:!!t,queryKey:["accounts"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/accounts",{token:e.token})}(t),refetchInterval:e=>!!e.state.data?.some(e=>"AUTHENTICATING"===e.status)&&1500}),U=C({enabled:!!t,queryKey:["chats"],queryFn:()=>async function(e){return ia(e.serverUrl,"/api/chats",{token:e.token})}(t)}),z=$(()=>q.data??[],[q.data]),O=$(()=>U.data??[],[U.data]),j=$(()=>n?O.find(e=>e.id===n)??null:null,[n,O]),F=j?.title??null;R(()=>{n&&c(n)},[n]);const B=$(()=>{if(n){const e=O.find(e=>e.id===n);if(e)return e}if(d){const e=O.find(e=>e.id===d);if(e)return e}return O[0]??null},[n,O,d]),G=$(()=>z.filter(e=>"CONNECTED"===e.status),[z]);Wn(F);const H=A({queries:G.map(e=>({enabled:!!t,queryKey:["rate-limits",e.id],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}(t,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),K=$(()=>Object.fromEntries(G.map((e,t)=>{const n=yr(H[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[H,G]),W=$(()=>Object.fromEntries(G.map(e=>{const t=K[e.id];return t?[e.id,Nr(t)]:null}).filter(e=>!!e)),[K,G]),Q=$(()=>Object.fromEntries(G.map((e,t)=>[e.id,H[t]?.isFetching??!1])),[H,G]),V=H.some(e=>os(e.error));if(R(()=>{V&&M.invalidateQueries({queryKey:["accounts"]})},[V,M]),R(()=>{s.trim()||N(!1)},[s]),e)return x($s,{});if(!t)return x(r,{replace:!0,to:"/connect"});const J={accounts:z,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeProjectPath:s,chats:O,connectedAccounts:G,lastOpenedChat:B,openAccountManagement:S,openWorkspacePicker:k,session:t,setActiveProjectPath:o,setTerminalOpen:N,terminalCount:a.count,terminalOpen:w,terminalSocket:a.socket,terminalSocketConnected:a.connected};return y(b,{children:[y(fi,{className:"h-svh min-h-0 overflow-hidden",children:[y(pi,{collapsible:"offcanvas",variant:"inset",children:[x(wi,{children:y(Ma,{className:"w-full justify-start",variant:"ghost",onClick:()=>T("/"),children:[x(Ye,{}),x("span",{children:"New chat"})]})}),x(xi,{children:y(yi,{className:"p-0",children:[x(Ni,{children:"Chats"}),x(Ii,{children:x(cs,{chats:O,session:t})})]})}),x(bi,{children:y(Ma,{className:"justify-start",variant:"ghost",onClick:()=>L(),children:[x(Qe,{}),x("span",{children:"Settings"})]})})]}),y(vi,{className:"min-h-0 min-w-0 overflow-hidden",children:[y("header",{className:"flex h-12 shrink-0 items-center justify-between gap-2 border-b px-2",children:[y("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[x(gi,{variant:"ghost",children:x(Se,{})}),x("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold tracking-normal",children:F??(n?"Chat":"New chat")})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[j?y(b,{children:[x(Ds,{active:w,className:jn("md:hidden",w&&"text-foreground"),compact:!0,count:a.count,disabled:!s.trim(),onToggle:()=>N(!w)}),x(As,{chatId:j.id,className:"md:hidden",compact:!0,disabled:"RUNNING"===j.status,session:t})]}):null,x(Ls,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),x(ri,{})]})]}),q.error||U.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:q.error?.message??U.error?.message??"Unable to load workspace data."}):null,x("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:x(i,{context:J})})]})]}),x(Zr,{accounts:z,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeTab:p,createFocusKey:l,open:m,session:t,onTabChange:P,onOpenChange:h}),I?x(Ti,{initialPath:I.initialPath,mode:I.mode,open:!!I,session:t,onOpenChange:e=>{e||k(null)},onSelect:I.onSelect}):null]})}function $s(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})})}It.registerLanguage("bash",kt),It.registerLanguage("css",At),It.registerLanguage("go",Ct),It.registerLanguage("html",$t),It.registerLanguage("javascript",Tt),It.registerLanguage("json",Et),It.registerLanguage("markdown",Mt),It.registerLanguage("python",St),It.registerLanguage("rust",Pt),It.registerLanguage("sh",Dt),It.registerLanguage("sql",Lt),It.registerLanguage("tsx",Rt),It.registerLanguage("typescript",Rt),It.registerLanguage("xml",$t),It.registerLanguage("yaml",qt);var qs=qn({default:()=>_s}),_s=c(function(){return x(Rs,{})}),Us="xedoc.web.terminal-height",zs=null;function Os({className:e,onClosePanel:t,projectPath:n,socket:a,socketConnected:r}){const[i,s]=_(null),[o,d]=_(null),[c,l]=_(Fs),[u,m]=_(!1),[h,f]=_(null),[p,g]=_([]),v=q(c),w=function(){const[e,t]=_(()=>Hs());return R(()=>{const e=window.matchMedia("(max-width: 639px)"),n=()=>t(e.matches);return n(),e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),b=D((e,t)=>Oi(a,e,t),[a]),N=D(e=>{g(e),s(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),I=D(async()=>{const e=await b("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),N(e.terminals),s(e.terminal.id)},[N,n,b,h]);R(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),b("terminal:project:join",{projectPath:n}).then(async n=>{if(!e&&(t=n.projectPath,f(n.projectPath),N(n.terminals),!n.terminals.length)){const t=await b("terminal:create",{cols:80,projectPath:n.projectPath,rows:24});e||(f(t.projectPath),N(t.terminals),s(t.terminal.id))}}).catch(t=>{e||d(Ks(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&Oi(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[N,n,b,a]),R(()=>{if(!a)return;const e=e=>{const t=h??n;e.projectPath===t&&N(e.terminals)};return a.on("terminal:project",e),()=>{a.off("terminal:project",e)}},[N,n,h,a]),R(()=>{v.current=c;const e=window.setTimeout(()=>{Bs(c)},150);return()=>window.clearTimeout(e)},[c]),R(()=>{const e=()=>{l(e=>{const t=Gs(e);return v.current=t,t})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const k=D(async e=>{try{N((await b("terminal:close",{terminalId:e})).terminals)}catch(t){O.error(Ks(t))}},[N,b]),A=D(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),C=D(e=>{e.currentTarget.setPointerCapture(e.pointerId);const t=e.clientY,n=c,a=e=>{const a=Gs(n+t-e.clientY);v.current=a,l(a)},r=()=>{Bs(v.current),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",a),document.addEventListener("pointerup",r)},[c]);return y("section",{className:jn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[x("button",{"aria-label":"Resize terminal",className:"group flex h-3 cursor-row-resize items-center justify-center border-b bg-muted/40",type:"button",onPointerDown:C,children:x("span",{className:"h-0.5 w-10 rounded-full bg-muted-foreground/35 group-hover:bg-muted-foreground/70"})}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"flex min-w-0 items-center gap-1 border-b bg-muted/25 px-2 py-1",children:[x("div",{"aria-label":"Terminals",className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",role:"tablist",children:p.map(e=>y("div",{className:jn("flex h-7 min-w-24 max-w-48 shrink-0 items-center rounded-md text-[11px] sm:h-8 sm:min-w-28 sm:max-w-56 sm:text-xs",e.id===i?"bg-secondary text-secondary-foreground":"hover:bg-accent hover:text-accent-foreground","exited"===e.status&&"text-muted-foreground"),children:[y("button",{"aria-selected":e.id===i,className:"flex h-full min-w-0 flex-1 items-center gap-1.5 px-2 text-left",role:"tab",title:e.title,type:"button",onClick:()=>s(e.id),children:[x(et,{className:"size-3.5 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),x("span",{className:jn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),x("button",{"aria-label":"Close terminal",className:"mr-1 grid size-5 shrink-0 place-items-center rounded-sm hover:bg-background",title:"Close terminal",type:"button",onClick:()=>{k(e.id)},children:x(it,{className:"size-3"})})]},e.id))}),x(Ma,{"aria-label":"New terminal",className:"size-8 shrink-0",disabled:!r||u,size:"icon-sm",title:"New terminal",type:"button",variant:"ghost",onClick:()=>{I().catch(e=>O.error(Ks(e)))},children:u?x(Ce,{className:"animate-spin"}):x(je,{})}),t?x(Ma,{"aria-label":"Hide terminal panel",className:"size-8 shrink-0",size:"icon-sm",title:"Hide terminal panel",type:"button",variant:"ghost",onClick:t,children:x(it,{})}):null]}),x("div",{className:"relative min-h-0 bg-zinc-950",children:o?x("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):p.length?p.map(e=>x(js,{active:e.id===i,compactLayout:w,resizeSignal:c,socket:a,terminal:e,onTerminalUpdated:A},e.id)):x("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function js({active:e,compactLayout:t,onTerminalUpdated:n,resizeSignal:a,socket:r,terminal:i}){const s=q(null),o=q(null),d=q(null),c=q(null),[l,u]=_(!1),m=D(()=>{null===d.current&&(d.current=window.requestAnimationFrame(()=>{d.current=null,o.current?.fit()}))},[]);return R(()=>(m(),()=>{null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null)}),[m,a]),R(()=>{e&&(m(),requestAnimationFrame(()=>{o.current?.fit(),c.current?.focus()}))},[e,m]),R(()=>{const a=s.current;if(!r||!a)return;let l=!1,h=!1;const f=[];u(!1),a.replaceChildren();const p=e=>{r.emit("terminal:input",{data:e,terminalId:i.id})},g=e=>{h&&e.terminalId===i.id&&c.current?.write(e.data)};return r.on("terminal:output",g),async function(){return zs??=import("ghostty-web").then(async e=>(await e.init(),e)),zs}().then(async({FitAddon:a,Terminal:d})=>{if(l||!s.current)return;s.current.replaceChildren();const g=new d({cursorBlink:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',fontSize:t?11:12,scrollback:1e4,theme:{background:"#09090b",foreground:"#e4e4e7"}}),v=new a;o.current=v,c.current=g,g.loadAddon(v),g.open(s.current),v.fit(),v.observeResize(),g.attachCustomKeyEventHandler(e=>"Enter"===e.key&&(p("\r"),!0)),f.push(v),f.push(g.onData(e=>{p(e)})),f.push(g.onResize(e=>{r.emit("terminal:resize",{cols:e.cols,rows:e.rows,terminalId:i.id})})),f.push(g.onTitleChange(e=>{r.emit("terminal:title",{terminalId:i.id,title:e})}));const w=await Oi(r,"terminal:attach",{terminalId:i.id});l||(n(w.terminal),w.replay&&g.write(w.replay),h=!0,requestAnimationFrame(()=>{v.fit(),l||(u(!0),e&&g.focus())}),m())}).catch(e=>{l||O.error(Ks(e))}),()=>{l=!0,null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null),r.off("terminal:output",g),Oi(r,"terminal:detach",{terminalId:i.id}).catch(()=>{});for(const e of f)e.dispose();c.current?.dispose(),a.replaceChildren(),c.current=null,o.current=null,u(!1)}},[e,t,n,m,r,i.id]),y("div",{className:jn("absolute inset-0 h-full min-h-0 overflow-hidden bg-zinc-950 p-1 outline-none sm:p-2",e?"z-10 opacity-100":"z-0 opacity-0 pointer-events-none"),"aria-hidden":!e,style:{caretColor:"transparent"},children:[!l&&e?x("div",{className:"absolute inset-0 grid place-items-center bg-zinc-950 text-xs text-zinc-500",children:"Loading terminal..."}):null,x("div",{className:jn("h-full min-h-0 transition-opacity [&_canvas]:block",l?"opacity-100":"opacity-0"),ref:s})]})}function Fs(){return"undefined"==typeof window?360:Gs(Number.parseInt(window.localStorage.getItem(Us)??"",10)||(Hs()?300:360))}function Bs(e){"undefined"!=typeof window&&window.localStorage.setItem(Us,String(e))}function Gs(e){const t="undefined"!=typeof window&&Hs()?160:220,n="undefined"==typeof window?720:Math.max(t,Math.min(window.innerHeight-(Hs()?96:140),760));return Math.max(t,Math.min(n,e))}function Hs(){return"undefined"!=typeof window&&window.innerWidth<640}function Ks(e){return e instanceof Error?e.message:"Terminal request failed."}function Ws(){return p()}function Qs({className:e,size:t="default",...n}){return x(_t.Root,{"data-slot":"switch","data-size":t,className:jn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(_t.Thumb,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}function Vs({account:e,autoRotate:t,autoRotateDisabled:n,connectedAccounts:a,disabled:r,onAutoRotateChange:i,onSelect:s,pending:o,selectedAccountId:d,selectionDisabled:c,usageSummaries:l}){const u=t?"Auto rotate":e?.displayName??"Choose account",m=t&&e?`Auto rotate: ${e.displayName}`:e?.displayName??"Choose account";return y(ar,{children:[y(rr,{render:x(Ma,{"aria-label":m,className:"max-w-44 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:r||o,size:"sm",title:m,variant:t?"secondary":"ghost"}),children:[o?x(Ce,{className:"animate-spin"}):x(t?Be:rt,{}),x("span",{className:"truncate max-sm:sr-only",children:u})]}),y(ir,{align:"start",className:"w-64",children:[i?y(b,{children:[y(sr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[x(Be,{}),x("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),x(Qs,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),x(mr,{})]}):null,a.map(e=>{const t=e.id===d;return y(sr,{disabled:o||c,onClick:()=>{t||s(e.id)},children:[x("span",{className:"truncate",children:e.displayName}),l[e.id]?x("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:l[e.id]}):x("span",{className:"ml-auto"}),t?x(W,{className:"size-4 shrink-0"}):null]},e.id)})]})]})}function Js(e){return e.map(e=>"image"===e.kind?{dataUrl:e.dataUrl,kind:"image",mimeType:e.mimeType,name:e.name,size:e.size}:{kind:"file",name:e.name,path:e.path,size:e.size})}async function Xs(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await Zs(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Ys(e){const t=Array.from(e.files).filter(e=>e.type.startsWith("image/")),n=Array.from(e.items).filter(e=>"file"===e.kind&&e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(e=>!!e),a=new Set;return[...t,...n].filter(e=>{const t=`${e.name}:${e.size}:${e.lastModified}`;return!a.has(t)&&(a.add(t),!0)})}function Zs(e){return new Promise((t,n)=>{const a=new FileReader;a.onerror=()=>n(a.error??new Error("Unable to read image.")),a.onload=()=>t(String(a.result??"")),a.readAsDataURL(e)})}function eo(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:Ji(t),path:t}}function to({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(b,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(ce,{className:"size-3.5 shrink-0 text-muted-foreground"}),x("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),x(Ma,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(it,{className:"size-3"})})]},e.id))}):null]})}function no({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=Ar(e.usedPercent);return y(ls,{children:[x(us,{render:x(Ma,{"aria-label":`Context ${Math.round(t)}% used`,className:"size-7 px-0 text-xs font-normal text-muted-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8",size:"icon-sm",title:`Context ${Math.round(t)}% used`,variant:"ghost"}),children:x("span",{"aria-hidden":"true",className:"grid size-4 shrink-0 place-items-center rounded-full text-foreground",style:{background:`conic-gradient(var(--foreground) ${3.6*t}deg, var(--muted) 0deg)`},children:x("span",{className:"size-2 rounded-full bg-background"})})}),y(ms,{align:"end",className:"w-72",side:"top",children:[y(hs,{children:[x(fs,{children:"Context window"}),x(ps,{children:"Codex automatically compacts this context when needed."})]}),y("div",{className:"grid gap-3",children:[y("div",{children:[y("div",{className:"mb-1 flex items-center justify-between gap-2 text-sm",children:[y("span",{className:"font-medium",children:[Math.round(t),"% used"]}),y("span",{className:"text-muted-foreground",children:[e.remainingPercent,"% left"]})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:"h-full rounded-full bg-foreground",style:{width:`${t}%`}})})]}),y("div",{className:"rounded-md bg-muted/60 p-2 font-mono text-xs text-muted-foreground",children:[Xi(e.tokensUsed)," /"," ",Xi(e.tokenLimit)," tokens used"]})]})]})]})}function ao({pending:e,snapshot:t}){const n=Nr(t),a=Ir(t);return y(ls,{children:[y(us,{render:x(Ma,{className:jn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:justify-center max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(Ce,{className:"size-3 animate-spin"}):x(ot,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(ms,{align:"start",className:"w-80",side:"top",children:[y(hs,{children:[x(fs,{children:"Usage capacity"}),x(ps,{children:"Current Codex account limits refresh automatically."})]}),x(lo,{pending:e,snapshot:t})]})]})}function ro({visible:e}){return e?y(pr,{className:"pointer-events-none absolute right-1.5 top-1.5 z-10 border-primary/25 bg-background/95 text-foreground shadow-sm backdrop-blur dark:border-primary/40",variant:"outline",children:[x(Ae,{}),x("span",{children:"Plan mode"})]}):null}function io({attachmentDisabled:e,disabled:t,mode:n,modeDisabled:a,onAttachFile:r,onAttachImage:i,onSelectMode:s,pending:o}){const d="plan"===n,c=e||t;return y(ar,{children:[x(rr,{render:x(Ma,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:d?"secondary":"ghost"}),children:o?x(Ce,{className:"animate-spin"}):x(je,{})}),y(ir,{align:"start",className:"w-56",children:[y(sr,{className:"gap-3 py-2",disabled:t||a||o,onClick:e=>{e.preventDefault(),s(d?"default":"plan")},children:[x(Ae,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(Qs,{checked:d,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(sr,{className:"gap-3 py-2",disabled:c||!i,onClick:i,children:[x(be,{}),x("span",{children:"Attach image"})]}),y(sr,{className:"gap-3 py-2",disabled:c||!r,onClick:r,children:[x(_e,{}),x("span",{children:"Attach workspace file"})]})]})]})}function so({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(ar,{children:[y(rr,{render:x(Ma,{"aria-label":ns(t),className:jn("max-w-40 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",r&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-100 aria-expanded:bg-orange-100 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/45 dark:aria-expanded:bg-orange-950/45"),disabled:e||a,size:"sm",title:ns(t),variant:"ghost"}),children:[a?x(Ce,{className:"animate-spin"}):x(r?Je:Ve,{}),x("span",{className:"truncate max-sm:sr-only",children:ns(t)})]}),x(ir,{align:"start",className:"w-48",children:y(lr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(ur,{value:"default",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Default"}),x("span",{className:"text-xs text-muted-foreground",children:"Codex asks as needed."})]})}),x(ur,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Full access"}),x("span",{className:"text-xs text-muted-foreground",children:"No sandbox or approval prompts."})]})})]})})]})}function oo({hasDraft:e,loading:t,onSend:n,onSteer:a,onStop:r,running:i=!1,sendDisabled:s,steerDisabled:o,stopPending:d=!1}){return i&&!e?x(Ma,{"aria-label":"Stop task",className:"size-9 rounded-full",disabled:d||!r,size:"icon",title:"Stop task",type:"button",variant:"secondary",onClick:r,children:d?x(Ce,{className:"animate-spin"}):x(Xe,{})}):i&&e?y("div",{className:"group relative flex shrink-0",children:[x("div",{className:"absolute right-0 bottom-full z-20 hidden min-w-48 pb-2 group-focus-within:block group-hover:block",children:y("div",{className:"grid gap-1 rounded-lg border bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10",children:[y("button",{className:"flex min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",disabled:o||t||!a,type:"button",onClick:a,children:[x(H,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0",children:"Steer active task"})]}),y("button",{className:"flex min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",disabled:s||t,type:"button",onClick:n,children:[x(te,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0",children:"Queue after current task"})]})]})}),x(Ma,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:s||t,size:"icon",title:"Queue message",type:"button",onClick:n,children:t?x(Ce,{className:"animate-spin"}):x(H,{})})]}):x(Ma,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:s||t,size:"icon",type:"button",onClick:n,children:t?x(Ce,{className:"animate-spin"}):x(H,{})})}function co({activeReasoningEffort:e,disabled:t,modelOptions:n,modelValue:a,onSelectModel:r,onSelectReasoning:i,onSelectServiceTier:s,pending:o,reasoningOptions:d,reasoningValue:c,selectedModel:l,serviceTierOptions:u,serviceTierValue:m}){const h=function({effort:e,model:t,modelValue:n,serviceTier:a}){return[(t?.displayName??n)||"Model",e?es(e):null,a?ts(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(ar,{children:[y(rr,{render:x(Ma,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:t||o,size:"sm",title:h,variant:"ghost"}),children:[o?x(Ce,{className:"animate-spin"}):x(re,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(ir,{align:"start",className:"w-72",children:[y(or,{children:[y(dr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(K,{}),x("span",{children:"Intelligence"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:es(e)})]}),x(cr,{className:"w-52",children:y(lr,{value:c,onValueChange:i,children:[x(ur,{value:"",children:"Model default"}),d.map(e=>x(ur,{value:e,children:es(e)},e))]})})]}),y(or,{children:[y(dr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(re,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(cr,{className:"w-64",children:y(lr,{value:a,onValueChange:r,children:[x(ur,{value:"",children:"Default model"}),n.map(e=>x(ur,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(or,{children:[y(dr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(pe,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:ts(m)})]}),x(cr,{className:"w-52",children:y(lr,{value:m,onValueChange:s,children:[x(ur,{value:"",children:"Default speed"}),u.map(e=>x(ur,{value:e,children:ts(e)},e))]})})]})]})]})}function lo({pending:e,snapshot:t}){return t?y("div",{className:"grid gap-2",children:[y("div",{className:"grid gap-1 text-xs text-muted-foreground",children:[t.limitName?x("div",{children:t.limitName}):null,t.planType?y("div",{children:["Plan: ",Zi(t.planType)]}):null,t.credits?y("div",{children:["Credits:"," ",t.credits.unlimited?"unlimited":t.credits.balance??(t.credits.hasCredits?"available":"depleted")]}):null,t.rateLimitReachedType?x("div",{className:"text-destructive",children:(n=t.rateLimitReachedType,Zi(n))}):null]}),x(uo,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(uo,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):x("div",{className:"rounded-md bg-muted/60 p-2 text-xs text-muted-foreground",children:e?"Loading limits...":"Usage limits are unavailable."});var n}function uo({fallbackLabel:e,severity:t,window:n}){const a=Ar(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=kr(n);return y("div",{className:jn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[x("span",{className:"font-medium",children:Hi(n,e)}),x("span",{className:jn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:jn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:jn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?x("span",{children:(s=n.windowDurationMins,s>=10080?`${Math.round(s/10080)} week window`:s%60==0?s/60+" hour window":`${s} minute window`)}):null,n?.resetsAt?y("span",{children:["Resets ",Ki(n.resetsAt)]}):null]})]});var s}function mo(){const{accountRateLimitFetching:e,accountRateLimitSnapshots:t,accountUsageSummaries:n,connectedAccounts:a,lastOpenedChat:r,openAccountManagement:i,openWorkspacePicker:s,session:o,setActiveProjectPath:d,setTerminalOpen:c,terminalOpen:l,terminalSocket:u,terminalSocketConnected:m}=Ws(),p=h(),g=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return"";const t=e.workingDirectory;return"string"==typeof t?t.trim():""}(p.state),v=g?`${p.key}:${g}`:"",[w,b]=_(""),[N,I]=_([]),[A,T]=_("default"),[M,S]=_(null),[P,L]=_(r?.autoRotateAccount??!1),[U,z]=_(r?.accountId??null),[j,F]=_("default"),[B,G]=_(null),[H,K]=_(null),[W,Q]=_(null),[V,J]=_(g||r?.workingDirectory?.trim()||""),X=E(),Y=f(),Z=q(null),ee=q(r?.id??null),te=q(v||null);R(()=>(d(V.trim()),()=>d("")),[d,V]),R(()=>{g&&te.current!==v&&(te.current=v,J(g))},[g,v]),R(()=>{if(!r||ee.current===r.id)return;ee.current=r.id;const e=r.workingDirectory?.trim()??"";e&&J(t=>t.trim()?t:e);const t=r.accountId;t&&z(e=>e??t)},[r]);const ne=$(()=>Bi(a,t),[t,a]),ae=a.find(e=>e.id===U),re=(P&&ae&&Gi(t[ae.id])<0?void 0:ae)??ne??a[0];R(()=>{if(!re?.id)return K(null),S(null),F("default"),G(null),void Q(null);K(re.id),S(re.defaultModel??null),F(re.defaultPermissionMode??"default"),G(re.defaultReasoningEffort??null),Q(re.defaultServiceTier??null)},[re?.defaultModel,re?.defaultPermissionMode,re?.defaultReasoningEffort,re?.defaultServiceTier,re?.id]);const ie=C({enabled:!!re?.id,queryKey:["models",re?.id],queryFn:()=>Zn(o,re.id),staleTime:3e5});R(()=>{os(ie.error)&&X.invalidateQueries({queryKey:["accounts"]})},[ie.error,X]);const se=ie.data?.data??[],oe=H===re?.id,de=oe?M:null,ce=oe?B:null,le=oe?W:null,ue=Fi(se,de),me=ue?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],fe=ce??ue?.defaultReasoningEffort??null,pe=ue?.additionalSpeedTiers??[],ge=re?t[re.id]:void 0,ve=!!re&&!!e[re.id],we=k({mutationFn:({accountId:e,settings:t})=>Xn(o,e,t),onError:e=>O.error(ds(e)),onSuccess:e=>{X.setQueryData(["accounts"],t=>is(t,e))}}),be=k({mutationFn:async()=>{if(!re)throw new Error("Connect an account before starting a chat.");if(!V.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return ia(e.serverUrl,"/api/chats",{body:t,token:e.token})}(o,{accountId:re.id,autoRotateAccount:P,collaborationMode:A,model:de,permissionMode:j,reasoningEffort:ce,serviceTier:le,workingDirectory:V.trim()});return{chat:e,response:await ra(o,e.id,{attachments:Js(N),content:w.trim()})}},onError:e=>O.error(ds(e)),onSuccess:({chat:e,response:t})=>{b(""),I([]),L(!1),T("default"),F(re?.defaultPermissionMode??"default"),J(""),X.setQueryData(["messages",e.id],as(void 0,rs(t))),X.invalidateQueries({queryKey:["chats"]}),Y(`/chat/${e.id}`)}}),xe=D(e=>{e?.length&&Xs(e).then(e=>{I(t=>[...t,...e])}).catch(e=>O.error(ds(e)))},[]),ye=D(()=>{s({initialPath:V,mode:"file",onSelect:e=>{I(t=>[...t,eo(e)])}})},[s,V]),Ne=V.trim(),Ie=l&&!!Ne;return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:x(Jr,{className:"min-h-0 min-w-0 flex-1",viewportProps:{className:"overflow-x-hidden"},children:y("div",{className:jn("mx-auto flex min-h-full w-full flex-col px-4",Ie?"max-w-5xl justify-start py-4 sm:justify-center sm:py-8":"max-w-[760px] justify-center py-8"),children:[a.length?null:y("div",{className:"mb-4 rounded-md border bg-muted/35 p-4 text-sm",children:[x("div",{className:"font-medium",children:"No connected account"}),x("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(Ma,{className:"mt-3",size:"sm",onClick:()=>i(),children:[x(rt,{}),"Manage Accounts"]})]}),Ie?x(Os,{onClosePanel:()=>c(!1),projectPath:Ne,socket:u,socketConnected:m}):y("div",{className:"grid gap-3 rounded-2xl border bg-card/80 p-3 shadow-sm dark:border-border/90 dark:bg-card/55",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-xl border bg-transparent px-2 py-1.5 dark:bg-transparent",children:[x(Sa,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-sm shadow-none focus-visible:ring-0 dark:bg-transparent",placeholder:"Working directory",spellCheck:!1,value:V,onChange:e=>J(e.target.value)}),y(Ma,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>s({initialPath:V,onSelect:J}),children:[x(he,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),y("div",{className:"relative min-w-0",children:[x(ro,{visible:"plan"===A}),x(hr,{className:jn("min-h-32 resize-none border-0 bg-transparent px-1 shadow-none focus-visible:ring-0 dark:bg-transparent","plan"===A&&"pr-24"),placeholder:"Message Codex",value:w,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!be.isPending&&ss(w,V,re,N)&&be.mutate())},onPaste:e=>{const t=Ys(e.clipboardData);t.length&&xe(t)}})]}),x(to,{attachments:N,imageInputRef:Z,onAttachImages:xe,onRemove:e=>I(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[x(io,{attachmentDisabled:be.isPending,disabled:!re,mode:A,onAttachFile:ye,onAttachImage:()=>Z.current?.click(),onSelectMode:T}),x(Vs,{account:re,autoRotate:P,autoRotateDisabled:be.isPending,connectedAccounts:a,disabled:!a.length,selectedAccountId:re?.id??"",usageSummaries:n,onAutoRotateChange:L,onSelect:e=>{z(e)}}),x(co,{activeReasoningEffort:fe,disabled:!re,modelOptions:se,modelValue:de??"",pending:ie.isFetching,reasoningOptions:me,reasoningValue:ce??"",selectedModel:ue,serviceTierOptions:pe,serviceTierValue:le??"",onSelectModel:e=>{const t=re?.id??null;K(t),S(e||null),G(null),Q(null),t&&we.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=re?.id??null,n=e||null;K(t),G(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:n,defaultServiceTier:le}})},onSelectServiceTier:e=>{const t=re?.id??null,n=e||null;K(t),Q(n),t&&we.mutate({accountId:t,settings:{defaultModel:de,defaultReasoningEffort:ce,defaultServiceTier:n}})}}),x(so,{disabled:!re,mode:j,onSelectMode:e=>{F(e),re?.id&&we.mutate({accountId:re.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(ao,{pending:ve,snapshot:ge}),x(oo,{loading:be.isPending,sendDisabled:!ss(w,V,re,N),onSend:()=>be.mutate()})]})]})]})]})})})}var ho=qn({default:()=>fo}),fo=c(function(){return x(mo,{})}),po=P(null);function go({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=$(()=>function(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=new Map,a=new Set,r=[];for(const s of t){const e=Po(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of vo(e)){const e=n.get(t.path);e?n.set(t.path,{action:Mo(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:So(e.diff,t.diff),path:e.path.length<=t.path.length?e.path:t.path}):n.set(t.path,t)}}const i=Array.from(n.values());return{additions:i.reduce((e,t)=>e+t.additions,0),deletions:i.reduce((e,t)=>e+t.deletions,0),diff:So(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=L(po),o=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(ue,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:i.entries.length?`${xo(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(Io,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(Ma,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:No(i)}),children:[r?x(Ce,{className:"animate-spin"}):x(Ge,{}),"Undo"]}),y(Ma,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:yo(i)}),children:[r?x(Ce,{className:"animate-spin"}):x(oe,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Qa,{children:[y("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3 px-3 py-2 transition-colors hover:bg-muted/50",children:[x("button",{className:"min-w-0 truncate text-left font-mono text-xs underline-offset-2 hover:underline",type:"button",onClick:()=>s?.({path:e.path}),children:e.path}),x(Io,{additions:e.additions,deletions:e.deletions}),y(Va,{render:x(Ma,{size:"icon-sm",variant:"ghost"}),children:[x(J,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ya,{className:"max-w-5xl",children:[y(Za,{children:[x(tr,{children:e.path}),y(nr,{children:[e.action??"Edited"," file change reported by Codex."]})]}),x("pre",{className:"max-h-[70vh] min-w-0 max-w-full overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e.diff?.trim()||i.diff?.trim()||"No diff body was reported for this file."})]})]},e.path)):x("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?x("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>x(pr,{variant:"secondary",children:e},e))}):null]})}function vo(e){if(!e)return[];const t=function(e){const t=e?.trim();return t?function(e){const t=e.split("\n"),n=[];let a=[];for(const r of t)r.startsWith("diff --git ")&&a.length&&(n.push(a),a=[]),a.push(r);a.length&&n.push(a);return n.map(e=>e.join("\n").trim()).filter(Boolean)}(t).reduce((e,t)=>{const n=t.split("\n"),a=function(e){for(const t of["+++ ","--- "])for(const n of e){if(!n.startsWith(t))continue;const e=bo(n.slice(t.length));if(e&&"/dev/null"!==e)return e}for(const t of e){if(!t.startsWith("diff --git "))continue;const e=t.split(/\s+/),n=bo(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:wo(n),additions:n.filter(e=>e.startsWith("+")&&!e.startsWith("+++")).length,deletions:n.filter(e=>e.startsWith("-")&&!e.startsWith("---")).length,diff:t,path:a}),e):e},[]):[]}(e.diff),n=(e.changes??[]).reduce((e,t)=>{if(!t||"object"!=typeof t||Array.isArray(t))return e;const n=t,a=ko(n.path,n.filePath,n.file,n.name);return a?(e.push({action:Co(ko(n.action,n.kind,n.type)??"Edited"),additions:Ao(n.additions),deletions:Ao(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>Eo(t.path,e.path));return n?{...e,additions:e.additions||n.additions,deletions:e.deletions||n.deletions,diff:n.diff}:e}),...t.filter(e=>!n.some(t=>Eo(t.path,e.path)))];if(t.length)return t;const a=e.paths??[];if(!a.length)return[];const r=e.additions??0,i=e.deletions??0;return a.map((e,t)=>({action:"Edited",additions:1===a.length||0===t?r:0,deletions:1===a.length||0===t?i:0,path:e}))}function wo(e){return e.some(e=>e.startsWith("new file mode ")||"--- /dev/null"===e)?"Created":e.some(e=>e.startsWith("deleted file mode ")||"+++ /dev/null"===e)?"Deleted":e.some(e=>e.startsWith("rename from ")||e.startsWith("rename to "))?"Renamed":"Edited"}function bo(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function xo(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function yo(e){return["Review the changes from the latest completed editing turn.","Look for bugs, regressions, missed requirements, and risky assumptions. Do not modify files unless I explicitly ask.","","Changed files:",...e.entries.map(e=>`- ${e.path} (+${e.additions} -${e.deletions})`)].join("\n")}function No(e){return["Undo the changes from the latest completed editing turn.","Revert only the files listed below. Preserve unrelated user edits and stop with an explanation if the reverse patch cannot be applied cleanly.","","Target files:",...e.entries.map(e=>`- ${e.path} (+${e.additions} -${e.deletions})`)].join("\n")}function Io({additions:e,deletions:t}){return e||t?y("span",{className:"shrink-0 whitespace-nowrap font-mono text-xs",children:[y("span",{className:"text-emerald-600 dark:text-emerald-400",children:["+",e]}),x("span",{className:"mx-1 text-muted-foreground",children:" "}),y("span",{className:"text-red-600 dark:text-red-400",children:["-",t]})]}):null}function ko(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function Ao(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){const t=Number(e);return Number.isFinite(t)?t:0}return 0}function Co(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function Eo(e,t){return To(e)===To(t)}function To(e){return bo(e).replace(/\\/g,"/").replace(/^\.\//,"")}function Mo(e,t){return e?t&&e!==t?"Created"===e||"Created"===t?"Created":"Deleted"===e||"Deleted"===t?"Deleted":"Renamed"===e||"Renamed"===t?"Renamed":"Edited":e:t??"Edited"}function So(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function Po(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:void 0}function Do(e){return function(e){const t=[];let n=[];const a=()=>{if(n.length){if(1===n.length){const[e]=n;t.push({id:`message:${e.id}`,message:e,type:"message"})}else t.push({id:`tool-burst:${n.map(e=>e.id).join(":")}`,messages:n,type:"toolBurst"});n=[]}};for(const r of e)if("previousActions"!==r.type&&"fileChanges"!==r.type){if(Qo(r.message)){if(Fo(r.message)){a(),t.push({id:`message:${r.message.id}`,message:r.message,type:"message"});continue}const e=n.at(-1);if(!e||Vo(e,r.message)){n.push(r.message);continue}a(),n.push(r.message);continue}a(),t.push({id:`message:${r.message.id}`,message:r.message,type:"message"})}else a(),t.push({id:`${r.type}:${r.messages.map(e=>e.id).join(":")}`,messages:r.messages,type:r.type});return a(),t}(function(e){const t=[];let n=[];const a=()=>{if(!n.length)return;const e=Math.min(...n.map(e=>e.sequence));t.push({messages:n,sequence:e,type:"fileChanges"}),n=[]};for(const r of e){if("message"!==r.type||"FILE_CHANGE"!==r.message.kind){a(),t.push(r);continue}const e=n.at(-1);e&&Jo(e)!==Jo(r.message)&&a(),n.push(r.message)}return a(),t}(function(e){if(e.some(Fo))return e.map(e=>({message:e,sequence:e.sequence,type:"message"}));const t=function(e){return[...e].reverse().find(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind&&e.content.trim().length>0)}(e),n=[],a=[];for(const d of e)Wo(d,t)?n.push(d):a.push(d);const r=a.map(e=>({message:e,sequence:e.sequence,type:"message"}));if(!n.length)return r;const i=Math.min(...n.map(e=>e.sequence)),s=r.findIndex(e=>e.sequence>i),o={messages:n,sequence:i,type:"previousActions"};return s<0?[...r,o]:[...r.slice(0,s),o,...r.slice(s)]}(function(e){const t=[];let n=[];const a=()=>{n.length&&(t.push(function(e){return 1===e.length?e[0]:{...e[e.length-1],content:Oo(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:jo(e)}}(n)),n=[])};for(const r of e)if("ASSISTANT"!==r.role||"CHAT"!==r.kind)a(),t.push(r);else{if(Fo(r)){a(),t.push(r);continue}n.push(r)}return a(),t}([...e].sort((e,t)=>e.sequence-t.sequence)))))}function Lo(e){const t=Ro([...e]).filter(e=>!Ho(e)).sort((e,t)=>e.sequence-t.sequence),n=new Map;for(const a of t){const e=a.turnId?`turn:${a.turnId}`:`message:${a.id}`,t=n.get(e);t?t.push(a):n.set(e,[a])}return Array.from(n.values()).flatMap(e=>e.some(Fo)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}function Ro(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=$o(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=qo(n[t],r):(a.set(e,n.length),n.push(r))}return n}function $o(e){return e.requestId?`${e.runId??e.chatId}:${e.kind}:request:${e.requestId}`:e.itemId?`${e.runId??e.chatId}:${e.kind}:item:${e.itemId}`:null}function qo(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:_o(t.status)>_o(e.status)?{...e,status:t.status}:e:_o(t.status)>_o(e.status)||t.sequence>=e.sequence?t:e}function _o(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Uo(e,t){return"ASSISTANT"===e?.role&&"CHAT"===e.kind&&"ASSISTANT"===t.role&&"CHAT"===t.kind}function zo(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function Oo(e){const t=[];for(const n of e)if(n.trim()&&!(t.findIndex(e=>e===n||e.startsWith(n))>=0)){for(let e=t.length-1;e>=0;e-=1)n.startsWith(t[e])&&t.splice(e,1);t.push(n)}return t.join("\n\n")}function jo(e){return e.some(e=>"FAILED"===e.status)?"FAILED":e.some(e=>"STREAMING"===e.status)?"STREAMING":e.some(e=>"PENDING"===e.status)?"PENDING":"COMPLETED"}function Fo(e){return"STREAMING"===e.status||"PENDING"===e.status}function Bo(e){return{pendingRequest:Ro(e).sort((e,t)=>t.sequence-e.sequence).find(Go)}}function Go(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=Zo(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Ho(e){return!!Ko(e)||(!!function(e){return"THINKING"===e.kind&&"thinking..."===e.content.trim().toLowerCase()}(e)||"CHAT"===e.kind&&"ASSISTANT"===e.role&&(0===e.content.trim().length&&"PENDING"!==e.status&&"STREAMING"!==e.status))}function Ko(e){if("PLAN"!==e.kind)return!1;const t=Zo(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}function Wo(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Go(e)&&("APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||("THINKING"===e.kind||"TOOL_ACTIVITY"===e.kind||("COMMAND_EXECUTION"===e.kind?"FAILED"!==e.status:"ASSISTANT"===e.role&&"CHAT"===e.kind&&(!!t&&t.content.includes(e.content.trim())))))))}function Qo(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Vo(e,t){return Jo(e)===Jo(t)}function Jo(e){return e.runId??e.turnId??e.chatId}function Xo(e){return"COMMAND_EXECUTION"===e.kind?x(et,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?x(Te,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x(Yo,{}):x(ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Yo(){return x(Ae,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Zo(e){return e&&"object"==typeof e?e:void 0}function ed(e){const t=e.metadata;return Array.isArray(t?.attachments)?t.attachments.filter(e=>{if(!e||"object"!=typeof e)return!1;const t=e.kind;return"image"===t||"file"===t}):[]}function td({chatId:e,onClose:t,session:n,target:a}){const r=C({enabled:!!a,queryKey:["workspace-file",e,a?.path,a?.line??null],queryFn:()=>async function(e,t,n,a){const r=new URLSearchParams({path:n});return a&&a>0&&r.set("line",String(a)),ia(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(Qa,{open:!!a,onOpenChange:e=>!e&&t(),children:y(Ya,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Za,{className:"gap-1 px-4 pb-2 pt-4",children:[y(tr,{className:"flex min-w-0 items-center gap-2",children:[x(le,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(nr,{className:"truncate",children:ad(r.data)})]}),x("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[x(Ce,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?x("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?x(nd,{file:r.data}):null})]})})}function nd({file:e}){const t=q({}),n=$(()=>(e.content??"").split(/\r?\n/),[e.content]);return R(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?x("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):x(Jr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[x("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:jn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[x("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),x("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:gs(n||" ",e.language)}})]},r)})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function ad(e){return e?[rd(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function rd(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function id({text:e}){const t=L(po);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(Ut,{remarkPlugins:[zt],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?x("button",{className:jn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:jn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:jn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:jn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>x("del",{className:jn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:jn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:jn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:jn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:jn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:jn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:jn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:jn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:jn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:jn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>x("input","checkbox"===t?{className:jn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>x("li",{className:jn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:jn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:jn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:jn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>x("strong",{className:jn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:jn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>x("ul",{className:jn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:od(e)})})}function sd(e){return e.map(e=>"text"===e.type?e.text:"").join("").trim()}function od(e){return dd(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function dd(e){const t=[],n=/<image>\s*([\s\S]*?)\s*<\/image>/gi;let a,r=0;for(;a=n.exec(e);){a.index>r&&t.push({text:e.slice(r,a.index),type:"text"});const i=cd(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"});const s=/^\s*<\/image>/i.exec(e.slice(n.lastIndex));i&&s&&(n.lastIndex+=s[0].length),r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),type:"text"}),t.length?t:[{text:e,type:"text"}]}function cd(e){let t=e.trim();for(;/^<image>/i.test(t);)t=t.replace(/^<image>\s*/i,"").trim();for(;/<\/image>$/i.test(t);)t=t.replace(/\s*<\/image>$/i,"").trim();return!t||/[\u0000-\u001f\u007f]/.test(t)||t.includes("\n")||t.includes("\r")?null:t.startsWith("/")||t.startsWith("data:image/")||/^https?:\/\//i.test(t)?t:null}function ld({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,fileChangeActionDisabled:o,fileChangeActionPending:d,onSteerQueuedMessage:c,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,showProcessingTail:f,session:p}){const g=$(()=>new Set(t??[]),[t]),v=$(()=>Lo(n).filter(e=>!g.has(e.id)),[g,n]),w=$(()=>function(e){const t=[];for(const n of e){if("USER"===n.role){t.push({id:`user:${n.id}`,message:n,type:"user"});continue}const e=zo(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?"codex"===a?.type&&Uo(a.messages.at(-1),n)?a.messages.push(n):t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(v),[v]),b=$(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&Ud(n))return n.id}return null}(v),[v]),[N,I]=_(null);return y(po.Provider,{value:I,children:[w.map(t=>x(fd,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:b,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onSteerQueuedMessage:c,onUndoFileChanges:s,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,session:p},t.id)),f?x(wd,{}):null,x(td,{chatId:e,session:p,target:N,onClose:()=>I(null)})]})}function ud({chatId:e,messages:t,session:n}){const a=$(()=>Bo(t),[t]);return a.pendingRequest?x("div",{className:"grid min-w-0 gap-1.5 overflow-hidden border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5 overflow-hidden",children:x(kd,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function md({message:e}){if(!e)return null;const t=Zo(e.metadata),n=t?.steps??[],a=n.filter(e=>Pd(e.status)).length,r=function(e){const t=e.findIndex(e=>Dd(e.status));if(t>=0)return t;const n=e.findIndex(e=>!Pd(e.status));return n>=0?n:e.length?e.length-1:-1}(n),i=(r>=0?n[r]:void 0)?.step??Rd(t?.explanation)??Rd(e.content)??"Planning...",s=function(e,t){return t.some(e=>Dd(e.status))||Fo(e)?"in progress":t.length?"pending":"planning"}(e,n);return x("section",{"aria-label":"Active plan","aria-live":"polite",className:"border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto w-full min-w-0 max-w-3xl",children:x("div",{className:"min-w-0 overflow-hidden rounded-lg border bg-muted/20 shadow-sm",children:y("div",{className:"grid min-w-0 gap-2 p-3",children:[y("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[y("div",{className:"flex min-w-0 items-start gap-2",children:[x("div",{className:"mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-md bg-background text-muted-foreground",children:x(Ae,{className:"size-4"})}),y("div",{className:"min-w-0",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[x("span",{className:"text-sm font-medium",children:"Plan"}),x(pr,{variant:"secondary",children:s})]}),x("div",{className:"mt-0.5 min-w-0 truncate text-xs text-muted-foreground",children:i})]})]}),n.length?y(pr,{className:"shrink-0",variant:"outline",children:[a,"/",n.length]}):null]}),n.length?x("div",{className:"grid max-h-44 min-w-0 gap-1.5 overflow-y-auto pr-1",children:n.map((e,t)=>{const n=t===r;return y("div",{className:jn("grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 rounded-md px-2 py-1.5 text-xs",n?"border bg-background shadow-xs":"text-muted-foreground"),children:[x(Sd,{highlighted:n,status:e.status}),x("div",{className:"min-w-0 break-words leading-5 text-foreground",children:e.step}),x("span",{className:"shrink-0 rounded bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground",children:(a=e.status,a.trim().replace(/[_-]+/g," ").toLowerCase()||"pending")})]},`${e.step}-${t}`);var a})}):null]})})})})}function hd({disabled:e,messages:t,onSteerQueuedMessage:n,pendingQueueId:a}){return t.length?x("section",{className:"border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5",children:y("div",{className:"min-w-0 overflow-hidden rounded-lg border bg-muted/20 shadow-sm",children:[y("div",{className:"flex min-w-0 items-center justify-between gap-2 border-b px-3 py-2",children:[y("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[x(te,{className:"size-4 shrink-0 text-muted-foreground"}),x("span",{children:"Queued messages"})]}),x(pr,{variant:"outline",children:t.length})]}),x("div",{className:"grid max-h-44 min-w-0 gap-1 overflow-y-auto p-2",children:t.map(t=>{const r=xd(t)?.queueId,i=a===r;return y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 rounded-md bg-background px-2 py-1.5 text-xs",children:[x(te,{className:"size-3.5 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate text-foreground",children:Nd(t)}),x("div",{className:"text-muted-foreground",children:"Queued after the current task"})]}),y(Ma,{className:"h-7 shrink-0 px-2 text-xs",disabled:e||i||!r||!n,size:"sm",type:"button",variant:"outline",onClick:()=>{r&&n?.({message:t,queueId:r})},children:[i?x(Ce,{className:"animate-spin"}):x(G,{}),"Steer"]})]},t.id)})})]})})}):null}function fd({chatId:e,entry:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onSteerQueuedMessage:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,session:f}){return"user"===t.type?x(vd,{message:t.message,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,onSteerQueuedMessage:d}):x(pd,{chatId:e,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,messages:t.messages,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:f})}function pd({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:a,messages:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){const m=$(()=>Do(r),[r]),h=r.reduce((e,t)=>"FAILED"===t.status?"FAILED":"STREAMING"===t.status?"FAILED"===e?e:"STREAMING":"PENDING"===t.status?"FAILED"===e||"STREAMING"===e?e:"PENDING":e,null);return x("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"min-w-0 flex-1 overflow-hidden",children:[y("div",{className:"mb-1 flex items-center gap-2 pl-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:"Codex"}),h?x(gr,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(gd,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:r,latestProposedPlanMessageId:a,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u},r.id))})]})})}function gd({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"toolBurst"===a.type?x(Od,{messages:a.messages}):"previousActions"===a.type?x(jd,{messages:a.messages}):"fileChanges"===a.type?x(go,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(kd,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,latestProposedPlanMessageId:r,message:a.message,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function vd({message:e,onSteerQueuedMessage:t,queuedMessageActionDisabled:n,queuedMessageActionPendingId:a}){const r=ed(e),i=xd(e),s=$(()=>dd(e.content),[e.content]),o=sd(s),d=$(()=>function(e,t){const n=[],a=new Set,r=e=>{a.has(e.src)||(a.add(e.src),n.push(e))};return e.forEach((e,t)=>{"image"===e.type&&r({id:`inline-image:${t}:${e.src}`,name:"Attached image",src:e.src})}),t.forEach(e=>{"image"===e.kind&&r({id:e.id,name:e.name,src:e.url})}),n}(s,r),[r,s]),c=r.filter(e=>"file"===e.kind),[l,u]=_(null),m=o||c.length;return y("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:[y("div",{className:"flex min-w-0 max-w-[84%] flex-col items-end gap-2 overflow-hidden",children:[d.length?x("div",{className:"flex max-w-full flex-wrap justify-end gap-1.5",children:d.map(e=>x("button",{className:"size-16 overflow-hidden rounded-lg border bg-muted outline-none ring-offset-background transition-opacity hover:opacity-90 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",title:e.name,type:"button",onClick:()=>u(e),children:x("img",{alt:e.name,className:"size-full object-cover",loading:"lazy",src:e.src})},e.id))}):null,m?y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border border-border bg-card px-3 py-2 text-sm leading-6 text-card-foreground",children:[y("div",{className:"mb-1 flex min-w-0 items-center justify-between gap-2 text-muted-foreground",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(rt,{className:"size-3.5 opacity-80"}),x("span",{className:"text-xs font-medium",children:"You"})]}),i?x(pr,{className:"shrink-0",variant:i.badgeVariant,children:i.label}):null]}),o?x("div",{className:"whitespace-pre-wrap break-words",children:o}):null,c.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:c.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border bg-muted/35 px-2 py-1 text-xs text-muted-foreground",children:[x(le,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:e.path})]},e.id))}):null,i?x(bd,{delivery:i,disabled:n,pending:a===i.queueId,onSteerQueuedMessage:i.queueId?()=>t?.({message:e,queueId:i.queueId}):void 0}):null]}):null]}),x(Qa,{open:!!l,onOpenChange:e=>{e||u(null)},children:y(Ya,{className:"flex h-[min(90vh,900px)] w-[min(92vw,1000px)] max-w-none flex-col overflow-hidden p-0",children:[y(Za,{className:"sr-only",children:[x(tr,{children:l?.name??"Image preview"}),x(nr,{children:"Full size image preview."})]}),l?x("div",{className:"flex min-h-0 flex-1 items-center justify-center bg-black p-2",children:x("img",{alt:l.name,className:"max-h-full max-w-full object-contain",src:l.src})}):null]})})]})}function wd(){return x("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"flex min-w-0 items-center gap-2 rounded-md px-1 py-2 text-xs text-muted-foreground",children:[x(Ce,{className:"size-3.5 animate-spin"}),x("span",{children:"Codex is processing"})]})})}function bd({delivery:e,disabled:t,onSteerQueuedMessage:n,pending:a}){const r=e.canSteer&&!!n&&!t&&!a;return y("div",{className:"mt-2 flex min-w-0 flex-wrap items-center justify-between gap-2 border-t pt-2 text-xs text-muted-foreground",children:[x("span",{className:"min-w-0 break-words leading-5",children:e.detail}),e.canSteer?y(Ma,{className:"h-7 shrink-0 px-2 text-xs",disabled:!r,size:"sm",type:"button",variant:"outline",onClick:n,children:[a?x(Ce,{className:"animate-spin"}):x(G,{}),"Steer"]}):null]})}function xd(e){const t=Zo(e.metadata),n=Id(t?.delivery),a=Id(t?.queueStatus),r=Id(t?.queueId),i=Id(t?.error);if("queue"===n||r){const e=a??"queued";return"failed"===e?{badgeVariant:"destructive",canSteer:!1,detail:i?`Queue failed: ${i}`:"Queued message failed.",label:"failed",queueId:r}:"running"===e?{badgeVariant:"secondary",canSteer:!1,detail:"Queued message is now running.",label:"running",queueId:r}:"steered"===e||"steer"===n?{badgeVariant:"secondary",canSteer:!1,detail:"Steered into the active task.",label:"steered",queueId:r}:{badgeVariant:"outline",canSteer:!!r,detail:"Queued after the current task.",label:"queued",queueId:r}}return"steer"===n?{badgeVariant:"secondary",canSteer:!1,detail:"Steered into the active task.",label:"steered"}:null}function yd(e){return"USER"===e.role&&!0===xd(e)?.canSteer}function Nd(e){const t=sd(dd(e.content)).trim();if(t)return t.length>160?`${t.slice(0,160)}...`:t;const n=ed(e);return n.length?`${n.length} ${1===n.length?"attachment":"attachments"}`:"Queued message"}function Id(e){return"string"==typeof e?e:void 0}function kd({chatId:e,compact:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,onReviewFileChanges:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:m}){switch(i.kind){case"CHAT":return i.content.trim()?x(Ed,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(Ad,{}):null;case"THINKING":return x(Cd,{message:i});case"PLAN":return x(Td,{metadata:Zo(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(zd,{metadata:Zo(i.metadata)});case"FILE_CHANGE":return x(go,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(Hd,{chatId:e,compact:t,message:i,metadata:Zo(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(Kd,{chatId:e,compact:t,message:i,metadata:Zo(i.metadata),session:m});case"ERROR":return x(ec,{metadata:Zo(i.metadata),text:i.content});default:return x(tc,{text:i.content})}}function Ad(){return x("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>x("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function Cd({message:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border border-dashed bg-muted/20 text-sm",open:"STREAMING"===e.status,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),x("span",{children:"Reasoning"})]}),e.content?x("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function Ed({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Ud(t),o="envelope"===s?.source?s.surroundingText:t.content,d=!!s&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"grid min-w-0 gap-2",children:[o.trim()?x(id,{text:o}):null,s?x($d,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Td({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Ud(t),c=(d?.body??t.content).trim(),l=!!d&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ae,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x(id,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(tc,{text:"Planning..."}),o.length?x("div",{className:"mt-3 grid min-w-0 gap-2",children:o.map((e,t)=>y("div",{className:"flex items-start gap-2",children:[x(pr,{variant:"completed"===e.status?"default":"secondary",children:e.status}),x("div",{className:"min-w-0 flex-1",children:e.step})]},`${e.step}-${t}`))}):null,l&&d?x(qd,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function Md(e){if("SYSTEM"!==e.role||"PLAN"!==e.kind)return!1;if("FAILED"===e.status||Ko(e))return!1;const t=Zo(e.metadata);if("progress"!==t?.presentation)return!1;const n=t.steps??[];return(!n.length||!n.every(e=>Pd(e.status)))&&(n.length>0||Fo(e)||!!Rd(t.explanation)||!!Rd(e.content))}function Sd({highlighted:e,status:t}){return Pd(t)?x(W,{className:"mt-0.5 size-3.5 text-primary"}):Dd(t)?x(Ce,{className:"mt-0.5 size-3.5 animate-spin text-muted-foreground"}):x("span",{className:jn("mt-1.5 size-2 rounded-full",e?"bg-primary":"bg-muted-foreground/35")})}function Pd(e){return["complete","completed","done","success","succeeded"].includes(Ld(e))}function Dd(e){return["active","in_progress","running","started","streaming","working"].includes(Ld(e))}function Ld(e){return e.trim().toLowerCase().replace(/[\s-]+/g,"_")}function Rd(e){const t=e?.trim();return t?["...","planning..."].includes(t.toLowerCase())?null:t:null}function $d({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:s}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ae,{className:"size-4"}),"Proposed plan"]}),x(id,{text:i}),s?x(qd,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function qd({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=_(""),[d,c]=_(!1),l=e||r,u=!!a&&s.trim().length>0&&!l;return y("div",{className:"mt-3 flex min-w-0 flex-wrap items-center gap-2 border-t pt-3",children:[y(Ma,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ce,{className:"animate-spin"}):x(G,{}),"Implement plan"]}),y(Qa,{open:d,onOpenChange:c,children:[y(Va,{render:x(Ma,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(ze,{}),"Tell Codex what to change"]}),y(Ya,{children:[y(Za,{children:[x(tr,{children:"Tell Codex What To Change"}),x(nr,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[x(hr,{className:"min-h-32 resize-y",placeholder:"Change the plan to...",value:s,onChange:e=>o(e.target.value)}),y("div",{className:"flex justify-end gap-2",children:[x(Ma,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(Ma,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ce,{className:"animate-spin"}):x(ze,{}),"Send changes"]})]})]})]})]})]})}var _d=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Ud(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=_d.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(_d,"").trim()}:"PLAN"!==e.kind||"result"!==Zo(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function zd({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),x("code",{className:"min-w-0 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:e?.command??"command"})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(pr,{variant:Gd(e),children:Bd(e)}),"number"==typeof e?.exitCode?x(pr,{variant:0===e.exitCode?"secondary":"destructive",children:e.exitCode}):null]})]}),y("div",{className:"min-w-0 max-w-full overflow-hidden border-t px-3 py-2",children:[e?.cwd?x("div",{className:"mb-2 truncate text-xs text-muted-foreground",children:e.cwd}):null,x("pre",{className:"max-h-64 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e?.output||"(no output)"})]})]})}function Od({messages:e}){const[t,n]=_(!1),a=[...e].reverse().find(e=>"STREAMING"===e.status||"PENDING"===e.status),r=t?e:function(e){const t=new Set;return e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0))}([...e.slice(0,ac),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=jo(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(J,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(pr,{variant:"secondary",children:s.toLowerCase()})]}),y("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:[r.map(e=>x(Fd,{message:e},e.id)),i>0?y(Ma,{className:"mt-1 justify-start px-2 text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:e=>{e.preventDefault(),n(!0)},children:["+",i," commands/actions"]}):null]})]})}function jd({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(J,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(et,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous"," ",1===e.length?"action":"actions"]})]}),x(pr,{variant:"secondary",children:"collapsed"})]}),x("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:e.map(e=>x(Fd,{message:e},e.id))})]})}function Fd({message:e}){const t=Zo(e.metadata),n=Zo(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(Zo(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===Zo(t)?.requestKind?"Permission request":"Approval request":"USER_INPUT_PROMPT"===e.kind?"Input request":"CHAT"===e.kind?"Assistant draft":e.kind.toLowerCase().replaceAll("_"," ")}(e,t),r="COMMAND_EXECUTION"===e.kind?n?.output||n?.cwd:e.content.trim();return y("div",{className:"grid min-w-0 max-w-full grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 overflow-hidden rounded-md bg-muted/45 px-2 py-1.5",children:[Xo(e),y("div",{className:"min-w-0",children:[x("div",{className:"truncate text-xs font-medium",children:a}),r?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:r}):null]}),x(pr,{variant:"secondary",children:e.status.toLowerCase()})]})}function Bd(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function Gd(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function Hd({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=nc(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(Wd,{icon:x(Te,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:Qd(a)}):y("div",{className:jn("min-w-0 max-w-full overflow-hidden rounded-md border bg-muted/35 text-sm text-foreground",t?"p-2":"p-3"),children:[y("div",{className:jn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(Te,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:jn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?x("code",{className:"block min-w-0 max-w-full overflow-x-auto rounded border bg-background px-2 py-1 font-mono text-xs",children:a.command}):null,x("div",{className:jn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(pr,{variant:"secondary",children:[x(W,{className:"size-3"}),"resolved"]}):y(b,{children:[y(Ma,{disabled:s.isPending,size:"sm",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[s.isPending?x(Ce,{className:"animate-spin"}):x(W,{}),"Accept"]}),x(Ma,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"session",permissions:!0}}:{decision:"acceptForSession",kind:"approval"}),children:"Accept for session"}),x(Ma,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function Kd({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=_({}),[o,d]=_(0),c=nc(e,n,r),l=a?.questions?.length?a.questions:[{id:"answer",question:a?.message??"Answer"}],u="resolved"===a?.status||"COMPLETED"===n.status,m=Math.min(o,Math.max(l.length-1,0)),h=l[m],f=!!h&&Zd(h,i[h.id]).length>0,p=l.every(e=>Zd(e,i[e.id]).length>0),g=m>=l.length-1,v=()=>d(e=>Math.min(e+1,l.length-1));if(u||"expired"===a?.status)return x(Wd,{icon:x(W,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:Vd(a)});return y("div",{className:jn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:jn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[x("div",{className:"min-w-0 font-medium",children:t?"Input needed":"Codex needs input"}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(Ma,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(B,{})}),y(pr,{variant:"secondary",children:[m+1," / ",l.length]}),x(Ma,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(G,{})}),u?x(pr,{variant:"secondary",children:"resolved"}):null]})]}),h?x(Xd,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??Jd,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:jn("flex justify-end",t?"mt-2":"mt-4"),children:y(Ma,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:Yd(l,i)}):O.error("Answer every question before submitting.")},children:[c.isPending?x(Ce,{className:"animate-spin"}):x(W,{}),"Submit"]})}):null]})}function Wd({icon:e,status:t,title:n,value:a}){return y("div",{className:"grid min-w-0 max-w-full gap-1 overflow-hidden rounded-md border bg-muted/25 px-2.5 py-2 text-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"text-muted-foreground",children:e}),x("span",{className:"min-w-0 flex-1 font-medium",children:n}),t?x(pr,{variant:"secondary",children:t}):null]}),a?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:a}):null]})}function Qd(e){if(!e)return"No decision details.";const t=e.decision??e.result;return void 0===t?"expired"===e.status?"The request expired before a decision was sent.":"Decision sent.":`Decision: ${function(e){return"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):null===e?"none":JSON.stringify(e)}(t)}`}function Vd(e){if(!e)return"No answer details.";if("expired"===e.status)return"The request expired before an answer was sent.";const t=function(e){const t=e.result;if(!t||"object"!=typeof t||Array.isArray(t))return[];const n=t.answers;return!n||"object"!=typeof n||Array.isArray(n)?[]:Object.entries(n).map(([t,n])=>{const a=e.questions?.find(e=>e.id===t),r=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return[];const t=e.answers;return Array.isArray(t)?t.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(Boolean):[]}(n);return r.length?`${a?.header??a?.question??t}: ${r.join(", ")}`:null}).filter(e=>!!e)}(e);return t.length?t.join("; "):"Answer sent."}var Jd={other:"",values:[]};function Xd({compact:e=!1,disabled:t,onChange:n,onAutoAdvance:a,question:r,value:i}){const s=r.options??[],o=function(e){if(!e.options?.length)return;return e.selectionLimit&&e.selectionLimit>0?e.selectionLimit:1}(r),d=i.values??[],c=i.other??"",l=e=>n({other:c,values:d,...e});return y("div",{className:"grid min-w-0 max-w-full gap-2 overflow-hidden",children:[y("div",{className:"grid min-w-0 gap-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?x("span",{className:jn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:jn("grid min-w-0",e?"gap-1":"gap-2"),children:s.map(n=>{const r=d.includes(n.label),i="number"==typeof o&&o>1&&d.length>=o;return y(Ma,{"aria-pressed":r,className:jn("h-auto w-full min-w-0 justify-start overflow-hidden whitespace-normal text-left",e?"min-h-9 px-2.5 py-1.5":"min-h-12 px-3 py-2"),disabled:t||!r&&i,size:"default",type:"button",variant:r?"default":"outline",onClick:()=>(e=>{if(!t){if(1===o){const t=d.includes(e);return l({values:t?[]:[e]}),void(t||a?.())}d.includes(e)?l({values:d.filter(t=>t!==e)}):"number"==typeof o&&d.length>=o||l({values:[...d,e]})}})(n.label),children:[y("span",{className:jn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[x("span",{children:n.label}),n.description?x("span",{className:jn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(W,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(Sa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(hr,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(hr,{className:e?"min-h-12":"min-h-16",disabled:t,placeholder:"Other answer",value:c,onChange:e=>l({other:e.target.value})}):null,"number"==typeof o&&o>1?y("span",{className:"text-xs text-muted-foreground",children:["Select up to ",o,"."]}):null]})}function Yd(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:Zd(e,t[e.id])}]))}}function Zd(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function ec({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[x(j,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function tc({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function nc(e,t,n){const a=E();return k({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return ia(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>O.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>da(e,t))}})}var ac=5;function rc(e,t){if(!e?.data.length)return t;const n=[...t.data];for(const r of e.data)ic(r,n)||n.push(r);const a=Math.max(0,e.nextCursor??0,t.nextCursor??0,...n.map(e=>e.sequence));return{data:n.sort(oc),nextCursor:a||null}}function ic(e,t){return t.some(t=>t.id===e.id||function(e,t){if(e.chatId!==t.chatId||e.role!==t.role||e.kind!==t.kind)return!1;if(e.requestId&&t.requestId)return e.requestId===t.requestId;if(e.itemId&&t.itemId)return e.itemId===t.itemId;if("CHAT"!==e.kind)return!1;const n=sc(e.content),a=sc(t.content);return!(!n||!a)&&(n===a||function(e){return"PENDING"===e.status||"STREAMING"===e.status}(t)&&n.includes(a))}(t,e))}function sc(e){return e.replace(/\s+/g," ").trim()}function oc(e,t){return e.sequence-t.sequence||new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()||e.id.localeCompare(t.id)}function dc(){const{chatId:e}=g(),{accounts:t,accountRateLimitFetching:n,accountRateLimitSnapshots:a,accountUsageSummaries:i,connectedAccounts:s,openWorkspacePicker:o,session:d,setActiveProjectPath:c,setTerminalOpen:l,terminalCount:u,terminalOpen:m,terminalSocket:h,terminalSocketConnected:f}=Ws(),[p,v]=_(""),[w,N]=_([]),[I,A]=_(null),T=q(null),M=q(null),S=q(!0),P=E(),L=$(()=>["chat",e],[e]),U=$(()=>["messages",e],[e]);R(()=>{A(null),N([])},[e]);const z=C({enabled:!!e,queryKey:L,queryFn:()=>ta(d,e)}),j=C({enabled:!!e,queryKey:U,queryFn:()=>aa(d,e,0),structuralSharing:(e,t)=>rc(e,t)}),F=C({enabled:!!e&&!I,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(d,e),retry:!1,staleTime:3e4});R(()=>{F.data?.usage&&!I&&A(F.data.usage)},[F.data?.usage,I]);const B=$(()=>j.data?.data??[],[j.data]),G=z.data,H=t.find(e=>e.id===G?.accountId),K="RUNNING"===G?.status,W=$(()=>Bo(B),[B]),Q=$(()=>function(e,t){if(!t)return null;const n=Ro(e).filter(e=>!Ho(e)).sort((e,t)=>e.sequence-t.sequence);for(let a=n.length-1;a>=0;a-=1){const e=n[a];if(Md(e))return e}return null}(B,K),[K,B]),V=$(()=>function(e){return Lo(e).filter(yd)}(B),[B]),J=!(m&&G?.workingDirectory),X=$(()=>[W.pendingRequest?.id,J?Q?.id:void 0,...J?V.map(e=>e.id):[]].filter(e=>!!e),[J,V,Q?.id,W.pendingRequest?.id]),Y=$(()=>function(e){if(!e)return"";const t=Zo(e.metadata),n=(t?.steps??[]).map(e=>`${e.status}:${e.step}`).join("|");return[e.id,e.status,e.content.length,t?.explanation?.length??0,n].join(":")}(Q),[Q]),Z=$(()=>B.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[B]);R(()=>(c(G?.workingDirectory?.trim()??""),()=>c("")),[G?.workingDirectory,c]);const ee=D(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),te=D((e="auto")=>{const t=T.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),ne=C({enabled:!!H?.id&&"CONNECTED"===H.status,queryKey:["models",H?.id],queryFn:()=>Zn(d,H.id),staleTime:3e5});R(()=>{os(ne.error)&&P.invalidateQueries({queryKey:["accounts"]})},[ne.error,P]);const ae=H?.id?a[H.id]:void 0,re=!!H?.id&&!!n[H.id],ie=k({mutationFn:t=>na(d,e,{accountId:t.accountId}),onError:e=>O.error(ds(e)),onSuccess:(e,t)=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&O.success("Chat account updated.")}}),se=k({mutationFn:t=>na(d,e,t),onError:e=>O.error(ds(e)),onSuccess:e=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]})}}),oe=k({mutationFn:({accountId:e,settings:t})=>Xn(d,e,t),onError:e=>O.error(ds(e)),onSuccess:e=>{P.setQueryData(["accounts"],t=>is(t,e))}}),de=k({mutationFn:t=>ra(d,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??p).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>O.error(ds(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(v(""),N([])),P.setQueryData(U,t=>as(t,rs(e))),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]})}}),ce=k({mutationFn:()=>async function(e,t){return ia(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(d,e),onError:e=>O.error(ds(e)),onSuccess:()=>{O.message("Stop requested.")}}),le=k({mutationFn:t=>async function(e,t,n){return ia(e.serverUrl,`/api/chats/${t}/queued/${n}/steer`,{method:"POST",token:e.token})}(d,e,t.queueId),onError:e=>O.error(ds(e)),onSuccess:e=>{P.setQueryData(U,t=>da(t,e)),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]})}}),ue=$(()=>Bi(s,a),[a,s]),me=$(()=>function(e,t,n,a){return e?.autoRotateAccount&&"RUNNING"!==e.status&&n&&n.id!==e.accountId?Gi(a[n.id])<0?null:!t||"CONNECTED"!==t.status||Gi(a[t.id])<0?n:null:null}(G,H,ue,a),[a,ue,H,G])?.id;R(()=>{!me||ie.isPending||de.isPending||ie.mutate({accountId:me,notify:!1})},[me,de.isPending,ie.isPending]);const he=D(e=>{e?.length&&Xs(e).then(e=>{N(t=>[...t,...e])}).catch(e=>O.error(ds(e)))},[]),fe=D(()=>{o({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{N(t=>[...t,eo(e)])}})},[z.data?.workingDirectory,o]),pe=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:"Implement the latest approved plan from the most recent proposed plan in this thread.",metadata:{action:"implementPlan",planMessageId:e.message.id,source:"proposedPlan"}})},[de]),ge=D(e=>{var t;de.mutate({clearComposer:!1,collaborationMode:"plan",content:(t=e.feedback,["Revise the latest proposed plan from this thread using the following requested changes.","Do not implement yet. Return an updated proposed plan.","",t].join("\n")),metadata:{action:"revisePlan",planMessageId:e.message.id,source:"proposedPlan"}})},[de]),ve=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[de]),we=D(e=>{de.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[de]);if(R(()=>{if(!e)return;return function(e,t,n){let a=!1;const r=yt(e.serverUrl||window.location.origin,{auth:{token:e.token},path:"/socket.io",reconnection:!0,transports:["websocket"]});return r.on("connect",()=>{r.emit("chat:join",t,e=>{a||(e?.ok?n.onOpen?.():n.onError?.(new Error(e?.message??"Unable to join chat stream.")))})}),r.on("chat:event",e=>{a||e.chatId!==t||n.onEvent(e.type,e.payload)}),r.on("disconnect",()=>{a||n.onClose?.()}),r.on("connect_error",e=>{a||n.onError?.(e)}),()=>{a=!0,r.connected&&r.emit("chat:leave",t),r.disconnect()}}(d,e,{onError:e=>O.error(ds(e)),onEvent:(e,n)=>{"chat.updated"!==e?"context.updated"!==e?(P.setQueryData(U,t=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return da(e,n);if("message.failed"===t)return da(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(t,e,n)),"message.completed"!==e&&"message.failed"!==e||(P.invalidateQueries({queryKey:U}),P.invalidateQueries({queryKey:L}),P.invalidateQueries({queryKey:["chats"]}))):A(n):t(n)},onOpen:()=>{aa(d,e,0).then(e=>{P.setQueryData(U,t=>rc(t,e))}).catch(e=>O.error(ds(e))),ta(d,e).then(t).catch(e=>O.error(ds(e)))}});function t(e){P.setQueryData(L,e),P.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,L,U,P,d]),R(()=>{S.current=!0;const e=requestAnimationFrame(()=>te("auto"));return()=>cancelAnimationFrame(e)},[e,te]),R(()=>{if(!S.current)return;let e=0;const t=requestAnimationFrame(()=>{te("auto"),e=requestAnimationFrame(()=>te("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[Y,Z,te]),!e)return x(r,{replace:!0,to:"/"});if(z.isLoading||j.isLoading)return x("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden bg-background",children:x(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(z.error)return x("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:z.error.message})]})});const be=G,xe=H,ye=ne.data?.data??[],Ne=!!be&&!K&&s.length>0,Ie=Fi(ye,be?.model),ke=Ie?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],Ae=be?.reasoningEffort??Ie?.defaultReasoningEffort??null,Ee=Ie?.additionalSpeedTiers??[],Te=p.trim().length>0||w.length>0,Me=ss(p,be?.workingDirectory??"",xe,w);return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-sidebar",children:[y("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-b-xl bg-background",children:[x(Jr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:T,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{S.current=ee(e.currentTarget)}},children:x("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:B.length?x(ld,{chatId:e,fileChangeActionDisabled:K,fileChangeActionPending:de.isPending,hiddenMessageIds:X,messages:B,onImplementPlan:pe,onRevisePlan:ge,onReviewFileChanges:ve,onSteerQueuedMessage:e=>le.mutate(e),onUndoFileChanges:we,planActionDisabled:K,planActionPending:de.isPending,queuedMessageActionDisabled:!K||le.isPending,queuedMessageActionPendingId:le.variables?.queueId??null,session:d,showProcessingTail:K&&!W.pendingRequest}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),x("div",{className:jn("min-w-0 border-t bg-background",m&&be?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:m&&be?.workingDirectory?x("div",{className:"p-2",children:x("div",{className:"mx-auto max-w-5xl",children:x(Os,{onClosePanel:()=>l(!1),projectPath:be.workingDirectory,socket:h,socketConnected:f})})}):y(b,{children:[x(md,{message:Q}),x(hd,{disabled:!K||le.isPending,messages:V,pendingQueueId:le.variables?.queueId??null,onSteerQueuedMessage:e=>le.mutate(e)}),x(ud,{chatId:e,messages:B,session:d}),x("div",{className:"p-2",children:y("div",{className:"mx-auto grid min-w-0 max-w-3xl gap-2 overflow-hidden rounded-xl border bg-background p-2 shadow-sm",children:[y("div",{className:"relative min-w-0",children:[x(ro,{visible:"plan"===(be?.collaborationMode??"default")}),x(hr,{className:jn("max-h-32 min-h-12 bg-transparent! text-xs resize-none border-0 px-1 shadow-none focus-visible:ring-0","plan"===(be?.collaborationMode??"default")&&"pr-24"),placeholder:be?.workingDirectory?xe?"Message Codex":"Choose an account first":"Choose a directory first",value:p,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Me&&de.mutate({attachments:Js(w),clearComposer:!0,delivery:K?"queue":void 0}))},onPaste:e=>{const t=Ys(e.clipboardData);t.length&&he(t)}})]}),x(to,{attachments:w,imageInputRef:M,onAttachImages:he,onRemove:e=>N(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(io,{attachmentDisabled:de.isPending,disabled:!be,modeDisabled:K,mode:be?.collaborationMode??"default",onAttachFile:fe,onAttachImage:()=>M.current?.click(),pending:se.isPending,onSelectMode:e=>se.mutate({collaborationMode:e})}),x(Vs,{account:xe,autoRotate:be?.autoRotateAccount??!1,autoRotateDisabled:!be||se.isPending,connectedAccounts:s,disabled:!be||!s.length,pending:ie.isPending,selectedAccountId:be?.accountId??"",selectionDisabled:!Ne,usageSummaries:i,onAutoRotateChange:e=>se.mutate({autoRotateAccount:e}),onSelect:e=>ie.mutate({accountId:e})}),x(co,{activeReasoningEffort:Ae,disabled:!be||K||!xe,modelOptions:ye,modelValue:be?.model??"",pending:ne.isFetching||se.isPending,reasoningOptions:ke,reasoningValue:be?.reasoningEffort??"",selectedModel:Ie,serviceTierOptions:Ee,serviceTierValue:be?.serviceTier??"",onSelectModel:e=>{be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),se.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:be.model??null,defaultReasoningEffort:t,defaultServiceTier:be.serviceTier??null}}),se.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultModel:be.model??null,defaultReasoningEffort:be.reasoningEffort??null,defaultServiceTier:t}}),se.mutate({serviceTier:t})}}),x(so,{disabled:!be,mode:be?.permissionMode??"default",pending:se.isPending,onSelectMode:e=>{be?.accountId&&oe.mutate({accountId:be.accountId,settings:{defaultPermissionMode:e}}),se.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(no,{usage:I}),x(ao,{pending:re,snapshot:ae}),x(oo,{loading:de.isPending,running:K,hasDraft:Te,sendDisabled:!Me,stopPending:ce.isPending,onSend:()=>de.mutate({attachments:Js(w),clearComposer:!0,delivery:K?"queue":void 0}),steerDisabled:!K||de.isPending||!Me,onSteer:()=>de.mutate({attachments:Js(w),clearComposer:!0,delivery:"steer"}),onStop:()=>ce.mutate()})]})]})]})})]})})]}),be?y("div",{className:"hidden min-h-9 shrink-0 items-center justify-end gap-1 bg-sidebar px-3 py-1 md:-mb-2 md:flex",children:[x(Ds,{active:m,className:jn("hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",m?"text-sidebar-accent-foreground":"text-sidebar-foreground/75"),count:u,disabled:!be.workingDirectory?.trim(),onToggle:()=>l(!m)}),x(As,{chatId:be.id,className:"text-sidebar-foreground/75 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground aria-expanded:bg-sidebar-accent aria-expanded:text-sidebar-accent-foreground",disabled:K,session:d})]}):null]})}var cc=qn({default:()=>lc}),lc=c(function(){return x(dc,{})}),uc=class extends Error{status;constructor(e,t){super(t),this.status=e}};function mc(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function hc(e){throw new uc(405,`${e} is not supported for this route.`)}function fc(e,t){t.includes(e.method)||hc(e.method)}async function pc(e){const t=await e.text();if(!t.trim())return{};try{const e=JSON.parse(t);if(!e||"object"!=typeof e||Array.isArray(e))throw new uc(400,"JSON body must be an object.");return e}catch(n){if(n instanceof uc)throw n;throw new uc(400,"Request body must be valid JSON.")}}function gc(e,t,n={}){if(null==e){if(n.required)throw new uc(400,`${t} is required.`);return}if("string"!=typeof e)throw new uc(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new uc(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new uc(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function vc(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new uc(400,`${t} must be an array of strings.`);return e}}function wc(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new uc(400,`${t} must be a boolean.`);return e}}function bc(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new uc(400,`${t} must be an object.`);return e}}function xc(e,t,n){const a=e.searchParams.get(t);if(null===a||""===a.trim())return n;const r=Number(a);if(!Number.isInteger(r))throw new uc(400,`${t} must be an integer.`);return r}function yc(e,t){const n=e[t];if(!n)throw new uc(400,`${t} is required.`);return n}function Nc(e){return e instanceof uc?mc({message:e.message},{status:e.status}):mc({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var Ic=qn({loader:()=>kc});function kc({request:e}){try{return fc(e,["GET"]),mc({status:"ok",service:"xedoc"})}catch(t){return Nc(t)}}var Ac,Cc=globalThis,Ec=wn("~"===(Ac=process.env.CODEX_WORKSPACE_ROOT?.trim()||hn())?hn():Ac.startsWith("~/")?wn(hn(),Ac.slice(2)):xn(Ac),".xedoc","xedoc.db"),Tc=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Ec);process.env.DATABASE_URL=Tc,tn(pn(Ec),{recursive:!0,mode:448});var Mc=Cc.prisma??new Wt({datasources:{db:{url:Tc}}});"production"!==process.env.NODE_ENV&&(Cc.prisma=Mc);var Sc="server",Pc="scrypt";async function Dc(e){!function(e){if(e.length<8)throw new uc(400,"Server password must be at least 8 characters.")}(e);const t=await _c()??await async function(e){try{return await Mc.serverAuth.create({data:{id:Sc,passwordHash:Uc(e),tokenSecret:zc(32)}})}catch(t){if(function(e){return e instanceof Kt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new uc(409,"Server password was already configured. Sign in with the configured password.");throw t}}(e);if(!function(e,t){const[n,a,r,i]=t.split(":");return!(n!==Pc||!a||!r||void 0!==i)&&Oc(Gt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new uc(401,"Invalid server password.");return{token:Rc({authHash:$c(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Lc(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new uc(401,"Invalid auth token.");if(!Oc(a,qc(n,t.tokenSecret)))throw new uc(401,"Invalid auth token.");const i=function(e){try{const t=JSON.parse(Buffer.from(e,"base64url").toString("utf8"));if("string"!=typeof t.authHash||"string"!=typeof t.issuedAt)throw new Error("Invalid payload.");return{authHash:t.authHash,issuedAt:t.issuedAt}}catch{throw new uc(401,"Invalid auth token.")}}(n);if(i.authHash!==$c(t.passwordHash))throw new uc(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new uc(401,"Missing auth token.");return n}(e),await async function(){const e=await _c();if(!e)throw new uc(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Rc(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${qc(n,t)}`}function $c(e){return t=e,Ot("sha256").update(t).digest("hex");var t}function qc(e,t){return jt("sha256",t).update(e).digest("base64url")}async function _c(){return Mc.serverAuth.findUnique({where:{id:Sc}})}function Uc(e){const t=zc(16);return`${Pc}:${t}:${Gt(e,t,64).toString("base64url")}`}function zc(e){return Ft(e).toString("base64url")}function Oc(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&Ht(n,a)}var jc=qn({loader:()=>Fc});async function Fc({request:e}){try{return fc(e,["GET"]),mc(await async function(){return{passwordConfigured:!!(await _c())}}())}catch(t){return Nc(t)}}var Bc=qn({action:()=>Gc});async function Gc({request:e}){try{return fc(e,["POST"]),mc(await Dc(gc((await pc(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return Nc(t)}}var Hc=qn({loader:()=>Kc});async function Kc({request:e}){try{return fc(e,["GET"]),mc(await async function(e){return{authenticated:!0,issuedAt:(await Lc(e)).issuedAt}}(e))}catch(t){return Nc(t)}}function Wc(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Qc(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Vc(e){const t=Wc(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var Jc=class{config;child;initializePromise;stdoutBuffer="";pending=new Map;eventHandlers=new Set;serverRequestHandlers=new Set;constructor(e){this.config=e}request(e,t,n=3e4){return this.ensureStarted().then(()=>this.requestStarted(e,t,n))}waitForEvent(e,t=12e4,n){return new Promise((a,r)=>{if(n?.aborted)return void r(new Error("Stopped waiting for Codex event."));const i=()=>{clearTimeout(o),n?.removeEventListener("abort",s),d()},s=()=>{i(),r(new Error("Stopped waiting for Codex event."))},o=setTimeout(()=>{i(),r(new Error("Timed out waiting for Codex event."))},t),d=this.onEvent(t=>{e(t)&&(i(),a(t))});n?.addEventListener("abort",s,{once:!0})})}sendNotification(e,t){this.child?.stdin.write(`${JSON.stringify({method:e,params:t})}\n`)}respondToServerRequest(e,t){this.child?.stdin.write(`${JSON.stringify({id:e,result:t})}\n`)}rejectServerRequest(e,t,n){this.child?.stdin.write(`${JSON.stringify({id:e,error:{code:t,message:n}})}\n`)}onEvent(e){return this.eventHandlers.add(e),()=>this.eventHandlers.delete(e)}onServerRequest(e){return this.serverRequestHandlers.add(e),()=>this.serverRequestHandlers.delete(e)}shutdown(){for(const e of this.pending.values())clearTimeout(e.timeout),e.reject(new Error("Codex runtime stopped."));this.pending.clear(),this.child?.kill("SIGTERM"),this.child=void 0}requestStarted(e,t,n=3e4){const a=`xedoc-${Bt()}`,r=JSON.stringify(void 0===t?{id:a,method:e}:{id:a,method:e,params:t});return new Promise((t,i)=>{const s=setTimeout(()=>{this.pending.delete(a),i(new Error(`Codex request timed out: ${e}`))},n);this.pending.set(a,{resolve:t,reject:i,timeout:s}),this.child?.stdin.write(`${r}\n`)})}async ensureStarted(){if(this.initializePromise)return this.initializePromise;const e=function(e){const t=rl(e.accountId);return{command:e.command,args:e.args,codexHome:t,options:{cwd:e.workingDirectory??void 0,env:{...process.env,...e.environment??{},CODEX_HOME:t},stdio:["pipe","pipe","pipe"]}}}(this.config);return ml(e.codexHome),this.child=In(e.command,e.args,e.options),this.child.stdout.on("data",e=>this.handleStdout(e)),this.child.stderr.on("data",e=>{const t=e.toString("utf8").trim();t&&(console.warn(`[codex:${this.config.accountId}] ${t}`),tl(t)&&Zc(this.config.accountId,t))}),this.child.on("error",e=>this.failAll(e)),this.child.on("close",e=>{this.failAll(new Error(`Codex runtime exited with code ${e??"unknown"}.`)),this.child=void 0,this.initializePromise=void 0}),this.initializePromise=this.initialize(),this.initializePromise}async initialize(){await this.requestStarted("initialize",{clientInfo:{name:"xedoc",title:"xedoc",version:"0.1.0"},capabilities:{experimentalApi:!0}}),this.child?.stdin.write(`${JSON.stringify({method:"initialized"})}\n`)}handleStdout(e){this.stdoutBuffer+=e.toString("utf8");const t=this.stdoutBuffer.split("\n");this.stdoutBuffer=t.pop()??"";for(const n of t){const e=n.trim();e&&this.handleLine(e)}}handleLine(e){let t;try{t=JSON.parse(e)}catch{return}const n=function(e){return void 0!==e.id&&null!==e.id&&e.method?"server-request":void 0!==e.id&&null!==e.id?"response":"notification"}(t);if("server-request"===n){if(!this.serverRequestHandlers.size)return void this.rejectServerRequest(t.id,-32601,`Unsupported request method: ${t.method??"unknown"}`);for(const e of this.serverRequestHandlers)e(t);return}if("notification"===n){for(const e of this.eventHandlers)e(t);return}const a=this.pending.get(ll(t.id));if(a){if(clearTimeout(a.timeout),this.pending.delete(ll(t.id)),t.error)return tl(t.error.message)&&Zc(this.config.accountId,t.error.message),void a.reject(new Error(t.error.message??"Codex request failed."));a.resolve(t)}}failAll(e){for(const t of this.pending.values())clearTimeout(t.timeout),t.reject(e);this.pending.clear()}},Xc=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new Jc(e);return this.runtimes.set(e.accountId,n),n}stopRuntime(e){this.runtimes.get(e)?.shutdown(),this.runtimes.delete(e)}shutdown(){for(const e of this.runtimes.values())e.shutdown();this.runtimes.clear()}},Yc=new Set;async function Zc(e,t){Yc.add(e),await Mc.codexAccount.updateMany({where:{id:e},data:{status:"INVALIDATED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:nl(t)}})}function el(e){Yc.delete(e)}function tl(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return t.includes("token_invalidated")||t.includes("authentication token has been invalidated")||t.includes("401")&&t.includes("unauthorized")&&t.includes("invalidated")}function nl(e){const t=(e instanceof Error?e.message:"string"==typeof e?e:"").trim();return t?["Codex authentication token was invalidated. Re-authenticate this account.",t.length>700?`${t.slice(0,700)}...`:t].join("\n"):"Codex authentication token was invalidated. Re-authenticate this account."}async function al(e){return(await Xc.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function rl(e){return wn(ul(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function il(e){const t=rl(e);return ml(t),t}function sl(){return ul(process.env.CODEX_SHARED_CHAT_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function ol(){const e=sl();return tn(e,{recursive:!0,mode:448}),Vt(e,448),e}function dl(){const e=ol(),t=wn(e,"AGENTS.md");return vl(t,384),{codexHome:e,instructionsPath:t}}function cl(){const e=sl();return wn(e,pl(e).filter(e=>/^state_\d+\.sqlite$/i.test(e)).sort((e,t)=>gl(t)-gl(e)).at(0)??"state_5.sqlite")}function ll(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}function ul(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}function ml(e){tn(e,{recursive:!0,mode:448}),Vt(e,448),function(e){const t=ol();if(xn(e)===xn(t))return;(function(e,t){const n=wn(t,"sessions"),a=wn(e,"sessions");if(tn(n,{recursive:!0,mode:448}),xl(a,n))return;Nl(a)&&(yl(a)?.isDirectory()&&wl(a,n),dn(a,Il(a)));un(n,a,"dir")})(e,t),function(e,t){const n=wn(t,"session_index.jsonl"),a=wn(e,"session_index.jsonl");if(vl(n,384),xl(a,n))return;Nl(a)&&(yl(a)?.isFile()&&function(e,t){const n=an(e,"utf8");if(!n.trim())return;const a=an(t,"utf8");Qt(t,`${a&&!a.endsWith("\n")?"\n":""}${n.endsWith("\n")?n:`${n}\n`}`)}(a,n),dn(a,Il(a)));un(n,a,"file")}(e,t),function(e,t){for(const n of function(e,t){const n=new Set([fn(cl())]);for(const a of[t,e])for(const e of pl(a))/^state_\d+\.sqlite$/i.test(e)&&n.add(e);return[...n].flatMap(e=>[e,`${e}-wal`,`${e}-shm`])}(e,t))hl(e,t,n)}(e,t),function(e,t){fl(e,t,"AGENTS.md",!0),fl(e,t,"AGENTS.override.md",!1)}(e,t)}(e)}function hl(e,t,n){const a=wn(t,n),r=wn(e,n);xl(r,a)||(yl(r)?.isFile()&&bl(r,a),n.endsWith("-wal")||n.endsWith("-shm")||vl(a,384),Nl(r)&&dn(r,Il(r)),un(a,r,"file"))}function fl(e,t,n,a){const r=wn(t,n),i=wn(e,n);(a||Nl(r)||Nl(i))&&(vl(r,384),xl(i,r)||(yl(i)?.isFile()&&function(e,t){const n=an(e,"utf8");if(!n.trim())return;const a=an(t,"utf8");if(!a.trim())return Yt(e,t),void Vt(t,384);if(a===n||a.includes(n))return;const r=a.endsWith("\n")?"":"\n",i=n.endsWith("\n")?n:`${n}\n`;Qt(t,`${r}\n\x3c!-- Imported from ${fn(pn(e))}/${fn(e)} during xedoc sharing. --\x3e\n${i}`)}(i,r),Nl(i)&&dn(i,Il(i)),un(r,i,"file")))}function pl(e){try{return rn(e)}catch{return[]}}function gl(e){return Number(/^state_(\d+)\.sqlite$/i.exec(e)?.[1]??0)}function vl(e,t){Jt(nn(e,"a",t)),Vt(e,t)}function wl(e,t){tn(t,{recursive:!0,mode:448});for(const n of rn(e,{withFileTypes:!0})){const a=wn(e,n.name),r=wn(t,n.name);n.isDirectory()?wl(a,r):n.isFile()&&bl(a,r)}}function bl(e,t){Nl(t)||(tn(pn(t),{recursive:!0,mode:448}),Yt(e,t))}function xl(e,t){try{return!!en(e).isSymbolicLink()&&xn(pn(e),sn(e))===xn(t)}catch{return!1}}function yl(e){try{return ln(e)}catch{return null}}function Nl(e){try{return en(e),!0}catch{return!1}}function Il(e){const t=(new Date).toISOString().replace(/[:.]/g,"-");let n=`${e}.pre-shared-${t}`,a=1;for(;Nl(n);)n=`${e}.pre-shared-${t}-${a}`,a+=1;return n}var kl=32768,Al="auth.json",Cl=262144;async function El(){const e=await Mc.codexAccount.findMany({orderBy:{createdAt:"asc"}});return nu(e),function(e){const t=Wl(e);return e.map(e=>ou(e,t.has(e.id)))}(await async function(e){return Promise.all(e.map(async e=>"AUTHENTICATING"===e.status&&Fl(e.id)?(Xc.stopRuntime(e.id),Mc.codexAccount.update({where:{id:e.id},data:_l(e.id)})):e))}(e))}async function Tl(){const e=Ql({required:!0}),t=await async function(e){const t=(await Mc.codexAccount.findMany({orderBy:{createdAt:"asc"}})).flatMap(e=>{const t=Vl(e.id);return t?[{account:e,auth:t}]:[]}),n=t.find(t=>t.auth.fingerprint===e.fingerprint);if(n)return n.account;if(!e.email)return null;const a=t.filter(t=>t.auth.email===e.email);return 1===a.length?a[0].account:null}(e),n=t?await async function(e,t){return Xc.stopRuntime(e.id),Kl(e.id,{authJson:t.authJson}),Mc.codexAccount.update({where:{id:e.id},data:_l(e.id)})}(t,e):await async function(e){const t=await Mc.codexAccount.create({data:{displayName:e.email??"Local Codex account",command:process.env.CODEX_COMMAND??"codex",args:iu(jl()),environment:iu(void 0)}});return Kl(t.id,{authJson:e.authJson}),Mc.codexAccount.update({where:{id:t.id},data:_l(t.id)})}(e);return{imported:1,accounts:[ou(n,!0)],authentications:[{accountId:n.id,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Imported the active local Codex account."}]}}async function Ml(e){const t=await Sl(e);return function(e){const t=Yl();tn(t,{recursive:!0,mode:448}),Vt(t,448);const n=wn(t,Al);mn(n,`${JSON.stringify(e)}\n`,{encoding:"utf8",mode:384}),Vt(n,384)}(function(e){try{const t=Gl(e);if(!Bl(t))throw new uc(409,"Authenticate this xedoc account before making it the active local Codex account.");return t}catch(t){if(t instanceof uc)throw t;throw new uc(409,"Authenticate this xedoc account before making it the active local Codex account.")}}(e)),ou(t,!0)}async function Sl(e){const t=await Mc.codexAccount.findUnique({where:{id:e}});if(!t)throw new uc(404,"Codex account not found.");return ru(t.id),t}async function Pl(){const{codexHome:e,instructionsPath:t}=dl();await au();let n="";try{n=an(t,"utf8")}catch(a){if(!function(e){return!!e&&"object"==typeof e&&"code"in e&&"ENOENT"===e.code}(a))throw a}return{accountId:null,codexHome:e,instructionsPath:t,instructions:n,maxBytes:kl,shared:!0}}async function Dl(e){const t=function(e){if("string"!=typeof e)throw new uc(400,"instructions must be a string.");const t=e.replace(/\r\n?/g,"\n");if(Buffer.byteLength(t,"utf8")>kl)throw new uc(400,"instructions must be 32768 bytes or fewer.");return t}(e.instructions),{codexHome:n,instructionsPath:a}=dl();return await au(),mn(a,t,{encoding:"utf8",mode:384}),Vt(a,384),{accountId:null,codexHome:n,instructionsPath:a,instructions:t,maxBytes:kl,shared:!0}}async function Ll(e,t="browser"){const n=await Sl(e),a="INVALIDATED"===n.status;if(Fl(e)&&!a)return Xc.stopRuntime(e),await Mc.codexAccount.update({where:{id:e},data:_l(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};a&&(Xc.stopRuntime(e),function(e){cn(wn(rl(e),Al),{force:!0})}(e)),await Mc.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const r=zl(n);if(!a){const t=await async function(e){try{return Wc(Wc((await e.request("account/read",{refreshToken:!1})).result)?.account)??null}catch{return null}}(r);if(t)return await Mc.codexAccount.update({where:{id:e},data:_l(e,t)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}}const i=Wc((await r.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt",codexStreamlinedLogin:!0})).result),s="chatgptDeviceCode"===Qc(i?.type)?"device":t,o=function(e,t){return"device"===t?Qc(e?.verificationUrl)??Qc(e?.verification_url)??Qc(e?.authUrl)??Qc(e?.auth_url)??Qc(e?.url)??null:Qc(e?.authUrl)??Qc(e?.auth_url)??Qc(e?.url)??null}(i,s),d=Qc(i?.loginId)??null,c="device"===s?Qc(i?.userCode)??Qc(i?.user_code)??null:null;if(!("device"!==s||o&&c))throw new Error("Codex did not return device login instructions.");const l=o?"AUTHENTICATING":"CONNECTED";return await Mc.codexAccount.update({where:{id:e},data:"CONNECTED"===l?_l(e):{status:l,lastAuthUrl:o,lastAuthMode:s,lastAuthLoginId:d,lastAuthUserCode:c,lastError:null}}),"AUTHENTICATING"===l&&function(e,t,n){ql(t);let a=!1,r=()=>{};const i=()=>{a||(a=!0,c(),Mc.codexAccount.update({where:{id:t},data:_l(t)}))},s=e=>{a||(a=!0,c(),Mc.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:e}}))},o=setInterval(()=>{Fl(t)?i():Ol(t,e).then(e=>{e&&(a=!0,c())}).catch(()=>{})},1500),d=setTimeout(()=>{c()},3e5),c=()=>{clearInterval(o),clearTimeout(d),r(),$l.get(t)===c&&$l.delete(t)};$l.set(t,c),r=e.onEvent(e=>{const t=Wc(e.params);if("account/login/completed"===e.method){const e=Qc(t?.loginId);if(n&&e&&e!==n)return;return!1===t?.success?void s(Qc(t.error)??"Login failed."):void i()}"account/updated"===e.method&&Qc(t?.authMode)&&i()})}(r,e,d),{accountId:e,status:l,authMode:"AUTHENTICATING"===l?s:null,authUrl:o,verificationUrl:"device"===s?o:null,userCode:c,loginId:d,message:"CONNECTED"===l?"Codex account is connected.":"device"===s?"Open the verification URL and enter the device code to finish Codex authentication.":"Complete Codex authentication in the opened browser. xedoc will connect automatically when the Codex callback is received."}}catch(r){const n=r instanceof Error?r.message:"Authentication failed.";return await Mc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:n}}),{accountId:e,status:"ERROR",authMode:t,authUrl:null,verificationUrl:null,userCode:null,message:n}}}async function Rl(e,t){const n=await Sl(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new uc(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new uc(400,"Callback URL must use http.");if(t.username||t.password)throw new uc(400,"Callback URL must not include credentials.");if(!function(e){const t=e.toLowerCase();return"localhost"===t||"::1"===t||/^127(?:\.\d{1,3}){3}$/.test(t)}(t.hostname))throw new uc(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new uc(400,"Callback URL must include an OAuth code or error.");return t}(t),r=zl(n),i=r.waitForEvent(e=>"account/login/completed"===e.method||"account/updated"===e.method,15e3).catch(()=>null);try{const t=await async function(e){try{return await fetch(e,{redirect:"manual"})}catch(t){if("localhost"!==e.hostname)throw t;const n=new URL(e.toString());return n.hostname="127.0.0.1",fetch(n,{redirect:"manual"})}}(a);if(t.status>=400){const e=await async function(e){const t=(await e.text()).trim();return t?t.length>500?`${t.slice(0,500)}...`:t:null}(t);throw new uc(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=Wc((await i)?.params);if(!1===s?.success){const t=Qc(s.error)??"Login failed.";return await Mc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Ul(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await Ol(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:Fl(e)?(Xc.stopRuntime(e),await Mc.codexAccount.update({where:{id:e},data:_l(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await Mc.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:Ul(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:"Callback accepted. Codex is still finishing authentication."})}catch(s){const t=s instanceof Error?s.message:"Authentication failed.";return await Mc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Ul(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}var $l=new Map;function ql(e){$l.get(e)?.(),$l.delete(e)}function _l(e,t){el(e);const n=((a=t)?tu(Qc(a.email))??tu(Qc(a.accountEmail))??tu(Qc(a.chatgptEmail))??tu(Qc(Wc(a.profile)?.email))??tu(Qc(Wc(a.user)?.email)):null)??function(e){try{return Zl(Gl(e))}catch{return null}}(e);var a;return{...n?{displayName:n}:{},status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}function Ul(e){return"browser"===e||"device"===e?e:null}function zl(e){return Xc.getRuntime({accountId:e.id,command:e.command,args:du(e.args),workingDirectory:null,environment:Vc(e.environment)})}async function Ol(e,t){const n=Wc(Wc((await t.request("account/read",{refreshToken:!1})).result)?.account);return!!n&&(await Mc.codexAccount.update({where:{id:e},data:_l(e,n)}),!0)}function jl(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Fl(e){try{return Bl(Gl(e))}catch{return!1}}function Bl(e){return!("chatgpt"!==Qc(e.auth_mode)||!Wc(e.tokens)&&!Qc(e.OPENAI_API_KEY))}function Gl(e){const t=an(wn(rl(e),Al),"utf8");return Wc(JSON.parse(t))??{}}function Hl(e){try{const t=Gl(e);return Object.keys(t).length?{authJson:t}:null}catch{return null}}function Kl(e,t){if(!t)return;const n=il(e),a=`${JSON.stringify(t.authJson)}\n`;mn(wn(n,Al),a,{encoding:"utf8",mode:384}),Vt(wn(n,Al),384)}function Wl(e){const t=Ql({required:!1});if(!t)return new Set;const n=e.flatMap(e=>{const t=Vl(e.id);return t?[{account:e,auth:t}]:[]}),a=n.filter(e=>e.auth.fingerprint===t.fingerprint);return a.length?new Set(a.map(e=>e.account.id)):t.email?new Set(n.filter(e=>e.auth.email===t.email).map(e=>e.account.id)):new Set}function Ql(e){try{const e=an(wn(Yl(),Al),"utf8");if(Buffer.byteLength(e,"utf8")>Cl)throw new uc(400,"Local Codex auth.json must be 262144 bytes or fewer.");const t=Wc(JSON.parse(e));if(!t||!Bl(t))throw new uc(400,"Local Codex auth.json does not contain an active ChatGPT account.");return Jl(t)}catch(t){if(!e.required)return null;if(t instanceof uc)throw t;throw new uc(404,"No active local Codex auth.json was found. Sign in with the local Codex CLI first.")}}function Vl(e){try{const t=Gl(e);return Bl(t)?Jl(t):null}catch{return null}}function Jl(e){return{authJson:e,email:Zl(e),fingerprint:(t=e,Ot("sha256").update(Xl(t)).digest("hex"))};var t}function Xl(e){return Array.isArray(e)?`[${e.map(e=>Xl(e)).join(",")}]`:e&&"object"==typeof e?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Xl(e[t])}`).join(",")}}`:JSON.stringify(e)}function Yl(){return function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}(process.env.CODEX_LOCAL_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function Zl(e){return tu(Qc(e.email))??tu(Qc(Wc(e.account)?.email))??tu(Qc(Wc(e.profile)?.email))??tu(Qc(Wc(e.user)?.email))??eu(Qc(Wc(e.tokens)?.id_token))??eu(Qc(Wc(e.tokens)?.idToken))??eu(Qc(e.id_token))??eu(Qc(e.idToken))}function eu(e){if(!e)return null;const[,t]=e.split(".");if(!t)return null;try{return tu(Qc(Wc(JSON.parse(function(e){const t=e.replaceAll("-","+").replaceAll("_","/"),n=t.padEnd(t.length+(4-t.length%4)%4,"=");return Buffer.from(n,"base64").toString("utf8")}(t)))?.email))}catch{return null}}function tu(e){const t=e?.trim();return t&&t.includes("@")?t:null}function nu(e){for(const t of e)ru(t.id)}async function au(){nu(await Mc.codexAccount.findMany({select:{id:!0}}))}function ru(e){try{il(e)}catch(t){console.warn(`Failed to prepare Codex account home for ${e}.`,t instanceof Error?t.message:t)}}function iu(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function su(e){return{args:iu(e.args),command:e.command,defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,displayName:e.displayName,environment:(t=e.environment,null==t?Kt.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null,status:"DISCONNECTED"};var t}function ou(e,t=!1){return{id:e.id,displayName:e.displayName,status:e.status,isLocalCodexActive:t,command:e.command,args:du(e.args),environment:Vc(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:Ul(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function du(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):jl()}function cu(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new uc(400,`${n} must be an object.`);return{id:pu(e.id,`${n}.id`,128),displayName:fu(e.displayName,`${n}.displayName`,128),command:pu(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:gu(e.args,`${n}.args`)??jl(),auth:vu(e.auth,`${n}.auth`),defaultModel:pu(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:hu(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:uu(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:mu(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:wu(e.environment,`${n}.environment`)}}function lu(e){return null==e?null:fu(e,"runtime option",128)}function uu(e,t="defaultReasoningEffort"){if(null==e)return null;if("none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e)return e;throw new uc(400,`${t} is invalid.`)}function mu(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new uc(400,`${t} is invalid.`)}function hu(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new uc(400,`${t} is invalid.`)}function fu(e,t,n){const a=pu(e,t,n);if(!a)throw new uc(400,`${t} is required.`);return a}function pu(e,t,n){if(null==e)return;if("string"!=typeof e)throw new uc(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new uc(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function gu(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new uc(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function vu(e,t){if(null==e)return null;const n=Wc(e);if(!n)throw new uc(400,`${t} must be an object.`);const a=Wc(n.authJson);if(!a)throw new uc(400,`${t}.authJson must be an object.`);return function(e,t,n){if(Buffer.byteLength(JSON.stringify(e),"utf8")>n)throw new uc(400,`${t} must be ${n} bytes or fewer.`)}(a,`${t}.authJson`,Cl),{authJson:a}}function wu(e,t){if(null==e)return null;const n=Wc(e);if(!n)throw new uc(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var bu=qn({action:()=>yu,loader:()=>xu});async function xu({request:e}){try{return fc(e,["GET"]),await Lc(e),mc(await El())}catch(t){return Nc(t)}}async function yu({request:e}){try{fc(e,["POST"]),await Lc(e);const t=await pc(e);return mc(await async function(e){const t=await Mc.codexAccount.create({data:{displayName:(n=e.displayName,Qc(n)?.trim()||"Codex account"),command:e.command??process.env.CODEX_COMMAND??"codex",args:iu(e.args??jl()),defaultModel:lu(e.defaultModel),defaultPermissionMode:hu(e.defaultPermissionMode),defaultReasoningEffort:uu(e.defaultReasoningEffort),defaultServiceTier:mu(e.defaultServiceTier),environment:iu(e.environment)}});var n;return ru(t.id),t}({displayName:gc(t.displayName,"displayName",{maxLength:128}),command:gc(t.command,"command"),args:vc(t.args,"args"),defaultModel:Nu(t.defaultModel,"defaultModel"),defaultPermissionMode:Nu(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Nu(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Nu(t.defaultServiceTier,"defaultServiceTier"),environment:bc(t.environment,"environment")}),{status:201})}catch(t){return Nc(t)}}function Nu(e,t){return null===e?null:gc(e,t,{maxLength:128})}var Iu=qn({loader:()=>ku});async function ku({request:e}){try{return fc(e,["GET"]),await Lc(e),mc(await async function(){const e=await Mc.codexAccount.findMany({orderBy:{createdAt:"asc"}});return{schemaVersion:2,exportedAt:(new Date).toISOString(),accounts:e.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:du(e.args),auth:Hl(e.id),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:Vc(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return Nc(t)}}var Au=qn({action:()=>Cu});async function Cu({request:e}){try{fc(e,["POST"]),await Lc(e);const t=await pc(e);if(!Array.isArray(t.accounts))throw new uc(400,"accounts must be an array.");return mc(await async function(e){const t=e.accounts.map(cu),n=[];for(const s of t){const e=s.id?await Mc.codexAccount.findUnique({where:{id:s.id}}):null;if(e){Xc.stopRuntime(e.id);const t=await Mc.codexAccount.update({where:{id:e.id},data:su(s)});Kl(t.id,s.auth),n.push(t);continue}const t=await Mc.codexAccount.create({data:{...s.id?{id:s.id}:{},...su(s)}});Kl(t.id,s.auth),n.push(t)}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await Ll(s.id));const r=await Mc.codexAccount.findMany({where:{id:{in:n.map(e=>e.id)}}}),i=new Map(r.map(e=>[e.id,e]));return{imported:n.length,accounts:n.map(e=>ou(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return Nc(t)}}var Eu=qn({action:()=>Mu,loader:()=>Tu});async function Tu({request:e}){try{return fc(e,["GET"]),await Lc(e),mc(await Pl())}catch(t){return Nc(t)}}async function Mu({request:e}){try{fc(e,["PATCH"]),await Lc(e);const t=await pc(e);if("string"!=typeof t.instructions)throw new uc(400,"instructions is required.");return mc(await Dl({instructions:t.instructions}))}catch(t){return Nc(t)}}var Su=qn({action:()=>Pu});async function Pu({request:e}){try{return fc(e,["POST"]),await Lc(e),mc(await Tl(),{status:201})}catch(t){return Nc(t)}}var Du=An(Nn),Lu="127.0.0.1",Ru=function(e){const t=Number(e??1457);return!Number.isInteger(t)||t<=0||t>65535?1457:t}(process.env.CODEX_LOGIN_CALLBACK_PORT);async function $u(){const e=await new Promise((e,t)=>{const n=kn();n.once("error",n=>{"EADDRINUSE"!==n.code?t(n):e(!0)}),n.listen({host:Lu,port:Ru},()=>{n.close(n=>{n?t(n):e(!1)})})});return function(e,t,n){const a=t.some(e=>e.pid===process.pid);return{checkedAt:(new Date).toISOString(),host:Lu,inUse:e,killable:t.some(e=>e.pid>0&&e.pid!==process.pid),killedProcessIds:n,port:Ru,processes:t,message:e?a?"The current xedoc server owns the login callback port.":"The Codex login callback port is already in use.":"The Codex login callback port is available."}}(e,e?await async function(){if("win32"===process.platform)return async function(){try{const{stdout:e}=await Du("netstat",["-ano","-p","tcp"]);return function(e){const t=[],n=new RegExp(`:${Ru}\\s`);for(const a of e.split(/\r?\n/)){const e=a.trim();if(!e.includes("LISTENING")||!n.test(e))continue;const r=e.split(/\s+/),i=Number(r.at(-1));Number.isFinite(i)&&t.push({pid:i,address:e})}return _u(t)}(e)}catch{return[]}}();const e=await async function(){try{const{stdout:e}=await Du("lsof",["-nP",`-iTCP:${Ru}`,"-sTCP:LISTEN","-F","pcLn"]);return function(e){const t=[];let n=null;for(const a of e.split(/\r?\n/)){if(!a)continue;const e=a.slice(0,1),r=a.slice(1);"p"!==e?n&&("c"===e?n.command=r:"L"===e?n.user=r:"n"===e&&(n.address=r)):(n&&t.push(n),n={pid:Number(r)})}n&&t.push(n);return _u(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}();return e.length?e:async function(){try{const{stdout:e}=await Du("ss",["-ltnp"]);return function(e){const t=[],n=new RegExp(`:${Ru}\\b`);for(const a of e.split(/\r?\n/)){if(!n.test(a)||!a.includes("LISTEN"))continue;const e=/"([^"]+)",pid=(\d+)/g;let r;for(;r=e.exec(a);)t.push({command:r[1],pid:Number(r[2]),address:a.trim()})}return _u(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}()}():[])}async function qu(){const e=await $u();if(!e.inUse)return e;const t=e.processes.map(e=>e.pid).filter(e=>e>0&&e!==process.pid);if(!t.length)throw new uc(409,e.processes.some(e=>e.pid===process.pid)?"The current xedoc server owns the login callback port and cannot kill itself.":"No killable process was found for the login callback port.");const n=[];for(const i of Array.from(new Set(t)))try{process.kill(i,"SIGTERM"),n.push(i)}catch(r){if(!Uu(r))throw new uc(500,`Could not kill process ${i}: ${zu(r)}`)}var a;return await(a=600,new Promise(e=>setTimeout(e,a))),{...await $u(),killedProcessIds:n}}function _u(e){const t=new Map;for(const n of e)t.has(n.pid)||t.set(n.pid,n);return Array.from(t.values()).sort((e,t)=>e.pid-t.pid)}function Uu(e){return"object"==typeof e&&null!==e&&"code"in e&&"ESRCH"===e.code}function zu(e){return e instanceof Error?e.message:"Unknown error"}var Ou=qn({action:()=>Fu,loader:()=>ju});async function ju({request:e}){try{return fc(e,["GET"]),await Lc(e),mc(await $u())}catch(t){return Nc(t)}}async function Fu({request:e}){try{return fc(e,["POST"]),await Lc(e),mc(await qu())}catch(t){return Nc(t)}}var Bu=qn({action:()=>Gu});async function Gu({request:e,params:t}){try{return fc(e,["POST"]),await Lc(e),mc(await Ml(yc(t,"accountId")))}catch(n){return Nc(n)}}var Hu=qn({action:()=>Wu,loader:()=>Ku});async function Ku({request:e,params:t}){try{return fc(e,["GET"]),await Lc(e),mc(await Sl(yc(t,"accountId")))}catch(n){return Nc(n)}}async function Wu({request:e,params:t}){try{await Lc(e);const n=yc(t,"accountId");if("PATCH"===e.method){const t=await pc(e);return mc(await async function(e,t){return await Sl(e),Xc.stopRuntime(e),Mc.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:iu(t.args),environment:iu(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:gc(t.displayName,"displayName",{maxLength:128}),command:gc(t.command,"command"),args:vc(t.args,"args"),environment:bc(t.environment,"environment")}))}if("DELETE"===e.method)return mc(await async function(e){const t=await Sl(e);return Xc.stopRuntime(e),el(e),Mc.$transaction(async n=>{await n.chat.updateMany({where:{accountId:e},data:{accountId:null}}),await n.threadPreference.updateMany({where:{accountId:e},data:{accountId:null}});const a=(await n.chatRun.findMany({select:{id:!0},where:{accountId:e}})).map(e=>e.id);return a.length&&(await n.chatMessage.updateMany({where:{runId:{in:a}},data:{runId:null}}),await n.chatRun.deleteMany({where:{id:{in:a}}})),n.codexAccount.delete({where:{id:t.id}})})}(n));hc(e.method)}catch(n){return Nc(n)}}var Qu=qn({action:()=>Vu});async function Vu({request:e,params:t}){try{fc(e,["PATCH"]),await Lc(e);const n=await pc(e),a={defaultModel:Ju(n.defaultModel,"defaultModel"),defaultPermissionMode:Ju(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Ju(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Ju(n.defaultServiceTier,"defaultServiceTier")};return mc(await async function(e,t){return await Sl(e),ou(await Mc.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:lu(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:hu(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:uu(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:mu(t.defaultServiceTier)}}))}(yc(t,"accountId"),a))}catch(n){return Nc(n)}}function Ju(e,t){return null===e?null:gc(e,t,{maxLength:128})}var Xu=qn({action:()=>Zu,loader:()=>Yu});async function Yu({request:e,params:t}){try{return fc(e,["GET"]),await Lc(e),mc(await async function(e){return await Sl(e),{...await Pl(),accountId:e}}(yc(t,"accountId")))}catch(n){return Nc(n)}}async function Zu({request:e,params:t}){try{fc(e,["PATCH"]),await Lc(e);const n=await pc(e);if("string"!=typeof n.instructions)throw new uc(400,"instructions is required.");return mc(await async function(e,t){return await Sl(e),{...await Dl(t),accountId:e}}(yc(t,"accountId"),{instructions:n.instructions}))}catch(n){return Nc(n)}}async function em(e){const t=await tm(e);try{const n=await async function(e){return(await Xc.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(rm(t));return await nm(e),n}catch(n){return am(e,n)}}async function tm(e){const t=await Mc.codexAccount.findUnique({where:{id:e}});if(!t)throw new uc(404,"Account not found.");if("CONNECTED"!==t.status)throw new uc("INVALIDATED"===t.status?401:400,"INVALIDATED"===t.status?"Codex authentication token was invalidated. Re-authenticate this account.":"Authenticate the account before loading Codex account data.");return t}async function nm(e){if(function(e){return Yc.has(e)}(e))throw new uc(401,"Codex authentication token was invalidated. Re-authenticate this account.");if("INVALIDATED"===(await Mc.codexAccount.findUnique({select:{status:!0},where:{id:e}}))?.status)throw new uc(401,"Codex authentication token was invalidated. Re-authenticate this account.")}async function am(e,t){if(t instanceof uc)throw t;if(function(e){return tl(e instanceof Error?e.message:String(e??""))}(t))throw await Zc(e,t),Xc.stopRuntime(e),new uc(401,"Codex authentication token was invalidated. Re-authenticate this account.");throw t}function rm(e){return{accountId:e.id,args:im(e.args),command:e.command,environment:Vc(e.environment),workingDirectory:null}}function im(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var sm=qn({loader:()=>om});async function om({request:e,params:t}){try{return fc(e,["GET"]),await Lc(e),mc(await em(yc(t,"accountId")))}catch(n){return Nc(n)}}var dm=qn({loader:()=>cm});async function cm({request:e,params:t}){try{return fc(e,["GET"]),await Lc(e),mc(await async function(e){const t=await tm(e);try{const n=await al(rm(t));return await nm(e),n}catch(n){return am(e,n)}}(yc(t,"accountId")))}catch(n){return Nc(n)}}var lm=qn({action:()=>um});async function um({request:e,params:t}){try{fc(e,["POST","DELETE"]),await Lc(e);const n=yc(t,"accountId");return"DELETE"===e.method?mc(await async function(e){const t=await Sl(e);return ql(e),Xc.stopRuntime(e),Fl(e)?ou(await Mc.codexAccount.update({where:{id:e},data:_l(e)}),Wl([t]).has(e)):"AUTHENTICATING"!==t.status?ou(t,Wl([t]).has(e)):ou(await Mc.codexAccount.update({where:{id:e},data:{status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}))}(n)):mc(await Ll(n,function(e){const t=gc(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new uc(400,"mode must be browser or device.")}((await pc(e)).mode)))}catch(n){return Nc(n)}}var mm=qn({action:()=>hm});async function hm({request:e,params:t}){try{fc(e,["POST"]),await Lc(e);const n=gc((await pc(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return mc(await Rl(yc(t,"accountId"),n))}catch(n){return Nc(n)}}var fm=globalThis,pm=new Map,gm=new Map;async function vm(e,t){const n=await nh(e);if(!n)return;const a=wn(il(t),"sessions",bh(n));if(xn(n)!==xn(a)){await async function(e){const t=function(e){const t=`${yn}sessions${yn}`,n=xn(e),a=n.lastIndexOf(t);return-1===a?null:wn(n.slice(0,a),"session_index.jsonl")}(e),n=wn(sl(),"session_index.jsonl");if(!t||xn(t)===xn(n))return;try{const e=await Pn(t,"utf8");if(!e.trim())return;const a=await Pn(n,"utf8").catch(()=>"");await En(n,`${a&&!a.endsWith("\n")?"\n":""}${e.endsWith("\n")?e:`${e}\n`}`)}catch{}}(n);try{return void(await Cn(a,Xt.R_OK))}catch{}await Mn(pn(a),{recursive:!0,mode:448}),await Tn(n,a)}}async function wm(e){const t=await nh(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>ah())return null;const a=`${t}:${e}`,r=gm.get(a);if(r&&rh(r,n))return r.value;const i=function(e,t,n){let a,r,i,s,o,d,c,l=0,u=0;const m=[],h=[];for(const v of e.split(/\r?\n/)){if(!v.trim())continue;l+=1;const e=hh(v);if(!e)continue;const f=fh(e.timestamp)??n;o=ph(o,f),d=gh(d,f);const p=Wc(e.payload);if("session_meta"===e.type&&p){a=Qc(p.id)??a,r=Qc(p.source)??r,i=Qc(p.originator)??i,s=Qc(p.cwd)??s,o=fh(p.timestamp)??o;continue}const g=Qc(p?.type);if("event_msg"===e.type&&"task_started"===g&&(u+=1,c=Um(p)??zm(a,t,u)),"turn_context"===e.type&&p){s=Qc(p.cwd)??s;continue}const w={originator:i,path:t,sessionId:a,source:r,turnId:Um(p)??c},b=Nm(e,f,w);if(b){m.push({...b,order:l});continue}const x=km(e,f,w);x&&h.push({...x,order:l}),"event_msg"===e.type&&"task_complete"===g&&(c=void 0)}const f=function(e,t){if(!e.length)return t.sort(Pm).map(Dm);const n=[...e];for(const a of t){if("SYSTEM"===a.role){n.some(e=>Mm(e,a))||n.push(a);continue}const e=n.findIndex(e=>Sm(e,a));if(e<0){n.push(a);continue}const t=n[e];a.content.length>t.content.length&&(n[e]={...t,content:a.content})}return n.sort(Pm).map(Dm)}(m,h),p=a??vh(t);if(!p||!f.length)return null;const g=wh(f.find(e=>"USER"===e.role)?.content??"")??wh(f[0]?.content??"")??"Imported Codex chat";return{createdAt:o??n,externalThreadId:p,messages:f,originator:i,path:t,source:r,title:g,updatedAt:d??n,workingDirectory:s}}(await Pn(e,"utf8"),e,new Date(n.mtimeMs)),s=i?.externalThreadId===t?i:null;return ih(gm,a,n,s),s}catch{return null}}(t,e):null}async function bm(e){const t=await nh(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>ah())return null;const a=`${t}:${e}`,r=pm.get(a);if(r&&rh(r,n))return r.value;let i,s=null;for(const t of(await Pn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=hh(t);if(!e)continue;"session_meta"===e.type&&(i=Qc(Wc(e.payload)?.id)??i);const n=oh(e);n&&(s=n)}const o=(i??vh(e))===t?s:null;return ih(pm,a,n,o),o}catch{return null}}(t,e):null}async function xm(e){const t=await Hm(e);return t?Ym(t):null}async function ym(){return(await async function(e){const t=await Xm();if(!t)return[];try{const n=await Km(t);return await t.$queryRawUnsafe(`\n SELECT ${Wm(n)}\n FROM threads\n ${function(e){return e.has("archived")?"WHERE COALESCE(archived, 0) = 0":""}(n)}\n ORDER BY ${Jm(n)} DESC\n LIMIT ?\n `,e)}catch(n){return console.warn("Failed to read root Codex thread database.",n instanceof Error?n.message:n),[]}}(sh("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3))).map(Ym).sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime())}function Nm(e,t,n){if("response_item"!==e.type)return null;const a=Wc(e.payload),r=Qc(a?.type);return a&&r?"message"===r?function(e,t,n,a){const r=(i=t.role,"assistant"===i?"ASSISTANT":"user"===i?"USER":null);var i;if(!r)return null;const s=function(e){return"string"==typeof e.text?Om(e.text,e):"string"==typeof e.message?Om(e.message,e):"string"==typeof e.content?Om(e.content,e):Array.isArray(e.content)?Om(e.content.map(e=>{if("string"==typeof e)return e;const t=Wc(e);return t?"string"==typeof t.text?t.text:Fm(t)??"":""}).join(""),e):Om("",e)}(t);return!s.trim()||Cm(s)?null:{content:s,createdAt:n,itemId:$m(t),metadata:Em(t,a),rawPayload:Tm(e,t),role:r,turnId:a.turnId}}(e,a,t,n):"reasoning"===r?function(e,t,n,a){const r=function(e){return[Lm(e.summary),Lm(e.content),Qc(e.summary),Qc(e.text)].filter(e=>!!e?.trim()).join("\n\n")}(t);return r.trim()?{content:r,createdAt:n,itemId:$m(t),kind:"THINKING",metadata:{...Em(t,a),responseItemType:Qc(t.type)},rawPayload:Tm(e,t),role:"SYSTEM",turnId:a.turnId}:null}(e,a,t,n):function(e){return["custom_tool_call","function_call","image_generation_call","local_shell_call","tool_search_call","web_search_call"].includes(e)}(r)?function(e,t,n,a){const r=Qc(t.type)??"tool_call";if("web_search_call"===r)return Im(e,t,n,a,Rm(t),"webSearch");if("image_generation_call"===r)return Im(e,t,n,a,"Image generation","imageGeneration");const i=function(e){if("string"==typeof e)try{return Wc(JSON.parse(e))}catch{return}return Wc(e)}(t.arguments),s=function(e,t){const n=Wc(e.action);return Qc(t?.cmd)??Qc(t?.command)??Qc(n?.command)??Qc(n?.cmd)}(t,i),o=Qc(t.name)??r.replaceAll("_"," ");return function(e,t){return"local_shell_call"===e||["exec_command","shell_command","write_stdin"].includes(t)}(r,o)?{content:s??o,createdAt:n,itemId:$m(t),kind:"COMMAND_EXECUTION",metadata:{...Em(t,a),command:s??o,cwd:Qc(i?.cwd)??Qc(i?.workdir)??Qc(Wc(t.action)?.cwd),kind:"command",status:Qc(t.status)??"completed"},rawPayload:Tm(e,t),role:"SYSTEM",turnId:a.turnId}:Im(e,t,n,a,o,"toolCall")}(e,a,t,n):function(e){return["custom_tool_call_output","function_call_output","tool_search_output"].includes(e)}(r)?function(e,t,n,a){const r=(i=t.output,"string"==typeof i?i:Lm(i)??"");var i;return r.trim()?{content:r,createdAt:n,itemId:qm(t),kind:"TOOL_ACTIVITY",metadata:{...Em(t,a),callId:_m(t),kind:"localCodexToolOutput",responseItemType:Qc(t.type),status:Qc(t.status)??"completed",toolName:Qc(t.name)},rawPayload:Tm(e,t),role:"SYSTEM",turnId:a.turnId}:null}(e,a,t,n):"compaction"===r||"context_compaction"===r?Im(e,a,t,n,Am(r),"contextCompaction"):null:null}function Im(e,t,n,a,r,i){return r.trim()?{content:r,createdAt:n,itemId:$m(t),kind:"TOOL_ACTIVITY",metadata:{...Em(t,a),eventKind:i,responseItemType:Qc(t.type),status:Qc(t.status)},rawPayload:Tm(e,t),role:"SYSTEM",turnId:a.turnId}:null}function km(e,t,n){if("event_msg"!==e.type)return null;const a=Wc(e.payload);if(!a)return null;const r=Qc(a.type);if("patch_apply_end"===r)return function(e,t,n,a){const r=Wc(t.changes),i=r?Object.keys(r):[],s=Qc(t.status)??(!1===t.success?"failed":"completed");return i.length?{content:i.join("\n"),createdAt:n,itemId:$m(t)??`patch:${a.turnId??n.getTime()}`,kind:"FILE_CHANGE",metadata:{...Em(t,a),additions:0,deletions:0,kind:"fileChange",paths:i,status:s},rawPayload:Tm(e,t),role:"SYSTEM",turnId:a.turnId}:Im(e,t,n,a,Qc(t.stderr)??Qc(t.stdout)??"Patch applied","patchApply")}(e,a,t,n);if("web_search_end"===r)return Im(e,a,t,n,Rm(a),"webSearch");if("task_complete"===r){const r=Qc(a.last_agent_message)??"";return!r.trim()||Cm(r)?null:{content:r,createdAt:t,itemId:$m(a)??`task-complete:${n.turnId??t.getTime()}`,metadata:{...Em(a,n),eventKind:"taskComplete"},rawPayload:Tm(e,a),role:"ASSISTANT",turnId:n.turnId}}const i="user_message"===r?"USER":"agent_message"===r?"ASSISTANT":function(e){const t=e?.replace(/[^a-z0-9]+/gi,"").toLowerCase()??"";return t.includes("compact")||t.includes("compaction")}(r)?"SYSTEM":null;if(!i)return null;const s="SYSTEM"===i?Am(r):"string"==typeof a.message?Om(a.message,a):"";return!s.trim()||Cm(s)?null:{content:s,createdAt:t,itemId:$m(a),kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...Em(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:Tm(e,a),role:i,turnId:n.turnId}}function Am(e){const t=e?.replace(/[_-]+/g," ").trim().toLowerCase();return t?.includes("start")?"Context compaction started.":t?.includes("finish")||t?.includes("complete")?"Context compacted.":"Context compaction recorded."}function Cm(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function Em(e,t){return{kind:"localCodexImport",originator:t.originator,phase:Qc(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:Qc(e.type),turnId:t.turnId}}function Tm(e,t){return{payload:{callId:_m(t),id:Qc(t.id),name:Qc(t.name),phase:Qc(t.phase),role:Qc(t.role),status:Qc(t.status),type:Qc(t.type)},timestamp:Qc(e.timestamp),type:Qc(e.type)}}function Mm(e,t){const n=Qc(Wc(e.metadata)?.eventKind),a=Qc(Wc(t.metadata)?.eventKind);return!!n&&n===a&&Sm(e,t)}function Sm(e,t){if(e.role!==t.role)return!1;if((e.kind??"CHAT")!==(t.kind??"CHAT"))return!1;if(e.turnId&&t.turnId&&e.turnId!==t.turnId)return!1;const n=e.content.trim(),a=t.content.trim();return n===a||n.startsWith(a)||a.startsWith(n)}function Pm(e,t){return e.order-t.order}function Dm({order:e,...t}){return t}function Lm(e){if(Array.isArray(e))return e.map(e=>{if("string"==typeof e)return e;const t=Wc(e);return Qc(t?.text)??Fm(t)??""}).filter(Boolean).join("\n")||void 0}function Rm(e){const t=Wc(e.action),n=Qc(e.query)??Qc(t?.query)??Qc(t?.pattern)??Qc(t?.url);return n?`Web search: ${n}`:"Web search"}function $m(e){return Qc(e.id)??_m(e)}function qm(e){const t=_m(e);return t?`${t}:output`:$m(e)}function _m(e){return Qc(e.call_id)??Qc(e.callId)}function Um(e){return Qc(e?.turn_id)??Qc(e?.turnId)}function zm(e,t,n){return`${e??vh(t)??fn(t)}:turn:${n}`}function Om(e,t){return[e,...jm(t.images),...jm(t.local_images),...jm(t.localImages)].filter(Boolean).join("\n\n")}function jm(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Bm(e):Fm(Wc(e))).filter(e=>!!e):[]}function Fm(e){return e?Bm(Qc(e.url)??Qc(e.image_url)??Qc(e.path)??Qc(e.filePath)):null}function Bm(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function Gm(e,t={}){const n=e?.replace(/\s+/g," ").trim();return!n||Cm(n)||!t.allowGeneric&&function(e){const t=function(e){return e.replace(/\s+/g," ").trim().toLowerCase()}(e);return"untitled chat"===t||"conversation"===t||"new chat"===t||"new thread"===t||"chat"===t||"codex chat"===t}(n)?null:n.slice(0,160)}async function Hm(e){const t=await Xm();if(!t)return null;try{const n=await Km(t);return(await t.$queryRawUnsafe(`\n SELECT ${Wm(n)}\n FROM threads\n WHERE id = ?\n LIMIT 1\n `,e))[0]??null}catch{return null}}async function Km(e){const t=await e.$queryRawUnsafe("PRAGMA table_info(threads)");return new Set(t.map(e=>e.name))}function Wm(e){return[Qm(e,"id"),Qm(e,"rollout_path","rolloutPath"),Vm(e,e.has("created_at_ms")?"created_at_ms":"created_at","createdAt"),Vm(e,Jm(e),"updatedAt"),Qm(e,"cwd"),Qm(e,"title"),Qm(e,"first_user_message","firstUserMessage"),Qm(e,"preview"),Qm(e,"archived"),Qm(e,"archived_at","archivedAt")].join(",\n ")}function Qm(e,t,n){return e.has(t)?`${t}${n?` AS ${n}`:""}`:`NULL AS ${n??t}`}function Vm(e,t,n){return e.has(t)?`CAST(${t} AS TEXT) AS ${n}`:`NULL AS ${n}`}function Jm(e){return e.has("updated_at_ms")?"updated_at_ms":e.has("updated_at")?"updated_at":"rowid"}async function Xm(){const e=cl();try{await Cn(e,Xt.R_OK)}catch{return null}return fm.codexStatePrisma&&fm.codexStateDatabasePath===e||(await(fm.codexStatePrisma?.$disconnect().catch(()=>{})),fm.codexStateDatabasePath=e,fm.codexStatePrisma=new Wt({datasources:{db:{url:eh(e)}}})),fm.codexStatePrisma}function Ym(e){const t=new Date(0),n=Zm(e.updatedAt,t),a=Zm(e.createdAt,n),r=th(e.rolloutPath)[0]??"",i=Gm(e.firstUserMessage,{allowGeneric:!0}),s=Gm(e.preview,{allowGeneric:!0});return{createdAt:a,externalThreadId:e.id,firstUserMessage:i,path:r,preview:s,title:Gm(e.title,{allowGeneric:!1})??wh(i??"")??wh(s??"")??null,updatedAt:n,workingDirectory:e.cwd??void 0}}function Zm(e,t){const n="bigint"==typeof e?Number(e):"number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return!Number.isFinite(n)||n<=0?t:new Date(n>1e10?n:1e3*n)}function eh(e){return`file:${e}?connection_limit=1&pool_timeout=30`}function th(e){const t=e?.trim();if(!t)return[];const n=wn(sl(),"sessions",bh(t));return[...new Set([t,n])]}async function nh(e){const t=await Hm(e);for(const n of th(t?.rolloutPath))try{return await Cn(n,Xt.R_OK),n}catch{}return null}function ah(){return sh("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function rh(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}function ih(e,t,n,a){if(e.size>=100){const t=e.keys().next().value;t&&e.delete(t)}e.set(t,{mtimeMs:n.mtimeMs,size:n.size,value:a})}function sh(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function oh(e){const t=dh(e);if(!t)return null;const n=Wc(t.params),a=Wc(t.info)??Wc(n?.info)??n??t;return function(e,t=e){const n=lh(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=lh(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=lh(e,["remaining_input_tokens","remainingInputTokens","remaining_tokens","remainingTokens","tokens_remaining","tokensRemaining"]),i=n??(void 0!==a&&void 0!==r?a+r:void 0);if(!i)return null;const s=function(e){let t=!1,n=0;for(const a of e)void 0!==a&&(t=!0,n+=a);return t?n:null}([lh(e,["input_tokens","inputTokens"]),lh(e,["output_tokens","outputTokens"]),lh(e,["reasoning_output_tokens","reasoningOutputTokens"])]),o=a??s;if(null===o)return null;const d=Math.min(o,i),c=Math.max(0,Math.min(100,Math.round(d/i*100)));return{tokenLimit:i,tokensRemaining:Math.max(0,i-d),tokensUsed:d,remainingPercent:Math.max(0,100-c),usedPercent:c}}(ch(a,["last_token_usage","lastTokenUsage"])??ch(a,["total_token_usage","totalTokenUsage"])??a,a)}function dh(e,t=0){if(t>4)return;const n=Wc(e);if(!n)return;const a=mh(Qc(n.type)??""),r=mh(Qc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=dh(n[i],t+1);if(e)return e}}function ch(e,t){for(const n of t){const t=Wc(e[n]);if(t)return t}}function lh(e,t){for(const n of t){const t=uh(e[n]);if(void 0!==t)return t}}function uh(e){if("number"==typeof e&&Number.isFinite(e)&&e>=0)return Math.floor(e);if("string"==typeof e&&e.trim()){const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.floor(t)}}function mh(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function hh(e){try{return Wc(JSON.parse(e))??null}catch{return null}}function fh(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function ph(e,t){return!e||t<e?t:e}function gh(e,t){return!e||t>e?t:e}function vh(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function wh(e){const t=e.split(/\s+/).map(e=>e.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu,"")).filter(Boolean).slice(0,5);if(!t.length)return null;const n=t.join(" ");return`${n.charAt(0).toUpperCase()}${n.slice(1)}`.slice(0,80)}function bh(e){const t=`${yn}sessions${yn}`,n=e.lastIndexOf(t);return-1===n?fn(e):e.slice(n+t.length)}var xh="__xedocRealtimeState__";function yh(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[xh]??={handlers:new Set},e[xh]}().handlers)r(a)}var Nh=null;async function Ih(){Nh??=async function(){await Mc.$executeRawUnsafe('\n CREATE TABLE IF NOT EXISTS "ThreadPreference" (\n "threadId" TEXT NOT NULL PRIMARY KEY,\n "accountId" TEXT,\n "autoRotateAccount" BOOLEAN NOT NULL DEFAULT false,\n "title" TEXT,\n "workingDirectory" TEXT,\n "model" TEXT,\n "reasoningEffort" TEXT,\n "serviceTier" TEXT,\n "collaborationMode" TEXT NOT NULL DEFAULT \'default\',\n "permissionMode" TEXT NOT NULL DEFAULT \'default\',\n "archivedAt" DATETIME,\n "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n "updatedAt" DATETIME NOT NULL,\n CONSTRAINT "ThreadPreference_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "CodexAccount" ("id") ON DELETE SET NULL ON UPDATE CASCADE\n )\n '),await Mc.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_accountId_idx" ON "ThreadPreference"("accountId")'),await Mc.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_archivedAt_idx" ON "ThreadPreference"("archivedAt")')}().then(()=>Mc.$executeRawUnsafe('\n INSERT OR IGNORE INTO "ThreadPreference" (\n "threadId",\n "accountId",\n "autoRotateAccount",\n "title",\n "workingDirectory",\n "model",\n "reasoningEffort",\n "serviceTier",\n "collaborationMode",\n "permissionMode",\n "archivedAt",\n "createdAt",\n "updatedAt"\n )\n SELECT\n "externalThreadId",\n "accountId",\n "autoRotateAccount",\n "title",\n "workingDirectory",\n "model",\n "reasoningEffort",\n "serviceTier",\n "collaborationMode",\n "permissionMode",\n CASE WHEN "status" = \'ARCHIVED\' THEN "updatedAt" ELSE NULL END,\n "createdAt",\n "updatedAt"\n FROM "Chat"\n WHERE "externalThreadId" IS NOT NULL AND TRIM("externalThreadId") != \'\'\n ')).then(()=>{},()=>{}),await Nh}async function kh(){return await Ih(),Mc.threadPreference.findMany()}async function Ah(e){return await Ih(),Mc.threadPreference.findUnique({where:{threadId:e}})}async function Ch(e,t){await Ih();const n=function(e){return{accountId:e.accountId,archivedAt:e.archivedAt,autoRotateAccount:e.autoRotateAccount,collaborationMode:e.collaborationMode,model:e.model,permissionMode:e.permissionMode,reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier,title:e.title,workingDirectory:e.workingDirectory}}(t);return Mc.threadPreference.upsert({where:{threadId:e},create:{threadId:e,...n,updatedAt:new Date},update:n})}async function Eh(e){const[t,n]=await Promise.all([xm(e),Ah(e)]);return t?.workingDirectory??n?.workingDirectory??null}function Th(e){return"fullAccess"===e?"fullAccess":"default"}async function Mh(e){const t=Dh(),n=Lh(t,e),a=await Dn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:pn(n),entries:a.map(e=>function(e,t){return{name:t.name,path:wn(e,t.name),type:Rh(t)}}(n,e)).sort((e,t)=>"directory"===e.type&&"directory"!==t.type?-1:"directory"!==e.type&&"directory"===t.type?1:e.name.localeCompare(t.name))}}async function Sh(e,t){const n=Dh(),a=xn(Lh(n,e),function(e){const t=e.trim();if(!t)throw new uc(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new uc(400,"Folder name must be a single folder name.");return t}(t)),r=bn(n,a);if(r.startsWith("..")||vn(r))throw new uc(403,"Path is outside the workspace root.");try{await Mn(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new uc(409,"Folder already exists.");throw i}return Mh(a)}function Ph(e){return Lh(Dh(),e)}function Dh(){const e=function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):xn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Zt(e)||tn(e,{recursive:!0}),on(e)}function Lh(e,t){const n=t?.trim(),a=n?vn(n)?n:wn(e,n):e;let r;try{r=on(xn(a))}catch{throw new uc(400,"Workspace path does not exist.")}const i=bn(e,r);if(i.startsWith("..")||vn(i))throw new uc(403,"Path is outside the workspace root.");if(!ln(r).isDirectory())throw new uc(400,"Workspace path is not a directory.");return r}function Rh(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var $h=1e6;async function qh(e,t,n){const a=await Eh(e);if(!a)throw new uc(400,"Chat does not have a working directory.");const r=Ph(a),i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()),n=/^(.*)#L(\d+)(?:-\d+)?$/i.exec(t);if(n)return{line:Number(n[2]),path:n[1]};const a=/^(.+):(\d+)(?::\d+)?$/.exec(t);return a&&!/^[A-Za-z]:\\/.test(t)?{line:Number(a[2]),path:a[1]}:{path:t}}(t),s=await _h(r,i.path),o=await Uh(s,r),d=n??i.line??null,c=Math.min(o.size,$h),l=c?await async function(e,t){const n=await Sn(e,"r");try{const e=Buffer.alloc(t),a=await n.read(e,0,t,0);return e.subarray(0,a.bytesRead)}finally{await n.close()}}(s,c):Buffer.alloc(0),u=function(e){if(!e.length)return!1;const t=e.subarray(0,Math.min(e.length,8e3));return!!t.includes(0)||t.toString("utf8").includes("�")}(l),m=u?void 0:l.toString("utf8"),h=m?m.split(/\r?\n/).length:0;return{content:m,isBinary:u,language:zh(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>$h}}async function _h(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new uc(400,"File path is required.");const a=await Ln(e),r=vn(n)?n:xn(a,n);let i;try{i=await Ln(r)}catch{throw new uc(404,"File does not exist.")}return function(e,t){const n=bn(e,t);if(n.startsWith("..")||vn(n))throw new uc(403,"Path is outside the chat working directory.")}(a,i),i}async function Uh(e,t){const n=await Rn(e);if(!n.isFile())throw new uc(400,"Workspace path is not a file.");const a=t?await Ln(t):null;return{name:fn(e),path:e,relativePath:a&&bn(a,e)||fn(e),size:n.size}}function zh(e){const t=gn(e).slice(1).toLowerCase();return{cjs:"javascript",css:"css",go:"go",htm:"html",html:"html",js:"javascript",json:"json",jsonl:"json",jsx:"javascript",md:"markdown",mjs:"javascript",py:"python",rb:"ruby",rs:"rust",sh:"bash",sql:"sql",ts:"typescript",tsx:"typescript",yaml:"yaml",yml:"yaml"}[t]??(t||null)}var Oh=new Map,jh=new Map,Fh=new Map,Bh=new Map,Gh=new Map,Hh=new Map,Kh="New Thread";async function Wh(e){const t=await Ah(e),n=await nf(e);if(!n&&!jh.has(e))throw new uc(404,"Chat not found.");return rf(e,t,n)}async function Qh(e,t){const n=await Wh(e);if("RUNNING"===n.status){if(void 0!==t.accountId&&t.accountId!==n.accountId)throw new uc(400,"Wait for the current run to finish before switching accounts.");if(void 0!==t.collaborationMode&&Lp(t.collaborationMode)!==n.collaborationMode)throw new uc(400,"Wait for the current run to finish before changing modes.");if(void 0!==t.workingDirectory)throw new uc(400,"Wait for the current run to finish before changing workspace.")}const a=await async function(e,t){if(void 0===t||t===e)return;return null===t?null:(await ef(t)).id}(n.accountId,t.accountId);if(jh.get(e)?.primed&&void 0!==a&&a!==n.accountId)throw new uc(400,"Send the first message before switching accounts on this chat.");const r=void 0===t.collaborationMode?void 0:Lp(t.collaborationMode),i=void 0===t.permissionMode?void 0:Rp(t.permissionMode),s=void 0===t.title?void 0:_p(t.title)??"Untitled chat",o=void 0===t.workingDirectory?void 0:Ph(t.workingDirectory),d=await Ch(e,{accountId:a,autoRotateAccount:t.autoRotateAccount,collaborationMode:r,model:void 0===t.model?void 0:Sp(t.model),permissionMode:i,reasoningEffort:void 0===t.reasoningEffort?void 0:Pp(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Dp(t.serviceTier),title:s,workingDirectory:o});if(a&&vm(e,a).catch(e=>{console.warn("Failed to mirror Codex session.",e instanceof Error?e.message:e)}),s&&async function(e,t,n){if(!t.accountId)return;const a=await Mc.codexAccount.findUnique({where:{id:t.accountId}});if(!a||"CONNECTED"!==a.status)return;await Kp(Fp(a),e,n)}(e,d,s).catch(e=>{console.warn("Failed to persist Codex chat title.",e instanceof Error?e.message:e)}),i){const t=jh.get(e);t&&(t.permissionMode=i),"fullAccess"===i&&await async function(e){const t=[...Oh.values()].filter(t=>t.threadId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=Ip(t);n.runtime.respondToServerRequest(n.rpcId,a),Oh.delete(kp(e,n.requestId));const r=mf(e,n.messageId,{completedAt:new Date,metadataPatch:{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,resolvedAt:(new Date).toISOString(),result:a,status:"resolved"},status:"COMPLETED"});r&&Op(e,"message.updated",r)}}(e)}const c=await rf(e,d);return Op(e,"chat.updated",c),c}async function Vh(e){await Wh(e);const t=await rf(e,await async function(e){return Ch(e,{archivedAt:new Date})}(e));return Op(e,"chat.updated",t),t}async function Jh(e,t=0,n=50){const a=await Wh(e),r=Math.min(Math.max(n,1),200),i=(await async function(e){const t=await wm(e);return t?t.messages.map(e=>function(e){return{completedAt:e.createdAt,content:e.content,createdAt:e.createdAt,itemId:e.itemId,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,role:e.role,source:"session",turnId:e.turnId}}(e)):[]}(e)).map((t,n)=>function(e,t,n,a,r){const i=n.createdAt??t.createdAt;return{chatId:e,completedAt:n.completedAt??n.createdAt??i,content:n.content,createdAt:i,id:sf(e,n,a),itemId:n.itemId??null,kind:n.kind??"CHAT",metadata:n.metadata?Tp(n.metadata):of(n),rawPayload:Tp(n.rawPayload??null),requestId:null,role:n.role,runId:null,sequence:r,status:"COMPLETED",turnId:n.turnId??null}}(e,a,t,n,n+1)),s=function(e,t){const n=jh.get(e);return n?t.length?n.messages.filter(e=>function(e,t){return"PENDING"===e.status||"STREAMING"===e.status||"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||!t.some(t=>function(e,t){return e.kind===t.kind&&e.role===t.role&&(!(!e.turnId||!t.turnId||e.turnId!==t.turnId)||(!(!e.itemId||!t.itemId||e.itemId!==t.itemId)||"CHAT"===e.kind&&hf(e.content)===hf(t.content)))}(t,e))}(e,t)):n.messages:[]}(e,i),o=[...i,...s].sort((e,t)=>e.sequence-t.sequence).filter(e=>e.sequence>t).slice(0,r);return{data:o,nextCursor:o.length?o[o.length-1].sequence:null}}async function Xh(e,t,n){await Wh(e);const a=kp(e,t),r=Oh.get(a);if(!r)throw new uc(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new uc(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new uc(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new uc(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),Oh.delete(a);const s=mf(e,r.messageId,{completedAt:new Date,metadataPatch:{decision:n.decision,resolvedAt:(new Date).toISOString(),result:n.result??i,status:"resolved"},status:"COMPLETED"});if(!s)throw new uc(410,"Server request is no longer active.");return Op(e,"message.updated",s),s}async function Yh(e,t){let n=await Wh(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new uc(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await gf(n));const a=t.accountId??n.accountId;if(!a)throw new uc(400,"Choose a Codex account before sending messages.");const r=await ef(a);if(!n.workingDirectory)throw new uc(400,"Select a working directory before sending messages.");const i=Ph(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new uc(400,"A message can include up to 12 attachments.");const n=[];for(const a of t)if("image"!==a.kind){if("file"!==a.kind)throw new uc(400,"Attachment kind is invalid.");n.push(await yf(e,a))}else n.push(xf(a));return n}(i,t.attachments??[]),o=function(e,t){const n=t.map(e=>e.message).filter(e=>"image"===e.kind).map(e=>`<image>${e.url}</image>`);return[e.trim(),...n].filter(Boolean).join("\n\n")}(t.content,s);if(!o.trim()&&!s.length)throw new uc(400,"Message content or an attachment is required.");const d=void 0===t.collaborationMode?void 0:Lp(t.collaborationMode),c=d??n.collaborationMode,l=n.permissionMode,u=new Date,m=await cf(e);if("RUNNING"===m.status||"QUEUED"===m.status)return"steer"===t.delivery?async function({account:e,attachments:t,collaborationMode:n,content:a,messageContent:r,metadata:i,startedAt:s,threadId:o}){const d=jh.get(o);if(!d?.runtime)throw new uc(409,"The active turn is not ready for steering yet.");const c=d.turnId??await Sf(d.runtime,o);if(!c)throw new uc(409,"The active turn has not published a turn id yet.");const l=await Ah(o),u=await Gf(d.runtime,l?.model??null,l?.reasoningEffort??null);d.turnId=Jf(await Tf(d.runtime,{expectedTurnId:c,threadId:o,...Ff(n,u)},a,t))??c;const m=uf(o,{completedAt:s,content:r,metadata:kf({...i,delivery:"steer",steeredAt:s.toISOString()},t),role:"USER",status:"COMPLETED"});return Op(o,"chat.updated",await Wh(o)),Op(o,"message.created",m),{message:m,assistantMessage:null,runId:d.runId,status:"RUNNING",delivery:"steer",steered:!0}}({account:r,attachments:s,collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,startedAt:u,threadId:e,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,messageContent:i,metadata:s,permissionMode:o,queuedAt:d,threadId:c,workingDirectory:l}){const u=Bt(),m=uf(c,{completedAt:d,content:i,metadata:kf({...s,delivery:"queue",queuedAt:d.toISOString(),queueId:u,queueStatus:"queued"},t),role:"USER",status:"COMPLETED"});return lf(c).queuedTurns.push({accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,createdAt:d,id:u,messageId:m.id,metadata:s,permissionMode:o,workingDirectory:l}),Op(c,"chat.updated",await Wh(c)),Op(c,"message.created",m),{message:m,assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:await Af(n,If(t.content,s)),collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,queuedAt:u,threadId:e,workingDirectory:i});const h=uf(e,{completedAt:u,content:o,metadata:kf(t.metadata,s),role:"USER",status:"COMPLETED"});Op(e,"message.created",h);const f=await ff({account:r,attachments:s,automaticTitleSeed:await Af(n,If(t.content,s)),collaborationMode:c,content:t.content,metadata:t.metadata??{},permissionMode:l,requestedCollaborationMode:d,startedAt:u,threadId:e,workingDirectory:i});return{message:h,assistantMessage:f.assistantMessage,runId:f.runId,status:"QUEUED"}}function Zh(e){const t=jh.get(e)?.status;return"RUNNING"===t||"QUEUED"===t?"RUNNING":"IDLE"}async function ef(e){const t=await Mc.codexAccount.findUnique({where:{id:e}});if(!t)throw new uc(400,"Account not found.");if("CONNECTED"!==t.status)throw new uc(400,"Authenticate the account before using this chat.");return t}async function tf(){const e=await ym(),t=new Map;for(const n of e)t.set(n.externalThreadId,af(n));return t}async function nf(e){const t=await xm(e);return t?{createdAt:t.createdAt,firstUserMessage:t.firstUserMessage??null,preview:t.preview??null,threadId:e,title:t.title,updatedAt:t.updatedAt,workingDirectory:t.workingDirectory??null}:null}function af(e){return{createdAt:e.createdAt,firstUserMessage:e.firstUserMessage??null,preview:e.preview??null,threadId:e.externalThreadId,title:e.title,updatedAt:e.updatedAt,workingDirectory:e.workingDirectory??null}}async function rf(e,t,n){const a=void 0===n?await nf(e):n,r=jh.get(e),i=function(e){return{accountId:e?.accountId??null,autoRotateAccount:e?.autoRotateAccount??!1,collaborationMode:(t=e?.collaborationMode,"plan"===t?"plan":"default"),model:e?.model??null,permissionMode:Th(e?.permissionMode),reasoningEffort:e?.reasoningEffort??null,serviceTier:e?.serviceTier??null,workingDirectory:e?.workingDirectory??null};var t}(t),s=t?.createdAt??a?.createdAt??r?.updatedAt??new Date,o=r?.updatedAt??a?.updatedAt??t?.updatedAt??s,d=function({preferenceTitle:e,preview:t,seed:n,snapshotTitle:a}){for(const r of[e,a]){const e=_p(r??"");if(e&&!Up(e))return e}return zp(n??"")??zp(t??"")??Kh}({preferenceTitle:t?.title,preview:a?.preview,seed:(c=r?.messages??[],[...c].reverse().find(e=>"USER"===e.role&&e.content.trim())?.content??null??a?.firstUserMessage??null),snapshotTitle:a?.title});var c;return{...i,id:e,externalThreadId:e,lastActivityAt:o,status:t?.archivedAt?"ARCHIVED":"RUNNING"===r?.status||"QUEUED"===r?.status?"RUNNING":"IDLE",title:d,workingDirectory:a?.workingDirectory??i.workingDirectory,createdAt:s,updatedAt:o}}function sf(e,t,n){return["codex",e,t.turnId??"turn",t.itemId??n,t.role.toLowerCase()].join(":")}function of(e){return{kind:"codexTranscript",source:e.source}}function df(e){if("string"==typeof e&&e.length>0)return e;if(!Array.isArray(e))return;const t=e.map(e=>{if("string"==typeof e)return e;const t=Wc(e);return Mp(t?.text)??Mp(t?.content)??Mp(t?.message)??function(e){return e?function(e){const t=e?.trim();return t?`<image>${t}</image>`:null}(Qc(e.url)??Qc(e.image_url)??Qc(e.path)??Qc(e.filePath)):null}(t)??""}).join("");return t.length?t:void 0}async function cf(e){const t=jh.get(e);if(t)return t;const n=(await wm(e))?.messages.length??0,a={interruptRequested:!1,messageKeys:new Map,messages:[],nextSequence:n+1,permissionMode:"default",primed:!1,queuedTurns:[],status:"IDLE",threadId:e,updatedAt:new Date};return jh.set(e,a),a}function lf(e){const t=jh.get(e);if(!t)throw new Error(`Missing runtime state for ${e}.`);return t}function uf(e,t){const n=lf(e),a=new Date,r={chatId:e,completedAt:t.completedAt??null,content:t.content,createdAt:a,id:t.id??`runtime:${e}:${Bt()}`,itemId:t.itemId??null,kind:t.kind??"CHAT",metadata:t.metadata?Tp(t.metadata):null,rawPayload:t.rawPayload?Tp(t.rawPayload):null,requestId:t.requestId??null,role:t.role,runId:t.runId??n.runId??null,sequence:n.nextSequence,status:t.status??"PENDING",turnId:t.turnId??null};return n.nextSequence+=1,n.updatedAt=a,n.messages.push(r),r}function mf(e,t,n){const a=jh.get(e),r=a?.messages.findIndex(e=>e.id===t)??-1;if(!a||r<0)return null;const i=a.messages[r],s={...i,completedAt:n.completedAt??i.completedAt,content:n.content??i.content,metadata:void 0!==n.metadata?Tp(n.metadata):n.metadataPatch?{...Wc(i.metadata)??{},...n.metadataPatch}:i.metadata,rawPayload:void 0!==n.rawPayload?Tp(n.rawPayload):i.rawPayload,status:n.status??i.status,turnId:void 0===n.turnId?i.turnId:n.turnId};return a.messages[r]=s,a.updatedAt=new Date,s}function hf(e){return e.replace(/\s+/g," ").trim()}async function ff({account:e,attachments:t,automaticTitleSeed:n,collaborationMode:a,content:r,metadata:i,permissionMode:s,requestedCollaborationMode:o,startedAt:d,threadId:c,workingDirectory:l}){const u=await cf(c),m=`run:${c}:${Bt()}`;u.accountId=e.id,u.interruptRequested=!1,u.permissionMode=s,u.runId=m,u.status="QUEUED",u.turnId=null,u.updatedAt=d,o&&await Ch(c,{collaborationMode:o});const h=uf(c,{content:"",kind:"CHAT",role:"ASSISTANT",runId:m,status:"PENDING"});return Op(c,"chat.updated",await Wh(c)),Op(c,"message.created",h),Op(c,"run.status",{runId:m,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(function(e,t){const n=Fh.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Fh.set(e,i),n.catch(()=>{}).then(t).finally(()=>{a(),Fh.get(e)===i&&Fh.delete(e)})})(a.id,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=lf(e),u=await Ah(e),m=(p=u?.permissionMode,"fullAccess"===p?"fullAccess":"default"),h=Fp(a),f=l.primed&&l.accountId===a.id&&l.runtime===h;var p;l.permissionMode=m,l.runtime=h,l.status="RUNNING",l.updatedAt=new Date;const g=mf(e,n,{status:"STREAMING"});g&&Op(e,"message.updated",g);Op(e,"chat.updated",await Wh(e)),Op(e,"run.status",{runId:t,status:"RUNNING"}),await vm(e,a.id);let v="";const w=new Map;let b,x=!1,y=null,N=null;const I=l.runtime.onEvent(a=>{(function(e,t,n){const a=Yf(e);if(t&&a&&a!==t)return!1;const r=Zf(e);return!n||!r||r===n})(a,e,b)&&Cf(t,()=>async function(e,t){const n=function(e){const t=gp(e);if(t){const e=Wc(t.params),n=Wc(t.info)??Wc(e?.info)??e??t;return pp(vp(n,["last_token_usage","lastTokenUsage"])??vp(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=Wc(e.params),a=Wc(n?.event),r=Wc(n?.usage)??Wc(a?.usage)??(fp(e.method)?n:void 0);return r?pp(r):null}(t);n&&Op(e.threadId,"context.updated",n);if(function(e){return!!gp(e)||fp(e.method)}(t))return;if(function(e){const t=Wc(e.params),n=Wc(t?.payload)??Wc(t?.event);return[e.method,Qc(t?.type),Qc(n?.type),Qc(n?.event)].some(e=>ip(e??"").includes("compact"))}(t))return void(await Hf({completedAt:new Date,content:mp(t),itemId:`context-compaction:${Zf(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:hp(t)?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:Zf(t)}));const a=t.method??"",r=Wc(t.params),i=tp(t),s=ip(Qc(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=Wc(e.params),n=Wc(e.result),a=Wc(t?.event);return Gp(t)??Gp(a)??Gp(n)}(t);return void(n&&await Wp(e.threadId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=Mp(r?.delta)??Mp(Wc(r?.event)?.delta);if(!n)return;const a=ep(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await Hf({content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Qc(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:Zf(t)});return void Op(e.threadId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&sp(s))return void(await Hf({content:"",fallbackMessageId:e.assistantMessageId,itemId:ep(t),kind:"CHAT",metadata:{kind:"assistant",phase:Qc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:Zf(t)}));if("item/completed"===a&&sp(s)){const n=function(e){if(!e)return"";const t=Mp(e.text)??Mp(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>Mp(Wc(e)?.text)??"").filter(Boolean).join("")}(i)||Vf(t);if(!n)return;const a=ep(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await Hf({completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Qc(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:Zf(t)}))}if(a.startsWith("item/reasoning/")||ip(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=ep(t)??`${n.toLowerCase()}:${Zf(t)??"turn"}`,i=`${n}:${r}`,s=e.streamBuffers.get(i),o=a.delta?`${s??""}${a.delta}`:a.content??s??a.contentFallback??"";if(!o.trim())return;e.streamBuffers.set(i,o),await Hf({content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:op(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Zf(t)})}(e,t,"THINKING",{content:ap(t,i),delta:np(t),metadata:{kind:"thinking",status:cp(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=Wc(t.params)??{},a="item/plan/delta"===t.method?np(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>Wc(e)).filter(e=>!!e).map(e=>({status:Qc(e.status)??"pending",step:Qc(e.step)??""})).filter(e=>e.step),i=Qc(n.explanation),s=Zf(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:ep(t)??`plan:${s??e.runId}`,d=`PLAN:${o}`,c=a?`${e.streamBuffers.get(d)??""}${a}`:i??r.map(e=>e.step).join("\n");if(!c.trim()&&!r.length&&!i)return;e.streamBuffers.set(d,c),await Hf({content:c,itemId:o,kind:"PLAN",metadata:{explanation:i,kind:"plan",presentation:a?"result":"progress",steps:r},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"item/plan/delta"===t.method?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:s})}(e,t));if("commandexecution"===s||a.includes("commandExecution"))return void(await async function(e,t,n){const a=Wc(t.params)??{},r=n??a,i=ep(t)??`command:${Zf(t)??"turn"}`,s=`COMMAND:${i}`,o=np(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:Mp(r.output)??Mp(r.aggregatedOutput)??Mp(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=Qc(r.command)??Qc(a.command)??"command",l=cp(r,t.method??"");await Hf({completedAt:op(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Cp(r.actions)??Cp(r.commandActions),command:c,cwd:Qc(r.cwd)??Qc(a.cwd),durationMs:Ep(r.durationMs)??Ep(r.duration_ms),exitCode:Ep(r.exitCode)??Ep(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":op(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Zf(t)})}(e,t,i));if("filechange"===s||a.includes("fileChange")||"turn/diff/updated"===a||a.includes("turn_diff"))return void(await async function(e,t,n){const a=Wc(t.params)??{},r=n??a,i=ep(t)??`file-change:${Zf(t)??"turn"}`,s=lp(r)??lp(a),o=Cp(r.changes)??Cp(a.changes)??[],d=function(e,t){const n=[Qc(e.path),Qc(e.filePath),Qc(e.file_path),...t.flatMap(e=>{const t=Wc(e);return[Qc(t?.path),Qc(t?.filePath),Qc(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await Hf({content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Ep(r.additions)??up(s,"+"),changes:o,deletions:Ep(r.deletions)??up(s,"-"),diff:s,kind:"fileChange",paths:d,status:cp(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:op(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Zf(t)})}(e,t,i));if("serverRequest/resolved"===a)return void function(e,t){const n=Wc(t.params)??{},a=Qc(n.requestId)??Qc(n.id);if(!a)return;Oh.delete(kp(e,a));const r=jh.get(e)?.messages.find(e=>e.requestId===a);if(!r)return;const i=mf(e,r.id,{completedAt:new Date,metadataPatch:{resolvedAt:(new Date).toISOString(),result:void 0===n.result?null:Tp(n.result),status:"resolved"},status:"COMPLETED"});i&&Op(e,"message.updated",i)}(e.threadId,t);("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=Wc(t.params),a=Qc(Wc(n?.error)?.message)??Qc(n?.message)??t.error?.message??"Codex runtime error.";await Hf({completedAt:new Date,content:a,itemId:`error:${Zf(t)??Date.now()}`,kind:"ERROR",metadata:{details:Tp(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",threadId:e.threadId,turnId:Zf(t)})}(e,t)}({assistantMessageId:n,onAssistantContent:e=>{v=e},runId:t,streamBuffers:w,threadId:e},a)).catch(e=>jp("Codex event projection failed.",e))}),k=l.runtime.onServerRequest(n=>{(function(e,t,n){const a=Wc(e.params),r=Qc(a?.threadId);if(t&&r&&r!==t)return!1;const i=Qc(a?.turnId);return!n||!i||i===n})(n,e,b)&&Cf(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=Wc(t.params)??{},r=ll(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?ip(e).includes("permissions")?"permissions":"approval":ip(e).includes("elicitation")?"userInput":null}(n);if(!i)return void e.runtime.rejectServerRequest(t.id,-32601,`Unsupported request method: ${n}`);const s="userInput"===i?function(e,t,n,a){return{kind:"userInput",message:Qc(n.message),method:e,mode:Qc(n.mode),questions:xp(n.questions),raw:Tp(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Cp(n.availableDecisions),changes:Cp(n.changes),command:Qc(n.command),cwd:Qc(n.cwd),itemId:Qc(n.itemId),kind:a,method:e,raw:Tp(r),reason:Qc(n.reason)??Qc(n.message),requestId:t,requestKind:a,status:"pending",turnId:Qc(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=Ip(i);return e.runtime.respondToServerRequest(t.id,n),void(await Hf({completedAt:new Date,content:Np(s),itemId:Qc(a.itemId),kind:"APPROVAL",metadata:{...s,autoApproved:!0,decision:"approval"===i?"acceptForSession":void 0,resolvedAt:(new Date).toISOString(),result:n,status:"resolved"},rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:Qc(a.turnId)}))}const o=await Hf({content:Np(s),itemId:Qc(a.itemId),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",threadId:e.threadId,turnId:Qc(a.turnId)});Oh.set(kp(e.threadId,r),{messageId:o.id,requestId:r,requestKind:i,rpcId:t.id,runtime:e.runtime,threadId:e.threadId})}({permissionMode:()=>l.permissionMode,runId:t,runtime:l.runtime,threadId:e},n)).catch(e=>jp("Codex server request projection failed.",e))});try{if(!f&&await Of(l.runtime,e,o,d)!==e)throw new Error("Codex returned a different thread id while resuming.");!function({cwd:e,runtime:t,seed:n,threadId:a}){const r=n?.trim();if(!r)return;const i=zp(r);(async()=>{i&&await Hp(t,a,i);const n=await async function(e,{cwd:t,seed:n}){try{const a=Wc((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return _p(Qc(a?.name)??Qc(a?.threadName)??Qc(a?.thread_name)??Qc(a?.title)??"")}catch{return null}}(t,{cwd:e,seed:r});n&&await Hp(t,a,n)})().catch(()=>{})}({cwd:o,runtime:l.runtime,seed:c,threadId:e});const h=await Gf(l.runtime,u?.model??null,u?.reasoningEffort??null);y=new AbortController,N=l.runtime.waitForEvent(t=>function(e){const t=e.method??"";return"turn/completed"===t||"turn/failed"===t||"turn/interrupted"===t||"turn/cancelled"===t||"turn/canceled"===t||t.startsWith("turn/")&&(t.includes("completed")||t.includes("failed")||t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled"))}(t)&&Yf(t)===e&&(!b||Zf(t)===b),6e5,y.signal);const p=await async function(e,t,n,a){const r=_f(n,a);let i;for(const o of r)try{return await e.request("turn/start",{...t,input:o},3e4)}catch(s){if(i=s,!Uf(s))throw s}throw i instanceof Error?i:new Error("Codex turn failed.")}(l.runtime,{threadId:e,cwd:o,...u?.model?{model:u.model}:{},...u?.reasoningEffort?{effort:u.reasoningEffort}:{},...u?.serviceTier?{serviceTier:u.serviceTier}:{},...jf(d,h,m),metadata:i},r,s);x=!0,b=Jf(p),l.primed=!1,l.turnId=b??null,b&&l.interruptRequested&&await Ef(l.runtime,b,e);const g=await N;if(await async function(e){await(Gh.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(g))throw new pf(dp(g));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Error(dp(g));const w=await async function(e,t,n){try{const a=Wc((await e.request("thread/turns/list",{limit:20,threadId:t},3e4)).result);return Xf((Array.isArray(a?.data)?a.data:[]).map(e=>Wc(e)).filter(e=>!!e).filter(e=>!n||Qc(e.id)===n).at(-1))??null}catch{return null}}(l.runtime,e,b)||Vf(g)||Vf(p)||v,I=new Date,k=mf(e,n,{completedAt:I,content:w,rawPayload:g,status:"COMPLETED",turnId:b??null});Qf(e,t,"COMPLETED"),Wf(e,t,"Codex completed the turn."),l.status="IDLE",l.runtime=void 0,l.updatedAt=I,"plan"===d&&function(e,t){return jh.get(e)?.messages.some(e=>{if(e.runId!==t)return!1;const n=e.content.trim();return!(!n||"Planning..."===n)&&("CHAT"===e.kind&&"ASSISTANT"===e.role?/<proposed_plan\b[^>]*>[\s\S]*?<\/proposed_plan>/i.test(n):"PLAN"===e.kind&&"result"===Wc(e.metadata)?.presentation)})??!1}(e,t)&&await Ch(e,{collaborationMode:"default"}),Op(e,"chat.updated",await Wh(e)),k&&Op(e,"message.completed",k),Op(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t){const n=await async function(e,t){try{const n=Gp((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result);if(n)return n}catch{}try{const n=Wc((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return Gp((Ap(n?.data)??Ap(n?.items)??Ap(n?.threads)??[]).find(e=>Qc(e.id)===t))}catch{return null}}(e,t);n&&await Wp(t,n)}(Fp(a),e),await vm(e,a.id)}catch(A){y?.abort(),await(N?.catch(()=>{}));const a=A instanceof Error?A.message:"Codex run failed.",r=f&&!x;Wf(e,t,a);const i=new Date;if(A instanceof pf){Qf(e,t,"COMPLETED");const s=mf(e,n,{completedAt:i,content:v,metadataPatch:{interrupted:!0,kind:"assistant"},status:"COMPLETED"});return l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,Op(e,"chat.updated",await Wh(e)),s&&Op(e,"message.completed",s),void Op(e,"run.status",{error:a,runId:t,status:"CANCELLED"})}Qf(e,t,"FAILED");const s=mf(e,n,{completedAt:i,content:v,status:"FAILED"});l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,Op(e,"chat.updated",await Wh(e)),s&&Op(e,"message.failed",{...s,error:a}),Op(e,"run.status",{error:a,runId:t,status:"FAILED"})}finally{y?.abort(),I(),k(),Gh.delete(t),l.runId=null,l.turnId=null,l.queuedTurns.length?function(e){const t=(Bh.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){const t=jh.get(e);if(!t||"RUNNING"===t.status||"QUEUED"===t.status)return;const n=t.queuedTurns.shift();if(!n)return;try{const t=await ef((await gf(await Wh(e))).accountId??n.accountId),a=new Date,r=await ff({account:t,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:n.permissionMode,startedAt:a,threadId:e,workingDirectory:n.workingDirectory}),i=mf(e,n.messageId,{metadataPatch:{dequeuedAt:a.toISOString(),queueStatus:"running",runId:r.runId}});i&&Op(e,"message.updated",i)}catch(A){const a=mf(e,n.messageId,{metadataPatch:{error:A instanceof Error?A.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"}});a&&Op(e,"message.updated",a)}}(e)).catch(()=>{});Bh.set(e,t),t.finally(()=>{Bh.get(e)===t&&Bh.delete(e)})}(e):function(e){gf(async function(e){try{return await Wh(e)}catch{return null}}(e)).catch(e=>{console.warn("Failed to auto rotate idle chat account.",e instanceof Error?e.message:e)})}(e)}}(e,t,n,a,r,i,s,o,d,c))}(c,m,h.id,e,r,i,t,l,a,n),{assistantMessage:h,runId:m}}var pf=class extends Error{};async function gf(e){const t=await e;if(!t)throw new uc(404,"Chat not found.");if(!t.autoRotateAccount||"RUNNING"===t.status||jh.get(t.id)?.primed)return t;const n=await Mc.codexAccount.findMany({orderBy:{createdAt:"asc"},where:{status:"CONNECTED"}});if(!n.length)return t;const a=await async function(e){const t=new Map,n=await Promise.allSettled(e.map(async e=>({accountId:e.id,snapshot:yr(await al({accountId:e.id,args:Bp(e.args),command:e.command,environment:Vc(e.environment),workingDirectory:null}))})));for(const a of n)"fulfilled"===a.status&&t.set(a.value.accountId,a.value.snapshot);return t}(n),r=n.find(e=>e.id===t.accountId),i=r?vf(a.get(r.id)):-1;if(r&&i>=0)return t;const s=function(e,t){return e.map((e,n)=>({account:e,index:n,score:vf(t.get(e.id))})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}(n,a);if(!s||s.id===t.accountId)return t;if(vf(a.get(s.id))<0)return t;const o=await Ch(t.id,{accountId:s.id});vm(t.id,s.id).catch(()=>{});const d=await rf(t.id,o);return Op(t.id,"chat.updated",d),d}function vf(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?wf(e.secondary)?"weekly":wf(e.primary)?"fiveHour":null:null}(e))return-1;if(e.credits&&!e.credits.unlimited&&!e.credits.hasCredits)return-1;if(e.credits?.unlimited)return 101;const t=[e.primary,e.secondary].filter(e=>!!e).map(e=>100-bf(e.usedPercent));return t.length?Math.min(...t):0}function wf(e){return bf(e?.usedPercent??0)>=100}function bf(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function xf(e){const t=e.dataUrl?.trim(),n=/^data:(image\/(?:png|jpeg|jpg|webp|gif));base64,([A-Za-z0-9+/=\s]+)$/i.exec(t);if(!n)throw new uc(400,"Image attachments must be data URLs.");const a=n[1].toLowerCase().replace("image/jpg","image/jpeg"),r=n[2].replace(/\s+/g,""),i=Buffer.byteLength(r,"base64");if(i>6291456)throw new uc(400,"Image attachments must be 6 MB or smaller.");const s=Nf(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:Bt(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function yf(e,t){const n=await async function(e,t){return Uh(await _h(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Bt(),kind:"file",name:Nf(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function Nf(e,t){const n=e?.trim();return(n?fn(n):t).slice(0,160)||"attachment"}function If(e,t){const n=t.map(e=>"file"===e.message.kind?e.message.path:e.message.name);return[e.trim(),...n].filter(Boolean).join(" ")}function kf(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}function Af(e,t){if(!Up(e.title))return null;const n=t.trim();return n||null}function Cf(e,t){const n=(Gh.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return Gh.set(e,a),a.finally(()=>{Gh.get(e)===a&&Gh.delete(e)}),n}async function Ef(e,t,n){const a={turnId:t,...n?{threadId:n}:{}};try{return void(await e.request("turn/interrupt",a,3e4))}catch(r){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return!t||t.includes("invalid")||t.includes("unknown")||t.includes("missing")||t.includes("param")}(r))throw r}await e.request("turn/interrupt",{turn_id:t,...n?{thread_id:n}:{}},3e4)}async function Tf(e,t,n,a){async function r(r){const i=_f(n,a),s=void 0===t.collaborationMode?[t]:[t,Mf(t,"collaborationMode")];let o;for(const t of s)for(const n of i)try{return await e.request("turn/steer",{...t,expectedTurnId:r,input:n},3e4)}catch(d){if(o=d,void 0!==t.collaborationMode&&zf(d))break;if(Uf(d))continue;throw d}throw o instanceof Error?o:new Error("Codex steer failed.")}try{return await r(t.expectedTurnId)}catch(i){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return["turn not found","no active turn","not in progress","not running","already completed","already finished","invalid turn","no such turn","not active","does not exist","cannot steer"].some(e=>t.includes(e))}(i))throw i;const n=await Sf(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}function Mf(e,t){const n={...e};return delete n[t],n}async function Sf(e,t){for(let n=0;n<3;n+=1){const a=await Pf(e,t);if(a.interruptibleTurnId)return a.interruptibleTurnId;if(!(a.hasInterruptibleTurnWithoutId&&n<2))return null;await new Promise(e=>setTimeout(e,200))}return null}async function Pf(e,t){try{const n=Wc((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return Df(Ap(n?.data)??Ap(n?.items)??Ap(n?.turns)??[],!0)}catch{}let n;try{n=await e.request("thread/read",{includeTurns:!0,threadId:t},1e4)}catch(a){if(!function(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("threadid")||t.includes("includeturns")||t.includes("thread_id")||t.includes("include_turns")||t.includes("unknown field")||t.includes("missing field")||t.includes("invalid")}(a))throw a;n=await e.request("thread/read",{include_turns:!0,thread_id:t},1e4)}return Df(Ap(Wc(Wc(n.result)?.thread)?.turns)??[],!1)}function Df(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>Rf(Lf(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!qf($f(i)))continue;const e=Rf(Lf(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function Lf(e){return Qc(e.id)??Qc(e.turnId)??Qc(e.turn_id)??null}function Rf(e){const t=e?.trim();return t||null}function $f(e){return(Qc(e.status)??Qc(e.turnStatus)??Qc(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function qf(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function _f(e,t){const n=[e.trim(),...t.flatMap(e=>e.fallbackText??[])].filter(Boolean).join("\n\n"),a=t.filter(e=>"image"===e.message.kind),r=t.filter(e=>"file"===e.message.kind),i={text:n,text_elements:[],type:"text"},s=(e,t)=>[i,...a.map(t=>({[e]:t.message.url,type:"image"})),...t?r.map(e=>e.runtime):[]],o=[s("url",!0)];return a.length&&o.push(s("image_url",!0)),r.length&&(o.push(s("url",!1)),a.length&&o.push(s("image_url",!1))),o}function Uf(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("input")||t.includes("invalid")||t.includes("unknown")||t.includes("unsupported")||t.includes("deserialize")||t.includes("schema")}function zf(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}async function Of(e,t,n,a){const r=t?"thread/resume":"thread/start",i=Wc((await e.request(r,{...t?{threadId:t}:{},cwd:n},3e4)).result),s=Qc(Wc(i?.thread)?.id)??Qc(i?.threadId)??Qc(i?.thread_id)??t;if(!s)throw new Error("Codex did not return a thread id.");return s}function jf(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:Bf(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function Ff(e,t=null){return"plan"!==e?{}:{collaborationMode:Bf(e,t)}}function Bf(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Gf(e,t,n){const a=$p(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=Wc(Wc((await e.request("config/read",{},3e4)).result)?.config),n=$p(Qc(t?.model));if(r=r??qp(t?.model_reasoning_effort)??qp(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=Wc((await e.request("model/list",{includeHidden:!1,limit:100},3e4)).result),n=Array.isArray(t?.data)?t.data:[];for(const e of n){const t=Wc(e),n=$p(Qc(t?.id))??$p(Qc(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}async function Hf(e){return async function(e,t){if(!e)return t();const n=Hh.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Hh.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Hh.get(e)===i&&Hh.delete(e)}}(Kf(e),async()=>{const t=lf(e.threadId),n=function(e,t){const n=Kf(t),a=n?e.messageKeys.get(n):null;return a?e.messages.find(e=>e.id===a)??null:t.requestId?e.messages.find(e=>e.requestId===t.requestId)??null:t.itemId?e.messages.find(e=>e.itemId===t.itemId&&e.kind===t.kind)??null:t.fallbackMessageId?e.messages.find(e=>e.id===t.fallbackMessageId)??null:null}(t,e),a=n?mf(e.threadId,n.id,{completedAt:e.completedAt,content:e.content,metadata:e.metadata,rawPayload:e.rawPayload,status:e.status,turnId:e.turnId??n.turnId}):uf(e.threadId,{completedAt:e.completedAt,content:e.content,itemId:e.itemId,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,requestId:e.requestId,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId}),r=Kf(e);return r&&t.messageKeys.set(r,a.id),Op(e.threadId,n?"message.updated":"message.created",a),a})}function Kf(e){return e.requestId?`${e.threadId}:request:${e.requestId}`:e.itemId?`${e.threadId}:item:${e.kind}:${e.itemId}`:e.fallbackMessageId?`${e.threadId}:fallback:${e.fallbackMessageId}`:null}function Wf(e,t,n){const a=jh.get(e);if(a)for(const r of a.messages){if(r.runId!==t||"PENDING"!==r.status||"APPROVAL"!==r.kind&&"USER_INPUT_PROMPT"!==r.kind)continue;if(r.requestId){const t=kp(e,r.requestId),a=Oh.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),Oh.delete(t)}const a=mf(e,r.id,{completedAt:new Date,metadataPatch:{expiredAt:(new Date).toISOString(),reason:n,status:"expired"},status:"COMPLETED"});a&&Op(e,"message.updated",a)}}function Qf(e,t,n){const a=jh.get(e);if(a)for(const r of a.messages){if(r.runId!==t||"PENDING"!==r.status&&"STREAMING"!==r.status||!["COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"].includes(r.kind))continue;const a=mf(e,r.id,{completedAt:new Date,status:n});a&&Op(e,"message.updated",a)}}function Vf(e){const t=Wc(e.result),n=Wc(e.params),a=Wc(n?.payload)??n??t;return Xf(Wc(n?.turn)??Wc(t?.turn))??Mp(t?.text)??Mp(t?.content)??Mp(a?.text)??Mp(a?.content)??Mp(a?.delta)??Mp(a?.message)??""}function Jf(e){const t=Wc(e.result),n=Wc(e.params);return Qc(t?.turnId)??Qc(t?.turn_id)??Qc(n?.turnId)??Qc(n?.turn_id)??Qc(Wc(t?.turn)?.id)??Qc(Wc(n?.turn)?.id)}function Xf(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=Wc(e);return"agentMessage"!==t?.type?null:Mp(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function Yf(e){const t=Wc(e.params),n=Wc(e.result),a=Wc(t?.event);return Qc(t?.threadId)??Qc(t?.thread_id)??Qc(n?.threadId)??Qc(n?.thread_id)??Qc(a?.threadId)??Qc(a?.thread_id)}function Zf(e){const t=Wc(e.params),n=Wc(e.result),a=tp(e);return Qc(t?.turnId)??Qc(n?.turnId)??Qc(a?.turnId)??Jf(e)}function ep(e){const t=Wc(e.params),n=Wc(e.result),a=tp(e);return Qc(t?.itemId)??Qc(n?.itemId)??Qc(a?.id)}function tp(e){const t=Wc(e.params),n=Wc(e.result),a=Wc(t?.payload);return Wc(t?.item)??Wc(n?.item)??Wc(a?.item)}function np(e){const t=Wc(e.params),n=Wc(t?.event);return Mp(t?.delta)??Mp(t?.text)??Mp(t?.output)??Mp(n?.delta)??Mp(n?.text)}function ap(e,t){const n=Wc(e.params),a=Wc(e.result);return[t,n,Wc(n?.event),Wc(n?.payload),a].map(rp).find(e=>!!e?.trim())}function rp(e){if(e)return Mp(e.reasoning)??Mp(e.reasoningText)??Mp(e.reasoning_text)??Mp(e.summary)??df(e.summary)??df(e.content)??Mp(e.text)??Mp(e.output)}function ip(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function sp(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function op(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function dp(e){const t=Wc(e.params);return Qc(Wc(t?.error)?.message)??Qc(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function cp(e,t){const n=Qc(e?.status);return n?ip(n):t.includes("failed")||t.includes("error")?"failed":op({method:t})?"completed":"running"}function lp(e){return Mp(e.diff)??Mp(e.unifiedDiff)??Mp(e.unified_diff)??Mp(e.patch)}function up(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function mp(e){const t=ip(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function hp(e){return ip(e.method??"").includes("start")}function fp(e){const t=ip(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function pp(e,t=e){const n=wp(t,["model_context_window","modelContextWindow","context_window","contextWindow","contextSize","context_size","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","maxInputTokens","max_input_tokens","maxTokens","max_tokens","tokenLimit","token_limit"]),a=wp(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=wp(e,["remaining_input_tokens","remainingInputTokens","remaining_tokens","remainingTokens","tokens_remaining","tokensRemaining"]),i=n??(void 0!==a&&void 0!==r?a+r:void 0);if(!i)return null;const s=function(e){let t=!1,n=0;for(const a of e)void 0!==a&&(t=!0,n+=a);return t?n:null}([wp(e,["input_tokens","inputTokens"]),wp(e,["output_tokens","outputTokens"]),wp(e,["reasoning_output_tokens","reasoningOutputTokens"])]),o=a??s;if(null===o)return null;const d=Math.min(o,i),c=Math.max(0,i-d),l=Math.max(0,Math.min(100,Math.round(d/i*100)));return{remainingPercent:Math.max(0,100-l),tokenLimit:i,tokensRemaining:c,tokensUsed:d,usedPercent:l}}function gp(e,t=0){if(t>4)return;const n=Wc(e);if(!n)return;const a=ip(Qc(n.type)??""),r=ip(Qc(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=gp(n[i],t+1);if(e)return e}}function vp(e,t){for(const n of t){const t=Wc(e[n]);if(t)return t}}function wp(e,t){for(const n of t){const t=bp(e[n]);if(void 0!==t)return t}}function bp(e){if("number"==typeof e&&Number.isFinite(e)&&e>=0)return Math.floor(e);if("string"==typeof e&&e.trim()){const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.floor(t)}}function xp(e){return Array.isArray(e)?e.map(e=>Wc(e)).filter(e=>!!e).map(e=>({header:Qc(e.header),id:Qc(e.id)??Bt(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:yp(e.options),question:Qc(e.question)??Qc(e.header)??"Answer",selectionLimit:Ep(e.selectionLimit)??Ep(e.selection_limit)})):[]}function yp(e){return Array.isArray(e)?e.map(e=>Wc(e)).filter(e=>!!e).map(e=>({description:Qc(e.description),label:Qc(e.label)??Qc(e.value)??""})).filter(e=>e.label):[]}function Np(e){return"userInput"===e.kind?Qc(e.message)??"Codex needs more information before it can continue.":Qc(e.reason)??Qc(e.command)??"Codex needs approval before it can continue."}function Ip(e){return"approval"===e?{decision:"acceptForSession"}:{permissions:!0,scope:"session"}}function kp(e,t){return`${e}:${t}`}function Ap(e){return Array.isArray(e)?e.map(e=>Wc(e)).filter(e=>!!e):null}function Cp(e){if(Array.isArray(e))return e.map(Tp)}function Ep(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Tp(e){return JSON.parse(JSON.stringify(e))}function Mp(e){return"string"==typeof e&&e.length>0?e:void 0}function Sp(e){if(null===e)return null;const t=e.trim();if(!t)throw new uc(400,"Runtime option cannot be empty.");return t}function Pp(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new uc(400,"reasoningEffort is invalid.");return e}function Dp(e){if(null===e||"fast"===e||"flex"===e)return e;throw new uc(400,"serviceTier is invalid.")}function Lp(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new uc(400,"collaborationMode is invalid.")}function Rp(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new uc(400,"permissionMode is invalid.")}function $p(e){const t=e?.trim();return t||null}function qp(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}function _p(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function Up(e){const t=function(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"new thread"===t||"chat"===t||"codex chat"===t}function zp(e){const t=e.split(/\s+/).map(e=>e.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu,"")).filter(Boolean).slice(0,5);if(!t.length)return null;const n=t.join(" ");return`${n.charAt(0).toUpperCase()}${n.slice(1)}`.slice(0,80)}function Op(e,t,n){yh(e,t,n)}function jp(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}function Fp(e){return Xc.getRuntime({accountId:e.id,args:Bp(e.args),command:e.command,environment:Vc(e.environment),workingDirectory:null})}function Bp(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Gp(e){const t=Wc(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name];for(const i of n){const e=_p(Qc(i)??"");if(e)return e}const a=_p(Qc(t.title)??"");if(a&&!Up(a))return a;const r=Wc(t.thread);return r?Gp(r):null}async function Hp(e,t,n){const a=_p(n);if(!a||Up(a))return!1;const r=await Ah(t);return!(r?.title&&!Up(r.title))&&(await Wp(t,a),Kp(e,t,a),!0)}async function Kp(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}async function Wp(e,t){const n=_p(t);n&&!Up(n)&&Op(e,"chat.updated",await rf(e,await Ch(e,{title:n})))}var Qp=qn({action:()=>Jp,loader:()=>Vp});async function Vp({request:e}){try{return fc(e,["GET"]),await Lc(e),mc(await async function(){const[e,t]=await Promise.all([kh(),tf()]),n=new Map(e.map(e=>[e.threadId,e])),a=new Set([...t.keys(),...jh.keys()]);return(await Promise.all([...a].map(e=>rf(e,n.get(e)??null,t.get(e)??null)))).filter(e=>"ARCHIVED"!==e.status).sort((e,t)=>new Date(t.lastActivityAt).getTime()-new Date(e.lastActivityAt).getTime()||new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}())}catch(t){return Nc(t)}}async function Jp({request:e}){try{fc(e,["POST"]),await Lc(e);const t=await pc(e);return mc(await async function(e){const t=await ef(e.accountId),n=Ph(e.workingDirectory),a=void 0===e.collaborationMode?"default":Lp(e.collaborationMode),r=void 0===e.permissionMode?"default":Rp(e.permissionMode),i=Fp(t),s=await Of(i,null,n),o=await Ch(s,{accountId:t.id,autoRotateAccount:e.autoRotateAccount??!1,collaborationMode:a,model:void 0===e.model?void 0:Sp(e.model),permissionMode:r,reasoningEffort:void 0===e.reasoningEffort?void 0:Pp(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Dp(e.serviceTier),title:_p(e.title??"")??null,workingDirectory:n}),d=await cf(s);d.accountId=t.id,d.primed=!0,d.runtime=i,d.updatedAt=new Date;const c=await rf(s,o);return Op(s,"chat.updated",c),c}({accountId:gc(t.accountId,"accountId",{required:!0}),autoRotateAccount:wc(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:gc(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:gc(t.model,"model",{maxLength:160}),reasoningEffort:Xp(t.reasoningEffort,"reasoningEffort"),serviceTier:Xp(t.serviceTier,"serviceTier"),collaborationMode:Xp(t.collaborationMode,"collaborationMode"),permissionMode:Xp(t.permissionMode,"permissionMode"),title:gc(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return Nc(t)}}function Xp(e,t){return null===e?null:gc(e,t,{maxLength:80})}var Yp=qn({action:()=>eg,loader:()=>Zp});async function Zp({request:e,params:t}){try{return fc(e,["GET"]),await Lc(e),mc(await Wh(yc(t,"chatId")))}catch(n){return Nc(n)}}async function eg({request:e,params:t}){try{await Lc(e);const n=yc(t,"chatId");if("PATCH"===e.method){const t=await pc(e);return mc(await Qh(n,{accountId:gc(t.accountId,"accountId"),autoRotateAccount:wc(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:gc(t.model,"model",{maxLength:160}),reasoningEffort:tg(t.reasoningEffort,"reasoningEffort"),serviceTier:tg(t.serviceTier,"serviceTier"),collaborationMode:tg(t.collaborationMode,"collaborationMode"),permissionMode:tg(t.permissionMode,"permissionMode"),title:gc(t.title,"title",{maxLength:160}),workingDirectory:gc(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return mc(await Vh(n));hc(e.method)}catch(n){return Nc(n)}}function tg(e,t){return null===e?null:gc(e,t,{maxLength:80})}var ng=qn({loader:()=>ag});async function ag({request:e,params:t}){try{return fc(e,["GET"]),await Lc(e),mc(await async function(e){return await Wh(e),{usage:await bm(e)}}(yc(t,"chatId")))}catch(n){return Nc(n)}}var rg=qn({loader:()=>ig});async function ig({request:e,params:t}){try{fc(e,["GET"]),await Lc(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new uc(400,"path is required.");return mc(await qh(yc(t,"chatId"),a,xc(n,"line",0)||null))}catch(n){return Nc(n)}}var sg=An(Nn);async function og(e){const t=await cg(e),n=await lg(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await ug(t.cwd),r=await mg(t.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"]),[i,s]=function(e){const t=e?.trim().split(/\s+/)??[],n=Number(t[0]??0),a=Number(t[1]??0);return[Number.isFinite(n)?n:0,Number.isFinite(a)?a:0]}(r?await mg(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await hg(t.cwd,["status","--porcelain=v1"])).split(/\r?\n/).map(e=>e.trimEnd()).filter(Boolean).map(e=>{const t=e.slice(0,1),n=e.slice(1,2);return{path:e.slice(3).replace(/^"|"$/g,""),staged:t,status:`${t}${n}`.trim()||"??",unstaged:n}});return{ahead:s,behind:i,branch:a,changedFiles:o,clean:0===o.length,isRepo:!0,root:n,upstream:r}}async function dg(e,t){const n=await cg(e);if("RUNNING"===n.status)throw new uc(409,"Git actions are disabled while Codex is running.");if(!(await lg(n.cwd)))throw new uc(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=fg(t.branch);a=await hg(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=fg(t.branch);await hg(n.cwd,["check-ref-format","--branch",e]),a=await hg(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new uc(400,"Commit message is required.");await hg(n.cwd,["add","-A"]),a=await hg(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await hg(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new uc(400,"Unsupported git action.");a=await mg(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await hg(n.cwd,["push"]):await async function(e){await hg(e,["remote","get-url","origin"]);const t=await ug(e);if(!t)throw new uc(400,"Cannot push while detached from a branch.");return hg(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:gg(t.action),output:a,status:await og(e)}}async function cg(e){const t=await Eh(e);if(!t)throw new uc(400,"Chat does not have a working directory.");return{cwd:Ph(t),status:Zh(e)}}async function lg(e){return mg(e,["rev-parse","--show-toplevel"])}async function ug(e){return await mg(e,["symbolic-ref","--quiet","--short","HEAD"])??await mg(e,["rev-parse","--short","HEAD"])}async function mg(e,t){try{return await hg(e,t)}catch{return null}}async function hg(e,t){try{const n=await sg("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return pg(n.stdout,n.stderr)}catch(n){throw new uc(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return pg("string"==typeof t.stderr?t.stderr:null,"string"==typeof t.stdout?t.stdout:null)||("string"==typeof t.message?t.message:null)||"Git command failed."}(n))}}function fg(e){const t=e?.trim();if(!t)throw new uc(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new uc(400,"Branch name is invalid.");return t}function pg(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function gg(e){switch(e){case"checkout":return"Branch switched.";case"createBranch":return"Branch created.";case"commit":return"Commit created.";case"pull":return"Pull completed.";case"push":return"Push completed."}}async function vg({request:e,params:t}){try{fc(e,["GET"]),await Lc(e);const n=yc(t,"chatId"),a=yc(t,"operation"),r=new URL(e.url);if("status"===a)return mc(await og(n));if("branches"===a)return mc(await async function(e){const t=await cg(e);if(!(await lg(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await ug(t.cwd);return{branches:(await hg(t.cwd,["branch","--format=%(HEAD)%09%(refname:short)"])).split(/\r?\n/).map(e=>{const[t,n]=e.split("\t"),a=n?.trim();return a?{current:"*"===t.trim(),name:a}:null}).filter(e=>!!e),current:n,defaultBranch:(await mg(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return mc(await async function(e,t){const n=await cg(e);if(!(await lg(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=pg(await mg(n.cwd,["diff","--stat",...a]),await mg(n.cwd,["diff","--cached","--stat",...a]));return{diff:pg(await mg(n.cwd,["diff","--no-ext-diff",...a]),await mg(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));if("history"===a)return mc(await async function(e){const t=await cg(e);return await lg(t.cwd)?{commits:(n=await mg(t.cwd,["log","--max-count=80","--date=iso-strict","--pretty=format:%H%x1f%h%x1f%an%x1f%ae%x1f%aI%x1f%D%x1f%s%x1e","--decorate=short","--all"])??"",n.split("").map(e=>e.trim()).filter(Boolean).map(e=>{const[t,n,a,r,i,s,...o]=e.split("");return t&&n?{authorEmail:r??"",authorName:a??"",authoredAt:i??"",hash:t,refs:(s??"").split(",").map(e=>e.trim()).filter(Boolean),shortHash:n,subject:o.join("")||"(no subject)"}:null}).filter(e=>!!e)),isRepo:!0}:{commits:[],isRepo:!1};var n}(n));throw new uc(404,"Git operation not found.")}catch(n){return Nc(n)}}async function wg({request:e,params:t}){try{if(fc(e,["POST"]),await Lc(e),"action"!==yc(t,"operation"))throw new uc(404,"Git operation not found.");const n=await pc(e),a={action:bg(n.action),branch:gc(n.branch,"branch",{maxLength:240}),message:gc(n.message,"message",{maxLength:5e3})};return mc(await dg(yc(t,"chatId"),a))}catch(n){return Nc(n)}}function bg(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new uc(400,"action is invalid.")}async function xg({request:e,params:t}){try{fc(e,["GET"]),await Lc(e);const n=new URL(e.url);return mc(await Jh(yc(t,"chatId"),xc(n,"afterSequence",0),xc(n,"limit",50)))}catch(n){return Nc(n)}}async function yg({request:e,params:t}){try{fc(e,["POST"]),await Lc(e);const n=await pc(e),a={content:Ig(n.content),accountId:gc(n.accountId,"accountId"),attachments:kg(n.attachments),collaborationMode:Tg(n.collaborationMode,"collaborationMode"),delivery:Ng(n.delivery),metadata:bc(n.metadata,"metadata")};return mc(await Yh(yc(t,"chatId"),a),{status:201})}catch(n){return Nc(n)}}function Ng(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new uc(400,"delivery is invalid.")}}function Ig(e){if(null==e)return"";if("string"!=typeof e)throw new uc(400,"content must be a string.");if(e.length>4e4)throw new uc(400,"content must be 40000 characters or fewer.");return e.trim()}function kg(e){if(void 0!==e){if(!Array.isArray(e))throw new uc(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new uc(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:Ag(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Cg(n.mimeType,`attachments[${t}].mimeType`,80),name:Cg(n.name,`attachments[${t}].name`,160),size:Eg(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Cg(n.name,`attachments[${t}].name`,160),path:Ag(n.path,`attachments[${t}].path`,4096),size:Eg(n.size,`attachments[${t}].size`)};throw new uc(400,`attachments[${t}].kind is invalid.`)})}}function Ag(e,t,n){if("string"!=typeof e||!e.trim())throw new uc(400,`${t} is required.`);if(e.length>n)throw new uc(400,`${t} is too large.`);return e}function Cg(e,t,n){if(null!=e){if("string"!=typeof e)throw new uc(400,`${t} must be a string.`);if(e.length>n)throw new uc(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function Eg(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new uc(400,`${t} must be a positive number.`);return e}}function Tg(e,t){return null===e?null:gc(e,t,{maxLength:80})}async function Mg({request:e,params:t}){try{return fc(e,["POST"]),await Lc(e),mc(await async function(e){if("RUNNING"!==(await Wh(e)).status)throw new uc(409,"There is no running task to stop.");const t=jh.get(e);if(!t?.runId)throw new uc(409,"There is no active run to stop.");return t.interruptRequested=!0,t.runtime&&t.turnId&&await Ef(t.runtime,t.turnId,e),{chatId:e,runId:t.runId,status:"RUNNING"===t.status?"RUNNING":"QUEUED",message:t.turnId?"Stop signal sent to Codex.":"Stop requested. Codex will be interrupted as soon as the turn starts."}}(yc(t,"chatId")))}catch(n){return Nc(n)}}async function Sg({request:e,params:t}){try{return fc(e,["POST"]),await Lc(e),mc(await async function(e,t){await Wh(e);const n=jh.get(e);if(!n||"RUNNING"!==n.status&&"QUEUED"!==n.status)throw new uc(409,"There is no running task to steer.");if(!n.runtime)throw new uc(409,"The active turn is not ready for steering yet.");const a=n.queuedTurns.findIndex(e=>e.id===t);if(a<0)throw new uc(410,"Queued message is no longer pending.");const r=n.queuedTurns[a],i=n.turnId??await Sf(n.runtime,e);if(!i)throw new uc(409,"The active turn has not published a turn id yet.");const s=await Ah(e),o=await Gf(n.runtime,s?.model??null,s?.reasoningEffort??null);n.turnId=Jf(await Tf(n.runtime,{expectedTurnId:i,threadId:e,...Ff(r.collaborationMode,o)},r.content,r.attachments))??i,n.queuedTurns.splice(a,1);const d=new Date,c=mf(e,r.messageId,{completedAt:d,metadataPatch:{delivery:"steer",queueStatus:"steered",runId:n.runId??null,steeredAt:d.toISOString()},turnId:n.turnId});if(!c)throw new uc(410,"Queued message is no longer available.");return Op(e,"chat.updated",await Wh(e)),Op(e,"message.updated",c),c}(yc(t,"chatId"),yc(t,"queueId")))}catch(n){return Nc(n)}}async function Pg({request:e,params:t}){try{fc(e,["POST"]),await Lc(e);const n=await pc(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new uc(400,"kind must be approval, permissions, or userInput.")}(n.kind);return mc(await Xh(yc(t,"chatId"),yc(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return Nc(n)}}async function Dg({request:e}){try{return fc(e,["GET"]),await Lc(e),mc(await Mh(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return Nc(t)}}async function Lg({request:e}){try{fc(e,["POST"]),await Lc(e);const t=await pc(e),n={parentPath:gc(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:gc(t.name,"name",{required:!0,maxLength:255})};return mc(await Sh(n.parentPath,n.name),{status:201})}catch(t){return Nc(t)}}var Rg={entry:{module:"/assets/entry.client-D7Yyv89q.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/react-dom-Cmetac4J.js"],css:[]},routes:{root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!0,module:"/assets/root-BU4hb_em.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/react-dom-Cmetac4J.js","/assets/document-title-CVCGo83t.js","/assets/api-Bq1vju8d.js","/assets/session-provider-Bxa1AL3n.js","/assets/usePositioner-DoPOYGgd.js","/assets/triangle-alert-CX-fS3B2.js"],css:["/assets/root-C6Tru0U5.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/connect-BpTBAcLO.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/input-DmJ6N0Sh.js","/assets/label-PRFnRUMj.js","/assets/api-Bq1vju8d.js","/assets/session-provider-Bxa1AL3n.js"],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/favicon.ico-BGeA4faG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/app-layout-DcqaA3vs.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/header-menu-BZ8Qg4Vi.js","/assets/popover-DTbjnDSA.js","/assets/input-DmJ6N0Sh.js","/assets/label-PRFnRUMj.js","/assets/document-title-CVCGo83t.js","/assets/api-Bq1vju8d.js","/assets/session-provider-Bxa1AL3n.js","/assets/usePositioner-DoPOYGgd.js","/assets/folder-open-BGVSSdnS.js","/assets/react-dom-Cmetac4J.js"],css:["/assets/header-menu-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/home-bVxFnHUg.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/composer-controls-C-i2mGP0.js","/assets/popover-DTbjnDSA.js","/assets/input-DmJ6N0Sh.js","/assets/api-Bq1vju8d.js","/assets/usePositioner-DoPOYGgd.js","/assets/folder-open-BGVSSdnS.js","/assets/react-dom-Cmetac4J.js"],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!0,hasErrorBoundary:!1,module:"/assets/chat-C98BY8zv.js",imports:["/assets/jsx-runtime-BD6xVgfN.js","/assets/header-menu-BZ8Qg4Vi.js","/assets/composer-controls-C-i2mGP0.js","/assets/popover-DTbjnDSA.js","/assets/input-DmJ6N0Sh.js","/assets/api-Bq1vju8d.js","/assets/usePositioner-DoPOYGgd.js","/assets/triangle-alert-CX-fS3B2.js","/assets/react-dom-Cmetac4J.js"],css:["/assets/header-menu-DdKuH37F.css"],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/health-OjIoaxn7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.status-FGYJfLVM.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.exchange-CkPWDiGV.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.auth.session-DOeXMy_2.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts-x_2c5-qG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.export-CwjXUcyG.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.import-Km-76sRE.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.personalization":{id:"routes/api.accounts.personalization",parentId:"root",path:"api/accounts/personalization",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.personalization-DH1AzvNF.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.import-local-active":{id:"routes/api.accounts.import-local-active",parentId:"root",path:"api/accounts/import-local-active",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.import-local-active-D9cdi-v4.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.login-callback-port":{id:"routes/api.accounts.login-callback-port",parentId:"root",path:"api/accounts/login-callback-port",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts.login-callback-port-DQNbFsFb.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.local-active":{id:"routes/api.accounts.$accountId.local-active",parentId:"root",path:"api/accounts/:accountId/local-active",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.local-active-Lj56Skb8.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId-DbJR7wIK.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.runtime-settings-DTZTQ21Z.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.personalization":{id:"routes/api.accounts.$accountId.personalization",parentId:"root",path:"api/accounts/:accountId/personalization",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.personalization-DQAPMa-w.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.models":{id:"routes/api.accounts.$accountId.models",parentId:"root",path:"api/accounts/:accountId/models",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.models-BbNPhoBD.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.rate-limits":{id:"routes/api.accounts.$accountId.rate-limits",parentId:"root",path:"api/accounts/:accountId/rate-limits",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.rate-limits-C6Rs4m-7.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate":{id:"routes/api.accounts.$accountId.authenticate",parentId:"root",path:"api/accounts/:accountId/authenticate",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate-zJk1OPH-.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.accounts.$accountId.authenticate.callback":{id:"routes/api.accounts.$accountId.authenticate.callback",parentId:"root",path:"api/accounts/:accountId/authenticate/callback",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.accounts._accountId.authenticate.callback-C3q2njBk.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats-s886wBuI.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId-BdQ0D5mb.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.context":{id:"routes/api.chats.$chatId.context",parentId:"root",path:"api/chats/:chatId/context",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.context-h_lwoA2q.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.files":{id:"routes/api.chats.$chatId.files",parentId:"root",path:"api/chats/:chatId/files",index:void 0,caseSensitive:void 0,hasAction:!1,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.files-Cx0zOZBK.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.git._operation-DogyaTuw.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.messages-lfOVkPe8.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.interrupt-DFwcHue_.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.queued.$queueId.steer":{id:"routes/api.chats.$chatId.queued.$queueId.steer",parentId:"root",path:"api/chats/:chatId/queued/:queueId/steer",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.queued._queueId.steer-Dob8lziy.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!1,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.chats._chatId.server-requests._requestId.respond-CtGOWFXz.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,hasAction:!0,hasLoader:!0,hasClientAction:!1,hasClientLoader:!1,hasClientMiddleware:!1,hasDefaultExport:!1,hasErrorBoundary:!1,module:"/assets/api.workspaces.directories-_nGjLu4v.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-dbfd578d.js",version:"dbfd578d",sri:void 0},$g="build/client",qg="/",_g={unstable_optimizeDeps:!0,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},Ug=!0,zg=!1,Og=[],jg={mode:"lazy",manifestPath:"/__manifest"},Fg="/",Bg={module:_n},Gg={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:Na},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:Ra},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:qa},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:qs},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:ho},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:cc},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:Ic},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:jc},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:Bc},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:Hc},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:bu},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:Iu},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:Au},"routes/api.accounts.personalization":{id:"routes/api.accounts.personalization",parentId:"root",path:"api/accounts/personalization",index:void 0,caseSensitive:void 0,module:Eu},"routes/api.accounts.import-local-active":{id:"routes/api.accounts.import-local-active",parentId:"root",path:"api/accounts/import-local-active",index:void 0,caseSensitive:void 0,module:Su},"routes/api.accounts.login-callback-port":{id:"routes/api.accounts.login-callback-port",parentId:"root",path:"api/accounts/login-callback-port",index:void 0,caseSensitive:void 0,module:Ou},"routes/api.accounts.$accountId.local-active":{id:"routes/api.accounts.$accountId.local-active",parentId:"root",path:"api/accounts/:accountId/local-active",index:void 0,caseSensitive:void 0,module:Bu},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:Hu},"routes/api.accounts.$accountId.runtime-settings":{id:"routes/api.accounts.$accountId.runtime-settings",parentId:"root",path:"api/accounts/:accountId/runtime-settings",index:void 0,caseSensitive:void 0,module:Qu},"routes/api.accounts.$accountId.personalization":{id:"routes/api.accounts.$accountId.personalization",parentId:"root",path:"api/accounts/:accountId/personalization",index:void 0,caseSensitive:void 0,module:Xu},"routes/api.accounts.$accountId.models":{id:"routes/api.accounts.$accountId.models",parentId:"root",path:"api/accounts/:accountId/models",index:void 0,caseSensitive:void 0,module:sm},"routes/api.accounts.$accountId.rate-limits":{id:"routes/api.accounts.$accountId.rate-limits",parentId:"root",path:"api/accounts/:accountId/rate-limits",index:void 0,caseSensitive:void 0,module:dm},"routes/api.accounts.$accountId.authenticate":{id:"routes/api.accounts.$accountId.authenticate",parentId:"root",path:"api/accounts/:accountId/authenticate",index:void 0,caseSensitive:void 0,module:lm},"routes/api.accounts.$accountId.authenticate.callback":{id:"routes/api.accounts.$accountId.authenticate.callback",parentId:"root",path:"api/accounts/:accountId/authenticate/callback",index:void 0,caseSensitive:void 0,module:mm},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Qp},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:Yp},"routes/api.chats.$chatId.context":{id:"routes/api.chats.$chatId.context",parentId:"root",path:"api/chats/:chatId/context",index:void 0,caseSensitive:void 0,module:ng},"routes/api.chats.$chatId.files":{id:"routes/api.chats.$chatId.files",parentId:"root",path:"api/chats/:chatId/files",index:void 0,caseSensitive:void 0,module:rg},"routes/api.chats.$chatId.git.$operation":{id:"routes/api.chats.$chatId.git.$operation",parentId:"root",path:"api/chats/:chatId/git/:operation",index:void 0,caseSensitive:void 0,module:qn({action:()=>wg,loader:()=>vg})},"routes/api.chats.$chatId.messages":{id:"routes/api.chats.$chatId.messages",parentId:"root",path:"api/chats/:chatId/messages",index:void 0,caseSensitive:void 0,module:qn({action:()=>yg,loader:()=>xg})},"routes/api.chats.$chatId.interrupt":{id:"routes/api.chats.$chatId.interrupt",parentId:"root",path:"api/chats/:chatId/interrupt",index:void 0,caseSensitive:void 0,module:qn({action:()=>Mg})},"routes/api.chats.$chatId.queued.$queueId.steer":{id:"routes/api.chats.$chatId.queued.$queueId.steer",parentId:"root",path:"api/chats/:chatId/queued/:queueId/steer",index:void 0,caseSensitive:void 0,module:qn({action:()=>Sg})},"routes/api.chats.$chatId.server-requests.$requestId.respond":{id:"routes/api.chats.$chatId.server-requests.$requestId.respond",parentId:"root",path:"api/chats/:chatId/server-requests/:requestId/respond",index:void 0,caseSensitive:void 0,module:qn({action:()=>Pg})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:qn({action:()=>Lg,loader:()=>Dg})}},Hg=!1;export{Hg as allowedActionOrigins,Rg as assets,$g as assetsBuildDirectory,qg as basename,Bg as entry,_g as future,zg as isSpaMode,Og as prerender,Fg as publicPath,jg as routeDiscovery,Gg as routes,Ug as ssr};
|