xedoc-cli 0.1.18 → 0.1.20
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/README.md +42 -0
- package/bin/xedoc.mjs +578 -50
- package/build/server/index.js +1 -1
- package/package.json +1 -1
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 x,jsx as b,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 O,toast as j}from"sonner";import{AlertTriangle as z,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 xe,Import as be,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 Oe,PlugZap as je,Plus as ze,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 xt}from"@base-ui/react/scroll-area";import{Separator as bt}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 Ot from"remark-gfm";import"dotenv/config";import{createHash as jt,createHmac as zt,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 xn,resolve as bn,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:()=>On,streamTimeout:()=>Un}),Un=5e3;function On(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(b(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 jn=({...e})=>{const{theme:t="system"}=M();return b(O,{theme:t,className:"toaster group",icons:{success:b(ee,{className:"size-4"}),info:b(Ne,{className:"size-4"}),warning:b(nt,{className:"size-4"}),error:b($e,{className:"size-4"}),loading:b(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 zn(...e){return lt(ct(e))}function Fn({delay:e=0,...t}){return b(dt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function Bn({...e}){return b(dt.Root,{"data-slot":"tooltip",...e})}function Gn({...e}){return b(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 b(dt.Portal,{children:b(dt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(dt.Popup,{"data-slot":"tooltip-content",className:zn("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,b(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(xa,ba,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 b(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 xa(){return()=>{}}function ba(){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:[b("meta",{charSet:"utf-8"}),b("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),b(a,{}),b(n,{})]}),y("body",{children:[e,b(o,{}),b(s,{})]})]})}var Ca=c(function(){const[e]=_(()=>new N({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return b(T,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:b(I,{client:e,children:y(Fn,{children:[b(va,{children:b(i,{})}),b(jn,{richColors:!0})]})})})}),Ea=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return b("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:[b("h1",{className:"text-lg font-semibold",children:"xedoc"}),b("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 b(ut,{"data-slot":"button",className:zn(Ta({variant:t,size:n,className:e})),...a})}function Sa({className:e,type:t,...n}){return b(ht,{type:t,"data-slot":"input",className:zn("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 b("label",{"data-slot":"label",className:zn("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 b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return b(r,{replace:!0,to:"/"});if(null===i)return b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(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 b("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:[b("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:b(g?Ie:je,{className:"size-5"})}),y("div",{children:[b("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),b("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:[b(Pa,{htmlFor:"server-password",children:"Server password"}),b(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:[b(Pa,{htmlFor:"server-password-confirm",children:"Confirm password"}),b(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?b("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?b(Ce,{className:"animate-spin"}):b(g?Ie:je,{}),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 b(Da,{})}),qa=qn({loader:()=>_a});function _a(){return m("/favicon.svg",301)}function Ua({...e}){return b(ft.Root,{"data-slot":"alert-dialog",...e})}function Oa({...e}){return b(ft.Portal,{"data-slot":"alert-dialog-portal",...e})}function ja({className:e,...t}){return b(ft.Backdrop,{"data-slot":"alert-dialog-overlay",className:zn("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 za({className:e,size:t="default",...n}){return y(Oa,{children:[b(ja,{}),b(ft.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:zn("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 b("div",{"data-slot":"alert-dialog-header",className:zn("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 b("div",{"data-slot":"alert-dialog-footer",className:zn("-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 b(ft.Title,{"data-slot":"alert-dialog-title",className:zn("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 b(ft.Description,{"data-slot":"alert-dialog-description",className:zn("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 b(Ma,{"data-slot":"alert-dialog-action",className:zn(e),...t})}function Wa({className:e,variant:t="outline",size:n="default",...a}){return b(ft.Close,{"data-slot":"alert-dialog-cancel",className:zn(e),render:b(Ma,{variant:t,size:n}),...a})}function Qa({...e}){return b(pt.Root,{"data-slot":"dialog",...e})}function Va({...e}){return b(pt.Trigger,{"data-slot":"dialog-trigger",...e})}function Ja({...e}){return b(pt.Portal,{"data-slot":"dialog-portal",...e})}function Xa({className:e,...t}){return b(pt.Backdrop,{"data-slot":"dialog-overlay",className:zn("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:[b(Xa,{}),y(pt.Popup,{"data-slot":"dialog-content",className:zn("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:b(Ma,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[b(st,{}),b("span",{className:"sr-only",children:"Close"})]})]})]})}function Za({className:e,...t}){return b("div",{"data-slot":"dialog-header",className:zn("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:zn("-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&&b(pt.Close,{render:b(Ma,{variant:"outline"}),children:"Close"})]})}function tr({className:e,...t}){return b(pt.Title,{"data-slot":"dialog-title",className:zn("font-heading text-base leading-none font-medium",e),...t})}function nr({className:e,...t}){return b(pt.Description,{"data-slot":"dialog-description",className:zn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function ar({...e}){return b(gt.Root,{"data-slot":"dropdown-menu",...e})}function rr({...e}){return b(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 b(gt.Portal,{children:b(gt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:b(gt.Popup,{"data-slot":"dropdown-menu-content",className:zn("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 b(gt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:zn("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 b(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:zn("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,b(Y,{className:"ml-auto"})]})}function cr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return b(ir,{"data-slot":"dropdown-menu-sub-content",className:zn("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 b(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:zn("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:[b("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:b(gt.RadioItemIndicator,{children:b(V,{})})}),t]})}function mr({className:e,...t}){return b(gt.Separator,{"data-slot":"dropdown-menu-separator",className:zn("-mx-1 my-1 h-px bg-border",e),...t})}function hr({className:e,...t}){return b("textarea",{"data-slot":"textarea",className:zn("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:zn(fr({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function gr({className:e,status:t}){return b(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 b(Qa,{open:!!a,onOpenChange:e=>{e||s()},children:y(Ya,{className:"max-w-2xl",children:[y(Za,{children:[b(tr,{children:l?"Device authentication":"Normal authentication"}),b(nr,{children:a?.accountName??"Codex account"})]}),y("div",{className:"grid gap-4",children:[b("div",{className:zn("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:[b(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:[b(Sa,{className:"font-mono text-xs",id:"account-auth-url",readOnly:!0,value:a.authUrl}),y(Ma,{variant:"outline",onClick:c,children:[b(se,{}),"Reopen"]})]})]}):null,l&&a?.userCode?y("div",{className:"grid gap-2",children:[b(Pa,{htmlFor:"account-device-code",children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[b(Sa,{className:"font-mono text-sm tracking-wider",id:"account-device-code",readOnly:!0,value:a.userCode}),y(Ma,{variant:"outline",onClick:d,children:[b(ae,{}),"Copy"]})]})]}):null,y("div",{className:"grid gap-2",children:[b(Pa,{htmlFor:"account-callback-url",children:"Response URL"}),b(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)}),b("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?b("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:[b(it,{}),"Close"]}),"AUTHENTICATING"===a?.status?y(Ma,{disabled:!a.accountId||t,variant:"destructive",onClick:i,children:[t?b(Ce,{className:"animate-spin"}):b(it,{}),"Cancel Auth"]}):null,y(Ma,{disabled:!a?.authUrl,variant:"secondary",onClick:c,children:[b(se,{}),"Reopen Link"]}),y(Ma,{disabled:!a?.accountId||!e.trim()||n,onClick:o,children:[n?b(Ce,{className:"animate-spin"}):b(Q,{}),"Submit Response URL"]})]})]})})}function xr(e){return"browser"===e||"device"===e?e:null}function br(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=xr(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",x="CONNECTED"===e.status&&!e.isLocalCodexActive,N="device"===f?"Device login pending":"Browser login pending";return b("div",{className:zn("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:[b("div",{className:"min-w-0 max-w-full truncate font-medium",children:e.displayName}),b($r,{planType:o?.planType}),e.isLocalCodexActive?b(qr,{}):null]}),b("div",{className:"truncate text-xs text-muted-foreground",children:Or(e)})]}),y("div",{className:"flex shrink-0 items-center gap-2",children:[b(_r,{account:e}),y(ar,{children:[y(rr,{render:b(Ma,{size:"icon-sm",variant:"ghost"}),children:[t||a||r?b(Ce,{className:"animate-spin"}):b(Re,{}),b("span",{className:"sr-only",children:"Account actions"})]}),y(ir,{align:"end",className:"w-48",children:[y(sr,{disabled:t,onClick:()=>d(v),children:[p?b(Ce,{className:"animate-spin"}):"AUTHENTICATING"===e.status?b(He,{}):b(se,{}),"AUTHENTICATING"===e.status?w:"Normal Auth"]}),y(sr,{disabled:t,onClick:()=>d("device"),children:[g?b(Ce,{className:"animate-spin"}):b(Ie,{}),"Device Auth"]}),y(sr,{disabled:!x||r,onClick:m,children:[r?b(Ce,{className:"animate-spin"}):b(ke,{}),e.isLocalCodexActive?"Local Active":"Make Local Active"]}),"AUTHENTICATING"===e.status?y(sr,{disabled:a,variant:"destructive",onClick:c,children:[a?b(Ce,{className:"animate-spin"}):b(it,{}),"Cancel Auth"]}):null,"AUTHENTICATING"===e.status||e.lastAuthUrl?y(sr,{onClick:h,children:[b(se,{}),"Authentication Details"]}):null,b(mr,{}),y(sr,{onClick:u,children:[b(Ue,{}),"Edit"]}),y(sr,{variant:"destructive",onClick:l,children:[b(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:[b(Ur,{accountStatus:e.status,label:i,pending:s,snapshot:o}),"AUTHENTICATING"===e.status?b("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?b(Ce,{className:"animate-spin"}):b(it,{}),"Cancel"]}):null]})]})})}function $r({planType:e}){return e?b(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:[b(ke,{}),"local active"]})}function _r({account:e}){const t=e.lastError?.trim();return t?y(Bn,{children:[b(Gn,{render:b("span",{className:"inline-flex cursor-help"}),children:b(gr,{status:e.status})}),b(Hn,{align:"start",className:"max-w-96 whitespace-pre-wrap break-words text-left leading-relaxed",side:"right",children:t})]}):b(gr,{status:e.status})}function Ur({accountStatus:e,label:t,pending:n,snapshot:a}){if("CONNECTED"!==e)return b("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 b("div",{className:"grid gap-1.5",children:y("div",{className:zn("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?b(Ce,{className:"size-3 animate-spin"}):null,b("span",{children:r})]})})}function Or(e){return[e.command,...e.args??[]].filter(Boolean).join(" ")}var jr={args:"",command:"",displayName:"",environment:""};function zr({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]=_(jr),[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=xr(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(""),j.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"!==xr(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),j.error(Wr(e))},onSuccess:({account:e,auth:t,popup:n})=>{P(),ee(t,n,e)}}),O=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=>j.error(Wr(e)),onSuccess:()=>{p(null),v(jr),j.success("Account updated."),P()}}),z=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),j.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=>j.error(Wr(e)),onSuccess:e=>{te(),c(null),u(""),j.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),j.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=>j.error(Wr(e)),onSuccess:()=>{N(null),j.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=>j.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),j.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=>j.error(Wr(e)),onSuccess:e=>{T.setQueryData(M,e),e.inUse?j.warning(`${e.host}:${e.port} is still in use. The process may need more time to exit.`):j.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(),j.error(Wr(e))},onSuccess:(e,t)=>{j.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&&j.info(`${a} more ${Kr(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&j.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=>j.error(Wr(e)),onSuccess:e=>{j.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=>j.error(Wr(e)),onSuccess:e=>{j.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||(j.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??xr(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 j.info("device"===e.authMode?"Device login page opened.":"Authentication page opened. xedoc is listening for the Codex callback.");te(t),"AUTHENTICATING"!==e.status?j.success(e.message??"Account is connected."):j.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(x,{children:[b("div",{className:"grid gap-5",children:y("section",{className:"grid gap-4",children:[b("div",{className:"flex flex-wrap items-start justify-between gap-3",children:y("div",{children:[b("h3",{className:"text-sm font-semibold",children:"Accounts"}),b("p",{className:"text-sm text-muted-foreground",children:"Search, authenticate, and inspect current Codex quota."})]})}),b(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:[b(We,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),b(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:[b("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(),j.error(Wr(a))}}}),y(Ma,{className:"w-full sm:w-auto",disabled:W.isPending,variant:"outline",onClick:()=>A.current?.click(),children:[W.isPending?b(Ce,{className:"animate-spin"}):b(at,{}),"Import"]}),y(Ma,{className:"w-full sm:w-auto",disabled:H.isPending,variant:"outline",onClick:()=>H.mutate(),children:[H.isPending?b(Ce,{className:"animate-spin"}):b(ie,{}),"Export"]}),y(ar,{open:s,onOpenChange:o,children:[y(rr,{render:b(Ma,{className:"w-full sm:w-auto"}),children:[U.isPending||V.isPending?b(Ce,{className:"animate-spin"}):b(ze,{}),"Add",b(J,{"data-icon":"inline-end"})]}),y(ir,{align:"end",className:"w-56",children:[y(sr,{disabled:U.isPending,onClick:()=>Z("browser"),children:[b(se,{}),"Normal Auth"]}),y(sr,{disabled:U.isPending,onClick:()=>Z("device"),children:[b(Ie,{}),"Device Auth"]}),b(mr,{}),y(sr,{disabled:V.isPending,onClick:()=>{o(!1),V.mutate()},children:[V.isPending?b(Ce,{className:"animate-spin"}):b(be,{}),"Import Local"]})]})]})]})]}),b("div",{className:"grid gap-2",children:D.length?D.map(r=>b(Rr,{account:r,authPending:z.isPending&&z.variables?.accountId===r.id,authPendingMode:z.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(br(a,n)),z.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(br(e,xr(e.lastAuthMode)??"browser"))}(r)},r.id)):b("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."})})]})}),b(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),j.success("Device code copied.")}catch{j.error("Could not copy device code.")}}(d?.userCode??"")},onReopen:()=>Vr(d?.authUrl)}),b(Qa,{open:!!f,onOpenChange:e=>{e||O.isPending||(p(null),v(jr))},children:y(Ya,{className:"max-w-2xl",children:[y(Za,{children:[y(tr,{children:["Edit ",f?.displayName??"account"]}),b(nr,{children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),b(Fr,{form:g,onChange:v,prefix:`edit-account-${f?.id??"selected"}`}),y(er,{children:[y(Ma,{variant:"outline",onClick:()=>{p(null),v(jr)},children:[b(it,{}),"Cancel"]}),y(Ma,{disabled:!g.displayName.trim()||O.isPending,onClick:()=>O.mutate(),children:[O.isPending?b(Ce,{className:"animate-spin"}):b(Q,{}),"Save account"]})]})]})}),b(Ua,{open:!!w,onOpenChange:e=>{e||N(null)},children:y(za,{children:[y(Fa,{children:[b(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:[b(Wa,{children:"Cancel"}),y(Ka,{disabled:G.isPending,variant:"destructive",onClick:()=>{w&&G.mutate(w.id)},children:[G.isPending?b(Ce,{className:"animate-spin"}):b(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:[b(Pa,{htmlFor:`${n}-name`,children:"Display name"}),b(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:[b(Pa,{htmlFor:`${n}-command`,children:"Command"}),b(Sa,{id:`${n}-command`,placeholder:"codex",value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),y("div",{className:"grid gap-2",children:[b(Pa,{htmlFor:`${n}-args`,children:"Arguments"}),b(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:[b(Pa,{htmlFor:`${n}-environment`,children:"Environment JSON"}),b(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:[b(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:[b("div",{className:"text-sm font-medium",children:"Login callback port is busy"}),b("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.`}),b("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?b(Ce,{className:"animate-spin"}):b(He,{}),"Refresh"]}),y(Ma,{disabled:!a.killable||n,size:"sm",variant:"destructive",onClick:r,children:[n?b(Ce,{className:"animate-spin"}):b(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(xt.Root,{"data-slot":"scroll-area",className:zn("relative",e),...r,children:[b(xt.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:zn("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}),b(Xr,{}),b(xt.Corner,{})]})}function Xr({className:e,orientation:t="vertical",...n}){return b(xt.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:zn("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:b(xt.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function Yr({className:e,orientation:t="horizontal",...n}){return b(bt,{"data-slot":"separator",orientation:t,className:zn("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 b(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:[b(tr,{children:"Settings"}),b(nr,{children:"Manage accounts, personalization, and project details."})]}),b(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:[b(ei,{active:"accounts"===r,icon:b(rt,{}),label:"Accounts",onClick:()=>o("accounts")}),b(ei,{active:"personalization"===r,icon:b(K,{}),label:"Personalization",onClick:()=>o("personalization")}),b(ei,{active:"info"===r,icon:b(ye,{}),label:"Info",onClick:()=>o("info")})]}),b(Jr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["personalization"===r?b(ti,{session:c}):null,"accounts"===r?b(zr,{accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:i,session:c}):null,"info"===r?b(ni,{}):null]})})]})]})})}function ei({active:e,icon:t,label:n,onClick:a}){return y(Ma,{"aria-pressed":e,className:zn("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=>j.error(ai(e)),onSuccess:e=>{a.setQueryData(["account-personalization"],e),a.invalidateQueries({queryKey:["account-personalization"]}),j.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:[b("h3",{className:"flex items-center text-sm font-semibold",children:"Custom instructions"}),b("p",{className:"mt-1 text-sm text-muted-foreground",children:"Saved to the shared Codex personalization file."})]}),y("div",{className:zn("text-xs text-muted-foreground",c&&"text-destructive"),children:[s.toLocaleString()," / ",o.toLocaleString()," bytes"]})]}),y("div",{className:"grid gap-2",children:[b(Pa,{htmlFor:"personalization-instructions",children:"AGENTS.md"}),b(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?b("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:[b("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?b(Ce,{className:"animate-spin"}):b(Be,{}),"Reload"]}),y(Ma,{disabled:!d||i.isPending,variant:"secondary",onClick:()=>n(r.data?.instructions??""),children:[b(Be,{}),"Reset"]}),y(Ma,{disabled:!d||c||r.isLoading||i.isPending,onClick:()=>i.mutate(),children:[i.isPending?b(Ce,{className:"animate-spin"}):b(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:[b(ye,{}),"Project"]}),b("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:[b("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:[b(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:[b(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:b(Ma,{size:"icon",variant:"ghost"}),children:[b(Ze,{className:"size-4 dark:hidden"}),b(De,{className:"hidden size-4 dark:block"}),b("span",{className:"sr-only",children:"Theme"})]}),y(ir,{align:"end",className:"w-40",children:[y(sr,{onClick:()=>e("light"),children:[b(Ze,{}),"Light","light"===n?b(W,{className:"ml-auto"}):null]}),y(sr,{onClick:()=>e("dark"),children:[b(De,{}),"Dark","dark"===n?b(W,{className:"ml-auto"}):null]}),y(sr,{onClick:()=>e("system"),children:[b(ke,{}),"System","system"===n?b(W,{className:"ml-auto"}):null]})]})]})}function ii({...e}){return b(pt.Root,{"data-slot":"sheet",...e})}function si({...e}){return b(pt.Portal,{"data-slot":"sheet-portal",...e})}function oi({className:e,...t}){return b(pt.Backdrop,{"data-slot":"sheet-overlay",className:zn("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:[b(oi,{}),y(pt.Popup,{"data-slot":"sheet-content","data-side":n,className:zn("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:b(Ma,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[b(st,{}),b("span",{className:"sr-only",children:"Close"})]})]})]})}function ci({className:e,...t}){return b("div",{"data-slot":"sheet-header",className:zn("flex flex-col gap-0.5 p-4",e),...t})}function li({className:e,...t}){return b(pt.Title,{"data-slot":"sheet-title",className:zn("font-heading text-base font-medium text-foreground",e),...t})}function ui({className:e,...t}){return b(pt.Description,{"data-slot":"sheet-description",className:zn("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 b(mi.Provider,{value:g,children:b("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:zn("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?b("div",{"data-slot":"sidebar",className:zn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?b(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:[b(li,{children:"Sidebar"}),b(ui,{children:"Displays the mobile sidebar."})]}),b("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:[b("div",{"data-slot":"sidebar-gap",className:zn("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)")}),b("div",{"data-slot":"sidebar-container","data-side":e,className:zn("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:b("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:zn(e),onClick:e=>{t?.(e),a()},...n,children:[b(qe,{}),b("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function vi({className:e,...t}){return b("main",{"data-slot":"sidebar-inset",className:zn("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 b("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:zn("flex flex-col gap-2 p-2",e),...t})}function xi({className:e,...t}){return b("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:zn("flex flex-col gap-2 p-2",e),...t})}function bi({className:e,...t}){return b("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:zn("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 b("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:zn("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:zn("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 b("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:zn("w-full text-sm",e),...t})}function ki({className:e,...t}){return b("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:zn("flex w-full min-w-0 flex-col gap-0",e),...t})}function Ai({className:e,...t}){return b("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:zn("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:zn(Ci({variant:n,size:a}),i)},s),render:r?b(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,b(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),[x,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=>j.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),A(""),M(""),j.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 O(){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]),b(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:[b(tr,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),b(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:[b(Ri,{label:"Home",onClick:function(){P?.path&&U(P.path)},children:b(we,{})}),b(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:b(fe,{})}),b(Ri,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:b(Be,{className:zn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[b(Li,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative hidden min-w-0 sm:block",children:[b(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),b(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:[b(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&&O()}}),b(Ri,{label:"Open path",onClick:O,children:b(X,{})})]}):null,y("div",{className:"flex min-w-0 items-center gap-2 sm:hidden",children:[b(Li,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative min-w-0 flex-1",children:[b(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),b(Sa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]})]}),b("div",{className:"min-h-0 bg-background",children:S.error?b("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."}):b(Jr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?b("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?b(Mi,{directory:P,entry:{name:(z=P.path,z.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||z),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:T,createFolderParentPath:I,createFolderPending:$.isPending,selectedPath:L,selectedType:u,session:i,showCreateFolder:x,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:[b("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),b("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:[b(W,{}),"file"===t?"Attach":"OK"]}),b(Ma,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var z}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),x=Oi(f)===Oi(r.path),N=v&&Oi(t)===Oi(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:[b(Pi,{entry:r,expanded:w,level:o,loading:I.isFetching,selected:x,onOpen:u,onSelect:m,onToggle:h}),w?y("div",{className:"min-w-0",children:[I.error?b("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?b("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?b(Si,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>b(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=>b(Di,{entry:e,level:o+1,selected:"file"===p&&Oi(f)===Oi(e.path),onSelect:m},e.path)),!k||A.length||N?null:b("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:[b("span",{}),b(fe,{className:"size-4 shrink-0 text-muted-foreground"}),b(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)}),b(Ri,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:b(W,{})}),b(Ri,{disabled:i,label:"Cancel new folder",onClick:n,children:b(it,{})})]})}function Pi({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:zn("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:[b("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:b(X,{className:zn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),b(t?he:me,{className:"size-4 shrink-0 text-muted-foreground"}),b("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:zn("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:[b("span",{}),b(ce,{className:"size-4 shrink-0"}),b("span",{className:"min-w-0 truncate",children:e.name})]})}function Li({onClick:e,showPath:t}){return b(Ri,{label:t?"Hide path":"Show path",pressed:t,onClick:e,children:b(t?oe:de,{})})}function Ri({children:e,disabled:t,label:n,onClick:a,pressed:r}){return y(Ma,{"aria-pressed":r,className:zn("size-7 p-0",r&&"bg-muted text-foreground"),disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,b("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 Oi(e){return Ui(e).toLocaleLowerCase()}function ji(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 zi(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=>j.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=>j.error(ds(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(x,{children:[b(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:[b(me,{className:"size-3.5 shrink-0 text-cyan-500"}),b("span",{className:"min-w-0 flex-1 truncate",children:e.name}),b("span",{className:"shrink-0 text-[0.68rem] font-normal text-muted-foreground",children:e.items.length}),b(J,{className:zn("size-3 shrink-0 text-muted-foreground transition-transform",t&&"-rotate-90")})]}),c?b(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:b(ze,{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:[b(Pe,{className:"size-3.5 text-muted-foreground"}),b("span",{className:"min-w-0 flex-1 truncate",children:e.title})]}),y(ar,{children:[y(rr,{render:b(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:[b(Le,{className:"size-4"}),b("span",{className:"sr-only",children:"Chat actions"})]}),y(ir,{align:"end",className:"w-40",children:[y(sr,{onClick:()=>{s(e),d(e.title)},children:[b(Ue,{}),"Rename"]}),y(sr,{onClick:()=>l(e),children:[b(F,{}),"Archive"]})]})]})]},e.id)),o>0?b("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:[b(J,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:["Show ",o," more"]})]})}):r&&e.items.length>4?b("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:[b(J,{className:"size-3.5 shrink-0 rotate-180"}),b("span",{className:"min-w-0 truncate",children:"Show less"})]})}):null]})]},e.key)}):b("div",{className:"px-2 py-3 text-sm text-muted-foreground",children:"No chats yet."})}),b(Qa,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ya,{children:[y(Za,{children:[b(tr,{children:"Rename chat"}),b(nr,{children:"Choose a short title for the sidebar."})]}),b(Sa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N.mutate()}}),b(er,{children:b(Ma,{disabled:N.isPending,onClick:()=>N.mutate(),children:"Save"})})]})}),b(Qa,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ya,{children:[y(Za,{children:[b(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:[b(Ma,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(Ma,{disabled:I.isPending||!c,variant:"destructive",onClick:()=>{c&&I.mutate(c)},children:[b(F,{}),"Archive"]})]})]})})]})}function ls({...e}){return b(Nt.Root,{"data-slot":"popover",...e})}function us({...e}){return b(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 b(Nt.Portal,{children:b(Nt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:b(Nt.Popup,{"data-slot":"popover-content",className:zn("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 b("div",{"data-slot":"popover-header",className:zn("flex flex-col gap-0.5 text-sm",e),...t})}function fs({className:e,...t}){return b(Nt.Title,{"data-slot":"popover-title",className:zn("font-medium",e),...t})}function ps({className:e,...t}){return b(Nt.Description,{"data-slot":"popover-description",className:zn("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(xs).filter(e=>!!e):[]}(e),[e]);return t?b("div",{className:"p-3 font-mono text-xs text-destructive",children:ds(t)}):a?b("div",{className:"p-3 font-mono text-xs text-muted-foreground",children:"Loading diff..."}):r.length?b("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:[b(ce,{className:"size-4 shrink-0 text-muted-foreground"}),b("span",{className:"truncate font-mono text-xs font-medium",children:e.path})]}),e.meta.length?b("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=>b("span",{className:"truncate",children:e},e))}):null]}),b("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:[b("div",{className:"border-r px-2 py-1 text-right",children:"line"}),b("div",{}),b("div",{className:"whitespace-pre px-2 py-1",children:t.header})]}),t.lines.map((t,a)=>b(ws,{fileLanguage:e.language,line:t},`${e.path}:${n}:${a}`))]},`${e.path}:${n}`))})]},e.path))}):b("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:zn("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:[b("div",{className:"select-none border-r px-2 text-right text-[0.68rem] text-muted-foreground",children:a??""}),b("div",{className:"select-none px-2 text-center text-muted-foreground",children:n}),b("div",{className:"whitespace-pre px-2",dangerouslySetInnerHTML:{__html:r}})]})}function xs(e){const t=function(e){for(const n of["+++ ","--- "])for(const t of e){if(!t.startsWith(n))continue;const e=bs(t.slice(n.length));if(e&&"/dev/null"!==e)return e}const t=e.find(e=>e.startsWith("diff --git "))?.split(/\s+/)??[];return bs(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 bs(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?b("div",{className:"p-3 text-xs text-destructive",children:ds(t)}):n&&!e.length?b("div",{className:"p-3 text-xs text-muted-foreground",children:"Loading history..."}):e.length?b(Jr,{className:"min-h-0",children:b("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:zn("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:[b("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.subject}),b("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:[b("span",{className:"min-w-0 truncate",children:e.authorName||"Unknown author"}),b("span",{"aria-hidden":"true",children:"·"}),b("span",{className:"shrink-0",children:ks(e.authoredAt)})]}),e.refs.length?b("div",{className:"flex min-w-0 flex-wrap gap-1",children:e.refs.slice(0,3).map(e=>b("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))})}):b("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:zn(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:[b(ge,{className:"size-3.5"}),n&&c?b("span",{className:zn("absolute -right-0.5 -top-0.5 size-2 rounded-full ring-2 ring-background",u?"bg-amber-500":"bg-emerald-500")}):y(x,{children:[b("span",{className:"min-w-0 truncate",children:l}),m?b("span",{className:"shrink-0 text-muted-foreground",children:m}):null,b("span",{className:zn("ml-0.5 size-1.5 shrink-0 rounded-full",u?"bg-amber-500":"bg-emerald-500")})]})]}),i?b(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=>j.error(ds(e)),onSuccess:t=>{j.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]})}}),x=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:[b(ve,{className:"size-4 shrink-0 text-muted-foreground"}),b("span",{children:"Git"})]}),b(Es,{branches:x,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}),b("span",{className:zn("size-2 shrink-0 rounded-full",N?N.clean?"bg-emerald-500":"bg-amber-500":"bg-muted-foreground/40")}),b("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:[b(ie,{}),"Pull"]}),y(Ma,{disabled:T,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&w.mutate({action:"push"})},children:[b(at,{}),"Push"]}),b(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:b(Be,{className:zn((w.isPending||g.isFetching||v.isFetching)&&"animate-spin")})})]})]}),b(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:[b(Ae,{className:"size-4 text-muted-foreground"}),b("div",{className:"truncate text-sm font-medium",children:"Local Changes"})]}),b("span",{className:"text-xs text-muted-foreground",children:I.length})]}),b(Jr,{className:"min-h-0",children:b(Ts,{files:I,loading:!N,selectedPath:h,onSelect:f})}),y("div",{className:"grid gap-2 border-t p-3",children:[b(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:[b(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:[b(ue,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0 flex-1",children:[b("div",{className:"truncate text-sm font-medium",children:"Diff Preview"}),b("div",{className:"truncate font-mono text-xs text-muted-foreground",children:S})]}),h?b(Ma,{size:"xs",type:"button",variant:"ghost",onClick:()=>f(null),children:"All"}):null]}),b("div",{className:"min-h-0 min-w-0 overflow-auto bg-muted/20",children:b(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:[b(te,{className:"size-4 text-muted-foreground"}),b("div",{className:"truncate text-sm font-medium",children:"History"})]}),b("span",{className:"text-xs text-muted-foreground",children:A.length})]}),b(Is,{commits:A,error:v.error,fetching:v.isFetching,selectedHash:u,onSelect:m}),b("div",{className:"min-h-20 border-t p-3 text-xs",children:E?y("div",{className:"grid gap-1",children:[b("div",{className:"line-clamp-2 font-medium",children:E.subject}),b("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)]})]}):b("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:b(Ma,{className:"max-w-64 justify-start",size:"sm",type:"button",variant:"outline"}),children:[b(ge,{}),b("span",{className:"min-w-0 truncate",children:n??"No branch"}),b(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:[b(fs,{children:"Branches"}),y(ps,{children:["Current branch: ",n??"detached"]})]}),b("div",{className:"grid gap-2 p-3",children:b(Sa,{className:"h-8",placeholder:"Find branch",value:t,onChange:e=>s(e.target.value)})}),b(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?b(W,{}):b(ge,{}),b("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),e.length?null:b("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:[b(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:[b(ze,{}),"Create branch"]})]})]})]})}function Ts({files:e,loading:t,selectedPath:n,onSelect:a}){return t?b("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Loading status..."}):e.length?b("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:zn("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:[b("span",{className:zn("rounded-sm px-1 py-0.5 text-center font-mono text-[0.68rem]",Ms(e.status)),children:e.status.trim()}),b("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):b("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:zn(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:[b(et,{className:"size-3.5"}),b("span",{className:n?"sr-only":"min-w-0 truncate",children:"Terminal"}),s>0?b("span",{className:zn("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:b(Ma,{size:"icon",variant:"ghost"}),children:[b(ze,{className:"size-4"}),b("span",{className:"sr-only",children:"Create"})]}),y(ir,{align:"end",className:"w-44",children:[y(sr,{onClick:t,children:[b(Ye,{}),"New chat"]}),y(sr,{onClick:e,children:[b(rt,{}),"Add account"]})]})]})}function Rs(){const{loading:e,session:t}=wa(),{chatId:n}=g(),a=zi(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),refetchInterval:5e3}),O=$(()=>q.data??[],[q.data]),j=$(()=>U.data??[],[U.data]),z=$(()=>n?j.find(e=>e.id===n)??null:null,[n,j]),F=z?.title??null;R(()=>{n&&c(n)},[n]);const B=$(()=>{if(n){const e=j.find(e=>e.id===n);if(e)return e}if(d){const e=j.find(e=>e.id===d);if(e)return e}return j[0]??null},[n,j,d]),G=$(()=>O.filter(e=>"CONNECTED"===e.status),[O]);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 b($s,{});if(!t)return b(r,{replace:!0,to:"/connect"});const J={accounts:O,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeProjectPath:s,chats:j,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(x,{children:[y(fi,{className:"h-svh min-h-0 overflow-hidden",children:[y(pi,{collapsible:"offcanvas",variant:"inset",children:[b(wi,{children:y(Ma,{className:"w-full justify-start",variant:"ghost",onClick:()=>T("/"),children:[b(Ye,{}),b("span",{children:"New chat"})]})}),b(bi,{children:y(yi,{className:"p-0",children:[b(Ni,{children:"Chats"}),b(Ii,{children:b(cs,{chats:j,session:t})})]})}),b(xi,{children:y(Ma,{className:"justify-start",variant:"ghost",onClick:()=>L(),children:[b(Qe,{}),b("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:[b(gi,{variant:"ghost",children:b(Se,{})}),b("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:[z?y(x,{children:[b(Ds,{active:w,className:zn("md:hidden",w&&"text-foreground"),compact:!0,count:a.count,disabled:!s.trim(),onToggle:()=>N(!w)}),b(As,{chatId:z.id,className:"md:hidden",compact:!0,disabled:"RUNNING"===z.status,session:t})]}):null,b(Ls,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),b(ri,{})]})]}),q.error||U.error?b("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,b("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:b(i,{context:J})})]})]}),b(Zr,{accounts:O,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeTab:p,createFocusKey:l,open:m,session:t,onTabChange:P,onOpenChange:h}),I?b(Ti,{initialPath:I.initialPath,mode:I.mode,open:!!I,session:t,onOpenChange:e=>{e||k(null)},onSelect:I.onSelect}):null]})}function $s(){return b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(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 b(Rs,{})}),Us="xedoc.web.terminal-height",Os=null;function js({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}(),x=D((e,t)=>ji(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 x("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),N(e.terminals),s(e.terminal.id)},[N,n,x,h]);R(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),x("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 x("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&&ji(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[N,n,x,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 x("terminal:close",{terminalId:e})).terminals)}catch(t){j.error(Ks(t))}},[N,x]),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:zn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[b("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:b("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:[b("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:zn("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:[b(et,{className:"size-3.5 shrink-0"}),b("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),b("span",{className:zn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),b("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:b(it,{className:"size-3"})})]},e.id))}),b(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=>j.error(Ks(e)))},children:u?b(Ce,{className:"animate-spin"}):b(ze,{})}),t?b(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:b(it,{})}):null]}),b("div",{className:"relative min-h-0 bg-zinc-950",children:o?b("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):p.length?p.map(e=>b(zs,{active:e.id===i,compactLayout:w,resizeSignal:c,socket:a,terminal:e,onTerminalUpdated:A},e.id)):b("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function zs({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 Os??=import("ghostty-web").then(async e=>(await e.init(),e)),Os}().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 ji(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||j.error(Ks(e))}),()=>{l=!0,null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null),r.off("terminal:output",g),ji(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:zn("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?b("div",{className:"absolute inset-0 grid place-items-center bg-zinc-950 text-xs text-zinc-500",children:"Loading terminal..."}):null,b("div",{className:zn("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 b(_t.Root,{"data-slot":"switch","data-size":t,className:zn("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:b(_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:b(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?b(Ce,{className:"animate-spin"}):b(t?Be:rt,{}),b("span",{className:"truncate max-sm:sr-only",children:u})]}),y(ir,{align:"start",className:"w-64",children:[i?y(x,{children:[y(sr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[b(Be,{}),b("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),b(Qs,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),b(mr,{})]}):null,a.map(e=>{const t=e.id===d;return y(sr,{disabled:o||c,onClick:()=>{t||s(e.id)},children:[b("span",{className:"truncate",children:e.displayName}),l[e.id]?b("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:l[e.id]}):b("span",{className:"ml-auto"}),t?b(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(x,{children:[b("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?b("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?b("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):b(ce,{className:"size-3.5 shrink-0 text-muted-foreground"}),b("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),b(Ma,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:b(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:[b(us,{render:b(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:b("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:b("span",{className:"size-2 rounded-full bg-background"})})}),y(ms,{align:"end",className:"w-72",side:"top",children:[y(hs,{children:[b(fs,{children:"Context window"}),b(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"]})]}),b("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:b("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:b(Ma,{className:zn("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?b(Ce,{className:"size-3 animate-spin"}):b(ot,{className:"size-3"}),b("span",{className:"truncate max-sm:sr-only",children:n})]}),y(ms,{align:"start",className:"w-80",side:"top",children:[y(hs,{children:[b(fs,{children:"Usage capacity"}),b(ps,{children:"Current Codex account limits refresh automatically."})]}),b(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:[b(Ae,{}),b("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:[b(rr,{render:b(Ma,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:d?"secondary":"ghost"}),children:o?b(Ce,{className:"animate-spin"}):b(ze,{})}),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:[b(Ae,{}),b("span",{className:"grid min-w-0 flex-1 gap-0.5",children:b("span",{children:"Plan mode"})}),b(Qs,{checked:d,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(sr,{className:"gap-3 py-2",disabled:c||!i,onClick:i,children:[b(xe,{}),b("span",{children:"Attach image"})]}),y(sr,{className:"gap-3 py-2",disabled:c||!r,onClick:r,children:[b(_e,{}),b("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:b(Ma,{"aria-label":ns(t),className:zn("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?b(Ce,{className:"animate-spin"}):b(r?Je:Ve,{}),b("span",{className:"truncate max-sm:sr-only",children:ns(t)})]}),b(ir,{align:"start",className:"w-48",children:y(lr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[b(ur,{value:"default",children:y("span",{className:"grid min-w-0 gap-0.5",children:[b("span",{children:"Default"}),b("span",{className:"text-xs text-muted-foreground",children:"Codex asks as needed."})]})}),b(ur,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[b("span",{children:"Full access"}),b("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?b(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?b(Ce,{className:"animate-spin"}):b(Xe,{})}):i&&e?y("div",{className:"group relative flex shrink-0",children:[b("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:[b(H,{className:"size-4 shrink-0"}),b("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:[b(te,{className:"size-4 shrink-0"}),b("span",{className:"min-w-0",children:"Queue after current task"})]})]})}),b(Ma,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:s||t,size:"icon",title:"Queue message",type:"button",onClick:n,children:t?b(Ce,{className:"animate-spin"}):b(H,{})})]}):b(Ma,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:s||t,size:"icon",type:"button",onClick:n,children:t?b(Ce,{className:"animate-spin"}):b(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:b(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?b(Ce,{className:"animate-spin"}):b(re,{}),b("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:[b(K,{}),b("span",{children:"Intelligence"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:es(e)})]}),b(cr,{className:"w-52",children:y(lr,{value:c,onValueChange:i,children:[b(ur,{value:"",children:"Model default"}),d.map(e=>b(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:[b(re,{}),b("span",{children:"Model"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),b(cr,{className:"w-64",children:y(lr,{value:a,onValueChange:r,children:[b(ur,{value:"",children:"Default model"}),n.map(e=>b(ur,{value:e.model,children:b("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:[b(pe,{}),b("span",{children:"Speed"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:ts(m)})]}),b(cr,{className:"w-52",children:y(lr,{value:m,onValueChange:s,children:[b(ur,{value:"",children:"Default speed"}),u.map(e=>b(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?b("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?b("div",{className:"text-destructive",children:(n=t.rateLimitReachedType,Zi(n))}):null]}),b(uo,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),b(uo,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):b("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:zn("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:[b("span",{className:"font-medium",children:Hi(n,e)}),b("span",{className:zn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),b("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:b("div",{className:zn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:zn("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?b("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,x]=_(""),[N,I]=_([]),[A,T]=_("default"),[M,S]=_(null),[P,L]=_(r?.autoRotateAccount??!1),[U,O]=_(r?.accountId??null),[z,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&&O(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=>j.error(ds(e)),onSuccess:e=>{X.setQueryData(["accounts"],t=>is(t,e))}}),xe=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:z,reasoningEffort:ce,serviceTier:le,workingDirectory:V.trim()});return{chat:e,response:await ra(o,e.id,{attachments:Js(N),content:w.trim()})}},onError:e=>j.error(ds(e)),onSuccess:({chat:e,response:t})=>{x(""),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}`)}}),be=D(e=>{e?.length&&Xs(e).then(e=>{I(t=>[...t,...e])}).catch(e=>j.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 b("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:b(Jr,{className:"min-h-0 min-w-0 flex-1",viewportProps:{className:"overflow-x-hidden"},children:y("div",{className:zn("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:[b("div",{className:"font-medium",children:"No connected account"}),b("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:[b(rt,{}),"Manage Accounts"]})]}),Ie?b(js,{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:[b(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:[b(he,{}),b("span",{className:"sr-only",children:"Choose directory"})]})]}),y("div",{className:"relative min-w-0",children:[b(ro,{visible:"plan"===A}),b(hr,{className:zn("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=>x(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!xe.isPending&&ss(w,V,re,N)&&xe.mutate())},onPaste:e=>{const t=Ys(e.clipboardData);t.length&&be(t)}})]}),b(to,{attachments:N,imageInputRef:Z,onAttachImages:be,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:[b(io,{attachmentDisabled:xe.isPending,disabled:!re,mode:A,onAttachFile:ye,onAttachImage:()=>Z.current?.click(),onSelectMode:T}),b(Vs,{account:re,autoRotate:P,autoRotateDisabled:xe.isPending,connectedAccounts:a,disabled:!a.length,selectedAccountId:re?.id??"",usageSummaries:n,onAutoRotateChange:L,onSelect:e=>{O(e)}}),b(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}})}}),b(so,{disabled:!re,mode:z,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:[b(ao,{pending:ve,snapshot:ge}),b(oo,{loading:xe.isPending,sendDisabled:!ss(w,V,re,N),onSend:()=>xe.mutate()})]})]})]})]})})})}var ho=qn({default:()=>fo}),fo=c(function(){return b(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:[b(ue,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[b("div",{className:"truncate font-medium",children:i.entries.length?`${bo(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),b(Io,{additions:i.additions,deletions:i.deletions})]})]}),b("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?b(Ce,{className:"animate-spin"}):b(Ge,{}),"Undo"]}),y(Ma,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:yo(i)}),children:[r?b(Ce,{className:"animate-spin"}):b(oe,{}),"Review"]})]})]}),b("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:[b("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}),b(Io,{additions:e.additions,deletions:e.deletions}),y(Va,{render:b(Ma,{size:"icon-sm",variant:"ghost"}),children:[b(J,{className:"-rotate-90 size-4 text-muted-foreground"}),b("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ya,{className:"max-w-5xl",children:[y(Za,{children:[b(tr,{children:e.path}),y(nr,{children:[e.action??"Edited"," file change reported by Codex."]})]}),b("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)):b("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?b("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>b(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=xo(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=xo(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 xo(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function bo(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]}),b("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 xo(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=()=>{n.length&&(n.length<=Lo?t.push(...n.map(e=>({id:`message:${e.id}`,message:e,type:"message"}))):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(ed(r.message)){if(Ho(r.message)){a(),t.push({id:`message:${r.message.id}`,message:r.message,type:"message"});continue}const e=n.at(-1);if(!e||td(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&&nd(e)!==nd(r.message)&&a(),n.push(r.message)}return a(),t}(function(e){if(e.some(Ho))return e.map(e=>({message:e,sequence:e.sequence,type:"message"}));const t=function(e){const t=[...e].reverse().filter(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind&&e.content.trim().length>0);return t.find(e=>function(e){return"final_answer"===Yo(e)}(e))??t.find(e=>!Xo(e))??t[0]}(e),n=[],a=[];for(const d of e)Jo(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=new Set,n=new Map;for(const a of e){if("TOOL_ACTIVITY"!==a.kind)continue;const e=Fo(a);e&&n.set(e,a)}return e.map(e=>{if("COMMAND_EXECUTION"!==e.kind)return e;const a=Fo(e),r=a?n.get(a):void 0;if(!r)return e;t.add(r.id);const i=id(e.metadata);return{...e,metadata:{...i,callId:a,kind:"command",output:r.content}}}).filter(e=>!t.has(e.id))}(function(e){const t=[];let n=[],a=null;const r=()=>{n.length&&(t.push(function(e){return 1===e.length?e[0]:{...e[e.length-1],content:Bo(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:Go(e)}}(n)),n=[],a=null)};for(const i of e){if("ASSISTANT"===i.role&&"CHAT"===i.kind){if(Ho(i)){r(),t.push(i);continue}const e=zo(i);a&&a!==e&&r(),a=e,n.push(i);continue}r(),t.push(i)}return r(),t}([...e].sort((e,t)=>e.sequence-t.sequence))))))}var Lo=5;function Ro(e){const t=$o([...e]).filter(e=>!Qo(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(Ho)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}function $o(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=qo(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=_o(n[t],r):(a.set(e,n.length),n.push(r))}return n}function qo(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 _o(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:Uo(t.status)>Uo(e.status)?{...e,status:t.status}:e:Uo(t.status)>Uo(e.status)||t.sequence>=e.sequence?t:e}function Uo(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Oo(e,t){return"ASSISTANT"===e?.role&&"CHAT"===e.kind&&"ASSISTANT"===t.role&&"CHAT"===t.kind}function jo(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function zo(e){const t=Yo(e);return"final_answer"===t||"commentary"===t?t:e.itemId?`item:${e.itemId}`:"assistant"}function Fo(e){const t=Zo((e.metadata&&"object"==typeof e.metadata?e.metadata:null)?.callId);if(t)return t;const n=e.rawPayload&&"object"==typeof e.rawPayload?e.rawPayload:null;return Zo((n?.payload&&"object"==typeof n.payload?n.payload:null)?.callId)}function Bo(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 Go(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 Ho(e){return"STREAMING"===e.status||"PENDING"===e.status}function Ko(e){return{pendingRequest:$o(e).sort((e,t)=>t.sequence-e.sequence).find(Wo)}}function Wo(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=id(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Qo(e){return!!Vo(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 Vo(e){if("PLAN"!==e.kind)return!1;const t=id(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}function Jo(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Wo(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||!Xo(e))||!!t&&t.content.includes(e.content.trim())))))))}function Xo(e){return"commentary"===Yo(e)}function Yo(e){const t=Zo((e.metadata&&"object"==typeof e.metadata?e.metadata:null)?.phase);return t?t.trim().replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toLowerCase():null}function Zo(e){return"string"==typeof e&&e.trim()?e:null}function ed(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function td(e,t){return nd(e)===nd(t)}function nd(e){return e.runId??e.turnId??e.chatId}function ad(e){return"COMMAND_EXECUTION"===e.kind?b(et,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?b(Te,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?b(rd,{}):b(ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function rd(){return b(Ae,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function id(e){return e&&"object"==typeof e?e:void 0}function sd(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 od({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 b(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:[b(le,{className:"size-4 shrink-0"}),b("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),b(nr,{className:"truncate",children:cd(r.data)})]}),b("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:[b(Ce,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?b("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?b(dd,{file:r.data}):null})]})})}function dd({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?b("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):b(Jr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[b("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:zn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[b("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),b("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:gs(n||" ",e.language)}})]},r)})}),e.truncated?b("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 cd(e){return e?[ld(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function ld(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function ud({text:e}){const t=L(po);return b("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:b(Ut,{remarkPlugins:[Ot],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?b("button",{className:zn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):b("a",{className:zn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>b("blockquote",{className:zn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>b("code",{className:zn("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})=>b("del",{className:zn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>b("em",{className:zn("italic",e),...t}),h1:({className:e,...t})=>b("h1",{className:zn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>b("h2",{className:zn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>b("h3",{className:zn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>b("h4",{className:zn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>b("h5",{className:zn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>b("h6",{className:zn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>b("hr",{className:zn("my-4 border-border",e),...t}),img:({className:e,...t})=>b("img",{className:zn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>b("input","checkbox"===t?{className:zn("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})=>b("li",{className:zn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>b("ol",{className:zn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>b("p",{className:zn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>b("pre",{className:zn("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})=>b("strong",{className:zn("font-semibold",e),...t}),table:({className:e,...t})=>b("div",{className:"my-3 max-w-full overflow-x-auto",children:b("table",{className:zn("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})=>b("ul",{className:zn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:hd(e)})})}function md(e){return e.map(e=>"text"===e.type?e.text:"").join("").trim()}function hd(e){return fd(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function fd(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=pd(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 pd(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 gd({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=$(()=>Ro(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=jo(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?"codex"===a?.type&&Oo(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]),x=$(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&Vd(n))return n.id}return null}(v),[v]),[N,I]=_(null);return y(po.Provider,{value:I,children:[w.map(t=>b(bd,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:x,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onSteerQueuedMessage:c,onUndoFileChanges:s,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,session:p},t.id)),f?b(Md,{}):null,b(od,{chatId:e,session:p,target:N,onClose:()=>I(null)})]})}function vd({chatId:e,messages:t,session:n}){const a=$(()=>Ko(t),[t]);return a.pendingRequest?b("div",{className:"grid min-w-0 gap-1.5 overflow-hidden border-b bg-background px-3 py-2",children:b("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5 overflow-hidden",children:b($d,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function wd({message:e}){if(!e)return null;const t=id(e.metadata),n=t?.steps??[],a=n.filter(e=>Fd(e.status)).length,r=function(e){const t=e.findIndex(e=>Bd(e.status));if(t>=0)return t;const n=e.findIndex(e=>!Fd(e.status));return n>=0?n:e.length?e.length-1:-1}(n),i=(r>=0?n[r]:void 0)?.step??Hd(t?.explanation)??Hd(e.content)??"Planning...",s=function(e,t){return t.some(e=>Bd(e.status))||Ho(e)?"in progress":t.length?"pending":"planning"}(e,n);return b("section",{"aria-label":"Active plan","aria-live":"polite",className:"border-b bg-background px-3 py-2",children:b("div",{className:"mx-auto w-full min-w-0 max-w-3xl",children:b("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:[b("div",{className:"mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-md bg-background text-muted-foreground",children:b(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:[b("span",{className:"text-sm font-medium",children:"Plan"}),b(pr,{variant:"secondary",children:s})]}),b("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?b("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:zn("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:[b(zd,{highlighted:n,status:e.status}),b("div",{className:"min-w-0 break-words leading-5 text-foreground",children:e.step}),b("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 xd({disabled:e,messages:t,onSteerQueuedMessage:n,pendingQueueId:a}){return t.length?b("section",{className:"border-b bg-background px-3 py-2",children:b("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:[b(te,{className:"size-4 shrink-0 text-muted-foreground"}),b("span",{children:"Queued messages"})]}),b(pr,{variant:"outline",children:t.length})]}),b("div",{className:"grid max-h-44 min-w-0 gap-1 overflow-y-auto p-2",children:t.map(t=>{const r=Pd(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:[b(te,{className:"size-3.5 text-muted-foreground"}),y("div",{className:"min-w-0",children:[b("div",{className:"truncate text-foreground",children:Ld(t)}),b("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?b(Ce,{className:"animate-spin"}):b(G,{}),"Steer"]})]},t.id)})})]})})}):null}function bd({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?b(Td,{message:t.message,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,onSteerQueuedMessage:d}):b(yd,{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 yd({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=$(()=>function(e){if(e.some(Ho))return null;if(!e.some(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind))return null;const t=e.filter(Id);if(!t.length)return null;const n=function(e,t){const n=e.map(e=>Ad(e[t])).filter(e=>null!==e);return n.length?Math.min(...n):null}(t,"createdAt"),a=kd(e,"completedAt")??kd(e,"createdAt"),r=n&&a&&a>n?Cd(a-n):null;return{actionCount:t.length,durationLabel:r}}(r),[r]),f=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 b("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:[b("span",{className:"text-xs font-medium text-muted-foreground",children:"Codex"}),f?b(gr,{status:f}):null]}),y("div",{className:"grid min-w-0 gap-2",children:[m.map(r=>b(Ed,{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)),h?b(Nd,{summary:h}):null]})]})})}function Nd({summary:e}){const t=e.durationLabel?`Worked for ${e.durationLabel}`:`${e.actionCount} ${1===e.actionCount?"action":"actions"}`;return y("div",{className:"flex min-w-0 items-center gap-2 py-1 text-xs text-muted-foreground",children:[b("div",{className:"h-px min-w-4 flex-1 bg-border"}),b("span",{className:"shrink-0",children:t}),b("div",{className:"h-px min-w-4 flex-1 bg-border"})]})}function Id(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind||"FILE_CHANGE"===e.kind}function kd(e,t){const n=e.map(e=>Ad(e[t])).filter(e=>null!==e);return n.length?Math.max(...n):null}function Ad(e){if(!e)return null;const t=e instanceof Date?e.getTime():Date.parse(e);return Number.isFinite(t)?t:null}function Cd(e){const t=Math.max(1,Math.round(e/1e3)),n=Math.floor(t/3600),a=Math.floor(t%3600/60),r=t%60;return n>0?`${n}h ${a.toString().padStart(2,"0")}m`:a>0?`${a}m ${r.toString().padStart(2,"0")}s`:`${r}s`}function Ed({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?b(Xd,{messages:a.messages}):"previousActions"===a.type?b(Yd,{messages:a.messages}):"fileChanges"===a.type?b(go,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):b($d,{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 Td({message:e,onSteerQueuedMessage:t,queuedMessageActionDisabled:n,queuedMessageActionPendingId:a}){const r=sd(e),i=Pd(e),s=$(()=>fd(e.content),[e.content]),o=md(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?b("div",{className:"flex max-w-full flex-wrap justify-end gap-1.5",children:d.map(e=>b("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:b("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:[b(rt,{className:"size-3.5 opacity-80"}),b("span",{className:"text-xs font-medium",children:"You"})]}),i?b(pr,{className:"shrink-0",variant:i.badgeVariant,children:i.label}):null]}),o?b("div",{className:"whitespace-pre-wrap break-words",children:o}):null,c.length?b("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:[b(le,{className:"size-3.5 shrink-0 opacity-80"}),b("span",{className:"min-w-0 truncate",children:e.path})]},e.id))}):null,i?b(Sd,{delivery:i,disabled:n,pending:a===i.queueId,onSteerQueuedMessage:i.queueId?()=>t?.({message:e,queueId:i.queueId}):void 0}):null]}):null]}),b(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:[b(tr,{children:l?.name??"Image preview"}),b(nr,{children:"Full size image preview."})]}),l?b("div",{className:"flex min-h-0 flex-1 items-center justify-center bg-black p-2",children:b("img",{alt:l.name,className:"max-h-full max-w-full object-contain",src:l.src})}):null]})})]})}function Md(){return b("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:[b(Ce,{className:"size-3.5 animate-spin"}),b("span",{children:"Codex is processing"})]})})}function Sd({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:[b("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?b(Ce,{className:"animate-spin"}):b(G,{}),"Steer"]}):null]})}function Pd(e){const t=id(e.metadata),n=Rd(t?.delivery),a=Rd(t?.queueStatus),r=Rd(t?.queueId),i=Rd(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 Dd(e){return"USER"===e.role&&!0===Pd(e)?.canSteer}function Ld(e){const t=md(fd(e.content)).trim();if(t)return t.length>160?`${t.slice(0,160)}...`:t;const n=sd(e);return n.length?`${n.length} ${1===n.length?"attachment":"attachments"}`:"Queued message"}function Rd(e){return"string"==typeof e?e:void 0}function $d({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()?b(Ud,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?b(qd,{}):null;case"THINKING":return b(_d,{message:i});case"PLAN":return b(Od,{metadata:id(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return b(Jd,{message:i,metadata:id(i.metadata)});case"FILE_CHANGE":return b(go,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return b(tc,{chatId:e,compact:t,message:i,metadata:id(i.metadata),session:m});case"USER_INPUT_PROMPT":return b(nc,{chatId:e,compact:t,message:i,metadata:id(i.metadata),session:m});case"ERROR":return b(lc,{metadata:id(i.metadata),text:i.content});default:return b(uc,{text:i.content})}}function qd(){return b("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>b("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function _d({message:e}){const t=function(e){const t=e.trim();return t.toLowerCase().startsWith("thinking...")?t.slice(11).trim():"thinking"===t.toLowerCase()?"":t}(e.content),n=function(e){const t=e.split(/\r?\n/).map(e=>e.trim()).find(Boolean);return t?t.length>96?`${t.slice(0,96)}...`:t:null}(t),a="STREAMING"===e.status||"PENDING"===e.status;return y("details",{className:"group min-w-0 max-w-full overflow-hidden text-sm",open:a,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-start gap-2 px-1 py-1.5 text-muted-foreground",children:[b(J,{className:"mt-0.5 size-4 shrink-0 transition-transform group-open:rotate-180"}),b("div",{className:"min-w-0 flex-1",children:y("div",{className:"flex min-w-0 items-center gap-2",children:[b("span",{className:"size-1.5 shrink-0 rounded-full bg-muted-foreground/60"}),b("span",{className:"shrink-0 font-medium",children:a?"Thinking":"Reasoned"}),n?b("span",{className:"min-w-0 truncate text-xs",children:n}):null]})})]}),t?b("div",{className:"min-w-0 whitespace-pre-wrap break-words px-7 pb-2 text-muted-foreground",children:t}):null]})}function Ud({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Vd(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()?b(ud,{text:o}):null,s?b(Kd,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Od({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Vd(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:[b(Ae,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?b(ud,{text:c}):n?.explanation?b("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):b(uc,{text:"Planning..."}),o.length?b("div",{className:"mt-3 grid min-w-0 gap-2",children:o.map((e,t)=>y("div",{className:"flex items-start gap-2",children:[b(pr,{variant:"completed"===e.status?"default":"secondary",children:e.status}),b("div",{className:"min-w-0 flex-1",children:e.step})]},`${e.step}-${t}`))}):null,l&&d?b(Wd,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function jd(e){if("SYSTEM"!==e.role||"PLAN"!==e.kind)return!1;if("FAILED"===e.status||Vo(e))return!1;const t=id(e.metadata);if("progress"!==t?.presentation)return!1;const n=t.steps??[];return(!n.length||!n.every(e=>Fd(e.status)))&&(n.length>0||Ho(e)||!!Hd(t.explanation)||!!Hd(e.content))}function zd({highlighted:e,status:t}){return Fd(t)?b(W,{className:"mt-0.5 size-3.5 text-primary"}):Bd(t)?b(Ce,{className:"mt-0.5 size-3.5 animate-spin text-muted-foreground"}):b("span",{className:zn("mt-1.5 size-2 rounded-full",e?"bg-primary":"bg-muted-foreground/35")})}function Fd(e){return["complete","completed","done","success","succeeded"].includes(Gd(e))}function Bd(e){return["active","in_progress","running","started","streaming","working"].includes(Gd(e))}function Gd(e){return e.trim().toLowerCase().replace(/[\s-]+/g,"_")}function Hd(e){const t=e?.trim();return t?["...","planning..."].includes(t.toLowerCase())?null:t:null}function Kd({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:[b(Ae,{className:"size-4"}),"Proposed plan"]}),b(ud,{text:i}),s?b(Wd,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Wd({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?b(Ce,{className:"animate-spin"}):b(G,{}),"Implement plan"]}),y(Qa,{open:d,onOpenChange:c,children:[y(Va,{render:b(Ma,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[b(Oe,{}),"Tell Codex what to change"]}),y(Ya,{children:[y(Za,{children:[b(tr,{children:"Tell Codex What To Change"}),b(nr,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[b(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:[b(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?b(Ce,{className:"animate-spin"}):b(Oe,{}),"Send changes"]})]})]})]})]})]})}var Qd=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Vd(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Qd.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Qd,"").trim()}:"PLAN"!==e.kind||"result"!==id(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function Jd({message:e,metadata:t}){const n=t?.status??"running",a="STREAMING"===e.status||"PENDING"===e.status,r="FAILED"===e.status||n.toLowerCase().includes("fail")||"number"==typeof t?.exitCode&&0!==t.exitCode,i=(t?.command??e.content.trim())||"command",s=t?.output?.trim()??"",o=s?s.split(/\r?\n/):[],[d,c]=_(!1),l=d?o:o.slice(0,fc),u=Math.max(0,o.length-l.length);return b("div",{className:"min-w-0 max-w-full overflow-hidden py-1 text-sm",children:y("div",{className:"flex min-w-0 items-start gap-2",children:[b("span",{className:zn("mt-2 size-1.5 shrink-0 rounded-full",r?"bg-destructive":a?"animate-pulse bg-primary":"bg-muted-foreground/70")}),y("div",{className:"min-w-0 flex-1",children:[y("div",{className:"flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1",children:[b("span",{className:"shrink-0 font-medium",children:ec(e,t)}),b("code",{className:"min-w-0 max-w-full break-words rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:i}),t?.durationMs?b("span",{className:"text-xs text-muted-foreground",children:Cd(t.durationMs)}):null,"number"==typeof t?.exitCode?b(pr,{variant:0===t.exitCode?"secondary":"destructive",children:0===t.exitCode?"ok":t.exitCode}):null]}),t?.cwd?b("div",{className:"mt-1 truncate text-xs text-muted-foreground",children:t.cwd}):null,l.length?b("pre",{className:"mt-2 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted/70 px-3 py-2 font-mono text-xs leading-5 text-muted-foreground",children:l.join("\n")}):a?null:b("div",{className:"mt-1 text-xs text-muted-foreground",children:"(no output)"}),u>0?y(Ma,{className:"mt-1 h-7 px-2 text-xs text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:()=>c(!0),children:["Show ",u," more"," ",1===u?"line":"lines"]}):null]})]})})}function Xd({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,hc),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=Go(e);return y("div",{className:"grid min-w-0 gap-1.5 py-1 text-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2 px-1 text-xs text-muted-foreground",children:[b(et,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:[e.length," ",1===e.length?"tool call":"tool calls"]}),b(pr,{className:"shrink-0",variant:"secondary",children:s.toLowerCase()})]}),r.map(e=>b(Zd,{message:e},e.id)),i>0?y(Ma,{className:"h-7 justify-start px-2 text-xs text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:()=>n(!0),children:["Show ",i," more"," ",1===i?"tool call":"tool calls"]}):null]})}function Yd({messages:e}){const[t,n]=_(!1),a=1===e.length?"1 previous message":`${e.length} previous messages`;return y("div",{className:"grid min-w-0 gap-2 py-1 text-sm",children:[y("button",{className:"flex min-w-0 items-center gap-2 text-left text-muted-foreground",type:"button",onClick:()=>n(e=>!e),children:[b(J,{className:zn("size-4 shrink-0 transition-transform",t?"rotate-0":"-rotate-90")}),b("span",{className:"shrink-0 text-xs",children:a}),b("span",{className:"h-px min-w-4 flex-1 bg-border"})]}),t?b("div",{className:"grid min-w-0 gap-1.5 pl-6",children:e.map(e=>b(Zd,{message:e},e.id))}):null]})}function Zd({message:e}){const t=id(e.metadata),n=id(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(id(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===id(t)?.requestKind?"Permission request":"Approval request":"USER_INPUT_PROMPT"===e.kind?"Input request":"CHAT"===e.kind?"Assistant message":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:[ad(e),y("div",{className:"min-w-0",children:[b("div",{className:"truncate text-xs font-medium",children:a}),r?b("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:r}):null]}),b(pr,{variant:"secondary",children:e.status.toLowerCase()})]})}function ec(e,t){if("STREAMING"===e.status||"PENDING"===e.status)return"Running";const n=function(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}(t).toLowerCase();return"FAILED"===e.status||n.includes("fail")||n.includes("error")||"number"==typeof t?.exitCode&&0!==t.exitCode?"Failed":"Ran"}function tc({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=mc(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?b(ac,{icon:b(Te,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:rc(a)}):y("div",{className:zn("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:zn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[b(Te,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?b("div",{className:zn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?b("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,b("div",{className:zn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(pr,{variant:"secondary",children:[b(W,{className:"size-3"}),"resolved"]}):y(x,{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?b(Ce,{className:"animate-spin"}):b(W,{}),"Accept"]}),b(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"}),b(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 nc({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=_({}),[o,d]=_(0),c=mc(e,n,r),l=a?.questions?.length?a.questions:[{id:"answer",question:a?.message??"Answer"}],u="resolved"===a?.status||"COMPLETED"===n.status,m=function(e){const t=e;return"request_user_input"===t?.toolName||"function_call"===t?.sourcePayloadType}(a),h=Math.min(o,Math.max(l.length-1,0)),f=l[h],p=!!f&&cc(f,i[f.id]).length>0,g=l.every(e=>cc(e,i[e.id]).length>0),v=h>=l.length-1,w=()=>d(e=>Math.min(e+1,l.length-1));if(u||"expired"===a?.status)return b(ac,{icon:b(W,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:ic(a)});return y("div",{className:zn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:zn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[b("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:[b(Ma,{"aria-label":"Previous question",disabled:u||c.isPending||0===h,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:b(B,{})}),y(pr,{variant:"secondary",children:[h+1," / ",l.length]}),b(Ma,{"aria-label":"Next question",disabled:u||c.isPending||v||!m&&!p,size:"icon-xs",variant:"ghost",onClick:w,children:b(G,{})}),u?b(pr,{variant:"secondary",children:"resolved"}):null]})]}),f?b(oc,{compact:t,disabled:u||c.isPending||m,question:f,value:i[f.id]??sc,onChange:e=>s(t=>({...t,[f.id]:e})),onAutoAdvance:v?void 0:w}):null,m?b("div",{className:zn("text-xs leading-4 text-muted-foreground",t?"mt-2":"mt-4"),children:"Answer this in the Codex client that started the turn."}):v?b("div",{className:zn("flex justify-end",t?"mt-2":"mt-4"),children:y(Ma,{disabled:u||c.isPending||!g,size:"sm",onClick:()=>{g?c.mutate({kind:"userInput",result:dc(l,i)}):j.error("Answer every question before submitting.")},children:[c.isPending?b(Ce,{className:"animate-spin"}):b(W,{}),"Submit"]})}):null]})}function ac({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:[b("span",{className:"text-muted-foreground",children:e}),b("span",{className:"min-w-0 flex-1 font-medium",children:n}),t?b(pr,{variant:"secondary",children:t}):null]}),a?b("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:a}):null]})}function rc(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 ic(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 sc={other:"",values:[]};function oc({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:[b("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?b("span",{className:zn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?b("div",{className:zn("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:zn("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:zn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[b("span",{children:n.label}),n.description?b("span",{className:zn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?b(W,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?b(Sa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):b(hr,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?b(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 dc(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:cc(e,t[e.id])}]))}}function cc(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function lc({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:[b(z,{className:"size-4"}),"Error"]}),b("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function uc({text:e}){return b("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function mc(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=>j.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>da(e,t))}})}var hc=5,fc=5;function pc(e,t){if(!e?.data.length)return t;const n=[...t.data];for(const r of e.data)gc(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(wc),nextCursor:a||null}}function gc(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=vc(e.content),a=vc(t.content);return!(!n||!a)&&(n===a||function(e){return"PENDING"===e.status||"STREAMING"===e.status}(t)&&n.includes(a))}(t,e))}function vc(e){return e.replace(/\s+/g," ").trim()}function wc(e,t){return e.sequence-t.sequence||new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()||e.id.localeCompare(t.id)}function xc(){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 O=C({enabled:!!e,queryKey:L,queryFn:()=>ta(d,e),refetchInterval:2500}),z=C({enabled:!!e,queryKey:U,queryFn:()=>aa(d,e,0),refetchInterval:2500,structuralSharing:(e,t)=>pc(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=$(()=>z.data?.data??[],[z.data]),G=O.data;R(()=>{G&&P.setQueryData(["chats"],e=>e?.map(e=>e.id===G.id?G:e))},[G,P]);const H=t.find(e=>e.id===G?.accountId),K="RUNNING"===G?.status,W=$(()=>Ko(B),[B]),Q=$(()=>function(e,t){if(!t)return null;const n=$o(e).filter(e=>!Qo(e)).sort((e,t)=>e.sequence-t.sequence);for(let a=n.length-1;a>=0;a-=1){const e=n[a];if(jd(e))return e}return null}(B,K),[K,B]),V=$(()=>function(e){return Ro(e).filter(Dd)}(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=id(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=>j.error(ds(e)),onSuccess:(e,t)=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&j.success("Chat account updated.")}}),se=k({mutationFn:t=>na(d,e,t),onError:e=>j.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=>j.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=>j.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=>j.error(ds(e)),onSuccess:()=>{j.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=>j.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=>j.error(ds(e)))},[]),fe=D(()=>{o({initialPath:O.data?.workingDirectory,mode:"file",onSelect:e=>{N(t=>[...t,eo(e)])}})},[O.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=>j.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=>pc(t,e))}).catch(e=>j.error(ds(e))),ta(d,e).then(t).catch(e=>j.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 b(r,{replace:!0,to:"/"});if(O.isLoading||z.isLoading)return b("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden bg-background",children:b(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(O.error)return b("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:[b("div",{className:"font-medium",children:"Chat not available"}),b("div",{className:"mt-1 whitespace-pre-wrap",children:O.error.message})]})});const xe=G,be=H,ye=ne.data?.data??[],Ne=!!xe&&!K&&s.length>0,Ie=Fi(ye,xe?.model),ke=Ie?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],Ae=xe?.reasoningEffort??Ie?.defaultReasoningEffort??null,Ee=Ie?.additionalSpeedTiers??[],Te=p.trim().length>0||w.length>0,Me=ss(p,xe?.workingDirectory??"",be,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:[b(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:b("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?b(gd,{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}):b("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),b("div",{className:zn("min-w-0 border-t bg-background",m&&xe?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:m&&xe?.workingDirectory?b("div",{className:"p-2",children:b("div",{className:"mx-auto max-w-5xl",children:b(js,{onClosePanel:()=>l(!1),projectPath:xe.workingDirectory,socket:h,socketConnected:f})})}):y(x,{children:[b(wd,{message:Q}),b(xd,{disabled:!K||le.isPending,messages:V,pendingQueueId:le.variables?.queueId??null,onSteerQueuedMessage:e=>le.mutate(e)}),b(vd,{chatId:e,messages:B,session:d}),b("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:[b(ro,{visible:"plan"===(xe?.collaborationMode??"default")}),b(hr,{className:zn("max-h-32 min-h-12 bg-transparent! text-xs resize-none border-0 px-1 shadow-none focus-visible:ring-0","plan"===(xe?.collaborationMode??"default")&&"pr-24"),placeholder:xe?.workingDirectory?be?"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)}})]}),b(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:[b(io,{attachmentDisabled:de.isPending,disabled:!xe,modeDisabled:K,mode:xe?.collaborationMode??"default",onAttachFile:fe,onAttachImage:()=>M.current?.click(),pending:se.isPending,onSelectMode:e=>se.mutate({collaborationMode:e})}),b(Vs,{account:be,autoRotate:xe?.autoRotateAccount??!1,autoRotateDisabled:!xe||se.isPending,connectedAccounts:s,disabled:!xe||!s.length,pending:ie.isPending,selectedAccountId:xe?.accountId??"",selectionDisabled:!Ne,usageSummaries:i,onAutoRotateChange:e=>se.mutate({autoRotateAccount:e}),onSelect:e=>ie.mutate({accountId:e})}),b(co,{activeReasoningEffort:Ae,disabled:!xe||K||!be,modelOptions:ye,modelValue:xe?.model??"",pending:ne.isFetching||se.isPending,reasoningOptions:ke,reasoningValue:xe?.reasoningEffort??"",selectedModel:Ie,serviceTierOptions:Ee,serviceTierValue:xe?.serviceTier??"",onSelectModel:e=>{xe?.accountId&&oe.mutate({accountId:xe.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),se.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;xe?.accountId&&oe.mutate({accountId:xe.accountId,settings:{defaultModel:xe.model??null,defaultReasoningEffort:t,defaultServiceTier:xe.serviceTier??null}}),se.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;xe?.accountId&&oe.mutate({accountId:xe.accountId,settings:{defaultModel:xe.model??null,defaultReasoningEffort:xe.reasoningEffort??null,defaultServiceTier:t}}),se.mutate({serviceTier:t})}}),b(so,{disabled:!xe,mode:xe?.permissionMode??"default",pending:se.isPending,onSelectMode:e=>{xe?.accountId&&oe.mutate({accountId:xe.accountId,settings:{defaultPermissionMode:e}}),se.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[b(no,{usage:I}),b(ao,{pending:re,snapshot:ae}),b(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()})]})]})]})})]})})]}),xe?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:[b(Ds,{active:m,className:zn("hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",m?"text-sidebar-accent-foreground":"text-sidebar-foreground/75"),count:u,disabled:!xe.workingDirectory?.trim(),onToggle:()=>l(!m)}),b(As,{chatId:xe.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 bc=qn({default:()=>yc}),yc=c(function(){return b(xc,{})}),Nc=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Ic(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function kc(e){throw new Nc(405,`${e} is not supported for this route.`)}function Ac(e,t){t.includes(e.method)||kc(e.method)}async function Cc(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 Nc(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Nc)throw n;throw new Nc(400,"Request body must be valid JSON.")}}function Ec(e,t,n={}){if(null==e){if(n.required)throw new Nc(400,`${t} is required.`);return}if("string"!=typeof e)throw new Nc(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Nc(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Nc(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function Tc(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Nc(400,`${t} must be an array of strings.`);return e}}function Mc(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new Nc(400,`${t} must be a boolean.`);return e}}function Sc(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Nc(400,`${t} must be an object.`);return e}}function Pc(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 Nc(400,`${t} must be an integer.`);return r}function Dc(e,t){const n=e[t];if(!n)throw new Nc(400,`${t} is required.`);return n}function Lc(e){return e instanceof Nc?Ic({message:e.message},{status:e.status}):Ic({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var Rc=qn({loader:()=>$c});function $c({request:e}){try{return Ac(e,["GET"]),Ic({status:"ok",service:"xedoc"})}catch(t){return Lc(t)}}var qc,_c=globalThis,Uc=wn("~"===(qc=process.env.CODEX_WORKSPACE_ROOT?.trim()||hn())?hn():qc.startsWith("~/")?wn(hn(),qc.slice(2)):bn(qc),".xedoc","xedoc.db"),Oc=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Uc);process.env.DATABASE_URL=Oc,tn(pn(Uc),{recursive:!0,mode:448});var jc=_c.prisma??new Wt({datasources:{db:{url:Oc}}});"production"!==process.env.NODE_ENV&&(_c.prisma=jc);var zc="server",Fc="scrypt";async function Bc(e){!function(e){if(e.length<8)throw new Nc(400,"Server password must be at least 8 characters.")}(e);const t=await Qc()??await async function(e){try{return await jc.serverAuth.create({data:{id:zc,passwordHash:Vc(e),tokenSecret:Jc(32)}})}catch(t){if(function(e){return e instanceof Kt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Nc(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!==Fc||!a||!r||void 0!==i)&&Xc(Gt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Nc(401,"Invalid server password.");return{token:Hc({authHash:Kc(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Gc(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Nc(401,"Invalid auth token.");if(!Xc(a,Wc(n,t.tokenSecret)))throw new Nc(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 Nc(401,"Invalid auth token.")}}(n);if(i.authHash!==Kc(t.passwordHash))throw new Nc(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Nc(401,"Missing auth token.");return n}(e),await async function(){const e=await Qc();if(!e)throw new Nc(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Hc(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${Wc(n,t)}`}function Kc(e){return t=e,jt("sha256").update(t).digest("hex");var t}function Wc(e,t){return zt("sha256",t).update(e).digest("base64url")}async function Qc(){return jc.serverAuth.findUnique({where:{id:zc}})}function Vc(e){const t=Jc(16);return`${Fc}:${t}:${Gt(e,t,64).toString("base64url")}`}function Jc(e){return Ft(e).toString("base64url")}function Xc(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&Ht(n,a)}var Yc=qn({loader:()=>Zc});async function Zc({request:e}){try{return Ac(e,["GET"]),Ic(await async function(){return{passwordConfigured:!!(await Qc())}}())}catch(t){return Lc(t)}}var el=qn({action:()=>tl});async function tl({request:e}){try{return Ac(e,["POST"]),Ic(await Bc(Ec((await Cc(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return Lc(t)}}var nl=qn({loader:()=>al});async function al({request:e}){try{return Ac(e,["GET"]),Ic(await async function(e){return{authenticated:!0,issuedAt:(await Gc(e)).issuedAt}}(e))}catch(t){return Lc(t)}}function rl(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function il(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function sl(e){const t=rl(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var ol=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=pl(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 Il(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}`),ml(t)&&ll(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(yl(t.id));if(a){if(clearTimeout(a.timeout),this.pending.delete(yl(t.id)),t.error)return ml(t.error.message)&&ll(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()}},dl=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new ol(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()}},cl=new Set;async function ll(e,t){cl.add(e),await jc.codexAccount.updateMany({where:{id:e},data:{status:"INVALIDATED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:hl(t)}})}function ul(e){cl.delete(e)}function ml(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 hl(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 fl(e){return(await dl.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function pl(e){return wn(Nl(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function gl(e){const t=pl(e);return Il(t),t}function vl(){return Nl(process.env.CODEX_SHARED_CHAT_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function wl(){const e=vl();return tn(e,{recursive:!0,mode:448}),Vt(e,448),e}function xl(){const e=wl(),t=wn(e,"AGENTS.md");return Tl(t,384),{codexHome:e,instructionsPath:t}}function bl(){const e=vl();return wn(e,Cl(e).filter(e=>/^state_\d+\.sqlite$/i.test(e)).sort((e,t)=>El(t)-El(e)).at(0)??"state_5.sqlite")}function yl(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}function Nl(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):bn(e)}function Il(e){tn(e,{recursive:!0,mode:448}),Vt(e,448),function(e){const t=wl();if(bn(e)===bn(t))return;(function(e,t){const n=wn(t,"sessions"),a=wn(e,"sessions");if(tn(n,{recursive:!0,mode:448}),Pl(a,n))return;Ll(a)&&(Dl(a)?.isDirectory()&&Ml(a,n),dn(a,Rl(a)));un(n,a,"dir")})(e,t),function(e,t){const n=wn(t,"session_index.jsonl"),a=wn(e,"session_index.jsonl");if(Tl(n,384),Pl(a,n))return;Ll(a)&&(Dl(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,Rl(a)));un(n,a,"file")}(e,t),function(e,t){for(const n of function(e,t){const n=new Set([fn(bl())]);for(const a of[t,e])for(const e of Cl(a))/^state_\d+\.sqlite$/i.test(e)&&n.add(e);return[...n].flatMap(e=>[e,`${e}-wal`,`${e}-shm`])}(e,t))kl(e,t,n)}(e,t),function(e,t){Al(e,t,"AGENTS.md",!0),Al(e,t,"AGENTS.override.md",!1)}(e,t)}(e)}function kl(e,t,n){const a=wn(t,n),r=wn(e,n);Pl(r,a)||(Dl(r)?.isFile()&&Sl(r,a),n.endsWith("-wal")||n.endsWith("-shm")||Tl(a,384),Ll(r)&&dn(r,Rl(r)),un(a,r,"file"))}function Al(e,t,n,a){const r=wn(t,n),i=wn(e,n);(a||Ll(r)||Ll(i))&&(Tl(r,384),Pl(i,r)||(Dl(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),Ll(i)&&dn(i,Rl(i)),un(r,i,"file")))}function Cl(e){try{return rn(e)}catch{return[]}}function El(e){return Number(/^state_(\d+)\.sqlite$/i.exec(e)?.[1]??0)}function Tl(e,t){Jt(nn(e,"a",t)),Vt(e,t)}function Ml(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()?Ml(a,r):n.isFile()&&Sl(a,r)}}function Sl(e,t){Ll(t)||(tn(pn(t),{recursive:!0,mode:448}),Yt(e,t))}function Pl(e,t){try{return!!en(e).isSymbolicLink()&&bn(pn(e),sn(e))===bn(t)}catch{return!1}}function Dl(e){try{return ln(e)}catch{return null}}function Ll(e){try{return en(e),!0}catch{return!1}}function Rl(e){const t=(new Date).toISOString().replace(/[:.]/g,"-");let n=`${e}.pre-shared-${t}`,a=1;for(;Ll(n);)n=`${e}.pre-shared-${t}-${a}`,a+=1;return n}var $l=32768,ql="auth.json",_l=262144;async function Ul(){const e=await jc.codexAccount.findMany({orderBy:{createdAt:"asc"}});return hu(e),function(e){const t=ru(e);return e.map(e=>wu(e,t.has(e.id)))}(await async function(e){return Promise.all(e.map(async e=>"AUTHENTICATING"===e.status&&Zl(e.id)?(dl.stopRuntime(e.id),jc.codexAccount.update({where:{id:e.id},data:Ql(e.id)})):e))}(e))}async function Ol(){const e=iu({required:!0}),t=await async function(e){const t=(await jc.codexAccount.findMany({orderBy:{createdAt:"asc"}})).flatMap(e=>{const t=su(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 dl.stopRuntime(e.id),au(e.id,{authJson:t.authJson}),jc.codexAccount.update({where:{id:e.id},data:Ql(e.id)})}(t,e):await async function(e){const t=await jc.codexAccount.create({data:{displayName:e.email??"Local Codex account",command:process.env.CODEX_COMMAND??"codex",args:gu(Yl()),environment:gu(void 0)}});return au(t.id,{authJson:e.authJson}),jc.codexAccount.update({where:{id:t.id},data:Ql(t.id)})}(e);return{imported:1,accounts:[wu(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 jl(e){const t=await zl(e);return function(e){const t=cu();tn(t,{recursive:!0,mode:448}),Vt(t,448);const n=wn(t,ql);mn(n,`${JSON.stringify(e)}\n`,{encoding:"utf8",mode:384}),Vt(n,384)}(function(e){try{const t=tu(e);if(!eu(t))throw new Nc(409,"Authenticate this xedoc account before making it the active local Codex account.");return t}catch(t){if(t instanceof Nc)throw t;throw new Nc(409,"Authenticate this xedoc account before making it the active local Codex account.")}}(e)),wu(t,!0)}async function zl(e){const t=await jc.codexAccount.findUnique({where:{id:e}});if(!t)throw new Nc(404,"Codex account not found.");return pu(t.id),t}async function Fl(){const{codexHome:e,instructionsPath:t}=xl();await fu();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:$l,shared:!0}}async function Bl(e){const t=function(e){if("string"!=typeof e)throw new Nc(400,"instructions must be a string.");const t=e.replace(/\r\n?/g,"\n");if(Buffer.byteLength(t,"utf8")>$l)throw new Nc(400,"instructions must be 32768 bytes or fewer.");return t}(e.instructions),{codexHome:n,instructionsPath:a}=xl();return await fu(),mn(a,t,{encoding:"utf8",mode:384}),Vt(a,384),{accountId:null,codexHome:n,instructionsPath:a,instructions:t,maxBytes:$l,shared:!0}}async function Gl(e,t="browser"){const n=await zl(e),a="INVALIDATED"===n.status;if(Zl(e)&&!a)return dl.stopRuntime(e),await jc.codexAccount.update({where:{id:e},data:Ql(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};a&&(dl.stopRuntime(e),function(e){cn(wn(pl(e),ql),{force:!0})}(e)),await jc.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const r=Jl(n);if(!a){const t=await async function(e){try{return rl(rl((await e.request("account/read",{refreshToken:!1})).result)?.account)??null}catch{return null}}(r);if(t)return await jc.codexAccount.update({where:{id:e},data:Ql(e,t)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}}const i=rl((await r.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt",codexStreamlinedLogin:!0})).result),s="chatgptDeviceCode"===il(i?.type)?"device":t,o=function(e,t){return"device"===t?il(e?.verificationUrl)??il(e?.verification_url)??il(e?.authUrl)??il(e?.auth_url)??il(e?.url)??null:il(e?.authUrl)??il(e?.auth_url)??il(e?.url)??null}(i,s),d=il(i?.loginId)??null,c="device"===s?il(i?.userCode)??il(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 jc.codexAccount.update({where:{id:e},data:"CONNECTED"===l?Ql(e):{status:l,lastAuthUrl:o,lastAuthMode:s,lastAuthLoginId:d,lastAuthUserCode:c,lastError:null}}),"AUTHENTICATING"===l&&function(e,t,n){Wl(t);let a=!1,r=()=>{};const i=()=>{a||(a=!0,c(),jc.codexAccount.update({where:{id:t},data:Ql(t)}))},s=e=>{a||(a=!0,c(),jc.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:e}}))},o=setInterval(()=>{Zl(t)?i():Xl(t,e).then(e=>{e&&(a=!0,c())}).catch(()=>{})},1500),d=setTimeout(()=>{c()},3e5),c=()=>{clearInterval(o),clearTimeout(d),r(),Kl.get(t)===c&&Kl.delete(t)};Kl.set(t,c),r=e.onEvent(e=>{const t=rl(e.params);if("account/login/completed"===e.method){const e=il(t?.loginId);if(n&&e&&e!==n)return;return!1===t?.success?void s(il(t.error)??"Login failed."):void i()}"account/updated"===e.method&&il(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 jc.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 Hl(e,t){const n=await zl(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Nc(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Nc(400,"Callback URL must use http.");if(t.username||t.password)throw new Nc(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 Nc(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Nc(400,"Callback URL must include an OAuth code or error.");return t}(t),r=Jl(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 Nc(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=rl((await i)?.params);if(!1===s?.success){const t=il(s.error)??"Login failed.";return await jc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Vl(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await Xl(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:Zl(e)?(dl.stopRuntime(e),await jc.codexAccount.update({where:{id:e},data:Ql(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await jc.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:Vl(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 jc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Vl(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}var Kl=new Map;function Wl(e){Kl.get(e)?.(),Kl.delete(e)}function Ql(e,t){ul(e);const n=((a=t)?mu(il(a.email))??mu(il(a.accountEmail))??mu(il(a.chatgptEmail))??mu(il(rl(a.profile)?.email))??mu(il(rl(a.user)?.email)):null)??function(e){try{return lu(tu(e))}catch{return null}}(e);var a;return{...n?{displayName:n}:{},status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}function Vl(e){return"browser"===e||"device"===e?e:null}function Jl(e){return dl.getRuntime({accountId:e.id,command:e.command,args:xu(e.args),workingDirectory:null,environment:sl(e.environment)})}async function Xl(e,t){const n=rl(rl((await t.request("account/read",{refreshToken:!1})).result)?.account);return!!n&&(await jc.codexAccount.update({where:{id:e},data:Ql(e,n)}),!0)}function Yl(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Zl(e){try{return eu(tu(e))}catch{return!1}}function eu(e){return!("chatgpt"!==il(e.auth_mode)||!rl(e.tokens)&&!il(e.OPENAI_API_KEY))}function tu(e){const t=an(wn(pl(e),ql),"utf8");return rl(JSON.parse(t))??{}}function nu(e){try{const t=tu(e);return Object.keys(t).length?{authJson:t}:null}catch{return null}}function au(e,t){if(!t)return;const n=gl(e),a=`${JSON.stringify(t.authJson)}\n`;mn(wn(n,ql),a,{encoding:"utf8",mode:384}),Vt(wn(n,ql),384)}function ru(e){const t=iu({required:!1});if(!t)return new Set;const n=e.flatMap(e=>{const t=su(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 iu(e){try{const e=an(wn(cu(),ql),"utf8");if(Buffer.byteLength(e,"utf8")>_l)throw new Nc(400,"Local Codex auth.json must be 262144 bytes or fewer.");const t=rl(JSON.parse(e));if(!t||!eu(t))throw new Nc(400,"Local Codex auth.json does not contain an active ChatGPT account.");return ou(t)}catch(t){if(!e.required)return null;if(t instanceof Nc)throw t;throw new Nc(404,"No active local Codex auth.json was found. Sign in with the local Codex CLI first.")}}function su(e){try{const t=tu(e);return eu(t)?ou(t):null}catch{return null}}function ou(e){return{authJson:e,email:lu(e),fingerprint:(t=e,jt("sha256").update(du(t)).digest("hex"))};var t}function du(e){return Array.isArray(e)?`[${e.map(e=>du(e)).join(",")}]`:e&&"object"==typeof e?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${du(e[t])}`).join(",")}}`:JSON.stringify(e)}function cu(){return function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):bn(e)}(process.env.CODEX_LOCAL_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function lu(e){return mu(il(e.email))??mu(il(rl(e.account)?.email))??mu(il(rl(e.profile)?.email))??mu(il(rl(e.user)?.email))??uu(il(rl(e.tokens)?.id_token))??uu(il(rl(e.tokens)?.idToken))??uu(il(e.id_token))??uu(il(e.idToken))}function uu(e){if(!e)return null;const[,t]=e.split(".");if(!t)return null;try{return mu(il(rl(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 mu(e){const t=e?.trim();return t&&t.includes("@")?t:null}function hu(e){for(const t of e)pu(t.id)}async function fu(){hu(await jc.codexAccount.findMany({select:{id:!0}}))}function pu(e){try{gl(e)}catch(t){console.warn(`Failed to prepare Codex account home for ${e}.`,t instanceof Error?t.message:t)}}function gu(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function vu(e){return{args:gu(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 wu(e,t=!1){return{id:e.id,displayName:e.displayName,status:e.status,isLocalCodexActive:t,command:e.command,args:xu(e.args),environment:sl(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:Vl(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function xu(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):Yl()}function bu(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Nc(400,`${n} must be an object.`);return{id:Cu(e.id,`${n}.id`,128),displayName:Au(e.displayName,`${n}.displayName`,128),command:Cu(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:Eu(e.args,`${n}.args`)??Yl(),auth:Tu(e.auth,`${n}.auth`),defaultModel:Cu(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:ku(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:Nu(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:Iu(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:Mu(e.environment,`${n}.environment`)}}function yu(e){return null==e?null:Au(e,"runtime option",128)}function Nu(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 Nc(400,`${t} is invalid.`)}function Iu(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Nc(400,`${t} is invalid.`)}function ku(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Nc(400,`${t} is invalid.`)}function Au(e,t,n){const a=Cu(e,t,n);if(!a)throw new Nc(400,`${t} is required.`);return a}function Cu(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Nc(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Nc(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function Eu(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Nc(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function Tu(e,t){if(null==e)return null;const n=rl(e);if(!n)throw new Nc(400,`${t} must be an object.`);const a=rl(n.authJson);if(!a)throw new Nc(400,`${t}.authJson must be an object.`);return function(e,t,n){if(Buffer.byteLength(JSON.stringify(e),"utf8")>n)throw new Nc(400,`${t} must be ${n} bytes or fewer.`)}(a,`${t}.authJson`,_l),{authJson:a}}function Mu(e,t){if(null==e)return null;const n=rl(e);if(!n)throw new Nc(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var Su=qn({action:()=>Du,loader:()=>Pu});async function Pu({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Ul())}catch(t){return Lc(t)}}async function Du({request:e}){try{Ac(e,["POST"]),await Gc(e);const t=await Cc(e);return Ic(await async function(e){const t=await jc.codexAccount.create({data:{displayName:(n=e.displayName,il(n)?.trim()||"Codex account"),command:e.command??process.env.CODEX_COMMAND??"codex",args:gu(e.args??Yl()),defaultModel:yu(e.defaultModel),defaultPermissionMode:ku(e.defaultPermissionMode),defaultReasoningEffort:Nu(e.defaultReasoningEffort),defaultServiceTier:Iu(e.defaultServiceTier),environment:gu(e.environment)}});var n;return pu(t.id),t}({displayName:Ec(t.displayName,"displayName",{maxLength:128}),command:Ec(t.command,"command"),args:Tc(t.args,"args"),defaultModel:Lu(t.defaultModel,"defaultModel"),defaultPermissionMode:Lu(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Lu(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Lu(t.defaultServiceTier,"defaultServiceTier"),environment:Sc(t.environment,"environment")}),{status:201})}catch(t){return Lc(t)}}function Lu(e,t){return null===e?null:Ec(e,t,{maxLength:128})}var Ru=qn({loader:()=>$u});async function $u({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(){const e=await jc.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:xu(e.args),auth:nu(e.id),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:sl(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return Lc(t)}}var qu=qn({action:()=>_u});async function _u({request:e}){try{Ac(e,["POST"]),await Gc(e);const t=await Cc(e);if(!Array.isArray(t.accounts))throw new Nc(400,"accounts must be an array.");return Ic(await async function(e){const t=e.accounts.map(bu),n=[];for(const s of t){const e=s.id?await jc.codexAccount.findUnique({where:{id:s.id}}):null;if(e){dl.stopRuntime(e.id);const t=await jc.codexAccount.update({where:{id:e.id},data:vu(s)});au(t.id,s.auth),n.push(t);continue}const t=await jc.codexAccount.create({data:{...s.id?{id:s.id}:{},...vu(s)}});au(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 Gl(s.id));const r=await jc.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=>wu(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return Lc(t)}}var Uu=qn({action:()=>ju,loader:()=>Ou});async function Ou({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Fl())}catch(t){return Lc(t)}}async function ju({request:e}){try{Ac(e,["PATCH"]),await Gc(e);const t=await Cc(e);if("string"!=typeof t.instructions)throw new Nc(400,"instructions is required.");return Ic(await Bl({instructions:t.instructions}))}catch(t){return Lc(t)}}var zu=qn({action:()=>Fu});async function Fu({request:e}){try{return Ac(e,["POST"]),await Gc(e),Ic(await Ol(),{status:201})}catch(t){return Lc(t)}}var Bu=An(Nn),Gu="127.0.0.1",Hu=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 Ku(){const e=await new Promise((e,t)=>{const n=kn();n.once("error",n=>{"EADDRINUSE"!==n.code?t(n):e(!0)}),n.listen({host:Gu,port:Hu},()=>{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:Gu,inUse:e,killable:t.some(e=>e.pid>0&&e.pid!==process.pid),killedProcessIds:n,port:Hu,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 Bu("netstat",["-ano","-p","tcp"]);return function(e){const t=[],n=new RegExp(`:${Hu}\\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 Qu(t)}(e)}catch{return[]}}();const e=await async function(){try{const{stdout:e}=await Bu("lsof",["-nP",`-iTCP:${Hu}`,"-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 Qu(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}();return e.length?e:async function(){try{const{stdout:e}=await Bu("ss",["-ltnp"]);return function(e){const t=[],n=new RegExp(`:${Hu}\\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 Qu(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}()}():[])}async function Wu(){const e=await Ku();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 Nc(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(!Vu(r))throw new Nc(500,`Could not kill process ${i}: ${Ju(r)}`)}var a;return await(a=600,new Promise(e=>setTimeout(e,a))),{...await Ku(),killedProcessIds:n}}function Qu(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 Vu(e){return"object"==typeof e&&null!==e&&"code"in e&&"ESRCH"===e.code}function Ju(e){return e instanceof Error?e.message:"Unknown error"}var Xu=qn({action:()=>Zu,loader:()=>Yu});async function Yu({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Ku())}catch(t){return Lc(t)}}async function Zu({request:e}){try{return Ac(e,["POST"]),await Gc(e),Ic(await Wu())}catch(t){return Lc(t)}}var em=qn({action:()=>tm});async function tm({request:e,params:t}){try{return Ac(e,["POST"]),await Gc(e),Ic(await jl(Dc(t,"accountId")))}catch(n){return Lc(n)}}var nm=qn({action:()=>rm,loader:()=>am});async function am({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await zl(Dc(t,"accountId")))}catch(n){return Lc(n)}}async function rm({request:e,params:t}){try{await Gc(e);const n=Dc(t,"accountId");if("PATCH"===e.method){const t=await Cc(e);return Ic(await async function(e,t){return await zl(e),dl.stopRuntime(e),jc.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:gu(t.args),environment:gu(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:Ec(t.displayName,"displayName",{maxLength:128}),command:Ec(t.command,"command"),args:Tc(t.args,"args"),environment:Sc(t.environment,"environment")}))}if("DELETE"===e.method)return Ic(await async function(e){const t=await zl(e);return dl.stopRuntime(e),ul(e),jc.$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));kc(e.method)}catch(n){return Lc(n)}}var im=qn({action:()=>sm});async function sm({request:e,params:t}){try{Ac(e,["PATCH"]),await Gc(e);const n=await Cc(e),a={defaultModel:om(n.defaultModel,"defaultModel"),defaultPermissionMode:om(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:om(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:om(n.defaultServiceTier,"defaultServiceTier")};return Ic(await async function(e,t){return await zl(e),wu(await jc.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:yu(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:ku(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:Nu(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:Iu(t.defaultServiceTier)}}))}(Dc(t,"accountId"),a))}catch(n){return Lc(n)}}function om(e,t){return null===e?null:Ec(e,t,{maxLength:128})}var dm=qn({action:()=>lm,loader:()=>cm});async function cm({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(e){return await zl(e),{...await Fl(),accountId:e}}(Dc(t,"accountId")))}catch(n){return Lc(n)}}async function lm({request:e,params:t}){try{Ac(e,["PATCH"]),await Gc(e);const n=await Cc(e);if("string"!=typeof n.instructions)throw new Nc(400,"instructions is required.");return Ic(await async function(e,t){return await zl(e),{...await Bl(t),accountId:e}}(Dc(t,"accountId"),{instructions:n.instructions}))}catch(n){return Lc(n)}}async function um(e){const t=await mm(e);try{const n=await async function(e){return(await dl.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(pm(t));return await hm(e),n}catch(n){return fm(e,n)}}async function mm(e){const t=await jc.codexAccount.findUnique({where:{id:e}});if(!t)throw new Nc(404,"Account not found.");if("CONNECTED"!==t.status)throw new Nc("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 hm(e){if(function(e){return cl.has(e)}(e))throw new Nc(401,"Codex authentication token was invalidated. Re-authenticate this account.");if("INVALIDATED"===(await jc.codexAccount.findUnique({select:{status:!0},where:{id:e}}))?.status)throw new Nc(401,"Codex authentication token was invalidated. Re-authenticate this account.")}async function fm(e,t){if(t instanceof Nc)throw t;if(function(e){return ml(e instanceof Error?e.message:String(e??""))}(t))throw await ll(e,t),dl.stopRuntime(e),new Nc(401,"Codex authentication token was invalidated. Re-authenticate this account.");throw t}function pm(e){return{accountId:e.id,args:gm(e.args),command:e.command,environment:sl(e.environment),workingDirectory:null}}function gm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var vm=qn({loader:()=>wm});async function wm({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await um(Dc(t,"accountId")))}catch(n){return Lc(n)}}var xm=qn({loader:()=>bm});async function bm({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(e){const t=await mm(e);try{const n=await fl(pm(t));return await hm(e),n}catch(n){return fm(e,n)}}(Dc(t,"accountId")))}catch(n){return Lc(n)}}var ym=qn({action:()=>Nm});async function Nm({request:e,params:t}){try{Ac(e,["POST","DELETE"]),await Gc(e);const n=Dc(t,"accountId");return"DELETE"===e.method?Ic(await async function(e){const t=await zl(e);return Wl(e),dl.stopRuntime(e),Zl(e)?wu(await jc.codexAccount.update({where:{id:e},data:Ql(e)}),ru([t]).has(e)):"AUTHENTICATING"!==t.status?wu(t,ru([t]).has(e)):wu(await jc.codexAccount.update({where:{id:e},data:{status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}))}(n)):Ic(await Gl(n,function(e){const t=Ec(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new Nc(400,"mode must be browser or device.")}((await Cc(e)).mode)))}catch(n){return Lc(n)}}var Im=qn({action:()=>km});async function km({request:e,params:t}){try{Ac(e,["POST"]),await Gc(e);const n=Ec((await Cc(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Ic(await Hl(Dc(t,"accountId"),n))}catch(n){return Lc(n)}}var Am=globalThis,Cm=new Map,Em=new Map;async function Tm(e,t){const n=await bh(e);if(!n)return;const a=wn(gl(t),"sessions",_h(n));if(bn(n)!==bn(a)){await async function(e){const t=function(e){const t=`${yn}sessions${yn}`,n=bn(e),a=n.lastIndexOf(t);return-1===a?null:wn(n.slice(0,a),"session_index.jsonl")}(e),n=wn(vl(),"session_index.jsonl");if(!t||bn(t)===bn(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 Mm(e){const t=await bh(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>yh())return null;const a=`${t}:${e}`,r=Em.get(a);if(r&&Nh(r,n))return r.value;const i=function(e,t,n){let a,r,i,s,o,d,c,l,u,m=0,h=0;const f=new Map,p=[],g=[],v=new Set;for(const y of e.split(/\r?\n/)){if(!y.trim())continue;m+=1;const e=Ph(y);if(!e)continue;const w=Dh(e.timestamp)??n;o=Lh(o,w),d=Rh(d,w);const x=rl(e.payload);if("session_meta"===e.type&&x){a=il(x.id)??a,r=il(x.source)??r,i=il(x.originator)??i,s=il(x.cwd)??s,o=Dh(x.timestamp)??o;continue}const b=il(x?.type);if("event_msg"===e.type&&"task_started"===b&&(h+=1,u=nh(x)??ah(a,t,h),l=u,c=Dh(x?.started_at)??Dh(x?.startedAt)??w),"response_item"===e.type&&"function_call_output"===b){const e=th(x??{});e&&f.set(e,{output:Vm(x?.output),timestamp:w})}if("turn_context"===e.type&&x){s=il(x.cwd)??s;continue}const N={originator:i,path:t,sessionId:a,source:r,suppressedToolOutputCallIds:v,turnId:nh(x)??u},I=Rm(e,w,N);if(I){p.push({...I,order:m});continue}const k=qm(e,w,N);if(k&&g.push({...k,order:m}),"event_msg"===e.type&&"task_complete"===b){const e=nh(x);e&&e!==l||(c=void 0,l=void 0),u=void 0}}const w=function(e,t){if(!e.length)return t.sort(Wm).map(Qm);const n=[...e];for(const a of t){if("SYSTEM"===a.role){n.some(e=>Hm(e,a))||n.push(a);continue}const e=n.findIndex(e=>Km(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(Wm).map(Qm)}(function(e,t){return e.map(e=>{if("USER_INPUT_PROMPT"!==e.kind||!e.requestId||"PENDING"!==e.status)return e;const n=t.get(e.requestId);return n?{...e,completedAt:n.timestamp,metadata:{...e.metadata,resolvedAt:n.timestamp.toISOString(),result:_m(n.output),status:"resolved"},status:"COMPLETED"}:e})}(p,f),g),x=a??$h(t);if(!x||!w.length&&!l)return null;const b=qh(w.find(e=>"USER"===e.role)?.content??"")??qh(w[0]?.content??"")??"Imported Codex chat";return{activeStartedAt:c,activeTurnId:l,createdAt:o??n,externalThreadId:x,messages:w,originator:i,path:t,source:r,status:l?"RUNNING":"IDLE",title:b,updatedAt:d??n,workingDirectory:s}}(await Pn(e,"utf8"),e,new Date(n.mtimeMs)),s=i?.externalThreadId===t?i:null;return Ih(Em,a,n,s),s}catch{return null}}(t,e):null}async function Sm(e){const t=await Mm(e);return t?{activeStartedAt:t.activeStartedAt,activeTurnId:t.activeTurnId,status:t.status}:null}async function Pm(e){const t=await bh(e);return t?async function(e,t){try{const n=await Rn(e);if(!n.isFile()||n.size>yh())return null;const a=`${t}:${e}`,r=Cm.get(a);if(r&&Nh(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=Ph(t);if(!e)continue;"session_meta"===e.type&&(i=il(rl(e.payload)?.id)??i);const n=Ah(e);n&&(s=n)}const o=(i??$h(e))===t?s:null;return Ih(Cm,a,n,o),o}catch{return null}}(t,e):null}async function Dm(e){const t=await ch(e);return t?gh(t):null}async function Lm(){return(await async function(e){const t=await ph();if(!t)return[];try{const n=await lh(t);return await t.$queryRawUnsafe(`\n SELECT ${uh(n)}\n FROM threads\n ${function(e){return e.has("archived")?"WHERE COALESCE(archived, 0) = 0":""}(n)}\n ORDER BY ${fh(n)} DESC\n LIMIT ?\n `,e)}catch(n){return console.warn("Failed to read root Codex thread database.",n instanceof Error?n.message:n),[]}}(kh("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3))).map(gh).sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime())}function Rm(e,t,n){if("response_item"!==e.type)return null;const a=rl(e.payload),r=il(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?rh(e.text,e):"string"==typeof e.message?rh(e.message,e):"string"==typeof e.content?rh(e.content,e):Array.isArray(e.content)?rh(e.content.map(e=>{if("string"==typeof e)return e;const t=rl(e);return t?"string"==typeof t.text?t.text:sh(t)??"":""}).join(""),e):rh("",e)}(t);return!s.trim()||Fm(s)?null:{content:s,createdAt:n,itemId:Zm(t),metadata:Bm(t,a),rawPayload:Gm(e,t),role:r,turnId:a.turnId}}(e,a,t,n):"reasoning"===r?function(e,t,n,a){const r=function(e){return[Jm(e.summary),Jm(e.content),il(e.summary),il(e.text)].filter(e=>!!e?.trim()).join("\n\n")}(t);return r.trim()?{content:r,createdAt:n,itemId:Zm(t),kind:"THINKING",metadata:{...Bm(t,a),responseItemType:il(t.type)},rawPayload:Gm(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=il(t.type)??"tool_call",i=il(t.name)??r.replaceAll("_"," ");if("function_call"===r&&"update_plan"===i)return function(e,t,n,a){const r=th(t);r&&a.suppressedToolOutputCallIds?.add(r);const i=Xm(t.arguments)??{},s=(Array.isArray(i.plan)?i.plan:[]).map(e=>rl(e)).filter(e=>!!e).map(e=>({status:il(e.status)??"pending",step:il(e.step)??""})).filter(e=>e.step),o=il(i.explanation),d=o??s.map(e=>e.step).join("\n");return d.trim()||s.length?{completedAt:n,content:d,createdAt:n,itemId:Zm(t)??`plan:${a.turnId??n.getTime()}`,kind:"PLAN",metadata:{...Bm(t,a),explanation:o,kind:"plan",presentation:"progress",responseItemType:il(t.type),status:il(t.status)??"completed",steps:s,toolName:"update_plan"},rawPayload:Gm(e,t),role:"SYSTEM",status:"COMPLETED",turnId:a.turnId}:null}(e,t,n,a);if("function_call"===r&&"request_user_input"===i)return function(e,t,n,a){const r=th(t);if(!r)return null;a.suppressedToolOutputCallIds?.add(r);const i=Xm(t.arguments)??{},s=il(i.message)??"Codex needs more information before it can continue.";return{completedAt:null,content:s,createdAt:n,itemId:Zm(t),kind:"USER_INPUT_PROMPT",metadata:{...Bm(t,a),kind:"userInput",message:s,method:"request_user_input",mode:il(i.mode),questions:Om(i.questions),requestId:r,status:"pending",toolName:"request_user_input"},rawPayload:Gm(e,t),requestId:r,role:"SYSTEM",status:"PENDING",turnId:a.turnId}}(e,t,n,a);if("web_search_call"===r)return $m(e,t,n,a,Ym(t),"webSearch");if("image_generation_call"===r)return $m(e,t,n,a,"Image generation","imageGeneration");const s=Xm(t.arguments),o=function(e,t){const n=rl(e.action);return il(t?.cmd)??il(t?.command)??il(n?.command)??il(n?.cmd)}(t,s);return function(e,t){return"local_shell_call"===e||["exec_command","shell_command","write_stdin"].includes(t)}(r,i)?{content:o??i,createdAt:n,itemId:Zm(t),kind:"COMMAND_EXECUTION",metadata:{...Bm(t,a),callId:th(t),command:o??i,cwd:il(s?.cwd)??il(s?.workdir)??il(rl(t.action)?.cwd),kind:"command",status:il(t.status)??"completed"},rawPayload:Gm(e,t),role:"SYSTEM",turnId:a.turnId}:$m(e,t,n,a,i,"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=th(t);if(r&&a.suppressedToolOutputCallIds?.has(r))return null;const i=Vm(t.output);return i.trim()?{content:i,createdAt:n,itemId:eh(t),kind:"TOOL_ACTIVITY",metadata:{...Bm(t,a),callId:th(t),kind:"localCodexToolOutput",responseItemType:il(t.type),status:il(t.status)??"completed",toolName:il(t.name)},rawPayload:Gm(e,t),role:"SYSTEM",turnId:a.turnId}:null}(e,a,t,n):"compaction"===r||"context_compaction"===r?$m(e,a,t,n,zm(r),"contextCompaction"):null:null}function $m(e,t,n,a,r,i){return r.trim()?{content:r,createdAt:n,itemId:Zm(t),kind:"TOOL_ACTIVITY",metadata:{...Bm(t,a),eventKind:i,responseItemType:il(t.type),status:il(t.status)},rawPayload:Gm(e,t),role:"SYSTEM",turnId:a.turnId}:null}function qm(e,t,n){if("event_msg"!==e.type)return null;const a=rl(e.payload);if(!a)return null;const r=il(a.type);if("patch_apply_end"===r)return function(e,t,n,a){const r=rl(t.changes),i=r?Object.keys(r):[],s=il(t.status)??(!1===t.success?"failed":"completed");return i.length?{content:i.join("\n"),createdAt:n,itemId:Zm(t)??`patch:${a.turnId??n.getTime()}`,kind:"FILE_CHANGE",metadata:{...Bm(t,a),additions:0,deletions:0,kind:"fileChange",paths:i,status:s},rawPayload:Gm(e,t),role:"SYSTEM",turnId:a.turnId}:$m(e,t,n,a,il(t.stderr)??il(t.stdout)??"Patch applied","patchApply")}(e,a,t,n);if("web_search_end"===r)return $m(e,a,t,n,Ym(a),"webSearch");if("task_complete"===r){const r=il(a.last_agent_message)??"";return!r.trim()||Fm(r)?null:{content:r,createdAt:t,itemId:Zm(a)??`task-complete:${n.turnId??t.getTime()}`,metadata:{...Bm(a,n),eventKind:"taskComplete"},rawPayload:Gm(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?zm(r):"string"==typeof a.message?rh(a.message,a):"";return!s.trim()||Fm(s)?null:{content:s,createdAt:t,itemId:Zm(a),kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...Bm(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:Gm(e,a),role:i,turnId:n.turnId}}function _m(e){const t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function Um(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e&&e.trim()){const t=Number(e);return Number.isFinite(t)?t:void 0}}function Om(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e).map((e,t)=>({header:il(e.header),id:il(e.id)??`question-${t+1}`,isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:jm(e.options),question:il(e.question)??il(e.header)??"Answer",selectionLimit:Um(e.selectionLimit)??Um(e.selection_limit)})):[]}function jm(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e).map(e=>({description:il(e.description),label:il(e.label)??il(e.value)??""})).filter(e=>e.label):[]}function zm(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 Fm(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function Bm(e,t){return{kind:"localCodexImport",originator:t.originator,phase:il(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:il(e.type),turnId:t.turnId}}function Gm(e,t){return{payload:{callId:th(t),id:il(t.id),name:il(t.name),phase:il(t.phase),role:il(t.role),status:il(t.status),type:il(t.type)},timestamp:il(e.timestamp),type:il(e.type)}}function Hm(e,t){const n=il(rl(e.metadata)?.eventKind),a=il(rl(t.metadata)?.eventKind);return!!n&&n===a&&Km(e,t)}function Km(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 Wm(e,t){return e.order-t.order}function Qm({order:e,...t}){return t}function Vm(e){return"string"==typeof e?e:Jm(e)??""}function Jm(e){if(Array.isArray(e))return e.map(e=>{if("string"==typeof e)return e;const t=rl(e);return il(t?.text)??sh(t)??""}).filter(Boolean).join("\n")||void 0}function Xm(e){if("string"==typeof e)try{return rl(JSON.parse(e))}catch{return}return rl(e)}function Ym(e){const t=rl(e.action),n=il(e.query)??il(t?.query)??il(t?.pattern)??il(t?.url);return n?`Web search: ${n}`:"Web search"}function Zm(e){return il(e.id)??th(e)}function eh(e){const t=th(e);return t?`${t}:output`:Zm(e)}function th(e){return il(e.call_id)??il(e.callId)}function nh(e){return il(e?.turn_id)??il(e?.turnId)}function ah(e,t,n){return`${e??$h(t)??fn(t)}:turn:${n}`}function rh(e,t){return[e,...ih(t.images),...ih(t.local_images),...ih(t.localImages)].filter(Boolean).join("\n\n")}function ih(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?oh(e):sh(rl(e))).filter(e=>!!e):[]}function sh(e){return e?oh(il(e.url)??il(e.image_url)??il(e.path)??il(e.filePath)):null}function oh(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function dh(e,t={}){const n=e?.replace(/\s+/g," ").trim();return!n||Fm(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 ch(e){const t=await ph();if(!t)return null;try{const n=await lh(t);return(await t.$queryRawUnsafe(`\n SELECT ${uh(n)}\n FROM threads\n WHERE id = ?\n LIMIT 1\n `,e))[0]??null}catch{return null}}async function lh(e){const t=await e.$queryRawUnsafe("PRAGMA table_info(threads)");return new Set(t.map(e=>e.name))}function uh(e){return[mh(e,"id"),mh(e,"rollout_path","rolloutPath"),hh(e,e.has("created_at_ms")?"created_at_ms":"created_at","createdAt"),hh(e,fh(e),"updatedAt"),mh(e,"cwd"),mh(e,"title"),mh(e,"first_user_message","firstUserMessage"),mh(e,"preview"),mh(e,"archived"),mh(e,"archived_at","archivedAt")].join(",\n ")}function mh(e,t,n){return e.has(t)?`${t}${n?` AS ${n}`:""}`:`NULL AS ${n??t}`}function hh(e,t,n){return e.has(t)?`CAST(${t} AS TEXT) AS ${n}`:`NULL AS ${n}`}function fh(e){return e.has("updated_at_ms")?"updated_at_ms":e.has("updated_at")?"updated_at":"rowid"}async function ph(){const e=bl();try{await Cn(e,Xt.R_OK)}catch{return null}return Am.codexStatePrisma&&Am.codexStateDatabasePath===e||(await(Am.codexStatePrisma?.$disconnect().catch(()=>{})),Am.codexStateDatabasePath=e,Am.codexStatePrisma=new Wt({datasources:{db:{url:wh(e)}}})),Am.codexStatePrisma}function gh(e){const t=new Date(0),n=vh(e.updatedAt,t),a=vh(e.createdAt,n),r=xh(e.rolloutPath)[0]??"",i=dh(e.firstUserMessage,{allowGeneric:!0}),s=dh(e.preview,{allowGeneric:!0});return{createdAt:a,externalThreadId:e.id,firstUserMessage:i,path:r,preview:s,title:dh(e.title,{allowGeneric:!1})??qh(i??"")??qh(s??"")??null,updatedAt:n,workingDirectory:e.cwd??void 0}}function vh(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 wh(e){return`file:${e}?connection_limit=1&pool_timeout=30`}function xh(e){const t=e?.trim();if(!t)return[];const n=wn(vl(),"sessions",_h(t));return[...new Set([t,n])]}async function bh(e){const t=await ch(e);for(const n of xh(t?.rolloutPath))try{return await Cn(n,Xt.R_OK),n}catch{}return null}function yh(){return kh("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function Nh(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 kh(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Ah(e){const t=Ch(e);if(!t)return null;const n=rl(t.params),a=rl(t.info)??rl(n?.info)??n??t;return function(e,t=e){const n=Th(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Th(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Th(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}([Th(e,["input_tokens","inputTokens"]),Th(e,["output_tokens","outputTokens"]),Th(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}}(Eh(a,["last_token_usage","lastTokenUsage"])??Eh(a,["total_token_usage","totalTokenUsage"])??a,a)}function Ch(e,t=0){if(t>4)return;const n=rl(e);if(!n)return;const a=Sh(il(n.type)??""),r=Sh(il(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Ch(n[i],t+1);if(e)return e}}function Eh(e,t){for(const n of t){const t=rl(e[n]);if(t)return t}}function Th(e,t){for(const n of t){const t=Mh(e[n]);if(void 0!==t)return t}}function Mh(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 Sh(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function Ph(e){try{return rl(JSON.parse(e))??null}catch{return null}}function Dh(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function Lh(e,t){return!e||t<e?t:e}function Rh(e,t){return!e||t>e?t:e}function $h(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function qh(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 _h(e){const t=`${yn}sessions${yn}`,n=e.lastIndexOf(t);return-1===n?fn(e):e.slice(n+t.length)}var Uh="__xedocRealtimeState__";function Oh(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[Uh]??={handlers:new Set},e[Uh]}().handlers)r(a)}var jh=null;async function zh(){jh??=async function(){await jc.$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 jc.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_accountId_idx" ON "ThreadPreference"("accountId")'),await jc.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_archivedAt_idx" ON "ThreadPreference"("archivedAt")')}().then(()=>jc.$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 jh}async function Fh(){return await zh(),jc.threadPreference.findMany()}async function Bh(e){return await zh(),jc.threadPreference.findUnique({where:{threadId:e}})}async function Gh(e,t){await zh();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 jc.threadPreference.upsert({where:{threadId:e},create:{threadId:e,...n,updatedAt:new Date},update:n})}async function Hh(e){const[t,n]=await Promise.all([Dm(e),Bh(e)]);return t?.workingDirectory??n?.workingDirectory??null}function Kh(e){return"fullAccess"===e?"fullAccess":"default"}async function Wh(e){const t=Jh(),n=Xh(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:Yh(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 Qh(e,t){const n=Jh(),a=bn(Xh(n,e),function(e){const t=e.trim();if(!t)throw new Nc(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Nc(400,"Folder name must be a single folder name.");return t}(t)),r=xn(n,a);if(r.startsWith("..")||vn(r))throw new Nc(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 Nc(409,"Folder already exists.");throw i}return Wh(a)}function Vh(e){return Xh(Jh(),e)}function Jh(){const e=function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):bn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Zt(e)||tn(e,{recursive:!0}),on(e)}function Xh(e,t){const n=t?.trim(),a=n?vn(n)?n:wn(e,n):e;let r;try{r=on(bn(a))}catch{throw new Nc(400,"Workspace path does not exist.")}const i=xn(e,r);if(i.startsWith("..")||vn(i))throw new Nc(403,"Path is outside the workspace root.");if(!ln(r).isDirectory())throw new Nc(400,"Workspace path is not a directory.");return r}function Yh(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var Zh=1e6;async function ef(e,t,n){const a=await Hh(e);if(!a)throw new Nc(400,"Chat does not have a working directory.");const r=Vh(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 tf(r,i.path),o=await nf(s,r),d=n??i.line??null,c=Math.min(o.size,Zh),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:af(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>Zh}}async function tf(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Nc(400,"File path is required.");const a=await Ln(e),r=vn(n)?n:bn(a,n);let i;try{i=await Ln(r)}catch{throw new Nc(404,"File does not exist.")}return function(e,t){const n=xn(e,t);if(n.startsWith("..")||vn(n))throw new Nc(403,"Path is outside the chat working directory.")}(a,i),i}async function nf(e,t){const n=await Rn(e);if(!n.isFile())throw new Nc(400,"Workspace path is not a file.");const a=t?await Ln(t):null;return{name:fn(e),path:e,relativePath:a&&xn(a,e)||fn(e),size:n.size}}function af(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 rf=new Map,sf=new Map,of=new Map,df=new Map,cf=new Map,lf=new Map,uf="New Thread";async function mf(e){const t=await Bh(e),n=await yf(e);if(!n&&!sf.has(e))throw new Nc(404,"Chat not found.");return If(e,t,n,{includeExternalActivity:!0})}async function hf(e,t){const n=await mf(e);if("RUNNING"===n.status){if(void 0!==t.accountId&&t.accountId!==n.accountId)throw new Nc(400,"Wait for the current run to finish before switching accounts.");if(void 0!==t.collaborationMode&&Xp(t.collaborationMode)!==n.collaborationMode)throw new Nc(400,"Wait for the current run to finish before changing modes.");if(void 0!==t.workingDirectory)throw new Nc(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 xf(t)).id}(n.accountId,t.accountId);if(sf.get(e)?.primed&&void 0!==a&&a!==n.accountId)throw new Nc(400,"Send the first message before switching accounts on this chat.");const r=void 0===t.collaborationMode?void 0:Xp(t.collaborationMode),i=void 0===t.permissionMode?void 0:Yp(t.permissionMode),s=void 0===t.title?void 0:tg(t.title)??"Untitled chat",o=void 0===t.workingDirectory?void 0:Vh(t.workingDirectory),d=await Gh(e,{accountId:a,autoRotateAccount:t.autoRotateAccount,collaborationMode:r,model:void 0===t.model?void 0:Qp(t.model),permissionMode:i,reasoningEffort:void 0===t.reasoningEffort?void 0:Vp(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Jp(t.serviceTier),title:s,workingDirectory:o});if(a&&Tm(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 jc.codexAccount.findUnique({where:{id:t.accountId}});if(!a||"CONNECTED"!==a.status)return;await lg(sg(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=sf.get(e);t&&(t.permissionMode=i),"fullAccess"===i&&await async function(e){const t=[...rf.values()].filter(t=>t.threadId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=zp(t);n.runtime.respondToServerRequest(n.rpcId,a),rf.delete(Fp(e,n.requestId));const r=Sf(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&&rg(e,"message.updated",r)}}(e)}const c=await If(e,d);return rg(e,"chat.updated",c),c}async function ff(e){await mf(e);const t=await If(e,await async function(e){return Gh(e,{archivedAt:new Date})}(e));return rg(e,"chat.updated",t),t}async function pf(e,t=0,n=50){const a=await mf(e),r=Math.min(Math.max(n,1),200),i=(await async function(e){const t=await Mm(e);return t?t.messages.map(e=>function(e){return{completedAt:void 0===e.completedAt?e.createdAt:e.completedAt,content:e.content,createdAt:e.createdAt,itemId:e.itemId,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,requestId:e.requestId,role:e.role,source:"session",status:e.status,turnId:e.turnId}}(e)):[]}(e)).map((t,n)=>function(e,t,n,a,r){const i=n.createdAt??t.createdAt;return{chatId:e,completedAt:void 0===n.completedAt?n.createdAt??i:n.completedAt,content:n.content,createdAt:i,id:kf(e,n,a),itemId:n.itemId??null,kind:n.kind??"CHAT",metadata:n.metadata?Kp(n.metadata):Af(n),rawPayload:Kp(n.rawPayload??null),requestId:n.requestId??null,role:n.role,runId:null,sequence:r,status:n.status??"COMPLETED",turnId:n.turnId??null}}(e,a,t,n,n+1)),s=function(e,t){const n=sf.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&&Pf(e.content)===Pf(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 gf(e,t,n){await mf(e);const a=Fp(e,t),r=rf.get(a);if(!r)throw new Nc(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Nc(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Nc(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Nc(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),rf.delete(a);const s=Sf(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 Nc(410,"Server request is no longer active.");return rg(e,"message.updated",s),s}async function vf(e,t){let n=await mf(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Nc(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await Rf(n));const a=t.accountId??n.accountId;if(!a)throw new Nc(400,"Choose a Codex account before sending messages.");const r=await xf(a);if(!n.workingDirectory)throw new Nc(400,"Select a working directory before sending messages.");const i=Vh(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new Nc(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 Nc(400,"Attachment kind is invalid.");n.push(await Of(e,a))}else n.push(Uf(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 Nc(400,"Message content or an attachment is required.");const d=void 0===t.collaborationMode?void 0:Xp(t.collaborationMode),c=d??n.collaborationMode,l=n.permissionMode,u=new Date,m=await Ef(e);if("RUNNING"===n.status&&"RUNNING"!==m.status&&"QUEUED"!==m.status)throw new Nc(409,"This Codex thread is active in another client. Wait for that turn to finish before sending from the web UI.");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=sf.get(o);if(!d?.runtime)throw new Nc(409,"The active turn is not ready for steering yet.");const c=d.turnId??await Qf(d.runtime,o);if(!c)throw new Nc(409,"The active turn has not published a turn id yet.");const l=await Bh(o),u=await dp(d.runtime,l?.model??null,l?.reasoningEffort??null);d.turnId=fp(await Kf(d.runtime,{expectedTurnId:c,threadId:o,...sp(n,u)},a,t))??c;const m=Mf(o,{completedAt:s,content:r,metadata:Ff({...i,delivery:"steer",steeredAt:s.toISOString()},t),role:"USER",status:"COMPLETED"});return rg(o,"chat.updated",await mf(o)),rg(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=Mf(c,{completedAt:d,content:i,metadata:Ff({...s,delivery:"queue",queuedAt:d.toISOString(),queueId:u,queueStatus:"queued"},t),role:"USER",status:"COMPLETED"});return Tf(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}),rg(c,"chat.updated",await mf(c)),rg(c,"message.created",m),{message:m,assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:await Bf(n,zf(t.content,s)),collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,queuedAt:u,threadId:e,workingDirectory:i});const h=Mf(e,{completedAt:u,content:o,metadata:Ff(t.metadata,s),role:"USER",status:"COMPLETED"});rg(e,"message.created",h);const f=await Df({account:r,attachments:s,automaticTitleSeed:await Bf(n,zf(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 wf(e){const t=sf.get(e)?.status;return"RUNNING"===t||"QUEUED"===t?"RUNNING":"IDLE"}async function xf(e){const t=await jc.codexAccount.findUnique({where:{id:e}});if(!t)throw new Nc(400,"Account not found.");if("CONNECTED"!==t.status)throw new Nc(400,"Authenticate the account before using this chat.");return t}async function bf(){const e=await Lm(),t=new Map;for(const n of e)t.set(n.externalThreadId,Nf(n));return await Promise.all(e.slice(0,8).map(async e=>{const n=await Sm(e.externalThreadId),a=t.get(e.externalThreadId);a&&"RUNNING"===n?.status&&(a.status="RUNNING")})),t}async function yf(e){const t=await Dm(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 Nf(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 If(e,t,n,a={}){const r=void 0===n?await yf(e):n,i=sf.get(e),s=a.includeExternalActivity?await Sm(e):null,o="RUNNING"===i?.status||"QUEUED"===i?.status||"RUNNING"===r?.status||"RUNNING"===s?.status,d=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),c=t?.createdAt??r?.createdAt??i?.updatedAt??new Date,l=i?.updatedAt??r?.updatedAt??t?.updatedAt??c,u=function({preferenceTitle:e,preview:t,seed:n,snapshotTitle:a}){for(const r of[e,a]){const e=tg(r??"");if(e&&!ng(e))return e}return ag(n??"")??ag(t??"")??uf}({preferenceTitle:t?.title,preview:r?.preview,seed:(m=i?.messages??[],[...m].reverse().find(e=>"USER"===e.role&&e.content.trim())?.content??null??r?.firstUserMessage??null),snapshotTitle:r?.title});var m;return{...d,id:e,externalThreadId:e,lastActivityAt:l,status:t?.archivedAt?"ARCHIVED":o?"RUNNING":"IDLE",title:u,workingDirectory:r?.workingDirectory??d.workingDirectory,createdAt:c,updatedAt:l}}function kf(e,t,n){return["codex",e,t.turnId??"turn",t.itemId??n,t.role.toLowerCase()].join(":")}function Af(e){return{kind:"codexTranscript",source:e.source}}function Cf(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=rl(e);return Wp(t?.text)??Wp(t?.content)??Wp(t?.message)??function(e){return e?function(e){const t=e?.trim();return t?`<image>${t}</image>`:null}(il(e.url)??il(e.image_url)??il(e.path)??il(e.filePath)):null}(t)??""}).join("");return t.length?t:void 0}async function Ef(e){const t=sf.get(e);if(t)return t;const n=(await Mm(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 sf.set(e,a),a}function Tf(e){const t=sf.get(e);if(!t)throw new Error(`Missing runtime state for ${e}.`);return t}function Mf(e,t){const n=Tf(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 Sf(e,t,n){const a=sf.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?{...rl(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 Pf(e){return e.replace(/\s+/g," ").trim()}async function Df({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 Ef(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 Gh(c,{collaborationMode:o});const h=Mf(c,{content:"",kind:"CHAT",role:"ASSISTANT",runId:m,status:"PENDING"});return rg(c,"chat.updated",await mf(c)),rg(c,"message.created",h),rg(c,"run.status",{runId:m,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(function(e,t){const n=of.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);of.set(e,i),n.catch(()=>{}).then(t).finally(()=>{a(),of.get(e)===i&&of.delete(e)})})(a.id,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=Tf(e),u=await Bh(e),m=(p=u?.permissionMode,"fullAccess"===p?"fullAccess":"default"),h=sg(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=Sf(e,n,{status:"STREAMING"});g&&rg(e,"message.updated",g);rg(e,"chat.updated",await mf(e)),rg(e,"run.status",{runId:t,status:"RUNNING"}),await Tm(e,a.id);let v="";const w=new Map;let x,b=!1,y=null,N=null;const I=l.runtime.onEvent(a=>{(function(e,t,n){const a=gp(e);if(t&&a&&a!==t)return!1;const r=vp(e);return!n||!r||r===n})(a,e,x)&&Gf(t,()=>async function(e,t){const n=function(e){const t=Rp(e);if(t){const e=rl(t.params),n=rl(t.info)??rl(e?.info)??e??t;return Lp($p(n,["last_token_usage","lastTokenUsage"])??$p(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=rl(e.params),a=rl(n?.event),r=rl(n?.usage)??rl(a?.usage)??(Dp(e.method)?n:void 0);return r?Lp(r):null}(t);n&&rg(e.threadId,"context.updated",n);if(function(e){return!!Rp(e)||Dp(e.method)}(t))return;if(function(e){const t=rl(e.params),n=rl(t?.payload)??rl(t?.event);return[e.method,il(t?.type),il(n?.type),il(n?.event)].some(e=>Ip(e??"").includes("compact"))}(t))return void(await cp({completedAt:new Date,content:Sp(t),itemId:`context-compaction:${vp(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Pp(t)?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:vp(t)}));const a=t.method??"",r=rl(t.params),i=xp(t),s=Ip(il(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=rl(e.params),n=rl(e.result),a=rl(t?.event);return dg(t)??dg(a)??dg(n)}(t);return void(n&&await ug(e.threadId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=Wp(r?.delta)??Wp(rl(r?.event)?.delta);if(!n)return;const a=wp(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await cp({content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:il(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:vp(t)});return void rg(e.threadId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&kp(s))return void(await cp({content:"",fallbackMessageId:e.assistantMessageId,itemId:wp(t),kind:"CHAT",metadata:{kind:"assistant",phase:il(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:vp(t)}));if("item/completed"===a&&kp(s)){const n=function(e){if(!e)return"";const t=Wp(e.text)??Wp(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>Wp(rl(e)?.text)??"").filter(Boolean).join("")}(i)||hp(t);if(!n)return;const a=wp(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await cp({completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:il(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:vp(t)}))}if(a.startsWith("item/reasoning/")||Ip(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=wp(t)??`${n.toLowerCase()}:${vp(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 cp({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:vp(t)})}(e,t,"THINKING",{content:yp(t,i),delta:bp(t),metadata:{kind:"thinking",status:Ep(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=rl(t.params)??{},a="item/plan/delta"===t.method?bp(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>rl(e)).filter(e=>!!e).map(e=>({status:il(e.status)??"pending",step:il(e.step)??""})).filter(e=>e.step),i=il(n.explanation),s=vp(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:wp(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 cp({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=rl(t.params)??{},r=n??a,i=wp(t)??`command:${vp(t)??"turn"}`,s=`COMMAND:${i}`,o=bp(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:Wp(r.output)??Wp(r.aggregatedOutput)??Wp(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=il(r.command)??il(a.command)??"command",l=Ep(r,t.method??"");await cp({completedAt:Ap(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Gp(r.actions)??Gp(r.commandActions),command:c,cwd:il(r.cwd)??il(a.cwd),durationMs:Hp(r.durationMs)??Hp(r.duration_ms),exitCode:Hp(r.exitCode)??Hp(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:vp(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=rl(t.params)??{},r=n??a,i=wp(t)??`file-change:${vp(t)??"turn"}`,s=Tp(r)??Tp(a),o=Gp(r.changes)??Gp(a.changes)??[],d=function(e,t){const n=[il(e.path),il(e.filePath),il(e.file_path),...t.flatMap(e=>{const t=rl(e);return[il(t?.path),il(t?.filePath),il(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await cp({content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Hp(r.additions)??Mp(s,"+"),changes:o,deletions:Hp(r.deletions)??Mp(s,"-"),diff:s,kind:"fileChange",paths:d,status:Ep(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Ap(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:vp(t)})}(e,t,i));if("serverRequest/resolved"===a)return void function(e,t){const n=rl(t.params)??{},a=il(n.requestId)??il(n.id);if(!a)return;rf.delete(Fp(e,a));const r=sf.get(e)?.messages.find(e=>e.requestId===a);if(!r)return;const i=Sf(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&&rg(e,"message.updated",i)}(e.threadId,t);("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=rl(t.params),a=il(rl(n?.error)?.message)??il(n?.message)??t.error?.message??"Codex runtime error.";await cp({completedAt:new Date,content:a,itemId:`error:${vp(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:vp(t)})}(e,t)}({assistantMessageId:n,onAssistantContent:e=>{v=e},runId:t,streamBuffers:w,threadId:e},a)).catch(e=>ig("Codex event projection failed.",e))}),k=l.runtime.onServerRequest(n=>{(function(e,t,n){const a=rl(e.params),r=il(a?.threadId);if(t&&r&&r!==t)return!1;const i=il(a?.turnId);return!n||!i||i===n})(n,e,x)&&Gf(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=rl(t.params)??{},r=yl(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:il(n.message),method:e,mode:il(n.mode),questions:Up(n.questions),raw:Kp(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Gp(n.availableDecisions),changes:Gp(n.changes),command:il(n.command),cwd:il(n.cwd),itemId:il(n.itemId),kind:a,method:e,raw:Kp(r),reason:il(n.reason)??il(n.message),requestId:t,requestKind:a,status:"pending",turnId:il(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=zp(i);return e.runtime.respondToServerRequest(t.id,n),void(await cp({completedAt:new Date,content:jp(s),itemId:il(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:il(a.turnId)}))}const o=await cp({content:jp(s),itemId:il(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:il(a.turnId)});rf.set(Fp(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=>ig("Codex server request projection failed.",e))});try{if(!f&&await rp(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=ag(r);(async()=>{i&&await cg(t,a,i);const n=await async function(e,{cwd:t,seed:n}){try{const a=rl((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return tg(il(a?.name)??il(a?.threadName)??il(a?.thread_name)??il(a?.title)??"")}catch{return null}}(t,{cwd:e,seed:r});n&&await cg(t,a,n)})().catch(()=>{})}({cwd:o,runtime:l.runtime,seed:c,threadId:e});const h=await dp(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)&&gp(t)===e&&(!x||vp(t)===x),6e5,y.signal);const p=await async function(e,t,n,a){const r=tp(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,!np(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}:{},...ip(d,h,m),metadata:i},r,s);b=!0,x=fp(p),l.primed=!1,l.turnId=x??null,x&&l.interruptRequested&&await Hf(l.runtime,x,e);const g=await N;if(await async function(e){await(cf.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Lf(Cp(g));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Error(Cp(g));const w=await async function(e,t,n){try{const a=rl((await e.request("thread/turns/list",{limit:20,threadId:t},3e4)).result);return pp((Array.isArray(a?.data)?a.data:[]).map(e=>rl(e)).filter(e=>!!e).filter(e=>!n||il(e.id)===n).at(-1))??null}catch{return null}}(l.runtime,e,x)||hp(g)||hp(p)||v,I=new Date,k=Sf(e,n,{completedAt:I,content:w,rawPayload:g,status:"COMPLETED",turnId:x??null});mp(e,t,"COMPLETED"),up(e,t,"Codex completed the turn."),l.status="IDLE",l.runtime=void 0,l.updatedAt=I,"plan"===d&&function(e,t){return sf.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"===rl(e.metadata)?.presentation)})??!1}(e,t)&&await Gh(e,{collaborationMode:"default"}),rg(e,"chat.updated",await mf(e)),k&&rg(e,"message.completed",k),rg(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t){const n=await async function(e,t){try{const n=dg((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result);if(n)return n}catch{}try{const n=rl((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return dg((Bp(n?.data)??Bp(n?.items)??Bp(n?.threads)??[]).find(e=>il(e.id)===t))}catch{return null}}(e,t);n&&await ug(t,n)}(sg(a),e),await Tm(e,a.id)}catch(A){y?.abort(),await(N?.catch(()=>{}));const a=A instanceof Error?A.message:"Codex run failed.",r=f&&!b;up(e,t,a);const i=new Date;if(A instanceof Lf){mp(e,t,"COMPLETED");const s=Sf(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,rg(e,"chat.updated",await mf(e)),s&&rg(e,"message.completed",s),void rg(e,"run.status",{error:a,runId:t,status:"CANCELLED"})}mp(e,t,"FAILED");const s=Sf(e,n,{completedAt:i,content:v,status:"FAILED"});l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,rg(e,"chat.updated",await mf(e)),s&&rg(e,"message.failed",{...s,error:a}),rg(e,"run.status",{error:a,runId:t,status:"FAILED"})}finally{y?.abort(),I(),k(),cf.delete(t),l.runId=null,l.turnId=null,l.queuedTurns.length?function(e){const t=(df.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){const t=sf.get(e);if(!t||"RUNNING"===t.status||"QUEUED"===t.status)return;const n=t.queuedTurns.shift();if(!n)return;try{const t=await xf((await Rf(await mf(e))).accountId??n.accountId),a=new Date,r=await Df({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=Sf(e,n.messageId,{metadataPatch:{dequeuedAt:a.toISOString(),queueStatus:"running",runId:r.runId}});i&&rg(e,"message.updated",i)}catch(A){const a=Sf(e,n.messageId,{metadataPatch:{error:A instanceof Error?A.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"}});a&&rg(e,"message.updated",a)}}(e)).catch(()=>{});df.set(e,t),t.finally(()=>{df.get(e)===t&&df.delete(e)})}(e):function(e){Rf(async function(e){try{return await mf(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 Lf=class extends Error{};async function Rf(e){const t=await e;if(!t)throw new Nc(404,"Chat not found.");if(!t.autoRotateAccount||"RUNNING"===t.status||sf.get(t.id)?.primed)return t;const n=await jc.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 fl({accountId:e.id,args:og(e.args),command:e.command,environment:sl(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?$f(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:$f(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($f(a.get(s.id))<0)return t;const o=await Gh(t.id,{accountId:s.id});Tm(t.id,s.id).catch(()=>{});const d=await If(t.id,o);return rg(t.id,"chat.updated",d),d}function $f(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?qf(e.secondary)?"weekly":qf(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-_f(e.usedPercent));return t.length?Math.min(...t):0}function qf(e){return _f(e?.usedPercent??0)>=100}function _f(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Uf(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 Nc(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 Nc(400,"Image attachments must be 6 MB or smaller.");const s=jf(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 Of(e,t){const n=await async function(e,t){return nf(await tf(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Bt(),kind:"file",name:jf(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function jf(e,t){const n=e?.trim();return(n?fn(n):t).slice(0,160)||"attachment"}function zf(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 Ff(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}function Bf(e,t){if(!ng(e.title))return null;const n=t.trim();return n||null}function Gf(e,t){const n=(cf.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return cf.set(e,a),a.finally(()=>{cf.get(e)===a&&cf.delete(e)}),n}async function Hf(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=tp(n,a),s=void 0===t.collaborationMode?[t]:[t,Wf(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&&ap(d))break;if(np(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 Qf(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}function Wf(e,t){const n={...e};return delete n[t],n}async function Qf(e,t){for(let n=0;n<3;n+=1){const a=await Vf(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 Vf(e,t){try{const n=rl((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return Jf(Bp(n?.data)??Bp(n?.items)??Bp(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 Jf(Bp(rl(rl(n.result)?.thread)?.turns)??[],!1)}function Jf(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>Yf(Xf(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!ep(Zf(i)))continue;const e=Yf(Xf(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function Xf(e){return il(e.id)??il(e.turnId)??il(e.turn_id)??null}function Yf(e){const t=e?.trim();return t||null}function Zf(e){return(il(e.status)??il(e.turnStatus)??il(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function ep(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function tp(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 np(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 ap(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 rp(e,t,n,a){const r=t?"thread/resume":"thread/start",i=rl((await e.request(r,{...t?{threadId:t}:{},cwd:n},3e4)).result),s=il(rl(i?.thread)?.id)??il(i?.threadId)??il(i?.thread_id)??t;if(!s)throw new Error("Codex did not return a thread id.");return s}function ip(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:op(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function sp(e,t=null){return"plan"!==e?{}:{collaborationMode:op(e,t)}}function op(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function dp(e,t,n){const a=Zp(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=rl(rl((await e.request("config/read",{},3e4)).result)?.config),n=Zp(il(t?.model));if(r=r??eg(t?.model_reasoning_effort)??eg(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=rl((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=rl(e),n=Zp(il(t?.id))??Zp(il(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}async function cp(e){return async function(e,t){if(!e)return t();const n=lf.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);lf.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),lf.get(e)===i&&lf.delete(e)}}(lp(e),async()=>{const t=Tf(e.threadId),n=function(e,t){const n=lp(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?Sf(e.threadId,n.id,{completedAt:e.completedAt,content:e.content,metadata:e.metadata,rawPayload:e.rawPayload,status:e.status,turnId:e.turnId??n.turnId}):Mf(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=lp(e);return r&&t.messageKeys.set(r,a.id),rg(e.threadId,n?"message.updated":"message.created",a),a})}function lp(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 up(e,t,n){const a=sf.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=Fp(e,r.requestId),a=rf.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),rf.delete(t)}const a=Sf(e,r.id,{completedAt:new Date,metadataPatch:{expiredAt:(new Date).toISOString(),reason:n,status:"expired"},status:"COMPLETED"});a&&rg(e,"message.updated",a)}}function mp(e,t,n){const a=sf.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=Sf(e,r.id,{completedAt:new Date,status:n});a&&rg(e,"message.updated",a)}}function hp(e){const t=rl(e.result),n=rl(e.params),a=rl(n?.payload)??n??t;return pp(rl(n?.turn)??rl(t?.turn))??Wp(t?.text)??Wp(t?.content)??Wp(a?.text)??Wp(a?.content)??Wp(a?.delta)??Wp(a?.message)??""}function fp(e){const t=rl(e.result),n=rl(e.params);return il(t?.turnId)??il(t?.turn_id)??il(n?.turnId)??il(n?.turn_id)??il(rl(t?.turn)?.id)??il(rl(n?.turn)?.id)}function pp(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=rl(e);return"agentMessage"!==t?.type?null:Wp(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function gp(e){const t=rl(e.params),n=rl(e.result),a=rl(t?.event);return il(t?.threadId)??il(t?.thread_id)??il(n?.threadId)??il(n?.thread_id)??il(a?.threadId)??il(a?.thread_id)}function vp(e){const t=rl(e.params),n=rl(e.result),a=xp(e);return il(t?.turnId)??il(n?.turnId)??il(a?.turnId)??fp(e)}function wp(e){const t=rl(e.params),n=rl(e.result),a=xp(e);return il(t?.itemId)??il(n?.itemId)??il(a?.id)}function xp(e){const t=rl(e.params),n=rl(e.result),a=rl(t?.payload);return rl(t?.item)??rl(n?.item)??rl(a?.item)}function bp(e){const t=rl(e.params),n=rl(t?.event);return Wp(t?.delta)??Wp(t?.text)??Wp(t?.output)??Wp(n?.delta)??Wp(n?.text)}function yp(e,t){const n=rl(e.params),a=rl(e.result);return[t,n,rl(n?.event),rl(n?.payload),a].map(Np).find(e=>!!e?.trim())}function Np(e){if(e)return Wp(e.reasoning)??Wp(e.reasoningText)??Wp(e.reasoning_text)??Wp(e.summary)??Cf(e.summary)??Cf(e.content)??Wp(e.text)??Wp(e.output)}function Ip(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function kp(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 Cp(e){const t=rl(e.params);return il(rl(t?.error)?.message)??il(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function Ep(e,t){const n=il(e?.status);return n?Ip(n):t.includes("failed")||t.includes("error")?"failed":Ap({method:t})?"completed":"running"}function Tp(e){return Wp(e.diff)??Wp(e.unifiedDiff)??Wp(e.unified_diff)??Wp(e.patch)}function Mp(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function Sp(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 Pp(e){return Ip(e.method??"").includes("start")}function Dp(e){const t=Ip(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Lp(e,t=e){const n=qp(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=qp(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=qp(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}([qp(e,["input_tokens","inputTokens"]),qp(e,["output_tokens","outputTokens"]),qp(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 Rp(e,t=0){if(t>4)return;const n=rl(e);if(!n)return;const a=Ip(il(n.type)??""),r=Ip(il(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Rp(n[i],t+1);if(e)return e}}function $p(e,t){for(const n of t){const t=rl(e[n]);if(t)return t}}function qp(e,t){for(const n of t){const t=_p(e[n]);if(void 0!==t)return t}}function _p(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 Up(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e).map(e=>({header:il(e.header),id:il(e.id)??Bt(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:Op(e.options),question:il(e.question)??il(e.header)??"Answer",selectionLimit:Hp(e.selectionLimit)??Hp(e.selection_limit)})):[]}function Op(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e).map(e=>({description:il(e.description),label:il(e.label)??il(e.value)??""})).filter(e=>e.label):[]}function jp(e){return"userInput"===e.kind?il(e.message)??"Codex needs more information before it can continue.":il(e.reason)??il(e.command)??"Codex needs approval before it can continue."}function zp(e){return"approval"===e?{decision:"acceptForSession"}:{permissions:!0,scope:"session"}}function Fp(e,t){return`${e}:${t}`}function Bp(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e):null}function Gp(e){if(Array.isArray(e))return e.map(Kp)}function Hp(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Kp(e){return JSON.parse(JSON.stringify(e))}function Wp(e){return"string"==typeof e&&e.length>0?e:void 0}function Qp(e){if(null===e)return null;const t=e.trim();if(!t)throw new Nc(400,"Runtime option cannot be empty.");return t}function Vp(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Nc(400,"reasoningEffort is invalid.");return e}function Jp(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Nc(400,"serviceTier is invalid.")}function Xp(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Nc(400,"collaborationMode is invalid.")}function Yp(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Nc(400,"permissionMode is invalid.")}function Zp(e){const t=e?.trim();return t||null}function eg(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}function tg(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function ng(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 ag(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 rg(e,t,n){Oh(e,t,n)}function ig(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}function sg(e){return dl.getRuntime({accountId:e.id,args:og(e.args),command:e.command,environment:sl(e.environment),workingDirectory:null})}function og(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function dg(e){const t=rl(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name];for(const i of n){const e=tg(il(i)??"");if(e)return e}const a=tg(il(t.title)??"");if(a&&!ng(a))return a;const r=rl(t.thread);return r?dg(r):null}async function cg(e,t,n){const a=tg(n);if(!a||ng(a))return!1;const r=await Bh(t);return!(r?.title&&!ng(r.title))&&(await ug(t,a),lg(e,t,a),!0)}async function lg(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}async function ug(e,t){const n=tg(t);n&&!ng(n)&&rg(e,"chat.updated",await If(e,await Gh(e,{title:n})))}var mg=qn({action:()=>fg,loader:()=>hg});async function hg({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(){const[e,t]=await Promise.all([Fh(),bf()]),n=new Map(e.map(e=>[e.threadId,e])),a=new Set([...t.keys(),...sf.keys()]);return(await Promise.all([...a].map(e=>If(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 Lc(t)}}async function fg({request:e}){try{Ac(e,["POST"]),await Gc(e);const t=await Cc(e);return Ic(await async function(e){const t=await xf(e.accountId),n=Vh(e.workingDirectory),a=void 0===e.collaborationMode?"default":Xp(e.collaborationMode),r=void 0===e.permissionMode?"default":Yp(e.permissionMode),i=sg(t),s=await rp(i,null,n),o=await Gh(s,{accountId:t.id,autoRotateAccount:e.autoRotateAccount??!1,collaborationMode:a,model:void 0===e.model?void 0:Qp(e.model),permissionMode:r,reasoningEffort:void 0===e.reasoningEffort?void 0:Vp(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Jp(e.serviceTier),title:tg(e.title??"")??null,workingDirectory:n}),d=await Ef(s);d.accountId=t.id,d.primed=!0,d.runtime=i,d.updatedAt=new Date;const c=await If(s,o);return rg(s,"chat.updated",c),c}({accountId:Ec(t.accountId,"accountId",{required:!0}),autoRotateAccount:Mc(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:Ec(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:Ec(t.model,"model",{maxLength:160}),reasoningEffort:pg(t.reasoningEffort,"reasoningEffort"),serviceTier:pg(t.serviceTier,"serviceTier"),collaborationMode:pg(t.collaborationMode,"collaborationMode"),permissionMode:pg(t.permissionMode,"permissionMode"),title:Ec(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return Lc(t)}}function pg(e,t){return null===e?null:Ec(e,t,{maxLength:80})}var gg=qn({action:()=>wg,loader:()=>vg});async function vg({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await mf(Dc(t,"chatId")))}catch(n){return Lc(n)}}async function wg({request:e,params:t}){try{await Gc(e);const n=Dc(t,"chatId");if("PATCH"===e.method){const t=await Cc(e);return Ic(await hf(n,{accountId:Ec(t.accountId,"accountId"),autoRotateAccount:Mc(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:Ec(t.model,"model",{maxLength:160}),reasoningEffort:xg(t.reasoningEffort,"reasoningEffort"),serviceTier:xg(t.serviceTier,"serviceTier"),collaborationMode:xg(t.collaborationMode,"collaborationMode"),permissionMode:xg(t.permissionMode,"permissionMode"),title:Ec(t.title,"title",{maxLength:160}),workingDirectory:Ec(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Ic(await ff(n));kc(e.method)}catch(n){return Lc(n)}}function xg(e,t){return null===e?null:Ec(e,t,{maxLength:80})}var bg=qn({loader:()=>yg});async function yg({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(e){return await mf(e),{usage:await Pm(e)}}(Dc(t,"chatId")))}catch(n){return Lc(n)}}var Ng=qn({loader:()=>Ig});async function Ig({request:e,params:t}){try{Ac(e,["GET"]),await Gc(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Nc(400,"path is required.");return Ic(await ef(Dc(t,"chatId"),a,Pc(n,"line",0)||null))}catch(n){return Lc(n)}}var kg=An(Nn);async function Ag(e){const t=await Eg(e),n=await Tg(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await Mg(t.cwd),r=await Sg(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 Sg(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await Pg(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 Cg(e,t){const n=await Eg(e);if("RUNNING"===n.status)throw new Nc(409,"Git actions are disabled while Codex is running.");if(!(await Tg(n.cwd)))throw new Nc(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=Dg(t.branch);a=await Pg(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=Dg(t.branch);await Pg(n.cwd,["check-ref-format","--branch",e]),a=await Pg(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Nc(400,"Commit message is required.");await Pg(n.cwd,["add","-A"]),a=await Pg(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await Pg(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Nc(400,"Unsupported git action.");a=await Sg(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await Pg(n.cwd,["push"]):await async function(e){await Pg(e,["remote","get-url","origin"]);const t=await Mg(e);if(!t)throw new Nc(400,"Cannot push while detached from a branch.");return Pg(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:Rg(t.action),output:a,status:await Ag(e)}}async function Eg(e){const t=await Hh(e);if(!t)throw new Nc(400,"Chat does not have a working directory.");return{cwd:Vh(t),status:wf(e)}}async function Tg(e){return Sg(e,["rev-parse","--show-toplevel"])}async function Mg(e){return await Sg(e,["symbolic-ref","--quiet","--short","HEAD"])??await Sg(e,["rev-parse","--short","HEAD"])}async function Sg(e,t){try{return await Pg(e,t)}catch{return null}}async function Pg(e,t){try{const n=await kg("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return Lg(n.stdout,n.stderr)}catch(n){throw new Nc(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return Lg("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 Dg(e){const t=e?.trim();if(!t)throw new Nc(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Nc(400,"Branch name is invalid.");return t}function Lg(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function Rg(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 $g({request:e,params:t}){try{Ac(e,["GET"]),await Gc(e);const n=Dc(t,"chatId"),a=Dc(t,"operation"),r=new URL(e.url);if("status"===a)return Ic(await Ag(n));if("branches"===a)return Ic(await async function(e){const t=await Eg(e);if(!(await Tg(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await Mg(t.cwd);return{branches:(await Pg(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 Sg(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Ic(await async function(e,t){const n=await Eg(e);if(!(await Tg(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=Lg(await Sg(n.cwd,["diff","--stat",...a]),await Sg(n.cwd,["diff","--cached","--stat",...a]));return{diff:Lg(await Sg(n.cwd,["diff","--no-ext-diff",...a]),await Sg(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));if("history"===a)return Ic(await async function(e){const t=await Eg(e);return await Tg(t.cwd)?{commits:(n=await Sg(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 Nc(404,"Git operation not found.")}catch(n){return Lc(n)}}async function qg({request:e,params:t}){try{if(Ac(e,["POST"]),await Gc(e),"action"!==Dc(t,"operation"))throw new Nc(404,"Git operation not found.");const n=await Cc(e),a={action:_g(n.action),branch:Ec(n.branch,"branch",{maxLength:240}),message:Ec(n.message,"message",{maxLength:5e3})};return Ic(await Cg(Dc(t,"chatId"),a))}catch(n){return Lc(n)}}function _g(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Nc(400,"action is invalid.")}async function Ug({request:e,params:t}){try{Ac(e,["GET"]),await Gc(e);const n=new URL(e.url);return Ic(await pf(Dc(t,"chatId"),Pc(n,"afterSequence",0),Pc(n,"limit",50)))}catch(n){return Lc(n)}}async function Og({request:e,params:t}){try{Ac(e,["POST"]),await Gc(e);const n=await Cc(e),a={content:zg(n.content),accountId:Ec(n.accountId,"accountId"),attachments:Fg(n.attachments),collaborationMode:Kg(n.collaborationMode,"collaborationMode"),delivery:jg(n.delivery),metadata:Sc(n.metadata,"metadata")};return Ic(await vf(Dc(t,"chatId"),a),{status:201})}catch(n){return Lc(n)}}function jg(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Nc(400,"delivery is invalid.")}}function zg(e){if(null==e)return"";if("string"!=typeof e)throw new Nc(400,"content must be a string.");if(e.length>4e4)throw new Nc(400,"content must be 40000 characters or fewer.");return e.trim()}function Fg(e){if(void 0!==e){if(!Array.isArray(e))throw new Nc(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Nc(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:Bg(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Gg(n.mimeType,`attachments[${t}].mimeType`,80),name:Gg(n.name,`attachments[${t}].name`,160),size:Hg(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Gg(n.name,`attachments[${t}].name`,160),path:Bg(n.path,`attachments[${t}].path`,4096),size:Hg(n.size,`attachments[${t}].size`)};throw new Nc(400,`attachments[${t}].kind is invalid.`)})}}function Bg(e,t,n){if("string"!=typeof e||!e.trim())throw new Nc(400,`${t} is required.`);if(e.length>n)throw new Nc(400,`${t} is too large.`);return e}function Gg(e,t,n){if(null!=e){if("string"!=typeof e)throw new Nc(400,`${t} must be a string.`);if(e.length>n)throw new Nc(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function Hg(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Nc(400,`${t} must be a positive number.`);return e}}function Kg(e,t){return null===e?null:Ec(e,t,{maxLength:80})}async function Wg({request:e,params:t}){try{return Ac(e,["POST"]),await Gc(e),Ic(await async function(e){if("RUNNING"!==(await mf(e)).status)throw new Nc(409,"There is no running task to stop.");const t=sf.get(e);if(!t?.runId)throw new Nc(409,"There is no active run to stop.");return t.interruptRequested=!0,t.runtime&&t.turnId&&await Hf(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."}}(Dc(t,"chatId")))}catch(n){return Lc(n)}}async function Qg({request:e,params:t}){try{return Ac(e,["POST"]),await Gc(e),Ic(await async function(e,t){await mf(e);const n=sf.get(e);if(!n||"RUNNING"!==n.status&&"QUEUED"!==n.status)throw new Nc(409,"There is no running task to steer.");if(!n.runtime)throw new Nc(409,"The active turn is not ready for steering yet.");const a=n.queuedTurns.findIndex(e=>e.id===t);if(a<0)throw new Nc(410,"Queued message is no longer pending.");const r=n.queuedTurns[a],i=n.turnId??await Qf(n.runtime,e);if(!i)throw new Nc(409,"The active turn has not published a turn id yet.");const s=await Bh(e),o=await dp(n.runtime,s?.model??null,s?.reasoningEffort??null);n.turnId=fp(await Kf(n.runtime,{expectedTurnId:i,threadId:e,...sp(r.collaborationMode,o)},r.content,r.attachments))??i,n.queuedTurns.splice(a,1);const d=new Date,c=Sf(e,r.messageId,{completedAt:d,metadataPatch:{delivery:"steer",queueStatus:"steered",runId:n.runId??null,steeredAt:d.toISOString()},turnId:n.turnId});if(!c)throw new Nc(410,"Queued message is no longer available.");return rg(e,"chat.updated",await mf(e)),rg(e,"message.updated",c),c}(Dc(t,"chatId"),Dc(t,"queueId")))}catch(n){return Lc(n)}}async function Vg({request:e,params:t}){try{Ac(e,["POST"]),await Gc(e);const n=await Cc(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Nc(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Ic(await gf(Dc(t,"chatId"),Dc(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return Lc(n)}}async function Jg({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Wh(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return Lc(t)}}async function Xg({request:e}){try{Ac(e,["POST"]),await Gc(e);const t=await Cc(e),n={parentPath:Ec(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:Ec(t.name,"name",{required:!0,maxLength:255})};return Ic(await Qh(n.parentPath,n.name),{status:201})}catch(t){return Lc(t)}}var Yg={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-Bu-oywbm.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-B8vUNgcI.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-Bnly6Mpc.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-D31IhueQ.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-299669d5.js",version:"299669d5",sri:void 0},Zg="build/client",ev="/",tv={unstable_optimizeDeps:!0,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},nv=!0,av=!1,rv=[],iv={mode:"lazy",manifestPath:"/__manifest"},sv="/",ov={module:_n},dv={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:bc},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:Rc},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:Yc},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:el},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:nl},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:Su},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:Ru},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:qu},"routes/api.accounts.personalization":{id:"routes/api.accounts.personalization",parentId:"root",path:"api/accounts/personalization",index:void 0,caseSensitive:void 0,module:Uu},"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:zu},"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:Xu},"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:em},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:nm},"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:im},"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:dm},"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:vm},"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:xm},"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:ym},"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:Im},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:mg},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:gg},"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:bg},"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:Ng},"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:()=>qg,loader:()=>$g})},"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:()=>Og,loader:()=>Ug})},"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:()=>Wg})},"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:()=>Qg})},"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:()=>Vg})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:qn({action:()=>Xg,loader:()=>Jg})}},cv=!1;export{cv as allowedActionOrigins,Yg as assets,Zg as assetsBuildDirectory,ev as basename,ov as entry,tv as future,av as isSpaMode,rv as prerender,sv as publicPath,iv as routeDiscovery,dv as routes,nv 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 x,jsx as b,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 O,toast as j}from"sonner";import{AlertTriangle as z,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 xe,Import as be,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 Oe,PlugZap as je,Plus as ze,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 xt}from"@base-ui/react/scroll-area";import{Separator as bt}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 Ot from"remark-gfm";import"dotenv/config";import{createHash as jt,createHmac as zt,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 xn,resolve as bn,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:()=>On,streamTimeout:()=>Un}),Un=5e3;function On(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(b(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 jn=({...e})=>{const{theme:t="system"}=M();return b(O,{theme:t,className:"toaster group",icons:{success:b(ee,{className:"size-4"}),info:b(Ne,{className:"size-4"}),warning:b(nt,{className:"size-4"}),error:b($e,{className:"size-4"}),loading:b(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 zn(...e){return lt(ct(e))}function Fn({delay:e=0,...t}){return b(dt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function Bn({...e}){return b(dt.Root,{"data-slot":"tooltip",...e})}function Gn({...e}){return b(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 b(dt.Portal,{children:b(dt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(dt.Popup,{"data-slot":"tooltip-content",className:zn("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,b(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(xa,ba,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 b(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 xa(){return()=>{}}function ba(){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:[b("meta",{charSet:"utf-8"}),b("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),b(a,{}),b(n,{})]}),y("body",{children:[e,b(o,{}),b(s,{})]})]})}var Ca=c(function(){const[e]=_(()=>new N({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return b(T,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:b(I,{client:e,children:y(Fn,{children:[b(va,{children:b(i,{})}),b(jn,{richColors:!0})]})})})}),Ea=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return b("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:[b("h1",{className:"text-lg font-semibold",children:"xedoc"}),b("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 b(ut,{"data-slot":"button",className:zn(Ta({variant:t,size:n,className:e})),...a})}function Sa({className:e,type:t,...n}){return b(ht,{type:t,"data-slot":"input",className:zn("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 b("label",{"data-slot":"label",className:zn("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 b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return b(r,{replace:!0,to:"/"});if(null===i)return b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(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 b("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:[b("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:b(g?Ie:je,{className:"size-5"})}),y("div",{children:[b("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),b("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:[b(Pa,{htmlFor:"server-password",children:"Server password"}),b(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:[b(Pa,{htmlFor:"server-password-confirm",children:"Confirm password"}),b(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?b("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?b(Ce,{className:"animate-spin"}):b(g?Ie:je,{}),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 b(Da,{})}),qa=qn({loader:()=>_a});function _a(){return m("/favicon.svg",301)}function Ua({...e}){return b(ft.Root,{"data-slot":"alert-dialog",...e})}function Oa({...e}){return b(ft.Portal,{"data-slot":"alert-dialog-portal",...e})}function ja({className:e,...t}){return b(ft.Backdrop,{"data-slot":"alert-dialog-overlay",className:zn("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 za({className:e,size:t="default",...n}){return y(Oa,{children:[b(ja,{}),b(ft.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:zn("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 b("div",{"data-slot":"alert-dialog-header",className:zn("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 b("div",{"data-slot":"alert-dialog-footer",className:zn("-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 b(ft.Title,{"data-slot":"alert-dialog-title",className:zn("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 b(ft.Description,{"data-slot":"alert-dialog-description",className:zn("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 b(Ma,{"data-slot":"alert-dialog-action",className:zn(e),...t})}function Wa({className:e,variant:t="outline",size:n="default",...a}){return b(ft.Close,{"data-slot":"alert-dialog-cancel",className:zn(e),render:b(Ma,{variant:t,size:n}),...a})}function Qa({...e}){return b(pt.Root,{"data-slot":"dialog",...e})}function Va({...e}){return b(pt.Trigger,{"data-slot":"dialog-trigger",...e})}function Ja({...e}){return b(pt.Portal,{"data-slot":"dialog-portal",...e})}function Xa({className:e,...t}){return b(pt.Backdrop,{"data-slot":"dialog-overlay",className:zn("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:[b(Xa,{}),y(pt.Popup,{"data-slot":"dialog-content",className:zn("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:b(Ma,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[b(st,{}),b("span",{className:"sr-only",children:"Close"})]})]})]})}function Za({className:e,...t}){return b("div",{"data-slot":"dialog-header",className:zn("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:zn("-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&&b(pt.Close,{render:b(Ma,{variant:"outline"}),children:"Close"})]})}function tr({className:e,...t}){return b(pt.Title,{"data-slot":"dialog-title",className:zn("font-heading text-base leading-none font-medium",e),...t})}function nr({className:e,...t}){return b(pt.Description,{"data-slot":"dialog-description",className:zn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function ar({...e}){return b(gt.Root,{"data-slot":"dropdown-menu",...e})}function rr({...e}){return b(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 b(gt.Portal,{children:b(gt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:b(gt.Popup,{"data-slot":"dropdown-menu-content",className:zn("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 b(gt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:zn("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 b(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:zn("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,b(Y,{className:"ml-auto"})]})}function cr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return b(ir,{"data-slot":"dropdown-menu-sub-content",className:zn("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 b(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:zn("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:[b("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:b(gt.RadioItemIndicator,{children:b(V,{})})}),t]})}function mr({className:e,...t}){return b(gt.Separator,{"data-slot":"dropdown-menu-separator",className:zn("-mx-1 my-1 h-px bg-border",e),...t})}function hr({className:e,...t}){return b("textarea",{"data-slot":"textarea",className:zn("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:zn(fr({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function gr({className:e,status:t}){return b(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 b(Qa,{open:!!a,onOpenChange:e=>{e||s()},children:y(Ya,{className:"max-w-2xl",children:[y(Za,{children:[b(tr,{children:l?"Device authentication":"Normal authentication"}),b(nr,{children:a?.accountName??"Codex account"})]}),y("div",{className:"grid gap-4",children:[b("div",{className:zn("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:[b(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:[b(Sa,{className:"font-mono text-xs",id:"account-auth-url",readOnly:!0,value:a.authUrl}),y(Ma,{variant:"outline",onClick:c,children:[b(se,{}),"Reopen"]})]})]}):null,l&&a?.userCode?y("div",{className:"grid gap-2",children:[b(Pa,{htmlFor:"account-device-code",children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[b(Sa,{className:"font-mono text-sm tracking-wider",id:"account-device-code",readOnly:!0,value:a.userCode}),y(Ma,{variant:"outline",onClick:d,children:[b(ae,{}),"Copy"]})]})]}):null,y("div",{className:"grid gap-2",children:[b(Pa,{htmlFor:"account-callback-url",children:"Response URL"}),b(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)}),b("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?b("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:[b(it,{}),"Close"]}),"AUTHENTICATING"===a?.status?y(Ma,{disabled:!a.accountId||t,variant:"destructive",onClick:i,children:[t?b(Ce,{className:"animate-spin"}):b(it,{}),"Cancel Auth"]}):null,y(Ma,{disabled:!a?.authUrl,variant:"secondary",onClick:c,children:[b(se,{}),"Reopen Link"]}),y(Ma,{disabled:!a?.accountId||!e.trim()||n,onClick:o,children:[n?b(Ce,{className:"animate-spin"}):b(Q,{}),"Submit Response URL"]})]})]})})}function xr(e){return"browser"===e||"device"===e?e:null}function br(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=xr(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",x="CONNECTED"===e.status&&!e.isLocalCodexActive,N="device"===f?"Device login pending":"Browser login pending";return b("div",{className:zn("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:[b("div",{className:"min-w-0 max-w-full truncate font-medium",children:e.displayName}),b($r,{planType:o?.planType}),e.isLocalCodexActive?b(qr,{}):null]}),b("div",{className:"truncate text-xs text-muted-foreground",children:Or(e)})]}),y("div",{className:"flex shrink-0 items-center gap-2",children:[b(_r,{account:e}),y(ar,{children:[y(rr,{render:b(Ma,{size:"icon-sm",variant:"ghost"}),children:[t||a||r?b(Ce,{className:"animate-spin"}):b(Re,{}),b("span",{className:"sr-only",children:"Account actions"})]}),y(ir,{align:"end",className:"w-48",children:[y(sr,{disabled:t,onClick:()=>d(v),children:[p?b(Ce,{className:"animate-spin"}):"AUTHENTICATING"===e.status?b(He,{}):b(se,{}),"AUTHENTICATING"===e.status?w:"Normal Auth"]}),y(sr,{disabled:t,onClick:()=>d("device"),children:[g?b(Ce,{className:"animate-spin"}):b(Ie,{}),"Device Auth"]}),y(sr,{disabled:!x||r,onClick:m,children:[r?b(Ce,{className:"animate-spin"}):b(ke,{}),e.isLocalCodexActive?"Local Active":"Make Local Active"]}),"AUTHENTICATING"===e.status?y(sr,{disabled:a,variant:"destructive",onClick:c,children:[a?b(Ce,{className:"animate-spin"}):b(it,{}),"Cancel Auth"]}):null,"AUTHENTICATING"===e.status||e.lastAuthUrl?y(sr,{onClick:h,children:[b(se,{}),"Authentication Details"]}):null,b(mr,{}),y(sr,{onClick:u,children:[b(Ue,{}),"Edit"]}),y(sr,{variant:"destructive",onClick:l,children:[b(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:[b(Ur,{accountStatus:e.status,label:i,pending:s,snapshot:o}),"AUTHENTICATING"===e.status?b("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?b(Ce,{className:"animate-spin"}):b(it,{}),"Cancel"]}):null]})]})})}function $r({planType:e}){return e?b(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:[b(ke,{}),"local active"]})}function _r({account:e}){const t=e.lastError?.trim();return t?y(Bn,{children:[b(Gn,{render:b("span",{className:"inline-flex cursor-help"}),children:b(gr,{status:e.status})}),b(Hn,{align:"start",className:"max-w-96 whitespace-pre-wrap break-words text-left leading-relaxed",side:"right",children:t})]}):b(gr,{status:e.status})}function Ur({accountStatus:e,label:t,pending:n,snapshot:a}){if("CONNECTED"!==e)return b("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 b("div",{className:"grid gap-1.5",children:y("div",{className:zn("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?b(Ce,{className:"size-3 animate-spin"}):null,b("span",{children:r})]})})}function Or(e){return[e.command,...e.args??[]].filter(Boolean).join(" ")}var jr={args:"",command:"",displayName:"",environment:""};function zr({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]=_(jr),[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=xr(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(""),j.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"!==xr(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),j.error(Wr(e))},onSuccess:({account:e,auth:t,popup:n})=>{P(),ee(t,n,e)}}),O=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=>j.error(Wr(e)),onSuccess:()=>{p(null),v(jr),j.success("Account updated."),P()}}),z=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),j.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=>j.error(Wr(e)),onSuccess:e=>{te(),c(null),u(""),j.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),j.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=>j.error(Wr(e)),onSuccess:()=>{N(null),j.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=>j.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),j.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=>j.error(Wr(e)),onSuccess:e=>{T.setQueryData(M,e),e.inUse?j.warning(`${e.host}:${e.port} is still in use. The process may need more time to exit.`):j.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(),j.error(Wr(e))},onSuccess:(e,t)=>{j.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&&j.info(`${a} more ${Kr(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&j.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=>j.error(Wr(e)),onSuccess:e=>{j.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=>j.error(Wr(e)),onSuccess:e=>{j.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||(j.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??xr(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 j.info("device"===e.authMode?"Device login page opened.":"Authentication page opened. xedoc is listening for the Codex callback.");te(t),"AUTHENTICATING"!==e.status?j.success(e.message??"Account is connected."):j.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(x,{children:[b("div",{className:"grid gap-5",children:y("section",{className:"grid gap-4",children:[b("div",{className:"flex flex-wrap items-start justify-between gap-3",children:y("div",{children:[b("h3",{className:"text-sm font-semibold",children:"Accounts"}),b("p",{className:"text-sm text-muted-foreground",children:"Search, authenticate, and inspect current Codex quota."})]})}),b(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:[b(We,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),b(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:[b("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(),j.error(Wr(a))}}}),y(Ma,{className:"w-full sm:w-auto",disabled:W.isPending,variant:"outline",onClick:()=>A.current?.click(),children:[W.isPending?b(Ce,{className:"animate-spin"}):b(at,{}),"Import"]}),y(Ma,{className:"w-full sm:w-auto",disabled:H.isPending,variant:"outline",onClick:()=>H.mutate(),children:[H.isPending?b(Ce,{className:"animate-spin"}):b(ie,{}),"Export"]}),y(ar,{open:s,onOpenChange:o,children:[y(rr,{render:b(Ma,{className:"w-full sm:w-auto"}),children:[U.isPending||V.isPending?b(Ce,{className:"animate-spin"}):b(ze,{}),"Add",b(J,{"data-icon":"inline-end"})]}),y(ir,{align:"end",className:"w-56",children:[y(sr,{disabled:U.isPending,onClick:()=>Z("browser"),children:[b(se,{}),"Normal Auth"]}),y(sr,{disabled:U.isPending,onClick:()=>Z("device"),children:[b(Ie,{}),"Device Auth"]}),b(mr,{}),y(sr,{disabled:V.isPending,onClick:()=>{o(!1),V.mutate()},children:[V.isPending?b(Ce,{className:"animate-spin"}):b(be,{}),"Import Local"]})]})]})]})]}),b("div",{className:"grid gap-2",children:D.length?D.map(r=>b(Rr,{account:r,authPending:z.isPending&&z.variables?.accountId===r.id,authPendingMode:z.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(br(a,n)),z.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(br(e,xr(e.lastAuthMode)??"browser"))}(r)},r.id)):b("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."})})]})}),b(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),j.success("Device code copied.")}catch{j.error("Could not copy device code.")}}(d?.userCode??"")},onReopen:()=>Vr(d?.authUrl)}),b(Qa,{open:!!f,onOpenChange:e=>{e||O.isPending||(p(null),v(jr))},children:y(Ya,{className:"max-w-2xl",children:[y(Za,{children:[y(tr,{children:["Edit ",f?.displayName??"account"]}),b(nr,{children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),b(Fr,{form:g,onChange:v,prefix:`edit-account-${f?.id??"selected"}`}),y(er,{children:[y(Ma,{variant:"outline",onClick:()=>{p(null),v(jr)},children:[b(it,{}),"Cancel"]}),y(Ma,{disabled:!g.displayName.trim()||O.isPending,onClick:()=>O.mutate(),children:[O.isPending?b(Ce,{className:"animate-spin"}):b(Q,{}),"Save account"]})]})]})}),b(Ua,{open:!!w,onOpenChange:e=>{e||N(null)},children:y(za,{children:[y(Fa,{children:[b(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:[b(Wa,{children:"Cancel"}),y(Ka,{disabled:G.isPending,variant:"destructive",onClick:()=>{w&&G.mutate(w.id)},children:[G.isPending?b(Ce,{className:"animate-spin"}):b(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:[b(Pa,{htmlFor:`${n}-name`,children:"Display name"}),b(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:[b(Pa,{htmlFor:`${n}-command`,children:"Command"}),b(Sa,{id:`${n}-command`,placeholder:"codex",value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),y("div",{className:"grid gap-2",children:[b(Pa,{htmlFor:`${n}-args`,children:"Arguments"}),b(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:[b(Pa,{htmlFor:`${n}-environment`,children:"Environment JSON"}),b(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:[b(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:[b("div",{className:"text-sm font-medium",children:"Login callback port is busy"}),b("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.`}),b("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?b(Ce,{className:"animate-spin"}):b(He,{}),"Refresh"]}),y(Ma,{disabled:!a.killable||n,size:"sm",variant:"destructive",onClick:r,children:[n?b(Ce,{className:"animate-spin"}):b(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(xt.Root,{"data-slot":"scroll-area",className:zn("relative",e),...r,children:[b(xt.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:zn("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}),b(Xr,{}),b(xt.Corner,{})]})}function Xr({className:e,orientation:t="vertical",...n}){return b(xt.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:zn("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:b(xt.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function Yr({className:e,orientation:t="horizontal",...n}){return b(bt,{"data-slot":"separator",orientation:t,className:zn("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 b(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:[b(tr,{children:"Settings"}),b(nr,{children:"Manage accounts, personalization, and project details."})]}),b(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:[b(ei,{active:"accounts"===r,icon:b(rt,{}),label:"Accounts",onClick:()=>o("accounts")}),b(ei,{active:"personalization"===r,icon:b(K,{}),label:"Personalization",onClick:()=>o("personalization")}),b(ei,{active:"info"===r,icon:b(ye,{}),label:"Info",onClick:()=>o("info")})]}),b(Jr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["personalization"===r?b(ti,{session:c}):null,"accounts"===r?b(zr,{accounts:e,accountRateLimitFetching:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,createFocusKey:i,session:c}):null,"info"===r?b(ni,{}):null]})})]})]})})}function ei({active:e,icon:t,label:n,onClick:a}){return y(Ma,{"aria-pressed":e,className:zn("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=>j.error(ai(e)),onSuccess:e=>{a.setQueryData(["account-personalization"],e),a.invalidateQueries({queryKey:["account-personalization"]}),j.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:[b("h3",{className:"flex items-center text-sm font-semibold",children:"Custom instructions"}),b("p",{className:"mt-1 text-sm text-muted-foreground",children:"Saved to the shared Codex personalization file."})]}),y("div",{className:zn("text-xs text-muted-foreground",c&&"text-destructive"),children:[s.toLocaleString()," / ",o.toLocaleString()," bytes"]})]}),y("div",{className:"grid gap-2",children:[b(Pa,{htmlFor:"personalization-instructions",children:"AGENTS.md"}),b(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?b("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:[b("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?b(Ce,{className:"animate-spin"}):b(Be,{}),"Reload"]}),y(Ma,{disabled:!d||i.isPending,variant:"secondary",onClick:()=>n(r.data?.instructions??""),children:[b(Be,{}),"Reset"]}),y(Ma,{disabled:!d||c||r.isLoading||i.isPending,onClick:()=>i.mutate(),children:[i.isPending?b(Ce,{className:"animate-spin"}):b(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:[b(ye,{}),"Project"]}),b("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:[b("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:[b(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:[b(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:b(Ma,{size:"icon",variant:"ghost"}),children:[b(Ze,{className:"size-4 dark:hidden"}),b(De,{className:"hidden size-4 dark:block"}),b("span",{className:"sr-only",children:"Theme"})]}),y(ir,{align:"end",className:"w-40",children:[y(sr,{onClick:()=>e("light"),children:[b(Ze,{}),"Light","light"===n?b(W,{className:"ml-auto"}):null]}),y(sr,{onClick:()=>e("dark"),children:[b(De,{}),"Dark","dark"===n?b(W,{className:"ml-auto"}):null]}),y(sr,{onClick:()=>e("system"),children:[b(ke,{}),"System","system"===n?b(W,{className:"ml-auto"}):null]})]})]})}function ii({...e}){return b(pt.Root,{"data-slot":"sheet",...e})}function si({...e}){return b(pt.Portal,{"data-slot":"sheet-portal",...e})}function oi({className:e,...t}){return b(pt.Backdrop,{"data-slot":"sheet-overlay",className:zn("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:[b(oi,{}),y(pt.Popup,{"data-slot":"sheet-content","data-side":n,className:zn("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:b(Ma,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[b(st,{}),b("span",{className:"sr-only",children:"Close"})]})]})]})}function ci({className:e,...t}){return b("div",{"data-slot":"sheet-header",className:zn("flex flex-col gap-0.5 p-4",e),...t})}function li({className:e,...t}){return b(pt.Title,{"data-slot":"sheet-title",className:zn("font-heading text-base font-medium text-foreground",e),...t})}function ui({className:e,...t}){return b(pt.Description,{"data-slot":"sheet-description",className:zn("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 b(mi.Provider,{value:g,children:b("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:zn("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?b("div",{"data-slot":"sidebar",className:zn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?b(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:[b(li,{children:"Sidebar"}),b(ui,{children:"Displays the mobile sidebar."})]}),b("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:[b("div",{"data-slot":"sidebar-gap",className:zn("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)")}),b("div",{"data-slot":"sidebar-container","data-side":e,className:zn("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:b("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:zn(e),onClick:e=>{t?.(e),a()},...n,children:[b(qe,{}),b("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function vi({className:e,...t}){return b("main",{"data-slot":"sidebar-inset",className:zn("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 b("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:zn("flex flex-col gap-2 p-2",e),...t})}function xi({className:e,...t}){return b("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:zn("flex flex-col gap-2 p-2",e),...t})}function bi({className:e,...t}){return b("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:zn("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 b("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:zn("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:zn("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 b("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:zn("w-full text-sm",e),...t})}function ki({className:e,...t}){return b("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:zn("flex w-full min-w-0 flex-col gap-0",e),...t})}function Ai({className:e,...t}){return b("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:zn("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:zn(Ci({variant:n,size:a}),i)},s),render:r?b(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,b(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),[x,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=>j.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),A(""),M(""),j.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 O(){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]),b(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:[b(tr,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),b(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:[b(Ri,{label:"Home",onClick:function(){P?.path&&U(P.path)},children:b(we,{})}),b(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:b(fe,{})}),b(Ri,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:b(Be,{className:zn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[b(Li,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative hidden min-w-0 sm:block",children:[b(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),b(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:[b(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&&O()}}),b(Ri,{label:"Open path",onClick:O,children:b(X,{})})]}):null,y("div",{className:"flex min-w-0 items-center gap-2 sm:hidden",children:[b(Li,{showPath:v,onClick:()=>w(e=>!e)}),y("div",{className:"relative min-w-0 flex-1",children:[b(We,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),b(Sa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]})]}),b("div",{className:"min-h-0 bg-background",children:S.error?b("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."}):b(Jr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?b("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?b(Mi,{directory:P,entry:{name:(z=P.path,z.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||z),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:T,createFolderParentPath:I,createFolderPending:$.isPending,selectedPath:L,selectedType:u,session:i,showCreateFolder:x,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:[b("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),b("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:[b(W,{}),"file"===t?"Attach":"OK"]}),b(Ma,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var z}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),x=Oi(f)===Oi(r.path),N=v&&Oi(t)===Oi(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:[b(Pi,{entry:r,expanded:w,level:o,loading:I.isFetching,selected:x,onOpen:u,onSelect:m,onToggle:h}),w?y("div",{className:"min-w-0",children:[I.error?b("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?b("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?b(Si,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>b(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=>b(Di,{entry:e,level:o+1,selected:"file"===p&&Oi(f)===Oi(e.path),onSelect:m},e.path)),!k||A.length||N?null:b("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:[b("span",{}),b(fe,{className:"size-4 shrink-0 text-muted-foreground"}),b(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)}),b(Ri,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:b(W,{})}),b(Ri,{disabled:i,label:"Cancel new folder",onClick:n,children:b(it,{})})]})}function Pi({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:zn("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:[b("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:b(X,{className:zn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),b(t?he:me,{className:"size-4 shrink-0 text-muted-foreground"}),b("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:zn("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:[b("span",{}),b(ce,{className:"size-4 shrink-0"}),b("span",{className:"min-w-0 truncate",children:e.name})]})}function Li({onClick:e,showPath:t}){return b(Ri,{label:t?"Hide path":"Show path",pressed:t,onClick:e,children:b(t?oe:de,{})})}function Ri({children:e,disabled:t,label:n,onClick:a,pressed:r}){return y(Ma,{"aria-pressed":r,className:zn("size-7 p-0",r&&"bg-muted text-foreground"),disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,b("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 Oi(e){return Ui(e).toLocaleLowerCase()}function ji(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 zi(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=>j.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=>j.error(ds(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(x,{children:[b(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:[b(me,{className:"size-3.5 shrink-0 text-cyan-500"}),b("span",{className:"min-w-0 flex-1 truncate",children:e.name}),b("span",{className:"shrink-0 text-[0.68rem] font-normal text-muted-foreground",children:e.items.length}),b(J,{className:zn("size-3 shrink-0 text-muted-foreground transition-transform",t&&"-rotate-90")})]}),c?b(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:b(ze,{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:[b(Pe,{className:"size-3.5 text-muted-foreground"}),b("span",{className:"min-w-0 flex-1 truncate",children:e.title})]}),y(ar,{children:[y(rr,{render:b(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:[b(Le,{className:"size-4"}),b("span",{className:"sr-only",children:"Chat actions"})]}),y(ir,{align:"end",className:"w-40",children:[y(sr,{onClick:()=>{s(e),d(e.title)},children:[b(Ue,{}),"Rename"]}),y(sr,{onClick:()=>l(e),children:[b(F,{}),"Archive"]})]})]})]},e.id)),o>0?b("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:[b(J,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:["Show ",o," more"]})]})}):r&&e.items.length>4?b("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:[b(J,{className:"size-3.5 shrink-0 rotate-180"}),b("span",{className:"min-w-0 truncate",children:"Show less"})]})}):null]})]},e.key)}):b("div",{className:"px-2 py-3 text-sm text-muted-foreground",children:"No chats yet."})}),b(Qa,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ya,{children:[y(Za,{children:[b(tr,{children:"Rename chat"}),b(nr,{children:"Choose a short title for the sidebar."})]}),b(Sa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N.mutate()}}),b(er,{children:b(Ma,{disabled:N.isPending,onClick:()=>N.mutate(),children:"Save"})})]})}),b(Qa,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ya,{children:[y(Za,{children:[b(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:[b(Ma,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(Ma,{disabled:I.isPending||!c,variant:"destructive",onClick:()=>{c&&I.mutate(c)},children:[b(F,{}),"Archive"]})]})]})})]})}function ls({...e}){return b(Nt.Root,{"data-slot":"popover",...e})}function us({...e}){return b(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 b(Nt.Portal,{children:b(Nt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:b(Nt.Popup,{"data-slot":"popover-content",className:zn("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 b("div",{"data-slot":"popover-header",className:zn("flex flex-col gap-0.5 text-sm",e),...t})}function fs({className:e,...t}){return b(Nt.Title,{"data-slot":"popover-title",className:zn("font-medium",e),...t})}function ps({className:e,...t}){return b(Nt.Description,{"data-slot":"popover-description",className:zn("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(xs).filter(e=>!!e):[]}(e),[e]);return t?b("div",{className:"p-3 font-mono text-xs text-destructive",children:ds(t)}):a?b("div",{className:"p-3 font-mono text-xs text-muted-foreground",children:"Loading diff..."}):r.length?b("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:[b(ce,{className:"size-4 shrink-0 text-muted-foreground"}),b("span",{className:"truncate font-mono text-xs font-medium",children:e.path})]}),e.meta.length?b("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=>b("span",{className:"truncate",children:e},e))}):null]}),b("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:[b("div",{className:"border-r px-2 py-1 text-right",children:"line"}),b("div",{}),b("div",{className:"whitespace-pre px-2 py-1",children:t.header})]}),t.lines.map((t,a)=>b(ws,{fileLanguage:e.language,line:t},`${e.path}:${n}:${a}`))]},`${e.path}:${n}`))})]},e.path))}):b("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:zn("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:[b("div",{className:"select-none border-r px-2 text-right text-[0.68rem] text-muted-foreground",children:a??""}),b("div",{className:"select-none px-2 text-center text-muted-foreground",children:n}),b("div",{className:"whitespace-pre px-2",dangerouslySetInnerHTML:{__html:r}})]})}function xs(e){const t=function(e){for(const n of["+++ ","--- "])for(const t of e){if(!t.startsWith(n))continue;const e=bs(t.slice(n.length));if(e&&"/dev/null"!==e)return e}const t=e.find(e=>e.startsWith("diff --git "))?.split(/\s+/)??[];return bs(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 bs(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?b("div",{className:"p-3 text-xs text-destructive",children:ds(t)}):n&&!e.length?b("div",{className:"p-3 text-xs text-muted-foreground",children:"Loading history..."}):e.length?b(Jr,{className:"min-h-0",children:b("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:zn("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:[b("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.subject}),b("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:[b("span",{className:"min-w-0 truncate",children:e.authorName||"Unknown author"}),b("span",{"aria-hidden":"true",children:"·"}),b("span",{className:"shrink-0",children:ks(e.authoredAt)})]}),e.refs.length?b("div",{className:"flex min-w-0 flex-wrap gap-1",children:e.refs.slice(0,3).map(e=>b("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))})}):b("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:zn(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:[b(ge,{className:"size-3.5"}),n&&c?b("span",{className:zn("absolute -right-0.5 -top-0.5 size-2 rounded-full ring-2 ring-background",u?"bg-amber-500":"bg-emerald-500")}):y(x,{children:[b("span",{className:"min-w-0 truncate",children:l}),m?b("span",{className:"shrink-0 text-muted-foreground",children:m}):null,b("span",{className:zn("ml-0.5 size-1.5 shrink-0 rounded-full",u?"bg-amber-500":"bg-emerald-500")})]})]}),i?b(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=>j.error(ds(e)),onSuccess:t=>{j.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]})}}),x=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:[b(ve,{className:"size-4 shrink-0 text-muted-foreground"}),b("span",{children:"Git"})]}),b(Es,{branches:x,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}),b("span",{className:zn("size-2 shrink-0 rounded-full",N?N.clean?"bg-emerald-500":"bg-amber-500":"bg-muted-foreground/40")}),b("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:[b(ie,{}),"Pull"]}),y(Ma,{disabled:T,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&w.mutate({action:"push"})},children:[b(at,{}),"Push"]}),b(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:b(Be,{className:zn((w.isPending||g.isFetching||v.isFetching)&&"animate-spin")})})]})]}),b(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:[b(Ae,{className:"size-4 text-muted-foreground"}),b("div",{className:"truncate text-sm font-medium",children:"Local Changes"})]}),b("span",{className:"text-xs text-muted-foreground",children:I.length})]}),b(Jr,{className:"min-h-0",children:b(Ts,{files:I,loading:!N,selectedPath:h,onSelect:f})}),y("div",{className:"grid gap-2 border-t p-3",children:[b(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:[b(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:[b(ue,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0 flex-1",children:[b("div",{className:"truncate text-sm font-medium",children:"Diff Preview"}),b("div",{className:"truncate font-mono text-xs text-muted-foreground",children:S})]}),h?b(Ma,{size:"xs",type:"button",variant:"ghost",onClick:()=>f(null),children:"All"}):null]}),b("div",{className:"min-h-0 min-w-0 overflow-auto bg-muted/20",children:b(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:[b(te,{className:"size-4 text-muted-foreground"}),b("div",{className:"truncate text-sm font-medium",children:"History"})]}),b("span",{className:"text-xs text-muted-foreground",children:A.length})]}),b(Is,{commits:A,error:v.error,fetching:v.isFetching,selectedHash:u,onSelect:m}),b("div",{className:"min-h-20 border-t p-3 text-xs",children:E?y("div",{className:"grid gap-1",children:[b("div",{className:"line-clamp-2 font-medium",children:E.subject}),b("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)]})]}):b("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:b(Ma,{className:"max-w-64 justify-start",size:"sm",type:"button",variant:"outline"}),children:[b(ge,{}),b("span",{className:"min-w-0 truncate",children:n??"No branch"}),b(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:[b(fs,{children:"Branches"}),y(ps,{children:["Current branch: ",n??"detached"]})]}),b("div",{className:"grid gap-2 p-3",children:b(Sa,{className:"h-8",placeholder:"Find branch",value:t,onChange:e=>s(e.target.value)})}),b(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?b(W,{}):b(ge,{}),b("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),e.length?null:b("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:[b(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:[b(ze,{}),"Create branch"]})]})]})]})}function Ts({files:e,loading:t,selectedPath:n,onSelect:a}){return t?b("div",{className:"m-3 rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Loading status..."}):e.length?b("div",{className:"grid gap-1 p-2",children:e.map(e=>y("button",{className:zn("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:[b("span",{className:zn("rounded-sm px-1 py-0.5 text-center font-mono text-[0.68rem]",Ms(e.status)),children:e.status.trim()}),b("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):b("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:zn(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:[b(et,{className:"size-3.5"}),b("span",{className:n?"sr-only":"min-w-0 truncate",children:"Terminal"}),s>0?b("span",{className:zn("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:b(Ma,{size:"icon",variant:"ghost"}),children:[b(ze,{className:"size-4"}),b("span",{className:"sr-only",children:"Create"})]}),y(ir,{align:"end",className:"w-44",children:[y(sr,{onClick:t,children:[b(Ye,{}),"New chat"]}),y(sr,{onClick:e,children:[b(rt,{}),"Add account"]})]})]})}function Rs(){const{loading:e,session:t}=wa(),{chatId:n}=g(),a=zi(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),refetchInterval:5e3}),O=$(()=>q.data??[],[q.data]),j=$(()=>U.data??[],[U.data]),z=$(()=>n?j.find(e=>e.id===n)??null:null,[n,j]),F=z?.title??null;R(()=>{n&&c(n)},[n]);const B=$(()=>{if(n){const e=j.find(e=>e.id===n);if(e)return e}if(d){const e=j.find(e=>e.id===d);if(e)return e}return j[0]??null},[n,j,d]),G=$(()=>O.filter(e=>"CONNECTED"===e.status),[O]);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 b($s,{});if(!t)return b(r,{replace:!0,to:"/connect"});const J={accounts:O,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeProjectPath:s,chats:j,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(x,{children:[y(fi,{className:"h-svh min-h-0 overflow-hidden",children:[y(pi,{collapsible:"offcanvas",variant:"inset",children:[b(wi,{children:y(Ma,{className:"w-full justify-start",variant:"ghost",onClick:()=>T("/"),children:[b(Ye,{}),b("span",{children:"New chat"})]})}),b(bi,{children:y(yi,{className:"p-0",children:[b(Ni,{children:"Chats"}),b(Ii,{children:b(cs,{chats:j,session:t})})]})}),b(xi,{children:y(Ma,{className:"justify-start",variant:"ghost",onClick:()=>L(),children:[b(Qe,{}),b("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:[b(gi,{variant:"ghost",children:b(Se,{})}),b("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:[z?y(x,{children:[b(Ds,{active:w,className:zn("md:hidden",w&&"text-foreground"),compact:!0,count:a.count,disabled:!s.trim(),onToggle:()=>N(!w)}),b(As,{chatId:z.id,className:"md:hidden",compact:!0,disabled:"RUNNING"===z.status,session:t})]}):null,b(Ls,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),b(ri,{})]})]}),q.error||U.error?b("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,b("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:b(i,{context:J})})]})]}),b(Zr,{accounts:O,accountRateLimitFetching:Q,accountRateLimitSnapshots:K,accountUsageSummaries:W,activeTab:p,createFocusKey:l,open:m,session:t,onTabChange:P,onOpenChange:h}),I?b(Ti,{initialPath:I.initialPath,mode:I.mode,open:!!I,session:t,onOpenChange:e=>{e||k(null)},onSelect:I.onSelect}):null]})}function $s(){return b("div",{className:"flex min-h-svh items-center justify-center bg-background",children:b(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 b(Rs,{})}),Us="xedoc.web.terminal-height",Os=null;function js({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}(),x=D((e,t)=>ji(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 x("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),N(e.terminals),s(e.terminal.id)},[N,n,x,h]);R(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),x("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 x("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&&ji(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[N,n,x,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 x("terminal:close",{terminalId:e})).terminals)}catch(t){j.error(Ks(t))}},[N,x]),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:zn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[b("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:b("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:[b("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:zn("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:[b(et,{className:"size-3.5 shrink-0"}),b("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),b("span",{className:zn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),b("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:b(it,{className:"size-3"})})]},e.id))}),b(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=>j.error(Ks(e)))},children:u?b(Ce,{className:"animate-spin"}):b(ze,{})}),t?b(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:b(it,{})}):null]}),b("div",{className:"relative min-h-0 bg-zinc-950",children:o?b("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):p.length?p.map(e=>b(zs,{active:e.id===i,compactLayout:w,resizeSignal:c,socket:a,terminal:e,onTerminalUpdated:A},e.id)):b("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function zs({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 Os??=import("ghostty-web").then(async e=>(await e.init(),e)),Os}().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 ji(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||j.error(Ks(e))}),()=>{l=!0,null!==d.current&&(window.cancelAnimationFrame(d.current),d.current=null),r.off("terminal:output",g),ji(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:zn("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?b("div",{className:"absolute inset-0 grid place-items-center bg-zinc-950 text-xs text-zinc-500",children:"Loading terminal..."}):null,b("div",{className:zn("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 b(_t.Root,{"data-slot":"switch","data-size":t,className:zn("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:b(_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:b(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?b(Ce,{className:"animate-spin"}):b(t?Be:rt,{}),b("span",{className:"truncate max-sm:sr-only",children:u})]}),y(ir,{align:"start",className:"w-64",children:[i?y(x,{children:[y(sr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[b(Be,{}),b("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),b(Qs,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),b(mr,{})]}):null,a.map(e=>{const t=e.id===d;return y(sr,{disabled:o||c,onClick:()=>{t||s(e.id)},children:[b("span",{className:"truncate",children:e.displayName}),l[e.id]?b("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:l[e.id]}):b("span",{className:"ml-auto"}),t?b(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(x,{children:[b("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?b("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?b("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):b(ce,{className:"size-3.5 shrink-0 text-muted-foreground"}),b("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),b(Ma,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:b(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:[b(us,{render:b(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:b("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:b("span",{className:"size-2 rounded-full bg-background"})})}),y(ms,{align:"end",className:"w-72",side:"top",children:[y(hs,{children:[b(fs,{children:"Context window"}),b(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"]})]}),b("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:b("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:b(Ma,{className:zn("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?b(Ce,{className:"size-3 animate-spin"}):b(ot,{className:"size-3"}),b("span",{className:"truncate max-sm:sr-only",children:n})]}),y(ms,{align:"start",className:"w-80",side:"top",children:[y(hs,{children:[b(fs,{children:"Usage capacity"}),b(ps,{children:"Current Codex account limits refresh automatically."})]}),b(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:[b(Ae,{}),b("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:[b(rr,{render:b(Ma,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:d?"secondary":"ghost"}),children:o?b(Ce,{className:"animate-spin"}):b(ze,{})}),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:[b(Ae,{}),b("span",{className:"grid min-w-0 flex-1 gap-0.5",children:b("span",{children:"Plan mode"})}),b(Qs,{checked:d,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(sr,{className:"gap-3 py-2",disabled:c||!i,onClick:i,children:[b(xe,{}),b("span",{children:"Attach image"})]}),y(sr,{className:"gap-3 py-2",disabled:c||!r,onClick:r,children:[b(_e,{}),b("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:b(Ma,{"aria-label":ns(t),className:zn("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?b(Ce,{className:"animate-spin"}):b(r?Je:Ve,{}),b("span",{className:"truncate max-sm:sr-only",children:ns(t)})]}),b(ir,{align:"start",className:"w-48",children:y(lr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[b(ur,{value:"default",children:y("span",{className:"grid min-w-0 gap-0.5",children:[b("span",{children:"Default"}),b("span",{className:"text-xs text-muted-foreground",children:"Codex asks as needed."})]})}),b(ur,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[b("span",{children:"Full access"}),b("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?b(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?b(Ce,{className:"animate-spin"}):b(Xe,{})}):i&&e?y("div",{className:"group relative flex shrink-0",children:[b("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:[b(H,{className:"size-4 shrink-0"}),b("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:[b(te,{className:"size-4 shrink-0"}),b("span",{className:"min-w-0",children:"Queue after current task"})]})]})}),b(Ma,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:s||t,size:"icon",title:"Queue message",type:"button",onClick:n,children:t?b(Ce,{className:"animate-spin"}):b(H,{})})]}):b(Ma,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:s||t,size:"icon",type:"button",onClick:n,children:t?b(Ce,{className:"animate-spin"}):b(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:b(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?b(Ce,{className:"animate-spin"}):b(re,{}),b("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:[b(K,{}),b("span",{children:"Intelligence"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:es(e)})]}),b(cr,{className:"w-52",children:y(lr,{value:c,onValueChange:i,children:[b(ur,{value:"",children:"Model default"}),d.map(e=>b(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:[b(re,{}),b("span",{children:"Model"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),b(cr,{className:"w-64",children:y(lr,{value:a,onValueChange:r,children:[b(ur,{value:"",children:"Default model"}),n.map(e=>b(ur,{value:e.model,children:b("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:[b(pe,{}),b("span",{children:"Speed"}),b("span",{className:"truncate text-right text-xs text-muted-foreground",children:ts(m)})]}),b(cr,{className:"w-52",children:y(lr,{value:m,onValueChange:s,children:[b(ur,{value:"",children:"Default speed"}),u.map(e=>b(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?b("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?b("div",{className:"text-destructive",children:(n=t.rateLimitReachedType,Zi(n))}):null]}),b(uo,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),b(uo,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):b("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:zn("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:[b("span",{className:"font-medium",children:Hi(n,e)}),b("span",{className:zn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),b("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:b("div",{className:zn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:zn("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?b("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,x]=_(""),[N,I]=_([]),[A,T]=_("default"),[M,S]=_(null),[P,L]=_(r?.autoRotateAccount??!1),[U,O]=_(r?.accountId??null),[z,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&&O(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=>j.error(ds(e)),onSuccess:e=>{X.setQueryData(["accounts"],t=>is(t,e))}}),xe=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:z,reasoningEffort:ce,serviceTier:le,workingDirectory:V.trim()});return{chat:e,response:await ra(o,e.id,{attachments:Js(N),content:w.trim()})}},onError:e=>j.error(ds(e)),onSuccess:({chat:e,response:t})=>{x(""),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}`)}}),be=D(e=>{e?.length&&Xs(e).then(e=>{I(t=>[...t,...e])}).catch(e=>j.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 b("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",children:b(Jr,{className:"min-h-0 min-w-0 flex-1",viewportProps:{className:"overflow-x-hidden"},children:y("div",{className:zn("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:[b("div",{className:"font-medium",children:"No connected account"}),b("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:[b(rt,{}),"Manage Accounts"]})]}),Ie?b(js,{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:[b(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:[b(he,{}),b("span",{className:"sr-only",children:"Choose directory"})]})]}),y("div",{className:"relative min-w-0",children:[b(ro,{visible:"plan"===A}),b(hr,{className:zn("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=>x(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!xe.isPending&&ss(w,V,re,N)&&xe.mutate())},onPaste:e=>{const t=Ys(e.clipboardData);t.length&&be(t)}})]}),b(to,{attachments:N,imageInputRef:Z,onAttachImages:be,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:[b(io,{attachmentDisabled:xe.isPending,disabled:!re,mode:A,onAttachFile:ye,onAttachImage:()=>Z.current?.click(),onSelectMode:T}),b(Vs,{account:re,autoRotate:P,autoRotateDisabled:xe.isPending,connectedAccounts:a,disabled:!a.length,selectedAccountId:re?.id??"",usageSummaries:n,onAutoRotateChange:L,onSelect:e=>{O(e)}}),b(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}})}}),b(so,{disabled:!re,mode:z,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:[b(ao,{pending:ve,snapshot:ge}),b(oo,{loading:xe.isPending,sendDisabled:!ss(w,V,re,N),onSend:()=>xe.mutate()})]})]})]})]})})})}var ho=qn({default:()=>fo}),fo=c(function(){return b(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:[b(ue,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[b("div",{className:"truncate font-medium",children:i.entries.length?`${bo(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),b(Io,{additions:i.additions,deletions:i.deletions})]})]}),b("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?b(Ce,{className:"animate-spin"}):b(Ge,{}),"Undo"]}),y(Ma,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:yo(i)}),children:[r?b(Ce,{className:"animate-spin"}):b(oe,{}),"Review"]})]})]}),b("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:[b("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}),b(Io,{additions:e.additions,deletions:e.deletions}),y(Va,{render:b(Ma,{size:"icon-sm",variant:"ghost"}),children:[b(J,{className:"-rotate-90 size-4 text-muted-foreground"}),b("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ya,{className:"max-w-5xl",children:[y(Za,{children:[b(tr,{children:e.path}),y(nr,{children:[e.action??"Edited"," file change reported by Codex."]})]}),b("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)):b("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?b("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>b(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=xo(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=xo(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 xo(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function bo(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]}),b("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 xo(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=()=>{n.length&&(n.length<=Lo?t.push(...n.map(e=>({id:`message:${e.id}`,message:e,type:"message"}))):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(ed(r.message)){if(Ho(r.message)){a(),t.push({id:`message:${r.message.id}`,message:r.message,type:"message"});continue}const e=n.at(-1);if(!e||td(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&&nd(e)!==nd(r.message)&&a(),n.push(r.message)}return a(),t}(function(e){if(e.some(Ho))return e.map(e=>({message:e,sequence:e.sequence,type:"message"}));const t=function(e){const t=[...e].reverse().filter(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind&&e.content.trim().length>0);return t.find(e=>function(e){return"final_answer"===Yo(e)}(e))??t.find(e=>!Xo(e))??t[0]}(e),n=[],a=[];for(const d of e)Jo(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=new Set,n=new Map;for(const a of e){if("TOOL_ACTIVITY"!==a.kind)continue;const e=Fo(a);e&&n.set(e,a)}return e.map(e=>{if("COMMAND_EXECUTION"!==e.kind)return e;const a=Fo(e),r=a?n.get(a):void 0;if(!r)return e;t.add(r.id);const i=id(e.metadata);return{...e,metadata:{...i,callId:a,kind:"command",output:r.content}}}).filter(e=>!t.has(e.id))}(function(e){const t=[];let n=[],a=null;const r=()=>{n.length&&(t.push(function(e){return 1===e.length?e[0]:{...e[e.length-1],content:Bo(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:Go(e)}}(n)),n=[],a=null)};for(const i of e){if("ASSISTANT"===i.role&&"CHAT"===i.kind){if(Ho(i)){r(),t.push(i);continue}const e=zo(i);a&&a!==e&&r(),a=e,n.push(i);continue}r(),t.push(i)}return r(),t}([...e].sort((e,t)=>e.sequence-t.sequence))))))}var Lo=5;function Ro(e){const t=$o([...e]).filter(e=>!Qo(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(Ho)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}function $o(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=qo(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=_o(n[t],r):(a.set(e,n.length),n.push(r))}return n}function qo(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 _o(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:Uo(t.status)>Uo(e.status)?{...e,status:t.status}:e:Uo(t.status)>Uo(e.status)||t.sequence>=e.sequence?t:e}function Uo(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Oo(e,t){return"ASSISTANT"===e?.role&&"CHAT"===e.kind&&"ASSISTANT"===t.role&&"CHAT"===t.kind}function jo(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function zo(e){const t=Yo(e);return"final_answer"===t||"commentary"===t?t:e.itemId?`item:${e.itemId}`:"assistant"}function Fo(e){const t=Zo((e.metadata&&"object"==typeof e.metadata?e.metadata:null)?.callId);if(t)return t;const n=e.rawPayload&&"object"==typeof e.rawPayload?e.rawPayload:null;return Zo((n?.payload&&"object"==typeof n.payload?n.payload:null)?.callId)}function Bo(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 Go(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 Ho(e){return"STREAMING"===e.status||"PENDING"===e.status}function Ko(e){return{pendingRequest:$o(e).sort((e,t)=>t.sequence-e.sequence).find(Wo)}}function Wo(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=id(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Qo(e){return!!Vo(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 Vo(e){if("PLAN"!==e.kind)return!1;const t=id(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}function Jo(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Wo(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||!Xo(e))||!!t&&t.content.includes(e.content.trim())))))))}function Xo(e){return"commentary"===Yo(e)}function Yo(e){const t=Zo((e.metadata&&"object"==typeof e.metadata?e.metadata:null)?.phase);return t?t.trim().replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toLowerCase():null}function Zo(e){return"string"==typeof e&&e.trim()?e:null}function ed(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function td(e,t){return nd(e)===nd(t)}function nd(e){return e.runId??e.turnId??e.chatId}function ad(e){return"COMMAND_EXECUTION"===e.kind?b(et,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?b(Te,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?b(rd,{}):b(ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function rd(){return b(Ae,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function id(e){return e&&"object"==typeof e?e:void 0}function sd(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 od({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 b(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:[b(le,{className:"size-4 shrink-0"}),b("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),b(nr,{className:"truncate",children:cd(r.data)})]}),b("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:[b(Ce,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?b("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?b(dd,{file:r.data}):null})]})})}function dd({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?b("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):b(Jr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[b("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:zn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[b("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),b("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:gs(n||" ",e.language)}})]},r)})}),e.truncated?b("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 cd(e){return e?[ld(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function ld(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function ud({text:e}){const t=L(po);return b("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:b(Ut,{remarkPlugins:[Ot],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?b("button",{className:zn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):b("a",{className:zn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>b("blockquote",{className:zn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>b("code",{className:zn("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})=>b("del",{className:zn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>b("em",{className:zn("italic",e),...t}),h1:({className:e,...t})=>b("h1",{className:zn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>b("h2",{className:zn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>b("h3",{className:zn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>b("h4",{className:zn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>b("h5",{className:zn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>b("h6",{className:zn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>b("hr",{className:zn("my-4 border-border",e),...t}),img:({className:e,...t})=>b("img",{className:zn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>b("input","checkbox"===t?{className:zn("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})=>b("li",{className:zn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>b("ol",{className:zn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>b("p",{className:zn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>b("pre",{className:zn("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})=>b("strong",{className:zn("font-semibold",e),...t}),table:({className:e,...t})=>b("div",{className:"my-3 max-w-full overflow-x-auto",children:b("table",{className:zn("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})=>b("ul",{className:zn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:hd(e)})})}function md(e){return e.map(e=>"text"===e.type?e.text:"").join("").trim()}function hd(e){return fd(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function fd(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=pd(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 pd(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 gd({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=$(()=>Ro(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=jo(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?"codex"===a?.type&&Oo(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]),x=$(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&Vd(n))return n.id}return null}(v),[v]),[N,I]=_(null);return y(po.Provider,{value:I,children:[w.map(t=>b(bd,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:x,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onSteerQueuedMessage:c,onUndoFileChanges:s,planActionDisabled:l,planActionPending:u,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,session:p},t.id)),f?b(Md,{}):null,b(od,{chatId:e,session:p,target:N,onClose:()=>I(null)})]})}function vd({chatId:e,messages:t,session:n}){const a=$(()=>Ko(t),[t]);return a.pendingRequest?b("div",{className:"grid min-w-0 gap-1.5 overflow-hidden border-b bg-background px-3 py-2",children:b("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5 overflow-hidden",children:b($d,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function wd({message:e}){if(!e)return null;const t=id(e.metadata),n=t?.steps??[],a=n.filter(e=>Fd(e.status)).length,r=function(e){const t=e.findIndex(e=>Bd(e.status));if(t>=0)return t;const n=e.findIndex(e=>!Fd(e.status));return n>=0?n:e.length?e.length-1:-1}(n),i=(r>=0?n[r]:void 0)?.step??Hd(t?.explanation)??Hd(e.content)??"Planning...",s=function(e,t){return t.some(e=>Bd(e.status))||Ho(e)?"in progress":t.length?"pending":"planning"}(e,n);return b("section",{"aria-label":"Active plan","aria-live":"polite",className:"border-b bg-background px-3 py-2",children:b("div",{className:"mx-auto w-full min-w-0 max-w-3xl",children:b("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:[b("div",{className:"mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-md bg-background text-muted-foreground",children:b(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:[b("span",{className:"text-sm font-medium",children:"Plan"}),b(pr,{variant:"secondary",children:s})]}),b("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?b("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:zn("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:[b(zd,{highlighted:n,status:e.status}),b("div",{className:"min-w-0 break-words leading-5 text-foreground",children:e.step}),b("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 xd({disabled:e,messages:t,onSteerQueuedMessage:n,pendingQueueId:a}){return t.length?b("section",{className:"border-b bg-background px-3 py-2",children:b("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:[b(te,{className:"size-4 shrink-0 text-muted-foreground"}),b("span",{children:"Queued messages"})]}),b(pr,{variant:"outline",children:t.length})]}),b("div",{className:"grid max-h-44 min-w-0 gap-1 overflow-y-auto p-2",children:t.map(t=>{const r=Pd(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:[b(te,{className:"size-3.5 text-muted-foreground"}),y("div",{className:"min-w-0",children:[b("div",{className:"truncate text-foreground",children:Ld(t)}),b("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?b(Ce,{className:"animate-spin"}):b(G,{}),"Steer"]})]},t.id)})})]})})}):null}function bd({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?b(Td,{message:t.message,queuedMessageActionDisabled:m,queuedMessageActionPendingId:h,onSteerQueuedMessage:d}):b(yd,{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 yd({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=$(()=>function(e){if(e.some(Ho))return null;if(!e.some(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind))return null;const t=e.filter(Id);if(!t.length)return null;const n=function(e,t){const n=e.map(e=>Ad(e[t])).filter(e=>null!==e);return n.length?Math.min(...n):null}(t,"createdAt"),a=kd(e,"completedAt")??kd(e,"createdAt"),r=n&&a&&a>n?Cd(a-n):null;return{actionCount:t.length,durationLabel:r}}(r),[r]),f=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 b("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:[b("span",{className:"text-xs font-medium text-muted-foreground",children:"Codex"}),f?b(gr,{status:f}):null]}),y("div",{className:"grid min-w-0 gap-2",children:[m.map(r=>b(Ed,{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)),h?b(Nd,{summary:h}):null]})]})})}function Nd({summary:e}){const t=e.durationLabel?`Worked for ${e.durationLabel}`:`${e.actionCount} ${1===e.actionCount?"action":"actions"}`;return y("div",{className:"flex min-w-0 items-center gap-2 py-1 text-xs text-muted-foreground",children:[b("div",{className:"h-px min-w-4 flex-1 bg-border"}),b("span",{className:"shrink-0",children:t}),b("div",{className:"h-px min-w-4 flex-1 bg-border"})]})}function Id(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind||"FILE_CHANGE"===e.kind}function kd(e,t){const n=e.map(e=>Ad(e[t])).filter(e=>null!==e);return n.length?Math.max(...n):null}function Ad(e){if(!e)return null;const t=e instanceof Date?e.getTime():Date.parse(e);return Number.isFinite(t)?t:null}function Cd(e){const t=Math.max(1,Math.round(e/1e3)),n=Math.floor(t/3600),a=Math.floor(t%3600/60),r=t%60;return n>0?`${n}h ${a.toString().padStart(2,"0")}m`:a>0?`${a}m ${r.toString().padStart(2,"0")}s`:`${r}s`}function Ed({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?b(Xd,{messages:a.messages}):"previousActions"===a.type?b(Yd,{messages:a.messages}):"fileChanges"===a.type?b(go,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):b($d,{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 Td({message:e,onSteerQueuedMessage:t,queuedMessageActionDisabled:n,queuedMessageActionPendingId:a}){const r=sd(e),i=Pd(e),s=$(()=>fd(e.content),[e.content]),o=md(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?b("div",{className:"flex max-w-full flex-wrap justify-end gap-1.5",children:d.map(e=>b("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:b("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:[b(rt,{className:"size-3.5 opacity-80"}),b("span",{className:"text-xs font-medium",children:"You"})]}),i?b(pr,{className:"shrink-0",variant:i.badgeVariant,children:i.label}):null]}),o?b("div",{className:"whitespace-pre-wrap break-words",children:o}):null,c.length?b("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:[b(le,{className:"size-3.5 shrink-0 opacity-80"}),b("span",{className:"min-w-0 truncate",children:e.path})]},e.id))}):null,i?b(Sd,{delivery:i,disabled:n,pending:a===i.queueId,onSteerQueuedMessage:i.queueId?()=>t?.({message:e,queueId:i.queueId}):void 0}):null]}):null]}),b(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:[b(tr,{children:l?.name??"Image preview"}),b(nr,{children:"Full size image preview."})]}),l?b("div",{className:"flex min-h-0 flex-1 items-center justify-center bg-black p-2",children:b("img",{alt:l.name,className:"max-h-full max-w-full object-contain",src:l.src})}):null]})})]})}function Md(){return b("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:[b(Ce,{className:"size-3.5 animate-spin"}),b("span",{children:"Codex is processing"})]})})}function Sd({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:[b("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?b(Ce,{className:"animate-spin"}):b(G,{}),"Steer"]}):null]})}function Pd(e){const t=id(e.metadata),n=Rd(t?.delivery),a=Rd(t?.queueStatus),r=Rd(t?.queueId),i=Rd(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 Dd(e){return"USER"===e.role&&!0===Pd(e)?.canSteer}function Ld(e){const t=md(fd(e.content)).trim();if(t)return t.length>160?`${t.slice(0,160)}...`:t;const n=sd(e);return n.length?`${n.length} ${1===n.length?"attachment":"attachments"}`:"Queued message"}function Rd(e){return"string"==typeof e?e:void 0}function $d({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()?b(Ud,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?b(qd,{}):null;case"THINKING":return b(_d,{message:i});case"PLAN":return b(Od,{metadata:id(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return b(Jd,{message:i,metadata:id(i.metadata)});case"FILE_CHANGE":return b(go,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return b(tc,{chatId:e,compact:t,message:i,metadata:id(i.metadata),session:m});case"USER_INPUT_PROMPT":return b(nc,{chatId:e,compact:t,message:i,metadata:id(i.metadata),session:m});case"ERROR":return b(lc,{metadata:id(i.metadata),text:i.content});default:return b(uc,{text:i.content})}}function qd(){return b("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>b("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function _d({message:e}){const t=function(e){const t=e.trim();return t.toLowerCase().startsWith("thinking...")?t.slice(11).trim():"thinking"===t.toLowerCase()?"":t}(e.content),n=function(e){const t=e.split(/\r?\n/).map(e=>e.trim()).find(Boolean);return t?t.length>96?`${t.slice(0,96)}...`:t:null}(t),a="STREAMING"===e.status||"PENDING"===e.status;return y("details",{className:"group min-w-0 max-w-full overflow-hidden text-sm",open:a,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-start gap-2 px-1 py-1.5 text-muted-foreground",children:[b(J,{className:"mt-0.5 size-4 shrink-0 transition-transform group-open:rotate-180"}),b("div",{className:"min-w-0 flex-1",children:y("div",{className:"flex min-w-0 items-center gap-2",children:[b("span",{className:"size-1.5 shrink-0 rounded-full bg-muted-foreground/60"}),b("span",{className:"shrink-0 font-medium",children:a?"Thinking":"Reasoned"}),n?b("span",{className:"min-w-0 truncate text-xs",children:n}):null]})})]}),t?b("div",{className:"min-w-0 whitespace-pre-wrap break-words px-7 pb-2 text-muted-foreground",children:t}):null]})}function Ud({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Vd(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()?b(ud,{text:o}):null,s?b(Kd,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Od({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Vd(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:[b(Ae,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?b(ud,{text:c}):n?.explanation?b("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):b(uc,{text:"Planning..."}),o.length?b("div",{className:"mt-3 grid min-w-0 gap-2",children:o.map((e,t)=>y("div",{className:"flex items-start gap-2",children:[b(pr,{variant:"completed"===e.status?"default":"secondary",children:e.status}),b("div",{className:"min-w-0 flex-1",children:e.step})]},`${e.step}-${t}`))}):null,l&&d?b(Wd,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function jd(e){if("SYSTEM"!==e.role||"PLAN"!==e.kind)return!1;if("FAILED"===e.status||Vo(e))return!1;const t=id(e.metadata);if("progress"!==t?.presentation)return!1;const n=t.steps??[];return(!n.length||!n.every(e=>Fd(e.status)))&&(n.length>0||Ho(e)||!!Hd(t.explanation)||!!Hd(e.content))}function zd({highlighted:e,status:t}){return Fd(t)?b(W,{className:"mt-0.5 size-3.5 text-primary"}):Bd(t)?b(Ce,{className:"mt-0.5 size-3.5 animate-spin text-muted-foreground"}):b("span",{className:zn("mt-1.5 size-2 rounded-full",e?"bg-primary":"bg-muted-foreground/35")})}function Fd(e){return["complete","completed","done","success","succeeded"].includes(Gd(e))}function Bd(e){return["active","in_progress","running","started","streaming","working"].includes(Gd(e))}function Gd(e){return e.trim().toLowerCase().replace(/[\s-]+/g,"_")}function Hd(e){const t=e?.trim();return t?["...","planning..."].includes(t.toLowerCase())?null:t:null}function Kd({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:[b(Ae,{className:"size-4"}),"Proposed plan"]}),b(ud,{text:i}),s?b(Wd,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Wd({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?b(Ce,{className:"animate-spin"}):b(G,{}),"Implement plan"]}),y(Qa,{open:d,onOpenChange:c,children:[y(Va,{render:b(Ma,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[b(Oe,{}),"Tell Codex what to change"]}),y(Ya,{children:[y(Za,{children:[b(tr,{children:"Tell Codex What To Change"}),b(nr,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[b(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:[b(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?b(Ce,{className:"animate-spin"}):b(Oe,{}),"Send changes"]})]})]})]})]})]})}var Qd=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Vd(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Qd.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Qd,"").trim()}:"PLAN"!==e.kind||"result"!==id(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function Jd({message:e,metadata:t}){const n=t?.status??"running",a="STREAMING"===e.status||"PENDING"===e.status,r="FAILED"===e.status||n.toLowerCase().includes("fail")||"number"==typeof t?.exitCode&&0!==t.exitCode,i=(t?.command??e.content.trim())||"command",s=t?.output?.trim()??"",o=s?s.split(/\r?\n/):[],[d,c]=_(!1),l=d?o:o.slice(0,fc),u=Math.max(0,o.length-l.length);return b("div",{className:"min-w-0 max-w-full overflow-hidden py-1 text-sm",children:y("div",{className:"flex min-w-0 items-start gap-2",children:[b("span",{className:zn("mt-2 size-1.5 shrink-0 rounded-full",r?"bg-destructive":a?"animate-pulse bg-primary":"bg-muted-foreground/70")}),y("div",{className:"min-w-0 flex-1",children:[y("div",{className:"flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1",children:[b("span",{className:"shrink-0 font-medium",children:ec(e,t)}),b("code",{className:"min-w-0 max-w-full break-words rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:i}),t?.durationMs?b("span",{className:"text-xs text-muted-foreground",children:Cd(t.durationMs)}):null,"number"==typeof t?.exitCode?b(pr,{variant:0===t.exitCode?"secondary":"destructive",children:0===t.exitCode?"ok":t.exitCode}):null]}),t?.cwd?b("div",{className:"mt-1 truncate text-xs text-muted-foreground",children:t.cwd}):null,l.length?b("pre",{className:"mt-2 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted/70 px-3 py-2 font-mono text-xs leading-5 text-muted-foreground",children:l.join("\n")}):a?null:b("div",{className:"mt-1 text-xs text-muted-foreground",children:"(no output)"}),u>0?y(Ma,{className:"mt-1 h-7 px-2 text-xs text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:()=>c(!0),children:["Show ",u," more"," ",1===u?"line":"lines"]}):null]})]})})}function Xd({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,hc),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=Go(e);return y("div",{className:"grid min-w-0 gap-1.5 py-1 text-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2 px-1 text-xs text-muted-foreground",children:[b(et,{className:"size-3.5 shrink-0"}),y("span",{className:"min-w-0 truncate",children:[e.length," ",1===e.length?"tool call":"tool calls"]}),b(pr,{className:"shrink-0",variant:"secondary",children:s.toLowerCase()})]}),r.map(e=>b(Zd,{message:e},e.id)),i>0?y(Ma,{className:"h-7 justify-start px-2 text-xs text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:()=>n(!0),children:["Show ",i," more"," ",1===i?"tool call":"tool calls"]}):null]})}function Yd({messages:e}){const[t,n]=_(!1),a=1===e.length?"1 previous message":`${e.length} previous messages`;return y("div",{className:"grid min-w-0 gap-2 py-1 text-sm",children:[y("button",{className:"flex min-w-0 items-center gap-2 text-left text-muted-foreground",type:"button",onClick:()=>n(e=>!e),children:[b(J,{className:zn("size-4 shrink-0 transition-transform",t?"rotate-0":"-rotate-90")}),b("span",{className:"shrink-0 text-xs",children:a}),b("span",{className:"h-px min-w-4 flex-1 bg-border"})]}),t?b("div",{className:"grid min-w-0 gap-1.5 pl-6",children:e.map(e=>b(Zd,{message:e},e.id))}):null]})}function Zd({message:e}){const t=id(e.metadata),n=id(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(id(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===id(t)?.requestKind?"Permission request":"Approval request":"USER_INPUT_PROMPT"===e.kind?"Input request":"CHAT"===e.kind?"Assistant message":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:[ad(e),y("div",{className:"min-w-0",children:[b("div",{className:"truncate text-xs font-medium",children:a}),r?b("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:r}):null]}),b(pr,{variant:"secondary",children:e.status.toLowerCase()})]})}function ec(e,t){if("STREAMING"===e.status||"PENDING"===e.status)return"Running";const n=function(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}(t).toLowerCase();return"FAILED"===e.status||n.includes("fail")||n.includes("error")||"number"==typeof t?.exitCode&&0!==t.exitCode?"Failed":"Ran"}function tc({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=mc(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?b(ac,{icon:b(Te,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:rc(a)}):y("div",{className:zn("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:zn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[b(Te,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?b("div",{className:zn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?b("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,b("div",{className:zn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(pr,{variant:"secondary",children:[b(W,{className:"size-3"}),"resolved"]}):y(x,{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?b(Ce,{className:"animate-spin"}):b(W,{}),"Accept"]}),b(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"}),b(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 nc({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=_({}),[o,d]=_(0),c=mc(e,n,r),l=a?.questions?.length?a.questions:[{id:"answer",question:a?.message??"Answer"}],u="resolved"===a?.status||"COMPLETED"===n.status,m=function(e){const t=e;return"request_user_input"===t?.toolName||"function_call"===t?.sourcePayloadType}(a),h=Math.min(o,Math.max(l.length-1,0)),f=l[h],p=!!f&&cc(f,i[f.id]).length>0,g=l.every(e=>cc(e,i[e.id]).length>0),v=h>=l.length-1,w=()=>d(e=>Math.min(e+1,l.length-1));if(u||"expired"===a?.status)return b(ac,{icon:b(W,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:ic(a)});return y("div",{className:zn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:zn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[b("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:[b(Ma,{"aria-label":"Previous question",disabled:u||c.isPending||0===h,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:b(B,{})}),y(pr,{variant:"secondary",children:[h+1," / ",l.length]}),b(Ma,{"aria-label":"Next question",disabled:u||c.isPending||v||!m&&!p,size:"icon-xs",variant:"ghost",onClick:w,children:b(G,{})}),u?b(pr,{variant:"secondary",children:"resolved"}):null]})]}),f?b(oc,{compact:t,disabled:u||c.isPending||m,question:f,value:i[f.id]??sc,onChange:e=>s(t=>({...t,[f.id]:e})),onAutoAdvance:v?void 0:w}):null,m?b("div",{className:zn("text-xs leading-4 text-muted-foreground",t?"mt-2":"mt-4"),children:"Answer this in the Codex client that started the turn."}):v?b("div",{className:zn("flex justify-end",t?"mt-2":"mt-4"),children:y(Ma,{disabled:u||c.isPending||!g,size:"sm",onClick:()=>{g?c.mutate({kind:"userInput",result:dc(l,i)}):j.error("Answer every question before submitting.")},children:[c.isPending?b(Ce,{className:"animate-spin"}):b(W,{}),"Submit"]})}):null]})}function ac({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:[b("span",{className:"text-muted-foreground",children:e}),b("span",{className:"min-w-0 flex-1 font-medium",children:n}),t?b(pr,{variant:"secondary",children:t}):null]}),a?b("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:a}):null]})}function rc(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 ic(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 sc={other:"",values:[]};function oc({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:[b("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?b("span",{className:zn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?b("div",{className:zn("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:zn("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:zn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[b("span",{children:n.label}),n.description?b("span",{className:zn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?b(W,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?b(Sa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):b(hr,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?b(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 dc(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:cc(e,t[e.id])}]))}}function cc(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function lc({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:[b(z,{className:"size-4"}),"Error"]}),b("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function uc({text:e}){return b("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function mc(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=>j.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>da(e,t))}})}var hc=5,fc=5;function pc(e,t){if(!e?.data.length)return t;const n=[...t.data];for(const r of e.data)gc(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(wc),nextCursor:a||null}}function gc(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=vc(e.content),a=vc(t.content);return!(!n||!a)&&(n===a||function(e){return"PENDING"===e.status||"STREAMING"===e.status}(t)&&n.includes(a))}(t,e))}function vc(e){return e.replace(/\s+/g," ").trim()}function wc(e,t){return e.sequence-t.sequence||new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()||e.id.localeCompare(t.id)}function xc(){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 O=C({enabled:!!e,queryKey:L,queryFn:()=>ta(d,e),refetchInterval:2500}),z=C({enabled:!!e,queryKey:U,queryFn:()=>aa(d,e,0),refetchInterval:2500,structuralSharing:(e,t)=>pc(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=$(()=>z.data?.data??[],[z.data]),G=O.data;R(()=>{G&&P.setQueryData(["chats"],e=>e?.map(e=>e.id===G.id?G:e))},[G,P]);const H=t.find(e=>e.id===G?.accountId),K="RUNNING"===G?.status,W=$(()=>Ko(B),[B]),Q=$(()=>function(e,t){if(!t)return null;const n=$o(e).filter(e=>!Qo(e)).sort((e,t)=>e.sequence-t.sequence);for(let a=n.length-1;a>=0;a-=1){const e=n[a];if(jd(e))return e}return null}(B,K),[K,B]),V=$(()=>function(e){return Ro(e).filter(Dd)}(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=id(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=>j.error(ds(e)),onSuccess:(e,t)=>{P.setQueryData(L,e),P.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&j.success("Chat account updated.")}}),se=k({mutationFn:t=>na(d,e,t),onError:e=>j.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=>j.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=>j.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=>j.error(ds(e)),onSuccess:()=>{j.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=>j.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=>j.error(ds(e)))},[]),fe=D(()=>{o({initialPath:O.data?.workingDirectory,mode:"file",onSelect:e=>{N(t=>[...t,eo(e)])}})},[O.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=>j.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=>pc(t,e))}).catch(e=>j.error(ds(e))),ta(d,e).then(t).catch(e=>j.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 b(r,{replace:!0,to:"/"});if(O.isLoading||z.isLoading)return b("main",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center overflow-hidden bg-background",children:b(Ce,{className:"size-5 animate-spin text-muted-foreground"})});if(O.error)return b("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:[b("div",{className:"font-medium",children:"Chat not available"}),b("div",{className:"mt-1 whitespace-pre-wrap",children:O.error.message})]})});const xe=G,be=H,ye=ne.data?.data??[],Ne=!!xe&&!K&&s.length>0,Ie=Fi(ye,xe?.model),ke=Ie?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],Ae=xe?.reasoningEffort??Ie?.defaultReasoningEffort??null,Ee=Ie?.additionalSpeedTiers??[],Te=p.trim().length>0||w.length>0,Me=ss(p,xe?.workingDirectory??"",be,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:[b(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:b("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?b(gd,{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}):b("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),b("div",{className:zn("min-w-0 border-t bg-background",m&&xe?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:m&&xe?.workingDirectory?b("div",{className:"p-2",children:b("div",{className:"mx-auto max-w-5xl",children:b(js,{onClosePanel:()=>l(!1),projectPath:xe.workingDirectory,socket:h,socketConnected:f})})}):y(x,{children:[b(wd,{message:Q}),b(xd,{disabled:!K||le.isPending,messages:V,pendingQueueId:le.variables?.queueId??null,onSteerQueuedMessage:e=>le.mutate(e)}),b(vd,{chatId:e,messages:B,session:d}),b("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:[b(ro,{visible:"plan"===(xe?.collaborationMode??"default")}),b(hr,{className:zn("max-h-32 min-h-12 bg-transparent! text-xs resize-none border-0 px-1 shadow-none focus-visible:ring-0","plan"===(xe?.collaborationMode??"default")&&"pr-24"),placeholder:xe?.workingDirectory?be?"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)}})]}),b(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:[b(io,{attachmentDisabled:de.isPending,disabled:!xe,modeDisabled:K,mode:xe?.collaborationMode??"default",onAttachFile:fe,onAttachImage:()=>M.current?.click(),pending:se.isPending,onSelectMode:e=>se.mutate({collaborationMode:e})}),b(Vs,{account:be,autoRotate:xe?.autoRotateAccount??!1,autoRotateDisabled:!xe||se.isPending,connectedAccounts:s,disabled:!xe||!s.length,pending:ie.isPending,selectedAccountId:xe?.accountId??"",selectionDisabled:!Ne,usageSummaries:i,onAutoRotateChange:e=>se.mutate({autoRotateAccount:e}),onSelect:e=>ie.mutate({accountId:e})}),b(co,{activeReasoningEffort:Ae,disabled:!xe||K||!be,modelOptions:ye,modelValue:xe?.model??"",pending:ne.isFetching||se.isPending,reasoningOptions:ke,reasoningValue:xe?.reasoningEffort??"",selectedModel:Ie,serviceTierOptions:Ee,serviceTierValue:xe?.serviceTier??"",onSelectModel:e=>{xe?.accountId&&oe.mutate({accountId:xe.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),se.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;xe?.accountId&&oe.mutate({accountId:xe.accountId,settings:{defaultModel:xe.model??null,defaultReasoningEffort:t,defaultServiceTier:xe.serviceTier??null}}),se.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;xe?.accountId&&oe.mutate({accountId:xe.accountId,settings:{defaultModel:xe.model??null,defaultReasoningEffort:xe.reasoningEffort??null,defaultServiceTier:t}}),se.mutate({serviceTier:t})}}),b(so,{disabled:!xe,mode:xe?.permissionMode??"default",pending:se.isPending,onSelectMode:e=>{xe?.accountId&&oe.mutate({accountId:xe.accountId,settings:{defaultPermissionMode:e}}),se.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[b(no,{usage:I}),b(ao,{pending:re,snapshot:ae}),b(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()})]})]})]})})]})})]}),xe?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:[b(Ds,{active:m,className:zn("hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",m?"text-sidebar-accent-foreground":"text-sidebar-foreground/75"),count:u,disabled:!xe.workingDirectory?.trim(),onToggle:()=>l(!m)}),b(As,{chatId:xe.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 bc=qn({default:()=>yc}),yc=c(function(){return b(xc,{})}),Nc=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Ic(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function kc(e){throw new Nc(405,`${e} is not supported for this route.`)}function Ac(e,t){t.includes(e.method)||kc(e.method)}async function Cc(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 Nc(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Nc)throw n;throw new Nc(400,"Request body must be valid JSON.")}}function Ec(e,t,n={}){if(null==e){if(n.required)throw new Nc(400,`${t} is required.`);return}if("string"!=typeof e)throw new Nc(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Nc(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Nc(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function Tc(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Nc(400,`${t} must be an array of strings.`);return e}}function Mc(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new Nc(400,`${t} must be a boolean.`);return e}}function Sc(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Nc(400,`${t} must be an object.`);return e}}function Pc(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 Nc(400,`${t} must be an integer.`);return r}function Dc(e,t){const n=e[t];if(!n)throw new Nc(400,`${t} is required.`);return n}function Lc(e){return e instanceof Nc?Ic({message:e.message},{status:e.status}):Ic({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var Rc=qn({loader:()=>$c});function $c({request:e}){try{return Ac(e,["GET"]),Ic({status:"ok",service:"xedoc"})}catch(t){return Lc(t)}}var qc,_c=globalThis,Uc=wn("~"===(qc=process.env.CODEX_WORKSPACE_ROOT?.trim()||hn())?hn():qc.startsWith("~/")?wn(hn(),qc.slice(2)):bn(qc),".xedoc","xedoc.db"),Oc=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Uc);process.env.DATABASE_URL=Oc,tn(pn(Uc),{recursive:!0,mode:448});var jc=_c.prisma??new Wt({datasources:{db:{url:Oc}}});"production"!==process.env.NODE_ENV&&(_c.prisma=jc);var zc="server",Fc="scrypt";async function Bc(e){!function(e){if(e.length<8)throw new Nc(400,"Server password must be at least 8 characters.")}(e);const t=await Qc()??await async function(e){try{return await jc.serverAuth.create({data:{id:zc,passwordHash:Vc(e),tokenSecret:Jc(32)}})}catch(t){if(function(e){return e instanceof Kt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Nc(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!==Fc||!a||!r||void 0!==i)&&Xc(Gt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Nc(401,"Invalid server password.");return{token:Hc({authHash:Kc(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Gc(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Nc(401,"Invalid auth token.");if(!Xc(a,Wc(n,t.tokenSecret)))throw new Nc(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 Nc(401,"Invalid auth token.")}}(n);if(i.authHash!==Kc(t.passwordHash))throw new Nc(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Nc(401,"Missing auth token.");return n}(e),await async function(){const e=await Qc();if(!e)throw new Nc(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function Hc(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${Wc(n,t)}`}function Kc(e){return t=e,jt("sha256").update(t).digest("hex");var t}function Wc(e,t){return zt("sha256",t).update(e).digest("base64url")}async function Qc(){return jc.serverAuth.findUnique({where:{id:zc}})}function Vc(e){const t=Jc(16);return`${Fc}:${t}:${Gt(e,t,64).toString("base64url")}`}function Jc(e){return Ft(e).toString("base64url")}function Xc(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&Ht(n,a)}var Yc=qn({loader:()=>Zc});async function Zc({request:e}){try{return Ac(e,["GET"]),Ic(await async function(){return{passwordConfigured:!!(await Qc())}}())}catch(t){return Lc(t)}}var el=qn({action:()=>tl});async function tl({request:e}){try{return Ac(e,["POST"]),Ic(await Bc(Ec((await Cc(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return Lc(t)}}var nl=qn({loader:()=>al});async function al({request:e}){try{return Ac(e,["GET"]),Ic(await async function(e){return{authenticated:!0,issuedAt:(await Gc(e)).issuedAt}}(e))}catch(t){return Lc(t)}}function rl(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function il(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function sl(e){const t=rl(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var ol=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=pl(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 kl(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}`),ml(t)&&ll(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(Nl(t.id));if(a){if(clearTimeout(a.timeout),this.pending.delete(Nl(t.id)),t.error)return ml(t.error.message)&&ll(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()}},dl=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new ol(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()}},cl=new Set;async function ll(e,t){cl.add(e),await jc.codexAccount.updateMany({where:{id:e},data:{status:"INVALIDATED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:hl(t)}})}function ul(e){cl.delete(e)}function ml(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 hl(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 fl(e){return(await dl.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function pl(e){return wn(Il(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function gl(e){const t=pl(e);return kl(t),t}function vl(){return Il(process.env.CODEX_SHARED_CHAT_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function wl(){const e=vl();return tn(e,{recursive:!0,mode:448}),Vt(e,448),e}function xl(){const e=wl(),t=wn(e,"AGENTS.md");return Ml(t,384),{codexHome:e,instructionsPath:t}}function bl(){return wn(vl(),"session_index.jsonl")}function yl(){const e=vl();return wn(e,El(e).filter(e=>/^state_\d+\.sqlite$/i.test(e)).sort((e,t)=>Tl(t)-Tl(e)).at(0)??"state_5.sqlite")}function Nl(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}function Il(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):bn(e)}function kl(e){tn(e,{recursive:!0,mode:448}),Vt(e,448),function(e){const t=wl();if(bn(e)===bn(t))return;(function(e,t){const n=wn(t,"sessions"),a=wn(e,"sessions");if(tn(n,{recursive:!0,mode:448}),Dl(a,n))return;Rl(a)&&(Ll(a)?.isDirectory()&&Sl(a,n),dn(a,$l(a)));un(n,a,"dir")})(e,t),function(e,t){const n=wn(t,"session_index.jsonl"),a=wn(e,"session_index.jsonl");if(Ml(n,384),Dl(a,n))return;Rl(a)&&(Ll(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,$l(a)));un(n,a,"file")}(e,t),function(e,t){for(const n of function(e,t){const n=new Set([fn(yl())]);for(const a of[t,e])for(const e of El(a))/^state_\d+\.sqlite$/i.test(e)&&n.add(e);return[...n].flatMap(e=>[e,`${e}-wal`,`${e}-shm`])}(e,t))Al(e,t,n)}(e,t),function(e,t){Cl(e,t,"AGENTS.md",!0),Cl(e,t,"AGENTS.override.md",!1)}(e,t)}(e)}function Al(e,t,n){const a=wn(t,n),r=wn(e,n);Dl(r,a)||(Ll(r)?.isFile()&&Pl(r,a),n.endsWith("-wal")||n.endsWith("-shm")||Ml(a,384),Rl(r)&&dn(r,$l(r)),un(a,r,"file"))}function Cl(e,t,n,a){const r=wn(t,n),i=wn(e,n);(a||Rl(r)||Rl(i))&&(Ml(r,384),Dl(i,r)||(Ll(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),Rl(i)&&dn(i,$l(i)),un(r,i,"file")))}function El(e){try{return rn(e)}catch{return[]}}function Tl(e){return Number(/^state_(\d+)\.sqlite$/i.exec(e)?.[1]??0)}function Ml(e,t){Jt(nn(e,"a",t)),Vt(e,t)}function Sl(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()?Sl(a,r):n.isFile()&&Pl(a,r)}}function Pl(e,t){Rl(t)||(tn(pn(t),{recursive:!0,mode:448}),Yt(e,t))}function Dl(e,t){try{return!!en(e).isSymbolicLink()&&bn(pn(e),sn(e))===bn(t)}catch{return!1}}function Ll(e){try{return ln(e)}catch{return null}}function Rl(e){try{return en(e),!0}catch{return!1}}function $l(e){const t=(new Date).toISOString().replace(/[:.]/g,"-");let n=`${e}.pre-shared-${t}`,a=1;for(;Rl(n);)n=`${e}.pre-shared-${t}-${a}`,a+=1;return n}var ql=32768,_l="auth.json",Ul=262144;async function Ol(){const e=await jc.codexAccount.findMany({orderBy:{createdAt:"asc"}});return fu(e),function(e){const t=iu(e);return e.map(e=>xu(e,t.has(e.id)))}(await async function(e){return Promise.all(e.map(async e=>"AUTHENTICATING"===e.status&&eu(e.id)?(dl.stopRuntime(e.id),jc.codexAccount.update({where:{id:e.id},data:Vl(e.id)})):e))}(e))}async function jl(){const e=su({required:!0}),t=await async function(e){const t=(await jc.codexAccount.findMany({orderBy:{createdAt:"asc"}})).flatMap(e=>{const t=ou(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 dl.stopRuntime(e.id),ru(e.id,{authJson:t.authJson}),jc.codexAccount.update({where:{id:e.id},data:Vl(e.id)})}(t,e):await async function(e){const t=await jc.codexAccount.create({data:{displayName:e.email??"Local Codex account",command:process.env.CODEX_COMMAND??"codex",args:vu(Zl()),environment:vu(void 0)}});return ru(t.id,{authJson:e.authJson}),jc.codexAccount.update({where:{id:t.id},data:Vl(t.id)})}(e);return{imported:1,accounts:[xu(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 zl(e){const t=await Fl(e);return function(e){const t=lu();tn(t,{recursive:!0,mode:448}),Vt(t,448);const n=wn(t,_l);mn(n,`${JSON.stringify(e)}\n`,{encoding:"utf8",mode:384}),Vt(n,384)}(function(e){try{const t=nu(e);if(!tu(t))throw new Nc(409,"Authenticate this xedoc account before making it the active local Codex account.");return t}catch(t){if(t instanceof Nc)throw t;throw new Nc(409,"Authenticate this xedoc account before making it the active local Codex account.")}}(e)),xu(t,!0)}async function Fl(e){const t=await jc.codexAccount.findUnique({where:{id:e}});if(!t)throw new Nc(404,"Codex account not found.");return gu(t.id),t}async function Bl(){const{codexHome:e,instructionsPath:t}=xl();await pu();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:ql,shared:!0}}async function Gl(e){const t=function(e){if("string"!=typeof e)throw new Nc(400,"instructions must be a string.");const t=e.replace(/\r\n?/g,"\n");if(Buffer.byteLength(t,"utf8")>ql)throw new Nc(400,"instructions must be 32768 bytes or fewer.");return t}(e.instructions),{codexHome:n,instructionsPath:a}=xl();return await pu(),mn(a,t,{encoding:"utf8",mode:384}),Vt(a,384),{accountId:null,codexHome:n,instructionsPath:a,instructions:t,maxBytes:ql,shared:!0}}async function Hl(e,t="browser"){const n=await Fl(e),a="INVALIDATED"===n.status;if(eu(e)&&!a)return dl.stopRuntime(e),await jc.codexAccount.update({where:{id:e},data:Vl(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};a&&(dl.stopRuntime(e),function(e){cn(wn(pl(e),_l),{force:!0})}(e)),await jc.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const r=Xl(n);if(!a){const t=await async function(e){try{return rl(rl((await e.request("account/read",{refreshToken:!1})).result)?.account)??null}catch{return null}}(r);if(t)return await jc.codexAccount.update({where:{id:e},data:Vl(e,t)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}}const i=rl((await r.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt",codexStreamlinedLogin:!0})).result),s="chatgptDeviceCode"===il(i?.type)?"device":t,o=function(e,t){return"device"===t?il(e?.verificationUrl)??il(e?.verification_url)??il(e?.authUrl)??il(e?.auth_url)??il(e?.url)??null:il(e?.authUrl)??il(e?.auth_url)??il(e?.url)??null}(i,s),d=il(i?.loginId)??null,c="device"===s?il(i?.userCode)??il(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 jc.codexAccount.update({where:{id:e},data:"CONNECTED"===l?Vl(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(),jc.codexAccount.update({where:{id:t},data:Vl(t)}))},s=e=>{a||(a=!0,c(),jc.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:e}}))},o=setInterval(()=>{eu(t)?i():Yl(t,e).then(e=>{e&&(a=!0,c())}).catch(()=>{})},1500),d=setTimeout(()=>{c()},3e5),c=()=>{clearInterval(o),clearTimeout(d),r(),Wl.get(t)===c&&Wl.delete(t)};Wl.set(t,c),r=e.onEvent(e=>{const t=rl(e.params);if("account/login/completed"===e.method){const e=il(t?.loginId);if(n&&e&&e!==n)return;return!1===t?.success?void s(il(t.error)??"Login failed."):void i()}"account/updated"===e.method&&il(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 jc.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 Kl(e,t){const n=await Fl(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Nc(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Nc(400,"Callback URL must use http.");if(t.username||t.password)throw new Nc(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 Nc(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Nc(400,"Callback URL must include an OAuth code or error.");return t}(t),r=Xl(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 Nc(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=rl((await i)?.params);if(!1===s?.success){const t=il(s.error)??"Login failed.";return await jc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Jl(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await Yl(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:eu(e)?(dl.stopRuntime(e),await jc.codexAccount.update({where:{id:e},data:Vl(e)}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await jc.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:Jl(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 jc.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:Jl(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}var Wl=new Map;function Ql(e){Wl.get(e)?.(),Wl.delete(e)}function Vl(e,t){ul(e);const n=((a=t)?hu(il(a.email))??hu(il(a.accountEmail))??hu(il(a.chatgptEmail))??hu(il(rl(a.profile)?.email))??hu(il(rl(a.user)?.email)):null)??function(e){try{return uu(nu(e))}catch{return null}}(e);var a;return{...n?{displayName:n}:{},status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}function Jl(e){return"browser"===e||"device"===e?e:null}function Xl(e){return dl.getRuntime({accountId:e.id,command:e.command,args:bu(e.args),workingDirectory:null,environment:sl(e.environment)})}async function Yl(e,t){const n=rl(rl((await t.request("account/read",{refreshToken:!1})).result)?.account);return!!n&&(await jc.codexAccount.update({where:{id:e},data:Vl(e,n)}),!0)}function Zl(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function eu(e){try{return tu(nu(e))}catch{return!1}}function tu(e){return!("chatgpt"!==il(e.auth_mode)||!rl(e.tokens)&&!il(e.OPENAI_API_KEY))}function nu(e){const t=an(wn(pl(e),_l),"utf8");return rl(JSON.parse(t))??{}}function au(e){try{const t=nu(e);return Object.keys(t).length?{authJson:t}:null}catch{return null}}function ru(e,t){if(!t)return;const n=gl(e),a=`${JSON.stringify(t.authJson)}\n`;mn(wn(n,_l),a,{encoding:"utf8",mode:384}),Vt(wn(n,_l),384)}function iu(e){const t=su({required:!1});if(!t)return new Set;const n=e.flatMap(e=>{const t=ou(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 su(e){try{const e=an(wn(lu(),_l),"utf8");if(Buffer.byteLength(e,"utf8")>Ul)throw new Nc(400,"Local Codex auth.json must be 262144 bytes or fewer.");const t=rl(JSON.parse(e));if(!t||!tu(t))throw new Nc(400,"Local Codex auth.json does not contain an active ChatGPT account.");return du(t)}catch(t){if(!e.required)return null;if(t instanceof Nc)throw t;throw new Nc(404,"No active local Codex auth.json was found. Sign in with the local Codex CLI first.")}}function ou(e){try{const t=nu(e);return tu(t)?du(t):null}catch{return null}}function du(e){return{authJson:e,email:uu(e),fingerprint:(t=e,jt("sha256").update(cu(t)).digest("hex"))};var t}function cu(e){return Array.isArray(e)?`[${e.map(e=>cu(e)).join(",")}]`:e&&"object"==typeof e?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${cu(e[t])}`).join(",")}}`:JSON.stringify(e)}function lu(){return function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):bn(e)}(process.env.CODEX_LOCAL_HOME?.trim()||process.env.CODEX_HOME?.trim()||"~/.codex")}function uu(e){return hu(il(e.email))??hu(il(rl(e.account)?.email))??hu(il(rl(e.profile)?.email))??hu(il(rl(e.user)?.email))??mu(il(rl(e.tokens)?.id_token))??mu(il(rl(e.tokens)?.idToken))??mu(il(e.id_token))??mu(il(e.idToken))}function mu(e){if(!e)return null;const[,t]=e.split(".");if(!t)return null;try{return hu(il(rl(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 hu(e){const t=e?.trim();return t&&t.includes("@")?t:null}function fu(e){for(const t of e)gu(t.id)}async function pu(){fu(await jc.codexAccount.findMany({select:{id:!0}}))}function gu(e){try{gl(e)}catch(t){console.warn(`Failed to prepare Codex account home for ${e}.`,t instanceof Error?t.message:t)}}function vu(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function wu(e){return{args:vu(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 xu(e,t=!1){return{id:e.id,displayName:e.displayName,status:e.status,isLocalCodexActive:t,command:e.command,args:bu(e.args),environment:sl(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:Jl(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function bu(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):Zl()}function yu(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Nc(400,`${n} must be an object.`);return{id:Eu(e.id,`${n}.id`,128),displayName:Cu(e.displayName,`${n}.displayName`,128),command:Eu(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:Tu(e.args,`${n}.args`)??Zl(),auth:Mu(e.auth,`${n}.auth`),defaultModel:Eu(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:Au(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:Iu(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:ku(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:Su(e.environment,`${n}.environment`)}}function Nu(e){return null==e?null:Cu(e,"runtime option",128)}function Iu(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 Nc(400,`${t} is invalid.`)}function ku(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Nc(400,`${t} is invalid.`)}function Au(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Nc(400,`${t} is invalid.`)}function Cu(e,t,n){const a=Eu(e,t,n);if(!a)throw new Nc(400,`${t} is required.`);return a}function Eu(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Nc(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Nc(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function Tu(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Nc(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function Mu(e,t){if(null==e)return null;const n=rl(e);if(!n)throw new Nc(400,`${t} must be an object.`);const a=rl(n.authJson);if(!a)throw new Nc(400,`${t}.authJson must be an object.`);return function(e,t,n){if(Buffer.byteLength(JSON.stringify(e),"utf8")>n)throw new Nc(400,`${t} must be ${n} bytes or fewer.`)}(a,`${t}.authJson`,Ul),{authJson:a}}function Su(e,t){if(null==e)return null;const n=rl(e);if(!n)throw new Nc(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var Pu=qn({action:()=>Lu,loader:()=>Du});async function Du({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Ol())}catch(t){return Lc(t)}}async function Lu({request:e}){try{Ac(e,["POST"]),await Gc(e);const t=await Cc(e);return Ic(await async function(e){const t=await jc.codexAccount.create({data:{displayName:(n=e.displayName,il(n)?.trim()||"Codex account"),command:e.command??process.env.CODEX_COMMAND??"codex",args:vu(e.args??Zl()),defaultModel:Nu(e.defaultModel),defaultPermissionMode:Au(e.defaultPermissionMode),defaultReasoningEffort:Iu(e.defaultReasoningEffort),defaultServiceTier:ku(e.defaultServiceTier),environment:vu(e.environment)}});var n;return gu(t.id),t}({displayName:Ec(t.displayName,"displayName",{maxLength:128}),command:Ec(t.command,"command"),args:Tc(t.args,"args"),defaultModel:Ru(t.defaultModel,"defaultModel"),defaultPermissionMode:Ru(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Ru(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Ru(t.defaultServiceTier,"defaultServiceTier"),environment:Sc(t.environment,"environment")}),{status:201})}catch(t){return Lc(t)}}function Ru(e,t){return null===e?null:Ec(e,t,{maxLength:128})}var $u=qn({loader:()=>qu});async function qu({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(){const e=await jc.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:bu(e.args),auth:au(e.id),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:sl(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return Lc(t)}}var _u=qn({action:()=>Uu});async function Uu({request:e}){try{Ac(e,["POST"]),await Gc(e);const t=await Cc(e);if(!Array.isArray(t.accounts))throw new Nc(400,"accounts must be an array.");return Ic(await async function(e){const t=e.accounts.map(yu),n=[];for(const s of t){const e=s.id?await jc.codexAccount.findUnique({where:{id:s.id}}):null;if(e){dl.stopRuntime(e.id);const t=await jc.codexAccount.update({where:{id:e.id},data:wu(s)});ru(t.id,s.auth),n.push(t);continue}const t=await jc.codexAccount.create({data:{...s.id?{id:s.id}:{},...wu(s)}});ru(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 Hl(s.id));const r=await jc.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=>xu(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return Lc(t)}}var Ou=qn({action:()=>zu,loader:()=>ju});async function ju({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Bl())}catch(t){return Lc(t)}}async function zu({request:e}){try{Ac(e,["PATCH"]),await Gc(e);const t=await Cc(e);if("string"!=typeof t.instructions)throw new Nc(400,"instructions is required.");return Ic(await Gl({instructions:t.instructions}))}catch(t){return Lc(t)}}var Fu=qn({action:()=>Bu});async function Bu({request:e}){try{return Ac(e,["POST"]),await Gc(e),Ic(await jl(),{status:201})}catch(t){return Lc(t)}}var Gu=An(Nn),Hu="127.0.0.1",Ku=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 Wu(){const e=await new Promise((e,t)=>{const n=kn();n.once("error",n=>{"EADDRINUSE"!==n.code?t(n):e(!0)}),n.listen({host:Hu,port:Ku},()=>{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:Hu,inUse:e,killable:t.some(e=>e.pid>0&&e.pid!==process.pid),killedProcessIds:n,port:Ku,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 Gu("netstat",["-ano","-p","tcp"]);return function(e){const t=[],n=new RegExp(`:${Ku}\\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 Vu(t)}(e)}catch{return[]}}();const e=await async function(){try{const{stdout:e}=await Gu("lsof",["-nP",`-iTCP:${Ku}`,"-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 Vu(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}();return e.length?e:async function(){try{const{stdout:e}=await Gu("ss",["-ltnp"]);return function(e){const t=[],n=new RegExp(`:${Ku}\\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 Vu(t.filter(e=>Number.isFinite(e.pid)))}(e)}catch{return[]}}()}():[])}async function Qu(){const e=await Wu();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 Nc(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(!Ju(r))throw new Nc(500,`Could not kill process ${i}: ${Xu(r)}`)}var a;return await(a=600,new Promise(e=>setTimeout(e,a))),{...await Wu(),killedProcessIds:n}}function Vu(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 Ju(e){return"object"==typeof e&&null!==e&&"code"in e&&"ESRCH"===e.code}function Xu(e){return e instanceof Error?e.message:"Unknown error"}var Yu=qn({action:()=>em,loader:()=>Zu});async function Zu({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Wu())}catch(t){return Lc(t)}}async function em({request:e}){try{return Ac(e,["POST"]),await Gc(e),Ic(await Qu())}catch(t){return Lc(t)}}var tm=qn({action:()=>nm});async function nm({request:e,params:t}){try{return Ac(e,["POST"]),await Gc(e),Ic(await zl(Dc(t,"accountId")))}catch(n){return Lc(n)}}var am=qn({action:()=>im,loader:()=>rm});async function rm({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Fl(Dc(t,"accountId")))}catch(n){return Lc(n)}}async function im({request:e,params:t}){try{await Gc(e);const n=Dc(t,"accountId");if("PATCH"===e.method){const t=await Cc(e);return Ic(await async function(e,t){return await Fl(e),dl.stopRuntime(e),jc.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:vu(t.args),environment:vu(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:Ec(t.displayName,"displayName",{maxLength:128}),command:Ec(t.command,"command"),args:Tc(t.args,"args"),environment:Sc(t.environment,"environment")}))}if("DELETE"===e.method)return Ic(await async function(e){const t=await Fl(e);return dl.stopRuntime(e),ul(e),jc.$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));kc(e.method)}catch(n){return Lc(n)}}var sm=qn({action:()=>om});async function om({request:e,params:t}){try{Ac(e,["PATCH"]),await Gc(e);const n=await Cc(e),a={defaultModel:dm(n.defaultModel,"defaultModel"),defaultPermissionMode:dm(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:dm(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:dm(n.defaultServiceTier,"defaultServiceTier")};return Ic(await async function(e,t){return await Fl(e),xu(await jc.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:Nu(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:Au(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:Iu(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:ku(t.defaultServiceTier)}}))}(Dc(t,"accountId"),a))}catch(n){return Lc(n)}}function dm(e,t){return null===e?null:Ec(e,t,{maxLength:128})}var cm=qn({action:()=>um,loader:()=>lm});async function lm({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(e){return await Fl(e),{...await Bl(),accountId:e}}(Dc(t,"accountId")))}catch(n){return Lc(n)}}async function um({request:e,params:t}){try{Ac(e,["PATCH"]),await Gc(e);const n=await Cc(e);if("string"!=typeof n.instructions)throw new Nc(400,"instructions is required.");return Ic(await async function(e,t){return await Fl(e),{...await Gl(t),accountId:e}}(Dc(t,"accountId"),{instructions:n.instructions}))}catch(n){return Lc(n)}}async function mm(e){const t=await hm(e);try{const n=await async function(e){return(await dl.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(gm(t));return await fm(e),n}catch(n){return pm(e,n)}}async function hm(e){const t=await jc.codexAccount.findUnique({where:{id:e}});if(!t)throw new Nc(404,"Account not found.");if("CONNECTED"!==t.status)throw new Nc("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 fm(e){if(function(e){return cl.has(e)}(e))throw new Nc(401,"Codex authentication token was invalidated. Re-authenticate this account.");if("INVALIDATED"===(await jc.codexAccount.findUnique({select:{status:!0},where:{id:e}}))?.status)throw new Nc(401,"Codex authentication token was invalidated. Re-authenticate this account.")}async function pm(e,t){if(t instanceof Nc)throw t;if(function(e){return ml(e instanceof Error?e.message:String(e??""))}(t))throw await ll(e,t),dl.stopRuntime(e),new Nc(401,"Codex authentication token was invalidated. Re-authenticate this account.");throw t}function gm(e){return{accountId:e.id,args:vm(e.args),command:e.command,environment:sl(e.environment),workingDirectory:null}}function vm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var wm=qn({loader:()=>xm});async function xm({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await mm(Dc(t,"accountId")))}catch(n){return Lc(n)}}var bm=qn({loader:()=>ym});async function ym({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(e){const t=await hm(e);try{const n=await fl(gm(t));return await fm(e),n}catch(n){return pm(e,n)}}(Dc(t,"accountId")))}catch(n){return Lc(n)}}var Nm=qn({action:()=>Im});async function Im({request:e,params:t}){try{Ac(e,["POST","DELETE"]),await Gc(e);const n=Dc(t,"accountId");return"DELETE"===e.method?Ic(await async function(e){const t=await Fl(e);return Ql(e),dl.stopRuntime(e),eu(e)?xu(await jc.codexAccount.update({where:{id:e},data:Vl(e)}),iu([t]).has(e)):"AUTHENTICATING"!==t.status?xu(t,iu([t]).has(e)):xu(await jc.codexAccount.update({where:{id:e},data:{status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}))}(n)):Ic(await Hl(n,function(e){const t=Ec(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new Nc(400,"mode must be browser or device.")}((await Cc(e)).mode)))}catch(n){return Lc(n)}}var km=qn({action:()=>Am});async function Am({request:e,params:t}){try{Ac(e,["POST"]),await Gc(e);const n=Ec((await Cc(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Ic(await Kl(Dc(t,"accountId"),n))}catch(n){return Lc(n)}}var Cm=globalThis,Em=new Map,Tm=new Map;async function Mm(e,t){const n=await kh(e);if(!n)return;const a=wn(gl(t),"sessions",Fh(n));if(bn(n)!==bn(a)){await async function(e){const t=function(e){const t=`${yn}sessions${yn}`,n=bn(e),a=n.lastIndexOf(t);return-1===a?null:wn(n.slice(0,a),"session_index.jsonl")}(e),n=bl();if(!t||bn(t)===bn(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 Sm(e){const t=await kh(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=Tm.get(a);if(r&&Ch(r,n))return r.value;const i=function(e,t,n){let a,r,i,s,o,d,c,l,u,m=0,h=0;const f=new Map,p=[],g=[],v=new Set;for(const y of e.split(/\r?\n/)){if(!y.trim())continue;m+=1;const e=$h(y);if(!e)continue;const w=qh(e.timestamp)??n;o=_h(o,w),d=Uh(d,w);const x=rl(e.payload);if("session_meta"===e.type&&x){a=il(x.id)??a,r=il(x.source)??r,i=il(x.originator)??i,s=il(x.cwd)??s,o=qh(x.timestamp)??o;continue}const b=il(x?.type);if("event_msg"===e.type&&"task_started"===b&&(h+=1,u=nh(x)??ah(a,t,h),l=u,c=qh(x?.started_at)??qh(x?.startedAt)??w),"response_item"===e.type&&"function_call_output"===b){const e=th(x??{});e&&f.set(e,{output:Vm(x?.output),timestamp:w})}if("turn_context"===e.type&&x){s=il(x.cwd)??s;continue}const N={originator:i,path:t,sessionId:a,source:r,suppressedToolOutputCallIds:v,turnId:nh(x)??u},I=Rm(e,w,N);if(I){p.push({...I,order:m});continue}const k=qm(e,w,N);if(k&&g.push({...k,order:m}),"event_msg"===e.type&&"task_complete"===b){const e=nh(x);e&&e!==l||(c=void 0,l=void 0),u=void 0}}const w=function(e,t){if(!e.length)return t.sort(Wm).map(Qm);const n=[...e];for(const a of t){if("SYSTEM"===a.role){n.some(e=>Hm(e,a))||n.push(a);continue}const e=n.findIndex(e=>Km(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(Wm).map(Qm)}(function(e,t){return e.map(e=>{if("USER_INPUT_PROMPT"!==e.kind||!e.requestId||"PENDING"!==e.status)return e;const n=t.get(e.requestId);return n?{...e,completedAt:n.timestamp,metadata:{...e.metadata,resolvedAt:n.timestamp.toISOString(),result:_m(n.output),status:"resolved"},status:"COMPLETED"}:e})}(p,f),g),x=a??Oh(t);if(!x||!w.length&&!l)return null;const b=jh(w.find(e=>"USER"===e.role)?.content??"")??jh(w[0]?.content??"")??"Imported Codex chat";return{activeStartedAt:c,activeTurnId:l,createdAt:o??n,externalThreadId:x,messages:w,originator:i,path:t,source:r,status:l?"RUNNING":"IDLE",title:b,updatedAt:d??n,workingDirectory:s}}(await Pn(e,"utf8"),e,new Date(n.mtimeMs)),s=i?.externalThreadId===t?i:null;return Eh(Tm,a,n,s),s}catch{return null}}(t,e):null}async function Pm(e){const t=await Sm(e);return t?{activeStartedAt:t.activeStartedAt,activeTurnId:t.activeTurnId,status:t.status}:null}async function Dm(e){const t=await kh(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=Em.get(a);if(r&&Ch(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=$h(t);if(!e)continue;"session_meta"===e.type&&(i=il(rl(e.payload)?.id)??i);const n=Mh(e);n&&(s=n)}const o=(i??Oh(e))===t?s:null;return Eh(Em,a,n,o),o}catch{return null}}(t,e):null}async function Lm(e){const t=await mh(e);return t?xh(t,(await async function(e){return(await ch()).get(e)??null}(e))?.title??null):null}function Rm(e,t,n){if("response_item"!==e.type)return null;const a=rl(e.payload),r=il(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?rh(e.text,e):"string"==typeof e.message?rh(e.message,e):"string"==typeof e.content?rh(e.content,e):Array.isArray(e.content)?rh(e.content.map(e=>{if("string"==typeof e)return e;const t=rl(e);return t?"string"==typeof t.text?t.text:sh(t)??"":""}).join(""),e):rh("",e)}(t);return!s.trim()||Fm(s)?null:{content:s,createdAt:n,itemId:Zm(t),metadata:Bm(t,a),rawPayload:Gm(e,t),role:r,turnId:a.turnId}}(e,a,t,n):"reasoning"===r?function(e,t,n,a){const r=function(e){return[Jm(e.summary),Jm(e.content),il(e.summary),il(e.text)].filter(e=>!!e?.trim()).join("\n\n")}(t);return r.trim()?{content:r,createdAt:n,itemId:Zm(t),kind:"THINKING",metadata:{...Bm(t,a),responseItemType:il(t.type)},rawPayload:Gm(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=il(t.type)??"tool_call",i=il(t.name)??r.replaceAll("_"," ");if("function_call"===r&&"update_plan"===i)return function(e,t,n,a){const r=th(t);r&&a.suppressedToolOutputCallIds?.add(r);const i=Xm(t.arguments)??{},s=(Array.isArray(i.plan)?i.plan:[]).map(e=>rl(e)).filter(e=>!!e).map(e=>({status:il(e.status)??"pending",step:il(e.step)??""})).filter(e=>e.step),o=il(i.explanation),d=o??s.map(e=>e.step).join("\n");return d.trim()||s.length?{completedAt:n,content:d,createdAt:n,itemId:Zm(t)??`plan:${a.turnId??n.getTime()}`,kind:"PLAN",metadata:{...Bm(t,a),explanation:o,kind:"plan",presentation:"progress",responseItemType:il(t.type),status:il(t.status)??"completed",steps:s,toolName:"update_plan"},rawPayload:Gm(e,t),role:"SYSTEM",status:"COMPLETED",turnId:a.turnId}:null}(e,t,n,a);if("function_call"===r&&"request_user_input"===i)return function(e,t,n,a){const r=th(t);if(!r)return null;a.suppressedToolOutputCallIds?.add(r);const i=Xm(t.arguments)??{},s=il(i.message)??"Codex needs more information before it can continue.";return{completedAt:null,content:s,createdAt:n,itemId:Zm(t),kind:"USER_INPUT_PROMPT",metadata:{...Bm(t,a),kind:"userInput",message:s,method:"request_user_input",mode:il(i.mode),questions:Om(i.questions),requestId:r,status:"pending",toolName:"request_user_input"},rawPayload:Gm(e,t),requestId:r,role:"SYSTEM",status:"PENDING",turnId:a.turnId}}(e,t,n,a);if("web_search_call"===r)return $m(e,t,n,a,Ym(t),"webSearch");if("image_generation_call"===r)return $m(e,t,n,a,"Image generation","imageGeneration");const s=Xm(t.arguments),o=function(e,t){const n=rl(e.action);return il(t?.cmd)??il(t?.command)??il(n?.command)??il(n?.cmd)}(t,s);return function(e,t){return"local_shell_call"===e||["exec_command","shell_command","write_stdin"].includes(t)}(r,i)?{content:o??i,createdAt:n,itemId:Zm(t),kind:"COMMAND_EXECUTION",metadata:{...Bm(t,a),callId:th(t),command:o??i,cwd:il(s?.cwd)??il(s?.workdir)??il(rl(t.action)?.cwd),kind:"command",status:il(t.status)??"completed"},rawPayload:Gm(e,t),role:"SYSTEM",turnId:a.turnId}:$m(e,t,n,a,i,"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=th(t);if(r&&a.suppressedToolOutputCallIds?.has(r))return null;const i=Vm(t.output);return i.trim()?{content:i,createdAt:n,itemId:eh(t),kind:"TOOL_ACTIVITY",metadata:{...Bm(t,a),callId:th(t),kind:"localCodexToolOutput",responseItemType:il(t.type),status:il(t.status)??"completed",toolName:il(t.name)},rawPayload:Gm(e,t),role:"SYSTEM",turnId:a.turnId}:null}(e,a,t,n):"compaction"===r||"context_compaction"===r?$m(e,a,t,n,zm(r),"contextCompaction"):null:null}function $m(e,t,n,a,r,i){return r.trim()?{content:r,createdAt:n,itemId:Zm(t),kind:"TOOL_ACTIVITY",metadata:{...Bm(t,a),eventKind:i,responseItemType:il(t.type),status:il(t.status)},rawPayload:Gm(e,t),role:"SYSTEM",turnId:a.turnId}:null}function qm(e,t,n){if("event_msg"!==e.type)return null;const a=rl(e.payload);if(!a)return null;const r=il(a.type);if("patch_apply_end"===r)return function(e,t,n,a){const r=rl(t.changes),i=r?Object.keys(r):[],s=il(t.status)??(!1===t.success?"failed":"completed");return i.length?{content:i.join("\n"),createdAt:n,itemId:Zm(t)??`patch:${a.turnId??n.getTime()}`,kind:"FILE_CHANGE",metadata:{...Bm(t,a),additions:0,deletions:0,kind:"fileChange",paths:i,status:s},rawPayload:Gm(e,t),role:"SYSTEM",turnId:a.turnId}:$m(e,t,n,a,il(t.stderr)??il(t.stdout)??"Patch applied","patchApply")}(e,a,t,n);if("web_search_end"===r)return $m(e,a,t,n,Ym(a),"webSearch");if("task_complete"===r){const r=il(a.last_agent_message)??"";return!r.trim()||Fm(r)?null:{content:r,createdAt:t,itemId:Zm(a)??`task-complete:${n.turnId??t.getTime()}`,metadata:{...Bm(a,n),eventKind:"taskComplete"},rawPayload:Gm(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?zm(r):"string"==typeof a.message?rh(a.message,a):"";return!s.trim()||Fm(s)?null:{content:s,createdAt:t,itemId:Zm(a),kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...Bm(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:Gm(e,a),role:i,turnId:n.turnId}}function _m(e){const t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return t}}function Um(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e&&e.trim()){const t=Number(e);return Number.isFinite(t)?t:void 0}}function Om(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e).map((e,t)=>({header:il(e.header),id:il(e.id)??`question-${t+1}`,isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:jm(e.options),question:il(e.question)??il(e.header)??"Answer",selectionLimit:Um(e.selectionLimit)??Um(e.selection_limit)})):[]}function jm(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e).map(e=>({description:il(e.description),label:il(e.label)??il(e.value)??""})).filter(e=>e.label):[]}function zm(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 Fm(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function Bm(e,t){return{kind:"localCodexImport",originator:t.originator,phase:il(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:il(e.type),turnId:t.turnId}}function Gm(e,t){return{payload:{callId:th(t),id:il(t.id),name:il(t.name),phase:il(t.phase),role:il(t.role),status:il(t.status),type:il(t.type)},timestamp:il(e.timestamp),type:il(e.type)}}function Hm(e,t){const n=il(rl(e.metadata)?.eventKind),a=il(rl(t.metadata)?.eventKind);return!!n&&n===a&&Km(e,t)}function Km(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 Wm(e,t){return e.order-t.order}function Qm({order:e,...t}){return t}function Vm(e){return"string"==typeof e?e:Jm(e)??""}function Jm(e){if(Array.isArray(e))return e.map(e=>{if("string"==typeof e)return e;const t=rl(e);return il(t?.text)??sh(t)??""}).filter(Boolean).join("\n")||void 0}function Xm(e){if("string"==typeof e)try{return rl(JSON.parse(e))}catch{return}return rl(e)}function Ym(e){const t=rl(e.action),n=il(e.query)??il(t?.query)??il(t?.pattern)??il(t?.url);return n?`Web search: ${n}`:"Web search"}function Zm(e){return il(e.id)??th(e)}function eh(e){const t=th(e);return t?`${t}:output`:Zm(e)}function th(e){return il(e.call_id)??il(e.callId)}function nh(e){return il(e?.turn_id)??il(e?.turnId)}function ah(e,t,n){return`${e??Oh(t)??fn(t)}:turn:${n}`}function rh(e,t){return[e,...ih(t.images),...ih(t.local_images),...ih(t.localImages)].filter(Boolean).join("\n\n")}function ih(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?oh(e):sh(rl(e))).filter(e=>!!e):[]}function sh(e){return e?oh(il(e.url)??il(e.image_url)??il(e.path)??il(e.filePath)):null}function oh(e){const t=e?.trim();return t?`<image>${t}</image>`:null}async function dh(e){try{return function(e){const t=new Map;for(const n of e.split(/\r?\n/)){if(!n.trim())continue;const e=$h(n);if(!e)continue;const a=il(e.id)??il(e.thread_id)??il(e.threadId)??il(e.session_id)??il(e.sessionId);if(!a)continue;const r=lh(il(e.thread_name)??il(e.threadName)??il(e.name)??il(e.title)),i=qh(e.updated_at)??qh(e.updatedAt)??qh(e.modified_at)??qh(e.modifiedAt)??null,s=t.get(a);t.set(a,{title:r??s?.title??null,updatedAt:i??s?.updatedAt??null})}return t}(await Pn(e,"utf8"))}catch{return new Map}}async function ch(){return dh(bl())}function lh(e,t={}){const n=e?.replace(/\s+/g," ").trim();return!n||Fm(n)||!t.allowGeneric&&function(e){const t=zh(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 uh(e){const t=await wh();if(!t)return[];try{const n=await hh(t);return await t.$queryRawUnsafe(`\n SELECT ${fh(n)}\n FROM threads\n ${function(e){return e.has("archived")?"WHERE COALESCE(archived, 0) = 0":""}(n)}\n ORDER BY ${vh(n)} DESC\n LIMIT ?\n `,e)}catch(n){return console.warn("Failed to read root Codex thread database.",n instanceof Error?n.message:n),[]}}async function mh(e){const t=await wh();if(!t)return null;try{const n=await hh(t);return(await t.$queryRawUnsafe(`\n SELECT ${fh(n)}\n FROM threads\n WHERE id = ?\n LIMIT 1\n `,e))[0]??null}catch{return null}}async function hh(e){const t=await e.$queryRawUnsafe("PRAGMA table_info(threads)");return new Set(t.map(e=>e.name))}function fh(e){return[ph(e,"id"),ph(e,"rollout_path","rolloutPath"),gh(e,e.has("created_at_ms")?"created_at_ms":"created_at","createdAt"),gh(e,vh(e),"updatedAt"),ph(e,"cwd"),ph(e,"title"),ph(e,"first_user_message","firstUserMessage"),ph(e,"preview"),ph(e,"archived"),ph(e,"archived_at","archivedAt")].join(",\n ")}function ph(e,t,n){return e.has(t)?`${t}${n?` AS ${n}`:""}`:`NULL AS ${n??t}`}function gh(e,t,n){return e.has(t)?`CAST(${t} AS TEXT) AS ${n}`:`NULL AS ${n}`}function vh(e){return e.has("updated_at_ms")?"updated_at_ms":e.has("updated_at")?"updated_at":"rowid"}async function wh(){const e=yl();try{await Cn(e,Xt.R_OK)}catch{return null}return Cm.codexStatePrisma&&Cm.codexStateDatabasePath===e||(await(Cm.codexStatePrisma?.$disconnect().catch(()=>{})),Cm.codexStateDatabasePath=e,Cm.codexStatePrisma=new Wt({datasources:{db:{url:Nh(e)}}})),Cm.codexStatePrisma}function xh(e,t){const n=new Date(0),a=yh(e.updatedAt,n),r=yh(e.createdAt,a),i=Ih(e.rolloutPath)[0]??"",s=lh(e.firstUserMessage,{allowGeneric:!0}),o=lh(e.preview,{allowGeneric:!0});return{createdAt:r,externalThreadId:e.id,firstUserMessage:s,path:i,preview:o,title:bh(e,s,o,t),updatedAt:a,workingDirectory:e.cwd??void 0}}function bh(e,t,n,a){const r=lh(e.title,{allowGeneric:!1});return(!r||(s=t,(i=r)&&s&&zh(i)===zh(s))?null:r)??lh(a,{allowGeneric:!1})??jh(t??"")??jh(n??"")??null;var i,s}function yh(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 Nh(e){return`file:${e}?connection_limit=1&pool_timeout=30`}function Ih(e){const t=e?.trim();if(!t)return[];const n=wn(vl(),"sessions",Fh(t));return[...new Set([t,n])]}async function kh(e){const t=await mh(e);for(const n of Ih(t?.rolloutPath))try{return await Cn(n,Xt.R_OK),n}catch{}return null}function Ah(){return Th("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function Ch(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}function Eh(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 Th(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Mh(e){const t=Sh(e);if(!t)return null;const n=rl(t.params),a=rl(t.info)??rl(n?.info)??n??t;return function(e,t=e){const n=Dh(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Dh(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Dh(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}([Dh(e,["input_tokens","inputTokens"]),Dh(e,["output_tokens","outputTokens"]),Dh(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}}(Ph(a,["last_token_usage","lastTokenUsage"])??Ph(a,["total_token_usage","totalTokenUsage"])??a,a)}function Sh(e,t=0){if(t>4)return;const n=rl(e);if(!n)return;const a=Rh(il(n.type)??""),r=Rh(il(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Sh(n[i],t+1);if(e)return e}}function Ph(e,t){for(const n of t){const t=rl(e[n]);if(t)return t}}function Dh(e,t){for(const n of t){const t=Lh(e[n]);if(void 0!==t)return t}}function Lh(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 Rh(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function $h(e){try{return rl(JSON.parse(e))??null}catch{return null}}function qh(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function _h(e,t){return!e||t<e?t:e}function Uh(e,t){return!e||t>e?t:e}function Oh(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function jh(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 zh(e){return e.replace(/\s+/g," ").trim().toLowerCase()}function Fh(e){const t=`${yn}sessions${yn}`,n=e.lastIndexOf(t);return-1===n?fn(e):e.slice(n+t.length)}var Bh="__xedocRealtimeState__";function Gh(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[Bh]??={handlers:new Set},e[Bh]}().handlers)r(a)}var Hh=null;async function Kh(){Hh??=async function(){await jc.$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 jc.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_accountId_idx" ON "ThreadPreference"("accountId")'),await jc.$executeRawUnsafe('CREATE INDEX IF NOT EXISTS "ThreadPreference_archivedAt_idx" ON "ThreadPreference"("archivedAt")')}().then(()=>jc.$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 Hh}async function Wh(){return await Kh(),jc.threadPreference.findMany()}async function Qh(e){return await Kh(),jc.threadPreference.findUnique({where:{threadId:e}})}async function Vh(e,t){await Kh();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 jc.threadPreference.upsert({where:{threadId:e},create:{threadId:e,...n,updatedAt:new Date},update:n})}async function Jh(e){const[t,n]=await Promise.all([Lm(e),Qh(e)]);return t?.workingDirectory??n?.workingDirectory??null}function Xh(e){return"fullAccess"===e?"fullAccess":"default"}async function Yh(e){const t=tf(),n=nf(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:af(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 Zh(e,t){const n=tf(),a=bn(nf(n,e),function(e){const t=e.trim();if(!t)throw new Nc(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Nc(400,"Folder name must be a single folder name.");return t}(t)),r=xn(n,a);if(r.startsWith("..")||vn(r))throw new Nc(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 Nc(409,"Folder already exists.");throw i}return Yh(a)}function ef(e){return nf(tf(),e)}function tf(){const e=function(e){return"~"===e?hn():e.startsWith("~/")?wn(hn(),e.slice(2)):bn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Zt(e)||tn(e,{recursive:!0}),on(e)}function nf(e,t){const n=t?.trim(),a=n?vn(n)?n:wn(e,n):e;let r;try{r=on(bn(a))}catch{throw new Nc(400,"Workspace path does not exist.")}const i=xn(e,r);if(i.startsWith("..")||vn(i))throw new Nc(403,"Path is outside the workspace root.");if(!ln(r).isDirectory())throw new Nc(400,"Workspace path is not a directory.");return r}function af(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var rf=1e6;async function sf(e,t,n){const a=await Jh(e);if(!a)throw new Nc(400,"Chat does not have a working directory.");const r=ef(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 of(r,i.path),o=await df(s,r),d=n??i.line??null,c=Math.min(o.size,rf),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:cf(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>rf}}async function of(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Nc(400,"File path is required.");const a=await Ln(e),r=vn(n)?n:bn(a,n);let i;try{i=await Ln(r)}catch{throw new Nc(404,"File does not exist.")}return function(e,t){const n=xn(e,t);if(n.startsWith("..")||vn(n))throw new Nc(403,"Path is outside the chat working directory.")}(a,i),i}async function df(e,t){const n=await Rn(e);if(!n.isFile())throw new Nc(400,"Workspace path is not a file.");const a=t?await Ln(t):null;return{name:fn(e),path:e,relativePath:a&&xn(a,e)||fn(e),size:n.size}}function cf(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 lf=new Map,uf=new Map,mf=new Map,hf=new Map,ff=new Map,pf=new Map,gf="New Thread";async function vf(e){const t=await Qh(e),n=await Cf(e);if(!n&&!uf.has(e))throw new Nc(404,"Chat not found.");return Tf(e,t,n,{includeExternalActivity:!0})}async function wf(e,t){const n=await vf(e);if("RUNNING"===n.status){if(void 0!==t.accountId&&t.accountId!==n.accountId)throw new Nc(400,"Wait for the current run to finish before switching accounts.");if(void 0!==t.collaborationMode&&ng(t.collaborationMode)!==n.collaborationMode)throw new Nc(400,"Wait for the current run to finish before changing modes.");if(void 0!==t.workingDirectory)throw new Nc(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 kf(t)).id}(n.accountId,t.accountId);if(uf.get(e)?.primed&&void 0!==a&&a!==n.accountId)throw new Nc(400,"Send the first message before switching accounts on this chat.");const r=void 0===t.collaborationMode?void 0:ng(t.collaborationMode),i=void 0===t.permissionMode?void 0:ag(t.permissionMode),s=void 0===t.title?void 0:sg(t.title)??"Untitled chat",o=void 0===t.workingDirectory?void 0:ef(t.workingDirectory),d=await Vh(e,{accountId:a,autoRotateAccount:t.autoRotateAccount,collaborationMode:r,model:void 0===t.model?void 0:Zp(t.model),permissionMode:i,reasoningEffort:void 0===t.reasoningEffort?void 0:eg(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:tg(t.serviceTier),title:s,workingDirectory:o});if(a&&Mm(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 jc.codexAccount.findUnique({where:{id:t.accountId}});if(!a||"CONNECTED"!==a.status)return;await pg(ug(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=uf.get(e);t&&(t.permissionMode=i),"fullAccess"===i&&await async function(e){const t=[...lf.values()].filter(t=>t.threadId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=Kp(t);n.runtime.respondToServerRequest(n.rpcId,a),lf.delete(Wp(e,n.requestId));const r=$f(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&&cg(e,"message.updated",r)}}(e)}const c=await Tf(e,d);return cg(e,"chat.updated",c),c}async function xf(e){await vf(e);const t=await Tf(e,await async function(e){return Vh(e,{archivedAt:new Date})}(e));return cg(e,"chat.updated",t),t}async function bf(e,t=0,n=50){const a=await vf(e),r=Math.min(Math.max(n,1),200),i=(await async function(e){const t=await Sm(e);return t?t.messages.map(e=>function(e){return{completedAt:void 0===e.completedAt?e.createdAt:e.completedAt,content:e.content,createdAt:e.createdAt,itemId:e.itemId,kind:e.kind,metadata:e.metadata,rawPayload:e.rawPayload,requestId:e.requestId,role:e.role,source:"session",status:e.status,turnId:e.turnId}}(e)):[]}(e)).map((t,n)=>function(e,t,n,a,r){const i=n.createdAt??t.createdAt;return{chatId:e,completedAt:void 0===n.completedAt?n.createdAt??i:n.completedAt,content:n.content,createdAt:i,id:Mf(e,n,a),itemId:n.itemId??null,kind:n.kind??"CHAT",metadata:n.metadata?Xp(n.metadata):Sf(n),rawPayload:Xp(n.rawPayload??null),requestId:n.requestId??null,role:n.role,runId:null,sequence:r,status:n.status??"COMPLETED",turnId:n.turnId??null}}(e,a,t,n,n+1)),s=function(e,t){const n=uf.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&&qf(e.content)===qf(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 yf(e,t,n){await vf(e);const a=Wp(e,t),r=lf.get(a);if(!r)throw new Nc(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Nc(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Nc(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Nc(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),lf.delete(a);const s=$f(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 Nc(410,"Server request is no longer active.");return cg(e,"message.updated",s),s}async function Nf(e,t){let n=await vf(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Nc(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await Of(n));const a=t.accountId??n.accountId;if(!a)throw new Nc(400,"Choose a Codex account before sending messages.");const r=await kf(a);if(!n.workingDirectory)throw new Nc(400,"Select a working directory before sending messages.");const i=ef(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new Nc(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 Nc(400,"Attachment kind is invalid.");n.push(await Gf(e,a))}else n.push(Bf(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 Nc(400,"Message content or an attachment is required.");const d=void 0===t.collaborationMode?void 0:ng(t.collaborationMode),c=d??n.collaborationMode,l=n.permissionMode,u=new Date,m=await Df(e);if("RUNNING"===n.status&&"RUNNING"!==m.status&&"QUEUED"!==m.status)throw new Nc(409,"This Codex thread is active in another client. Wait for that turn to finish before sending from the web UI.");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=uf.get(o);if(!d?.runtime)throw new Nc(409,"The active turn is not ready for steering yet.");const c=d.turnId??await Zf(d.runtime,o);if(!c)throw new Nc(409,"The active turn has not published a turn id yet.");const l=await Qh(o),u=await hp(d.runtime,l?.model??null,l?.reasoningEffort??null);d.turnId=xp(await Xf(d.runtime,{expectedTurnId:c,threadId:o,...up(n,u)},a,t))??c;const m=Rf(o,{completedAt:s,content:r,metadata:Wf({...i,delivery:"steer",steeredAt:s.toISOString()},t),role:"USER",status:"COMPLETED"});return cg(o,"chat.updated",await vf(o)),cg(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=Rf(c,{completedAt:d,content:i,metadata:Wf({...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}),cg(c,"chat.updated",await vf(c)),cg(c,"message.created",m),{message:m,assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:await Qf(n,Kf(t.content,s)),collaborationMode:c,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:l,queuedAt:u,threadId:e,workingDirectory:i});const h=Rf(e,{completedAt:u,content:o,metadata:Wf(t.metadata,s),role:"USER",status:"COMPLETED"});cg(e,"message.created",h);const f=await _f({account:r,attachments:s,automaticTitleSeed:await Qf(n,Kf(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 If(e){const t=uf.get(e)?.status;return"RUNNING"===t||"QUEUED"===t?"RUNNING":"IDLE"}async function kf(e){const t=await jc.codexAccount.findUnique({where:{id:e}});if(!t)throw new Nc(400,"Account not found.");if("CONNECTED"!==t.status)throw new Nc(400,"Authenticate the account before using this chat.");return t}async function Af(){const e=await async function(){const[e,t]=await Promise.all([uh(Th("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3)),ch()]);return e.map(e=>xh(e,t.get(e.id)?.title??null)).sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime())}(),t=new Map;for(const n of e)t.set(n.externalThreadId,Ef(n));return await Promise.all(e.slice(0,8).map(async e=>{const n=await Pm(e.externalThreadId),a=t.get(e.externalThreadId);a&&"RUNNING"===n?.status&&(a.status="RUNNING")})),t}async function Cf(e){const t=await Lm(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 Ef(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 Tf(e,t,n,a={}){const r=void 0===n?await Cf(e):n,i=uf.get(e),s=a.includeExternalActivity?await Pm(e):null,o="RUNNING"===i?.status||"QUEUED"===i?.status||"RUNNING"===r?.status||"RUNNING"===s?.status,d=function(e){return{accountId:e?.accountId??null,autoRotateAccount:e?.autoRotateAccount??!1,collaborationMode:(t=e?.collaborationMode,"plan"===t?"plan":"default"),model:e?.model??null,permissionMode:Xh(e?.permissionMode),reasoningEffort:e?.reasoningEffort??null,serviceTier:e?.serviceTier??null,workingDirectory:e?.workingDirectory??null};var t}(t),c=t?.createdAt??r?.createdAt??i?.updatedAt??new Date,l=i?.updatedAt??r?.updatedAt??t?.updatedAt??c,u=function({preferenceTitle:e,preview:t,seed:n,snapshotTitle:a}){for(const r of[e,a]){const e=sg(r??"");if(e&&!og(e))return e}return dg(n??"")??dg(t??"")??gf}({preferenceTitle:t?.title,preview:r?.preview,seed:(m=i?.messages??[],[...m].reverse().find(e=>"USER"===e.role&&e.content.trim())?.content??null??r?.firstUserMessage??null),snapshotTitle:r?.title});var m;return{...d,id:e,externalThreadId:e,lastActivityAt:l,status:t?.archivedAt?"ARCHIVED":o?"RUNNING":"IDLE",title:u,workingDirectory:r?.workingDirectory??d.workingDirectory,createdAt:c,updatedAt:l}}function Mf(e,t,n){return["codex",e,t.turnId??"turn",t.itemId??n,t.role.toLowerCase()].join(":")}function Sf(e){return{kind:"codexTranscript",source:e.source}}function Pf(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=rl(e);return Yp(t?.text)??Yp(t?.content)??Yp(t?.message)??function(e){return e?function(e){const t=e?.trim();return t?`<image>${t}</image>`:null}(il(e.url)??il(e.image_url)??il(e.path)??il(e.filePath)):null}(t)??""}).join("");return t.length?t:void 0}async function Df(e){const t=uf.get(e);if(t)return t;const n=(await Sm(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 uf.set(e,a),a}function Lf(e){const t=uf.get(e);if(!t)throw new Error(`Missing runtime state for ${e}.`);return t}function Rf(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?Xp(t.metadata):null,rawPayload:t.rawPayload?Xp(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 $f(e,t,n){const a=uf.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?Xp(n.metadata):n.metadataPatch?{...rl(i.metadata)??{},...n.metadataPatch}:i.metadata,rawPayload:void 0!==n.rawPayload?Xp(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 qf(e){return e.replace(/\s+/g," ").trim()}async function _f({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 Df(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 Vh(c,{collaborationMode:o});const h=Rf(c,{content:"",kind:"CHAT",role:"ASSISTANT",runId:m,status:"PENDING"});return cg(c,"chat.updated",await vf(c)),cg(c,"message.created",h),cg(c,"run.status",{runId:m,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(function(e,t){const n=mf.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);mf.set(e,i),n.catch(()=>{}).then(t).finally(()=>{a(),mf.get(e)===i&&mf.delete(e)})})(a.id,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=Lf(e),u=await Qh(e),m=(p=u?.permissionMode,"fullAccess"===p?"fullAccess":"default"),h=ug(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=$f(e,n,{status:"STREAMING"});g&&cg(e,"message.updated",g);cg(e,"chat.updated",await vf(e)),cg(e,"run.status",{runId:t,status:"RUNNING"}),await Mm(e,a.id);let v="";const w=new Map;let x,b=!1,y=null,N=null;const I=l.runtime.onEvent(a=>{(function(e,t,n){const a=yp(e);if(t&&a&&a!==t)return!1;const r=Np(e);return!n||!r||r===n})(a,e,x)&&Vf(t,()=>async function(e,t){const n=function(e){const t=Op(e);if(t){const e=rl(t.params),n=rl(t.info)??rl(e?.info)??e??t;return Up(jp(n,["last_token_usage","lastTokenUsage"])??jp(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=rl(e.params),a=rl(n?.event),r=rl(n?.usage)??rl(a?.usage)??(_p(e.method)?n:void 0);return r?Up(r):null}(t);n&&cg(e.threadId,"context.updated",n);if(function(e){return!!Op(e)||_p(e.method)}(t))return;if(function(e){const t=rl(e.params),n=rl(t?.payload)??rl(t?.event);return[e.method,il(t?.type),il(n?.type),il(n?.event)].some(e=>Tp(e??"").includes("compact"))}(t))return void(await fp({completedAt:new Date,content:$p(t),itemId:`context-compaction:${Np(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:qp(t)?"STREAMING":"COMPLETED",threadId:e.threadId,turnId:Np(t)}));const a=t.method??"",r=rl(t.params),i=kp(t),s=Tp(il(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=rl(e.params),n=rl(e.result),a=rl(t?.event);return hg(t)??hg(a)??hg(n)}(t);return void(n&&await gg(e.threadId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=Yp(r?.delta)??Yp(rl(r?.event)?.delta);if(!n)return;const a=Ip(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await fp({content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:il(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:Np(t)});return void cg(e.threadId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&Mp(s))return void(await fp({content:"",fallbackMessageId:e.assistantMessageId,itemId:Ip(t),kind:"CHAT",metadata:{kind:"assistant",phase:il(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",threadId:e.threadId,turnId:Np(t)}));if("item/completed"===a&&Mp(s)){const n=function(e){if(!e)return"";const t=Yp(e.text)??Yp(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>Yp(rl(e)?.text)??"").filter(Boolean).join("")}(i)||wp(t);if(!n)return;const a=Ip(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await fp({completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:il(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",threadId:e.threadId,turnId:Np(t)}))}if(a.startsWith("item/reasoning/")||Tp(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=Ip(t)??`${n.toLowerCase()}:${Np(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 fp({content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:Sp(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Np(t)})}(e,t,"THINKING",{content:Cp(t,i),delta:Ap(t),metadata:{kind:"thinking",status:Dp(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=rl(t.params)??{},a="item/plan/delta"===t.method?Ap(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>rl(e)).filter(e=>!!e).map(e=>({status:il(e.status)??"pending",step:il(e.step)??""})).filter(e=>e.step),i=il(n.explanation),s=Np(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:Ip(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 fp({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=rl(t.params)??{},r=n??a,i=Ip(t)??`command:${Np(t)??"turn"}`,s=`COMMAND:${i}`,o=Ap(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:Yp(r.output)??Yp(r.aggregatedOutput)??Yp(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=il(r.command)??il(a.command)??"command",l=Dp(r,t.method??"");await fp({completedAt:Sp(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Vp(r.actions)??Vp(r.commandActions),command:c,cwd:il(r.cwd)??il(a.cwd),durationMs:Jp(r.durationMs)??Jp(r.duration_ms),exitCode:Jp(r.exitCode)??Jp(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":Sp(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Np(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=rl(t.params)??{},r=n??a,i=Ip(t)??`file-change:${Np(t)??"turn"}`,s=Lp(r)??Lp(a),o=Vp(r.changes)??Vp(a.changes)??[],d=function(e,t){const n=[il(e.path),il(e.filePath),il(e.file_path),...t.flatMap(e=>{const t=rl(e);return[il(t?.path),il(t?.filePath),il(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await fp({content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Jp(r.additions)??Rp(s,"+"),changes:o,deletions:Jp(r.deletions)??Rp(s,"-"),diff:s,kind:"fileChange",paths:d,status:Dp(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Sp(t)?"COMPLETED":"STREAMING",threadId:e.threadId,turnId:Np(t)})}(e,t,i));if("serverRequest/resolved"===a)return void function(e,t){const n=rl(t.params)??{},a=il(n.requestId)??il(n.id);if(!a)return;lf.delete(Wp(e,a));const r=uf.get(e)?.messages.find(e=>e.requestId===a);if(!r)return;const i=$f(e,r.id,{completedAt:new Date,metadataPatch:{resolvedAt:(new Date).toISOString(),result:void 0===n.result?null:Xp(n.result),status:"resolved"},status:"COMPLETED"});i&&cg(e,"message.updated",i)}(e.threadId,t);("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=rl(t.params),a=il(rl(n?.error)?.message)??il(n?.message)??t.error?.message??"Codex runtime error.";await fp({completedAt:new Date,content:a,itemId:`error:${Np(t)??Date.now()}`,kind:"ERROR",metadata:{details:Xp(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",threadId:e.threadId,turnId:Np(t)})}(e,t)}({assistantMessageId:n,onAssistantContent:e=>{v=e},runId:t,streamBuffers:w,threadId:e},a)).catch(e=>lg("Codex event projection failed.",e))}),k=l.runtime.onServerRequest(n=>{(function(e,t,n){const a=rl(e.params),r=il(a?.threadId);if(t&&r&&r!==t)return!1;const i=il(a?.turnId);return!n||!i||i===n})(n,e,x)&&Vf(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=rl(t.params)??{},r=Nl(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:il(n.message),method:e,mode:il(n.mode),questions:Bp(n.questions),raw:Xp(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Vp(n.availableDecisions),changes:Vp(n.changes),command:il(n.command),cwd:il(n.cwd),itemId:il(n.itemId),kind:a,method:e,raw:Xp(r),reason:il(n.reason)??il(n.message),requestId:t,requestKind:a,status:"pending",turnId:il(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=Kp(i);return e.runtime.respondToServerRequest(t.id,n),void(await fp({completedAt:new Date,content:Hp(s),itemId:il(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:il(a.turnId)}))}const o=await fp({content:Hp(s),itemId:il(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:il(a.turnId)});lf.set(Wp(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=>lg("Codex server request projection failed.",e))});try{if(!f&&await cp(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=dg(r);(async()=>{i&&await fg(t,a,i);const n=await async function(e,{cwd:t,seed:n}){try{const a=rl((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return sg(il(a?.name)??il(a?.threadName)??il(a?.thread_name)??il(a?.title)??"")}catch{return null}}(t,{cwd:e,seed:r});n&&await fg(t,a,n)})().catch(()=>{})}({cwd:o,runtime:l.runtime,seed:c,threadId:e});const h=await hp(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)&&yp(t)===e&&(!x||Np(t)===x),6e5,y.signal);const p=await async function(e,t,n,a){const r=sp(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,!op(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}:{},...lp(d,h,m),metadata:i},r,s);b=!0,x=xp(p),l.primed=!1,l.turnId=x??null,x&&l.interruptRequested&&await Jf(l.runtime,x,e);const g=await N;if(await async function(e){await(ff.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Uf(Pp(g));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(g))throw new Error(Pp(g));const w=await async function(e,t,n){try{const a=rl((await e.request("thread/turns/list",{limit:20,threadId:t},3e4)).result);return bp((Array.isArray(a?.data)?a.data:[]).map(e=>rl(e)).filter(e=>!!e).filter(e=>!n||il(e.id)===n).at(-1))??null}catch{return null}}(l.runtime,e,x)||wp(g)||wp(p)||v,I=new Date,k=$f(e,n,{completedAt:I,content:w,rawPayload:g,status:"COMPLETED",turnId:x??null});vp(e,t,"COMPLETED"),gp(e,t,"Codex completed the turn."),l.status="IDLE",l.runtime=void 0,l.updatedAt=I,"plan"===d&&function(e,t){return uf.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"===rl(e.metadata)?.presentation)})??!1}(e,t)&&await Vh(e,{collaborationMode:"default"}),cg(e,"chat.updated",await vf(e)),k&&cg(e,"message.completed",k),cg(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t){const n=await async function(e,t){try{const n=hg((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result);if(n)return n}catch{}try{const n=rl((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return hg((Qp(n?.data)??Qp(n?.items)??Qp(n?.threads)??[]).find(e=>il(e.id)===t))}catch{return null}}(e,t);n&&await gg(t,n)}(ug(a),e),await Mm(e,a.id)}catch(A){y?.abort(),await(N?.catch(()=>{}));const a=A instanceof Error?A.message:"Codex run failed.",r=f&&!b;gp(e,t,a);const i=new Date;if(A instanceof Uf){vp(e,t,"COMPLETED");const s=$f(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,cg(e,"chat.updated",await vf(e)),s&&cg(e,"message.completed",s),void cg(e,"run.status",{error:a,runId:t,status:"CANCELLED"})}vp(e,t,"FAILED");const s=$f(e,n,{completedAt:i,content:v,status:"FAILED"});l.status="IDLE",l.runtime=r?h:void 0,l.updatedAt=i,cg(e,"chat.updated",await vf(e)),s&&cg(e,"message.failed",{...s,error:a}),cg(e,"run.status",{error:a,runId:t,status:"FAILED"})}finally{y?.abort(),I(),k(),ff.delete(t),l.runId=null,l.turnId=null,l.queuedTurns.length?function(e){const t=(hf.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){const t=uf.get(e);if(!t||"RUNNING"===t.status||"QUEUED"===t.status)return;const n=t.queuedTurns.shift();if(!n)return;try{const t=await kf((await Of(await vf(e))).accountId??n.accountId),a=new Date,r=await _f({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=$f(e,n.messageId,{metadataPatch:{dequeuedAt:a.toISOString(),queueStatus:"running",runId:r.runId}});i&&cg(e,"message.updated",i)}catch(A){const a=$f(e,n.messageId,{metadataPatch:{error:A instanceof Error?A.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"}});a&&cg(e,"message.updated",a)}}(e)).catch(()=>{});hf.set(e,t),t.finally(()=>{hf.get(e)===t&&hf.delete(e)})}(e):function(e){Of(async function(e){try{return await vf(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 Of(e){const t=await e;if(!t)throw new Nc(404,"Chat not found.");if(!t.autoRotateAccount||"RUNNING"===t.status||uf.get(t.id)?.primed)return t;const n=await jc.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 fl({accountId:e.id,args:mg(e.args),command:e.command,environment:sl(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?jf(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:jf(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(jf(a.get(s.id))<0)return t;const o=await Vh(t.id,{accountId:s.id});Mm(t.id,s.id).catch(()=>{});const d=await Tf(t.id,o);return cg(t.id,"chat.updated",d),d}function jf(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?zf(e.secondary)?"weekly":zf(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-Ff(e.usedPercent));return t.length?Math.min(...t):0}function zf(e){return Ff(e?.usedPercent??0)>=100}function Ff(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Bf(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 Nc(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 Nc(400,"Image attachments must be 6 MB or smaller.");const s=Hf(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 Gf(e,t){const n=await async function(e,t){return df(await of(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Bt(),kind:"file",name:Hf(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function Hf(e,t){const n=e?.trim();return(n?fn(n):t).slice(0,160)||"attachment"}function Kf(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 Wf(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}function Qf(e,t){if(!og(e.title))return null;const n=t.trim();return n||null}function Vf(e,t){const n=(ff.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return ff.set(e,a),a.finally(()=>{ff.get(e)===a&&ff.delete(e)}),n}async function Jf(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 Xf(e,t,n,a){async function r(r){const i=sp(n,a),s=void 0===t.collaborationMode?[t]:[t,Yf(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&&dp(d))break;if(op(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 Zf(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}function Yf(e,t){const n={...e};return delete n[t],n}async function Zf(e,t){for(let n=0;n<3;n+=1){const a=await ep(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 ep(e,t){try{const n=rl((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return tp(Qp(n?.data)??Qp(n?.items)??Qp(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 tp(Qp(rl(rl(n.result)?.thread)?.turns)??[],!1)}function tp(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>ap(np(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!ip(rp(i)))continue;const e=ap(np(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function np(e){return il(e.id)??il(e.turnId)??il(e.turn_id)??null}function ap(e){const t=e?.trim();return t||null}function rp(e){return(il(e.status)??il(e.turnStatus)??il(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function ip(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function sp(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 op(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 dp(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 cp(e,t,n,a){const r=t?"thread/resume":"thread/start",i=rl((await e.request(r,{...t?{threadId:t}:{},cwd:n},3e4)).result),s=il(rl(i?.thread)?.id)??il(i?.threadId)??il(i?.thread_id)??t;if(!s)throw new Error("Codex did not return a thread id.");return s}function lp(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:mp(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function up(e,t=null){return"plan"!==e?{}:{collaborationMode:mp(e,t)}}function mp(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function hp(e,t,n){const a=rg(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=rl(rl((await e.request("config/read",{},3e4)).result)?.config),n=rg(il(t?.model));if(r=r??ig(t?.model_reasoning_effort)??ig(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=rl((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=rl(e),n=rg(il(t?.id))??rg(il(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}async function fp(e){return async function(e,t){if(!e)return t();const n=pf.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);pf.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),pf.get(e)===i&&pf.delete(e)}}(pp(e),async()=>{const t=Lf(e.threadId),n=function(e,t){const n=pp(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?$f(e.threadId,n.id,{completedAt:e.completedAt,content:e.content,metadata:e.metadata,rawPayload:e.rawPayload,status:e.status,turnId:e.turnId??n.turnId}):Rf(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=pp(e);return r&&t.messageKeys.set(r,a.id),cg(e.threadId,n?"message.updated":"message.created",a),a})}function pp(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 gp(e,t,n){const a=uf.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=Wp(e,r.requestId),a=lf.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),lf.delete(t)}const a=$f(e,r.id,{completedAt:new Date,metadataPatch:{expiredAt:(new Date).toISOString(),reason:n,status:"expired"},status:"COMPLETED"});a&&cg(e,"message.updated",a)}}function vp(e,t,n){const a=uf.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=$f(e,r.id,{completedAt:new Date,status:n});a&&cg(e,"message.updated",a)}}function wp(e){const t=rl(e.result),n=rl(e.params),a=rl(n?.payload)??n??t;return bp(rl(n?.turn)??rl(t?.turn))??Yp(t?.text)??Yp(t?.content)??Yp(a?.text)??Yp(a?.content)??Yp(a?.delta)??Yp(a?.message)??""}function xp(e){const t=rl(e.result),n=rl(e.params);return il(t?.turnId)??il(t?.turn_id)??il(n?.turnId)??il(n?.turn_id)??il(rl(t?.turn)?.id)??il(rl(n?.turn)?.id)}function bp(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=rl(e);return"agentMessage"!==t?.type?null:Yp(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function yp(e){const t=rl(e.params),n=rl(e.result),a=rl(t?.event);return il(t?.threadId)??il(t?.thread_id)??il(n?.threadId)??il(n?.thread_id)??il(a?.threadId)??il(a?.thread_id)}function Np(e){const t=rl(e.params),n=rl(e.result),a=kp(e);return il(t?.turnId)??il(n?.turnId)??il(a?.turnId)??xp(e)}function Ip(e){const t=rl(e.params),n=rl(e.result),a=kp(e);return il(t?.itemId)??il(n?.itemId)??il(a?.id)}function kp(e){const t=rl(e.params),n=rl(e.result),a=rl(t?.payload);return rl(t?.item)??rl(n?.item)??rl(a?.item)}function Ap(e){const t=rl(e.params),n=rl(t?.event);return Yp(t?.delta)??Yp(t?.text)??Yp(t?.output)??Yp(n?.delta)??Yp(n?.text)}function Cp(e,t){const n=rl(e.params),a=rl(e.result);return[t,n,rl(n?.event),rl(n?.payload),a].map(Ep).find(e=>!!e?.trim())}function Ep(e){if(e)return Yp(e.reasoning)??Yp(e.reasoningText)??Yp(e.reasoning_text)??Yp(e.summary)??Pf(e.summary)??Pf(e.content)??Yp(e.text)??Yp(e.output)}function Tp(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function Mp(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function Sp(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function Pp(e){const t=rl(e.params);return il(rl(t?.error)?.message)??il(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function Dp(e,t){const n=il(e?.status);return n?Tp(n):t.includes("failed")||t.includes("error")?"failed":Sp({method:t})?"completed":"running"}function Lp(e){return Yp(e.diff)??Yp(e.unifiedDiff)??Yp(e.unified_diff)??Yp(e.patch)}function Rp(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function $p(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 qp(e){return Tp(e.method??"").includes("start")}function _p(e){const t=Tp(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Up(e,t=e){const n=zp(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=zp(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=zp(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}([zp(e,["input_tokens","inputTokens"]),zp(e,["output_tokens","outputTokens"]),zp(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 Op(e,t=0){if(t>4)return;const n=rl(e);if(!n)return;const a=Tp(il(n.type)??""),r=Tp(il(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Op(n[i],t+1);if(e)return e}}function jp(e,t){for(const n of t){const t=rl(e[n]);if(t)return t}}function zp(e,t){for(const n of t){const t=Fp(e[n]);if(void 0!==t)return t}}function Fp(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 Bp(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e).map(e=>({header:il(e.header),id:il(e.id)??Bt(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:Gp(e.options),question:il(e.question)??il(e.header)??"Answer",selectionLimit:Jp(e.selectionLimit)??Jp(e.selection_limit)})):[]}function Gp(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e).map(e=>({description:il(e.description),label:il(e.label)??il(e.value)??""})).filter(e=>e.label):[]}function Hp(e){return"userInput"===e.kind?il(e.message)??"Codex needs more information before it can continue.":il(e.reason)??il(e.command)??"Codex needs approval before it can continue."}function Kp(e){return"approval"===e?{decision:"acceptForSession"}:{permissions:!0,scope:"session"}}function Wp(e,t){return`${e}:${t}`}function Qp(e){return Array.isArray(e)?e.map(e=>rl(e)).filter(e=>!!e):null}function Vp(e){if(Array.isArray(e))return e.map(Xp)}function Jp(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Xp(e){return JSON.parse(JSON.stringify(e))}function Yp(e){return"string"==typeof e&&e.length>0?e:void 0}function Zp(e){if(null===e)return null;const t=e.trim();if(!t)throw new Nc(400,"Runtime option cannot be empty.");return t}function eg(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Nc(400,"reasoningEffort is invalid.");return e}function tg(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Nc(400,"serviceTier is invalid.")}function ng(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Nc(400,"collaborationMode is invalid.")}function ag(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Nc(400,"permissionMode is invalid.")}function rg(e){const t=e?.trim();return t||null}function ig(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}function sg(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function og(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 dg(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 cg(e,t,n){Gh(e,t,n)}function lg(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}function ug(e){return dl.getRuntime({accountId:e.id,args:mg(e.args),command:e.command,environment:sl(e.environment),workingDirectory:null})}function mg(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function hg(e){const t=rl(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name];for(const i of n){const e=sg(il(i)??"");if(e)return e}const a=sg(il(t.title)??"");if(a&&!og(a))return a;const r=rl(t.thread);return r?hg(r):null}async function fg(e,t,n){const a=sg(n);if(!a||og(a))return!1;const r=await Qh(t);return!(r?.title&&!og(r.title))&&(await gg(t,a),pg(e,t,a),!0)}async function pg(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}async function gg(e,t){const n=sg(t);n&&!og(n)&&cg(e,"chat.updated",await Tf(e,await Vh(e,{title:n})))}var vg=qn({action:()=>xg,loader:()=>wg});async function wg({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(){const[e,t]=await Promise.all([Wh(),Af()]),n=new Map(e.map(e=>[e.threadId,e])),a=new Set([...t.keys(),...uf.keys()]);return(await Promise.all([...a].map(e=>Tf(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 Lc(t)}}async function xg({request:e}){try{Ac(e,["POST"]),await Gc(e);const t=await Cc(e);return Ic(await async function(e){const t=await kf(e.accountId),n=ef(e.workingDirectory),a=void 0===e.collaborationMode?"default":ng(e.collaborationMode),r=void 0===e.permissionMode?"default":ag(e.permissionMode),i=ug(t),s=await cp(i,null,n),o=await Vh(s,{accountId:t.id,autoRotateAccount:e.autoRotateAccount??!1,collaborationMode:a,model:void 0===e.model?void 0:Zp(e.model),permissionMode:r,reasoningEffort:void 0===e.reasoningEffort?void 0:eg(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:tg(e.serviceTier),title:sg(e.title??"")??null,workingDirectory:n}),d=await Df(s);d.accountId=t.id,d.primed=!0,d.runtime=i,d.updatedAt=new Date;const c=await Tf(s,o);return cg(s,"chat.updated",c),c}({accountId:Ec(t.accountId,"accountId",{required:!0}),autoRotateAccount:Mc(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:Ec(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:Ec(t.model,"model",{maxLength:160}),reasoningEffort:bg(t.reasoningEffort,"reasoningEffort"),serviceTier:bg(t.serviceTier,"serviceTier"),collaborationMode:bg(t.collaborationMode,"collaborationMode"),permissionMode:bg(t.permissionMode,"permissionMode"),title:Ec(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return Lc(t)}}function bg(e,t){return null===e?null:Ec(e,t,{maxLength:80})}var yg=qn({action:()=>Ig,loader:()=>Ng});async function Ng({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await vf(Dc(t,"chatId")))}catch(n){return Lc(n)}}async function Ig({request:e,params:t}){try{await Gc(e);const n=Dc(t,"chatId");if("PATCH"===e.method){const t=await Cc(e);return Ic(await wf(n,{accountId:Ec(t.accountId,"accountId"),autoRotateAccount:Mc(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:Ec(t.model,"model",{maxLength:160}),reasoningEffort:kg(t.reasoningEffort,"reasoningEffort"),serviceTier:kg(t.serviceTier,"serviceTier"),collaborationMode:kg(t.collaborationMode,"collaborationMode"),permissionMode:kg(t.permissionMode,"permissionMode"),title:Ec(t.title,"title",{maxLength:160}),workingDirectory:Ec(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Ic(await xf(n));kc(e.method)}catch(n){return Lc(n)}}function kg(e,t){return null===e?null:Ec(e,t,{maxLength:80})}var Ag=qn({loader:()=>Cg});async function Cg({request:e,params:t}){try{return Ac(e,["GET"]),await Gc(e),Ic(await async function(e){return await vf(e),{usage:await Dm(e)}}(Dc(t,"chatId")))}catch(n){return Lc(n)}}var Eg=qn({loader:()=>Tg});async function Tg({request:e,params:t}){try{Ac(e,["GET"]),await Gc(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Nc(400,"path is required.");return Ic(await sf(Dc(t,"chatId"),a,Pc(n,"line",0)||null))}catch(n){return Lc(n)}}var Mg=An(Nn);async function Sg(e){const t=await Dg(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 Rg(t.cwd),r=await $g(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 $g(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await qg(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 Pg(e,t){const n=await Dg(e);if("RUNNING"===n.status)throw new Nc(409,"Git actions are disabled while Codex is running.");if(!(await Lg(n.cwd)))throw new Nc(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=_g(t.branch);a=await qg(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=_g(t.branch);await qg(n.cwd,["check-ref-format","--branch",e]),a=await qg(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Nc(400,"Commit message is required.");await qg(n.cwd,["add","-A"]),a=await qg(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await qg(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Nc(400,"Unsupported git action.");a=await $g(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await qg(n.cwd,["push"]):await async function(e){await qg(e,["remote","get-url","origin"]);const t=await Rg(e);if(!t)throw new Nc(400,"Cannot push while detached from a branch.");return qg(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:Og(t.action),output:a,status:await Sg(e)}}async function Dg(e){const t=await Jh(e);if(!t)throw new Nc(400,"Chat does not have a working directory.");return{cwd:ef(t),status:If(e)}}async function Lg(e){return $g(e,["rev-parse","--show-toplevel"])}async function Rg(e){return await $g(e,["symbolic-ref","--quiet","--short","HEAD"])??await $g(e,["rev-parse","--short","HEAD"])}async function $g(e,t){try{return await qg(e,t)}catch{return null}}async function qg(e,t){try{const n=await Mg("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 Nc(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 _g(e){const t=e?.trim();if(!t)throw new Nc(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Nc(400,"Branch name is invalid.");return t}function Ug(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function Og(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 jg({request:e,params:t}){try{Ac(e,["GET"]),await Gc(e);const n=Dc(t,"chatId"),a=Dc(t,"operation"),r=new URL(e.url);if("status"===a)return Ic(await Sg(n));if("branches"===a)return Ic(await async function(e){const t=await Dg(e);if(!(await Lg(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await Rg(t.cwd);return{branches:(await qg(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 $g(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Ic(await async function(e,t){const n=await Dg(e);if(!(await Lg(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=Ug(await $g(n.cwd,["diff","--stat",...a]),await $g(n.cwd,["diff","--cached","--stat",...a]));return{diff:Ug(await $g(n.cwd,["diff","--no-ext-diff",...a]),await $g(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));if("history"===a)return Ic(await async function(e){const t=await Dg(e);return await Lg(t.cwd)?{commits:(n=await $g(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 Nc(404,"Git operation not found.")}catch(n){return Lc(n)}}async function zg({request:e,params:t}){try{if(Ac(e,["POST"]),await Gc(e),"action"!==Dc(t,"operation"))throw new Nc(404,"Git operation not found.");const n=await Cc(e),a={action:Fg(n.action),branch:Ec(n.branch,"branch",{maxLength:240}),message:Ec(n.message,"message",{maxLength:5e3})};return Ic(await Pg(Dc(t,"chatId"),a))}catch(n){return Lc(n)}}function Fg(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Nc(400,"action is invalid.")}async function Bg({request:e,params:t}){try{Ac(e,["GET"]),await Gc(e);const n=new URL(e.url);return Ic(await bf(Dc(t,"chatId"),Pc(n,"afterSequence",0),Pc(n,"limit",50)))}catch(n){return Lc(n)}}async function Gg({request:e,params:t}){try{Ac(e,["POST"]),await Gc(e);const n=await Cc(e),a={content:Kg(n.content),accountId:Ec(n.accountId,"accountId"),attachments:Wg(n.attachments),collaborationMode:Xg(n.collaborationMode,"collaborationMode"),delivery:Hg(n.delivery),metadata:Sc(n.metadata,"metadata")};return Ic(await Nf(Dc(t,"chatId"),a),{status:201})}catch(n){return Lc(n)}}function Hg(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Nc(400,"delivery is invalid.")}}function Kg(e){if(null==e)return"";if("string"!=typeof e)throw new Nc(400,"content must be a string.");if(e.length>4e4)throw new Nc(400,"content must be 40000 characters or fewer.");return e.trim()}function Wg(e){if(void 0!==e){if(!Array.isArray(e))throw new Nc(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Nc(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:Qg(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Vg(n.mimeType,`attachments[${t}].mimeType`,80),name:Vg(n.name,`attachments[${t}].name`,160),size:Jg(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Vg(n.name,`attachments[${t}].name`,160),path:Qg(n.path,`attachments[${t}].path`,4096),size:Jg(n.size,`attachments[${t}].size`)};throw new Nc(400,`attachments[${t}].kind is invalid.`)})}}function Qg(e,t,n){if("string"!=typeof e||!e.trim())throw new Nc(400,`${t} is required.`);if(e.length>n)throw new Nc(400,`${t} is too large.`);return e}function Vg(e,t,n){if(null!=e){if("string"!=typeof e)throw new Nc(400,`${t} must be a string.`);if(e.length>n)throw new Nc(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function Jg(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Nc(400,`${t} must be a positive number.`);return e}}function Xg(e,t){return null===e?null:Ec(e,t,{maxLength:80})}async function Yg({request:e,params:t}){try{return Ac(e,["POST"]),await Gc(e),Ic(await async function(e){if("RUNNING"!==(await vf(e)).status)throw new Nc(409,"There is no running task to stop.");const t=uf.get(e);if(!t?.runId)throw new Nc(409,"There is no active run to stop.");return t.interruptRequested=!0,t.runtime&&t.turnId&&await Jf(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."}}(Dc(t,"chatId")))}catch(n){return Lc(n)}}async function Zg({request:e,params:t}){try{return Ac(e,["POST"]),await Gc(e),Ic(await async function(e,t){await vf(e);const n=uf.get(e);if(!n||"RUNNING"!==n.status&&"QUEUED"!==n.status)throw new Nc(409,"There is no running task to steer.");if(!n.runtime)throw new Nc(409,"The active turn is not ready for steering yet.");const a=n.queuedTurns.findIndex(e=>e.id===t);if(a<0)throw new Nc(410,"Queued message is no longer pending.");const r=n.queuedTurns[a],i=n.turnId??await Zf(n.runtime,e);if(!i)throw new Nc(409,"The active turn has not published a turn id yet.");const s=await Qh(e),o=await hp(n.runtime,s?.model??null,s?.reasoningEffort??null);n.turnId=xp(await Xf(n.runtime,{expectedTurnId:i,threadId:e,...up(r.collaborationMode,o)},r.content,r.attachments))??i,n.queuedTurns.splice(a,1);const d=new Date,c=$f(e,r.messageId,{completedAt:d,metadataPatch:{delivery:"steer",queueStatus:"steered",runId:n.runId??null,steeredAt:d.toISOString()},turnId:n.turnId});if(!c)throw new Nc(410,"Queued message is no longer available.");return cg(e,"chat.updated",await vf(e)),cg(e,"message.updated",c),c}(Dc(t,"chatId"),Dc(t,"queueId")))}catch(n){return Lc(n)}}async function ev({request:e,params:t}){try{Ac(e,["POST"]),await Gc(e);const n=await Cc(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Nc(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Ic(await yf(Dc(t,"chatId"),Dc(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return Lc(n)}}async function tv({request:e}){try{return Ac(e,["GET"]),await Gc(e),Ic(await Yh(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return Lc(t)}}async function nv({request:e}){try{Ac(e,["POST"]),await Gc(e);const t=await Cc(e),n={parentPath:Ec(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:Ec(t.name,"name",{required:!0,maxLength:255})};return Ic(await Zh(n.parentPath,n.name),{status:201})}catch(t){return Lc(t)}}var av={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-Bu-oywbm.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-B8vUNgcI.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-Bnly6Mpc.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-D31IhueQ.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-299669d5.js",version:"299669d5",sri:void 0},rv="build/client",iv="/",sv={unstable_optimizeDeps:!0,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},ov=!0,dv=!1,cv=[],lv={mode:"lazy",manifestPath:"/__manifest"},uv="/",mv={module:_n},hv={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:bc},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:Rc},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:Yc},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:el},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:nl},"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:$u},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:_u},"routes/api.accounts.personalization":{id:"routes/api.accounts.personalization",parentId:"root",path:"api/accounts/personalization",index:void 0,caseSensitive:void 0,module:Ou},"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:Fu},"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:Yu},"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:tm},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:am},"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:sm},"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:cm},"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:wm},"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:bm},"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:Nm},"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:km},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:vg},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:yg},"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:Ag},"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:()=>zg,loader:()=>jg})},"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:()=>Gg,loader:()=>Bg})},"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:()=>Yg})},"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:()=>Zg})},"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:()=>ev})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:qn({action:()=>nv,loader:()=>tv})}},fv=!1;export{fv as allowedActionOrigins,av as assets,rv as assetsBuildDirectory,iv as basename,mv as entry,sv as future,dv as isSpaMode,cv as prerender,uv as publicPath,lv as routeDiscovery,hv as routes,ov as ssr};
|