xedoc-cli 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/build/client/assets/__vite-browser-external-2447137e-Bb2UaVfr.js +0 -0
- package/build/client/assets/app-layout-DVRPLoJp.js +1 -0
- package/build/client/assets/app-shell-DnEsSg3r.js +2 -0
- package/build/client/assets/chat-CAKcWygY.js +1 -0
- package/build/client/assets/connect-BDvoix-O.js +1 -0
- package/build/client/assets/{document-title-B6Yxyaur.js → document-title-RYIi5OZD.js} +1 -1
- package/build/client/assets/{entry.client-BlQXdBHx.js → entry.client-BQZeV9JD.js} +1 -1
- package/build/client/assets/ghostty-web-CgkkAFeT.js +1 -0
- package/build/client/assets/home-BjcHgWsO.js +1 -0
- package/build/client/assets/{jsx-runtime-Dafdqr5g.js → jsx-runtime-Cal6WBdn.js} +1 -1
- package/build/client/assets/label-BpA-r6tL.js +1 -0
- package/build/client/assets/{manifest-f96902fd.js → manifest-40da439f.js} +1 -1
- package/build/client/assets/{react-dom-CMuFyqmq.js → react-dom-D4MOkHq2.js} +1 -1
- package/build/client/assets/root-COrr2Ht-.css +2 -0
- package/build/client/assets/{root-bXu6rtsG.js → root-D-p7jx9T.js} +1 -1
- package/build/client/assets/{session-provider-2Ozr-CuV.js → session-provider-QLGSjKmA.js} +1 -1
- package/build/server/index.js +1 -1
- package/package.json +4 -1
- package/prisma/schema.prisma +4 -0
- package/server/index.mjs +3 -0
- package/server/sqlite-setup.mjs +22 -0
- package/server/terminal-socket.mjs +453 -0
- package/build/client/assets/app-layout--vTe8I2j.js +0 -1
- package/build/client/assets/app-shell-ClOglt7r.js +0 -1
- package/build/client/assets/chat-Bf8hrS42.js +0 -1
- package/build/client/assets/connect-CHSFTXwk.js +0 -1
- package/build/client/assets/home-BLKISIGJ.js +0 -1
- package/build/client/assets/label-C7i5Qt-O.js +0 -1
- package/build/client/assets/root-Cptu-zSj.css +0 -2
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 E,useTheme as M}from"next-themes";import*as T from"react";import{createContext as S,useCallback as P,useContext as D,useEffect as L,useMemo as q,useRef as R,useState as O,useSyncExternalStore as $}from"react";import{Toaster as _,toast as z}from"sonner";import{AlertTriangle as U,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 X,CircleCheckIcon as Y,Clock as Z,Code2 as ee,Cpu as te,Download as ne,ExternalLink as ae,Eye as re,File as ie,FileCode as se,FileDiff as oe,Filter as de,Folder as ce,FolderOpen as le,FolderPlus as ue,Gauge as me,GitBranch as he,GitCommitHorizontal as fe,Home as pe,Image as ge,Info as ve,InfoIcon as we,KeyRound as xe,Laptop as ye,ListChecks as be,Loader2 as Ne,Loader2Icon as Ie,LockKeyhole as ke,LogOut as Ce,Mail as Ae,Menu as Ee,MessageSquare as Me,Moon as Te,MoreHorizontal as Se,OctagonXIcon as Pe,PanelLeftIcon as De,Paperclip as Le,Pencil as qe,PencilLine as Re,PlugZap as Oe,Plus as $e,RefreshCw as _e,RotateCcw as ze,RotateCw as Ue,Search as je,Server as Fe,Settings as Be,Shield as Ge,ShieldCheck as He,Square as Ke,SquarePen as We,Sun as Ve,Terminal as Qe,Trash2 as Je,TriangleAlertIcon as Xe,Upload as Ye,UserRound as Ze,X as et,XIcon as tt,Zap as nt}from"lucide-react";import{Tooltip as at}from"@base-ui/react/tooltip";import{clsx as rt}from"clsx";import{twMerge as it}from"tailwind-merge";import{Button as st}from"@base-ui/react/button";import{cva as ot}from"class-variance-authority";import{Input as dt}from"@base-ui/react/input";import{AlertDialog as ct}from"@base-ui/react/alert-dialog";import{mergeProps as lt}from"@base-ui/react/merge-props";import{useRender as ut}from"@base-ui/react/use-render";import{Dialog as mt}from"@base-ui/react/dialog";import{ScrollArea as ht}from"@base-ui/react/scroll-area";import{Separator as ft}from"@base-ui/react/separator";import{Menu as pt}from"@base-ui/react/menu";import gt from"react-markdown";import vt from"remark-gfm";import wt from"highlight.js/lib/core";import xt from"highlight.js/lib/languages/bash";import yt from"highlight.js/lib/languages/css";import bt from"highlight.js/lib/languages/go";import Nt from"highlight.js/lib/languages/json";import It from"highlight.js/lib/languages/javascript";import kt from"highlight.js/lib/languages/markdown";import Ct from"highlight.js/lib/languages/python";import At from"highlight.js/lib/languages/rust";import Et from"highlight.js/lib/languages/shell";import Mt from"highlight.js/lib/languages/sql";import Tt from"highlight.js/lib/languages/typescript";import St from"highlight.js/lib/languages/xml";import Pt from"highlight.js/lib/languages/yaml";import{Popover as Dt}from"@base-ui/react/popover";import{Switch as Lt}from"@base-ui/react/switch";import{io as qt}from"socket.io-client";import"dotenv/config";import{createHash as Rt,createHmac as Ot,randomBytes as $t,randomUUID as _t,scryptSync as zt,timingSafeEqual as Ut}from"node:crypto";import{Prisma as jt,PrismaClient as Ft}from"@prisma/client";import{chmodSync as Bt,constants as Gt,existsSync as Ht,mkdirSync as Kt,readFileSync as Wt,realpathSync as Vt,statSync as Qt}from"node:fs";import{homedir as Jt}from"node:os";import{basename as Xt,delimiter as Yt,dirname as Zt,extname as en,isAbsolute as tn,join as nn,relative as an,resolve as rn,sep as sn}from"node:path";import{execFile as on,spawn as dn}from"node:child_process";import{access as cn,copyFile as ln,mkdir as un,open as mn,readFile as hn,readdir as fn,realpath as pn,stat as gn}from"node:fs/promises";import{promisify as vn}from"node:util";var wn=Object.defineProperty,xn=(e,t)=>{let n={};for(var a in e)wn(n,a,{get:e[a],enumerable:!0});return t||wn(n,Symbol.toStringTag,{value:"Module"}),n},yn=xn({default:()=>Nn,streamTimeout:()=>bn}),bn=5e3;function Nn(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(),bn+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 In=({...e})=>{const{theme:t="system"}=M();return x(_,{theme:t,className:"toaster group",icons:{success:x(Y,{className:"size-4"}),info:x(we,{className:"size-4"}),warning:x(Xe,{className:"size-4"}),error:x(Pe,{className:"size-4"}),loading:x(Ie,{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 kn(...e){return it(rt(e))}function Cn({delay:e=0,...t}){return x(at.Provider,{"data-slot":"tooltip-provider",delay:e,...t})}function An({...e}){return x(at.Root,{"data-slot":"tooltip",...e})}function En({...e}){return x(at.Trigger,{"data-slot":"tooltip-trigger",...e})}function Mn({className:e,side:t="top",sideOffset:n=4,align:a="center",alignOffset:r=0,children:i,...s}){return x(at.Portal,{children:x(at.Positioner,{align:a,alignOffset:r,side:t,sideOffset:n,className:"isolate z-50",children:y(at.Popup,{"data-slot":"tooltip-content",className:kn("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(at.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 Tn="xedoc";function Sn(e){const t=function(e){const t=e?.replace(/\s+/g," ").trim();return t?`${t} - ${Tn}`:Tn}(e);L(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Tn}},[t])}var Pn=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 Ln(e){return Bn(e.serverUrl,"/api/auth/session",{token:e.token})}async function qn(e,t,n){return Bn(e.serverUrl,`/api/accounts/${t}/runtime-settings`,{body:n,method:"PATCH",token:e.token})}async function Rn(e,t){return Bn(e.serverUrl,`/api/accounts/${t}/authenticate`,{body:{},token:e.token})}async function On(e,t){return Bn(e.serverUrl,`/api/accounts/${t}/models`,{token:e.token})}async function $n(e,t){return Bn(e.serverUrl,`/api/accounts/${t}/rate-limits`,{token:e.token})}async function _n(e,t){const n=t?`?path=${encodeURIComponent(t)}`:"";return Bn(e.serverUrl,`/api/workspaces/directories${n}`,{token:e.token})}async function zn(e,t){return Bn(e.serverUrl,`/api/chats/${t}`,{token:e.token})}async function Un(e,t,n){return Bn(e.serverUrl,`/api/chats/${t}`,{body:n,method:"PATCH",token:e.token})}async function jn(e,t,n=0){return Bn(e.serverUrl,`/api/chats/${t}/messages?afterSequence=${n}&limit=200`,{token:e.token})}async function Fn(e,t,n){return Bn(e.serverUrl,`/api/chats/${t}/messages`,{body:n,token:e.token})}async function Bn(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,Gn(e)].filter(Boolean).join("\n"),{cause:d})}}(s,a);if(!i.ok)throw new Pn([`HTTP ${i.status} ${i.statusText||"Request failed"}`,`${r} ${a}`,Hn(o)??Gn(s)].filter(Boolean).join("\n"),i.status,a);return o}function Gn(e){const t=e.trim();if(t)return t.length>500?`${t.slice(0,500)}...`:t}function Hn(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 Kn(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 Wn={serverUrl:"xedoc.web.server-url",token:"xedoc.web.token"};function Vn(){const e=Qn();e&&(Yn(e,"serverUrl"),Yn(e,"token"))}function Qn(){return"undefined"==typeof window?null:window.localStorage}function Jn(e,t){return e.getItem(Wn[t])}function Xn(e,t,n){e.setItem(Wn[t],n)}function Yn(e,t){e.removeItem(Wn[t])}function Zn(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 ea=S(void 0);function ta({children:e}){const[t,n]=O(null),[a,r]=O(!1),i=$(aa,ra,ia),s=t,o=!i||!a;L(()=>{if(!i)return;const e=function(){const e=Qn();if(!e)return null;const t=Jn(e,"serverUrl"),n=Jn(e,"token");return t&&n?{serverUrl:t,token:n}:null}();if(!e)return n(null),void r(!0);let t=!0;return r(!1),Ln(e).then(()=>{t&&(n(e),r(!0))}).catch(()=>{Vn(),t&&(n(null),r(!0))}),()=>{t=!1}},[i]);const d=P(async e=>{const t=Zn(window.location.origin),{token:a}=await async function(e,t){return Bn(e,"/api/auth/exchange",{body:{password:t},token:null})}(t,e),i={serverUrl:t,token:a};!function(e){const t=Qn();t&&(Xn(t,"serverUrl",e.serverUrl),Xn(t,"token",e.token))}(i),n(i),r(!0)},[]),c=P(async()=>{s&&await Ln(s)},[s]),l=P(()=>{Vn(),n(null),r(!0)},[]),u=q(()=>({clearSession:l,loading:o,refreshSession:c,session:s,setup:d}),[l,o,c,s,d]);return x(ea.Provider,{value:u,children:e})}function na(){const e=D(ea);if(!e)throw new Error("useSession must be used inside SessionProvider.");return e}function aa(){return()=>{}}function ra(){return!0}function ia(){return!1}var sa=xn({ErrorBoundary:()=>ua,Layout:()=>ca,default:()=>la,links:()=>da,meta:()=>oa});function oa(){return[{title:Tn}]}function da(){return[{rel:"icon",href:"/favicon.svg",type:"image/svg+xml"}]}function ca({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 la=c(function(){const[e]=O(()=>new b({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1}}}));return x(E,{attribute:"class",defaultTheme:"system",enableSystem:!0,children:x(N,{client:e,children:y(Cn,{children:[x(ta,{children:x(i,{})}),x(In,{richColors:!0})]})})})}),ua=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})]})})}),ma=ot("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 ha({className:e,variant:t="default",size:n="default",...a}){return x(st,{"data-slot":"button",className:kn(ma({variant:t,size:n,className:e})),...a})}function fa({className:e,type:t,...n}){return x(dt,{type:t,"data-slot":"input",className:kn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...n})}function pa({className:e,...t}){return x("label",{"data-slot":"label",className:kn("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 ga(){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}=na(),p=h(),g=!1===i;if(L(()=>{let e=!0;return d(null),async function(e){return Bn(e,"/api/auth/status",{token:null})}(Zn(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(Ne,{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(Ne,{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?xe:Oe,{className:"size-5"})}),y("div",{children:[x("h1",{className:"text-lg font-semibold tracking-normal",children:g?"Set Server Password":"Connect Server"}),x("p",{className:"text-sm text-muted-foreground",children:g?"Choose a password for this xedoc instance.":"Enter the server password for this xedoc instance."})]})]}),y("div",{className:"grid gap-4",children:[y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:"server-password",children:"Server password"}),x(fa,{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&&va(e,n,g)&&v()}})]}),g?y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:"server-password-confirm",children:"Confirm password"}),x(fa,{id:"server-password-confirm",autoComplete:"new-password",placeholder:"Password",type:"password",value:n,onChange:e=>a(e.target.value),onKeyDown:t=>{"Enter"===t.key&&va(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(ha,{disabled:!va(e,n,g)||c,onClick:()=>{v()},children:[c?x(Ne,{className:"animate-spin"}):x(g?xe:Oe,{}),g?"Set Password":"Connect"]})]})]})})}function va(e,t,n){return e.trim().length>0&&(!n||t.trim().length>0)}var wa=xn({default:()=>xa}),xa=c(function(){return x(ga,{})}),ya=xn({loader:()=>ba});function ba(){return m("/favicon.svg",301)}function Na({...e}){return x(ct.Root,{"data-slot":"alert-dialog",...e})}function Ia({...e}){return x(ct.Portal,{"data-slot":"alert-dialog-portal",...e})}function ka({className:e,...t}){return x(ct.Backdrop,{"data-slot":"alert-dialog-overlay",className:kn("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 Ca({className:e,size:t="default",...n}){return y(Ia,{children:[x(ka,{}),x(ct.Popup,{"data-slot":"alert-dialog-content","data-size":t,className:kn("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 Aa({className:e,...t}){return x("div",{"data-slot":"alert-dialog-header",className:kn("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:kn("-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 Ma({className:e,...t}){return x(ct.Title,{"data-slot":"alert-dialog-title",className:kn("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 Ta({className:e,...t}){return x(ct.Description,{"data-slot":"alert-dialog-description",className:kn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function Sa({className:e,...t}){return x(ha,{"data-slot":"alert-dialog-action",className:kn(e),...t})}function Pa({className:e,variant:t="outline",size:n="default",...a}){return x(ct.Close,{"data-slot":"alert-dialog-cancel",className:kn(e),render:x(ha,{variant:t,size:n}),...a})}function Da({className:e,...t}){return x("textarea",{"data-slot":"textarea",className:kn("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 La=ot("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 ut({defaultTagName:"span",props:lt({className:kn(La({variant:t}),e)},a),render:n,state:{slot:"badge",variant:t}})}function Ra({className:e,status:t}){return x(qa,{className:e,variant:Oa(t),children:t.toLowerCase()})}function Oa(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 _a({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=R(null),f=R(null),p=R(null),g=A();L(()=>{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 Bn(e.serverUrl,"/api/accounts",{body:t,token:e.token})}(n,{...Ua(a),displayName:a.displayName.trim()});return e.authenticate?{account:t,auth:await Rn(n,t.id),popup:e.popup}:{account:t,auth:null,popup:e.popup}},onError:(e,t)=>{t?.popup?.close(),z.error(Ba(e))},onSuccess:({auth:e,popup:t})=>{r($a),z.success("Account created."),v(),e&&S(e,t)}}),N=I({mutationFn:()=>{if(!i)throw new Error("Select an account to edit.");return async function(e,t,n){return Bn(e.serverUrl,`/api/accounts/${t}`,{body:n,method:"PATCH",token:e.token})}(n,i.id,{...Ua(o),displayName:o.displayName.trim()})},onError:e=>z.error(Ba(e)),onSuccess:()=>{s(null),d($a),z.success("Account updated."),v()}}),k=I({mutationFn:({accountId:e})=>Rn(n,e),onError:(e,t)=>{t?.popup?.close(),z.error(Ba(e))},onSuccess:(e,t)=>{v(),S(e,t.popup)}}),C=I({mutationFn:({accountId:e,redirectUrl:t})=>async function(e,t,n){return Bn(e.serverUrl,`/api/accounts/${t}/authenticate/callback`,{body:n,token:e.token})}(n,e,{redirectUrl:t.trim()}),onError:e=>z.error(Ba(e)),onSuccess:(e,t)=>{l(e=>({...e,[t.accountId]:""})),v(),"CONNECTED"!==e.status?z.info(e.message??"Callback accepted."):z.success("Account connected.")}}),E=I({mutationFn:e=>async function(e,t){return Bn(e.serverUrl,`/api/accounts/${t}`,{method:"DELETE",token:e.token})}(n,e),onError:e=>z.error(Ba(e)),onSuccess:()=>{m(null),z.success("Account deleted."),v(),g.invalidateQueries({queryKey:["chats"]})}}),M=I({mutationFn:()=>async function(e){return Bn(e.serverUrl,"/api/accounts/export",{token:e.token})}(n),onError:e=>z.error(Ba(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),z.success(`Exported ${e.accounts.length} ${Fa(e.accounts.length)}.`)}}),T=I({mutationFn:e=>async function(e,t){return Bn(e.serverUrl,"/api/accounts/import",{body:t,token:e.token})}(n,{accounts:e.accounts}),onError:(e,t)=>{t?.popup?.close(),z.error(Ba(e))},onSuccess:(e,t)=>{z.success(`Imported ${e.imported} ${Fa(e.imported)}.`),v(),g.invalidateQueries({queryKey:["chats"]}),function(e,t){const n=e.find(e=>e.authUrl);if(n){S(n,t);const a=e.filter(e=>e.authUrl&&e!==n).length;return void(a&&z.info(`${a} more ${Fa(a)} need authentication.`))}t?.close();const a=e.filter(e=>"CONNECTED"===e.status).length;a&&z.success(`Connected ${a} imported ${Fa(a)}.`)}(e.authentications,t.popup)}});function S(e,t){if(e.authUrl)return Ha(e.authUrl,t),void z.info("Authentication page opened.");t?.close(),"AUTHENTICATING"!==e.status?z.success(e.message??"Account is connected."):z.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," ",Fa(e.length)]})]}),e.length?e.map(e=>{const t=c[e.id]??"",n="AUTHENTICATING"===e.status||!!e.lastAuthUrl,a=k.isPending&&k.variables?.accountId===e.id,r=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(ha,{size:"sm",variant:"ghost",onClick:()=>{s(null),d($a)},children:[x(et,{}),"Cancel"]})]}),x(za,{form:o,onChange:d,prefix:`edit-account-${e.id}`}),y(ha,{className:"w-fit",disabled:!o.displayName.trim()||N.isPending,onClick:()=>N.mutate(),children:[N.isPending?x(Ne,{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(Ra,{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(ha,{disabled:a,size:"sm",variant:"CONNECTED"===e.status?"secondary":"default",onClick:()=>{return t=e.id,void k.mutate({accountId:t,popup:Ga()});var t},children:[a?x(Ne,{className:"animate-spin"}):"AUTHENTICATING"===e.status?x(Ue,{}):x(ae,{}),"AUTHENTICATING"===e.status?"Check":"CONNECTED"===e.status?"Re-authenticate":"Authenticate"]}),y(ha,{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(ha,{size:"sm",variant:"destructive",onClick:()=>m(e),children:[x(Je,{}),"Delete"]})]})]}),n?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:"Authentication"}),x("p",{className:"text-xs text-muted-foreground",children:"Open the auth URL, finish login, then paste the localhost callback response URL."})]}),e.lastAuthUrl?y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:`auth-url-${e.id}`,children:"Auth URL"}),y("div",{className:"grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]",children:[x(fa,{className:"font-mono text-xs",id:`auth-url-${e.id}`,readOnly:!0,value:e.lastAuthUrl}),y(ha,{size:"sm",variant:"outline",onClick:()=>Ha(e.lastAuthUrl??null),children:[x(ae,{}),"Open"]})]})]}):null,y("div",{className:"grid gap-2",children:[x(pa,{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(ha,{disabled:!t.trim()||r,onClick:()=>C.mutate({accountId:e.id,redirectUrl:t}),children:[r?x(Ne,{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(ha,{disabled:!a.displayName.trim()||b.isPending,onClick:function(){b.mutate({authenticate:!0,popup:Ga()})},children:[b.isPending?x(Ne,{className:"animate-spin"}):x(ae,{}),"Create & Authenticate"]}),y(ha,{disabled:!a.displayName.trim()||b.isPending,variant:"secondary",onClick:()=>b.mutate({}),children:[b.isPending?x(Ne,{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=Ga();try{const e=JSON.parse(await t.text());T.mutate({accounts:ja(e),popup:n})}catch(a){n?.close(),z.error(Ba(a))}}}),y(ha,{disabled:T.isPending,variant:"secondary",onClick:()=>h.current?.click(),children:[T.isPending?x(Ne,{className:"animate-spin"}):x(Ye,{}),"Import JSON"]}),y(ha,{disabled:M.isPending,variant:"outline",onClick:()=>M.mutate(),children:[M.isPending?x(Ne,{className:"animate-spin"}):x(ne,{}),"Export JSON"]})]})]})]}),x(Na,{open:!!u,onOpenChange:e=>{e||m(null)},children:y(Ca,{children:[y(Aa,{children:[x(Ma,{children:"Delete account?"}),y(Ta,{children:["This removes ",u?.displayName??"the account"," from xedoc. Chats that reference it may no longer run."]})]}),y(Ea,{children:[x(Pa,{children:"Cancel"}),y(Sa,{disabled:E.isPending,variant:"destructive",onClick:()=>{u&&E.mutate(u.id)},children:[E.isPending?x(Ne,{className:"animate-spin"}):x(Je,{}),"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(pa,{htmlFor:`${a}-name`,children:"Display name"}),x(fa,{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(pa,{htmlFor:`${a}-command`,children:"Command"}),x(fa,{id:`${a}-command`,placeholder:"codex",value:t.command,onChange:e=>n({...t,command:e.target.value})})]}),y("div",{className:"grid gap-2",children:[x(pa,{htmlFor:`${a}-args`,children:"Arguments"}),x(fa,{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(pa,{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 Ua(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 ja(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 Fa(e){return 1===e?"account":"accounts"}function Ba(e){return e instanceof Error?e.message:"Request failed."}function Ga(){const e=window.open("about:blank","_blank");return e&&(e.opener=null),e}function Ha(e,t){e?!t||t.closed?window.open(e,"_blank","noopener,noreferrer"):t.location.href=e:t?.close()}function Ka({...e}){return x(mt.Root,{"data-slot":"dialog",...e})}function Wa({...e}){return x(mt.Trigger,{"data-slot":"dialog-trigger",...e})}function Va({...e}){return x(mt.Portal,{"data-slot":"dialog-portal",...e})}function Qa({className:e,...t}){return x(mt.Backdrop,{"data-slot":"dialog-overlay",className:kn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function Ja({className:e,children:t,showCloseButton:n=!0,...a}){return y(Va,{children:[x(Qa,{}),y(mt.Popup,{"data-slot":"dialog-content",className:kn("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(mt.Close,{"data-slot":"dialog-close",render:x(ha,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[x(tt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Xa({className:e,...t}){return x("div",{"data-slot":"dialog-header",className:kn("flex flex-col gap-2",e),...t})}function Ya({className:e,showCloseButton:t=!1,children:n,...a}){return y("div",{"data-slot":"dialog-footer",className:kn("-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(mt.Close,{render:x(ha,{variant:"outline"}),children:"Close"})]})}function Za({className:e,...t}){return x(mt.Title,{"data-slot":"dialog-title",className:kn("font-heading text-base leading-none font-medium",e),...t})}function er({className:e,...t}){return x(mt.Description,{"data-slot":"dialog-description",className:kn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function tr({className:e,children:t,viewportProps:n,viewportRef:a,...r}){return y(ht.Root,{"data-slot":"scroll-area",className:kn("relative",e),...r,children:[x(ht.Viewport,{...n,ref:a,"data-slot":"scroll-area-viewport",className:kn("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(nr,{}),x(ht.Corner,{})]})}function nr({className:e,orientation:t="vertical",...n}){return x(ht.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":t,orientation:t,className:kn("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(ht.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function ar({className:e,orientation:t="horizontal",...n}){return x(ft,{"data-slot":"separator",orientation:t,className:kn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",e),...n})}function rr({accounts:e,activeTab:t,clearSession:n,createFocusKey:a,onOpenChange:r,onTabChange:i,open:s,refreshSession:o,session:d}){return x(Ka,{open:s,onOpenChange:r,children:y(Ja,{className:"max-h-[92vh] max-w-5xl gap-0 overflow-hidden p-0",children:[y(Xa,{className:"px-5 py-4",children:[x(Za,{children:"Settings"}),x(er,{children:"Manage the active server connection, accounts, and project details."})]}),x(ar,{}),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(ir,{active:"server"===t,icon:x(Fe,{}),label:"Server",onClick:()=>i("server")}),x(ir,{active:"accounts"===t,icon:x(Ze,{}),label:"Accounts",onClick:()=>i("accounts")}),x(ir,{active:"info"===t,icon:x(ve,{}),label:"Info",onClick:()=>i("info")})]}),x(tr,{className:"h-[74vh]",children:y("div",{className:"p-5",children:["server"===t?x(sr,{clearSession:n,refreshSession:o,session:d}):null,"accounts"===t?x(_a,{accounts:e,createFocusKey:a,session:d}):null,"info"===t?x(or,{}):null]})})]})]})})}function ir({active:e,icon:t,label:n,onClick:a}){return y(ha,{"aria-pressed":e,className:kn("justify-start",e&&"bg-muted text-foreground hover:bg-muted"),variant:"ghost",onClick:a,children:[t,n]})}function sr({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(Fe,{}),"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(Ra,{status:i?"ONLINE":"OFFLINE"})]}),x(ar,{}),y("div",{className:"flex flex-wrap justify-end gap-2",children:[y(ha,{disabled:a,variant:"outline",onClick:()=>{!async function(){r(!0);try{await t(),s(!0),z.success("Server session is healthy.")}catch(e){s(!1),z.error(e instanceof Error?e.message:"Connection check failed.")}finally{r(!1)}}()},children:[a?x(_e,{className:"animate-spin"}):x(W,{}),"Test Connection"]}),y(ha,{variant:"destructive",onClick:e,children:[x(Ce,{}),"Clear Session"]})]})]})}function or(){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(ve,{}),"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(ae,{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(Ae,{className:"size-4"}),"Email: monokaijs@gmail.com"]})]})]})}function dr({...e}){return x(pt.Root,{"data-slot":"dropdown-menu",...e})}function cr({...e}){return x(pt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function lr({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:a=4,className:r,...i}){return x(pt.Portal,{children:x(pt.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:a,children:x(pt.Popup,{"data-slot":"dropdown-menu-content",className:kn("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 ur({className:e,inset:t,variant:n="default",...a}){return x(pt.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:kn("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 mr({...e}){return x(pt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function hr({className:e,inset:t,children:n,...a}){return y(pt.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:kn("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(X,{className:"ml-auto"})]})}function fr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(lr,{"data-slot":"dropdown-menu-sub-content",className:kn("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 pr({...e}){return x(pt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function gr({className:e,children:t,inset:n,...a}){return y(pt.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:kn("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(pt.RadioItemIndicator,{children:x(V,{})})}),t]})}function vr(){const{setTheme:e,theme:t}=M(),n=t??"system";return y(dr,{children:[y(cr,{render:x(ha,{size:"icon",variant:"outline"}),children:[x(Ve,{className:"size-4 dark:hidden"}),x(Te,{className:"hidden size-4 dark:block"}),x("span",{className:"sr-only",children:"Theme"})]}),y(lr,{align:"end",className:"w-40",children:[y(ur,{onClick:()=>e("light"),children:[x(Ve,{}),"Light","light"===n?x(K,{className:"ml-auto"}):null]}),y(ur,{onClick:()=>e("dark"),children:[x(Te,{}),"Dark","dark"===n?x(K,{className:"ml-auto"}):null]}),y(ur,{onClick:()=>e("system"),children:[x(ye,{}),"System","system"===n?x(K,{className:"ml-auto"}):null]})]})]})}wt.registerLanguage("bash",xt),wt.registerLanguage("css",yt),wt.registerLanguage("go",bt),wt.registerLanguage("html",St),wt.registerLanguage("javascript",It),wt.registerLanguage("json",Nt),wt.registerLanguage("markdown",kt),wt.registerLanguage("python",Ct),wt.registerLanguage("rust",At),wt.registerLanguage("sh",Et),wt.registerLanguage("sql",Mt),wt.registerLanguage("tsx",Tt),wt.registerLanguage("typescript",Tt),wt.registerLanguage("xml",St),wt.registerLanguage("yaml",Pt);var wr=S(null);function xr({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=q(()=>new Set(t??[]),[t]),h=q(()=>function(e){const t=Ii([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=_i(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=q(()=>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=Ei(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=q(()=>function(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if("COMPLETED"===n.status&&Fr(n))return n.id}return null}(h),[h]),[g,v]=O(null);return y(wr.Provider,{value:v,children:[f.map(t=>x(br,{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(Pr,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function yr({chatId:e,messages:t,session:n}){const a=q(()=>Si(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(Cr,{chatId:e,compact:!0,message:a.pendingRequest,session:n})})}):null}function br({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(kr,{message:t.message}):x(Nr,{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 Nr({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=q(()=>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(Li(r.message)){const e=n.at(-1);if(!e||qi(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&&Ri(e)!==Ri(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)Di(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:Mi(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:Ti(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(Ra,{status:h}):null]}),x("div",{className:"grid min-w-0 gap-2",children:m.map(r=>x(Ir,{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 Ir({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(Gr,{messages:a.messages}):"previousActions"===a.type?x(Hr,{messages:a.messages}):"fileChanges"===a.type?x(Wr,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(Cr,{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 kr({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(Ze,{className:"size-3.5 opacity-70"}),x("span",{className:"text-xs font-medium opacity-70",children:"You"})]}),x(Er,{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(se,{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 Cr({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($r,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(Rr,{}):null;case"THINKING":return x(Or,{message:i});case"PLAN":return x(_r,{metadata:_i(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(Br,{metadata:_i(i.metadata)});case"FILE_CHANGE":return x(Wr,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(li,{chatId:e,compact:t,message:i,metadata:_i(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(ui,{chatId:e,compact:t,message:i,metadata:_i(i.metadata),session:m});case"ERROR":return x(xi,{metadata:_i(i.metadata),text:i.content});default:return x(yi,{text:i.content})}}function Ar({text:e}){const t=D(wr);return x("div",{className:"min-w-0 max-w-full overflow-hidden break-words px-1 text-sm leading-6",children:x(gt,{remarkPlugins:[vt],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:kn("inline min-w-0 break-words text-left underline underline-offset-2",n),type:"button",onClick:()=>t(i),children:e}):x("a",{className:kn("underline underline-offset-2",n),href:a,rel:"noreferrer",target:"_blank",...r,children:e})},blockquote:({className:e,...t})=>x("blockquote",{className:kn("my-3 border-l-2 border-border pl-3 text-muted-foreground",e),...t}),code:({className:e,children:t,...n})=>x("code",{className:kn("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:kn("text-muted-foreground line-through",e),...t}),em:({className:e,...t})=>x("em",{className:kn("italic",e),...t}),h1:({className:e,...t})=>x("h1",{className:kn("mb-2 mt-4 text-xl font-semibold tracking-normal",e),...t}),h2:({className:e,...t})=>x("h2",{className:kn("mb-2 mt-4 text-lg font-semibold tracking-normal",e),...t}),h3:({className:e,...t})=>x("h3",{className:kn("mb-2 mt-3 text-base font-semibold tracking-normal",e),...t}),h4:({className:e,...t})=>x("h4",{className:kn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h5:({className:e,...t})=>x("h5",{className:kn("mb-1.5 mt-3 text-sm font-semibold tracking-normal",e),...t}),h6:({className:e,...t})=>x("h6",{className:kn("mb-1 mt-3 text-xs font-semibold uppercase tracking-normal text-muted-foreground",e),...t}),hr:({className:e,...t})=>x("hr",{className:kn("my-4 border-border",e),...t}),img:({className:e,...t})=>x("img",{className:kn("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:kn("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:kn("pl-1 [&>p]:my-0",e),...t}),ol:({className:e,...t})=>x("ol",{className:kn("my-2 ml-5 list-decimal space-y-1 marker:text-muted-foreground",e),...t}),p:({className:e,...t})=>x("p",{className:kn("my-2 first:mt-0 last:mb-0",e),...t}),pre:({className:e,...t})=>x("pre",{className:kn("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:kn("font-semibold",e),...t}),table:({className:e,...t})=>x("div",{className:"my-3 max-w-full overflow-x-auto",children:x("table",{className:kn("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:kn("my-2 ml-5 list-disc space-y-1 marker:text-muted-foreground",e),...t})},children:Mr(e)})})}function Er({text:e}){return x("div",{className:"grid min-w-0 gap-2",children:Tr(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 Mr(e){return Tr(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function Tr(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=Sr(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 Sr(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 Pr({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)),Bn(e.serverUrl,`/api/chats/${t}/files?${r.toString()}`,{token:e.token})}(n,e,a.path,a.line??null),retry:!1});return x(Ka,{open:!!a,onOpenChange:e=>!e&&t(),children:y(Ja,{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(Za,{className:"flex min-w-0 items-center gap-2",children:[x(se,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:r.data?.relativePath??a?.path??"File"})]}),x(er,{className:"truncate",children:Lr(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(Ne,{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(Dr,{file:r.data}):null})]})})}function Dr({file:e}){const t=R({}),n=q(()=>(e.content??"").split(/\r?\n/),[e.content]);return L(()=>{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(tr,{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:kn("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&&wt.getLanguage(s)?wt.highlight(i,{language:s}).value:wt.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 Lr(e){return e?[qr(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function qr(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function Rr(){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 Or({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 $r({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Fr(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(Ar,{text:o}):null,s?x(zr,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function _r({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Fr(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(be,{className:"size-4"}),l?"Proposed plan":"Plan"]}),c?x(Ar,{text:c}):n?.explanation?x("div",{className:"mb-3 text-muted-foreground",children:n.explanation}):x(yi,{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(Ur,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function zr({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(be,{className:"size-4"}),"Proposed plan"]}),x(Ar,{text:i}),s?x(Ur,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Ur({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(ha,{disabled:l||!n,size:"sm",type:"button",onClick:()=>n?.({message:t,planBody:i}),children:[r?x(Ne,{className:"animate-spin"}):x(B,{}),"Implement plan"]}),y(Ka,{open:d,onOpenChange:c,children:[y(Wa,{render:x(ha,{disabled:l||!a,size:"sm",type:"button",variant:"outline"}),children:[x(Re,{}),"Tell Codex what to change"]}),y(Ja,{children:[y(Xa,{children:[x(Za,{children:"Tell Codex What To Change"}),x(er,{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(ha,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),y(ha,{disabled:!u,type:"button",onClick:()=>{const e=s.trim();e&&(a?.({feedback:e,message:t,planBody:i}),o(""),c(!1))},children:[r?x(Ne,{className:"animate-spin"}):x(Re,{}),"Send changes"]})]})]})]})]})]})}var jr=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Fr(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=jr.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(jr,"").trim()}:"PLAN"!==e.kind||"result"!==_i(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function Br({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(Qe,{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:ci(e),children:di(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 Gr({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,Ni),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=Ti(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(Qe,{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(Kr,{message:e},e.id)),i>0?y(ha,{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 Hr({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(Qe,{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(Kr,{message:e},e.id))})]})}function Kr({message:e}){const t=_i(e.metadata),n=_i(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(_i(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===_i(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:[Oi(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 Wr({disabled:e,messages:t,onReview:n,onUndo:a,pending:r}){const i=q(()=>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=_i(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of Vr(e)){const e=n.get(t.path);e?n.set(t.path,{action:si(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:oi(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:oi(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=D(wr),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(oe,{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?`${Xr(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(ei,{additions:i.additions,deletions:i.deletions})]})]}),x("div",{}),y("div",{className:"flex shrink-0 items-center gap-1",children:[y(ha,{disabled:!o||!a,size:"sm",type:"button",variant:"ghost",onClick:()=>a?.({message:i.message,prompt:Zr(i)}),children:[r?x(Ne,{className:"animate-spin"}):x(ze,{}),"Undo"]}),y(ha,{disabled:!o||!n,size:"sm",type:"button",variant:"outline",onClick:()=>n?.({message:i.message,prompt:Yr(i)}),children:[r?x(Ne,{className:"animate-spin"}):x(re,{}),"Review"]})]})]}),x("div",{className:"grid min-w-0 divide-y border-t",children:i.entries.length?i.entries.map(e=>y(Ka,{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(ei,{additions:e.additions,deletions:e.deletions}),y(Wa,{render:x(ha,{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(Ja,{className:"max-w-5xl",children:[y(Xa,{children:[x(Za,{children:e.path}),y(er,{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 Vr(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=Jr(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=Jr(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:Qr(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=ti(n.path,n.filePath,n.file,n.name);return a?(e.push({action:ai(ti(n.action,n.kind,n.type)??"Edited"),additions:ni(n.additions),deletions:ni(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>ri(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=>ri(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 Qr(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 Jr(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function Xr(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function Yr(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 Zr(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 ei({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 ti(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function ni(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 ai(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function ri(e,t){return ii(e)===ii(t)}function ii(e){return Jr(e).replace(/\\/g,"/").replace(/^\.\//,"")}function si(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 oi(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function di(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function ci(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function li({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const i="resolved"===a?.status||"COMPLETED"===n.status,s=bi(e,n,r),o=e=>s.mutate(e);return i||"expired"===a?.status?x(mi,{icon:x(ke,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:hi(a)}):y("div",{className:kn("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:kn("flex items-center gap-2 font-medium",t?"mb-1.5":"mb-2"),children:[x(ke,{className:"size-4"}),"permissions"===a?.requestKind?"Permission request":"Approval required"]}),a?.reason?x("div",{className:kn("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:kn("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(ha,{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(Ne,{className:"animate-spin"}):x(K,{}),"Accept"]}),x(ha,{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(ha,{disabled:s.isPending,size:"sm",variant:"outline",onClick:()=>o("permissions"===a?.requestKind?{kind:"permissions",result:{permissions:!1}}:{decision:"decline",kind:"approval"}),children:"Decline"})]})})]})}function ui({chatId:e,compact:t=!1,message:n,metadata:a,session:r}){const[i,s]=O({}),[o,d]=O(0),c=bi(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&&wi(h,i[h.id]).length>0,p=l.every(e=>wi(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(mi,{icon:x(K,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:fi(a)});return y("div",{className:kn("min-w-0 max-w-full overflow-hidden rounded-md border bg-background text-sm",t?"p-2":"p-3"),children:[y("div",{className:kn("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(ha,{"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(ha,{"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(gi,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??pi,onChange:e=>s(t=>({...t,[h.id]:e})),onAutoAdvance:g?void 0:v}):null,g?x("div",{className:kn("flex justify-end",t?"mt-2":"mt-4"),children:y(ha,{disabled:u||c.isPending||!p,size:"sm",onClick:()=>{p?c.mutate({kind:"userInput",result:vi(l,i)}):z.error("Answer every question before submitting.")},children:[c.isPending?x(Ne,{className:"animate-spin"}):x(K,{}),"Submit"]})}):null]})}function mi({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 hi(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 fi(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 pi={other:"",values:[]};function gi({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:kn("text-sm",e?"leading-4":"leading-5"),children:r.question}):null]}),s.length?x("div",{className:kn("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(ha,{"aria-pressed":r,className:kn("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:kn("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:kn("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(fa,{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 vi(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:wi(e,t[e.id])}]))}}function wi(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function xi({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(U,{className:"size-4"}),"Error"]}),x("div",{className:"min-w-0 whitespace-pre-wrap break-words",children:e?.message??t})]})}function yi({text:e}){return x("div",{className:"min-w-0 whitespace-pre-wrap break-words text-sm text-muted-foreground",children:e})}function bi(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 Bn(e.serverUrl,`/api/chats/${t}/server-requests/${encodeURIComponent(n)}/respond`,{body:a,token:e.token})}(n,e,t.requestId,a)},onError:e=>z.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:t=>{a.setQueryData(["messages",e],e=>Kn(e,t))}})}var Ni=5;function Ii(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=ki(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=Ci(n[t],r):(a.set(e,n.length),n.push(r))}return n}function ki(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 Ci(e,t){return"PLAN"===e.kind?t.content.length>e.content.length?t:Ai(t.status)>Ai(e.status)?{...e,status:t.status}:e:Ai(t.status)>Ai(e.status)||t.sequence>=e.sequence?t:e}function Ai(e){switch(e){case"FAILED":return 4;case"COMPLETED":return 3;case"STREAMING":return 2;default:return 1}}function Ei(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function Mi(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 Ti(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 Si(e){return{pendingRequest:Ii(e).sort((e,t)=>t.sequence-e.sequence).find(Pi)}}function Pi(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=_i(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Di(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Pi(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 Li(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function qi(e,t){return Ri(e)===Ri(t)}function Ri(e){return e.runId??e.turnId??e.chatId}function Oi(e){return"COMMAND_EXECUTION"===e.kind?x(Qe,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"APPROVAL"===e.kind||"USER_INPUT_PROMPT"===e.kind?x(ke,{className:"mt-0.5 size-3.5 text-muted-foreground"}):"THINKING"===e.kind?x($i,{}):x(ee,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function $i(){return x(be,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function _i(e){return e&&"object"==typeof e?e:void 0}function zi({...e}){return x(Dt.Root,{"data-slot":"popover",...e})}function Ui({...e}){return x(Dt.Trigger,{"data-slot":"popover-trigger",...e})}function ji({className:e,align:t="center",alignOffset:n=0,side:a="bottom",sideOffset:r=4,...i}){return x(Dt.Portal,{children:x(Dt.Positioner,{align:t,alignOffset:n,side:a,sideOffset:r,className:"isolate z-50",children:x(Dt.Popup,{"data-slot":"popover-content",className:kn("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 Fi({className:e,...t}){return x("div",{"data-slot":"popover-header",className:kn("flex flex-col gap-0.5 text-sm",e),...t})}function Bi({className:e,...t}){return x(Dt.Title,{"data-slot":"popover-title",className:kn("font-medium",e),...t})}function Gi({className:e,...t}){return x(Dt.Description,{"data-slot":"popover-description",className:kn("text-muted-foreground",e),...t})}function Hi({...e}){return x(mt.Root,{"data-slot":"sheet",...e})}function Ki({...e}){return x(mt.Portal,{"data-slot":"sheet-portal",...e})}function Wi({className:e,...t}){return x(mt.Backdrop,{"data-slot":"sheet-overlay",className:kn("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 Vi({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(Ki,{children:[x(Wi,{}),y(mt.Popup,{"data-slot":"sheet-content","data-side":n,className:kn("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(mt.Close,{"data-slot":"sheet-close",render:x(ha,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[x(tt,{}),x("span",{className:"sr-only",children:"Close"})]})]})]})}function Qi({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:kn("flex flex-col gap-0.5 p-4",e),...t})}function Ji({className:e,...t}){return x(mt.Title,{"data-slot":"sheet-title",className:kn("font-heading text-base font-medium text-foreground",e),...t})}function Xi({className:e,...t}){return x(mt.Description,{"data-slot":"sheet-description",className:kn("text-sm text-muted-foreground",e),...t})}var Yi=T.createContext(null);function Zi(){const e=T.useContext(Yi);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function es({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(Yi.Provider,{value:g,children:x("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...r},className:kn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",a),...s,children:i})})}function ts({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}=Zi();return"none"===n?x("div",{"data-slot":"sidebar",className:kn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",a),...s,children:r}):o?x(Hi,{open:c,onOpenChange:l,...s,children:y(Vi,{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(Qi,{className:"sr-only",children:[x(Ji,{children:"Sidebar"}),x(Xi,{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:kn("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:kn("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 ns({className:e,onClick:t,...n}){const{toggleSidebar:a}=Zi();return y(ha,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:kn(e),onClick:e=>{t?.(e),a()},...n,children:[x(De,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function as({className:e,...t}){return x("main",{"data-slot":"sidebar-inset",className:kn("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 rs({className:e,...t}){return x("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:kn("flex flex-col gap-2 p-2",e),...t})}function is({className:e,...t}){return x("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:kn("flex flex-col gap-2 p-2",e),...t})}function ss({className:e,...t}){return x("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:kn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...t})}function os({className:e,...t}){return x("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:kn("relative flex w-full min-w-0 flex-col p-2",e),...t})}function ds({className:e,render:t,...n}){return ut({defaultTagName:"div",props:lt({className:kn("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 cs({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:kn("w-full text-sm",e),...t})}function ls({className:e,...t}){return x("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:kn("flex w-full min-w-0 flex-col gap-0",e),...t})}function us({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:kn("group/menu-item relative",e),...t})}var ms=ot("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 hs({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=Zi(),c=ut({defaultTagName:"button",props:lt({className:kn(ms({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(An,{children:[c,x(Mn,{side:"right",align:"center",hidden:"collapsed"!==d||o,...r})]})):c}function fs({className:e,size:t="default",...n}){return x(Lt.Root,{"data-slot":"switch","data-size":t,className:kn("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(Lt.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 ps({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,E]=O(""),[M,T]=O(""),S=C({enabled:r,queryKey:bs(i,void 0),queryFn:()=>_n(i,void 0)}),P=S.data,D=P?.root??P?.path??"",q=c||P?.path||"",R=I({mutationFn:()=>{const e=k||q||P?.path,t=M.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 Bn(e.serverUrl,"/api/workspaces/directories",{body:t,token:e.token})}(i,{parentPath:e,name:t})},onError:e=>z.error(function(e){return e instanceof Error?e.message:"Request failed."}(e)),onSuccess:e=>{N(!1),E(""),T(""),z.success("Folder created."),s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]}),_(e.path)}});function $(e,t="directory"){l(e),m(t),f(e),D&&d(t=>{const n=new Set(t);for(const a of Ns(e,D))n.add(a);return n})}function _(e){l(e),m("directory"),f(e),d(t=>new Set(t).add(e))}function U(){const e=h.trim()||P?.path;e&&$(e)}return L(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),E(""),T(""))},[e,r]),L(()=>{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 Ns(t,P.root))n.add(a);return n})},[e,P]),x(Ka,{open:r,onOpenChange:n,children:y(Ja,{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(Za,{children:"file"===t?"Choose Workspace File":"Choose Working Directory"}),x(er,{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(ys,{label:"Home",onClick:function(){P?.path&&_(P.path)},children:x(pe,{})}),x(ys,{disabled:!q||R.isPending,label:"New folder",onClick:function(){const e=q||P?.path;e&&(l(e),m("directory"),f(e),g(""),N(!0),E(e),T(""),d(t=>{const n=new Set(t);if(D)for(const a of Ns(e,D))n.add(a);return n.add(e),n}))},children:x(ue,{})}),x(ys,{label:"Refresh",onClick:function(){s.invalidateQueries({queryKey:["workspace-directory",i.serverUrl]})},children:x(_e,{className:kn(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(je,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(fa,{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(ha,{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(fa,{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&&U()}}),x(ys,{label:"Open path",onClick:U,children:x(J,{})})]}):null,y("div",{className:"relative sm:hidden",children:[x(je,{className:"pointer-events-none absolute left-2 top-1.5 size-4 text-muted-foreground"}),x(fa,{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(tr,{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(gs,{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:M,createFolderParentPath:k,createFolderPending:R.isPending,selectedPath:q,selectedType:u,session:i,showCreateFolder:b,onCancelCreateFolder:()=>{N(!1),E(""),T("")},onCreateFolderNameChange:T,onCreateFolderSubmit:()=>R.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(Ya,{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":q||D||"None"})]}),y("div",{className:"flex shrink-0 justify-end gap-2",children:[y(ha,{disabled:!q||"file"===t&&"file"!==u,size:"sm",type:"button",onClick:function(){!q||"file"===t&&"file"!==u||(a(q),n(!1))},children:[x(K,{}),"file"===t?"Attach":"OK"]}),x(ha,{size:"sm",type:"button",variant:"outline",onClick:()=>n(!1),children:"Cancel"})]})]})]})});var j}function gs({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=Cs(f)===Cs(r.path),N=v&&Cs(t)===Cs(r.path),I=C({enabled:w&&!a,queryKey:bs(g,r.path),queryFn:()=>_n(g,r.path)}),k=a??I.data,A=q(()=>function(e,t){const n=t.trim().toLocaleLowerCase();return(n?e.filter(e=>e.name.toLocaleLowerCase().includes(n)):e).slice(0,400)}(k?.entries??[],s),[k?.entries,s]),E=A.filter(e=>"directory"===e.type),M=A.filter(e=>"directory"!==e.type);return y("div",{className:"min-w-0",children:[x(ws,{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(vs,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,E.map(a=>x(gs,{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)),M.map(e=>x(xs,{entry:e,level:o+1,selected:"file"===p&&Cs(f)===Cs(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 vs({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(ue,{className:"size-4 shrink-0 text-muted-foreground"}),x(fa,{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(ys,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(K,{})}),x(ys,{disabled:i,label:"Cancel new folder",onClick:n,children:x(et,{})})]})}function ws({entry:e,expanded:t,level:n,loading:a,onOpen:r,onSelect:i,onToggle:s,selected:o}){return y("div",{className:kn("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:kn("size-4 transition-transform",t&&"rotate-90",a&&"opacity-50")})}),x(t?le:ce,{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 xs({entry:e,level:t,onSelect:n,selected:a}){return y("button",{className:kn("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(ie,{className:"size-4 shrink-0"}),x("span",{className:"min-w-0 truncate",children:e.name})]})}function ys({children:e,disabled:t,label:n,onClick:a}){return y(ha,{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 bs(e,t){return["workspace-directory",e.serverUrl,t]}function Ns(e,t){const n=ks(t),a=ks(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=Is(s,o),r.push(s);return r}function Is(e,t){const n=e.includes("\\")?"\\":"/";return`${ks(e)}${n}${t}`}function ks(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function Cs(e){return ks(e).toLocaleLowerCase()}function As(){const{clearSession:e,loading:t,refreshSession:n,session:a}=na(),{chatId:s}=p(),[o,d]=O(0),[c,l]=O(!1),[u,m]=O("server"),[f,g]=O(null),v=h(),b=P(e=>{d(e?.focusCreate?e=>e+1:0),m("accounts"),l(!0)},[]),N=P(e=>{"accounts"===e&&d(0),m(e)},[]),I=P((e="server")=>{m(e),l(!0)},[]),A=C({enabled:!!a,queryKey:["accounts"],queryFn:()=>async function(e){return Bn(e.serverUrl,"/api/accounts",{token:e.token})}(a)}),E=C({enabled:!!a,queryKey:["chats"],queryFn:()=>async function(e){return Bn(e.serverUrl,"/api/chats",{token:e.token})}(a)}),M=q(()=>A.data??[],[A.data]),T=q(()=>E.data??[],[E.data]),S=q(()=>s?T.find(e=>e.id===s)?.title??null:null,[s,T]),D=q(()=>M.filter(e=>"CONNECTED"===e.status),[M]);Sn(S);const L=k({queries:D.map(e=>({enabled:!!a,queryKey:["rate-limits",e.id],queryFn:()=>$n(a,e.id),refetchInterval:6e4,retry:!1,staleTime:3e4}))}),R=q(()=>Object.fromEntries(D.map((e,t)=>{const n=to(L[t]?.data);return n?[e.id,n]:null}).filter(e=>!!e)),[L,D]),$=q(()=>Object.fromEntries(D.map(e=>{const t=R[e.id];return t?[e.id,no(t)]:null}).filter(e=>!!e)),[R,D]);if(t)return x($s,{});if(!a)return x(r,{replace:!0,to:"/connect"});const _={accounts:M,accountRateLimitSnapshots:R,accountUsageSummaries:$,chats:T,connectedAccounts:D,openAccountManagement:b,openWorkspacePicker:g,session:a};return y(w,{children:[y(es,{children:[y(ts,{className:"border-r",collapsible:"icon",children:[x(rs,{children:y(ha,{className:"w-full justify-start",variant:"ghost",onClick:()=>v("/"),children:[x(We,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"New chat"})]})}),x(ss,{children:y(os,{children:[x(ds,{children:"Chats"}),x(cs,{children:x(Ms,{chats:T,session:a})})]})}),x(is,{children:y(ha,{className:"justify-start",variant:"ghost",onClick:()=>I(),children:[x(Be,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"Settings"})]})})]}),y(as,{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(ns,{variant:"ghost",children:x(Ee,{})})}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x(Es,{onAddAccount:()=>b({focusCreate:!0}),onNewChat:()=>v("/")}),x(vr,{})]})]}),A.error||E.error?x("div",{className:"border-b border-destructive/30 bg-destructive/10 px-4 py-2 text-sm text-destructive",children:A.error?.message??E.error?.message??"Unable to load workspace data."}):null,x(i,{context:_})]})]}),x(rr,{accounts:M,activeTab:u,clearSession:e,createFocusKey:o,open:c,refreshSession:n,session:a,onTabChange:N,onOpenChange:l}),f?x(ps,{initialPath:f.initialPath,mode:f.mode,open:!!f,session:a,onOpenChange:e=>{e||g(null)},onSelect:f.onSelect}):null]})}function Es({onAddAccount:e,onNewChat:t}){return y(dr,{children:[y(cr,{render:x(ha,{size:"icon",variant:"outline"}),children:[x($e,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(lr,{align:"end",className:"w-44",children:[y(ur,{onClick:t,children:[x(We,{}),"New chat"]}),y(ur,{onClick:e,children:[x(Ze,{}),"Add account"]})]})]})}function Ms({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=q(()=>e.map(e=>({chat:e,dateLabel:uo(e.lastActivityAt),folderName:mo(e.workingDirectory)})),[e]),b=q(()=>{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=q(()=>{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;L(()=>{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 Un(t,i.id,{title:o.trim()||"Untitled chat"})},onError:e=>z.error(Co(e)),onSuccess:()=>{s(null),d(""),r.invalidateQueries({queryKey:["chats"]})}}),E=I({mutationFn:e=>async function(e,t){return Bn(e.serverUrl,`/api/chats/${t}`,{method:"DELETE",token:e.token})}(t,e.id),onError:e=>z.error(Co(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(je,{className:"pointer-events-none absolute left-2 top-2 size-4 text-muted-foreground"}),x(fa,{"aria-label":"Search chats",className:"h-8 bg-background pl-7",placeholder:"Search chats",value:u,onChange:e=>m(e.target.value)})]}),y(zi,{children:[x(Ui,{render:x(ha,{"aria-label":"Filter chats by folder",className:kn(f&&"text-foreground"),size:"icon",variant:f?"secondary":"outline"}),children:x(de,{className:"size-4"})}),y(ji,{align:"end",className:"w-64",side:"bottom",children:[y(Fi,{children:[x(Bi,{children:"Folder"}),x(Gi,{children:"Show chats from one folder."})]}),y("div",{className:"max-h-72 overflow-y-auto",children:[y("button",{className:kn("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:kn("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(ce,{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(ls,{children:N.length?N.map(({chat:e,dateLabel:t,folderName:r})=>x(us,{children:y("div",{className:"flex items-center gap-1",children:[y(hs,{className:"h-14 min-w-0 flex-1 items-start py-1.5",isActive:e.id===a,size:"lg",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Me,{className:"mt-0.5"}),y("span",{className:"min-w-0 flex-1",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(ce,{className:"!size-3 shrink-0"}),x("span",{className:"truncate",children:r})]})]})]})]}),y(dr,{children:[y(cr,{render:x(ha,{size:"icon-sm",variant:"ghost"}),children:[x(Se,{}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(lr,{align:"end",className:"w-40",children:[y(ur,{onClick:()=>{s(e),d(e.title)},children:[x(qe,{}),"Rename"]}),y(ur,{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(ha,{className:"mt-2 h-7 px-2 text-xs",size:"sm",variant:"outline",onClick:()=>{g(null),m("")},children:"Clear filters"}):null]})}),x(Ka,{open:!!i,onOpenChange:e=>{e||(s(null),d(""))},children:y(Ja,{children:[y(Xa,{children:[x(Za,{children:"Rename chat"}),x(er,{children:"Choose a short title for the sidebar."})]}),x(fa,{value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C.mutate()}}),x(Ya,{children:x(ha,{disabled:C.isPending,onClick:()=>C.mutate(),children:"Save"})})]})}),x(Ka,{open:!!c,onOpenChange:e=>{e||l(null)},children:y(Ja,{children:[y(Xa,{children:[x(Za,{children:"Archive chat?"}),y(er,{children:["This removes ",c?.title??"the chat"," from the active chat list. Message history stays on the server."]})]}),y(Ya,{children:[x(ha,{variant:"outline",onClick:()=>l(null),children:"Cancel"}),y(ha,{disabled:E.isPending||!c,variant:"destructive",onClick:()=>{c&&E.mutate(c)},children:[x(j,{}),"Archive"]})]})]})})]})}function Ts(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 Ss(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await Ds(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Ps(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 Ds(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 Ls(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:ho(t),path:t}}function qs({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(ie,{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(ha,{"aria-label":"Remove attachment",className:"size-5",size:"icon-xs",type:"button",variant:"ghost",onClick:()=>a(e.id),children:x(et,{className:"size-3"})})]},e.id))}):null]})}function Rs(){const{accountRateLimitSnapshots:e,accountUsageSummaries:t,connectedAccounts:n,openAccountManagement:a,openWorkspacePicker:r,session:i}=Zs(),[s,o]=O(""),[d,c]=O([]),[l,u]=O("default"),[m,f]=O(null),[p,g]=O(null),[v,w]=O("default"),[b,N]=O(null),[k,E]=O(null),[M,T]=O(null),[S,D]=O(""),$=A(),_=h(),U=R(null),j=q(()=>{return t=n,a=e,t.map((e,t)=>({account:e,index:t,score:ro(a[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account;var t,a},[e,n]),F=n.find(e=>e.id===p)??j??n[0];L(()=>{if(!F?.id)return E(null),f(null),w("default"),N(null),void T(null);E(F.id),f(F.defaultModel??null),w(F.defaultPermissionMode??"default"),N(F.defaultReasoningEffort??null),T(F.defaultServiceTier??null)},[F?.defaultModel,F?.defaultPermissionMode,F?.defaultReasoningEffort,F?.defaultServiceTier,F?.id]);const B=C({enabled:!!F?.id,queryKey:["models",F?.id],queryFn:()=>On(i,F.id),staleTime:3e5}),G=C({enabled:!!F?.id,queryKey:["rate-limits",F?.id],queryFn:()=>$n(i,F.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),H=B.data?.data??[],K=k===F?.id,W=K?m:null,V=K?b:null,Q=K?M:null,J=eo(H,W),X=J?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],Y=V??J?.defaultReasoningEffort??null,Z=J?.additionalSpeedTiers??[],ee=to(G.data),te=I({mutationFn:({accountId:e,settings:t})=>qn(i,e,t),onError:e=>z.error(Co(e)),onSuccess:e=>{$.setQueryData(["accounts"],t=>Io(t,e))}}),ne=I({mutationFn:async()=>{if(!F)throw new Error("Connect an account before starting a chat.");if(!S.trim())throw new Error("Choose a working directory before starting a chat.");const e=await async function(e,t){return Bn(e.serverUrl,"/api/chats",{body:t,token:e.token})}(i,{accountId:F.id,collaborationMode:l,model:W,permissionMode:v,reasoningEffort:V,serviceTier:Q,workingDirectory:S.trim()});return{chat:e,response:await Fn(i,e.id,{attachments:Ts(d),content:s.trim()})}},onError:e=>z.error(Co(e)),onSuccess:({chat:e,response:t})=>{o(""),c([]),u("default"),w(F?.defaultPermissionMode??"default"),D(""),$.setQueryData(["messages",e.id],bo(void 0,No(t))),$.invalidateQueries({queryKey:["chats"]}),_(`/chat/${e.id}`)}}),ae=P(e=>{e?.length&&Ss(e).then(e=>{c(t=>[...t,...e])}).catch(e=>z.error(Co(e)))},[]),re=P(()=>{r({initialPath:S,mode:"file",onSelect:e=>{c(t=>[...t,Ls(e)])}})},[r,S]);return x("main",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden",children:y("div",{className:"mx-auto flex w-full max-w-3xl flex-1 flex-col justify-center gap-6 px-4 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(ha,{className:"mt-3",size:"sm",onClick:a,children:[x(Ze,{}),"Manage Accounts"]})]}),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(fa,{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:S,onChange:e=>D(e.target.value)}),y(ha,{className:"size-8 shrink-0",size:"icon",title:"Choose directory",type:"button",variant:"ghost",onClick:()=>r({initialPath:S,onSelect:D}),children:[x(le,{}),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:s,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!ne.isPending&&ko(s,S,F,d)&&ne.mutate())},onPaste:e=>{const t=Ps(e.clipboardData);t.length&&ae(t)}}),x(qs,{attachments:d,imageInputRef:U,onAttachImages:ae,onRemove:e=>c(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(Ws,{attachmentDisabled:ne.isPending,disabled:!F,mode:l,onAttachFile:re,onAttachImage:()=>U.current?.click(),onSelectMode:u}),x(_s,{account:F,connectedAccounts:n,disabled:!n.length,selectedAccountId:F?.id??"",usageSummaries:t,onSelect:e=>{g(e)}}),x(Js,{activeReasoningEffort:Y,disabled:!F,modelOptions:H,modelValue:W??"",pending:B.isFetching,reasoningOptions:X,reasoningValue:V??"",selectedModel:J,serviceTierOptions:Z,serviceTierValue:Q??"",onSelectModel:e=>{const t=F?.id??null;E(t),f(e||null),N(null),T(null),t&&te.mutate({accountId:t,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}})},onSelectReasoning:e=>{const t=F?.id??null,n=e||null;E(t),N(n),t&&te.mutate({accountId:t,settings:{defaultModel:W,defaultReasoningEffort:n,defaultServiceTier:Q}})},onSelectServiceTier:e=>{const t=F?.id??null,n=e||null;E(t),T(n),t&&te.mutate({accountId:t,settings:{defaultModel:W,defaultReasoningEffort:V,defaultServiceTier:n}})}}),x(Vs,{disabled:!F,mode:v,onSelectMode:e=>{w(e),F?.id&&te.mutate({accountId:F.id,settings:{defaultPermissionMode:e}})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(Ks,{pending:G.isFetching,snapshot:ee}),x(Qs,{loading:ne.isPending,sendDisabled:!ko(s,S,F,d),onSend:()=>ne.mutate()})]})]})]})]})})}function Os(){const{chatId:e}=p(),{accounts:t,accountUsageSummaries:n,connectedAccounts:a,openWorkspacePicker:i,session:s}=Zs(),[o,d]=O(""),[c,l]=O([]),[u,m]=O("OFFLINE"),[h,f]=O(null),g=R(null),v=R(null),w=R(!0),b=A(),N=q(()=>["chat",e],[e]),k=q(()=>["messages",e],[e]);L(()=>{f(null),l([])},[e]);const E=C({enabled:!!e,queryKey:N,queryFn:()=>zn(s,e)}),M=C({enabled:!!e,queryKey:k,queryFn:()=>jn(s,e,0)}),T=C({enabled:!!e&&!h,queryKey:["chat-context",e],queryFn:()=>async function(e,t){return Bn(e.serverUrl,`/api/chats/${t}/context`,{token:e.token})}(s,e),retry:!1,staleTime:3e4});L(()=>{T.data?.usage&&!h&&f(T.data.usage)},[T.data?.usage,h]);const S=q(()=>M.data?.data??[],[M.data]),D=q(()=>Si(S),[S]),$=q(()=>D.pendingRequest?[D.pendingRequest.id]:[],[D.pendingRequest]),_=q(()=>S.map(e=>`${e.id}:${e.sequence}:${e.status}:${e.content.length}`).join("|"),[S]),U=E.data,j=t.find(e=>e.id===U?.accountId),F=P(e=>e.scrollHeight-e.scrollTop-e.clientHeight<96,[]),B=P((e="auto")=>{const t=g.current;t&&t.scrollTo({behavior:e,top:t.scrollHeight})},[]),G=C({enabled:!!j?.id&&"CONNECTED"===j.status,queryKey:["models",j?.id],queryFn:()=>On(s,j.id),staleTime:3e5}),H=C({enabled:!!j?.id&&"CONNECTED"===j.status,queryKey:["rate-limits",j?.id],queryFn:()=>$n(s,j.id),refetchInterval:6e4,retry:!1,staleTime:3e4}),K=I({mutationFn:t=>Un(s,e,{accountId:t}),onError:e=>z.error(Co(e)),onSuccess:e=>{b.setQueryData(N,e),b.invalidateQueries({queryKey:["chats"]}),z.success("Chat account updated.")}}),W=I({mutationFn:t=>Un(s,e,t),onError:e=>z.error(Co(e)),onSuccess:e=>{b.setQueryData(N,e),b.invalidateQueries({queryKey:["chats"]})}}),V=I({mutationFn:({accountId:e,settings:t})=>qn(s,e,t),onError:e=>z.error(Co(e)),onSuccess:e=>{b.setQueryData(["accounts"],t=>Io(t,e))}}),Q=I({mutationFn:t=>Fn(s,e,{attachments:t?.attachments,collaborationMode:t?.collaborationMode,content:(t?.content??o).trim(),delivery:t?.delivery,metadata:t?.metadata}),onError:e=>z.error(Co(e)),onSuccess:(e,t)=>{w.current=!0,(t?.clearComposer??1)&&(d(""),l([])),b.setQueryData(k,t=>bo(t,No(e))),b.invalidateQueries({queryKey:N}),b.invalidateQueries({queryKey:["chats"]})}}),J=I({mutationFn:()=>async function(e,t){return Bn(e.serverUrl,`/api/chats/${t}/interrupt`,{body:{},token:e.token})}(s,e),onError:e=>z.error(Co(e)),onSuccess:()=>{z.message("Stop requested.")}}),X=P(e=>{e?.length&&Ss(e).then(e=>{l(t=>[...t,...e])}).catch(e=>z.error(Co(e)))},[]),Y=P(()=>{i({initialPath:E.data?.workingDirectory,mode:"file",onSelect:e=>{l(t=>[...t,Ls(e)])}})},[E.data?.workingDirectory,i]),Z=P(e=>{Q.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"}})},[Q]),ee=P(e=>{var t;Q.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"}})},[Q]),te=P(e=>{Q.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"reviewFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[Q]),ne=P(e=>{Q.mutate({clearComposer:!1,collaborationMode:"default",content:e.prompt,metadata:{action:"undoFileChanges",fileChangeMessageId:e.message.id,source:"fileChangeSummary"}})},[Q]);if(L(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?b.setQueryData(k,n=>function(e,t,n){if("message.created"===t||"message.updated"===t||"message.completed"===t)return Kn(e,n);if("message.failed"===t)return Kn(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)):f(t):n(t)};return function(e,t,n){let a=!1;const r=qt(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()}}(s,e,{onClose:()=>m("OFFLINE"),onError:e=>{m("OFFLINE"),z.error(Co(e))},onEvent:t,onOpen:()=>{var a;m("ONLINE"),jn(s,e,(a=b.getQueryData(k),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>z.error(Co(e))),zn(s,e).then(n).catch(e=>z.error(Co(e)))}});function n(e){b.setQueryData(N,e),b.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,N,k,b,s]),L(()=>{w.current=!0;const e=requestAnimationFrame(()=>B("auto"));return()=>cancelAnimationFrame(e)},[e,B]),L(()=>{if(!w.current)return;let e=0;const t=requestAnimationFrame(()=>{B("auto"),e=requestAnimationFrame(()=>B("auto"))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[_,B]),!e)return x(r,{replace:!0,to:"/"});if(E.isLoading||M.isLoading)return x($s,{});if(E.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:E.error.message})]})});const ae=U,re=j,ie="RUNNING"===ae?.status,se=G.data?.data??[],oe=!!ae&&!ie&&a.length>0,de=eo(se,ae?.model),le=de?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],ue=ae?.reasoningEffort??de?.defaultReasoningEffort??null,me=de?.additionalSpeedTiers??[],he=to(H.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(Us,{state:u}),x("h1",{className:"truncate text-sm font-semibold tracking-normal",children:ae?.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(Ze,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:re?.displayName??"No account selected"})]}),y("span",{className:"flex min-w-0 items-center gap-1.5",children:[x(ce,{className:"size-3.5 shrink-0"}),x("span",{className:"truncate",children:ae?.workingDirectory??"No working directory"})]})]})]}),ae?x(js,{chatId:ae.id,disabled:ie,session:s}):null]}),x(tr,{className:"min-h-0 min-w-0 flex-1 overflow-hidden",viewportRef:g,viewportProps:{className:"overflow-x-hidden",onScroll:e=>{w.current=F(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:S.length?x(xr,{chatId:e,fileChangeActionDisabled:ie,fileChangeActionPending:Q.isPending,hiddenMessageIds:$,messages:S,onImplementPlan:Z,onRevisePlan:ee,onReviewFileChanges:te,onUndoFileChanges:ne,planActionDisabled:ie,planActionPending:Q.isPending,session:s}):x("div",{className:"py-20 text-center text-sm text-muted-foreground",children:"No messages yet."})})}),y("div",{className:"min-w-0 overflow-hidden border-t bg-background",children:[x(yr,{chatId:e,messages:S,session:s}),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:ae?.workingDirectory?re?"Message Codex":"Choose an account first":"Choose a directory first",value:o,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),ko(o,ae?.workingDirectory??"",re,c)&&Q.mutate({attachments:Ts(c),clearComposer:!0,delivery:ie?"queue":void 0}))},onPaste:e=>{const t=Ps(e.clipboardData);t.length&&X(t)}}),x(qs,{attachments:c,imageInputRef:v,onAttachImages:X,onRemove:e=>l(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(Ws,{attachmentDisabled:Q.isPending,disabled:!ae,modeDisabled:ie,mode:ae?.collaborationMode??"default",onAttachFile:Y,onAttachImage:()=>v.current?.click(),pending:W.isPending,steerDisabled:!ie||Q.isPending||!ko(o,ae?.workingDirectory??"",re,c),onSteerActiveTurn:()=>Q.mutate({attachments:Ts(c),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>W.mutate({collaborationMode:e})}),x(_s,{account:re,connectedAccounts:a,disabled:!oe,pending:K.isPending,selectedAccountId:ae?.accountId??"",usageSummaries:n,onSelect:e=>K.mutate(e)}),x(Js,{activeReasoningEffort:ue,disabled:!ae||ie||!re,modelOptions:se,modelValue:ae?.model??"",pending:G.isFetching||W.isPending,reasoningOptions:le,reasoningValue:ae?.reasoningEffort??"",selectedModel:de,serviceTierOptions:me,serviceTierValue:ae?.serviceTier??"",onSelectModel:e=>{ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:e||null,defaultReasoningEffort:null,defaultServiceTier:null}}),W.mutate({model:e||null,reasoningEffort:null,serviceTier:null})},onSelectReasoning:e=>{const t=e||null;ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:ae.model??null,defaultReasoningEffort:t,defaultServiceTier:ae.serviceTier??null}}),W.mutate({reasoningEffort:t})},onSelectServiceTier:e=>{const t=e||null;ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultModel:ae.model??null,defaultReasoningEffort:ae.reasoningEffort??null,defaultServiceTier:t}}),W.mutate({serviceTier:t})}}),x(Vs,{disabled:!ae,mode:ae?.permissionMode??"default",pending:W.isPending,onSelectMode:e=>{ae?.accountId&&V.mutate({accountId:ae.accountId,settings:{defaultPermissionMode:e}}),W.mutate({permissionMode:e})}})]}),y("div",{className:"flex shrink-0 items-center gap-1 sm:gap-2",children:[x(zs,{usage:h}),x(Ks,{pending:H.isFetching,snapshot:he}),x(Qs,{loading:Q.isPending,running:ie,sendDisabled:!ko(o,ae?.workingDirectory??"",re,c),stopPending:J.isPending,onSend:()=>Q.mutate({attachments:Ts(c),clearComposer:!0,delivery:ie?"queue":void 0}),onStop:()=>J.mutate()})]})]})]})})]})]})}function $s(){return x("div",{className:"flex min-h-svh items-center justify-center bg-background",children:x(Ne,{className:"size-5 animate-spin text-muted-foreground"})})}function _s({account:e,connectedAccounts:t,disabled:n,onSelect:a,pending:r,selectedAccountId:i,usageSummaries:s}){return y(dr,{children:[y(cr,{render:x(ha,{"aria-label":e?.displayName??"Choose account",className:"max-w-44 justify-start max-sm:size-8 max-sm:justify-center max-sm:px-0",disabled:n||r,size:"sm",title:e?.displayName??"Choose account",variant:"ghost"}),children:[r?x(Ne,{className:"animate-spin"}):x(Ze,{}),x("span",{className:"truncate max-sm:sr-only",children:e?.displayName??"Choose account"})]}),x(lr,{align:"start",className:"w-64",children:x(pr,{value:i,onValueChange:e=>{e&&e!==i&&a(e)},children:t.map(e=>y(gr,{disabled:r,value:e.id,children:[x("span",{className:"truncate",children:e.displayName}),s[e.id]?x("span",{className:"ml-auto mr-5 shrink-0 text-xs text-muted-foreground",children:s[e.id]}):null]},e.id))})})]})}function zs({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=vo(e.usedPercent);return y(zi,{children:[x(Ui,{render:x(ha,{"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(ji,{align:"end",className:"w-72",side:"top",children:[y(Fi,{children:[x(Bi,{children:"Context window"}),x(Gi,{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:[fo(e.tokensUsed)," /"," ",fo(e.tokenLimit)," tokens used"]})]})]})]})}function Us({state:e}){const t="ONLINE"===e;return x("span",{"aria-label":t?"Realtime connected":"Realtime disconnected",className:kn("size-2.5 shrink-0 rounded-full",t?"bg-emerald-500":"bg-muted-foreground/45"),title:t?"Realtime connected":"Realtime disconnected"})}function js({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 Bn(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?Hs(o):"";return y(Ka,{open:a,onOpenChange:r,children:[y(ha,{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(he,{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:kn("ml-0.5 size-1.5 shrink-0 rounded-full",c?"bg-amber-500":"bg-emerald-500")})]}),a?x(Fs,{chatId:e,disabled:t,queryClient:i,session:n,status:o}):null]})}function Fs({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 Bn(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 Bn(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 Bn(e.serverUrl,`/api/chats/${t}/git/action`,{body:n,token:e.token})}(a,e,t)},onError:e=>z.error(Co(e)),onSuccess:t=>{z.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(Ja,{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(Za,{children:"Git"}),x(er,{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(he,{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?Gs(g):"Loading..."})]}),x(ha,{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(_e,{className:kn(h.isPending&&"animate-spin")})})]}),x(fa,{className:"h-8",placeholder:"Find branch",value:i,onChange:e=>s(e.target.value)})]}),x(tr,{className:"min-h-0",children:y("div",{className:"grid gap-1 p-2",children:[f.map(e=>y(ha,{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(he,{}),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(fa,{className:"h-8",placeholder:"New branch",value:o,onChange:e=>d(e.target.value)}),y(ha,{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(ha,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Pull with rebase and autostash?")&&h.mutate({action:"pull"})},children:[x(ne,{}),"Pull"]}),y(ha,{disabled:p,size:"sm",type:"button",variant:"outline",onClick:()=>{window.confirm("Push this branch?")&&h.mutate({action:"push"})},children:[x(Ye,{}),"Push"]}),x("span",{className:"ml-auto text-xs text-muted-foreground",children:h.isPending?"Running git...":Gs(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(ha,{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(fe,{}),"Commit"]})]})]}),x(tr,{className:"min-h-0 border-t",children:y("div",{className:"grid gap-3 p-3",children:[x(Bs,{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 Bs({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 Gs(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,Hs(e)].filter(Boolean).join(" · "):"Git unavailable"}function Hs(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function Ks({pending:e,snapshot:t}){const n=no(t),a=ao(t);return y(zi,{children:[y(Ui,{render:x(ha,{className:kn("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(Ne,{className:"size-3 animate-spin"}):x(nt,{className:"size-3"}),x("span",{className:"truncate max-sm:sr-only",children:n})]}),y(ji,{align:"start",className:"w-80",side:"top",children:[y(Fi,{children:[x(Bi,{children:"Usage capacity"}),x(Gi,{children:"Current Codex account limits refresh automatically."})]}),x(Xs,{pending:e,snapshot:t})]})]})}function Ws({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(dr,{children:[x(cr,{render:x(ha,{"aria-label":"Chat options",className:"shrink-0",disabled:t,size:"icon-sm",variant:l?"secondary":"ghost"}),children:d?x(Ne,{className:"animate-spin"}):x($e,{})}),y(lr,{align:"start",className:"w-56",children:[y(ur,{className:"gap-3 py-2",disabled:t||a||d,onClick:e=>{e.preventDefault(),s(l?"default":"plan")},children:[x(be,{}),x("span",{className:"grid min-w-0 flex-1 gap-0.5",children:x("span",{children:"Plan mode"})}),x(fs,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(ur,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[x(ge,{}),x("span",{children:"Attach image"})]}),y(ur,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[x(Le,{}),x("span",{children:"Attach workspace file"})]}),o?y(ur,{className:"gap-3 py-2",disabled:c,onClick:o,children:[x(G,{}),x("span",{children:"Steer active turn"})]}):null]})]})}function Vs({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(dr,{children:[y(cr,{render:x(ha,{"aria-label":yo(t),className:kn("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:yo(t),variant:"ghost"}),children:[a?x(Ne,{className:"animate-spin"}):x(r?He:Ge,{}),x("span",{className:"truncate max-sm:sr-only",children:yo(t)})]}),x(lr,{align:"start",className:"w-48",children:y(pr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(gr,{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(gr,{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 Qs({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(ha,{"aria-label":"Queue message",className:"size-9 rounded-full",disabled:r||e,size:"icon",title:"Queue message",type:"button",onClick:t,children:e?x(Ne,{className:"animate-spin"}):x(G,{})}),x(ha,{"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(Ne,{className:"animate-spin"}):x(Ke,{})})]}):x(ha,{"aria-label":"Send message",className:"size-9 rounded-full",disabled:r||e,size:"icon",type:"button",onClick:t,children:e?x(Ne,{className:"animate-spin"}):x(G,{})})}function Js({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?wo(e):null,a?xo(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(dr,{children:[y(cr,{render:x(ha,{"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(Ne,{className:"animate-spin"}):x(te,{}),x("span",{className:"truncate max-sm:sr-only",children:h})]}),y(lr,{align:"start",className:"w-72",children:[y(mr,{children:[y(hr,{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:wo(e)})]}),x(fr,{className:"w-52",children:y(pr,{value:c,onValueChange:i,children:[x(gr,{value:"",children:"Model default"}),d.map(e=>x(gr,{value:e,children:wo(e)},e))]})})]}),y(mr,{children:[y(hr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",children:[x(te,{}),x("span",{children:"Model"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:(l?.displayName??a)||"Default"})]}),x(fr,{className:"w-64",children:y(pr,{value:a,onValueChange:r,children:[x(gr,{value:"",children:"Default model"}),n.map(e=>x(gr,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(mr,{children:[y(hr,{className:"grid grid-cols-[auto_minmax(0,1fr)_minmax(0,6rem)_auto]",disabled:!u.length,children:[x(me,{}),x("span",{children:"Speed"}),x("span",{className:"truncate text-right text-xs text-muted-foreground",children:xo(m)})]}),x(fr,{className:"w-52",children:y(pr,{value:m,onValueChange:s,children:[x(gr,{value:"",children:"Default speed"}),u.map(e=>x(gr,{value:e,children:xo(e)},e))]})})]})]})]})}function Xs({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: ",go(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,go(n))}):null]}),x(Ys,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(Ys,{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 Ys({fallbackLabel:e,severity:t,window:n}){const a=vo(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=io(n);return y("div",{className:kn("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:oo(n,e)}),x("span",{className:kn("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:kn("h-full rounded-full bg-foreground",i&&"fiveHour"===t&&"bg-orange-500",i&&"weekly"===t&&"bg-red-500"),style:{width:`${a}%`}})}),y("div",{className:kn("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:co(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",lo(n.resetsAt)]}):null]})]})}function Zs(){return f()}function eo(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function to(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function no(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[so(e.primary,"5h"),so(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function ao(e){return e?io(e.secondary)?"weekly":io(e.primary)?"fiveHour":null:null}function ro(e){if(!e)return 0;if(e.rateLimitReachedType||ao(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-vo(e.usedPercent));return t.length?Math.min(...t):0}function io(e){return vo(e?.usedPercent??0)>=100}function so(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-vo(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 oo(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 co(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function lo(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 uo(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 ho(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function fo(e){return e>=1e6?`${po(e/1e6)}M`:e>=1e3?`${po(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function po(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function go(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function vo(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function wo(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function xo(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function yo(e){return"fullAccess"===e?"Full access":"Default"}function bo(e,t){let n=e;for(const a of t)n=Kn(n,a);return n??{data:[],nextCursor:null}}function No(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function Io(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 ko(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function Co(e){return e instanceof Error?e.message:"Request failed."}var Ao=xn({default:()=>Eo}),Eo=c(function(){return x(As,{})}),Mo=xn({default:()=>To}),To=c(function(){return x(Rs,{})}),So=xn({default:()=>Po}),Po=c(function(){return x(Os,{})}),Do=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Lo(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function qo(e){throw new Do(405,`${e} is not supported for this route.`)}function Ro(e,t){t.includes(e.method)||qo(e.method)}async function Oo(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 Do(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Do)throw n;throw new Do(400,"Request body must be valid JSON.")}}function $o(e,t,n={}){if(null==e){if(n.required)throw new Do(400,`${t} is required.`);return}if("string"!=typeof e)throw new Do(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Do(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Do(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function _o(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Do(400,`${t} must be an array of strings.`);return e}}function zo(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Do(400,`${t} must be an object.`);return e}}function Uo(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 Do(400,`${t} must be an integer.`);return r}function jo(e,t){const n=e[t];if(!n)throw new Do(400,`${t} is required.`);return n}function Fo(e){return e instanceof Do?Lo({message:e.message},{status:e.status}):Lo({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var Bo=xn({loader:()=>Go});function Go({request:e}){try{return Ro(e,["GET"]),Lo({status:"ok",service:"xedoc"})}catch(t){return Fo(t)}}var Ho,Ko=globalThis,Wo=nn("~"===(Ho=process.env.CODEX_WORKSPACE_ROOT?.trim()||Jt())?Jt():Ho.startsWith("~/")?nn(Jt(),Ho.slice(2)):rn(Ho),".xedoc","xedoc.db"),Vo=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(Wo);process.env.DATABASE_URL=Vo,Kt(Zt(Wo),{recursive:!0,mode:448});var Qo=Ko.prisma??new Ft({datasources:{db:{url:Vo}}});"production"!==process.env.NODE_ENV&&(Ko.prisma=Qo);var Jo="server",Xo="scrypt";async function Yo(e){!function(e){if(e.length<8)throw new Do(400,"Server password must be at least 8 characters.")}(e);const t=await ad()??await async function(e){try{return await Qo.serverAuth.create({data:{id:Jo,passwordHash:rd(e),tokenSecret:id(32)}})}catch(t){if(function(e){return e instanceof jt.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Do(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!==Xo||!a||!r||void 0!==i)&&sd(zt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Do(401,"Invalid server password.");return{token:ed({authHash:td(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function Zo(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Do(401,"Invalid auth token.");if(!sd(a,nd(n,t.tokenSecret)))throw new Do(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 Do(401,"Invalid auth token.")}}(n);if(i.authHash!==td(t.passwordHash))throw new Do(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Do(401,"Missing auth token.");return n}(e),await async function(){const e=await ad();if(!e)throw new Do(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function ed(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${nd(n,t)}`}function td(e){return t=e,Rt("sha256").update(t).digest("hex");var t}function nd(e,t){return Ot("sha256",t).update(e).digest("base64url")}async function ad(){return Qo.serverAuth.findUnique({where:{id:Jo}})}function rd(e){const t=id(16);return`${Xo}:${t}:${zt(e,t,64).toString("base64url")}`}function id(e){return $t(e).toString("base64url")}function sd(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&Ut(n,a)}var od=xn({loader:()=>dd});async function dd({request:e}){try{return Ro(e,["GET"]),Lo(await async function(){return{passwordConfigured:!!(await ad())}}())}catch(t){return Fo(t)}}var cd=xn({action:()=>ld});async function ld({request:e}){try{return Ro(e,["POST"]),Lo(await Yo($o((await Oo(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return Fo(t)}}var ud=xn({loader:()=>md});async function md({request:e}){try{return Ro(e,["GET"]),Lo(await async function(e){return{authenticated:!0,issuedAt:(await Zo(e)).issuedAt}}(e))}catch(t){return Fo(t)}}function hd(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function fd(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function pd(e){const t=hd(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var gd=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-${_t()}`,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=wd(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,Kt(t,{recursive:!0,mode:448}),Bt(t,448),this.child=dn(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(xd(t.id));a&&(clearTimeout(a.timeout),this.pending.delete(xd(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()}},vd=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new gd(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()}};function wd(e){return nn(function(e){return"~"===e?Jt():e.startsWith("~/")?nn(Jt(),e.slice(2)):rn(e)}(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts"),e)}function xd(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}async function yd(e){const t=await Qo.codexAccount.findUnique({where:{id:e}});if(!t)throw new Do(404,"Codex account not found.");return t}async function bd(e){const t=await yd(e);if(Cd(e))return vd.stopRuntime(e),await Qo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."};await Qo.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}});try{const n=Id(t);if(hd(hd((await n.request("account/read",{refreshToken:!1})).result)?.account))return await Qo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."};const a=hd((await n.request("account/login/start",{type:"chatgpt"})).result),r=fd(a?.authUrl)??fd(a?.auth_url)??fd(a?.url)??null,i=fd(a?.loginId)??null,s=r?"AUTHENTICATING":"CONNECTED";if(await Qo.codexAccount.update({where:{id:e},data:{status:s,lastAuthUrl:r,lastError:null}}),r){const t=n.onEvent(n=>{const a=hd(n.params);if("account/login/completed"===n.method)return t(),!1===a?.success?void Qo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:fd(a.error)??"Login failed."}}):void Qo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}});"account/updated"===n.method&&fd(a?.authMode)&&(t(),Qo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}))})}return{accountId:e,status:s,authUrl:r,loginId:i,message:r?"Open the returned URL to finish Codex authentication.":"Codex account is connected."}}catch(n){const t=n instanceof Error?n.message:"Authentication failed.";return await Qo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:null,message:t}}}async function Nd(e,t){const n=await yd(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Do(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Do(400,"Callback URL must use http.");if(t.username||t.password)throw new Do(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 Do(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Do(400,"Callback URL must include an OAuth code or error.");return t}(t),r=Id(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 Do(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=hd((await i)?.params);if(!1===s?.success){const t=fd(s.error)??"Login failed.";return await Qo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:null,message:t}}return await async function(e,t){return!!hd(hd((await t.request("account/read",{refreshToken:!1})).result)?.account)&&(await Qo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),!0)}(n.id,r)?{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."}:Cd(e)?(vd.stopRuntime(e),await Qo.codexAccount.update({where:{id:e},data:{status:"CONNECTED",lastAuthUrl:null,lastError:null}}),{accountId:e,status:"CONNECTED",authUrl:null,message:"Codex account is connected."}):(await Qo.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authUrl:n.lastAuthUrl,message:"Callback accepted. Codex is still finishing authentication."})}catch(s){const t=s instanceof Error?s.message:"Authentication failed.";return await Qo.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authUrl:n.lastAuthUrl,message:t}}}function Id(e){return vd.getRuntime({accountId:e.id,command:e.command,args:Td(e.args),workingDirectory:null,environment:pd(e.environment)})}function kd(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function Cd(e){try{const t=Wt(`${wd(e)}/auth.json`,"utf8"),n=JSON.parse(t);return!("chatgpt"!==fd(n.auth_mode)||!hd(n.tokens)&&!fd(n.OPENAI_API_KEY))}catch{return!1}}function Ad(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function Ed(e){return{args:Ad(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?jt.JsonNull:JSON.parse(JSON.stringify(t))),lastAuthUrl:null,lastError:null,status:"DISCONNECTED"};var t}function Md(e){return{id:e.id,displayName:e.displayName,status:e.status,command:e.command,args:Td(e.args),environment:pd(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Td(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):kd()}function Sd(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Do(400,`${n} must be an object.`);return{id:Od(e.id,`${n}.id`,128),displayName:Rd(e.displayName,`${n}.displayName`,128),command:Od(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:$d(e.args,`${n}.args`)??kd(),defaultModel:Od(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:qd(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:Dd(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:Ld(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:_d(e.environment,`${n}.environment`)}}function Pd(e){return null==e?null:Rd(e,"runtime option",128)}function Dd(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 Do(400,`${t} is invalid.`)}function Ld(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Do(400,`${t} is invalid.`)}function qd(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Do(400,`${t} is invalid.`)}function Rd(e,t,n){const a=Od(e,t,n);if(!a)throw new Do(400,`${t} is required.`);return a}function Od(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Do(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Do(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function $d(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Do(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function _d(e,t){if(null==e)return null;const n=hd(e);if(!n)throw new Do(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var zd=xn({action:()=>jd,loader:()=>Ud});async function Ud({request:e}){try{return Ro(e,["GET"]),await Zo(e),Lo(await Qo.codexAccount.findMany({orderBy:{createdAt:"asc"}}))}catch(t){return Fo(t)}}async function jd({request:e}){try{Ro(e,["POST"]),await Zo(e);const t=await Oo(e);return Lo(await async function(e){return Qo.codexAccount.create({data:{displayName:e.displayName,command:e.command??process.env.CODEX_COMMAND??"codex",args:Ad(e.args??kd()),defaultModel:Pd(e.defaultModel),defaultPermissionMode:qd(e.defaultPermissionMode),defaultReasoningEffort:Dd(e.defaultReasoningEffort),defaultServiceTier:Ld(e.defaultServiceTier),environment:Ad(e.environment)}})}({displayName:$o(t.displayName,"displayName",{required:!0,maxLength:128}),command:$o(t.command,"command"),args:_o(t.args,"args"),defaultModel:Fd(t.defaultModel,"defaultModel"),defaultPermissionMode:Fd(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Fd(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Fd(t.defaultServiceTier,"defaultServiceTier"),environment:zo(t.environment,"environment")}),{status:201})}catch(t){return Fo(t)}}function Fd(e,t){return null===e?null:$o(e,t,{maxLength:128})}var Bd=xn({loader:()=>Gd});async function Gd({request:e}){try{return Ro(e,["GET"]),await Zo(e),Lo(await async function(){const e=await Qo.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:Td(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 Fo(t)}}var Hd=xn({action:()=>Kd});async function Kd({request:e}){try{Ro(e,["POST"]),await Zo(e);const t=await Oo(e);if(!Array.isArray(t.accounts))throw new Do(400,"accounts must be an array.");return Lo(await async function(e){const t=e.accounts.map(Sd),n=[];for(const s of t){const e=s.id?await Qo.codexAccount.findUnique({where:{id:s.id}}):null;e?(vd.stopRuntime(e.id),n.push(await Qo.codexAccount.update({where:{id:e.id},data:Ed(s)}))):n.push(await Qo.codexAccount.create({data:{...s.id?{id:s.id}:{},...Ed(s)}}))}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await bd(s.id));const r=await Qo.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=>Md(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return Fo(t)}}var Wd=xn({action:()=>Qd,loader:()=>Vd});async function Vd({request:e,params:t}){try{return Ro(e,["GET"]),await Zo(e),Lo(await yd(jo(t,"accountId")))}catch(n){return Fo(n)}}async function Qd({request:e,params:t}){try{await Zo(e);const n=jo(t,"accountId");if("PATCH"===e.method){const t=await Oo(e);return Lo(await async function(e,t){return await yd(e),vd.stopRuntime(e),Qo.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:Ad(t.args),environment:Ad(t.environment),status:"DISCONNECTED",lastError:null}})}(n,{displayName:$o(t.displayName,"displayName",{maxLength:128}),command:$o(t.command,"command"),args:_o(t.args,"args"),environment:zo(t.environment,"environment")}))}if("DELETE"===e.method)return Lo(await async function(e){return await yd(e),vd.stopRuntime(e),Qo.codexAccount.delete({where:{id:e}})}(n));qo(e.method)}catch(n){return Fo(n)}}var Jd=xn({action:()=>Xd});async function Xd({request:e,params:t}){try{Ro(e,["PATCH"]),await Zo(e);const n=await Oo(e),a={defaultModel:Yd(n.defaultModel,"defaultModel"),defaultPermissionMode:Yd(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:Yd(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:Yd(n.defaultServiceTier,"defaultServiceTier")};return Lo(await async function(e,t){return await yd(e),Md(await Qo.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:Pd(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:qd(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:Dd(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:Ld(t.defaultServiceTier)}}))}(jo(t,"accountId"),a))}catch(n){return Fo(n)}}function Yd(e,t){return null===e?null:$o(e,t,{maxLength:128})}async function Zd(e){return async function(e){return(await vd.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(nc(await tc(e)))}async function ec(e){return async function(e){return(await vd.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}(nc(await tc(e)))}async function tc(e){const t=await Qo.codexAccount.findUnique({where:{id:e}});if(!t)throw new Do(404,"Account not found.");if("CONNECTED"!==t.status)throw new Do(400,"Authenticate the account before loading Codex account data.");return t}function nc(e){return{accountId:e.id,args:ac(e.args),command:e.command,environment:pd(e.environment),workingDirectory:null}}function ac(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var rc=xn({loader:()=>ic});async function ic({request:e,params:t}){try{return Ro(e,["GET"]),await Zo(e),Lo(await Zd(jo(t,"accountId")))}catch(n){return Fo(n)}}var sc=xn({loader:()=>oc});async function oc({request:e,params:t}){try{return Ro(e,["GET"]),await Zo(e),Lo(await ec(jo(t,"accountId")))}catch(n){return Fo(n)}}var dc=xn({action:()=>cc});async function cc({request:e,params:t}){try{return Ro(e,["POST"]),await Zo(e),Lo(await bd(jo(t,"accountId")))}catch(n){return Fo(n)}}var lc=xn({action:()=>uc});async function uc({request:e,params:t}){try{Ro(e,["POST"]),await Zo(e);const n=$o((await Oo(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Lo(await Nd(jo(t,"accountId"),n))}catch(n){return Fo(n)}}var mc="global",hc=new Map;async function fc(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=hc.get(mc);if(!e.force&&n&&t-n.lastScanAt<Bc("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 Lc();if(!e.length)return;const t=(await Promise.all(e.map(e=>zc(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs).slice(0,jc()),n=await async function(e){const t=e.map(e=>el(e.path)).filter(e=>!!e);if(!t.length)return new Set;const n=await Qo.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=el(a.path);e&&n.has(e)||await vc(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=hc.get(mc);e?.promise===r&&(e.promise=void 0)});a.promise=r,hc.set(mc,a),await r,await async function(){const e=await Qo.chat.findMany({where:{messages:{some:{metadata:{path:"$.kind",equals:"localCodexImport"}}}},select:{id:!0},take:jc()});for(const t of e)await Qo.$transaction(e=>xc(e,t.id))}()}async function pc(e,t){const n=await Qo.chat.findUnique({where:{id:e},select:{externalThreadId:!0}}),a=await rl(e)??(n?.externalThreadId?await qc(n.externalThreadId):null);if(!a)return;const r=nn(wd(t),"sessions",function(e){const t=`${sn}sessions${sn}`,n=e.lastIndexOf(t);return-1===n?Xt(e):e.slice(n+t.length)}(a));if(rn(a)!==rn(r)){try{return void(await cn(r,Gt.R_OK))}catch{}await un(Zt(r),{recursive:!0,mode:448}),await ln(a,r)}}async function gc(e,t){const n=await rl(e);if(n){const e=await Oc(n,t);if(e)return e}const a=await qc(t);return a?Oc(a,t):null}async function vc(e){const t=await gn(e);if(!t.isFile()||t.size>Fc())return;const n=wc(await hn(e,"utf8"),e,new Date(t.mtimeMs));if(!n||"xedoc"===n.originator)return;const a=await Tc(e,n.externalThreadId),r=a?.updatedAt??n.updatedAt;await Qo.$transaction(async e=>{const t=await e.chat.findFirst({where:{externalThreadId:n.externalThreadId},select:{id:!0}});t?await xc(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 wc(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=Jc(f);if(!e)continue;const u=Xc(e.timestamp)??n;o=Yc(o,u),d=Zc(d,u);const m=hd(e.payload);if("session_meta"===e.type&&m){a=fd(m.id)??a,r=fd(m.source)??r,i=fd(m.originator)??i,s=fd(m.cwd)??s,o=Xc(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=fd(m.cwd)??s;continue}const h=yc(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=bc(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??el(t);if(!m||!u.length)return null;const h=tl(u.find(e=>"USER"===e.role)?.content??"")??tl(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 xc(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"===hd(e.metadata)?.kind),o=s.filter(e=>"USER"===e.role&&Nc(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=tl(d.find(e=>"USER"===e.role&&!Nc(e.content))?.content??d.find(e=>!Nc(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=hd(t.metadata);if("localCodexImport"!==e?.kind)continue;const n=fd(e.sessionPath);if(n)return n}return null}(e)??await qc(t);return n?Tc(n,t):null}(s,r.externalThreadId):null),u=l?.title??null,m=l?.updatedAt??a??null,h=nl(r.title),f={};if(m&&r.lastActivityAt.getTime()!==m.getTime()&&(f.lastActivityAt=m),u)h!==nl(u)&&(f.title=u);else{const e=new Set([nl(c),nl("Imported Codex chat")]);(Nc(r.title)||e.has(h)||!h)&&(f.title=c)}Object.keys(f).length&&await e.chat.update({where:{id:r.id},data:f})}function yc(e,t,n){if("response_item"!==e.type)return null;const a=hd(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?Cc(e.text,e):"string"==typeof e.message?Cc(e.message,e):"string"==typeof e.content?Cc(e.content,e):Array.isArray(e.content)?Cc(e.content.map(e=>{if("string"==typeof e)return e;const t=hd(e);return t?"string"==typeof t.text?t.text:Ec(t)??"":""}).join(""),e):Cc("",e)}(a);return!s.trim()||Nc(s)?null:{content:s,createdAt:t,metadata:Ic(a,n),rawPayload:kc(e,a),role:r}}function bc(e,t,n){if("event_msg"!==e.type)return null;const a=hd(e.payload);if(!a)return null;const r=fd(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?Cc(a.message,a):"";return!s.trim()||Nc(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...Ic(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:kc(e,a),role:i}}function Nc(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function Ic(e,t){return{kind:"localCodexImport",originator:t.originator,phase:fd(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:fd(e.type)}}function kc(e,t){return{payload:{name:fd(t.name),phase:fd(t.phase),role:fd(t.role),type:fd(t.type)},timestamp:fd(e.timestamp),type:fd(e.type)}}function Cc(e,t){return[e,...Ac(t.images),...Ac(t.local_images),...Ac(t.localImages)].filter(Boolean).join("\n\n")}function Ac(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Mc(e):Ec(hd(e))).filter(e=>!!e):[]}function Ec(e){return e?Mc(fd(e.url)??fd(e.image_url)??fd(e.path)??fd(e.filePath)):null}function Mc(e){const t=e?.trim();return t?`<image>${t}</image>`:null}async function Tc(e,t){if(!e||!t)return null;const n=function(e){const t=`${sn}sessions${sn}`,n=rn(e),a=n.lastIndexOf(t);return-1===a?null:nn(n.slice(0,a),"session_index.jsonl")}(e);if(!n)return null;try{return function(e,t){return Pc(e).get(t)??null}(await hn(n,"utf8"),t)}catch{return null}}async function Sc(e){try{return Pc(await hn(e,"utf8"))}catch{return new Map}}function Pc(e){const t=new Map;for(const n of e.split(/\r?\n/)){if(!n.trim())continue;const e=Jc(n);if(!e)continue;const a=fd(e.id)??fd(e.thread_id)??fd(e.threadId)??fd(e.session_id)??fd(e.sessionId);if(!a)continue;const r=Dc(fd(e.thread_name)??fd(e.threadName)??fd(e.name)??fd(e.title)),i=Xc(e.updated_at)??Xc(e.updatedAt)??Xc(e.modified_at)??Xc(e.modifiedAt)??null,s=t.get(a);t.set(a,{title:r??s?.title??null,updatedAt:i??s?.updatedAt??null})}return t}function Dc(e){const t=e?.replace(/\s+/g," ").trim();return!t||Nc(t)?null:t.slice(0,160)}async function Lc(){const e=[...$c(),nn(al(process.env.CODEX_HOME?.trim()||"~/.codex"),"sessions"),...await _c()],t=[...new Set(e.map(e=>al(e)))],n=[];for(const a of t)try{await cn(a,Gt.R_OK),n.push(a)}catch{}return n}async function qc(e){const t=await Lc(),n=(await Promise.all(t.map(e=>zc(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs),a=n.find(t=>el(t.path)===e);if(a)return a.path;for(const r of n.slice(0,jc()))if(await Rc(r.path,e))return r.path;return null}async function Rc(e,t){try{const n=await gn(e);if(!n.isFile()||n.size>Fc())return null;const a=wc(await hn(e,"utf8"),e,new Date(n.mtimeMs));return a?.externalThreadId===t?a:null}catch{return null}}async function Oc(e,t){try{const n=await gn(e);if(!n.isFile()||n.size>Fc())return null;let a,r=null;for(const t of(await hn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=Jc(t);if(!e)continue;"session_meta"===e.type&&(a=fd(hd(e.payload)?.id)??a);const n=Gc(e);n&&(r=n)}return(a??el(e))===t?r:null}catch{return null}}function $c(){const e=process.env.CODEX_LOCAL_CHAT_IMPORT_ROOTS?.trim();return e?e.split(Yt).map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith("/sessions")?e:nn(e,"sessions")):[]}async function _c(){const e=al(process.env.CODEX_ACCOUNTS_HOME?.trim()||"~/.xedoc/accounts");try{return(await fn(e,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(t=>nn(e,t.name,"sessions"))}catch{return[]}}async function zc(e){const t=[];return await Uc(e,t,0),t}async function Uc(e,t,n){if(n>6)return;let a;try{a=await fn(e,{withFileTypes:!0})}catch{return}await Promise.all(a.map(async a=>{const r=nn(e,a.name);if(a.isDirectory())return void(await Uc(r,t,n+1));if(!a.isFile()||!a.name.endsWith(".jsonl"))return;const i=await gn(r);t.push({mtimeMs:i.mtimeMs,path:r})}))}function jc(){return Bc("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3)}function Fc(){return Bc("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function Bc(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function Gc(e){const t=Hc(e);if(!t)return null;const n=hd(t.params),a=hd(t.info)??hd(n?.info)??n??t;return function(e,t=e){const n=Wc(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=Wc(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=Wc(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}([Wc(e,["input_tokens","inputTokens"]),Wc(e,["output_tokens","outputTokens"]),Wc(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}}(Kc(a,["last_token_usage","lastTokenUsage"])??Kc(a,["total_token_usage","totalTokenUsage"])??a,a)}function Hc(e,t=0){if(t>4)return;const n=hd(e);if(!n)return;const a=Qc(fd(n.type)??""),r=Qc(fd(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=Hc(n[i],t+1);if(e)return e}}function Kc(e,t){for(const n of t){const t=hd(e[n]);if(t)return t}}function Wc(e,t){for(const n of t){const t=Vc(e[n]);if(void 0!==t)return t}}function Vc(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 Qc(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function Jc(e){try{return hd(JSON.parse(e))??null}catch{return null}}function Xc(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function Yc(e,t){return!e||t<e?t:e}function Zc(e,t){return!e||t>e?t:e}function el(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function tl(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 nl(e){return e.replace(/\s+/g," ").trim().toLowerCase()}function al(e){return"~"===e?Jt():e.startsWith("~/")?nn(Jt(),e.slice(2)):rn(e)}async function rl(e){const t=await Qo.chatMessage.findMany({where:{chatId:e},orderBy:{sequence:"asc"},select:{metadata:!0},take:10});for(const n of t){const e=hd(n.metadata);if("localCodexImport"!==e?.kind)continue;const t=fd(e.sessionPath);if(t)return t}return null}var il="__xedocRealtimeState__";function sl(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[il]??={handlers:new Set},e[il]}().handlers)r(a)}async function ol(e){const t=ll(),n=ul(t,e),a=await fn(n,{withFileTypes:!0});return{root:t,path:n,parentPath:n===t?null:Zt(n),entries:a.map(e=>function(e,t){return{name:t.name,path:nn(e,t.name),type:ml(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 dl(e,t){const n=ll(),a=rn(ul(n,e),function(e){const t=e.trim();if(!t)throw new Do(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Do(400,"Folder name must be a single folder name.");return t}(t)),r=an(n,a);if(r.startsWith("..")||tn(r))throw new Do(403,"Path is outside the workspace root.");try{await un(a)}catch(i){if(function(e){return e instanceof Error&&"code"in e}(i)&&"EEXIST"===i.code)throw new Do(409,"Folder already exists.");throw i}return ol(a)}function cl(e){return ul(ll(),e)}function ll(){const e=function(e){return"~"===e?Jt():e.startsWith("~/")?nn(Jt(),e.slice(2)):rn(e)}(process.env.CODEX_WORKSPACE_ROOT?.trim()||"~");return Ht(e)||Kt(e,{recursive:!0}),Vt(e)}function ul(e,t){const n=t?.trim(),a=n?tn(n)?n:nn(e,n):e;let r;try{r=Vt(rn(a))}catch{throw new Do(400,"Workspace path does not exist.")}const i=an(e,r);if(i.startsWith("..")||tn(i))throw new Do(403,"Path is outside the workspace root.");if(!Qt(r).isDirectory())throw new Do(400,"Workspace path is not a directory.");return r}function ml(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var hl=1e6;async function fl(e,t,n){const a=await Qo.chat.findUnique({where:{id:e},select:{workingDirectory:!0}});if(!a)throw new Do(404,"Chat not found.");if(!a.workingDirectory)throw new Do(400,"Chat does not have a working directory.");const r=cl(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 pl(r,i.path),o=await gl(s,r),d=n??i.line??null,c=Math.min(o.size,hl),l=c?await async function(e,t){const n=await mn(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:vl(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>hl}}async function pl(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Do(400,"File path is required.");const a=await pn(e),r=tn(n)?n:rn(a,n);let i;try{i=await pn(r)}catch{throw new Do(404,"File does not exist.")}return function(e,t){const n=an(e,t);if(n.startsWith("..")||tn(n))throw new Do(403,"Path is outside the chat working directory.")}(a,i),i}async function gl(e,t){const n=await gn(e);if(!n.isFile())throw new Do(400,"Workspace path is not a file.");const a=t?await pn(t):null;return{name:Xt(e),path:e,relativePath:a&&an(a,e)||Xt(e),size:n.size}}function vl(e){const t=en(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 wl=new Map,xl=new Map,yl=new Map,bl=new Map,Nl=new Map,Il=new Map,kl=new Map,Cl=new Map;function Al(e,t){return async function(e,t){const n=Il.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Il.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Il.get(e)===i&&Il.delete(e)}}(e,async()=>Qo.chatMessage.create({data:{...t,chatId:e,sequence:await Su(e)}}))}function El(e,t){const n=(kl.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return kl.set(e,a),a.finally(()=>{kl.get(e)===a&&kl.delete(e)}),n}async function Ml(){await fc(),await async function(){const e=await Qo.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 Sc(nn(wd(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=jl(a,e);if(t){const e=await Qo.chat.update({where:{id:a.id},data:t});Pu(a.id,"chat.updated",ym(e))}}}()}function Tl(){return Qo.chat.findMany({where:{status:{not:"ARCHIVED"}},orderBy:[{lastActivityAt:"desc"},{updatedAt:"desc"}]})}async function Sl(e){const t=await Qo.chat.findUnique({where:{id:e}});if(!t)throw new Do(404,"Chat not found.");return async function(e){return e.accountId&&e.externalThreadId?Ul(e,e.accountId,e.externalThreadId):e}(t)}async function Pl(e,t){const n=await Sl(e),a=await async function(e,t){if(void 0===t||t===e.accountId)return;if(null===t)return null;const n=await Qo.codexAccount.findUnique({where:{id:t}});if(!n)throw new Do(400,"Account not found.");if("CONNECTED"!==n.status)throw new Do(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:Rl(t.collaborationMode),s=void 0!==i&&i!==Ol(n.collaborationMode),o=void 0===t.permissionMode?void 0:$l(t.permissionMode),d=void 0!==o&&o!==_l(n.permissionMode);if(void 0!==t.workingDirectory)throw new Do(400,"Chat working directory cannot be changed.");if(r&&"RUNNING"===n.status)throw new Do(400,"Wait for the current run to finish before switching accounts.");if(s&&"RUNNING"===n.status)throw new Do(400,"Wait for the current run to finish before changing modes.");const c=await Qo.chat.update({where:{id:e},data:{accountId:a,model:void 0===t.model?void 0:Dl(t.model),reasoningEffort:void 0===t.reasoningEffort?void 0:Ll(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:ql(t.serviceTier),collaborationMode:i,permissionMode:o,title:t.title,externalThreadId:r&&n.accountId||s?null:void 0}});return r&&!n.accountId&&a&&pc(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 Qo.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return;await km(vd.getRuntime({accountId:t.id,command:t.command,args:Cm(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 xl.values())n.chatId===e&&(n.permissionMode=t)}(e,o),"fullAccess"===o&&await async function(e){const t=[...wl.values()].filter(t=>t.chatId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=lm(t);n.runtime.respondToServerRequest(n.rpcId,a),wl.delete(pm(e,n.requestId));const r=await Qo.chatMessage.findUnique({where:{id:n.messageId}});r&&Pu(e,"message.updated",xm(await Qo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:fm(r.metadata,{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,result:a,resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}}(e)),c}function Dl(e){if(null===e)return null;const t=e.trim();if(!t)throw new Do(400,"Runtime option cannot be empty.");return t}function Ll(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Do(400,"reasoningEffort is invalid.");return e}function ql(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Do(400,"serviceTier is invalid.")}function Rl(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Do(400,"collaborationMode is invalid.")}function Ol(e){return"plan"===e?"plan":"default"}function $l(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Do(400,"permissionMode is invalid.")}function _l(e){return"fullAccess"===e?"fullAccess":"default"}function zl(e){const t=Nm(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"chat"===t}async function Ul(e,t,n){const a=jl(e,(await Sc(nn(wd(t),"session_index.jsonl"))).get(n));if(!a)return e;const r=await Qo.chat.update({where:{id:e.id},data:a});return Pu(e.id,"chat.updated",ym(r)),r}function jl(e,t){if(!t)return null;const n={};return t.title&&Nm(e.title)!==Nm(t.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 Fl(e,t=0,n=50){const a=await Sl(e);await async function(e){const t=await Qo.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 Qo.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 Qo.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 Qo.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return[];const n=vd.getRuntime({accountId:t.id,command:t.command,args:Cm(t.args),workingDirectory:null,environment:pd(t.environment)});try{const t=Kl((await n.request("thread/turns/list",{threadId:e.externalThreadId,limit:1e3},3e4)).result);if(t.length)return t}catch{}try{return Kl((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 rl(e);if(n){const e=await Rc(n,t);if(e)return e}const a=await qc(t);return a?Rc(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(Bl),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??Gl(e.id,e.externalThreadId,t,n),itemId:t.itemId??a?.itemId??null,kind:t.kind??"CHAT",metadata:(t.metadata?gm(t.metadata):null)??a?.metadata??Hl(t),rawPayload:gm(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||(!Bl(e)||!t.has(e.role)))}(e,i)).map(xm);return[...o,...d].sort((e,t)=>e.sequence-t.sequence)}(e,r,a):a.map(xm)).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 Bl(e){return"CHAT"===e.kind&&("USER"===e.role||"ASSISTANT"===e.role)}function Gl(e,t,n,a){return["codex",e,t??"thread",n.turnId??"turn",n.itemId??a,n.role.toLowerCase()].join(":")}function Hl(e){return{kind:"codexTranscript",source:e.source}}function Kl(e){return function(e){const t=hd(e),n=hd(t?.thread),a=[Array.isArray(e)?e:null,t?.data,t?.items,t?.turns,n?.turns];for(const r of a){const e=Xl(r);if(e)return e}return[]}(e).flatMap(e=>function(e){const t=fd(e.id)??fd(e.turnId)??fd(e.turn_id)??null,n=Yl(e.createdAt??e.created_at??e.timestamp??e.startedAt),a=Yl(e.completedAt??e.completed_at??e.finishedAt??e.updatedAt);return(Xl(e.items)??[]).map(e=>function(e,t){const n=function(e){const t=fd(e.role)?.toLowerCase();if("user"===t)return"USER";if("assistant"===t||"agent"===t)return"ASSISTANT";const n=fd(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,...Vl(t.images),...Vl(t.local_images),...Vl(t.localImages)].filter(Boolean).join("\n\n")}(vm(e.text)??vm(e.message)??vm(e.output)??Wl(e.content)??"",e)}(e);return!a.trim()||Nc(a)?null:{completedAt:Yl(e.completedAt??e.completed_at)??t.completedAt,content:a,createdAt:Yl(e.createdAt??e.created_at??e.timestamp)??t.createdAt,itemId:fd(e.id)??fd(e.itemId)??fd(e.item_id)??null,rawPayload:Zl(e),role:n,source:"runtime",turnId:fd(e.turnId)??fd(e.turn_id)??t.turnId??null}}(e,{completedAt:a,createdAt:n,turnId:t})).filter(e=>!!e)}(e))}function Wl(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=hd(e);return vm(t?.text)??vm(t?.content)??vm(t?.message)??Ql(t)??""}).join("");return t.length?t:void 0}function Vl(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Jl(e):Ql(hd(e))).filter(e=>!!e):[]}function Ql(e){return e?Jl(fd(e.url)??fd(e.image_url)??fd(e.path)??fd(e.filePath)):null}function Jl(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function Xl(e){return Array.isArray(e)?e.map(e=>hd(e)).filter(e=>!!e):null}function Yl(e){if("string"!=typeof e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Zl(e){return{id:fd(e.id),itemId:fd(e.itemId)??fd(e.item_id),role:fd(e.role),type:fd(e.type)}}async function eu(e,t,n){await Sl(e);const a=pm(e,t),r=wl.get(a);if(!r)throw new Do(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Do(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Do(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Do(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),wl.delete(a);const s=xm(await Qo.chatMessage.update({where:{id:r.messageId},data:{status:"COMPLETED",completedAt:new Date,metadata:fm(await hm(r.messageId),{status:"resolved",decision:n.decision,result:n.result??i,resolvedAt:(new Date).toISOString()})}}));return Pu(e,"message.updated",s),s}async function tu(e,t){const n=await Sl(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Do(400,"Switch the chat account before sending with a different account.");const a=t.accountId??n.accountId;if(!a)throw new Do(400,"Choose a Codex account before sending messages.");const r=await Qo.codexAccount.findUnique({where:{id:a}});if(!r)throw new Do(400,"Account not found.");if("CONNECTED"!==r.status)throw new Do(400,"Authenticate the account before sending messages.");if(!n.workingDirectory)throw new Do(400,"Select a working directory before sending messages.");const i=cl(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new Do(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 Do(400,"Attachment kind is invalid.");n.push(await su(e,a))}else n.push(iu(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 Do(400,"Message content or an attachment is required.");const d=await async function(e,t,n){if(!zl(t))return null;const a=((await Qo.chatMessage.findFirst({where:{chatId:e,kind:"CHAT",role:"USER",content:{not:""}},orderBy:{sequence:"asc"}}))?.content??n).trim();return a||null}(e,n.title,o),c=void 0===t.collaborationMode?void 0:Rl(t.collaborationMode),l=c??Ol(n.collaborationMode),u=_l(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=au(n.id);if(!l?.runtime)throw new Do(409,"The active turn is not ready for steering yet.");const u=l.externalThreadId??n.externalThreadId;if(!u)throw new Do(409,"The active turn has not published a thread yet.");const m=l.turnId??await hu(l.runtime,u);if(!m)throw new Do(409,"The active turn has not published a turn id yet.");const h=await Qo.chat.findUnique({where:{id:n.id}}),f=await Eu(l.runtime,h?.model??n.model,h?.reasoningEffort??n.reasoningEffort);l.turnId=Ru(await async function(e,t,n,a){async function r(r){const i=bu(n,a),s=void 0===t.collaborationMode?[t]:[t,mu(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&&Iu(d))break;if(Nu(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 hu(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(l.runtime,{expectedTurnId:m,threadId:u,...Cu(a,f)},r,t))??m,l.externalThreadId=u;const p=await Al(n.id,{role:"USER",status:"COMPLETED",content:i,completedAt:d,metadata:wm(du({...s,delivery:"steer",steeredAt:d.toISOString()},t))}),g=await Qo.chat.update({where:{id:n.id},data:{lastActivityAt:d,updatedAt:d}});return Pu(n.id,"chat.updated",ym(g)),Pu(n.id,"message.created",xm(p)),{message:xm(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=_t(),m=await Al(a.id,{role:"USER",status:"COMPLETED",content:s,completedAt:c,metadata:wm(du({...o,delivery:"queue",queueId:u,queueStatus:"queued",queuedAt:c.toISOString()},t))});!function(e,t){const n=yl.get(e)??[];yl.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 Qo.chat.update({where:{id:a.id},data:{lastActivityAt:c,updatedAt:c}});return Pu(a.id,"chat.updated",ym(h)),Pu(a.id,"message.created",xm(m)),{message:xm(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 Al(e,{role:"USER",status:"COMPLETED",content:o,completedAt:m,metadata:wm(du(t.metadata,s))});Pu(e,"message.created",xm(h));const f=await nu({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:xm(h),assistantMessage:xm(f.assistantMessage),runId:f.run.id,status:"QUEUED"}}async function nu({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 Qo.chatRun.create({data:{chatId:a,accountId:e,status:"QUEUED",request:wm({attachments:t.map(e=>e.message),collaborationMode:r,content:i,metadata:s,permissionMode:o,workingDirectory:l})}}),m=await Al(a,{runId:u.id,role:"ASSISTANT",kind:"CHAT",status:"PENDING",content:""});return Pu(a,"chat.updated",ym(await Qo.chat.update({where:{id:a},data:{collaborationMode:d??void 0,lastActivityAt:c,status:"RUNNING",updatedAt:c}}))),Pu(a,"message.created",xm(m)),Pu(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=bl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);bl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),bl.get(e)===i&&bl.delete(e)}})(a,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=await Qo.codexAccount.findUnique({where:{id:a}}),u=await Qo.chat.findUnique({where:{id:e}});if(!l||!u)return;const m=_l(u.permissionMode),h=await Qo.chatMessage.update({where:{id:n},data:{status:"STREAMING"}});Pu(e,"message.updated",xm(h)),await Qo.chatRun.update({where:{id:t},data:{status:"RUNNING",startedAt:new Date}}),Pu(e,"run.status",{runId:t,status:"RUNNING"});const f={chatId:e,externalThreadId:u.externalThreadId,interruptRequested:!1,permissionMode:m,runId:t};xl.set(t,f);const p=vd.getRuntime({accountId:l.id,command:l.command,args:Cm(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=$u(e);if(t&&a&&a!==t)return!1;const r=_u(e);return!n||!r||r===n})(n,x,w)&&El(t,()=>async function(e,t){const n=function(e){const t=am(e);if(t){const e=hd(t.params),n=hd(t.info)??hd(e?.info)??e??t;return nm(rm(n,["last_token_usage","lastTokenUsage"])??rm(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=hd(e.params),a=hd(n?.event),r=hd(n?.usage)??hd(a?.usage)??(tm(e.method)?n:void 0);return r?nm(r):null}(t);n&&Pu(e.chatId,"context.updated",n);if(function(e){return!!am(e)||tm(e.method)}(t))return;if(function(e){const t=hd(e.params),n=hd(t?.payload)??hd(t?.event);return[e.method,fd(t?.type),fd(n?.type),fd(n?.event)].some(e=>Gu(e??"").includes("compact"))}(t))return void(await Lu({chatId:e.chatId,completedAt:new Date,content:Zu(t),itemId:`context-compaction:${_u(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:em(t)?"STREAMING":"COMPLETED",turnId:_u(t)}));const a=t.method??"",r=hd(t.params),i=Uu(t),s=Gu(fd(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=hd(e.params),n=hd(e.result),a=hd(t?.event);return Im(t)??Im(a)??Im(n)}(t);return void(n&&await Em(e.chatId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=vm(r?.delta)??vm(hd(r?.event)?.delta);if(!n)return;const a=zu(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await Lu({chatId:e.chatId,content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:fd(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:_u(t)});return void Pu(e.chatId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&Hu(s))return void(await Lu({chatId:e.chatId,content:"",fallbackMessageId:e.assistantMessageId,itemId:zu(t),kind:"CHAT",metadata:{kind:"assistant",phase:fd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:_u(t)}));if("item/completed"===a&&Hu(s)){const n=function(e){if(!e)return"";const t=vm(e.text)??vm(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>vm(hd(e)?.text)??"").filter(Boolean).join("")}(i)||qu(t);if(!n)return;const a=zu(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await Lu({chatId:e.chatId,completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:fd(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",turnId:_u(t)}))}if(a.startsWith("item/reasoning/")||Gu(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=zu(t)??`${n.toLowerCase()}:${_u(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 Lu({chatId:e.chatId,content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:Ku(t)?"COMPLETED":"STREAMING",turnId:_u(t)})}(e,t,"THINKING",{content:Fu(t,i),delta:ju(t),metadata:{kind:"thinking",status:Vu(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=hd(t.params)??{},a="item/plan/delta"===t.method?ju(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>hd(e)).filter(e=>!!e).map(e=>({status:fd(e.status)??"pending",step:fd(e.step)??""})).filter(e=>e.step),i=fd(n.explanation),s=_u(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:zu(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 Lu({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=hd(t.params)??{},r=n??a,i=zu(t)??`command:${_u(t)??"turn"}`,s=`COMMAND:${i}`,o=ju(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:vm(r.output)??vm(r.aggregatedOutput)??vm(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=fd(r.command)??fd(a.command)??"command",l=Vu(r,t.method??"");await Lu({chatId:e.chatId,completedAt:Ku(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:Xu(r.actions)??Xu(r.commandActions),command:c,cwd:fd(r.cwd)??fd(a.cwd),durationMs:Yu(r.durationMs)??Yu(r.duration_ms),exitCode:Yu(r.exitCode)??Yu(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":Ku(t)?"COMPLETED":"STREAMING",turnId:_u(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=hd(t.params)??{},r=n??a,i=zu(t)??`file-change:${_u(t)??"turn"}`,s=Qu(r)??Qu(a),o=Xu(r.changes)??Xu(a.changes)??[],d=function(e,t){const n=[fd(e.path),fd(e.filePath),fd(e.file_path),...t.flatMap(e=>{const t=hd(e);return[fd(t?.path),fd(t?.filePath),fd(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await Lu({chatId:e.chatId,content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:Yu(r.additions)??Ju(s,"+"),changes:o,deletions:Yu(r.deletions)??Ju(s,"-"),diff:s,kind:"fileChange",paths:d,status:Vu(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:Ku(t)?"COMPLETED":"STREAMING",turnId:_u(t)})}(e,t,i));if("serverRequest/resolved"===a)return void(await async function(e,t){const n=hd(t.params)??{},a=fd(n.requestId)??fd(n.id);if(!a)return;wl.delete(pm(e,a));const r=await Qo.chatMessage.findFirst({where:{chatId:e,requestId:a}});if(!r)return;Pu(e,"message.updated",xm(await Qo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:fm(r.metadata,{result:void 0===n.result?null:gm(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=hd(t.params),a=fd(hd(n?.error)?.message)??fd(n?.message)??t.error?.message??"Codex runtime error.";await Lu({chatId:e.chatId,completedAt:new Date,content:a,itemId:`error:${_u(t)??Date.now()}`,kind:"ERROR",metadata:{details:gm(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",turnId:_u(t)})}(e,t)}({assistantMessageId:h.id,chatId:e,streamBuffers:v,runId:t,onAssistantContent:e=>{g=e}},n)).catch(e=>Du("Codex event projection failed.",e))}),I=p.onServerRequest(n=>{(function(e,t,n){const a=hd(e.params),r=fd(a?.threadId);if(t&&r&&r!==t)return!1;const i=fd(a?.turnId);return!n||!i||i===n})(n,x,w)&&El(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=hd(t.params)??{},r=xd(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?Gu(e).includes("permissions")?"permissions":"approval":Gu(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:fd(n.message),method:e,mode:fd(n.mode),questions:om(n.questions),raw:gm(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:Xu(n.availableDecisions),changes:Xu(n.changes),command:fd(n.command),cwd:fd(n.cwd),itemId:fd(n.itemId),kind:a,method:e,raw:gm(r),reason:fd(n.reason)??fd(n.message),requestId:t,requestKind:a,status:"pending",turnId:fd(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=lm(i);return e.runtime.respondToServerRequest(t.id,n),void(await Lu({chatId:e.chatId,completedAt:new Date,content:cm(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:fd(a.turnId),itemId:fd(a.itemId)}))}const o=await Lu({chatId:e.chatId,content:cm(s),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",turnId:fd(a.turnId),itemId:fd(a.itemId)});wl.set(pm(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=>Du("Codex server request projection failed.",e))});try{x=await async function(e,t,n){const a=t?"thread/resume":"thread/start",r=hd((await e.request(a,{...t?{threadId:t}:{},cwd:n},3e4)).result),i=fd(hd(r?.thread)?.id)??fd(r?.threadId)??fd(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=function(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)}(i),o=new Set(["untitled chat","conversation",...s?[Nm(s)]:[]]);(async()=>{const a=await async function(e,{cwd:t,seed:n}){try{const a=hd((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return bm(fd(a?.title)??fd(a?.name)??fd(a?.threadName)??"")}catch{return null}}(n,{cwd:t,seed:i});a&&await async function(e,t,n,a,r){const i=bm(a);if(!i)return!1;const s=await Qo.chat.findUnique({where:{id:t}});if(!s)return!1;const o=Nm(s.title);return!(!zl(s.title)&&!r.has(o))&&(await Em(t,i),km(e,n,i),!0)}(n,e,r,a,o)})().catch(()=>{})}({chatId:e,cwd:o,runtime:p,seed:c,threadId:x}),await lu(t)&&(f.interruptRequested=!0);const n=await Eu(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)&&$u(e)===x&&(!w||_u(e)===w),6e5,y.signal);const a=await async function(e,t,n,a){const r=bu(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,!Nu(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}:{},...ku(d,n,m),metadata:i},r,s);w=Ru(a),f.turnId=w,w&&(await Qo.chatRun.update({where:{id:t},data:{externalTurnId:w}}),(f.interruptRequested||await lu(t))&&(f.interruptRequested=!0,await uu(p,w,x)));const v=await b;if(await async function(e){await(kl.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(v))throw new cu(Wu(v));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Error(Wu(v));const N=await async function(e,t,n){try{const a=hd((await e.request("thread/turns/list",{threadId:t,limit:20},3e4)).result);return Ou((Array.isArray(a?.data)?a.data:[]).map(e=>hd(e)).filter(e=>!!e).filter(e=>!n||fd(e.id)===n).at(-1))??null}catch{return null}}(p,x,w)||qu(v)||qu(a)||g,I=new Date,k=await Qo.chatMessage.update({where:{id:h.id},data:{content:N,status:"COMPLETED",rawPayload:wm(v),completedAt:I}});await mm(e,t,"COMPLETED"),await um(e,t,"Codex completed the turn."),await Qo.chatRun.update({where:{id:t},data:{status:"COMPLETED",endedAt:new Date}});const C="plan"===d&&await async function(e,t){return(await Qo.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"===hd(e.metadata)?.presentation)})}(e,t),A=await Qo.chat.update({where:{id:e},data:{collaborationMode:C?"default":void 0,status:"IDLE",externalThreadId:x,lastActivityAt:I,updatedAt:I}});Pu(e,"chat.updated",ym(A)),Pu(e,"message.completed",xm(k)),Pu(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=Im(hd((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result));if(n)return n}catch{}try{const n=hd((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return Im((Am(n?.data)??Am(n?.items)??Am(n?.threads)??[]).find(e=>fd(e.id)===t))}catch{return null}}(e,n);a&&await Em(t,a)}(p,e,x),await Ul(A,l.id,x)}catch(k){y?.abort(),await(b?.catch(()=>{}));const n=k instanceof Error?k.message:"Codex run failed.";if(await um(e,t,n),k instanceof cu){await mm(e,t,"COMPLETED");const a=new Date,r=await Qo.chatMessage.update({where:{id:h.id},data:{status:"COMPLETED",content:g,completedAt:a,metadata:fm(h.metadata,{interrupted:!0,kind:"assistant"})}});return await Qo.chatRun.update({where:{id:t},data:{status:"CANCELLED",error:n,endedAt:new Date}}),Pu(e,"chat.updated",ym(await Qo.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Pu(e,"message.completed",xm(r)),void Pu(e,"run.status",{runId:t,status:"CANCELLED",error:n})}const a=new Date,r=await Qo.chatMessage.update({where:{id:h.id},data:{status:"FAILED",content:g,completedAt:a}});await mm(e,t,"FAILED"),await Qo.chatRun.update({where:{id:t},data:{status:"FAILED",error:n,endedAt:new Date}}),Pu(e,"chat.updated",ym(await Qo.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Pu(e,"message.failed",{...xm(r),error:n}),Pu(e,"run.status",{runId:t,status:"FAILED",error:n})}finally{y?.abort(),N(),I(),xl.delete(t),kl.delete(t),function(e){const t=(Nl.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){if(au(e))return;const t=await Qo.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;const n=function(e){const[t,...n]=yl.get(e)??[];if(!t)return yl.delete(e),null;n.length?yl.set(e,n):yl.delete(e);return t}(e);if(!n)return;try{const a=await Qo.codexAccount.findUnique({where:{id:n.accountId}});if(!a||"CONNECTED"!==a.status)throw new Error("Queued message account is no longer connected.");const r=new Date,i=await nu({accountId:n.accountId,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,chatId:e,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:_l(t.permissionMode),requestedCollaborationMode:n.collaborationMode,startedAt:r,workingDirectory:n.workingDirectory});await ru(e,n.messageId,{dequeuedAt:r.toISOString(),queueStatus:"running",runId:i.run.id})}catch(k){await ru(e,n.messageId,{error:k instanceof Error?k.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"})}}(e)).catch(()=>{});Nl.set(e,t),t.finally(()=>{Nl.get(e)===t&&Nl.delete(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 au(e){for(const t of xl.values())if(t.chatId===e)return t;return null}async function ru(e,t,n){const a=await Qo.chatMessage.findUnique({where:{id:t}});a&&Pu(e,"message.updated",xm(await Qo.chatMessage.update({where:{id:t},data:{metadata:fm(a.metadata,n)}})))}function iu(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 Do(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 Do(400,"Image attachments must be 6 MB or smaller.");const s=ou(e.name,a.split("/").at(-1)??"image"),o=`data:${a};base64,${r}`;return{message:{id:_t(),kind:"image",mimeType:a,name:s,size:i,url:o},runtime:{type:"image",url:o}}}async function su(e,t){const n=await async function(e,t){return gl(await pl(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:_t(),kind:"file",name:ou(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function ou(e,t){const n=e?.trim();return(n?Xt(n):t).slice(0,160)||"attachment"}function du(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}var cu=class extends Error{};async function lu(e){return!!(await Qo.chatRun.findUnique({where:{id:e},select:{interruptRequestedAt:!0}}))?.interruptRequestedAt}async function uu(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 mu(e,t){const n={...e};return delete n[t],n}async function hu(e,t){for(let n=0;n<3;n+=1){const a=await fu(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 fu(e,t){try{const n=hd((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return pu(gu(n?.data)??gu(n?.items)??gu(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 pu(gu(hd(hd(n.result)?.thread)?.turns)??[],!1)}function pu(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>wu(vu(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!yu(xu(i)))continue;const e=wu(vu(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function gu(e){return Array.isArray(e)?e.map(hd).filter(e=>!!e):null}function vu(e){return fd(e.id)??fd(e.turnId)??fd(e.turn_id)??null}function wu(e){const t=e?.trim();return t||null}function xu(e){return(fd(e.status)??fd(e.turnStatus)??fd(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function yu(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function bu(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 Nu(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 Iu(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}function ku(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:Au(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function Cu(e,t=null){return"plan"!==e?{}:{collaborationMode:Au(e,t)}}function Au(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Eu(e,t,n){const a=Mu(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=hd(hd((await e.request("config/read",{},3e4)).result)?.config),n=Mu(fd(t?.model));if(r=r??Tu(t?.model_reasoning_effort)??Tu(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=hd((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=hd(e),n=Mu(fd(t?.id))??Mu(fd(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}function Mu(e){const t=e?.trim();return t||null}function Tu(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}async function Su(e){return((await Qo.chatMessage.aggregate({where:{chatId:e},_max:{sequence:!0}}))._max.sequence??0)+1}function Pu(e,t,n){sl(e,t,n)}function Du(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}async function Lu(e){return async function(e,t){if(!e)return t();const n=Cl.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Cl.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Cl.get(e)===i&&Cl.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 Qo.chatMessage.findFirst({where:{chatId:e.chatId,requestId:e.requestId},orderBy:{sequence:"desc"}});if(t)return t}if(e.itemId){const t=await Qo.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 Qo.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:wm(e.metadata),rawPayload:void 0===e.rawPayload?void 0:wm(e.rawPayload),requestId:e.requestId??void 0,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId??void 0},a=xm(t?await Qo.chatMessage.update({where:{id:t.id},data:n}):await Al(e.chatId,n));return Pu(e.chatId,t?"message.updated":"message.created",a),a})}function qu(e){const t=hd(e.result),n=hd(e.params),a=hd(n?.payload)??n??t;return Ou(hd(n?.turn)??hd(t?.turn))??vm(t?.text)??vm(t?.content)??vm(a?.text)??vm(a?.content)??vm(a?.delta)??vm(a?.message)??""}function Ru(e){const t=hd(e.result),n=hd(e.params);return fd(t?.turnId)??fd(t?.turn_id)??fd(n?.turnId)??fd(n?.turn_id)??fd(hd(t?.turn)?.id)??fd(hd(n?.turn)?.id)}function Ou(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=hd(e);return"agentMessage"!==t?.type?null:vm(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function $u(e){const t=hd(e.params),n=hd(e.result),a=hd(t?.event);return fd(t?.threadId)??fd(t?.thread_id)??fd(n?.threadId)??fd(n?.thread_id)??fd(a?.threadId)??fd(a?.thread_id)}function _u(e){const t=hd(e.params),n=hd(e.result),a=Uu(e);return fd(t?.turnId)??fd(n?.turnId)??fd(a?.turnId)??Ru(e)}function zu(e){const t=hd(e.params),n=hd(e.result),a=Uu(e);return fd(t?.itemId)??fd(n?.itemId)??fd(a?.id)}function Uu(e){const t=hd(e.params),n=hd(e.result),a=hd(t?.payload);return hd(t?.item)??hd(n?.item)??hd(a?.item)}function ju(e){const t=hd(e.params),n=hd(t?.event);return vm(t?.delta)??vm(t?.text)??vm(t?.output)??vm(n?.delta)??vm(n?.text)}function Fu(e,t){const n=hd(e.params),a=hd(e.result);return[t,n,hd(n?.event),hd(n?.payload),a].map(Bu).find(e=>!!e?.trim())}function Bu(e){if(e)return vm(e.reasoning)??vm(e.reasoningText)??vm(e.reasoning_text)??vm(e.summary)??Wl(e.summary)??Wl(e.content)??vm(e.text)??vm(e.output)}function Gu(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function Hu(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function Ku(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function Wu(e){const t=hd(e.params);return fd(hd(t?.error)?.message)??fd(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function Vu(e,t){const n=fd(e?.status);return n?Gu(n):t.includes("failed")||t.includes("error")?"failed":Ku({method:t})?"completed":"running"}function Qu(e){return vm(e.diff)??vm(e.unifiedDiff)??vm(e.unified_diff)??vm(e.patch)}function Ju(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function Xu(e){if(Array.isArray(e))return e.map(gm)}function Yu(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function Zu(e){const t=Gu(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function em(e){return Gu(e.method??"").includes("start")}function tm(e){const t=Gu(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function nm(e,t=e){const n=im(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=im(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=im(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}([im(e,["input_tokens","inputTokens"]),im(e,["output_tokens","outputTokens"]),im(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=hd(e);if(!n)return;const a=Gu(fd(n.type)??""),r=Gu(fd(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 rm(e,t){for(const n of t){const t=hd(e[n]);if(t)return t}}function im(e,t){for(const n of t){const t=sm(e[n]);if(void 0!==t)return t}}function sm(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 om(e){return Array.isArray(e)?e.map(e=>hd(e)).filter(e=>!!e).map(e=>({header:fd(e.header),id:fd(e.id)??_t(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:dm(e.options),question:fd(e.question)??fd(e.header)??"Answer",selectionLimit:Yu(e.selectionLimit)??Yu(e.selection_limit)})):[]}function dm(e){return Array.isArray(e)?e.map(e=>hd(e)).filter(e=>!!e).map(e=>({description:fd(e.description),label:fd(e.label)??fd(e.value)??""})).filter(e=>e.label):[]}function cm(e){return"userInput"===e.kind?fd(e.message)??"Codex needs more information before it can continue.":fd(e.reason)??fd(e.command)??"Codex needs approval before it can continue."}function lm(e){return"approval"===e?{decision:"acceptForSession"}:{scope:"session",permissions:!0}}async function um(e,t,n){const a=await Qo.chatMessage.findMany({where:{chatId:e,kind:{in:["APPROVAL","USER_INPUT_PROMPT"]},runId:t,status:"PENDING"}});for(const r of a){const t=hd(r.metadata);if("resolved"!==t?.status&&"expired"!==t?.status){if(r.requestId){const t=pm(e,r.requestId),a=wl.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),wl.delete(t)}Pu(e,"message.updated",xm(await Qo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:fm(r.metadata,{expiredAt:(new Date).toISOString(),reason:n,status:"expired"}),status:"COMPLETED"}})))}}}async function mm(e,t,n){const a=await Qo.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)Pu(e,"message.updated",xm(await Qo.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,status:n}})))}async function hm(e){return(await Qo.chatMessage.findUnique({where:{id:e},select:{metadata:!0}}))?.metadata??null}function fm(e,t){return wm({...hd(e)??{},...t})}function pm(e,t){return`${e}:${t}`}function gm(e){return JSON.parse(JSON.stringify(e))}function vm(e){return"string"==typeof e&&e.length>0?e:void 0}function wm(e){return JSON.parse(JSON.stringify(e))}function xm(e){return{...e,metadata:e.metadata,rawPayload:e.rawPayload}}function ym(e){return{...e,collaborationMode:Ol(e.collaborationMode),permissionMode:_l(e.permissionMode),reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier}}function bm(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function Nm(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}function Im(e){const t=hd(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name,t.title];for(const r of n){const e=bm(fd(r)??"");if(e)return e}const a=hd(t.thread);return a?Im(a):null}async function km(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}function Cm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Am(e){return Array.isArray(e)?e.map(e=>hd(e)).filter(e=>!!e):null}async function Em(e,t){Pu(e,"chat.updated",ym(await Qo.chat.update({where:{id:e},data:{title:t}})))}var Mm=xn({action:()=>Sm,loader:()=>Tm});async function Tm({request:e}){try{return Ro(e,["GET"]),await Zo(e),Lo(await async function(){const e=await Tl();return e.length?(Ml().catch(e=>{console.warn("Failed to refresh local chat index.",e instanceof Error?e.message:e)}),e):(await Ml(),Tl())}())}catch(t){return Fo(t)}}async function Sm({request:e}){try{Ro(e,["POST"]),await Zo(e);const t=await Oo(e);return Lo(await async function(e){const t=await Qo.codexAccount.findUnique({where:{id:e.accountId}});if(!t)throw new Do(400,"Account not found.");if("CONNECTED"!==t.status)throw new Do(400,"Authenticate the account before starting a chat.");return Qo.chat.create({data:{accountId:e.accountId,workingDirectory:cl(e.workingDirectory),model:void 0===e.model?void 0:Dl(e.model),reasoningEffort:void 0===e.reasoningEffort?void 0:Ll(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:ql(e.serviceTier),collaborationMode:void 0===e.collaborationMode?void 0:Rl(e.collaborationMode),permissionMode:void 0===e.permissionMode?void 0:$l(e.permissionMode),title:e.title??"Untitled chat"}})}({accountId:$o(t.accountId,"accountId",{required:!0}),workingDirectory:$o(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:$o(t.model,"model",{maxLength:160}),reasoningEffort:Pm(t.reasoningEffort,"reasoningEffort"),serviceTier:Pm(t.serviceTier,"serviceTier"),collaborationMode:Pm(t.collaborationMode,"collaborationMode"),permissionMode:Pm(t.permissionMode,"permissionMode"),title:$o(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return Fo(t)}}function Pm(e,t){return null===e?null:$o(e,t,{maxLength:80})}var Dm=xn({action:()=>qm,loader:()=>Lm});async function Lm({request:e,params:t}){try{return Ro(e,["GET"]),await Zo(e),Lo(await Sl(jo(t,"chatId")))}catch(n){return Fo(n)}}async function qm({request:e,params:t}){try{await Zo(e);const n=jo(t,"chatId");if("PATCH"===e.method){const t=await Oo(e);return Lo(await Pl(n,{accountId:$o(t.accountId,"accountId"),model:null===t.model?null:$o(t.model,"model",{maxLength:160}),reasoningEffort:Rm(t.reasoningEffort,"reasoningEffort"),serviceTier:Rm(t.serviceTier,"serviceTier"),collaborationMode:Rm(t.collaborationMode,"collaborationMode"),permissionMode:Rm(t.permissionMode,"permissionMode"),title:$o(t.title,"title",{maxLength:160}),workingDirectory:$o(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Lo(await async function(e){return await Sl(e),Qo.chat.update({where:{id:e},data:{status:"ARCHIVED"}})}(n));qo(e.method)}catch(n){return Fo(n)}}function Rm(e,t){return null===e?null:$o(e,t,{maxLength:80})}var Om=xn({loader:()=>$m});async function $m({request:e,params:t}){try{return Ro(e,["GET"]),await Zo(e),Lo(await async function(e){const t=await Sl(e);return t.externalThreadId?{usage:await gc(t.id,t.externalThreadId)}:{usage:null}}(jo(t,"chatId")))}catch(n){return Fo(n)}}var _m=xn({loader:()=>zm});async function zm({request:e,params:t}){try{Ro(e,["GET"]),await Zo(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Do(400,"path is required.");return Lo(await fl(jo(t,"chatId"),a,Uo(n,"line",0)||null))}catch(n){return Fo(n)}}var Um=vn(on);async function jm(e){const t=await Bm(e),n=await Gm(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await Hm(t.cwd),r=await Km(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 Km(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await Wm(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 Fm(e,t){const n=await Bm(e);if("RUNNING"===n.status)throw new Do(409,"Git actions are disabled while Codex is running.");if(!(await Gm(n.cwd)))throw new Do(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=Vm(t.branch);a=await Wm(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=Vm(t.branch);await Wm(n.cwd,["check-ref-format","--branch",e]),a=await Wm(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Do(400,"Commit message is required.");await Wm(n.cwd,["add","-A"]),a=await Wm(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await Wm(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Do(400,"Unsupported git action.");a=await Km(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await Wm(n.cwd,["push"]):await async function(e){await Wm(e,["remote","get-url","origin"]);const t=await Hm(e);if(!t)throw new Do(400,"Cannot push while detached from a branch.");return Wm(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:Jm(t.action),output:a,status:await jm(e)}}async function Bm(e){const t=await Qo.chat.findUnique({where:{id:e},select:{status:!0,workingDirectory:!0}});if(!t)throw new Do(404,"Chat not found.");if(!t.workingDirectory)throw new Do(400,"Chat does not have a working directory.");return{cwd:cl(t.workingDirectory),status:t.status}}async function Gm(e){return Km(e,["rev-parse","--show-toplevel"])}async function Hm(e){return await Km(e,["symbolic-ref","--quiet","--short","HEAD"])??await Km(e,["rev-parse","--short","HEAD"])}async function Km(e,t){try{return await Wm(e,t)}catch{return null}}async function Wm(e,t){try{const n=await Um("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return Qm(n.stdout,n.stderr)}catch(n){throw new Do(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return Qm("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 Vm(e){const t=e?.trim();if(!t)throw new Do(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Do(400,"Branch name is invalid.");return t}function Qm(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function Jm(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 Xm({request:e,params:t}){try{Ro(e,["GET"]),await Zo(e);const n=jo(t,"chatId"),a=jo(t,"operation"),r=new URL(e.url);if("status"===a)return Lo(await jm(n));if("branches"===a)return Lo(await async function(e){const t=await Bm(e);if(!(await Gm(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await Hm(t.cwd);return{branches:(await Wm(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 Km(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Lo(await async function(e,t){const n=await Bm(e);if(!(await Gm(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=Qm(await Km(n.cwd,["diff","--stat",...a]),await Km(n.cwd,["diff","--cached","--stat",...a]));return{diff:Qm(await Km(n.cwd,["diff","--no-ext-diff",...a]),await Km(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));throw new Do(404,"Git operation not found.")}catch(n){return Fo(n)}}async function Ym({request:e,params:t}){try{if(Ro(e,["POST"]),await Zo(e),"action"!==jo(t,"operation"))throw new Do(404,"Git operation not found.");const n=await Oo(e),a={action:Zm(n.action),branch:$o(n.branch,"branch",{maxLength:240}),message:$o(n.message,"message",{maxLength:5e3})};return Lo(await Fm(jo(t,"chatId"),a))}catch(n){return Fo(n)}}function Zm(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Do(400,"action is invalid.")}async function eh({request:e,params:t}){try{Ro(e,["GET"]),await Zo(e);const n=new URL(e.url);return Lo(await Fl(jo(t,"chatId"),Uo(n,"afterSequence",0),Uo(n,"limit",50)))}catch(n){return Fo(n)}}async function th({request:e,params:t}){try{Ro(e,["POST"]),await Zo(e);const n=await Oo(e),a={content:ah(n.content),accountId:$o(n.accountId,"accountId"),attachments:rh(n.attachments),collaborationMode:dh(n.collaborationMode,"collaborationMode"),delivery:nh(n.delivery),metadata:zo(n.metadata,"metadata")};return Lo(await tu(jo(t,"chatId"),a),{status:201})}catch(n){return Fo(n)}}function nh(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Do(400,"delivery is invalid.")}}function ah(e){if(null==e)return"";if("string"!=typeof e)throw new Do(400,"content must be a string.");if(e.length>4e4)throw new Do(400,"content must be 40000 characters or fewer.");return e.trim()}function rh(e){if(void 0!==e){if(!Array.isArray(e))throw new Do(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Do(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:ih(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:sh(n.mimeType,`attachments[${t}].mimeType`,80),name:sh(n.name,`attachments[${t}].name`,160),size:oh(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:sh(n.name,`attachments[${t}].name`,160),path:ih(n.path,`attachments[${t}].path`,4096),size:oh(n.size,`attachments[${t}].size`)};throw new Do(400,`attachments[${t}].kind is invalid.`)})}}function ih(e,t,n){if("string"!=typeof e||!e.trim())throw new Do(400,`${t} is required.`);if(e.length>n)throw new Do(400,`${t} is too large.`);return e}function sh(e,t,n){if(null!=e){if("string"!=typeof e)throw new Do(400,`${t} must be a string.`);if(e.length>n)throw new Do(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function oh(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Do(400,`${t} must be a positive number.`);return e}}function dh(e,t){return null===e?null:$o(e,t,{maxLength:80})}async function ch({request:e,params:t}){try{return Ro(e,["POST"]),await Zo(e),Lo(await async function(e){const t=await Sl(e);if("RUNNING"!==t.status)throw new Do(409,"There is no running task to stop.");const n=await Qo.chatRun.findFirst({where:{chatId:e,status:{in:["QUEUED","RUNNING"]}},orderBy:{createdAt:"desc"}});if(!n)throw new Do(409,"There is no active run to stop.");const a=new Date;await Qo.chatRun.update({where:{id:n.id},data:{interruptRequestedAt:a}});const r=xl.get(n.id);return r&&(r.interruptRequested=!0,r.runtime&&r.turnId&&await uu(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."}}(jo(t,"chatId")))}catch(n){return Fo(n)}}async function lh({request:e,params:t}){try{Ro(e,["POST"]),await Zo(e);const n=await Oo(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Do(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Lo(await eu(jo(t,"chatId"),jo(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return Fo(n)}}async function uh({request:e}){try{return Ro(e,["GET"]),await Zo(e),Lo(await ol(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return Fo(t)}}async function mh({request:e}){try{Ro(e,["POST"]),await Zo(e);const t=await Oo(e),n={parentPath:$o(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:$o(t.name,"name",{required:!0,maxLength:255})};return Lo(await dl(n.parentPath,n.name),{status:201})}catch(t){return Fo(t)}}var hh={entry:{module:"/assets/entry.client-BlQXdBHx.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/react-dom-CMuFyqmq.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-bXu6rtsG.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/react-dom-CMuFyqmq.js","/assets/document-title-B6Yxyaur.js","/assets/session-provider-2Ozr-CuV.js"],css:["/assets/root-Cptu-zSj.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-CHSFTXwk.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/label-C7i5Qt-O.js","/assets/session-provider-2Ozr-CuV.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--vTe8I2j.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/app-shell-ClOglt7r.js","/assets/label-C7i5Qt-O.js","/assets/document-title-B6Yxyaur.js","/assets/session-provider-2Ozr-CuV.js","/assets/react-dom-CMuFyqmq.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-BLKISIGJ.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/app-shell-ClOglt7r.js","/assets/label-C7i5Qt-O.js","/assets/document-title-B6Yxyaur.js","/assets/session-provider-2Ozr-CuV.js","/assets/react-dom-CMuFyqmq.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-Bf8hrS42.js",imports:["/assets/jsx-runtime-Dafdqr5g.js","/assets/app-shell-ClOglt7r.js","/assets/label-C7i5Qt-O.js","/assets/document-title-B6Yxyaur.js","/assets/session-provider-2Ozr-CuV.js","/assets/react-dom-CMuFyqmq.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-f96902fd.js",version:"f96902fd",sri:void 0},fh="build/client",ph="/",gh={unstable_optimizeDeps:!1,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},vh=!0,wh=!1,xh=[],yh={mode:"lazy",manifestPath:"/__manifest"},bh="/",Nh={module:yn},Ih={root:{id:"root",parentId:void 0,path:"",index:void 0,caseSensitive:void 0,module:sa},"routes/connect":{id:"routes/connect",parentId:"root",path:"connect",index:void 0,caseSensitive:void 0,module:wa},"routes/favicon.ico":{id:"routes/favicon.ico",parentId:"root",path:"favicon.ico",index:void 0,caseSensitive:void 0,module:ya},"routes/app-layout":{id:"routes/app-layout",parentId:"root",path:void 0,index:void 0,caseSensitive:void 0,module:Ao},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:Mo},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:So},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:Bo},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:od},"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:ud},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:zd},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:Bd},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:Hd},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:Wd},"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:Jd},"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:rc},"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:sc},"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:dc},"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:lc},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Mm},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:Dm},"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:Om},"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:_m},"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:xn({action:()=>Ym,loader:()=>Xm})},"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:xn({action:()=>th,loader:()=>eh})},"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:xn({action:()=>ch})},"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:xn({action:()=>lh})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:xn({action:()=>mh,loader:()=>uh})}},kh=!1;export{kh as allowedActionOrigins,hh as assets,fh as assetsBuildDirectory,ph as basename,Nh as entry,gh as future,wh as isSpaMode,xh as prerender,bh as publicPath,yh as routeDiscovery,Ih as routes,vh 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 D,useEffect as L,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 De,PanelLeftIcon as Le,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 Dt from"highlight.js/lib/languages/xml";import Lt 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(De,{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);L(()=>{if("undefined"!=typeof document)return document.title=t,()=>{document.title=Sn}},[t])}var Dn=class extends Error{status;url;constructor(e,t,n){super(e),this.status=t,this.url=n}},Ln=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 Ln({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 Dn([`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;L(()=>{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=D(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(L(()=>{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 Da({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 La({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();L(()=>{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&&D(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(),D(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){D(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 D(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(La,{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(Da,{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(La,{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=R(()=>p.find(e=>e.id===i)??null,[i,p]),b=P((e,t)=>cr(a,e,t),[a]),N=P(e=>{g(e),s(t=>t&&e.some(e=>e.id===t)?t:e[0]?.id??null)},[]),I=P(async()=>{const e=await b("terminal:create",{cols:80,projectPath:h??n,rows:24});f(e.projectPath),N(e.terminals),s(e.terminal.id)},[N,n,b,h]);L(()=>{if(!a||!n.trim())return g([]),s(null),void f(null);let e=!1,t=null;return m(!0),d(null),b("terminal:project:join",{projectPath:n}).then(async n=>{if(!e&&(t=n.projectPath,f(n.projectPath),N(n.terminals),!n.terminals.length)){const t=await b("terminal:create",{cols:80,projectPath:n.projectPath,rows:24});e||(f(t.projectPath),N(t.terminals),s(t.terminal.id))}}).catch(t=>{e||d(vr(t))}).finally(()=>{e||m(!1)}),()=>{e=!0,t&&cr(a,"terminal:project:leave",{projectPath:t}).catch(()=>{})}},[N,n,b,a]),L(()=>{if(!a)return;const e=e=>{const t=h??n;e.projectPath===t&&N(e.terminals)};return a.on("terminal:project",e),()=>{a.off("terminal:project",e)}},[N,n,h,a]),L(()=>{v.current=c;const e=window.setTimeout(()=>{pr(c)},150);return()=>window.clearTimeout(e)},[c]);const k=P(async e=>{try{N((await b("terminal:close",{terminalId:e})).terminals)}catch(t){U.error(vr(t))}},[N,b]),C=P(e=>{g(t=>t.map(t=>t.id===e.id?e:t))},[]),A=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:A,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-8 min-w-28 max-w-56 shrink-0 items-center rounded-md 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:()=>{k(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:()=>{I().catch(e=>U.error(vr(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}):w?x(hr,{resizeSignal:c,socket:a,terminal:w,onTerminalUpdated:C},w.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({onTerminalUpdated:e,resizeSignal:t,socket:n,terminal:a}){const r=q(null),i=q(null),s=q(null),o=q(null),d=P(()=>{null===s.current&&(s.current=window.requestAnimationFrame(()=>{s.current=null,i.current?.fit()}))},[]);return L(()=>(d(),()=>{null!==s.current&&(window.cancelAnimationFrame(s.current),s.current=null)}),[d,t]),L(()=>{const t=r.current;if(!n||!t)return;let c=!1;const l=[],u=e=>{n.emit("terminal:input",{data:e,terminalId:a.id})},m=e=>{e.terminalId===a.id&&o.current?.write(e.data)};return n.on("terminal:output",m),async function(){return ur??=import("ghostty-web").then(async e=>(await e.init(),e)),ur}().then(async({FitAddon:t,Terminal:s})=>{if(c||!r.current)return;const m=new s({cursorBlink:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',fontSize:13,scrollback:1e4,theme:{background:"#09090b",foreground:"#e4e4e7"}}),h=new t;i.current=h,o.current=m,m.loadAddon(h),m.open(r.current),h.fit(),h.observeResize(),m.attachCustomKeyEventHandler(e=>"Enter"===e.key&&(u("\r"),!0)),l.push(h),l.push(m.onData(e=>{u(e)})),l.push(m.onResize(e=>{n.emit("terminal:resize",{cols:e.cols,rows:e.rows,terminalId:a.id})})),l.push(m.onTitleChange(e=>{n.emit("terminal:title",{terminalId:a.id,title:e})}));const f=await cr(n,"terminal:attach",{terminalId:a.id});c||(e(f.terminal),f.replay&&m.write(f.replay),requestAnimationFrame(()=>{h.fit(),m.focus()}),d())}).catch(e=>{c||U.error(vr(e))}),()=>{c=!0,null!==s.current&&(window.cancelAnimationFrame(s.current),s.current=null),n.off("terminal:output",m),cr(n,"terminal:detach",{terminalId:a.id}).catch(()=>{});for(const e of l)e.dispose();o.current?.dispose(),o.current=null,i.current=null}},[e,d,n,a.id]),x("div",{className:"relative h-full min-h-0 overflow-hidden p-2 outline-none [&_canvas]:block",ref:r})}function fr(){return"undefined"==typeof window?360:gr(Number.parseInt(window.localStorage.getItem(lr)??"",10)||360)}function pr(e){"undefined"!=typeof window&&window.localStorage.setItem(lr,String(e))}function gr(e){const t="undefined"==typeof window?720:Math.max(220,Math.min(window.innerHeight-140,760));return Math.max(220,Math.min(t,e))}function vr(e){return e instanceof Error?e.message:"Terminal request failed."}function wr({...e}){return x(vt.Root,{"data-slot":"dropdown-menu",...e})}function xr({...e}){return x(vt.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function yr({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 br({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 Nr({...e}){return x(vt.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})}function Ir({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 kr({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:a=0,className:r,...i}){return x(yr,{"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 Cr({...e}){return x(vt.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function Ar({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 Mr({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 Er(){const{setTheme:e,theme:t}=E(),n=t??"system";return y(wr,{children:[y(xr,{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(yr,{align:"end",className:"w-40",children:[y(br,{onClick:()=>e("light"),children:[x(Qe,{}),"Light","light"===n?x(K,{className:"ml-auto"}):null]}),y(br,{onClick:()=>e("dark"),children:[x(Se,{}),"Dark","dark"===n?x(K,{className:"ml-auto"}):null]}),y(br,{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",Dt),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",Dt),yt.registerLanguage("yaml",Lt);var Tr=S(null);function Sr({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=Ri([...e]).filter(e=>!function(e){return!!function(e){if("PLAN"!==e.kind)return!1;const t=Qi(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=$i(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&&Zr(n))return n.id}return null}(h),[h]),[g,v]=O(null);return y(Tr.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(Fr,{chatId:e,session:u,target:g,onClose:()=>v(null)})]})}function Pr({chatId:e,messages:t,session:n}){const a=R(()=>ji(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(Or,{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(qr,{message:t.message}):x(Lr,{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 Lr({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(Gi(r.message)){const e=n.at(-1);if(!e||Hi(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&&Ki(e)!==Ki(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)Bi(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:Ui(e.map(e=>e.content)),id:e.map(e=>e.id).join(":"),status:zi(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(Rr,{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 Rr({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(ti,{messages:a.messages}):"previousActions"===a.type?x(ni,{messages:a.messages}):"fileChanges"===a.type?x(ri,{disabled:t,messages:a.messages,pending:n,onReview:o,onUndo:d}):x(Or,{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 qr({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($r,{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 Or({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(Vr,{latestProposedPlanMessageId:r,message:i,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u}):"STREAMING"===i.status||"PENDING"===i.status?x(Kr,{}):null;case"THINKING":return x(Wr,{message:i});case"PLAN":return x(Qr,{metadata:Qi(i.metadata),message:i,latestProposedPlanMessageId:r,onImplementPlan:s,onRevisePlan:o,planActionDisabled:l,planActionPending:u});case"COMMAND_EXECUTION":return x(ei,{metadata:Qi(i.metadata)});case"FILE_CHANGE":return x(ri,{disabled:n,messages:[i],pending:a,onReview:d,onUndo:c});case"APPROVAL":return x(bi,{chatId:e,compact:t,message:i,metadata:Qi(i.metadata),session:m});case"USER_INPUT_PROMPT":return x(Ni,{chatId:e,compact:t,message:i,metadata:Qi(i.metadata),session:m});case"ERROR":return x(Si,{metadata:Qi(i.metadata),text:i.content});default:return x(Pi,{text:i.content})}}function _r({text:e}){const t=D(Tr);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:Ur(e)})})}function $r({text:e}){return x("div",{className:"grid min-w-0 gap-2",children:zr(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 Ur(e){return zr(e).map(e=>"image"===e.type?`\n\n.replace(/\)/g,"%29")})\n\n`:e.text).join("")}function zr(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=jr(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 jr(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 Fr({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:Gr(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(Br,{file:r.data}):null})]})})}function Br({file:e}){const t=q({}),n=R(()=>(e.content??"").split(/\r?\n/),[e.content]);return L(()=>{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 Gr(e){return e?[Hr(e.size),e.language,e.line?`line ${e.line}`:null].filter(Boolean).join(" · "):"Read-only workspace file viewer."}function Hr(e){return e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function Kr(){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 Wr({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 Vr({latestProposedPlanMessageId:e,message:t,onImplementPlan:n,onRevisePlan:a,planActionDisabled:r,planActionPending:i}){const s=Zr(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(Jr,{disabled:r,message:t,pending:i,planBody:s.body,showActions:d,onImplementPlan:n,onRevisePlan:a}):null]})}function Qr({latestProposedPlanMessageId:e,message:t,metadata:n,onImplementPlan:a,onRevisePlan:r,planActionDisabled:i,planActionPending:s}){const o=n?.steps??[],d=Zr(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(Pi,{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(Yr,{disabled:i,message:t,pending:s,planBody:d.body,onImplementPlan:a,onRevisePlan:r}):null]})}function Jr({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(Yr,{disabled:e,message:t,pending:r,planBody:i,onImplementPlan:n,onRevisePlan:a}):null]})}function Yr({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(La,{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 Xr=/<proposed_plan\b[^>]*>([\s\S]*?)<\/proposed_plan>/i;function Zr(e){const t=e.content.trim();if(!t||"Planning..."===t)return null;const n=Xr.exec(e.content);return n?.[1]?.trim()?{body:n[1].trim(),source:"envelope",surroundingText:e.content.replace(Xr,"").trim()}:"PLAN"!==e.kind||"result"!==Qi(e.metadata)?.presentation?null:{body:t,source:"planItem",surroundingText:""}}function ei({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:yi(e),children:xi(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 ti({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,Li),...a?[a]:[]]),i=Math.max(0,e.length-r.length),s=zi(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(ai,{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 ni({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(ai,{message:e},e.id))})]})}function ai({message:e}){const t=Qi(e.metadata),n=Qi(e.metadata),a=function(e,t){return"COMMAND_EXECUTION"===e.kind?(Qi(t)?.command??e.content.trim())||"Command":"TOOL_ACTIVITY"===e.kind?e.content.trim()||"Tool activity":"THINKING"===e.kind?"Reasoning":"APPROVAL"===e.kind?"permissions"===Qi(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:[Wi(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 ri({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=Qi(s.metadata);e?.status&&a.add(e.status),e?.diff?.trim()&&r.push(e.diff.trim());for(const t of ii(e)){const e=n.get(t.path);e?n.set(t.path,{action:vi(e.action,t.action),additions:e.additions+t.additions,deletions:e.deletions+t.deletions,diff:wi(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:wi(...r),entries:i,message:t.at(-1)??e[0],statuses:Array.from(a)}}(t),[t]),s=D(Tr),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?`${di(i.entries)} ${i.entries.length} ${1===i.entries.length?"file":"files"}`:"File changes"}),x(ui,{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:li(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:ci(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(ui,{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 ii(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=oi(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=oi(e[3]??e[2]??"");if(n)return n}return null}(n);return a?(e.push({action:si(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=mi(n.path,n.filePath,n.file,n.name);return a?(e.push({action:fi(mi(n.action,n.kind,n.type)??"Edited"),additions:hi(n.additions),deletions:hi(n.deletions),path:a}),e):e},[]);if(n.length)return[...n.map(e=>{const n=t.find(t=>pi(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=>pi(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 si(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 oi(e){const t=e.trim().replace(/^"|"$/g,"");return t.startsWith("a/")||t.startsWith("b/")?t.slice(2):t}function di(e){const t=new Set(e.map(e=>e.action??"Edited"));return 1===t.size?Array.from(t)[0]??"Edited":"Edited"}function ci(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 li(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 ui({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 mi(...e){for(const t of e)if("string"==typeof t&&t.trim())return t.trim();return null}function hi(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 fi(e){const t=e.trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:"Edited"}function pi(e,t){return gi(e)===gi(t)}function gi(e){return oi(e).replace(/\\/g,"/").replace(/^\.\//,"")}function vi(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 wi(...e){const t=e.map(e=>e?.trim()).filter(e=>!!e);if(t.length)return Array.from(new Set(t)).join("\n\n")}function xi(e){return e?.status?e.status:"number"==typeof e?.exitCode?0===e.exitCode?"completed":"failed":"running"}function yi(e){const t=e?.status?.toLowerCase()??"";return t.includes("fail")||t.includes("error")||"number"==typeof e?.exitCode&&0!==e.exitCode?"destructive":"secondary"}function bi({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(Ii,{icon:x(Ce,{className:"size-4"}),status:a?.status??(i?"resolved":void 0),title:"permissions"===a?.requestKind?"Permission request":"Approval request",value:ki(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 Ni({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&&Ti(h,i[h.id]).length>0,p=l.every(e=>Ti(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(Ii,{icon:x(K,{className:"size-4"}),status:a?.status??(u?"resolved":void 0),title:"Input request",value:Ci(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(Mi,{compact:t,disabled:u||c.isPending,question:h,value:i[h.id]??Ai,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:Ei(l,i)}):U.error("Answer every question before submitting.")},children:[c.isPending?x(Ie,{className:"animate-spin"}):x(K,{}),"Submit"]})}):null]})}function Ii({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 ki(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 Ci(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 Ai={other:"",values:[]};function Mi({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(La,{className:e?"min-h-14":"min-h-20",disabled:t,value:c,onChange:e=>l({other:e.target.value})}),r.isOther&&s.length?x(La,{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 Ei(e,t){return{answers:Object.fromEntries(e.map(e=>[e.id,{answers:Ti(e,t[e.id])}]))}}function Ti(e,t){const n=t?.values??[],a=t?.other??"";return[...n,...e.isOther||!e.options?.length?[a]:[]].map(e=>e.trim()).filter(Boolean)}function Si({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 Pi({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 Li=5;function Ri(e){const t=[...e].sort((e,t)=>e.sequence-t.sequence),n=[],a=new Map;for(const r of t){const e=qi(r);if(!e){n.push(r);continue}const t=a.get(e);void 0!==t?n[t]=Oi(n[t],r):(a.set(e,n.length),n.push(r))}return n}function qi(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 Oi(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 $i(e){return e.runId?`codex-run:${e.runId}`:e.turnId?`codex-turn:${e.turnId}`:`codex-message:${e.id}`}function Ui(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 zi(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 ji(e){return{pendingRequest:Ri(e).sort((e,t)=>t.sequence-e.sequence).find(Fi)}}function Fi(e){if("APPROVAL"!==e.kind&&"USER_INPUT_PROMPT"!==e.kind)return!1;if("COMPLETED"===e.status||"FAILED"===e.status)return!1;const t=Qi(e.metadata);return"resolved"!==t?.status&&"expired"!==t?.status}function Bi(e,t){return e.id!==t?.id&&("ERROR"!==e.kind&&"FILE_CHANGE"!==e.kind&&"PLAN"!==e.kind&&(!Fi(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 Gi(e){return"COMMAND_EXECUTION"===e.kind||"TOOL_ACTIVITY"===e.kind}function Hi(e,t){return Ki(e)===Ki(t)}function Ki(e){return e.runId??e.turnId??e.chatId}function Wi(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(Vi,{}):x(ee,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Vi(){return x(Ne,{className:"mt-0.5 size-3.5 text-muted-foreground"})}function Qi(e){return e&&"object"==typeof e?e:void 0}function Ji({...e}){return x(Rt.Root,{"data-slot":"popover",...e})}function Yi({...e}){return x(Rt.Trigger,{"data-slot":"popover-trigger",...e})}function Xi({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 Zi({className:e,...t}){return x("div",{"data-slot":"popover-header",className:Cn("flex flex-col gap-0.5 text-sm",e),...t})}function es({className:e,...t}){return x(Rt.Title,{"data-slot":"popover-title",className:Cn("font-medium",e),...t})}function ts({className:e,...t}){return x(Rt.Description,{"data-slot":"popover-description",className:Cn("text-muted-foreground",e),...t})}function ns({...e}){return x(ht.Root,{"data-slot":"sheet",...e})}function as({...e}){return x(ht.Portal,{"data-slot":"sheet-portal",...e})}function rs({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 is({className:e,children:t,side:n="right",showCloseButton:a=!0,...r}){return y(as,{children:[x(rs,{}),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 ss({className:e,...t}){return x("div",{"data-slot":"sheet-header",className:Cn("flex flex-col gap-0.5 p-4",e),...t})}function os({className:e,...t}){return x(ht.Title,{"data-slot":"sheet-title",className:Cn("font-heading text-base font-medium text-foreground",e),...t})}function ds({className:e,...t}){return x(ht.Description,{"data-slot":"sheet-description",className:Cn("text-sm text-muted-foreground",e),...t})}var cs=T.createContext(null);function ls(){const e=T.useContext(cs);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function us({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(cs.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 ms({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}=ls();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(ns,{open:c,onOpenChange:l,...s,children:y(is,{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(ss,{className:"sr-only",children:[x(os,{children:"Sidebar"}),x(ds,{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 hs({className:e,onClick:t,...n}){const{toggleSidebar:a}=ls();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(Le,{}),x("span",{className:"sr-only",children:"Toggle Sidebar"})]})}function fs({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 ps({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 gs({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 vs({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 ws({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 xs({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 ys({className:e,...t}){return x("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:Cn("w-full text-sm",e),...t})}function bs({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 Ns({className:e,...t}){return x("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:Cn("group/menu-item relative",e),...t})}var Is=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 ks({render:e,isActive:t=!1,variant:n="default",size:a="default",tooltip:r,className:i,...s}){const{isMobile:o,state:d}=ls(),c=mt({defaultTagName:"button",props:ut({className:Cn(Is({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 Cs({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 As({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:Ds(i,void 0),queryFn:()=>Un(i,void 0)}),P=S.data,D=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),D&&d(t=>{const n=new Set(t);for(const a of Ls(e,D))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 L(()=>{r&&(d(new Set),l(e??""),m("directory"),f(e??""),g(""),w(!0),N(!1),M(""),T(""))},[e,r]),L(()=>{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 Ls(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(Ps,{label:"Home",onClick:function(){P?.path&&$(P.path)},children:x(ge,{})}),x(Ps,{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(D)for(const a of Ls(e,D))n.add(a);return n.add(e),n}))},children:x(me,{})}),x(Ps,{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(Ps,{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(Ms,{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||D||"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 Ms({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=Os(f)===Os(r.path),N=v&&Os(t)===Os(r.path),I=C({enabled:w&&!a,queryKey:Ds(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(Ts,{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(Es,{level:o+1,name:e,pending:n,onCancel:d,onNameChange:c,onSubmit:l}):null,M.map(a=>x(Ms,{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(Ss,{entry:e,level:o+1,selected:"file"===p&&Os(f)===Os(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 Es({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(Ps,{disabled:!t.trim()||i,label:"Create folder",onClick:r,children:x(K,{})}),x(Ps,{disabled:i,label:"Cancel new folder",onClick:n,children:x(tt,{})})]})}function Ts({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 Ss({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 Ps({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 Ds(e,t){return["workspace-directory",e.serverUrl,t]}function Ls(e,t){const n=qs(t),a=qs(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=Rs(s,o),r.push(s);return r}function Rs(e,t){const n=e.includes("\\")?"\\":"/";return`${qs(e)}${n}${t}`}function qs(e){return"/"===e||/^[A-Za-z]:[\\/]?$/.test(e)?e.replace(/[\\/]+$/,"")||e:e.replace(/[\\/]+$/,"")}function Os(e){return qs(e).toLocaleLowerCase()}function _s(){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 L(()=>{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)},[]),D=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]);L(()=>{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=fo(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,po(t)]:null}).filter(e=>!!e)),[H,B]);if(L(()=>{d.trim()||A(!1)},[d]),t)return x(Qs,{});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(us,{children:[y(ms,{className:"border-r",collapsible:"icon",children:[x(ps,{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(vs,{children:y(ws,{children:[x(xs,{children:"Chats"}),x(ys,{children:x(zs,{chats:z,session:a})})]})}),x(gs,{children:y(fa,{className:"justify-start",variant:"ghost",onClick:()=>q(),children:[x(Ge,{}),x("span",{className:"group-data-[collapsible=icon]:hidden",children:"Settings"})]})})]}),y(fs,{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(hs,{variant:"ghost",children:x(Ee,{})})}),y("div",{className:"flex min-w-0 items-center gap-2",children:[x($s,{active:I,disabled:!d.trim(),onToggle:()=>A(!I)}),x(Us,{onAddAccount:()=>S({focusCreate:!0}),onNewChat:()=>T("/")}),x(Er,{})]})]}),_.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:D,onOpenChange:v}),M?x(As,{initialPath:M.initialPath,mode:M.mode,open:!!M,session:a,onOpenChange:e=>{e||E(null)},onSelect:M.onSelect}):null]})}function $s({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 Us({onAddAccount:e,onNewChat:t}){return y(wr,{children:[y(xr,{render:x(fa,{size:"icon",variant:"outline"}),children:[x($e,{className:"size-4"}),x("span",{className:"sr-only",children:"Create"})]}),y(yr,{align:"end",className:"w-44",children:[y(br,{onClick:t,children:[x(Ve,{}),"New chat"]}),y(br,{onClick:e,children:[x(et,{}),"Add account"]})]})]})}function zs({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:ko(e.lastActivityAt),folderName:Co(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;L(()=>{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($o(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($o(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(Ji,{children:[y(Yi,{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(Xi,{align:"end",className:"w-64",side:"bottom",children:[y(Zi,{children:[x(es,{children:"Folder"}),x(ts,{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(bs,{children:N.length?N.map(({chat:e,dateLabel:t,folderName:r})=>x(Ns,{children:y("div",{className:"flex items-center gap-1",children:[y(ks,{className:"h-14 min-w-0 flex-1 items-start py-1.5",isActive:e.id===a,size:"lg",tooltip:`${e.title} · ${t} · ${r}`,onClick:()=>n(`/chat/${e.id}`),children:[x(Te,{className:"mt-0.5"}),y("span",{className:"min-w-0 flex-1",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(wr,{children:[y(xr,{render:x(fa,{size:"icon-sm",variant:"ghost"}),children:[x(Pe,{}),x("span",{className:"sr-only",children:"Chat actions"})]}),y(yr,{align:"end",className:"w-40",children:[y(br,{onClick:()=>{s(e),d(e.title)},children:[x(qe,{}),"Rename"]}),y(br,{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 js(e){return e.map(e=>"image"===e.kind?{dataUrl:e.dataUrl,kind:"image",mimeType:e.mimeType,name:e.name,size:e.size}:{kind:"file",name:e.name,path:e.path,size:e.size})}async function Fs(e){const t=Array.from(e).filter(e=>e.type.startsWith("image/"));return Promise.all(t.map(async e=>({dataUrl:await Gs(e),id:crypto.randomUUID(),kind:"image",mimeType:e.type||"image/png",name:e.name||"image",size:e.size})))}function Bs(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 Gs(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 Hs(e){const t=e.trim();return{id:crypto.randomUUID(),kind:"file",name:Ao(t),path:t}}function Ks({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 Ws(){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}=mo(),[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,D]=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);L(()=>(o(G.trim()),()=>o("")),[o,G]),L(()=>{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(()=>vo(n,e),[e,n]),Y=n.find(e=>e.id===E),X=(k&&Y&&wo(e[Y.id])<0?void 0:Y)??J??n[0];L(()=>{if(!X?.id)return j(null),N(null),D("default"),$(null),void B(null);j(X.id),N(X.defaultModel??null),D(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=ho(te,ae),oe=se?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],de=re??se?.defaultReasoningEffort??null,ce=se?.additionalSpeedTiers??[],le=fo(ee.data),me=I({mutationFn:({accountId:e,settings:t})=>qn(s,e,t),onError:e=>U.error($o(e)),onSuccess:e=>{K.setQueryData(["accounts"],t=>Oo(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:js(p),content:m.trim()})}},onError:e=>U.error($o(e)),onSuccess:({chat:e,response:t})=>{f(""),g([]),M(!1),w("default"),D(X?.defaultPermissionMode??"default"),H(""),K.setQueryData(["messages",e.id],Ro(void 0,qo(t))),K.invalidateQueries({queryKey:["chats"]}),W(`/chat/${e.id}`)}}),fe=P(e=>{e?.length&&Fs(e).then(e=>{g(t=>[...t,...e])}).catch(e=>U.error($o(e)))},[]),pe=P(()=>{i({initialPath:G,mode:"file",onSelect:e=>{g(t=>[...t,Hs(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-x-hidden",children:y("div",{className:Cn("mx-auto flex w-full flex-1 flex-col justify-center gap-6 px-4 py-8",ve?"max-w-5xl":"max-w-3xl"),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(La,{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&&_o(m,G,X,p)&&he.mutate())},onPaste:e=>{const t=Bs(e.clipboardData);t.length&&fe(t)}}),x(Ks,{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(io,{attachmentDisabled:he.isPending,disabled:!X,mode:v,onAttachFile:pe,onAttachImage:()=>V.current?.click(),onSelectMode:w}),x(Js,{account:X,autoRotate:k,autoRotateDisabled:he.isPending,connectedAccounts:n,disabled:!n.length,selectedAccountId:X?.id??"",usageSummaries:t,onAutoRotateChange:M,onSelect:e=>{T(e)}}),x(co,{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(so,{disabled:!X,mode:S,onSelectMode:e=>{D(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(ro,{pending:ee.isFetching,snapshot:le}),x(oo,{loading:he.isPending,sendDisabled:!_o(m,G,X,p),onSend:()=>he.mutate()})]})]})]})]})})}function Vs(){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}=mo(),[h,f]=O(""),[g,v]=O([]),[b,N]=O("OFFLINE"),[k,M]=O(null),E=q(null),T=q(null),S=q(!0),D=A(),_=R(()=>["chat",e],[e]),$=R(()=>["messages",e],[e]);L(()=>{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});L(()=>{F.data?.usage&&!k&&M(F.data.usage)},[F.data?.usage,k]);const B=R(()=>j.data?.data??[],[j.data]),G=R(()=>ji(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);L(()=>(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($o(e)),onSuccess:(e,t)=>{D.setQueryData(_,e),D.invalidateQueries({queryKey:["chats"]}),!1!==t.notify&&U.success("Chat account updated.")}}),ee=I({mutationFn:t=>jn(o,e,t),onError:e=>U.error($o(e)),onSuccess:e=>{D.setQueryData(_,e),D.invalidateQueries({queryKey:["chats"]})}}),te=I({mutationFn:({accountId:e,settings:t})=>qn(o,e,t),onError:e=>U.error($o(e)),onSuccess:e=>{D.setQueryData(["accounts"],t=>Oo(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($o(e)),onSuccess:(e,t)=>{S.current=!0,(t?.clearComposer??1)&&(f(""),v([])),D.setQueryData($,t=>Ro(t,qo(e))),D.invalidateQueries({queryKey:_}),D.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($o(e)),onSuccess:()=>{U.message("Stop requested.")}}),re=R(()=>vo(i,n),[n,i]),ie=R(()=>function(e,t,n,a){return e?.autoRotateAccount&&"RUNNING"!==e.status&&n&&n.id!==e.accountId?wo(a[n.id])<0?null:!t||"CONNECTED"!==t.status||wo(a[t.id])<0?n:null:null}(W,V,re,n),[n,re,V,W])?.id;L(()=>{!ie||Z.isPending||ne.isPending||Z.mutate({accountId:ie,notify:!1})},[ie,ne.isPending,Z.isPending]);const se=P(e=>{e?.length&&Fs(e).then(e=>{v(t=>[...t,...e])}).catch(e=>U.error($o(e)))},[]),oe=P(()=>{s({initialPath:z.data?.workingDirectory,mode:"file",onSelect:e=>{v(t=>[...t,Hs(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(L(()=>{if(!e)return;const t=(e,t)=>{"chat.updated"!==e?"context.updated"!==e?D.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($o(e))},onEvent:t,onOpen:()=>{var a;N("ONLINE"),Fn(o,e,(a=D.getQueryData($),Math.max(0,...a?.data.map(e=>e.sequence)??[]))).then(e=>{e.data.forEach(e=>t("message.created",e))}).catch(e=>U.error($o(e))),zn(o,e).then(n).catch(e=>U.error($o(e)))}});function n(e){D.setQueryData(_,e),D.setQueryData(["chats"],t=>t?.map(t=>t.id===e.id?e:t))}},[e,_,$,D,o]),L(()=>{S.current=!0;const e=requestAnimationFrame(()=>J("auto"));return()=>cancelAnimationFrame(e)},[e,J]),L(()=>{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(Qs,{});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=ho(ge,he?.model),xe=we?.supportedReasoningEfforts.map(e=>e.reasoningEffort)??[],ye=he?.reasoningEffort??we?.defaultReasoningEffort??null,be=we?.additionalSpeedTiers??[],Ne=fo(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(Xs,{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(Zs,{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(Sr,{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:"min-w-0 overflow-hidden border-t bg-background",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(Pr,{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(La,{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(),_o(h,he?.workingDirectory??"",fe,g)&&ne.mutate({attachments:js(g),clearComposer:!0,delivery:pe?"queue":void 0}))},onPaste:e=>{const t=Bs(e.clipboardData);t.length&&se(t)}}),x(Ks,{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(io,{attachmentDisabled:ne.isPending,disabled:!he,modeDisabled:pe,mode:he?.collaborationMode??"default",onAttachFile:oe,onAttachImage:()=>T.current?.click(),pending:ee.isPending,steerDisabled:!pe||ne.isPending||!_o(h,he?.workingDirectory??"",fe,g),onSteerActiveTurn:()=>ne.mutate({attachments:js(g),clearComposer:!0,delivery:"steer"}),onSelectMode:e=>ee.mutate({collaborationMode:e})}),x(Js,{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(co,{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(so,{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(Ys,{usage:k}),x(ro,{pending:X.isFetching,snapshot:Ne}),x(oo,{loading:ne.isPending,running:pe,sendDisabled:!_o(h,he?.workingDirectory??"",fe,g),stopPending:ae.isPending,onSend:()=>ne.mutate({attachments:js(g),clearComposer:!0,delivery:pe?"queue":void 0}),onStop:()=>ae.mutate()})]})]})]})})]})})]})}function Qs(){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 Js({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(wr,{children:[y(xr,{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(yr,{align:"start",className:"w-64",children:[i?y(w,{children:[y(br,{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(Cs,{checked:!!t,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),x(Mr,{})]}):null,x(Cr,{value:d,onValueChange:e=>{e&&e!==d&&s(e)},children:a.map(e=>y(Ar,{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 Ys({usage:e}){if(!e||e.tokenLimit<=0)return null;const t=So(e.usedPercent);return y(Ji,{children:[x(Yi,{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(Xi,{align:"end",className:"w-72",side:"top",children:[y(Zi,{children:[x(es,{children:"Context window"}),x(ts,{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:[Mo(e.tokensUsed)," /"," ",Mo(e.tokenLimit)," tokens used"]})]})]})]})}function Xs({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 Zs({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?ao(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(eo,{chatId:e,disabled:t,queryClient:i,session:n,status:o}):null]})}function eo({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($o(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?no(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...":no(g)})]}),y("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_auto]",children:[x(La,{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(to,{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 to({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 no(e){return e?[e.clean?"clean":`${e.changedFiles.length} changed`,ao(e)].filter(Boolean).join(" · "):"Git unavailable"}function ao(e){const t=[];return e.ahead&&t.push(`+${e.ahead}`),e.behind&&t.push(`-${e.behind}`),t.join(" ")}function ro({pending:e,snapshot:t}){const n=po(t),a=go(t);return y(Ji,{children:[y(Yi,{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(Xi,{align:"start",className:"w-80",side:"top",children:[y(Zi,{children:[x(es,{children:"Usage capacity"}),x(ts,{children:"Current Codex account limits refresh automatically."})]}),x(lo,{pending:e,snapshot:t})]})]})}function io({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(wr,{children:[x(xr,{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(yr,{align:"start",className:"w-56",children:[y(br,{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(Cs,{checked:l,className:"pointer-events-none",size:"sm",tabIndex:-1})]}),y(br,{className:"gap-3 py-2",disabled:u||!i,onClick:i,children:[x(ve,{}),x("span",{children:"Attach image"})]}),y(br,{className:"gap-3 py-2",disabled:u||!r,onClick:r,children:[x(Re,{}),x("span",{children:"Attach workspace file"})]}),o?y(br,{className:"gap-3 py-2",disabled:c,onClick:o,children:[x(G,{}),x("span",{children:"Steer active turn"})]}):null]})]})}function so({disabled:e,mode:t,onSelectMode:n,pending:a}){const r="fullAccess"===t;return y(wr,{children:[y(xr,{render:x(fa,{"aria-label":Lo(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:Lo(t),variant:"ghost"}),children:[a?x(Ie,{className:"animate-spin"}):x(r?Ke:He,{}),x("span",{className:"truncate max-sm:sr-only",children:Lo(t)})]}),x(yr,{align:"start",className:"w-48",children:y(Cr,{value:t,onValueChange:e=>n("fullAccess"===e?"fullAccess":"default"),children:[x(Ar,{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(Ar,{className:"text-orange-700 dark:text-orange-300",value:"fullAccess",children:y("span",{className:"grid min-w-0 gap-0.5",children:[x("span",{children:"Full access"}),x("span",{className:"text-xs text-muted-foreground",children:"No sandbox or approval prompts."})]})})]})})]})}function oo({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 co({activeReasoningEffort:e,disabled:t,modelOptions:n,modelValue:a,onSelectModel:r,onSelectReasoning:i,onSelectServiceTier:s,pending:o,reasoningOptions:d,reasoningValue:c,selectedModel:l,serviceTierOptions:u,serviceTierValue:m}){const h=function({effort:e,model:t,modelValue:n,serviceTier:a}){return[(t?.displayName??n)||"Model",e?Po(e):null,a?Do(a):null].filter(Boolean).join(" ")}({effort:e,model:l,modelValue:a,serviceTier:m});return y(wr,{children:[y(xr,{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(yr,{align:"start",className:"w-72",children:[y(Nr,{children:[y(Ir,{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:Po(e)})]}),x(kr,{className:"w-52",children:y(Cr,{value:c,onValueChange:i,children:[x(Ar,{value:"",children:"Model default"}),d.map(e=>x(Ar,{value:e,children:Po(e)},e))]})})]}),y(Nr,{children:[y(Ir,{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(kr,{className:"w-64",children:y(Cr,{value:a,onValueChange:r,children:[x(Ar,{value:"",children:"Default model"}),n.map(e=>x(Ar,{value:e.model,children:x("span",{className:"truncate",children:e.displayName})},e.id))]})})]}),y(Nr,{children:[y(Ir,{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:Do(m)})]}),x(kr,{className:"w-52",children:y(Cr,{value:m,onValueChange:s,children:[x(Ar,{value:"",children:"Default speed"}),u.map(e=>x(Ar,{value:e,children:Do(e)},e))]})})]})]})]})}function lo({pending:e,snapshot:t}){return t?y("div",{className:"grid gap-2",children:[y("div",{className:"grid gap-1 text-xs text-muted-foreground",children:[t.limitName?x("div",{children:t.limitName}):null,t.planType?y("div",{children:["Plan: ",To(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,To(n))}):null]}),x(uo,{fallbackLabel:"5-hour limit",severity:"fiveHour",window:t.primary}),x(uo,{fallbackLabel:"Weekly limit",severity:"weekly",window:t.secondary})]}):x("div",{className:"rounded-md bg-muted/60 p-2 text-xs text-muted-foreground",children:e?"Loading limits...":"Usage limits are unavailable."});var n}function uo({fallbackLabel:e,severity:t,window:n}){const a=So(n?.usedPercent??0),r=Math.max(0,Math.round(100-a)),i=xo(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:bo(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:No(n.windowDurationMins)}):null,n?.resetsAt?y("span",{children:["Resets ",Io(n.resetsAt)]}):null]})]})}function mo(){return f()}function ho(e,t){return t?e.find(e=>e.model===t||e.id===t):e.find(e=>e.isDefault)??e[0]}function fo(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function po(e){return e?e.credits?.unlimited?"Unlimited":e.rateLimitReachedType?"Limit reached":[yo(e.primary,"5h"),yo(e.secondary,"W")].filter(Boolean).join(" · ")||"Usage n/a":"Usage unavailable"}function go(e){return e?xo(e.secondary)?"weekly":xo(e.primary)?"fiveHour":null:null}function vo(e,t){return e.map((e,n)=>({account:e,index:n,score:wo(t[e.id])})).sort((e,t)=>t.score-e.score||e.index-t.index).at(0)?.account}function wo(e){if(!e)return 0;if(e.rateLimitReachedType||go(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-So(e.usedPercent));return t.length?Math.min(...t):0}function xo(e){return So(e?.usedPercent??0)>=100}function yo(e,t){if(!e)return null;const n=Math.max(0,Math.round(100-So(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 bo(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 No(e){return e>=10080?`${Math.round(e/10080)} week window`:e%60==0?e/60+" hour window":`${e} minute window`}function Io(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 ko(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 Co(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 Ao(e){return e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||e}function Mo(e){return e>=1e6?`${Eo(e/1e6)}M`:e>=1e3?`${Eo(e/1e3)}k`:String(Math.max(0,Math.round(e)))}function Eo(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function To(e){return e.split("_").filter(Boolean).map(e=>e.slice(0,1).toUpperCase()+e.slice(1)).join(" ")}function So(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}function Po(e){return e?"xhigh"===e?"Extra High":e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function Do(e){return e?e.slice(0,1).toUpperCase()+e.slice(1):"Default"}function Lo(e){return"fullAccess"===e?"Full access":"Default"}function Ro(e,t){let n=e;for(const a of t)n=Wn(n,a);return n??{data:[],nextCursor:null}}function qo(e){return[e.message,e.assistantMessage].filter(e=>!!e)}function Oo(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 _o(e,t,n,a=[]){return(!!e.trim()||a.length>0)&&!!t.trim()&&!!n}function $o(e){return e instanceof Error?e.message:"Request failed."}var Uo=yn({default:()=>zo}),zo=c(function(){return x(_s,{})}),jo=yn({default:()=>Fo}),Fo=c(function(){return x(Ws,{})}),Bo=yn({default:()=>Go}),Go=c(function(){return x(Vs,{})}),Ho=class extends Error{status;constructor(e,t){super(t),this.status=e}};function Ko(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"Content-Type":"application/json",...t.headers}})}function Wo(e){throw new Ho(405,`${e} is not supported for this route.`)}function Vo(e,t){t.includes(e.method)||Wo(e.method)}async function Qo(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 Ho(400,"JSON body must be an object.");return e}catch(n){if(n instanceof Ho)throw n;throw new Ho(400,"Request body must be valid JSON.")}}function Jo(e,t,n={}){if(null==e){if(n.required)throw new Ho(400,`${t} is required.`);return}if("string"!=typeof e)throw new Ho(400,`${t} must be a string.`);const a=e.trim();if(!a&&n.required)throw new Ho(400,`${t} is required.`);if(n.maxLength&&a.length>n.maxLength)throw new Ho(400,`${t} must be ${n.maxLength} characters or fewer.`);return a||void 0}function Yo(e,t){if(void 0!==e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Ho(400,`${t} must be an array of strings.`);return e}}function Xo(e,t){if(void 0!==e){if("boolean"!=typeof e)throw new Ho(400,`${t} must be a boolean.`);return e}}function Zo(e,t){if(void 0!==e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Ho(400,`${t} must be an object.`);return e}}function ed(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 Ho(400,`${t} must be an integer.`);return r}function td(e,t){const n=e[t];if(!n)throw new Ho(400,`${t} is required.`);return n}function nd(e){return e instanceof Ho?Ko({message:e.message},{status:e.status}):Ko({message:e instanceof Error?e.message:"Unexpected server error."},{status:500})}var ad=yn({loader:()=>rd});function rd({request:e}){try{return Vo(e,["GET"]),Ko({status:"ok",service:"xedoc"})}catch(t){return nd(t)}}var id,sd=globalThis,od=an("~"===(id=process.env.CODEX_WORKSPACE_ROOT?.trim()||Yt())?Yt():id.startsWith("~/")?an(Yt(),id.slice(2)):sn(id),".xedoc","xedoc.db"),dd=function(e){return`file:${e}?connection_limit=1&pool_timeout=30`}(od);process.env.DATABASE_URL=dd,Wt(en(od),{recursive:!0,mode:448});var cd=sd.prisma??new Bt({datasources:{db:{url:dd}}});"production"!==process.env.NODE_ENV&&(sd.prisma=cd);var ld="server",ud="scrypt";async function md(e){!function(e){if(e.length<8)throw new Ho(400,"Server password must be at least 8 characters.")}(e);const t=await vd()??await async function(e){try{return await cd.serverAuth.create({data:{id:ld,passwordHash:wd(e),tokenSecret:xd(32)}})}catch(t){if(function(e){return e instanceof Ft.PrismaClientKnownRequestError&&"P2002"===e.code}(t))throw new Ho(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!==ud||!a||!r||void 0!==i)&&yd(zt(e,a,64).toString("base64url"),r)}(e,t.passwordHash))throw new Ho(401,"Invalid server password.");return{token:fd({authHash:pd(t.passwordHash),issuedAt:(new Date).toISOString()},t.tokenSecret)}}async function hd(e){return async function(e){return function(e,t){const[n,a,r]=e.split(".");if(!n||!a||void 0!==r)throw new Ho(401,"Invalid auth token.");if(!yd(a,gd(n,t.tokenSecret)))throw new Ho(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 Ho(401,"Invalid auth token.")}}(n);if(i.authHash!==pd(t.passwordHash))throw new Ho(401,"Auth token has been revoked.");return i}(function(e){const[t,n]=e?.split(" ")??[];if("Bearer"!==t||!n)throw new Ho(401,"Missing auth token.");return n}(e),await async function(){const e=await vd();if(!e)throw new Ho(401,"Server password has not been configured.");return e}())}(e.headers.get("authorization")??void 0)}function fd(e,t){const n=(a=JSON.stringify(e),Buffer.from(a,"utf8").toString("base64url"));var a;return`${n}.${gd(n,t)}`}function pd(e){return t=e,Ot("sha256").update(t).digest("hex");var t}function gd(e,t){return _t("sha256",t).update(e).digest("base64url")}async function vd(){return cd.serverAuth.findUnique({where:{id:ld}})}function wd(e){const t=xd(16);return`${ud}:${t}:${zt(e,t,64).toString("base64url")}`}function xd(e){return $t(e).toString("base64url")}function yd(e,t){const n=Buffer.from(e),a=Buffer.from(t);return n.length===a.length&&jt(n,a)}var bd=yn({loader:()=>Nd});async function Nd({request:e}){try{return Vo(e,["GET"]),Ko(await async function(){return{passwordConfigured:!!(await vd())}}())}catch(t){return nd(t)}}var Id=yn({action:()=>kd});async function kd({request:e}){try{return Vo(e,["POST"]),Ko(await md(Jo((await Qo(e)).password,"password",{required:!0,maxLength:256})),{status:200})}catch(t){return nd(t)}}var Cd=yn({loader:()=>Ad});async function Ad({request:e}){try{return Vo(e,["GET"]),Ko(await async function(e){return{authenticated:!0,issuedAt:(await hd(e)).issuedAt}}(e))}catch(t){return nd(t)}}function Md(e){if(e&&"object"==typeof e&&!Array.isArray(e))return e}function Ed(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function Td(e){const t=Md(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,String(t)])):null}var Sd=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=Ld(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(Rd(t.id));a&&(clearTimeout(a.timeout),this.pending.delete(Rd(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()}},Pd=new class{runtimes=new Map;getRuntime(e){const t=this.runtimes.get(e.accountId);if(t)return t;const n=new Sd(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 Dd(e){return(await Pd.getRuntime(e).request("account/rateLimits/read",void 0,3e4)).result}function Ld(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 Rd(e){return"string"==typeof e||"number"==typeof e?String(e):JSON.stringify(e)}async function qd(e){const t=await cd.codexAccount.findUnique({where:{id:e}});if(!t)throw new Ho(404,"Codex account not found.");return t}async function Od(e,t="browser"){const n=await qd(e);if(jd(e))return Pd.stopRuntime(e),await cd.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 cd.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastAuthUrl:null,lastAuthMode:t,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}});try{const a=Ud(n);if(Md(Md((await a.request("account/read",{refreshToken:!1})).result)?.account))return await cd.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=Md((await a.request("account/login/start","device"===t?{type:"chatgptDeviceCode"}:{type:"chatgpt"})).result),i="chatgptDeviceCode"===Ed(r?.type)?"device":t,s=function(e,t){return"device"===t?Ed(e?.verificationUrl)??Ed(e?.verification_url)??Ed(e?.authUrl)??Ed(e?.auth_url)??Ed(e?.url)??null:Ed(e?.authUrl)??Ed(e?.auth_url)??Ed(e?.url)??null}(r,i),o=Ed(r?.loginId)??null,d="device"===i?Ed(r?.userCode)??Ed(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 cd.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=Md(e.params);if("account/login/completed"===e.method){const e=Ed(r?.loginId);if(n&&e&&e!==n)return;return a(),!1===r?.success?void cd.codexAccount.update({where:{id:t},data:{status:"ERROR",lastError:Ed(r.error)??"Login failed."}}):void cd.codexAccount.update({where:{id:t},data:{status:"CONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}"account/updated"===e.method&&Ed(r?.authMode)&&(a(),cd.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 cd.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 _d(e,t){const n=await qd(e),a=function(e){let t;try{t=new URL(e.trim())}catch{throw new Ho(400,"Paste a valid callback URL.")}if("http:"!==t.protocol)throw new Ho(400,"Callback URL must use http.");if(t.username||t.password)throw new Ho(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 Ho(400,"Callback URL must point to localhost.");if(!t.searchParams.has("code")&&!t.searchParams.has("error"))throw new Ho(400,"Callback URL must include an OAuth code or error.");return t}(t),r=Ud(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 Ho(400,[`Codex login callback returned HTTP ${t.status}.`,e].filter(Boolean).join("\n"))}const s=Md((await i)?.params);if(!1===s?.success){const t=Ed(s.error)??"Login failed.";return await cd.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:$d(n.lastAuthMode),authUrl:null,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}return await async function(e,t){return!!Md(Md((await t.request("account/read",{refreshToken:!1})).result)?.account)&&(await cd.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."}:jd(e)?(Pd.stopRuntime(e),await cd.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 cd.codexAccount.update({where:{id:e},data:{status:"AUTHENTICATING",lastError:null}}),{accountId:e,status:"AUTHENTICATING",authMode:$d(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 cd.codexAccount.update({where:{id:e},data:{status:"ERROR",lastError:t}}),{accountId:e,status:"ERROR",authMode:$d(n.lastAuthMode),authUrl:n.lastAuthUrl,verificationUrl:"device"===n.lastAuthMode?n.lastAuthUrl:null,userCode:n.lastAuthUserCode,message:t}}}function $d(e){return"browser"===e||"device"===e?e:null}function Ud(e){return Pd.getRuntime({accountId:e.id,command:e.command,args:Hd(e.args),workingDirectory:null,environment:Td(e.environment)})}function zd(){const e=process.env.CODEX_ARGS;return e?e.split(" ").map(e=>e.trim()).filter(Boolean):["app-server"]}function jd(e){try{const t=Vt(`${Ld(e)}/auth.json`,"utf8"),n=JSON.parse(t);return!("chatgpt"!==Ed(n.auth_mode)||!Md(n.tokens)&&!Ed(n.OPENAI_API_KEY))}catch{return!1}}function Fd(e){if(void 0!==e)return JSON.parse(JSON.stringify(e))}function Bd(e){return{args:Fd(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 Gd(e){return{id:e.id,displayName:e.displayName,status:e.status,command:e.command,args:Hd(e.args),environment:Td(e.environment),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,lastAuthUrl:e.lastAuthUrl,lastAuthMode:$d(e.lastAuthMode),lastAuthLoginId:e.lastAuthLoginId,lastAuthUserCode:e.lastAuthUserCode,lastError:e.lastError,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Hd(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):zd()}function Kd(e,t){const n=`accounts[${t}]`;if(!e||"object"!=typeof e||Array.isArray(e))throw new Ho(400,`${n} must be an object.`);return{id:Xd(e.id,`${n}.id`,128),displayName:Yd(e.displayName,`${n}.displayName`,128),command:Xd(e.command,`${n}.command`,256)??process.env.CODEX_COMMAND??"codex",args:Zd(e.args,`${n}.args`)??zd(),defaultModel:Xd(e.defaultModel,`${n}.defaultModel`,128)??null,defaultPermissionMode:Jd(e.defaultPermissionMode,`${n}.defaultPermissionMode`)??null,defaultReasoningEffort:Vd(e.defaultReasoningEffort,`${n}.defaultReasoningEffort`)??null,defaultServiceTier:Qd(e.defaultServiceTier,`${n}.defaultServiceTier`)??null,environment:ec(e.environment,`${n}.environment`)}}function Wd(e){return null==e?null:Yd(e,"runtime option",128)}function Vd(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 Ho(400,`${t} is invalid.`)}function Qd(e,t="defaultServiceTier"){if(null==e)return null;if("fast"===e||"flex"===e)return e;throw new Ho(400,`${t} is invalid.`)}function Jd(e,t="defaultPermissionMode"){if(null==e)return null;if("default"===e||"fullAccess"===e)return e;throw new Ho(400,`${t} is invalid.`)}function Yd(e,t,n){const a=Xd(e,t,n);if(!a)throw new Ho(400,`${t} is required.`);return a}function Xd(e,t,n){if(null==e)return;if("string"!=typeof e)throw new Ho(400,`${t} must be a string.`);const a=e.trim();if(a.length>n)throw new Ho(400,`${t} must be ${n} characters or fewer.`);return a||void 0}function Zd(e,t){if(null!=e){if(!Array.isArray(e)||e.some(e=>"string"!=typeof e))throw new Ho(400,`${t} must be an array of strings.`);return e.map(e=>e.trim()).filter(Boolean)}}function ec(e,t){if(null==e)return null;const n=Md(e);if(!n)throw new Ho(400,`${t} must be an object.`);return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,String(t)]))}var tc=yn({action:()=>ac,loader:()=>nc});async function nc({request:e}){try{return Vo(e,["GET"]),await hd(e),Ko(await cd.codexAccount.findMany({orderBy:{createdAt:"asc"}}))}catch(t){return nd(t)}}async function ac({request:e}){try{Vo(e,["POST"]),await hd(e);const t=await Qo(e);return Ko(await async function(e){return cd.codexAccount.create({data:{displayName:e.displayName,command:e.command??process.env.CODEX_COMMAND??"codex",args:Fd(e.args??zd()),defaultModel:Wd(e.defaultModel),defaultPermissionMode:Jd(e.defaultPermissionMode),defaultReasoningEffort:Vd(e.defaultReasoningEffort),defaultServiceTier:Qd(e.defaultServiceTier),environment:Fd(e.environment)}})}({displayName:Jo(t.displayName,"displayName",{required:!0,maxLength:128}),command:Jo(t.command,"command"),args:Yo(t.args,"args"),defaultModel:rc(t.defaultModel,"defaultModel"),defaultPermissionMode:rc(t.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:rc(t.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:rc(t.defaultServiceTier,"defaultServiceTier"),environment:Zo(t.environment,"environment")}),{status:201})}catch(t){return nd(t)}}function rc(e,t){return null===e?null:Jo(e,t,{maxLength:128})}var ic=yn({loader:()=>sc});async function sc({request:e}){try{return Vo(e,["GET"]),await hd(e),Ko(await async function(){const e=await cd.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:Hd(e.args),defaultModel:e.defaultModel,defaultPermissionMode:e.defaultPermissionMode,defaultReasoningEffort:e.defaultReasoningEffort,defaultServiceTier:e.defaultServiceTier,environment:Td(e.environment),createdAt:e.createdAt,updatedAt:e.updatedAt}))}}())}catch(t){return nd(t)}}var oc=yn({action:()=>dc});async function dc({request:e}){try{Vo(e,["POST"]),await hd(e);const t=await Qo(e);if(!Array.isArray(t.accounts))throw new Ho(400,"accounts must be an array.");return Ko(await async function(e){const t=e.accounts.map(Kd),n=[];for(const s of t){const e=s.id?await cd.codexAccount.findUnique({where:{id:s.id}}):null;e?(Pd.stopRuntime(e.id),n.push(await cd.codexAccount.update({where:{id:e.id},data:Bd(s)}))):n.push(await cd.codexAccount.create({data:{...s.id?{id:s.id}:{},...Bd(s)}}))}if(!n.length)return{imported:0,accounts:[],authentications:[]};const a=[];for(const s of n)a.push(await Od(s.id));const r=await cd.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=>Gd(i.get(e.id)??e)),authentications:a}}({accounts:t.accounts}),{status:201})}catch(t){return nd(t)}}var cc=yn({action:()=>uc,loader:()=>lc});async function lc({request:e,params:t}){try{return Vo(e,["GET"]),await hd(e),Ko(await qd(td(t,"accountId")))}catch(n){return nd(n)}}async function uc({request:e,params:t}){try{await hd(e);const n=td(t,"accountId");if("PATCH"===e.method){const t=await Qo(e);return Ko(await async function(e,t){return await qd(e),Pd.stopRuntime(e),cd.codexAccount.update({where:{id:e},data:{displayName:t.displayName,command:t.command,args:void 0===t.args?void 0:Fd(t.args),environment:Fd(t.environment),status:"DISCONNECTED",lastAuthUrl:null,lastAuthMode:null,lastAuthLoginId:null,lastAuthUserCode:null,lastError:null}})}(n,{displayName:Jo(t.displayName,"displayName",{maxLength:128}),command:Jo(t.command,"command"),args:Yo(t.args,"args"),environment:Zo(t.environment,"environment")}))}if("DELETE"===e.method)return Ko(await async function(e){return await qd(e),Pd.stopRuntime(e),cd.codexAccount.delete({where:{id:e}})}(n));Wo(e.method)}catch(n){return nd(n)}}var mc=yn({action:()=>hc});async function hc({request:e,params:t}){try{Vo(e,["PATCH"]),await hd(e);const n=await Qo(e),a={defaultModel:fc(n.defaultModel,"defaultModel"),defaultPermissionMode:fc(n.defaultPermissionMode,"defaultPermissionMode"),defaultReasoningEffort:fc(n.defaultReasoningEffort,"defaultReasoningEffort"),defaultServiceTier:fc(n.defaultServiceTier,"defaultServiceTier")};return Ko(await async function(e,t){return await qd(e),Gd(await cd.codexAccount.update({where:{id:e},data:{defaultModel:void 0===t.defaultModel?void 0:Wd(t.defaultModel),defaultPermissionMode:void 0===t.defaultPermissionMode?void 0:Jd(t.defaultPermissionMode),defaultReasoningEffort:void 0===t.defaultReasoningEffort?void 0:Vd(t.defaultReasoningEffort),defaultServiceTier:void 0===t.defaultServiceTier?void 0:Qd(t.defaultServiceTier)}}))}(td(t,"accountId"),a))}catch(n){return nd(n)}}function fc(e,t){return null===e?null:Jo(e,t,{maxLength:128})}async function pc(e){return async function(e){return(await Pd.getRuntime(e).request("model/list",{includeHidden:!1,limit:100},3e4)).result??{data:[],nextCursor:null}}(vc(await gc(e)))}async function gc(e){const t=await cd.codexAccount.findUnique({where:{id:e}});if(!t)throw new Ho(404,"Account not found.");if("CONNECTED"!==t.status)throw new Ho(400,"Authenticate the account before loading Codex account data.");return t}function vc(e){return{accountId:e.id,args:wc(e.args),command:e.command,environment:Td(e.environment),workingDirectory:null}}function wc(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}var xc=yn({loader:()=>yc});async function yc({request:e,params:t}){try{return Vo(e,["GET"]),await hd(e),Ko(await pc(td(t,"accountId")))}catch(n){return nd(n)}}var bc=yn({loader:()=>Nc});async function Nc({request:e,params:t}){try{return Vo(e,["GET"]),await hd(e),Ko(await async function(e){return Dd(vc(await gc(e)))}(td(t,"accountId")))}catch(n){return nd(n)}}var Ic=yn({action:()=>kc});async function kc({request:e,params:t}){try{Vo(e,["POST"]),await hd(e);const n=await Qo(e);return Ko(await Od(td(t,"accountId"),function(e){const t=Jo(e,"mode",{maxLength:16});if(void 0===t||"browser"===t||"device"===t)return t;throw new Ho(400,"mode must be browser or device.")}(n.mode)))}catch(n){return nd(n)}}var Cc=yn({action:()=>Ac});async function Ac({request:e,params:t}){try{Vo(e,["POST"]),await hd(e);const n=Jo((await Qo(e)).redirectUrl,"redirectUrl",{required:!0,maxLength:4096});return Ko(await _d(td(t,"accountId"),n))}catch(n){return nd(n)}}var Mc="global",Ec=new Map;async function Tc(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=Ec.get(Mc);if(!e.force&&n&&t-n.lastScanAt<rl("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 Vc();if(!e.length)return;const t=(await Promise.all(e.map(e=>el(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs).slice(0,nl()),n=await async function(e){const t=e.map(e=>pl(e.path)).filter(e=>!!e);if(!t.length)return new Set;const n=await cd.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=pl(a.path);e&&n.has(e)||await Dc(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=Ec.get(Mc);e?.promise===r&&(e.promise=void 0)});a.promise=r,Ec.set(Mc,a),await r,await async function(){const e=await cd.chat.findMany({where:{messages:{some:{metadata:{path:"$.kind",equals:"localCodexImport"}}}},select:{id:!0},take:nl()});for(const t of e)await cd.$transaction(e=>Rc(e,t.id))}()}async function Sc(e,t){const n=await cd.chat.findUnique({where:{id:e},select:{externalThreadId:!0}}),a=await xl(e)??(n?.externalThreadId?await Qc(n.externalThreadId):null);if(!a)return;const r=an(Ld(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 Pc(e,t){const n=await xl(e);if(n){const e=await Yc(n,t);if(e)return e}const a=await Qc(t);return a?Yc(a,t):null}async function Dc(e){const t=await vn(e);if(!t.isFile()||t.size>al())return;const n=Lc(await fn(e,"utf8"),e,new Date(t.mtimeMs));if(!n||"xedoc"===n.originator)return;const a=await Gc(e,n.externalThreadId),r=a?.updatedAt??n.updatedAt;await cd.$transaction(async e=>{const t=await e.chat.findFirst({where:{externalThreadId:n.externalThreadId},select:{id:!0}});t?await Rc(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 Lc(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=ul(f);if(!e)continue;const u=ml(e.timestamp)??n;o=hl(o,u),d=fl(d,u);const m=Md(e.payload);if("session_meta"===e.type&&m){a=Ed(m.id)??a,r=Ed(m.source)??r,i=Ed(m.originator)??i,s=Ed(m.cwd)??s,o=ml(m.timestamp)??o;continue}if("turn_context"===e.type&&m){s=Ed(m.cwd)??s;continue}const h=qc(e,u,{originator:i,path:t,sessionId:a,source:r});if(h){c.push(h);continue}const p=Oc(e,u,{originator:i,path:t,sessionId:a,source:r});p&&l.push(p)}const u=c.length?c:l,m=a??pl(t);if(!m||!u.length)return null;const h=gl(u.find(e=>"USER"===e.role)?.content??"")??gl(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 Rc(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"===Md(e.metadata)?.kind),o=s.filter(e=>"USER"===e.role&&_c(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=gl(d.find(e=>"USER"===e.role&&!_c(e.content))?.content??d.find(e=>!_c(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=Md(t.metadata);if("localCodexImport"!==e?.kind)continue;const n=Ed(e.sessionPath);if(n)return n}return null}(e)??await Qc(t);return n?Gc(n,t):null}(s,r.externalThreadId):null),u=l?.title??null,m=l?.updatedAt??a??null,h=vl(r.title),f={};if(m&&r.lastActivityAt.getTime()!==m.getTime()&&(f.lastActivityAt=m),u)h!==vl(u)&&(f.title=u);else{const e=new Set([vl(c),vl("Imported Codex chat")]);(_c(r.title)||e.has(h)||!h)&&(f.title=c)}Object.keys(f).length&&await e.chat.update({where:{id:r.id},data:f})}function qc(e,t,n){if("response_item"!==e.type)return null;const a=Md(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?zc(e.text,e):"string"==typeof e.message?zc(e.message,e):"string"==typeof e.content?zc(e.content,e):Array.isArray(e.content)?zc(e.content.map(e=>{if("string"==typeof e)return e;const t=Md(e);return t?"string"==typeof t.text?t.text:Fc(t)??"":""}).join(""),e):zc("",e)}(a);return!s.trim()||_c(s)?null:{content:s,createdAt:t,metadata:$c(a,n),rawPayload:Uc(e,a),role:r}}function Oc(e,t,n){if("event_msg"!==e.type)return null;const a=Md(e.payload);if(!a)return null;const r=Ed(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?zc(a.message,a):"";return!s.trim()||_c(s)?null:{content:s,createdAt:t,kind:"SYSTEM"===i?"TOOL_ACTIVITY":void 0,metadata:{...$c(a,n),..."SYSTEM"===i?{eventKind:"contextCompaction"}:{}},rawPayload:Uc(e,a),role:i}}function _c(e){const t=e.trim().toLowerCase().replace(/[_\s]+/g," ");return t.startsWith("<environment context>")||t.startsWith("environment context")||t.startsWith("environmentcontext")}function $c(e,t){return{kind:"localCodexImport",originator:t.originator,phase:Ed(e.phase),sessionId:t.sessionId,sessionPath:t.path,source:t.source,sourcePayloadType:Ed(e.type)}}function Uc(e,t){return{payload:{name:Ed(t.name),phase:Ed(t.phase),role:Ed(t.role),type:Ed(t.type)},timestamp:Ed(e.timestamp),type:Ed(e.type)}}function zc(e,t){return[e,...jc(t.images),...jc(t.local_images),...jc(t.localImages)].filter(Boolean).join("\n\n")}function jc(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?Bc(e):Fc(Md(e))).filter(e=>!!e):[]}function Fc(e){return e?Bc(Ed(e.url)??Ed(e.image_url)??Ed(e.path)??Ed(e.filePath)):null}function Bc(e){const t=e?.trim();return t?`<image>${t}</image>`:null}async function Gc(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 Kc(e).get(t)??null}(await fn(n,"utf8"),t)}catch{return null}}async function Hc(e){try{return Kc(await fn(e,"utf8"))}catch{return new Map}}function Kc(e){const t=new Map;for(const n of e.split(/\r?\n/)){if(!n.trim())continue;const e=ul(n);if(!e)continue;const a=Ed(e.id)??Ed(e.thread_id)??Ed(e.threadId)??Ed(e.session_id)??Ed(e.sessionId);if(!a)continue;const r=Wc(Ed(e.thread_name)??Ed(e.threadName)??Ed(e.name)??Ed(e.title)),i=ml(e.updated_at)??ml(e.updatedAt)??ml(e.modified_at)??ml(e.modifiedAt)??null,s=t.get(a);t.set(a,{title:r??s?.title??null,updatedAt:i??s?.updatedAt??null})}return t}function Wc(e){const t=e?.replace(/\s+/g," ").trim();return!t||_c(t)?null:t.slice(0,160)}async function Vc(){const e=[...Xc(),an(wl(process.env.CODEX_HOME?.trim()||"~/.codex"),"sessions"),...await Zc()],t=[...new Set(e.map(e=>wl(e)))],n=[];for(const a of t)try{await ln(a,Ht.R_OK),n.push(a)}catch{}return n}async function Qc(e){const t=await Vc(),n=(await Promise.all(t.map(e=>el(e)))).flat().sort((e,t)=>t.mtimeMs-e.mtimeMs),a=n.find(t=>pl(t.path)===e);if(a)return a.path;for(const r of n.slice(0,nl()))if(await Jc(r.path,e))return r.path;return null}async function Jc(e,t){try{const n=await vn(e);if(!n.isFile()||n.size>al())return null;const a=Lc(await fn(e,"utf8"),e,new Date(n.mtimeMs));return a?.externalThreadId===t?a:null}catch{return null}}async function Yc(e,t){try{const n=await vn(e);if(!n.isFile()||n.size>al())return null;let a,r=null;for(const t of(await fn(e,"utf8")).split(/\r?\n/)){if(!t.trim())continue;const e=ul(t);if(!e)continue;"session_meta"===e.type&&(a=Ed(Md(e.payload)?.id)??a);const n=il(e);n&&(r=n)}return(a??pl(e))===t?r:null}catch{return null}}function Xc(){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 Zc(){const e=wl(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 el(e){const t=[];return await tl(e,t,0),t}async function tl(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 tl(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 nl(){return rl("CODEX_LOCAL_CHAT_IMPORT_MAX_FILES",1e3)}function al(){return rl("CODEX_LOCAL_CHAT_IMPORT_MAX_FILE_BYTES",26214400)}function rl(e,t){const n=Number(process.env[e]);return Number.isInteger(n)&&n>0?n:t}function il(e){const t=sl(e);if(!t)return null;const n=Md(t.params),a=Md(t.info)??Md(n?.info)??n??t;return function(e,t=e){const n=dl(t,["model_context_window","modelContextWindow","context_window","contextWindow","inputTokenLimit","input_token_limit","maxContextTokens","max_context_tokens","tokenLimit","token_limit"]),a=dl(e,["total_tokens","totalTokens","tokens_used","tokensUsed","input_tokens","inputTokens"]),r=dl(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}([dl(e,["input_tokens","inputTokens"]),dl(e,["output_tokens","outputTokens"]),dl(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}}(ol(a,["last_token_usage","lastTokenUsage"])??ol(a,["total_token_usage","totalTokenUsage"])??a,a)}function sl(e,t=0){if(t>4)return;const n=Md(e);if(!n)return;const a=ll(Ed(n.type)??""),r=ll(Ed(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=sl(n[i],t+1);if(e)return e}}function ol(e,t){for(const n of t){const t=Md(e[n]);if(t)return t}}function dl(e,t){for(const n of t){const t=cl(e[n]);if(void 0!==t)return t}}function cl(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 ll(e){return e.replace(/[^a-z0-9]+/gi,"").toLowerCase()}function ul(e){try{return Md(JSON.parse(e))??null}catch{return null}}function ml(e){if("string"!=typeof e)return;const t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function hl(e,t){return!e||t<e?t:e}function fl(e,t){return!e||t>e?t:e}function pl(e){return/rollout-.*?-([0-9a-f]{8,}[^/.]*)\.jsonl$/i.exec(e)?.[1]}function gl(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 vl(e){return e.replace(/\s+/g," ").trim().toLowerCase()}function wl(e){return"~"===e?Yt():e.startsWith("~/")?an(Yt(),e.slice(2)):sn(e)}async function xl(e){const t=await cd.chatMessage.findMany({where:{chatId:e},orderBy:{sequence:"asc"},select:{metadata:!0},take:10});for(const n of t){const e=Md(n.metadata);if("localCodexImport"!==e?.kind)continue;const t=Ed(e.sessionPath);if(t)return t}return null}var yl="__xedocRealtimeState__";function bl(e,t,n){const a={chatId:e,type:t,payload:n};for(const r of function(){const e=globalThis;return e[yl]??={handlers:new Set},e[yl]}().handlers)r(a)}async function Nl(e){const t=Cl(),n=Al(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:Ml(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 Il(e,t){const n=Cl(),a=sn(Al(n,e),function(e){const t=e.trim();if(!t)throw new Ho(400,"Folder name is required.");if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw new Ho(400,"Folder name must be a single folder name.");return t}(t)),r=rn(n,a);if(r.startsWith("..")||nn(r))throw new Ho(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 Ho(409,"Folder already exists.");throw i}return Nl(a)}function kl(e){return Al(Cl(),e)}function Cl(){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 Al(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 Ho(400,"Workspace path does not exist.")}const i=rn(e,r);if(i.startsWith("..")||nn(i))throw new Ho(403,"Path is outside the workspace root.");if(!Jt(r).isDirectory())throw new Ho(400,"Workspace path is not a directory.");return r}function Ml(e){return e.isDirectory()?"directory":e.isSymbolicLink()?"symlink":"file"}var El=1e6;async function Tl(e,t,n){const a=await cd.chat.findUnique({where:{id:e},select:{workingDirectory:!0}});if(!a)throw new Ho(404,"Chat not found.");if(!a.workingDirectory)throw new Ho(400,"Chat does not have a working directory.");const r=kl(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 Sl(r,i.path),o=await Pl(s,r),d=n??i.line??null,c=Math.min(o.size,El),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:Dl(s),line:d,lineCount:h,name:o.name,path:s,relativePath:o.relativePath,size:o.size,truncated:o.size>El}}async function Sl(e,t){const n=t.trim();if(!n||n.includes("\0"))throw new Ho(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 Ho(404,"File does not exist.")}return function(e,t){const n=rn(e,t);if(n.startsWith("..")||nn(n))throw new Ho(403,"Path is outside the chat working directory.")}(a,i),i}async function Pl(e,t){const n=await vn(e);if(!n.isFile())throw new Ho(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 Dl(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 Ll=new Map,Rl=new Map,ql=new Map,Ol=new Map,_l=new Map,$l=new Map,Ul=new Map,zl=new Map;function jl(e,t){return 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)}}(e,async()=>cd.chatMessage.create({data:{...t,chatId:e,sequence:await Yu(e)}}))}function Fl(e,t){const n=(Ul.get(e)??Promise.resolve()).catch(()=>{}).then(t),a=n.catch(()=>{});return Ul.set(e,a),a.finally(()=>{Ul.get(e)===a&&Ul.delete(e)}),n}async function Bl(){await Tc(),await async function(){const e=await cd.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 Hc(an(Ld(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=au(a,e);if(t){const e=await cd.chat.update({where:{id:a.id},data:t});Xu(a.id,"chat.updated",jm(e))}}}()}function Gl(){return cd.chat.findMany({where:{status:{not:"ARCHIVED"}},orderBy:[{lastActivityAt:"desc"},{updatedAt:"desc"}]})}async function Hl(e){const t=await cd.chat.findUnique({where:{id:e}});if(!t)throw new Ho(404,"Chat not found.");return async function(e){return e.accountId&&e.externalThreadId?nu(e,e.accountId,e.externalThreadId):e}(t)}async function Kl(e,t){const n=await Hl(e),a=await async function(e,t){if(void 0===t||t===e.accountId)return;if(null===t)return null;const n=await cd.codexAccount.findUnique({where:{id:t}});if(!n)throw new Ho(400,"Account not found.");if("CONNECTED"!==n.status)throw new Ho(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:Jl(t.collaborationMode),s=void 0!==i&&i!==Yl(n.collaborationMode),o=void 0===t.permissionMode?void 0:Xl(t.permissionMode),d=void 0!==o&&o!==Zl(n.permissionMode);if(void 0!==t.workingDirectory)throw new Ho(400,"Chat working directory cannot be changed.");if(r&&"RUNNING"===n.status)throw new Ho(400,"Wait for the current run to finish before switching accounts.");if(s&&"RUNNING"===n.status)throw new Ho(400,"Wait for the current run to finish before changing modes.");const c=await cd.chat.update({where:{id:e},data:{accountId:a,autoRotateAccount:t.autoRotateAccount,model:void 0===t.model?void 0:Wl(t.model),reasoningEffort:void 0===t.reasoningEffort?void 0:Vl(t.reasoningEffort),serviceTier:void 0===t.serviceTier?void 0:Ql(t.serviceTier),collaborationMode:i,permissionMode:o,title:t.title,externalThreadId:r&&n.accountId||s?null:void 0}});return r&&!n.accountId&&a&&Sc(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 cd.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return;await Km(Pd.getRuntime({accountId:t.id,command:t.command,args:Wm(t.args),workingDirectory:null,environment:Td(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 Rl.values())n.chatId===e&&(n.permissionMode=t)}(e,o),"fullAccess"===o&&await async function(e){const t=[...Ll.values()].filter(t=>t.chatId===e&&"userInput"!==t.requestKind);for(const n of t){if("userInput"===n.requestKind)continue;const t=n.requestKind,a=Pm(t);n.runtime.respondToServerRequest(n.rpcId,a),Ll.delete(Om(e,n.requestId));const r=await cd.chatMessage.findUnique({where:{id:n.messageId}});r&&Xu(e,"message.updated",zm(await cd.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:qm(r.metadata,{autoApproved:!0,decision:"approval"===t?"acceptForSession":void 0,result:a,resolvedAt:(new Date).toISOString(),status:"resolved"}),status:"COMPLETED"}})))}}(e)),c}function Wl(e){if(null===e)return null;const t=e.trim();if(!t)throw new Ho(400,"Runtime option cannot be empty.");return t}function Vl(e){if(null===e)return null;if(!["none","minimal","low","medium","high","xhigh"].includes(e))throw new Ho(400,"reasoningEffort is invalid.");return e}function Ql(e){if(null===e||"fast"===e||"flex"===e)return e;throw new Ho(400,"serviceTier is invalid.")}function Jl(e){if(null===e||"default"===e)return"default";if("plan"===e)return e;throw new Ho(400,"collaborationMode is invalid.")}function Yl(e){return"plan"===e?"plan":"default"}function Xl(e){if(null===e||"default"===e)return"default";if("fullAccess"===e)return e;throw new Ho(400,"permissionMode is invalid.")}function Zl(e){return"fullAccess"===e?"fullAccess":"default"}function eu(e){const t=Bm(e);return!t||"untitled chat"===t||"conversation"===t||"new chat"===t||"chat"===t}function tu(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 nu(e,t,n){const a=au(e,(await Hc(an(Ld(t),"session_index.jsonl"))).get(n));if(!a)return e;const r=await cd.chat.update({where:{id:e.id},data:a});return Xu(e.id,"chat.updated",jm(r)),r}function au(e,t){if(!t)return null;const n={};return!t.title||Bm(e.title)===Bm(t.title)||eu(t.title)&&!eu(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 ru(e,t=0,n=50){const a=await Hl(e);await async function(e){const t=await cd.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 cd.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 cd.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 cd.codexAccount.findUnique({where:{id:e.accountId}});if(!t||"CONNECTED"!==t.status)return[];const n=Pd.getRuntime({accountId:t.id,command:t.command,args:Wm(t.args),workingDirectory:null,environment:Td(t.environment)});try{const t=du((await n.request("thread/turns/list",{threadId:e.externalThreadId,limit:1e3},3e4)).result);if(t.length)return t}catch{}try{return du((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 xl(e);if(n){const e=await Jc(n,t);if(e)return e}const a=await Qc(t);return a?Jc(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(iu),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??su(e.id,e.externalThreadId,t,n),itemId:t.itemId??a?.itemId??null,kind:t.kind??"CHAT",metadata:(t.metadata?_m(t.metadata):null)??a?.metadata??ou(t),rawPayload:_m(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||(!iu(e)||!t.has(e.role)))}(e,i)).map(zm);return[...o,...d].sort((e,t)=>e.sequence-t.sequence)}(e,r,a):a.map(zm)).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 iu(e){return"CHAT"===e.kind&&("USER"===e.role||"ASSISTANT"===e.role)}function su(e,t,n,a){return["codex",e,t??"thread",n.turnId??"turn",n.itemId??a,n.role.toLowerCase()].join(":")}function ou(e){return{kind:"codexTranscript",source:e.source}}function du(e){return function(e){const t=Md(e),n=Md(t?.thread),a=[Array.isArray(e)?e:null,t?.data,t?.items,t?.turns,n?.turns];for(const r of a){const e=hu(r);if(e)return e}return[]}(e).flatMap(e=>function(e){const t=Ed(e.id)??Ed(e.turnId)??Ed(e.turn_id)??null,n=fu(e.createdAt??e.created_at??e.timestamp??e.startedAt),a=fu(e.completedAt??e.completed_at??e.finishedAt??e.updatedAt);return(hu(e.items)??[]).map(e=>function(e,t){const n=function(e){const t=Ed(e.role)?.toLowerCase();if("user"===t)return"USER";if("assistant"===t||"agent"===t)return"ASSISTANT";const n=Ed(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,...lu(t.images),...lu(t.local_images),...lu(t.localImages)].filter(Boolean).join("\n\n")}($m(e.text)??$m(e.message)??$m(e.output)??cu(e.content)??"",e)}(e);return!a.trim()||_c(a)?null:{completedAt:fu(e.completedAt??e.completed_at)??t.completedAt,content:a,createdAt:fu(e.createdAt??e.created_at??e.timestamp)??t.createdAt,itemId:Ed(e.id)??Ed(e.itemId)??Ed(e.item_id)??null,rawPayload:pu(e),role:n,source:"runtime",turnId:Ed(e.turnId)??Ed(e.turn_id)??t.turnId??null}}(e,{completedAt:a,createdAt:n,turnId:t})).filter(e=>!!e)}(e))}function cu(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=Md(e);return $m(t?.text)??$m(t?.content)??$m(t?.message)??uu(t)??""}).join("");return t.length?t:void 0}function lu(e){return Array.isArray(e)?e.map(e=>"string"==typeof e?mu(e):uu(Md(e))).filter(e=>!!e):[]}function uu(e){return e?mu(Ed(e.url)??Ed(e.image_url)??Ed(e.path)??Ed(e.filePath)):null}function mu(e){const t=e?.trim();return t?`<image>${t}</image>`:null}function hu(e){return Array.isArray(e)?e.map(e=>Md(e)).filter(e=>!!e):null}function fu(e){if("string"!=typeof e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t}function pu(e){return{id:Ed(e.id),itemId:Ed(e.itemId)??Ed(e.item_id),role:Ed(e.role),type:Ed(e.type)}}async function gu(e,t,n){await Hl(e);const a=Om(e,t),r=Ll.get(a);if(!r)throw new Ho(410,"Server request is no longer active.");const i=function(e){if("approval"===e.kind){if(void 0===e.decision)throw new Ho(400,"decision is required for approval requests.");return{decision:e.decision}}if("permissions"===e.kind){if(void 0===e.result)throw new Ho(400,"result is required for permissions requests.");return e.result}if(void 0===e.result)throw new Ho(400,"result is required for user input requests.");return e.result}(n);r.runtime.respondToServerRequest(r.rpcId,i),Ll.delete(a);const s=zm(await cd.chatMessage.update({where:{id:r.messageId},data:{status:"COMPLETED",completedAt:new Date,metadata:qm(await Rm(r.messageId),{status:"resolved",decision:n.decision,result:n.result??i,resolvedAt:(new Date).toISOString()})}}));return Xu(e,"message.updated",s),s}async function vu(e,t){let n=await Hl(e);if(t.accountId&&n.accountId&&t.accountId!==n.accountId)throw new Ho(400,"Switch the chat account before sending with a different account.");t.accountId||"RUNNING"===n.status||(n=await yu(n));const a=t.accountId??n.accountId;if(!a)throw new Ho(400,"Choose a Codex account before sending messages.");const r=await cd.codexAccount.findUnique({where:{id:a}});if(!r)throw new Ho(400,"Account not found.");if("CONNECTED"!==r.status)throw new Ho(400,"Authenticate the account before sending messages.");if(!n.workingDirectory)throw new Ho(400,"Select a working directory before sending messages.");const i=kl(n.workingDirectory),s=await async function(e,t){if(t.length>12)throw new Ho(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 Ho(400,"Attachment kind is invalid.");n.push(await Mu(e,a))}else n.push(Au(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 Ho(400,"Message content or an attachment is required.");const d=await async function(e,t,n){if(!eu(t))return null;const a=((await cd.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?tu(t):null;if(!n)return null;const a=await cd.chat.findUnique({where:{id:e},select:{title:!0}});return a&&eu(a.title)?(await Qm(e,n),n):null}(e,d);const c=void 0===t.collaborationMode?void 0:Jl(t.collaborationMode),l=c??Yl(n.collaborationMode),u=Zl(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=xu(n.id);if(!l?.runtime)throw new Ho(409,"The active turn is not ready for steering yet.");const u=l.externalThreadId??n.externalThreadId;if(!u)throw new Ho(409,"The active turn has not published a thread yet.");const m=l.turnId??await Ru(l.runtime,u);if(!m)throw new Ho(409,"The active turn has not published a turn id yet.");const h=await cd.chat.findUnique({where:{id:n.id}}),f=await Vu(l.runtime,h?.model??n.model,h?.reasoningEffort??n.reasoningEffort);l.turnId=nm(await async function(e,t,n,a){async function r(r){const i=Fu(n,a),s=void 0===t.collaborationMode?[t]:[t,Lu(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&&Gu(d))break;if(Bu(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 Ru(e,t.threadId);if(!n||n===t.expectedTurnId)throw i;return r(n)}}(l.runtime,{expectedTurnId:m,threadId:u,...Ku(a,f)},r,t))??m,l.externalThreadId=u;const p=await jl(n.id,{role:"USER",status:"COMPLETED",content:i,completedAt:d,metadata:Um(Tu({...s,delivery:"steer",steeredAt:d.toISOString()},t))}),g=await cd.chat.update({where:{id:n.id},data:{lastActivityAt:d,updatedAt:d}});return Xu(n.id,"chat.updated",jm(g)),Xu(n.id,"message.created",zm(p)),{message:zm(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 jl(a.id,{role:"USER",status:"COMPLETED",content:s,completedAt:c,metadata:Um(Tu({...o,delivery:"queue",queueId:u,queueStatus:"queued",queuedAt:c.toISOString()},t))});!function(e,t){const n=ql.get(e)??[];ql.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 cd.chat.update({where:{id:a.id},data:{lastActivityAt:c,updatedAt:c}});return Xu(a.id,"chat.updated",jm(h)),Xu(a.id,"message.created",zm(m)),{message:zm(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 jl(e,{role:"USER",status:"COMPLETED",content:o,completedAt:m,metadata:Um(Tu(t.metadata,s))});Xu(e,"message.created",zm(h));const f=await wu({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:zm(h),assistantMessage:zm(f.assistantMessage),runId:f.run.id,status:"QUEUED"}}async function wu({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 cd.chatRun.create({data:{chatId:a,accountId:e,status:"QUEUED",request:Um({attachments:t.map(e=>e.message),collaborationMode:r,content:i,metadata:s,permissionMode:o,workingDirectory:l})}}),m=await jl(a,{runId:u.id,role:"ASSISTANT",kind:"CHAT",status:"PENDING",content:""});return Xu(a,"chat.updated",jm(await cd.chat.update({where:{id:a},data:{collaborationMode:d??void 0,lastActivityAt:c,status:"RUNNING",updatedAt:c}}))),Xu(a,"message.created",zm(m)),Xu(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=Ol.get(e)??Promise.resolve();let a;const r=new Promise(e=>{a=e}),i=n.catch(()=>{}).then(()=>r);Ol.set(e,i),await n.catch(()=>{});try{return await t()}finally{a(),Ol.get(e)===i&&Ol.delete(e)}})(a,()=>async function(e,t,n,a,r,i,s,o,d,c){const l=await cd.codexAccount.findUnique({where:{id:a}}),u=await cd.chat.findUnique({where:{id:e}});if(!l||!u)return;const m=Zl(u.permissionMode),h=await cd.chatMessage.update({where:{id:n},data:{status:"STREAMING"}});Xu(e,"message.updated",zm(h)),await cd.chatRun.update({where:{id:t},data:{status:"RUNNING",startedAt:new Date}}),Xu(e,"run.status",{runId:t,status:"RUNNING"});const f={chatId:e,externalThreadId:u.externalThreadId,interruptRequested:!1,permissionMode:m,runId:t};Rl.set(t,f);const p=Pd.getRuntime({accountId:l.id,command:l.command,args:Wm(l.args),workingDirectory:null,environment:Td(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=rm(e);if(t&&a&&a!==t)return!1;const r=im(e);return!n||!r||r===n})(n,x,w)&&Fl(t,()=>async function(e,t){const n=function(e){const t=km(e);if(t){const e=Md(t.params),n=Md(t.info)??Md(e?.info)??e??t;return Im(Cm(n,["last_token_usage","lastTokenUsage"])??Cm(n,["total_token_usage","totalTokenUsage"])??n,n)}const n=Md(e.params),a=Md(n?.event),r=Md(n?.usage)??Md(a?.usage)??(Nm(e.method)?n:void 0);return r?Im(r):null}(t);n&&Xu(e.chatId,"context.updated",n);if(function(e){return!!km(e)||Nm(e.method)}(t))return;if(function(e){const t=Md(e.params),n=Md(t?.payload)??Md(t?.event);return[e.method,Ed(t?.type),Ed(n?.type),Ed(n?.event)].some(e=>um(e??"").includes("compact"))}(t))return void(await em({chatId:e.chatId,completedAt:new Date,content:ym(t),itemId:`context-compaction:${im(t)??t.method??Date.now()}`,kind:"TOOL_ACTIVITY",metadata:{kind:"contextCompaction",rawMethod:t.method},rawPayload:t,role:"SYSTEM",runId:e.runId,status:bm(t)?"STREAMING":"COMPLETED",turnId:im(t)}));const a=t.method??"",r=Md(t.params),i=om(t),s=um(Ed(i?.type)??"");if("thread/name/updated"===a){const n=function(e){if("thread/name/updated"!==e.method)return null;const t=Md(e.params),n=Md(e.result),a=Md(t?.event);return Gm(t)??Gm(a)??Gm(n)}(t);return void(n&&await Qm(e.chatId,n))}if("item/agentMessage/delta"===a||a.includes("agent_message_delta")){const n=$m(r?.delta)??$m(Md(r?.event)?.delta);if(!n)return;const a=sm(t)??"assistant",i=`${e.streamBuffers.get(a)??""}${n}`;e.streamBuffers.set(a,i),e.onAssistantContent(i);const s=await em({chatId:e.chatId,content:i,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Ed(r?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:im(t)});return void Xu(e.chatId,"message.delta",{content:i,delta:n,messageId:s.id,runId:e.runId})}if("item/started"===a&&mm(s))return void(await em({chatId:e.chatId,content:"",fallbackMessageId:e.assistantMessageId,itemId:sm(t),kind:"CHAT",metadata:{kind:"assistant",phase:Ed(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"STREAMING",turnId:im(t)}));if("item/completed"===a&&mm(s)){const n=function(e){if(!e)return"";const t=$m(e.text)??$m(e.content);return t||(Array.isArray(e.content)?e.content:[]).map(e=>$m(Md(e)?.text)??"").filter(Boolean).join("")}(i)||tm(t);if(!n)return;const a=sm(t)??"assistant";return e.streamBuffers.set(a,n),e.onAssistantContent(n),void(await em({chatId:e.chatId,completedAt:new Date,content:n,fallbackMessageId:e.assistantMessageId,itemId:a,kind:"CHAT",metadata:{kind:"assistant",phase:Ed(i?.phase)},rawPayload:t,role:"ASSISTANT",runId:e.runId,status:"COMPLETED",turnId:im(t)}))}if(a.startsWith("item/reasoning/")||um(s).includes("reasoning"))return void(await async function(e,t,n,a){const r=sm(t)??`${n.toLowerCase()}:${im(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 em({chatId:e.chatId,content:o,itemId:r,kind:n,metadata:a.metadata,rawPayload:t,role:"SYSTEM",runId:e.runId,status:hm(t)?"COMPLETED":"STREAMING",turnId:im(t)})}(e,t,"THINKING",{content:cm(t,i),delta:dm(t),metadata:{kind:"thinking",status:pm(i,a)}}));if("turn/plan/updated"===a||"item/plan/delta"===a)return void(await async function(e,t){const n=Md(t.params)??{},a="item/plan/delta"===t.method?dm(t):void 0,r=(Array.isArray(n.plan)?n.plan:[]).map(e=>Md(e)).filter(e=>!!e).map(e=>({status:Ed(e.status)??"pending",step:Ed(e.step)??""})).filter(e=>e.step),i=Ed(n.explanation),s=im(t),o="turn/plan/updated"===t.method?`plan:${s??e.runId}`:sm(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 em({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=Md(t.params)??{},r=n??a,i=sm(t)??`command:${im(t)??"turn"}`,s=`COMMAND:${i}`,o=dm(t),d=o?`${e.streamBuffers.get(s)??""}${o}`:$m(r.output)??$m(r.aggregatedOutput)??$m(r.aggregated_output)??e.streamBuffers.get(s)??"";e.streamBuffers.set(s,d);const c=Ed(r.command)??Ed(a.command)??"command",l=pm(r,t.method??"");await em({chatId:e.chatId,completedAt:hm(t)?new Date:void 0,content:c,itemId:i,kind:"COMMAND_EXECUTION",metadata:{actions:wm(r.actions)??wm(r.commandActions),command:c,cwd:Ed(r.cwd)??Ed(a.cwd),durationMs:xm(r.durationMs)??xm(r.duration_ms),exitCode:xm(r.exitCode)??xm(r.exit_code),kind:"command",output:d,status:l},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"failed"===l?"FAILED":hm(t)?"COMPLETED":"STREAMING",turnId:im(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=Md(t.params)??{},r=n??a,i=sm(t)??`file-change:${im(t)??"turn"}`,s=gm(r)??gm(a),o=wm(r.changes)??wm(a.changes)??[],d=function(e,t){const n=[Ed(e.path),Ed(e.filePath),Ed(e.file_path),...t.flatMap(e=>{const t=Md(e);return[Ed(t?.path),Ed(t?.filePath),Ed(t?.file_path)]})].filter(e=>!!e);return[...new Set(n)]}(r,o);await em({chatId:e.chatId,content:d.length?d.join("\n"):"File changes",itemId:i,kind:"FILE_CHANGE",metadata:{additions:xm(r.additions)??vm(s,"+"),changes:o,deletions:xm(r.deletions)??vm(s,"-"),diff:s,kind:"fileChange",paths:d,status:pm(r,t.method??"")},rawPayload:t,role:"SYSTEM",runId:e.runId,status:hm(t)?"COMPLETED":"STREAMING",turnId:im(t)})}(e,t,i));if("serverRequest/resolved"===a)return void(await async function(e,t){const n=Md(t.params)??{},a=Ed(n.requestId)??Ed(n.id);if(!a)return;Ll.delete(Om(e,a));const r=await cd.chatMessage.findFirst({where:{chatId:e,requestId:a}});if(!r)return;Xu(e,"message.updated",zm(await cd.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:qm(r.metadata,{result:void 0===n.result?null:_m(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=Md(t.params),a=Ed(Md(n?.error)?.message)??Ed(n?.message)??t.error?.message??"Codex runtime error.";await em({chatId:e.chatId,completedAt:new Date,content:a,itemId:`error:${im(t)??Date.now()}`,kind:"ERROR",metadata:{details:_m(t),kind:"error",message:a},rawPayload:t,role:"SYSTEM",runId:e.runId,status:"FAILED",turnId:im(t)})}(e,t)}({assistantMessageId:h.id,chatId:e,streamBuffers:v,runId:t,onAssistantContent:e=>{g=e}},n)).catch(e=>Zu("Codex event projection failed.",e))}),I=p.onServerRequest(n=>{(function(e,t,n){const a=Md(e.params),r=Ed(a?.threadId);if(t&&r&&r!==t)return!1;const i=Ed(a?.turnId);return!n||!i||i===n})(n,x,w)&&Fl(t,()=>async function(e,t){const n=t.method??"";if(void 0===t.id||null===t.id)return;const a=Md(t.params)??{},r=Rd(t.id),i=function(e){return"tool/requestUserInput"===e||"item/tool/requestUserInput"===e?"userInput":e.includes("requestApproval")?um(e).includes("permissions")?"permissions":"approval":um(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:Ed(n.message),method:e,mode:Ed(n.mode),questions:Em(n.questions),raw:_m(a),requestId:t,status:"pending"}}(n,r,a,t):function(e,t,n,a,r){return{availableDecisions:wm(n.availableDecisions),changes:wm(n.changes),command:Ed(n.command),cwd:Ed(n.cwd),itemId:Ed(n.itemId),kind:a,method:e,raw:_m(r),reason:Ed(n.reason)??Ed(n.message),requestId:t,requestKind:a,status:"pending",turnId:Ed(n.turnId)}}(n,r,a,i,t);if("fullAccess"===e.permissionMode()&&"userInput"!==i){const n=Pm(i);return e.runtime.respondToServerRequest(t.id,n),void(await em({chatId:e.chatId,completedAt:new Date,content:Sm(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:Ed(a.turnId),itemId:Ed(a.itemId)}))}const o=await em({chatId:e.chatId,content:Sm(s),kind:"userInput"===i?"USER_INPUT_PROMPT":"APPROVAL",metadata:s,rawPayload:t,requestId:r,role:"SYSTEM",runId:e.runId,status:"PENDING",turnId:Ed(a.turnId),itemId:Ed(a.itemId)});Ll.set(Om(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=>Zu("Codex server request projection failed.",e))});try{x=await async function(e,t,n){const a=t?"thread/resume":"thread/start",r=Md((await e.request(a,{...t?{threadId:t}:{},cwd:n},3e4)).result),i=Ed(Md(r?.thread)?.id)??Ed(r?.threadId)??Ed(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=tu(i),o=new Set(["untitled chat","conversation",...s?[Bm(s)]:[]]);(async()=>{s&&await Hm(n,e,r,s,o);const a=await async function(e,{cwd:t,seed:n}){try{const a=Md((await e.request("thread/generateTitle",{cwd:t,message:n},3e4)).result);return Fm(Ed(a?.title)??Ed(a?.name)??Ed(a?.threadName)??"")}catch{return null}}(n,{cwd:t,seed:i});a&&await Hm(n,e,r,a,o)})().catch(()=>{})}({chatId:e,cwd:o,runtime:p,seed:c,threadId:x}),await Pu(t)&&(f.interruptRequested=!0);const n=await Vu(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)&&rm(e)===x&&(!w||im(e)===w),6e5,y.signal);const a=await async function(e,t,n,a){const r=Fu(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,!Bu(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}:{},...Hu(d,n,m),metadata:i},r,s);w=nm(a),f.turnId=w,w&&(await cd.chatRun.update({where:{id:t},data:{externalTurnId:w}}),(f.interruptRequested||await Pu(t))&&(f.interruptRequested=!0,await Du(p,w,x)));const v=await b;if(await async function(e){await(Ul.get(e)?.catch(()=>{}))}(t),function(e){const t=e.method??"";return t.includes("interrupted")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Su(fm(v));if(function(e){const t=e.method??"";return t.includes("failed")||t.includes("cancelled")||t.includes("canceled")}(v))throw new Error(fm(v));const N=await async function(e,t,n){try{const a=Md((await e.request("thread/turns/list",{threadId:t,limit:20},3e4)).result);return am((Array.isArray(a?.data)?a.data:[]).map(e=>Md(e)).filter(e=>!!e).filter(e=>!n||Ed(e.id)===n).at(-1))??null}catch{return null}}(p,x,w)||tm(v)||tm(a)||g,I=new Date,k=await cd.chatMessage.update({where:{id:h.id},data:{content:N,status:"COMPLETED",rawPayload:Um(v),completedAt:I}});await Lm(e,t,"COMPLETED"),await Dm(e,t,"Codex completed the turn."),await cd.chatRun.update({where:{id:t},data:{status:"COMPLETED",endedAt:new Date}});const C="plan"===d&&await async function(e,t){return(await cd.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"===Md(e.metadata)?.presentation)})}(e,t),A=await cd.chat.update({where:{id:e},data:{collaborationMode:C?"default":void 0,status:"IDLE",externalThreadId:x,lastActivityAt:I,updatedAt:I}});Xu(e,"chat.updated",jm(A)),Xu(e,"message.completed",zm(k)),Xu(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=Gm(Md((await e.request("thread/read",{includeTurns:!1,threadId:t},3e4)).result));if(n)return n}catch{}try{const n=Md((await e.request("thread/list",{archived:!1,limit:100,modelProviders:[],sortKey:"updated_at"},3e4)).result);return Gm((Vm(n?.data)??Vm(n?.items)??Vm(n?.threads)??[]).find(e=>Ed(e.id)===t))}catch{return null}}(e,n);a&&await Qm(t,a)}(p,e,x),await nu(await cd.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 Dm(e,t,n),k instanceof Su){await Lm(e,t,"COMPLETED");const a=new Date,r=await cd.chatMessage.update({where:{id:h.id},data:{status:"COMPLETED",content:g,completedAt:a,metadata:qm(h.metadata,{interrupted:!0,kind:"assistant"})}});return await cd.chatRun.update({where:{id:t},data:{status:"CANCELLED",error:n,endedAt:new Date}}),Xu(e,"chat.updated",jm(await cd.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Xu(e,"message.completed",zm(r)),void Xu(e,"run.status",{runId:t,status:"CANCELLED",error:n})}const a=new Date,r=await cd.chatMessage.update({where:{id:h.id},data:{status:"FAILED",content:g,completedAt:a}});await Lm(e,t,"FAILED"),await cd.chatRun.update({where:{id:t},data:{status:"FAILED",error:n,endedAt:new Date}}),Xu(e,"chat.updated",jm(await cd.chat.update({where:{id:e},data:{lastActivityAt:a,status:"IDLE",updatedAt:a}}))),Xu(e,"message.failed",{...zm(r),error:n}),Xu(e,"run.status",{runId:t,status:"FAILED",error:n})}finally{y?.abort(),N(),I(),Rl.delete(t),Ul.delete(t),ql.has(e)?function(e){const t=(_l.get(e)??Promise.resolve()).catch(()=>{}).then(()=>async function(e){if(xu(e))return;const t=await cd.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;const n=function(e){const[t,...n]=ql.get(e)??[];if(!t)return ql.delete(e),null;n.length?ql.set(e,n):ql.delete(e);return t}(e);if(!n)return;try{const a=t.autoRotateAccount?await yu(t):t,r=a.accountId??n.accountId,i=await cd.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 wu({accountId:r,attachments:n.attachments,automaticTitleSeed:n.automaticTitleSeed,chatId:e,collaborationMode:n.collaborationMode,content:n.content,metadata:n.metadata,permissionMode:Zl(a.permissionMode),requestedCollaborationMode:n.collaborationMode,startedAt:s,workingDirectory:n.workingDirectory});await Cu(e,n.messageId,{dequeuedAt:s.toISOString(),queueStatus:"running",runId:o.run.id})}catch(k){await Cu(e,n.messageId,{error:k instanceof Error?k.message:"Queued message failed.",failedAt:(new Date).toISOString(),queueStatus:"failed"})}}(e)).catch(()=>{});_l.set(e,t),t.finally(()=>{_l.get(e)===t&&_l.delete(e)})}(e):function(e){(async function(e){const t=await cd.chat.findUnique({where:{id:e}});if(!t||"RUNNING"===t.status)return;await yu(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 xu(e){for(const t of Rl.values())if(t.chatId===e)return t;return null}async function yu(e){if(!e.autoRotateAccount||"RUNNING"===e.status||xu(e.id))return e;const t=await cd.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:bu(await Dd({accountId:e.id,args:Wm(e.args),command:e.command,environment:Td(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?Nu(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:Nu(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(Nu(n.get(i.id))<0)return e;const s=await cd.chat.update({where:{id:e.id},data:{accountId:i.id,externalThreadId:e.accountId?null:void 0}});return Xu(e.id,"chat.updated",jm(s)),e.accountId||Sc(e.id,i.id).catch(e=>{console.warn("Failed to mirror imported Codex session.",e instanceof Error?e.message:e)}),s}function bu(e){return e?.rateLimitsByLimitId?.codex??Object.values(e?.rateLimitsByLimitId??{}).find(Boolean)??e?.rateLimits}function Nu(e){if(!e)return 0;if(e.rateLimitReachedType||function(e){return e?Iu(e.secondary)?"weekly":Iu(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-ku(e.usedPercent));return t.length?Math.min(...t):0}function Iu(e){return ku(e?.usedPercent??0)>=100}function ku(e){return Math.max(0,Math.min(100,Number.isFinite(e)?e:0))}async function Cu(e,t,n){const a=await cd.chatMessage.findUnique({where:{id:t}});a&&Xu(e,"message.updated",zm(await cd.chatMessage.update({where:{id:t},data:{metadata:qm(a.metadata,n)}})))}function Au(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 Ho(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 Ho(400,"Image attachments must be 6 MB or smaller.");const s=Eu(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 Mu(e,t){const n=await async function(e,t){return Pl(await Sl(e,t),e)}(e,t.path);return{fallbackText:`@${n.path}`,message:{id:Ut(),kind:"file",name:Eu(t.name,n.name),path:n.path,size:n.size},runtime:{path:n.path,text:`@${n.path}`,type:"mention"}}}function Eu(e,t){const n=e?.trim();return(n?Xt(n):t).slice(0,160)||"attachment"}function Tu(e,t){return{...e??{},...t.length?{attachments:t.map(e=>e.message)}:{}}}var Su=class extends Error{};async function Pu(e){return!!(await cd.chatRun.findUnique({where:{id:e},select:{interruptRequestedAt:!0}}))?.interruptRequestedAt}async function Du(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 Lu(e,t){const n={...e};return delete n[t],n}async function Ru(e,t){for(let n=0;n<3;n+=1){const a=await qu(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 qu(e,t){try{const n=Md((await e.request("thread/turns/list",{limit:8,sortDirection:"desc",threadId:t},1e4)).result);return Ou(_u(n?.data)??_u(n?.items)??_u(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 Ou(_u(Md(Md(n.result)?.thread)?.turns)??[],!1)}function Ou(e,t){const n=t?e:[...e].reverse(),a=n.map(e=>Uu($u(e))).find(Boolean)??null;let r=!1;for(const i of n){if(!ju(zu(i)))continue;const e=Uu($u(i));if(e)return{hasInterruptibleTurnWithoutId:!1,interruptibleTurnId:e,latestTurnId:a};r=!0}return{hasInterruptibleTurnWithoutId:r,interruptibleTurnId:null,latestTurnId:a}}function _u(e){return Array.isArray(e)?e.map(Md).filter(e=>!!e):null}function $u(e){return Ed(e.id)??Ed(e.turnId)??Ed(e.turn_id)??null}function Uu(e){const t=e?.trim();return t||null}function zu(e){return(Ed(e.status)??Ed(e.turnStatus)??Ed(e.turn_status))?.replace(/[_-]/g,"").trim().toLowerCase()??null}function ju(e){return"running"===e||"inprogress"===e||"inflight"===e||"pending"===e||"queued"===e||"started"===e||"streaming"===e}function Fu(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 Bu(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 Gu(e){const t=e instanceof Error?e.message.toLowerCase():"";return t.includes("collaboration")||t.includes("unknown field")||t.includes("unsupported")||t.includes("schema")}function Hu(e,t=null,n="default"){return{approvalPolicy:"fullAccess"===n?"never":null,collaborationMode:Wu(e,t),sandboxPolicy:"fullAccess"===n?{type:"dangerFullAccess"}:null}}function Ku(e,t=null){return"plan"!==e?{}:{collaborationMode:Wu(e,t)}}function Wu(e,t=null){return{mode:e,...t?.model?{settings:{developer_instructions:null,model:t.model,reasoning_effort:t.reasoningEffort??null}}:{}}}async function Vu(e,t,n){const a=Qu(t);if(a)return{model:a,reasoningEffort:n};let r=n;try{const t=Md(Md((await e.request("config/read",{},3e4)).result)?.config),n=Qu(Ed(t?.model));if(r=r??Ju(t?.model_reasoning_effort)??Ju(t?.modelReasoningEffort),n)return{model:n,reasoningEffort:r}}catch{}try{const t=Md((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=Md(e),n=Qu(Ed(t?.id))??Qu(Ed(t?.model));if(n)return{model:n,reasoningEffort:r}}}catch{}return null}function Qu(e){const t=e?.trim();return t||null}function Ju(e){return"none"===e||"minimal"===e||"low"===e||"medium"===e||"high"===e||"xhigh"===e?e:null}async function Yu(e){return((await cd.chatMessage.aggregate({where:{chatId:e},_max:{sequence:!0}}))._max.sequence??0)+1}function Xu(e,t,n){bl(e,t,n)}function Zu(e,t){console.error(e,t instanceof Error?t.stack??t.message:t)}async function em(e){return async function(e,t){if(!e)return 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)}}(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 cd.chatMessage.findFirst({where:{chatId:e.chatId,requestId:e.requestId},orderBy:{sequence:"desc"}});if(t)return t}if(e.itemId){const t=await cd.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 cd.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:Um(e.metadata),rawPayload:void 0===e.rawPayload?void 0:Um(e.rawPayload),requestId:e.requestId??void 0,role:e.role,runId:e.runId,status:e.status,turnId:e.turnId??void 0},a=zm(t?await cd.chatMessage.update({where:{id:t.id},data:n}):await jl(e.chatId,n));return Xu(e.chatId,t?"message.updated":"message.created",a),a})}function tm(e){const t=Md(e.result),n=Md(e.params),a=Md(n?.payload)??n??t;return am(Md(n?.turn)??Md(t?.turn))??$m(t?.text)??$m(t?.content)??$m(a?.text)??$m(a?.content)??$m(a?.delta)??$m(a?.message)??""}function nm(e){const t=Md(e.result),n=Md(e.params);return Ed(t?.turnId)??Ed(t?.turn_id)??Ed(n?.turnId)??Ed(n?.turn_id)??Ed(Md(t?.turn)?.id)??Ed(Md(n?.turn)?.id)}function am(e){const t=(Array.isArray(e?.items)?e.items:[]).map(e=>{const t=Md(e);return"agentMessage"!==t?.type?null:$m(t.text)??null}).filter(e=>!!e);return t.length?t.join("\n\n"):null}function rm(e){const t=Md(e.params),n=Md(e.result),a=Md(t?.event);return Ed(t?.threadId)??Ed(t?.thread_id)??Ed(n?.threadId)??Ed(n?.thread_id)??Ed(a?.threadId)??Ed(a?.thread_id)}function im(e){const t=Md(e.params),n=Md(e.result),a=om(e);return Ed(t?.turnId)??Ed(n?.turnId)??Ed(a?.turnId)??nm(e)}function sm(e){const t=Md(e.params),n=Md(e.result),a=om(e);return Ed(t?.itemId)??Ed(n?.itemId)??Ed(a?.id)}function om(e){const t=Md(e.params),n=Md(e.result),a=Md(t?.payload);return Md(t?.item)??Md(n?.item)??Md(a?.item)}function dm(e){const t=Md(e.params),n=Md(t?.event);return $m(t?.delta)??$m(t?.text)??$m(t?.output)??$m(n?.delta)??$m(n?.text)}function cm(e,t){const n=Md(e.params),a=Md(e.result);return[t,n,Md(n?.event),Md(n?.payload),a].map(lm).find(e=>!!e?.trim())}function lm(e){if(e)return $m(e.reasoning)??$m(e.reasoningText)??$m(e.reasoning_text)??$m(e.summary)??cu(e.summary)??cu(e.content)??$m(e.text)??$m(e.output)}function um(e){return e.toLowerCase().replaceAll("_","").replaceAll("-","")}function mm(e){return"agentmessage"===e||"assistantmessage"===e||"exitedreviewmode"===e||"message"===e}function hm(e){const t=e.method??"";return t.includes("completed")||t.includes("finished")||t.includes("done")||t.endsWith("/end")}function fm(e){const t=Md(e.params);return Ed(Md(t?.error)?.message)??Ed(t?.message)??(e.method?.includes("interrupt")?"Codex turn was interrupted.":"Codex turn failed.")}function pm(e,t){const n=Ed(e?.status);return n?um(n):t.includes("failed")||t.includes("error")?"failed":hm({method:t})?"completed":"running"}function gm(e){return $m(e.diff)??$m(e.unifiedDiff)??$m(e.unified_diff)??$m(e.patch)}function vm(e,t){return e?e.split("\n").filter(e=>e.startsWith(t)&&!e.startsWith(`${t}${t}${t}`)).length:0}function wm(e){if(Array.isArray(e))return e.map(_m)}function xm(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function ym(e){const t=um(e.method??"");return t.includes("start")?"Context compaction started.":t.includes("finish")||t.includes("complete")?"Context compacted.":"Context compaction recorded."}function bm(e){return um(e.method??"").includes("start")}function Nm(e){const t=um(e??"");return"threadtokenusageupdated"===t||t.includes("tokenusage")||t.includes("contextusage")||t.includes("contextwindow")}function Im(e,t=e){const n=Am(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=Am(e,["total_tokens","totalTokens","tokens_used","tokensUsed","used_tokens","usedTokens","input_tokens","inputTokens"]),r=Am(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}([Am(e,["input_tokens","inputTokens"]),Am(e,["output_tokens","outputTokens"]),Am(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 km(e,t=0){if(t>4)return;const n=Md(e);if(!n)return;const a=um(Ed(n.type)??""),r=um(Ed(n.method)??"");if("tokencount"===a||"tokencount"===r)return n;for(const i of["payload","event","params","message"]){const e=km(n[i],t+1);if(e)return e}}function Cm(e,t){for(const n of t){const t=Md(e[n]);if(t)return t}}function Am(e,t){for(const n of t){const t=Mm(e[n]);if(void 0!==t)return t}}function Mm(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 Em(e){return Array.isArray(e)?e.map(e=>Md(e)).filter(e=>!!e).map(e=>({header:Ed(e.header),id:Ed(e.id)??Ut(),isOther:"boolean"==typeof e.isOther?e.isOther:void 0,isSecret:"boolean"==typeof e.isSecret?e.isSecret:void 0,options:Tm(e.options),question:Ed(e.question)??Ed(e.header)??"Answer",selectionLimit:xm(e.selectionLimit)??xm(e.selection_limit)})):[]}function Tm(e){return Array.isArray(e)?e.map(e=>Md(e)).filter(e=>!!e).map(e=>({description:Ed(e.description),label:Ed(e.label)??Ed(e.value)??""})).filter(e=>e.label):[]}function Sm(e){return"userInput"===e.kind?Ed(e.message)??"Codex needs more information before it can continue.":Ed(e.reason)??Ed(e.command)??"Codex needs approval before it can continue."}function Pm(e){return"approval"===e?{decision:"acceptForSession"}:{scope:"session",permissions:!0}}async function Dm(e,t,n){const a=await cd.chatMessage.findMany({where:{chatId:e,kind:{in:["APPROVAL","USER_INPUT_PROMPT"]},runId:t,status:"PENDING"}});for(const r of a){const t=Md(r.metadata);if("resolved"!==t?.status&&"expired"!==t?.status){if(r.requestId){const t=Om(e,r.requestId),a=Ll.get(t);a?.runtime.rejectServerRequest(a.rpcId,-32e3,`Server request expired: ${n}`),Ll.delete(t)}Xu(e,"message.updated",zm(await cd.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,metadata:qm(r.metadata,{expiredAt:(new Date).toISOString(),reason:n,status:"expired"}),status:"COMPLETED"}})))}}}async function Lm(e,t,n){const a=await cd.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)Xu(e,"message.updated",zm(await cd.chatMessage.update({where:{id:r.id},data:{completedAt:new Date,status:n}})))}async function Rm(e){return(await cd.chatMessage.findUnique({where:{id:e},select:{metadata:!0}}))?.metadata??null}function qm(e,t){return Um({...Md(e)??{},...t})}function Om(e,t){return`${e}:${t}`}function _m(e){return JSON.parse(JSON.stringify(e))}function $m(e){return"string"==typeof e&&e.length>0?e:void 0}function Um(e){return JSON.parse(JSON.stringify(e))}function zm(e){return{...e,metadata:e.metadata,rawPayload:e.rawPayload}}function jm(e){return{...e,collaborationMode:Yl(e.collaborationMode),permissionMode:Zl(e.permissionMode),reasoningEffort:e.reasoningEffort,serviceTier:e.serviceTier}}function Fm(e){const t=e.replace(/\s+/g," ").trim();return t?t.slice(0,160):null}function Bm(e){return e?.replace(/\s+/g," ").trim().toLowerCase()??""}function Gm(e){const t=Md(e);if(!t)return null;const n=[t.threadName,t.thread_name,t.name,t.title];for(const r of n){const e=Fm(Ed(r)??"");if(e)return e}const a=Md(t.thread);return a?Gm(a):null}async function Hm(e,t,n,a,r){const i=Fm(a);if(!i)return!1;const s=await cd.chat.findUnique({where:{id:t}});if(!s)return!1;const o=Bm(s.title);return!(!eu(s.title)&&!r.has(o))&&(await Qm(t,i),Km(e,n,i),!0)}async function Km(e,t,n){try{await e.request("thread/name/set",{name:n,thread_id:t,threadId:t},3e4)}catch{}}function Wm(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e):["app-server"]}function Vm(e){return Array.isArray(e)?e.map(e=>Md(e)).filter(e=>!!e):null}async function Qm(e,t){Xu(e,"chat.updated",jm(await cd.chat.update({where:{id:e},data:{title:t}})))}var Jm=yn({action:()=>Xm,loader:()=>Ym});async function Ym({request:e}){try{return Vo(e,["GET"]),await hd(e),Ko(await async function(){const e=await Gl();return e.length?(Bl().catch(e=>{console.warn("Failed to refresh local chat index.",e instanceof Error?e.message:e)}),e):(await Bl(),Gl())}())}catch(t){return nd(t)}}async function Xm({request:e}){try{Vo(e,["POST"]),await hd(e);const t=await Qo(e);return Ko(await async function(e){const t=await cd.codexAccount.findUnique({where:{id:e.accountId}});if(!t)throw new Ho(400,"Account not found.");if("CONNECTED"!==t.status)throw new Ho(400,"Authenticate the account before starting a chat.");return cd.chat.create({data:{accountId:e.accountId,autoRotateAccount:e.autoRotateAccount,workingDirectory:kl(e.workingDirectory),model:void 0===e.model?void 0:Wl(e.model),reasoningEffort:void 0===e.reasoningEffort?void 0:Vl(e.reasoningEffort),serviceTier:void 0===e.serviceTier?void 0:Ql(e.serviceTier),collaborationMode:void 0===e.collaborationMode?void 0:Jl(e.collaborationMode),permissionMode:void 0===e.permissionMode?void 0:Xl(e.permissionMode),title:e.title??"Untitled chat"}})}({accountId:Jo(t.accountId,"accountId",{required:!0}),autoRotateAccount:Xo(t.autoRotateAccount,"autoRotateAccount"),workingDirectory:Jo(t.workingDirectory,"workingDirectory",{required:!0,maxLength:4096}),model:null===t.model?null:Jo(t.model,"model",{maxLength:160}),reasoningEffort:Zm(t.reasoningEffort,"reasoningEffort"),serviceTier:Zm(t.serviceTier,"serviceTier"),collaborationMode:Zm(t.collaborationMode,"collaborationMode"),permissionMode:Zm(t.permissionMode,"permissionMode"),title:Jo(t.title,"title",{maxLength:160})}),{status:201})}catch(t){return nd(t)}}function Zm(e,t){return null===e?null:Jo(e,t,{maxLength:80})}var eh=yn({action:()=>nh,loader:()=>th});async function th({request:e,params:t}){try{return Vo(e,["GET"]),await hd(e),Ko(await Hl(td(t,"chatId")))}catch(n){return nd(n)}}async function nh({request:e,params:t}){try{await hd(e);const n=td(t,"chatId");if("PATCH"===e.method){const t=await Qo(e);return Ko(await Kl(n,{accountId:Jo(t.accountId,"accountId"),autoRotateAccount:Xo(t.autoRotateAccount,"autoRotateAccount"),model:null===t.model?null:Jo(t.model,"model",{maxLength:160}),reasoningEffort:ah(t.reasoningEffort,"reasoningEffort"),serviceTier:ah(t.serviceTier,"serviceTier"),collaborationMode:ah(t.collaborationMode,"collaborationMode"),permissionMode:ah(t.permissionMode,"permissionMode"),title:Jo(t.title,"title",{maxLength:160}),workingDirectory:Jo(t.workingDirectory,"workingDirectory",{maxLength:4096})}))}if("DELETE"===e.method)return Ko(await async function(e){return await Hl(e),cd.chat.update({where:{id:e},data:{status:"ARCHIVED"}})}(n));Wo(e.method)}catch(n){return nd(n)}}function ah(e,t){return null===e?null:Jo(e,t,{maxLength:80})}var rh=yn({loader:()=>ih});async function ih({request:e,params:t}){try{return Vo(e,["GET"]),await hd(e),Ko(await async function(e){const t=await Hl(e);return t.externalThreadId?{usage:await Pc(t.id,t.externalThreadId)}:{usage:null}}(td(t,"chatId")))}catch(n){return nd(n)}}var sh=yn({loader:()=>oh});async function oh({request:e,params:t}){try{Vo(e,["GET"]),await hd(e);const n=new URL(e.url),a=n.searchParams.get("path")?.trim();if(!a)throw new Ho(400,"path is required.");return Ko(await Tl(td(t,"chatId"),a,ed(n,"line",0)||null))}catch(n){return nd(n)}}var dh=wn(dn);async function ch(e){const t=await uh(e),n=await mh(t.cwd);if(!n)return{ahead:0,behind:0,branch:null,changedFiles:[],clean:!0,isRepo:!1,root:null,upstream:null};const a=await hh(t.cwd),r=await fh(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 fh(t.cwd,["rev-list","--left-right","--count",`${r}...HEAD`]):null),o=(await ph(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 lh(e,t){const n=await uh(e);if("RUNNING"===n.status)throw new Ho(409,"Git actions are disabled while Codex is running.");if(!(await mh(n.cwd)))throw new Ho(400,"Chat working directory is not a git repository.");let a="";if("checkout"===t.action){const e=gh(t.branch);a=await ph(n.cwd,["switch",e])}else if("createBranch"===t.action){const e=gh(t.branch);await ph(n.cwd,["check-ref-format","--branch",e]),a=await ph(n.cwd,["switch","-c",e])}else if("commit"===t.action){const e=t.message?.trim();if(!e)throw new Ho(400,"Commit message is required.");await ph(n.cwd,["add","-A"]),a=await ph(n.cwd,["commit","-m",e])}else if("pull"===t.action)a=await ph(n.cwd,["pull","--rebase","--autostash"]);else{if("push"!==t.action)throw new Ho(400,"Unsupported git action.");a=await fh(n.cwd,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"])?await ph(n.cwd,["push"]):await async function(e){await ph(e,["remote","get-url","origin"]);const t=await hh(e);if(!t)throw new Ho(400,"Cannot push while detached from a branch.");return ph(e,["push","--set-upstream","origin",t])}(n.cwd)}return{message:wh(t.action),output:a,status:await ch(e)}}async function uh(e){const t=await cd.chat.findUnique({where:{id:e},select:{status:!0,workingDirectory:!0}});if(!t)throw new Ho(404,"Chat not found.");if(!t.workingDirectory)throw new Ho(400,"Chat does not have a working directory.");return{cwd:kl(t.workingDirectory),status:t.status}}async function mh(e){return fh(e,["rev-parse","--show-toplevel"])}async function hh(e){return await fh(e,["symbolic-ref","--quiet","--short","HEAD"])??await fh(e,["rev-parse","--short","HEAD"])}async function fh(e,t){try{return await ph(e,t)}catch{return null}}async function ph(e,t){try{const n=await dh("git",t,{cwd:e,env:{...process.env,GIT_TERMINAL_PROMPT:"0"},maxBuffer:8388608,timeout:3e4});return vh(n.stdout,n.stderr)}catch(n){throw new Ho(500,function(e){if(!e||"object"!=typeof e)return"Git command failed.";const t=e;return vh("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 gh(e){const t=e?.trim();if(!t)throw new Ho(400,"Branch name is required.");if(t.includes("\0")||t.length>240)throw new Ho(400,"Branch name is invalid.");return t}function vh(...e){return e.map(e=>e?.trim()).filter(e=>!!e).join("\n")}function wh(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 xh({request:e,params:t}){try{Vo(e,["GET"]),await hd(e);const n=td(t,"chatId"),a=td(t,"operation"),r=new URL(e.url);if("status"===a)return Ko(await ch(n));if("branches"===a)return Ko(await async function(e){const t=await uh(e);if(!(await mh(t.cwd)))return{branches:[],current:null,defaultBranch:null,isRepo:!1};const n=await hh(t.cwd);return{branches:(await ph(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 fh(t.cwd,["symbolic-ref","--short","refs/remotes/origin/HEAD"]))?.replace(/^origin\//,"")??null,isRepo:!0}}(n));if("diff"===a)return Ko(await async function(e,t){const n=await uh(e);if(!(await mh(n.cwd)))return{diff:"",isRepo:!1,path:t??null,stat:""};const a=t?["--",t]:["--"],r=vh(await fh(n.cwd,["diff","--stat",...a]),await fh(n.cwd,["diff","--cached","--stat",...a]));return{diff:vh(await fh(n.cwd,["diff","--no-ext-diff",...a]),await fh(n.cwd,["diff","--cached","--no-ext-diff",...a])),isRepo:!0,path:t??null,stat:r}}(n,r.searchParams.get("path")));throw new Ho(404,"Git operation not found.")}catch(n){return nd(n)}}async function yh({request:e,params:t}){try{if(Vo(e,["POST"]),await hd(e),"action"!==td(t,"operation"))throw new Ho(404,"Git operation not found.");const n=await Qo(e),a={action:bh(n.action),branch:Jo(n.branch,"branch",{maxLength:240}),message:Jo(n.message,"message",{maxLength:5e3})};return Ko(await lh(td(t,"chatId"),a))}catch(n){return nd(n)}}function bh(e){if("checkout"===e||"createBranch"===e||"commit"===e||"pull"===e||"push"===e)return e;throw new Ho(400,"action is invalid.")}async function Nh({request:e,params:t}){try{Vo(e,["GET"]),await hd(e);const n=new URL(e.url);return Ko(await ru(td(t,"chatId"),ed(n,"afterSequence",0),ed(n,"limit",50)))}catch(n){return nd(n)}}async function Ih({request:e,params:t}){try{Vo(e,["POST"]),await hd(e);const n=await Qo(e),a={content:Ch(n.content),accountId:Jo(n.accountId,"accountId"),attachments:Ah(n.attachments),collaborationMode:Sh(n.collaborationMode,"collaborationMode"),delivery:kh(n.delivery),metadata:Zo(n.metadata,"metadata")};return Ko(await vu(td(t,"chatId"),a),{status:201})}catch(n){return nd(n)}}function kh(e){if(null!=e){if("queue"===e||"steer"===e)return e;throw new Ho(400,"delivery is invalid.")}}function Ch(e){if(null==e)return"";if("string"!=typeof e)throw new Ho(400,"content must be a string.");if(e.length>4e4)throw new Ho(400,"content must be 40000 characters or fewer.");return e.trim()}function Ah(e){if(void 0!==e){if(!Array.isArray(e))throw new Ho(400,"attachments must be an array.");return e.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Ho(400,`attachments[${t}] must be an object.`);const n=e;if("image"===n.kind)return{kind:"image",dataUrl:Mh(n.dataUrl,`attachments[${t}].dataUrl`,85e5),mimeType:Eh(n.mimeType,`attachments[${t}].mimeType`,80),name:Eh(n.name,`attachments[${t}].name`,160),size:Th(n.size,`attachments[${t}].size`)};if("file"===n.kind)return{kind:"file",name:Eh(n.name,`attachments[${t}].name`,160),path:Mh(n.path,`attachments[${t}].path`,4096),size:Th(n.size,`attachments[${t}].size`)};throw new Ho(400,`attachments[${t}].kind is invalid.`)})}}function Mh(e,t,n){if("string"!=typeof e||!e.trim())throw new Ho(400,`${t} is required.`);if(e.length>n)throw new Ho(400,`${t} is too large.`);return e}function Eh(e,t,n){if(null!=e){if("string"!=typeof e)throw new Ho(400,`${t} must be a string.`);if(e.length>n)throw new Ho(400,`${t} must be ${n} characters or fewer.`);return e.trim()||void 0}}function Th(e,t){if(null!=e){if("number"!=typeof e||!Number.isFinite(e)||e<0)throw new Ho(400,`${t} must be a positive number.`);return e}}function Sh(e,t){return null===e?null:Jo(e,t,{maxLength:80})}async function Ph({request:e,params:t}){try{return Vo(e,["POST"]),await hd(e),Ko(await async function(e){const t=await Hl(e);if("RUNNING"!==t.status)throw new Ho(409,"There is no running task to stop.");const n=await cd.chatRun.findFirst({where:{chatId:e,status:{in:["QUEUED","RUNNING"]}},orderBy:{createdAt:"desc"}});if(!n)throw new Ho(409,"There is no active run to stop.");const a=new Date;await cd.chatRun.update({where:{id:n.id},data:{interruptRequestedAt:a}});const r=Rl.get(n.id);return r&&(r.interruptRequested=!0,r.runtime&&r.turnId&&await Du(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."}}(td(t,"chatId")))}catch(n){return nd(n)}}async function Dh({request:e,params:t}){try{Vo(e,["POST"]),await hd(e);const n=await Qo(e),a=function(e){if("approval"===e||"permissions"===e||"userInput"===e)return e;throw new Ho(400,"kind must be approval, permissions, or userInput.")}(n.kind);return Ko(await gu(td(t,"chatId"),td(t,"requestId"),{decision:n.decision,kind:a,result:n.result}))}catch(n){return nd(n)}}async function Lh({request:e}){try{return Vo(e,["GET"]),await hd(e),Ko(await Nl(new URL(e.url).searchParams.get("path")??void 0))}catch(t){return nd(t)}}async function Rh({request:e}){try{Vo(e,["POST"]),await hd(e);const t=await Qo(e),n={parentPath:Jo(t.parentPath,"parentPath",{required:!0,maxLength:4096}),name:Jo(t.name,"name",{required:!0,maxLength:255})};return Ko(await Il(n.parentPath,n.name),{status:201})}catch(t){return nd(t)}}var qh={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-D-p7jx9T.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-COrr2Ht-.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-DVRPLoJp.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-DnEsSg3r.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-BjcHgWsO.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-DnEsSg3r.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-CAKcWygY.js",imports:["/assets/jsx-runtime-Cal6WBdn.js","/assets/app-shell-DnEsSg3r.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-40da439f.js",version:"40da439f",sri:void 0},Oh="build/client",_h="/",$h={unstable_optimizeDeps:!1,v8_passThroughRequests:!1,unstable_trailingSlashAwareDataRequests:!1,unstable_previewServerPrerendering:!1,v8_middleware:!1,v8_splitRouteModules:!1,v8_viteEnvironmentApi:!1},Uh=!0,zh=!1,jh=[],Fh={mode:"lazy",manifestPath:"/__manifest"},Bh="/",Gh={module:bn},Hh={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:Uo},"routes/home":{id:"routes/home",parentId:"routes/app-layout",path:void 0,index:!0,caseSensitive:void 0,module:jo},"routes/chat":{id:"routes/chat",parentId:"routes/app-layout",path:"chat/:chatId",index:void 0,caseSensitive:void 0,module:Bo},"routes/health":{id:"routes/health",parentId:"root",path:"health",index:void 0,caseSensitive:void 0,module:ad},"routes/api.auth.status":{id:"routes/api.auth.status",parentId:"root",path:"api/auth/status",index:void 0,caseSensitive:void 0,module:bd},"routes/api.auth.exchange":{id:"routes/api.auth.exchange",parentId:"root",path:"api/auth/exchange",index:void 0,caseSensitive:void 0,module:Id},"routes/api.auth.session":{id:"routes/api.auth.session",parentId:"root",path:"api/auth/session",index:void 0,caseSensitive:void 0,module:Cd},"routes/api.accounts":{id:"routes/api.accounts",parentId:"root",path:"api/accounts",index:void 0,caseSensitive:void 0,module:tc},"routes/api.accounts.export":{id:"routes/api.accounts.export",parentId:"root",path:"api/accounts/export",index:void 0,caseSensitive:void 0,module:ic},"routes/api.accounts.import":{id:"routes/api.accounts.import",parentId:"root",path:"api/accounts/import",index:void 0,caseSensitive:void 0,module:oc},"routes/api.accounts.$accountId":{id:"routes/api.accounts.$accountId",parentId:"root",path:"api/accounts/:accountId",index:void 0,caseSensitive:void 0,module:cc},"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:mc},"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:xc},"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:bc},"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:Ic},"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:Cc},"routes/api.chats":{id:"routes/api.chats",parentId:"root",path:"api/chats",index:void 0,caseSensitive:void 0,module:Jm},"routes/api.chats.$chatId":{id:"routes/api.chats.$chatId",parentId:"root",path:"api/chats/:chatId",index:void 0,caseSensitive:void 0,module:eh},"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:rh},"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:sh},"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:()=>yh,loader:()=>xh})},"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:()=>Ih,loader:()=>Nh})},"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:()=>Ph})},"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:()=>Dh})},"routes/api.workspaces.directories":{id:"routes/api.workspaces.directories",parentId:"root",path:"api/workspaces/directories",index:void 0,caseSensitive:void 0,module:yn({action:()=>Rh,loader:()=>Lh})}},Kh=!1;export{Kh as allowedActionOrigins,qh as assets,Oh as assetsBuildDirectory,_h as basename,Gh as entry,$h as future,zh as isSpaMode,jh as prerender,Bh as publicPath,Fh as routeDiscovery,Hh as routes,Uh as ssr};
|