xedoc-cli 0.1.9 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/app-layout-C4u5Bq0m.js +1 -0
- package/build/client/assets/{app-shell-BafG7OhV.js → app-shell-B9UBObFu.js} +1 -1
- package/build/client/assets/chat-Qrq1zFrn.js +1 -0
- package/build/client/assets/home-CqUa9wVl.js +1 -0
- package/build/client/assets/{manifest-9394b151.js → manifest-746c227f.js} +1 -1
- package/build/client/assets/root-KOlmIkbz.css +2 -0
- package/build/server/index.js +1 -1
- package/package.json +1 -1
- package/build/client/assets/app-layout-DfV6V3St.js +0 -1
- package/build/client/assets/chat-VXv-BDrQ.js +0 -1
- package/build/client/assets/home-Vd20oLbY.js +0 -1
- package/build/client/assets/root-DlK_mPNx.css +0 -2
- /package/build/client/assets/{root-B5TLitpK.js → root-xm0qUlcY.js} +0 -0
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,useNavigate as h,useOutletContext as f,useParams as p}from"react-router";import{isbot as g}from"isbot";import{renderToPipeableStream as v}from"react-dom/server";import{Fragment as w,jsx as x,jsxs as y}from"react/jsx-runtime";import{QueryClient as b,QueryClientProvider as N,useMutation as I,useQueries as k,useQuery as C,useQueryClient as A}from"@tanstack/react-query";import{ThemeProvider as M,useTheme as E}from"next-themes";import*as T from"react";import{createContext as S,useCallback as P,useContext as L,useEffect as D,useMemo as R,useRef as q,useState as O,useSyncExternalStore as _}from"react";import{Toaster as $,toast as U}from"sonner";import{AlertTriangle as z,Archive as j,ArrowLeft as F,ArrowRight as B,ArrowUp as G,Brain as H,Check as K,CheckCircle2 as W,CheckIcon as V,ChevronDown as Q,ChevronRight as J,ChevronRightIcon as Y,CircleCheckIcon as X,Clock as Z,Code2 as ee,Copy as te,Cpu as ne,Download as ae,ExternalLink as re,Eye as ie,File as se,FileCode as oe,FileDiff as de,Filter as ce,Folder as le,FolderOpen as ue,FolderPlus as me,Gauge as he,GitBranch as fe,GitCommitHorizontal as pe,Home as ge,Image as ve,Info as we,InfoIcon as xe,KeyRound as ye,Laptop as be,ListChecks as Ne,Loader2 as Ie,Loader2Icon as ke,LockKeyhole as Ce,LogOut as Ae,Mail as Me,Menu as Ee,MessageSquare as Te,Moon as Se,MoreHorizontal as Pe,OctagonXIcon as Le,PanelLeftIcon as De,Paperclip as Re,Pencil as qe,PencilLine as Oe,PlugZap as _e,Plus as $e,RefreshCw as Ue,RotateCcw as ze,RotateCw as je,Search as Fe,Server as Be,Settings as Ge,Shield as He,ShieldCheck as Ke,Square as We,SquarePen as Ve,Sun as Qe,Terminal as Je,Trash2 as Ye,TriangleAlertIcon as Xe,Upload as Ze,UserRound as et,X as tt,XIcon as nt,Zap as at}from"lucide-react";import{Tooltip as rt}from"@base-ui/react/tooltip";import{clsx as it}from"clsx";import{twMerge as st}from"tailwind-merge";import{Button as ot}from"@base-ui/react/button";import{cva as dt}from"class-variance-authority";import{Input as ct}from"@base-ui/react/input";import{AlertDialog as lt}from"@base-ui/react/alert-dialog";import{mergeProps as ut}from"@base-ui/react/merge-props";import{useRender as mt}from"@base-ui/react/use-render";import{Dialog as ht}from"@base-ui/react/dialog";import{ScrollArea as ft}from"@base-ui/react/scroll-area";import{Separator as pt}from"@base-ui/react/separator";import{io as gt}from"socket.io-client";import{Menu as vt}from"@base-ui/react/menu";import wt from"react-markdown";import xt from"remark-gfm";import yt from"highlight.js/lib/core";import bt from"highlight.js/lib/languages/bash";import Nt from"highlight.js/lib/languages/css";import It from"highlight.js/lib/languages/go";import kt from"highlight.js/lib/languages/json";import Ct from"highlight.js/lib/languages/javascript";import At from"highlight.js/lib/languages/markdown";import Mt from"highlight.js/lib/languages/python";import Et from"highlight.js/lib/languages/rust";import Tt from"highlight.js/lib/languages/shell";import St from"highlight.js/lib/languages/sql";import Pt from"highlight.js/lib/languages/typescript";import Lt from"highlight.js/lib/languages/xml";import Dt from"highlight.js/lib/languages/yaml";import{Popover as Rt}from"@base-ui/react/popover";import{Switch as qt}from"@base-ui/react/switch";import"dotenv/config";import{createHash as Ot,createHmac as _t,randomBytes as $t,randomUUID as Ut,scryptSync as zt,timingSafeEqual as jt}from"node:crypto";import{Prisma as Ft,PrismaClient as Bt}from"@prisma/client";import{chmodSync as Gt,constants as Ht,existsSync as Kt,mkdirSync as Wt,readFileSync as Vt,realpathSync as Qt,statSync as Jt}from"node:fs";import{homedir as Yt}from"node:os";import{basename as Xt,delimiter as Zt,dirname as en,extname as tn,isAbsolute as nn,join as an,relative as rn,resolve as sn,sep as on}from"node:path";import{execFile as dn,spawn as cn}from"node:child_process";import{access as ln,copyFile as un,mkdir as mn,open as hn,readFile as fn,readdir as pn,realpath as gn,stat as vn}from"node:fs/promises";import{promisify as wn}from"node:util";var xn=Object.defineProperty,yn=(e,t)=>{let n={};for(var a in e)xn(n,a,{get:e[a],enumerable:!0});return t||xn(n,Symbol.toStringTag,{value:"Module"}),n},bn=yn({default:()=>In,streamTimeout:()=>Nn}),Nn=5e3;function In(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&&g(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),Nn+1e3);const{pipe:h,abort:f}=v(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var kn=({...e})=>{const{theme:t="system"}=E();return x($,{theme:t,className:"toaster group",icons:{success:x(X,{className:"size-4"}),info:x(xe,{className:"size-4"}),warning:x(Xe,{className:"size-4"}),error:x(Le,{className:"size-4"}),loading:x(ke,{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 Cn(...e){return st(it(e))}function An({delay:e=0,...t}){return x(rt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function Mn({...e}){return x(rt.Root,{"data-slot":"tooltip",...e})}function En({...e}){return x(rt.Trigger,{"data-slot":"tooltip-trigger",...e})}function Tn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(rt.Portal,{children:x(rt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(rt.Popup,{"data-slot":"tooltip-content",className:Cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(rt.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 Sn="xedoc";function Pn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Sn}`:Sn}(e);D(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Sn}},[t])}var Ln=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Dn=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 Rn(e){return Gn(e.serverUrl,"/api/auth/session",{token:e.token})}async function qn(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function On(e,t,n={}){return Gn(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:n,token:e.token})}async function _n(e,t){return Gn(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function $n(e,t){return Gn(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}async function Un(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return Gn(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function zn(e,t){return Gn(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function jn(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function Fn(e,t,n=0){return Gn(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function Bn(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function Gn(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 Dn({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,Hn(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Ln([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,Kn(o)??Hn(s)].filter(Boolean).join("\n"),i.status,a);return o}function Hn(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function Kn(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 Wn(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 Vn={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function Qn(){const e=Jn();e&&(Zn(e,"serverUrl"),Zn(e,"token"))}function Jn(){return"undefined"==typeof window?null:window.localStorage}function Yn(e,t){return e.getItem(Vn[t])}function Xn(e,t,n){e.setItem(Vn[t],n)}function Zn(e,t){e.removeItem(Vn[t])}function ea(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 ta=S(void 0);function na({children:e}){const[t,n]=O(null),[a,r]=O(!1),i=_(ra,ia,sa),s=t,o=!i||!a;D(()=>{if(!i)return;const e=function(){const e=Jn();if(!e)return null;const t=Yn(e,"serverUrl"),n=Yn(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Rn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{Qn(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=P(async e=>{const t=ea(window.location.origin),{token:a}=await async function(e,t){return Gn(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=Jn();t&&(Xn(t,"serverUrl",e.serverUrl),Xn(t,"token",e.token))}(i),n(i),r(!0)},[]),c=P(async()=>{s&&await Rn(s)},[s]),l=P(()=>{Qn(),n(null),r(!0)},[]),u=R(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ta.Provider,{value:u,children:e})}function aa(){const e=L(ta);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function ra(){return()=>{}}function ia(){return!0}function sa(){return!1}var oa=yn({ErrorBoundary:()=>ma,Layout:()=>la,default:()=>ua,links:()=>ca,meta:()=>da});function da(){return[{title:Sn}]}function ca(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function la({children:e}){return y("html",{lang:"en",suppressHydrationWarning:!0,children:[y("head",{children:[x("meta",{charSet:"utf-8"}),x("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),x(a,{}),x(n,{})]}),y("body",{children:[e,x(o,{}),x(s,{})]})]})}var ua=c(function(){const[e]=O(()=>new b({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(M,{attribute:"class",defaultTheme:"system",enableSystem:!0,children:x(N,{client:e,children:y(An,{children:[x(na,{children:x(i,{})}),x(kn,{richColors:!0})]})})})}),ma=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return x("main",{className:"flex min-h-svh items-center justify-center bg-background p-6",children:y("section",{className:"max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[x("h1",{className:"text-lg font-semibold",children:"xedoc"}),x("p",{className:"mt-2 whitespace-pre-wrap text-sm text-muted-foreground",children:t})]})})}),ha=dt("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 fa({className:e,variant:t="default",size:n="default",...a}){return x(ot,{"data-slot":"button",className:Cn(ha({variant:t,size:n,className:e})),...a})}function pa({className:e,type:t,...n}){return x(ct,{type:t,"data-slot":"input",className:Cn("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 ga({className:e,...t}){return x("label",{"data-slot":"label",className:Cn("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 va(){const[e,t]=O(""),[n,a]=O(""),[i,s]=O(null),[o,d]=O(null),[c,l]=O(!1),{loading:u,session:m,setup:f}=aa(),p=h(),g=!1===i;if(D(()=>{let e=!0;return d(null),async function(e){return Gn(e,"/api/auth/status",{token:null})}(ea(window.location.origin)).then(t=>{e&&s(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),s(!0))}),()=>{e=!1}},[]),u)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return x(r,{replace:!0,to:"/"});if(null===i)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{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 f(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?ye:_e,{className:"size-5"})}),y("div",{children:[x("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),x("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:"server-password",children:"Server password"}),x(pa,{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&&wa(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(pa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&wa(e,n,g)&&v()}})]}):null,o?x("div",{className:"whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:o}):null,y(fa,{disabled:!wa(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ie,{className:"animate-spin"}):x(g?ye:_e,{}),g?"Set Password":"Connect"]})]})]})})}function wa(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var xa=yn({default:()=>ya}),ya=c(function(){return x(va,{})}),ba=yn({loader:()=>Na});function Na(){return m("/favicon.svg",301)}function Ia({...e}){return x(lt.Root,{"data-slot":"alert-dialog",...e})}function ka({...e}){return x(lt.Portal,{"data-slot":"alert-dialog-portal",...e})}function Ca({className:e,...t}){return x(lt.Backdrop,{"data-slot":"alert-dialog-overlay",className:Cn("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 Aa({className:e,size:t="default",...n}){return y(ka,{children:[x(Ca,{}),x(lt.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:Cn("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 Ma({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:Cn("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 Ea({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:Cn("-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 Ta({className:e,...t}){return x(lt.Title,{"data-slot":"alert-dialog-title",className:Cn("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 Sa({className:e,...t}){return x(lt.Description,{"data-slot":"alert-dialog-description",className:Cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Pa({className:e,...t}){return x(fa,{"data-slot":"alert-dialog-action",className:Cn(e),...t})}function La({className:e,variant:t="outline",size:n="default",...a}){return x(lt.Close,{"data-slot":"alert-dialog-cancel",className:Cn(e),render:x(fa,{variant:t,size:n}),...a})}function Da({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:Cn("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 Ra=dt("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 qa({className:e,variant:t="default",render:n,...a}){return mt({defaultTagName:"span",props:ut({className:Cn(Ra({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function Oa({className:e,status:t}){return x(qa,{className:e,variant:_a(t),children:t.toLowerCase()})}function _a(e){switch(e){case"ERROR":case"FAILED":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"}}var $a={args:"",command:"",displayName:"",environment:""};function Ua({accounts:e,createFocusKey:t=0,session:n}){const[a,r]=O($a),[i,s]=O(null),[o,d]=O($a),[c,l]=O({}),[u,m]=O(null),h=q(null),f=q(null),p=q(null),g=A();D(()=>{if(t<=0)return;const e=window.setTimeout(()=>{f.current?.scrollIntoView({block:"start",behavior:"smooth"}),p.current?.focus()},80);return()=>window.clearTimeout(e)},[t]);const v=()=>g.invalidateQueries({queryKey:["accounts"]}),b=I({mutationFn:async(e={})=>{const t=await async function(e,t){return Gn(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(n,{...ja(a),displayName:a.displayName.trim()});return e.authMode?{account:t,auth:await On(n,t.id,{mode:e.authMode}),popup:e.popup}:{account:t,auth:null,popup:e.popup}},onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:({auth:e,popup:t})=>{r($a),U.success("Account created."),v(),e&&L(e,t)}}),N=I({mutationFn:()=>{if(!i)throw new Error("Select an account to edit.");return async function(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(n,i.id,{...ja(o),displayName:o.displayName.trim()})},onError:e=>U.error(Ga(e)),onSuccess:()=>{s(null),d($a),U.success("Account updated."),v()}}),k=I({mutationFn:({accountId:e,mode:t})=>On(n,e,{mode:t}),onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:(e,t)=>{v(),L(e,t.popup)}}),C=I({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(n,e,{redirectUrl:t.trim()}),onError:e=>U.error(Ga(e)),onSuccess:(e,t)=>{l(e=>({...e,[t.accountId]:""})),v(),"CONNECTED"!==e.status?U.info(e.message??"Callback accepted."):U.success("Account connected.")}}),M=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(n,e),onError:e=>U.error(Ga(e)),onSuccess:()=>{m(null),U.success("Account deleted."),v(),g.invalidateQueries({queryKey:["chats"]})}}),E=I({mutationFn:()=>async function(e){return Gn(e.serverUrl,"/api/accounts/export",{token:e.token})}(n),onError:e=>U.error(Ga(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),U.success(`Exported ${e.accounts.length} ${Ba(e.accounts.length)}.`)}}),T=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(n,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:(e,t)=>{U.success(`Imported ${e.imported} ${Ba(e.imported)}.`),v(),g.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){L(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&U.info(`${a} more ${Ba(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&U.success(`Connected ${a} imported ${Ba(a)}.`)}(e.authentications,t.popup)}});function S(e,t="browser"){k.mutate({accountId:e,mode:t,popup:Ha()})}function P(e){b.mutate({authMode:e,popup:Ha()})}function L(e,t){if(e.authUrl)return Ka(e.authUrl,t),void U.info("device"===e.authMode?"Device login page opened.":"Authentication page opened.");t?.close(),"AUTHENTICATING"!==e.status?U.success(e.message??"Account is connected."):U.info(e.message??"Authentication is still in progress.")}return y(w,{children:[y("div",{className:"grid gap-5",children:[y("section",{className:"grid gap-3",children:[y("div",{className:"flex flex-wrap items-end justify-between gap-3",children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Authenticate accounts before using them for chats."})]}),y("div",{className:"text-xs text-muted-foreground",children:[e.length," ",Ba(e.length)]})]}),e.length?e.map(e=>{const t=c[e.id]??"",n=("browser"===(a=e.lastAuthMode)||"device"===a?a:null)??"browser";var a;const r="device"===n,u="AUTHENTICATING"===e.status||!!e.lastAuthUrl,h=k.isPending&&k.variables?.accountId===e.id,f=k.variables?.mode??"browser",p=h&&"browser"===f,g=h&&"device"===f,v=C.isPending&&C.variables?.accountId===e.id;return x("div",{className:"grid gap-4 rounded-md border bg-background p-4",children:i?.id===e.id?y(w,{children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[y("h4",{className:"text-sm font-semibold",children:["Edit ",e.displayName]}),x("p",{className:"text-xs text-muted-foreground",children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),y(fa,{size:"sm",variant:"ghost",onClick:()=>{s(null),d($a)},children:[x(tt,{}),"Cancel"]})]}),x(za,{form:o,onChange:d,prefix:`edit-account-${e.id}`}),y(fa,{className:"w-fit",disabled:!o.displayName.trim()||N.isPending,onClick:()=>N.mutate(),children:[N.isPending?x(Ie,{className:"animate-spin"}):x(W,{}),"Save account"]})]}):y(w,{children:[y("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto] md:items-start",children:[y("div",{className:"min-w-0 space-y-2",children:[y("div",{className:"flex items-center gap-2",children:[x("h4",{className:"truncate text-sm font-semibold",children:e.displayName}),x(Oa,{status:e.status})]}),y("p",{className:"truncate font-mono text-xs text-muted-foreground",children:[e.command," ",e.args.join(" ")]}),e.environment?y("p",{className:"text-xs text-muted-foreground",children:[Object.keys(e.environment).length," env"," ",1===Object.keys(e.environment).length?"value":"values"]}):null,e.lastError?x("p",{className:"mt-2 whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-2 py-1 text-xs text-destructive",children:e.lastError}):null]}),y("div",{className:"flex flex-wrap justify-start gap-2 md:justify-end",children:[y(fa,{disabled:h,size:"sm",variant:"CONNECTED"===e.status?"secondary":"default",onClick:()=>S(e.id,"AUTHENTICATING"===e.status?n:"browser"),children:[p?x(Ie,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(je,{}):x(re,{}),"AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate"]}),y(fa,{disabled:h,size:"sm",variant:"outline",onClick:()=>S(e.id,"device"),children:[g?x(Ie,{className:"animate-spin"}):x(ye,{}),"Device Login"]}),y(fa,{size:"sm",variant:"outline",onClick:()=>function(e){var t;s(e),d({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(e),children:[x(qe,{}),"Edit"]}),y(fa,{size:"sm",variant:"destructive",onClick:()=>m(e),children:[x(Ye,{}),"Delete"]})]})]}),u?y("div",{className:"grid gap-4 rounded-md border bg-muted/25 p-3",children:[y("div",{children:[x("h5",{className:"text-sm font-medium",children:r?"Device Login":"Authentication"}),x("p",{className:"text-xs text-muted-foreground",children:r?"Open the verification URL and enter the device code.":"Open the auth URL, finish login, then paste the localhost callback response URL."})]}),e.lastAuthUrl?y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`auth-url-${e.id}`,children:r?"Verification URL":"Auth URL"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(pa,{className:"font-mono text-xs",id:`auth-url-${e.id}`,readOnly:!0,value:e.lastAuthUrl}),y(fa,{size:"sm",variant:"outline",onClick:()=>Ka(e.lastAuthUrl??null),children:[x(re,{}),"Open"]})]})]}):null,r?e.lastAuthUserCode?y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`device-code-${e.id}`,children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(pa,{className:"font-mono text-sm tracking-wider",id:`device-code-${e.id}`,readOnly:!0,value:e.lastAuthUserCode}),y(fa,{size:"sm",variant:"outline",onClick:()=>async function(e){if(!e)return;try{await navigator.clipboard.writeText(e),U.success("Device code copied.")}catch{U.error("Could not copy device code.")}}(e.lastAuthUserCode??""),children:[x(te,{}),"Copy"]})]})]}):x("p",{className:"rounded-md border border-dashed bg-background px-3 py-2 text-xs text-muted-foreground",children:"Start device login again to get a fresh code."}):y(w,{children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`callback-url-${e.id}`,children:"Callback response URL"}),x(Da,{className:"min-h-20 font-mono text-xs",id:`callback-url-${e.id}`,placeholder:"http://localhost:1455/...",value:t,onChange:t=>l(n=>({...n,[e.id]:t.target.value}))})]}),x("div",{className:"flex justify-end",children:y(fa,{disabled:!t.trim()||v,onClick:()=>C.mutate({accountId:e.id,redirectUrl:t}),children:[v?x(Ie,{className:"animate-spin"}):x(W,{}),"Complete Login"]})})]})]}):null]})},e.id)}):y("div",{className:"rounded-md border border-dashed bg-muted/20 p-6",children:[x("h4",{className:"text-sm font-semibold",children:"No accounts"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Create an account below or import account records from a JSON export."})]})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",ref:f,children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Create account"}),x("p",{className:"text-sm text-muted-foreground",children:"Use a readable name. Runtime fields are optional."})]}),x(za,{displayNameRef:p,form:a,onChange:r,prefix:"create-account"}),y("div",{className:"flex flex-wrap gap-2",children:[y(fa,{disabled:!a.displayName.trim()||b.isPending,onClick:()=>P("browser"),children:[b.isPending?x(Ie,{className:"animate-spin"}):x(re,{}),"Create & Authenticate"]}),y(fa,{disabled:!a.displayName.trim()||b.isPending,variant:"secondary",onClick:()=>P("device"),children:[b.isPending?x(Ie,{className:"animate-spin"}):x(ye,{}),"Create & Device Login"]}),y(fa,{disabled:!a.displayName.trim()||b.isPending,variant:"outline",onClick:()=>b.mutate({}),children:[b.isPending?x(Ie,{className:"animate-spin"}):x($e,{}),"Create Only"]})]})]}),y("section",{className:"flex flex-wrap items-center justify-between gap-3 rounded-md border bg-muted/30 p-4",children:[y("div",{className:"min-w-0",children:[x("h3",{className:"text-sm font-semibold",children:"Import / export"}),x("p",{className:"text-sm text-muted-foreground",children:"Move account records and runtime settings with JSON. Codex auth tokens stay on this server."})]}),y("div",{className:"flex flex-wrap gap-2",children:[x("input",{ref:h,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=Ha();try{const e=JSON.parse(await t.text());T.mutate({accounts:Fa(e),popup:n})}catch(a){n?.close(),U.error(Ga(a))}}}),y(fa,{disabled:T.isPending,variant:"secondary",onClick:()=>h.current?.click(),children:[T.isPending?x(Ie,{className:"animate-spin"}):x(Ze,{}),"Import JSON"]}),y(fa,{disabled:E.isPending,variant:"outline",onClick:()=>E.mutate(),children:[E.isPending?x(Ie,{className:"animate-spin"}):x(ae,{}),"Export JSON"]})]})]})]}),x(Ia,{open:!!u,onOpenChange:e=>{e||m(null)},children:y(Aa,{children:[y(Ma,{children:[x(Ta,{children:"Delete account?"}),y(Sa,{children:["This removes ",u?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ea,{children:[x(La,{children:"Cancel"}),y(Pa,{disabled:M.isPending,variant:"destructive",onClick:()=>{u&&M.mutate(u.id)},children:[M.isPending?x(Ie,{className:"animate-spin"}):x(Ye,{}),"Delete"]})]})]})})]})}function za({displayNameRef:e,form:t,onChange:n,prefix:a}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-name`,children:"Display name"}),x(pa,{id:`${a}-name`,placeholder:"Work Codex",ref:e,value:t.displayName,onChange:e=>n({...t,displayName:e.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-command`,children:"Command"}),x(pa,{id:`${a}-command`,placeholder:"codex",value:t.command,onChange:e=>n({...t,command:e.target.value})})]}),y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-args`,children:"Arguments"}),x(pa,{id:`${a}-args`,placeholder:"app-server",value:t.args,onChange:e=>n({...t,args:e.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-environment`,children:"Environment JSON"}),x(Da,{className:"min-h-20 font-mono text-xs",id:`${a}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:t.environment,onChange:e=>n({...t,environment:e.target.value})})]})]})}function ja(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 Fa(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 Ba(e){return 1===e?"account":"accounts"}function Ga(e){return e instanceof Error?e.message:"Request failed."}function Ha(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Ka(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Wa({...e}){return x(ht.Root,{"data-slot":"dialog",...e})}function Va({...e}){return x(ht.Trigger,{"data-slot":"dialog-trigger",...e})}function Qa({...e}){return x(ht.Portal,{"data-slot":"dialog-portal",...e})}function Ja({className:e,...t}){return x(ht.Backdrop,{"data-slot":"dialog-overlay",className:Cn("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(Qa,{children:[x(Ja,{}),y(ht.Popup,{"data-slot":"dialog-content",className:Cn("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(ht.Close,{"data-slot":"dialog-close",render:x(fa,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(nt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Xa({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:Cn("flex flex-col gap-2",e),...t})}function Za({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:Cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&x(ht.Close,{render:x(fa,{variant:"outline"}),children:"Close"})]})}function er({className:e,...t}){return x(ht.Title,{"data-slot":"dialog-title",className:Cn("font-heading text-base leading-none font-medium",e),...t})}function tr({className:e,...t}){return x(ht.Description,{"data-slot":"dialog-description",className:Cn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function nr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(ft.Root,{"data-slot":"scroll-area",className:Cn("relative",e),...r,children:[x(ft.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:Cn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),x(ar,{}),x(ft.Corner,{})]})}function ar({className:e,orientation:t="vertical",...n}){return x(ft.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:Cn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(ft.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function rr({className:e,orientation:t="horizontal",...n}){return x(pt,{"data-slot":"separator",orientation:t,className:Cn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function ir({accounts:e,activeTab:t,clearSession:n,createFocusKey:a,onOpenChange:r,onTabChange:i,open:s,refreshSession:o,session:d}){return x(Wa,{open:s,onOpenChange:r,children:y(Ya,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(Xa,{className:"px-5 py-4",children:[x(er,{children:"Settings"}),x(tr,{children:"Manage the active server connection, accounts, and project details."})]}),x(rr,{}),y("div",{className:"grid min-h-0 md:grid-cols-[11rem_minmax(0,1fr)]",children:[y("nav",{className:"flex gap-2 overflow-x-auto border-b p-3 md:flex-col md:border-r md:border-b-0",children:[x(sr,{active:"server"===t,icon:x(Be,{}),label:"Server",onClick:()=>i("server")}),x(sr,{active:"accounts"===t,icon:x(et,{}),label:"Accounts",onClick:()=>i("accounts")}),x(sr,{active:"info"===t,icon:x(we,{}),label:"Info",onClick:()=>i("info")})]}),x(nr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["server"===t?x(or,{clearSession:n,refreshSession:o,session:d}):null,"accounts"===t?x(Ua,{accounts:e,createFocusKey:a,session:d}):null,"info"===t?x(dr,{}):null]})})]})]})})}function sr({active:e,icon:t,label:n,onClick:a}){return y(fa,{"aria-pressed":e,className:Cn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function or({clearSession:e,refreshSession:t,session:n}){const[a,r]=O(!1),[i,s]=O(null);return y("div",{className:"grid gap-4",children:[y("div",{className:"rounded-md border bg-muted/30 p-3",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(Be,{}),"API server"]}),x("div",{className:"mt-2 break-all text-sm text-muted-foreground",children:n.serverUrl})]}),y("div",{className:"flex items-center justify-between gap-3 rounded-md border p-3",children:[y("div",{children:[x("div",{className:"text-sm font-medium",children:"Session status"}),x("div",{className:"text-sm text-muted-foreground",children:"Bearer token stored in this browser."})]}),null===i?null:x(Oa,{status:i?"ONLINE":"OFFLINE"})]}),x(rr,{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(fa,{disabled:a,variant:"outline",onClick:()=>{!async function(){r(!0);try{await t(),s(!0),U.success("Server session is healthy.")}catch(e){s(!1),U.error(e instanceof Error?e.message:"Connection check failed.")}finally{r(!1)}}()},children:[a?x(Ue,{className:"animate-spin"}):x(W,{}),"Test Connection"]}),y(fa,{variant:"destructive",onClick:e,children:[x(Ae,{}),"Clear Session"]})]})]})}function dr(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(we,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(re,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Me,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function cr(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."))}var lr="xedoc.web.terminal-height",ur=null;function mr({className:e,onClosePanel:t,projectPath:n,socket:a,socketConnected:r}){const[i,s]=O(null),[o,d]=O(null),[c,l]=O(fr),[u,m]=O(!1),[h,f]=O(null),[p,g]=O([]),v=q(c),w=function(){const[e,t]=O(()=>vr());return D(()=>{const e=window.matchMedia("(max-width: 639px)"),n=()=>t(e.matches);return n(),e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),b=R(()=>p.find(e=>e.id===i)??null,[i,p]),N=P((e,t)=>cr(a,e,t),[a]),I=P(e=>{g(e),s(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),k=P(async()=>{const e=await N("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),I(e.terminals),s(e.terminal.id)},[I,n,N,h]);D(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),N("terminal:project:join",{projectPath:n}).then(async n=>{if(!e&&(t=n.projectPath,f(n.projectPath),I(n.terminals),!n.terminals.length)){const t=await N("terminal:create",{cols:80,projectPath:n.projectPath,rows:24});e||(f(t.projectPath),I(t.terminals),s(t.terminal.id))}}).catch(t=>{e||d(wr(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&cr(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[I,n,N,a]),D(()=>{if(!a)return;const e=e=>{const t=h??n;e.projectPath===t&&I(e.terminals)};return a.on("terminal:project",e),()=>{a.off("terminal:project",e)}},[I,n,h,a]),D(()=>{v.current=c;const e=window.setTimeout(()=>{pr(c)},150);return()=>window.clearTimeout(e)},[c]),D(()=>{const e=()=>{l(e=>{const t=gr(e);return v.current=t,t})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const C=P(async e=>{try{I((await N("terminal:close",{terminalId:e})).terminals)}catch(t){U.error(wr(t))}},[I,N]),A=P(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),M=P(e=>{e.currentTarget.setPointerCapture(e.pointerId);const t=e.clientY,n=c,a=e=>{const a=gr(n+t-e.clientY);v.current=a,l(a)},r=()=>{pr(v.current),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",a),document.addEventListener("pointerup",r)},[c]);return y("section",{className:Cn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[x("button",{"aria-label":"Resize terminal",className:"group flex h-3 cursor-row-resize items-center justify-center border-b bg-muted/40",type:"button",onPointerDown:M,children:x("span",{className:"h-0.5 w-10 rounded-full bg-muted-foreground/35 group-hover:bg-muted-foreground/70"})}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"flex min-w-0 items-center gap-1 border-b bg-muted/25 px-2 py-1",children:[x("div",{"aria-label":"Terminals",className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",role:"tablist",children:p.map(e=>y("div",{className:Cn("flex h-7 min-w-24 max-w-48 shrink-0 items-center rounded-md text-[11px] sm:h-8 sm:min-w-28 sm:max-w-56 sm:text-xs",e.id===i?"bg-secondary text-secondary-foreground":"hover:bg-accent hover:text-accent-foreground","exited"===e.status&&"text-muted-foreground"),children:[y("button",{"aria-selected":e.id===i,className:"flex h-full min-w-0 flex-1 items-center gap-1.5 px-2 text-left",role:"tab",title:e.title,type:"button",onClick:()=>s(e.id),children:[x(Je,{className:"size-3.5 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),x("span",{className:Cn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),x("button",{"aria-label":"Close terminal",className:"mr-1 grid size-5 shrink-0 place-items-center rounded-sm hover:bg-background",title:"Close terminal",type:"button",onClick:()=>{C(e.id)},children:x(tt,{className:"size-3"})})]},e.id))}),x(fa,{"aria-label":"New terminal",className:"size-8 shrink-0",disabled:!r||u,size:"icon-sm",title:"New terminal",type:"button",variant:"ghost",onClick:()=>{k().catch(e=>U.error(wr(e)))},children:u?x(Ie,{className:"animate-spin"}):x($e,{})}),t?x(fa,{"aria-label":"Hide terminal panel",className:"size-8 shrink-0",size:"icon-sm",title:"Hide terminal panel",type:"button",variant:"ghost",onClick:t,children:x(tt,{})}):null]}),x("div",{className:"min-h-0 bg-zinc-950",children:o?x("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):b?x(hr,{compactLayout:w,resizeSignal:c,socket:a,terminal:b,onTerminalUpdated:A},b.id):x("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function hr({compactLayout:e,onTerminalUpdated:t,resizeSignal:n,socket:a,terminal:r}){const i=q(null),s=q(null),o=q(null),d=q(null),c=P(()=>{null===o.current&&(o.current=window.requestAnimationFrame(()=>{o.current=null,s.current?.fit()}))},[]);return D(()=>(c(),()=>{null!==o.current&&(window.cancelAnimationFrame(o.current),o.current=null)}),[c,n]),D(()=>{const n=i.current;if(!a||!n)return;let l=!1,u=!1;const m=[],h=e=>{a.emit("terminal:input",{data:e,terminalId:r.id})},f=e=>{u&&e.terminalId===r.id&&d.current?.write(e.data)};return a.on("terminal:output",f),async function(){return ur??=import("ghostty-web").then(async e=>(await e.init(),e)),ur}().then(async({FitAddon:n,Terminal:o})=>{if(l||!i.current)return;const f=new o({cursorBlink:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',fontSize:e?11:12,scrollback:1e4,theme:{background:"#09090b",foreground:"#e4e4e7"}}),p=new n;s.current=p,d.current=f,f.loadAddon(p),f.open(i.current),p.fit(),p.observeResize(),f.attachCustomKeyEventHandler(e=>"Enter"===e.key&&(h("\r"),!0)),m.push(p),m.push(f.onData(e=>{h(e)})),m.push(f.onResize(e=>{a.emit("terminal:resize",{cols:e.cols,rows:e.rows,terminalId:r.id})})),m.push(f.onTitleChange(e=>{a.emit("terminal:title",{terminalId:r.id,title:e})}));const g=await cr(a,"terminal:attach",{terminalId:r.id});l||(t(g.terminal),g.replay&&f.write(g.replay),u=!0,requestAnimationFrame(()=>{p.fit(),f.focus()}),c())}).catch(e=>{l||U.error(wr(e))}),()=>{l=!0,null!==o.current&&(window.cancelAnimationFrame(o.current),o.current=null),a.off("terminal:output",f),cr(a,"terminal:detach",{terminalId:r.id}).catch(()=>{});for(const e of m)e.dispose();d.current?.dispose(),d.current=null,s.current=null}},[e,t,c,a,r.id]),x("div",{className:"relative h-full min-h-0 overflow-hidden p-1 outline-none sm:p-2 [&_canvas]:block",ref:i,style:{caretColor:"transparent"}})}function fr(){return"undefined"==typeof window?360:gr(Number.parseInt(window.localStorage.getItem(lr)??"",10)||(vr()?300:360))}function pr(e){"undefined"!=typeof window&&window.localStorage.setItem(lr,String(e))}function gr(e){const t="undefined"!=typeof window&&vr()?160:220,n="undefined"==typeof window?720:Math.max(t,Math.min(window.innerHeight-(vr()?96:140),760));return Math.max(t,Math.min(n,e))}function vr(){return"undefined"!=typeof window&&window.innerWidth<640}function wr(e){return e instanceof Error?e.message:"Terminal request failed."}function xr({...e}){return x(vt.Root,{"data-slot":"dropdown-menu",...e})}function yr({...e}){return x(vt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function br({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(vt.Portal,{children:x(vt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(vt.Popup,{"data-slot":"dropdown-menu-content",className:Cn("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 Nr({className:e,inset:t,variant:n="default",...a}){return x(vt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:Cn("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 Ir({...e}){return x(vt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function kr({className:e,inset:t,children:n,...a}){return y(vt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:Cn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(Y,{className:"ml-auto"})]})}function Cr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(br,{"data-slot":"dropdown-menu-sub-content",className:Cn("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 Ar({...e}){return x(vt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function Mr({className:e,children:t,inset:n,...a}){return y(vt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:Cn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(vt.RadioItemIndicator,{children:x(V,{})})}),t]})}function Er({className:e,...t}){return x(vt.Separator,{"data-slot":"dropdown-menu-separator",className:Cn("-mx-1 my-1 h-px bg-border",e),...t})}function Tr(){const{setTheme:e,theme:t}=E(),n=t??"system";return y(xr,{children:[y(yr,{render:x(fa,{size:"icon",variant:"outline"}),children:[x(Qe,{className:"size-4 dark:hidden"}),x(Se,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(br,{align:"end",className:"w-40",children:[y(Nr,{onClick:()=>e("light"),children:[x(Qe,{}),"Light","light"===n?x(K,{className:"ml-auto"}):null]}),y(Nr,{onClick:()=>e("dark"),children:[x(Se,{}),"Dark","dark"===n?x(K,{className:"ml-auto"}):null]}),y(Nr,{onClick:()=>e("system"),children:[x(be,{}),"System","system"===n?x(K,{className:"ml-auto"}):null]})]})]})}yt.registerLanguage("bash",bt),yt.registerLanguage("css",Nt),yt.registerLanguage("go",It),yt.registerLanguage("html",Lt),yt.registerLanguage("javascript",Ct),yt.registerLanguage("json",kt),yt.registerLanguage("markdown",At),yt.registerLanguage("python",Mt),yt.registerLanguage("rust",Et),yt.registerLanguage("sh",Tt),yt.registerLanguage("sql",St),yt.registerLanguage("tsx",Pt),yt.registerLanguage("typescript",Pt),yt.registerLanguage("xml",Lt),yt.registerLanguage("yaml",Dt);var Sr=S(null);function Pr({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,fileChangeActionDisabled:o,fileChangeActionPending:d,planActionDisabled:c,planActionPending:l,session:u}){const m=R(()=>new Set(t??[]),[t]),h=R(()=>function(e){const t=qi([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=Ji(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}(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))}(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(e=>"STREAMING"===e.status||"PENDING"===e.status)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}(n).filter(e=>!m.has(e.id)),[m,n]),f=R(()=>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=Ui(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(h),[h]),p=R(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&ei(n))return n.id}return null}(h),[h]),[g,v]=O(null);return y(Sr.Provider,{value:v,children:[f.map(t=>x(Dr,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:p,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,planActionDisabled:c,planActionPending:l,session:u},t.id)),x(Br,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function Lr({chatId:e,messages:t,session:n}){const a=R(()=>Fi(t),[t]);return a.pendingRequest?x("div",{className:"grid min-w-0 gap-1.5 overflow-hidden border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5 overflow-hidden",children:x(_r,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function Dr({chatId:e,entry:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"user"===t.type?x(Or,{message:t.message}):x(Rr,{chatId:e,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,messages:t.messages,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function Rr({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=R(()=>function(e){return function(e){const t=[];let n=[];const a=()=>{if(n.length){if(1===n.length){const[e]=n;t.push({id:`message:${e.id}`,message:e,type:"message"})}else t.push({id:`tool-burst:${n.map(e=>e.id).join(":")}`,messages:n,type:"toolBurst"});n=[]}};for(const r of e)if("previousActions"!==r.type&&"fileChanges"!==r.type){if(Hi(r.message)){const e=n.at(-1);if(!e||Ki(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&&Wi(e)!==Wi(r.message)&&a(),n.push(r.message)}return a(),t}(function(e){if(e.some(e=>"STREAMING"===e.status||"PENDING"===e.status))return e.map(e=>({message:e,sequence:e.sequence,type:"message"}));const t=function(e){return[...e].reverse().find(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind&&e.content.trim().length>0)}(e),n=[],a=[];for(const d of e)Gi(d,t)?n.push(d):a.push(d);const r=a.map(e=>({message:e,sequence:e.sequence,type:"message"}));if(!n.length)return r;const i=Math.min(...n.map(e=>e.sequence)),s=r.findIndex(e=>e.sequence>i),o={messages:n,sequence:i,type:"previousActions"};return s<0?[...r,o]:[...r.slice(0,s),o,...r.slice(s)]}(function(e){const t=[];let n=[];const a=()=>{n.length&&(t.push(function(e){return 1===e.length?e[0]:{...e[e.length-1],content:zi(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:ji(e)}}(n)),n=[])};for(const r of e)"ASSISTANT"!==r.role||"CHAT"!==r.kind?(a(),t.push(r)):n.push(r);return a(),t}([...e].sort((e,t)=>e.sequence-t.sequence)))))}(r),[r]),h=r.reduce((e,t)=>"FAILED"===t.status?"FAILED":"STREAMING"===t.status?"FAILED"===e?e:"STREAMING":"PENDING"===t.status?"FAILED"===e||"STREAMING"===e?e:"PENDING":e,null);return x("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"min-w-0 flex-1 overflow-hidden",children:[y("div",{className:"mb-1 flex items-center gap-2 pl-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:"Codex"}),h?x(Oa,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(qr,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:r,latestProposedPlanMessageId:a,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u},r.id))})]})})}function qr({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"toolBurst"===a.type?x(ni,{messages:a.messages}):"previousActions"===a.type?x(ai,{messages:a.messages}):"fileChanges"===a.type?x(ii,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(_r,{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 Or({message:e}){const t=function(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}):[]}(e);return x("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:y("div",{className:"min-w-0 max-w-[84%] overflow-hidden rounded-xl bg-foreground px-3 py-2 text-sm leading-6 text-background",children:[y("div",{className:"mb-1 flex items-center gap-2",children:[x(et,{className:"size-3.5 opacity-70"}),x("span",{className:"text-xs font-medium opacity-70",children:"You"})]}),x(Ur,{text:e.content}),t.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:t.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border border-background/20 bg-background/10 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-6 rounded object-cover",src:e.url}):x(oe,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:"file"===e.kind?e.path:e.name})]},e.id))}):null]})})}function _r({chatId:e,compact:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,onReviewFileChanges:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:m}){switch(i.kind){case"CHAT":return i.content.trim()?x(Qr,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(Wr,{}):null;case"THINKING":return x(Vr,{message:i});case"PLAN":return x(Jr,{metadata:Ji(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(ti,{metadata:Ji(i.metadata)});case"FILE_CHANGE":return x(ii,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(Ni,{chatId:e,compact:t,message:i,metadata:Ji(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(Ii,{chatId:e,compact:t,message:i,metadata:Ji(i.metadata),session:m});case"ERROR":return x(Pi,{metadata:Ji(i.metadata),text:i.content});default:return x(Li,{text:i.content})}}function $r({text:e}){const t=L(Sr);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(wt,{remarkPlugins:[xt],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?x("button",{className:Cn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:Cn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:Cn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:Cn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>x("del",{className:Cn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:Cn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:Cn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:Cn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:Cn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:Cn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:Cn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:Cn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:Cn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:Cn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>x("input","checkbox"===t?{className:Cn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>x("li",{className:Cn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:Cn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:Cn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:Cn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>x("strong",{className:Cn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:Cn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>x("ul",{className:Cn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:zr(e)})})}function Ur({text:e}){return x("div",{className:"grid min-w-0 gap-2",children:jr(e).map((e,t)=>"image"===e.type?x("img",{alt:"",className:"max-h-[28rem] max-w-full rounded-md border border-background/20 object-contain",loading:"lazy",src:e.src},`${e.src}-${t}`):e.text.trim()?x("div",{className:"whitespace-pre-wrap break-words",children:e.text},`${e.text.slice(0,32)}-${t}`):null)})}function zr(e){return jr(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function jr(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=Fr(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"}),r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),type:"text"}),t.length?t:[{text:e,type:"text"}]}function Fr(e){const t=e.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 Br({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)),Gn(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(Wa,{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(Xa,{className:"gap-1 px-4 pb-2 pt-4",children:[y(er,{className:"flex min-w-0 items-center gap-2",children:[x(oe,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(tr,{className:"truncate",children:Hr(r.data)})]}),x("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[x(Ie,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?x("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?x(Gr,{file:r.data}):null})]})})}function Gr({file:e}){const t=q({}),n=R(()=>(e.content??"").split(/\r?\n/),[e.content]);return D(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?x("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):x(nr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[x("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:Cn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[x("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),x("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:(i=n||" ",s=e.language,s&&yt.getLanguage(s)?yt.highlight(i,{language:s}).value:yt.highlightAuto(i).value)}})]},r);var i,s})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function Hr(e){return e?[Kr(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function Kr(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function Wr(){return x("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>x("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function Vr({message:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border border-dashed bg-muted/20 text-sm",open:"STREAMING"===e.status,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(Q,{className:"size-4 transition-transform group-open:rotate-180"}),x("span",{children:"Reasoning"})]}),e.content?x("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function Qr({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=ei(t),o="envelope"===s?.source?s.surroundingText:t.content,d=!!s&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"grid min-w-0 gap-2",children:[o.trim()?x($r,{text:o}):null,s?x(Yr,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Jr({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=ei(t),c=(d?.body??t.content).trim(),l=!!d&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ne,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x($r,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(Li,{text:"Planning..."}),o.length?x("div",{className:"mt-3 grid min-w-0 gap-2",children:o.map((e,t)=>y("div",{className:"flex items-start gap-2",children:[x(qa,{variant:"completed"===e.status?"default":"secondary",children:e.status}),x("div",{className:"min-w-0 flex-1",children:e.step})]},`${e.step}-${t}`))}):null,l&&d?x(Xr,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function Yr({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:s}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ne,{className:"size-4"}),"Proposed plan"]}),x($r,{text:i}),s?x(Xr,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Xr({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=O(""),[d,c]=O(!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(fa,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ie,{className:"animate-spin"}):x(B,{}),"Implement plan"]}),y(Wa,{open:d,onOpenChange:c,children:[y(Va,{render:x(fa,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(Oe,{}),"Tell Codex what to change"]}),y(Ya,{children:[y(Xa,{children:[x(er,{children:"Tell Codex What To Change"}),x(tr,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[x(Da,{className:"min-h-32 resize-y",placeholder:"Change the plan to...",value:s,onChange:e=>o(e.target.value)}),y("div",{className:"flex justify-end gap-2",children:[x(fa,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(fa,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ie,{className:"animate-spin"}):x(Oe,{}),"Send changes"]})]})]})]})]})]})}var Zr=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function ei(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Zr.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Zr,"").trim()}:"PLAN"!==e.kind||"result"!==Ji(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function ti({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(Q,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),x("code",{className:"min-w-0 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:e?.command??"command"})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(qa,{variant:bi(e),children:yi(e)}),"number"==typeof e?.exitCode?x(qa,{variant:0===e.exitCode?"secondary":"destructive",children:e.exitCode}):null]})]}),y("div",{className:"min-w-0 max-w-full overflow-hidden border-t px-3 py-2",children:[e?.cwd?x("div",{className:"mb-2 truncate text-xs text-muted-foreground",children:e.cwd}):null,x("pre",{className:"max-h-64 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e?.output||"(no output)"})]})]})}function ni({messages:e}){const[t,n]=O(!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,Ri),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=ji(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(Q,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(qa,{variant:"secondary",children:s.toLowerCase()})]}),y("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:[r.map(e=>x(ri,{message:e},e.id)),i>0?y(fa,{className:"mt-1 justify-start px-2 text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:e=>{e.preventDefault(),n(!0)},children:["+",i," commands/actions"]}):null]})]})}function ai({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(Q,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous ",1===e.length?"action":"actions"]})]}),x(qa,{variant:"secondary",children:"collapsed"})]}),x("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:e.map(e=>x(ri,{message:e},e.id))})]})}function ri({message:e}){const t=Ji(e.metadata),n=Ji(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(Ji(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===Ji(t)?.requestKind?"Permission request":"Approval request":"USER_INPUT_PROMPT"===e.kind?"Input request":"CHAT"===e.kind?"Assistant draft":e.kind.toLowerCase().replaceAll("_"," ")}(e,t),r="COMMAND_EXECUTION"===e.kind?n?.output||n?.cwd:e.content.trim();return y("div",{className:"grid min-w-0 max-w-full grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 overflow-hidden rounded-md bg-muted/45 px-2 py-1.5",children:[Vi(e),y("div",{className:"min-w-0",children:[x("div",{className:"truncate text-xs font-medium",children:a}),r?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:r}):null]}),x(qa,{variant:"secondary",children:e.status.toLowerCase()})]})}function ii({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=R(()=>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=Ji(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of si(e)){const e=n.get(t.path);e?n.set(t.path,{action:wi(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:xi(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:xi(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=L(Sr),o=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(de,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:i.entries.length?`${ci(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(mi,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(fa,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:ui(i)}),children:[r?x(Ie,{className:"animate-spin"}):x(ze,{}),"Undo"]}),y(fa,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:li(i)}),children:[r?x(Ie,{className:"animate-spin"}):x(ie,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Wa,{children:[y("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3 px-3 py-2 transition-colors hover:bg-muted/50",children:[x("button",{className:"min-w-0 truncate text-left font-mono text-xs underline-offset-2 hover:underline",type:"button",onClick:()=>s?.({path:e.path}),children:e.path}),x(mi,{additions:e.additions,deletions:e.deletions}),y(Va,{render:x(fa,{size:"icon-sm",variant:"ghost"}),children:[x(Q,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ya,{className:"max-w-5xl",children:[y(Xa,{children:[x(er,{children:e.path}),y(tr,{children:[e.action??"Edited"," file change reported by Codex."]})]}),x("pre",{className:"max-h-[70vh] min-w-0 max-w-full overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e.diff?.trim()||i.diff?.trim()||"No diff body was reported for this file."})]})]},e.path)):x("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?x("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>x(qa,{variant:"secondary",children:e},e))}):null]})}function si(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=di(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=di(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:oi(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=hi(n.path,n.filePath,n.file,n.name);return a?(e.push({action:pi(hi(n.action,n.kind,n.type)??"Edited"),additions:fi(n.additions),deletions:fi(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>gi(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=>gi(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 oi(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 di(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function ci(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function li(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 ui(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 mi({additions:e,deletions:t}){return e||t?y("span",{className:"shrink-0 whitespace-nowrap font-mono text-xs",children:[y("span",{className:"text-emerald-600 dark:text-emerald-400",children:["+",e]}),x("span",{className:"mx-1 text-muted-foreground",children:" "}),y("span",{className:"text-red-600 dark:text-red-400",children:["-",t]})]}):null}function hi(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function fi(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 pi(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function gi(e,t){return vi(e)===vi(t)}function vi(e){return di(e).replace(/\\/g,"/").replace(/^\.\//,"")}function wi(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 xi(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function yi(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function bi(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function Ni({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=Di(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(ki,{icon:x(Ce,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:Ci(a)}):y("div",{className:Cn("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:Cn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(Ce,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:Cn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?x("code",{className:"block min-w-0 max-w-full overflow-x-auto rounded border bg-background px-2 py-1 font-mono text-xs",children:a.command}):null,x("div",{className:Cn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(qa,{variant:"secondary",children:[x(K,{className:"size-3"}),"resolved"]}):y(w,{children:[y(fa,{disabled:s.isPending,size:"sm",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[s.isPending?x(Ie,{className:"animate-spin"}):x(K,{}),"Accept"]}),x(fa,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"session",permissions:!0}}:{decision:"acceptForSession",kind:"approval"}),children:"Accept for session"}),x(fa,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function Ii({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=O({}),[o,d]=O(0),c=Di(e,n,r),l=a?.questions?.length?a.questions:[{id:"answer",question:a?.message??"Answer"}],u="resolved"===a?.status||"COMPLETED"===n.status,m=Math.min(o,Math.max(l.length-1,0)),h=l[m],f=!!h&&Si(h,i[h.id]).length>0,p=l.every(e=>Si(e,i[e.id]).length>0),g=m>=l.length-1,v=()=>d(e=>Math.min(e+1,l.length-1));if(u||"expired"===a?.status)return x(ki,{icon:x(K,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:Ai(a)});return y("div",{className:Cn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:Cn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[x("div",{className:"min-w-0 font-medium",children:t?"Input needed":"Codex needs input"}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(fa,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(F,{})}),y(qa,{variant:"secondary",children:[m+1," / ",l.length]}),x(fa,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(B,{})}),u?x(qa,{variant:"secondary",children:"resolved"}):null]})]}),h?x(Ei,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??Mi,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:Cn("flex justify-end",t?"mt-2":"mt-4"),children:y(fa,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:Ti(l,i)}):U.error("Answer every question before submitting.")},children:[c.isPending?x(Ie,{className:"animate-spin"}):x(K,{}),"Submit"]})}):null]})}function ki({icon:e,status:t,title:n,value:a}){return y("div",{className:"grid min-w-0 max-w-full gap-1 overflow-hidden rounded-md border bg-muted/25 px-2.5 py-2 text-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"text-muted-foreground",children:e}),x("span",{className:"min-w-0 flex-1 font-medium",children:n}),t?x(qa,{variant:"secondary",children:t}):null]}),a?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:a}):null]})}function Ci(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 Ai(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 Mi={other:"",values:[]};function Ei({compact:e=!1,disabled:t,onChange:n,onAutoAdvance:a,question:r,value:i}){const s=r.options??[],o=function(e){if(!e.options?.length)return;return e.selectionLimit&&e.selectionLimit>0?e.selectionLimit:1}(r),d=i.values??[],c=i.other??"",l=e=>n({other:c,values:d,...e});return y("div",{className:"grid min-w-0 max-w-full gap-2 overflow-hidden",children:[y("div",{className:"grid min-w-0 gap-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?x("span",{className:Cn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:Cn("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(fa,{"aria-pressed":r,className:Cn("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:Cn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[x("span",{children:n.label}),n.description?x("span",{className:Cn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(K,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(pa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(Da,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(Da,{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 Ti(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:Si(e,t[e.id])}]))}}function Si(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function Pi({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[x(z,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function Li({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function Di(e,t,n){const a=A();return I({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return Gn(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>U.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>Wn(e,t))}})}var Ri=5;function qi(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=Oi(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=_i(n[t],r):(a.set(e,n.length),n.push(r))}return n}function Oi(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 _i(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:$i(t.status)>$i(e.status)?{...e,status:t.status}:e:$i(t.status)>$i(e.status)||t.sequence>=e.sequence?t:e}function $i(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Ui(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function zi(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 ji(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 Fi(e){return{pendingRequest:qi(e).sort((e,t)=>t.sequence-e.sequence).find(Bi)}}function Bi(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=Ji(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Gi(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Bi(e)&&("APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||("THINKING"===e.kind||"TOOL_ACTIVITY"===e.kind||("COMMAND_EXECUTION"===e.kind?"FAILED"!==e.status:"ASSISTANT"===e.role&&"CHAT"===e.kind&&(!!t&&t.content.includes(e.content.trim())))))))}function Hi(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Ki(e,t){return Wi(e)===Wi(t)}function Wi(e){return e.runId??e.turnId??e.chatId}function Vi(e){return"COMMAND_EXECUTION"===e.kind?x(Je,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?x(Ce,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x(Qi,{}):x(ee,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Qi(){return x(Ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Ji(e){return e&&"object"==typeof e?e:void 0}function Yi({...e}){return x(Rt.Root,{"data-slot":"popover",...e})}function Xi({...e}){return x(Rt.Trigger,{"data-slot":"popover-trigger",...e})}function Zi({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Rt.Portal,{children:x(Rt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Rt.Popup,{"data-slot":"popover-content",className:Cn("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 es({className:e,...t}){return x("div",{"data-slot":"popover-header",className:Cn("flex flex-col gap-0.5 text-sm",e),...t})}function ts({className:e,...t}){return x(Rt.Title,{"data-slot":"popover-title",className:Cn("font-medium",e),...t})}function ns({className:e,...t}){return x(Rt.Description,{"data-slot":"popover-description",className:Cn("text-muted-foreground",e),...t})}function as({...e}){return x(ht.Root,{"data-slot":"sheet",...e})}function rs({...e}){return x(ht.Portal,{"data-slot":"sheet-portal",...e})}function is({className:e,...t}){return x(ht.Backdrop,{"data-slot":"sheet-overlay",className:Cn("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 ss({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(rs,{children:[x(is,{}),y(ht.Popup,{"data-slot":"sheet-content","data-side":n,className:Cn("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(ht.Close,{"data-slot":"sheet-close",render:x(fa,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(nt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function os({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:Cn("flex flex-col gap-0.5 p-4",e),...t})}function ds({className:e,...t}){return x(ht.Title,{"data-slot":"sheet-title",className:Cn("font-heading text-base font-medium text-foreground",e),...t})}function cs({className:e,...t}){return x(ht.Description,{"data-slot":"sheet-description",className:Cn("text-sm text-muted-foreground",e),...t})}var ls=T.createContext(null);function us(){const e=T.useContext(ls);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function ms({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...s}){const o=function(){const[e,t]=T.useState(()=>"undefined"!=typeof window&&window.innerWidth<768);return T.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]=T.useState(!1),[l,u]=T.useState(e),m=t??l,h=T.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=T.useCallback(()=>o?c(e=>!e):h(e=>!e),[o,h,c]);T.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=T.useMemo(()=>({state:p,open:m,setOpen:h,isMobile:o,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,o,d,c,f]);return x(ls.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:Cn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function hs({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}=us();return"none"===n?x("div",{"data-slot":"sidebar",className:Cn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(as,{open:c,onOpenChange:l,...s,children:y(ss,{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(os,{className:"sr-only",children:[x(ds,{children:"Sidebar"}),x(cs,{children:"Displays the mobile sidebar."})]}),x("div",{className:"flex h-full w-full flex-col",children:r})]})}):y("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?n:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[x("div",{"data-slot":"sidebar-gap",className:Cn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),x("div",{"data-slot":"sidebar-container","data-side":e,className:Cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex","floating"===t||"inset"===t?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",a),...s,children:x("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r})})]})}function fs({className:e,onClick:t,...n}){const{toggleSidebar:a}=us();return y(fa,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:Cn(e),onClick:e=>{t?.(e),a()},...n,children:[x(De,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function ps({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:Cn("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 gs({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:Cn("flex flex-col gap-2 p-2",e),...t})}function vs({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:Cn("flex flex-col gap-2 p-2",e),...t})}function ws({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:Cn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function xs({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:Cn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function ys({className:e,render:t,...n}){return mt({defaultTagName:"div",props:ut({className:Cn("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 bs({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:Cn("w-full text-sm",e),...t})}function Ns({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:Cn("flex w-full min-w-0 flex-col gap-0",e),...t})}function Is({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:Cn("group/menu-item relative",e),...t})}var ks=dt("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 Cs({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=us(),c=mt({defaultTagName:"button",props:ut({className:Cn(ks({variant:n,size:a}),i)},s),render:r?x(En,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(Mn,{children:[c,x(Tn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function As({className:e,render:t,showOnHover:n=!1,...a}){return mt({defaultTagName:"button",props:ut({className:Cn("absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",n&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0",e)},a),render:t,state:{slot:"sidebar-menu-action",sidebar:"menu-action"}})}function Ms({className:e,size:t="default",...n}){return x(qt.Root,{"data-slot":"switch","data-size":t,className:Cn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(qt.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 Es({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=A(),[o,d]=O(new Set),[c,l]=O(e??""),[u,m]=O("directory"),[h,f]=O(e??""),[p,g]=O(""),[v,w]=O(!0),[b,N]=O(!1),[k,M]=O(""),[E,T]=O(""),S=C({enabled:r,queryKey:Rs(i,void 0),queryFn:()=>Un(i,void 0)}),P=S.data,L=P?.root??P?.path??"",R=c||P?.path||"",q=I({mutationFn:()=>{const e=k||R||P?.path,t=E.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 Gn(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>U.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),M(""),T(""),U.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),$(e.path)}});function _(e,t="directory"){l(e),m(t),f(e),L&&d(t=>{const n=new Set(t);for(const a of qs(e,L))n.add(a);return n})}function $(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function z(){const e=h.trim()||P?.path;e&&_(e)}return D(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),M(""),T(""))},[e,r]),D(()=>{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 qs(t,P.root))n.add(a);return n})},[e,P]),x(Wa,{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(Xa,{className:"gap-1 px-4 pb-2 pt-3",children:[x(er,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(tr,{className:"truncate",children:P?.root?`Workspace root: ${P.root}`:"file"===t?"Pick a file from the workspace.":"Pick a project folder for Codex."})]}),y("div",{className:"grid min-h-0 flex-1 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-1.5 px-3 pb-2 pt-1",children:[y("div",{className:"flex min-w-0 items-center gap-1",children:[x(Ds,{label:"Home",onClick:function(){P?.path&&$(P.path)},children:x(ge,{})}),x(Ds,{disabled:!R||q.isPending,label:"New folder",onClick:function(){const e=R||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),M(e),T(""),d(t=>{const n=new Set(t);if(L)for(const a of qs(e,L))n.add(a);return n.add(e),n}))},children:x(me,{})}),x(Ds,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(Ue,{className:Cn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[y("div",{className:"relative hidden min-w-0 sm:block",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(pa,{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)})]}),x(fa,{className:"h-7 px-2 text-xs",size:"sm",type:"button",variant:"ghost",onClick:()=>w(e=>!e),children:v?"Hide path":"Show path"})]})]}),v?y("div",{className:"flex min-w-0 items-center gap-1",children:[x(pa,{autoCapitalize:"none",className:"h-8 min-w-0 border-border/70 bg-muted/40 font-mono text-xs",spellCheck:!1,value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&z()}}),x(Ds,{label:"Open path",onClick:z,children:x(J,{})})]}):null,y("div",{className:"relative sm:hidden",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(pa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]}),x("div",{className:"min-h-0 bg-background",children:S.error?x("div",{className:"m-3 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:S.error.message||"Unable to browse workspace."}):x(nr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?x("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?x(Ts,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:E,createFolderParentPath:k,createFolderPending:q.isPending,selectedPath:R,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),M(""),T("")},onCreateFolderNameChange:T,onCreateFolderSubmit:()=>q.mutate(),onOpen:$,onSelect:_,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(Za,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[x("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),x("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":R||L||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(fa,{disabled:!R||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!R||"file"===t&&"file"!==u||(a(R),n(!1))},children:[x(K,{}),"file"===t?"Attach":"OK"]}),x(fa,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function Ts({createFolderName:e,createFolderParentPath:t,createFolderPending:n,directory:a,entry:r,expandedPaths:i,filter:s,level:o,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h,selectedPath:f,selectedType:p,session:g,showCreateFolder:v}){const w=i.has(r.path),b=$s(f)===$s(r.path),N=v&&$s(t)===$s(r.path),I=C({enabled:w&&!a,queryKey:Rs(g,r.path),queryFn:()=>Un(g,r.path)}),k=a??I.data,A=R(()=>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]),M=A.filter(e=>"directory"===e.type),E=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(Ps,{entry:r,expanded:w,level:o,loading:I.isFetching,selected:b,onOpen:u,onSelect:m,onToggle:h}),w?y("div",{className:"min-w-0",children:[I.error?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-destructive",style:{paddingLeft:34+18*(o+1)+"px"},children:I.error.message||"Unable to load folder."}):null,I.isLoading?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"Loading..."}):null,N?x(Ss,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,M.map(a=>x(Ts,{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)),E.map(e=>x(Ls,{entry:e,level:o+1,selected:"file"===p&&$s(f)===$s(e.path),onSelect:m},e.path)),!k||A.length||N?null:x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"No matching entries."})]}):null]})}function Ss({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[x("span",{}),x(me,{className:"size-4 shrink-0 text-muted-foreground"}),x(pa,{autoCapitalize:"none",autoFocus:!0,className:"h-7 min-w-0 border-border/70 bg-muted/40 text-xs",disabled:i,placeholder:"Folder name",spellCheck:!1,value:t,onChange:e=>a(e.target.value)}),x(Ds,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(K,{})}),x(Ds,{disabled:i,label:"Cancel new folder",onClick:n,children:x(tt,{})})]})}function Ps({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:Cn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(J,{className:Cn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?ue:le,{className:"size-4 shrink-0 text-muted-foreground"}),x("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function Ls({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:Cn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(se,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function Ds({children:e,disabled:t,label:n,onClick:a}){return y(fa,{className:"size-7 p-0",disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,x("span",{className:"sr-only",children:n})]})}function Rs(e,t){return["workspace-directory",e.serverUrl,t]}function qs(e,t){const n=_s(t),a=_s(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=Os(s,o),r.push(s);return r}function Os(e,t){const n=e.includes("\\")?"\\":"/";return`${_s(e)}${n}${t}`}function _s(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function $s(e){return _s(e).toLocaleLowerCase()}function Us(){const{clearSession:e,loading:t,refreshSession:n,session:a}=aa(),{chatId:s}=p(),o=function(e){const[t,n]=O(!1),[a,r]=O(0),[i,s]=O(null);return D(()=>{if(!e)return n(!1),r(0),void s(null);const t=function(e,t){let n=!1;const a=gt(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}}(a),[d,c]=O(""),[l,u]=O(null),[m,f]=O(0),[g,v]=O(!1),[b,N]=O("server"),[I,A]=O(!1),[M,E]=O(null),T=h(),S=P(e=>{f(e?.focusCreate?e=>e+1:0),N("accounts"),v(!0)},[]),L=P(e=>{"accounts"===e&&f(0),N(e)},[]),q=P((e="server")=>{N(e),v(!0)},[]),_=C({enabled:!!a,queryKey:["accounts"],queryFn:()=>async function(e){return Gn(e.serverUrl,"/api/accounts",{token:e.token})}(a)}),$=C({enabled:!!a,queryKey:["chats"],queryFn:()=>async function(e){return Gn(e.serverUrl,"/api/chats",{token:e.token})}(a)}),U=R(()=>_.data??[],[_.data]),z=R(()=>$.data??[],[$.data]),j=R(()=>s?z.find(e=>e.id===s)?.title??null:null,[s,z]);D(()=>{s&&u(s)},[s]);const F=R(()=>{if(s){const e=z.find(e=>e.id===s);if(e)return e}if(l){const e=z.find(e=>e.id===l);if(e)return e}return z[0]??null},[s,z,l]),B=R(()=>U.filter(e=>"CONNECTED"===e.status),[U]);Pn(j);const G=k({queries:B.map(e=>({enabled:!!a,queryKey:["rate-limits",e.id],queryFn:()=>$n(a,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),H=R(()=>Object.fromEntries(B.map((e,t)=>{const n=go(G[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[G,B]),K=R(()=>Object.fromEntries(B.map(e=>{const t=H[e.id];return t?[e.id,vo(t)]:null}).filter(e=>!!e)),[H,B]);if(D(()=>{d.trim()||A(!1)},[d]),t)return x(Ys,{});if(!a)return x(r,{replace:!0,to:"/connect"});const W={accounts:U,accountRateLimitSnapshots:H,accountUsageSummaries:K,activeProjectPath:d,chats:z,connectedAccounts:B,lastOpenedChat:F,openAccountManagement:S,openWorkspacePicker:E,session:a,setActiveProjectPath:c,setTerminalOpen:A,terminalOpen:I,terminalSocket:o.socket,terminalSocketConnected:o.connected};return y(w,{children:[y(ms,{children:[y(hs,{className:"border-r",collapsible:"icon",children:[x(gs,{children:y(fa,{className:"w-full justify-start",variant:"ghost",onClick:()=>T("/"),children:[x(Ve,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"New chat"})]})}),x(ws,{children:y(xs,{children:[x(ys,{children:"Chats"}),x(bs,{children:x(Fs,{chats:z,session:a})})]})}),x(vs,{children:y(fa,{className:"justify-start",variant:"ghost",onClick:()=>q(),children:[x(Ge,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"Settings"})]})})]}),y(ps,{className:"h-svh min-w-0 overflow-hidden",children:[y("header",{className:"flex h-14 shrink-0 items-center justify-between gap-3 border-b px-3",children:[x("div",{className:"flex min-w-0 items-center gap-2",children:x(fs,{variant:"ghost",children:x(Ee,{})})}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(zs,{active:I,disabled:!d.trim(),onToggle:()=>A(!I)}),x(js,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),x(Tr,{})]})]}),_.error||$.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:_.error?.message??$.error?.message??"Unable to load workspace data."}):null,x(i,{context:W})]})]}),x(ir,{accounts:U,activeTab:b,clearSession:e,createFocusKey:m,open:g,refreshSession:n,session:a,onTabChange:L,onOpenChange:v}),M?x(Es,{initialPath:M.initialPath,mode:M.mode,open:!!M,session:a,onOpenChange:e=>{e||E(null)},onSelect:M.onSelect}):null]})}function zs({active:e,disabled:t,onToggle:n}){return x(fa,{"aria-label":"Terminal","aria-pressed":e,disabled:t,size:"icon",title:t?"Choose a working directory":"Terminal",type:"button",variant:e?"secondary":"ghost",onClick:n,children:x(Je,{})})}function js({onAddAccount:e,onNewChat:t}){return y(xr,{children:[y(yr,{render:x(fa,{size:"icon",variant:"outline"}),children:[x($e,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(br,{align:"end",className:"w-44",children:[y(Nr,{onClick:t,children:[x(Ve,{}),"New chat"]}),y(Nr,{onClick:e,children:[x(et,{}),"Add account"]})]})]})}function Fs({chats:e,session:t}){const n=h(),{chatId:a}=p(),r=A(),[i,s]=O(null),[o,d]=O(""),[c,l]=O(null),[u,m]=O(""),[f,g]=O(null),v=R(()=>e.map(e=>({chat:e,dateLabel:Ao(e.lastActivityAt),folderName:Mo(e.workingDirectory)})),[e]),b=R(()=>{const e=new Map;for(const t of v)e.set(t.folderName,(e.get(t.folderName)??0)+1);return Array.from(e,([e,t])=>({count:t,name:e})).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:"base"}))},[v]),N=R(()=>{const e=u.trim().toLocaleLowerCase();return v.filter(({chat:t,folderName:n})=>(!f||n===f)&&(!e||[t.title,n,t.workingDirectory??""].join(" ").toLocaleLowerCase().includes(e)))},[v,f,u]),k=!!u.trim()||!!f;D(()=>{f&&!b.some(e=>e.name===f)&&g(null)},[f,b]);const C=I({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return jn(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>U.error(zo(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),M=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>U.error(zo(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(w,{children:[y("div",{className:"mb-2 flex items-center gap-1 px-1 group-data-[collapsible=icon]:hidden",children:[y("div",{className:"relative min-w-0 flex-1",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-2 size-4 text-muted-foreground"}),x(pa,{"aria-label":"Search chats",className:"h-8 bg-background pl-7",placeholder:"Search chats",value:u,onChange:e=>m(e.target.value)})]}),y(Yi,{children:[y(Xi,{render:x(fa,{"aria-label":"Filter chats by folder",className:Cn("relative",f&&"text-foreground"),size:"icon",variant:f?"secondary":"outline"}),children:[x(ce,{className:"size-4"}),f?x("span",{"aria-hidden":"true",className:"absolute right-1.5 top-1.5 size-2 rounded-full bg-red-500 ring-2 ring-background"}):null]}),y(Zi,{align:"end",className:"w-64",side:"bottom",children:[y(es,{children:[x(ts,{children:"Folder"}),x(ns,{children:"Show chats from one folder."})]}),y("div",{className:"max-h-72 overflow-y-auto",children:[y("button",{className:Cn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",!f&&"bg-muted"),type:"button",onClick:()=>g(null),children:[x("span",{className:"min-w-0 flex-1 truncate",children:"All folders"}),x("span",{className:"text-xs text-muted-foreground",children:e.length}),f?null:x(K,{className:"size-4"})]}),b.map(e=>y("button",{className:Cn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",f===e.name&&"bg-muted"),type:"button",onClick:()=>g(e.name),children:[x(le,{className:"size-4 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"text-xs text-muted-foreground",children:e.count}),f===e.name?x(K,{className:"size-4"}):null]},e.name))]})]})]})]}),x(Ns,{children:N.length?N.map(({chat:e,dateLabel:t,folderName:r})=>y(Is,{children:[y(Cs,{className:"h-14 min-w-0 items-start py-1.5 pr-2! group-has-data-[sidebar=menu-action]/menu-item:pr-2! group-data-[collapsible=icon]:items-center! group-data-[collapsible=icon]:justify-center!",isActive:e.id===a,size:"lg",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Te,{className:"mt-0.5 group-data-[collapsible=icon]:mt-0!"}),y("span",{className:"min-w-0 flex-1 group-data-[collapsible=icon]:hidden!",children:[x("span",{className:"block truncate leading-5",children:e.title}),y("span",{className:"flex min-w-0 items-center gap-2 text-[11px] leading-4 font-normal text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1",children:[x(Z,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:t})]}),y("span",{className:"flex min-w-0 items-center gap-1",children:[x(le,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:r})]})]})]})]}),y(xr,{children:[y(yr,{render:x(As,{"aria-label":"Chat actions",className:"right-2 top-3 size-7 pointer-events-none opacity-0 group-hover/menu-item:pointer-events-auto group-hover/menu-item:opacity-100 group-focus-within/menu-item:pointer-events-auto group-focus-within/menu-item:opacity-100 aria-expanded:pointer-events-auto aria-expanded:opacity-100 [&>svg]:size-5",showOnHover:!0}),children:[x(Pe,{}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(br,{align:"end",className:"w-40",children:[y(Nr,{onClick:()=>{s(e),d(e.title)},children:[x(qe,{}),"Rename"]}),y(Nr,{onClick:()=>l(e),children:[x(j,{}),"Archive"]})]})]})]},e.id)):y("div",{className:"px-2 py-3 text-sm text-muted-foreground group-data-[collapsible=icon]:hidden",children:[e.length?"No matching chats.":"No chats yet.",k?x(fa,{className:"mt-2 h-7 px-2 text-xs",size:"sm",variant:"outline",onClick:()=>{g(null),m("")},children:"Clear filters"}):null]})}),x(Wa,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ya,{children:[y(Xa,{children:[x(er,{children:"Rename chat"}),x(tr,{children:"Choose a short title for the sidebar."})]}),x(pa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C.mutate()}}),x(Za,{children:x(fa,{disabled:C.isPending,onClick:()=>C.mutate(),children:"Save"})})]})}),x(Wa,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ya,{children:[y(Xa,{children:[x(er,{children:"Archive chat?"}),y(tr,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(Za,{children:[x(fa,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(fa,{disabled:M.isPending||!c,variant:"destructive",onClick:()=>{c&&M.mutate(c)},children:[x(j,{}),"Archive"]})]})]})})]})}function Bs(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 Gs(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await Ks(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Hs(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 Ks(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 Ws(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:Eo(t),path:t}}function Vs({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(w,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(se,{className:"size-3.5 shrink-0 text-muted-foreground"}),x("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),x(fa,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(tt,{className:"size-3"})})]},e.id))}):null]})}function Qs(){const{accountRateLimitSnapshots:e,accountUsageSummaries:t,connectedAccounts:n,lastOpenedChat:a,openAccountManagement:r,openWorkspacePicker:i,session:s,setActiveProjectPath:o,setTerminalOpen:d,terminalOpen:c,terminalSocket:l,terminalSocketConnected:u}=fo(),[m,f]=O(""),[p,g]=O([]),[v,w]=O("default"),[b,N]=O(null),[k,M]=O(a?.autoRotateAccount??!1),[E,T]=O(a?.accountId??null),[S,L]=O("default"),[_,$]=O(null),[z,j]=O(null),[F,B]=O(null),[G,H]=O(a?.workingDirectory?.trim()??""),K=A(),W=h(),V=q(null),Q=q(a?.id??null);D(()=>(o(G.trim()),()=>o("")),[o,G]),D(()=>{if(!a||Q.current===a.id)return;Q.current=a.id;const e=a.workingDirectory?.trim()??"";e&&H(t=>t.trim()?t:e);const t=a.accountId;t&&T(e=>e??t)},[a]);const J=R(()=>xo(n,e),[e,n]),Y=n.find(e=>e.id===E),X=(k&&Y&&yo(e[Y.id])<0?void 0:Y)??J??n[0];D(()=>{if(!X?.id)return j(null),N(null),L("default"),$(null),void B(null);j(X.id),N(X.defaultModel??null),L(X.defaultPermissionMode??"default"),$(X.defaultReasoningEffort??null),B(X.defaultServiceTier??null)},[X?.defaultModel,X?.defaultPermissionMode,X?.defaultReasoningEffort,X?.defaultServiceTier,X?.id]);const Z=C({enabled:!!X?.id,queryKey:["models",X?.id],queryFn:()=>_n(s,X.id),staleTime:3e5}),ee=C({enabled:!!X?.id,queryKey:["rate-limits",X?.id],queryFn:()=>$n(s,X.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),te=Z.data?.data??[],ne=z===X?.id,ae=ne?b:null,re=ne?_:null,ie=ne?F:null,se=po(te,ae),oe=se?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],de=re??se?.defaultReasoningEffort??null,ce=se?.additionalSpeedTiers??[],le=go(ee.data),me=I({mutationFn:({accountId:e,settings:t})=>qn(s,e,t),onError:e=>U.error(zo(e)),onSuccess:e=>{K.setQueryData(["accounts"],t=>$o(t,e))}}),he=I({mutationFn:async()=>{if(!X)throw new Error("Connect an account before starting a chat.");if(!G.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return Gn(e.serverUrl,"/api/chats",{body:t,token:e.token})}(s,{accountId:X.id,autoRotateAccount:k,collaborationMode:v,model:ae,permissionMode:S,reasoningEffort:re,serviceTier:ie,workingDirectory:G.trim()});return{chat:e,response:await Bn(s,e.id,{attachments:Bs(p),content:m.trim()})}},onError:e=>U.error(zo(e)),onSuccess:({chat:e,response:t})=>{f(""),g([]),M(!1),w("default"),L(X?.defaultPermissionMode??"default"),H(""),K.setQueryData(["messages",e.id],Oo(void 0,_o(t))),K.invalidateQueries({queryKey:["chats"]}),W(`/chat/${e.id}`)}}),fe=P(e=>{e?.length&&Gs(e).then(e=>{g(t=>[...t,...e])}).catch(e=>U.error(zo(e)))},[]),pe=P(()=>{i({initialPath:G,mode:"file",onSelect:e=>{g(t=>[...t,Ws(e)])}})},[i,G]),ge=G.trim(),ve=c&&!!ge;return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto overflow-x-hidden",children:y("div",{className:Cn("mx-auto flex w-full flex-1 flex-col gap-6 px-4",ve?"max-w-5xl justify-start py-4 sm:justify-center sm:py-8":"max-w-3xl justify-center py-8"),children:[y("div",{className:"text-center",children:[x("h1",{className:"text-2xl font-semibold tracking-normal",children:"What should Codex work on?"}),x("p",{className:"mt-2 text-sm text-muted-foreground",children:"Select an account and workspace, then send the first message."})]}),n.length?null:y("div",{className:"rounded-md border bg-muted/35 p-4 text-sm",children:[x("div",{className:"font-medium",children:"No connected account"}),x("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(fa,{className:"mt-3",size:"sm",onClick:r,children:[x(et,{}),"Manage Accounts"]})]}),ve?x(mr,{onClosePanel:()=>d(!1),projectPath:ge,socket:l,socketConnected:u}):y("div",{className:"grid gap-3 rounded-xl border bg-background p-3 shadow-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-lg border bg-muted/25 px-2 py-1.5",children:[x(pa,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-xs shadow-none focus-visible:ring-0",placeholder:"Working directory",spellCheck:!1,value:G,onChange:e=>H(e.target.value)}),y(fa,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>i({initialPath:G,onSelect:H}),children:[x(ue,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),x(Da,{className:"min-h-32 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:"Message Codex",value:m,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!he.isPending&&Uo(m,G,X,p)&&he.mutate())},onPaste:e=>{const t=Hs(e.clipboardData);t.length&&fe(t)}}),x(Vs,{attachments:p,imageInputRef:V,onAttachImages:fe,onRemove:e=>g(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[x(oo,{attachmentDisabled:he.isPending,disabled:!X,mode:v,onAttachFile:pe,onAttachImage:()=>V.current?.click(),onSelectMode:w}),x(Xs,{account:X,autoRotate:k,autoRotateDisabled:he.isPending,connectedAccounts:n,disabled:!n.length,selectedAccountId:X?.id??"",usageSummaries:t,onAutoRotateChange:M,onSelect:e=>{T(e)}}),x(uo,{activeReasoningEffort:de,disabled:!X,modelOptions:te,modelValue:ae??"",pending:Z.isFetching,reasoningOptions:oe,reasoningValue:re??"",selectedModel:se,serviceTierOptions:ce,serviceTierValue:ie??"",onSelectModel:e=>{const t=X?.id??null;j(t),N(e||null),$(null),B(null),t&&me.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=X?.id??null,n=e||null;j(t),$(n),t&&me.mutate({accountId:t,settings:{defaultModel:ae,defaultReasoningEffort:n,defaultServiceTier:ie}})},onSelectServiceTier:e=>{const t=X?.id??null,n=e||null;j(t),B(n),t&&me.mutate({accountId:t,settings:{defaultModel:ae,defaultReasoningEffort:re,defaultServiceTier:n}})}}),x(co,{disabled:!X,mode:S,onSelectMode:e=>{L(e),X?.id&&me.mutate({accountId:X.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(so,{pending:ee.isFetching,snapshot:le}),x(lo,{loading:he.isPending,sendDisabled:!Uo(m,G,X,p),onSend:()=>he.mutate()})]})]})]})]})})}function Js(){const{chatId:e}=p(),{accounts:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,connectedAccounts:i,openWorkspacePicker:s,session:o,setActiveProjectPath:d,setTerminalOpen:c,terminalOpen:l,terminalSocket:u,terminalSocketConnected:m}=fo(),[h,f]=O(""),[g,v]=O([]),[b,N]=O("OFFLINE"),[k,M]=O(null),E=q(null),T=q(null),S=q(!0),L=A(),_=R(()=>["chat",e],[e]),$=R(()=>["messages",e],[e]);D(()=>{M(null),v([])},[e]);const z=C({enabled:!!e,queryKey:_,queryFn:()=>zn(o,e)}),j=C({enabled:!!e,queryKey:$,queryFn:()=>Fn(o,e,0)}),F=C({enabled:!!e&&!k,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(o,e),retry:!1,staleTime:3e4});D(()=>{F.data?.usage&&!k&&M(F.data.usage)},[F.data?.usage,k]);const B=R(()=>j.data?.data??[],[j.data]),G=R(()=>Fi(B),[B]),H=R(()=>G.pendingRequest?[G.pendingRequest.id]:[],[G.pendingRequest]),K=R(()=>B.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[B]),W=z.data,V=t.find(e=>e.id===W?.accountId);D(()=>(d(W?.workingDirectory?.trim()??""),()=>d("")),[W?.workingDirectory,d]);const Q=P(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),J=P((e="auto")=>{const t=E.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),Y=C({enabled:!!V?.id&&"CONNECTED"===V.status,queryKey:["models",V?.id],queryFn:()=>_n(o,V.id),staleTime:3e5}),X=C({enabled:!!V?.id&&"CONNECTED"===V.status,queryKey:["rate-limits",V?.id],queryFn:()=>$n(o,V.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),Z=I({mutationFn:t=>jn(o,e,{accountId:t.accountId}),onError:e=>U.error(zo(e)),onSuccess:(e,t)=>{L.setQueryData(_,e),L.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&U.success("Chat account updated.")}}),ee=I({mutationFn:t=>jn(o,e,t),onError:e=>U.error(zo(e)),onSuccess:e=>{L.setQueryData(_,e),L.invalidateQueries({queryKey:["chats"]})}}),te=I({mutationFn:({accountId:e,settings:t})=>qn(o,e,t),onError:e=>U.error(zo(e)),onSuccess:e=>{L.setQueryData(["accounts"],t=>$o(t,e))}}),ne=I({mutationFn:t=>Bn(o,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??h).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>U.error(zo(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(f(""),v([])),L.setQueryData($,t=>Oo(t,_o(e))),L.invalidateQueries({queryKey:_}),L.invalidateQueries({queryKey:["chats"]})}}),ae=I({mutationFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(o,e),onError:e=>U.error(zo(e)),onSuccess:()=>{U.message("Stop requested.")}}),re=R(()=>xo(i,n),[n,i]),ie=R(()=>function(e,t,n,a){return e?.autoRotateAccount&&"RUNNING"!==e.status&&n&&n.id!==e.accountId?yo(a[n.id])<0?null:!t||"CONNECTED"!==t.status||yo(a[t.id])<0?n:null:null}(W,V,re,n),[n,re,V,W])?.id;D(()=>{!ie||Z.isPending||ne.isPending||Z.mutate({accountId:ie,notify:!1})},[ie,ne.isPending,Z.isPending]);const se=P(e=>{e?.length&&Gs(e).then(e=>{v(t=>[...t,...e])}).catch(e=>U.error(zo(e)))},[]),oe=P(()=>{s({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{v(t=>[...t,Ws(e)])}})},[z.data?.workingDirectory,s]),de=P(e=>{ne.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"}})},[ne]),ce=P(e=>{var t;ne.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"}})},[ne]),ue=P(e=>{ne.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ne]),me=P(e=>{ne.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ne]);if(D(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?L.setQueryData($,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return Wn(e,n);if("message.failed"===t)return Wn(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(n,e,t)):M(t):n(t)};return function(e,t,n){let a=!1;const r=gt(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()}}(o,e,{onClose:()=>N("OFFLINE"),onError:e=>{N("OFFLINE"),U.error(zo(e))},onEvent:t,onOpen:()=>{var a;N("ONLINE"),Fn(o,e,(a=L.getQueryData($),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>U.error(zo(e))),zn(o,e).then(n).catch(e=>U.error(zo(e)))}});function n(e){L.setQueryData(_,e),L.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,_,$,L,o]),D(()=>{S.current=!0;const e=requestAnimationFrame(()=>J("auto"));return()=>cancelAnimationFrame(e)},[e,J]),D(()=>{if(!S.current)return;let e=0;const t=requestAnimationFrame(()=>{J("auto"),e=requestAnimationFrame(()=>J("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[K,J]),!e)return x(r,{replace:!0,to:"/"});if(z.isLoading||j.isLoading)return x(Ys,{});if(z.error)return x("main",{className:"flex flex-1 items-center justify-center p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:z.error.message})]})});const he=W,fe=V,pe="RUNNING"===he?.status,ge=Y.data?.data??[],ve=!!he&&!pe&&i.length>0,we=po(ge,he?.model),xe=we?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],ye=he?.reasoningEffort??we?.defaultReasoningEffort??null,be=we?.additionalSpeedTiers??[],Ne=go(X.data);return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden",children:[y("div",{className:"flex min-h-12 items-center justify-between gap-3 border-b px-4 py-2",children:[y("div",{className:"min-w-0",children:[y("div",{className:"flex items-center gap-2",children:[x(eo,{state:b}),x("h1",{className:"truncate text-sm font-semibold tracking-normal",children:he?.title??"Chat"})]}),y("div",{className:"mt-1 flex min-w-0 items-center gap-3 text-xs text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(et,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:fe?.displayName??"No account selected"})]}),y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(le,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:he?.workingDirectory??"No working directory"})]})]})]}),he?x(to,{chatId:he.id,disabled:pe,session:o}):null]}),x(nr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:E,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{S.current=Q(e.currentTarget)}},children:x("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:B.length?x(Pr,{chatId:e,fileChangeActionDisabled:pe,fileChangeActionPending:ne.isPending,hiddenMessageIds:H,messages:B,onImplementPlan:de,onRevisePlan:ce,onReviewFileChanges:ue,onUndoFileChanges:me,planActionDisabled:pe,planActionPending:ne.isPending,session:o}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),x("div",{className:Cn("min-w-0 border-t bg-background",l&&he?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:l&&he?.workingDirectory?x("div",{className:"p-3",children:x("div",{className:"mx-auto max-w-5xl",children:x(mr,{onClosePanel:()=>c(!1),projectPath:he.workingDirectory,socket:u,socketConnected:m})})}):y(w,{children:[x(Lr,{chatId:e,messages:B,session:o}),x("div",{className:"p-3",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:[x(Da,{className:"max-h-44 min-h-20 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:he?.workingDirectory?fe?"Message Codex":"Choose an account first":"Choose a directory first",value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Uo(h,he?.workingDirectory??"",fe,g)&&ne.mutate({attachments:Bs(g),clearComposer:!0,delivery:pe?"queue":void 0}))},onPaste:e=>{const t=Hs(e.clipboardData);t.length&&se(t)}}),x(Vs,{attachments:g,imageInputRef:T,onAttachImages:se,onRemove:e=>v(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(oo,{attachmentDisabled:ne.isPending,disabled:!he,modeDisabled:pe,mode:he?.collaborationMode??"default",onAttachFile:oe,onAttachImage:()=>T.current?.click(),pending:ee.isPending,steerDisabled:!pe||ne.isPending||!Uo(h,he?.workingDirectory??"",fe,g),onSteerActiveTurn:()=>ne.mutate({attachments:Bs(g),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>ee.mutate({collaborationMode:e})}),x(Xs,{account:fe,autoRotate:he?.autoRotateAccount??!1,autoRotateDisabled:!he||ee.isPending,connectedAccounts:i,disabled:!he||!i.length,pending:Z.isPending,selectedAccountId:he?.accountId??"",selectionDisabled:!ve,usageSummaries:a,onAutoRotateChange:e=>ee.mutate({autoRotateAccount:e}),onSelect:e=>Z.mutate({accountId:e})}),x(uo,{activeReasoningEffort:ye,disabled:!he||pe||!fe,modelOptions:ge,modelValue:he?.model??"",pending:Y.isFetching||ee.isPending,reasoningOptions:xe,reasoningValue:he?.reasoningEffort??"",selectedModel:we,serviceTierOptions:be,serviceTierValue:he?.serviceTier??"",onSelectModel:e=>{he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),ee.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:he.model??null,defaultReasoningEffort:t,defaultServiceTier:he.serviceTier??null}}),ee.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:he.model??null,defaultReasoningEffort:he.reasoningEffort??null,defaultServiceTier:t}}),ee.mutate({serviceTier:t})}}),x(co,{disabled:!he,mode:he?.permissionMode??"default",pending:ee.isPending,onSelectMode:e=>{he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultPermissionMode:e}}),ee.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(Zs,{usage:k}),x(so,{pending:X.isFetching,snapshot:Ne}),x(lo,{loading:ne.isPending,running:pe,sendDisabled:!Uo(h,he?.workingDirectory??"",fe,g),stopPending:ae.isPending,onSend:()=>ne.mutate({attachments:Bs(g),clearComposer:!0,delivery:pe?"queue":void 0}),onStop:()=>ae.mutate()})]})]})]})})]})})]})}function Ys(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{className:"size-5 animate-spin text-muted-foreground"})})}function Xs({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(xr,{children:[y(yr,{render:x(fa,{"aria-label":m,className:"max-w-44 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:r||o,size:"sm",title:m,variant:t?"secondary":"ghost"}),children:[o?x(Ie,{className:"animate-spin"}):x(t?Ue:et,{}),x("span",{className:"truncate max-sm:sr-only",children:u})]}),y(br,{align:"start",className:"w-64",children:[i?y(w,{children:[y(Nr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[x(Ue,{}),x("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),x(Ms,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),x(Er,{})]}):null,x(Ar,{value:d,onValueChange:e=>{e&&e!==d&&s(e)},children:a.map(e=>y(Mr,{disabled:o||c,value:e.id,children:[x("span",{className:"truncate",children:e.displayName}),l[e.id]?x("span",{className:"ml-auto mr-5 shrink-0 text-xs text-muted-foreground",children:l[e.id]}):null]},e.id))})]})]})}function Zs({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=Lo(e.usedPercent);return y(Yi,{children:[x(Xi,{render:x(fa,{"aria-label":`Context ${Math.round(t)}% used`,className:"size-7 px-0 text-xs font-normal text-muted-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8",size:"icon-sm",title:`Context ${Math.round(t)}% used`,variant:"ghost"}),children:x("span",{"aria-hidden":"true",className:"grid size-4 shrink-0 place-items-center rounded-full text-foreground",style:{background:`conic-gradient(var(--foreground) ${3.6*t}deg, var(--muted) 0deg)`},children:x("span",{className:"size-2 rounded-full bg-background"})})}),y(Zi,{align:"end",className:"w-72",side:"top",children:[y(es,{children:[x(ts,{children:"Context window"}),x(ns,{children:"Codex automatically compacts this context when needed."})]}),y("div",{className:"grid gap-3",children:[y("div",{children:[y("div",{className:"mb-1 flex items-center justify-between gap-2 text-sm",children:[y("span",{className:"font-medium",children:[Math.round(t),"% used"]}),y("span",{className:"text-muted-foreground",children:[e.remainingPercent,"% left"]})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:"h-full rounded-full bg-foreground",style:{width:`${t}%`}})})]}),y("div",{className:"rounded-md bg-muted/60 p-2 font-mono text-xs text-muted-foreground",children:[To(e.tokensUsed)," /"," ",To(e.tokenLimit)," tokens used"]})]})]})]})}function eo({state:e}){const t="ONLINE"===e;return x("span",{"aria-label":t?"Realtime connected":"Realtime disconnected",className:Cn("size-2.5 shrink-0 rounded-full",t?"bg-emerald-500":"bg-muted-foreground/45"),title:t?"Realtime connected":"Realtime disconnected"})}function to({chatId:e,disabled:t,session:n}){const[a,r]=O(!1),i=A(),s=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(n,e),refetchInterval:2e4,retry:!1}),o=s.data;if(o&&!o.isRepo)return null;const d=o?.branch??"Git",c=!!o&&!o.clean,l=o?io(o):"";return y(Wa,{open:a,onOpenChange:r,children:[y(fa,{className:"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",disabled:s.isLoading&&!o,size:"sm",type:"button",variant:"outline",onClick:()=>r(!0),children:[x(fe,{className:"size-3.5"}),x("span",{className:"min-w-0 truncate",children:d}),l?x("span",{className:"shrink-0 text-muted-foreground",children:l}):null,x("span",{className:Cn("ml-0.5 size-1.5 shrink-0 rounded-full",c?"bg-amber-500":"bg-emerald-500")})]}),a?x(no,{chatId:e,disabled:t,queryClient:i,session:n,status:o}):null]})}function no({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=O(""),[o,d]=O(""),[c,l]=O(""),u=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),m=C({enabled:!!e,queryKey:["git-diff",e],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return Gn(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e),retry:!1}),h=I({mutationFn:function(t){return async function(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>U.error(zo(e)),onSuccess:t=>{U.success(t.message),l(""),d(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]})}}),f=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(u.data,i),p=t||h.isPending,g=r??h.data?.status;return y(Ya,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Xa,{className:"gap-1 px-4 pb-2 pt-4",children:[x(er,{children:"Git"}),x(tr,{className:"truncate",children:g?.root??"Repository information"})]}),y("div",{className:"grid min-h-0 flex-1 gap-0 overflow-hidden border-y md:grid-cols-[18rem_minmax(0,1fr)]",children:[y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] border-b md:border-b-0 md:border-r",children:[y("div",{className:"grid gap-2 p-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(fe,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:g?.branch??"No branch"}),x("div",{className:"text-xs text-muted-foreground",children:g?ro(g):"Loading..."})]}),x(fa,{className:"ml-auto",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]})},children:x(Ue,{className:Cn(h.isPending&&"animate-spin")})})]}),x(pa,{className:"h-8",placeholder:"Find branch",value:i,onChange:e=>s(e.target.value)})]}),x(nr,{className:"min-h-0",children:y("div",{className:"grid gap-1 p-2",children:[f.map(e=>y(fa,{className:"justify-start",disabled:p||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>{window.confirm(`Switch to ${e.name}?`)&&h.mutate({action:"checkout",branch:e.name})},children:[x(fe,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),f.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:"No branches found."})]})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(pa,{className:"h-8",placeholder:"New branch",value:o,onChange:e=>d(e.target.value)}),y(fa,{disabled:p||!o.trim(),size:"sm",type:"button",variant:"outline",onClick:()=>h.mutate({action:"createBranch",branch:o.trim()}),children:[x($e,{}),"Create branch"]})]})]}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-3 p-3",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(fa,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&h.mutate({action:"pull"})},children:[x(ae,{}),"Pull"]}),y(fa,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&h.mutate({action:"push"})},children:[x(Ze,{}),"Push"]}),x("span",{className:"ml-auto text-xs text-muted-foreground",children:h.isPending?"Running git...":ro(g)})]}),y("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_auto]",children:[x(Da,{className:"min-h-16 resize-y",placeholder:"Commit message",value:c,onChange:e=>l(e.target.value)}),y(fa,{className:"self-end",disabled:p||!c.trim()||g?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&h.mutate({action:"commit",message:c.trim()})},children:[x(pe,{}),"Commit"]})]})]}),x(nr,{className:"min-h-0 border-t",children:y("div",{className:"grid gap-3 p-3",children:[x(ao,{status:g}),x("pre",{className:"max-h-[46vh] min-w-0 overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:m.data?.diff?.trim()||m.data?.stat?.trim()||"No tracked diff."})]})})]})]})]})}function ao({status:e}){const t=e?.changedFiles??[];return t.length?x("div",{className:"grid max-h-40 gap-1 overflow-auto rounded-md border p-2",children:t.map(e=>y("div",{className:"grid min-w-0 grid-cols-[3rem_minmax(0,1fr)] gap-2 text-xs",children:[x("span",{className:"font-mono text-muted-foreground",children:e.status}),x("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):x("div",{className:"rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function ro(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,io(e)].filter(Boolean).join(" · "):"Git unavailable"}function io(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function so({pending:e,snapshot:t}){const n=vo(t),a=wo(t);return y(Yi,{children:[y(Xi,{render:x(fa,{className:Cn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:justify-center max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(Ie,{className:"size-3 animate-spin"}):x(at,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(Zi,{align:"start",className:"w-80",side:"top",children:[y(es,{children:[x(ts,{children:"Usage capacity"}),x(ns,{children:"Current Codex account limits refresh automatically."})]}),x(mo,{pending:e,snapshot:t})]})]})}function oo({attachmentDisabled:e,disabled:t,mode:n,modeDisabled:a,onAttachFile:r,onAttachImage:i,onSelectMode:s,onSteerActiveTurn:o,pending:d,steerDisabled:c}){const l="plan"===n,u=e||t;return y(xr,{children:[x(yr,{render:x(fa,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:l?"secondary":"ghost"}),children:d?x(Ie,{className:"animate-spin"}):x($e,{})}),y(br,{align:"start",className:"w-56",children:[y(Nr,{className:"gap-3 py-2",disabled:t||a||d,onClick:e=>{e.preventDefault(),s(l?"default":"plan")},children:[x(Ne,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(Ms,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(Nr,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[x(ve,{}),x("span",{children:"Attach image"})]}),y(Nr,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[x(Re,{}),x("span",{children:"Attach workspace file"})]}),o?y(Nr,{className:"gap-3 py-2",disabled:c,onClick:o,children:[x(G,{}),x("span",{children:"Steer active turn"})]}):null]})]})}function co({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(xr,{children:[y(yr,{render:x(fa,{"aria-label":qo(t),className:Cn("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:qo(t),variant:"ghost"}),children:[a?x(Ie,{className:"animate-spin"}):x(r?Ke:He,{}),x("span",{className:"truncate max-sm:sr-only",children:qo(t)})]}),x(br,{align:"start",className:"w-48",children:y(Ar,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(Mr,{value:"default",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Default"}),x("span",{className:"text-xs text-muted-foreground",children:"Codex asks as needed."})]})}),x(Mr,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Full access"}),x("span",{className:"text-xs text-muted-foreground",children:"No sandbox or approval prompts."})]})})]})})]})}function lo({loading:e,onSend:t,onStop:n,running:a=!1,sendDisabled:r,stopPending:i=!1}){return a?y("div",{className:"flex items-center gap-1",children:[x(fa,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:r||e,size:"icon",title:"Queue message",type:"button",onClick:t,children:e?x(Ie,{className:"animate-spin"}):x(G,{})}),x(fa,{"aria-label":"Stop task",className:"size-9 rounded-full",disabled:i||!n,size:"icon",title:"Stop task",type:"button",variant:"secondary",onClick:n,children:i?x(Ie,{className:"animate-spin"}):x(We,{})})]}):x(fa,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:r||e,size:"icon",type:"button",onClick:t,children:e?x(Ie,{className:"animate-spin"}):x(G,{})})}function uo({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?Do(e):null,a?Ro(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(xr,{children:[y(yr,{render:x(fa,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:t||o,size:"sm",title:h,variant:"ghost"}),children:[o?x(Ie,{className:"animate-spin"}):x(ne,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(br,{align:"start",className:"w-72",children:[y(Ir,{children:[y(kr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(H,{}),x("span",{children:"Intelligence"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:Do(e)})]}),x(Cr,{className:"w-52",children:y(Ar,{value:c,onValueChange:i,children:[x(Mr,{value:"",children:"Model default"}),d.map(e=>x(Mr,{value:e,children:Do(e)},e))]})})]}),y(Ir,{children:[y(kr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(ne,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(Cr,{className:"w-64",children:y(Ar,{value:a,onValueChange:r,children:[x(Mr,{value:"",children:"Default model"}),n.map(e=>x(Mr,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(Ir,{children:[y(kr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(he,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:Ro(m)})]}),x(Cr,{className:"w-52",children:y(Ar,{value:m,onValueChange:s,children:[x(Mr,{value:"",children:"Default speed"}),u.map(e=>x(Mr,{value:e,children:Ro(e)},e))]})})]})]})]})}function mo({pending:e,snapshot:t}){return t?y("div",{className:"grid gap-2",children:[y("div",{className:"grid gap-1 text-xs text-muted-foreground",children:[t.limitName?x("div",{children:t.limitName}):null,t.planType?y("div",{children:["Plan: ",Po(t.planType)]}):null,t.credits?y("div",{children:["Credits:"," ",t.credits.unlimited?"unlimited":t.credits.balance??(t.credits.hasCredits?"available":"depleted")]}):null,t.rateLimitReachedType?x("div",{className:"text-destructive",children:(n=t.rateLimitReachedType,Po(n))}):null]}),x(ho,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(ho,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):x("div",{className:"rounded-md bg-muted/60 p-2 text-xs text-muted-foreground",children:e?"Loading limits...":"Usage limits are unavailable."});var n}function ho({fallbackLabel:e,severity:t,window:n}){const a=Lo(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=bo(n);return y("div",{className:Cn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[x("span",{className:"font-medium",children:Io(n,e)}),x("span",{className:Cn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:Cn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:Cn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?x("span",{children:ko(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",Co(n.resetsAt)]}):null]})]})}function fo(){return f()}function po(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function go(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function vo(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[No(e.primary,"5h"),No(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function wo(e){return e?bo(e.secondary)?"weekly":bo(e.primary)?"fiveHour":null:null}function xo(e,t){return e.map((e,n)=>({account:e,index:n,score:yo(t[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}function yo(e){if(!e)return 0;if(e.rateLimitReachedType||wo(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-Lo(e.usedPercent));return t.length?Math.min(...t):0}function bo(e){return Lo(e?.usedPercent??0)>=100}function No(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-Lo(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 Io(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 ko(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function Co(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 Ao(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 Mo(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 Eo(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function To(e){return e>=1e6?`${So(e/1e6)}M`:e>=1e3?`${So(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function So(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function Po(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function Lo(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Do(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function Ro(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function qo(e){return"fullAccess"===e?"Full access":"Default"}function Oo(e,t){let n=e;for(const a of t)n=Wn(n,a);return n??{data:[],nextCursor:null}}function _o(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function $o(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 Uo(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function zo(e){return e instanceof Error?e.message:"Request failed."}var jo=yn({default:()=>Fo}),Fo=c(function(){return x(Us,{})}),Bo=yn({default:()=>Go}),Go=c(function(){return x(Qs,{})}),Ho=yn({default:()=>Ko}),Ko=c(function(){return x(Js,{})}),Wo=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Vo(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function Qo(e){throw new Wo(405,`${e} is not supported for this route.`)}function Jo(e,t){t.includes(e.method)||Qo(e.method)}async function Yo(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 Wo(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Wo)throw n;throw new Wo(400,"Request body must be valid JSON.")}}function Xo(e,t,n={}){if(null==e){if(n.required)throw new Wo(400,`${t} is required.`);return}if("string"!=typeof e)throw new Wo(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Wo(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Wo(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function Zo(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Wo(400,`${t} must be an array of strings.`);return e}}function ed(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new Wo(400,`${t} must be a boolean.`);return e}}function td(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Wo(400,`${t} must be an object.`);return e}}function nd(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 Wo(400,`${t} must be an integer.`);return r}function ad(e,t){const n=e[t];if(!n)throw new Wo(400,`${t} is required.`);return n}function rd(e){return e instanceof Wo?Vo({message:e.message},{status:e.status}):Vo({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var id=yn({loader:()=>sd});function sd({request:e}){try{return Jo(e,["GET"]),Vo({status:"ok",service:"xedoc"})}catch(t){return rd(t)}}var od,dd=globalThis,cd=an("~"===(od=process.env.CODEX_WORKSPACE_ROOT?.trim()||Yt())?Yt():od.startsWith("~/")?an(Yt(),od.slice(2)):sn(od),".xedoc","xedoc.db"),ld=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(cd);process.env.DATABASE_URL=ld,Wt(en(cd),{recursive:!0,mode:448});var ud=dd.prisma??new Bt({datasources:{db:{url:ld}}});"production"!==process.env.NODE_ENV&&(dd.prisma=ud);var md="server",hd="scrypt";async function fd(e){!function(e){if(e.length<8)throw new Wo(400,"Server password must be at least 8 characters.")}(e);const t=await xd()??await async function(e){try{return await ud.serverAuth.create({data:{id:md,passwordHash:yd(e),tokenSecret:bd(32)}})}catch(t){if(function(e){return e instanceof Ft.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Wo(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!==hd||!a||!r||void 0!==i)&&Nd(zt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Wo(401,"Invalid server password.");return{token:gd({authHash:vd(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function pd(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Wo(401,"Invalid auth token.");if(!Nd(a,wd(n,t.tokenSecret)))throw new Wo(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 Wo(401,"Invalid auth token.")}}(n);if(i.authHash!==vd(t.passwordHash))throw new Wo(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Wo(401,"Missing auth token.");return n}(e),await async function(){const e=await xd();if(!e)throw new Wo(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function gd(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${wd(n,t)}`}function vd(e){return t=e,Ot("sha256").update(t).digest("hex");var t}function wd(e,t){return _t("sha256",t).update(e).digest("base64url")}async function xd(){return ud.serverAuth.findUnique({where:{id:md}})}function yd(e){const t=bd(16);return`${hd}:${t}:${zt(e,t,64).toString("base64url")}`}function bd(e){return $t(e).toString("base64url")}function Nd(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&jt(n,a)}var Id=yn({loader:()=>kd});async function kd({request:e}){try{return Jo(e,["GET"]),Vo(await async function(){return{passwordConfigured:!!(await xd())}}())}catch(t){return rd(t)}}var Cd=yn({action:()=>Ad});async function Ad({request:e}){try{return Jo(e,["POST"]),Vo(await fd(Xo((await Yo(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return rd(t)}}var Md=yn({loader:()=>Ed});async function Ed({request:e}){try{return Jo(e,["GET"]),Vo(await async function(e){return{authenticated:!0,issuedAt:(await pd(e)).issuedAt}}(e))}catch(t){return rd(t)}}function Td(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Sd(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Pd(e){const t=Td(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var Ld=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-${Ut()}`,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=qd(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);var t;return t=e.codexHome,Wt(t,{recursive:!0,mode:448}),Gt(t,448),this.child=cn(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}`)}),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(Od(t.id));a&&(clearTimeout(a.timeout),this.pending.delete(Od(t.id)),t.error?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()}},Dd=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new Ld(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()}};async function Rd(e){return(await Dd.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function qd(e){return an(function(e){return"~"===e?Yt():e.startsWith("~/")?an(Yt(),e.slice(2)):sn(e)}(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function Od(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}async function _d(e){const t=await ud.codexAccount.findUnique({where:{id:e}});if(!t)throw new Wo(404,"Codex account not found.");return t}async function $d(e,t="browser"){const n=await _d(e);if(Bd(e))return Dd.stopRuntime(e),await ud.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};await ud.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const a=jd(n);if(Td(Td((await a.request("account/read",{refreshToken:!1})).result)?.account))return await ud.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};const r=Td((await a.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt"})).result),i="chatgptDeviceCode"===Sd(r?.type)?"device":t,s=function(e,t){return"device"===t?Sd(e?.verificationUrl)??Sd(e?.verification_url)??Sd(e?.authUrl)??Sd(e?.auth_url)??Sd(e?.url)??null:Sd(e?.authUrl)??Sd(e?.auth_url)??Sd(e?.url)??null}(r,i),o=Sd(r?.loginId)??null,d="device"===i?Sd(r?.userCode)??Sd(r?.user_code)??null:null;if(!("device"!==i||s&&d))throw new Error("Codex did not return device login instructions.");const c=s?"AUTHENTICATING":"CONNECTED";return await ud.codexAccount.update({where:{id:e},data:"CONNECTED"===c?{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}:{status:c,lastAuthUrl:s,lastAuthMode:i,lastAuthLoginId:o,lastAuthUserCode:d,lastError:null}}),"AUTHENTICATING"===c&&function(e,t,n){const a=e.onEvent(e=>{const r=Td(e.params);if("account/login/completed"===e.method){const e=Sd(r?.loginId);if(n&&e&&e!==n)return;return a(),!1===r?.success?void ud.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:Sd(r.error)??"Login failed."}}):void ud.codexAccount.update({where:{id:t},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}"account/updated"===e.method&&Sd(r?.authMode)&&(a(),ud.codexAccount.update({where:{id:t},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}))})}(a,e,o),{accountId:e,status:c,authMode:"AUTHENTICATING"===c?i:null,authUrl:s,verificationUrl:"device"===i?s:null,userCode:d,loginId:o,message:"CONNECTED"===c?"Codex account is connected.":"device"===i?"Open the verification URL and enter the device code to finish Codex authentication.":"Open the returned URL to finish Codex authentication."}}catch(a){const n=a instanceof Error?a.message:"Authentication failed.";return await ud.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 Ud(e,t){const n=await _d(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Wo(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Wo(400,"Callback URL must use http.");if(t.username||t.password)throw new Wo(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 Wo(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Wo(400,"Callback URL must include an OAuth code or error.");return t}(t),r=jd(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 Wo(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=Td((await i)?.params);if(!1===s?.success){const t=Sd(s.error)??"Login failed.";return await ud.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:zd(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await async function(e,t){return!!Td(Td((await t.request("account/read",{refreshToken:!1})).result)?.account)&&(await ud.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),!0)}(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:Bd(e)?(Dd.stopRuntime(e),await ud.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await ud.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:zd(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 ud.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:zd(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}function zd(e){return"browser"===e||"device"===e?e:null}function jd(e){return Dd.getRuntime({accountId:e.id,command:e.command,args:Wd(e.args),workingDirectory:null,environment:Pd(e.environment)})}function Fd(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Bd(e){try{const t=Vt(`${qd(e)}/auth.json`,"utf8"),n=JSON.parse(t);return!("chatgpt"!==Sd(n.auth_mode)||!Td(n.tokens)&&!Sd(n.OPENAI_API_KEY))}catch{return!1}}function Gd(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function Hd(e){return{args:Gd(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?Ft.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null,status:"DISCONNECTED"};var t}function Kd(e){return{id:e.id,displayName:e.displayName,status:e.status,command:e.command,args:Wd(e.args),environment:Pd(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:zd(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Wd(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):Fd()}function Vd(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Wo(400,`${n} must be an object.`);return{id:ec(e.id,`${n}.id`,128),displayName:Zd(e.displayName,`${n}.displayName`,128),command:ec(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:tc(e.args,`${n}.args`)??Fd(),defaultModel:ec(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:Xd(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:Jd(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:Yd(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:nc(e.environment,`${n}.environment`)}}function Qd(e){return null==e?null:Zd(e,"runtime option",128)}function Jd(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 Wo(400,`${t} is invalid.`)}function Yd(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Wo(400,`${t} is invalid.`)}function Xd(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Wo(400,`${t} is invalid.`)}function Zd(e,t,n){const a=ec(e,t,n);if(!a)throw new Wo(400,`${t} is required.`);return a}function ec(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Wo(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Wo(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function tc(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Wo(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function nc(e,t){if(null==e)return null;const n=Td(e);if(!n)throw new Wo(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var ac=yn({action:()=>ic,loader:()=>rc});async function rc({request:e}){try{return Jo(e,["GET"]),await pd(e),Vo(await ud.codexAccount.findMany({orderBy:{createdAt:"asc"}}))}catch(t){return rd(t)}}async function ic({request:e}){try{Jo(e,["POST"]),await pd(e);const t=await Yo(e);return Vo(await async function(e){return ud.codexAccount.create({data:{displayName:e.displayName,command:e.command??process.env.CODEX_COMMAND??"codex",args:Gd(e.args??Fd()),defaultModel:Qd(e.defaultModel),defaultPermissionMode:Xd(e.defaultPermissionMode),defaultReasoningEffort:Jd(e.defaultReasoningEffort),defaultServiceTier:Yd(e.defaultServiceTier),environment:Gd(e.environment)}})}({displayName:Xo(t.displayName,"displayName",{required:!0,maxLength:128}),command:Xo(t.command,"command"),args:Zo(t.args,"args"),defaultModel:sc(t.defaultModel,"defaultModel"),defaultPermissionMode:sc(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:sc(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:sc(t.defaultServiceTier,"defaultServiceTier"),environment:td(t.environment,"environment")}),{status:201})}catch(t){return rd(t)}}function sc(e,t){return null===e?null:Xo(e,t,{maxLength:128})}var oc=yn({loader:()=>dc});async function dc({request:e}){try{return Jo(e,["GET"]),await pd(e),Vo(await async function(){const e=await ud.codexAccount.findMany({orderBy:{createdAt:"asc"}});return{schemaVersion:1,exportedAt:(new Date).toISOString(),accounts:e.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:Wd(e.args),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:Pd(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return rd(t)}}var cc=yn({action:()=>lc});async function lc({request:e}){try{Jo(e,["POST"]),await pd(e);const t=await Yo(e);if(!Array.isArray(t.accounts))throw new Wo(400,"accounts must be an array.");return Vo(await async function(e){const t=e.accounts.map(Vd),n=[];for(const s of t){const e=s.id?await ud.codexAccount.findUnique({where:{id:s.id}}):null;e?(Dd.stopRuntime(e.id),n.push(await ud.codexAccount.update({where:{id:e.id},data:Hd(s)}))):n.push(await ud.codexAccount.create({data:{...s.id?{id:s.id}:{},...Hd(s)}}))}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await $d(s.id));const r=await ud.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=>Kd(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return rd(t)}}var uc=yn({action:()=>hc,loader:()=>mc});async function mc({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await _d(ad(t,"accountId")))}catch(n){return rd(n)}}async function hc({request:e,params:t}){try{await pd(e);const n=ad(t,"accountId");if("PATCH"===e.method){const t=await Yo(e);return Vo(await async function(e,t){return await _d(e),Dd.stopRuntime(e),ud.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:Gd(t.args),environment:Gd(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:Xo(t.displayName,"displayName",{maxLength:128}),command:Xo(t.command,"command"),args:Zo(t.args,"args"),environment:td(t.environment,"environment")}))}if("DELETE"===e.method)return Vo(await async function(e){return await _d(e),Dd.stopRuntime(e),ud.codexAccount.delete({where:{id:e}})}(n));Qo(e.method)}catch(n){return rd(n)}}var fc=yn({action:()=>pc});async function pc({request:e,params:t}){try{Jo(e,["PATCH"]),await pd(e);const n=await Yo(e),a={defaultModel:gc(n.defaultModel,"defaultModel"),defaultPermissionMode:gc(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:gc(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:gc(n.defaultServiceTier,"defaultServiceTier")};return Vo(await async function(e,t){return await _d(e),Kd(await ud.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:Qd(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:Xd(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:Jd(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:Yd(t.defaultServiceTier)}}))}(ad(t,"accountId"),a))}catch(n){return rd(n)}}function gc(e,t){return null===e?null:Xo(e,t,{maxLength:128})}async function vc(e){return async function(e){return(await Dd.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(xc(await wc(e)))}async function wc(e){const t=await ud.codexAccount.findUnique({where:{id:e}});if(!t)throw new Wo(404,"Account not found.");if("CONNECTED"!==t.status)throw new Wo(400,"Authenticate the account before loading Codex account data.");return t}function xc(e){return{accountId:e.id,args:yc(e.args),command:e.command,environment:Pd(e.environment),workingDirectory:null}}function yc(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var bc=yn({loader:()=>Nc});async function Nc({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await vc(ad(t,"accountId")))}catch(n){return rd(n)}}var Ic=yn({loader:()=>kc});async function kc({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await async function(e){return Rd(xc(await wc(e)))}(ad(t,"accountId")))}catch(n){return rd(n)}}var Cc=yn({action:()=>Ac});async function Ac({request:e,params:t}){try{Jo(e,["POST"]),await pd(e);const n=await Yo(e);return Vo(await $d(ad(t,"accountId"),function(e){const t=Xo(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new Wo(400,"mode must be browser or device.")}(n.mode)))}catch(n){return rd(n)}}var Mc=yn({action:()=>Ec});async function Ec({request:e,params:t}){try{Jo(e,["POST"]),await pd(e);const n=Xo((await Yo(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Vo(await Ud(ad(t,"accountId"),n))}catch(n){return rd(n)}}var Tc="global",Sc=new Map;async function Pc(e={}){if(!("test"===process.env.NODE_ENV?"true"===process.env.CODEX_LOCAL_CHAT_IMPORT:"false"!==process.env.CODEX_LOCAL_CHAT_IMPORT))return;const t=Date.now(),n=Sc.get(Tc);if(!e.force&&n&&t-n.lastScanAt<sl("CODEX_LOCAL_CHAT_IMPORT_INTERVAL_MS",3e4))return void(await n.promise);if(n?.promise)return void(await n.promise);const a={lastScanAt:t},r=async function(){const e=await Jc();if(!e.length)return;const t=(await Promise.all(e.map(e=>nl(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs).slice(0,rl()),n=await async function(e){const t=e.map(e=>vl(e.path)).filter(e=>!!e);if(!t.length)return new Set;const n=await ud.chat.findMany({where:{externalThreadId:{in:[...new Set(t)]}},select:{externalThreadId:!0}});return new Set(n.map(e=>e.externalThreadId).filter(e=>!!e))}(t);for(const a of t){const e=vl(a.path);e&&n.has(e)||await Rc(a.path).catch(e=>{console.warn(`Failed to import local Codex chat from ${a.path}.`,e instanceof Error?e.message:e)})}}().catch(e=>{console.warn("Local Codex chat import failed.",e instanceof Error?e.message:e)}).finally(()=>{const e=Sc.get(Tc);e?.promise===r&&(e.promise=void 0)});a.promise=r,Sc.set(Tc,a),await r,await async function(){const e=await ud.chat.findMany({where:{messages:{some:{metadata:{path:"$.kind",equals:"localCodexImport"}}}},select:{id:!0},take:rl()});for(const t of e)await ud.$transaction(e=>Oc(e,t.id))}()}async function Lc(e,t){const n=await ud.chat.findUnique({where:{id:e},select:{externalThreadId:!0}}),a=await bl(e)??(n?.externalThreadId?await Yc(n.externalThreadId):null);if(!a)return;const r=an(qd(t),"sessions",function(e){const t=`${on}sessions${on}`,n=e.lastIndexOf(t);return-1===n?Xt(e):e.slice(n+t.length)}(a));if(sn(a)!==sn(r)){try{return void(await ln(r,Ht.R_OK))}catch{}await mn(en(r),{recursive:!0,mode:448}),await un(a,r)}}async function Dc(e,t){const n=await bl(e);if(n){const e=await Zc(n,t);if(e)return e}const a=await Yc(t);return a?Zc(a,t):null}async function Rc(e){const t=await vn(e);if(!t.isFile()||t.size>il())return;const n=qc(await fn(e,"utf8"),e,new Date(t.mtimeMs));if(!n||"xedoc"===n.originator)return;const a=await Kc(e,n.externalThreadId),r=a?.updatedAt??n.updatedAt;await ud.$transaction(async e=>{const t=await e.chat.findFirst({where:{externalThreadId:n.externalThreadId},select:{id:!0}});t?await Oc(e,t.id,a,n.updatedAt):await e.chat.create({data:{accountId:null,createdAt:n.createdAt,externalThreadId:n.externalThreadId,lastActivityAt:r,status:"IDLE",title:a?.title??n.title,updatedAt:n.updatedAt,workingDirectory:n.workingDirectory}})})}function qc(e,t,n){let a,r,i,s,o,d;const c=[],l=[];for(const f of e.split(/\r?\n/)){if(!f.trim())continue;const e=hl(f);if(!e)continue;const u=fl(e.timestamp)??n;o=pl(o,u),d=gl(d,u);const m=Td(e.payload);if("session_meta"===e.type&&m){a=Sd(m.id)??a,r=Sd(m.source)??r,i=Sd(m.originator)??i,s=Sd(m.cwd)??s,o=fl(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=Sd(m.cwd)??s;continue}const h=_c(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=$c(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??vl(t);if(!m||!u.length)return null;const h=wl(u.find(e=>"USER"===e.role)?.content??"")??wl(u[0]?.content??"")??"Imported Codex chat";return{createdAt:o??n,externalThreadId:m,messages:u,originator:i,path:t,source:r,title:h,updatedAt:d??n,workingDirectory:s}}async function Oc(e,t,n,a){const r=await e.chat.findUnique({where:{id:t},select:{externalThreadId:!0,id:!0,lastActivityAt:!0,title:!0}});if(!r)return;const i=await e.chatMessage.findMany({where:{chatId:t},orderBy:{sequence:"asc"},select:{content:!0,id:!0,metadata:!0,role:!0}}),s=i.filter(e=>"localCodexImport"===Td(e.metadata)?.kind),o=s.filter(e=>"USER"===e.role&&Uc(e.content)).map(e=>e.id);o.length&&await e.chatMessage.deleteMany({where:{id:{in:o}}});const d=i.filter(e=>!o.includes(e.id)),c=wl(d.find(e=>"USER"===e.role&&!Uc(e.content))?.content??d.find(e=>!Uc(e.content))?.content??"")??"Imported Codex chat",l=n??(r.externalThreadId?await async function(e,t){const n=function(e){for(const t of e){const e=Td(t.metadata);if("localCodexImport"!==e?.kind)continue;const n=Sd(e.sessionPath);if(n)return n}return null}(e)??await Yc(t);return n?Kc(n,t):null}(s,r.externalThreadId):null),u=l?.title??null,m=l?.updatedAt??a??null,h=xl(r.title),f={};if(m&&r.lastActivityAt.getTime()!==m.getTime()&&(f.lastActivityAt=m),u)h!==xl(u)&&(f.title=u);else{const e=new Set([xl(c),xl("Imported Codex chat")]);(Uc(r.title)||e.has(h)||!h)&&(f.title=c)}Object.keys(f).length&&await e.chat.update({where:{id:r.id},data:f})}function _c(e,t,n){if("response_item"!==e.type)return null;const a=Td(e.payload);if(!a||"message"!==a.type)return null;const r="assistant"===(i=a.role)?"ASSISTANT":"user"===i?"USER":null;var i;if(!r)return null;const s=function(e){return"string"==typeof e.text?Fc(e.text,e):"string"==typeof e.message?Fc(e.message,e):"string"==typeof e.content?Fc(e.content,e):Array.isArray(e.content)?Fc(e.content.map(e=>{if("string"==typeof e)return e;const t=Td(e);return t?"string"==typeof t.text?t.text:Gc(t)??"":""}).join(""),e):Fc("",e)}(a);return!s.trim()||Uc(s)?null:{content:s,createdAt:t,metadata:zc(a,n),rawPayload:jc(e,a),role:r}}function $c(e,t,n){if("event_msg"!==e.type)return null;const a=Td(e.payload);if(!a)return null;const r=Sd(a.type),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?function(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."}(r):"string"==typeof a.message?Fc(a.message,a):"";return!s.trim()||Uc(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...zc(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:jc(e,a),role:i}}function Uc(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function zc(e,t){return{kind:"localCodexImport",originator:t.originator,phase:Sd(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:Sd(e.type)}}function jc(e,t){return{payload:{name:Sd(t.name),phase:Sd(t.phase),role:Sd(t.role),type:Sd(t.type)},timestamp:Sd(e.timestamp),type:Sd(e.type)}}function Fc(e,t){return[e,...Bc(t.images),...Bc(t.local_images),...Bc(t.localImages)].filter(Boolean).join("\n\n")}function Bc(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Hc(e):Gc(Td(e))).filter(e=>!!e):[]}function Gc(e){return e?Hc(Sd(e.url)??Sd(e.image_url)??Sd(e.path)??Sd(e.filePath)):null}function Hc(e){const t=e?.trim();return t?`<image>${t}</image>`:null}async function Kc(e,t){if(!e||!t)return null;const n=function(e){const t=`${on}sessions${on}`,n=sn(e),a=n.lastIndexOf(t);return-1===a?null:an(n.slice(0,a),"session_index.jsonl")}(e);if(!n)return null;try{return function(e,t){return Vc(e).get(t)??null}(await fn(n,"utf8"),t)}catch{return null}}async function Wc(e){try{return Vc(await fn(e,"utf8"))}catch{return new Map}}function Vc(e){const t=new Map;for(const n of e.split(/\r?\n/)){if(!n.trim())continue;const e=hl(n);if(!e)continue;const a=Sd(e.id)??Sd(e.thread_id)??Sd(e.threadId)??Sd(e.session_id)??Sd(e.sessionId);if(!a)continue;const r=Qc(Sd(e.thread_name)??Sd(e.threadName)??Sd(e.name)??Sd(e.title)),i=fl(e.updated_at)??fl(e.updatedAt)??fl(e.modified_at)??fl(e.modifiedAt)??null,s=t.get(a);t.set(a,{title:r??s?.title??null,updatedAt:i??s?.updatedAt??null})}return t}function Qc(e){const t=e?.replace(/\s+/g," ").trim();return!t||Uc(t)?null:t.slice(0,160)}async function Jc(){const e=[...el(),an(yl(process.env.CODEX_HOME?.trim()||"~/.codex"),"sessions"),...await tl()],t=[...new Set(e.map(e=>yl(e)))],n=[];for(const a of t)try{await ln(a,Ht.R_OK),n.push(a)}catch{}return n}async function Yc(e){const t=await Jc(),n=(await Promise.all(t.map(e=>nl(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs),a=n.find(t=>vl(t.path)===e);if(a)return a.path;for(const r of n.slice(0,rl()))if(await Xc(r.path,e))return r.path;return null}async function Xc(e,t){try{const n=await vn(e);if(!n.isFile()||n.size>il())return null;const a=qc(await fn(e,"utf8"),e,new Date(n.mtimeMs));return a?.externalThreadId===t?a:null}catch{return null}}async function Zc(e,t){try{const n=await vn(e);if(!n.isFile()||n.size>il())return null;let a,r=null;for(const t of(await fn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=hl(t);if(!e)continue;"session_meta"===e.type&&(a=Sd(Td(e.payload)?.id)??a);const n=ol(e);n&&(r=n)}return(a??vl(e))===t?r:null}catch{return null}}function el(){const e=process.env.CODEX_LOCAL_CHAT_IMPORT_ROOTS?.trim();return e?e.split(Zt).map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith("/sessions")?e:an(e,"sessions")):[]}async function tl(){const e=yl(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts");try{return(await pn(e,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(t=>an(e,t.name,"sessions"))}catch{return[]}}async function nl(e){const t=[];return await al(e,t,0),t}async function al(e,t,n){if(n>6)return;let a;try{a=await pn(e,{withFileTypes:!0})}catch{return}await Promise.all(a.map(async a=>{const r=an(e,a.name);if(a.isDirectory())return void(await al(r,t,n+1));if(!a.isFile()||!a.name.endsWith(".jsonl"))return;const i=await vn(r);t.push({mtimeMs:i.mtimeMs,path:r})}))}function rl(){return sl("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3)}function il(){return sl("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function sl(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function ol(e){const t=dl(e);if(!t)return null;const n=Td(t.params),a=Td(t.info)??Td(n?.info)??n??t;return function(e,t=e){const n=ll(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=ll(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=ll(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}([ll(e,["input_tokens","inputTokens"]),ll(e,["output_tokens","outputTokens"]),ll(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}}(cl(a,["last_token_usage","lastTokenUsage"])??cl(a,["total_token_usage","totalTokenUsage"])??a,a)}function dl(e,t=0){if(t>4)return;const n=Td(e);if(!n)return;const a=ml(Sd(n.type)??""),r=ml(Sd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=dl(n[i],t+1);if(e)return e}}function cl(e,t){for(const n of t){const t=Td(e[n]);if(t)return t}}function ll(e,t){for(const n of t){const t=ul(e[n]);if(void 0!==t)return t}}function ul(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 ml(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function hl(e){try{return Td(JSON.parse(e))??null}catch{return null}}function fl(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function pl(e,t){return!e||t<e?t:e}function gl(e,t){return!e||t>e?t:e}function vl(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function wl(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 xl(e){return e.replace(/\s+/g," ").trim().toLowerCase()}function yl(e){return"~"===e?Yt():e.startsWith("~/")?an(Yt(),e.slice(2)):sn(e)}async function bl(e){const t=await ud.chatMessage.findMany({where:{chatId:e},orderBy:{sequence:"asc"},select:{metadata:!0},take:10});for(const n of t){const e=Td(n.metadata);if("localCodexImport"!==e?.kind)continue;const t=Sd(e.sessionPath);if(t)return t}return null}var Nl="__xedocRealtimeState__";function Il(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[Nl]??={handlers:new Set},e[Nl]}().handlers)r(a)}async function kl(e){const t=Ml(),n=El(t,e),a=await pn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:en(n),entries:a.map(e=>function(e,t){return{name:t.name,path:an(e,t.name),type:Tl(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 Cl(e,t){const n=Ml(),a=sn(El(n,e),function(e){const t=e.trim();if(!t)throw new Wo(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Wo(400,"Folder name must be a single folder name.");return t}(t)),r=rn(n,a);if(r.startsWith("..")||nn(r))throw new Wo(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 Wo(409,"Folder already exists.");throw i}return kl(a)}function Al(e){return El(Ml(),e)}function Ml(){const e=function(e){return"~"===e?Yt():e.startsWith("~/")?an(Yt(),e.slice(2)):sn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Kt(e)||Wt(e,{recursive:!0}),Qt(e)}function El(e,t){const n=t?.trim(),a=n?nn(n)?n:an(e,n):e;let r;try{r=Qt(sn(a))}catch{throw new Wo(400,"Workspace path does not exist.")}const i=rn(e,r);if(i.startsWith("..")||nn(i))throw new Wo(403,"Path is outside the workspace root.");if(!Jt(r).isDirectory())throw new Wo(400,"Workspace path is not a directory.");return r}function Tl(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var Sl=1e6;async function Pl(e,t,n){const a=await ud.chat.findUnique({where:{id:e},select:{workingDirectory:!0}});if(!a)throw new Wo(404,"Chat not found.");if(!a.workingDirectory)throw new Wo(400,"Chat does not have a working directory.");const r=Al(a.workingDirectory),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 Ll(r,i.path),o=await Dl(s,r),d=n??i.line??null,c=Math.min(o.size,Sl),l=c?await async function(e,t){const n=await hn(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:Rl(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>Sl}}async function Ll(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Wo(400,"File path is required.");const a=await gn(e),r=nn(n)?n:sn(a,n);let i;try{i=await gn(r)}catch{throw new Wo(404,"File does not exist.")}return function(e,t){const n=rn(e,t);if(n.startsWith("..")||nn(n))throw new Wo(403,"Path is outside the chat working directory.")}(a,i),i}async function Dl(e,t){const n=await vn(e);if(!n.isFile())throw new Wo(400,"Workspace path is not a file.");const a=t?await gn(t):null;return{name:Xt(e),path:e,relativePath:a&&rn(a,e)||Xt(e),size:n.size}}function Rl(e){const t=tn(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 ql=new Map,Ol=new Map,_l=new Map,$l=new Map,Ul=new Map,zl=new Map,jl=new Map,Fl=new Map;function Bl(e,t){return async function(e,t){const n=zl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);zl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),zl.get(e)===i&&zl.delete(e)}}(e,async()=>ud.chatMessage.create({data:{...t,chatId:e,sequence:await Zu(e)}}))}function Gl(e,t){const n=(jl.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return jl.set(e,a),a.finally(()=>{jl.get(e)===a&&jl.delete(e)}),n}async function Hl(){await Pc(),await async function(){const e=await ud.chat.findMany({where:{accountId:{not:null},externalThreadId:{not:null},status:{not:"ARCHIVED"}},select:{accountId:!0,externalThreadId:!0,id:!0,lastActivityAt:!0,title:!0}}),t=[...new Set(e.map(e=>e.accountId).filter(e=>!!e))];if(!t.length)return;const n=new Map;await Promise.all(t.map(async e=>{n.set(e,await Wc(an(qd(e),"session_index.jsonl")))}));for(const a of e){if(!a.accountId||!a.externalThreadId)continue;const e=n.get(a.accountId)?.get(a.externalThreadId),t=iu(a,e);if(t){const e=await ud.chat.update({where:{id:a.id},data:t});em(a.id,"chat.updated",Bm(e))}}}()}function Kl(){return ud.chat.findMany({where:{status:{not:"ARCHIVED"}},orderBy:[{lastActivityAt:"desc"},{updatedAt:"desc"}]})}async function Wl(e){const t=await ud.chat.findUnique({where:{id:e}});if(!t)throw new Wo(404,"Chat not found.");return async function(e){return e.accountId&&e.externalThreadId?ru(e,e.accountId,e.externalThreadId):e}(t)}async function Vl(e,t){const n=await Wl(e),a=await async function(e,t){if(void 0===t||t===e.accountId)return;if(null===t)return null;const n=await ud.codexAccount.findUnique({where:{id:t}});if(!n)throw new Wo(400,"Account not found.");if("CONNECTED"!==n.status)throw new Wo(400,"Authenticate the account before attaching it to a chat.");return n.id}(n,t.accountId),r=void 0!==a&&a!==n.accountId,i=void 0===t.collaborationMode?void 0:Xl(t.collaborationMode),s=void 0!==i&&i!==Zl(n.collaborationMode),o=void 0===t.permissionMode?void 0:eu(t.permissionMode),d=void 0!==o&&o!==tu(n.permissionMode);if(void 0!==t.workingDirectory)throw new Wo(400,"Chat working directory cannot be changed.");if(r&&"RUNNING"===n.status)throw new Wo(400,"Wait for the current run to finish before switching accounts.");if(s&&"RUNNING"===n.status)throw new Wo(400,"Wait for the current run to finish before changing modes.");const c=await ud.chat.update({where:{id:e},data:{accountId:a,autoRotateAccount:t.autoRotateAccount,model:void 0===t.model?void 0:Ql(t.model),reasoningEffort:void 0===t.reasoningEffort?void 0:Jl(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Yl(t.serviceTier),collaborationMode:i,permissionMode:o,title:t.title,externalThreadId:r&&n.accountId||s?null:void 0}});return r&&!n.accountId&&a&&Lc(e,a).catch(e=>{console.warn("Failed to mirror imported Codex session.",e instanceof Error?e.message:e)}),void 0!==t.title&&async function(e){if(!e.accountId||!e.externalThreadId)return;const t=await ud.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return;await Vm(Dd.getRuntime({accountId:t.id,command:t.command,args:Qm(t.args),workingDirectory:null,environment:Pd(t.environment)}),e.externalThreadId,e.title)}(c).catch(e=>{console.warn("Failed to persist Codex chat title.",e instanceof Error?e.message:e)}),d&&void 0!==o&&(!function(e,t){for(const n of Ol.values())n.chatId===e&&(n.permissionMode=t)}(e,o),"fullAccess"===o&&await async function(e){const t=[...ql.values()].filter(t=>t.chatId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=Dm(t);n.runtime.respondToServerRequest(n.rpcId,a),ql.delete($m(e,n.requestId));const r=await ud.chatMessage.findUnique({where:{id:n.messageId}});r&&em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:_m(r.metadata,{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,result:a,resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}}(e)),c}function Ql(e){if(null===e)return null;const t=e.trim();if(!t)throw new Wo(400,"Runtime option cannot be empty.");return t}function Jl(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Wo(400,"reasoningEffort is invalid.");return e}function Yl(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Wo(400,"serviceTier is invalid.")}function Xl(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Wo(400,"collaborationMode is invalid.")}function Zl(e){return"plan"===e?"plan":"default"}function eu(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Wo(400,"permissionMode is invalid.")}function tu(e){return"fullAccess"===e?"fullAccess":"default"}function nu(e){const t=Hm(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"chat"===t}function au(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)}async function ru(e,t,n){const a=iu(e,(await Wc(an(qd(t),"session_index.jsonl"))).get(n));if(!a)return e;const r=await ud.chat.update({where:{id:e.id},data:a});return em(e.id,"chat.updated",Bm(r)),r}function iu(e,t){if(!t)return null;const n={};return!t.title||Hm(e.title)===Hm(t.title)||nu(t.title)&&!nu(e.title)||(n.title=t.title),t.updatedAt&&e.lastActivityAt.getTime()!==t.updatedAt.getTime()&&(n.lastActivityAt=t.updatedAt),Object.keys(n).length?n:null}async function su(e,t=0,n=50){const a=await Wl(e);await async function(e){const t=await ud.chatRun.findMany({where:{chatId:e,status:{in:["CANCELLED","COMPLETED","FAILED"]}},select:{id:!0,status:!0}});for(const n of t){const t="FAILED"===n.status?"FAILED":"COMPLETED";await ud.chatMessage.updateMany({where:{chatId:e,kind:{in:["CHAT","COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"]},runId:n.id,status:{in:["PENDING","STREAMING"]}},data:{completedAt:new Date,status:t}})}}(e);const r=await async function(e,t,n){const a=await ud.chatMessage.findMany({where:{chatId:e.id},orderBy:{sequence:"asc"}}),r="RUNNING"===e.status?[]:await async function(e){if(!e.externalThreadId)return[];const t=await async function(e){if(!e.accountId||!e.externalThreadId)return[];const t=await ud.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return[];const n=Dd.getRuntime({accountId:t.id,command:t.command,args:Qm(t.args),workingDirectory:null,environment:Pd(t.environment)});try{const t=lu((await n.request("thread/turns/list",{threadId:e.externalThreadId,limit:1e3},3e4)).result);if(t.length)return t}catch{}try{return lu((await n.request("thread/read",{includeTurns:!0,threadId:e.externalThreadId},3e4)).result)}catch{return[]}}(e);if(t.length)return t;const n=await async function(e,t){const n=await bl(e);if(n){const e=await Xc(n,t);if(e)return e}const a=await Yc(t);return a?Xc(a,t):null}(e.id,e.externalThreadId);return n?n.messages.map(e=>function(e){return{completedAt:e.createdAt,content:e.content,createdAt:e.createdAt,metadata:e.metadata,kind:e.kind,rawPayload:e.rawPayload,role:e.role,source:"session"}}(e)):[]}(e);return(r.length?function(e,t,n){const a=n.filter(ou),r=new Set,i=new Set(t.map(e=>e.role));let s=Math.max(0,...n.map(e=>e.sequence));const o=t.map((t,n)=>{const i=function(e,t,n){return t.find(t=>!n.has(t.id)&&t.role===e.role&&e.itemId&&t.itemId===e.itemId)??t.find(t=>!n.has(t.id)&&t.role===e.role&&e.turnId&&t.turnId===e.turnId)??t.find(t=>!n.has(t.id)&&t.role===e.role)??null}(t,a,r);return i&&r.add(i.id),function(e,t,n,a,r){const i=t.createdAt??a?.createdAt??e.createdAt,s=t.completedAt??t.createdAt??a?.completedAt;return{chatId:e.id,completedAt:s,content:t.content,createdAt:i,id:a?.id??du(e.id,e.externalThreadId,t,n),itemId:t.itemId??a?.itemId??null,kind:t.kind??"CHAT",metadata:(t.metadata?Um(t.metadata):null)??a?.metadata??cu(t),rawPayload:Um(t.rawPayload??a?.rawPayload??null),requestId:a?.requestId??null,role:t.role,runId:a?.runId??null,sequence:r,status:"FAILED"===a?.status?"FAILED":"COMPLETED",turnId:t.turnId??a?.turnId??null}}(e,t,n,i,i?.sequence??++s)}),d=n.filter(e=>!r.has(e.id)).filter(e=>function(e,t){return"CHAT"!==e.kind||("COMPLETED"!==e.status||(!ou(e)||!t.has(e.role)))}(e,i)).map(Fm);return[...o,...d].sort((e,t)=>e.sequence-t.sequence)}(e,r,a):a.map(Fm)).filter(e=>e.sequence>t).sort((e,t)=>e.sequence-t.sequence).slice(0,n)}(a,t,Math.min(Math.max(n,1),200));return{data:r,nextCursor:r.length?r[r.length-1].sequence:null}}function ou(e){return"CHAT"===e.kind&&("USER"===e.role||"ASSISTANT"===e.role)}function du(e,t,n,a){return["codex",e,t??"thread",n.turnId??"turn",n.itemId??a,n.role.toLowerCase()].join(":")}function cu(e){return{kind:"codexTranscript",source:e.source}}function lu(e){return function(e){const t=Td(e),n=Td(t?.thread),a=[Array.isArray(e)?e:null,t?.data,t?.items,t?.turns,n?.turns];for(const r of a){const e=pu(r);if(e)return e}return[]}(e).flatMap(e=>function(e){const t=Sd(e.id)??Sd(e.turnId)??Sd(e.turn_id)??null,n=gu(e.createdAt??e.created_at??e.timestamp??e.startedAt),a=gu(e.completedAt??e.completed_at??e.finishedAt??e.updatedAt);return(pu(e.items)??[]).map(e=>function(e,t){const n=function(e){const t=Sd(e.role)?.toLowerCase();if("user"===t)return"USER";if("assistant"===t||"agent"===t)return"ASSISTANT";const n=Sd(e.type)?.replace(/[_\s-]+/g,"").toLowerCase();return"usermessage"===n||"inputmessage"===n?"USER":"agentmessage"===n||"assistantmessage"===n?"ASSISTANT":null}(e);if(!n)return null;const a=function(e){return function(e,t){return[e,...mu(t.images),...mu(t.local_images),...mu(t.localImages)].filter(Boolean).join("\n\n")}(zm(e.text)??zm(e.message)??zm(e.output)??uu(e.content)??"",e)}(e);return!a.trim()||Uc(a)?null:{completedAt:gu(e.completedAt??e.completed_at)??t.completedAt,content:a,createdAt:gu(e.createdAt??e.created_at??e.timestamp)??t.createdAt,itemId:Sd(e.id)??Sd(e.itemId)??Sd(e.item_id)??null,rawPayload:vu(e),role:n,source:"runtime",turnId:Sd(e.turnId)??Sd(e.turn_id)??t.turnId??null}}(e,{completedAt:a,createdAt:n,turnId:t})).filter(e=>!!e)}(e))}function uu(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=Td(e);return zm(t?.text)??zm(t?.content)??zm(t?.message)??hu(t)??""}).join("");return t.length?t:void 0}function mu(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?fu(e):hu(Td(e))).filter(e=>!!e):[]}function hu(e){return e?fu(Sd(e.url)??Sd(e.image_url)??Sd(e.path)??Sd(e.filePath)):null}function fu(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function pu(e){return Array.isArray(e)?e.map(e=>Td(e)).filter(e=>!!e):null}function gu(e){if("string"!=typeof e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t}function vu(e){return{id:Sd(e.id),itemId:Sd(e.itemId)??Sd(e.item_id),role:Sd(e.role),type:Sd(e.type)}}async function wu(e,t,n){await Wl(e);const a=$m(e,t),r=ql.get(a);if(!r)throw new Wo(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Wo(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Wo(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Wo(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),ql.delete(a);const s=Fm(await ud.chatMessage.update({where:{id:r.messageId},data:{status:"COMPLETED",completedAt:new Date,metadata:_m(await Om(r.messageId),{status:"resolved",decision:n.decision,result:n.result??i,resolvedAt:(new Date).toISOString()})}}));return em(e,"message.updated",s),s}async function xu(e,t){let n=await Wl(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Wo(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await Nu(n));const a=t.accountId??n.accountId;if(!a)throw new Wo(400,"Choose a Codex account before sending messages.");const r=await ud.codexAccount.findUnique({where:{id:a}});if(!r)throw new Wo(400,"Account not found.");if("CONNECTED"!==r.status)throw new Wo(400,"Authenticate the account before sending messages.");if(!n.workingDirectory)throw new Wo(400,"Select a working directory before sending messages.");const i=Al(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new Wo(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 Wo(400,"Attachment kind is invalid.");n.push(await Tu(e,a))}else n.push(Eu(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 Wo(400,"Message content or an attachment is required.");const d=await async function(e,t,n){if(!nu(t))return null;const a=((await ud.chatMessage.findFirst({where:{chatId:e,kind:"CHAT",role:"USER",content:{not:""}},orderBy:{sequence:"asc"}}))?.content??n).trim();return a||null}(e,n.title,function(e,t){const n=t.map(e=>"file"===e.message.kind?e.message.path:e.message.name);return[e.trim(),...n].filter(Boolean).join(" ")}(t.content,s));await async function(e,t){const n=t?au(t):null;if(!n)return null;const a=await ud.chat.findUnique({where:{id:e},select:{title:!0}});return a&&nu(a.title)?(await Ym(e,n),n):null}(e,d);const c=void 0===t.collaborationMode?void 0:Xl(t.collaborationMode),l=c??Zl(n.collaborationMode),u=tu(n.permissionMode),m=new Date;if("RUNNING"===n.status)return"steer"===t.delivery?async function({accountId:e,attachments:t,chat:n,collaborationMode:a,content:r,messageContent:i,metadata:s,permissionMode:o,startedAt:d,workingDirectory:c}){const l=bu(n.id);if(!l?.runtime)throw new Wo(409,"The active turn is not ready for steering yet.");const u=l.externalThreadId??n.externalThreadId;if(!u)throw new Wo(409,"The active turn has not published a thread yet.");const m=l.turnId??await Ou(l.runtime,u);if(!m)throw new Wo(409,"The active turn has not published a turn id yet.");const h=await ud.chat.findUnique({where:{id:n.id}}),f=await Ju(l.runtime,h?.model??n.model,h?.reasoningEffort??n.reasoningEffort);l.turnId=rm(await async function(e,t,n,a){async function r(r){const i=Gu(n,a),s=void 0===t.collaborationMode?[t]:[t,qu(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&&Ku(d))break;if(Hu(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 Ou(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(l.runtime,{expectedTurnId:m,threadId:u,...Vu(a,f)},r,t))??m,l.externalThreadId=u;const p=await Bl(n.id,{role:"USER",status:"COMPLETED",content:i,completedAt:d,metadata:jm(Pu({...s,delivery:"steer",steeredAt:d.toISOString()},t))}),g=await ud.chat.update({where:{id:n.id},data:{lastActivityAt:d,updatedAt:d}});return em(n.id,"chat.updated",Bm(g)),em(n.id,"message.created",Fm(p)),{message:Fm(p),assistantMessage:null,runId:l.runId,status:"RUNNING",delivery:"steer",steered:!0}}({accountId:a,attachments:s,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,startedAt:m,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,chat:a,collaborationMode:r,content:i,messageContent:s,metadata:o,permissionMode:d,queuedAt:c,workingDirectory:l}){const u=Ut(),m=await Bl(a.id,{role:"USER",status:"COMPLETED",content:s,completedAt:c,metadata:jm(Pu({...o,delivery:"queue",queueId:u,queueStatus:"queued",queuedAt:c.toISOString()},t))});!function(e,t){const n=_l.get(e)??[];_l.set(e,[...n,t])}(a.id,{accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:r,content:i,createdAt:c,id:u,messageId:m.id,metadata:o,permissionMode:d,workingDirectory:l});const h=await ud.chat.update({where:{id:a.id},data:{lastActivityAt:c,updatedAt:c}});return em(a.id,"chat.updated",Bm(h)),em(a.id,"message.created",Fm(m)),{message:Fm(m),assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:d,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,queuedAt:m,workingDirectory:i});const h=await Bl(e,{role:"USER",status:"COMPLETED",content:o,completedAt:m,metadata:jm(Pu(t.metadata,s))});em(e,"message.created",Fm(h));const f=await yu({accountId:a,attachments:s,automaticTitleSeed:d,chatId:e,collaborationMode:l,content:t.content,metadata:t.metadata??{},permissionMode:u,requestedCollaborationMode:c,startedAt:m,workingDirectory:i});return{message:Fm(h),assistantMessage:Fm(f.assistantMessage),runId:f.run.id,status:"QUEUED"}}async function yu({accountId:e,attachments:t,automaticTitleSeed:n,chatId:a,collaborationMode:r,content:i,metadata:s,permissionMode:o,requestedCollaborationMode:d,startedAt:c,workingDirectory:l}){const u=await ud.chatRun.create({data:{chatId:a,accountId:e,status:"QUEUED",request:jm({attachments:t.map(e=>e.message),collaborationMode:r,content:i,metadata:s,permissionMode:o,workingDirectory:l})}}),m=await Bl(a,{runId:u.id,role:"ASSISTANT",kind:"CHAT",status:"PENDING",content:""});return em(a,"chat.updated",Bm(await ud.chat.update({where:{id:a},data:{collaborationMode:d??void 0,lastActivityAt:c,status:"RUNNING",updatedAt:c}}))),em(a,"message.created",Fm(m)),em(a,"run.status",{runId:u.id,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(async function(e,t){const n=$l.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);$l.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),$l.get(e)===i&&$l.delete(e)}})(a,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=await ud.codexAccount.findUnique({where:{id:a}}),u=await ud.chat.findUnique({where:{id:e}});if(!l||!u)return;const m=tu(u.permissionMode),h=await ud.chatMessage.update({where:{id:n},data:{status:"STREAMING"}});em(e,"message.updated",Fm(h)),await ud.chatRun.update({where:{id:t},data:{status:"RUNNING",startedAt:new Date}}),em(e,"run.status",{runId:t,status:"RUNNING"});const f={chatId:e,externalThreadId:u.externalThreadId,interruptRequested:!1,permissionMode:m,runId:t};Ol.set(t,f);const p=Dd.getRuntime({accountId:l.id,command:l.command,args:Qm(l.args),workingDirectory:null,environment:Pd(l.environment)});f.runtime=p;let g="";const v=new Map;let w,x=u.externalThreadId,y=null,b=null;const N=p.onEvent(n=>{(function(e,t,n){const a=sm(e);if(t&&a&&a!==t)return!1;const r=om(e);return!n||!r||r===n})(n,x,w)&&Gl(t,()=>async function(e,t){const n=function(e){const t=Am(e);if(t){const e=Td(t.params),n=Td(t.info)??Td(e?.info)??e??t;return Cm(Mm(n,["last_token_usage","lastTokenUsage"])??Mm(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=Td(e.params),a=Td(n?.event),r=Td(n?.usage)??Td(a?.usage)??(km(e.method)?n:void 0);return r?Cm(r):null}(t);n&&em(e.chatId,"context.updated",n);if(function(e){return!!Am(e)||km(e.method)}(t))return;if(function(e){const t=Td(e.params),n=Td(t?.payload)??Td(t?.event);return[e.method,Sd(t?.type),Sd(n?.type),Sd(n?.event)].some(e=>hm(e??"").includes("compact"))}(t))return void(await nm({chatId:e.chatId,completedAt:new Date,content:Nm(t),itemId:`context-compaction:${om(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Im(t)?"STREAMING":"COMPLETED",turnId:om(t)}));const a=t.method??"",r=Td(t.params),i=cm(t),s=hm(Sd(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=Td(e.params),n=Td(e.result),a=Td(t?.event);return Km(t)??Km(a)??Km(n)}(t);return void(n&&await Ym(e.chatId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=zm(r?.delta)??zm(Td(r?.event)?.delta);if(!n)return;const a=dm(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await nm({chatId:e.chatId,content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Sd(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:om(t)});return void em(e.chatId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&fm(s))return void(await nm({chatId:e.chatId,content:"",fallbackMessageId:e.assistantMessageId,itemId:dm(t),kind:"CHAT",metadata:{kind:"assistant",phase:Sd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:om(t)}));if("item/completed"===a&&fm(s)){const n=function(e){if(!e)return"";const t=zm(e.text)??zm(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>zm(Td(e)?.text)??"").filter(Boolean).join("")}(i)||am(t);if(!n)return;const a=dm(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await nm({chatId:e.chatId,completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Sd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",turnId:om(t)}))}if(a.startsWith("item/reasoning/")||hm(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=dm(t)??`${n.toLowerCase()}:${om(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 nm({chatId:e.chatId,content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:pm(t)?"COMPLETED":"STREAMING",turnId:om(t)})}(e,t,"THINKING",{content:um(t,i),delta:lm(t),metadata:{kind:"thinking",status:vm(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=Td(t.params)??{},a="item/plan/delta"===t.method?lm(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>Td(e)).filter(e=>!!e).map(e=>({status:Sd(e.status)??"pending",step:Sd(e.step)??""})).filter(e=>e.step),i=Sd(n.explanation),s=om(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:dm(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 nm({chatId:e.chatId,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",turnId:s})}(e,t));if("commandexecution"===s||a.includes("commandExecution"))return void(await async function(e,t,n){const a=Td(t.params)??{},r=n??a,i=dm(t)??`command:${om(t)??"turn"}`,s=`COMMAND:${i}`,o=lm(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:zm(r.output)??zm(r.aggregatedOutput)??zm(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=Sd(r.command)??Sd(a.command)??"command",l=vm(r,t.method??"");await nm({chatId:e.chatId,completedAt:pm(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:ym(r.actions)??ym(r.commandActions),command:c,cwd:Sd(r.cwd)??Sd(a.cwd),durationMs:bm(r.durationMs)??bm(r.duration_ms),exitCode:bm(r.exitCode)??bm(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":pm(t)?"COMPLETED":"STREAMING",turnId:om(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=Td(t.params)??{},r=n??a,i=dm(t)??`file-change:${om(t)??"turn"}`,s=wm(r)??wm(a),o=ym(r.changes)??ym(a.changes)??[],d=function(e,t){const n=[Sd(e.path),Sd(e.filePath),Sd(e.file_path),...t.flatMap(e=>{const t=Td(e);return[Sd(t?.path),Sd(t?.filePath),Sd(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await nm({chatId:e.chatId,content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:bm(r.additions)??xm(s,"+"),changes:o,deletions:bm(r.deletions)??xm(s,"-"),diff:s,kind:"fileChange",paths:d,status:vm(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:pm(t)?"COMPLETED":"STREAMING",turnId:om(t)})}(e,t,i));if("serverRequest/resolved"===a)return void(await async function(e,t){const n=Td(t.params)??{},a=Sd(n.requestId)??Sd(n.id);if(!a)return;ql.delete($m(e,a));const r=await ud.chatMessage.findFirst({where:{chatId:e,requestId:a}});if(!r)return;em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:_m(r.metadata,{result:void 0===n.result?null:Um(n.result),resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}(e.chatId,t));("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=Td(t.params),a=Sd(Td(n?.error)?.message)??Sd(n?.message)??t.error?.message??"Codex runtime error.";await nm({chatId:e.chatId,completedAt:new Date,content:a,itemId:`error:${om(t)??Date.now()}`,kind:"ERROR",metadata:{details:Um(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",turnId:om(t)})}(e,t)}({assistantMessageId:h.id,chatId:e,streamBuffers:v,runId:t,onAssistantContent:e=>{g=e}},n)).catch(e=>tm("Codex event projection failed.",e))}),I=p.onServerRequest(n=>{(function(e,t,n){const a=Td(e.params),r=Sd(a?.threadId);if(t&&r&&r!==t)return!1;const i=Sd(a?.turnId);return!n||!i||i===n})(n,x,w)&&Gl(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=Td(t.params)??{},r=Od(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?hm(e).includes("permissions")?"permissions":"approval":hm(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:Sd(n.message),method:e,mode:Sd(n.mode),questions:Sm(n.questions),raw:Um(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:ym(n.availableDecisions),changes:ym(n.changes),command:Sd(n.command),cwd:Sd(n.cwd),itemId:Sd(n.itemId),kind:a,method:e,raw:Um(r),reason:Sd(n.reason)??Sd(n.message),requestId:t,requestKind:a,status:"pending",turnId:Sd(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=Dm(i);return e.runtime.respondToServerRequest(t.id,n),void(await nm({chatId:e.chatId,completedAt:new Date,content:Lm(s),kind:"APPROVAL",metadata:{...s,autoApproved:!0,decision:"approval"===i?"acceptForSession":void 0,result:n,resolvedAt:(new Date).toISOString(),status:"resolved"},rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"COMPLETED",turnId:Sd(a.turnId),itemId:Sd(a.itemId)}))}const o=await nm({chatId:e.chatId,content:Lm(s),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",turnId:Sd(a.turnId),itemId:Sd(a.itemId)});ql.set($m(e.chatId,r),{chatId:e.chatId,messageId:o.id,requestKind:i,requestId:r,rpcId:t.id,runtime:e.runtime})}({chatId:e,permissionMode:()=>f.permissionMode,runId:t,runtime:p},n)).catch(e=>tm("Codex server request projection failed.",e))});try{x=await async function(e,t,n){const a=t?"thread/resume":"thread/start",r=Td((await e.request(a,{...t?{threadId:t}:{},cwd:n},3e4)).result),i=Sd(Td(r?.thread)?.id)??Sd(r?.threadId)??Sd(r?.thread_id)??t;if(!i)throw new Error("Codex did not return a thread id.");return i}(p,u.externalThreadId,o),f.externalThreadId=x,function({chatId:e,cwd:t,runtime:n,seed:a,threadId:r}){const i=a?.trim();if(!i)return;const s=au(i),o=new Set(["untitled chat","conversation",...s?[Hm(s)]:[]]);(async()=>{s&&await Wm(n,e,r,s,o);const a=await async function(e,{cwd:t,seed:n}){try{const a=Td((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return Gm(Sd(a?.title)??Sd(a?.name)??Sd(a?.threadName)??"")}catch{return null}}(n,{cwd:t,seed:i});a&&await Wm(n,e,r,a,o)})().catch(()=>{})}({chatId:e,cwd:o,runtime:p,seed:c,threadId:x}),await Du(t)&&(f.interruptRequested=!0);const n=await Ju(p,u.model,u.reasoningEffort);y=new AbortController,b=p.waitForEvent(e=>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"))}(e)&&sm(e)===x&&(!w||om(e)===w),6e5,y.signal);const a=await async function(e,t,n,a){const r=Gu(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,!Hu(s))throw s}throw i instanceof Error?i:new Error("Codex turn failed.")}(p,{threadId:x,cwd:o,...u.model?{model:u.model}:{},...u.reasoningEffort?{effort:u.reasoningEffort}:{},...u.serviceTier?{serviceTier:u.serviceTier}:{},...Wu(d,n,m),metadata:i},r,s);w=rm(a),f.turnId=w,w&&(await ud.chatRun.update({where:{id:t},data:{externalTurnId:w}}),(f.interruptRequested||await Du(t))&&(f.interruptRequested=!0,await Ru(p,w,x)));const v=await b;if(await async function(e){await(jl.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Lu(gm(v));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Error(gm(v));const N=await async function(e,t,n){try{const a=Td((await e.request("thread/turns/list",{threadId:t,limit:20},3e4)).result);return im((Array.isArray(a?.data)?a.data:[]).map(e=>Td(e)).filter(e=>!!e).filter(e=>!n||Sd(e.id)===n).at(-1))??null}catch{return null}}(p,x,w)||am(v)||am(a)||g,I=new Date,k=await ud.chatMessage.update({where:{id:h.id},data:{content:N,status:"COMPLETED",rawPayload:jm(v),completedAt:I}});await qm(e,t,"COMPLETED"),await Rm(e,t,"Codex completed the turn."),await ud.chatRun.update({where:{id:t},data:{status:"COMPLETED",endedAt:new Date}});const C="plan"===d&&await async function(e,t){return(await ud.chatMessage.findMany({where:{chatId:e,runId:t,OR:[{kind:"PLAN"},{kind:"CHAT",role:"ASSISTANT"}]}})).some(e=>{const t=e.content.trim();return!(!t||"Planning..."===t)&&("CHAT"===e.kind?/<proposed_plan\b[^>]*>[\s\S]*?<\/proposed_plan>/i.test(t):"result"===Td(e.metadata)?.presentation)})}(e,t),A=await ud.chat.update({where:{id:e},data:{collaborationMode:C?"default":void 0,status:"IDLE",externalThreadId:x,lastActivityAt:I,updatedAt:I}});em(e,"chat.updated",Bm(A)),em(e,"message.completed",Fm(k)),em(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t,n){if(!n)return;const a=await async function(e,t){try{const n=Km(Td((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result));if(n)return n}catch{}try{const n=Td((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return Km((Jm(n?.data)??Jm(n?.items)??Jm(n?.threads)??[]).find(e=>Sd(e.id)===t))}catch{return null}}(e,n);a&&await Ym(t,a)}(p,e,x),await ru(await ud.chat.findUnique({where:{id:e}})??A,l.id,x)}catch(k){y?.abort(),await(b?.catch(()=>{}));const n=k instanceof Error?k.message:"Codex run failed.";if(await Rm(e,t,n),k instanceof Lu){await qm(e,t,"COMPLETED");const a=new Date,r=await ud.chatMessage.update({where:{id:h.id},data:{status:"COMPLETED",content:g,completedAt:a,metadata:_m(h.metadata,{interrupted:!0,kind:"assistant"})}});return await ud.chatRun.update({where:{id:t},data:{status:"CANCELLED",error:n,endedAt:new Date}}),em(e,"chat.updated",Bm(await ud.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),em(e,"message.completed",Fm(r)),void em(e,"run.status",{runId:t,status:"CANCELLED",error:n})}const a=new Date,r=await ud.chatMessage.update({where:{id:h.id},data:{status:"FAILED",content:g,completedAt:a}});await qm(e,t,"FAILED"),await ud.chatRun.update({where:{id:t},data:{status:"FAILED",error:n,endedAt:new Date}}),em(e,"chat.updated",Bm(await ud.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),em(e,"message.failed",{...Fm(r),error:n}),em(e,"run.status",{runId:t,status:"FAILED",error:n})}finally{y?.abort(),N(),I(),Ol.delete(t),jl.delete(t),_l.has(e)?function(e){const t=(Ul.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){if(bu(e))return;const t=await ud.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;const n=function(e){const[t,...n]=_l.get(e)??[];if(!t)return _l.delete(e),null;n.length?_l.set(e,n):_l.delete(e);return t}(e);if(!n)return;try{const a=t.autoRotateAccount?await Nu(t):t,r=a.accountId??n.accountId,i=await ud.codexAccount.findUnique({where:{id:r}});if(!i||"CONNECTED"!==i.status)throw new Error("Queued message account is no longer connected.");const s=new Date,o=await yu({accountId:r,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,chatId:e,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:tu(a.permissionMode),requestedCollaborationMode:n.collaborationMode,startedAt:s,workingDirectory:n.workingDirectory});await Mu(e,n.messageId,{dequeuedAt:s.toISOString(),queueStatus:"running",runId:o.run.id})}catch(k){await Mu(e,n.messageId,{error:k instanceof Error?k.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"})}}(e)).catch(()=>{});Ul.set(e,t),t.finally(()=>{Ul.get(e)===t&&Ul.delete(e)})}(e):function(e){(async function(e){const t=await ud.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;await Nu(t)})(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))}(a,u.id,m.id,e,i,s,t,l,r,n),{assistantMessage:m,run:u}}function bu(e){for(const t of Ol.values())if(t.chatId===e)return t;return null}async function Nu(e){if(!e.autoRotateAccount||"RUNNING"===e.status||bu(e.id))return e;const t=await ud.codexAccount.findMany({where:{status:"CONNECTED"},orderBy:{createdAt:"asc"}});if(!t.length)return e;const n=await async function(e){const t=new Map,n=await Promise.allSettled(e.map(async e=>({accountId:e.id,snapshot:Iu(await Rd({accountId:e.id,args:Qm(e.args),command:e.command,environment:Pd(e.environment),workingDirectory:null}))})));for(const a of n)"fulfilled"===a.status&&t.set(a.value.accountId,a.value.snapshot);return t}(t),a=t.find(t=>t.id===e.accountId),r=a?ku(n.get(a.id)):-1;if(a&&r>=0)return e;const i=function(e,t){return e.map((e,n)=>({account:e,index:n,score:ku(t.get(e.id))})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}(t,n);if(!i||i.id===e.accountId)return e;if(ku(n.get(i.id))<0)return e;const s=await ud.chat.update({where:{id:e.id},data:{accountId:i.id,externalThreadId:e.accountId?null:void 0}});return em(e.id,"chat.updated",Bm(s)),e.accountId||Lc(e.id,i.id).catch(e=>{console.warn("Failed to mirror imported Codex session.",e instanceof Error?e.message:e)}),s}function Iu(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function ku(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?Cu(e.secondary)?"weekly":Cu(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-Au(e.usedPercent));return t.length?Math.min(...t):0}function Cu(e){return Au(e?.usedPercent??0)>=100}function Au(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}async function Mu(e,t,n){const a=await ud.chatMessage.findUnique({where:{id:t}});a&&em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:t},data:{metadata:_m(a.metadata,n)}})))}function Eu(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 Wo(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 Wo(400,"Image attachments must be 6 MB or smaller.");const s=Su(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:Ut(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function Tu(e,t){const n=await async function(e,t){return Dl(await Ll(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Ut(),kind:"file",name:Su(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function Su(e,t){const n=e?.trim();return(n?Xt(n):t).slice(0,160)||"attachment"}function Pu(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}var Lu=class extends Error{};async function Du(e){return!!(await ud.chatRun.findUnique({where:{id:e},select:{interruptRequestedAt:!0}}))?.interruptRequestedAt}async function Ru(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)}function qu(e,t){const n={...e};return delete n[t],n}async function Ou(e,t){for(let n=0;n<3;n+=1){const a=await _u(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 _u(e,t){try{const n=Td((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return $u(Uu(n?.data)??Uu(n?.items)??Uu(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 $u(Uu(Td(Td(n.result)?.thread)?.turns)??[],!1)}function $u(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>ju(zu(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!Bu(Fu(i)))continue;const e=ju(zu(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function Uu(e){return Array.isArray(e)?e.map(Td).filter(e=>!!e):null}function zu(e){return Sd(e.id)??Sd(e.turnId)??Sd(e.turn_id)??null}function ju(e){const t=e?.trim();return t||null}function Fu(e){return(Sd(e.status)??Sd(e.turnStatus)??Sd(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function Bu(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function Gu(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={type:"text",text:n,text_elements:[]},s=(e,t)=>[i,...a.map(t=>({type:"image",[e]:t.message.url})),...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 Hu(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 Ku(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}function Wu(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:Qu(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function Vu(e,t=null){return"plan"!==e?{}:{collaborationMode:Qu(e,t)}}function Qu(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Ju(e,t,n){const a=Yu(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=Td(Td((await e.request("config/read",{},3e4)).result)?.config),n=Yu(Sd(t?.model));if(r=r??Xu(t?.model_reasoning_effort)??Xu(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=Td((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=Td(e),n=Yu(Sd(t?.id))??Yu(Sd(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}function Yu(e){const t=e?.trim();return t||null}function Xu(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}async function Zu(e){return((await ud.chatMessage.aggregate({where:{chatId:e},_max:{sequence:!0}}))._max.sequence??0)+1}function em(e,t,n){Il(e,t,n)}function tm(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}async function nm(e){return async function(e,t){if(!e)return t();const n=Fl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Fl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Fl.get(e)===i&&Fl.delete(e)}}(function(e){return e.requestId?`${e.chatId}:request:${e.requestId}`:e.itemId?`${e.chatId}:item:${e.kind}:${e.itemId}`:e.fallbackMessageId?`${e.chatId}:fallback:${e.fallbackMessageId}`:null}(e),async()=>{const t=await async function(e){if(e.requestId){const t=await ud.chatMessage.findFirst({where:{chatId:e.chatId,requestId:e.requestId},orderBy:{sequence:"desc"}});if(t)return t}if(e.itemId){const t=await ud.chatMessage.findFirst({where:{chatId:e.chatId,itemId:e.itemId,kind:e.kind},orderBy:{sequence:"desc"}});if(t)return t}if(e.fallbackMessageId){const t=await ud.chatMessage.findUnique({where:{id:e.fallbackMessageId}});if(!t)return null;if(!e.itemId||!t.itemId||t.itemId===e.itemId)return t}return null}(e),n={completedAt:e.completedAt,content:e.content,itemId:e.itemId??void 0,kind:e.kind,metadata:void 0===e.metadata?void 0:jm(e.metadata),rawPayload:void 0===e.rawPayload?void 0:jm(e.rawPayload),requestId:e.requestId??void 0,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId??void 0},a=Fm(t?await ud.chatMessage.update({where:{id:t.id},data:n}):await Bl(e.chatId,n));return em(e.chatId,t?"message.updated":"message.created",a),a})}function am(e){const t=Td(e.result),n=Td(e.params),a=Td(n?.payload)??n??t;return im(Td(n?.turn)??Td(t?.turn))??zm(t?.text)??zm(t?.content)??zm(a?.text)??zm(a?.content)??zm(a?.delta)??zm(a?.message)??""}function rm(e){const t=Td(e.result),n=Td(e.params);return Sd(t?.turnId)??Sd(t?.turn_id)??Sd(n?.turnId)??Sd(n?.turn_id)??Sd(Td(t?.turn)?.id)??Sd(Td(n?.turn)?.id)}function im(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=Td(e);return"agentMessage"!==t?.type?null:zm(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function sm(e){const t=Td(e.params),n=Td(e.result),a=Td(t?.event);return Sd(t?.threadId)??Sd(t?.thread_id)??Sd(n?.threadId)??Sd(n?.thread_id)??Sd(a?.threadId)??Sd(a?.thread_id)}function om(e){const t=Td(e.params),n=Td(e.result),a=cm(e);return Sd(t?.turnId)??Sd(n?.turnId)??Sd(a?.turnId)??rm(e)}function dm(e){const t=Td(e.params),n=Td(e.result),a=cm(e);return Sd(t?.itemId)??Sd(n?.itemId)??Sd(a?.id)}function cm(e){const t=Td(e.params),n=Td(e.result),a=Td(t?.payload);return Td(t?.item)??Td(n?.item)??Td(a?.item)}function lm(e){const t=Td(e.params),n=Td(t?.event);return zm(t?.delta)??zm(t?.text)??zm(t?.output)??zm(n?.delta)??zm(n?.text)}function um(e,t){const n=Td(e.params),a=Td(e.result);return[t,n,Td(n?.event),Td(n?.payload),a].map(mm).find(e=>!!e?.trim())}function mm(e){if(e)return zm(e.reasoning)??zm(e.reasoningText)??zm(e.reasoning_text)??zm(e.summary)??uu(e.summary)??uu(e.content)??zm(e.text)??zm(e.output)}function hm(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function fm(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function pm(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function gm(e){const t=Td(e.params);return Sd(Td(t?.error)?.message)??Sd(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function vm(e,t){const n=Sd(e?.status);return n?hm(n):t.includes("failed")||t.includes("error")?"failed":pm({method:t})?"completed":"running"}function wm(e){return zm(e.diff)??zm(e.unifiedDiff)??zm(e.unified_diff)??zm(e.patch)}function xm(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function ym(e){if(Array.isArray(e))return e.map(Um)}function bm(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Nm(e){const t=hm(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function Im(e){return hm(e.method??"").includes("start")}function km(e){const t=hm(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Cm(e,t=e){const n=Em(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=Em(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=Em(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}([Em(e,["input_tokens","inputTokens"]),Em(e,["output_tokens","outputTokens"]),Em(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{tokenLimit:i,tokensRemaining:c,tokensUsed:d,remainingPercent:Math.max(0,100-l),usedPercent:l}}function Am(e,t=0){if(t>4)return;const n=Td(e);if(!n)return;const a=hm(Sd(n.type)??""),r=hm(Sd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Am(n[i],t+1);if(e)return e}}function Mm(e,t){for(const n of t){const t=Td(e[n]);if(t)return t}}function Em(e,t){for(const n of t){const t=Tm(e[n]);if(void 0!==t)return t}}function Tm(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 Sm(e){return Array.isArray(e)?e.map(e=>Td(e)).filter(e=>!!e).map(e=>({header:Sd(e.header),id:Sd(e.id)??Ut(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:Pm(e.options),question:Sd(e.question)??Sd(e.header)??"Answer",selectionLimit:bm(e.selectionLimit)??bm(e.selection_limit)})):[]}function Pm(e){return Array.isArray(e)?e.map(e=>Td(e)).filter(e=>!!e).map(e=>({description:Sd(e.description),label:Sd(e.label)??Sd(e.value)??""})).filter(e=>e.label):[]}function Lm(e){return"userInput"===e.kind?Sd(e.message)??"Codex needs more information before it can continue.":Sd(e.reason)??Sd(e.command)??"Codex needs approval before it can continue."}function Dm(e){return"approval"===e?{decision:"acceptForSession"}:{scope:"session",permissions:!0}}async function Rm(e,t,n){const a=await ud.chatMessage.findMany({where:{chatId:e,kind:{in:["APPROVAL","USER_INPUT_PROMPT"]},runId:t,status:"PENDING"}});for(const r of a){const t=Td(r.metadata);if("resolved"!==t?.status&&"expired"!==t?.status){if(r.requestId){const t=$m(e,r.requestId),a=ql.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),ql.delete(t)}em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:_m(r.metadata,{expiredAt:(new Date).toISOString(),reason:n,status:"expired"}),status:"COMPLETED"}})))}}}async function qm(e,t,n){const a=await ud.chatMessage.findMany({where:{chatId:e,kind:{in:["COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"]},runId:t,status:{in:["PENDING","STREAMING"]}}});for(const r of a)em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,status:n}})))}async function Om(e){return(await ud.chatMessage.findUnique({where:{id:e},select:{metadata:!0}}))?.metadata??null}function _m(e,t){return jm({...Td(e)??{},...t})}function $m(e,t){return`${e}:${t}`}function Um(e){return JSON.parse(JSON.stringify(e))}function zm(e){return"string"==typeof e&&e.length>0?e:void 0}function jm(e){return JSON.parse(JSON.stringify(e))}function Fm(e){return{...e,metadata:e.metadata,rawPayload:e.rawPayload}}function Bm(e){return{...e,collaborationMode:Zl(e.collaborationMode),permissionMode:tu(e.permissionMode),reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier}}function Gm(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function Hm(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}function Km(e){const t=Td(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name,t.title];for(const r of n){const e=Gm(Sd(r)??"");if(e)return e}const a=Td(t.thread);return a?Km(a):null}async function Wm(e,t,n,a,r){const i=Gm(a);if(!i)return!1;const s=await ud.chat.findUnique({where:{id:t}});if(!s)return!1;const o=Hm(s.title);return!(!nu(s.title)&&!r.has(o))&&(await Ym(t,i),Vm(e,n,i),!0)}async function Vm(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}function Qm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Jm(e){return Array.isArray(e)?e.map(e=>Td(e)).filter(e=>!!e):null}async function Ym(e,t){em(e,"chat.updated",Bm(await ud.chat.update({where:{id:e},data:{title:t}})))}var Xm=yn({action:()=>eh,loader:()=>Zm});async function Zm({request:e}){try{return Jo(e,["GET"]),await pd(e),Vo(await async function(){const e=await Kl();return e.length?(Hl().catch(e=>{console.warn("Failed to refresh local chat index.",e instanceof Error?e.message:e)}),e):(await Hl(),Kl())}())}catch(t){return rd(t)}}async function eh({request:e}){try{Jo(e,["POST"]),await pd(e);const t=await Yo(e);return Vo(await async function(e){const t=await ud.codexAccount.findUnique({where:{id:e.accountId}});if(!t)throw new Wo(400,"Account not found.");if("CONNECTED"!==t.status)throw new Wo(400,"Authenticate the account before starting a chat.");return ud.chat.create({data:{accountId:e.accountId,autoRotateAccount:e.autoRotateAccount,workingDirectory:Al(e.workingDirectory),model:void 0===e.model?void 0:Ql(e.model),reasoningEffort:void 0===e.reasoningEffort?void 0:Jl(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Yl(e.serviceTier),collaborationMode:void 0===e.collaborationMode?void 0:Xl(e.collaborationMode),permissionMode:void 0===e.permissionMode?void 0:eu(e.permissionMode),title:e.title??"Untitled chat"}})}({accountId:Xo(t.accountId,"accountId",{required:!0}),autoRotateAccount:ed(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:Xo(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:Xo(t.model,"model",{maxLength:160}),reasoningEffort:th(t.reasoningEffort,"reasoningEffort"),serviceTier:th(t.serviceTier,"serviceTier"),collaborationMode:th(t.collaborationMode,"collaborationMode"),permissionMode:th(t.permissionMode,"permissionMode"),title:Xo(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return rd(t)}}function th(e,t){return null===e?null:Xo(e,t,{maxLength:80})}var nh=yn({action:()=>rh,loader:()=>ah});async function ah({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await Wl(ad(t,"chatId")))}catch(n){return rd(n)}}async function rh({request:e,params:t}){try{await pd(e);const n=ad(t,"chatId");if("PATCH"===e.method){const t=await Yo(e);return Vo(await Vl(n,{accountId:Xo(t.accountId,"accountId"),autoRotateAccount:ed(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:Xo(t.model,"model",{maxLength:160}),reasoningEffort:ih(t.reasoningEffort,"reasoningEffort"),serviceTier:ih(t.serviceTier,"serviceTier"),collaborationMode:ih(t.collaborationMode,"collaborationMode"),permissionMode:ih(t.permissionMode,"permissionMode"),title:Xo(t.title,"title",{maxLength:160}),workingDirectory:Xo(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Vo(await async function(e){return await Wl(e),ud.chat.update({where:{id:e},data:{status:"ARCHIVED"}})}(n));Qo(e.method)}catch(n){return rd(n)}}function ih(e,t){return null===e?null:Xo(e,t,{maxLength:80})}var sh=yn({loader:()=>oh});async function oh({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await async function(e){const t=await Wl(e);return t.externalThreadId?{usage:await Dc(t.id,t.externalThreadId)}:{usage:null}}(ad(t,"chatId")))}catch(n){return rd(n)}}var dh=yn({loader:()=>ch});async function ch({request:e,params:t}){try{Jo(e,["GET"]),await pd(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Wo(400,"path is required.");return Vo(await Pl(ad(t,"chatId"),a,nd(n,"line",0)||null))}catch(n){return rd(n)}}var lh=wn(dn);async function uh(e){const t=await hh(e),n=await fh(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await ph(t.cwd),r=await gh(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 gh(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await vh(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 mh(e,t){const n=await hh(e);if("RUNNING"===n.status)throw new Wo(409,"Git actions are disabled while Codex is running.");if(!(await fh(n.cwd)))throw new Wo(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=wh(t.branch);a=await vh(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=wh(t.branch);await vh(n.cwd,["check-ref-format","--branch",e]),a=await vh(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Wo(400,"Commit message is required.");await vh(n.cwd,["add","-A"]),a=await vh(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await vh(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Wo(400,"Unsupported git action.");a=await gh(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await vh(n.cwd,["push"]):await async function(e){await vh(e,["remote","get-url","origin"]);const t=await ph(e);if(!t)throw new Wo(400,"Cannot push while detached from a branch.");return vh(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:yh(t.action),output:a,status:await uh(e)}}async function hh(e){const t=await ud.chat.findUnique({where:{id:e},select:{status:!0,workingDirectory:!0}});if(!t)throw new Wo(404,"Chat not found.");if(!t.workingDirectory)throw new Wo(400,"Chat does not have a working directory.");return{cwd:Al(t.workingDirectory),status:t.status}}async function fh(e){return gh(e,["rev-parse","--show-toplevel"])}async function ph(e){return await gh(e,["symbolic-ref","--quiet","--short","HEAD"])??await gh(e,["rev-parse","--short","HEAD"])}async function gh(e,t){try{return await vh(e,t)}catch{return null}}async function vh(e,t){try{const n=await lh("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return xh(n.stdout,n.stderr)}catch(n){throw new Wo(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return xh("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 wh(e){const t=e?.trim();if(!t)throw new Wo(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Wo(400,"Branch name is invalid.");return t}function xh(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function yh(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 bh({request:e,params:t}){try{Jo(e,["GET"]),await pd(e);const n=ad(t,"chatId"),a=ad(t,"operation"),r=new URL(e.url);if("status"===a)return Vo(await uh(n));if("branches"===a)return Vo(await async function(e){const t=await hh(e);if(!(await fh(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await ph(t.cwd);return{branches:(await vh(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 gh(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Vo(await async function(e,t){const n=await hh(e);if(!(await fh(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=xh(await gh(n.cwd,["diff","--stat",...a]),await gh(n.cwd,["diff","--cached","--stat",...a]));return{diff:xh(await gh(n.cwd,["diff","--no-ext-diff",...a]),await gh(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));throw new Wo(404,"Git operation not found.")}catch(n){return rd(n)}}async function Nh({request:e,params:t}){try{if(Jo(e,["POST"]),await pd(e),"action"!==ad(t,"operation"))throw new Wo(404,"Git operation not found.");const n=await Yo(e),a={action:Ih(n.action),branch:Xo(n.branch,"branch",{maxLength:240}),message:Xo(n.message,"message",{maxLength:5e3})};return Vo(await mh(ad(t,"chatId"),a))}catch(n){return rd(n)}}function Ih(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Wo(400,"action is invalid.")}async function kh({request:e,params:t}){try{Jo(e,["GET"]),await pd(e);const n=new URL(e.url);return Vo(await su(ad(t,"chatId"),nd(n,"afterSequence",0),nd(n,"limit",50)))}catch(n){return rd(n)}}async function Ch({request:e,params:t}){try{Jo(e,["POST"]),await pd(e);const n=await Yo(e),a={content:Mh(n.content),accountId:Xo(n.accountId,"accountId"),attachments:Eh(n.attachments),collaborationMode:Lh(n.collaborationMode,"collaborationMode"),delivery:Ah(n.delivery),metadata:td(n.metadata,"metadata")};return Vo(await xu(ad(t,"chatId"),a),{status:201})}catch(n){return rd(n)}}function Ah(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Wo(400,"delivery is invalid.")}}function Mh(e){if(null==e)return"";if("string"!=typeof e)throw new Wo(400,"content must be a string.");if(e.length>4e4)throw new Wo(400,"content must be 40000 characters or fewer.");return e.trim()}function Eh(e){if(void 0!==e){if(!Array.isArray(e))throw new Wo(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Wo(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:Th(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Sh(n.mimeType,`attachments[${t}].mimeType`,80),name:Sh(n.name,`attachments[${t}].name`,160),size:Ph(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Sh(n.name,`attachments[${t}].name`,160),path:Th(n.path,`attachments[${t}].path`,4096),size:Ph(n.size,`attachments[${t}].size`)};throw new Wo(400,`attachments[${t}].kind is invalid.`)})}}function Th(e,t,n){if("string"!=typeof e||!e.trim())throw new Wo(400,`${t} is required.`);if(e.length>n)throw new Wo(400,`${t} is too large.`);return e}function Sh(e,t,n){if(null!=e){if("string"!=typeof e)throw new Wo(400,`${t} must be a string.`);if(e.length>n)throw new Wo(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function Ph(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Wo(400,`${t} must be a positive number.`);return e}}function Lh(e,t){return null===e?null:Xo(e,t,{maxLength:80})}async function Dh({request:e,params:t}){try{return Jo(e,["POST"]),await pd(e),Vo(await async function(e){const t=await Wl(e);if("RUNNING"!==t.status)throw new Wo(409,"There is no running task to stop.");const n=await ud.chatRun.findFirst({where:{chatId:e,status:{in:["QUEUED","RUNNING"]}},orderBy:{createdAt:"desc"}});if(!n)throw new Wo(409,"There is no active run to stop.");const a=new Date;await ud.chatRun.update({where:{id:n.id},data:{interruptRequestedAt:a}});const r=Ol.get(n.id);return r&&(r.interruptRequested=!0,r.runtime&&r.turnId&&await Ru(r.runtime,r.turnId,r.externalThreadId??t.externalThreadId)),{chatId:e,runId:n.id,status:n.status,message:r?.turnId?"Stop signal sent to Codex.":"Stop requested. Codex will be interrupted as soon as the turn starts."}}(ad(t,"chatId")))}catch(n){return rd(n)}}async function Rh({request:e,params:t}){try{Jo(e,["POST"]),await pd(e);const n=await Yo(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Wo(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Vo(await wu(ad(t,"chatId"),ad(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return rd(n)}}async function qh({request:e}){try{return Jo(e,["GET"]),await pd(e),Vo(await kl(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return rd(t)}}async function Oh({request:e}){try{Jo(e,["POST"]),await pd(e);const t=await Yo(e),n={parentPath:Xo(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:Xo(t.name,"name",{required:!0,maxLength:255})};return Vo(await Cl(n.parentPath,n.name),{status:201})}catch(t){return rd(t)}}var _h={entry:{module:"/assets/entry.client-BQZeV9JD.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/react-dom-D4MOkHq2.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-B5TLitpK.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/react-dom-D4MOkHq2.js","/assets/document-title-RYIi5OZD.js","/assets/session-provider-QLGSjKmA.js"],css:["/assets/root-DlK_mPNx.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-BDvoix-O.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/label-BpA-r6tL.js","/assets/session-provider-QLGSjKmA.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-DfV6V3St.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-BafG7OhV.js","/assets/label-BpA-r6tL.js","/assets/document-title-RYIi5OZD.js","/assets/session-provider-QLGSjKmA.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-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-Vd20oLbY.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-BafG7OhV.js","/assets/label-BpA-r6tL.js","/assets/document-title-RYIi5OZD.js","/assets/session-provider-QLGSjKmA.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-DdKuH37F.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-VXv-BDrQ.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-BafG7OhV.js","/assets/label-BpA-r6tL.js","/assets/document-title-RYIi5OZD.js","/assets/session-provider-QLGSjKmA.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-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.$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-BksU0sQ7.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-ChGZGvfx.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-DGbCmT_9.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-DZh4HPLO.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-Bp51NHGy.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-DLgNMRyd.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-DZ_6Q7rY.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-BEX87qHo.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-v4G0lNKq.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-BrN7O-wM.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-CiUW8Knm.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-cDawTuvN.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-2DlVPDlX.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-CTlCffOk.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-nVoleT74.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-9394b151.js",version:"9394b151",sri:void 0},$h="build/client",Uh="/",zh={unstable_optimizeDeps:!1,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},jh=!0,Fh=!1,Bh=[],Gh={mode:"lazy",manifestPath:"/__manifest"},Hh="/",Kh={module:bn},Wh={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:oa},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:xa},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:ba},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:jo},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:Bo},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:Ho},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:id},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:Id},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:Cd},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:Md},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:ac},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:oc},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:cc},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:uc},"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:fc},"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:bc},"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:Ic},"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:Cc},"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:Mc},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Xm},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:nh},"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:sh},"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:dh},"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:yn({action:()=>Nh,loader:()=>bh})},"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:yn({action:()=>Ch,loader:()=>kh})},"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:yn({action:()=>Dh})},"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:yn({action:()=>Rh})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:yn({action:()=>Oh,loader:()=>qh})}},Vh=!1;export{Vh as allowedActionOrigins,_h as assets,$h as assetsBuildDirectory,Uh as basename,Kh as entry,zh as future,Fh as isSpaMode,Bh as prerender,Hh as publicPath,Gh as routeDiscovery,Wh as routes,jh 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,useNavigate as h,useOutletContext as f,useParams as p}from"react-router";import{isbot as g}from"isbot";import{renderToPipeableStream as v}from"react-dom/server";import{Fragment as w,jsx as x,jsxs as y}from"react/jsx-runtime";import{QueryClient as b,QueryClientProvider as N,useMutation as I,useQueries as k,useQuery as C,useQueryClient as A}from"@tanstack/react-query";import{ThemeProvider as M,useTheme as E}from"next-themes";import*as T from"react";import{createContext as S,useCallback as P,useContext as L,useEffect as D,useMemo as R,useRef as q,useState as O,useSyncExternalStore as _}from"react";import{Toaster as $,toast as U}from"sonner";import{AlertTriangle as z,Archive as j,ArrowLeft as F,ArrowRight as B,ArrowUp as G,Brain as H,Check as K,CheckCircle2 as W,CheckIcon as V,ChevronDown as Q,ChevronRight as J,ChevronRightIcon as Y,CircleCheckIcon as X,Clock as Z,Code2 as ee,Copy as te,Cpu as ne,Download as ae,ExternalLink as re,Eye as ie,File as se,FileCode as oe,FileDiff as de,Filter as ce,Folder as le,FolderOpen as ue,FolderPlus as me,Gauge as he,GitBranch as fe,GitCommitHorizontal as pe,Home as ge,Image as ve,Info as we,InfoIcon as xe,KeyRound as ye,Laptop as be,ListChecks as Ne,Loader2 as Ie,Loader2Icon as ke,LockKeyhole as Ce,LogOut as Ae,Mail as Me,Menu as Ee,MessageSquare as Te,Moon as Se,MoreHorizontal as Pe,OctagonXIcon as Le,PanelLeftIcon as De,Paperclip as Re,Pencil as qe,PencilLine as Oe,PlugZap as _e,Plus as $e,RefreshCw as Ue,RotateCcw as ze,RotateCw as je,Search as Fe,Server as Be,Settings as Ge,Shield as He,ShieldCheck as Ke,Square as We,SquarePen as Ve,Sun as Qe,Terminal as Je,Trash2 as Ye,TriangleAlertIcon as Xe,Upload as Ze,UserRound as et,X as tt,XIcon as nt,Zap as at}from"lucide-react";import{Tooltip as rt}from"@base-ui/react/tooltip";import{clsx as it}from"clsx";import{twMerge as st}from"tailwind-merge";import{Button as ot}from"@base-ui/react/button";import{cva as dt}from"class-variance-authority";import{Input as ct}from"@base-ui/react/input";import{AlertDialog as lt}from"@base-ui/react/alert-dialog";import{mergeProps as ut}from"@base-ui/react/merge-props";import{useRender as mt}from"@base-ui/react/use-render";import{Dialog as ht}from"@base-ui/react/dialog";import{ScrollArea as ft}from"@base-ui/react/scroll-area";import{Separator as pt}from"@base-ui/react/separator";import{io as gt}from"socket.io-client";import{Menu as vt}from"@base-ui/react/menu";import wt from"react-markdown";import xt from"remark-gfm";import yt from"highlight.js/lib/core";import bt from"highlight.js/lib/languages/bash";import Nt from"highlight.js/lib/languages/css";import It from"highlight.js/lib/languages/go";import kt from"highlight.js/lib/languages/json";import Ct from"highlight.js/lib/languages/javascript";import At from"highlight.js/lib/languages/markdown";import Mt from"highlight.js/lib/languages/python";import Et from"highlight.js/lib/languages/rust";import Tt from"highlight.js/lib/languages/shell";import St from"highlight.js/lib/languages/sql";import Pt from"highlight.js/lib/languages/typescript";import Lt from"highlight.js/lib/languages/xml";import Dt from"highlight.js/lib/languages/yaml";import{Popover as Rt}from"@base-ui/react/popover";import{Switch as qt}from"@base-ui/react/switch";import"dotenv/config";import{createHash as Ot,createHmac as _t,randomBytes as $t,randomUUID as Ut,scryptSync as zt,timingSafeEqual as jt}from"node:crypto";import{Prisma as Ft,PrismaClient as Bt}from"@prisma/client";import{chmodSync as Gt,constants as Ht,existsSync as Kt,mkdirSync as Wt,readFileSync as Vt,realpathSync as Qt,statSync as Jt}from"node:fs";import{homedir as Yt}from"node:os";import{basename as Xt,delimiter as Zt,dirname as en,extname as tn,isAbsolute as nn,join as an,relative as rn,resolve as sn,sep as on}from"node:path";import{execFile as dn,spawn as cn}from"node:child_process";import{access as ln,copyFile as un,mkdir as mn,open as hn,readFile as fn,readdir as pn,realpath as gn,stat as vn}from"node:fs/promises";import{promisify as wn}from"node:util";var xn=Object.defineProperty,yn=(e,t)=>{let n={};for(var a in e)xn(n,a,{get:e[a],enumerable:!0});return t||xn(n,Symbol.toStringTag,{value:"Module"}),n},bn=yn({default:()=>In,streamTimeout:()=>Nn}),Nn=5e3;function In(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&&g(l)||i.isSpaMode?"onAllReady":"onShellReady",m=setTimeout(()=>f(),Nn+1e3);const{pipe:h,abort:f}=v(x(d,{context:i,url:n.url}),{[u](){c=!0;const n=new e({final(e){clearTimeout(m),m=void 0,e()}}),i=t(n);r.set("Content-Type","text/html"),h(n),s(new Response(i,{headers:r,status:a}))},onShellError(e){o(e)},onError(e){a=500,c&&console.error(e)}})})}var kn=({...e})=>{const{theme:t="system"}=E();return x($,{theme:t,className:"toaster group",icons:{success:x(X,{className:"size-4"}),info:x(xe,{className:"size-4"}),warning:x(Xe,{className:"size-4"}),error:x(Le,{className:"size-4"}),loading:x(ke,{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 Cn(...e){return st(it(e))}function An({delay:e=0,...t}){return x(rt.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function Mn({...e}){return x(rt.Root,{"data-slot":"tooltip",...e})}function En({...e}){return x(rt.Trigger,{"data-slot":"tooltip-trigger",...e})}function Tn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(rt.Portal,{children:x(rt.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(rt.Popup,{"data-slot":"tooltip-content",className:Cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[i,x(rt.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 Sn="xedoc";function Pn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Sn}`:Sn}(e);D(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Sn}},[t])}var Ln=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Dn=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 Rn(e){return Gn(e.serverUrl,"/api/auth/session",{token:e.token})}async function qn(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function On(e,t,n={}){return Gn(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:n,token:e.token})}async function _n(e,t){return Gn(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function $n(e,t){return Gn(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}async function Un(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return Gn(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function zn(e,t){return Gn(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function jn(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function Fn(e,t,n=0){return Gn(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function Bn(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function Gn(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 Dn({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,Hn(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Ln([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,Kn(o)??Hn(s)].filter(Boolean).join("\n"),i.status,a);return o}function Hn(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function Kn(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 Wn(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 Vn={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function Qn(){const e=Jn();e&&(Zn(e,"serverUrl"),Zn(e,"token"))}function Jn(){return"undefined"==typeof window?null:window.localStorage}function Yn(e,t){return e.getItem(Vn[t])}function Xn(e,t,n){e.setItem(Vn[t],n)}function Zn(e,t){e.removeItem(Vn[t])}function ea(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 ta=S(void 0);function na({children:e}){const[t,n]=O(null),[a,r]=O(!1),i=_(ra,ia,sa),s=t,o=!i||!a;D(()=>{if(!i)return;const e=function(){const e=Jn();if(!e)return null;const t=Yn(e,"serverUrl"),n=Yn(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Rn(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{Qn(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=P(async e=>{const t=ea(window.location.origin),{token:a}=await async function(e,t){return Gn(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=Jn();t&&(Xn(t,"serverUrl",e.serverUrl),Xn(t,"token",e.token))}(i),n(i),r(!0)},[]),c=P(async()=>{s&&await Rn(s)},[s]),l=P(()=>{Qn(),n(null),r(!0)},[]),u=R(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ta.Provider,{value:u,children:e})}function aa(){const e=L(ta);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function ra(){return()=>{}}function ia(){return!0}function sa(){return!1}var oa=yn({ErrorBoundary:()=>ma,Layout:()=>la,default:()=>ua,links:()=>ca,meta:()=>da});function da(){return[{title:Sn}]}function ca(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function la({children:e}){return y("html",{lang:"en",suppressHydrationWarning:!0,children:[y("head",{children:[x("meta",{charSet:"utf-8"}),x("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),x(a,{}),x(n,{})]}),y("body",{children:[e,x(o,{}),x(s,{})]})]})}var ua=c(function(){const[e]=O(()=>new b({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(M,{attribute:"class",defaultTheme:"system",enableSystem:!0,children:x(N,{client:e,children:y(An,{children:[x(na,{children:x(i,{})}),x(kn,{richColors:!0})]})})})}),ma=l(function({error:e}){const t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:"Unexpected application error.";return x("main",{className:"flex min-h-svh items-center justify-center bg-background p-6",children:y("section",{className:"max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[x("h1",{className:"text-lg font-semibold",children:"xedoc"}),x("p",{className:"mt-2 whitespace-pre-wrap text-sm text-muted-foreground",children:t})]})})}),ha=dt("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 fa({className:e,variant:t="default",size:n="default",...a}){return x(ot,{"data-slot":"button",className:Cn(ha({variant:t,size:n,className:e})),...a})}function pa({className:e,type:t,...n}){return x(ct,{type:t,"data-slot":"input",className:Cn("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 ga({className:e,...t}){return x("label",{"data-slot":"label",className:Cn("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 va(){const[e,t]=O(""),[n,a]=O(""),[i,s]=O(null),[o,d]=O(null),[c,l]=O(!1),{loading:u,session:m,setup:f}=aa(),p=h(),g=!1===i;if(D(()=>{let e=!0;return d(null),async function(e){return Gn(e,"/api/auth/status",{token:null})}(ea(window.location.origin)).then(t=>{e&&s(t.passwordConfigured)}).catch(t=>{e&&(d(t instanceof Error?t.message:"Unable to read server auth status."),s(!0))}),()=>{e=!1}},[]),u)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{className:"size-5 animate-spin text-muted-foreground"})});if(m)return x(r,{replace:!0,to:"/"});if(null===i)return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{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 f(e),p("/",{replace:!0})}catch(t){d(t instanceof Error?t.message:"Unable to connect.")}finally{l(!1)}}}return x("main",{className:"flex min-h-svh items-center justify-center bg-muted/30 px-4 py-8",children:y("section",{className:"w-full max-w-md rounded-xl border bg-background p-5 shadow-sm",children:[y("div",{className:"mb-6 flex items-center gap-3",children:[x("div",{className:"flex size-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:x(g?ye:_e,{className:"size-5"})}),y("div",{children:[x("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),x("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:"server-password",children:"Server password"}),x(pa,{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&&wa(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(pa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&wa(e,n,g)&&v()}})]}):null,o?x("div",{className:"whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:o}):null,y(fa,{disabled:!wa(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ie,{className:"animate-spin"}):x(g?ye:_e,{}),g?"Set Password":"Connect"]})]})]})})}function wa(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var xa=yn({default:()=>ya}),ya=c(function(){return x(va,{})}),ba=yn({loader:()=>Na});function Na(){return m("/favicon.svg",301)}function Ia({...e}){return x(lt.Root,{"data-slot":"alert-dialog",...e})}function ka({...e}){return x(lt.Portal,{"data-slot":"alert-dialog-portal",...e})}function Ca({className:e,...t}){return x(lt.Backdrop,{"data-slot":"alert-dialog-overlay",className:Cn("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 Aa({className:e,size:t="default",...n}){return y(ka,{children:[x(Ca,{}),x(lt.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:Cn("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 Ma({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:Cn("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 Ea({className:e,...t}){return x("div",{"data-slot":"alert-dialog-footer",className:Cn("-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 Ta({className:e,...t}){return x(lt.Title,{"data-slot":"alert-dialog-title",className:Cn("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 Sa({className:e,...t}){return x(lt.Description,{"data-slot":"alert-dialog-description",className:Cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Pa({className:e,...t}){return x(fa,{"data-slot":"alert-dialog-action",className:Cn(e),...t})}function La({className:e,variant:t="outline",size:n="default",...a}){return x(lt.Close,{"data-slot":"alert-dialog-cancel",className:Cn(e),render:x(fa,{variant:t,size:n}),...a})}function Da({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:Cn("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 Ra=dt("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 qa({className:e,variant:t="default",render:n,...a}){return mt({defaultTagName:"span",props:ut({className:Cn(Ra({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function Oa({className:e,status:t}){return x(qa,{className:e,variant:_a(t),children:t.toLowerCase()})}function _a(e){switch(e){case"ERROR":case"FAILED":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"}}var $a={args:"",command:"",displayName:"",environment:""};function Ua({accounts:e,createFocusKey:t=0,session:n}){const[a,r]=O($a),[i,s]=O(null),[o,d]=O($a),[c,l]=O({}),[u,m]=O(null),h=q(null),f=q(null),p=q(null),g=A();D(()=>{if(t<=0)return;const e=window.setTimeout(()=>{f.current?.scrollIntoView({block:"start",behavior:"smooth"}),p.current?.focus()},80);return()=>window.clearTimeout(e)},[t]);const v=()=>g.invalidateQueries({queryKey:["accounts"]}),b=I({mutationFn:async(e={})=>{const t=await async function(e,t){return Gn(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(n,{...ja(a),displayName:a.displayName.trim()});return e.authMode?{account:t,auth:await On(n,t.id,{mode:e.authMode}),popup:e.popup}:{account:t,auth:null,popup:e.popup}},onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:({auth:e,popup:t})=>{r($a),U.success("Account created."),v(),e&&L(e,t)}}),N=I({mutationFn:()=>{if(!i)throw new Error("Select an account to edit.");return async function(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(n,i.id,{...ja(o),displayName:o.displayName.trim()})},onError:e=>U.error(Ga(e)),onSuccess:()=>{s(null),d($a),U.success("Account updated."),v()}}),k=I({mutationFn:({accountId:e,mode:t})=>On(n,e,{mode:t}),onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:(e,t)=>{v(),L(e,t.popup)}}),C=I({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return Gn(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(n,e,{redirectUrl:t.trim()}),onError:e=>U.error(Ga(e)),onSuccess:(e,t)=>{l(e=>({...e,[t.accountId]:""})),v(),"CONNECTED"!==e.status?U.info(e.message??"Callback accepted."):U.success("Account connected.")}}),M=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(n,e),onError:e=>U.error(Ga(e)),onSuccess:()=>{m(null),U.success("Account deleted."),v(),g.invalidateQueries({queryKey:["chats"]})}}),E=I({mutationFn:()=>async function(e){return Gn(e.serverUrl,"/api/accounts/export",{token:e.token})}(n),onError:e=>U.error(Ga(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),U.success(`Exported ${e.accounts.length} ${Ba(e.accounts.length)}.`)}}),T=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(n,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),U.error(Ga(e))},onSuccess:(e,t)=>{U.success(`Imported ${e.imported} ${Ba(e.imported)}.`),v(),g.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){L(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&U.info(`${a} more ${Ba(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&U.success(`Connected ${a} imported ${Ba(a)}.`)}(e.authentications,t.popup)}});function S(e,t="browser"){k.mutate({accountId:e,mode:t,popup:Ha()})}function P(e){b.mutate({authMode:e,popup:Ha()})}function L(e,t){if(e.authUrl)return Ka(e.authUrl,t),void U.info("device"===e.authMode?"Device login page opened.":"Authentication page opened.");t?.close(),"AUTHENTICATING"!==e.status?U.success(e.message??"Account is connected."):U.info(e.message??"Authentication is still in progress.")}return y(w,{children:[y("div",{className:"grid gap-5",children:[y("section",{className:"grid gap-3",children:[y("div",{className:"flex flex-wrap items-end justify-between gap-3",children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Accounts"}),x("p",{className:"text-sm text-muted-foreground",children:"Authenticate accounts before using them for chats."})]}),y("div",{className:"text-xs text-muted-foreground",children:[e.length," ",Ba(e.length)]})]}),e.length?e.map(e=>{const t=c[e.id]??"",n=("browser"===(a=e.lastAuthMode)||"device"===a?a:null)??"browser";var a;const r="device"===n,u="AUTHENTICATING"===e.status||!!e.lastAuthUrl,h=k.isPending&&k.variables?.accountId===e.id,f=k.variables?.mode??"browser",p=h&&"browser"===f,g=h&&"device"===f,v=C.isPending&&C.variables?.accountId===e.id;return x("div",{className:"grid gap-4 rounded-md border bg-background p-4",children:i?.id===e.id?y(w,{children:[y("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[y("div",{children:[y("h4",{className:"text-sm font-semibold",children:["Edit ",e.displayName]}),x("p",{className:"text-xs text-muted-foreground",children:"Saving runtime settings disconnects the account until it is authenticated again."})]}),y(fa,{size:"sm",variant:"ghost",onClick:()=>{s(null),d($a)},children:[x(tt,{}),"Cancel"]})]}),x(za,{form:o,onChange:d,prefix:`edit-account-${e.id}`}),y(fa,{className:"w-fit",disabled:!o.displayName.trim()||N.isPending,onClick:()=>N.mutate(),children:[N.isPending?x(Ie,{className:"animate-spin"}):x(W,{}),"Save account"]})]}):y(w,{children:[y("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto] md:items-start",children:[y("div",{className:"min-w-0 space-y-2",children:[y("div",{className:"flex items-center gap-2",children:[x("h4",{className:"truncate text-sm font-semibold",children:e.displayName}),x(Oa,{status:e.status})]}),y("p",{className:"truncate font-mono text-xs text-muted-foreground",children:[e.command," ",e.args.join(" ")]}),e.environment?y("p",{className:"text-xs text-muted-foreground",children:[Object.keys(e.environment).length," env"," ",1===Object.keys(e.environment).length?"value":"values"]}):null,e.lastError?x("p",{className:"mt-2 whitespace-pre-wrap rounded-md border border-destructive/30 bg-destructive/10 px-2 py-1 text-xs text-destructive",children:e.lastError}):null]}),y("div",{className:"flex flex-wrap justify-start gap-2 md:justify-end",children:[y(fa,{disabled:h,size:"sm",variant:"CONNECTED"===e.status?"secondary":"default",onClick:()=>S(e.id,"AUTHENTICATING"===e.status?n:"browser"),children:[p?x(Ie,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(je,{}):x(re,{}),"AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate"]}),y(fa,{disabled:h,size:"sm",variant:"outline",onClick:()=>S(e.id,"device"),children:[g?x(Ie,{className:"animate-spin"}):x(ye,{}),"Device Login"]}),y(fa,{size:"sm",variant:"outline",onClick:()=>function(e){var t;s(e),d({args:e.args.join(" "),command:e.command,displayName:e.displayName,environment:(t=e.environment,t?JSON.stringify(t,null,2):"")})}(e),children:[x(qe,{}),"Edit"]}),y(fa,{size:"sm",variant:"destructive",onClick:()=>m(e),children:[x(Ye,{}),"Delete"]})]})]}),u?y("div",{className:"grid gap-4 rounded-md border bg-muted/25 p-3",children:[y("div",{children:[x("h5",{className:"text-sm font-medium",children:r?"Device Login":"Authentication"}),x("p",{className:"text-xs text-muted-foreground",children:r?"Open the verification URL and enter the device code.":"Open the auth URL, finish login, then paste the localhost callback response URL."})]}),e.lastAuthUrl?y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`auth-url-${e.id}`,children:r?"Verification URL":"Auth URL"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(pa,{className:"font-mono text-xs",id:`auth-url-${e.id}`,readOnly:!0,value:e.lastAuthUrl}),y(fa,{size:"sm",variant:"outline",onClick:()=>Ka(e.lastAuthUrl??null),children:[x(re,{}),"Open"]})]})]}):null,r?e.lastAuthUserCode?y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`device-code-${e.id}`,children:"Device code"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(pa,{className:"font-mono text-sm tracking-wider",id:`device-code-${e.id}`,readOnly:!0,value:e.lastAuthUserCode}),y(fa,{size:"sm",variant:"outline",onClick:()=>async function(e){if(!e)return;try{await navigator.clipboard.writeText(e),U.success("Device code copied.")}catch{U.error("Could not copy device code.")}}(e.lastAuthUserCode??""),children:[x(te,{}),"Copy"]})]})]}):x("p",{className:"rounded-md border border-dashed bg-background px-3 py-2 text-xs text-muted-foreground",children:"Start device login again to get a fresh code."}):y(w,{children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`callback-url-${e.id}`,children:"Callback response URL"}),x(Da,{className:"min-h-20 font-mono text-xs",id:`callback-url-${e.id}`,placeholder:"http://localhost:1455/...",value:t,onChange:t=>l(n=>({...n,[e.id]:t.target.value}))})]}),x("div",{className:"flex justify-end",children:y(fa,{disabled:!t.trim()||v,onClick:()=>C.mutate({accountId:e.id,redirectUrl:t}),children:[v?x(Ie,{className:"animate-spin"}):x(W,{}),"Complete Login"]})})]})]}):null]})},e.id)}):y("div",{className:"rounded-md border border-dashed bg-muted/20 p-6",children:[x("h4",{className:"text-sm font-semibold",children:"No accounts"}),x("p",{className:"mt-1 text-sm text-muted-foreground",children:"Create an account below or import account records from a JSON export."})]})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",ref:f,children:[y("div",{children:[x("h3",{className:"text-sm font-semibold",children:"Create account"}),x("p",{className:"text-sm text-muted-foreground",children:"Use a readable name. Runtime fields are optional."})]}),x(za,{displayNameRef:p,form:a,onChange:r,prefix:"create-account"}),y("div",{className:"flex flex-wrap gap-2",children:[y(fa,{disabled:!a.displayName.trim()||b.isPending,onClick:()=>P("browser"),children:[b.isPending?x(Ie,{className:"animate-spin"}):x(re,{}),"Create & Authenticate"]}),y(fa,{disabled:!a.displayName.trim()||b.isPending,variant:"secondary",onClick:()=>P("device"),children:[b.isPending?x(Ie,{className:"animate-spin"}):x(ye,{}),"Create & Device Login"]}),y(fa,{disabled:!a.displayName.trim()||b.isPending,variant:"outline",onClick:()=>b.mutate({}),children:[b.isPending?x(Ie,{className:"animate-spin"}):x($e,{}),"Create Only"]})]})]}),y("section",{className:"flex flex-wrap items-center justify-between gap-3 rounded-md border bg-muted/30 p-4",children:[y("div",{className:"min-w-0",children:[x("h3",{className:"text-sm font-semibold",children:"Import / export"}),x("p",{className:"text-sm text-muted-foreground",children:"Move account records and runtime settings with JSON. Codex auth tokens stay on this server."})]}),y("div",{className:"flex flex-wrap gap-2",children:[x("input",{ref:h,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=Ha();try{const e=JSON.parse(await t.text());T.mutate({accounts:Fa(e),popup:n})}catch(a){n?.close(),U.error(Ga(a))}}}),y(fa,{disabled:T.isPending,variant:"secondary",onClick:()=>h.current?.click(),children:[T.isPending?x(Ie,{className:"animate-spin"}):x(Ze,{}),"Import JSON"]}),y(fa,{disabled:E.isPending,variant:"outline",onClick:()=>E.mutate(),children:[E.isPending?x(Ie,{className:"animate-spin"}):x(ae,{}),"Export JSON"]})]})]})]}),x(Ia,{open:!!u,onOpenChange:e=>{e||m(null)},children:y(Aa,{children:[y(Ma,{children:[x(Ta,{children:"Delete account?"}),y(Sa,{children:["This removes ",u?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ea,{children:[x(La,{children:"Cancel"}),y(Pa,{disabled:M.isPending,variant:"destructive",onClick:()=>{u&&M.mutate(u.id)},children:[M.isPending?x(Ie,{className:"animate-spin"}):x(Ye,{}),"Delete"]})]})]})})]})}function za({displayNameRef:e,form:t,onChange:n,prefix:a}){return y("div",{className:"grid gap-3",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-name`,children:"Display name"}),x(pa,{id:`${a}-name`,placeholder:"Work Codex",ref:e,value:t.displayName,onChange:e=>n({...t,displayName:e.target.value})})]}),y("div",{className:"grid gap-3 md:grid-cols-2",children:[y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-command`,children:"Command"}),x(pa,{id:`${a}-command`,placeholder:"codex",value:t.command,onChange:e=>n({...t,command:e.target.value})})]}),y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-args`,children:"Arguments"}),x(pa,{id:`${a}-args`,placeholder:"app-server",value:t.args,onChange:e=>n({...t,args:e.target.value})})]})]}),y("div",{className:"grid gap-2",children:[x(ga,{htmlFor:`${a}-environment`,children:"Environment JSON"}),x(Da,{className:"min-h-20 font-mono text-xs",id:`${a}-environment`,placeholder:'{"OPENAI_BASE_URL":"https://..."}',value:t.environment,onChange:e=>n({...t,environment:e.target.value})})]})]})}function ja(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 Fa(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 Ba(e){return 1===e?"account":"accounts"}function Ga(e){return e instanceof Error?e.message:"Request failed."}function Ha(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Ka(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Wa({...e}){return x(ht.Root,{"data-slot":"dialog",...e})}function Va({...e}){return x(ht.Trigger,{"data-slot":"dialog-trigger",...e})}function Qa({...e}){return x(ht.Portal,{"data-slot":"dialog-portal",...e})}function Ja({className:e,...t}){return x(ht.Backdrop,{"data-slot":"dialog-overlay",className:Cn("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(Qa,{children:[x(Ja,{}),y(ht.Popup,{"data-slot":"dialog-content",className:Cn("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(ht.Close,{"data-slot":"dialog-close",render:x(fa,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(nt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Xa({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:Cn("flex flex-col gap-2",e),...t})}function Za({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:Cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...a,children:[n,t&&x(ht.Close,{render:x(fa,{variant:"outline"}),children:"Close"})]})}function er({className:e,...t}){return x(ht.Title,{"data-slot":"dialog-title",className:Cn("font-heading text-base leading-none font-medium",e),...t})}function tr({className:e,...t}){return x(ht.Description,{"data-slot":"dialog-description",className:Cn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function nr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(ft.Root,{"data-slot":"scroll-area",className:Cn("relative",e),...r,children:[x(ft.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:Cn("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",n?.className),children:t}),x(ar,{}),x(ft.Corner,{})]})}function ar({className:e,orientation:t="vertical",...n}){return x(ft.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:Cn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...n,children:x(ft.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function rr({className:e,orientation:t="horizontal",...n}){return x(pt,{"data-slot":"separator",orientation:t,className:Cn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function ir({accounts:e,activeTab:t,clearSession:n,createFocusKey:a,onOpenChange:r,onTabChange:i,open:s,refreshSession:o,session:d}){return x(Wa,{open:s,onOpenChange:r,children:y(Ya,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(Xa,{className:"px-5 py-4",children:[x(er,{children:"Settings"}),x(tr,{children:"Manage the active server connection, accounts, and project details."})]}),x(rr,{}),y("div",{className:"grid min-h-0 md:grid-cols-[11rem_minmax(0,1fr)]",children:[y("nav",{className:"flex gap-2 overflow-x-auto border-b p-3 md:flex-col md:border-r md:border-b-0",children:[x(sr,{active:"server"===t,icon:x(Be,{}),label:"Server",onClick:()=>i("server")}),x(sr,{active:"accounts"===t,icon:x(et,{}),label:"Accounts",onClick:()=>i("accounts")}),x(sr,{active:"info"===t,icon:x(we,{}),label:"Info",onClick:()=>i("info")})]}),x(nr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["server"===t?x(or,{clearSession:n,refreshSession:o,session:d}):null,"accounts"===t?x(Ua,{accounts:e,createFocusKey:a,session:d}):null,"info"===t?x(dr,{}):null]})})]})]})})}function sr({active:e,icon:t,label:n,onClick:a}){return y(fa,{"aria-pressed":e,className:Cn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function or({clearSession:e,refreshSession:t,session:n}){const[a,r]=O(!1),[i,s]=O(null);return y("div",{className:"grid gap-4",children:[y("div",{className:"rounded-md border bg-muted/30 p-3",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(Be,{}),"API server"]}),x("div",{className:"mt-2 break-all text-sm text-muted-foreground",children:n.serverUrl})]}),y("div",{className:"flex items-center justify-between gap-3 rounded-md border p-3",children:[y("div",{children:[x("div",{className:"text-sm font-medium",children:"Session status"}),x("div",{className:"text-sm text-muted-foreground",children:"Bearer token stored in this browser."})]}),null===i?null:x(Oa,{status:i?"ONLINE":"OFFLINE"})]}),x(rr,{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(fa,{disabled:a,variant:"outline",onClick:()=>{!async function(){r(!0);try{await t(),s(!0),U.success("Server session is healthy.")}catch(e){s(!1),U.error(e instanceof Error?e.message:"Connection check failed.")}finally{r(!1)}}()},children:[a?x(Ue,{className:"animate-spin"}):x(W,{}),"Test Connection"]}),y(fa,{variant:"destructive",onClick:e,children:[x(Ae,{}),"Clear Session"]})]})]})}function dr(){return y("div",{className:"grid gap-4",children:[y("section",{className:"rounded-md border bg-muted/30 p-4",children:[y("div",{className:"flex items-center gap-2 text-sm font-medium",children:[x(we,{}),"Project"]}),x("div",{className:"mt-2 text-sm text-muted-foreground",children:"xedoc"})]}),y("section",{className:"grid gap-3 rounded-md border bg-muted/30 p-4",children:[x("h3",{className:"text-sm font-semibold",children:"Contact"}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"https://github.com/monokaijs/xedoc",rel:"noreferrer",target:"_blank",children:[x(re,{className:"size-4"}),"GitHub: monokaijs/xedoc"]}),y("a",{className:"inline-flex w-fit items-center gap-2 text-sm text-primary underline-offset-4 hover:underline",href:"mailto:monokaijs@gmail.com",children:[x(Me,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function cr(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."))}var lr="xedoc.web.terminal-height",ur=null;function mr({className:e,onClosePanel:t,projectPath:n,socket:a,socketConnected:r}){const[i,s]=O(null),[o,d]=O(null),[c,l]=O(fr),[u,m]=O(!1),[h,f]=O(null),[p,g]=O([]),v=q(c),w=function(){const[e,t]=O(()=>vr());return D(()=>{const e=window.matchMedia("(max-width: 639px)"),n=()=>t(e.matches);return n(),e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),b=R(()=>p.find(e=>e.id===i)??null,[i,p]),N=P((e,t)=>cr(a,e,t),[a]),I=P(e=>{g(e),s(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),k=P(async()=>{const e=await N("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),I(e.terminals),s(e.terminal.id)},[I,n,N,h]);D(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),N("terminal:project:join",{projectPath:n}).then(async n=>{if(!e&&(t=n.projectPath,f(n.projectPath),I(n.terminals),!n.terminals.length)){const t=await N("terminal:create",{cols:80,projectPath:n.projectPath,rows:24});e||(f(t.projectPath),I(t.terminals),s(t.terminal.id))}}).catch(t=>{e||d(wr(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&cr(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[I,n,N,a]),D(()=>{if(!a)return;const e=e=>{const t=h??n;e.projectPath===t&&I(e.terminals)};return a.on("terminal:project",e),()=>{a.off("terminal:project",e)}},[I,n,h,a]),D(()=>{v.current=c;const e=window.setTimeout(()=>{pr(c)},150);return()=>window.clearTimeout(e)},[c]),D(()=>{const e=()=>{l(e=>{const t=gr(e);return v.current=t,t})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const C=P(async e=>{try{I((await N("terminal:close",{terminalId:e})).terminals)}catch(t){U.error(wr(t))}},[I,N]),A=P(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),M=P(e=>{e.currentTarget.setPointerCapture(e.pointerId);const t=e.clientY,n=c,a=e=>{const a=gr(n+t-e.clientY);v.current=a,l(a)},r=()=>{pr(v.current),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",r)};document.addEventListener("pointermove",a),document.addEventListener("pointerup",r)},[c]);return y("section",{className:Cn("grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border bg-background shadow-sm",e),style:{height:c},children:[x("button",{"aria-label":"Resize terminal",className:"group flex h-3 cursor-row-resize items-center justify-center border-b bg-muted/40",type:"button",onPointerDown:M,children:x("span",{className:"h-0.5 w-10 rounded-full bg-muted-foreground/35 group-hover:bg-muted-foreground/70"})}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"flex min-w-0 items-center gap-1 border-b bg-muted/25 px-2 py-1",children:[x("div",{"aria-label":"Terminals",className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",role:"tablist",children:p.map(e=>y("div",{className:Cn("flex h-7 min-w-24 max-w-48 shrink-0 items-center rounded-md text-[11px] sm:h-8 sm:min-w-28 sm:max-w-56 sm:text-xs",e.id===i?"bg-secondary text-secondary-foreground":"hover:bg-accent hover:text-accent-foreground","exited"===e.status&&"text-muted-foreground"),children:[y("button",{"aria-selected":e.id===i,className:"flex h-full min-w-0 flex-1 items-center gap-1.5 px-2 text-left",role:"tab",title:e.title,type:"button",onClick:()=>s(e.id),children:[x(Je,{className:"size-3.5 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.title||"Shell"}),x("span",{className:Cn("ml-auto size-1.5 shrink-0 rounded-full","running"===e.status?"bg-emerald-500":"bg-muted-foreground/50")})]}),x("button",{"aria-label":"Close terminal",className:"mr-1 grid size-5 shrink-0 place-items-center rounded-sm hover:bg-background",title:"Close terminal",type:"button",onClick:()=>{C(e.id)},children:x(tt,{className:"size-3"})})]},e.id))}),x(fa,{"aria-label":"New terminal",className:"size-8 shrink-0",disabled:!r||u,size:"icon-sm",title:"New terminal",type:"button",variant:"ghost",onClick:()=>{k().catch(e=>U.error(wr(e)))},children:u?x(Ie,{className:"animate-spin"}):x($e,{})}),t?x(fa,{"aria-label":"Hide terminal panel",className:"size-8 shrink-0",size:"icon-sm",title:"Hide terminal panel",type:"button",variant:"ghost",onClick:t,children:x(tt,{})}):null]}),x("div",{className:"min-h-0 bg-zinc-950",children:o?x("div",{className:"grid h-full place-items-center p-4 text-sm text-red-200",children:o}):b?x(hr,{compactLayout:w,resizeSignal:c,socket:a,terminal:b,onTerminalUpdated:A},b.id):x("div",{className:"grid h-full place-items-center p-4 text-sm text-zinc-400",children:u?"Starting terminal...":"No terminal"})})]})]})}function hr({compactLayout:e,onTerminalUpdated:t,resizeSignal:n,socket:a,terminal:r}){const i=q(null),s=q(null),o=q(null),d=q(null),c=P(()=>{null===o.current&&(o.current=window.requestAnimationFrame(()=>{o.current=null,s.current?.fit()}))},[]);return D(()=>(c(),()=>{null!==o.current&&(window.cancelAnimationFrame(o.current),o.current=null)}),[c,n]),D(()=>{const n=i.current;if(!a||!n)return;let l=!1,u=!1;const m=[],h=e=>{a.emit("terminal:input",{data:e,terminalId:r.id})},f=e=>{u&&e.terminalId===r.id&&d.current?.write(e.data)};return a.on("terminal:output",f),async function(){return ur??=import("ghostty-web").then(async e=>(await e.init(),e)),ur}().then(async({FitAddon:n,Terminal:o})=>{if(l||!i.current)return;const f=new o({cursorBlink:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',fontSize:e?11:12,scrollback:1e4,theme:{background:"#09090b",foreground:"#e4e4e7"}}),p=new n;s.current=p,d.current=f,f.loadAddon(p),f.open(i.current),p.fit(),p.observeResize(),f.attachCustomKeyEventHandler(e=>"Enter"===e.key&&(h("\r"),!0)),m.push(p),m.push(f.onData(e=>{h(e)})),m.push(f.onResize(e=>{a.emit("terminal:resize",{cols:e.cols,rows:e.rows,terminalId:r.id})})),m.push(f.onTitleChange(e=>{a.emit("terminal:title",{terminalId:r.id,title:e})}));const g=await cr(a,"terminal:attach",{terminalId:r.id});l||(t(g.terminal),g.replay&&f.write(g.replay),u=!0,requestAnimationFrame(()=>{p.fit(),f.focus()}),c())}).catch(e=>{l||U.error(wr(e))}),()=>{l=!0,null!==o.current&&(window.cancelAnimationFrame(o.current),o.current=null),a.off("terminal:output",f),cr(a,"terminal:detach",{terminalId:r.id}).catch(()=>{});for(const e of m)e.dispose();d.current?.dispose(),d.current=null,s.current=null}},[e,t,c,a,r.id]),x("div",{className:"relative h-full min-h-0 overflow-hidden p-1 outline-none sm:p-2 [&_canvas]:block",ref:i,style:{caretColor:"transparent"}})}function fr(){return"undefined"==typeof window?360:gr(Number.parseInt(window.localStorage.getItem(lr)??"",10)||(vr()?300:360))}function pr(e){"undefined"!=typeof window&&window.localStorage.setItem(lr,String(e))}function gr(e){const t="undefined"!=typeof window&&vr()?160:220,n="undefined"==typeof window?720:Math.max(t,Math.min(window.innerHeight-(vr()?96:140),760));return Math.max(t,Math.min(n,e))}function vr(){return"undefined"!=typeof window&&window.innerWidth<640}function wr(e){return e instanceof Error?e.message:"Terminal request failed."}function xr({...e}){return x(vt.Root,{"data-slot":"dropdown-menu",...e})}function yr({...e}){return x(vt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function br({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(vt.Portal,{children:x(vt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(vt.Popup,{"data-slot":"dropdown-menu-content",className:Cn("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 Nr({className:e,inset:t,variant:n="default",...a}){return x(vt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:Cn("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 Ir({...e}){return x(vt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function kr({className:e,inset:t,children:n,...a}){return y(vt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:Cn("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[n,x(Y,{className:"ml-auto"})]})}function Cr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(br,{"data-slot":"dropdown-menu-sub-content",className:Cn("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 Ar({...e}){return x(vt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function Mr({className:e,children:t,inset:n,...a}){return y(vt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:Cn("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[x("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:x(vt.RadioItemIndicator,{children:x(V,{})})}),t]})}function Er({className:e,...t}){return x(vt.Separator,{"data-slot":"dropdown-menu-separator",className:Cn("-mx-1 my-1 h-px bg-border",e),...t})}function Tr(){const{setTheme:e,theme:t}=E(),n=t??"system";return y(xr,{children:[y(yr,{render:x(fa,{size:"icon",variant:"outline"}),children:[x(Qe,{className:"size-4 dark:hidden"}),x(Se,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(br,{align:"end",className:"w-40",children:[y(Nr,{onClick:()=>e("light"),children:[x(Qe,{}),"Light","light"===n?x(K,{className:"ml-auto"}):null]}),y(Nr,{onClick:()=>e("dark"),children:[x(Se,{}),"Dark","dark"===n?x(K,{className:"ml-auto"}):null]}),y(Nr,{onClick:()=>e("system"),children:[x(be,{}),"System","system"===n?x(K,{className:"ml-auto"}):null]})]})]})}yt.registerLanguage("bash",bt),yt.registerLanguage("css",Nt),yt.registerLanguage("go",It),yt.registerLanguage("html",Lt),yt.registerLanguage("javascript",Ct),yt.registerLanguage("json",kt),yt.registerLanguage("markdown",At),yt.registerLanguage("python",Mt),yt.registerLanguage("rust",Et),yt.registerLanguage("sh",Tt),yt.registerLanguage("sql",St),yt.registerLanguage("tsx",Pt),yt.registerLanguage("typescript",Pt),yt.registerLanguage("xml",Lt),yt.registerLanguage("yaml",Dt);var Sr=S(null);function Pr({chatId:e,hiddenMessageIds:t,messages:n,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,fileChangeActionDisabled:o,fileChangeActionPending:d,planActionDisabled:c,planActionPending:l,session:u}){const m=R(()=>new Set(t??[]),[t]),h=R(()=>function(e){const t=qi([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=Ji(e.metadata);return 0===e.content.trim().length&&!t?.explanation?.trim()&&!t?.steps?.length}(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))}(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(e=>"STREAMING"===e.status||"PENDING"===e.status)?e:[...e.filter(e=>"FILE_CHANGE"!==e.kind),...e.filter(e=>"FILE_CHANGE"===e.kind)])}(n).filter(e=>!m.has(e.id)),[m,n]),f=R(()=>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=Ui(n),a=t.at(-1);"codex"!==a?.type||a.id!==e?t.push({id:e,messages:[n],type:"codex"}):a.messages.push(n)}return t}(h),[h]),p=R(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&ei(n))return n.id}return null}(h),[h]),[g,v]=O(null);return y(Sr.Provider,{value:v,children:[f.map(t=>x(Dr,{chatId:e,entry:t,fileChangeActionDisabled:o,fileChangeActionPending:d,latestProposedPlanMessageId:p,onImplementPlan:a,onRevisePlan:r,onReviewFileChanges:i,onUndoFileChanges:s,planActionDisabled:c,planActionPending:l,session:u},t.id)),x(Br,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function Lr({chatId:e,messages:t,session:n}){const a=R(()=>Fi(t),[t]);return a.pendingRequest?x("div",{className:"grid min-w-0 gap-1.5 overflow-hidden border-b bg-background px-3 py-2",children:x("div",{className:"mx-auto grid w-full min-w-0 max-w-3xl gap-1.5 overflow-hidden",children:x(_r,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function Dr({chatId:e,entry:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"user"===t.type?x(Or,{message:t.message}):x(Rr,{chatId:e,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,messages:t.messages,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u})}function Rr({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=R(()=>function(e){return function(e){const t=[];let n=[];const a=()=>{if(n.length){if(1===n.length){const[e]=n;t.push({id:`message:${e.id}`,message:e,type:"message"})}else t.push({id:`tool-burst:${n.map(e=>e.id).join(":")}`,messages:n,type:"toolBurst"});n=[]}};for(const r of e)if("previousActions"!==r.type&&"fileChanges"!==r.type){if(Hi(r.message)){const e=n.at(-1);if(!e||Ki(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&&Wi(e)!==Wi(r.message)&&a(),n.push(r.message)}return a(),t}(function(e){if(e.some(e=>"STREAMING"===e.status||"PENDING"===e.status))return e.map(e=>({message:e,sequence:e.sequence,type:"message"}));const t=function(e){return[...e].reverse().find(e=>"ASSISTANT"===e.role&&"CHAT"===e.kind&&e.content.trim().length>0)}(e),n=[],a=[];for(const d of e)Gi(d,t)?n.push(d):a.push(d);const r=a.map(e=>({message:e,sequence:e.sequence,type:"message"}));if(!n.length)return r;const i=Math.min(...n.map(e=>e.sequence)),s=r.findIndex(e=>e.sequence>i),o={messages:n,sequence:i,type:"previousActions"};return s<0?[...r,o]:[...r.slice(0,s),o,...r.slice(s)]}(function(e){const t=[];let n=[];const a=()=>{n.length&&(t.push(function(e){return 1===e.length?e[0]:{...e[e.length-1],content:zi(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:ji(e)}}(n)),n=[])};for(const r of e)"ASSISTANT"!==r.role||"CHAT"!==r.kind?(a(),t.push(r)):n.push(r);return a(),t}([...e].sort((e,t)=>e.sequence-t.sequence)))))}(r),[r]),h=r.reduce((e,t)=>"FAILED"===t.status?"FAILED":"STREAMING"===t.status?"FAILED"===e?e:"STREAMING":"PENDING"===t.status?"FAILED"===e||"STREAMING"===e?e:"PENDING":e,null);return x("article",{className:"mx-auto flex w-full min-w-0 max-w-full justify-start overflow-hidden",children:y("div",{className:"min-w-0 flex-1 overflow-hidden",children:[y("div",{className:"mb-1 flex items-center gap-2 pl-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:"Codex"}),h?x(Oa,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(qr,{chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:r,latestProposedPlanMessageId:a,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u},r.id))})]})})}function qr({chatId:e,fileChangeActionDisabled:t,fileChangeActionPending:n,item:a,latestProposedPlanMessageId:r,onImplementPlan:i,onRevisePlan:s,onReviewFileChanges:o,onUndoFileChanges:d,planActionDisabled:c,planActionPending:l,session:u}){return"toolBurst"===a.type?x(ni,{messages:a.messages}):"previousActions"===a.type?x(ai,{messages:a.messages}):"fileChanges"===a.type?x(ii,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(_r,{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 Or({message:e}){const t=function(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}):[]}(e);return x("article",{className:"flex min-w-0 max-w-full justify-end overflow-hidden",children:y("div",{className:"min-w-0 max-w-[84%] overflow-hidden rounded-xl bg-foreground px-3 py-2 text-sm leading-6 text-background",children:[y("div",{className:"mb-1 flex items-center gap-2",children:[x(et,{className:"size-3.5 opacity-70"}),x("span",{className:"text-xs font-medium opacity-70",children:"You"})]}),x(Ur,{text:e.content}),t.length?x("div",{className:"mt-2 flex min-w-0 flex-wrap gap-1.5",children:t.map(e=>y("span",{className:"inline-flex max-w-full items-center gap-1 rounded-md border border-background/20 bg-background/10 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-6 rounded object-cover",src:e.url}):x(oe,{className:"size-3.5 shrink-0 opacity-80"}),x("span",{className:"min-w-0 truncate",children:"file"===e.kind?e.path:e.name})]},e.id))}):null]})})}function _r({chatId:e,compact:t,fileChangeActionDisabled:n,fileChangeActionPending:a,latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,onReviewFileChanges:d,onUndoFileChanges:c,planActionDisabled:l,planActionPending:u,session:m}){switch(i.kind){case"CHAT":return i.content.trim()?x(Qr,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(Wr,{}):null;case"THINKING":return x(Vr,{message:i});case"PLAN":return x(Jr,{metadata:Ji(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(ti,{metadata:Ji(i.metadata)});case"FILE_CHANGE":return x(ii,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(Ni,{chatId:e,compact:t,message:i,metadata:Ji(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(Ii,{chatId:e,compact:t,message:i,metadata:Ji(i.metadata),session:m});case"ERROR":return x(Pi,{metadata:Ji(i.metadata),text:i.content});default:return x(Li,{text:i.content})}}function $r({text:e}){const t=L(Sr);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(wt,{remarkPlugins:[xt],components:{a:({children:e,className:n,href:a,...r})=>{const i=function(e){const t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e.trim()).replace(/^<|>$/g,"");if(!t||t.startsWith("#")||/^[a-z][a-z0-9+.-]*:/i.test(t)&&!t.startsWith("file://"))return null;const n=t.startsWith("file://")?t.slice(7):t,a=/^(.*)#L(\d+)(?:-L?\d+)?$/i.exec(n);if(a)return{line:Number(a[2]),path:a[1]};const r=/^(.+):(\d+)(?::\d+)?$/.exec(n);return r&&!/^[A-Za-z]:\\/.test(n)?{line:Number(r[2]),path:r[1]}:{path:n}}(a??"");return i&&t?x("button",{className:Cn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:Cn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:Cn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:Cn("string"==typeof e&&e.includes("language-")?"block bg-transparent p-0 font-mono text-xs leading-5":"whitespace-pre-wrap break-words rounded bg-muted px-1 py-0.5 font-mono text-[0.92em] font-medium",e),...n,children:t}),del:({className:e,...t})=>x("del",{className:Cn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:Cn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:Cn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:Cn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:Cn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:Cn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:Cn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:Cn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:Cn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:Cn("my-3 max-w-full rounded-md border border-border",e),loading:"lazy",...t}),input:({className:e,type:t,...n})=>x("input","checkbox"===t?{className:Cn("mr-2 size-3.5 align-middle accent-primary disabled:opacity-70",e),type:t,...n}:{className:e,type:t,...n}),li:({className:e,...t})=>x("li",{className:Cn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:Cn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:Cn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:Cn("my-3 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5 [&_code]:block [&_code]:rounded-none [&_code]:bg-transparent [&_code]:p-0 [&_code]:font-normal",e),...t}),strong:({className:e,...t})=>x("strong",{className:Cn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:Cn("w-full border-collapse text-left text-sm [&_tbody_tr:nth-child(odd)]:bg-muted/30 [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:bg-muted/60 [&_th]:px-2 [&_th]:py-1 [&_th]:font-semibold",e),...t})}),ul:({className:e,...t})=>x("ul",{className:Cn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:zr(e)})})}function Ur({text:e}){return x("div",{className:"grid min-w-0 gap-2",children:jr(e).map((e,t)=>"image"===e.type?x("img",{alt:"",className:"max-h-[28rem] max-w-full rounded-md border border-background/20 object-contain",loading:"lazy",src:e.src},`${e.src}-${t}`):e.text.trim()?x("div",{className:"whitespace-pre-wrap break-words",children:e.text},`${e.text.slice(0,32)}-${t}`):null)})}function zr(e){return jr(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function jr(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=Fr(a[1]);t.push(i?{src:i,type:"image"}:{text:a[0],type:"text"}),r=n.lastIndex}return r<e.length&&t.push({text:e.slice(r),type:"text"}),t.length?t:[{text:e,type:"text"}]}function Fr(e){const t=e.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 Br({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)),Gn(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(Wa,{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(Xa,{className:"gap-1 px-4 pb-2 pt-4",children:[y(er,{className:"flex min-w-0 items-center gap-2",children:[x(oe,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(tr,{className:"truncate",children:Hr(r.data)})]}),x("div",{className:"min-h-0 border-t",children:r.isLoading?y("div",{className:"grid h-72 place-items-center text-sm text-muted-foreground",children:[x(Ie,{className:"mb-2 size-5 animate-spin"}),"Loading file..."]}):r.error?x("div",{className:"m-4 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:r.error.message}):r.data?x(Gr,{file:r.data}):null})]})})}function Gr({file:e}){const t=q({}),n=R(()=>(e.content??"").split(/\r?\n/),[e.content]);return D(()=>{e.line&&t.current[e.line]?.scrollIntoView({block:"center"})},[e.line,n.length]),e.isBinary?x("div",{className:"m-4 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground",children:"Binary files are not displayed."}):x(nr,{className:"h-[70vh]",children:y("div",{className:"min-w-0 overflow-x-auto bg-background p-3",children:[x("pre",{className:"min-w-max font-mono text-xs leading-5",children:n.map((n,a)=>{const r=a+1;return y("div",{className:Cn("grid grid-cols-[3.5rem_minmax(0,1fr)] rounded-sm",e.line===r&&"bg-primary/10"),ref:e=>{t.current[r]=e},children:[x("span",{className:"select-none pr-3 text-right text-muted-foreground",children:r}),x("code",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:(i=n||" ",s=e.language,s&&yt.getLanguage(s)?yt.highlight(i,{language:s}).value:yt.highlightAuto(i).value)}})]},r);var i,s})}),e.truncated?x("div",{className:"mt-3 rounded-md border bg-muted/35 p-2 text-xs text-muted-foreground",children:"File preview truncated at 1 MB."}):null]})})}function Hr(e){return e?[Kr(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function Kr(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function Wr(){return x("div",{"aria-label":"Codex is thinking",className:"flex items-center gap-1 px-1 py-2",children:[0,1,2].map(e=>x("span",{className:"size-1.5 animate-bounce rounded-full bg-muted-foreground",style:{animationDelay:120*e+"ms"}},e))})}function Vr({message:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border border-dashed bg-muted/20 text-sm",open:"STREAMING"===e.status,children:[y("summary",{className:"flex min-w-0 cursor-pointer list-none items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(Q,{className:"size-4 transition-transform group-open:rotate-180"}),x("span",{children:"Reasoning"})]}),e.content?x("div",{className:"min-w-0 whitespace-pre-wrap break-words border-t px-3 py-2 text-muted-foreground",children:e.content}):null]})}function Qr({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=ei(t),o="envelope"===s?.source?s.surroundingText:t.content,d=!!s&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"grid min-w-0 gap-2",children:[o.trim()?x($r,{text:o}):null,s?x(Yr,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Jr({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=ei(t),c=(d?.body??t.content).trim(),l=!!d&&e===t.id&&"COMPLETED"===t.status;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ne,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x($r,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(Li,{text:"Planning..."}),o.length?x("div",{className:"mt-3 grid min-w-0 gap-2",children:o.map((e,t)=>y("div",{className:"flex items-start gap-2",children:[x(qa,{variant:"completed"===e.status?"default":"secondary",children:e.status}),x("div",{className:"min-w-0 flex-1",children:e.step})]},`${e.step}-${t}`))}):null,l&&d?x(Xr,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function Yr({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i,showActions:s}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border bg-background p-3 text-sm",children:[y("div",{className:"mb-2 flex items-center gap-2 font-medium",children:[x(Ne,{className:"size-4"}),"Proposed plan"]}),x($r,{text:i}),s?x(Xr,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Xr({disabled:e,message:t,onImplementPlan:n,onRevisePlan:a,pending:r,planBody:i}){const[s,o]=O(""),[d,c]=O(!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(fa,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ie,{className:"animate-spin"}):x(B,{}),"Implement plan"]}),y(Wa,{open:d,onOpenChange:c,children:[y(Va,{render:x(fa,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(Oe,{}),"Tell Codex what to change"]}),y(Ya,{children:[y(Xa,{children:[x(er,{children:"Tell Codex What To Change"}),x(tr,{children:"Describe what should be adjusted. Codex will revise the plan before implementing."})]}),y("div",{className:"grid gap-3",children:[x(Da,{className:"min-h-32 resize-y",placeholder:"Change the plan to...",value:s,onChange:e=>o(e.target.value)}),y("div",{className:"flex justify-end gap-2",children:[x(fa,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(fa,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ie,{className:"animate-spin"}):x(Oe,{}),"Send changes"]})]})]})]})]})]})}var Zr=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function ei(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Zr.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Zr,"").trim()}:"PLAN"!==e.kind||"result"!==Ji(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function ti({metadata:e}){const t=e?.status??"running";return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"completed"!==t&&"success"!==t,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(Q,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),x("code",{className:"min-w-0 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:e?.command??"command"})]}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(qa,{variant:bi(e),children:yi(e)}),"number"==typeof e?.exitCode?x(qa,{variant:0===e.exitCode?"secondary":"destructive",children:e.exitCode}):null]})]}),y("div",{className:"min-w-0 max-w-full overflow-hidden border-t px-3 py-2",children:[e?.cwd?x("div",{className:"mb-2 truncate text-xs text-muted-foreground",children:e.cwd}):null,x("pre",{className:"max-h-64 min-w-0 max-w-full overflow-x-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e?.output||"(no output)"})]})]})}function ni({messages:e}){const[t,n]=O(!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,Ri),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=ji(e);return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",open:"STREAMING"===s||"PENDING"===s,children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2",children:[x(Q,{className:"size-4 text-muted-foreground transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),y("span",{className:"truncate font-medium",children:[e.length," ",1===e.length?"action":"actions"]})]}),x(qa,{variant:"secondary",children:s.toLowerCase()})]}),y("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:[r.map(e=>x(ri,{message:e},e.id)),i>0?y(fa,{className:"mt-1 justify-start px-2 text-muted-foreground",size:"sm",type:"button",variant:"ghost",onClick:e=>{e.preventDefault(),n(!0)},children:["+",i," commands/actions"]}):null]})]})}function ai({messages:e}){return y("details",{className:"group min-w-0 max-w-full overflow-hidden rounded-lg border bg-muted/20 text-sm",children:[y("summary",{className:"grid min-w-0 cursor-pointer list-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 px-3 py-2 text-muted-foreground",children:[x(Q,{className:"size-4 transition-transform group-open:rotate-180"}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Je,{className:"size-4 shrink-0"}),y("span",{className:"truncate",children:[e.length," previous ",1===e.length?"action":"actions"]})]}),x(qa,{variant:"secondary",children:"collapsed"})]}),x("div",{className:"grid min-w-0 gap-1.5 border-t px-3 py-2",children:e.map(e=>x(ri,{message:e},e.id))})]})}function ri({message:e}){const t=Ji(e.metadata),n=Ji(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(Ji(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===Ji(t)?.requestKind?"Permission request":"Approval request":"USER_INPUT_PROMPT"===e.kind?"Input request":"CHAT"===e.kind?"Assistant draft":e.kind.toLowerCase().replaceAll("_"," ")}(e,t),r="COMMAND_EXECUTION"===e.kind?n?.output||n?.cwd:e.content.trim();return y("div",{className:"grid min-w-0 max-w-full grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-2 overflow-hidden rounded-md bg-muted/45 px-2 py-1.5",children:[Vi(e),y("div",{className:"min-w-0",children:[x("div",{className:"truncate text-xs font-medium",children:a}),r?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:r}):null]}),x(qa,{variant:"secondary",children:e.status.toLowerCase()})]})}function ii({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=R(()=>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=Ji(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of si(e)){const e=n.get(t.path);e?n.set(t.path,{action:wi(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:xi(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:xi(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=L(Sr),o=!(e||r||t.some(e=>"STREAMING"===e.status||"PENDING"===e.status))&&i.entries.length>0;return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-lg border bg-background text-sm",children:[y("div",{className:"grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 px-3 py-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(de,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:i.entries.length?`${ci(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(mi,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(fa,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:ui(i)}),children:[r?x(Ie,{className:"animate-spin"}):x(ze,{}),"Undo"]}),y(fa,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:li(i)}),children:[r?x(Ie,{className:"animate-spin"}):x(ie,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Wa,{children:[y("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3 px-3 py-2 transition-colors hover:bg-muted/50",children:[x("button",{className:"min-w-0 truncate text-left font-mono text-xs underline-offset-2 hover:underline",type:"button",onClick:()=>s?.({path:e.path}),children:e.path}),x(mi,{additions:e.additions,deletions:e.deletions}),y(Va,{render:x(fa,{size:"icon-sm",variant:"ghost"}),children:[x(Q,{className:"-rotate-90 size-4 text-muted-foreground"}),x("span",{className:"sr-only",children:"Open diff"})]})]}),y(Ya,{className:"max-w-5xl",children:[y(Xa,{children:[x(er,{children:e.path}),y(tr,{children:[e.action??"Edited"," file change reported by Codex."]})]}),x("pre",{className:"max-h-[70vh] min-w-0 max-w-full overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:e.diff?.trim()||i.diff?.trim()||"No diff body was reported for this file."})]})]},e.path)):x("div",{className:"px-3 py-2 text-muted-foreground",children:"Changes detected."})}),i.statuses.length?x("div",{className:"flex min-w-0 flex-wrap gap-1 border-t px-3 py-2",children:i.statuses.map(e=>x(qa,{variant:"secondary",children:e},e))}):null]})}function si(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=di(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=di(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:oi(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=hi(n.path,n.filePath,n.file,n.name);return a?(e.push({action:pi(hi(n.action,n.kind,n.type)??"Edited"),additions:fi(n.additions),deletions:fi(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>gi(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=>gi(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 oi(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 di(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function ci(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function li(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 ui(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 mi({additions:e,deletions:t}){return e||t?y("span",{className:"shrink-0 whitespace-nowrap font-mono text-xs",children:[y("span",{className:"text-emerald-600 dark:text-emerald-400",children:["+",e]}),x("span",{className:"mx-1 text-muted-foreground",children:" "}),y("span",{className:"text-red-600 dark:text-red-400",children:["-",t]})]}):null}function hi(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function fi(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 pi(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function gi(e,t){return vi(e)===vi(t)}function vi(e){return di(e).replace(/\\/g,"/").replace(/^\.\//,"")}function wi(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 xi(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function yi(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function bi(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function Ni({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=Di(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(ki,{icon:x(Ce,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:Ci(a)}):y("div",{className:Cn("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:Cn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(Ce,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:Cn("text-sm",t?"mb-1.5 line-clamp-2":"mb-2"),children:a.reason}):null,a?.command?x("code",{className:"block min-w-0 max-w-full overflow-x-auto rounded border bg-background px-2 py-1 font-mono text-xs",children:a.command}):null,x("div",{className:Cn("flex flex-wrap gap-2",t?"mt-2":"mt-3"),children:i?y(qa,{variant:"secondary",children:[x(K,{className:"size-3"}),"resolved"]}):y(w,{children:[y(fa,{disabled:s.isPending,size:"sm",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"turn",permissions:!0}}:{decision:"accept",kind:"approval"}),children:[s.isPending?x(Ie,{className:"animate-spin"}):x(K,{}),"Accept"]}),x(fa,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{scope:"session",permissions:!0}}:{decision:"acceptForSession",kind:"approval"}),children:"Accept for session"}),x(fa,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function Ii({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=O({}),[o,d]=O(0),c=Di(e,n,r),l=a?.questions?.length?a.questions:[{id:"answer",question:a?.message??"Answer"}],u="resolved"===a?.status||"COMPLETED"===n.status,m=Math.min(o,Math.max(l.length-1,0)),h=l[m],f=!!h&&Si(h,i[h.id]).length>0,p=l.every(e=>Si(e,i[e.id]).length>0),g=m>=l.length-1,v=()=>d(e=>Math.min(e+1,l.length-1));if(u||"expired"===a?.status)return x(ki,{icon:x(K,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:Ai(a)});return y("div",{className:Cn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:Cn("flex items-center justify-between gap-3",t?"mb-2":"mb-3"),children:[x("div",{className:"min-w-0 font-medium",children:t?"Input needed":"Codex needs input"}),y("div",{className:"flex shrink-0 items-center gap-1",children:[x(fa,{"aria-label":"Previous question",disabled:u||c.isPending||0===m,size:"icon-xs",variant:"ghost",onClick:()=>d(e=>Math.max(e-1,0)),children:x(F,{})}),y(qa,{variant:"secondary",children:[m+1," / ",l.length]}),x(fa,{"aria-label":"Next question",disabled:u||c.isPending||g||!f,size:"icon-xs",variant:"ghost",onClick:v,children:x(B,{})}),u?x(qa,{variant:"secondary",children:"resolved"}):null]})]}),h?x(Ei,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??Mi,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:Cn("flex justify-end",t?"mt-2":"mt-4"),children:y(fa,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:Ti(l,i)}):U.error("Answer every question before submitting.")},children:[c.isPending?x(Ie,{className:"animate-spin"}):x(K,{}),"Submit"]})}):null]})}function ki({icon:e,status:t,title:n,value:a}){return y("div",{className:"grid min-w-0 max-w-full gap-1 overflow-hidden rounded-md border bg-muted/25 px-2.5 py-2 text-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x("span",{className:"text-muted-foreground",children:e}),x("span",{className:"min-w-0 flex-1 font-medium",children:n}),t?x(qa,{variant:"secondary",children:t}):null]}),a?x("div",{className:"line-clamp-2 break-words text-xs leading-4 text-muted-foreground",children:a}):null]})}function Ci(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 Ai(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 Mi={other:"",values:[]};function Ei({compact:e=!1,disabled:t,onChange:n,onAutoAdvance:a,question:r,value:i}){const s=r.options??[],o=function(e){if(!e.options?.length)return;return e.selectionLimit&&e.selectionLimit>0?e.selectionLimit:1}(r),d=i.values??[],c=i.other??"",l=e=>n({other:c,values:d,...e});return y("div",{className:"grid min-w-0 max-w-full gap-2 overflow-hidden",children:[y("div",{className:"grid min-w-0 gap-1",children:[x("span",{className:"text-xs font-medium text-muted-foreground",children:r.header??r.question}),r.header?x("span",{className:Cn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:Cn("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(fa,{"aria-pressed":r,className:Cn("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:Cn("grid min-w-0 flex-1 overflow-hidden",e?"gap-0.5":"gap-1"),children:[x("span",{children:n.label}),n.description?x("span",{className:Cn("text-xs font-normal leading-4 opacity-75",e&&"line-clamp-2"),children:n.description}):null]}),r?x(K,{className:"ml-2 shrink-0"}):null]},n.label)})}):r.isSecret?x(pa,{disabled:t,type:"password",value:c,onChange:e=>l({other:e.target.value})}):x(Da,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(Da,{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 Ti(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:Si(e,t[e.id])}]))}}function Si(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function Pi({metadata:e,text:t}){return y("div",{className:"min-w-0 max-w-full overflow-hidden rounded-md border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive",children:[y("div",{className:"mb-1 flex items-center gap-2 font-medium",children:[x(z,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function Li({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function Di(e,t,n){const a=A();return I({mutationFn:a=>{if(!t.requestId)throw new Error("Request id is missing.");return async function(e,t,n,a){return Gn(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>U.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>Wn(e,t))}})}var Ri=5;function qi(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=Oi(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=_i(n[t],r):(a.set(e,n.length),n.push(r))}return n}function Oi(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 _i(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:$i(t.status)>$i(e.status)?{...e,status:t.status}:e:$i(t.status)>$i(e.status)||t.sequence>=e.sequence?t:e}function $i(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Ui(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function zi(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 ji(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 Fi(e){return{pendingRequest:qi(e).sort((e,t)=>t.sequence-e.sequence).find(Bi)}}function Bi(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=Ji(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Gi(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Bi(e)&&("APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind||("THINKING"===e.kind||"TOOL_ACTIVITY"===e.kind||("COMMAND_EXECUTION"===e.kind?"FAILED"!==e.status:"ASSISTANT"===e.role&&"CHAT"===e.kind&&(!!t&&t.content.includes(e.content.trim())))))))}function Hi(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Ki(e,t){return Wi(e)===Wi(t)}function Wi(e){return e.runId??e.turnId??e.chatId}function Vi(e){return"COMMAND_EXECUTION"===e.kind?x(Je,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?x(Ce,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x(Qi,{}):x(ee,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Qi(){return x(Ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Ji(e){return e&&"object"==typeof e?e:void 0}function Yi({...e}){return x(Rt.Root,{"data-slot":"popover",...e})}function Xi({...e}){return x(Rt.Trigger,{"data-slot":"popover-trigger",...e})}function Zi({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Rt.Portal,{children:x(Rt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Rt.Popup,{"data-slot":"popover-content",className:Cn("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 es({className:e,...t}){return x("div",{"data-slot":"popover-header",className:Cn("flex flex-col gap-0.5 text-sm",e),...t})}function ts({className:e,...t}){return x(Rt.Title,{"data-slot":"popover-title",className:Cn("font-medium",e),...t})}function ns({className:e,...t}){return x(Rt.Description,{"data-slot":"popover-description",className:Cn("text-muted-foreground",e),...t})}function as({...e}){return x(ht.Root,{"data-slot":"sheet",...e})}function rs({...e}){return x(ht.Portal,{"data-slot":"sheet-portal",...e})}function is({className:e,...t}){return x(ht.Backdrop,{"data-slot":"sheet-overlay",className:Cn("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 ss({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(rs,{children:[x(is,{}),y(ht.Popup,{"data-slot":"sheet-content","data-side":n,className:Cn("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(ht.Close,{"data-slot":"sheet-close",render:x(fa,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(nt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function os({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:Cn("flex flex-col gap-0.5 p-4",e),...t})}function ds({className:e,...t}){return x(ht.Title,{"data-slot":"sheet-title",className:Cn("font-heading text-base font-medium text-foreground",e),...t})}function cs({className:e,...t}){return x(ht.Description,{"data-slot":"sheet-description",className:Cn("text-sm text-muted-foreground",e),...t})}var ls=T.createContext(null);function us(){const e=T.useContext(ls);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function ms({defaultOpen:e=!0,open:t,onOpenChange:n,className:a,style:r,children:i,...s}){const o=function(){const[e,t]=T.useState(()=>"undefined"!=typeof window&&window.innerWidth<768);return T.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]=T.useState(!1),[l,u]=T.useState(e),m=t??l,h=T.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=T.useCallback(()=>o?c(e=>!e):h(e=>!e),[o,h,c]);T.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=T.useMemo(()=>({state:p,open:m,setOpen:h,isMobile:o,openMobile:d,setOpenMobile:c,toggleSidebar:f}),[p,m,h,o,d,c,f]);return x(ls.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:Cn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function hs({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}=us();return"none"===n?x("div",{"data-slot":"sidebar",className:Cn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(as,{open:c,onOpenChange:l,...s,children:y(ss,{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(os,{className:"sr-only",children:[x(ds,{children:"Sidebar"}),x(cs,{children:"Displays the mobile sidebar."})]}),x("div",{className:"flex h-full w-full flex-col",children:r})]})}):y("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?n:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[x("div",{"data-slot":"sidebar-gap",className:Cn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===t||"inset"===t?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),x("div",{"data-slot":"sidebar-container","data-side":e,className:Cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex","floating"===t||"inset"===t?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",a),...s,children:x("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r})})]})}function fs({className:e,onClick:t,...n}){const{toggleSidebar:a}=us();return y(fa,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:Cn(e),onClick:e=>{t?.(e),a()},...n,children:[x(De,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function ps({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:Cn("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 gs({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:Cn("flex flex-col gap-2 p-2",e),...t})}function vs({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:Cn("flex flex-col gap-2 p-2",e),...t})}function ws({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:Cn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function xs({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:Cn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function ys({className:e,render:t,...n}){return mt({defaultTagName:"div",props:ut({className:Cn("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 bs({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:Cn("w-full text-sm",e),...t})}function Ns({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:Cn("flex w-full min-w-0 flex-col gap-0",e),...t})}function Is({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:Cn("group/menu-item relative",e),...t})}var ks=dt("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 Cs({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=us(),c=mt({defaultTagName:"button",props:ut({className:Cn(ks({variant:n,size:a}),i)},s),render:r?x(En,{render:e}):e,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:a,active:t}});return r?("string"==typeof r&&(r={children:r}),y(Mn,{children:[c,x(Tn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function As({className:e,render:t,showOnHover:n=!1,...a}){return mt({defaultTagName:"button",props:ut({className:Cn("absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",n&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0",e)},a),render:t,state:{slot:"sidebar-menu-action",sidebar:"menu-action"}})}function Ms({className:e,size:t="default",...n}){return x(qt.Root,{"data-slot":"switch","data-size":t,className:Cn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",e),...n,children:x(qt.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 Es({initialPath:e,mode:t="directory",onOpenChange:n,onSelect:a,open:r,session:i}){const s=A(),[o,d]=O(new Set),[c,l]=O(e??""),[u,m]=O("directory"),[h,f]=O(e??""),[p,g]=O(""),[v,w]=O(!0),[b,N]=O(!1),[k,M]=O(""),[E,T]=O(""),S=C({enabled:r,queryKey:Rs(i,void 0),queryFn:()=>Un(i,void 0)}),P=S.data,L=P?.root??P?.path??"",R=c||P?.path||"",q=I({mutationFn:()=>{const e=k||R||P?.path,t=E.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 Gn(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>U.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),M(""),T(""),U.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),$(e.path)}});function _(e,t="directory"){l(e),m(t),f(e),L&&d(t=>{const n=new Set(t);for(const a of qs(e,L))n.add(a);return n})}function $(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function z(){const e=h.trim()||P?.path;e&&_(e)}return D(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),M(""),T(""))},[e,r]),D(()=>{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 qs(t,P.root))n.add(a);return n})},[e,P]),x(Wa,{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(Xa,{className:"gap-1 px-4 pb-2 pt-3",children:[x(er,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(tr,{className:"truncate",children:P?.root?`Workspace root: ${P.root}`:"file"===t?"Pick a file from the workspace.":"Pick a project folder for Codex."})]}),y("div",{className:"grid min-h-0 flex-1 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-1.5 px-3 pb-2 pt-1",children:[y("div",{className:"flex min-w-0 items-center gap-1",children:[x(Ds,{label:"Home",onClick:function(){P?.path&&$(P.path)},children:x(ge,{})}),x(Ds,{disabled:!R||q.isPending,label:"New folder",onClick:function(){const e=R||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),M(e),T(""),d(t=>{const n=new Set(t);if(L)for(const a of qs(e,L))n.add(a);return n.add(e),n}))},children:x(me,{})}),x(Ds,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(Ue,{className:Cn(S.isFetching&&"animate-spin")})}),y("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[y("div",{className:"relative hidden min-w-0 sm:block",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(pa,{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)})]}),x(fa,{className:"h-7 px-2 text-xs",size:"sm",type:"button",variant:"ghost",onClick:()=>w(e=>!e),children:v?"Hide path":"Show path"})]})]}),v?y("div",{className:"flex min-w-0 items-center gap-1",children:[x(pa,{autoCapitalize:"none",className:"h-8 min-w-0 border-border/70 bg-muted/40 font-mono text-xs",spellCheck:!1,value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&z()}}),x(Ds,{label:"Open path",onClick:z,children:x(J,{})})]}):null,y("div",{className:"relative sm:hidden",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(pa,{className:"h-7 border-border/70 bg-muted/40 pl-7 text-xs",placeholder:"Filter",value:p,onChange:e=>g(e.target.value)})]})]}),x("div",{className:"min-h-0 bg-background",children:S.error?x("div",{className:"m-3 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:S.error.message||"Unable to browse workspace."}):x(nr,{className:"h-[46vh] min-h-72",children:y("div",{className:"p-1",children:[S.isLoading?x("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:"Loading directories..."}):null,P?x(Ts,{directory:P,entry:{name:(j=P.path,j.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||j),path:P.path,type:"directory"},expandedPaths:o,filter:p,level:0,createFolderName:E,createFolderParentPath:k,createFolderPending:q.isPending,selectedPath:R,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),M(""),T("")},onCreateFolderNameChange:T,onCreateFolderSubmit:()=>q.mutate(),onOpen:$,onSelect:_,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(Za,{className:"mx-0 mb-0 rounded-none border-t bg-muted/35 px-3 py-2 sm:items-center sm:justify-between",children:[y("div",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:[x("span",{className:"mr-1 font-medium text-foreground",children:"Selected:"}),x("span",{className:"font-mono",children:"file"===t&&"file"!==u?"Choose a file":R||L||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(fa,{disabled:!R||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!R||"file"===t&&"file"!==u||(a(R),n(!1))},children:[x(K,{}),"file"===t?"Attach":"OK"]}),x(fa,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function Ts({createFolderName:e,createFolderParentPath:t,createFolderPending:n,directory:a,entry:r,expandedPaths:i,filter:s,level:o,onCancelCreateFolder:d,onCreateFolderNameChange:c,onCreateFolderSubmit:l,onOpen:u,onSelect:m,onToggle:h,selectedPath:f,selectedType:p,session:g,showCreateFolder:v}){const w=i.has(r.path),b=$s(f)===$s(r.path),N=v&&$s(t)===$s(r.path),I=C({enabled:w&&!a,queryKey:Rs(g,r.path),queryFn:()=>Un(g,r.path)}),k=a??I.data,A=R(()=>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]),M=A.filter(e=>"directory"===e.type),E=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(Ps,{entry:r,expanded:w,level:o,loading:I.isFetching,selected:b,onOpen:u,onSelect:m,onToggle:h}),w?y("div",{className:"min-w-0",children:[I.error?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-destructive",style:{paddingLeft:34+18*(o+1)+"px"},children:I.error.message||"Unable to load folder."}):null,I.isLoading?x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"Loading..."}):null,N?x(Ss,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,M.map(a=>x(Ts,{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)),E.map(e=>x(Ls,{entry:e,level:o+1,selected:"file"===p&&$s(f)===$s(e.path),onSelect:m},e.path)),!k||A.length||N?null:x("div",{className:"h-7 truncate px-2 text-xs leading-7 text-muted-foreground",style:{paddingLeft:34+18*(o+1)+"px"},children:"No matching entries."})]}):null]})}function Ss({level:e,name:t,onCancel:n,onNameChange:a,onSubmit:r,pending:i}){return y("form",{className:"grid h-8 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)_auto_auto] items-center gap-1 rounded-sm px-1 text-sm",style:{paddingLeft:4+18*e+"px"},onSubmit:e=>{e.preventDefault(),r()},children:[x("span",{}),x(me,{className:"size-4 shrink-0 text-muted-foreground"}),x(pa,{autoCapitalize:"none",autoFocus:!0,className:"h-7 min-w-0 border-border/70 bg-muted/40 text-xs",disabled:i,placeholder:"Folder name",spellCheck:!1,value:t,onChange:e=>a(e.target.value)}),x(Ds,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(K,{})}),x(Ds,{disabled:i,label:"Cancel new folder",onClick:n,children:x(tt,{})})]})}function Ps({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:Cn("group grid h-7 min-w-0 grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-sm",o?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/55"),style:{paddingLeft:4+18*n+"px"},children:[x("button",{className:"flex size-6 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground",title:t?"Collapse":"Expand",type:"button",onClick:()=>s(e.path),children:x(J,{className:Cn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?ue:le,{className:"size-4 shrink-0 text-muted-foreground"}),x("button",{className:"min-w-0 truncate text-left",title:e.path,type:"button",onClick:()=>i(e.path),onDoubleClick:()=>r(e.path),children:e.name})]})}function Ls({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:Cn("grid h-7 min-w-0 w-full grid-cols-[1.5rem_1rem_minmax(0,1fr)] items-center gap-1 rounded-sm px-1 text-left text-sm",a?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/55 hover:text-foreground"),style:{paddingLeft:4+18*t+"px"},title:e.path,type:"button",onClick:()=>n(e.path,"file"),children:[x("span",{}),x(se,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function Ds({children:e,disabled:t,label:n,onClick:a}){return y(fa,{className:"size-7 p-0",disabled:t,size:"icon",title:n,type:"button",variant:"ghost",onClick:a,children:[e,x("span",{className:"sr-only",children:n})]})}function Rs(e,t){return["workspace-directory",e.serverUrl,t]}function qs(e,t){const n=_s(t),a=_s(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=Os(s,o),r.push(s);return r}function Os(e,t){const n=e.includes("\\")?"\\":"/";return`${_s(e)}${n}${t}`}function _s(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function $s(e){return _s(e).toLocaleLowerCase()}function Us(){const{clearSession:e,loading:t,refreshSession:n,session:a}=aa(),{chatId:s}=p(),o=function(e){const[t,n]=O(!1),[a,r]=O(0),[i,s]=O(null);return D(()=>{if(!e)return n(!1),r(0),void s(null);const t=function(e,t){let n=!1;const a=gt(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}}(a),[d,c]=O(""),[l,u]=O(null),[m,f]=O(0),[g,v]=O(!1),[b,N]=O("server"),[I,A]=O(!1),[M,E]=O(null),T=h(),S=P(e=>{f(e?.focusCreate?e=>e+1:0),N("accounts"),v(!0)},[]),L=P(e=>{"accounts"===e&&f(0),N(e)},[]),q=P((e="server")=>{N(e),v(!0)},[]),_=C({enabled:!!a,queryKey:["accounts"],queryFn:()=>async function(e){return Gn(e.serverUrl,"/api/accounts",{token:e.token})}(a)}),$=C({enabled:!!a,queryKey:["chats"],queryFn:()=>async function(e){return Gn(e.serverUrl,"/api/chats",{token:e.token})}(a)}),U=R(()=>_.data??[],[_.data]),z=R(()=>$.data??[],[$.data]),j=R(()=>s?z.find(e=>e.id===s)?.title??null:null,[s,z]);D(()=>{s&&u(s)},[s]);const F=R(()=>{if(s){const e=z.find(e=>e.id===s);if(e)return e}if(l){const e=z.find(e=>e.id===l);if(e)return e}return z[0]??null},[s,z,l]),B=R(()=>U.filter(e=>"CONNECTED"===e.status),[U]);Pn(j);const G=k({queries:B.map(e=>({enabled:!!a,queryKey:["rate-limits",e.id],queryFn:()=>$n(a,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),H=R(()=>Object.fromEntries(B.map((e,t)=>{const n=go(G[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[G,B]),K=R(()=>Object.fromEntries(B.map(e=>{const t=H[e.id];return t?[e.id,vo(t)]:null}).filter(e=>!!e)),[H,B]);if(D(()=>{d.trim()||A(!1)},[d]),t)return x(Ys,{});if(!a)return x(r,{replace:!0,to:"/connect"});const W={accounts:U,accountRateLimitSnapshots:H,accountUsageSummaries:K,activeProjectPath:d,chats:z,connectedAccounts:B,lastOpenedChat:F,openAccountManagement:S,openWorkspacePicker:E,session:a,setActiveProjectPath:c,setTerminalOpen:A,terminalOpen:I,terminalSocket:o.socket,terminalSocketConnected:o.connected};return y(w,{children:[y(ms,{children:[y(hs,{className:"border-r",collapsible:"icon",children:[x(gs,{children:y(fa,{className:"w-full justify-start",variant:"ghost",onClick:()=>T("/"),children:[x(Ve,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"New chat"})]})}),x(ws,{children:y(xs,{children:[x(ys,{children:"Chats"}),x(bs,{children:x(Fs,{chats:z,session:a})})]})}),x(vs,{children:y(fa,{className:"justify-start",variant:"ghost",onClick:()=>q(),children:[x(Ge,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"Settings"})]})})]}),y(ps,{className:"h-svh min-w-0 overflow-hidden",children:[y("header",{className:"flex h-14 shrink-0 items-center justify-between gap-3 border-b px-3",children:[x("div",{className:"flex min-w-0 items-center gap-2",children:x(fs,{variant:"ghost",children:x(Ee,{})})}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(zs,{active:I,disabled:!d.trim(),onToggle:()=>A(!I)}),x(js,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),x(Tr,{})]})]}),_.error||$.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:_.error?.message??$.error?.message??"Unable to load workspace data."}):null,x(i,{context:W})]})]}),x(ir,{accounts:U,activeTab:b,clearSession:e,createFocusKey:m,open:g,refreshSession:n,session:a,onTabChange:L,onOpenChange:v}),M?x(Es,{initialPath:M.initialPath,mode:M.mode,open:!!M,session:a,onOpenChange:e=>{e||E(null)},onSelect:M.onSelect}):null]})}function zs({active:e,disabled:t,onToggle:n}){return x(fa,{"aria-label":"Terminal","aria-pressed":e,disabled:t,size:"icon",title:t?"Choose a working directory":"Terminal",type:"button",variant:e?"secondary":"ghost",onClick:n,children:x(Je,{})})}function js({onAddAccount:e,onNewChat:t}){return y(xr,{children:[y(yr,{render:x(fa,{size:"icon",variant:"outline"}),children:[x($e,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(br,{align:"end",className:"w-44",children:[y(Nr,{onClick:t,children:[x(Ve,{}),"New chat"]}),y(Nr,{onClick:e,children:[x(et,{}),"Add account"]})]})]})}function Fs({chats:e,session:t}){const n=h(),{chatId:a}=p(),r=A(),[i,s]=O(null),[o,d]=O(""),[c,l]=O(null),[u,m]=O(""),[f,g]=O(null),v=R(()=>e.map(e=>({chat:e,dateLabel:Ao(e.lastActivityAt),folderName:Mo(e.workingDirectory)})),[e]),b=R(()=>{const e=new Map;for(const t of v)e.set(t.folderName,(e.get(t.folderName)??0)+1);return Array.from(e,([e,t])=>({count:t,name:e})).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:"base"}))},[v]),N=R(()=>{const e=u.trim().toLocaleLowerCase();return v.filter(({chat:t,folderName:n})=>(!f||n===f)&&(!e||[t.title,n,t.workingDirectory??""].join(" ").toLocaleLowerCase().includes(e)))},[v,f,u]),k=!!u.trim()||!!f;D(()=>{f&&!b.some(e=>e.name===f)&&g(null)},[f,b]);const C=I({mutationFn:()=>{if(!i)throw new Error("Select a chat to rename.");return jn(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>U.error(zo(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),M=I({mutationFn:e=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>U.error(zo(e)),onSuccess:(e,t)=>{l(null),r.invalidateQueries({queryKey:["chats"]}),a===t.id&&n("/")}});return y(w,{children:[y("div",{className:"mb-2 flex items-center gap-1 px-1 group-data-[collapsible=icon]:hidden",children:[y("div",{className:"relative min-w-0 flex-1",children:[x(Fe,{className:"pointer-events-none absolute left-2 top-2 size-4 text-muted-foreground"}),x(pa,{"aria-label":"Search chats",className:"h-8 bg-background pl-7",placeholder:"Search chats",value:u,onChange:e=>m(e.target.value)})]}),y(Yi,{children:[y(Xi,{render:x(fa,{"aria-label":"Filter chats by folder",className:Cn("relative",f&&"text-foreground"),size:"icon",variant:f?"secondary":"outline"}),children:[x(ce,{className:"size-4"}),f?x("span",{"aria-hidden":"true",className:"absolute right-1.5 top-1.5 size-2 rounded-full bg-red-500 ring-2 ring-background"}):null]}),y(Zi,{align:"end",className:"w-64",side:"bottom",children:[y(es,{children:[x(ts,{children:"Folder"}),x(ns,{children:"Show chats from one folder."})]}),y("div",{className:"max-h-72 overflow-y-auto",children:[y("button",{className:Cn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",!f&&"bg-muted"),type:"button",onClick:()=>g(null),children:[x("span",{className:"min-w-0 flex-1 truncate",children:"All folders"}),x("span",{className:"text-xs text-muted-foreground",children:e.length}),f?null:x(K,{className:"size-4"})]}),b.map(e=>y("button",{className:Cn("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm outline-none hover:bg-muted focus-visible:bg-muted",f===e.name&&"bg-muted"),type:"button",onClick:()=>g(e.name),children:[x(le,{className:"size-4 text-muted-foreground"}),x("span",{className:"min-w-0 flex-1 truncate",children:e.name}),x("span",{className:"text-xs text-muted-foreground",children:e.count}),f===e.name?x(K,{className:"size-4"}):null]},e.name))]})]})]})]}),x(Ns,{children:N.length?N.map(({chat:e,dateLabel:t,folderName:r})=>y(Is,{children:[y(Cs,{className:"h-14 min-w-0 items-start py-1.5 pr-2! group-has-data-[sidebar=menu-action]/menu-item:pr-2! group-data-[collapsible=icon]:items-center! group-data-[collapsible=icon]:justify-center!",isActive:e.id===a,size:"lg",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Te,{className:"mt-0.5 group-data-[collapsible=icon]:mt-0!"}),y("span",{className:"min-w-0 flex-1 group-data-[collapsible=icon]:hidden!",children:[x("span",{className:"block truncate leading-5",children:e.title}),y("span",{className:"flex min-w-0 items-center gap-2 text-[11px] leading-4 font-normal text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1",children:[x(Z,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:t})]}),y("span",{className:"flex min-w-0 items-center gap-1",children:[x(le,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:r})]})]})]})]}),y(xr,{children:[y(yr,{render:x(As,{"aria-label":"Chat actions",className:"right-2 top-3 size-7 pointer-events-none opacity-0 group-hover/menu-item:pointer-events-auto group-hover/menu-item:opacity-100 group-focus-within/menu-item:pointer-events-auto group-focus-within/menu-item:opacity-100 aria-expanded:pointer-events-auto aria-expanded:opacity-100 [&>svg]:size-5",showOnHover:!0}),children:[x(Pe,{}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(br,{align:"end",className:"w-40",children:[y(Nr,{onClick:()=>{s(e),d(e.title)},children:[x(qe,{}),"Rename"]}),y(Nr,{onClick:()=>l(e),children:[x(j,{}),"Archive"]})]})]})]},e.id)):y("div",{className:"px-2 py-3 text-sm text-muted-foreground group-data-[collapsible=icon]:hidden",children:[e.length?"No matching chats.":"No chats yet.",k?x(fa,{className:"mt-2 h-7 px-2 text-xs",size:"sm",variant:"outline",onClick:()=>{g(null),m("")},children:"Clear filters"}):null]})}),x(Wa,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ya,{children:[y(Xa,{children:[x(er,{children:"Rename chat"}),x(tr,{children:"Choose a short title for the sidebar."})]}),x(pa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C.mutate()}}),x(Za,{children:x(fa,{disabled:C.isPending,onClick:()=>C.mutate(),children:"Save"})})]})}),x(Wa,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ya,{children:[y(Xa,{children:[x(er,{children:"Archive chat?"}),y(tr,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(Za,{children:[x(fa,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(fa,{disabled:M.isPending||!c,variant:"destructive",onClick:()=>{c&&M.mutate(c)},children:[x(j,{}),"Archive"]})]})]})})]})}function Bs(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 Gs(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await Ks(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Hs(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 Ks(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 Ws(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:Eo(t),path:t}}function Vs({attachments:e,imageInputRef:t,onAttachImages:n,onRemove:a}){return y(w,{children:[x("input",{accept:"image/*",className:"hidden",multiple:!0,ref:t,type:"file",onChange:e=>{n(e.currentTarget.files),e.currentTarget.value=""}}),e.length?x("div",{className:"flex min-w-0 flex-wrap gap-2",children:e.map(e=>y("div",{className:"flex min-w-0 max-w-full items-center gap-2 rounded-md border bg-muted/35 px-2 py-1 text-xs",children:["image"===e.kind?x("img",{alt:"",className:"size-7 rounded border object-cover",src:e.dataUrl}):x(se,{className:"size-3.5 shrink-0 text-muted-foreground"}),x("span",{className:"min-w-0 max-w-48 truncate",children:"file"===e.kind?e.path:e.name}),x(fa,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(tt,{className:"size-3"})})]},e.id))}):null]})}function Qs(){const{accountRateLimitSnapshots:e,accountUsageSummaries:t,connectedAccounts:n,lastOpenedChat:a,openAccountManagement:r,openWorkspacePicker:i,session:s,setActiveProjectPath:o,setTerminalOpen:d,terminalOpen:c,terminalSocket:l,terminalSocketConnected:u}=fo(),[m,f]=O(""),[p,g]=O([]),[v,w]=O("default"),[b,N]=O(null),[k,M]=O(a?.autoRotateAccount??!1),[E,T]=O(a?.accountId??null),[S,L]=O("default"),[_,$]=O(null),[z,j]=O(null),[F,B]=O(null),[G,H]=O(a?.workingDirectory?.trim()??""),K=A(),W=h(),V=q(null),Q=q(a?.id??null);D(()=>(o(G.trim()),()=>o("")),[o,G]),D(()=>{if(!a||Q.current===a.id)return;Q.current=a.id;const e=a.workingDirectory?.trim()??"";e&&H(t=>t.trim()?t:e);const t=a.accountId;t&&T(e=>e??t)},[a]);const J=R(()=>xo(n,e),[e,n]),Y=n.find(e=>e.id===E),X=(k&&Y&&yo(e[Y.id])<0?void 0:Y)??J??n[0];D(()=>{if(!X?.id)return j(null),N(null),L("default"),$(null),void B(null);j(X.id),N(X.defaultModel??null),L(X.defaultPermissionMode??"default"),$(X.defaultReasoningEffort??null),B(X.defaultServiceTier??null)},[X?.defaultModel,X?.defaultPermissionMode,X?.defaultReasoningEffort,X?.defaultServiceTier,X?.id]);const Z=C({enabled:!!X?.id,queryKey:["models",X?.id],queryFn:()=>_n(s,X.id),staleTime:3e5}),ee=C({enabled:!!X?.id,queryKey:["rate-limits",X?.id],queryFn:()=>$n(s,X.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),te=Z.data?.data??[],ne=z===X?.id,ae=ne?b:null,re=ne?_:null,ie=ne?F:null,se=po(te,ae),oe=se?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],de=re??se?.defaultReasoningEffort??null,ce=se?.additionalSpeedTiers??[],le=go(ee.data),me=I({mutationFn:({accountId:e,settings:t})=>qn(s,e,t),onError:e=>U.error(zo(e)),onSuccess:e=>{K.setQueryData(["accounts"],t=>$o(t,e))}}),he=I({mutationFn:async()=>{if(!X)throw new Error("Connect an account before starting a chat.");if(!G.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return Gn(e.serverUrl,"/api/chats",{body:t,token:e.token})}(s,{accountId:X.id,autoRotateAccount:k,collaborationMode:v,model:ae,permissionMode:S,reasoningEffort:re,serviceTier:ie,workingDirectory:G.trim()});return{chat:e,response:await Bn(s,e.id,{attachments:Bs(p),content:m.trim()})}},onError:e=>U.error(zo(e)),onSuccess:({chat:e,response:t})=>{f(""),g([]),M(!1),w("default"),L(X?.defaultPermissionMode??"default"),H(""),K.setQueryData(["messages",e.id],Oo(void 0,_o(t))),K.invalidateQueries({queryKey:["chats"]}),W(`/chat/${e.id}`)}}),fe=P(e=>{e?.length&&Gs(e).then(e=>{g(t=>[...t,...e])}).catch(e=>U.error(zo(e)))},[]),pe=P(()=>{i({initialPath:G,mode:"file",onSelect:e=>{g(t=>[...t,Ws(e)])}})},[i,G]),ge=G.trim(),ve=c&&!!ge;return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto overflow-x-hidden",children:y("div",{className:Cn("mx-auto flex w-full flex-1 flex-col gap-6 px-4",ve?"max-w-5xl justify-start py-4 sm:justify-center sm:py-8":"max-w-3xl justify-center py-8"),children:[y("div",{className:"text-center",children:[x("h1",{className:"text-2xl font-semibold tracking-normal",children:"What should Codex work on?"}),x("p",{className:"mt-2 text-sm text-muted-foreground",children:"Select an account and workspace, then send the first message."})]}),n.length?null:y("div",{className:"rounded-md border bg-muted/35 p-4 text-sm",children:[x("div",{className:"font-medium",children:"No connected account"}),x("div",{className:"mt-1 text-muted-foreground",children:"Create and authenticate a Codex account before starting a chat."}),y(fa,{className:"mt-3",size:"sm",onClick:r,children:[x(et,{}),"Manage Accounts"]})]}),ve?x(mr,{onClosePanel:()=>d(!1),projectPath:ge,socket:l,socketConnected:u}):y("div",{className:"grid gap-3 rounded-xl border bg-background p-3 shadow-sm",children:[y("div",{className:"flex min-w-0 items-center gap-2 rounded-lg border bg-muted/25 px-2 py-1.5",children:[x(pa,{autoCapitalize:"none",className:"h-8 min-w-0 border-0 bg-transparent px-1 font-mono text-xs shadow-none focus-visible:ring-0",placeholder:"Working directory",spellCheck:!1,value:G,onChange:e=>H(e.target.value)}),y(fa,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>i({initialPath:G,onSelect:H}),children:[x(ue,{}),x("span",{className:"sr-only",children:"Choose directory"})]})]}),x(Da,{className:"min-h-32 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:"Message Codex",value:m,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!he.isPending&&Uo(m,G,X,p)&&he.mutate())},onPaste:e=>{const t=Hs(e.clipboardData);t.length&&fe(t)}}),x(Vs,{attachments:p,imageInputRef:V,onAttachImages:fe,onRemove:e=>g(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-3",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap sm:gap-0",children:[x(oo,{attachmentDisabled:he.isPending,disabled:!X,mode:v,onAttachFile:pe,onAttachImage:()=>V.current?.click(),onSelectMode:w}),x(Xs,{account:X,autoRotate:k,autoRotateDisabled:he.isPending,connectedAccounts:n,disabled:!n.length,selectedAccountId:X?.id??"",usageSummaries:t,onAutoRotateChange:M,onSelect:e=>{T(e)}}),x(uo,{activeReasoningEffort:de,disabled:!X,modelOptions:te,modelValue:ae??"",pending:Z.isFetching,reasoningOptions:oe,reasoningValue:re??"",selectedModel:se,serviceTierOptions:ce,serviceTierValue:ie??"",onSelectModel:e=>{const t=X?.id??null;j(t),N(e||null),$(null),B(null),t&&me.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=X?.id??null,n=e||null;j(t),$(n),t&&me.mutate({accountId:t,settings:{defaultModel:ae,defaultReasoningEffort:n,defaultServiceTier:ie}})},onSelectServiceTier:e=>{const t=X?.id??null,n=e||null;j(t),B(n),t&&me.mutate({accountId:t,settings:{defaultModel:ae,defaultReasoningEffort:re,defaultServiceTier:n}})}}),x(co,{disabled:!X,mode:S,onSelectMode:e=>{L(e),X?.id&&me.mutate({accountId:X.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(so,{pending:ee.isFetching,snapshot:le}),x(lo,{loading:he.isPending,sendDisabled:!Uo(m,G,X,p),onSend:()=>he.mutate()})]})]})]})]})})}function Js(){const{chatId:e}=p(),{accounts:t,accountRateLimitSnapshots:n,accountUsageSummaries:a,connectedAccounts:i,openWorkspacePicker:s,session:o,setActiveProjectPath:d,setTerminalOpen:c,terminalOpen:l,terminalSocket:u,terminalSocketConnected:m}=fo(),[h,f]=O(""),[g,v]=O([]),[b,N]=O("OFFLINE"),[k,M]=O(null),E=q(null),T=q(null),S=q(!0),L=A(),_=R(()=>["chat",e],[e]),$=R(()=>["messages",e],[e]);D(()=>{M(null),v([])},[e]);const z=C({enabled:!!e,queryKey:_,queryFn:()=>zn(o,e)}),j=C({enabled:!!e,queryKey:$,queryFn:()=>Fn(o,e,0)}),F=C({enabled:!!e&&!k,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(o,e),retry:!1,staleTime:3e4});D(()=>{F.data?.usage&&!k&&M(F.data.usage)},[F.data?.usage,k]);const B=R(()=>j.data?.data??[],[j.data]),G=R(()=>Fi(B),[B]),H=R(()=>G.pendingRequest?[G.pendingRequest.id]:[],[G.pendingRequest]),K=R(()=>B.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[B]),W=z.data,V=t.find(e=>e.id===W?.accountId);D(()=>(d(W?.workingDirectory?.trim()??""),()=>d("")),[W?.workingDirectory,d]);const Q=P(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),J=P((e="auto")=>{const t=E.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),Y=C({enabled:!!V?.id&&"CONNECTED"===V.status,queryKey:["models",V?.id],queryFn:()=>_n(o,V.id),staleTime:3e5}),X=C({enabled:!!V?.id&&"CONNECTED"===V.status,queryKey:["rate-limits",V?.id],queryFn:()=>$n(o,V.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),Z=I({mutationFn:t=>jn(o,e,{accountId:t.accountId}),onError:e=>U.error(zo(e)),onSuccess:(e,t)=>{L.setQueryData(_,e),L.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&U.success("Chat account updated.")}}),ee=I({mutationFn:t=>jn(o,e,t),onError:e=>U.error(zo(e)),onSuccess:e=>{L.setQueryData(_,e),L.invalidateQueries({queryKey:["chats"]})}}),te=I({mutationFn:({accountId:e,settings:t})=>qn(o,e,t),onError:e=>U.error(zo(e)),onSuccess:e=>{L.setQueryData(["accounts"],t=>$o(t,e))}}),ne=I({mutationFn:t=>Bn(o,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??h).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>U.error(zo(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(f(""),v([])),L.setQueryData($,t=>Oo(t,_o(e))),L.invalidateQueries({queryKey:_}),L.invalidateQueries({queryKey:["chats"]})}}),ae=I({mutationFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(o,e),onError:e=>U.error(zo(e)),onSuccess:()=>{U.message("Stop requested.")}}),re=R(()=>xo(i,n),[n,i]),ie=R(()=>function(e,t,n,a){return e?.autoRotateAccount&&"RUNNING"!==e.status&&n&&n.id!==e.accountId?yo(a[n.id])<0?null:!t||"CONNECTED"!==t.status||yo(a[t.id])<0?n:null:null}(W,V,re,n),[n,re,V,W])?.id;D(()=>{!ie||Z.isPending||ne.isPending||Z.mutate({accountId:ie,notify:!1})},[ie,ne.isPending,Z.isPending]);const se=P(e=>{e?.length&&Gs(e).then(e=>{v(t=>[...t,...e])}).catch(e=>U.error(zo(e)))},[]),oe=P(()=>{s({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{v(t=>[...t,Ws(e)])}})},[z.data?.workingDirectory,s]),de=P(e=>{ne.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"}})},[ne]),ce=P(e=>{var t;ne.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"}})},[ne]),ue=P(e=>{ne.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ne]),me=P(e=>{ne.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[ne]);if(D(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?L.setQueryData($,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return Wn(e,n);if("message.failed"===t)return Wn(e,n);if("message.delta"===t){const t=n;return e?{...e,data:e.data.map(e=>e.id===t.messageId?{...e,content:t.content,status:"STREAMING"}:e)}:e}return e}(n,e,t)):M(t):n(t)};return function(e,t,n){let a=!1;const r=gt(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()}}(o,e,{onClose:()=>N("OFFLINE"),onError:e=>{N("OFFLINE"),U.error(zo(e))},onEvent:t,onOpen:()=>{var a;N("ONLINE"),Fn(o,e,(a=L.getQueryData($),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>U.error(zo(e))),zn(o,e).then(n).catch(e=>U.error(zo(e)))}});function n(e){L.setQueryData(_,e),L.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,_,$,L,o]),D(()=>{S.current=!0;const e=requestAnimationFrame(()=>J("auto"));return()=>cancelAnimationFrame(e)},[e,J]),D(()=>{if(!S.current)return;let e=0;const t=requestAnimationFrame(()=>{J("auto"),e=requestAnimationFrame(()=>J("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[K,J]),!e)return x(r,{replace:!0,to:"/"});if(z.isLoading||j.isLoading)return x(Ys,{});if(z.error)return x("main",{className:"flex flex-1 items-center justify-center p-6",children:y("div",{className:"max-w-md rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive",children:[x("div",{className:"font-medium",children:"Chat not available"}),x("div",{className:"mt-1 whitespace-pre-wrap",children:z.error.message})]})});const he=W,fe=V,pe="RUNNING"===he?.status,ge=Y.data?.data??[],ve=!!he&&!pe&&i.length>0,we=po(ge,he?.model),xe=we?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],ye=he?.reasoningEffort??we?.defaultReasoningEffort??null,be=we?.additionalSpeedTiers??[],Ne=go(X.data);return y("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden",children:[y("div",{className:"flex min-h-12 items-center justify-between gap-3 border-b px-4 py-2",children:[y("div",{className:"min-w-0",children:[y("div",{className:"flex items-center gap-2",children:[x(eo,{state:b}),x("h1",{className:"truncate text-sm font-semibold tracking-normal",children:he?.title??"Chat"})]}),y("div",{className:"mt-1 flex min-w-0 items-center gap-3 text-xs text-muted-foreground",children:[y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(et,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:fe?.displayName??"No account selected"})]}),y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(le,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:he?.workingDirectory??"No working directory"})]})]})]}),he?x(to,{chatId:he.id,disabled:pe,session:o}):null]}),x(nr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:E,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{S.current=Q(e.currentTarget)}},children:x("div",{className:"mx-auto flex w-full min-w-0 max-w-3xl flex-col gap-5 overflow-hidden px-4 pb-12 pt-6",children:B.length?x(Pr,{chatId:e,fileChangeActionDisabled:pe,fileChangeActionPending:ne.isPending,hiddenMessageIds:H,messages:B,onImplementPlan:de,onRevisePlan:ce,onReviewFileChanges:ue,onUndoFileChanges:me,planActionDisabled:pe,planActionPending:ne.isPending,session:o}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),x("div",{className:Cn("min-w-0 border-t bg-background",l&&he?.workingDirectory?"overflow-y-auto max-sm:max-h-[calc(100svh-3.5rem)]":"overflow-hidden"),children:l&&he?.workingDirectory?x("div",{className:"p-3",children:x("div",{className:"mx-auto max-w-5xl",children:x(mr,{onClosePanel:()=>c(!1),projectPath:he.workingDirectory,socket:u,socketConnected:m})})}):y(w,{children:[x(Lr,{chatId:e,messages:B,session:o}),x("div",{className:"p-3",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:[x(Da,{className:"max-h-44 min-h-20 resize-none border-0 px-1 shadow-none focus-visible:ring-0",placeholder:he?.workingDirectory?fe?"Message Codex":"Choose an account first":"Choose a directory first",value:h,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),Uo(h,he?.workingDirectory??"",fe,g)&&ne.mutate({attachments:Bs(g),clearComposer:!0,delivery:pe?"queue":void 0}))},onPaste:e=>{const t=Hs(e.clipboardData);t.length&&se(t)}}),x(Vs,{attachments:g,imageInputRef:T,onAttachImages:se,onRemove:e=>v(t=>t.filter(t=>t.id!==e))}),y("div",{className:"flex items-center justify-between gap-1 sm:gap-2",children:[y("div",{className:"flex min-w-0 flex-1 flex-nowrap items-center gap-1 overflow-hidden sm:flex-wrap",children:[x(oo,{attachmentDisabled:ne.isPending,disabled:!he,modeDisabled:pe,mode:he?.collaborationMode??"default",onAttachFile:oe,onAttachImage:()=>T.current?.click(),pending:ee.isPending,steerDisabled:!pe||ne.isPending||!Uo(h,he?.workingDirectory??"",fe,g),onSteerActiveTurn:()=>ne.mutate({attachments:Bs(g),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>ee.mutate({collaborationMode:e})}),x(Xs,{account:fe,autoRotate:he?.autoRotateAccount??!1,autoRotateDisabled:!he||ee.isPending,connectedAccounts:i,disabled:!he||!i.length,pending:Z.isPending,selectedAccountId:he?.accountId??"",selectionDisabled:!ve,usageSummaries:a,onAutoRotateChange:e=>ee.mutate({autoRotateAccount:e}),onSelect:e=>Z.mutate({accountId:e})}),x(uo,{activeReasoningEffort:ye,disabled:!he||pe||!fe,modelOptions:ge,modelValue:he?.model??"",pending:Y.isFetching||ee.isPending,reasoningOptions:xe,reasoningValue:he?.reasoningEffort??"",selectedModel:we,serviceTierOptions:be,serviceTierValue:he?.serviceTier??"",onSelectModel:e=>{he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),ee.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:he.model??null,defaultReasoningEffort:t,defaultServiceTier:he.serviceTier??null}}),ee.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultModel:he.model??null,defaultReasoningEffort:he.reasoningEffort??null,defaultServiceTier:t}}),ee.mutate({serviceTier:t})}}),x(co,{disabled:!he,mode:he?.permissionMode??"default",pending:ee.isPending,onSelectMode:e=>{he?.accountId&&te.mutate({accountId:he.accountId,settings:{defaultPermissionMode:e}}),ee.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(Zs,{usage:k}),x(so,{pending:X.isFetching,snapshot:Ne}),x(lo,{loading:ne.isPending,running:pe,sendDisabled:!Uo(h,he?.workingDirectory??"",fe,g),stopPending:ae.isPending,onSend:()=>ne.mutate({attachments:Bs(g),clearComposer:!0,delivery:pe?"queue":void 0}),onStop:()=>ae.mutate()})]})]})]})})]})})]})}function Ys(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ie,{className:"size-5 animate-spin text-muted-foreground"})})}function Xs({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(xr,{children:[y(yr,{render:x(fa,{"aria-label":m,className:"max-w-44 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:r||o,size:"sm",title:m,variant:t?"secondary":"ghost"}),children:[o?x(Ie,{className:"animate-spin"}):x(t?Ue:et,{}),x("span",{className:"truncate max-sm:sr-only",children:u})]}),y(br,{align:"start",className:"w-64",children:[i?y(w,{children:[y(Nr,{className:"gap-3 py-2",disabled:n||o,onClick:e=>{e.preventDefault(),i(!t)},children:[x(Ue,{}),x("span",{className:"min-w-0 flex-1",children:"Auto rotate"}),x(Ms,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),x(Er,{})]}):null,a.map(e=>{const t=e.id===d;return y(Nr,{disabled:o||c,onClick:()=>{t||s(e.id)},children:[x("span",{className:"truncate",children:e.displayName}),l[e.id]?x("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:l[e.id]}):x("span",{className:"ml-auto"}),t?x(K,{className:"size-4 shrink-0"}):null]},e.id)})]})]})}function Zs({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=Lo(e.usedPercent);return y(Yi,{children:[x(Xi,{render:x(fa,{"aria-label":`Context ${Math.round(t)}% used`,className:"size-7 px-0 text-xs font-normal text-muted-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8",size:"icon-sm",title:`Context ${Math.round(t)}% used`,variant:"ghost"}),children:x("span",{"aria-hidden":"true",className:"grid size-4 shrink-0 place-items-center rounded-full text-foreground",style:{background:`conic-gradient(var(--foreground) ${3.6*t}deg, var(--muted) 0deg)`},children:x("span",{className:"size-2 rounded-full bg-background"})})}),y(Zi,{align:"end",className:"w-72",side:"top",children:[y(es,{children:[x(ts,{children:"Context window"}),x(ns,{children:"Codex automatically compacts this context when needed."})]}),y("div",{className:"grid gap-3",children:[y("div",{children:[y("div",{className:"mb-1 flex items-center justify-between gap-2 text-sm",children:[y("span",{className:"font-medium",children:[Math.round(t),"% used"]}),y("span",{className:"text-muted-foreground",children:[e.remainingPercent,"% left"]})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:"h-full rounded-full bg-foreground",style:{width:`${t}%`}})})]}),y("div",{className:"rounded-md bg-muted/60 p-2 font-mono text-xs text-muted-foreground",children:[To(e.tokensUsed)," /"," ",To(e.tokenLimit)," tokens used"]})]})]})]})}function eo({state:e}){const t="ONLINE"===e;return x("span",{"aria-label":t?"Realtime connected":"Realtime disconnected",className:Cn("size-2.5 shrink-0 rounded-full",t?"bg-emerald-500":"bg-muted-foreground/45"),title:t?"Realtime connected":"Realtime disconnected"})}function to({chatId:e,disabled:t,session:n}){const[a,r]=O(!1),i=A(),s=C({enabled:!!e,queryKey:["git-status",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/git/status`,{token:e.token})}(n,e),refetchInterval:2e4,retry:!1}),o=s.data;if(o&&!o.isRepo)return null;const d=o?.branch??"Git",c=!!o&&!o.clean,l=o?io(o):"";return y(Wa,{open:a,onOpenChange:r,children:[y(fa,{className:"h-7 max-w-56 justify-start gap-1.5 px-2 text-xs",disabled:s.isLoading&&!o,size:"sm",type:"button",variant:"outline",onClick:()=>r(!0),children:[x(fe,{className:"size-3.5"}),x("span",{className:"min-w-0 truncate",children:d}),l?x("span",{className:"shrink-0 text-muted-foreground",children:l}):null,x("span",{className:Cn("ml-0.5 size-1.5 shrink-0 rounded-full",c?"bg-amber-500":"bg-emerald-500")})]}),a?x(no,{chatId:e,disabled:t,queryClient:i,session:n,status:o}):null]})}function no({chatId:e,disabled:t,queryClient:n,session:a,status:r}){const[i,s]=O(""),[o,d]=O(""),[c,l]=O(""),u=C({enabled:!!e,queryKey:["git-branches",e],queryFn:()=>async function(e,t){return Gn(e.serverUrl,`/api/chats/${t}/git/branches`,{token:e.token})}(a,e),retry:!1}),m=C({enabled:!!e,queryKey:["git-diff",e],queryFn:()=>async function(e,t,n){const a=n?`?path=${encodeURIComponent(n)}`:"";return Gn(e.serverUrl,`/api/chats/${t}/git/diff${a}`,{token:e.token})}(a,e),retry:!1}),h=I({mutationFn:function(t){return async function(e,t,n){return Gn(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>U.error(zo(e)),onSuccess:t=>{U.success(t.message),l(""),d(""),n.setQueryData(["git-status",e],t.status),n.invalidateQueries({queryKey:["git-branches",e]}),n.invalidateQueries({queryKey:["git-diff",e]})}}),f=function(e,t){const n=t.trim().toLocaleLowerCase(),a=e?.branches??[];return n?a.filter(e=>e.name.toLocaleLowerCase().includes(n)):a}(u.data,i),p=t||h.isPending,g=r??h.data?.status;return y(Ya,{className:"flex max-h-[88vh] max-w-5xl flex-col overflow-hidden p-0",children:[y(Xa,{className:"gap-1 px-4 pb-2 pt-4",children:[x(er,{children:"Git"}),x(tr,{className:"truncate",children:g?.root??"Repository information"})]}),y("div",{className:"grid min-h-0 flex-1 gap-0 overflow-hidden border-y md:grid-cols-[18rem_minmax(0,1fr)]",children:[y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] border-b md:border-b-0 md:border-r",children:[y("div",{className:"grid gap-2 p-3",children:[y("div",{className:"flex min-w-0 items-center gap-2",children:[x(fe,{className:"size-4 shrink-0 text-muted-foreground"}),y("div",{className:"min-w-0",children:[x("div",{className:"truncate font-medium",children:g?.branch??"No branch"}),x("div",{className:"text-xs text-muted-foreground",children:g?ro(g):"Loading..."})]}),x(fa,{className:"ml-auto",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]})},children:x(Ue,{className:Cn(h.isPending&&"animate-spin")})})]}),x(pa,{className:"h-8",placeholder:"Find branch",value:i,onChange:e=>s(e.target.value)})]}),x(nr,{className:"min-h-0",children:y("div",{className:"grid gap-1 p-2",children:[f.map(e=>y(fa,{className:"justify-start",disabled:p||e.current,size:"sm",type:"button",variant:e.current?"secondary":"ghost",onClick:()=>{window.confirm(`Switch to ${e.name}?`)&&h.mutate({action:"checkout",branch:e.name})},children:[x(fe,{}),x("span",{className:"min-w-0 truncate",children:e.name})]},e.name)),f.length?null:x("div",{className:"px-2 py-6 text-center text-xs text-muted-foreground",children:"No branches found."})]})}),y("div",{className:"grid gap-2 border-t p-3",children:[x(pa,{className:"h-8",placeholder:"New branch",value:o,onChange:e=>d(e.target.value)}),y(fa,{disabled:p||!o.trim(),size:"sm",type:"button",variant:"outline",onClick:()=>h.mutate({action:"createBranch",branch:o.trim()}),children:[x($e,{}),"Create branch"]})]})]}),y("div",{className:"grid min-h-0 grid-rows-[auto_minmax(0,1fr)]",children:[y("div",{className:"grid gap-3 p-3",children:[y("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[y(fa,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&h.mutate({action:"pull"})},children:[x(ae,{}),"Pull"]}),y(fa,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&h.mutate({action:"push"})},children:[x(Ze,{}),"Push"]}),x("span",{className:"ml-auto text-xs text-muted-foreground",children:h.isPending?"Running git...":ro(g)})]}),y("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_auto]",children:[x(Da,{className:"min-h-16 resize-y",placeholder:"Commit message",value:c,onChange:e=>l(e.target.value)}),y(fa,{className:"self-end",disabled:p||!c.trim()||g?.clean,type:"button",onClick:()=>{window.confirm("Commit all changed files?")&&h.mutate({action:"commit",message:c.trim()})},children:[x(pe,{}),"Commit"]})]})]}),x(nr,{className:"min-h-0 border-t",children:y("div",{className:"grid gap-3 p-3",children:[x(ao,{status:g}),x("pre",{className:"max-h-[46vh] min-w-0 overflow-auto rounded-md bg-muted p-3 font-mono text-xs leading-5",children:m.data?.diff?.trim()||m.data?.stat?.trim()||"No tracked diff."})]})})]})]})]})}function ao({status:e}){const t=e?.changedFiles??[];return t.length?x("div",{className:"grid max-h-40 gap-1 overflow-auto rounded-md border p-2",children:t.map(e=>y("div",{className:"grid min-w-0 grid-cols-[3rem_minmax(0,1fr)] gap-2 text-xs",children:[x("span",{className:"font-mono text-muted-foreground",children:e.status}),x("span",{className:"min-w-0 truncate font-mono",children:e.path})]},`${e.status}:${e.path}`))}):x("div",{className:"rounded-md border bg-muted/25 px-3 py-2 text-xs text-muted-foreground",children:"Working tree clean."})}function ro(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,io(e)].filter(Boolean).join(" · "):"Git unavailable"}function io(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function so({pending:e,snapshot:t}){const n=vo(t),a=wo(t);return y(Yi,{children:[y(Xi,{render:x(fa,{className:Cn("h-7 max-w-36 justify-start px-2 text-xs font-normal text-foreground hover:bg-transparent aria-expanded:bg-transparent dark:hover:bg-transparent max-sm:size-8 max-sm:justify-center max-sm:px-0","fiveHour"===a&&"border border-orange-300 bg-orange-50 text-orange-700 hover:bg-orange-50 aria-expanded:bg-orange-50 dark:border-orange-900/70 dark:bg-orange-950/35 dark:text-orange-300 dark:hover:bg-orange-950/35 dark:aria-expanded:bg-orange-950/35","weekly"===a&&"border border-red-300 bg-red-50 text-red-700 hover:bg-red-50 aria-expanded:bg-red-50 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300 dark:hover:bg-red-950/35 dark:aria-expanded:bg-red-950/35"),size:"sm",title:n,variant:"ghost"}),children:[e?x(Ie,{className:"size-3 animate-spin"}):x(at,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(Zi,{align:"start",className:"w-80",side:"top",children:[y(es,{children:[x(ts,{children:"Usage capacity"}),x(ns,{children:"Current Codex account limits refresh automatically."})]}),x(mo,{pending:e,snapshot:t})]})]})}function oo({attachmentDisabled:e,disabled:t,mode:n,modeDisabled:a,onAttachFile:r,onAttachImage:i,onSelectMode:s,onSteerActiveTurn:o,pending:d,steerDisabled:c}){const l="plan"===n,u=e||t;return y(xr,{children:[x(yr,{render:x(fa,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:l?"secondary":"ghost"}),children:d?x(Ie,{className:"animate-spin"}):x($e,{})}),y(br,{align:"start",className:"w-56",children:[y(Nr,{className:"gap-3 py-2",disabled:t||a||d,onClick:e=>{e.preventDefault(),s(l?"default":"plan")},children:[x(Ne,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(Ms,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(Nr,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[x(ve,{}),x("span",{children:"Attach image"})]}),y(Nr,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[x(Re,{}),x("span",{children:"Attach workspace file"})]}),o?y(Nr,{className:"gap-3 py-2",disabled:c,onClick:o,children:[x(G,{}),x("span",{children:"Steer active turn"})]}):null]})]})}function co({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(xr,{children:[y(yr,{render:x(fa,{"aria-label":qo(t),className:Cn("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:qo(t),variant:"ghost"}),children:[a?x(Ie,{className:"animate-spin"}):x(r?Ke:He,{}),x("span",{className:"truncate max-sm:sr-only",children:qo(t)})]}),x(br,{align:"start",className:"w-48",children:y(Ar,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(Mr,{value:"default",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Default"}),x("span",{className:"text-xs text-muted-foreground",children:"Codex asks as needed."})]})}),x(Mr,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Full access"}),x("span",{className:"text-xs text-muted-foreground",children:"No sandbox or approval prompts."})]})})]})})]})}function lo({loading:e,onSend:t,onStop:n,running:a=!1,sendDisabled:r,stopPending:i=!1}){return a?y("div",{className:"flex items-center gap-1",children:[x(fa,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:r||e,size:"icon",title:"Queue message",type:"button",onClick:t,children:e?x(Ie,{className:"animate-spin"}):x(G,{})}),x(fa,{"aria-label":"Stop task",className:"size-9 rounded-full",disabled:i||!n,size:"icon",title:"Stop task",type:"button",variant:"secondary",onClick:n,children:i?x(Ie,{className:"animate-spin"}):x(We,{})})]}):x(fa,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:r||e,size:"icon",type:"button",onClick:t,children:e?x(Ie,{className:"animate-spin"}):x(G,{})})}function uo({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?Do(e):null,a?Ro(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(xr,{children:[y(yr,{render:x(fa,{"aria-label":h,className:"max-w-64 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:t||o,size:"sm",title:h,variant:"ghost"}),children:[o?x(Ie,{className:"animate-spin"}):x(ne,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(br,{align:"start",className:"w-72",children:[y(Ir,{children:[y(kr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(H,{}),x("span",{children:"Intelligence"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:Do(e)})]}),x(Cr,{className:"w-52",children:y(Ar,{value:c,onValueChange:i,children:[x(Mr,{value:"",children:"Model default"}),d.map(e=>x(Mr,{value:e,children:Do(e)},e))]})})]}),y(Ir,{children:[y(kr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(ne,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(Cr,{className:"w-64",children:y(Ar,{value:a,onValueChange:r,children:[x(Mr,{value:"",children:"Default model"}),n.map(e=>x(Mr,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(Ir,{children:[y(kr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(he,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:Ro(m)})]}),x(Cr,{className:"w-52",children:y(Ar,{value:m,onValueChange:s,children:[x(Mr,{value:"",children:"Default speed"}),u.map(e=>x(Mr,{value:e,children:Ro(e)},e))]})})]})]})]})}function mo({pending:e,snapshot:t}){return t?y("div",{className:"grid gap-2",children:[y("div",{className:"grid gap-1 text-xs text-muted-foreground",children:[t.limitName?x("div",{children:t.limitName}):null,t.planType?y("div",{children:["Plan: ",Po(t.planType)]}):null,t.credits?y("div",{children:["Credits:"," ",t.credits.unlimited?"unlimited":t.credits.balance??(t.credits.hasCredits?"available":"depleted")]}):null,t.rateLimitReachedType?x("div",{className:"text-destructive",children:(n=t.rateLimitReachedType,Po(n))}):null]}),x(ho,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(ho,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):x("div",{className:"rounded-md bg-muted/60 p-2 text-xs text-muted-foreground",children:e?"Loading limits...":"Usage limits are unavailable."});var n}function ho({fallbackLabel:e,severity:t,window:n}){const a=Lo(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=bo(n);return y("div",{className:Cn("grid gap-1.5 rounded-md border p-2",i&&"fiveHour"===t&&"border-orange-300 bg-orange-50/70 text-orange-800 dark:border-orange-900/70 dark:bg-orange-950/25 dark:text-orange-200",i&&"weekly"===t&&"border-red-300 bg-red-50/70 text-red-800 dark:border-red-900/70 dark:bg-red-950/25 dark:text-red-200"),children:[y("div",{className:"flex items-center justify-between gap-2 text-xs",children:[x("span",{className:"font-medium",children:Io(n,e)}),x("span",{className:Cn("text-muted-foreground",i&&"font-medium text-current"),children:n?`${r}% left`:"Unavailable"})]}),x("div",{className:"h-1.5 overflow-hidden rounded-full bg-muted",children:x("div",{className:Cn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:Cn("flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",i&&"text-current/80"),children:[n?y("span",{children:[Math.round(a),"% used"]}):null,n?.windowDurationMins?x("span",{children:ko(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",Co(n.resetsAt)]}):null]})]})}function fo(){return f()}function po(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function go(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function vo(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[No(e.primary,"5h"),No(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function wo(e){return e?bo(e.secondary)?"weekly":bo(e.primary)?"fiveHour":null:null}function xo(e,t){return e.map((e,n)=>({account:e,index:n,score:yo(t[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}function yo(e){if(!e)return 0;if(e.rateLimitReachedType||wo(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-Lo(e.usedPercent));return t.length?Math.min(...t):0}function bo(e){return Lo(e?.usedPercent??0)>=100}function No(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-Lo(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 Io(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 ko(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function Co(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 Ao(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 Mo(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 Eo(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function To(e){return e>=1e6?`${So(e/1e6)}M`:e>=1e3?`${So(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function So(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function Po(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function Lo(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Do(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function Ro(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function qo(e){return"fullAccess"===e?"Full access":"Default"}function Oo(e,t){let n=e;for(const a of t)n=Wn(n,a);return n??{data:[],nextCursor:null}}function _o(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function $o(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 Uo(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function zo(e){return e instanceof Error?e.message:"Request failed."}var jo=yn({default:()=>Fo}),Fo=c(function(){return x(Us,{})}),Bo=yn({default:()=>Go}),Go=c(function(){return x(Qs,{})}),Ho=yn({default:()=>Ko}),Ko=c(function(){return x(Js,{})}),Wo=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Vo(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function Qo(e){throw new Wo(405,`${e} is not supported for this route.`)}function Jo(e,t){t.includes(e.method)||Qo(e.method)}async function Yo(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 Wo(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Wo)throw n;throw new Wo(400,"Request body must be valid JSON.")}}function Xo(e,t,n={}){if(null==e){if(n.required)throw new Wo(400,`${t} is required.`);return}if("string"!=typeof e)throw new Wo(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Wo(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Wo(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function Zo(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Wo(400,`${t} must be an array of strings.`);return e}}function ed(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new Wo(400,`${t} must be a boolean.`);return e}}function td(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Wo(400,`${t} must be an object.`);return e}}function nd(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 Wo(400,`${t} must be an integer.`);return r}function ad(e,t){const n=e[t];if(!n)throw new Wo(400,`${t} is required.`);return n}function rd(e){return e instanceof Wo?Vo({message:e.message},{status:e.status}):Vo({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var id=yn({loader:()=>sd});function sd({request:e}){try{return Jo(e,["GET"]),Vo({status:"ok",service:"xedoc"})}catch(t){return rd(t)}}var od,dd=globalThis,cd=an("~"===(od=process.env.CODEX_WORKSPACE_ROOT?.trim()||Yt())?Yt():od.startsWith("~/")?an(Yt(),od.slice(2)):sn(od),".xedoc","xedoc.db"),ld=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(cd);process.env.DATABASE_URL=ld,Wt(en(cd),{recursive:!0,mode:448});var ud=dd.prisma??new Bt({datasources:{db:{url:ld}}});"production"!==process.env.NODE_ENV&&(dd.prisma=ud);var md="server",hd="scrypt";async function fd(e){!function(e){if(e.length<8)throw new Wo(400,"Server password must be at least 8 characters.")}(e);const t=await xd()??await async function(e){try{return await ud.serverAuth.create({data:{id:md,passwordHash:yd(e),tokenSecret:bd(32)}})}catch(t){if(function(e){return e instanceof Ft.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Wo(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!==hd||!a||!r||void 0!==i)&&Nd(zt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Wo(401,"Invalid server password.");return{token:gd({authHash:vd(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function pd(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Wo(401,"Invalid auth token.");if(!Nd(a,wd(n,t.tokenSecret)))throw new Wo(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 Wo(401,"Invalid auth token.")}}(n);if(i.authHash!==vd(t.passwordHash))throw new Wo(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Wo(401,"Missing auth token.");return n}(e),await async function(){const e=await xd();if(!e)throw new Wo(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function gd(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${wd(n,t)}`}function vd(e){return t=e,Ot("sha256").update(t).digest("hex");var t}function wd(e,t){return _t("sha256",t).update(e).digest("base64url")}async function xd(){return ud.serverAuth.findUnique({where:{id:md}})}function yd(e){const t=bd(16);return`${hd}:${t}:${zt(e,t,64).toString("base64url")}`}function bd(e){return $t(e).toString("base64url")}function Nd(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&jt(n,a)}var Id=yn({loader:()=>kd});async function kd({request:e}){try{return Jo(e,["GET"]),Vo(await async function(){return{passwordConfigured:!!(await xd())}}())}catch(t){return rd(t)}}var Cd=yn({action:()=>Ad});async function Ad({request:e}){try{return Jo(e,["POST"]),Vo(await fd(Xo((await Yo(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return rd(t)}}var Md=yn({loader:()=>Ed});async function Ed({request:e}){try{return Jo(e,["GET"]),Vo(await async function(e){return{authenticated:!0,issuedAt:(await pd(e)).issuedAt}}(e))}catch(t){return rd(t)}}function Td(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Sd(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Pd(e){const t=Td(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var Ld=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-${Ut()}`,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=qd(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);var t;return t=e.codexHome,Wt(t,{recursive:!0,mode:448}),Gt(t,448),this.child=cn(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}`)}),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(Od(t.id));a&&(clearTimeout(a.timeout),this.pending.delete(Od(t.id)),t.error?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()}},Dd=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new Ld(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()}};async function Rd(e){return(await Dd.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function qd(e){return an(function(e){return"~"===e?Yt():e.startsWith("~/")?an(Yt(),e.slice(2)):sn(e)}(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function Od(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}async function _d(e){const t=await ud.codexAccount.findUnique({where:{id:e}});if(!t)throw new Wo(404,"Codex account not found.");return t}async function $d(e,t="browser"){const n=await _d(e);if(Bd(e))return Dd.stopRuntime(e),await ud.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};await ud.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const a=jd(n);if(Td(Td((await a.request("account/read",{refreshToken:!1})).result)?.account))return await ud.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."};const r=Td((await a.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt"})).result),i="chatgptDeviceCode"===Sd(r?.type)?"device":t,s=function(e,t){return"device"===t?Sd(e?.verificationUrl)??Sd(e?.verification_url)??Sd(e?.authUrl)??Sd(e?.auth_url)??Sd(e?.url)??null:Sd(e?.authUrl)??Sd(e?.auth_url)??Sd(e?.url)??null}(r,i),o=Sd(r?.loginId)??null,d="device"===i?Sd(r?.userCode)??Sd(r?.user_code)??null:null;if(!("device"!==i||s&&d))throw new Error("Codex did not return device login instructions.");const c=s?"AUTHENTICATING":"CONNECTED";return await ud.codexAccount.update({where:{id:e},data:"CONNECTED"===c?{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}:{status:c,lastAuthUrl:s,lastAuthMode:i,lastAuthLoginId:o,lastAuthUserCode:d,lastError:null}}),"AUTHENTICATING"===c&&function(e,t,n){const a=e.onEvent(e=>{const r=Td(e.params);if("account/login/completed"===e.method){const e=Sd(r?.loginId);if(n&&e&&e!==n)return;return a(),!1===r?.success?void ud.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:Sd(r.error)??"Login failed."}}):void ud.codexAccount.update({where:{id:t},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}"account/updated"===e.method&&Sd(r?.authMode)&&(a(),ud.codexAccount.update({where:{id:t},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}))})}(a,e,o),{accountId:e,status:c,authMode:"AUTHENTICATING"===c?i:null,authUrl:s,verificationUrl:"device"===i?s:null,userCode:d,loginId:o,message:"CONNECTED"===c?"Codex account is connected.":"device"===i?"Open the verification URL and enter the device code to finish Codex authentication.":"Open the returned URL to finish Codex authentication."}}catch(a){const n=a instanceof Error?a.message:"Authentication failed.";return await ud.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 Ud(e,t){const n=await _d(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Wo(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Wo(400,"Callback URL must use http.");if(t.username||t.password)throw new Wo(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 Wo(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Wo(400,"Callback URL must include an OAuth code or error.");return t}(t),r=jd(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 Wo(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=Td((await i)?.params);if(!1===s?.success){const t=Sd(s.error)??"Login failed.";return await ud.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:zd(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await async function(e,t){return!!Td(Td((await t.request("account/read",{refreshToken:!1})).result)?.account)&&(await ud.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),!0)}(n.id,r)?{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}:Bd(e)?(Dd.stopRuntime(e),await ud.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}}),{accountId:e,status:"CONNECTED",authMode:null,authUrl:null,verificationUrl:null,userCode:null,message:"Codex account is connected."}):(await ud.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:zd(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 ud.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:zd(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}function zd(e){return"browser"===e||"device"===e?e:null}function jd(e){return Dd.getRuntime({accountId:e.id,command:e.command,args:Wd(e.args),workingDirectory:null,environment:Pd(e.environment)})}function Fd(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Bd(e){try{const t=Vt(`${qd(e)}/auth.json`,"utf8"),n=JSON.parse(t);return!("chatgpt"!==Sd(n.auth_mode)||!Td(n.tokens)&&!Sd(n.OPENAI_API_KEY))}catch{return!1}}function Gd(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function Hd(e){return{args:Gd(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?Ft.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null,status:"DISCONNECTED"};var t}function Kd(e){return{id:e.id,displayName:e.displayName,status:e.status,command:e.command,args:Wd(e.args),environment:Pd(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:zd(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Wd(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):Fd()}function Vd(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Wo(400,`${n} must be an object.`);return{id:ec(e.id,`${n}.id`,128),displayName:Zd(e.displayName,`${n}.displayName`,128),command:ec(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:tc(e.args,`${n}.args`)??Fd(),defaultModel:ec(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:Xd(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:Jd(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:Yd(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:nc(e.environment,`${n}.environment`)}}function Qd(e){return null==e?null:Zd(e,"runtime option",128)}function Jd(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 Wo(400,`${t} is invalid.`)}function Yd(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Wo(400,`${t} is invalid.`)}function Xd(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Wo(400,`${t} is invalid.`)}function Zd(e,t,n){const a=ec(e,t,n);if(!a)throw new Wo(400,`${t} is required.`);return a}function ec(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Wo(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Wo(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function tc(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Wo(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function nc(e,t){if(null==e)return null;const n=Td(e);if(!n)throw new Wo(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var ac=yn({action:()=>ic,loader:()=>rc});async function rc({request:e}){try{return Jo(e,["GET"]),await pd(e),Vo(await ud.codexAccount.findMany({orderBy:{createdAt:"asc"}}))}catch(t){return rd(t)}}async function ic({request:e}){try{Jo(e,["POST"]),await pd(e);const t=await Yo(e);return Vo(await async function(e){return ud.codexAccount.create({data:{displayName:e.displayName,command:e.command??process.env.CODEX_COMMAND??"codex",args:Gd(e.args??Fd()),defaultModel:Qd(e.defaultModel),defaultPermissionMode:Xd(e.defaultPermissionMode),defaultReasoningEffort:Jd(e.defaultReasoningEffort),defaultServiceTier:Yd(e.defaultServiceTier),environment:Gd(e.environment)}})}({displayName:Xo(t.displayName,"displayName",{required:!0,maxLength:128}),command:Xo(t.command,"command"),args:Zo(t.args,"args"),defaultModel:sc(t.defaultModel,"defaultModel"),defaultPermissionMode:sc(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:sc(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:sc(t.defaultServiceTier,"defaultServiceTier"),environment:td(t.environment,"environment")}),{status:201})}catch(t){return rd(t)}}function sc(e,t){return null===e?null:Xo(e,t,{maxLength:128})}var oc=yn({loader:()=>dc});async function dc({request:e}){try{return Jo(e,["GET"]),await pd(e),Vo(await async function(){const e=await ud.codexAccount.findMany({orderBy:{createdAt:"asc"}});return{schemaVersion:1,exportedAt:(new Date).toISOString(),accounts:e.map(e=>({id:e.id,displayName:e.displayName,command:e.command,args:Wd(e.args),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:Pd(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return rd(t)}}var cc=yn({action:()=>lc});async function lc({request:e}){try{Jo(e,["POST"]),await pd(e);const t=await Yo(e);if(!Array.isArray(t.accounts))throw new Wo(400,"accounts must be an array.");return Vo(await async function(e){const t=e.accounts.map(Vd),n=[];for(const s of t){const e=s.id?await ud.codexAccount.findUnique({where:{id:s.id}}):null;e?(Dd.stopRuntime(e.id),n.push(await ud.codexAccount.update({where:{id:e.id},data:Hd(s)}))):n.push(await ud.codexAccount.create({data:{...s.id?{id:s.id}:{},...Hd(s)}}))}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await $d(s.id));const r=await ud.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=>Kd(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return rd(t)}}var uc=yn({action:()=>hc,loader:()=>mc});async function mc({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await _d(ad(t,"accountId")))}catch(n){return rd(n)}}async function hc({request:e,params:t}){try{await pd(e);const n=ad(t,"accountId");if("PATCH"===e.method){const t=await Yo(e);return Vo(await async function(e,t){return await _d(e),Dd.stopRuntime(e),ud.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:Gd(t.args),environment:Gd(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:Xo(t.displayName,"displayName",{maxLength:128}),command:Xo(t.command,"command"),args:Zo(t.args,"args"),environment:td(t.environment,"environment")}))}if("DELETE"===e.method)return Vo(await async function(e){return await _d(e),Dd.stopRuntime(e),ud.codexAccount.delete({where:{id:e}})}(n));Qo(e.method)}catch(n){return rd(n)}}var fc=yn({action:()=>pc});async function pc({request:e,params:t}){try{Jo(e,["PATCH"]),await pd(e);const n=await Yo(e),a={defaultModel:gc(n.defaultModel,"defaultModel"),defaultPermissionMode:gc(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:gc(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:gc(n.defaultServiceTier,"defaultServiceTier")};return Vo(await async function(e,t){return await _d(e),Kd(await ud.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:Qd(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:Xd(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:Jd(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:Yd(t.defaultServiceTier)}}))}(ad(t,"accountId"),a))}catch(n){return rd(n)}}function gc(e,t){return null===e?null:Xo(e,t,{maxLength:128})}async function vc(e){return async function(e){return(await Dd.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(xc(await wc(e)))}async function wc(e){const t=await ud.codexAccount.findUnique({where:{id:e}});if(!t)throw new Wo(404,"Account not found.");if("CONNECTED"!==t.status)throw new Wo(400,"Authenticate the account before loading Codex account data.");return t}function xc(e){return{accountId:e.id,args:yc(e.args),command:e.command,environment:Pd(e.environment),workingDirectory:null}}function yc(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var bc=yn({loader:()=>Nc});async function Nc({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await vc(ad(t,"accountId")))}catch(n){return rd(n)}}var Ic=yn({loader:()=>kc});async function kc({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await async function(e){return Rd(xc(await wc(e)))}(ad(t,"accountId")))}catch(n){return rd(n)}}var Cc=yn({action:()=>Ac});async function Ac({request:e,params:t}){try{Jo(e,["POST"]),await pd(e);const n=await Yo(e);return Vo(await $d(ad(t,"accountId"),function(e){const t=Xo(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new Wo(400,"mode must be browser or device.")}(n.mode)))}catch(n){return rd(n)}}var Mc=yn({action:()=>Ec});async function Ec({request:e,params:t}){try{Jo(e,["POST"]),await pd(e);const n=Xo((await Yo(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Vo(await Ud(ad(t,"accountId"),n))}catch(n){return rd(n)}}var Tc="global",Sc=new Map;async function Pc(e={}){if(!("test"===process.env.NODE_ENV?"true"===process.env.CODEX_LOCAL_CHAT_IMPORT:"false"!==process.env.CODEX_LOCAL_CHAT_IMPORT))return;const t=Date.now(),n=Sc.get(Tc);if(!e.force&&n&&t-n.lastScanAt<sl("CODEX_LOCAL_CHAT_IMPORT_INTERVAL_MS",3e4))return void(await n.promise);if(n?.promise)return void(await n.promise);const a={lastScanAt:t},r=async function(){const e=await Jc();if(!e.length)return;const t=(await Promise.all(e.map(e=>nl(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs).slice(0,rl()),n=await async function(e){const t=e.map(e=>vl(e.path)).filter(e=>!!e);if(!t.length)return new Set;const n=await ud.chat.findMany({where:{externalThreadId:{in:[...new Set(t)]}},select:{externalThreadId:!0}});return new Set(n.map(e=>e.externalThreadId).filter(e=>!!e))}(t);for(const a of t){const e=vl(a.path);e&&n.has(e)||await Rc(a.path).catch(e=>{console.warn(`Failed to import local Codex chat from ${a.path}.`,e instanceof Error?e.message:e)})}}().catch(e=>{console.warn("Local Codex chat import failed.",e instanceof Error?e.message:e)}).finally(()=>{const e=Sc.get(Tc);e?.promise===r&&(e.promise=void 0)});a.promise=r,Sc.set(Tc,a),await r,await async function(){const e=await ud.chat.findMany({where:{messages:{some:{metadata:{path:"$.kind",equals:"localCodexImport"}}}},select:{id:!0},take:rl()});for(const t of e)await ud.$transaction(e=>Oc(e,t.id))}()}async function Lc(e,t){const n=await ud.chat.findUnique({where:{id:e},select:{externalThreadId:!0}}),a=await bl(e)??(n?.externalThreadId?await Yc(n.externalThreadId):null);if(!a)return;const r=an(qd(t),"sessions",function(e){const t=`${on}sessions${on}`,n=e.lastIndexOf(t);return-1===n?Xt(e):e.slice(n+t.length)}(a));if(sn(a)!==sn(r)){try{return void(await ln(r,Ht.R_OK))}catch{}await mn(en(r),{recursive:!0,mode:448}),await un(a,r)}}async function Dc(e,t){const n=await bl(e);if(n){const e=await Zc(n,t);if(e)return e}const a=await Yc(t);return a?Zc(a,t):null}async function Rc(e){const t=await vn(e);if(!t.isFile()||t.size>il())return;const n=qc(await fn(e,"utf8"),e,new Date(t.mtimeMs));if(!n||"xedoc"===n.originator)return;const a=await Kc(e,n.externalThreadId),r=a?.updatedAt??n.updatedAt;await ud.$transaction(async e=>{const t=await e.chat.findFirst({where:{externalThreadId:n.externalThreadId},select:{id:!0}});t?await Oc(e,t.id,a,n.updatedAt):await e.chat.create({data:{accountId:null,createdAt:n.createdAt,externalThreadId:n.externalThreadId,lastActivityAt:r,status:"IDLE",title:a?.title??n.title,updatedAt:n.updatedAt,workingDirectory:n.workingDirectory}})})}function qc(e,t,n){let a,r,i,s,o,d;const c=[],l=[];for(const f of e.split(/\r?\n/)){if(!f.trim())continue;const e=hl(f);if(!e)continue;const u=fl(e.timestamp)??n;o=pl(o,u),d=gl(d,u);const m=Td(e.payload);if("session_meta"===e.type&&m){a=Sd(m.id)??a,r=Sd(m.source)??r,i=Sd(m.originator)??i,s=Sd(m.cwd)??s,o=fl(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=Sd(m.cwd)??s;continue}const h=_c(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=$c(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??vl(t);if(!m||!u.length)return null;const h=wl(u.find(e=>"USER"===e.role)?.content??"")??wl(u[0]?.content??"")??"Imported Codex chat";return{createdAt:o??n,externalThreadId:m,messages:u,originator:i,path:t,source:r,title:h,updatedAt:d??n,workingDirectory:s}}async function Oc(e,t,n,a){const r=await e.chat.findUnique({where:{id:t},select:{externalThreadId:!0,id:!0,lastActivityAt:!0,title:!0}});if(!r)return;const i=await e.chatMessage.findMany({where:{chatId:t},orderBy:{sequence:"asc"},select:{content:!0,id:!0,metadata:!0,role:!0}}),s=i.filter(e=>"localCodexImport"===Td(e.metadata)?.kind),o=s.filter(e=>"USER"===e.role&&Uc(e.content)).map(e=>e.id);o.length&&await e.chatMessage.deleteMany({where:{id:{in:o}}});const d=i.filter(e=>!o.includes(e.id)),c=wl(d.find(e=>"USER"===e.role&&!Uc(e.content))?.content??d.find(e=>!Uc(e.content))?.content??"")??"Imported Codex chat",l=n??(r.externalThreadId?await async function(e,t){const n=function(e){for(const t of e){const e=Td(t.metadata);if("localCodexImport"!==e?.kind)continue;const n=Sd(e.sessionPath);if(n)return n}return null}(e)??await Yc(t);return n?Kc(n,t):null}(s,r.externalThreadId):null),u=l?.title??null,m=l?.updatedAt??a??null,h=xl(r.title),f={};if(m&&r.lastActivityAt.getTime()!==m.getTime()&&(f.lastActivityAt=m),u)h!==xl(u)&&(f.title=u);else{const e=new Set([xl(c),xl("Imported Codex chat")]);(Uc(r.title)||e.has(h)||!h)&&(f.title=c)}Object.keys(f).length&&await e.chat.update({where:{id:r.id},data:f})}function _c(e,t,n){if("response_item"!==e.type)return null;const a=Td(e.payload);if(!a||"message"!==a.type)return null;const r="assistant"===(i=a.role)?"ASSISTANT":"user"===i?"USER":null;var i;if(!r)return null;const s=function(e){return"string"==typeof e.text?Fc(e.text,e):"string"==typeof e.message?Fc(e.message,e):"string"==typeof e.content?Fc(e.content,e):Array.isArray(e.content)?Fc(e.content.map(e=>{if("string"==typeof e)return e;const t=Td(e);return t?"string"==typeof t.text?t.text:Gc(t)??"":""}).join(""),e):Fc("",e)}(a);return!s.trim()||Uc(s)?null:{content:s,createdAt:t,metadata:zc(a,n),rawPayload:jc(e,a),role:r}}function $c(e,t,n){if("event_msg"!==e.type)return null;const a=Td(e.payload);if(!a)return null;const r=Sd(a.type),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?function(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."}(r):"string"==typeof a.message?Fc(a.message,a):"";return!s.trim()||Uc(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...zc(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:jc(e,a),role:i}}function Uc(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function zc(e,t){return{kind:"localCodexImport",originator:t.originator,phase:Sd(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:Sd(e.type)}}function jc(e,t){return{payload:{name:Sd(t.name),phase:Sd(t.phase),role:Sd(t.role),type:Sd(t.type)},timestamp:Sd(e.timestamp),type:Sd(e.type)}}function Fc(e,t){return[e,...Bc(t.images),...Bc(t.local_images),...Bc(t.localImages)].filter(Boolean).join("\n\n")}function Bc(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Hc(e):Gc(Td(e))).filter(e=>!!e):[]}function Gc(e){return e?Hc(Sd(e.url)??Sd(e.image_url)??Sd(e.path)??Sd(e.filePath)):null}function Hc(e){const t=e?.trim();return t?`<image>${t}</image>`:null}async function Kc(e,t){if(!e||!t)return null;const n=function(e){const t=`${on}sessions${on}`,n=sn(e),a=n.lastIndexOf(t);return-1===a?null:an(n.slice(0,a),"session_index.jsonl")}(e);if(!n)return null;try{return function(e,t){return Vc(e).get(t)??null}(await fn(n,"utf8"),t)}catch{return null}}async function Wc(e){try{return Vc(await fn(e,"utf8"))}catch{return new Map}}function Vc(e){const t=new Map;for(const n of e.split(/\r?\n/)){if(!n.trim())continue;const e=hl(n);if(!e)continue;const a=Sd(e.id)??Sd(e.thread_id)??Sd(e.threadId)??Sd(e.session_id)??Sd(e.sessionId);if(!a)continue;const r=Qc(Sd(e.thread_name)??Sd(e.threadName)??Sd(e.name)??Sd(e.title)),i=fl(e.updated_at)??fl(e.updatedAt)??fl(e.modified_at)??fl(e.modifiedAt)??null,s=t.get(a);t.set(a,{title:r??s?.title??null,updatedAt:i??s?.updatedAt??null})}return t}function Qc(e){const t=e?.replace(/\s+/g," ").trim();return!t||Uc(t)?null:t.slice(0,160)}async function Jc(){const e=[...el(),an(yl(process.env.CODEX_HOME?.trim()||"~/.codex"),"sessions"),...await tl()],t=[...new Set(e.map(e=>yl(e)))],n=[];for(const a of t)try{await ln(a,Ht.R_OK),n.push(a)}catch{}return n}async function Yc(e){const t=await Jc(),n=(await Promise.all(t.map(e=>nl(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs),a=n.find(t=>vl(t.path)===e);if(a)return a.path;for(const r of n.slice(0,rl()))if(await Xc(r.path,e))return r.path;return null}async function Xc(e,t){try{const n=await vn(e);if(!n.isFile()||n.size>il())return null;const a=qc(await fn(e,"utf8"),e,new Date(n.mtimeMs));return a?.externalThreadId===t?a:null}catch{return null}}async function Zc(e,t){try{const n=await vn(e);if(!n.isFile()||n.size>il())return null;let a,r=null;for(const t of(await fn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=hl(t);if(!e)continue;"session_meta"===e.type&&(a=Sd(Td(e.payload)?.id)??a);const n=ol(e);n&&(r=n)}return(a??vl(e))===t?r:null}catch{return null}}function el(){const e=process.env.CODEX_LOCAL_CHAT_IMPORT_ROOTS?.trim();return e?e.split(Zt).map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith("/sessions")?e:an(e,"sessions")):[]}async function tl(){const e=yl(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts");try{return(await pn(e,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(t=>an(e,t.name,"sessions"))}catch{return[]}}async function nl(e){const t=[];return await al(e,t,0),t}async function al(e,t,n){if(n>6)return;let a;try{a=await pn(e,{withFileTypes:!0})}catch{return}await Promise.all(a.map(async a=>{const r=an(e,a.name);if(a.isDirectory())return void(await al(r,t,n+1));if(!a.isFile()||!a.name.endsWith(".jsonl"))return;const i=await vn(r);t.push({mtimeMs:i.mtimeMs,path:r})}))}function rl(){return sl("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3)}function il(){return sl("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function sl(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function ol(e){const t=dl(e);if(!t)return null;const n=Td(t.params),a=Td(t.info)??Td(n?.info)??n??t;return function(e,t=e){const n=ll(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=ll(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=ll(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}([ll(e,["input_tokens","inputTokens"]),ll(e,["output_tokens","outputTokens"]),ll(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}}(cl(a,["last_token_usage","lastTokenUsage"])??cl(a,["total_token_usage","totalTokenUsage"])??a,a)}function dl(e,t=0){if(t>4)return;const n=Td(e);if(!n)return;const a=ml(Sd(n.type)??""),r=ml(Sd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=dl(n[i],t+1);if(e)return e}}function cl(e,t){for(const n of t){const t=Td(e[n]);if(t)return t}}function ll(e,t){for(const n of t){const t=ul(e[n]);if(void 0!==t)return t}}function ul(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 ml(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function hl(e){try{return Td(JSON.parse(e))??null}catch{return null}}function fl(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function pl(e,t){return!e||t<e?t:e}function gl(e,t){return!e||t>e?t:e}function vl(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function wl(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 xl(e){return e.replace(/\s+/g," ").trim().toLowerCase()}function yl(e){return"~"===e?Yt():e.startsWith("~/")?an(Yt(),e.slice(2)):sn(e)}async function bl(e){const t=await ud.chatMessage.findMany({where:{chatId:e},orderBy:{sequence:"asc"},select:{metadata:!0},take:10});for(const n of t){const e=Td(n.metadata);if("localCodexImport"!==e?.kind)continue;const t=Sd(e.sessionPath);if(t)return t}return null}var Nl="__xedocRealtimeState__";function Il(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[Nl]??={handlers:new Set},e[Nl]}().handlers)r(a)}async function kl(e){const t=Ml(),n=El(t,e),a=await pn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:en(n),entries:a.map(e=>function(e,t){return{name:t.name,path:an(e,t.name),type:Tl(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 Cl(e,t){const n=Ml(),a=sn(El(n,e),function(e){const t=e.trim();if(!t)throw new Wo(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Wo(400,"Folder name must be a single folder name.");return t}(t)),r=rn(n,a);if(r.startsWith("..")||nn(r))throw new Wo(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 Wo(409,"Folder already exists.");throw i}return kl(a)}function Al(e){return El(Ml(),e)}function Ml(){const e=function(e){return"~"===e?Yt():e.startsWith("~/")?an(Yt(),e.slice(2)):sn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Kt(e)||Wt(e,{recursive:!0}),Qt(e)}function El(e,t){const n=t?.trim(),a=n?nn(n)?n:an(e,n):e;let r;try{r=Qt(sn(a))}catch{throw new Wo(400,"Workspace path does not exist.")}const i=rn(e,r);if(i.startsWith("..")||nn(i))throw new Wo(403,"Path is outside the workspace root.");if(!Jt(r).isDirectory())throw new Wo(400,"Workspace path is not a directory.");return r}function Tl(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var Sl=1e6;async function Pl(e,t,n){const a=await ud.chat.findUnique({where:{id:e},select:{workingDirectory:!0}});if(!a)throw new Wo(404,"Chat not found.");if(!a.workingDirectory)throw new Wo(400,"Chat does not have a working directory.");const r=Al(a.workingDirectory),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 Ll(r,i.path),o=await Dl(s,r),d=n??i.line??null,c=Math.min(o.size,Sl),l=c?await async function(e,t){const n=await hn(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:Rl(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>Sl}}async function Ll(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Wo(400,"File path is required.");const a=await gn(e),r=nn(n)?n:sn(a,n);let i;try{i=await gn(r)}catch{throw new Wo(404,"File does not exist.")}return function(e,t){const n=rn(e,t);if(n.startsWith("..")||nn(n))throw new Wo(403,"Path is outside the chat working directory.")}(a,i),i}async function Dl(e,t){const n=await vn(e);if(!n.isFile())throw new Wo(400,"Workspace path is not a file.");const a=t?await gn(t):null;return{name:Xt(e),path:e,relativePath:a&&rn(a,e)||Xt(e),size:n.size}}function Rl(e){const t=tn(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 ql=new Map,Ol=new Map,_l=new Map,$l=new Map,Ul=new Map,zl=new Map,jl=new Map,Fl=new Map;function Bl(e,t){return async function(e,t){const n=zl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);zl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),zl.get(e)===i&&zl.delete(e)}}(e,async()=>ud.chatMessage.create({data:{...t,chatId:e,sequence:await Zu(e)}}))}function Gl(e,t){const n=(jl.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return jl.set(e,a),a.finally(()=>{jl.get(e)===a&&jl.delete(e)}),n}async function Hl(){await Pc(),await async function(){const e=await ud.chat.findMany({where:{accountId:{not:null},externalThreadId:{not:null},status:{not:"ARCHIVED"}},select:{accountId:!0,externalThreadId:!0,id:!0,lastActivityAt:!0,title:!0}}),t=[...new Set(e.map(e=>e.accountId).filter(e=>!!e))];if(!t.length)return;const n=new Map;await Promise.all(t.map(async e=>{n.set(e,await Wc(an(qd(e),"session_index.jsonl")))}));for(const a of e){if(!a.accountId||!a.externalThreadId)continue;const e=n.get(a.accountId)?.get(a.externalThreadId),t=iu(a,e);if(t){const e=await ud.chat.update({where:{id:a.id},data:t});em(a.id,"chat.updated",Bm(e))}}}()}function Kl(){return ud.chat.findMany({where:{status:{not:"ARCHIVED"}},orderBy:[{lastActivityAt:"desc"},{updatedAt:"desc"}]})}async function Wl(e){const t=await ud.chat.findUnique({where:{id:e}});if(!t)throw new Wo(404,"Chat not found.");return async function(e){return e.accountId&&e.externalThreadId?ru(e,e.accountId,e.externalThreadId):e}(t)}async function Vl(e,t){const n=await Wl(e),a=await async function(e,t){if(void 0===t||t===e.accountId)return;if(null===t)return null;const n=await ud.codexAccount.findUnique({where:{id:t}});if(!n)throw new Wo(400,"Account not found.");if("CONNECTED"!==n.status)throw new Wo(400,"Authenticate the account before attaching it to a chat.");return n.id}(n,t.accountId),r=void 0!==a&&a!==n.accountId,i=void 0===t.collaborationMode?void 0:Xl(t.collaborationMode),s=void 0!==i&&i!==Zl(n.collaborationMode),o=void 0===t.permissionMode?void 0:eu(t.permissionMode),d=void 0!==o&&o!==tu(n.permissionMode);if(void 0!==t.workingDirectory)throw new Wo(400,"Chat working directory cannot be changed.");if(r&&"RUNNING"===n.status)throw new Wo(400,"Wait for the current run to finish before switching accounts.");if(s&&"RUNNING"===n.status)throw new Wo(400,"Wait for the current run to finish before changing modes.");const c=await ud.chat.update({where:{id:e},data:{accountId:a,autoRotateAccount:t.autoRotateAccount,model:void 0===t.model?void 0:Ql(t.model),reasoningEffort:void 0===t.reasoningEffort?void 0:Jl(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Yl(t.serviceTier),collaborationMode:i,permissionMode:o,title:t.title,externalThreadId:r&&n.accountId||s?null:void 0}});return r&&!n.accountId&&a&&Lc(e,a).catch(e=>{console.warn("Failed to mirror imported Codex session.",e instanceof Error?e.message:e)}),void 0!==t.title&&async function(e){if(!e.accountId||!e.externalThreadId)return;const t=await ud.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return;await Vm(Dd.getRuntime({accountId:t.id,command:t.command,args:Qm(t.args),workingDirectory:null,environment:Pd(t.environment)}),e.externalThreadId,e.title)}(c).catch(e=>{console.warn("Failed to persist Codex chat title.",e instanceof Error?e.message:e)}),d&&void 0!==o&&(!function(e,t){for(const n of Ol.values())n.chatId===e&&(n.permissionMode=t)}(e,o),"fullAccess"===o&&await async function(e){const t=[...ql.values()].filter(t=>t.chatId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=Dm(t);n.runtime.respondToServerRequest(n.rpcId,a),ql.delete($m(e,n.requestId));const r=await ud.chatMessage.findUnique({where:{id:n.messageId}});r&&em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:_m(r.metadata,{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,result:a,resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}}(e)),c}function Ql(e){if(null===e)return null;const t=e.trim();if(!t)throw new Wo(400,"Runtime option cannot be empty.");return t}function Jl(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Wo(400,"reasoningEffort is invalid.");return e}function Yl(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Wo(400,"serviceTier is invalid.")}function Xl(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Wo(400,"collaborationMode is invalid.")}function Zl(e){return"plan"===e?"plan":"default"}function eu(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Wo(400,"permissionMode is invalid.")}function tu(e){return"fullAccess"===e?"fullAccess":"default"}function nu(e){const t=Hm(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"chat"===t}function au(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)}async function ru(e,t,n){const a=iu(e,(await Wc(an(qd(t),"session_index.jsonl"))).get(n));if(!a)return e;const r=await ud.chat.update({where:{id:e.id},data:a});return em(e.id,"chat.updated",Bm(r)),r}function iu(e,t){if(!t)return null;const n={};return!t.title||Hm(e.title)===Hm(t.title)||nu(t.title)&&!nu(e.title)||(n.title=t.title),t.updatedAt&&e.lastActivityAt.getTime()!==t.updatedAt.getTime()&&(n.lastActivityAt=t.updatedAt),Object.keys(n).length?n:null}async function su(e,t=0,n=50){const a=await Wl(e);await async function(e){const t=await ud.chatRun.findMany({where:{chatId:e,status:{in:["CANCELLED","COMPLETED","FAILED"]}},select:{id:!0,status:!0}});for(const n of t){const t="FAILED"===n.status?"FAILED":"COMPLETED";await ud.chatMessage.updateMany({where:{chatId:e,kind:{in:["CHAT","COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"]},runId:n.id,status:{in:["PENDING","STREAMING"]}},data:{completedAt:new Date,status:t}})}}(e);const r=await async function(e,t,n){const a=await ud.chatMessage.findMany({where:{chatId:e.id},orderBy:{sequence:"asc"}}),r="RUNNING"===e.status?[]:await async function(e){if(!e.externalThreadId)return[];const t=await async function(e){if(!e.accountId||!e.externalThreadId)return[];const t=await ud.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return[];const n=Dd.getRuntime({accountId:t.id,command:t.command,args:Qm(t.args),workingDirectory:null,environment:Pd(t.environment)});try{const t=lu((await n.request("thread/turns/list",{threadId:e.externalThreadId,limit:1e3},3e4)).result);if(t.length)return t}catch{}try{return lu((await n.request("thread/read",{includeTurns:!0,threadId:e.externalThreadId},3e4)).result)}catch{return[]}}(e);if(t.length)return t;const n=await async function(e,t){const n=await bl(e);if(n){const e=await Xc(n,t);if(e)return e}const a=await Yc(t);return a?Xc(a,t):null}(e.id,e.externalThreadId);return n?n.messages.map(e=>function(e){return{completedAt:e.createdAt,content:e.content,createdAt:e.createdAt,metadata:e.metadata,kind:e.kind,rawPayload:e.rawPayload,role:e.role,source:"session"}}(e)):[]}(e);return(r.length?function(e,t,n){const a=n.filter(ou),r=new Set,i=new Set(t.map(e=>e.role));let s=Math.max(0,...n.map(e=>e.sequence));const o=t.map((t,n)=>{const i=function(e,t,n){return t.find(t=>!n.has(t.id)&&t.role===e.role&&e.itemId&&t.itemId===e.itemId)??t.find(t=>!n.has(t.id)&&t.role===e.role&&e.turnId&&t.turnId===e.turnId)??t.find(t=>!n.has(t.id)&&t.role===e.role)??null}(t,a,r);return i&&r.add(i.id),function(e,t,n,a,r){const i=t.createdAt??a?.createdAt??e.createdAt,s=t.completedAt??t.createdAt??a?.completedAt;return{chatId:e.id,completedAt:s,content:t.content,createdAt:i,id:a?.id??du(e.id,e.externalThreadId,t,n),itemId:t.itemId??a?.itemId??null,kind:t.kind??"CHAT",metadata:(t.metadata?Um(t.metadata):null)??a?.metadata??cu(t),rawPayload:Um(t.rawPayload??a?.rawPayload??null),requestId:a?.requestId??null,role:t.role,runId:a?.runId??null,sequence:r,status:"FAILED"===a?.status?"FAILED":"COMPLETED",turnId:t.turnId??a?.turnId??null}}(e,t,n,i,i?.sequence??++s)}),d=n.filter(e=>!r.has(e.id)).filter(e=>function(e,t){return"CHAT"!==e.kind||("COMPLETED"!==e.status||(!ou(e)||!t.has(e.role)))}(e,i)).map(Fm);return[...o,...d].sort((e,t)=>e.sequence-t.sequence)}(e,r,a):a.map(Fm)).filter(e=>e.sequence>t).sort((e,t)=>e.sequence-t.sequence).slice(0,n)}(a,t,Math.min(Math.max(n,1),200));return{data:r,nextCursor:r.length?r[r.length-1].sequence:null}}function ou(e){return"CHAT"===e.kind&&("USER"===e.role||"ASSISTANT"===e.role)}function du(e,t,n,a){return["codex",e,t??"thread",n.turnId??"turn",n.itemId??a,n.role.toLowerCase()].join(":")}function cu(e){return{kind:"codexTranscript",source:e.source}}function lu(e){return function(e){const t=Td(e),n=Td(t?.thread),a=[Array.isArray(e)?e:null,t?.data,t?.items,t?.turns,n?.turns];for(const r of a){const e=pu(r);if(e)return e}return[]}(e).flatMap(e=>function(e){const t=Sd(e.id)??Sd(e.turnId)??Sd(e.turn_id)??null,n=gu(e.createdAt??e.created_at??e.timestamp??e.startedAt),a=gu(e.completedAt??e.completed_at??e.finishedAt??e.updatedAt);return(pu(e.items)??[]).map(e=>function(e,t){const n=function(e){const t=Sd(e.role)?.toLowerCase();if("user"===t)return"USER";if("assistant"===t||"agent"===t)return"ASSISTANT";const n=Sd(e.type)?.replace(/[_\s-]+/g,"").toLowerCase();return"usermessage"===n||"inputmessage"===n?"USER":"agentmessage"===n||"assistantmessage"===n?"ASSISTANT":null}(e);if(!n)return null;const a=function(e){return function(e,t){return[e,...mu(t.images),...mu(t.local_images),...mu(t.localImages)].filter(Boolean).join("\n\n")}(zm(e.text)??zm(e.message)??zm(e.output)??uu(e.content)??"",e)}(e);return!a.trim()||Uc(a)?null:{completedAt:gu(e.completedAt??e.completed_at)??t.completedAt,content:a,createdAt:gu(e.createdAt??e.created_at??e.timestamp)??t.createdAt,itemId:Sd(e.id)??Sd(e.itemId)??Sd(e.item_id)??null,rawPayload:vu(e),role:n,source:"runtime",turnId:Sd(e.turnId)??Sd(e.turn_id)??t.turnId??null}}(e,{completedAt:a,createdAt:n,turnId:t})).filter(e=>!!e)}(e))}function uu(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=Td(e);return zm(t?.text)??zm(t?.content)??zm(t?.message)??hu(t)??""}).join("");return t.length?t:void 0}function mu(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?fu(e):hu(Td(e))).filter(e=>!!e):[]}function hu(e){return e?fu(Sd(e.url)??Sd(e.image_url)??Sd(e.path)??Sd(e.filePath)):null}function fu(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function pu(e){return Array.isArray(e)?e.map(e=>Td(e)).filter(e=>!!e):null}function gu(e){if("string"!=typeof e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t}function vu(e){return{id:Sd(e.id),itemId:Sd(e.itemId)??Sd(e.item_id),role:Sd(e.role),type:Sd(e.type)}}async function wu(e,t,n){await Wl(e);const a=$m(e,t),r=ql.get(a);if(!r)throw new Wo(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Wo(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Wo(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Wo(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),ql.delete(a);const s=Fm(await ud.chatMessage.update({where:{id:r.messageId},data:{status:"COMPLETED",completedAt:new Date,metadata:_m(await Om(r.messageId),{status:"resolved",decision:n.decision,result:n.result??i,resolvedAt:(new Date).toISOString()})}}));return em(e,"message.updated",s),s}async function xu(e,t){let n=await Wl(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Wo(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await Nu(n));const a=t.accountId??n.accountId;if(!a)throw new Wo(400,"Choose a Codex account before sending messages.");const r=await ud.codexAccount.findUnique({where:{id:a}});if(!r)throw new Wo(400,"Account not found.");if("CONNECTED"!==r.status)throw new Wo(400,"Authenticate the account before sending messages.");if(!n.workingDirectory)throw new Wo(400,"Select a working directory before sending messages.");const i=Al(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new Wo(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 Wo(400,"Attachment kind is invalid.");n.push(await Tu(e,a))}else n.push(Eu(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 Wo(400,"Message content or an attachment is required.");const d=await async function(e,t,n){if(!nu(t))return null;const a=((await ud.chatMessage.findFirst({where:{chatId:e,kind:"CHAT",role:"USER",content:{not:""}},orderBy:{sequence:"asc"}}))?.content??n).trim();return a||null}(e,n.title,function(e,t){const n=t.map(e=>"file"===e.message.kind?e.message.path:e.message.name);return[e.trim(),...n].filter(Boolean).join(" ")}(t.content,s));await async function(e,t){const n=t?au(t):null;if(!n)return null;const a=await ud.chat.findUnique({where:{id:e},select:{title:!0}});return a&&nu(a.title)?(await Ym(e,n),n):null}(e,d);const c=void 0===t.collaborationMode?void 0:Xl(t.collaborationMode),l=c??Zl(n.collaborationMode),u=tu(n.permissionMode),m=new Date;if("RUNNING"===n.status)return"steer"===t.delivery?async function({accountId:e,attachments:t,chat:n,collaborationMode:a,content:r,messageContent:i,metadata:s,permissionMode:o,startedAt:d,workingDirectory:c}){const l=bu(n.id);if(!l?.runtime)throw new Wo(409,"The active turn is not ready for steering yet.");const u=l.externalThreadId??n.externalThreadId;if(!u)throw new Wo(409,"The active turn has not published a thread yet.");const m=l.turnId??await Ou(l.runtime,u);if(!m)throw new Wo(409,"The active turn has not published a turn id yet.");const h=await ud.chat.findUnique({where:{id:n.id}}),f=await Ju(l.runtime,h?.model??n.model,h?.reasoningEffort??n.reasoningEffort);l.turnId=rm(await async function(e,t,n,a){async function r(r){const i=Gu(n,a),s=void 0===t.collaborationMode?[t]:[t,qu(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&&Ku(d))break;if(Hu(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 Ou(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(l.runtime,{expectedTurnId:m,threadId:u,...Vu(a,f)},r,t))??m,l.externalThreadId=u;const p=await Bl(n.id,{role:"USER",status:"COMPLETED",content:i,completedAt:d,metadata:jm(Pu({...s,delivery:"steer",steeredAt:d.toISOString()},t))}),g=await ud.chat.update({where:{id:n.id},data:{lastActivityAt:d,updatedAt:d}});return em(n.id,"chat.updated",Bm(g)),em(n.id,"message.created",Fm(p)),{message:Fm(p),assistantMessage:null,runId:l.runId,status:"RUNNING",delivery:"steer",steered:!0}}({accountId:a,attachments:s,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,startedAt:m,workingDirectory:i}):async function({accountId:e,attachments:t,automaticTitleSeed:n,chat:a,collaborationMode:r,content:i,messageContent:s,metadata:o,permissionMode:d,queuedAt:c,workingDirectory:l}){const u=Ut(),m=await Bl(a.id,{role:"USER",status:"COMPLETED",content:s,completedAt:c,metadata:jm(Pu({...o,delivery:"queue",queueId:u,queueStatus:"queued",queuedAt:c.toISOString()},t))});!function(e,t){const n=_l.get(e)??[];_l.set(e,[...n,t])}(a.id,{accountId:e,attachments:t,automaticTitleSeed:n,collaborationMode:r,content:i,createdAt:c,id:u,messageId:m.id,metadata:o,permissionMode:d,workingDirectory:l});const h=await ud.chat.update({where:{id:a.id},data:{lastActivityAt:c,updatedAt:c}});return em(a.id,"chat.updated",Bm(h)),em(a.id,"message.created",Fm(m)),{message:Fm(m),assistantMessage:null,runId:null,status:"QUEUED",delivery:"queue",queued:!0}}({accountId:a,attachments:s,automaticTitleSeed:d,chat:n,collaborationMode:l,content:t.content,messageContent:o,metadata:t.metadata??{},permissionMode:u,queuedAt:m,workingDirectory:i});const h=await Bl(e,{role:"USER",status:"COMPLETED",content:o,completedAt:m,metadata:jm(Pu(t.metadata,s))});em(e,"message.created",Fm(h));const f=await yu({accountId:a,attachments:s,automaticTitleSeed:d,chatId:e,collaborationMode:l,content:t.content,metadata:t.metadata??{},permissionMode:u,requestedCollaborationMode:c,startedAt:m,workingDirectory:i});return{message:Fm(h),assistantMessage:Fm(f.assistantMessage),runId:f.run.id,status:"QUEUED"}}async function yu({accountId:e,attachments:t,automaticTitleSeed:n,chatId:a,collaborationMode:r,content:i,metadata:s,permissionMode:o,requestedCollaborationMode:d,startedAt:c,workingDirectory:l}){const u=await ud.chatRun.create({data:{chatId:a,accountId:e,status:"QUEUED",request:jm({attachments:t.map(e=>e.message),collaborationMode:r,content:i,metadata:s,permissionMode:o,workingDirectory:l})}}),m=await Bl(a,{runId:u.id,role:"ASSISTANT",kind:"CHAT",status:"PENDING",content:""});return em(a,"chat.updated",Bm(await ud.chat.update({where:{id:a},data:{collaborationMode:d??void 0,lastActivityAt:c,status:"RUNNING",updatedAt:c}}))),em(a,"message.created",Fm(m)),em(a,"run.status",{runId:u.id,status:"QUEUED"}),async function(e,t,n,a,r,i,s,o,d,c){(async function(e,t){const n=$l.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);$l.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),$l.get(e)===i&&$l.delete(e)}})(a,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=await ud.codexAccount.findUnique({where:{id:a}}),u=await ud.chat.findUnique({where:{id:e}});if(!l||!u)return;const m=tu(u.permissionMode),h=await ud.chatMessage.update({where:{id:n},data:{status:"STREAMING"}});em(e,"message.updated",Fm(h)),await ud.chatRun.update({where:{id:t},data:{status:"RUNNING",startedAt:new Date}}),em(e,"run.status",{runId:t,status:"RUNNING"});const f={chatId:e,externalThreadId:u.externalThreadId,interruptRequested:!1,permissionMode:m,runId:t};Ol.set(t,f);const p=Dd.getRuntime({accountId:l.id,command:l.command,args:Qm(l.args),workingDirectory:null,environment:Pd(l.environment)});f.runtime=p;let g="";const v=new Map;let w,x=u.externalThreadId,y=null,b=null;const N=p.onEvent(n=>{(function(e,t,n){const a=sm(e);if(t&&a&&a!==t)return!1;const r=om(e);return!n||!r||r===n})(n,x,w)&&Gl(t,()=>async function(e,t){const n=function(e){const t=Am(e);if(t){const e=Td(t.params),n=Td(t.info)??Td(e?.info)??e??t;return Cm(Mm(n,["last_token_usage","lastTokenUsage"])??Mm(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=Td(e.params),a=Td(n?.event),r=Td(n?.usage)??Td(a?.usage)??(km(e.method)?n:void 0);return r?Cm(r):null}(t);n&&em(e.chatId,"context.updated",n);if(function(e){return!!Am(e)||km(e.method)}(t))return;if(function(e){const t=Td(e.params),n=Td(t?.payload)??Td(t?.event);return[e.method,Sd(t?.type),Sd(n?.type),Sd(n?.event)].some(e=>hm(e??"").includes("compact"))}(t))return void(await nm({chatId:e.chatId,completedAt:new Date,content:Nm(t),itemId:`context-compaction:${om(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Im(t)?"STREAMING":"COMPLETED",turnId:om(t)}));const a=t.method??"",r=Td(t.params),i=cm(t),s=hm(Sd(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=Td(e.params),n=Td(e.result),a=Td(t?.event);return Km(t)??Km(a)??Km(n)}(t);return void(n&&await Ym(e.chatId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=zm(r?.delta)??zm(Td(r?.event)?.delta);if(!n)return;const a=dm(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await nm({chatId:e.chatId,content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Sd(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:om(t)});return void em(e.chatId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&fm(s))return void(await nm({chatId:e.chatId,content:"",fallbackMessageId:e.assistantMessageId,itemId:dm(t),kind:"CHAT",metadata:{kind:"assistant",phase:Sd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:om(t)}));if("item/completed"===a&&fm(s)){const n=function(e){if(!e)return"";const t=zm(e.text)??zm(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>zm(Td(e)?.text)??"").filter(Boolean).join("")}(i)||am(t);if(!n)return;const a=dm(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await nm({chatId:e.chatId,completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Sd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",turnId:om(t)}))}if(a.startsWith("item/reasoning/")||hm(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=dm(t)??`${n.toLowerCase()}:${om(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 nm({chatId:e.chatId,content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:pm(t)?"COMPLETED":"STREAMING",turnId:om(t)})}(e,t,"THINKING",{content:um(t,i),delta:lm(t),metadata:{kind:"thinking",status:vm(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=Td(t.params)??{},a="item/plan/delta"===t.method?lm(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>Td(e)).filter(e=>!!e).map(e=>({status:Sd(e.status)??"pending",step:Sd(e.step)??""})).filter(e=>e.step),i=Sd(n.explanation),s=om(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:dm(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 nm({chatId:e.chatId,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",turnId:s})}(e,t));if("commandexecution"===s||a.includes("commandExecution"))return void(await async function(e,t,n){const a=Td(t.params)??{},r=n??a,i=dm(t)??`command:${om(t)??"turn"}`,s=`COMMAND:${i}`,o=lm(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:zm(r.output)??zm(r.aggregatedOutput)??zm(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=Sd(r.command)??Sd(a.command)??"command",l=vm(r,t.method??"");await nm({chatId:e.chatId,completedAt:pm(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:ym(r.actions)??ym(r.commandActions),command:c,cwd:Sd(r.cwd)??Sd(a.cwd),durationMs:bm(r.durationMs)??bm(r.duration_ms),exitCode:bm(r.exitCode)??bm(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":pm(t)?"COMPLETED":"STREAMING",turnId:om(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=Td(t.params)??{},r=n??a,i=dm(t)??`file-change:${om(t)??"turn"}`,s=wm(r)??wm(a),o=ym(r.changes)??ym(a.changes)??[],d=function(e,t){const n=[Sd(e.path),Sd(e.filePath),Sd(e.file_path),...t.flatMap(e=>{const t=Td(e);return[Sd(t?.path),Sd(t?.filePath),Sd(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await nm({chatId:e.chatId,content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:bm(r.additions)??xm(s,"+"),changes:o,deletions:bm(r.deletions)??xm(s,"-"),diff:s,kind:"fileChange",paths:d,status:vm(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:pm(t)?"COMPLETED":"STREAMING",turnId:om(t)})}(e,t,i));if("serverRequest/resolved"===a)return void(await async function(e,t){const n=Td(t.params)??{},a=Sd(n.requestId)??Sd(n.id);if(!a)return;ql.delete($m(e,a));const r=await ud.chatMessage.findFirst({where:{chatId:e,requestId:a}});if(!r)return;em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:_m(r.metadata,{result:void 0===n.result?null:Um(n.result),resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}(e.chatId,t));("error"===a||"turn/failed"===a||a.endsWith("/error"))&&await async function(e,t){const n=Td(t.params),a=Sd(Td(n?.error)?.message)??Sd(n?.message)??t.error?.message??"Codex runtime error.";await nm({chatId:e.chatId,completedAt:new Date,content:a,itemId:`error:${om(t)??Date.now()}`,kind:"ERROR",metadata:{details:Um(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",turnId:om(t)})}(e,t)}({assistantMessageId:h.id,chatId:e,streamBuffers:v,runId:t,onAssistantContent:e=>{g=e}},n)).catch(e=>tm("Codex event projection failed.",e))}),I=p.onServerRequest(n=>{(function(e,t,n){const a=Td(e.params),r=Sd(a?.threadId);if(t&&r&&r!==t)return!1;const i=Sd(a?.turnId);return!n||!i||i===n})(n,x,w)&&Gl(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=Td(t.params)??{},r=Od(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?hm(e).includes("permissions")?"permissions":"approval":hm(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:Sd(n.message),method:e,mode:Sd(n.mode),questions:Sm(n.questions),raw:Um(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:ym(n.availableDecisions),changes:ym(n.changes),command:Sd(n.command),cwd:Sd(n.cwd),itemId:Sd(n.itemId),kind:a,method:e,raw:Um(r),reason:Sd(n.reason)??Sd(n.message),requestId:t,requestKind:a,status:"pending",turnId:Sd(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=Dm(i);return e.runtime.respondToServerRequest(t.id,n),void(await nm({chatId:e.chatId,completedAt:new Date,content:Lm(s),kind:"APPROVAL",metadata:{...s,autoApproved:!0,decision:"approval"===i?"acceptForSession":void 0,result:n,resolvedAt:(new Date).toISOString(),status:"resolved"},rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"COMPLETED",turnId:Sd(a.turnId),itemId:Sd(a.itemId)}))}const o=await nm({chatId:e.chatId,content:Lm(s),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",turnId:Sd(a.turnId),itemId:Sd(a.itemId)});ql.set($m(e.chatId,r),{chatId:e.chatId,messageId:o.id,requestKind:i,requestId:r,rpcId:t.id,runtime:e.runtime})}({chatId:e,permissionMode:()=>f.permissionMode,runId:t,runtime:p},n)).catch(e=>tm("Codex server request projection failed.",e))});try{x=await async function(e,t,n){const a=t?"thread/resume":"thread/start",r=Td((await e.request(a,{...t?{threadId:t}:{},cwd:n},3e4)).result),i=Sd(Td(r?.thread)?.id)??Sd(r?.threadId)??Sd(r?.thread_id)??t;if(!i)throw new Error("Codex did not return a thread id.");return i}(p,u.externalThreadId,o),f.externalThreadId=x,function({chatId:e,cwd:t,runtime:n,seed:a,threadId:r}){const i=a?.trim();if(!i)return;const s=au(i),o=new Set(["untitled chat","conversation",...s?[Hm(s)]:[]]);(async()=>{s&&await Wm(n,e,r,s,o);const a=await async function(e,{cwd:t,seed:n}){try{const a=Td((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return Gm(Sd(a?.title)??Sd(a?.name)??Sd(a?.threadName)??"")}catch{return null}}(n,{cwd:t,seed:i});a&&await Wm(n,e,r,a,o)})().catch(()=>{})}({chatId:e,cwd:o,runtime:p,seed:c,threadId:x}),await Du(t)&&(f.interruptRequested=!0);const n=await Ju(p,u.model,u.reasoningEffort);y=new AbortController,b=p.waitForEvent(e=>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"))}(e)&&sm(e)===x&&(!w||om(e)===w),6e5,y.signal);const a=await async function(e,t,n,a){const r=Gu(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,!Hu(s))throw s}throw i instanceof Error?i:new Error("Codex turn failed.")}(p,{threadId:x,cwd:o,...u.model?{model:u.model}:{},...u.reasoningEffort?{effort:u.reasoningEffort}:{},...u.serviceTier?{serviceTier:u.serviceTier}:{},...Wu(d,n,m),metadata:i},r,s);w=rm(a),f.turnId=w,w&&(await ud.chatRun.update({where:{id:t},data:{externalTurnId:w}}),(f.interruptRequested||await Du(t))&&(f.interruptRequested=!0,await Ru(p,w,x)));const v=await b;if(await async function(e){await(jl.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Lu(gm(v));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Error(gm(v));const N=await async function(e,t,n){try{const a=Td((await e.request("thread/turns/list",{threadId:t,limit:20},3e4)).result);return im((Array.isArray(a?.data)?a.data:[]).map(e=>Td(e)).filter(e=>!!e).filter(e=>!n||Sd(e.id)===n).at(-1))??null}catch{return null}}(p,x,w)||am(v)||am(a)||g,I=new Date,k=await ud.chatMessage.update({where:{id:h.id},data:{content:N,status:"COMPLETED",rawPayload:jm(v),completedAt:I}});await qm(e,t,"COMPLETED"),await Rm(e,t,"Codex completed the turn."),await ud.chatRun.update({where:{id:t},data:{status:"COMPLETED",endedAt:new Date}});const C="plan"===d&&await async function(e,t){return(await ud.chatMessage.findMany({where:{chatId:e,runId:t,OR:[{kind:"PLAN"},{kind:"CHAT",role:"ASSISTANT"}]}})).some(e=>{const t=e.content.trim();return!(!t||"Planning..."===t)&&("CHAT"===e.kind?/<proposed_plan\b[^>]*>[\s\S]*?<\/proposed_plan>/i.test(t):"result"===Td(e.metadata)?.presentation)})}(e,t),A=await ud.chat.update({where:{id:e},data:{collaborationMode:C?"default":void 0,status:"IDLE",externalThreadId:x,lastActivityAt:I,updatedAt:I}});em(e,"chat.updated",Bm(A)),em(e,"message.completed",Fm(k)),em(e,"run.status",{runId:t,status:"COMPLETED"}),await async function(e,t,n){if(!n)return;const a=await async function(e,t){try{const n=Km(Td((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result));if(n)return n}catch{}try{const n=Td((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return Km((Jm(n?.data)??Jm(n?.items)??Jm(n?.threads)??[]).find(e=>Sd(e.id)===t))}catch{return null}}(e,n);a&&await Ym(t,a)}(p,e,x),await ru(await ud.chat.findUnique({where:{id:e}})??A,l.id,x)}catch(k){y?.abort(),await(b?.catch(()=>{}));const n=k instanceof Error?k.message:"Codex run failed.";if(await Rm(e,t,n),k instanceof Lu){await qm(e,t,"COMPLETED");const a=new Date,r=await ud.chatMessage.update({where:{id:h.id},data:{status:"COMPLETED",content:g,completedAt:a,metadata:_m(h.metadata,{interrupted:!0,kind:"assistant"})}});return await ud.chatRun.update({where:{id:t},data:{status:"CANCELLED",error:n,endedAt:new Date}}),em(e,"chat.updated",Bm(await ud.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),em(e,"message.completed",Fm(r)),void em(e,"run.status",{runId:t,status:"CANCELLED",error:n})}const a=new Date,r=await ud.chatMessage.update({where:{id:h.id},data:{status:"FAILED",content:g,completedAt:a}});await qm(e,t,"FAILED"),await ud.chatRun.update({where:{id:t},data:{status:"FAILED",error:n,endedAt:new Date}}),em(e,"chat.updated",Bm(await ud.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),em(e,"message.failed",{...Fm(r),error:n}),em(e,"run.status",{runId:t,status:"FAILED",error:n})}finally{y?.abort(),N(),I(),Ol.delete(t),jl.delete(t),_l.has(e)?function(e){const t=(Ul.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){if(bu(e))return;const t=await ud.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;const n=function(e){const[t,...n]=_l.get(e)??[];if(!t)return _l.delete(e),null;n.length?_l.set(e,n):_l.delete(e);return t}(e);if(!n)return;try{const a=t.autoRotateAccount?await Nu(t):t,r=a.accountId??n.accountId,i=await ud.codexAccount.findUnique({where:{id:r}});if(!i||"CONNECTED"!==i.status)throw new Error("Queued message account is no longer connected.");const s=new Date,o=await yu({accountId:r,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,chatId:e,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:tu(a.permissionMode),requestedCollaborationMode:n.collaborationMode,startedAt:s,workingDirectory:n.workingDirectory});await Mu(e,n.messageId,{dequeuedAt:s.toISOString(),queueStatus:"running",runId:o.run.id})}catch(k){await Mu(e,n.messageId,{error:k instanceof Error?k.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"})}}(e)).catch(()=>{});Ul.set(e,t),t.finally(()=>{Ul.get(e)===t&&Ul.delete(e)})}(e):function(e){(async function(e){const t=await ud.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;await Nu(t)})(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))}(a,u.id,m.id,e,i,s,t,l,r,n),{assistantMessage:m,run:u}}function bu(e){for(const t of Ol.values())if(t.chatId===e)return t;return null}async function Nu(e){if(!e.autoRotateAccount||"RUNNING"===e.status||bu(e.id))return e;const t=await ud.codexAccount.findMany({where:{status:"CONNECTED"},orderBy:{createdAt:"asc"}});if(!t.length)return e;const n=await async function(e){const t=new Map,n=await Promise.allSettled(e.map(async e=>({accountId:e.id,snapshot:Iu(await Rd({accountId:e.id,args:Qm(e.args),command:e.command,environment:Pd(e.environment),workingDirectory:null}))})));for(const a of n)"fulfilled"===a.status&&t.set(a.value.accountId,a.value.snapshot);return t}(t),a=t.find(t=>t.id===e.accountId),r=a?ku(n.get(a.id)):-1;if(a&&r>=0)return e;const i=function(e,t){return e.map((e,n)=>({account:e,index:n,score:ku(t.get(e.id))})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}(t,n);if(!i||i.id===e.accountId)return e;if(ku(n.get(i.id))<0)return e;const s=await ud.chat.update({where:{id:e.id},data:{accountId:i.id,externalThreadId:e.accountId?null:void 0}});return em(e.id,"chat.updated",Bm(s)),e.accountId||Lc(e.id,i.id).catch(e=>{console.warn("Failed to mirror imported Codex session.",e instanceof Error?e.message:e)}),s}function Iu(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function ku(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?Cu(e.secondary)?"weekly":Cu(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-Au(e.usedPercent));return t.length?Math.min(...t):0}function Cu(e){return Au(e?.usedPercent??0)>=100}function Au(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}async function Mu(e,t,n){const a=await ud.chatMessage.findUnique({where:{id:t}});a&&em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:t},data:{metadata:_m(a.metadata,n)}})))}function Eu(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 Wo(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 Wo(400,"Image attachments must be 6 MB or smaller.");const s=Su(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:Ut(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function Tu(e,t){const n=await async function(e,t){return Dl(await Ll(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Ut(),kind:"file",name:Su(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function Su(e,t){const n=e?.trim();return(n?Xt(n):t).slice(0,160)||"attachment"}function Pu(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}var Lu=class extends Error{};async function Du(e){return!!(await ud.chatRun.findUnique({where:{id:e},select:{interruptRequestedAt:!0}}))?.interruptRequestedAt}async function Ru(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)}function qu(e,t){const n={...e};return delete n[t],n}async function Ou(e,t){for(let n=0;n<3;n+=1){const a=await _u(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 _u(e,t){try{const n=Td((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return $u(Uu(n?.data)??Uu(n?.items)??Uu(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 $u(Uu(Td(Td(n.result)?.thread)?.turns)??[],!1)}function $u(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>ju(zu(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!Bu(Fu(i)))continue;const e=ju(zu(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function Uu(e){return Array.isArray(e)?e.map(Td).filter(e=>!!e):null}function zu(e){return Sd(e.id)??Sd(e.turnId)??Sd(e.turn_id)??null}function ju(e){const t=e?.trim();return t||null}function Fu(e){return(Sd(e.status)??Sd(e.turnStatus)??Sd(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function Bu(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function Gu(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={type:"text",text:n,text_elements:[]},s=(e,t)=>[i,...a.map(t=>({type:"image",[e]:t.message.url})),...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 Hu(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 Ku(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}function Wu(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:Qu(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function Vu(e,t=null){return"plan"!==e?{}:{collaborationMode:Qu(e,t)}}function Qu(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Ju(e,t,n){const a=Yu(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=Td(Td((await e.request("config/read",{},3e4)).result)?.config),n=Yu(Sd(t?.model));if(r=r??Xu(t?.model_reasoning_effort)??Xu(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=Td((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=Td(e),n=Yu(Sd(t?.id))??Yu(Sd(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}function Yu(e){const t=e?.trim();return t||null}function Xu(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}async function Zu(e){return((await ud.chatMessage.aggregate({where:{chatId:e},_max:{sequence:!0}}))._max.sequence??0)+1}function em(e,t,n){Il(e,t,n)}function tm(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}async function nm(e){return async function(e,t){if(!e)return t();const n=Fl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Fl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Fl.get(e)===i&&Fl.delete(e)}}(function(e){return e.requestId?`${e.chatId}:request:${e.requestId}`:e.itemId?`${e.chatId}:item:${e.kind}:${e.itemId}`:e.fallbackMessageId?`${e.chatId}:fallback:${e.fallbackMessageId}`:null}(e),async()=>{const t=await async function(e){if(e.requestId){const t=await ud.chatMessage.findFirst({where:{chatId:e.chatId,requestId:e.requestId},orderBy:{sequence:"desc"}});if(t)return t}if(e.itemId){const t=await ud.chatMessage.findFirst({where:{chatId:e.chatId,itemId:e.itemId,kind:e.kind},orderBy:{sequence:"desc"}});if(t)return t}if(e.fallbackMessageId){const t=await ud.chatMessage.findUnique({where:{id:e.fallbackMessageId}});if(!t)return null;if(!e.itemId||!t.itemId||t.itemId===e.itemId)return t}return null}(e),n={completedAt:e.completedAt,content:e.content,itemId:e.itemId??void 0,kind:e.kind,metadata:void 0===e.metadata?void 0:jm(e.metadata),rawPayload:void 0===e.rawPayload?void 0:jm(e.rawPayload),requestId:e.requestId??void 0,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId??void 0},a=Fm(t?await ud.chatMessage.update({where:{id:t.id},data:n}):await Bl(e.chatId,n));return em(e.chatId,t?"message.updated":"message.created",a),a})}function am(e){const t=Td(e.result),n=Td(e.params),a=Td(n?.payload)??n??t;return im(Td(n?.turn)??Td(t?.turn))??zm(t?.text)??zm(t?.content)??zm(a?.text)??zm(a?.content)??zm(a?.delta)??zm(a?.message)??""}function rm(e){const t=Td(e.result),n=Td(e.params);return Sd(t?.turnId)??Sd(t?.turn_id)??Sd(n?.turnId)??Sd(n?.turn_id)??Sd(Td(t?.turn)?.id)??Sd(Td(n?.turn)?.id)}function im(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=Td(e);return"agentMessage"!==t?.type?null:zm(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function sm(e){const t=Td(e.params),n=Td(e.result),a=Td(t?.event);return Sd(t?.threadId)??Sd(t?.thread_id)??Sd(n?.threadId)??Sd(n?.thread_id)??Sd(a?.threadId)??Sd(a?.thread_id)}function om(e){const t=Td(e.params),n=Td(e.result),a=cm(e);return Sd(t?.turnId)??Sd(n?.turnId)??Sd(a?.turnId)??rm(e)}function dm(e){const t=Td(e.params),n=Td(e.result),a=cm(e);return Sd(t?.itemId)??Sd(n?.itemId)??Sd(a?.id)}function cm(e){const t=Td(e.params),n=Td(e.result),a=Td(t?.payload);return Td(t?.item)??Td(n?.item)??Td(a?.item)}function lm(e){const t=Td(e.params),n=Td(t?.event);return zm(t?.delta)??zm(t?.text)??zm(t?.output)??zm(n?.delta)??zm(n?.text)}function um(e,t){const n=Td(e.params),a=Td(e.result);return[t,n,Td(n?.event),Td(n?.payload),a].map(mm).find(e=>!!e?.trim())}function mm(e){if(e)return zm(e.reasoning)??zm(e.reasoningText)??zm(e.reasoning_text)??zm(e.summary)??uu(e.summary)??uu(e.content)??zm(e.text)??zm(e.output)}function hm(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function fm(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function pm(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function gm(e){const t=Td(e.params);return Sd(Td(t?.error)?.message)??Sd(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function vm(e,t){const n=Sd(e?.status);return n?hm(n):t.includes("failed")||t.includes("error")?"failed":pm({method:t})?"completed":"running"}function wm(e){return zm(e.diff)??zm(e.unifiedDiff)??zm(e.unified_diff)??zm(e.patch)}function xm(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function ym(e){if(Array.isArray(e))return e.map(Um)}function bm(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Nm(e){const t=hm(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function Im(e){return hm(e.method??"").includes("start")}function km(e){const t=hm(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Cm(e,t=e){const n=Em(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=Em(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=Em(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}([Em(e,["input_tokens","inputTokens"]),Em(e,["output_tokens","outputTokens"]),Em(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{tokenLimit:i,tokensRemaining:c,tokensUsed:d,remainingPercent:Math.max(0,100-l),usedPercent:l}}function Am(e,t=0){if(t>4)return;const n=Td(e);if(!n)return;const a=hm(Sd(n.type)??""),r=hm(Sd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Am(n[i],t+1);if(e)return e}}function Mm(e,t){for(const n of t){const t=Td(e[n]);if(t)return t}}function Em(e,t){for(const n of t){const t=Tm(e[n]);if(void 0!==t)return t}}function Tm(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 Sm(e){return Array.isArray(e)?e.map(e=>Td(e)).filter(e=>!!e).map(e=>({header:Sd(e.header),id:Sd(e.id)??Ut(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:Pm(e.options),question:Sd(e.question)??Sd(e.header)??"Answer",selectionLimit:bm(e.selectionLimit)??bm(e.selection_limit)})):[]}function Pm(e){return Array.isArray(e)?e.map(e=>Td(e)).filter(e=>!!e).map(e=>({description:Sd(e.description),label:Sd(e.label)??Sd(e.value)??""})).filter(e=>e.label):[]}function Lm(e){return"userInput"===e.kind?Sd(e.message)??"Codex needs more information before it can continue.":Sd(e.reason)??Sd(e.command)??"Codex needs approval before it can continue."}function Dm(e){return"approval"===e?{decision:"acceptForSession"}:{scope:"session",permissions:!0}}async function Rm(e,t,n){const a=await ud.chatMessage.findMany({where:{chatId:e,kind:{in:["APPROVAL","USER_INPUT_PROMPT"]},runId:t,status:"PENDING"}});for(const r of a){const t=Td(r.metadata);if("resolved"!==t?.status&&"expired"!==t?.status){if(r.requestId){const t=$m(e,r.requestId),a=ql.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),ql.delete(t)}em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:_m(r.metadata,{expiredAt:(new Date).toISOString(),reason:n,status:"expired"}),status:"COMPLETED"}})))}}}async function qm(e,t,n){const a=await ud.chatMessage.findMany({where:{chatId:e,kind:{in:["COMMAND_EXECUTION","FILE_CHANGE","PLAN","THINKING","TOOL_ACTIVITY"]},runId:t,status:{in:["PENDING","STREAMING"]}}});for(const r of a)em(e,"message.updated",Fm(await ud.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,status:n}})))}async function Om(e){return(await ud.chatMessage.findUnique({where:{id:e},select:{metadata:!0}}))?.metadata??null}function _m(e,t){return jm({...Td(e)??{},...t})}function $m(e,t){return`${e}:${t}`}function Um(e){return JSON.parse(JSON.stringify(e))}function zm(e){return"string"==typeof e&&e.length>0?e:void 0}function jm(e){return JSON.parse(JSON.stringify(e))}function Fm(e){return{...e,metadata:e.metadata,rawPayload:e.rawPayload}}function Bm(e){return{...e,collaborationMode:Zl(e.collaborationMode),permissionMode:tu(e.permissionMode),reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier}}function Gm(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function Hm(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}function Km(e){const t=Td(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name,t.title];for(const r of n){const e=Gm(Sd(r)??"");if(e)return e}const a=Td(t.thread);return a?Km(a):null}async function Wm(e,t,n,a,r){const i=Gm(a);if(!i)return!1;const s=await ud.chat.findUnique({where:{id:t}});if(!s)return!1;const o=Hm(s.title);return!(!nu(s.title)&&!r.has(o))&&(await Ym(t,i),Vm(e,n,i),!0)}async function Vm(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}function Qm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Jm(e){return Array.isArray(e)?e.map(e=>Td(e)).filter(e=>!!e):null}async function Ym(e,t){em(e,"chat.updated",Bm(await ud.chat.update({where:{id:e},data:{title:t}})))}var Xm=yn({action:()=>eh,loader:()=>Zm});async function Zm({request:e}){try{return Jo(e,["GET"]),await pd(e),Vo(await async function(){const e=await Kl();return e.length?(Hl().catch(e=>{console.warn("Failed to refresh local chat index.",e instanceof Error?e.message:e)}),e):(await Hl(),Kl())}())}catch(t){return rd(t)}}async function eh({request:e}){try{Jo(e,["POST"]),await pd(e);const t=await Yo(e);return Vo(await async function(e){const t=await ud.codexAccount.findUnique({where:{id:e.accountId}});if(!t)throw new Wo(400,"Account not found.");if("CONNECTED"!==t.status)throw new Wo(400,"Authenticate the account before starting a chat.");return ud.chat.create({data:{accountId:e.accountId,autoRotateAccount:e.autoRotateAccount,workingDirectory:Al(e.workingDirectory),model:void 0===e.model?void 0:Ql(e.model),reasoningEffort:void 0===e.reasoningEffort?void 0:Jl(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Yl(e.serviceTier),collaborationMode:void 0===e.collaborationMode?void 0:Xl(e.collaborationMode),permissionMode:void 0===e.permissionMode?void 0:eu(e.permissionMode),title:e.title??"Untitled chat"}})}({accountId:Xo(t.accountId,"accountId",{required:!0}),autoRotateAccount:ed(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:Xo(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:Xo(t.model,"model",{maxLength:160}),reasoningEffort:th(t.reasoningEffort,"reasoningEffort"),serviceTier:th(t.serviceTier,"serviceTier"),collaborationMode:th(t.collaborationMode,"collaborationMode"),permissionMode:th(t.permissionMode,"permissionMode"),title:Xo(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return rd(t)}}function th(e,t){return null===e?null:Xo(e,t,{maxLength:80})}var nh=yn({action:()=>rh,loader:()=>ah});async function ah({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await Wl(ad(t,"chatId")))}catch(n){return rd(n)}}async function rh({request:e,params:t}){try{await pd(e);const n=ad(t,"chatId");if("PATCH"===e.method){const t=await Yo(e);return Vo(await Vl(n,{accountId:Xo(t.accountId,"accountId"),autoRotateAccount:ed(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:Xo(t.model,"model",{maxLength:160}),reasoningEffort:ih(t.reasoningEffort,"reasoningEffort"),serviceTier:ih(t.serviceTier,"serviceTier"),collaborationMode:ih(t.collaborationMode,"collaborationMode"),permissionMode:ih(t.permissionMode,"permissionMode"),title:Xo(t.title,"title",{maxLength:160}),workingDirectory:Xo(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Vo(await async function(e){return await Wl(e),ud.chat.update({where:{id:e},data:{status:"ARCHIVED"}})}(n));Qo(e.method)}catch(n){return rd(n)}}function ih(e,t){return null===e?null:Xo(e,t,{maxLength:80})}var sh=yn({loader:()=>oh});async function oh({request:e,params:t}){try{return Jo(e,["GET"]),await pd(e),Vo(await async function(e){const t=await Wl(e);return t.externalThreadId?{usage:await Dc(t.id,t.externalThreadId)}:{usage:null}}(ad(t,"chatId")))}catch(n){return rd(n)}}var dh=yn({loader:()=>ch});async function ch({request:e,params:t}){try{Jo(e,["GET"]),await pd(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Wo(400,"path is required.");return Vo(await Pl(ad(t,"chatId"),a,nd(n,"line",0)||null))}catch(n){return rd(n)}}var lh=wn(dn);async function uh(e){const t=await hh(e),n=await fh(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await ph(t.cwd),r=await gh(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 gh(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await vh(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 mh(e,t){const n=await hh(e);if("RUNNING"===n.status)throw new Wo(409,"Git actions are disabled while Codex is running.");if(!(await fh(n.cwd)))throw new Wo(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=wh(t.branch);a=await vh(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=wh(t.branch);await vh(n.cwd,["check-ref-format","--branch",e]),a=await vh(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Wo(400,"Commit message is required.");await vh(n.cwd,["add","-A"]),a=await vh(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await vh(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Wo(400,"Unsupported git action.");a=await gh(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await vh(n.cwd,["push"]):await async function(e){await vh(e,["remote","get-url","origin"]);const t=await ph(e);if(!t)throw new Wo(400,"Cannot push while detached from a branch.");return vh(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:yh(t.action),output:a,status:await uh(e)}}async function hh(e){const t=await ud.chat.findUnique({where:{id:e},select:{status:!0,workingDirectory:!0}});if(!t)throw new Wo(404,"Chat not found.");if(!t.workingDirectory)throw new Wo(400,"Chat does not have a working directory.");return{cwd:Al(t.workingDirectory),status:t.status}}async function fh(e){return gh(e,["rev-parse","--show-toplevel"])}async function ph(e){return await gh(e,["symbolic-ref","--quiet","--short","HEAD"])??await gh(e,["rev-parse","--short","HEAD"])}async function gh(e,t){try{return await vh(e,t)}catch{return null}}async function vh(e,t){try{const n=await lh("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return xh(n.stdout,n.stderr)}catch(n){throw new Wo(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return xh("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 wh(e){const t=e?.trim();if(!t)throw new Wo(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Wo(400,"Branch name is invalid.");return t}function xh(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function yh(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 bh({request:e,params:t}){try{Jo(e,["GET"]),await pd(e);const n=ad(t,"chatId"),a=ad(t,"operation"),r=new URL(e.url);if("status"===a)return Vo(await uh(n));if("branches"===a)return Vo(await async function(e){const t=await hh(e);if(!(await fh(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await ph(t.cwd);return{branches:(await vh(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 gh(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Vo(await async function(e,t){const n=await hh(e);if(!(await fh(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=xh(await gh(n.cwd,["diff","--stat",...a]),await gh(n.cwd,["diff","--cached","--stat",...a]));return{diff:xh(await gh(n.cwd,["diff","--no-ext-diff",...a]),await gh(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));throw new Wo(404,"Git operation not found.")}catch(n){return rd(n)}}async function Nh({request:e,params:t}){try{if(Jo(e,["POST"]),await pd(e),"action"!==ad(t,"operation"))throw new Wo(404,"Git operation not found.");const n=await Yo(e),a={action:Ih(n.action),branch:Xo(n.branch,"branch",{maxLength:240}),message:Xo(n.message,"message",{maxLength:5e3})};return Vo(await mh(ad(t,"chatId"),a))}catch(n){return rd(n)}}function Ih(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Wo(400,"action is invalid.")}async function kh({request:e,params:t}){try{Jo(e,["GET"]),await pd(e);const n=new URL(e.url);return Vo(await su(ad(t,"chatId"),nd(n,"afterSequence",0),nd(n,"limit",50)))}catch(n){return rd(n)}}async function Ch({request:e,params:t}){try{Jo(e,["POST"]),await pd(e);const n=await Yo(e),a={content:Mh(n.content),accountId:Xo(n.accountId,"accountId"),attachments:Eh(n.attachments),collaborationMode:Lh(n.collaborationMode,"collaborationMode"),delivery:Ah(n.delivery),metadata:td(n.metadata,"metadata")};return Vo(await xu(ad(t,"chatId"),a),{status:201})}catch(n){return rd(n)}}function Ah(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Wo(400,"delivery is invalid.")}}function Mh(e){if(null==e)return"";if("string"!=typeof e)throw new Wo(400,"content must be a string.");if(e.length>4e4)throw new Wo(400,"content must be 40000 characters or fewer.");return e.trim()}function Eh(e){if(void 0!==e){if(!Array.isArray(e))throw new Wo(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Wo(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:Th(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Sh(n.mimeType,`attachments[${t}].mimeType`,80),name:Sh(n.name,`attachments[${t}].name`,160),size:Ph(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Sh(n.name,`attachments[${t}].name`,160),path:Th(n.path,`attachments[${t}].path`,4096),size:Ph(n.size,`attachments[${t}].size`)};throw new Wo(400,`attachments[${t}].kind is invalid.`)})}}function Th(e,t,n){if("string"!=typeof e||!e.trim())throw new Wo(400,`${t} is required.`);if(e.length>n)throw new Wo(400,`${t} is too large.`);return e}function Sh(e,t,n){if(null!=e){if("string"!=typeof e)throw new Wo(400,`${t} must be a string.`);if(e.length>n)throw new Wo(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function Ph(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Wo(400,`${t} must be a positive number.`);return e}}function Lh(e,t){return null===e?null:Xo(e,t,{maxLength:80})}async function Dh({request:e,params:t}){try{return Jo(e,["POST"]),await pd(e),Vo(await async function(e){const t=await Wl(e);if("RUNNING"!==t.status)throw new Wo(409,"There is no running task to stop.");const n=await ud.chatRun.findFirst({where:{chatId:e,status:{in:["QUEUED","RUNNING"]}},orderBy:{createdAt:"desc"}});if(!n)throw new Wo(409,"There is no active run to stop.");const a=new Date;await ud.chatRun.update({where:{id:n.id},data:{interruptRequestedAt:a}});const r=Ol.get(n.id);return r&&(r.interruptRequested=!0,r.runtime&&r.turnId&&await Ru(r.runtime,r.turnId,r.externalThreadId??t.externalThreadId)),{chatId:e,runId:n.id,status:n.status,message:r?.turnId?"Stop signal sent to Codex.":"Stop requested. Codex will be interrupted as soon as the turn starts."}}(ad(t,"chatId")))}catch(n){return rd(n)}}async function Rh({request:e,params:t}){try{Jo(e,["POST"]),await pd(e);const n=await Yo(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Wo(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Vo(await wu(ad(t,"chatId"),ad(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return rd(n)}}async function qh({request:e}){try{return Jo(e,["GET"]),await pd(e),Vo(await kl(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return rd(t)}}async function Oh({request:e}){try{Jo(e,["POST"]),await pd(e);const t=await Yo(e),n={parentPath:Xo(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:Xo(t.name,"name",{required:!0,maxLength:255})};return Vo(await Cl(n.parentPath,n.name),{status:201})}catch(t){return rd(t)}}var _h={entry:{module:"/assets/entry.client-BQZeV9JD.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/react-dom-D4MOkHq2.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-xm0qUlcY.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/react-dom-D4MOkHq2.js","/assets/document-title-RYIi5OZD.js","/assets/session-provider-QLGSjKmA.js"],css:["/assets/root-KOlmIkbz.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-BDvoix-O.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/label-BpA-r6tL.js","/assets/session-provider-QLGSjKmA.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-C4u5Bq0m.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-B9UBObFu.js","/assets/label-BpA-r6tL.js","/assets/document-title-RYIi5OZD.js","/assets/session-provider-QLGSjKmA.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-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-CqUa9wVl.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-B9UBObFu.js","/assets/label-BpA-r6tL.js","/assets/document-title-RYIi5OZD.js","/assets/session-provider-QLGSjKmA.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-DdKuH37F.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-Qrq1zFrn.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-B9UBObFu.js","/assets/label-BpA-r6tL.js","/assets/document-title-RYIi5OZD.js","/assets/session-provider-QLGSjKmA.js","/assets/react-dom-D4MOkHq2.js"],css:["/assets/app-shell-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.$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-BksU0sQ7.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-ChGZGvfx.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-DGbCmT_9.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-DZh4HPLO.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-Bp51NHGy.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-DLgNMRyd.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-DZ_6Q7rY.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-BEX87qHo.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-v4G0lNKq.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-BrN7O-wM.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-CiUW8Knm.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-cDawTuvN.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-2DlVPDlX.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-CTlCffOk.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-nVoleT74.js",imports:[],css:[],clientActionModule:void 0,clientLoaderModule:void 0,clientMiddlewareModule:void 0,hydrateFallbackModule:void 0}},url:"/assets/manifest-746c227f.js",version:"746c227f",sri:void 0},$h="build/client",Uh="/",zh={unstable_optimizeDeps:!1,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},jh=!0,Fh=!1,Bh=[],Gh={mode:"lazy",manifestPath:"/__manifest"},Hh="/",Kh={module:bn},Wh={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:oa},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:xa},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:ba},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:jo},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:Bo},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:Ho},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:id},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:Id},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:Cd},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:Md},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:ac},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:oc},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:cc},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:uc},"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:fc},"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:bc},"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:Ic},"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:Cc},"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:Mc},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Xm},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:nh},"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:sh},"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:dh},"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:yn({action:()=>Nh,loader:()=>bh})},"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:yn({action:()=>Ch,loader:()=>kh})},"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:yn({action:()=>Dh})},"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:yn({action:()=>Rh})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:yn({action:()=>Oh,loader:()=>qh})}},Vh=!1;export{Vh as allowedActionOrigins,_h as assets,$h as assetsBuildDirectory,Uh as basename,Kh as entry,zh as future,Fh as isSpaMode,Bh as prerender,Hh as publicPath,Gh as routeDiscovery,Wh as routes,jh as ssr};
|